@imperium/layout 8.3.0 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.js
CHANGED
|
@@ -139,8 +139,8 @@ module.exports = function (cssWithMappingToString) {
|
|
|
139
139
|
var alreadyImportedModules = {};
|
|
140
140
|
|
|
141
141
|
if (dedupe) {
|
|
142
|
-
for (var
|
|
143
|
-
var id = this[
|
|
142
|
+
for (var k = 0; k < this.length; k++) {
|
|
143
|
+
var id = this[k][0];
|
|
144
144
|
|
|
145
145
|
if (id != null) {
|
|
146
146
|
alreadyImportedModules[id] = true;
|
|
@@ -148,8 +148,8 @@ module.exports = function (cssWithMappingToString) {
|
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
for (var
|
|
152
|
-
var item = [].concat(modules[
|
|
151
|
+
for (var _k = 0; _k < modules.length; _k++) {
|
|
152
|
+
var item = [].concat(modules[_k]);
|
|
153
153
|
|
|
154
154
|
if (dedupe && alreadyImportedModules[item[0]]) {
|
|
155
155
|
continue;
|
|
@@ -3617,4 +3617,4 @@ function layoutClientModule() {
|
|
|
3617
3617
|
module.exports = __webpack_exports__;
|
|
3618
3618
|
/******/ })()
|
|
3619
3619
|
;
|
|
3620
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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TztBQUNOZCxJQUFBQSxJQUFJLEVBQUUsa0JBREE7QUFFTmUsSUFBQUEsS0FBSyxFQUFFLEVBRkQ7QUFHTkMsSUFBQUEsSUFBSSxFQUFFLENBQUN6QiwwREFBRCxDQUhBO0FBSU41RixJQUFBQSxLQUFLLEVBQUxBLHlDQUpNO0FBS05pRyxJQUFBQSxNQUFNLEVBQUU7QUFDUHhLLE1BQUFBLFNBQVMsRUFBRSxDQUFDb0osMEVBQUQ7QUFESjtBQUxGLEdBQVA7QUFTQTtBQUdEO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvc3R5bGVzLmNzcyIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9zdHlsZXMuY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly8vLi9jb21tb25JdGVtcy50cyIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvQWN0aW9uRm9ybS50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jb21wb25lbnRzL0FjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudC50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jb21wb25lbnRzL0FjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50LnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvQ29udGVudENvbXBvbmVudC50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jb21wb25lbnRzL0N1c3RvbVNpZGViYXJJdGVtQ29tcG9uZW50LnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvSGVhZGVyLnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvUGxhaW5TaWRlYmFySXRlbS50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jb21wb25lbnRzL1NpZGViYXJJdGVtV3JhcHBlci50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jcmVhdGVQYWdlcy50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9kaXZpZGVyU2lkZWJhckl0ZW0udHMiLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9ob29rcy91c2VCdWlsZENvbnRlbnREYXRhLnRzIiwid2VicGFjazovLy8uL2NvbnRlbnQvdHlwZXMudHMiLCJ3ZWJwYWNrOi8vLy4vY29udGVudC91dGlscy50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0YWhvb2tzL0RhdGFIb29rcy50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0YWhvb2tzL0V4ZWN1dGVEYXRhSG9vay50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0YWhvb2tzL0V4ZWN1dGVQZXJtaXNzaW9uSG9vay50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0YWhvb2tzL1Blcm1pc3Npb25Ib29rcy50c3giLCJ3ZWJwYWNrOi8vLy4vaG9va3MvdXNlQnVpbGREYXRhLnRzIiwid2VicGFjazovLy8uL2hvb2tzL3VzZUlzQWN0aXZlUm91dGUudHMiLCJ3ZWJwYWNrOi8vLy4vaG9va3MvdXNlU2VsZWN0UGVybWlzc2lvbi50cyIsIndlYnBhY2s6Ly8vLi9ob29rcy91c2VTZWxlY3RTdGF0ZS50cyIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9DdXN0b21MYXlvdXRJdGVtQ29tcG9uZW50LnRzeCIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9Ecm9wZG93bkl0ZW0udHN4Iiwid2VicGFjazovLy8uL2xheW91dC9jb21wb25lbnRzL0xheW91dC50c3giLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L2NvbXBvbmVudHMvTGF5b3V0SXRlbUJhci50c3giLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L2NvbXBvbmVudHMvTGF5b3V0SXRlbVdyYXBwZXIudHN4Iiwid2VicGFjazovLy8uL2xheW91dC9jb21wb25lbnRzL01lbnVJdGVtLnRzeCIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9QbGFpbkl0ZW0udHN4Iiwid2VicGFjazovLy8uL2xheW91dC9jb21wb25lbnRzL1NlY29uZGFyeU1lbnVUb2dnbGVJdGVtLnRzeCIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvaG9va3MvdXNlTW9iaWxlTGF5b3V0LnRzIiwid2VicGFjazovLy8uL2xheW91dC9tb3ZlSXRlbXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L3R5cGVzLnRzIiwid2VicGFjazovLy8uL2xheW91dC91dGlscy50c3giLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L3dpdGhMYXlvdXQudHN4Iiwid2VicGFjazovLy8uL3N0YXRlLnRzIiwid2VicGFjazovLy8uL3R5cGVzLnRzIiwid2VicGFjazovLy8uL3V0aWxzLnRzIiwid2VicGFjazovLy8uL2NvbnRlbnQvY29tcG9uZW50cy9zdHlsZXMuY3NzP2QxZjUiLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L2NvbXBvbmVudHMvc3R5bGVzLmNzcz8xNmYwIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGltcGVyaXVtL2F1dGgtY2xpZW50XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGltcGVyaXVtL3N0YXRlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkB0aHgvY29udHJvbHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJkZWJ1Z1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC9jb21wYWN0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibG9kYXNoL2Zsb3dSaWdodFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC9mcFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC9ncm91cEJ5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibG9kYXNoL21lbW9pemVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJsb2Rhc2gvbWVyZ2VcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJsb2Rhc2gvc29ydEJ5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibWluZ29cIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJxdWVyeXN0cmluZ1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZXNwb25zaXZlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3Qtcm91dGVyXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3Qtcm91dGVyLWRvbVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1kZXYtcnVudGltZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInNlbWFudGljLXVpLXJlYWN0XCIiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovLy8uL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX3BhcmVudC0tcWNacXcge1xcblxcdGZsZXg6IDE7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogcm93O1xcblxcdGhlaWdodDogMTAwJTtcXG59XFxuXFxuLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX3dyYXBwZXItLW1ielNpIHtcXG5cXHRmbGV4OiAxO1xcblxcdGZsZXgtYmFzaXM6IGNhbGMoNjUlKTtcXG59XFxuXFxuLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnQtLWZoU1hHIHtcXG5cXHRtYXJnaW46IDAgMC44cmVtIDAuOHJlbSAwLjhyZW07XFxufVxcblxcbi5jb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50RnVsbC0ta1VXM18ge1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXJnaW46IDAgMDtcXG59XFxuXFxuLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2hlYWRlci0tTk9HeWMge1xcblxcdHBhZGRpbmc6IDAuOHJlbSAwLjhyZW0gMCAwLjhyZW07XFxuXFx0bWFyZ2luLWJvdHRvbTogMC44cmVtO1xcbn1cXG5cXG4uY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fc2lkZWJhci0tckxVNVIge1xcblxcdG1pbi13aWR0aDogMjUwcHg7XFxuXFx0cGFkZGluZzogMTBweDtcXG5cXHRvdmVyZmxvdy15OiBhdXRvO1xcblxcdG92ZXJmbG93LXg6IGhpZGRlbjtcXG59XFxuXFxuLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX3NpZGViYXJJdGVtLS1FeWxnZiB7XFxuXFx0bWFyZ2luLWJvdHRvbTogNXB4O1xcbn1cXG5cXG4uY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fYWN0aW9uc0hlYWRlci0tTjZ6ek0ge1xcblxcdGRpc3BsYXk6IG5vbmU7XFxufVxcblxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcXG5cXHQuY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fcGFyZW50LS1xY1pxdyB7XFxuXFx0XFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG5cXHRcXHRoZWlnaHQ6IGF1dG87XFxuXFx0fVxcblxcdC5jb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX193cmFwcGVyLS1tYnpTaSB7XFxuXFx0XFx0Ym9yZGVyLXJpZ2h0OiBub25lO1xcblxcdFxcdHBhZGRpbmctYm90dG9tOiAyMHB4O1xcblxcdH1cXG5cXHQuY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fc2lkZWJhci0tckxVNVIge1xcblxcdFxcdG1pbi13aWR0aDogYXV0bztcXG5cXHR9XFxuXFx0LmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2FjdGlvbnNIZWFkZXItLU42enpNIHtcXG5cXHRcXHRkaXNwbGF5OiBibG9jaztcXG5cXHRcXHRtYXJnaW4tYm90dG9tOiA1cHg7XFxuXFx0fVxcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9jb250ZW50L2NvbXBvbmVudHMvc3R5bGVzLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtDQUNDLE9BQU87Q0FDUCxhQUFhO0NBQ2IsbUJBQW1CO0NBQ25CLFlBQVk7QUFDYjs7QUFFQTtDQUNDLE9BQU87Q0FDUCxxQkFBcUI7QUFDdEI7O0FBRUE7Q0FDQyw4QkFBOEI7QUFDL0I7O0FBRUE7Q0FDQyxZQUFZO0NBQ1osV0FBVztBQUNaOztBQUVBO0NBQ0MsK0JBQStCO0NBQy9CLHFCQUFxQjtBQUN0Qjs7QUFFQTtDQUNDLGdCQUFnQjtDQUNoQixhQUFhO0NBQ2IsZ0JBQWdCO0NBQ2hCLGtCQUFrQjtBQUNuQjs7QUFFQTtDQUNDLGtCQUFrQjtBQUNuQjs7QUFFQTtDQUNDLGFBQWE7QUFDZDs7QUFFQTtDQUNDO0VBQ0Msc0JBQXNCO0VBQ3RCLFlBQVk7Q0FDYjtDQUNBO0VBQ0Msa0JBQWtCO0VBQ2xCLG9CQUFvQjtDQUNyQjtDQUNBO0VBQ0MsZUFBZTtDQUNoQjtDQUNBO0VBQ0MsY0FBYztFQUNkLGtCQUFrQjtDQUNuQjtBQUNEXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5wYXJlbnQge1xcblxcdGZsZXg6IDE7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogcm93O1xcblxcdGhlaWdodDogMTAwJTtcXG59XFxuXFxuLndyYXBwZXIge1xcblxcdGZsZXg6IDE7XFxuXFx0ZmxleC1iYXNpczogY2FsYyg2NSUpO1xcbn1cXG5cXG4uY29udGVudCB7XFxuXFx0bWFyZ2luOiAwIDAuOHJlbSAwLjhyZW0gMC44cmVtO1xcbn1cXG5cXG4uY29udGVudEZ1bGwge1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXJnaW46IDAgMDtcXG59XFxuXFxuLmhlYWRlciB7XFxuXFx0cGFkZGluZzogMC44cmVtIDAuOHJlbSAwIDAuOHJlbTtcXG5cXHRtYXJnaW4tYm90dG9tOiAwLjhyZW07XFxufVxcblxcbi5zaWRlYmFyIHtcXG5cXHRtaW4td2lkdGg6IDI1MHB4O1xcblxcdHBhZGRpbmc6IDEwcHg7XFxuXFx0b3ZlcmZsb3cteTogYXV0bztcXG5cXHRvdmVyZmxvdy14OiBoaWRkZW47XFxufVxcblxcbi5zaWRlYmFySXRlbSB7XFxuXFx0bWFyZ2luLWJvdHRvbTogNXB4O1xcbn1cXG5cXG4uYWN0aW9uc0hlYWRlciB7XFxuXFx0ZGlzcGxheTogbm9uZTtcXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xcblxcdC5wYXJlbnQge1xcblxcdFxcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuXFx0XFx0aGVpZ2h0OiBhdXRvO1xcblxcdH1cXG5cXHQud3JhcHBlciB7XFxuXFx0XFx0Ym9yZGVyLXJpZ2h0OiBub25lO1xcblxcdFxcdHBhZGRpbmctYm90dG9tOiAyMHB4O1xcblxcdH1cXG5cXHQuc2lkZWJhciB7XFxuXFx0XFx0bWluLXdpZHRoOiBhdXRvO1xcblxcdH1cXG5cXHQuYWN0aW9uc0hlYWRlciB7XFxuXFx0XFx0ZGlzcGxheTogYmxvY2s7XFxuXFx0XFx0bWFyZ2luLWJvdHRvbTogNXB4O1xcblxcdH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5sb2NhbHMgPSB7XG5cdFwicGFyZW50XCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fcGFyZW50LS1xY1pxd1wiLFxuXHRcIndyYXBwZXJcIjogXCJjb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX193cmFwcGVyLS1tYnpTaVwiLFxuXHRcImNvbnRlbnRcIjogXCJjb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50LS1maFNYR1wiLFxuXHRcImNvbnRlbnRGdWxsXCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fY29udGVudEZ1bGwtLWtVVzNfXCIsXG5cdFwiaGVhZGVyXCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19faGVhZGVyLS1OT0d5Y1wiLFxuXHRcInNpZGViYXJcIjogXCJjb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19zaWRlYmFyLS1yTFU1UlwiLFxuXHRcInNpZGViYXJJdGVtXCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fc2lkZWJhckl0ZW0tLUV5bGdmXCIsXG5cdFwiYWN0aW9uc0hlYWRlclwiOiBcImNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2FjdGlvbnNIZWFkZXItLU42enpNXCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLyogTmVlZCB0byBwYXNzIDEwMCUgaGVpZ2h0IGFsbCB0aGUgd2F5IGRvd24gKi9cXG4jcm9vdCB7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcbn1cXG4jcm9vdCA+IGRpdiB7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19wYXJlbnQtLXN3czhPIHtcXG5cXHRtaW4taGVpZ2h0OiAxMDAlO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19fbWVudWJhci0tV01jWG4ge1xcblxcdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19fc3RhdHVzYmFyLS1IYTRmXyB7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19zZWNvbmRhcnlNZW51LS1ieXU2eSB7XFxuXFx0bWluLXdpZHRoOiAyMjBweCAhaW1wb3J0YW50O1xcblxcdHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XFxuXFx0aGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcblxcdG92ZXJmbG93LXg6IGF1dG87IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcblxcdHRyYW5zaXRpb246IG1hcmdpbi1sZWZ0IDAuM3MgZWFzZS1pbi1vdXQ7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3NlY29uZGFyeU1lbnVIaWRkZW4tLWVrN1F6IHtcXG5cXHRtYXJnaW4tbGVmdDogLTIyMHB4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnRXcmFwcGVyLS1TYVlHbiB7XFxuXFx0ZmxleDogMTtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuXFx0ZmxleC13cmFwOiBub3dyYXA7XFxuXFx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xcblxcdGJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyAvKiB0aGlzIGlzIGEgc2VnbWVudCwgYW5kIHRoZXkgc2VlbSB0byBoYXZlIGEgMXB4IHdoaXRlIGJvcmRlciBieSBkZWZhdWx0ICovXFxuXFx0b3ZlcmZsb3cteTogYXV0bzsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnQtLUpHRHVXIHtcXG5cXHRmbGV4OiAxOyAvKiBjaGFuZ2VkIHRoaXMgdG8gaGF2ZSBhIGZsZXggb2Ygb25lIGluc3RlYWQgb2YgYXV0byBzbyB0aGUgc2lkZSBtZW51IGRvZXNuJ3QgZ2V0IHNxdWlzaGVkICovXFxuXFx0YWxpZ24tY29udGVudDogZmxleC1zdGFydDtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxuXFx0bWF4LWhlaWdodDogMTAwJTsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxuXFx0b3ZlcmZsb3cteDogaGlkZGVuOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19fZm9vdGVyLS1BN0xTSCB7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duSWNvbi0tVjY5Q3cge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIDtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZC0tYlp5Tk8ge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcXG5cXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyA7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duVGl0bGUtLXM2QXNxIHtcXG5cXHRwYWRkaW5nOiAwO1xcblxcdGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25Db250ZW50LS14R0h4YSB7XFxuXFx0cGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcXG5cXHRtYXJnaW46IDAgLTEuMTQyODU3MTRlbSAwIDA7XFxuXFx0Ym9yZGVyLXJhZGl1czogMDtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19faWNvbi0tR3RsNHQge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGxpbmVhcjtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX2ljb25Sb3RhdGVkLS1YQjY3WSB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoLTE4MGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNXM7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9sYXlvdXQvY29tcG9uZW50cy9zdHlsZXMuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLDhDQUE4QztBQUM5QztDQUNDLFlBQVk7QUFDYjtBQUNBO0NBQ0MsWUFBWTtBQUNiOztBQUVBO0NBQ0MsZ0JBQWdCO0NBQ2hCLGFBQWE7Q0FDYixzQkFBc0I7QUFDdkI7O0FBRUE7Q0FDQywyQkFBMkI7Q0FDM0Isb0JBQW9CO0FBQ3JCOztBQUVBO0NBQ0Msb0JBQW9CO0NBQ3BCLDJCQUEyQjtBQUM1Qjs7QUFFQTtDQUNDLDJCQUEyQjtDQUMzQixzQkFBc0I7Q0FDdEIsdUJBQXVCO0NBQ3ZCLDJCQUEyQjtDQUMzQixvQkFBb0I7Q0FDcEIsZ0JBQWdCLEVBQUUsOERBQThEO0NBQ2hGLHdDQUF3QztBQUN6Qzs7QUFFQTtDQUNDLDhCQUE4QjtBQUMvQjs7QUFFQTtDQUNDLE9BQU87Q0FDUCxhQUFhO0NBQ2IsbUJBQW1CO0NBQ25CLGlCQUFpQjtDQUNqQixxQkFBcUI7Q0FDckIsc0NBQXNDLEVBQUUsMkVBQTJFO0NBQ25ILGdCQUFnQixFQUFFLDhEQUE4RDtBQUNqRjs7QUFFQTtDQUNDLE9BQU8sRUFBRSw2RkFBNkY7Q0FDdEcseUJBQXlCO0NBQ3pCLFlBQVk7Q0FDWixnQkFBZ0IsRUFBRSw4REFBOEQ7Q0FDaEYsa0JBQWtCLEVBQUUsOERBQThEO0FBQ25GOztBQUVBO0NBQ0Msb0JBQW9CO0NBQ3BCLDJCQUEyQjtBQUM1Qjs7QUFFQTtDQUNDLHVCQUF1QjtDQUN2QiwyQkFBMkI7Q0FDM0IsZUFBZTtBQUNoQjs7QUFFQTtDQUNDLHdCQUF3QjtDQUN4QiwyQkFBMkI7Q0FDM0IsZUFBZTtBQUNoQjs7QUFFQTtDQUNDLFVBQVU7Q0FDVixzQkFBc0I7QUFDdkI7O0FBRUE7Q0FDQyx5QkFBeUI7Q0FDekIsMkJBQTJCO0NBQzNCLGdCQUFnQjtBQUNqQjs7QUFFQTtDQUNDLHVCQUF1QjtDQUN2QixpQ0FBaUM7Q0FDakMsZUFBZTtBQUNoQjs7QUFFQTtDQUNDLDBCQUEwQjtDQUMxQiwwQkFBMEI7Q0FDMUIsZUFBZTtBQUNoQlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIvKiBOZWVkIHRvIHBhc3MgMTAwJSBoZWlnaHQgYWxsIHRoZSB3YXkgZG93biAqL1xcbjpnbG9iYWwoI3Jvb3QpIHtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxufVxcbjpnbG9iYWwoI3Jvb3QpID4gZGl2IHtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxufVxcblxcbi5wYXJlbnQge1xcblxcdG1pbi1oZWlnaHQ6IDEwMCU7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG5cXG4ubWVudWJhciB7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uc3RhdHVzYmFyIHtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5zZWNvbmRhcnlNZW51IHtcXG5cXHRtaW4td2lkdGg6IDIyMHB4ICFpbXBvcnRhbnQ7XFxuXFx0d2lkdGg6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0b3ZlcmZsb3cteDogYXV0bzsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxuXFx0dHJhbnNpdGlvbjogbWFyZ2luLWxlZnQgMC4zcyBlYXNlLWluLW91dDtcXG59XFxuXFxuLnNlY29uZGFyeU1lbnVIaWRkZW4ge1xcblxcdG1hcmdpbi1sZWZ0OiAtMjIwcHggIWltcG9ydGFudDtcXG59XFxuXFxuLmNvbnRlbnRXcmFwcGVyIHtcXG5cXHRmbGV4OiAxO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleC1kaXJlY3Rpb246IHJvdztcXG5cXHRmbGV4LXdyYXA6IG5vd3JhcDtcXG5cXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IC8qIHRoaXMgaXMgYSBzZWdtZW50LCBhbmQgdGhleSBzZWVtIHRvIGhhdmUgYSAxcHggd2hpdGUgYm9yZGVyIGJ5IGRlZmF1bHQgKi9cXG5cXHRvdmVyZmxvdy15OiBhdXRvOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG59XFxuXFxuLmNvbnRlbnQge1xcblxcdGZsZXg6IDE7IC8qIGNoYW5nZWQgdGhpcyB0byBoYXZlIGEgZmxleCBvZiBvbmUgaW5zdGVhZCBvZiBhdXRvIHNvIHRoZSBzaWRlIG1lbnUgZG9lc24ndCBnZXQgc3F1aXNoZWQgKi9cXG5cXHRhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXgtaGVpZ2h0OiAxMDAlOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG5cXHRvdmVyZmxvdy14OiBoaWRkZW47IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcbn1cXG5cXG4uZm9vdGVyIHtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi52ZXJ0aWNhbERyb3Bkb3duSWNvbiB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgO1xcblxcdGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLnZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZCB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIDtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi52ZXJ0aWNhbERyb3Bkb3duVGl0bGUge1xcblxcdHBhZGRpbmc6IDA7XFxuXFx0Y29sb3I6ICNmZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLnZlcnRpY2FsRHJvcGRvd25Db250ZW50IHtcXG5cXHRwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAtMS4xNDI4NTcxNGVtIDAgMDtcXG5cXHRib3JkZXItcmFkaXVzOiAwO1xcbn1cXG5cXG4uaWNvbiB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgbGluZWFyO1xcblxcdGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLmljb25Sb3RhdGVkIHtcXG5cXHR0cmFuc2Zvcm06IHJvdGF0ZSgtMTgwZGVnKTtcXG5cXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cztcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ubG9jYWxzID0ge1xuXHRcInBhcmVudFwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fcGFyZW50LS1zd3M4T1wiLFxuXHRcIm1lbnViYXJcIjogXCJsYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX21lbnViYXItLVdNY1huXCIsXG5cdFwic3RhdHVzYmFyXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19zdGF0dXNiYXItLUhhNGZfXCIsXG5cdFwic2Vjb25kYXJ5TWVudVwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fc2Vjb25kYXJ5TWVudS0tYnl1NnlcIixcblx0XCJzZWNvbmRhcnlNZW51SGlkZGVuXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19zZWNvbmRhcnlNZW51SGlkZGVuLS1lazdRelwiLFxuXHRcImNvbnRlbnRXcmFwcGVyXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50V3JhcHBlci0tU2FZR25cIixcblx0XCJjb250ZW50XCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50LS1KR0R1V1wiLFxuXHRcImZvb3RlclwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fZm9vdGVyLS1BN0xTSFwiLFxuXHRcInZlcnRpY2FsRHJvcGRvd25JY29uXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duSWNvbi0tVjY5Q3dcIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duSWNvblJvdGF0ZWRcIjogXCJsYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZC0tYlp5Tk9cIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duVGl0bGVcIjogXCJsYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25UaXRsZS0tczZBc3FcIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duQ29udGVudFwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fdmVydGljYWxEcm9wZG93bkNvbnRlbnQtLXhHSHhhXCIsXG5cdFwiaWNvblwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19faWNvbi0tR3RsNHRcIixcblx0XCJpY29uUm90YXRlZFwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19faWNvblJvdGF0ZWQtLVhCNjdZXCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBcIlwiO1xuICAgICAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBpdGVtWzVdICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpO1xuICAgICAgfVxuXG4gICAgICBjb250ZW50ICs9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG5cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIGkobW9kdWxlcywgbWVkaWEsIGRlZHVwZSwgc3VwcG9ydHMsIGxheWVyKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCB1bmRlZmluZWRdXTtcbiAgICB9XG5cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHRoaXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNbX2ldWzBdO1xuXG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgbW9kdWxlcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19pMl0pO1xuXG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgbGF5ZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtWzVdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzdXBwb3J0cykge1xuICAgICAgICBpZiAoIWl0ZW1bNF0pIHtcbiAgICAgICAgICBpdGVtWzRdID0gXCJcIi5jb25jYXQoc3VwcG9ydHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs0XSA9IHN1cHBvcnRzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXTtcbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gXCIvKiMgc291cmNlVVJMPVwiLmNvbmNhdChjc3NNYXBwaW5nLnNvdXJjZVJvb3QgfHwgXCJcIikuY29uY2F0KHNvdXJjZSwgXCIgKi9cIik7XG4gICAgfSk7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiaW1wb3J0IHR5cGUge1Blcm1pc3Npb25TZWxlY3Rvckhvb2ssIFN0YXRlU2VsZWN0b3JIb29rLCBWaXNpYmlsaXR5UXVlcnlGbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogRGVzY3JpYmVzIGFuIGl0ZW0gdGhhdCBjYW4gaGlkZSBpdHNlbGYgYmFzZWQgb24gcmVkdXggc3RhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaXNpYmlsaXR5SXRlbSB7XG5cdHN0YXRlU2VsZWN0b3JIb29rPzogU3RhdGVTZWxlY3Rvckhvb2sgfCBTdGF0ZVNlbGVjdG9ySG9va1tdOyAvLyBIb29rIG9yIGFycmF5IG9mIGhvb2tzIHRoYXQgc2VsZWN0IHN0YXRlXG5cdHBlcm1pc3Npb25TZWxlY3Rvckhvb2s/OiBQZXJtaXNzaW9uU2VsZWN0b3JIb29rIHwgUGVybWlzc2lvblNlbGVjdG9ySG9va1tdOyAvLyBIb29rIG9yIGFycmF5IG9mIGhvb2tzIHRoYXQgc2VsZWN0IHBlcm1pc3Npb25zXG5cdHZpc2libGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IFZpc2liaWxpdHlRdWVyeUZuO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhbiBpdGVtIHdpdGggb3B0aW9uYWwgd2VpZ2h0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2VpZ2h0ZWRJdGVtIHtcblx0d2VpZ2h0PzogbnVtYmVyOyAvLyBMYXJnZXIgbnVtYmVycyBtb3ZlIHJpZ2h0L2Rvd25cbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYW4gaXRlbSB0aGF0IGxpbmtzIHRvIGEgcm91dGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZUl0ZW08VD4ge1xuXHR0bz86IHN0cmluZyB8ICgoZGF0YTogVCkgPT4gc3RyaW5nKTtcblx0ZXhhY3Q/OiBib29sZWFuO1xuXHRzdHJpY3Q/OiBib29sZWFuO1xuXHRzZW5zaXRpdmU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhbiBpdGVtIHRoYXQgY2FuIGJlIHBvc2l0aW9uZWQgaG9yaXpvbnRhbGx5IGxlZnQgb3IgcmlnaHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0ge1xuXHRwb3NpdGlvbj86ICdsZWZ0JyB8ICdyaWdodCc7IC8vIERlZmF1bHQgaXMgbGVmdFxuXHRzdGlja09uTW9iaWxlPzogYm9vbGVhbjsgLy8gSWYgdHJ1ZSwgd2lsbCBub3QgYmUgaGlkZGVuIHdoZW4gaW4gbW9iaWxlIG1vZGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSG9yaXpvbnRhbFBvc2l0aW9uZWRJdGVtKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0ge1xuXHRyZXR1cm4gISEoKHZhbHVlIGFzIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSkucG9zaXRpb24gfHwgKHZhbHVlIGFzIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSkuc3RpY2tPbk1vYmlsZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JvdXRlSXRlbTxUPih2YWx1ZTogYW55KTogdmFsdWUgaXMgUm91dGVJdGVtPFQ+IHtcblx0cmV0dXJuICEhKCh2YWx1ZSBhcyBSb3V0ZUl0ZW08VD4pLnRvIHx8ICh2YWx1ZSBhcyBSb3V0ZUl0ZW08VD4pLmV4YWN0IHx8ICh2YWx1ZSBhcyBSb3V0ZUl0ZW08VD4pLnN0cmljdCB8fCAodmFsdWUgYXMgUm91dGVJdGVtPFQ+KS5zZW5zaXRpdmUpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQge3VzZVRGb3JtfSBmcm9tICdAdGh4L2NvbnRyb2xzJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge0J1dHRvbiwgRm9ybSwgSWNvbiwgTWVzc2FnZSwgUG9wdXB9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtBY3Rpb25Gb3JtU2lkZWJhckl0ZW0sIENvbnRlbnREYXRhfSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbnRlbnQuY29tcG9uZW50cy5BY3Rpb25Gb3JtJyk7XG5cbmludGVyZmFjZSBBY3Rpb25Gb3JtUHJvcHM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0aXRlbTogQWN0aW9uRm9ybVNpZGViYXJJdGVtPFQsIEs+O1xuXHRkYXRhOiBDb250ZW50RGF0YTxULCBLPjtcblx0b25IaWRlRm9ybTogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFjdGlvbkZvcm08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHtpdGVtLCBkYXRhLCBvbkhpZGVGb3JtfTogQWN0aW9uRm9ybVByb3BzPFQsIEs+KSB7XG5cdC8vIEdldCBpbml0aWFsIHZhbHVlc1xuXHRsZXQgaW5pdGlhbFZhbHVlcyA9IHt9O1xuXHRpZiAoaXRlbS5pbml0aWFsVmFsdWVzKSB7XG5cdFx0aWYgKHR5cGVvZiBpdGVtLmluaXRpYWxWYWx1ZXMgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGluaXRpYWxWYWx1ZXMgPSBpdGVtLmluaXRpYWxWYWx1ZXMoZGF0YSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGluaXRpYWxWYWx1ZXMgPSBpdGVtLmluaXRpYWxWYWx1ZXM7XG5cdFx0fVxuXHR9XG5cblx0Ly8gVEZvcm1cblx0Y29uc3Qge2hhc0Vycm9ycywgaGFzV2FybmluZ3MsIGhhbmRsZVN1Ym1pdCwgaGFuZGxlQ2hhbmdlLCB2YWx1ZXMsIHJlc2V0Rm9ybSwgZXJyb3JzLCBmaWVsZEVycm9yfSA9IHVzZVRGb3JtKHtcblx0XHRpbml0aWFsVmFsdWVzLFxuXHRcdG9uU3VibWl0OiBzdWJtaXRWYWx1ZXMgPT4ge1xuXHRcdFx0aWYgKGl0ZW0ub25TdWJtaXQpIHtcblx0XHRcdFx0aXRlbS5vblN1Ym1pdChzdWJtaXRWYWx1ZXMsIGRhdGEpO1xuXHRcdFx0fVxuXHRcdFx0b25IaWRlRm9ybSgpO1xuXHRcdH0sXG5cdFx0ZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlLFxuXHRcdHZhbGlkYXRpb25TY2hlbWE6IGl0ZW0udmFsaWRhdGlvblNjaGVtYSxcblx0fSk7XG5cblx0Y29uc3Qgc2F2ZUJ1dHRvbiA9IGhhc1dhcm5pbmdzID8gKFxuXHRcdDxQb3B1cFxuXHRcdFx0dHJpZ2dlcj17XG5cdFx0XHRcdDxCdXR0b24gcG9zaXRpdmUgdHlwZT1cInN1Ym1pdFwiIGZsb2F0ZWQ9XCJyaWdodFwiIGljb24gbGFiZWxQb3NpdGlvbj1cImxlZnRcIj5cblx0XHRcdFx0XHQ8SWNvbiBuYW1lPVwiZXhjbGFtYXRpb24gY2lyY2xlXCIgY29sb3I9XCJyZWRcIiAvPlxuXHRcdFx0XHRcdFNhdmVcblx0XHRcdFx0PC9CdXR0b24+XG5cdFx0XHR9XG5cdFx0XHRjb250ZW50PXs8TWVzc2FnZSBlcnJvciBsaXN0PXtPYmplY3QudmFsdWVzKGVycm9ycyl9IC8+fVxuXHRcdFx0b249XCJob3ZlclwiXG5cdFx0Lz5cblx0KSA6IChcblx0XHQ8QnV0dG9uIHBvc2l0aXZlIHR5cGU9XCJzdWJtaXRcIiBmbG9hdGVkPVwicmlnaHRcIj5cblx0XHRcdFNhdmVcblx0XHQ8L0J1dHRvbj5cblx0KTtcblxuXHQvLyBSZW5kZXIgZm9ybVxuXHRyZXR1cm4gKFxuXHRcdDxGb3JtIGVycm9yPXtoYXNFcnJvcnN9IHdhcm5pbmc9e2hhc1dhcm5pbmdzfSBvblN1Ym1pdD17aGFuZGxlU3VibWl0fT5cblx0XHRcdHtpdGVtLmZvcm0oe2hhbmRsZUNoYW5nZSwgdmFsdWVzLCBkYXRhLCBmaWVsZEVycm9yfSl9XG5cdFx0XHR7c2F2ZUJ1dHRvbn1cblx0XHRcdDxCdXR0b25cblx0XHRcdFx0dHlwZT1cImJ1dHRvblwiXG5cdFx0XHRcdG9uQ2xpY2s9eygpID0+IHtcblx0XHRcdFx0XHRyZXNldEZvcm0oKTtcblx0XHRcdFx0XHRvbkhpZGVGb3JtKCk7XG5cdFx0XHRcdH19XG5cdFx0XHQ+XG5cdFx0XHRcdENhbmNlbFxuXHRcdFx0PC9CdXR0b24+XG5cdFx0PC9Gb3JtPlxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHt1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtCdXR0b259IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtBY3Rpb25Gb3JtU2lkZWJhckl0ZW0sIENvbnRlbnREYXRhfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2dldENvbG9yLCBnZXRJY29uLCBnZXRUZXh0fSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge0FjdGlvbkZvcm19IGZyb20gJy4vQWN0aW9uRm9ybSc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbnRlbnQuY29tcG9uZW50cy5BY3Rpb25Gb3JtU2lkZWJhckl0ZW1Db21wb25lbnQnKTtcblxuaW50ZXJmYWNlIEFjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudFByb3BzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdGl0ZW06IEFjdGlvbkZvcm1TaWRlYmFySXRlbTxULCBLPjtcblx0ZGF0YTogQ29udGVudERhdGE8VCwgSz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBY3Rpb25Gb3JtU2lkZWJhckl0ZW1Db21wb25lbnQ8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHtcblx0aXRlbSxcblx0ZGF0YSxcbn06IEFjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudFByb3BzPFQsIEs+KSB7XG5cdGNvbnN0IFtpc0VkaXQsIHNldElzRWRpdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cblx0aWYgKGlzRWRpdCkge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8QWN0aW9uRm9ybVxuXHRcdFx0XHRpdGVtPXtpdGVtfVxuXHRcdFx0XHRkYXRhPXtkYXRhfVxuXHRcdFx0XHRvbkhpZGVGb3JtPXsoKSA9PiB7XG5cdFx0XHRcdFx0c2V0SXNFZGl0KGZhbHNlKTtcblx0XHRcdFx0fX1cblx0XHRcdC8+XG5cdFx0KTtcblx0fVxuXG5cdGNvbnN0IGljb24gPSBnZXRJY29uKGl0ZW0sIGRhdGEpO1xuXG5cdC8vIFJlbmRlciBhY3Rpb24gYnV0dG9uXG5cdHJldHVybiAoXG5cdFx0PEJ1dHRvblxuXHRcdFx0Zmx1aWRcblx0XHRcdGNvbXBhY3Rcblx0XHRcdGNvbG9yPXtnZXRDb2xvcihpdGVtLCBkYXRhKX1cblx0XHRcdGljb249eyEhaWNvbn1cblx0XHRcdGxhYmVsUG9zaXRpb249e2ljb24gPyAnbGVmdCcgOiB1bmRlZmluZWR9XG5cdFx0XHRvbkNsaWNrPXsoKSA9PiB7XG5cdFx0XHRcdHNldElzRWRpdCh0cnVlKTtcblx0XHRcdH19XG5cdFx0PlxuXHRcdFx0e2ljb259XG5cdFx0XHR7Z2V0VGV4dChpdGVtLCBkYXRhKX1cblx0XHQ8L0J1dHRvbj5cblx0KTtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IHtCdXR0b259IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtBY3Rpb25TaWRlYmFySXRlbSwgQ29udGVudERhdGF9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7Z2V0Q29sb3IsIGdldEljb24sIGdldFRleHR9IGZyb20gJy4uL3V0aWxzJztcblxuaW50ZXJmYWNlIEFjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50UHJvcHM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0aXRlbTogQWN0aW9uU2lkZWJhckl0ZW08VCwgSz47XG5cdGRhdGE6IENvbnRlbnREYXRhPFQsIEs+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQWN0aW9uU2lkZWJhckl0ZW1Db21wb25lbnQ8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHtpdGVtLCBkYXRhfTogQWN0aW9uU2lkZWJhckl0ZW1Db21wb25lbnRQcm9wczxULCBLPikge1xuXHRjb25zdCBpY29uID0gZ2V0SWNvbihpdGVtLCBkYXRhKTtcblxuXHRyZXR1cm4gKFxuXHRcdDxCdXR0b25cblx0XHRcdGZsdWlkXG5cdFx0XHRjb21wYWN0XG5cdFx0XHRjb2xvcj17Z2V0Q29sb3IoaXRlbSwgZGF0YSl9XG5cdFx0XHRpY29uPXshIWljb259XG5cdFx0XHRsYWJlbFBvc2l0aW9uPXtpY29uID8gJ2xlZnQnIDogdW5kZWZpbmVkfVxuXHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRpdGVtLm9uQ2xpY2soZGF0YSk7XG5cdFx0XHR9fVxuXHRcdD5cblx0XHRcdHtpY29ufVxuXHRcdFx0e2dldFRleHQoaXRlbSwgZGF0YSl9XG5cdFx0PC9CdXR0b24+XG5cdCk7XG59XG4iLCJpbXBvcnQgdHlwZSB7RGVmaW5lUm91dGVPcHRpb25zfSBmcm9tICdAaW1wZXJpdW0vcm91dGVyJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge2lzRXF1YWx9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge0RlcGVuZGVuY3lMaXN0LCBFZmZlY3RDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dXNlRGlzcGF0Y2h9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7RGF0YUhvb2tzfSBmcm9tICcuLi8uLi9kYXRhaG9va3MvRGF0YUhvb2tzJztcbmltcG9ydCB7YWN0aW9uc30gZnJvbSAnLi4vLi4vc3RhdGUnO1xuaW1wb3J0IHtzb3J0V2VpZ2h0ZWRJdGVtc30gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHt1c2VCdWlsZENvbnRlbnREYXRhfSBmcm9tICcuLi9ob29rcy91c2VCdWlsZENvbnRlbnREYXRhJztcbmltcG9ydCB0eXBlIHtQYWdlLCBSb3V0ZVBhcmFtZXRlcnN9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7SGVhZGVyfSBmcm9tICcuL0hlYWRlcic7XG5pbXBvcnQge1NpZGViYXJJdGVtV3JhcHBlcn0gZnJvbSAnLi9TaWRlYmFySXRlbVdyYXBwZXInO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5jc3MnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb250ZW50LmNvbXBvbmVudHMuQ29udGVudENvbXBvbmVudCcpO1xuXG5pbnRlcmZhY2UgQ29udGVudENvbXBvbmVudFByb3BzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdHBhZ2U6IFBhZ2U8VCwgSz47XG5cdHBhcmFtczogUm91dGVQYXJhbWV0ZXJzPFRbS11bJ3BhcmFtcyddPjtcbn1cblxuZnVuY3Rpb24gdXNlRGVlcENvbXBhcmVNZW1vaXplKHZhbHVlOiBhbnkpIHtcblx0Y29uc3QgcmVmID0gdXNlUmVmKCk7XG5cdGlmICghdmFsdWUgJiYgIXJlZi5jdXJyZW50KSByZXR1cm4gcmVmLmN1cnJlbnQ7XG5cdGlmICghaXNFcXVhbCh2YWx1ZSwgcmVmLmN1cnJlbnQpKSB7XG5cdFx0cmVmLmN1cnJlbnQgPSB2YWx1ZTtcblx0fVxuXHRyZXR1cm4gcmVmLmN1cnJlbnQ7XG59XG5cbmZ1bmN0aW9uIHVzZURlZXBDb21wYXJlRWZmZWN0KGNhbGxiYWNrOiBFZmZlY3RDYWxsYmFjaywgZGVwczogRGVwZW5kZW5jeUxpc3QpIHtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuXHR1c2VFZmZlY3QoY2FsbGJhY2ssIGRlcHMubWFwKHVzZURlZXBDb21wYXJlTWVtb2l6ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ29udGVudENvbXBvbmVudDxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oe3BhZ2UsIHBhcmFtc306IENvbnRlbnRDb21wb25lbnRQcm9wczxULCBLPikge1xuXHRjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cdGNvbnN0IGRhdGEgPSB1c2VCdWlsZENvbnRlbnREYXRhKHtzdGF0ZVNlbGVjdG9ySG9vazogcGFnZS5zdGF0ZVNlbGVjdG9ySG9vaywgcGVybWlzc2lvblNlbGVjdG9ySG9vazogcGFnZS5wZXJtaXNzaW9uU2VsZWN0b3JIb29rLCBwYXJhbXN9KTtcblxuXHR1c2VEZWVwQ29tcGFyZUVmZmVjdCgoKSA9PiB7XG5cdFx0ZGlzcGF0Y2goYWN0aW9ucy5zZXRQYXJhbXMocGFyYW1zKSk7XG5cdH0sIFtkaXNwYXRjaCwgcGFyYW1zXSk7XG5cblx0Y29uc3QgY29udGVudCA9IHBhZ2UuY29udGVudChkYXRhKTtcblx0Y29uc3Qgc2lkZWJhckl0ZW1zID0gc29ydFdlaWdodGVkSXRlbXMocGFnZS5zaWRlYmFyIHx8IFtdKTtcblxuXHRjb25zdCBzaWRlYmFyID1cblx0XHRzaWRlYmFySXRlbXMubGVuZ3RoID4gMCA/IChcblx0XHRcdDxkaXYgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc2lkZWJhcn0gaW1wZXJpdW1Db250ZW50U2lkZWJhcmB9PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17YCR7c3R5bGVzLmFjdGlvbnNIZWFkZXJ9IGltcGVyaXVtQ29udGVudFNpZGViYXJIZWFkZXJgfT5cblx0XHRcdFx0XHQ8aDM+QWN0aW9uczwvaDM+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHR7c2lkZWJhckl0ZW1zLm1hcCgoc2IsIGluZGV4KSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuc2lkZWJhckl0ZW19IGtleT17aW5kZXh9PlxuXHRcdFx0XHRcdFx0XHQ8U2lkZWJhckl0ZW1XcmFwcGVyIGl0ZW09e3NifSBwYXJhbXM9e3BhcmFtc30gZGF0YT17ZGF0YX0gLz5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pfVxuXHRcdFx0PC9kaXY+XG5cdFx0KSA6IG51bGw7XG5cblx0cmV0dXJuIChcblx0XHQ8ZGl2IGNsYXNzTmFtZT17YCR7c3R5bGVzLnBhcmVudH0gaW1wZXJpdW1Db250ZW50V3JhcHBlclBhcmVudGB9PlxuXHRcdFx0PGRpdiBjbGFzc05hbWU9e2Ake3N0eWxlcy53cmFwcGVyfSBpbXBlcml1bUNvbnRlbnRXcmFwcGVyYH0+XG5cdFx0XHRcdDxIZWFkZXIgaGVhZGVyPXtwYWdlLmhlYWRlcn0gZGF0YT17ZGF0YX0gLz5cblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9e2Ake3N0eWxlcy5jb250ZW50fSBpbXBlcml1bUNvbnRlbnQgJHtwYWdlLmZ1bGwgJiYgc3R5bGVzLmNvbnRlbnRGdWxsfWB9Pntjb250ZW50fTwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHR7c2lkZWJhcn1cblx0XHRcdDxEYXRhSG9va3MgZGF0YUhvb2tzPXtwYWdlLmRhdGFIb29rcyB8fCBbXX0gLz5cblx0XHQ8L2Rpdj5cblx0KTtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IHR5cGUge0NvbnRlbnREYXRhLCBDdXN0b21TaWRlYmFySXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgQ3VzdG9tU2lkZWJhckl0ZW1Db21wb25lbnRQcm9wczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4ge1xuXHRpdGVtOiBDdXN0b21TaWRlYmFySXRlbTxULCBLPjtcblx0ZGF0YTogQ29udGVudERhdGE8VCwgSz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDdXN0b21TaWRlYmFySXRlbUNvbXBvbmVudDxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oe2l0ZW0sIGRhdGF9OiBDdXN0b21TaWRlYmFySXRlbUNvbXBvbmVudFByb3BzPFQsIEs+KSB7XG5cdHJldHVybiBpdGVtLnJlbmRlcihkYXRhKTtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB0eXBlIHtDb250ZW50RGF0YSwgQ29udGVudEhlYWRlcn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5jc3MnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb250ZW50LmNvbXBvbmVudHMuSGVhZGVyJyk7XG5cbmludGVyZmFjZSBIZWFkZXJQcm9wczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4ge1xuXHRoZWFkZXI6IENvbnRlbnRIZWFkZXI8VCwgSz47XG5cdGRhdGE6IENvbnRlbnREYXRhPFQsIEs+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSGVhZGVyPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih7ZGF0YSwgaGVhZGVyfTogSGVhZGVyUHJvcHM8VCwgSz4pIHtcblx0aWYgKGhlYWRlcikge1xuXHRcdGxldCBoZWFkZXJJbmZvID0ge1xuXHRcdFx0dGl0bGU6ICcnLFxuXHRcdH07XG5cdFx0aWYgKHR5cGVvZiBoZWFkZXIgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRoZWFkZXJJbmZvLnRpdGxlID0gaGVhZGVyO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIGhlYWRlciA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0aGVhZGVySW5mbyA9IGhlYWRlcihkYXRhKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aGVhZGVySW5mbyA9IGhlYWRlcjtcblx0XHR9XG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXYgY2xhc3NOYW1lPXtgJHtzdHlsZXMuaGVhZGVyfSBpbXBlcml1bUNvbnRlbnRIZWFkZXJgfT5cblx0XHRcdFx0PGgyPntoZWFkZXJJbmZvLnRpdGxlfTwvaDI+XG5cdFx0XHQ8L2Rpdj5cblx0XHQpO1xuXHR9XG5cdHJldHVybiBudWxsO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQge0xpbmt9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHtCdXR0b259IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtBY3Rpb25Gb3JtU2lkZWJhckl0ZW0sIEFjdGlvblNpZGViYXJJdGVtLCBDb250ZW50RGF0YSwgQ3VzdG9tU2lkZWJhckl0ZW0sIERpdmlkZXJTaWRlYmFySXRlbSwgU2lkZWJhckl0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7Z2V0Q29sb3IsIGdldEljb24sIGdldFJvdXRlVG8sIGdldFRleHR9IGZyb20gJy4uL3V0aWxzJztcblxuaW50ZXJmYWNlIFBsYWluU2lkZWJhckl0ZW1Qcm9wczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4ge1xuXHRpdGVtOiBFeGNsdWRlPFNpZGViYXJJdGVtPFQsIEs+LCBDdXN0b21TaWRlYmFySXRlbTxULCBLPiB8IEFjdGlvblNpZGViYXJJdGVtPFQsIEs+IHwgQWN0aW9uRm9ybVNpZGViYXJJdGVtPFQsIEs+IHwgRGl2aWRlclNpZGViYXJJdGVtPFQsIEs+Pjtcblx0ZGF0YTogQ29udGVudERhdGE8VCwgSz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBQbGFpblNpZGViYXJJdGVtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih7aXRlbSwgZGF0YX06IFBsYWluU2lkZWJhckl0ZW1Qcm9wczxULCBLPikge1xuXHRjb25zdCBpY29uID0gZ2V0SWNvbihpdGVtLCBkYXRhKTtcblxuXHRyZXR1cm4gKFxuXHRcdDxCdXR0b24gZmx1aWQgY29tcGFjdCBjb2xvcj17Z2V0Q29sb3IoaXRlbSwgZGF0YSl9IGljb249eyEhaWNvbn0gbGFiZWxQb3NpdGlvbj17aWNvbiA/ICdsZWZ0JyA6IHVuZGVmaW5lZH0gYXM9e0xpbmt9IHRvPXtnZXRSb3V0ZVRvKGl0ZW0sIGRhdGEpfT5cblx0XHRcdHtpY29ufVxuXHRcdFx0e2dldFRleHQoaXRlbSwgZGF0YSl9XG5cdFx0PC9CdXR0b24+XG5cdCk7XG59XG4iLCJpbXBvcnQgdHlwZSB7RGVmaW5lUm91dGVPcHRpb25zfSBmcm9tICdAaW1wZXJpdW0vcm91dGVyJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge1F1ZXJ5fSBmcm9tICdtaW5nbyc7XG5pbXBvcnQge0RpdmlkZXJ9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7dXNlQnVpbGRDb250ZW50RGF0YX0gZnJvbSAnLi4vaG9va3MvdXNlQnVpbGRDb250ZW50RGF0YSc7XG5pbXBvcnQgdHlwZSB7Q29udGVudERhdGEsIFJvdXRlUGFyYW1ldGVycywgU2lkZWJhckl0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7aXNBY3Rpb25Gb3JtU2lkZWJhckl0ZW0sIGlzQWN0aW9uU2lkZWJhckl0ZW0sIGlzQ3VzdG9tU2lkZWJhckl0ZW0sIGlzRGl2aWRlclNpZGViYXJJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0FjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudH0gZnJvbSAnLi9BY3Rpb25Gb3JtU2lkZWJhckl0ZW1Db21wb25lbnQnO1xuaW1wb3J0IHtBY3Rpb25TaWRlYmFySXRlbUNvbXBvbmVudH0gZnJvbSAnLi9BY3Rpb25TaWRlYmFySXRlbUNvbXBvbmVudCc7XG5pbXBvcnQge0N1c3RvbVNpZGViYXJJdGVtQ29tcG9uZW50fSBmcm9tICcuL0N1c3RvbVNpZGViYXJJdGVtQ29tcG9uZW50JztcbmltcG9ydCB7UGxhaW5TaWRlYmFySXRlbX0gZnJvbSAnLi9QbGFpblNpZGViYXJJdGVtJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29udGVudC5jb21wb25lbnRzLlNpZGViYXJJdGVtV3JhcHBlcicpO1xuXG5pbnRlcmZhY2UgU2lkZWJhckl0ZW1XcmFwcGVyUHJvcHM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0aXRlbTogU2lkZWJhckl0ZW08VCwgSz47XG5cdGRhdGE/OiBDb250ZW50RGF0YTxULCBLPjtcblx0cGFyYW1zOiBSb3V0ZVBhcmFtZXRlcnM8VFtLXVsncGFyYW1zJ10+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU2lkZWJhckl0ZW1XcmFwcGVyPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih7aXRlbSwgZGF0YTogcGFyZW50RGF0YSwgcGFyYW1zfTogU2lkZWJhckl0ZW1XcmFwcGVyUHJvcHM8VCwgSz4pIHtcblx0Y29uc3QgZGF0YSA9IHVzZUJ1aWxkQ29udGVudERhdGEoe1xuXHRcdGRhdGE6IHBhcmVudERhdGEsXG5cdFx0c3RhdGVTZWxlY3Rvckhvb2s6IGl0ZW0uc3RhdGVTZWxlY3Rvckhvb2ssXG5cdFx0cGVybWlzc2lvblNlbGVjdG9ySG9vazogaXRlbS5wZXJtaXNzaW9uU2VsZWN0b3JIb29rLFxuXHRcdHBhcmFtcyxcblx0fSk7XG5cblx0Ly8gQ2hlY2sgaWYgdmlzaWJsZVxuXHRpZiAoaXRlbS52aXNpYmxlKSB7XG5cdFx0aWYgKHR5cGVvZiBpdGVtLnZpc2libGUgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGlmICghaXRlbS52aXNpYmxlKGRhdGEpKSByZXR1cm4gbnVsbDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgcSA9IG5ldyBRdWVyeShpdGVtLnZpc2libGUgfHwge30pO1xuXHRcdFx0aWYgKCFxLnRlc3QoZGF0YSkpIHJldHVybiBudWxsO1xuXHRcdH1cblx0fVxuXG5cdGlmIChpc0N1c3RvbVNpZGViYXJJdGVtKGl0ZW0pKSB7XG5cdFx0cmV0dXJuIDxDdXN0b21TaWRlYmFySXRlbUNvbXBvbmVudCBpdGVtPXtpdGVtfSBkYXRhPXtkYXRhfSAvPjtcblx0fVxuXG5cdGlmIChpc0FjdGlvblNpZGViYXJJdGVtKGl0ZW0pKSB7XG5cdFx0cmV0dXJuIDxBY3Rpb25TaWRlYmFySXRlbUNvbXBvbmVudCBpdGVtPXtpdGVtfSBkYXRhPXtkYXRhfSAvPjtcblx0fVxuXG5cdGlmIChpc0FjdGlvbkZvcm1TaWRlYmFySXRlbShpdGVtKSkge1xuXHRcdHJldHVybiA8QWN0aW9uRm9ybVNpZGViYXJJdGVtQ29tcG9uZW50IGl0ZW09e2l0ZW19IGRhdGE9e2RhdGF9IC8+O1xuXHR9XG5cblx0aWYgKGlzRGl2aWRlclNpZGViYXJJdGVtKGl0ZW0pKSB7XG5cdFx0cmV0dXJuIDxEaXZpZGVyIC8+O1xuXHR9XG5cblx0Ly8gQHRzLWlnbm9yZSBUaGVzZSB0eXBlcyBzaG91bGQgd29yaywgbm90IHN1cmUgd2h5IGl0J3Mgbm90LiBSdW50aW1lIGNvZGUgaXMgZmluZS5cblx0cmV0dXJuIDxQbGFpblNpZGViYXJJdGVtIGl0ZW09e2l0ZW19IGRhdGE9e2RhdGF9IC8+O1xufVxuIiwiaW1wb3J0IHR5cGUge1JvdXRlcywgRGVmaW5lUm91dGVPcHRpb25zLCBLZXllZFJvdXRlUmVuZGVyRm5zfSBmcm9tICdAaW1wZXJpdW0vcm91dGVyJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge0NvbnRlbnRDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy9Db250ZW50Q29tcG9uZW50JztcbmltcG9ydCB0eXBlIHtQYWdlcywgUm91dGVQYXJhbWV0ZXJzfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7aXNQYWdlfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29udGVudC5jcmVhdGVQYWdlcycpO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGFnZXM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucz4ocm91dGVzOiBSb3V0ZXM8VD4sIHBhZ2VzOiBQYWdlczxUPikge1xuXHRjb25zdCByZW5kZXJSb3V0ZVByb3BzT2JqID0gT2JqZWN0LmtleXMocm91dGVzLnR5cGVzKS5yZWR1Y2UoKG1lbW8sIGtleSkgPT4ge1xuXHRcdHJldHVybiB7XG5cdFx0XHQuLi5tZW1vLFxuXHRcdFx0W2tleV06IChwYXJhbXM6IFJvdXRlUGFyYW1ldGVyczxUW3R5cGVvZiBrZXldWydwYXJhbXMnXT4pID0+IHtcblx0XHRcdFx0Y29uc3QgcGcgPSBwYWdlc1trZXldO1xuXHRcdFx0XHRpZiAoaXNQYWdlKHBnKSkge1xuXHRcdFx0XHRcdHJldHVybiA8Q29udGVudENvbXBvbmVudCBwYWdlPXtwZ30gcGFyYW1zPXtwYXJhbXN9IC8+O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0PENvbnRlbnRDb21wb25lbnRcblx0XHRcdFx0XHRcdHBhZ2U9e3tcblx0XHRcdFx0XHRcdFx0Y29udGVudDogcGcsXG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0cGFyYW1zPXtwYXJhbXN9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0fTtcblx0fSwge30gYXMgS2V5ZWRSb3V0ZVJlbmRlckZuczxUPik7XG5cblx0cmV0dXJuIHJvdXRlcy5yZW5kZXJSb3V0ZVByb3BzKHJlbmRlclJvdXRlUHJvcHNPYmopO1xufVxuIiwiaW1wb3J0IHR5cGUge0RpdmlkZXJTaWRlYmFySXRlbX0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBkaXZpZGVyU2lkZWJhckl0ZW06IERpdmlkZXJTaWRlYmFySXRlbTxhbnksIGFueT4gPSB7XG5cdHRleHQ6ICcnLFxuXHRkaXZpZGVyOiB0cnVlLFxufTtcbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IHR5cGUge1VzZUJ1aWxkRGF0YVBhcmFtc30gZnJvbSAnLi4vLi4vaG9va3MvdXNlQnVpbGREYXRhJztcbmltcG9ydCB7dXNlQnVpbGREYXRhfSBmcm9tICcuLi8uLi9ob29rcy91c2VCdWlsZERhdGEnO1xuaW1wb3J0IHR5cGUge0NvbnRlbnREYXRhLCBSb3V0ZVBhcmFtZXRlcnN9IGZyb20gJy4uL3R5cGVzJztcblxuaW50ZXJmYWNlIFVzZUJ1aWxkQ29udGVudERhdGFQYXJhbXM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IGV4dGVuZHMgVXNlQnVpbGREYXRhUGFyYW1zIHtcblx0ZGF0YT86IENvbnRlbnREYXRhPFQsIEs+O1xuXHRwYXJhbXM6IFJvdXRlUGFyYW1ldGVyczxUW0tdWydwYXJhbXMnXT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VCdWlsZENvbnRlbnREYXRhPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih7XG5cdGRhdGEsXG5cdHN0YXRlU2VsZWN0b3JIb29rLFxuXHRwZXJtaXNzaW9uU2VsZWN0b3JIb29rLFxuXHRyb3V0ZUl0ZW0sXG5cdHBhcmFtcyxcbn06IFVzZUJ1aWxkQ29udGVudERhdGFQYXJhbXM8VCwgSz4pIHtcblx0Y29uc3QgYnVpbGREYXRhID0gdXNlQnVpbGREYXRhKHtkYXRhLCBzdGF0ZVNlbGVjdG9ySG9vaywgcGVybWlzc2lvblNlbGVjdG9ySG9vaywgcm91dGVJdGVtfSk7XG5cdHJldHVybiB7XG5cdFx0Li4uYnVpbGREYXRhLFxuXHRcdHBhcmFtcyxcblx0fTtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnMsIFBhcmFtZXRlcnNGcm9tQXNzZXJ0aW9ufSBmcm9tICdAaW1wZXJpdW0vcm91dGVyJztcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtTZW1hbnRpY0NPTE9SUywgU2VtYW50aWNJQ09OU30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge1JvdXRlSXRlbSwgVmlzaWJpbGl0eUl0ZW0sIFdlaWdodGVkSXRlbX0gZnJvbSAnLi4vY29tbW9uSXRlbXMnO1xuaW1wb3J0IHR5cGUge0RhdGFIb29rSXRlbX0gZnJvbSAnLi4vZGF0YWhvb2tzL3R5cGVzJztcbmltcG9ydCB0eXBlIHtEYXRhLCBQZXJtaXNzaW9uU2VsZWN0b3JIb29rLCBTdGF0ZVNlbGVjdG9ySG9va30gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBSb3V0ZVBhcmFtZXRlcnM8VCBleHRlbmRzIHJlYWRvbmx5IHN0cmluZ1tdIHwgdW5kZWZpbmVkPiA9IFQgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXSA/IFBhcmFtZXRlcnNGcm9tQXNzZXJ0aW9uPFQ+IDogbmV2ZXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudERhdGE8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IGV4dGVuZHMgRGF0YSB7XG5cdHBhcmFtczogUm91dGVQYXJhbWV0ZXJzPFRbS11bJ3BhcmFtcyddPjtcbn1cblxuZXhwb3J0IHR5cGUgQ29udGVudDxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4gPSAoZGF0YTogQ29udGVudERhdGE8VCwgSz4pID0+IEpTWC5FbGVtZW50O1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VTaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4gZXh0ZW5kcyBXZWlnaHRlZEl0ZW0sIFZpc2liaWxpdHlJdGVtIHtcblx0dGV4dDogc3RyaW5nIHwgKChkYXRhOiBDb250ZW50RGF0YTxULCBLPikgPT4gc3RyaW5nKTtcblx0aWNvbj86IFNlbWFudGljSUNPTlMgfCAoKGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSA9PiBTZW1hbnRpY0lDT05TKTtcblx0Y29sb3I/OiBTZW1hbnRpY0NPTE9SUyB8ICgoZGF0YTogQ29udGVudERhdGE8VCwgSz4pID0+IFNlbWFudGljQ09MT1JTKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXZpZGVyU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IGV4dGVuZHMgQmFzZVNpZGViYXJJdGVtPFQsIEs+IHtcblx0ZGl2aWRlcjogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25TaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4gZXh0ZW5kcyBCYXNlU2lkZWJhckl0ZW08VCwgSz4ge1xuXHRvbkNsaWNrOiAoZGF0YTogQ29udGVudERhdGE8VCwgSz4pID0+IHZvaWQ7XG59XG5cbmludGVyZmFjZSBBY3Rpb25Gb3JtU2lkZWJhckl0ZW1Gb3JtUGFyYW1zPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdHZhbHVlczogUmVjb3JkPHN0cmluZywgYW55Pjtcblx0aGFuZGxlQ2hhbmdlOiAoZTogUmVhY3QuQ2hhbmdlRXZlbnQ8YW55PikgPT4gdm9pZDtcblx0ZmllbGRFcnJvcjogKGZpZWxkTmFtZTogc3RyaW5nIHwgbnVtYmVyKSA9PiBib29sZWFuO1xuXHRkYXRhOiBDb250ZW50RGF0YTxULCBLPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uRm9ybVNpZGViYXJJdGVtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiBleHRlbmRzIEJhc2VTaWRlYmFySXRlbTxULCBLPiB7XG5cdGZvcm06IChwYXJhbXM6IEFjdGlvbkZvcm1TaWRlYmFySXRlbUZvcm1QYXJhbXM8VCwgSz4pID0+IEpTWC5FbGVtZW50IHwgbnVsbDtcblx0aW5pdGlhbFZhbHVlcz86IFJlY29yZDxzdHJpbmcsIGFueT4gfCAoKGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTtcblx0b25TdWJtaXQ/OiAodmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBkYXRhOiBDb250ZW50RGF0YTxULCBLPikgPT4gdm9pZDtcblx0dmFsaWRhdGlvblNjaGVtYT86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21TaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4gZXh0ZW5kcyBXZWlnaHRlZEl0ZW0sIFZpc2liaWxpdHlJdGVtIHtcblx0cmVuZGVyOiAoZGF0YTogQ29udGVudERhdGE8VCwgSz4pID0+IEpTWC5FbGVtZW50IHwgbnVsbDtcbn1cblxuZXhwb3J0IHR5cGUgU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+ID1cblx0fCAoQmFzZVNpZGViYXJJdGVtPFQsIEs+ICYgUm91dGVJdGVtPENvbnRlbnREYXRhPFQsIEs+Pilcblx0fCBBY3Rpb25TaWRlYmFySXRlbTxULCBLPlxuXHR8IEN1c3RvbVNpZGViYXJJdGVtPFQsIEs+XG5cdHwgQWN0aW9uRm9ybVNpZGViYXJJdGVtPFQsIEs+XG5cdHwgRGl2aWRlclNpZGViYXJJdGVtPFQsIEs+O1xuXG5leHBvcnQgdHlwZSBDb250ZW50SGVhZGVyPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9XG5cdHwgc3RyaW5nXG5cdHwge3RpdGxlOiBzdHJpbmc7IGljb24/OiBzdHJpbmd9IC8vIFRPRE8gaWNvbiBzaG91bGQgcHJvYmFibHkgYmUgU2VtYW50aWNJQ09OU1xuXHR8ICgoZGF0YTogQ29udGVudERhdGE8VCwgSz4pID0+IHt0aXRsZTogc3RyaW5nOyBpY29uPzogc3RyaW5nfSlcblx0fCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4ge1xuXHRkYXRhSG9va3M/OiBEYXRhSG9va0l0ZW1bXTtcblx0c3RhdGVTZWxlY3Rvckhvb2s/OiBTdGF0ZVNlbGVjdG9ySG9vayB8IFN0YXRlU2VsZWN0b3JIb29rW107XG5cdHBlcm1pc3Npb25TZWxlY3Rvckhvb2s/OiBQZXJtaXNzaW9uU2VsZWN0b3JIb29rIHwgUGVybWlzc2lvblNlbGVjdG9ySG9va1tdO1xuXHRjb250ZW50OiBDb250ZW50PFQsIEs+O1xuXHRoZWFkZXI/OiBDb250ZW50SGVhZGVyPFQsIEs+O1xuXHRzaWRlYmFyPzogU2lkZWJhckl0ZW08VCwgSz5bXTtcblx0ZnVsbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFBhZ2VzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnM+ID0ge1xuXHRba2V5IGluIGtleW9mIFRdOiBQYWdlPFQsIGtleT4gfCBDb250ZW50PFQsIGtleT47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNQYWdlPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih2YWx1ZTogYW55KTogdmFsdWUgaXMgUGFnZTxULCBLPiB7XG5cdHJldHVybiAhISh2YWx1ZSBhcyBQYWdlPFQsIEs+KS5jb250ZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBY3Rpb25TaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4odmFsdWU6IGFueSk6IHZhbHVlIGlzIEFjdGlvblNpZGViYXJJdGVtPFQsIEs+IHtcblx0cmV0dXJuICEhKHZhbHVlIGFzIEFjdGlvblNpZGViYXJJdGVtPFQsIEs+KS5vbkNsaWNrO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBY3Rpb25Gb3JtU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBBY3Rpb25Gb3JtU2lkZWJhckl0ZW08VCwgSz4ge1xuXHRyZXR1cm4gISEodmFsdWUgYXMgQWN0aW9uRm9ybVNpZGViYXJJdGVtPFQsIEs+KS5mb3JtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDdXN0b21TaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4odmFsdWU6IGFueSk6IHZhbHVlIGlzIEN1c3RvbVNpZGViYXJJdGVtPFQsIEs+IHtcblx0cmV0dXJuICEhKHZhbHVlIGFzIEN1c3RvbVNpZGViYXJJdGVtPFQsIEs+KS5yZW5kZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RpdmlkZXJTaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4odmFsdWU6IGFueSk6IHZhbHVlIGlzIERpdmlkZXJTaWRlYmFySXRlbTxULCBLPiB7XG5cdHJldHVybiAodmFsdWUgYXMgRGl2aWRlclNpZGViYXJJdGVtPFQsIEs+KS5kaXZpZGVyO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQge0ljb24sIFNlbWFudGljQ09MT1JTfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7Um91dGVJdGVtfSBmcm9tICcuLi9jb21tb25JdGVtcyc7XG5pbXBvcnQgdHlwZSB7QmFzZVNpZGViYXJJdGVtLCBDb250ZW50RGF0YX0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJY29uPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPihpdGVtOiBCYXNlU2lkZWJhckl0ZW08VCwgSz4sIGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSB7XG5cdGlmIChpdGVtLmljb24pIHtcblx0XHRjb25zdCBpY29uTmFtZSA9IHR5cGVvZiBpdGVtLmljb24gPT09ICdmdW5jdGlvbicgPyBpdGVtLmljb24oZGF0YSkgOiBpdGVtLmljb247XG5cdFx0cmV0dXJuIDxJY29uIG5hbWU9e2ljb25OYW1lfSAvPjtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvdXRlVG88VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KGl0ZW06IFJvdXRlSXRlbTxDb250ZW50RGF0YTxULCBLPj4sIGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSB7XG5cdGlmIChpdGVtLnRvKSB7XG5cdFx0cmV0dXJuIHR5cGVvZiBpdGVtLnRvID09PSAnZnVuY3Rpb24nID8gaXRlbS50byhkYXRhKSA6IGl0ZW0udG87XG5cdH1cblx0cmV0dXJuICcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dDxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oaXRlbTogQmFzZVNpZGViYXJJdGVtPFQsIEs+LCBkYXRhOiBDb250ZW50RGF0YTxULCBLPikge1xuXHRyZXR1cm4gdHlwZW9mIGl0ZW0udGV4dCA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW0udGV4dChkYXRhKSA6IGl0ZW0udGV4dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbG9yPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPihpdGVtOiBCYXNlU2lkZWJhckl0ZW08VCwgSz4sIGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KTogU2VtYW50aWNDT0xPUlMge1xuXHRpZiAoIWl0ZW0uY29sb3IpIHJldHVybiAnYmx1ZSc7XG5cdHJldHVybiB0eXBlb2YgaXRlbS5jb2xvciA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW0uY29sb3IoZGF0YSkgOiBpdGVtLmNvbG9yO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7Y29tcG9zZX0gZnJvbSAnbG9kYXNoL2ZwJztcbmltcG9ydCB7RnJhZ21lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dXNlTG9jYXRpb259IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHtFeGVjdXRlRGF0YUhvb2t9IGZyb20gJy4vRXhlY3V0ZURhdGFIb29rJztcbmltcG9ydCB0eXBlIHtEYXRhSG9va0l0ZW19IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5kYXRhaG9va3MuRGF0YUhvb2tzJyk7XG5cbmludGVyZmFjZSBEYXRhSG9va3NQcm9wcyB7XG5cdGRhdGFIb29rczogRGF0YUhvb2tJdGVtW107XG59XG5cbi8qKlxuICogUmVuZGVycyBsYXlvdXQgZGF0YSBob29rcy4gVGhlc2UgaG9va3Mgc2hvdWxkIHJldHVybiBub3RoaW5nLiBBbGwgaW50ZXJhY3Rpb24gc2hvdWxkIGJlIGluIHNpZGUgZWZmZWN0cywgdXN1YWxseSByZXRyaWV2aW5nIGRhdGEgYW5kIHNldHRpbmcgUmVkdXggc3RhdGUuXG4gKiBAcGFyYW0gZGF0YUhvb2tzXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIERhdGFIb29rcyh7ZGF0YUhvb2tzfTogRGF0YUhvb2tzUHJvcHMpIHtcblx0Y29uc3Qge3BhdGhuYW1lfSA9IHVzZUxvY2F0aW9uKCk7XG5cblx0cmV0dXJuIChcblx0XHQ8PlxuXHRcdFx0e2RhdGFIb29rcy5tYXAoKGhvb2ssIGluZGV4KSA9PiB7XG5cdFx0XHRcdGlmICh0eXBlb2YgaG9vayA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0XHRcdFx0XHRyZXR1cm4gPEV4ZWN1dGVEYXRhSG9vayBrZXk9e2luZGV4fSBkYXRhSG9vaz17aG9va30gLz47XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgZm4gPSBBcnJheS5pc0FycmF5KGhvb2sucm91dGVNYXRjaCkgPyBjb21wb3NlKGhvb2sucm91dGVNYXRjaCkgOiBob29rLnJvdXRlTWF0Y2g7XG5cdFx0XHRcdGNvbnN0IHJvdXRlUGFyYW1zID0gZm4ocGF0aG5hbWUpO1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShob29rLmRhdGFIb29rKSkge1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0XHRcdFx0XHQ8RnJhZ21lbnQga2V5PXtpbmRleH0+XG5cdFx0XHRcdFx0XHRcdHtob29rLmRhdGFIb29rLm1hcCgoZGgsIGluZGV4MikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gPEV4ZWN1dGVEYXRhSG9vayBrZXk9e2luZGV4Mn0gZGF0YUhvb2s9e2RofSByb3V0ZVBhcmFtcz17cm91dGVQYXJhbXN9IC8+O1xuXHRcdFx0XHRcdFx0XHR9KX1cblx0XHRcdFx0XHRcdDwvRnJhZ21lbnQ+XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0XHRcdHJldHVybiA8RXhlY3V0ZURhdGFIb29rIGRhdGFIb29rPXtob29rLmRhdGFIb29rfSBrZXk9e2luZGV4fSByb3V0ZVBhcmFtcz17cm91dGVQYXJhbXN9IC8+O1xuXHRcdFx0fSl9XG5cdFx0PC8+XG5cdCk7XG59XG4iLCJpbXBvcnQgdHlwZSB7RGF0YUhvb2t9IGZyb20gJy4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgRXhlY3V0ZURhdGFIb29rUHJvcHMge1xuXHRkYXRhSG9vazogRGF0YUhvb2s7XG5cdHJvdXRlUGFyYW1zPzogYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRXhlY3V0ZURhdGFIb29rKHtkYXRhSG9vaywgcm91dGVQYXJhbXN9OiBFeGVjdXRlRGF0YUhvb2tQcm9wcykge1xuXHRkYXRhSG9vayhyb3V0ZVBhcmFtcyk7XG5cdHJldHVybiBudWxsO1xufVxuIiwiaW1wb3J0IHt1c2VFZmZlY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dXNlRGlzcGF0Y2h9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7YWN0aW9uc30gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHR5cGUge1Blcm1pc3Npb25TZWxlY3Rvckhvb2t9IGZyb20gJy4uL3R5cGVzJztcblxuaW50ZXJmYWNlIEV4ZWN1dGVQZXJtaXNzaW9uSG9va1Byb3BzIHtcblx0cGVybWlzc2lvbkhvb2s6IFBlcm1pc3Npb25TZWxlY3Rvckhvb2s7XG5cdHJvdXRlUGFyYW1zPzogYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRXhlY3V0ZVBlcm1pc3Npb25Ib29rKHtwZXJtaXNzaW9uSG9vaywgcm91dGVQYXJhbXN9OiBFeGVjdXRlUGVybWlzc2lvbkhvb2tQcm9wcykge1xuXHRjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cdGNvbnN0IHBlcm1zID0gcGVybWlzc2lvbkhvb2socm91dGVQYXJhbXMpO1xuXG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0T2JqZWN0LmtleXMocGVybXMpLmZvckVhY2gocGVybWlzc2lvbiA9PiB7XG5cdFx0XHRkaXNwYXRjaChhY3Rpb25zLnNldFBlcm1pc3Npb24oe3Blcm1pc3Npb24sIHJlc3VsdDogcGVybXNbcGVybWlzc2lvbl19KSk7XG5cdFx0fSk7XG5cdH0sIFtkaXNwYXRjaCwgcGVybXNdKTtcblxuXHRyZXR1cm4gbnVsbDtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgdHlwZSB7UGVybWlzc2lvblNlbGVjdG9ySG9va30gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtFeGVjdXRlUGVybWlzc2lvbkhvb2t9IGZyb20gJy4vRXhlY3V0ZVBlcm1pc3Npb25Ib29rJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuZGF0YWhvb2tzLlBlcm1pc3Npb25Ib29rcycpO1xuXG5pbnRlcmZhY2UgUGVybWlzc2lvbkhvb2tzUHJvcHMge1xuXHRwZXJtaXNzaW9uSG9va3M6IFBlcm1pc3Npb25TZWxlY3Rvckhvb2tbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFBlcm1pc3Npb25Ib29rcyh7cGVybWlzc2lvbkhvb2tzfTogUGVybWlzc2lvbkhvb2tzUHJvcHMpIHtcblx0cmV0dXJuIChcblx0XHQ8PlxuXHRcdFx0e3Blcm1pc3Npb25Ib29rcy5tYXAoKGhvb2ssIGluZGV4KSA9PiB7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0XHRcdFx0cmV0dXJuIDxFeGVjdXRlUGVybWlzc2lvbkhvb2sga2V5PXtpbmRleH0gcGVybWlzc2lvbkhvb2s9e2hvb2t9IC8+O1xuXHRcdFx0fSl9XG5cdFx0PC8+XG5cdCk7XG59XG4iLCJpbXBvcnQge3VzZUF1dGh9IGZyb20gJ0BpbXBlcml1bS9hdXRoLWNsaWVudCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHR5cGUge0xvY2F0aW9ufSBmcm9tICdoaXN0b3J5JztcbmltcG9ydCBjb21wYWN0IGZyb20gJ2xvZGFzaC9jb21wYWN0JztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gvbWVyZ2UnO1xuaW1wb3J0IHF1ZXJ5U3RyaW5nIGZyb20gJ3F1ZXJ5c3RyaW5nJztcbmltcG9ydCB7dXNlTG9jYXRpb259IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHt1c2VMYXlvdXRTdGF0ZX0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHR5cGUge0RhdGEsIFBlcm1pc3Npb25TZWxlY3Rvckhvb2ssIFN0YXRlU2VsZWN0b3JIb29rfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge3VzZUlzQWN0aXZlUm91dGV9IGZyb20gJy4vdXNlSXNBY3RpdmVSb3V0ZSc7XG5pbXBvcnQge3VzZVNlbGVjdFBlcm1pc3Npb259IGZyb20gJy4vdXNlU2VsZWN0UGVybWlzc2lvbic7XG5pbXBvcnQge3VzZVNlbGVjdFN0YXRlfSBmcm9tICcuL3VzZVNlbGVjdFN0YXRlJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuaG9va3MudXNlQnVpbGREYXRhJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlQnVpbGREYXRhUGFyYW1zIHtcblx0ZGF0YT86IERhdGE7XG5cdHJvdXRlSXRlbT86IGFueTtcblx0c3RhdGVTZWxlY3Rvckhvb2s/OiBTdGF0ZVNlbGVjdG9ySG9vayB8IFN0YXRlU2VsZWN0b3JIb29rW107XG5cdHBlcm1pc3Npb25TZWxlY3Rvckhvb2s/OiBQZXJtaXNzaW9uU2VsZWN0b3JIb29rIHwgUGVybWlzc2lvblNlbGVjdG9ySG9va1tdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQnVpbGREYXRhKHtzdGF0ZVNlbGVjdG9ySG9vaywgcGVybWlzc2lvblNlbGVjdG9ySG9vaywgZGF0YSwgcm91dGVJdGVtfTogVXNlQnVpbGREYXRhUGFyYW1zKSB7XG5cdGNvbnN0IHtpZH0gPSB1c2VBdXRoKCk7XG5cdGNvbnN0IHtwZXJtaXNzaW9uc30gPSB1c2VMYXlvdXRTdGF0ZSgpO1xuXHRjb25zdCBzdGF0ZSA9IHVzZVNlbGVjdFN0YXRlKHN0YXRlU2VsZWN0b3JIb29rKTtcblx0Y29uc3QgbG9jID0gdXNlTG9jYXRpb24oKSBhcyBMb2NhdGlvbjtcblx0Y29uc3Qgcm91dGUgPSB7XG5cdFx0cGF0aDogY29tcGFjdChsb2MucGF0aG5hbWUuc3BsaXQoJy8nKSksXG5cdFx0aGFzaDogbG9jLmhhc2gsXG5cdFx0c2VhcmNoOiBxdWVyeVN0cmluZy5wYXJzZShsb2Muc2VhcmNoKSxcblx0fTtcblx0Y29uc3QgYWN0aXZlID0gdXNlSXNBY3RpdmVSb3V0ZSh7bG9jLCByb3V0ZSwgc3RhdGUsIGFjdGl2ZTogZmFsc2UsIGlkLCBwZXJtaXNzaW9uc30sIHJvdXRlSXRlbSk7XG5cdGNvbnN0IHBlcm1pc3Npb25zWCA9IHVzZVNlbGVjdFBlcm1pc3Npb24oe3N0YXRlLCBsb2MsIGFjdGl2ZSwgcm91dGUsIGlkLCBwZXJtaXNzaW9uc30sIHBlcm1pc3Npb25TZWxlY3Rvckhvb2spO1xuXHRjb25zdCBuZXdEYXRhOiBEYXRhID0ge3N0YXRlLCBsb2MsIGFjdGl2ZSwgcm91dGUsIHBlcm1pc3Npb25zOiB7Li4ucGVybWlzc2lvbnMsIC4uLnBlcm1pc3Npb25zWH0sIGlkfTtcblx0cmV0dXJuIGRhdGEgPyBtZXJnZShkYXRhLCBuZXdEYXRhKSA6IG5ld0RhdGE7XG59XG4iLCJpbXBvcnQge3VzZVJvdXRlTWF0Y2h9IGZyb20gJ3JlYWN0LXJvdXRlcic7XG5pbXBvcnQgdHlwZSB7Um91dGVQcm9wc30gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQge2lzUm91dGVJdGVtfSBmcm9tICcuLi9jb21tb25JdGVtcyc7XG5pbXBvcnQgdHlwZSB7RGF0YX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlSXNBY3RpdmVSb3V0ZShkYXRhOiBEYXRhLCBpdGVtPzogYW55KSB7XG5cdC8vIERldGVybWluZSBpZiB0aGUgY3VycmVudCByb3V0ZSBtYXRjaGVzIHRoZSB0byByb3V0ZSB0byBzZWUgaWYgdGhlIGxpbmsgaXMgYWN0aXZlXG5cdGNvbnN0IHJvdXRlTWF0Y2hPYmplY3Q6IFJvdXRlUHJvcHMgPSB7fTtcblx0aWYgKGl0ZW0gJiYgaXNSb3V0ZUl0ZW0oaXRlbSkpIHtcblx0XHRpZiAodHlwZW9mIGl0ZW0udG8gPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRyb3V0ZU1hdGNoT2JqZWN0LnBhdGggPSBpdGVtLnRvO1xuXHRcdH1cblx0XHRpZiAodHlwZW9mIGl0ZW0udG8gPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHJvdXRlTWF0Y2hPYmplY3QucGF0aCA9IGl0ZW0udG8oZGF0YSk7XG5cdFx0fVxuXHRcdHJvdXRlTWF0Y2hPYmplY3QuZXhhY3QgPSBpdGVtLmV4YWN0ICE9PSBmYWxzZTtcblx0XHRyb3V0ZU1hdGNoT2JqZWN0LnNlbnNpdGl2ZSA9IGl0ZW0uc2Vuc2l0aXZlO1xuXHRcdHJvdXRlTWF0Y2hPYmplY3Quc3RyaWN0ID0gaXRlbS5zdHJpY3Q7XG5cdH1cblx0Y29uc3Qgcm91dGVNYXRjaCA9IHVzZVJvdXRlTWF0Y2gocm91dGVNYXRjaE9iamVjdCk7XG5cdHJldHVybiByb3V0ZU1hdGNoICE9PSBudWxsO1xufVxuIiwiaW1wb3J0IGZsb3dSaWdodCBmcm9tICdsb2Rhc2gvZmxvd1JpZ2h0JztcbmltcG9ydCB0eXBlIHtEYXRhLCBQZXJtaXNzaW9uU2VsZWN0b3JIb29rfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTZWxlY3RQZXJtaXNzaW9uKGRhdGE6IERhdGEsIHBlcm1pc3Npb25TZWxlY3Rvckhvb2s/OiBQZXJtaXNzaW9uU2VsZWN0b3JIb29rIHwgUGVybWlzc2lvblNlbGVjdG9ySG9va1tdKSB7XG5cdGxldCBmaW5hbFNlbGVjdG9ySG9vazogUGVybWlzc2lvblNlbGVjdG9ySG9vayA9ICgpID0+ICh7fSk7XG5cdGlmIChwZXJtaXNzaW9uU2VsZWN0b3JIb29rKSB7XG5cdFx0ZmluYWxTZWxlY3Rvckhvb2sgPSBBcnJheS5pc0FycmF5KHBlcm1pc3Npb25TZWxlY3Rvckhvb2spID8gZmxvd1JpZ2h0KHBlcm1pc3Npb25TZWxlY3Rvckhvb2spIDogcGVybWlzc2lvblNlbGVjdG9ySG9vaztcblx0fVxuXHRyZXR1cm4gZmluYWxTZWxlY3Rvckhvb2soZGF0YSk7XG59XG4iLCJpbXBvcnQgZmxvd1JpZ2h0IGZyb20gJ2xvZGFzaC9mbG93UmlnaHQnO1xuaW1wb3J0IHR5cGUge1N0YXRlU2VsZWN0b3JIb29rfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTZWxlY3RTdGF0ZShzdGF0ZVNlbGVjdG9ySG9vaz86IFN0YXRlU2VsZWN0b3JIb29rIHwgU3RhdGVTZWxlY3Rvckhvb2tbXSkge1xuXHRsZXQgZmluYWxTZWxlY3Rvckhvb2s6ICgpID0+IGFueSA9ICgpID0+ICh7fSk7XG5cdGlmIChzdGF0ZVNlbGVjdG9ySG9vaykge1xuXHRcdGZpbmFsU2VsZWN0b3JIb29rID0gQXJyYXkuaXNBcnJheShzdGF0ZVNlbGVjdG9ySG9vaykgPyBmbG93UmlnaHQoc3RhdGVTZWxlY3Rvckhvb2spIDogc3RhdGVTZWxlY3Rvckhvb2s7XG5cdH1cblx0cmV0dXJuIGZpbmFsU2VsZWN0b3JIb29rKCk7XG59XG4iLCJpbXBvcnQgdHlwZSB7RGF0YX0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHR5cGUge0N1c3RvbUxheW91dEl0ZW19IGZyb20gJy4uL3R5cGVzJztcblxuaW50ZXJmYWNlIEN1c3RvbUxheW91dEl0ZW1Db21wb25lbnRQcm9wcyB7XG5cdGl0ZW06IEN1c3RvbUxheW91dEl0ZW07XG5cdGRhdGE6IERhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDdXN0b21MYXlvdXRJdGVtQ29tcG9uZW50KHtpdGVtLCBkYXRhfTogQ3VzdG9tTGF5b3V0SXRlbUNvbXBvbmVudFByb3BzKSB7XG5cdHJldHVybiBpdGVtLnJlbmRlcihkYXRhKTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge3VzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0FjY29yZGlvbiwgRHJvcGRvd24sIEljb24sIE1lbnV9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtEYXRhfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7RHJvcGRvd25MYXlvdXRJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2dldFRleHR9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuY3NzJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29tcG9uZW50cy5Ecm9wZG93bkl0ZW0nKTtcblxuaW50ZXJmYWNlIERyb3Bkb3duSXRlbVByb3BzIHtcblx0aXRlbTogRHJvcGRvd25MYXlvdXRJdGVtO1xuXHRjaGlsZHJlbjogSlNYLkVsZW1lbnRbXTtcblx0ZGF0YTogRGF0YTtcblx0dmVydGljYWw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRHJvcGRvd25JdGVtKHtpdGVtLCB2ZXJ0aWNhbCwgY2hpbGRyZW4sIGRhdGF9OiBEcm9wZG93bkl0ZW1Qcm9wcykge1xuXHRjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cblx0aWYgKHZlcnRpY2FsKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxNZW51Lkl0ZW0gY2xhc3NOYW1lPVwiaW1wZXJpdW1WZXJ0aWNhbERyb3Bkb3duXCI+XG5cdFx0XHRcdDxBY2NvcmRpb24gZmx1aWQ+XG5cdFx0XHRcdFx0PEFjY29yZGlvbi5UaXRsZVxuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lPXtzdHlsZXMudmVydGljYWxEcm9wZG93blRpdGxlfVxuXHRcdFx0XHRcdFx0b25DbGljaz17ZXYgPT4ge1xuXHRcdFx0XHRcdFx0XHRldi5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0XHRcdFx0c2V0T3Blbighb3Blbik7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdDxJY29uIGNsYXNzTmFtZT17b3BlbiA/IHN0eWxlcy52ZXJ0aWNhbERyb3Bkb3duSWNvblJvdGF0ZWQgOiBzdHlsZXMudmVydGljYWxEcm9wZG93bkljb259IG5hbWU9XCJhcnJvdyByaWdodFwiIC8+XG5cdFx0XHRcdFx0XHR7aXRlbS50ZXh0fVxuXHRcdFx0XHRcdDwvQWNjb3JkaW9uLlRpdGxlPlxuXHRcdFx0XHRcdDxBY2NvcmRpb24uQ29udGVudCBhY3RpdmU9e29wZW59IGNsYXNzTmFtZT17YCR7c3R5bGVzLnZlcnRpY2FsRHJvcGRvd25Db250ZW50fSBpbXBlcml1bVZlcnRpY2FsRHJvcGRvd25Db250ZW50YH0gY2hpbGRyZW49e2NoaWxkcmVufSAvPlxuXHRcdFx0XHQ8L0FjY29yZGlvbj5cblx0XHRcdDwvTWVudS5JdGVtPlxuXHRcdCk7XG5cdH1cblxuXHRyZXR1cm4gKFxuXHRcdDxEcm9wZG93biBpdGVtIHRleHQ9e2dldFRleHQoaXRlbSwgZGF0YSl9IGNsYXNzTmFtZT1cImltcGVyaXVtRHJvcGRvd25cIj5cblx0XHRcdDxEcm9wZG93bi5NZW51IGNsYXNzTmFtZT1cImltcGVyaXVtRHJvcGRvd25Db250ZW50XCI+e2NoaWxkcmVufTwvRHJvcGRvd24uTWVudT5cblx0XHQ8L0Ryb3Bkb3duPlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7UmVhY3ROb2RlLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtTZWdtZW50fSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge3VzZUxheW91dFN0YXRlfSBmcm9tICcuLi8uLi9zdGF0ZSc7XG5pbXBvcnQge21vdmVJdGVtc30gZnJvbSAnLi4vbW92ZUl0ZW1zJztcbmltcG9ydCB0eXBlIHtMYXlvdXREYXRhfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0xheW91dEl0ZW1CYXJ9IGZyb20gJy4vTGF5b3V0SXRlbUJhcic7XG5pbXBvcnQge1NlY29uZGFyeU1lbnVUb2dnbGVJdGVtfSBmcm9tICcuL1NlY29uZGFyeU1lbnVUb2dnbGVJdGVtJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuY3NzJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29tcG9uZW50cy5MYXlvdXQnKTtcblxuaW50ZXJmYWNlIExheW91dFByb3BzIGV4dGVuZHMgUmVxdWlyZWQ8TGF5b3V0RGF0YT4ge1xuXHRjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBtYWluIGxheW91dC5cbiAqIEhpZGVzL3Nob3dzL2NvbGxhcHNlcyB0aGluZ3MgYXMgbmVlZCBmb3IgbW9iaWxlIGxheW91dC5cbiAqIFRyYWNrcyBzdGF0ZSB0byB3aGV0aGVyIHRoZSBzaWRlIG1lbnUgaXMgb3BlbiBvciBub3QuXG4gKiBAcGFyYW0gZm9vdGVyXG4gKiBAcGFyYW0gbWVudWJhclxuICogQHBhcmFtIHN0YXR1c2JhclxuICogQHBhcmFtIGNoaWxkcmVuXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIExheW91dCh7Zm9vdGVyLCBwcmltYXJ5TWVudSwgc3RhdHVzYmFyLCBzZWNvbmRhcnlNZW51LCBjaGlsZHJlbn06IExheW91dFByb3BzKSB7XG5cdGNvbnN0IHtpc01vYmlsZX0gPSB1c2VMYXlvdXRTdGF0ZSgpO1xuXHRjb25zdCBbbWVudU9wZW4sIHNldE1lbnVPcGVuXSA9IHVzZVN0YXRlKHRydWUpO1xuXG5cdGNvbnN0IHByaW1hcnlNZW51VG9nZ2xlID0ge1xuXHRcdHN0aWNrT25Nb2JpbGU6IHRydWUsXG5cdFx0d2VpZ2h0OiAtMTk5OTksXG5cdFx0cmVuZGVyOiAoKSA9PiB7XG5cdFx0XHRpZiAoIWlzTW9iaWxlKSByZXR1cm4gbnVsbDtcblx0XHRcdHJldHVybiA8U2Vjb25kYXJ5TWVudVRvZ2dsZUl0ZW0gbWVudU9wZW49e21lbnVPcGVufSBzZXRNZW51T3Blbj17c2V0TWVudU9wZW59IC8+O1xuXHRcdH0sXG5cdH07XG5cblx0Ly8gRGV0ZXJtaW5lIG1lbnViYXIgaXRlbXNcblx0Y29uc3QgcHJpbWFyeU1lbnVJdGVtcyA9IG1vdmVJdGVtcyhcblx0XHRpc01vYmlsZSA/IFtwcmltYXJ5TWVudVRvZ2dsZSwgLi4ucHJpbWFyeU1lbnVdLmZpbHRlcih2ID0+IHYuc3RpY2tPbk1vYmlsZSA9PT0gdHJ1ZSkgOiBbcHJpbWFyeU1lbnVUb2dnbGUsIC4uLnByaW1hcnlNZW51XSxcblx0KTtcblxuXHQvLyBjb25zdCBwbWkgPSBtZXJnZUl0ZW1zKHByaW1hcnlNZW51SXRlbXMpO1xuXG5cdC8vIERldGVybWluZSBzaWRlYmFyIGl0ZW1zXG5cdGNvbnN0IHNlY29uZGFyeU1lbnVJdGVtcyA9IG1vdmVJdGVtcyhcblx0XHRpc01vYmlsZVxuXHRcdFx0PyBbXG5cdFx0XHRcdFx0Li4uc2Vjb25kYXJ5TWVudSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHR0ZXh0OiAnJyxcblx0XHRcdFx0XHRcdG1lbnU6IFtwcmltYXJ5TWVudVRvZ2dsZSwgLi4ucHJpbWFyeU1lbnVdLmZpbHRlcih2ID0+IHYuc3RpY2tPbk1vYmlsZSAhPT0gdHJ1ZSksXG5cdFx0XHRcdFx0fSxcblx0XHRcdCAgXVxuXHRcdFx0OiBzZWNvbmRhcnlNZW51LFxuXHQpO1xuXG5cdGNvbnN0IHNlY29uZGFyeU1lbnVDb21wID1cblx0XHRzZWNvbmRhcnlNZW51SXRlbXMubGVuZ3RoID4gMCA/IChcblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiaW1wZXJpdW1TZWNvbmRhcnlNZW51V3JhcHBlclwiPlxuXHRcdFx0XHQ8TGF5b3V0SXRlbUJhclxuXHRcdFx0XHRcdGl0ZW1zPXtzZWNvbmRhcnlNZW51SXRlbXN9XG5cdFx0XHRcdFx0aW52ZXJ0ZWRcblx0XHRcdFx0XHR2ZXJ0aWNhbFxuXHRcdFx0XHRcdGNsYXNzTmFtZT17XG5cdFx0XHRcdFx0XHRpc01vYmlsZSAmJiAhbWVudU9wZW5cblx0XHRcdFx0XHRcdFx0PyBgJHtzdHlsZXMuc2Vjb25kYXJ5TWVudX0gJHtzdHlsZXMuc2Vjb25kYXJ5TWVudUhpZGRlbn0gaW1wZXJpdW1TZWNvbmRhcnlNZW51YFxuXHRcdFx0XHRcdFx0XHQ6IGAke3N0eWxlcy5zZWNvbmRhcnlNZW51fSBpbXBlcml1bVNlY29uZGFyeU1lbnVgXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQvPlxuXHRcdFx0PC9kaXY+XG5cdFx0KSA6IG51bGw7XG5cblx0Ly8gRGV0ZXJtaW5lIGZvb3RlciBpdGVtc1xuXHRjb25zdCBmb290ZXJJdGVtcyA9IG1vdmVJdGVtcyhmb290ZXIpO1xuXHRjb25zdCBmb290ZXJDb21wID1cblx0XHRmb290ZXJJdGVtcy5sZW5ndGggPiAwID8gKFxuXHRcdFx0PExheW91dEl0ZW1CYXIgbmFtZT1cImZvb3RlclwiIGl0ZW1zPXtmb290ZXJJdGVtc30gY2xhc3NOYW1lPXtgJHtzdHlsZXMuZm9vdGVyfSBpbXBlcml1bUZvb3RlcmB9IGludmVydGVkIGJvcmRlcmxlc3MgLz5cblx0XHQpIDogbnVsbDtcblxuXHQvLyBEZXRlcm1pbmUgc3RhdHVzIGJhciBpdGVtc1xuXHRjb25zdCBzdGF0dXNiYXJJdGVtcyA9IG1vdmVJdGVtcyhzdGF0dXNiYXIpO1xuXHRjb25zdCBzdGF0dXNiYXJDb21wID1cblx0XHRzdGF0dXNiYXJJdGVtcy5sZW5ndGggPiAwID8gPExheW91dEl0ZW1CYXIgaXRlbXM9e3N0YXR1c2Jhckl0ZW1zfSBpbnZlcnRlZCBjbGFzc05hbWU9e2Ake3N0eWxlcy5zdGF0dXNiYXJ9IGltcGVyaXVtU3RhdHVzYmFyYH0gLz4gOiBudWxsO1xuXG5cdHJldHVybiAoXG5cdFx0PGRpdiBjbGFzc05hbWU9e2Ake3N0eWxlcy5wYXJlbnR9IGltcGVyaXVtTGF5b3V0ICR7aXNNb2JpbGUgPyAnaW1wZXJpdW1Nb2JpbGUnIDogJ2ltcGVyaXVtTm90TW9iaWxlJ31gfT5cblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiaW1wZXJpdW1QcmltYXJ5TWVudVdyYXBwZXJcIj5cblx0XHRcdFx0PExheW91dEl0ZW1CYXIgaXRlbXM9e3ByaW1hcnlNZW51SXRlbXN9IGludmVydGVkIGJvcmRlcmxlc3MgY2xhc3NOYW1lPXtgJHtzdHlsZXMubWVudWJhcn0gaW1wZXJpdW1QcmltYXJ5TWVudWB9IC8+XG5cdFx0XHRcdHtzdGF0dXNiYXJDb21wfVxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8U2VnbWVudCBhdHRhY2hlZCBjbGFzc05hbWU9e2Ake3N0eWxlcy5jb250ZW50V3JhcHBlcn0gaW1wZXJpdW1MYXlvdXRDb250ZW50V3JhcHBlcmB9PlxuXHRcdFx0XHR7c2Vjb25kYXJ5TWVudUNvbXB9XG5cdFx0XHRcdDxkaXYgY2xhc3NOYW1lPXtgJHtzdHlsZXMuY29udGVudH0gaW1wZXJpdW1MYXlvdXRDb250ZW50YH0+e2NoaWxkcmVufTwvZGl2PlxuXHRcdFx0PC9TZWdtZW50PlxuXHRcdFx0e2Zvb3RlckNvbXB9XG5cdFx0PC9kaXY+XG5cdCk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHR5cGUge01lbnVQcm9wc30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHtNZW51fSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge3NvcnRXZWlnaHRlZEl0ZW1zfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgdHlwZSB7TGF5b3V0SXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtzcGxpdFBvc2l0aW9uZWRJdGVtc30gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtMYXlvdXRJdGVtV3JhcHBlcn0gZnJvbSAnLi9MYXlvdXRJdGVtV3JhcHBlcic7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbXBvbmVudHMuTGF5b3V0SXRlbUJhcicpO1xuXG5pbnRlcmZhY2UgSXRlbUJhclByb3BzIGV4dGVuZHMgTWVudVByb3BzIHtcblx0aXRlbXM6IExheW91dEl0ZW1bXTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBiYXIgb2YgbWVudSBpdGVtcy5cbiAqIEBwYXJhbSBuYW1lXG4gKiBAcGFyYW0gaXRlbXNcbiAqIEBwYXJhbSByZXN0XG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIExheW91dEl0ZW1CYXIoe2l0ZW1zLCAuLi5yZXN0fTogSXRlbUJhclByb3BzKSB7XG5cdGNvbnN0IGltcyA9IHNwbGl0UG9zaXRpb25lZEl0ZW1zKGl0ZW1zKTtcblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdGNvbnN0IGxlZnRJdGVtcyA9IHNvcnRXZWlnaHRlZEl0ZW1zKGltcy5sZWZ0SXRlbXMpLm1hcCgoaXRlbSwgaW5kZXgpID0+IDxMYXlvdXRJdGVtV3JhcHBlciBpdGVtPXtpdGVtfSBrZXk9e2luZGV4fSB2ZXJ0aWNhbD17cmVzdC52ZXJ0aWNhbH0gLz4pO1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdGNvbnN0IHJpZ2h0SXRlbXMgPSBzb3J0V2VpZ2h0ZWRJdGVtcyhpbXMucmlnaHRJdGVtcykubWFwKChpdGVtLCBpbmRleCkgPT4gPExheW91dEl0ZW1XcmFwcGVyIGl0ZW09e2l0ZW19IGtleT17aW5kZXh9IHZlcnRpY2FsPXtyZXN0LnZlcnRpY2FsfSAvPik7XG5cblx0cmV0dXJuIChcblx0XHQ8TWVudSB7Li4ucmVzdH0+XG5cdFx0XHR7bGVmdEl0ZW1zfVxuXHRcdFx0e3Jlc3QudmVydGljYWwgPyByaWdodEl0ZW1zIDogPE1lbnUuTWVudSBwb3NpdGlvbj1cInJpZ2h0XCI+e3JpZ2h0SXRlbXN9PC9NZW51Lk1lbnU+fVxuXHRcdDwvTWVudT5cblx0KTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge1F1ZXJ5fSBmcm9tICdtaW5nbyc7XG5pbXBvcnQgdHlwZSB7Q29tcG9uZW50Q2xhc3N9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7RHJvcGRvd259IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7dXNlQnVpbGREYXRhfSBmcm9tICcuLi8uLi9ob29rcy91c2VCdWlsZERhdGEnO1xuaW1wb3J0IHR5cGUge0RhdGF9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7c29ydFdlaWdodGVkSXRlbXN9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB0eXBlIHtMYXlvdXRJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2lzQ3VzdG9tTGF5b3V0SXRlbSwgaXNEcm9wZG93bkxheW91dEl0ZW0sIGlzTWVudUxheW91dEl0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7Q3VzdG9tTGF5b3V0SXRlbUNvbXBvbmVudH0gZnJvbSAnLi9DdXN0b21MYXlvdXRJdGVtQ29tcG9uZW50JztcbmltcG9ydCB7RHJvcGRvd25JdGVtfSBmcm9tICcuL0Ryb3Bkb3duSXRlbSc7XG5pbXBvcnQge01lbnVJdGVtfSBmcm9tICcuL01lbnVJdGVtJztcbmltcG9ydCB7UGxhaW5JdGVtfSBmcm9tICcuL1BsYWluSXRlbSc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbXBvbmVudHMuTGF5b3V0SXRlbVdyYXBwZXInKTtcblxuaW50ZXJmYWNlIEl0ZW1XcmFwcGVyUHJvcHMge1xuXHRpdGVtOiBMYXlvdXRJdGVtO1xuXHRhcz86IENvbXBvbmVudENsYXNzO1xuXHR2ZXJ0aWNhbD86IGJvb2xlYW47XG5cdGRhdGE/OiBEYXRhO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYW55IHR5cGUgb2YgSXRlbS4gR2F0aGVycyBzdGF0ZSwgcm91dGUgYW5kIG90aGVyIGRhdGEgYW5kIGNoZWNrcyBmb3IgdmlzaWJpbGl0eS5cbiAqIEBwYXJhbSBpdGVtXG4gKiBAcGFyYW0gYXNcbiAqIEBwYXJhbSB2ZXJ0aWNhbFxuICogQHBhcmFtIHBhcmVudERhdGFcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgZnVuY3Rpb24gTGF5b3V0SXRlbVdyYXBwZXIoe2l0ZW0sIGFzLCB2ZXJ0aWNhbCwgZGF0YTogcGFyZW50RGF0YX06IEl0ZW1XcmFwcGVyUHJvcHMpIHtcblx0Y29uc3QgZGF0YSA9IHVzZUJ1aWxkRGF0YSh7XG5cdFx0c3RhdGVTZWxlY3Rvckhvb2s6IGl0ZW0uc3RhdGVTZWxlY3Rvckhvb2ssXG5cdFx0cGVybWlzc2lvblNlbGVjdG9ySG9vazogaXRlbS5wZXJtaXNzaW9uU2VsZWN0b3JIb29rLFxuXHRcdHJvdXRlSXRlbTogaXRlbSxcblx0XHRkYXRhOiBwYXJlbnREYXRhLFxuXHR9KTtcblxuXHQvLyBDaGVjayBpZiB2aXNpYmxlXG5cdGlmIChpdGVtLnZpc2libGUpIHtcblx0XHRpZiAodHlwZW9mIGl0ZW0udmlzaWJsZSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0aWYgKCFpdGVtLnZpc2libGUoZGF0YSkpIHJldHVybiBudWxsO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBxID0gbmV3IFF1ZXJ5KGl0ZW0udmlzaWJsZSB8fCB7fSk7XG5cdFx0XHRpZiAoIXEudGVzdChkYXRhKSkgcmV0dXJuIG51bGw7XG5cdFx0fVxuXHR9XG5cblx0aWYgKGlzQ3VzdG9tTGF5b3V0SXRlbShpdGVtKSkge1xuXHRcdHJldHVybiA8Q3VzdG9tTGF5b3V0SXRlbUNvbXBvbmVudCBpdGVtPXtpdGVtfSBkYXRhPXtkYXRhfSAvPjtcblx0fVxuXHRpZiAoaXNEcm9wZG93bkxheW91dEl0ZW0oaXRlbSkpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0Y29uc3QgY2hpbGRyZW4gPSBzb3J0V2VpZ2h0ZWRJdGVtcyhpdGVtLmRyb3Bkb3duKS5tYXAoKHYsIGluZGV4KSA9PiA8TGF5b3V0SXRlbVdyYXBwZXIga2V5PXtpbmRleH0gaXRlbT17dn0gYXM9e0Ryb3Bkb3duLkl0ZW19IGRhdGE9e2RhdGF9IC8+KTtcblx0XHRyZXR1cm4gPERyb3Bkb3duSXRlbSBpdGVtPXtpdGVtfSBjaGlsZHJlbj17Y2hpbGRyZW59IHZlcnRpY2FsPXt2ZXJ0aWNhbH0gZGF0YT17ZGF0YX0gLz47XG5cdH1cblx0aWYgKGlzTWVudUxheW91dEl0ZW0oaXRlbSkpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0Y29uc3QgY2hpbGRyZW4gPSBzb3J0V2VpZ2h0ZWRJdGVtcyhpdGVtLm1lbnUpLm1hcCgodiwgaW5kZXgpID0+IChcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0XHRcdDxMYXlvdXRJdGVtV3JhcHBlciBrZXk9e2luZGV4fSBpdGVtPXt2fSBhcz17RHJvcGRvd24uSXRlbX0gdmVydGljYWw9e3ZlcnRpY2FsfSBkYXRhPXtkYXRhfSAvPlxuXHRcdCkpO1xuXHRcdHJldHVybiA8TWVudUl0ZW0gaXRlbT17aXRlbX0gY2hpbGRyZW49e2NoaWxkcmVufSAvPjtcblx0fVxuXHRyZXR1cm4gPFBsYWluSXRlbSBpdGVtPXtpdGVtfSBkYXRhPXtkYXRhfSBhcz17YXN9IC8+O1xufVxuIiwiaW1wb3J0IHtNZW51fSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7TWVudUxheW91dEl0ZW19IGZyb20gJy4uL3R5cGVzJztcblxuaW50ZXJmYWNlIE1lbnVJdGVtUHJvcHMge1xuXHRpdGVtOiBNZW51TGF5b3V0SXRlbTtcblx0Y2hpbGRyZW46IEpTWC5FbGVtZW50W107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNZW51SXRlbSh7aXRlbSwgY2hpbGRyZW59OiBNZW51SXRlbVByb3BzKSB7XG5cdHJldHVybiAoXG5cdFx0PE1lbnUuSXRlbT5cblx0XHRcdDxNZW51LkhlYWRlcj57aXRlbS50ZXh0fTwvTWVudS5IZWFkZXI+XG5cdFx0XHQ8TWVudS5NZW51IGNvbXBhY3Q9XCJcIj57Y2hpbGRyZW59PC9NZW51Lk1lbnU+XG5cdFx0PC9NZW51Lkl0ZW0+XG5cdCk7XG59XG4iLCJpbXBvcnQgdHlwZSB7Q29tcG9uZW50Q2xhc3N9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge0RhdGF9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB0eXBlIHtDdXN0b21MYXlvdXRJdGVtLCBEcm9wZG93bkxheW91dEl0ZW0sIExheW91dEl0ZW0sIE1lbnVMYXlvdXRJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2dldEljb24sIGdldFRleHQsIGxpbmtQYXJhbWV0ZXJzfSBmcm9tICcuLi91dGlscyc7XG5cbmludGVyZmFjZSBQbGFpbkl0ZW1Qcm9wcyB7XG5cdGl0ZW06IEV4Y2x1ZGU8TGF5b3V0SXRlbSwgTWVudUxheW91dEl0ZW0gfCBEcm9wZG93bkxheW91dEl0ZW0gfCBDdXN0b21MYXlvdXRJdGVtPjtcblx0ZGF0YTogRGF0YTtcblx0YXM/OiBDb21wb25lbnRDbGFzcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFBsYWluSXRlbSh7aXRlbSwgZGF0YSwgYXN9OiBQbGFpbkl0ZW1Qcm9wcykge1xuXHRjb25zdCBsaW5rUGFyYW1zID0gbGlua1BhcmFtZXRlcnMoaXRlbSwgZGF0YSk7XG5cblx0Y29uc3QgSXRlbVggPSBhcyB8fCBNZW51Lkl0ZW07XG5cblx0cmV0dXJuIChcblx0XHQ8SXRlbVggey4uLmxpbmtQYXJhbXN9PlxuXHRcdFx0e2dldEljb24oaXRlbSwgZGF0YSl9XG5cdFx0XHR7Z2V0VGV4dChpdGVtLCBkYXRhKX1cblx0XHQ8L0l0ZW1YPlxuXHQpO1xufVxuIiwiaW1wb3J0IHtJY29uLCBNZW51fSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLmNzcyc7XG5cbmludGVyZmFjZSBTZWNvbmRhcnlNZW51VG9nZ2xlSXRlbVByb3BzIHtcblx0bWVudU9wZW46IGJvb2xlYW47XG5cdHNldE1lbnVPcGVuOiAob3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNlY29uZGFyeU1lbnVUb2dnbGVJdGVtKHttZW51T3Blbiwgc2V0TWVudU9wZW59OiBTZWNvbmRhcnlNZW51VG9nZ2xlSXRlbVByb3BzKSB7XG5cdHJldHVybiAoXG5cdFx0PE1lbnUuSXRlbT5cblx0XHRcdDxJY29uXG5cdFx0XHRcdGNsYXNzTmFtZT17bWVudU9wZW4gPyBzdHlsZXMuaWNvblJvdGF0ZWQgOiBzdHlsZXMuaWNvbn1cblx0XHRcdFx0bmFtZT17bWVudU9wZW4gPyAnY2xvc2UnIDogJ3NpZGViYXInfVxuXHRcdFx0XHRvbkNsaWNrPXsoKSA9PiB7XG5cdFx0XHRcdFx0c2V0TWVudU9wZW4oIW1lbnVPcGVuKTtcblx0XHRcdFx0fX1cblx0XHRcdC8+XG5cdFx0PC9NZW51Lkl0ZW0+XG5cdCk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHt1c2VFZmZlY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dXNlRGlzcGF0Y2h9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7dXNlTWVkaWFRdWVyeX0gZnJvbSAncmVhY3QtcmVzcG9uc2l2ZSc7XG5pbXBvcnQge2FjdGlvbnMsIHVzZUxheW91dFN0YXRlfSBmcm9tICcuLi8uLi9zdGF0ZSc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0Lmhvb2tzLnVzZU1vYmlsZUxheW91dCcpO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlTW9iaWxlTGF5b3V0KCkge1xuXHRjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cdGNvbnN0IHtpc01vYmlsZX0gPSB1c2VMYXlvdXRTdGF0ZSgpO1xuXHRjb25zdCBpc01vYmlsZVggPSB1c2VNZWRpYVF1ZXJ5KHtxdWVyeTogJyhtYXgtd2lkdGg6IDkwMHB4KSd9KTtcblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRpZiAoaXNNb2JpbGUgIT09IGlzTW9iaWxlWCkge1xuXHRcdFx0ZChgTWVkaWEgcXVlcnkgY2hhbmdlIGRldGVjdGVkOiAke2lzTW9iaWxlfSAtPiAke2lzTW9iaWxlWH1gKTtcblx0XHRcdGRpc3BhdGNoKGFjdGlvbnMuc2V0TW9iaWxlKGlzTW9iaWxlWCkpO1xuXHRcdH1cblx0fSwgW2Rpc3BhdGNoLCBpc01vYmlsZSwgaXNNb2JpbGVYXSk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IGdyb3VwQnkgZnJvbSAnbG9kYXNoL2dyb3VwQnknO1xuaW1wb3J0IHR5cGUge0xheW91dEl0ZW19IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtpc0Ryb3Bkb3duTGF5b3V0SXRlbSwgaXNNZW51TGF5b3V0SXRlbX0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0Lm1vdmVJdGVtcycpO1xuXG5mdW5jdGlvbiBwdWxsSXRlbXMoaXRlbXM6IExheW91dEl0ZW1bXSwgcHVsbGVkOiBMYXlvdXRJdGVtW10gPSBbXSk6IExheW91dEl0ZW1bXSB7XG5cdHJldHVybiBpdGVtcy5yZWR1Y2UoKG1lbW8sIGl0ZW0pID0+IHtcblx0XHRpZiAoaXNEcm9wZG93bkxheW91dEl0ZW0oaXRlbSkpIHtcblx0XHRcdHJldHVybiBbXG5cdFx0XHRcdC4uLm1lbW8sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQuLi5pdGVtLFxuXHRcdFx0XHRcdGRyb3Bkb3duOiBwdWxsSXRlbXMoaXRlbS5kcm9wZG93biwgcHVsbGVkKSxcblx0XHRcdFx0fSxcblx0XHRcdF07XG5cdFx0fVxuXG5cdFx0aWYgKGlzTWVudUxheW91dEl0ZW0oaXRlbSkpIHtcblx0XHRcdHJldHVybiBbXG5cdFx0XHRcdC4uLm1lbW8sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQuLi5pdGVtLFxuXHRcdFx0XHRcdG1lbnU6IHB1bGxJdGVtcyhpdGVtLm1lbnUsIHB1bGxlZCksXG5cdFx0XHRcdH0sXG5cdFx0XHRdO1xuXHRcdH1cblxuXHRcdGlmICghaXRlbS5tb3ZlVG9LZXkpIHtcblx0XHRcdHJldHVybiBbLi4ubWVtbywgaXRlbV07XG5cdFx0fVxuXG5cdFx0cHVsbGVkLnB1c2goaXRlbSk7XG5cdFx0cmV0dXJuIG1lbW87XG5cdH0sIFtdIGFzIExheW91dEl0ZW1bXSk7XG59XG5cbmZ1bmN0aW9uIGFkZEl0ZW1zKGl0ZW1zOiBMYXlvdXRJdGVtW10sIHB1bGxlZDogUmVjb3JkPHN0cmluZywgTGF5b3V0SXRlbVtdPik6IExheW91dEl0ZW1bXSB7XG5cdHJldHVybiBpdGVtcy5yZWR1Y2UoKG1lbW8sIGl0ZW0pID0+IHtcblx0XHRpZiAoaXNEcm9wZG93bkxheW91dEl0ZW0oaXRlbSkpIHtcblx0XHRcdGNvbnN0IG5ld0l0ZW1zID0gaXRlbS5rZXkgJiYgcHVsbGVkW2l0ZW0ua2V5XSA/IHB1bGxlZFtpdGVtLmtleV0gOiBbXTtcblx0XHRcdHJldHVybiBbXG5cdFx0XHRcdC4uLm1lbW8sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQuLi5pdGVtLFxuXHRcdFx0XHRcdGRyb3Bkb3duOiBbLi4uYWRkSXRlbXMoaXRlbS5kcm9wZG93biwgcHVsbGVkKSwgLi4ubmV3SXRlbXNdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XTtcblx0XHR9XG5cblx0XHRpZiAoaXNNZW51TGF5b3V0SXRlbShpdGVtKSAmJiBpdGVtLmtleSkge1xuXHRcdFx0Y29uc3QgbmV3SXRlbXMgPSBpdGVtLmtleSAmJiBwdWxsZWRbaXRlbS5rZXldID8gcHVsbGVkW2l0ZW0ua2V5XSA6IFtdO1xuXHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0Li4ubWVtbyxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdC4uLml0ZW0sXG5cdFx0XHRcdFx0bWVudTogWy4uLmFkZEl0ZW1zKGl0ZW0ubWVudSwgcHVsbGVkKSwgLi4ubmV3SXRlbXNdLFxuXHRcdFx0XHR9LFxuXHRcdFx0XTtcblx0XHR9XG5cdFx0cmV0dXJuIFsuLi5tZW1vLCBpdGVtXTtcblx0fSwgW10gYXMgTGF5b3V0SXRlbVtdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdmVJdGVtcyhpdGVtczogTGF5b3V0SXRlbVtdKSB7XG5cdGNvbnN0IHB1bGxlZDogTGF5b3V0SXRlbVtdID0gW107XG5cdGNvbnN0IGl0ZW1zTWludXNQdWxsZWQgPSBwdWxsSXRlbXMoaXRlbXMsIHB1bGxlZCk7XG5cdHJldHVybiBhZGRJdGVtcyhpdGVtc01pbnVzUHVsbGVkLCBncm91cEJ5KHB1bGxlZCwgJ21vdmVUb0tleScpKTtcbn1cbiIsImltcG9ydCB0eXBlIHtTZW1hbnRpY0lDT05TfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7SG9yaXpvbnRhbFBvc2l0aW9uZWRJdGVtLCBSb3V0ZUl0ZW0sIFZpc2liaWxpdHlJdGVtLCBXZWlnaHRlZEl0ZW19IGZyb20gJy4uL2NvbW1vbkl0ZW1zJztcbmltcG9ydCB0eXBlIHtEYXRhSG9va0l0ZW19IGZyb20gJy4uL2RhdGFob29rcy90eXBlcyc7XG5pbXBvcnQgdHlwZSB7RGF0YSwgUGVybWlzc2lvblNlbGVjdG9ySG9va30gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIERlc2NyaWJlcyBhIGJhc2ljIHdlaWdodGVkLCBwb3NzaWJseSB2aXNpYmxlIGl0ZW1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlTGF5b3V0SXRlbSBleHRlbmRzIFdlaWdodGVkSXRlbSwgVmlzaWJpbGl0eUl0ZW0ge1xuXHR0ZXh0OiBzdHJpbmcgfCAoKGRhdGE6IERhdGEpID0+IHN0cmluZyk7XG5cdGljb24/OiBTZW1hbnRpY0lDT05TIHwgKChkYXRhOiBEYXRhKSA9PiBTZW1hbnRpY0lDT05TKTtcblx0bW92ZVRvS2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbUxheW91dEl0ZW0gZXh0ZW5kcyBXZWlnaHRlZEl0ZW0sIFZpc2liaWxpdHlJdGVtIHtcblx0cmVuZGVyOiAoZGF0YTogRGF0YSkgPT4gSlNYLkVsZW1lbnQgfCBudWxsO1xuXHRtb3ZlVG9LZXk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgbWVudSB0aGF0IGRpc3BsYXlzIGEgZHJvcGRvd24gbGlzdCBvZiBpdGVtc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duTGF5b3V0SXRlbSBleHRlbmRzIEJhc2VMYXlvdXRJdGVtIHtcblx0ZHJvcGRvd246ICgoQmFzZUxheW91dEl0ZW0gJiBSb3V0ZUl0ZW08RGF0YT4pIHwgQ3VzdG9tTGF5b3V0SXRlbSlbXTtcblx0a2V5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIG1lbnUgdGhhdCBkaXNwbGF5cyBhIHN1YiBtZW51IChub3QgYSBkcm9wZG93biBsaXN0KVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVMYXlvdXRJdGVtIGV4dGVuZHMgQmFzZUxheW91dEl0ZW0ge1xuXHRtZW51OiAoKEJhc2VMYXlvdXRJdGVtICYgUm91dGVJdGVtPERhdGE+KSB8IEN1c3RvbUxheW91dEl0ZW0pW107XG5cdGtleT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYSBob3Jpem9udGFsIG1lbnUgaXRlbSB3aGljaCBpcyBlaXRoZXIgYSByb3V0ZSBpdGVtIG9yIGRyb3Bkb3duIG1lbnVcbiAqL1xuZXhwb3J0IHR5cGUgTGF5b3V0SXRlbSA9IChCYXNlTGF5b3V0SXRlbSAmIFJvdXRlSXRlbTxEYXRhPikgfCBEcm9wZG93bkxheW91dEl0ZW0gfCBNZW51TGF5b3V0SXRlbSB8IEN1c3RvbUxheW91dEl0ZW07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF5b3V0RGF0YSB7XG5cdHBlcm1pc3Npb25TZWxlY3Rvckhvb2tzPzogUGVybWlzc2lvblNlbGVjdG9ySG9va1tdO1xuXHRkYXRhSG9va3M/OiBEYXRhSG9va0l0ZW1bXTtcblx0cHJpbWFyeU1lbnU/OiAoTGF5b3V0SXRlbSAmIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSlbXTsgLy8gcHJpbWFyeSBtZW51XG5cdHN0YXR1c2Jhcj86IChMYXlvdXRJdGVtICYgSG9yaXpvbnRhbFBvc2l0aW9uZWRJdGVtKVtdO1xuXHRzZWNvbmRhcnlNZW51PzogTGF5b3V0SXRlbVtdOyAvLyBzZWNvbmRhcnkgbWVudVxuXHRmb290ZXI/OiAoTGF5b3V0SXRlbSAmIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSlbXTsgLy8gZm9vdGVyXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0N1c3RvbUxheW91dEl0ZW0odmFsdWU6IGFueSk6IHZhbHVlIGlzIEN1c3RvbUxheW91dEl0ZW0ge1xuXHRyZXR1cm4gISEodmFsdWUgYXMgQ3VzdG9tTGF5b3V0SXRlbSkucmVuZGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEcm9wZG93bkxheW91dEl0ZW0odmFsdWU6IGFueSk6IHZhbHVlIGlzIERyb3Bkb3duTGF5b3V0SXRlbSB7XG5cdHJldHVybiAhISh2YWx1ZSBhcyBEcm9wZG93bkxheW91dEl0ZW0pLmRyb3Bkb3duO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNNZW51TGF5b3V0SXRlbSh2YWx1ZTogYW55KTogdmFsdWUgaXMgTWVudUxheW91dEl0ZW0ge1xuXHRyZXR1cm4gISEodmFsdWUgYXMgTWVudUxheW91dEl0ZW0pLm1lbnU7XG59XG4iLCJpbXBvcnQge0xpbmt9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHtJY29uLCBTZW1hbnRpY0lDT05TfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7Um91dGVJdGVtfSBmcm9tICcuLi9jb21tb25JdGVtcyc7XG5pbXBvcnQge2lzSG9yaXpvbnRhbFBvc2l0aW9uZWRJdGVtfSBmcm9tICcuLi9jb21tb25JdGVtcyc7XG5pbXBvcnQgdHlwZSB7RGF0YX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHR5cGUge0Jhc2VMYXlvdXRJdGVtLCBMYXlvdXRJdGVtfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBTcGxpdHMgcG9zaXRpb25lZCBpdGVtcyBpbnRvIGxlZnQgYW5kIHJpZ2h0IGFycmF5cyAoaWYgaG9yaXpvbnRhbClcbiAqIEBwYXJhbSBpdGVtc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRQb3NpdGlvbmVkSXRlbXM8VCBleHRlbmRzIExheW91dEl0ZW0+KGl0ZW1zOiBUW10pIHtcblx0cmV0dXJuIGl0ZW1zLnJlZHVjZShcblx0XHQobWVtbywgdikgPT4ge1xuXHRcdFx0aWYgKGlzSG9yaXpvbnRhbFBvc2l0aW9uZWRJdGVtKHYpICYmIHYucG9zaXRpb24gPT09ICdyaWdodCcpIHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRsZWZ0SXRlbXM6IG1lbW8ubGVmdEl0ZW1zLFxuXHRcdFx0XHRcdHJpZ2h0SXRlbXM6IFsuLi5tZW1vLnJpZ2h0SXRlbXMsIHZdLFxuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0bGVmdEl0ZW1zOiBbLi4ubWVtby5sZWZ0SXRlbXMsIHZdLFxuXHRcdFx0XHRyaWdodEl0ZW1zOiBtZW1vLnJpZ2h0SXRlbXMsXG5cdFx0XHR9O1xuXHRcdH0sXG5cdFx0e2xlZnRJdGVtczogW10sIHJpZ2h0SXRlbXM6IFtdfSBhcyB7bGVmdEl0ZW1zOiBUW107IHJpZ2h0SXRlbXM6IFRbXX0sXG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5rUGFyYW1ldGVycyhpdGVtOiBCYXNlTGF5b3V0SXRlbSAmIFJvdXRlSXRlbTxEYXRhPiwgZGF0YTogRGF0YSkge1xuXHRyZXR1cm4gaXRlbS50b1xuXHRcdD8ge1xuXHRcdFx0XHRhczogTGluayxcblx0XHRcdFx0YWN0aXZlOiBkYXRhLmFjdGl2ZSxcblx0XHRcdFx0dG86IHR5cGVvZiBpdGVtLnRvID09PSAnZnVuY3Rpb24nID8gaXRlbS50byhkYXRhKSA6IGl0ZW0udG8sXG5cdFx0ICB9XG5cdFx0OiB7fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHQoaXRlbTogQmFzZUxheW91dEl0ZW0sIGRhdGE6IERhdGEpIHtcblx0cmV0dXJuIHR5cGVvZiBpdGVtLnRleHQgPT09ICdmdW5jdGlvbicgPyBpdGVtLnRleHQoZGF0YSkgOiBpdGVtLnRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJY29uKGl0ZW06IEJhc2VMYXlvdXRJdGVtLCBkYXRhOiBEYXRhKSB7XG5cdC8vIEdlbmVyYXRlIHRoZSBpY29uIGNvbXBvbmVudCwgaWYgaXQgZXhpc3RzXG5cdGxldCBpY29uTmFtZTogU2VtYW50aWNJQ09OUyB8IHVuZGVmaW5lZDtcblx0aWYgKGl0ZW0uaWNvbikge1xuXHRcdGljb25OYW1lID0gdHlwZW9mIGl0ZW0uaWNvbiA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW0uaWNvbihkYXRhKSA6IGl0ZW0uaWNvbjtcblx0fVxuXHRyZXR1cm4gaXRlbS5pY29uID8gPEljb24gbmFtZT17aWNvbk5hbWV9IC8+IDogbnVsbDtcbn1cbiIsImltcG9ydCB0eXBlIHtIb2MsIEltcGVyaXVtQ2xpZW50fSBmcm9tICdAaW1wZXJpdW0vY2xpZW50JztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgdHlwZSB7Q29tcG9uZW50VHlwZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtEYXRhSG9va3N9IGZyb20gJy4uL2RhdGFob29rcy9EYXRhSG9va3MnO1xuaW1wb3J0IHtQZXJtaXNzaW9uSG9va3N9IGZyb20gJy4uL2RhdGFob29rcy9QZXJtaXNzaW9uSG9va3MnO1xuaW1wb3J0IHtpc0ltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0xheW91dH0gZnJvbSAnLi9jb21wb25lbnRzL0xheW91dCc7XG5pbXBvcnQgdHlwZSB7TGF5b3V0RGF0YX0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LndpdGhMYXlvdXQnKTtcblxuY29uc3QgaW5pdGlhbExheW91dE1vZHVsZURhdGE6IFJlcXVpcmVkPExheW91dERhdGE+ID0ge1xuXHRkYXRhSG9va3M6IFtdLFxuXHRwZXJtaXNzaW9uU2VsZWN0b3JIb29rczogW10sXG5cdHByaW1hcnlNZW51OiBbXSxcblx0c3RhdHVzYmFyOiBbXSxcblx0c2Vjb25kYXJ5TWVudTogW10sXG5cdGZvb3RlcjogW10sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aExheW91dChjbGllbnQ6IEltcGVyaXVtQ2xpZW50KTogSG9jIHtcblx0Y29uc3QgbGF5b3V0TW9kdWxlRGF0YSA9IGNsaWVudC5tb2R1bGVzLnJlZHVjZSgobWVtbywgbW9kdWxlKSA9PiB7XG5cdFx0aWYgKGlzSW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGUobW9kdWxlKSkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0ZGF0YUhvb2tzOiBbLi4uKG1lbW8uZGF0YUhvb2tzIHx8IFtdKSwgLi4uKG1vZHVsZS5sYXlvdXQuZGF0YUhvb2tzIHx8IFtdKV0sXG5cdFx0XHRcdHBlcm1pc3Npb25TZWxlY3Rvckhvb2tzOiBbLi4uKG1lbW8ucGVybWlzc2lvblNlbGVjdG9ySG9va3MgfHwgW10pLCAuLi4obW9kdWxlLmxheW91dC5wZXJtaXNzaW9uU2VsZWN0b3JIb29rcyB8fCBbXSldLFxuXHRcdFx0XHRwcmltYXJ5TWVudTogWy4uLihtZW1vLnByaW1hcnlNZW51IHx8IFtdKSwgLi4uKG1vZHVsZS5sYXlvdXQucHJpbWFyeU1lbnUgfHwgW10pXSxcblx0XHRcdFx0c3RhdHVzYmFyOiBbLi4uKG1lbW8uc3RhdHVzYmFyIHx8IFtdKSwgLi4uKG1vZHVsZS5sYXlvdXQuc3RhdHVzYmFyIHx8IFtdKV0sXG5cdFx0XHRcdHNlY29uZGFyeU1lbnU6IFsuLi4obWVtby5zZWNvbmRhcnlNZW51IHx8IFtdKSwgLi4uKG1vZHVsZS5sYXlvdXQuc2Vjb25kYXJ5TWVudSB8fCBbXSldLFxuXHRcdFx0XHRmb290ZXI6IFsuLi4obWVtby5mb290ZXIgfHwgW10pLCAuLi4obW9kdWxlLmxheW91dC5mb290ZXIgfHwgW10pXSxcblx0XHRcdH0gYXMgUmVxdWlyZWQ8TGF5b3V0RGF0YT47XG5cdFx0fVxuXHRcdHJldHVybiBtZW1vO1xuXHR9LCBpbml0aWFsTGF5b3V0TW9kdWxlRGF0YSk7XG5cdGQoJ0xheW91dCBpdGVtcyBwcm9jZXNzZWQnLCBsYXlvdXRNb2R1bGVEYXRhKTtcblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXHRyZXR1cm4gZnVuY3Rpb24gbGF5b3V0SG9jKFdyYXBwZWQ6IENvbXBvbmVudFR5cGU8YW55Pikge1xuXHRcdGNvbnN0IGRpc3BsYXlOYW1lID0gV3JhcHBlZC5kaXNwbGF5TmFtZSB8fCBXcmFwcGVkLm5hbWUgfHwgJyc7XG5cblx0XHRmdW5jdGlvbiBXaXRoTGF5b3V0KHByb3BzOiB1bmtub3duKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8PlxuXHRcdFx0XHRcdDxMYXlvdXQgey4uLmxheW91dE1vZHVsZURhdGF9PlxuXHRcdFx0XHRcdFx0PFdyYXBwZWQgey4uLnByb3BzfSBsYXlvdXQ9e2xheW91dE1vZHVsZURhdGF9IC8+XG5cdFx0XHRcdFx0PC9MYXlvdXQ+XG5cdFx0XHRcdFx0PERhdGFIb29rcyBkYXRhSG9va3M9e2xheW91dE1vZHVsZURhdGEuZGF0YUhvb2tzfSAvPlxuXHRcdFx0XHRcdDxQZXJtaXNzaW9uSG9va3MgcGVybWlzc2lvbkhvb2tzPXtsYXlvdXRNb2R1bGVEYXRhLnBlcm1pc3Npb25TZWxlY3Rvckhvb2tzfSAvPlxuXHRcdFx0XHQ8Lz5cblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0V2l0aExheW91dC5kaXNwbGF5TmFtZSA9IGB3aXRoTGF5b3V0KCR7ZGlzcGxheU5hbWV9KWA7XG5cblx0XHRyZXR1cm4gV2l0aExheW91dDtcblx0fTtcbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG5pbXBvcnQge2NyZWF0ZVNsaWNlSG9va30gZnJvbSAnQGltcGVyaXVtL3N0YXRlJztcbmltcG9ydCB7Y3JlYXRlU2xpY2UsIFBheWxvYWRBY3Rpb259IGZyb20gJ0ByZWR1eGpzL3Rvb2xraXQnO1xuXG5leHBvcnQgY29uc3Qgc3RhdGUgPSBjcmVhdGVTbGljZSh7XG5cdG5hbWU6ICdpbXBlcml1bUxheW91dCcsXG5cdGluaXRpYWxTdGF0ZToge1xuXHRcdGlzTW9iaWxlOiBmYWxzZSxcblx0XHRwYXJhbXM6IHt9LFxuXHRcdHBlcm1pc3Npb25zOiB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPixcblx0fSxcblx0cmVkdWNlcnM6IHtcblx0XHRzZXRNb2JpbGU6IChzdCwgYWN0aW9uOiBQYXlsb2FkQWN0aW9uPGJvb2xlYW4+KSA9PiAoey4uLnN0LCBpc01vYmlsZTogYWN0aW9uLnBheWxvYWR9KSxcblx0XHRzZXRQYXJhbXM6IChzdCwgYWN0aW9uOiBQYXlsb2FkQWN0aW9uPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KSA9PiB7XG5cdFx0XHRzdC5wYXJhbXMgPSBhY3Rpb24ucGF5bG9hZDtcblx0XHR9LFxuXHRcdHNldFBlcm1pc3Npb246IChzdCwgYWN0aW9uOiBQYXlsb2FkQWN0aW9uPHtwZXJtaXNzaW9uOiBzdHJpbmc7IHJlc3VsdDogYm9vbGVhbn0+KSA9PiB7XG5cdFx0XHRzdC5wZXJtaXNzaW9uc1thY3Rpb24ucGF5bG9hZC5wZXJtaXNzaW9uXSA9IGFjdGlvbi5wYXlsb2FkLnJlc3VsdDtcblx0XHR9LFxuXHR9LFxufSk7XG5cbmV4cG9ydCBjb25zdCB1c2VMYXlvdXRTdGF0ZSA9IGNyZWF0ZVNsaWNlSG9vayhzdGF0ZSk7XG5cbmV4cG9ydCBjb25zdCB7YWN0aW9uc30gPSBzdGF0ZTtcbiIsImltcG9ydCB0eXBlIHtJbXBlcml1bUNsaWVudE1vZHVsZX0gZnJvbSAnQGltcGVyaXVtL2NsaWVudCc7XG5pbXBvcnQgdHlwZSB7TG9jYXRpb259IGZyb20gJ2hpc3RvcnknO1xuaW1wb3J0IHR5cGUge0xheW91dERhdGF9IGZyb20gJy4vbGF5b3V0L3R5cGVzJztcblxuZXhwb3J0IHR5cGUgU3RhdGUgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuLyoqXG4gKiBBIGhvb2sgdGhhdCBzZWxlY3RzIGZyb20gcmVkdXggc3RhdGUuXG4gKi9cbmV4cG9ydCB0eXBlIFN0YXRlU2VsZWN0b3JIb29rID0gKCkgPT4gU3RhdGU7XG5cbmV4cG9ydCB0eXBlIFBlcm1pc3Npb25SZXN1bHRzID0gUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG5cbmV4cG9ydCB0eXBlIFBlcm1pc3Npb25TZWxlY3Rvckhvb2sgPSAoZGF0YTogRGF0YSkgPT4gUGVybWlzc2lvblJlc3VsdHM7XG5cbi8qKlxuICogVGhlIHZpc2liaWxpdHkgcXVlcnkgY2FuIGVpdGhlciBiZSBhIG1pbmdvIHF1ZXJ5IG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgYm9vbGVhbi4gVGhlIGRhdGEgaXMgYW4gb2JqZWN0IHdpdGggdGhlIHJvdXRlciBwYXRoIG1lcmdlZCB3aXRoIGFueSBzdGF0ZSBzZWxlY3RvciBob29rIGRhdGEuXG4gKi9cbmV4cG9ydCB0eXBlIFZpc2liaWxpdHlRdWVyeUZuID0gKGRhdGE6IERhdGEpID0+IGJvb2xlYW47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcblx0bG9jOiBMb2NhdGlvbjtcblx0cm91dGU6IHtcblx0XHRwYXRoOiBzdHJpbmdbXTtcblx0XHRoYXNoOiBzdHJpbmc7XG5cdFx0c2VhcmNoOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXHR9O1xuXHRzdGF0ZTogU3RhdGU7XG5cdGFjdGl2ZTogYm9vbGVhbjtcblx0cGVybWlzc2lvbnM6IFBlcm1pc3Npb25SZXN1bHRzO1xuXHRpZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbXBlcml1bUxheW91dENsaWVudE1vZHVsZSBleHRlbmRzIEltcGVyaXVtQ2xpZW50TW9kdWxlIHtcblx0bGF5b3V0OiBMYXlvdXREYXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbXBlcml1bUxheW91dENsaWVudE1vZHVsZShtb2R1bGU6IEltcGVyaXVtQ2xpZW50TW9kdWxlKTogbW9kdWxlIGlzIEltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlIHtcblx0Y29uc3QgbGF5b3V0TW9kdWxlID0gbW9kdWxlIGFzIEltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlO1xuXHRyZXR1cm4gbGF5b3V0TW9kdWxlLmxheW91dCAhPT0gdW5kZWZpbmVkO1xufVxuIiwiaW1wb3J0IG1lbW9pemUgZnJvbSAnbG9kYXNoL21lbW9pemUnO1xuaW1wb3J0IHNvcnRCeSBmcm9tICdsb2Rhc2gvc29ydEJ5JztcbmltcG9ydCB0eXBlIHtXZWlnaHRlZEl0ZW19IGZyb20gJy4vY29tbW9uSXRlbXMnO1xuXG4vKipcbiAqIFNvcnRzIHdlaWdodGVkIGl0ZW1zXG4gKi9cbmV4cG9ydCBjb25zdCBzb3J0V2VpZ2h0ZWRJdGVtcyA9IG1lbW9pemUoZnVuY3Rpb24gc29ydFdlaWdodGVkSXRlbXNJbXBsPFQgZXh0ZW5kcyBXZWlnaHRlZEl0ZW0+KGl0ZW1zOiBUW10pIHtcblx0cmV0dXJuIHNvcnRCeShpdGVtcywgdiA9PiB2LndlaWdodCB8fCAwKTtcbn0pO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMl0hLi9zdHlsZXMuY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsyXSEuL3N0eWxlcy5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHN0eWxlc0luRE9NID0gW107XG5cbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5ET00ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5ET01baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleEJ5SWRlbnRpZmllciA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXSxcbiAgICAgIHN1cHBvcnRzOiBpdGVtWzRdLFxuICAgICAgbGF5ZXI6IGl0ZW1bNV1cbiAgICB9O1xuXG4gICAgaWYgKGluZGV4QnlJZGVudGlmaWVyICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB1cGRhdGVyID0gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLmJ5SW5kZXggPSBpO1xuICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKGksIDAsIHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogdXBkYXRlcixcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuXG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cblxuZnVuY3Rpb24gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgYXBpID0gb3B0aW9ucy5kb21BUEkob3B0aW9ucyk7XG4gIGFwaS51cGRhdGUob2JqKTtcblxuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGFwaS51cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbW92ZSgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gdXBkYXRlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cblxuICAgIHZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcblxuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHN0eWxlc0luRE9NW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRPTVtfaW5kZXhdLnVwZGF0ZXIoKTtcblxuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgbWVtbyA9IHt9O1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cbmZ1bmN0aW9uIGdldFRhcmdldCh0YXJnZXQpIHtcbiAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7IC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG5cbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gIH1cblxuICByZXR1cm4gbWVtb1t0YXJnZXRdO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcblxuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gIH1cblxuICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzKHN0eWxlRWxlbWVudCkge1xuICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG5cbiAgaWYgKG5vbmNlKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcblxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQob2JqLnN1cHBvcnRzLCBcIikge1wiKTtcbiAgfVxuXG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKTtcbiAgfVxuXG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJAbGF5ZXJcIi5jb25jYXQob2JqLmxheWVyLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQob2JqLmxheWVyKSA6IFwiXCIsIFwiIHtcIik7XG4gIH1cblxuICBjc3MgKz0gb2JqLmNzcztcblxuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH0gLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZUVsZW1lbnQucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudCk7XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkb21BUEk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQpIHtcbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCk7XG4gICAgfVxuXG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBpbXBlcml1bS9hdXRoLWNsaWVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAaW1wZXJpdW0vc3RhdGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAdGh4L2NvbnRyb2xzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImRlYnVnXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvY29tcGFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvZmxvd1JpZ2h0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaC9mcFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvZ3JvdXBCeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvbWVtb2l6ZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvbWVyZ2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL3NvcnRCeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtaW5nb1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJxdWVyeXN0cmluZ1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZXNwb25zaXZlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJvdXRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yb3V0ZXItZG9tXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1kZXYtcnVudGltZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJzZW1hbnRpYy11aS1yZWFjdFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiaW1wb3J0IHR5cGUge0ltcGVyaXVtU3RhdGVDbGllbnRNb2R1bGV9IGZyb20gJ0BpbXBlcml1bS9zdGF0ZSc7XG5pbXBvcnQge3VzZU1vYmlsZUxheW91dH0gZnJvbSAnLi9sYXlvdXQvaG9va3MvdXNlTW9iaWxlTGF5b3V0JztcbmltcG9ydCB7d2l0aExheW91dH0gZnJvbSAnLi9sYXlvdXQvd2l0aExheW91dCc7XG5pbXBvcnQge3N0YXRlfSBmcm9tICcuL3N0YXRlJztcbmltcG9ydCB0eXBlIHtJbXBlcml1bUxheW91dENsaWVudE1vZHVsZX0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXlvdXRDbGllbnRNb2R1bGUoKTogSW1wZXJpdW1TdGF0ZUNsaWVudE1vZHVsZSAmIEltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlIHtcblx0cmV0dXJuIHtcblx0XHRuYW1lOiAnQGltcGVyaXVtL2xheW91dCcsXG5cdFx0b3JkZXI6IDMwLFxuXHRcdGhvY3M6IFt3aXRoTGF5b3V0XSxcblx0XHRzdGF0ZSxcblx0XHRsYXlvdXQ6IHtcblx0XHRcdGRhdGFIb29rczogW3VzZU1vYmlsZUxheW91dF0sXG5cdFx0fSxcblx0fTtcbn1cblxuZXhwb3J0IHR5cGUge0xheW91dERhdGF9IGZyb20gJy4vbGF5b3V0L3R5cGVzJztcbmV4cG9ydCB7dXNlTGF5b3V0U3RhdGUsIGFjdGlvbnMgYXMgbGF5b3V0QWN0aW9uc30gZnJvbSAnLi9zdGF0ZSc7XG5leHBvcnQge2NyZWF0ZVBhZ2VzfSBmcm9tICcuL2NvbnRlbnQvY3JlYXRlUGFnZXMnO1xuZXhwb3J0IHR5cGUge0ltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlfSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCB7ZGl2aWRlclNpZGViYXJJdGVtfSBmcm9tICcuL2NvbnRlbnQvZGl2aWRlclNpZGViYXJJdGVtJztcbiJdLCJuYW1lcyI6WyJpc0hvcml6b250YWxQb3NpdGlvbmVkSXRlbSIsInZhbHVlIiwicG9zaXRpb24iLCJzdGlja09uTW9iaWxlIiwiaXNSb3V0ZUl0ZW0iLCJ0byIsImV4YWN0Iiwic3RyaWN0Iiwic2Vuc2l0aXZlIiwidXNlVEZvcm0iLCJkZWJ1ZyIsIkJ1dHRvbiIsIkZvcm0iLCJJY29uIiwiTWVzc2FnZSIsIlBvcHVwIiwiZCIsIkFjdGlvbkZvcm0iLCJpdGVtIiwiZGF0YSIsIm9uSGlkZUZvcm0iLCJpbml0aWFsVmFsdWVzIiwib25TdWJtaXQiLCJzdWJtaXRWYWx1ZXMiLCJlbmFibGVSZWluaXRpYWxpemUiLCJ2YWxpZGF0aW9uU2NoZW1hIiwiaGFzRXJyb3JzIiwiaGFzV2FybmluZ3MiLCJoYW5kbGVTdWJtaXQiLCJoYW5kbGVDaGFuZ2UiLCJ2YWx1ZXMiLCJyZXNldEZvcm0iLCJlcnJvcnMiLCJmaWVsZEVycm9yIiwic2F2ZUJ1dHRvbiIsIk9iamVjdCIsImZvcm0iLCJ1c2VTdGF0ZSIsImdldENvbG9yIiwiZ2V0SWNvbiIsImdldFRleHQiLCJBY3Rpb25Gb3JtU2lkZWJhckl0ZW1Db21wb25lbnQiLCJpc0VkaXQiLCJzZXRJc0VkaXQiLCJpY29uIiwidW5kZWZpbmVkIiwiQWN0aW9uU2lkZWJhckl0ZW1Db21wb25lbnQiLCJvbkNsaWNrIiwiaXNFcXVhbCIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZURpc3BhdGNoIiwiRGF0YUhvb2tzIiwiYWN0aW9ucyIsInNvcnRXZWlnaHRlZEl0ZW1zIiwidXNlQnVpbGRDb250ZW50RGF0YSIsIkhlYWRlciIsIlNpZGViYXJJdGVtV3JhcHBlciIsInN0eWxlcyIsInVzZURlZXBDb21wYXJlTWVtb2l6ZSIsInJlZiIsImN1cnJlbnQiLCJ1c2VEZWVwQ29tcGFyZUVmZmVjdCIsImNhbGxiYWNrIiwiZGVwcyIsIm1hcCIsIkNvbnRlbnRDb21wb25lbnQiLCJwYWdlIiwicGFyYW1zIiwiZGlzcGF0Y2giLCJzdGF0ZVNlbGVjdG9ySG9vayIsInBlcm1pc3Npb25TZWxlY3Rvckhvb2siLCJzZXRQYXJhbXMiLCJjb250ZW50Iiwic2lkZWJhckl0ZW1zIiwic2lkZWJhciIsImxlbmd0aCIsImFjdGlvbnNIZWFkZXIiLCJzYiIsImluZGV4Iiwic2lkZWJhckl0ZW0iLCJwYXJlbnQiLCJ3cmFwcGVyIiwiaGVhZGVyIiwiZnVsbCIsImNvbnRlbnRGdWxsIiwiZGF0YUhvb2tzIiwiQ3VzdG9tU2lkZWJhckl0ZW1Db21wb25lbnQiLCJyZW5kZXIiLCJoZWFkZXJJbmZvIiwidGl0bGUiLCJMaW5rIiwiZ2V0Um91dGVUbyIsIlBsYWluU2lkZWJhckl0ZW0iLCJRdWVyeSIsIkRpdmlkZXIiLCJpc0FjdGlvbkZvcm1TaWRlYmFySXRlbSIsImlzQWN0aW9uU2lkZWJhckl0ZW0iLCJpc0N1c3RvbVNpZGViYXJJdGVtIiwiaXNEaXZpZGVyU2lkZWJhckl0ZW0iLCJwYXJlbnREYXRhIiwidmlzaWJsZSIsInEiLCJ0ZXN0IiwiaXNQYWdlIiwiY3JlYXRlUGFnZXMiLCJyb3V0ZXMiLCJwYWdlcyIsInJlbmRlclJvdXRlUHJvcHNPYmoiLCJrZXlzIiwidHlwZXMiLCJyZWR1Y2UiLCJtZW1vIiwia2V5IiwicGciLCJyZW5kZXJSb3V0ZVByb3BzIiwiZGl2aWRlclNpZGViYXJJdGVtIiwidGV4dCIsImRpdmlkZXIiLCJ1c2VCdWlsZERhdGEiLCJyb3V0ZUl0ZW0iLCJidWlsZERhdGEiLCJpY29uTmFtZSIsImNvbG9yIiwiY29tcG9zZSIsIkZyYWdtZW50IiwidXNlTG9jYXRpb24iLCJFeGVjdXRlRGF0YUhvb2siLCJwYXRobmFtZSIsImhvb2siLCJmbiIsIkFycmF5IiwiaXNBcnJheSIsInJvdXRlTWF0Y2giLCJyb3V0ZVBhcmFtcyIsImRhdGFIb29rIiwiZGgiLCJpbmRleDIiLCJFeGVjdXRlUGVybWlzc2lvbkhvb2siLCJwZXJtaXNzaW9uSG9vayIsInBlcm1zIiwiZm9yRWFjaCIsInBlcm1pc3Npb24iLCJzZXRQZXJtaXNzaW9uIiwicmVzdWx0IiwiUGVybWlzc2lvbkhvb2tzIiwicGVybWlzc2lvbkhvb2tzIiwidXNlQXV0aCIsImNvbXBhY3QiLCJtZXJnZSIsInF1ZXJ5U3RyaW5nIiwidXNlTGF5b3V0U3RhdGUiLCJ1c2VJc0FjdGl2ZVJvdXRlIiwidXNlU2VsZWN0UGVybWlzc2lvbiIsInVzZVNlbGVjdFN0YXRlIiwiaWQiLCJwZXJtaXNzaW9ucyIsInN0YXRlIiwibG9jIiwicm91dGUiLCJwYXRoIiwic3BsaXQiLCJoYXNoIiwic2VhcmNoIiwicGFyc2UiLCJhY3RpdmUiLCJwZXJtaXNzaW9uc1giLCJuZXdEYXRhIiwidXNlUm91dGVNYXRjaCIsInJvdXRlTWF0Y2hPYmplY3QiLCJmbG93UmlnaHQiLCJmaW5hbFNlbGVjdG9ySG9vayIsIkN1c3RvbUxheW91dEl0ZW1Db21wb25lbnQiLCJBY2NvcmRpb24iLCJEcm9wZG93biIsIk1lbnUiLCJEcm9wZG93bkl0ZW0iLCJ2ZXJ0aWNhbCIsImNoaWxkcmVuIiwib3BlbiIsInNldE9wZW4iLCJ2ZXJ0aWNhbERyb3Bkb3duVGl0bGUiLCJldiIsInN0b3BQcm9wYWdhdGlvbiIsInZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZCIsInZlcnRpY2FsRHJvcGRvd25JY29uIiwidmVydGljYWxEcm9wZG93bkNvbnRlbnQiLCJTZWdtZW50IiwibW92ZUl0ZW1zIiwiTGF5b3V0SXRlbUJhciIsIlNlY29uZGFyeU1lbnVUb2dnbGVJdGVtIiwiTGF5b3V0IiwiZm9vdGVyIiwicHJpbWFyeU1lbnUiLCJzdGF0dXNiYXIiLCJzZWNvbmRhcnlNZW51IiwiaXNNb2JpbGUiLCJtZW51T3BlbiIsInNldE1lbnVPcGVuIiwicHJpbWFyeU1lbnVUb2dnbGUiLCJ3ZWlnaHQiLCJwcmltYXJ5TWVudUl0ZW1zIiwiZmlsdGVyIiwidiIsInNlY29uZGFyeU1lbnVJdGVtcyIsIm1lbnUiLCJzZWNvbmRhcnlNZW51Q29tcCIsInNlY29uZGFyeU1lbnVIaWRkZW4iLCJmb290ZXJJdGVtcyIsImZvb3RlckNvbXAiLCJzdGF0dXNiYXJJdGVtcyIsInN0YXR1c2JhckNvbXAiLCJtZW51YmFyIiwiY29udGVudFdyYXBwZXIiLCJzcGxpdFBvc2l0aW9uZWRJdGVtcyIsIkxheW91dEl0ZW1XcmFwcGVyIiwiaXRlbXMiLCJyZXN0IiwiaW1zIiwibGVmdEl0ZW1zIiwicmlnaHRJdGVtcyIsImlzQ3VzdG9tTGF5b3V0SXRlbSIsImlzRHJvcGRvd25MYXlvdXRJdGVtIiwiaXNNZW51TGF5b3V0SXRlbSIsIk1lbnVJdGVtIiwiUGxhaW5JdGVtIiwiYXMiLCJkcm9wZG93biIsIkl0ZW0iLCJsaW5rUGFyYW1ldGVycyIsImxpbmtQYXJhbXMiLCJJdGVtWCIsImljb25Sb3RhdGVkIiwidXNlTWVkaWFRdWVyeSIsInVzZU1vYmlsZUxheW91dCIsImlzTW9iaWxlWCIsInF1ZXJ5Iiwic2V0TW9iaWxlIiwiZ3JvdXBCeSIsInB1bGxJdGVtcyIsInB1bGxlZCIsIm1vdmVUb0tleSIsInB1c2giLCJhZGRJdGVtcyIsIm5ld0l0ZW1zIiwiaXRlbXNNaW51c1B1bGxlZCIsImlzSW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGUiLCJpbml0aWFsTGF5b3V0TW9kdWxlRGF0YSIsInBlcm1pc3Npb25TZWxlY3Rvckhvb2tzIiwid2l0aExheW91dCIsImNsaWVudCIsImxheW91dE1vZHVsZURhdGEiLCJtb2R1bGVzIiwibW9kdWxlIiwibGF5b3V0IiwibGF5b3V0SG9jIiwiV3JhcHBlZCIsImRpc3BsYXlOYW1lIiwibmFtZSIsIldpdGhMYXlvdXQiLCJwcm9wcyIsImNyZWF0ZVNsaWNlSG9vayIsImNyZWF0ZVNsaWNlIiwiaW5pdGlhbFN0YXRlIiwicmVkdWNlcnMiLCJzdCIsImFjdGlvbiIsInBheWxvYWQiLCJsYXlvdXRNb2R1bGUiLCJtZW1vaXplIiwic29ydEJ5Iiwic29ydFdlaWdodGVkSXRlbXNJbXBsIiwibGF5b3V0Q2xpZW50TW9kdWxlIiwib3JkZXIiLCJob2NzIiwibGF5b3V0QWN0aW9ucyJdLCJzb3VyY2VSb290IjoiIn0=
|
|
3620
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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TztBQUNOZCxJQUFBQSxJQUFJLEVBQUUsa0JBREE7QUFFTmUsSUFBQUEsS0FBSyxFQUFFLEVBRkQ7QUFHTkMsSUFBQUEsSUFBSSxFQUFFLENBQUN6QiwwREFBRCxDQUhBO0FBSU41RixJQUFBQSxLQUFLLEVBQUxBLHlDQUpNO0FBS05pRyxJQUFBQSxNQUFNLEVBQUU7QUFDUHhLLE1BQUFBLFNBQVMsRUFBRSxDQUFDb0osMEVBQUQ7QUFESjtBQUxGLEdBQVA7QUFTQTtBQUdEO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvc3R5bGVzLmNzcyIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9zdHlsZXMuY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly8vLi9jb21tb25JdGVtcy50cyIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvQWN0aW9uRm9ybS50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jb21wb25lbnRzL0FjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudC50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jb21wb25lbnRzL0FjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50LnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvQ29udGVudENvbXBvbmVudC50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jb21wb25lbnRzL0N1c3RvbVNpZGViYXJJdGVtQ29tcG9uZW50LnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvSGVhZGVyLnRzeCIsIndlYnBhY2s6Ly8vLi9jb250ZW50L2NvbXBvbmVudHMvUGxhaW5TaWRlYmFySXRlbS50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jb21wb25lbnRzL1NpZGViYXJJdGVtV3JhcHBlci50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9jcmVhdGVQYWdlcy50c3giLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9kaXZpZGVyU2lkZWJhckl0ZW0udHMiLCJ3ZWJwYWNrOi8vLy4vY29udGVudC9ob29rcy91c2VCdWlsZENvbnRlbnREYXRhLnRzIiwid2VicGFjazovLy8uL2NvbnRlbnQvdHlwZXMudHMiLCJ3ZWJwYWNrOi8vLy4vY29udGVudC91dGlscy50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0YWhvb2tzL0RhdGFIb29rcy50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0YWhvb2tzL0V4ZWN1dGVEYXRhSG9vay50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0YWhvb2tzL0V4ZWN1dGVQZXJtaXNzaW9uSG9vay50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0YWhvb2tzL1Blcm1pc3Npb25Ib29rcy50c3giLCJ3ZWJwYWNrOi8vLy4vaG9va3MvdXNlQnVpbGREYXRhLnRzIiwid2VicGFjazovLy8uL2hvb2tzL3VzZUlzQWN0aXZlUm91dGUudHMiLCJ3ZWJwYWNrOi8vLy4vaG9va3MvdXNlU2VsZWN0UGVybWlzc2lvbi50cyIsIndlYnBhY2s6Ly8vLi9ob29rcy91c2VTZWxlY3RTdGF0ZS50cyIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9DdXN0b21MYXlvdXRJdGVtQ29tcG9uZW50LnRzeCIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9Ecm9wZG93bkl0ZW0udHN4Iiwid2VicGFjazovLy8uL2xheW91dC9jb21wb25lbnRzL0xheW91dC50c3giLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L2NvbXBvbmVudHMvTGF5b3V0SXRlbUJhci50c3giLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L2NvbXBvbmVudHMvTGF5b3V0SXRlbVdyYXBwZXIudHN4Iiwid2VicGFjazovLy8uL2xheW91dC9jb21wb25lbnRzL01lbnVJdGVtLnRzeCIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvY29tcG9uZW50cy9QbGFpbkl0ZW0udHN4Iiwid2VicGFjazovLy8uL2xheW91dC9jb21wb25lbnRzL1NlY29uZGFyeU1lbnVUb2dnbGVJdGVtLnRzeCIsIndlYnBhY2s6Ly8vLi9sYXlvdXQvaG9va3MvdXNlTW9iaWxlTGF5b3V0LnRzIiwid2VicGFjazovLy8uL2xheW91dC9tb3ZlSXRlbXMudHMiLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L3R5cGVzLnRzIiwid2VicGFjazovLy8uL2xheW91dC91dGlscy50c3giLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L3dpdGhMYXlvdXQudHN4Iiwid2VicGFjazovLy8uL3N0YXRlLnRzIiwid2VicGFjazovLy8uL3R5cGVzLnRzIiwid2VicGFjazovLy8uL3V0aWxzLnRzIiwid2VicGFjazovLy8uL2NvbnRlbnQvY29tcG9uZW50cy9zdHlsZXMuY3NzP2QxZjUiLCJ3ZWJwYWNrOi8vLy4vbGF5b3V0L2NvbXBvbmVudHMvc3R5bGVzLmNzcz8xNmYwIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGltcGVyaXVtL2F1dGgtY2xpZW50XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGltcGVyaXVtL3N0YXRlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkB0aHgvY29udHJvbHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJkZWJ1Z1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC9jb21wYWN0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibG9kYXNoL2Zsb3dSaWdodFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC9mcFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC9ncm91cEJ5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibG9kYXNoL21lbW9pemVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJsb2Rhc2gvbWVyZ2VcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJsb2Rhc2gvc29ydEJ5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibWluZ29cIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJxdWVyeXN0cmluZ1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZXNwb25zaXZlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3Qtcm91dGVyXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3Qtcm91dGVyLWRvbVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1kZXYtcnVudGltZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInNlbWFudGljLXVpLXJlYWN0XCIiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovLy8uL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX3BhcmVudC0tcWNacXcge1xcblxcdGZsZXg6IDE7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogcm93O1xcblxcdGhlaWdodDogMTAwJTtcXG59XFxuXFxuLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX3dyYXBwZXItLW1ielNpIHtcXG5cXHRmbGV4OiAxO1xcblxcdGZsZXgtYmFzaXM6IGNhbGMoNjUlKTtcXG59XFxuXFxuLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnQtLWZoU1hHIHtcXG5cXHRtYXJnaW46IDAgMC44cmVtIDAuOHJlbSAwLjhyZW07XFxufVxcblxcbi5jb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50RnVsbC0ta1VXM18ge1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXJnaW46IDAgMDtcXG59XFxuXFxuLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2hlYWRlci0tTk9HeWMge1xcblxcdHBhZGRpbmc6IDAuOHJlbSAwLjhyZW0gMCAwLjhyZW07XFxuXFx0bWFyZ2luLWJvdHRvbTogMC44cmVtO1xcbn1cXG5cXG4uY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fc2lkZWJhci0tckxVNVIge1xcblxcdG1pbi13aWR0aDogMjUwcHg7XFxuXFx0cGFkZGluZzogMTBweDtcXG5cXHRvdmVyZmxvdy15OiBhdXRvO1xcblxcdG92ZXJmbG93LXg6IGhpZGRlbjtcXG59XFxuXFxuLmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX3NpZGViYXJJdGVtLS1FeWxnZiB7XFxuXFx0bWFyZ2luLWJvdHRvbTogNXB4O1xcbn1cXG5cXG4uY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fYWN0aW9uc0hlYWRlci0tTjZ6ek0ge1xcblxcdGRpc3BsYXk6IG5vbmU7XFxufVxcblxcbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcXG5cXHQuY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fcGFyZW50LS1xY1pxdyB7XFxuXFx0XFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG5cXHRcXHRoZWlnaHQ6IGF1dG87XFxuXFx0fVxcblxcdC5jb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX193cmFwcGVyLS1tYnpTaSB7XFxuXFx0XFx0Ym9yZGVyLXJpZ2h0OiBub25lO1xcblxcdFxcdHBhZGRpbmctYm90dG9tOiAyMHB4O1xcblxcdH1cXG5cXHQuY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fc2lkZWJhci0tckxVNVIge1xcblxcdFxcdG1pbi13aWR0aDogYXV0bztcXG5cXHR9XFxuXFx0LmNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2FjdGlvbnNIZWFkZXItLU42enpNIHtcXG5cXHRcXHRkaXNwbGF5OiBibG9jaztcXG5cXHRcXHRtYXJnaW4tYm90dG9tOiA1cHg7XFxuXFx0fVxcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9jb250ZW50L2NvbXBvbmVudHMvc3R5bGVzLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtDQUNDLE9BQU87Q0FDUCxhQUFhO0NBQ2IsbUJBQW1CO0NBQ25CLFlBQVk7QUFDYjs7QUFFQTtDQUNDLE9BQU87Q0FDUCxxQkFBcUI7QUFDdEI7O0FBRUE7Q0FDQyw4QkFBOEI7QUFDL0I7O0FBRUE7Q0FDQyxZQUFZO0NBQ1osV0FBVztBQUNaOztBQUVBO0NBQ0MsK0JBQStCO0NBQy9CLHFCQUFxQjtBQUN0Qjs7QUFFQTtDQUNDLGdCQUFnQjtDQUNoQixhQUFhO0NBQ2IsZ0JBQWdCO0NBQ2hCLGtCQUFrQjtBQUNuQjs7QUFFQTtDQUNDLGtCQUFrQjtBQUNuQjs7QUFFQTtDQUNDLGFBQWE7QUFDZDs7QUFFQTtDQUNDO0VBQ0Msc0JBQXNCO0VBQ3RCLFlBQVk7Q0FDYjtDQUNBO0VBQ0Msa0JBQWtCO0VBQ2xCLG9CQUFvQjtDQUNyQjtDQUNBO0VBQ0MsZUFBZTtDQUNoQjtDQUNBO0VBQ0MsY0FBYztFQUNkLGtCQUFrQjtDQUNuQjtBQUNEXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5wYXJlbnQge1xcblxcdGZsZXg6IDE7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogcm93O1xcblxcdGhlaWdodDogMTAwJTtcXG59XFxuXFxuLndyYXBwZXIge1xcblxcdGZsZXg6IDE7XFxuXFx0ZmxleC1iYXNpczogY2FsYyg2NSUpO1xcbn1cXG5cXG4uY29udGVudCB7XFxuXFx0bWFyZ2luOiAwIDAuOHJlbSAwLjhyZW0gMC44cmVtO1xcbn1cXG5cXG4uY29udGVudEZ1bGwge1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXJnaW46IDAgMDtcXG59XFxuXFxuLmhlYWRlciB7XFxuXFx0cGFkZGluZzogMC44cmVtIDAuOHJlbSAwIDAuOHJlbTtcXG5cXHRtYXJnaW4tYm90dG9tOiAwLjhyZW07XFxufVxcblxcbi5zaWRlYmFyIHtcXG5cXHRtaW4td2lkdGg6IDI1MHB4O1xcblxcdHBhZGRpbmc6IDEwcHg7XFxuXFx0b3ZlcmZsb3cteTogYXV0bztcXG5cXHRvdmVyZmxvdy14OiBoaWRkZW47XFxufVxcblxcbi5zaWRlYmFySXRlbSB7XFxuXFx0bWFyZ2luLWJvdHRvbTogNXB4O1xcbn1cXG5cXG4uYWN0aW9uc0hlYWRlciB7XFxuXFx0ZGlzcGxheTogbm9uZTtcXG59XFxuXFxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xcblxcdC5wYXJlbnQge1xcblxcdFxcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuXFx0XFx0aGVpZ2h0OiBhdXRvO1xcblxcdH1cXG5cXHQud3JhcHBlciB7XFxuXFx0XFx0Ym9yZGVyLXJpZ2h0OiBub25lO1xcblxcdFxcdHBhZGRpbmctYm90dG9tOiAyMHB4O1xcblxcdH1cXG5cXHQuc2lkZWJhciB7XFxuXFx0XFx0bWluLXdpZHRoOiBhdXRvO1xcblxcdH1cXG5cXHQuYWN0aW9uc0hlYWRlciB7XFxuXFx0XFx0ZGlzcGxheTogYmxvY2s7XFxuXFx0XFx0bWFyZ2luLWJvdHRvbTogNXB4O1xcblxcdH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5sb2NhbHMgPSB7XG5cdFwicGFyZW50XCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fcGFyZW50LS1xY1pxd1wiLFxuXHRcIndyYXBwZXJcIjogXCJjb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX193cmFwcGVyLS1tYnpTaVwiLFxuXHRcImNvbnRlbnRcIjogXCJjb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50LS1maFNYR1wiLFxuXHRcImNvbnRlbnRGdWxsXCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fY29udGVudEZ1bGwtLWtVVzNfXCIsXG5cdFwiaGVhZGVyXCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19faGVhZGVyLS1OT0d5Y1wiLFxuXHRcInNpZGViYXJcIjogXCJjb250ZW50LWNvbXBvbmVudHMtc3R5bGVzX19zaWRlYmFyLS1yTFU1UlwiLFxuXHRcInNpZGViYXJJdGVtXCI6IFwiY29udGVudC1jb21wb25lbnRzLXN0eWxlc19fc2lkZWJhckl0ZW0tLUV5bGdmXCIsXG5cdFwiYWN0aW9uc0hlYWRlclwiOiBcImNvbnRlbnQtY29tcG9uZW50cy1zdHlsZXNfX2FjdGlvbnNIZWFkZXItLU42enpNXCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLyogTmVlZCB0byBwYXNzIDEwMCUgaGVpZ2h0IGFsbCB0aGUgd2F5IGRvd24gKi9cXG4jcm9vdCB7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcbn1cXG4jcm9vdCA+IGRpdiB7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19wYXJlbnQtLXN3czhPIHtcXG5cXHRtaW4taGVpZ2h0OiAxMDAlO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19fbWVudWJhci0tV01jWG4ge1xcblxcdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19fc3RhdHVzYmFyLS1IYTRmXyB7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19zZWNvbmRhcnlNZW51LS1ieXU2eSB7XFxuXFx0bWluLXdpZHRoOiAyMjBweCAhaW1wb3J0YW50O1xcblxcdHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XFxuXFx0aGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcblxcdG92ZXJmbG93LXg6IGF1dG87IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcblxcdHRyYW5zaXRpb246IG1hcmdpbi1sZWZ0IDAuM3MgZWFzZS1pbi1vdXQ7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3NlY29uZGFyeU1lbnVIaWRkZW4tLWVrN1F6IHtcXG5cXHRtYXJnaW4tbGVmdDogLTIyMHB4ICFpbXBvcnRhbnQ7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnRXcmFwcGVyLS1TYVlHbiB7XFxuXFx0ZmxleDogMTtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuXFx0ZmxleC13cmFwOiBub3dyYXA7XFxuXFx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xcblxcdGJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyAvKiB0aGlzIGlzIGEgc2VnbWVudCwgYW5kIHRoZXkgc2VlbSB0byBoYXZlIGEgMXB4IHdoaXRlIGJvcmRlciBieSBkZWZhdWx0ICovXFxuXFx0b3ZlcmZsb3cteTogYXV0bzsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnQtLUpHRHVXIHtcXG5cXHRmbGV4OiAxOyAvKiBjaGFuZ2VkIHRoaXMgdG8gaGF2ZSBhIGZsZXggb2Ygb25lIGluc3RlYWQgb2YgYXV0byBzbyB0aGUgc2lkZSBtZW51IGRvZXNuJ3QgZ2V0IHNxdWlzaGVkICovXFxuXFx0YWxpZ24tY29udGVudDogZmxleC1zdGFydDtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxuXFx0bWF4LWhlaWdodDogMTAwJTsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxuXFx0b3ZlcmZsb3cteDogaGlkZGVuOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19fZm9vdGVyLS1BN0xTSCB7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duSWNvbi0tVjY5Q3cge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIDtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZC0tYlp5Tk8ge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcXG5cXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyA7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4ubGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duVGl0bGUtLXM2QXNxIHtcXG5cXHRwYWRkaW5nOiAwO1xcblxcdGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25Db250ZW50LS14R0h4YSB7XFxuXFx0cGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcXG5cXHRtYXJnaW46IDAgLTEuMTQyODU3MTRlbSAwIDA7XFxuXFx0Ym9yZGVyLXJhZGl1czogMDtcXG59XFxuXFxuLmxheW91dC1jb21wb25lbnRzLXN0eWxlc19faWNvbi0tR3RsNHQge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGxpbmVhcjtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5sYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX2ljb25Sb3RhdGVkLS1YQjY3WSB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoLTE4MGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNXM7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9sYXlvdXQvY29tcG9uZW50cy9zdHlsZXMuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLDhDQUE4QztBQUM5QztDQUNDLFlBQVk7QUFDYjtBQUNBO0NBQ0MsWUFBWTtBQUNiOztBQUVBO0NBQ0MsZ0JBQWdCO0NBQ2hCLGFBQWE7Q0FDYixzQkFBc0I7QUFDdkI7O0FBRUE7Q0FDQywyQkFBMkI7Q0FDM0Isb0JBQW9CO0FBQ3JCOztBQUVBO0NBQ0Msb0JBQW9CO0NBQ3BCLDJCQUEyQjtBQUM1Qjs7QUFFQTtDQUNDLDJCQUEyQjtDQUMzQixzQkFBc0I7Q0FDdEIsdUJBQXVCO0NBQ3ZCLDJCQUEyQjtDQUMzQixvQkFBb0I7Q0FDcEIsZ0JBQWdCLEVBQUUsOERBQThEO0NBQ2hGLHdDQUF3QztBQUN6Qzs7QUFFQTtDQUNDLDhCQUE4QjtBQUMvQjs7QUFFQTtDQUNDLE9BQU87Q0FDUCxhQUFhO0NBQ2IsbUJBQW1CO0NBQ25CLGlCQUFpQjtDQUNqQixxQkFBcUI7Q0FDckIsc0NBQXNDLEVBQUUsMkVBQTJFO0NBQ25ILGdCQUFnQixFQUFFLDhEQUE4RDtBQUNqRjs7QUFFQTtDQUNDLE9BQU8sRUFBRSw2RkFBNkY7Q0FDdEcseUJBQXlCO0NBQ3pCLFlBQVk7Q0FDWixnQkFBZ0IsRUFBRSw4REFBOEQ7Q0FDaEYsa0JBQWtCLEVBQUUsOERBQThEO0FBQ25GOztBQUVBO0NBQ0Msb0JBQW9CO0NBQ3BCLDJCQUEyQjtBQUM1Qjs7QUFFQTtDQUNDLHVCQUF1QjtDQUN2QiwyQkFBMkI7Q0FDM0IsZUFBZTtBQUNoQjs7QUFFQTtDQUNDLHdCQUF3QjtDQUN4QiwyQkFBMkI7Q0FDM0IsZUFBZTtBQUNoQjs7QUFFQTtDQUNDLFVBQVU7Q0FDVixzQkFBc0I7QUFDdkI7O0FBRUE7Q0FDQyx5QkFBeUI7Q0FDekIsMkJBQTJCO0NBQzNCLGdCQUFnQjtBQUNqQjs7QUFFQTtDQUNDLHVCQUF1QjtDQUN2QixpQ0FBaUM7Q0FDakMsZUFBZTtBQUNoQjs7QUFFQTtDQUNDLDBCQUEwQjtDQUMxQiwwQkFBMEI7Q0FDMUIsZUFBZTtBQUNoQlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIvKiBOZWVkIHRvIHBhc3MgMTAwJSBoZWlnaHQgYWxsIHRoZSB3YXkgZG93biAqL1xcbjpnbG9iYWwoI3Jvb3QpIHtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxufVxcbjpnbG9iYWwoI3Jvb3QpID4gZGl2IHtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxufVxcblxcbi5wYXJlbnQge1xcblxcdG1pbi1oZWlnaHQ6IDEwMCU7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG5cXG4ubWVudWJhciB7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uc3RhdHVzYmFyIHtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5zZWNvbmRhcnlNZW51IHtcXG5cXHRtaW4td2lkdGg6IDIyMHB4ICFpbXBvcnRhbnQ7XFxuXFx0d2lkdGg6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0b3ZlcmZsb3cteDogYXV0bzsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxuXFx0dHJhbnNpdGlvbjogbWFyZ2luLWxlZnQgMC4zcyBlYXNlLWluLW91dDtcXG59XFxuXFxuLnNlY29uZGFyeU1lbnVIaWRkZW4ge1xcblxcdG1hcmdpbi1sZWZ0OiAtMjIwcHggIWltcG9ydGFudDtcXG59XFxuXFxuLmNvbnRlbnRXcmFwcGVyIHtcXG5cXHRmbGV4OiAxO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleC1kaXJlY3Rpb246IHJvdztcXG5cXHRmbGV4LXdyYXA6IG5vd3JhcDtcXG5cXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IC8qIHRoaXMgaXMgYSBzZWdtZW50LCBhbmQgdGhleSBzZWVtIHRvIGhhdmUgYSAxcHggd2hpdGUgYm9yZGVyIGJ5IGRlZmF1bHQgKi9cXG5cXHRvdmVyZmxvdy15OiBhdXRvOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG59XFxuXFxuLmNvbnRlbnQge1xcblxcdGZsZXg6IDE7IC8qIGNoYW5nZWQgdGhpcyB0byBoYXZlIGEgZmxleCBvZiBvbmUgaW5zdGVhZCBvZiBhdXRvIHNvIHRoZSBzaWRlIG1lbnUgZG9lc24ndCBnZXQgc3F1aXNoZWQgKi9cXG5cXHRhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0O1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXgtaGVpZ2h0OiAxMDAlOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG5cXHRvdmVyZmxvdy14OiBoaWRkZW47IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcbn1cXG5cXG4uZm9vdGVyIHtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi52ZXJ0aWNhbERyb3Bkb3duSWNvbiB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgO1xcblxcdGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLnZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZCB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIDtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi52ZXJ0aWNhbERyb3Bkb3duVGl0bGUge1xcblxcdHBhZGRpbmc6IDA7XFxuXFx0Y29sb3I6ICNmZmYgIWltcG9ydGFudDtcXG59XFxuXFxuLnZlcnRpY2FsRHJvcGRvd25Db250ZW50IHtcXG5cXHRwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAtMS4xNDI4NTcxNGVtIDAgMDtcXG5cXHRib3JkZXItcmFkaXVzOiAwO1xcbn1cXG5cXG4uaWNvbiB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgbGluZWFyO1xcblxcdGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLmljb25Sb3RhdGVkIHtcXG5cXHR0cmFuc2Zvcm06IHJvdGF0ZSgtMTgwZGVnKTtcXG5cXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cztcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ubG9jYWxzID0ge1xuXHRcInBhcmVudFwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fcGFyZW50LS1zd3M4T1wiLFxuXHRcIm1lbnViYXJcIjogXCJsYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX21lbnViYXItLVdNY1huXCIsXG5cdFwic3RhdHVzYmFyXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19zdGF0dXNiYXItLUhhNGZfXCIsXG5cdFwic2Vjb25kYXJ5TWVudVwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fc2Vjb25kYXJ5TWVudS0tYnl1NnlcIixcblx0XCJzZWNvbmRhcnlNZW51SGlkZGVuXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19zZWNvbmRhcnlNZW51SGlkZGVuLS1lazdRelwiLFxuXHRcImNvbnRlbnRXcmFwcGVyXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50V3JhcHBlci0tU2FZR25cIixcblx0XCJjb250ZW50XCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50LS1KR0R1V1wiLFxuXHRcImZvb3RlclwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fZm9vdGVyLS1BN0xTSFwiLFxuXHRcInZlcnRpY2FsRHJvcGRvd25JY29uXCI6IFwibGF5b3V0LWNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duSWNvbi0tVjY5Q3dcIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duSWNvblJvdGF0ZWRcIjogXCJsYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZC0tYlp5Tk9cIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duVGl0bGVcIjogXCJsYXlvdXQtY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25UaXRsZS0tczZBc3FcIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duQ29udGVudFwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19fdmVydGljYWxEcm9wZG93bkNvbnRlbnQtLXhHSHhhXCIsXG5cdFwiaWNvblwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19faWNvbi0tR3RsNHRcIixcblx0XCJpY29uUm90YXRlZFwiOiBcImxheW91dC1jb21wb25lbnRzLXN0eWxlc19faWNvblJvdGF0ZWQtLVhCNjdZXCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBcIlwiO1xuICAgICAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBpdGVtWzVdICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpO1xuICAgICAgfVxuXG4gICAgICBjb250ZW50ICs9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG5cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIGkobW9kdWxlcywgbWVkaWEsIGRlZHVwZSwgc3VwcG9ydHMsIGxheWVyKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCB1bmRlZmluZWRdXTtcbiAgICB9XG5cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBpZCA9IHRoaXNba11bMF07XG5cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfayA9IDA7IF9rIDwgbW9kdWxlcy5sZW5ndGg7IF9rKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2tdKTtcblxuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGxheWVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbVs1XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobWVkaWEpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblxuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIFwiLyojIHNvdXJjZVVSTD1cIi5jb25jYXQoY3NzTWFwcGluZy5zb3VyY2VSb290IHx8IFwiXCIpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsImltcG9ydCB0eXBlIHtQZXJtaXNzaW9uU2VsZWN0b3JIb29rLCBTdGF0ZVNlbGVjdG9ySG9vaywgVmlzaWJpbGl0eVF1ZXJ5Rm59IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIERlc2NyaWJlcyBhbiBpdGVtIHRoYXQgY2FuIGhpZGUgaXRzZWxmIGJhc2VkIG9uIHJlZHV4IHN0YXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlzaWJpbGl0eUl0ZW0ge1xuXHRzdGF0ZVNlbGVjdG9ySG9vaz86IFN0YXRlU2VsZWN0b3JIb29rIHwgU3RhdGVTZWxlY3Rvckhvb2tbXTsgLy8gSG9vayBvciBhcnJheSBvZiBob29rcyB0aGF0IHNlbGVjdCBzdGF0ZVxuXHRwZXJtaXNzaW9uU2VsZWN0b3JIb29rPzogUGVybWlzc2lvblNlbGVjdG9ySG9vayB8IFBlcm1pc3Npb25TZWxlY3Rvckhvb2tbXTsgLy8gSG9vayBvciBhcnJheSBvZiBob29rcyB0aGF0IHNlbGVjdCBwZXJtaXNzaW9uc1xuXHR2aXNpYmxlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBWaXNpYmlsaXR5UXVlcnlGbjtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYW4gaXRlbSB3aXRoIG9wdGlvbmFsIHdlaWdodFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdlaWdodGVkSXRlbSB7XG5cdHdlaWdodD86IG51bWJlcjsgLy8gTGFyZ2VyIG51bWJlcnMgbW92ZSByaWdodC9kb3duXG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGFuIGl0ZW0gdGhhdCBsaW5rcyB0byBhIHJvdXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVJdGVtPFQ+IHtcblx0dG8/OiBzdHJpbmcgfCAoKGRhdGE6IFQpID0+IHN0cmluZyk7XG5cdGV4YWN0PzogYm9vbGVhbjtcblx0c3RyaWN0PzogYm9vbGVhbjtcblx0c2Vuc2l0aXZlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYW4gaXRlbSB0aGF0IGNhbiBiZSBwb3NpdGlvbmVkIGhvcml6b250YWxseSBsZWZ0IG9yIHJpZ2h0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSG9yaXpvbnRhbFBvc2l0aW9uZWRJdGVtIHtcblx0cG9zaXRpb24/OiAnbGVmdCcgfCAncmlnaHQnOyAvLyBEZWZhdWx0IGlzIGxlZnRcblx0c3RpY2tPbk1vYmlsZT86IGJvb2xlYW47IC8vIElmIHRydWUsIHdpbGwgbm90IGJlIGhpZGRlbiB3aGVuIGluIG1vYmlsZSBtb2RlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hvcml6b250YWxQb3NpdGlvbmVkSXRlbSh2YWx1ZTogYW55KTogdmFsdWUgaXMgSG9yaXpvbnRhbFBvc2l0aW9uZWRJdGVtIHtcblx0cmV0dXJuICEhKCh2YWx1ZSBhcyBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0pLnBvc2l0aW9uIHx8ICh2YWx1ZSBhcyBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0pLnN0aWNrT25Nb2JpbGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSb3V0ZUl0ZW08VD4odmFsdWU6IGFueSk6IHZhbHVlIGlzIFJvdXRlSXRlbTxUPiB7XG5cdHJldHVybiAhISgodmFsdWUgYXMgUm91dGVJdGVtPFQ+KS50byB8fCAodmFsdWUgYXMgUm91dGVJdGVtPFQ+KS5leGFjdCB8fCAodmFsdWUgYXMgUm91dGVJdGVtPFQ+KS5zdHJpY3QgfHwgKHZhbHVlIGFzIFJvdXRlSXRlbTxUPikuc2Vuc2l0aXZlKTtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IHt1c2VURm9ybX0gZnJvbSAnQHRoeC9jb250cm9scyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtCdXR0b24sIEZvcm0sIEljb24sIE1lc3NhZ2UsIFBvcHVwfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uRm9ybVNpZGViYXJJdGVtLCBDb250ZW50RGF0YX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb250ZW50LmNvbXBvbmVudHMuQWN0aW9uRm9ybScpO1xuXG5pbnRlcmZhY2UgQWN0aW9uRm9ybVByb3BzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdGl0ZW06IEFjdGlvbkZvcm1TaWRlYmFySXRlbTxULCBLPjtcblx0ZGF0YTogQ29udGVudERhdGE8VCwgSz47XG5cdG9uSGlkZUZvcm06ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBY3Rpb25Gb3JtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih7aXRlbSwgZGF0YSwgb25IaWRlRm9ybX06IEFjdGlvbkZvcm1Qcm9wczxULCBLPikge1xuXHQvLyBHZXQgaW5pdGlhbCB2YWx1ZXNcblx0bGV0IGluaXRpYWxWYWx1ZXMgPSB7fTtcblx0aWYgKGl0ZW0uaW5pdGlhbFZhbHVlcykge1xuXHRcdGlmICh0eXBlb2YgaXRlbS5pbml0aWFsVmFsdWVzID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRpbml0aWFsVmFsdWVzID0gaXRlbS5pbml0aWFsVmFsdWVzKGRhdGEpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpbml0aWFsVmFsdWVzID0gaXRlbS5pbml0aWFsVmFsdWVzO1xuXHRcdH1cblx0fVxuXG5cdC8vIFRGb3JtXG5cdGNvbnN0IHtoYXNFcnJvcnMsIGhhc1dhcm5pbmdzLCBoYW5kbGVTdWJtaXQsIGhhbmRsZUNoYW5nZSwgdmFsdWVzLCByZXNldEZvcm0sIGVycm9ycywgZmllbGRFcnJvcn0gPSB1c2VURm9ybSh7XG5cdFx0aW5pdGlhbFZhbHVlcyxcblx0XHRvblN1Ym1pdDogc3VibWl0VmFsdWVzID0+IHtcblx0XHRcdGlmIChpdGVtLm9uU3VibWl0KSB7XG5cdFx0XHRcdGl0ZW0ub25TdWJtaXQoc3VibWl0VmFsdWVzLCBkYXRhKTtcblx0XHRcdH1cblx0XHRcdG9uSGlkZUZvcm0oKTtcblx0XHR9LFxuXHRcdGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZSxcblx0XHR2YWxpZGF0aW9uU2NoZW1hOiBpdGVtLnZhbGlkYXRpb25TY2hlbWEsXG5cdH0pO1xuXG5cdGNvbnN0IHNhdmVCdXR0b24gPSBoYXNXYXJuaW5ncyA/IChcblx0XHQ8UG9wdXBcblx0XHRcdHRyaWdnZXI9e1xuXHRcdFx0XHQ8QnV0dG9uIHBvc2l0aXZlIHR5cGU9XCJzdWJtaXRcIiBmbG9hdGVkPVwicmlnaHRcIiBpY29uIGxhYmVsUG9zaXRpb249XCJsZWZ0XCI+XG5cdFx0XHRcdFx0PEljb24gbmFtZT1cImV4Y2xhbWF0aW9uIGNpcmNsZVwiIGNvbG9yPVwicmVkXCIgLz5cblx0XHRcdFx0XHRTYXZlXG5cdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0fVxuXHRcdFx0Y29udGVudD17PE1lc3NhZ2UgZXJyb3IgbGlzdD17T2JqZWN0LnZhbHVlcyhlcnJvcnMpfSAvPn1cblx0XHRcdG9uPVwiaG92ZXJcIlxuXHRcdC8+XG5cdCkgOiAoXG5cdFx0PEJ1dHRvbiBwb3NpdGl2ZSB0eXBlPVwic3VibWl0XCIgZmxvYXRlZD1cInJpZ2h0XCI+XG5cdFx0XHRTYXZlXG5cdFx0PC9CdXR0b24+XG5cdCk7XG5cblx0Ly8gUmVuZGVyIGZvcm1cblx0cmV0dXJuIChcblx0XHQ8Rm9ybSBlcnJvcj17aGFzRXJyb3JzfSB3YXJuaW5nPXtoYXNXYXJuaW5nc30gb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH0+XG5cdFx0XHR7aXRlbS5mb3JtKHtoYW5kbGVDaGFuZ2UsIHZhbHVlcywgZGF0YSwgZmllbGRFcnJvcn0pfVxuXHRcdFx0e3NhdmVCdXR0b259XG5cdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRvbkNsaWNrPXsoKSA9PiB7XG5cdFx0XHRcdFx0cmVzZXRGb3JtKCk7XG5cdFx0XHRcdFx0b25IaWRlRm9ybSgpO1xuXHRcdFx0XHR9fVxuXHRcdFx0PlxuXHRcdFx0XHRDYW5jZWxcblx0XHRcdDwvQnV0dG9uPlxuXHRcdDwvRm9ybT5cblx0KTtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7dXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uRm9ybVNpZGViYXJJdGVtLCBDb250ZW50RGF0YX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtnZXRDb2xvciwgZ2V0SWNvbiwgZ2V0VGV4dH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtBY3Rpb25Gb3JtfSBmcm9tICcuL0FjdGlvbkZvcm0nO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb250ZW50LmNvbXBvbmVudHMuQWN0aW9uRm9ybVNpZGViYXJJdGVtQ29tcG9uZW50Jyk7XG5cbmludGVyZmFjZSBBY3Rpb25Gb3JtU2lkZWJhckl0ZW1Db21wb25lbnRQcm9wczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4ge1xuXHRpdGVtOiBBY3Rpb25Gb3JtU2lkZWJhckl0ZW08VCwgSz47XG5cdGRhdGE6IENvbnRlbnREYXRhPFQsIEs+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQWN0aW9uRm9ybVNpZGViYXJJdGVtQ29tcG9uZW50PFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih7XG5cdGl0ZW0sXG5cdGRhdGEsXG59OiBBY3Rpb25Gb3JtU2lkZWJhckl0ZW1Db21wb25lbnRQcm9wczxULCBLPikge1xuXHRjb25zdCBbaXNFZGl0LCBzZXRJc0VkaXRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG5cdGlmIChpc0VkaXQpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PEFjdGlvbkZvcm1cblx0XHRcdFx0aXRlbT17aXRlbX1cblx0XHRcdFx0ZGF0YT17ZGF0YX1cblx0XHRcdFx0b25IaWRlRm9ybT17KCkgPT4ge1xuXHRcdFx0XHRcdHNldElzRWRpdChmYWxzZSk7XG5cdFx0XHRcdH19XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH1cblxuXHRjb25zdCBpY29uID0gZ2V0SWNvbihpdGVtLCBkYXRhKTtcblxuXHQvLyBSZW5kZXIgYWN0aW9uIGJ1dHRvblxuXHRyZXR1cm4gKFxuXHRcdDxCdXR0b25cblx0XHRcdGZsdWlkXG5cdFx0XHRjb21wYWN0XG5cdFx0XHRjb2xvcj17Z2V0Q29sb3IoaXRlbSwgZGF0YSl9XG5cdFx0XHRpY29uPXshIWljb259XG5cdFx0XHRsYWJlbFBvc2l0aW9uPXtpY29uID8gJ2xlZnQnIDogdW5kZWZpbmVkfVxuXHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRzZXRJc0VkaXQodHJ1ZSk7XG5cdFx0XHR9fVxuXHRcdD5cblx0XHRcdHtpY29ufVxuXHRcdFx0e2dldFRleHQoaXRlbSwgZGF0YSl9XG5cdFx0PC9CdXR0b24+XG5cdCk7XG59XG4iLCJpbXBvcnQgdHlwZSB7RGVmaW5lUm91dGVPcHRpb25zfSBmcm9tICdAaW1wZXJpdW0vcm91dGVyJztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uU2lkZWJhckl0ZW0sIENvbnRlbnREYXRhfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2dldENvbG9yLCBnZXRJY29uLCBnZXRUZXh0fSBmcm9tICcuLi91dGlscyc7XG5cbmludGVyZmFjZSBBY3Rpb25TaWRlYmFySXRlbUNvbXBvbmVudFByb3BzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdGl0ZW06IEFjdGlvblNpZGViYXJJdGVtPFQsIEs+O1xuXHRkYXRhOiBDb250ZW50RGF0YTxULCBLPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50PFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih7aXRlbSwgZGF0YX06IEFjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50UHJvcHM8VCwgSz4pIHtcblx0Y29uc3QgaWNvbiA9IGdldEljb24oaXRlbSwgZGF0YSk7XG5cblx0cmV0dXJuIChcblx0XHQ8QnV0dG9uXG5cdFx0XHRmbHVpZFxuXHRcdFx0Y29tcGFjdFxuXHRcdFx0Y29sb3I9e2dldENvbG9yKGl0ZW0sIGRhdGEpfVxuXHRcdFx0aWNvbj17ISFpY29ufVxuXHRcdFx0bGFiZWxQb3NpdGlvbj17aWNvbiA/ICdsZWZ0JyA6IHVuZGVmaW5lZH1cblx0XHRcdG9uQ2xpY2s9eygpID0+IHtcblx0XHRcdFx0aXRlbS5vbkNsaWNrKGRhdGEpO1xuXHRcdFx0fX1cblx0XHQ+XG5cdFx0XHR7aWNvbn1cblx0XHRcdHtnZXRUZXh0KGl0ZW0sIGRhdGEpfVxuXHRcdDwvQnV0dG9uPlxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtpc0VxdWFsfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtEZXBlbmRlbmN5TGlzdCwgRWZmZWN0Q2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZURpc3BhdGNofSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQge0RhdGFIb29rc30gZnJvbSAnLi4vLi4vZGF0YWhvb2tzL0RhdGFIb29rcyc7XG5pbXBvcnQge2FjdGlvbnN9IGZyb20gJy4uLy4uL3N0YXRlJztcbmltcG9ydCB7c29ydFdlaWdodGVkSXRlbXN9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7dXNlQnVpbGRDb250ZW50RGF0YX0gZnJvbSAnLi4vaG9va3MvdXNlQnVpbGRDb250ZW50RGF0YSc7XG5pbXBvcnQgdHlwZSB7UGFnZSwgUm91dGVQYXJhbWV0ZXJzfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0hlYWRlcn0gZnJvbSAnLi9IZWFkZXInO1xuaW1wb3J0IHtTaWRlYmFySXRlbVdyYXBwZXJ9IGZyb20gJy4vU2lkZWJhckl0ZW1XcmFwcGVyJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuY3NzJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29udGVudC5jb21wb25lbnRzLkNvbnRlbnRDb21wb25lbnQnKTtcblxuaW50ZXJmYWNlIENvbnRlbnRDb21wb25lbnRQcm9wczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4ge1xuXHRwYWdlOiBQYWdlPFQsIEs+O1xuXHRwYXJhbXM6IFJvdXRlUGFyYW1ldGVyczxUW0tdWydwYXJhbXMnXT47XG59XG5cbmZ1bmN0aW9uIHVzZURlZXBDb21wYXJlTWVtb2l6ZSh2YWx1ZTogYW55KSB7XG5cdGNvbnN0IHJlZiA9IHVzZVJlZigpO1xuXHRpZiAoIXZhbHVlICYmICFyZWYuY3VycmVudCkgcmV0dXJuIHJlZi5jdXJyZW50O1xuXHRpZiAoIWlzRXF1YWwodmFsdWUsIHJlZi5jdXJyZW50KSkge1xuXHRcdHJlZi5jdXJyZW50ID0gdmFsdWU7XG5cdH1cblx0cmV0dXJuIHJlZi5jdXJyZW50O1xufVxuXG5mdW5jdGlvbiB1c2VEZWVwQ29tcGFyZUVmZmVjdChjYWxsYmFjazogRWZmZWN0Q2FsbGJhY2ssIGRlcHM6IERlcGVuZGVuY3lMaXN0KSB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcblx0dXNlRWZmZWN0KGNhbGxiYWNrLCBkZXBzLm1hcCh1c2VEZWVwQ29tcGFyZU1lbW9pemUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENvbnRlbnRDb21wb25lbnQ8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHtwYWdlLCBwYXJhbXN9OiBDb250ZW50Q29tcG9uZW50UHJvcHM8VCwgSz4pIHtcblx0Y29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXHRjb25zdCBkYXRhID0gdXNlQnVpbGRDb250ZW50RGF0YSh7c3RhdGVTZWxlY3Rvckhvb2s6IHBhZ2Uuc3RhdGVTZWxlY3Rvckhvb2ssIHBlcm1pc3Npb25TZWxlY3Rvckhvb2s6IHBhZ2UucGVybWlzc2lvblNlbGVjdG9ySG9vaywgcGFyYW1zfSk7XG5cblx0dXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4ge1xuXHRcdGRpc3BhdGNoKGFjdGlvbnMuc2V0UGFyYW1zKHBhcmFtcykpO1xuXHR9LCBbZGlzcGF0Y2gsIHBhcmFtc10pO1xuXG5cdGNvbnN0IGNvbnRlbnQgPSBwYWdlLmNvbnRlbnQoZGF0YSk7XG5cdGNvbnN0IHNpZGViYXJJdGVtcyA9IHNvcnRXZWlnaHRlZEl0ZW1zKHBhZ2Uuc2lkZWJhciB8fCBbXSk7XG5cblx0Y29uc3Qgc2lkZWJhciA9XG5cdFx0c2lkZWJhckl0ZW1zLmxlbmd0aCA+IDAgPyAoXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT17YCR7c3R5bGVzLnNpZGViYXJ9IGltcGVyaXVtQ29udGVudFNpZGViYXJgfT5cblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9e2Ake3N0eWxlcy5hY3Rpb25zSGVhZGVyfSBpbXBlcml1bUNvbnRlbnRTaWRlYmFySGVhZGVyYH0+XG5cdFx0XHRcdFx0PGgzPkFjdGlvbnM8L2gzPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0e3NpZGViYXJJdGVtcy5tYXAoKHNiLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnNpZGViYXJJdGVtfSBrZXk9e2luZGV4fT5cblx0XHRcdFx0XHRcdFx0PFNpZGViYXJJdGVtV3JhcHBlciBpdGVtPXtzYn0gcGFyYW1zPXtwYXJhbXN9IGRhdGE9e2RhdGF9IC8+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KX1cblx0XHRcdDwvZGl2PlxuXHRcdCkgOiBudWxsO1xuXG5cdHJldHVybiAoXG5cdFx0PGRpdiBjbGFzc05hbWU9e2Ake3N0eWxlcy5wYXJlbnR9IGltcGVyaXVtQ29udGVudFdyYXBwZXJQYXJlbnRgfT5cblx0XHRcdDxkaXYgY2xhc3NOYW1lPXtgJHtzdHlsZXMud3JhcHBlcn0gaW1wZXJpdW1Db250ZW50V3JhcHBlcmB9PlxuXHRcdFx0XHQ8SGVhZGVyIGhlYWRlcj17cGFnZS5oZWFkZXJ9IGRhdGE9e2RhdGF9IC8+XG5cdFx0XHRcdDxkaXYgY2xhc3NOYW1lPXtgJHtzdHlsZXMuY29udGVudH0gaW1wZXJpdW1Db250ZW50ICR7cGFnZS5mdWxsICYmIHN0eWxlcy5jb250ZW50RnVsbH1gfT57Y29udGVudH08L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0e3NpZGViYXJ9XG5cdFx0XHQ8RGF0YUhvb2tzIGRhdGFIb29rcz17cGFnZS5kYXRhSG9va3MgfHwgW119IC8+XG5cdFx0PC9kaXY+XG5cdCk7XG59XG4iLCJpbXBvcnQgdHlwZSB7RGVmaW5lUm91dGVPcHRpb25zfSBmcm9tICdAaW1wZXJpdW0vcm91dGVyJztcbmltcG9ydCB0eXBlIHtDb250ZW50RGF0YSwgQ3VzdG9tU2lkZWJhckl0ZW19IGZyb20gJy4uL3R5cGVzJztcblxuaW50ZXJmYWNlIEN1c3RvbVNpZGViYXJJdGVtQ29tcG9uZW50UHJvcHM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0aXRlbTogQ3VzdG9tU2lkZWJhckl0ZW08VCwgSz47XG5cdGRhdGE6IENvbnRlbnREYXRhPFQsIEs+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3VzdG9tU2lkZWJhckl0ZW1Db21wb25lbnQ8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHtpdGVtLCBkYXRhfTogQ3VzdG9tU2lkZWJhckl0ZW1Db21wb25lbnRQcm9wczxULCBLPikge1xuXHRyZXR1cm4gaXRlbS5yZW5kZXIoZGF0YSk7XG59XG4iLCJpbXBvcnQgdHlwZSB7RGVmaW5lUm91dGVPcHRpb25zfSBmcm9tICdAaW1wZXJpdW0vcm91dGVyJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgdHlwZSB7Q29udGVudERhdGEsIENvbnRlbnRIZWFkZXJ9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuY3NzJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29udGVudC5jb21wb25lbnRzLkhlYWRlcicpO1xuXG5pbnRlcmZhY2UgSGVhZGVyUHJvcHM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0aGVhZGVyOiBDb250ZW50SGVhZGVyPFQsIEs+O1xuXHRkYXRhOiBDb250ZW50RGF0YTxULCBLPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhlYWRlcjxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oe2RhdGEsIGhlYWRlcn06IEhlYWRlclByb3BzPFQsIEs+KSB7XG5cdGlmIChoZWFkZXIpIHtcblx0XHRsZXQgaGVhZGVySW5mbyA9IHtcblx0XHRcdHRpdGxlOiAnJyxcblx0XHR9O1xuXHRcdGlmICh0eXBlb2YgaGVhZGVyID09PSAnc3RyaW5nJykge1xuXHRcdFx0aGVhZGVySW5mby50aXRsZSA9IGhlYWRlcjtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBoZWFkZXIgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGhlYWRlckluZm8gPSBoZWFkZXIoZGF0YSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGhlYWRlckluZm8gPSBoZWFkZXI7XG5cdFx0fVxuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT17YCR7c3R5bGVzLmhlYWRlcn0gaW1wZXJpdW1Db250ZW50SGVhZGVyYH0+XG5cdFx0XHRcdDxoMj57aGVhZGVySW5mby50aXRsZX08L2gyPlxuXHRcdFx0PC9kaXY+XG5cdFx0KTtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IHtMaW5rfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7QnV0dG9ufSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uRm9ybVNpZGViYXJJdGVtLCBBY3Rpb25TaWRlYmFySXRlbSwgQ29udGVudERhdGEsIEN1c3RvbVNpZGViYXJJdGVtLCBEaXZpZGVyU2lkZWJhckl0ZW0sIFNpZGViYXJJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2dldENvbG9yLCBnZXRJY29uLCBnZXRSb3V0ZVRvLCBnZXRUZXh0fSBmcm9tICcuLi91dGlscyc7XG5cbmludGVyZmFjZSBQbGFpblNpZGViYXJJdGVtUHJvcHM8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0aXRlbTogRXhjbHVkZTxTaWRlYmFySXRlbTxULCBLPiwgQ3VzdG9tU2lkZWJhckl0ZW08VCwgSz4gfCBBY3Rpb25TaWRlYmFySXRlbTxULCBLPiB8IEFjdGlvbkZvcm1TaWRlYmFySXRlbTxULCBLPiB8IERpdmlkZXJTaWRlYmFySXRlbTxULCBLPj47XG5cdGRhdGE6IENvbnRlbnREYXRhPFQsIEs+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUGxhaW5TaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oe2l0ZW0sIGRhdGF9OiBQbGFpblNpZGViYXJJdGVtUHJvcHM8VCwgSz4pIHtcblx0Y29uc3QgaWNvbiA9IGdldEljb24oaXRlbSwgZGF0YSk7XG5cblx0cmV0dXJuIChcblx0XHQ8QnV0dG9uIGZsdWlkIGNvbXBhY3QgY29sb3I9e2dldENvbG9yKGl0ZW0sIGRhdGEpfSBpY29uPXshIWljb259IGxhYmVsUG9zaXRpb249e2ljb24gPyAnbGVmdCcgOiB1bmRlZmluZWR9IGFzPXtMaW5rfSB0bz17Z2V0Um91dGVUbyhpdGVtLCBkYXRhKX0+XG5cdFx0XHR7aWNvbn1cblx0XHRcdHtnZXRUZXh0KGl0ZW0sIGRhdGEpfVxuXHRcdDwvQnV0dG9uPlxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RlZmluZVJvdXRlT3B0aW9uc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtRdWVyeX0gZnJvbSAnbWluZ28nO1xuaW1wb3J0IHtEaXZpZGVyfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge3VzZUJ1aWxkQ29udGVudERhdGF9IGZyb20gJy4uL2hvb2tzL3VzZUJ1aWxkQ29udGVudERhdGEnO1xuaW1wb3J0IHR5cGUge0NvbnRlbnREYXRhLCBSb3V0ZVBhcmFtZXRlcnMsIFNpZGViYXJJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2lzQWN0aW9uRm9ybVNpZGViYXJJdGVtLCBpc0FjdGlvblNpZGViYXJJdGVtLCBpc0N1c3RvbVNpZGViYXJJdGVtLCBpc0RpdmlkZXJTaWRlYmFySXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtBY3Rpb25Gb3JtU2lkZWJhckl0ZW1Db21wb25lbnR9IGZyb20gJy4vQWN0aW9uRm9ybVNpZGViYXJJdGVtQ29tcG9uZW50JztcbmltcG9ydCB7QWN0aW9uU2lkZWJhckl0ZW1Db21wb25lbnR9IGZyb20gJy4vQWN0aW9uU2lkZWJhckl0ZW1Db21wb25lbnQnO1xuaW1wb3J0IHtDdXN0b21TaWRlYmFySXRlbUNvbXBvbmVudH0gZnJvbSAnLi9DdXN0b21TaWRlYmFySXRlbUNvbXBvbmVudCc7XG5pbXBvcnQge1BsYWluU2lkZWJhckl0ZW19IGZyb20gJy4vUGxhaW5TaWRlYmFySXRlbSc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbnRlbnQuY29tcG9uZW50cy5TaWRlYmFySXRlbVdyYXBwZXInKTtcblxuaW50ZXJmYWNlIFNpZGViYXJJdGVtV3JhcHBlclByb3BzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG5cdGl0ZW06IFNpZGViYXJJdGVtPFQsIEs+O1xuXHRkYXRhPzogQ29udGVudERhdGE8VCwgSz47XG5cdHBhcmFtczogUm91dGVQYXJhbWV0ZXJzPFRbS11bJ3BhcmFtcyddPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNpZGViYXJJdGVtV3JhcHBlcjxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oe2l0ZW0sIGRhdGE6IHBhcmVudERhdGEsIHBhcmFtc306IFNpZGViYXJJdGVtV3JhcHBlclByb3BzPFQsIEs+KSB7XG5cdGNvbnN0IGRhdGEgPSB1c2VCdWlsZENvbnRlbnREYXRhKHtcblx0XHRkYXRhOiBwYXJlbnREYXRhLFxuXHRcdHN0YXRlU2VsZWN0b3JIb29rOiBpdGVtLnN0YXRlU2VsZWN0b3JIb29rLFxuXHRcdHBlcm1pc3Npb25TZWxlY3Rvckhvb2s6IGl0ZW0ucGVybWlzc2lvblNlbGVjdG9ySG9vayxcblx0XHRwYXJhbXMsXG5cdH0pO1xuXG5cdC8vIENoZWNrIGlmIHZpc2libGVcblx0aWYgKGl0ZW0udmlzaWJsZSkge1xuXHRcdGlmICh0eXBlb2YgaXRlbS52aXNpYmxlID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRpZiAoIWl0ZW0udmlzaWJsZShkYXRhKSkgcmV0dXJuIG51bGw7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHEgPSBuZXcgUXVlcnkoaXRlbS52aXNpYmxlIHx8IHt9KTtcblx0XHRcdGlmICghcS50ZXN0KGRhdGEpKSByZXR1cm4gbnVsbDtcblx0XHR9XG5cdH1cblxuXHRpZiAoaXNDdXN0b21TaWRlYmFySXRlbShpdGVtKSkge1xuXHRcdHJldHVybiA8Q3VzdG9tU2lkZWJhckl0ZW1Db21wb25lbnQgaXRlbT17aXRlbX0gZGF0YT17ZGF0YX0gLz47XG5cdH1cblxuXHRpZiAoaXNBY3Rpb25TaWRlYmFySXRlbShpdGVtKSkge1xuXHRcdHJldHVybiA8QWN0aW9uU2lkZWJhckl0ZW1Db21wb25lbnQgaXRlbT17aXRlbX0gZGF0YT17ZGF0YX0gLz47XG5cdH1cblxuXHRpZiAoaXNBY3Rpb25Gb3JtU2lkZWJhckl0ZW0oaXRlbSkpIHtcblx0XHRyZXR1cm4gPEFjdGlvbkZvcm1TaWRlYmFySXRlbUNvbXBvbmVudCBpdGVtPXtpdGVtfSBkYXRhPXtkYXRhfSAvPjtcblx0fVxuXG5cdGlmIChpc0RpdmlkZXJTaWRlYmFySXRlbShpdGVtKSkge1xuXHRcdHJldHVybiA8RGl2aWRlciAvPjtcblx0fVxuXG5cdC8vIEB0cy1pZ25vcmUgVGhlc2UgdHlwZXMgc2hvdWxkIHdvcmssIG5vdCBzdXJlIHdoeSBpdCdzIG5vdC4gUnVudGltZSBjb2RlIGlzIGZpbmUuXG5cdHJldHVybiA8UGxhaW5TaWRlYmFySXRlbSBpdGVtPXtpdGVtfSBkYXRhPXtkYXRhfSAvPjtcbn1cbiIsImltcG9ydCB0eXBlIHtSb3V0ZXMsIERlZmluZVJvdXRlT3B0aW9ucywgS2V5ZWRSb3V0ZVJlbmRlckZuc30gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtDb250ZW50Q29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvQ29udGVudENvbXBvbmVudCc7XG5pbXBvcnQgdHlwZSB7UGFnZXMsIFJvdXRlUGFyYW1ldGVyc30gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge2lzUGFnZX0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbnRlbnQuY3JlYXRlUGFnZXMnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhZ2VzPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnM+KHJvdXRlczogUm91dGVzPFQ+LCBwYWdlczogUGFnZXM8VD4pIHtcblx0Y29uc3QgcmVuZGVyUm91dGVQcm9wc09iaiA9IE9iamVjdC5rZXlzKHJvdXRlcy50eXBlcykucmVkdWNlKChtZW1vLCBrZXkpID0+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4ubWVtbyxcblx0XHRcdFtrZXldOiAocGFyYW1zOiBSb3V0ZVBhcmFtZXRlcnM8VFt0eXBlb2Yga2V5XVsncGFyYW1zJ10+KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHBnID0gcGFnZXNba2V5XTtcblx0XHRcdFx0aWYgKGlzUGFnZShwZykpIHtcblx0XHRcdFx0XHRyZXR1cm4gPENvbnRlbnRDb21wb25lbnQgcGFnZT17cGd9IHBhcmFtcz17cGFyYW1zfSAvPjtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdDxDb250ZW50Q29tcG9uZW50XG5cdFx0XHRcdFx0XHRwYWdlPXt7XG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IHBnLFxuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdHBhcmFtcz17cGFyYW1zfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdH07XG5cdH0sIHt9IGFzIEtleWVkUm91dGVSZW5kZXJGbnM8VD4pO1xuXG5cdHJldHVybiByb3V0ZXMucmVuZGVyUm91dGVQcm9wcyhyZW5kZXJSb3V0ZVByb3BzT2JqKTtcbn1cbiIsImltcG9ydCB0eXBlIHtEaXZpZGVyU2lkZWJhckl0ZW19IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZGl2aWRlclNpZGViYXJJdGVtOiBEaXZpZGVyU2lkZWJhckl0ZW08YW55LCBhbnk+ID0ge1xuXHR0ZXh0OiAnJyxcblx0ZGl2aWRlcjogdHJ1ZSxcbn07XG4iLCJpbXBvcnQgdHlwZSB7RGVmaW5lUm91dGVPcHRpb25zfSBmcm9tICdAaW1wZXJpdW0vcm91dGVyJztcbmltcG9ydCB0eXBlIHtVc2VCdWlsZERhdGFQYXJhbXN9IGZyb20gJy4uLy4uL2hvb2tzL3VzZUJ1aWxkRGF0YSc7XG5pbXBvcnQge3VzZUJ1aWxkRGF0YX0gZnJvbSAnLi4vLi4vaG9va3MvdXNlQnVpbGREYXRhJztcbmltcG9ydCB0eXBlIHtDb250ZW50RGF0YSwgUm91dGVQYXJhbWV0ZXJzfSBmcm9tICcuLi90eXBlcyc7XG5cbmludGVyZmFjZSBVc2VCdWlsZENvbnRlbnREYXRhUGFyYW1zPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiBleHRlbmRzIFVzZUJ1aWxkRGF0YVBhcmFtcyB7XG5cdGRhdGE/OiBDb250ZW50RGF0YTxULCBLPjtcblx0cGFyYW1zOiBSb3V0ZVBhcmFtZXRlcnM8VFtLXVsncGFyYW1zJ10+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQnVpbGRDb250ZW50RGF0YTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oe1xuXHRkYXRhLFxuXHRzdGF0ZVNlbGVjdG9ySG9vayxcblx0cGVybWlzc2lvblNlbGVjdG9ySG9vayxcblx0cm91dGVJdGVtLFxuXHRwYXJhbXMsXG59OiBVc2VCdWlsZENvbnRlbnREYXRhUGFyYW1zPFQsIEs+KSB7XG5cdGNvbnN0IGJ1aWxkRGF0YSA9IHVzZUJ1aWxkRGF0YSh7ZGF0YSwgc3RhdGVTZWxlY3Rvckhvb2ssIHBlcm1pc3Npb25TZWxlY3Rvckhvb2ssIHJvdXRlSXRlbX0pO1xuXHRyZXR1cm4ge1xuXHRcdC4uLmJ1aWxkRGF0YSxcblx0XHRwYXJhbXMsXG5cdH07XG59XG4iLCJpbXBvcnQgdHlwZSB7RGVmaW5lUm91dGVPcHRpb25zLCBQYXJhbWV0ZXJzRnJvbUFzc2VydGlvbn0gZnJvbSAnQGltcGVyaXVtL3JvdXRlcic7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7U2VtYW50aWNDT0xPUlMsIFNlbWFudGljSUNPTlN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtSb3V0ZUl0ZW0sIFZpc2liaWxpdHlJdGVtLCBXZWlnaHRlZEl0ZW19IGZyb20gJy4uL2NvbW1vbkl0ZW1zJztcbmltcG9ydCB0eXBlIHtEYXRhSG9va0l0ZW19IGZyb20gJy4uL2RhdGFob29rcy90eXBlcyc7XG5pbXBvcnQgdHlwZSB7RGF0YSwgUGVybWlzc2lvblNlbGVjdG9ySG9vaywgU3RhdGVTZWxlY3Rvckhvb2t9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgUm91dGVQYXJhbWV0ZXJzPFQgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXSB8IHVuZGVmaW5lZD4gPSBUIGV4dGVuZHMgcmVhZG9ubHkgc3RyaW5nW10gPyBQYXJhbWV0ZXJzRnJvbUFzc2VydGlvbjxUPiA6IG5ldmVyO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnREYXRhPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiBleHRlbmRzIERhdGEge1xuXHRwYXJhbXM6IFJvdXRlUGFyYW1ldGVyczxUW0tdWydwYXJhbXMnXT47XG59XG5cbmV4cG9ydCB0eXBlIENvbnRlbnQ8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+ID0gKGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSA9PiBKU1guRWxlbWVudDtcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IGV4dGVuZHMgV2VpZ2h0ZWRJdGVtLCBWaXNpYmlsaXR5SXRlbSB7XG5cdHRleHQ6IHN0cmluZyB8ICgoZGF0YTogQ29udGVudERhdGE8VCwgSz4pID0+IHN0cmluZyk7XG5cdGljb24/OiBTZW1hbnRpY0lDT05TIHwgKChkYXRhOiBDb250ZW50RGF0YTxULCBLPikgPT4gU2VtYW50aWNJQ09OUyk7XG5cdGNvbG9yPzogU2VtYW50aWNDT0xPUlMgfCAoKGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSA9PiBTZW1hbnRpY0NPTE9SUyk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGl2aWRlclNpZGViYXJJdGVtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiBleHRlbmRzIEJhc2VTaWRlYmFySXRlbTxULCBLPiB7XG5cdGRpdmlkZXI6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IGV4dGVuZHMgQmFzZVNpZGViYXJJdGVtPFQsIEs+IHtcblx0b25DbGljazogKGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSA9PiB2b2lkO1xufVxuXG5pbnRlcmZhY2UgQWN0aW9uRm9ybVNpZGViYXJJdGVtRm9ybVBhcmFtczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4ge1xuXHR2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cdGhhbmRsZUNoYW5nZTogKGU6IFJlYWN0LkNoYW5nZUV2ZW50PGFueT4pID0+IHZvaWQ7XG5cdGZpZWxkRXJyb3I6IChmaWVsZE5hbWU6IHN0cmluZyB8IG51bWJlcikgPT4gYm9vbGVhbjtcblx0ZGF0YTogQ29udGVudERhdGE8VCwgSz47XG59XG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkZvcm1TaWRlYmFySXRlbTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4gZXh0ZW5kcyBCYXNlU2lkZWJhckl0ZW08VCwgSz4ge1xuXHRmb3JtOiAocGFyYW1zOiBBY3Rpb25Gb3JtU2lkZWJhckl0ZW1Gb3JtUGFyYW1zPFQsIEs+KSA9PiBKU1guRWxlbWVudCB8IG51bGw7XG5cdGluaXRpYWxWYWx1ZXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgKChkYXRhOiBDb250ZW50RGF0YTxULCBLPikgPT4gUmVjb3JkPHN0cmluZywgYW55Pik7XG5cdG9uU3VibWl0PzogKHZhbHVlczogUmVjb3JkPHN0cmluZywgYW55PiwgZGF0YTogQ29udGVudERhdGE8VCwgSz4pID0+IHZvaWQ7XG5cdHZhbGlkYXRpb25TY2hlbWE/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IGV4dGVuZHMgV2VpZ2h0ZWRJdGVtLCBWaXNpYmlsaXR5SXRlbSB7XG5cdHJlbmRlcjogKGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSA9PiBKU1guRWxlbWVudCB8IG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIFNpZGViYXJJdGVtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9XG5cdHwgKEJhc2VTaWRlYmFySXRlbTxULCBLPiAmIFJvdXRlSXRlbTxDb250ZW50RGF0YTxULCBLPj4pXG5cdHwgQWN0aW9uU2lkZWJhckl0ZW08VCwgSz5cblx0fCBDdXN0b21TaWRlYmFySXRlbTxULCBLPlxuXHR8IEFjdGlvbkZvcm1TaWRlYmFySXRlbTxULCBLPlxuXHR8IERpdmlkZXJTaWRlYmFySXRlbTxULCBLPjtcblxuZXhwb3J0IHR5cGUgQ29udGVudEhlYWRlcjxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4gPVxuXHR8IHN0cmluZ1xuXHR8IHt0aXRsZTogc3RyaW5nOyBpY29uPzogc3RyaW5nfSAvLyBUT0RPIGljb24gc2hvdWxkIHByb2JhYmx5IGJlIFNlbWFudGljSUNPTlNcblx0fCAoKGRhdGE6IENvbnRlbnREYXRhPFQsIEs+KSA9PiB7dGl0bGU6IHN0cmluZzsgaWNvbj86IHN0cmluZ30pXG5cdHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2U8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+IHtcblx0ZGF0YUhvb2tzPzogRGF0YUhvb2tJdGVtW107XG5cdHN0YXRlU2VsZWN0b3JIb29rPzogU3RhdGVTZWxlY3Rvckhvb2sgfCBTdGF0ZVNlbGVjdG9ySG9va1tdO1xuXHRwZXJtaXNzaW9uU2VsZWN0b3JIb29rPzogUGVybWlzc2lvblNlbGVjdG9ySG9vayB8IFBlcm1pc3Npb25TZWxlY3Rvckhvb2tbXTtcblx0Y29udGVudDogQ29udGVudDxULCBLPjtcblx0aGVhZGVyPzogQ29udGVudEhlYWRlcjxULCBLPjtcblx0c2lkZWJhcj86IFNpZGViYXJJdGVtPFQsIEs+W107XG5cdGZ1bGw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBQYWdlczxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zPiA9IHtcblx0W2tleSBpbiBrZXlvZiBUXTogUGFnZTxULCBrZXk+IHwgQ29udGVudDxULCBrZXk+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGFnZTxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4odmFsdWU6IGFueSk6IHZhbHVlIGlzIFBhZ2U8VCwgSz4ge1xuXHRyZXR1cm4gISEodmFsdWUgYXMgUGFnZTxULCBLPikuY29udGVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWN0aW9uU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBBY3Rpb25TaWRlYmFySXRlbTxULCBLPiB7XG5cdHJldHVybiAhISh2YWx1ZSBhcyBBY3Rpb25TaWRlYmFySXRlbTxULCBLPikub25DbGljaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWN0aW9uRm9ybVNpZGViYXJJdGVtPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPih2YWx1ZTogYW55KTogdmFsdWUgaXMgQWN0aW9uRm9ybVNpZGViYXJJdGVtPFQsIEs+IHtcblx0cmV0dXJuICEhKHZhbHVlIGFzIEFjdGlvbkZvcm1TaWRlYmFySXRlbTxULCBLPikuZm9ybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ3VzdG9tU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBDdXN0b21TaWRlYmFySXRlbTxULCBLPiB7XG5cdHJldHVybiAhISh2YWx1ZSBhcyBDdXN0b21TaWRlYmFySXRlbTxULCBLPikucmVuZGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEaXZpZGVyU2lkZWJhckl0ZW08VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBEaXZpZGVyU2lkZWJhckl0ZW08VCwgSz4ge1xuXHRyZXR1cm4gKHZhbHVlIGFzIERpdmlkZXJTaWRlYmFySXRlbTxULCBLPikuZGl2aWRlcjtcbn1cbiIsImltcG9ydCB0eXBlIHtEZWZpbmVSb3V0ZU9wdGlvbnN9IGZyb20gJ0BpbXBlcml1bS9yb3V0ZXInO1xuaW1wb3J0IHtJY29uLCBTZW1hbnRpY0NPTE9SU30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge1JvdXRlSXRlbX0gZnJvbSAnLi4vY29tbW9uSXRlbXMnO1xuaW1wb3J0IHR5cGUge0Jhc2VTaWRlYmFySXRlbSwgQ29udGVudERhdGF9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SWNvbjxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oaXRlbTogQmFzZVNpZGViYXJJdGVtPFQsIEs+LCBkYXRhOiBDb250ZW50RGF0YTxULCBLPikge1xuXHRpZiAoaXRlbS5pY29uKSB7XG5cdFx0Y29uc3QgaWNvbk5hbWUgPSB0eXBlb2YgaXRlbS5pY29uID09PSAnZnVuY3Rpb24nID8gaXRlbS5pY29uKGRhdGEpIDogaXRlbS5pY29uO1xuXHRcdHJldHVybiA8SWNvbiBuYW1lPXtpY29uTmFtZX0gLz47XG5cdH1cblx0cmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZVRvPFQgZXh0ZW5kcyBEZWZpbmVSb3V0ZU9wdGlvbnMsIEsgZXh0ZW5kcyBrZXlvZiBUPihpdGVtOiBSb3V0ZUl0ZW08Q29udGVudERhdGE8VCwgSz4+LCBkYXRhOiBDb250ZW50RGF0YTxULCBLPikge1xuXHRpZiAoaXRlbS50bykge1xuXHRcdHJldHVybiB0eXBlb2YgaXRlbS50byA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW0udG8oZGF0YSkgOiBpdGVtLnRvO1xuXHR9XG5cdHJldHVybiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHQ8VCBleHRlbmRzIERlZmluZVJvdXRlT3B0aW9ucywgSyBleHRlbmRzIGtleW9mIFQ+KGl0ZW06IEJhc2VTaWRlYmFySXRlbTxULCBLPiwgZGF0YTogQ29udGVudERhdGE8VCwgSz4pIHtcblx0cmV0dXJuIHR5cGVvZiBpdGVtLnRleHQgPT09ICdmdW5jdGlvbicgPyBpdGVtLnRleHQoZGF0YSkgOiBpdGVtLnRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xvcjxUIGV4dGVuZHMgRGVmaW5lUm91dGVPcHRpb25zLCBLIGV4dGVuZHMga2V5b2YgVD4oaXRlbTogQmFzZVNpZGViYXJJdGVtPFQsIEs+LCBkYXRhOiBDb250ZW50RGF0YTxULCBLPik6IFNlbWFudGljQ09MT1JTIHtcblx0aWYgKCFpdGVtLmNvbG9yKSByZXR1cm4gJ2JsdWUnO1xuXHRyZXR1cm4gdHlwZW9mIGl0ZW0uY29sb3IgPT09ICdmdW5jdGlvbicgPyBpdGVtLmNvbG9yKGRhdGEpIDogaXRlbS5jb2xvcjtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge2NvbXBvc2V9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQge0ZyYWdtZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZUxvY2F0aW9ufSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7RXhlY3V0ZURhdGFIb29rfSBmcm9tICcuL0V4ZWN1dGVEYXRhSG9vayc7XG5pbXBvcnQgdHlwZSB7RGF0YUhvb2tJdGVtfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuZGF0YWhvb2tzLkRhdGFIb29rcycpO1xuXG5pbnRlcmZhY2UgRGF0YUhvb2tzUHJvcHMge1xuXHRkYXRhSG9va3M6IERhdGFIb29rSXRlbVtdO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgbGF5b3V0IGRhdGEgaG9va3MuIFRoZXNlIGhvb2tzIHNob3VsZCByZXR1cm4gbm90aGluZy4gQWxsIGludGVyYWN0aW9uIHNob3VsZCBiZSBpbiBzaWRlIGVmZmVjdHMsIHVzdWFsbHkgcmV0cmlldmluZyBkYXRhIGFuZCBzZXR0aW5nIFJlZHV4IHN0YXRlLlxuICogQHBhcmFtIGRhdGFIb29rc1xuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEYXRhSG9va3Moe2RhdGFIb29rc306IERhdGFIb29rc1Byb3BzKSB7XG5cdGNvbnN0IHtwYXRobmFtZX0gPSB1c2VMb2NhdGlvbigpO1xuXG5cdHJldHVybiAoXG5cdFx0PD5cblx0XHRcdHtkYXRhSG9va3MubWFwKChob29rLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIGhvb2sgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0XHRcdFx0cmV0dXJuIDxFeGVjdXRlRGF0YUhvb2sga2V5PXtpbmRleH0gZGF0YUhvb2s9e2hvb2t9IC8+O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGZuID0gQXJyYXkuaXNBcnJheShob29rLnJvdXRlTWF0Y2gpID8gY29tcG9zZShob29rLnJvdXRlTWF0Y2gpIDogaG9vay5yb3V0ZU1hdGNoO1xuXHRcdFx0XHRjb25zdCByb3V0ZVBhcmFtcyA9IGZuKHBhdGhuYW1lKTtcblx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoaG9vay5kYXRhSG9vaykpIHtcblx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRcdFx0XHRcdFx0PEZyYWdtZW50IGtleT17aW5kZXh9PlxuXHRcdFx0XHRcdFx0XHR7aG9vay5kYXRhSG9vay5tYXAoKGRoLCBpbmRleDIpID0+IHtcblx0XHRcdFx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIDxFeGVjdXRlRGF0YUhvb2sga2V5PXtpbmRleDJ9IGRhdGFIb29rPXtkaH0gcm91dGVQYXJhbXM9e3JvdXRlUGFyYW1zfSAvPjtcblx0XHRcdFx0XHRcdFx0fSl9XG5cdFx0XHRcdFx0XHQ8L0ZyYWdtZW50PlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRcdFx0XHRyZXR1cm4gPEV4ZWN1dGVEYXRhSG9vayBkYXRhSG9vaz17aG9vay5kYXRhSG9va30ga2V5PXtpbmRleH0gcm91dGVQYXJhbXM9e3JvdXRlUGFyYW1zfSAvPjtcblx0XHRcdH0pfVxuXHRcdDwvPlxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RhdGFIb29rfSBmcm9tICcuL3R5cGVzJztcblxuaW50ZXJmYWNlIEV4ZWN1dGVEYXRhSG9va1Byb3BzIHtcblx0ZGF0YUhvb2s6IERhdGFIb29rO1xuXHRyb3V0ZVBhcmFtcz86IGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEV4ZWN1dGVEYXRhSG9vayh7ZGF0YUhvb2ssIHJvdXRlUGFyYW1zfTogRXhlY3V0ZURhdGFIb29rUHJvcHMpIHtcblx0ZGF0YUhvb2socm91dGVQYXJhbXMpO1xuXHRyZXR1cm4gbnVsbDtcbn1cbiIsImltcG9ydCB7dXNlRWZmZWN0fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZURpc3BhdGNofSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQge2FjdGlvbnN9IGZyb20gJy4uL3N0YXRlJztcbmltcG9ydCB0eXBlIHtQZXJtaXNzaW9uU2VsZWN0b3JIb29rfSBmcm9tICcuLi90eXBlcyc7XG5cbmludGVyZmFjZSBFeGVjdXRlUGVybWlzc2lvbkhvb2tQcm9wcyB7XG5cdHBlcm1pc3Npb25Ib29rOiBQZXJtaXNzaW9uU2VsZWN0b3JIb29rO1xuXHRyb3V0ZVBhcmFtcz86IGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEV4ZWN1dGVQZXJtaXNzaW9uSG9vayh7cGVybWlzc2lvbkhvb2ssIHJvdXRlUGFyYW1zfTogRXhlY3V0ZVBlcm1pc3Npb25Ib29rUHJvcHMpIHtcblx0Y29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXHRjb25zdCBwZXJtcyA9IHBlcm1pc3Npb25Ib29rKHJvdXRlUGFyYW1zKTtcblxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdE9iamVjdC5rZXlzKHBlcm1zKS5mb3JFYWNoKHBlcm1pc3Npb24gPT4ge1xuXHRcdFx0ZGlzcGF0Y2goYWN0aW9ucy5zZXRQZXJtaXNzaW9uKHtwZXJtaXNzaW9uLCByZXN1bHQ6IHBlcm1zW3Blcm1pc3Npb25dfSkpO1xuXHRcdH0pO1xuXHR9LCBbZGlzcGF0Y2gsIHBlcm1zXSk7XG5cblx0cmV0dXJuIG51bGw7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHR5cGUge1Blcm1pc3Npb25TZWxlY3Rvckhvb2t9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7RXhlY3V0ZVBlcm1pc3Npb25Ib29rfSBmcm9tICcuL0V4ZWN1dGVQZXJtaXNzaW9uSG9vayc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmRhdGFob29rcy5QZXJtaXNzaW9uSG9va3MnKTtcblxuaW50ZXJmYWNlIFBlcm1pc3Npb25Ib29rc1Byb3BzIHtcblx0cGVybWlzc2lvbkhvb2tzOiBQZXJtaXNzaW9uU2VsZWN0b3JIb29rW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBQZXJtaXNzaW9uSG9va3Moe3Blcm1pc3Npb25Ib29rc306IFBlcm1pc3Npb25Ib29rc1Byb3BzKSB7XG5cdHJldHVybiAoXG5cdFx0PD5cblx0XHRcdHtwZXJtaXNzaW9uSG9va3MubWFwKChob29rLCBpbmRleCkgPT4ge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0XHRcdHJldHVybiA8RXhlY3V0ZVBlcm1pc3Npb25Ib29rIGtleT17aW5kZXh9IHBlcm1pc3Npb25Ib29rPXtob29rfSAvPjtcblx0XHRcdH0pfVxuXHRcdDwvPlxuXHQpO1xufVxuIiwiaW1wb3J0IHt1c2VBdXRofSBmcm9tICdAaW1wZXJpdW0vYXV0aC1jbGllbnQnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB0eXBlIHtMb2NhdGlvbn0gZnJvbSAnaGlzdG9yeSc7XG5pbXBvcnQgY29tcGFjdCBmcm9tICdsb2Rhc2gvY29tcGFjdCc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoL21lcmdlJztcbmltcG9ydCBxdWVyeVN0cmluZyBmcm9tICdxdWVyeXN0cmluZyc7XG5pbXBvcnQge3VzZUxvY2F0aW9ufSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7dXNlTGF5b3V0U3RhdGV9IGZyb20gJy4uL3N0YXRlJztcbmltcG9ydCB0eXBlIHtEYXRhLCBQZXJtaXNzaW9uU2VsZWN0b3JIb29rLCBTdGF0ZVNlbGVjdG9ySG9va30gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHt1c2VJc0FjdGl2ZVJvdXRlfSBmcm9tICcuL3VzZUlzQWN0aXZlUm91dGUnO1xuaW1wb3J0IHt1c2VTZWxlY3RQZXJtaXNzaW9ufSBmcm9tICcuL3VzZVNlbGVjdFBlcm1pc3Npb24nO1xuaW1wb3J0IHt1c2VTZWxlY3RTdGF0ZX0gZnJvbSAnLi91c2VTZWxlY3RTdGF0ZSc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0Lmhvb2tzLnVzZUJ1aWxkRGF0YScpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUJ1aWxkRGF0YVBhcmFtcyB7XG5cdGRhdGE/OiBEYXRhO1xuXHRyb3V0ZUl0ZW0/OiBhbnk7XG5cdHN0YXRlU2VsZWN0b3JIb29rPzogU3RhdGVTZWxlY3Rvckhvb2sgfCBTdGF0ZVNlbGVjdG9ySG9va1tdO1xuXHRwZXJtaXNzaW9uU2VsZWN0b3JIb29rPzogUGVybWlzc2lvblNlbGVjdG9ySG9vayB8IFBlcm1pc3Npb25TZWxlY3Rvckhvb2tbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUJ1aWxkRGF0YSh7c3RhdGVTZWxlY3Rvckhvb2ssIHBlcm1pc3Npb25TZWxlY3Rvckhvb2ssIGRhdGEsIHJvdXRlSXRlbX06IFVzZUJ1aWxkRGF0YVBhcmFtcykge1xuXHRjb25zdCB7aWR9ID0gdXNlQXV0aCgpO1xuXHRjb25zdCB7cGVybWlzc2lvbnN9ID0gdXNlTGF5b3V0U3RhdGUoKTtcblx0Y29uc3Qgc3RhdGUgPSB1c2VTZWxlY3RTdGF0ZShzdGF0ZVNlbGVjdG9ySG9vayk7XG5cdGNvbnN0IGxvYyA9IHVzZUxvY2F0aW9uKCkgYXMgTG9jYXRpb247XG5cdGNvbnN0IHJvdXRlID0ge1xuXHRcdHBhdGg6IGNvbXBhY3QobG9jLnBhdGhuYW1lLnNwbGl0KCcvJykpLFxuXHRcdGhhc2g6IGxvYy5oYXNoLFxuXHRcdHNlYXJjaDogcXVlcnlTdHJpbmcucGFyc2UobG9jLnNlYXJjaCksXG5cdH07XG5cdGNvbnN0IGFjdGl2ZSA9IHVzZUlzQWN0aXZlUm91dGUoe2xvYywgcm91dGUsIHN0YXRlLCBhY3RpdmU6IGZhbHNlLCBpZCwgcGVybWlzc2lvbnN9LCByb3V0ZUl0ZW0pO1xuXHRjb25zdCBwZXJtaXNzaW9uc1ggPSB1c2VTZWxlY3RQZXJtaXNzaW9uKHtzdGF0ZSwgbG9jLCBhY3RpdmUsIHJvdXRlLCBpZCwgcGVybWlzc2lvbnN9LCBwZXJtaXNzaW9uU2VsZWN0b3JIb29rKTtcblx0Y29uc3QgbmV3RGF0YTogRGF0YSA9IHtzdGF0ZSwgbG9jLCBhY3RpdmUsIHJvdXRlLCBwZXJtaXNzaW9uczogey4uLnBlcm1pc3Npb25zLCAuLi5wZXJtaXNzaW9uc1h9LCBpZH07XG5cdHJldHVybiBkYXRhID8gbWVyZ2UoZGF0YSwgbmV3RGF0YSkgOiBuZXdEYXRhO1xufVxuIiwiaW1wb3J0IHt1c2VSb3V0ZU1hdGNofSBmcm9tICdyZWFjdC1yb3V0ZXInO1xuaW1wb3J0IHR5cGUge1JvdXRlUHJvcHN9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHtpc1JvdXRlSXRlbX0gZnJvbSAnLi4vY29tbW9uSXRlbXMnO1xuaW1wb3J0IHR5cGUge0RhdGF9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlzQWN0aXZlUm91dGUoZGF0YTogRGF0YSwgaXRlbT86IGFueSkge1xuXHQvLyBEZXRlcm1pbmUgaWYgdGhlIGN1cnJlbnQgcm91dGUgbWF0Y2hlcyB0aGUgdG8gcm91dGUgdG8gc2VlIGlmIHRoZSBsaW5rIGlzIGFjdGl2ZVxuXHRjb25zdCByb3V0ZU1hdGNoT2JqZWN0OiBSb3V0ZVByb3BzID0ge307XG5cdGlmIChpdGVtICYmIGlzUm91dGVJdGVtKGl0ZW0pKSB7XG5cdFx0aWYgKHR5cGVvZiBpdGVtLnRvID09PSAnc3RyaW5nJykge1xuXHRcdFx0cm91dGVNYXRjaE9iamVjdC5wYXRoID0gaXRlbS50bztcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiBpdGVtLnRvID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRyb3V0ZU1hdGNoT2JqZWN0LnBhdGggPSBpdGVtLnRvKGRhdGEpO1xuXHRcdH1cblx0XHRyb3V0ZU1hdGNoT2JqZWN0LmV4YWN0ID0gaXRlbS5leGFjdCAhPT0gZmFsc2U7XG5cdFx0cm91dGVNYXRjaE9iamVjdC5zZW5zaXRpdmUgPSBpdGVtLnNlbnNpdGl2ZTtcblx0XHRyb3V0ZU1hdGNoT2JqZWN0LnN0cmljdCA9IGl0ZW0uc3RyaWN0O1xuXHR9XG5cdGNvbnN0IHJvdXRlTWF0Y2ggPSB1c2VSb3V0ZU1hdGNoKHJvdXRlTWF0Y2hPYmplY3QpO1xuXHRyZXR1cm4gcm91dGVNYXRjaCAhPT0gbnVsbDtcbn1cbiIsImltcG9ydCBmbG93UmlnaHQgZnJvbSAnbG9kYXNoL2Zsb3dSaWdodCc7XG5pbXBvcnQgdHlwZSB7RGF0YSwgUGVybWlzc2lvblNlbGVjdG9ySG9va30gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VsZWN0UGVybWlzc2lvbihkYXRhOiBEYXRhLCBwZXJtaXNzaW9uU2VsZWN0b3JIb29rPzogUGVybWlzc2lvblNlbGVjdG9ySG9vayB8IFBlcm1pc3Npb25TZWxlY3Rvckhvb2tbXSkge1xuXHRsZXQgZmluYWxTZWxlY3Rvckhvb2s6IFBlcm1pc3Npb25TZWxlY3Rvckhvb2sgPSAoKSA9PiAoe30pO1xuXHRpZiAocGVybWlzc2lvblNlbGVjdG9ySG9vaykge1xuXHRcdGZpbmFsU2VsZWN0b3JIb29rID0gQXJyYXkuaXNBcnJheShwZXJtaXNzaW9uU2VsZWN0b3JIb29rKSA/IGZsb3dSaWdodChwZXJtaXNzaW9uU2VsZWN0b3JIb29rKSA6IHBlcm1pc3Npb25TZWxlY3Rvckhvb2s7XG5cdH1cblx0cmV0dXJuIGZpbmFsU2VsZWN0b3JIb29rKGRhdGEpO1xufVxuIiwiaW1wb3J0IGZsb3dSaWdodCBmcm9tICdsb2Rhc2gvZmxvd1JpZ2h0JztcbmltcG9ydCB0eXBlIHtTdGF0ZVNlbGVjdG9ySG9va30gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VsZWN0U3RhdGUoc3RhdGVTZWxlY3Rvckhvb2s/OiBTdGF0ZVNlbGVjdG9ySG9vayB8IFN0YXRlU2VsZWN0b3JIb29rW10pIHtcblx0bGV0IGZpbmFsU2VsZWN0b3JIb29rOiAoKSA9PiBhbnkgPSAoKSA9PiAoe30pO1xuXHRpZiAoc3RhdGVTZWxlY3Rvckhvb2spIHtcblx0XHRmaW5hbFNlbGVjdG9ySG9vayA9IEFycmF5LmlzQXJyYXkoc3RhdGVTZWxlY3Rvckhvb2spID8gZmxvd1JpZ2h0KHN0YXRlU2VsZWN0b3JIb29rKSA6IHN0YXRlU2VsZWN0b3JIb29rO1xuXHR9XG5cdHJldHVybiBmaW5hbFNlbGVjdG9ySG9vaygpO1xufVxuIiwiaW1wb3J0IHR5cGUge0RhdGF9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB0eXBlIHtDdXN0b21MYXlvdXRJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5cbmludGVyZmFjZSBDdXN0b21MYXlvdXRJdGVtQ29tcG9uZW50UHJvcHMge1xuXHRpdGVtOiBDdXN0b21MYXlvdXRJdGVtO1xuXHRkYXRhOiBEYXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3VzdG9tTGF5b3V0SXRlbUNvbXBvbmVudCh7aXRlbSwgZGF0YX06IEN1c3RvbUxheW91dEl0ZW1Db21wb25lbnRQcm9wcykge1xuXHRyZXR1cm4gaXRlbS5yZW5kZXIoZGF0YSk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHt1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtBY2NvcmRpb24sIERyb3Bkb3duLCBJY29uLCBNZW51fSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7RGF0YX0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHR5cGUge0Ryb3Bkb3duTGF5b3V0SXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtnZXRUZXh0fSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLmNzcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbXBvbmVudHMuRHJvcGRvd25JdGVtJyk7XG5cbmludGVyZmFjZSBEcm9wZG93bkl0ZW1Qcm9wcyB7XG5cdGl0ZW06IERyb3Bkb3duTGF5b3V0SXRlbTtcblx0Y2hpbGRyZW46IEpTWC5FbGVtZW50W107XG5cdGRhdGE6IERhdGE7XG5cdHZlcnRpY2FsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERyb3Bkb3duSXRlbSh7aXRlbSwgdmVydGljYWwsIGNoaWxkcmVuLCBkYXRhfTogRHJvcGRvd25JdGVtUHJvcHMpIHtcblx0Y29uc3QgW29wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG5cdGlmICh2ZXJ0aWNhbCkge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8TWVudS5JdGVtIGNsYXNzTmFtZT1cImltcGVyaXVtVmVydGljYWxEcm9wZG93blwiPlxuXHRcdFx0XHQ8QWNjb3JkaW9uIGZsdWlkPlxuXHRcdFx0XHRcdDxBY2NvcmRpb24uVGl0bGVcblx0XHRcdFx0XHRcdGNsYXNzTmFtZT17c3R5bGVzLnZlcnRpY2FsRHJvcGRvd25UaXRsZX1cblx0XHRcdFx0XHRcdG9uQ2xpY2s9e2V2ID0+IHtcblx0XHRcdFx0XHRcdFx0ZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHRcdHNldE9wZW4oIW9wZW4pO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHQ8SWNvbiBjbGFzc05hbWU9e29wZW4gPyBzdHlsZXMudmVydGljYWxEcm9wZG93bkljb25Sb3RhdGVkIDogc3R5bGVzLnZlcnRpY2FsRHJvcGRvd25JY29ufSBuYW1lPVwiYXJyb3cgcmlnaHRcIiAvPlxuXHRcdFx0XHRcdFx0e2l0ZW0udGV4dH1cblx0XHRcdFx0XHQ8L0FjY29yZGlvbi5UaXRsZT5cblx0XHRcdFx0XHQ8QWNjb3JkaW9uLkNvbnRlbnQgYWN0aXZlPXtvcGVufSBjbGFzc05hbWU9e2Ake3N0eWxlcy52ZXJ0aWNhbERyb3Bkb3duQ29udGVudH0gaW1wZXJpdW1WZXJ0aWNhbERyb3Bkb3duQ29udGVudGB9IGNoaWxkcmVuPXtjaGlsZHJlbn0gLz5cblx0XHRcdFx0PC9BY2NvcmRpb24+XG5cdFx0XHQ8L01lbnUuSXRlbT5cblx0XHQpO1xuXHR9XG5cblx0cmV0dXJuIChcblx0XHQ8RHJvcGRvd24gaXRlbSB0ZXh0PXtnZXRUZXh0KGl0ZW0sIGRhdGEpfSBjbGFzc05hbWU9XCJpbXBlcml1bURyb3Bkb3duXCI+XG5cdFx0XHQ8RHJvcGRvd24uTWVudSBjbGFzc05hbWU9XCJpbXBlcml1bURyb3Bkb3duQ29udGVudFwiPntjaGlsZHJlbn08L0Ryb3Bkb3duLk1lbnU+XG5cdFx0PC9Ecm9wZG93bj5cblx0KTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge1JlYWN0Tm9kZSwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7U2VnbWVudH0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHt1c2VMYXlvdXRTdGF0ZX0gZnJvbSAnLi4vLi4vc3RhdGUnO1xuaW1wb3J0IHttb3ZlSXRlbXN9IGZyb20gJy4uL21vdmVJdGVtcyc7XG5pbXBvcnQgdHlwZSB7TGF5b3V0RGF0YX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtMYXlvdXRJdGVtQmFyfSBmcm9tICcuL0xheW91dEl0ZW1CYXInO1xuaW1wb3J0IHtTZWNvbmRhcnlNZW51VG9nZ2xlSXRlbX0gZnJvbSAnLi9TZWNvbmRhcnlNZW51VG9nZ2xlSXRlbSc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLmNzcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbXBvbmVudHMuTGF5b3V0Jyk7XG5cbmludGVyZmFjZSBMYXlvdXRQcm9wcyBleHRlbmRzIFJlcXVpcmVkPExheW91dERhdGE+IHtcblx0Y2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59XG5cbi8qKlxuICogUmVuZGVycyB0aGUgbWFpbiBsYXlvdXQuXG4gKiBIaWRlcy9zaG93cy9jb2xsYXBzZXMgdGhpbmdzIGFzIG5lZWQgZm9yIG1vYmlsZSBsYXlvdXQuXG4gKiBUcmFja3Mgc3RhdGUgdG8gd2hldGhlciB0aGUgc2lkZSBtZW51IGlzIG9wZW4gb3Igbm90LlxuICogQHBhcmFtIGZvb3RlclxuICogQHBhcmFtIG1lbnViYXJcbiAqIEBwYXJhbSBzdGF0dXNiYXJcbiAqIEBwYXJhbSBjaGlsZHJlblxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBMYXlvdXQoe2Zvb3RlciwgcHJpbWFyeU1lbnUsIHN0YXR1c2Jhciwgc2Vjb25kYXJ5TWVudSwgY2hpbGRyZW59OiBMYXlvdXRQcm9wcykge1xuXHRjb25zdCB7aXNNb2JpbGV9ID0gdXNlTGF5b3V0U3RhdGUoKTtcblx0Y29uc3QgW21lbnVPcGVuLCBzZXRNZW51T3Blbl0gPSB1c2VTdGF0ZSh0cnVlKTtcblxuXHRjb25zdCBwcmltYXJ5TWVudVRvZ2dsZSA9IHtcblx0XHRzdGlja09uTW9iaWxlOiB0cnVlLFxuXHRcdHdlaWdodDogLTE5OTk5LFxuXHRcdHJlbmRlcjogKCkgPT4ge1xuXHRcdFx0aWYgKCFpc01vYmlsZSkgcmV0dXJuIG51bGw7XG5cdFx0XHRyZXR1cm4gPFNlY29uZGFyeU1lbnVUb2dnbGVJdGVtIG1lbnVPcGVuPXttZW51T3Blbn0gc2V0TWVudU9wZW49e3NldE1lbnVPcGVufSAvPjtcblx0XHR9LFxuXHR9O1xuXG5cdC8vIERldGVybWluZSBtZW51YmFyIGl0ZW1zXG5cdGNvbnN0IHByaW1hcnlNZW51SXRlbXMgPSBtb3ZlSXRlbXMoXG5cdFx0aXNNb2JpbGUgPyBbcHJpbWFyeU1lbnVUb2dnbGUsIC4uLnByaW1hcnlNZW51XS5maWx0ZXIodiA9PiB2LnN0aWNrT25Nb2JpbGUgPT09IHRydWUpIDogW3ByaW1hcnlNZW51VG9nZ2xlLCAuLi5wcmltYXJ5TWVudV0sXG5cdCk7XG5cblx0Ly8gY29uc3QgcG1pID0gbWVyZ2VJdGVtcyhwcmltYXJ5TWVudUl0ZW1zKTtcblxuXHQvLyBEZXRlcm1pbmUgc2lkZWJhciBpdGVtc1xuXHRjb25zdCBzZWNvbmRhcnlNZW51SXRlbXMgPSBtb3ZlSXRlbXMoXG5cdFx0aXNNb2JpbGVcblx0XHRcdD8gW1xuXHRcdFx0XHRcdC4uLnNlY29uZGFyeU1lbnUsXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0dGV4dDogJycsXG5cdFx0XHRcdFx0XHRtZW51OiBbcHJpbWFyeU1lbnVUb2dnbGUsIC4uLnByaW1hcnlNZW51XS5maWx0ZXIodiA9PiB2LnN0aWNrT25Nb2JpbGUgIT09IHRydWUpLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHQgIF1cblx0XHRcdDogc2Vjb25kYXJ5TWVudSxcblx0KTtcblxuXHRjb25zdCBzZWNvbmRhcnlNZW51Q29tcCA9XG5cdFx0c2Vjb25kYXJ5TWVudUl0ZW1zLmxlbmd0aCA+IDAgPyAoXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImltcGVyaXVtU2Vjb25kYXJ5TWVudVdyYXBwZXJcIj5cblx0XHRcdFx0PExheW91dEl0ZW1CYXJcblx0XHRcdFx0XHRpdGVtcz17c2Vjb25kYXJ5TWVudUl0ZW1zfVxuXHRcdFx0XHRcdGludmVydGVkXG5cdFx0XHRcdFx0dmVydGljYWxcblx0XHRcdFx0XHRjbGFzc05hbWU9e1xuXHRcdFx0XHRcdFx0aXNNb2JpbGUgJiYgIW1lbnVPcGVuXG5cdFx0XHRcdFx0XHRcdD8gYCR7c3R5bGVzLnNlY29uZGFyeU1lbnV9ICR7c3R5bGVzLnNlY29uZGFyeU1lbnVIaWRkZW59IGltcGVyaXVtU2Vjb25kYXJ5TWVudWBcblx0XHRcdFx0XHRcdFx0OiBgJHtzdHlsZXMuc2Vjb25kYXJ5TWVudX0gaW1wZXJpdW1TZWNvbmRhcnlNZW51YFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0Lz5cblx0XHRcdDwvZGl2PlxuXHRcdCkgOiBudWxsO1xuXG5cdC8vIERldGVybWluZSBmb290ZXIgaXRlbXNcblx0Y29uc3QgZm9vdGVySXRlbXMgPSBtb3ZlSXRlbXMoZm9vdGVyKTtcblx0Y29uc3QgZm9vdGVyQ29tcCA9XG5cdFx0Zm9vdGVySXRlbXMubGVuZ3RoID4gMCA/IChcblx0XHRcdDxMYXlvdXRJdGVtQmFyIG5hbWU9XCJmb290ZXJcIiBpdGVtcz17Zm9vdGVySXRlbXN9IGNsYXNzTmFtZT17YCR7c3R5bGVzLmZvb3Rlcn0gaW1wZXJpdW1Gb290ZXJgfSBpbnZlcnRlZCBib3JkZXJsZXNzIC8+XG5cdFx0KSA6IG51bGw7XG5cblx0Ly8gRGV0ZXJtaW5lIHN0YXR1cyBiYXIgaXRlbXNcblx0Y29uc3Qgc3RhdHVzYmFySXRlbXMgPSBtb3ZlSXRlbXMoc3RhdHVzYmFyKTtcblx0Y29uc3Qgc3RhdHVzYmFyQ29tcCA9XG5cdFx0c3RhdHVzYmFySXRlbXMubGVuZ3RoID4gMCA/IDxMYXlvdXRJdGVtQmFyIGl0ZW1zPXtzdGF0dXNiYXJJdGVtc30gaW52ZXJ0ZWQgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc3RhdHVzYmFyfSBpbXBlcml1bVN0YXR1c2JhcmB9IC8+IDogbnVsbDtcblxuXHRyZXR1cm4gKFxuXHRcdDxkaXYgY2xhc3NOYW1lPXtgJHtzdHlsZXMucGFyZW50fSBpbXBlcml1bUxheW91dCAke2lzTW9iaWxlID8gJ2ltcGVyaXVtTW9iaWxlJyA6ICdpbXBlcml1bU5vdE1vYmlsZSd9YH0+XG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImltcGVyaXVtUHJpbWFyeU1lbnVXcmFwcGVyXCI+XG5cdFx0XHRcdDxMYXlvdXRJdGVtQmFyIGl0ZW1zPXtwcmltYXJ5TWVudUl0ZW1zfSBpbnZlcnRlZCBib3JkZXJsZXNzIGNsYXNzTmFtZT17YCR7c3R5bGVzLm1lbnViYXJ9IGltcGVyaXVtUHJpbWFyeU1lbnVgfSAvPlxuXHRcdFx0XHR7c3RhdHVzYmFyQ29tcH1cblx0XHRcdDwvZGl2PlxuXHRcdFx0PFNlZ21lbnQgYXR0YWNoZWQgY2xhc3NOYW1lPXtgJHtzdHlsZXMuY29udGVudFdyYXBwZXJ9IGltcGVyaXVtTGF5b3V0Q29udGVudFdyYXBwZXJgfT5cblx0XHRcdFx0e3NlY29uZGFyeU1lbnVDb21wfVxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17YCR7c3R5bGVzLmNvbnRlbnR9IGltcGVyaXVtTGF5b3V0Q29udGVudGB9PntjaGlsZHJlbn08L2Rpdj5cblx0XHRcdDwvU2VnbWVudD5cblx0XHRcdHtmb290ZXJDb21wfVxuXHRcdDwvZGl2PlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB0eXBlIHtNZW51UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7TWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHtzb3J0V2VpZ2h0ZWRJdGVtc30gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHR5cGUge0xheW91dEl0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7c3BsaXRQb3NpdGlvbmVkSXRlbXN9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7TGF5b3V0SXRlbVdyYXBwZXJ9IGZyb20gJy4vTGF5b3V0SXRlbVdyYXBwZXInO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb21wb25lbnRzLkxheW91dEl0ZW1CYXInKTtcblxuaW50ZXJmYWNlIEl0ZW1CYXJQcm9wcyBleHRlbmRzIE1lbnVQcm9wcyB7XG5cdGl0ZW1zOiBMYXlvdXRJdGVtW107XG59XG5cbi8qKlxuICogUmVuZGVycyBhIGhvcml6b250YWwgb3IgdmVydGljYWwgYmFyIG9mIG1lbnUgaXRlbXMuXG4gKiBAcGFyYW0gbmFtZVxuICogQHBhcmFtIGl0ZW1zXG4gKiBAcGFyYW0gcmVzdFxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBMYXlvdXRJdGVtQmFyKHtpdGVtcywgLi4ucmVzdH06IEl0ZW1CYXJQcm9wcykge1xuXHRjb25zdCBpbXMgPSBzcGxpdFBvc2l0aW9uZWRJdGVtcyhpdGVtcyk7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRjb25zdCBsZWZ0SXRlbXMgPSBzb3J0V2VpZ2h0ZWRJdGVtcyhpbXMubGVmdEl0ZW1zKS5tYXAoKGl0ZW0sIGluZGV4KSA9PiA8TGF5b3V0SXRlbVdyYXBwZXIgaXRlbT17aXRlbX0ga2V5PXtpbmRleH0gdmVydGljYWw9e3Jlc3QudmVydGljYWx9IC8+KTtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRjb25zdCByaWdodEl0ZW1zID0gc29ydFdlaWdodGVkSXRlbXMoaW1zLnJpZ2h0SXRlbXMpLm1hcCgoaXRlbSwgaW5kZXgpID0+IDxMYXlvdXRJdGVtV3JhcHBlciBpdGVtPXtpdGVtfSBrZXk9e2luZGV4fSB2ZXJ0aWNhbD17cmVzdC52ZXJ0aWNhbH0gLz4pO1xuXG5cdHJldHVybiAoXG5cdFx0PE1lbnUgey4uLnJlc3R9PlxuXHRcdFx0e2xlZnRJdGVtc31cblx0XHRcdHtyZXN0LnZlcnRpY2FsID8gcmlnaHRJdGVtcyA6IDxNZW51Lk1lbnUgcG9zaXRpb249XCJyaWdodFwiPntyaWdodEl0ZW1zfTwvTWVudS5NZW51Pn1cblx0XHQ8L01lbnU+XG5cdCk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtRdWVyeX0gZnJvbSAnbWluZ28nO1xuaW1wb3J0IHR5cGUge0NvbXBvbmVudENsYXNzfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0Ryb3Bkb3dufSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge3VzZUJ1aWxkRGF0YX0gZnJvbSAnLi4vLi4vaG9va3MvdXNlQnVpbGREYXRhJztcbmltcG9ydCB0eXBlIHtEYXRhfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge3NvcnRXZWlnaHRlZEl0ZW1zfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgdHlwZSB7TGF5b3V0SXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtpc0N1c3RvbUxheW91dEl0ZW0sIGlzRHJvcGRvd25MYXlvdXRJdGVtLCBpc01lbnVMYXlvdXRJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0N1c3RvbUxheW91dEl0ZW1Db21wb25lbnR9IGZyb20gJy4vQ3VzdG9tTGF5b3V0SXRlbUNvbXBvbmVudCc7XG5pbXBvcnQge0Ryb3Bkb3duSXRlbX0gZnJvbSAnLi9Ecm9wZG93bkl0ZW0nO1xuaW1wb3J0IHtNZW51SXRlbX0gZnJvbSAnLi9NZW51SXRlbSc7XG5pbXBvcnQge1BsYWluSXRlbX0gZnJvbSAnLi9QbGFpbkl0ZW0nO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb21wb25lbnRzLkxheW91dEl0ZW1XcmFwcGVyJyk7XG5cbmludGVyZmFjZSBJdGVtV3JhcHBlclByb3BzIHtcblx0aXRlbTogTGF5b3V0SXRlbTtcblx0YXM/OiBDb21wb25lbnRDbGFzcztcblx0dmVydGljYWw/OiBib29sZWFuO1xuXHRkYXRhPzogRGF0YTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGFueSB0eXBlIG9mIEl0ZW0uIEdhdGhlcnMgc3RhdGUsIHJvdXRlIGFuZCBvdGhlciBkYXRhIGFuZCBjaGVja3MgZm9yIHZpc2liaWxpdHkuXG4gKiBAcGFyYW0gaXRlbVxuICogQHBhcmFtIGFzXG4gKiBAcGFyYW0gdmVydGljYWxcbiAqIEBwYXJhbSBwYXJlbnREYXRhXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIExheW91dEl0ZW1XcmFwcGVyKHtpdGVtLCBhcywgdmVydGljYWwsIGRhdGE6IHBhcmVudERhdGF9OiBJdGVtV3JhcHBlclByb3BzKSB7XG5cdGNvbnN0IGRhdGEgPSB1c2VCdWlsZERhdGEoe1xuXHRcdHN0YXRlU2VsZWN0b3JIb29rOiBpdGVtLnN0YXRlU2VsZWN0b3JIb29rLFxuXHRcdHBlcm1pc3Npb25TZWxlY3Rvckhvb2s6IGl0ZW0ucGVybWlzc2lvblNlbGVjdG9ySG9vayxcblx0XHRyb3V0ZUl0ZW06IGl0ZW0sXG5cdFx0ZGF0YTogcGFyZW50RGF0YSxcblx0fSk7XG5cblx0Ly8gQ2hlY2sgaWYgdmlzaWJsZVxuXHRpZiAoaXRlbS52aXNpYmxlKSB7XG5cdFx0aWYgKHR5cGVvZiBpdGVtLnZpc2libGUgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGlmICghaXRlbS52aXNpYmxlKGRhdGEpKSByZXR1cm4gbnVsbDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgcSA9IG5ldyBRdWVyeShpdGVtLnZpc2libGUgfHwge30pO1xuXHRcdFx0aWYgKCFxLnRlc3QoZGF0YSkpIHJldHVybiBudWxsO1xuXHRcdH1cblx0fVxuXG5cdGlmIChpc0N1c3RvbUxheW91dEl0ZW0oaXRlbSkpIHtcblx0XHRyZXR1cm4gPEN1c3RvbUxheW91dEl0ZW1Db21wb25lbnQgaXRlbT17aXRlbX0gZGF0YT17ZGF0YX0gLz47XG5cdH1cblx0aWYgKGlzRHJvcGRvd25MYXlvdXRJdGVtKGl0ZW0pKSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRcdGNvbnN0IGNoaWxkcmVuID0gc29ydFdlaWdodGVkSXRlbXMoaXRlbS5kcm9wZG93bikubWFwKCh2LCBpbmRleCkgPT4gPExheW91dEl0ZW1XcmFwcGVyIGtleT17aW5kZXh9IGl0ZW09e3Z9IGFzPXtEcm9wZG93bi5JdGVtfSBkYXRhPXtkYXRhfSAvPik7XG5cdFx0cmV0dXJuIDxEcm9wZG93bkl0ZW0gaXRlbT17aXRlbX0gY2hpbGRyZW49e2NoaWxkcmVufSB2ZXJ0aWNhbD17dmVydGljYWx9IGRhdGE9e2RhdGF9IC8+O1xuXHR9XG5cdGlmIChpc01lbnVMYXlvdXRJdGVtKGl0ZW0pKSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRcdGNvbnN0IGNoaWxkcmVuID0gc29ydFdlaWdodGVkSXRlbXMoaXRlbS5tZW51KS5tYXAoKHYsIGluZGV4KSA9PiAoXG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG5cdFx0XHQ8TGF5b3V0SXRlbVdyYXBwZXIga2V5PXtpbmRleH0gaXRlbT17dn0gYXM9e0Ryb3Bkb3duLkl0ZW19IHZlcnRpY2FsPXt2ZXJ0aWNhbH0gZGF0YT17ZGF0YX0gLz5cblx0XHQpKTtcblx0XHRyZXR1cm4gPE1lbnVJdGVtIGl0ZW09e2l0ZW19IGNoaWxkcmVuPXtjaGlsZHJlbn0gLz47XG5cdH1cblx0cmV0dXJuIDxQbGFpbkl0ZW0gaXRlbT17aXRlbX0gZGF0YT17ZGF0YX0gYXM9e2FzfSAvPjtcbn1cbiIsImltcG9ydCB7TWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge01lbnVMYXlvdXRJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5cbmludGVyZmFjZSBNZW51SXRlbVByb3BzIHtcblx0aXRlbTogTWVudUxheW91dEl0ZW07XG5cdGNoaWxkcmVuOiBKU1guRWxlbWVudFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTWVudUl0ZW0oe2l0ZW0sIGNoaWxkcmVufTogTWVudUl0ZW1Qcm9wcykge1xuXHRyZXR1cm4gKFxuXHRcdDxNZW51Lkl0ZW0+XG5cdFx0XHQ8TWVudS5IZWFkZXI+e2l0ZW0udGV4dH08L01lbnUuSGVhZGVyPlxuXHRcdFx0PE1lbnUuTWVudSBjb21wYWN0PVwiXCI+e2NoaWxkcmVufTwvTWVudS5NZW51PlxuXHRcdDwvTWVudS5JdGVtPlxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUge0NvbXBvbmVudENsYXNzfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge01lbnV9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtEYXRhfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7Q3VzdG9tTGF5b3V0SXRlbSwgRHJvcGRvd25MYXlvdXRJdGVtLCBMYXlvdXRJdGVtLCBNZW51TGF5b3V0SXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtnZXRJY29uLCBnZXRUZXh0LCBsaW5rUGFyYW1ldGVyc30gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbnRlcmZhY2UgUGxhaW5JdGVtUHJvcHMge1xuXHRpdGVtOiBFeGNsdWRlPExheW91dEl0ZW0sIE1lbnVMYXlvdXRJdGVtIHwgRHJvcGRvd25MYXlvdXRJdGVtIHwgQ3VzdG9tTGF5b3V0SXRlbT47XG5cdGRhdGE6IERhdGE7XG5cdGFzPzogQ29tcG9uZW50Q2xhc3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBQbGFpbkl0ZW0oe2l0ZW0sIGRhdGEsIGFzfTogUGxhaW5JdGVtUHJvcHMpIHtcblx0Y29uc3QgbGlua1BhcmFtcyA9IGxpbmtQYXJhbWV0ZXJzKGl0ZW0sIGRhdGEpO1xuXG5cdGNvbnN0IEl0ZW1YID0gYXMgfHwgTWVudS5JdGVtO1xuXG5cdHJldHVybiAoXG5cdFx0PEl0ZW1YIHsuLi5saW5rUGFyYW1zfT5cblx0XHRcdHtnZXRJY29uKGl0ZW0sIGRhdGEpfVxuXHRcdFx0e2dldFRleHQoaXRlbSwgZGF0YSl9XG5cdFx0PC9JdGVtWD5cblx0KTtcbn1cbiIsImltcG9ydCB7SWNvbiwgTWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5jc3MnO1xuXG5pbnRlcmZhY2UgU2Vjb25kYXJ5TWVudVRvZ2dsZUl0ZW1Qcm9wcyB7XG5cdG1lbnVPcGVuOiBib29sZWFuO1xuXHRzZXRNZW51T3BlbjogKG9wZW46IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWNvbmRhcnlNZW51VG9nZ2xlSXRlbSh7bWVudU9wZW4sIHNldE1lbnVPcGVufTogU2Vjb25kYXJ5TWVudVRvZ2dsZUl0ZW1Qcm9wcykge1xuXHRyZXR1cm4gKFxuXHRcdDxNZW51Lkl0ZW0+XG5cdFx0XHQ8SWNvblxuXHRcdFx0XHRjbGFzc05hbWU9e21lbnVPcGVuID8gc3R5bGVzLmljb25Sb3RhdGVkIDogc3R5bGVzLmljb259XG5cdFx0XHRcdG5hbWU9e21lbnVPcGVuID8gJ2Nsb3NlJyA6ICdzaWRlYmFyJ31cblx0XHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRcdHNldE1lbnVPcGVuKCFtZW51T3Blbik7XG5cdFx0XHRcdH19XG5cdFx0XHQvPlxuXHRcdDwvTWVudS5JdGVtPlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7dXNlRWZmZWN0fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZURpc3BhdGNofSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQge3VzZU1lZGlhUXVlcnl9IGZyb20gJ3JlYWN0LXJlc3BvbnNpdmUnO1xuaW1wb3J0IHthY3Rpb25zLCB1c2VMYXlvdXRTdGF0ZX0gZnJvbSAnLi4vLi4vc3RhdGUnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5ob29rcy51c2VNb2JpbGVMYXlvdXQnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU1vYmlsZUxheW91dCgpIHtcblx0Y29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXHRjb25zdCB7aXNNb2JpbGV9ID0gdXNlTGF5b3V0U3RhdGUoKTtcblx0Y29uc3QgaXNNb2JpbGVYID0gdXNlTWVkaWFRdWVyeSh7cXVlcnk6ICcobWF4LXdpZHRoOiA5MDBweCknfSk7XG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKGlzTW9iaWxlICE9PSBpc01vYmlsZVgpIHtcblx0XHRcdGQoYE1lZGlhIHF1ZXJ5IGNoYW5nZSBkZXRlY3RlZDogJHtpc01vYmlsZX0gLT4gJHtpc01vYmlsZVh9YCk7XG5cdFx0XHRkaXNwYXRjaChhY3Rpb25zLnNldE1vYmlsZShpc01vYmlsZVgpKTtcblx0XHR9XG5cdH0sIFtkaXNwYXRjaCwgaXNNb2JpbGUsIGlzTW9iaWxlWF0pO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBncm91cEJ5IGZyb20gJ2xvZGFzaC9ncm91cEJ5JztcbmltcG9ydCB0eXBlIHtMYXlvdXRJdGVtfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7aXNEcm9wZG93bkxheW91dEl0ZW0sIGlzTWVudUxheW91dEl0ZW19IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5tb3ZlSXRlbXMnKTtcblxuZnVuY3Rpb24gcHVsbEl0ZW1zKGl0ZW1zOiBMYXlvdXRJdGVtW10sIHB1bGxlZDogTGF5b3V0SXRlbVtdID0gW10pOiBMYXlvdXRJdGVtW10ge1xuXHRyZXR1cm4gaXRlbXMucmVkdWNlKChtZW1vLCBpdGVtKSA9PiB7XG5cdFx0aWYgKGlzRHJvcGRvd25MYXlvdXRJdGVtKGl0ZW0pKSB7XG5cdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHQuLi5tZW1vLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Li4uaXRlbSxcblx0XHRcdFx0XHRkcm9wZG93bjogcHVsbEl0ZW1zKGl0ZW0uZHJvcGRvd24sIHB1bGxlZCksXG5cdFx0XHRcdH0sXG5cdFx0XHRdO1xuXHRcdH1cblxuXHRcdGlmIChpc01lbnVMYXlvdXRJdGVtKGl0ZW0pKSB7XG5cdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHQuLi5tZW1vLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Li4uaXRlbSxcblx0XHRcdFx0XHRtZW51OiBwdWxsSXRlbXMoaXRlbS5tZW51LCBwdWxsZWQpLFxuXHRcdFx0XHR9LFxuXHRcdFx0XTtcblx0XHR9XG5cblx0XHRpZiAoIWl0ZW0ubW92ZVRvS2V5KSB7XG5cdFx0XHRyZXR1cm4gWy4uLm1lbW8sIGl0ZW1dO1xuXHRcdH1cblxuXHRcdHB1bGxlZC5wdXNoKGl0ZW0pO1xuXHRcdHJldHVybiBtZW1vO1xuXHR9LCBbXSBhcyBMYXlvdXRJdGVtW10pO1xufVxuXG5mdW5jdGlvbiBhZGRJdGVtcyhpdGVtczogTGF5b3V0SXRlbVtdLCBwdWxsZWQ6IFJlY29yZDxzdHJpbmcsIExheW91dEl0ZW1bXT4pOiBMYXlvdXRJdGVtW10ge1xuXHRyZXR1cm4gaXRlbXMucmVkdWNlKChtZW1vLCBpdGVtKSA9PiB7XG5cdFx0aWYgKGlzRHJvcGRvd25MYXlvdXRJdGVtKGl0ZW0pKSB7XG5cdFx0XHRjb25zdCBuZXdJdGVtcyA9IGl0ZW0ua2V5ICYmIHB1bGxlZFtpdGVtLmtleV0gPyBwdWxsZWRbaXRlbS5rZXldIDogW107XG5cdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHQuLi5tZW1vLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Li4uaXRlbSxcblx0XHRcdFx0XHRkcm9wZG93bjogWy4uLmFkZEl0ZW1zKGl0ZW0uZHJvcGRvd24sIHB1bGxlZCksIC4uLm5ld0l0ZW1zXSxcblx0XHRcdFx0fSxcblx0XHRcdF07XG5cdFx0fVxuXG5cdFx0aWYgKGlzTWVudUxheW91dEl0ZW0oaXRlbSkgJiYgaXRlbS5rZXkpIHtcblx0XHRcdGNvbnN0IG5ld0l0ZW1zID0gaXRlbS5rZXkgJiYgcHVsbGVkW2l0ZW0ua2V5XSA/IHB1bGxlZFtpdGVtLmtleV0gOiBbXTtcblx0XHRcdHJldHVybiBbXG5cdFx0XHRcdC4uLm1lbW8sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQuLi5pdGVtLFxuXHRcdFx0XHRcdG1lbnU6IFsuLi5hZGRJdGVtcyhpdGVtLm1lbnUsIHB1bGxlZCksIC4uLm5ld0l0ZW1zXSxcblx0XHRcdFx0fSxcblx0XHRcdF07XG5cdFx0fVxuXHRcdHJldHVybiBbLi4ubWVtbywgaXRlbV07XG5cdH0sIFtdIGFzIExheW91dEl0ZW1bXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSXRlbXMoaXRlbXM6IExheW91dEl0ZW1bXSkge1xuXHRjb25zdCBwdWxsZWQ6IExheW91dEl0ZW1bXSA9IFtdO1xuXHRjb25zdCBpdGVtc01pbnVzUHVsbGVkID0gcHVsbEl0ZW1zKGl0ZW1zLCBwdWxsZWQpO1xuXHRyZXR1cm4gYWRkSXRlbXMoaXRlbXNNaW51c1B1bGxlZCwgZ3JvdXBCeShwdWxsZWQsICdtb3ZlVG9LZXknKSk7XG59XG4iLCJpbXBvcnQgdHlwZSB7U2VtYW50aWNJQ09OU30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge0hvcml6b250YWxQb3NpdGlvbmVkSXRlbSwgUm91dGVJdGVtLCBWaXNpYmlsaXR5SXRlbSwgV2VpZ2h0ZWRJdGVtfSBmcm9tICcuLi9jb21tb25JdGVtcyc7XG5pbXBvcnQgdHlwZSB7RGF0YUhvb2tJdGVtfSBmcm9tICcuLi9kYXRhaG9va3MvdHlwZXMnO1xuaW1wb3J0IHR5cGUge0RhdGEsIFBlcm1pc3Npb25TZWxlY3Rvckhvb2t9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBEZXNjcmliZXMgYSBiYXNpYyB3ZWlnaHRlZCwgcG9zc2libHkgdmlzaWJsZSBpdGVtXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUxheW91dEl0ZW0gZXh0ZW5kcyBXZWlnaHRlZEl0ZW0sIFZpc2liaWxpdHlJdGVtIHtcblx0dGV4dDogc3RyaW5nIHwgKChkYXRhOiBEYXRhKSA9PiBzdHJpbmcpO1xuXHRpY29uPzogU2VtYW50aWNJQ09OUyB8ICgoZGF0YTogRGF0YSkgPT4gU2VtYW50aWNJQ09OUyk7XG5cdG1vdmVUb0tleT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21MYXlvdXRJdGVtIGV4dGVuZHMgV2VpZ2h0ZWRJdGVtLCBWaXNpYmlsaXR5SXRlbSB7XG5cdHJlbmRlcjogKGRhdGE6IERhdGEpID0+IEpTWC5FbGVtZW50IHwgbnVsbDtcblx0bW92ZVRvS2V5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIG1lbnUgdGhhdCBkaXNwbGF5cyBhIGRyb3Bkb3duIGxpc3Qgb2YgaXRlbXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEcm9wZG93bkxheW91dEl0ZW0gZXh0ZW5kcyBCYXNlTGF5b3V0SXRlbSB7XG5cdGRyb3Bkb3duOiAoKEJhc2VMYXlvdXRJdGVtICYgUm91dGVJdGVtPERhdGE+KSB8IEN1c3RvbUxheW91dEl0ZW0pW107XG5cdGtleT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYSBtZW51IHRoYXQgZGlzcGxheXMgYSBzdWIgbWVudSAobm90IGEgZHJvcGRvd24gbGlzdClcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW51TGF5b3V0SXRlbSBleHRlbmRzIEJhc2VMYXlvdXRJdGVtIHtcblx0bWVudTogKChCYXNlTGF5b3V0SXRlbSAmIFJvdXRlSXRlbTxEYXRhPikgfCBDdXN0b21MYXlvdXRJdGVtKVtdO1xuXHRrZXk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgaG9yaXpvbnRhbCBtZW51IGl0ZW0gd2hpY2ggaXMgZWl0aGVyIGEgcm91dGUgaXRlbSBvciBkcm9wZG93biBtZW51XG4gKi9cbmV4cG9ydCB0eXBlIExheW91dEl0ZW0gPSAoQmFzZUxheW91dEl0ZW0gJiBSb3V0ZUl0ZW08RGF0YT4pIHwgRHJvcGRvd25MYXlvdXRJdGVtIHwgTWVudUxheW91dEl0ZW0gfCBDdXN0b21MYXlvdXRJdGVtO1xuXG5leHBvcnQgaW50ZXJmYWNlIExheW91dERhdGEge1xuXHRwZXJtaXNzaW9uU2VsZWN0b3JIb29rcz86IFBlcm1pc3Npb25TZWxlY3Rvckhvb2tbXTtcblx0ZGF0YUhvb2tzPzogRGF0YUhvb2tJdGVtW107XG5cdHByaW1hcnlNZW51PzogKExheW91dEl0ZW0gJiBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0pW107IC8vIHByaW1hcnkgbWVudVxuXHRzdGF0dXNiYXI/OiAoTGF5b3V0SXRlbSAmIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSlbXTtcblx0c2Vjb25kYXJ5TWVudT86IExheW91dEl0ZW1bXTsgLy8gc2Vjb25kYXJ5IG1lbnVcblx0Zm9vdGVyPzogKExheW91dEl0ZW0gJiBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0pW107IC8vIGZvb3RlclxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDdXN0b21MYXlvdXRJdGVtKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBDdXN0b21MYXlvdXRJdGVtIHtcblx0cmV0dXJuICEhKHZhbHVlIGFzIEN1c3RvbUxheW91dEl0ZW0pLnJlbmRlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRHJvcGRvd25MYXlvdXRJdGVtKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBEcm9wZG93bkxheW91dEl0ZW0ge1xuXHRyZXR1cm4gISEodmFsdWUgYXMgRHJvcGRvd25MYXlvdXRJdGVtKS5kcm9wZG93bjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTWVudUxheW91dEl0ZW0odmFsdWU6IGFueSk6IHZhbHVlIGlzIE1lbnVMYXlvdXRJdGVtIHtcblx0cmV0dXJuICEhKHZhbHVlIGFzIE1lbnVMYXlvdXRJdGVtKS5tZW51O1xufVxuIiwiaW1wb3J0IHtMaW5rfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7SWNvbiwgU2VtYW50aWNJQ09OU30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge1JvdXRlSXRlbX0gZnJvbSAnLi4vY29tbW9uSXRlbXMnO1xuaW1wb3J0IHtpc0hvcml6b250YWxQb3NpdGlvbmVkSXRlbX0gZnJvbSAnLi4vY29tbW9uSXRlbXMnO1xuaW1wb3J0IHR5cGUge0RhdGF9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB0eXBlIHtCYXNlTGF5b3V0SXRlbSwgTGF5b3V0SXRlbX0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogU3BsaXRzIHBvc2l0aW9uZWQgaXRlbXMgaW50byBsZWZ0IGFuZCByaWdodCBhcnJheXMgKGlmIGhvcml6b250YWwpXG4gKiBAcGFyYW0gaXRlbXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0UG9zaXRpb25lZEl0ZW1zPFQgZXh0ZW5kcyBMYXlvdXRJdGVtPihpdGVtczogVFtdKSB7XG5cdHJldHVybiBpdGVtcy5yZWR1Y2UoXG5cdFx0KG1lbW8sIHYpID0+IHtcblx0XHRcdGlmIChpc0hvcml6b250YWxQb3NpdGlvbmVkSXRlbSh2KSAmJiB2LnBvc2l0aW9uID09PSAncmlnaHQnKSB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0bGVmdEl0ZW1zOiBtZW1vLmxlZnRJdGVtcyxcblx0XHRcdFx0XHRyaWdodEl0ZW1zOiBbLi4ubWVtby5yaWdodEl0ZW1zLCB2XSxcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGxlZnRJdGVtczogWy4uLm1lbW8ubGVmdEl0ZW1zLCB2XSxcblx0XHRcdFx0cmlnaHRJdGVtczogbWVtby5yaWdodEl0ZW1zLFxuXHRcdFx0fTtcblx0XHR9LFxuXHRcdHtsZWZ0SXRlbXM6IFtdLCByaWdodEl0ZW1zOiBbXX0gYXMge2xlZnRJdGVtczogVFtdOyByaWdodEl0ZW1zOiBUW119LFxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua1BhcmFtZXRlcnMoaXRlbTogQmFzZUxheW91dEl0ZW0gJiBSb3V0ZUl0ZW08RGF0YT4sIGRhdGE6IERhdGEpIHtcblx0cmV0dXJuIGl0ZW0udG9cblx0XHQ/IHtcblx0XHRcdFx0YXM6IExpbmssXG5cdFx0XHRcdGFjdGl2ZTogZGF0YS5hY3RpdmUsXG5cdFx0XHRcdHRvOiB0eXBlb2YgaXRlbS50byA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW0udG8oZGF0YSkgOiBpdGVtLnRvLFxuXHRcdCAgfVxuXHRcdDoge307XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0KGl0ZW06IEJhc2VMYXlvdXRJdGVtLCBkYXRhOiBEYXRhKSB7XG5cdHJldHVybiB0eXBlb2YgaXRlbS50ZXh0ID09PSAnZnVuY3Rpb24nID8gaXRlbS50ZXh0KGRhdGEpIDogaXRlbS50ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SWNvbihpdGVtOiBCYXNlTGF5b3V0SXRlbSwgZGF0YTogRGF0YSkge1xuXHQvLyBHZW5lcmF0ZSB0aGUgaWNvbiBjb21wb25lbnQsIGlmIGl0IGV4aXN0c1xuXHRsZXQgaWNvbk5hbWU6IFNlbWFudGljSUNPTlMgfCB1bmRlZmluZWQ7XG5cdGlmIChpdGVtLmljb24pIHtcblx0XHRpY29uTmFtZSA9IHR5cGVvZiBpdGVtLmljb24gPT09ICdmdW5jdGlvbicgPyBpdGVtLmljb24oZGF0YSkgOiBpdGVtLmljb247XG5cdH1cblx0cmV0dXJuIGl0ZW0uaWNvbiA/IDxJY29uIG5hbWU9e2ljb25OYW1lfSAvPiA6IG51bGw7XG59XG4iLCJpbXBvcnQgdHlwZSB7SG9jLCBJbXBlcml1bUNsaWVudH0gZnJvbSAnQGltcGVyaXVtL2NsaWVudCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHR5cGUge0NvbXBvbmVudFR5cGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7RGF0YUhvb2tzfSBmcm9tICcuLi9kYXRhaG9va3MvRGF0YUhvb2tzJztcbmltcG9ydCB7UGVybWlzc2lvbkhvb2tzfSBmcm9tICcuLi9kYXRhaG9va3MvUGVybWlzc2lvbkhvb2tzJztcbmltcG9ydCB7aXNJbXBlcml1bUxheW91dENsaWVudE1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtMYXlvdXR9IGZyb20gJy4vY29tcG9uZW50cy9MYXlvdXQnO1xuaW1wb3J0IHR5cGUge0xheW91dERhdGF9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC53aXRoTGF5b3V0Jyk7XG5cbmNvbnN0IGluaXRpYWxMYXlvdXRNb2R1bGVEYXRhOiBSZXF1aXJlZDxMYXlvdXREYXRhPiA9IHtcblx0ZGF0YUhvb2tzOiBbXSxcblx0cGVybWlzc2lvblNlbGVjdG9ySG9va3M6IFtdLFxuXHRwcmltYXJ5TWVudTogW10sXG5cdHN0YXR1c2JhcjogW10sXG5cdHNlY29uZGFyeU1lbnU6IFtdLFxuXHRmb290ZXI6IFtdLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhMYXlvdXQoY2xpZW50OiBJbXBlcml1bUNsaWVudCk6IEhvYyB7XG5cdGNvbnN0IGxheW91dE1vZHVsZURhdGEgPSBjbGllbnQubW9kdWxlcy5yZWR1Y2UoKG1lbW8sIG1vZHVsZSkgPT4ge1xuXHRcdGlmIChpc0ltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlKG1vZHVsZSkpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGRhdGFIb29rczogWy4uLihtZW1vLmRhdGFIb29rcyB8fCBbXSksIC4uLihtb2R1bGUubGF5b3V0LmRhdGFIb29rcyB8fCBbXSldLFxuXHRcdFx0XHRwZXJtaXNzaW9uU2VsZWN0b3JIb29rczogWy4uLihtZW1vLnBlcm1pc3Npb25TZWxlY3Rvckhvb2tzIHx8IFtdKSwgLi4uKG1vZHVsZS5sYXlvdXQucGVybWlzc2lvblNlbGVjdG9ySG9va3MgfHwgW10pXSxcblx0XHRcdFx0cHJpbWFyeU1lbnU6IFsuLi4obWVtby5wcmltYXJ5TWVudSB8fCBbXSksIC4uLihtb2R1bGUubGF5b3V0LnByaW1hcnlNZW51IHx8IFtdKV0sXG5cdFx0XHRcdHN0YXR1c2JhcjogWy4uLihtZW1vLnN0YXR1c2JhciB8fCBbXSksIC4uLihtb2R1bGUubGF5b3V0LnN0YXR1c2JhciB8fCBbXSldLFxuXHRcdFx0XHRzZWNvbmRhcnlNZW51OiBbLi4uKG1lbW8uc2Vjb25kYXJ5TWVudSB8fCBbXSksIC4uLihtb2R1bGUubGF5b3V0LnNlY29uZGFyeU1lbnUgfHwgW10pXSxcblx0XHRcdFx0Zm9vdGVyOiBbLi4uKG1lbW8uZm9vdGVyIHx8IFtdKSwgLi4uKG1vZHVsZS5sYXlvdXQuZm9vdGVyIHx8IFtdKV0sXG5cdFx0XHR9IGFzIFJlcXVpcmVkPExheW91dERhdGE+O1xuXHRcdH1cblx0XHRyZXR1cm4gbWVtbztcblx0fSwgaW5pdGlhbExheW91dE1vZHVsZURhdGEpO1xuXHRkKCdMYXlvdXQgaXRlbXMgcHJvY2Vzc2VkJywgbGF5b3V0TW9kdWxlRGF0YSk7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcblx0cmV0dXJuIGZ1bmN0aW9uIGxheW91dEhvYyhXcmFwcGVkOiBDb21wb25lbnRUeXBlPGFueT4pIHtcblx0XHRjb25zdCBkaXNwbGF5TmFtZSA9IFdyYXBwZWQuZGlzcGxheU5hbWUgfHwgV3JhcHBlZC5uYW1lIHx8ICcnO1xuXG5cdFx0ZnVuY3Rpb24gV2l0aExheW91dChwcm9wczogdW5rbm93bikge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PD5cblx0XHRcdFx0XHQ8TGF5b3V0IHsuLi5sYXlvdXRNb2R1bGVEYXRhfT5cblx0XHRcdFx0XHRcdDxXcmFwcGVkIHsuLi5wcm9wc30gbGF5b3V0PXtsYXlvdXRNb2R1bGVEYXRhfSAvPlxuXHRcdFx0XHRcdDwvTGF5b3V0PlxuXHRcdFx0XHRcdDxEYXRhSG9va3MgZGF0YUhvb2tzPXtsYXlvdXRNb2R1bGVEYXRhLmRhdGFIb29rc30gLz5cblx0XHRcdFx0XHQ8UGVybWlzc2lvbkhvb2tzIHBlcm1pc3Npb25Ib29rcz17bGF5b3V0TW9kdWxlRGF0YS5wZXJtaXNzaW9uU2VsZWN0b3JIb29rc30gLz5cblx0XHRcdFx0PC8+XG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdFdpdGhMYXlvdXQuZGlzcGxheU5hbWUgPSBgd2l0aExheW91dCgke2Rpc3BsYXlOYW1lfSlgO1xuXG5cdFx0cmV0dXJuIFdpdGhMYXlvdXQ7XG5cdH07XG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHtjcmVhdGVTbGljZUhvb2t9IGZyb20gJ0BpbXBlcml1bS9zdGF0ZSc7XG5pbXBvcnQge2NyZWF0ZVNsaWNlLCBQYXlsb2FkQWN0aW9ufSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcblxuZXhwb3J0IGNvbnN0IHN0YXRlID0gY3JlYXRlU2xpY2Uoe1xuXHRuYW1lOiAnaW1wZXJpdW1MYXlvdXQnLFxuXHRpbml0aWFsU3RhdGU6IHtcblx0XHRpc01vYmlsZTogZmFsc2UsXG5cdFx0cGFyYW1zOiB7fSxcblx0XHRwZXJtaXNzaW9uczoge30gYXMgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4sXG5cdH0sXG5cdHJlZHVjZXJzOiB7XG5cdFx0c2V0TW9iaWxlOiAoc3QsIGFjdGlvbjogUGF5bG9hZEFjdGlvbjxib29sZWFuPikgPT4gKHsuLi5zdCwgaXNNb2JpbGU6IGFjdGlvbi5wYXlsb2FkfSksXG5cdFx0c2V0UGFyYW1zOiAoc3QsIGFjdGlvbjogUGF5bG9hZEFjdGlvbjxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PikgPT4ge1xuXHRcdFx0c3QucGFyYW1zID0gYWN0aW9uLnBheWxvYWQ7XG5cdFx0fSxcblx0XHRzZXRQZXJtaXNzaW9uOiAoc3QsIGFjdGlvbjogUGF5bG9hZEFjdGlvbjx7cGVybWlzc2lvbjogc3RyaW5nOyByZXN1bHQ6IGJvb2xlYW59PikgPT4ge1xuXHRcdFx0c3QucGVybWlzc2lvbnNbYWN0aW9uLnBheWxvYWQucGVybWlzc2lvbl0gPSBhY3Rpb24ucGF5bG9hZC5yZXN1bHQ7XG5cdFx0fSxcblx0fSxcbn0pO1xuXG5leHBvcnQgY29uc3QgdXNlTGF5b3V0U3RhdGUgPSBjcmVhdGVTbGljZUhvb2soc3RhdGUpO1xuXG5leHBvcnQgY29uc3Qge2FjdGlvbnN9ID0gc3RhdGU7XG4iLCJpbXBvcnQgdHlwZSB7SW1wZXJpdW1DbGllbnRNb2R1bGV9IGZyb20gJ0BpbXBlcml1bS9jbGllbnQnO1xuaW1wb3J0IHR5cGUge0xvY2F0aW9ufSBmcm9tICdoaXN0b3J5JztcbmltcG9ydCB0eXBlIHtMYXlvdXREYXRhfSBmcm9tICcuL2xheW91dC90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIFN0YXRlID0gUmVjb3JkPHN0cmluZywgYW55Pjtcbi8qKlxuICogQSBob29rIHRoYXQgc2VsZWN0cyBmcm9tIHJlZHV4IHN0YXRlLlxuICovXG5leHBvcnQgdHlwZSBTdGF0ZVNlbGVjdG9ySG9vayA9ICgpID0+IFN0YXRlO1xuXG5leHBvcnQgdHlwZSBQZXJtaXNzaW9uUmVzdWx0cyA9IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuXG5leHBvcnQgdHlwZSBQZXJtaXNzaW9uU2VsZWN0b3JIb29rID0gKGRhdGE6IERhdGEpID0+IFBlcm1pc3Npb25SZXN1bHRzO1xuXG4vKipcbiAqIFRoZSB2aXNpYmlsaXR5IHF1ZXJ5IGNhbiBlaXRoZXIgYmUgYSBtaW5nbyBxdWVyeSBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGJvb2xlYW4uIFRoZSBkYXRhIGlzIGFuIG9iamVjdCB3aXRoIHRoZSByb3V0ZXIgcGF0aCBtZXJnZWQgd2l0aCBhbnkgc3RhdGUgc2VsZWN0b3IgaG9vayBkYXRhLlxuICovXG5leHBvcnQgdHlwZSBWaXNpYmlsaXR5UXVlcnlGbiA9IChkYXRhOiBEYXRhKSA9PiBib29sZWFuO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGEgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG5cdGxvYzogTG9jYXRpb247XG5cdHJvdXRlOiB7XG5cdFx0cGF0aDogc3RyaW5nW107XG5cdFx0aGFzaDogc3RyaW5nO1xuXHRcdHNlYXJjaDogUmVjb3JkPHN0cmluZywgYW55Pjtcblx0fTtcblx0c3RhdGU6IFN0YXRlO1xuXHRhY3RpdmU6IGJvb2xlYW47XG5cdHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uUmVzdWx0cztcblx0aWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGUgZXh0ZW5kcyBJbXBlcml1bUNsaWVudE1vZHVsZSB7XG5cdGxheW91dDogTGF5b3V0RGF0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGUobW9kdWxlOiBJbXBlcml1bUNsaWVudE1vZHVsZSk6IG1vZHVsZSBpcyBJbXBlcml1bUxheW91dENsaWVudE1vZHVsZSB7XG5cdGNvbnN0IGxheW91dE1vZHVsZSA9IG1vZHVsZSBhcyBJbXBlcml1bUxheW91dENsaWVudE1vZHVsZTtcblx0cmV0dXJuIGxheW91dE1vZHVsZS5sYXlvdXQgIT09IHVuZGVmaW5lZDtcbn1cbiIsImltcG9ydCBtZW1vaXplIGZyb20gJ2xvZGFzaC9tZW1vaXplJztcbmltcG9ydCBzb3J0QnkgZnJvbSAnbG9kYXNoL3NvcnRCeSc7XG5pbXBvcnQgdHlwZSB7V2VpZ2h0ZWRJdGVtfSBmcm9tICcuL2NvbW1vbkl0ZW1zJztcblxuLyoqXG4gKiBTb3J0cyB3ZWlnaHRlZCBpdGVtc1xuICovXG5leHBvcnQgY29uc3Qgc29ydFdlaWdodGVkSXRlbXMgPSBtZW1vaXplKGZ1bmN0aW9uIHNvcnRXZWlnaHRlZEl0ZW1zSW1wbDxUIGV4dGVuZHMgV2VpZ2h0ZWRJdGVtPihpdGVtczogVFtdKSB7XG5cdHJldHVybiBzb3J0QnkoaXRlbXMsIHYgPT4gdi53ZWlnaHQgfHwgMCk7XG59KTtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsyXSEuL3N0eWxlcy5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsyXSEuL3N0eWxlcy5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMl0hLi9zdHlsZXMuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBzdHlsZXNJbkRPTSA9IFtdO1xuXG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcblxuICAgIGlmIChpbmRleEJ5SWRlbnRpZmllciAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdXBkYXRlciA9IGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpO1xuICAgICAgb3B0aW9ucy5ieUluZGV4ID0gaTtcbiAgICAgIHN0eWxlc0luRE9NLnNwbGljZShpLCAwLCB7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IHVwZGF0ZXIsXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cblxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5cbmZ1bmN0aW9uIGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIGFwaSA9IG9wdGlvbnMuZG9tQVBJKG9wdGlvbnMpO1xuICBhcGkudXBkYXRlKG9iaik7XG5cbiAgdmFyIHVwZGF0ZXIgPSBmdW5jdGlvbiB1cGRhdGVyKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXAgJiYgbmV3T2JqLnN1cHBvcnRzID09PSBvYmouc3VwcG9ydHMgJiYgbmV3T2JqLmxheWVyID09PSBvYmoubGF5ZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHVwZGF0ZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG5cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG5cbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG5cbiAgICAgIGlmIChzdHlsZXNJbkRPTVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5ET01bX2luZGV4XS51cGRhdGVyKCk7XG5cbiAgICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpOyAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuXG4gICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG5cbiAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbmZ1bmN0aW9uIGluc2VydEJ5U2VsZWN0b3IoaW5zZXJ0LCBzdHlsZSkge1xuICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGluc2VydCk7XG5cbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG5cbiAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRCeVNlbGVjdG9yOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBvcHRpb25zLnNldEF0dHJpYnV0ZXMoZWxlbWVudCwgb3B0aW9ucy5hdHRyaWJ1dGVzKTtcbiAgb3B0aW9ucy5pbnNlcnQoZWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuXG4gIGlmIChub25jZSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXM7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IFwiXCI7XG5cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cblxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIik7XG4gIH1cblxuICB2YXIgbmVlZExheWVyID0gdHlwZW9mIG9iai5sYXllciAhPT0gXCJ1bmRlZmluZWRcIjtcblxuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG5cbiAgY3NzICs9IG9iai5jc3M7XG5cbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG5cbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cblxuICBvcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxuZnVuY3Rpb24gZG9tQVBJKG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlRWxlbWVudCA9IG9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKG9iaikge1xuICAgICAgYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0eWxlVGFnVHJhbnNmb3JtOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAaW1wZXJpdW0vYXV0aC1jbGllbnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGltcGVyaXVtL3N0YXRlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkByZWR1eGpzL3Rvb2xraXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHRoeC9jb250cm9sc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJkZWJ1Z1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL2NvbXBhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL2Zsb3dSaWdodFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvZnBcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL2dyb3VwQnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL21lbW9pemVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL21lcmdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaC9zb3J0QnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWluZ29cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicXVlcnlzdHJpbmdcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVzcG9uc2l2ZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yb3V0ZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3Qtcm91dGVyLWRvbVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtZGV2LXJ1bnRpbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwic2VtYW50aWMtdWktcmVhY3RcIik7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsImltcG9ydCB0eXBlIHtJbXBlcml1bVN0YXRlQ2xpZW50TW9kdWxlfSBmcm9tICdAaW1wZXJpdW0vc3RhdGUnO1xuaW1wb3J0IHt1c2VNb2JpbGVMYXlvdXR9IGZyb20gJy4vbGF5b3V0L2hvb2tzL3VzZU1vYmlsZUxheW91dCc7XG5pbXBvcnQge3dpdGhMYXlvdXR9IGZyb20gJy4vbGF5b3V0L3dpdGhMYXlvdXQnO1xuaW1wb3J0IHtzdGF0ZX0gZnJvbSAnLi9zdGF0ZSc7XG5pbXBvcnQgdHlwZSB7SW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGV9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gbGF5b3V0Q2xpZW50TW9kdWxlKCk6IEltcGVyaXVtU3RhdGVDbGllbnRNb2R1bGUgJiBJbXBlcml1bUxheW91dENsaWVudE1vZHVsZSB7XG5cdHJldHVybiB7XG5cdFx0bmFtZTogJ0BpbXBlcml1bS9sYXlvdXQnLFxuXHRcdG9yZGVyOiAzMCxcblx0XHRob2NzOiBbd2l0aExheW91dF0sXG5cdFx0c3RhdGUsXG5cdFx0bGF5b3V0OiB7XG5cdFx0XHRkYXRhSG9va3M6IFt1c2VNb2JpbGVMYXlvdXRdLFxuXHRcdH0sXG5cdH07XG59XG5cbmV4cG9ydCB0eXBlIHtMYXlvdXREYXRhfSBmcm9tICcuL2xheW91dC90eXBlcyc7XG5leHBvcnQge3VzZUxheW91dFN0YXRlLCBhY3Rpb25zIGFzIGxheW91dEFjdGlvbnN9IGZyb20gJy4vc3RhdGUnO1xuZXhwb3J0IHtjcmVhdGVQYWdlc30gZnJvbSAnLi9jb250ZW50L2NyZWF0ZVBhZ2VzJztcbmV4cG9ydCB0eXBlIHtJbXBlcml1bUxheW91dENsaWVudE1vZHVsZX0gZnJvbSAnLi90eXBlcyc7XG5leHBvcnQge2RpdmlkZXJTaWRlYmFySXRlbX0gZnJvbSAnLi9jb250ZW50L2RpdmlkZXJTaWRlYmFySXRlbSc7XG4iXSwibmFtZXMiOlsiaXNIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0iLCJ2YWx1ZSIsInBvc2l0aW9uIiwic3RpY2tPbk1vYmlsZSIsImlzUm91dGVJdGVtIiwidG8iLCJleGFjdCIsInN0cmljdCIsInNlbnNpdGl2ZSIsInVzZVRGb3JtIiwiZGVidWciLCJCdXR0b24iLCJGb3JtIiwiSWNvbiIsIk1lc3NhZ2UiLCJQb3B1cCIsImQiLCJBY3Rpb25Gb3JtIiwiaXRlbSIsImRhdGEiLCJvbkhpZGVGb3JtIiwiaW5pdGlhbFZhbHVlcyIsIm9uU3VibWl0Iiwic3VibWl0VmFsdWVzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwidmFsaWRhdGlvblNjaGVtYSIsImhhc0Vycm9ycyIsImhhc1dhcm5pbmdzIiwiaGFuZGxlU3VibWl0IiwiaGFuZGxlQ2hhbmdlIiwidmFsdWVzIiwicmVzZXRGb3JtIiwiZXJyb3JzIiwiZmllbGRFcnJvciIsInNhdmVCdXR0b24iLCJPYmplY3QiLCJmb3JtIiwidXNlU3RhdGUiLCJnZXRDb2xvciIsImdldEljb24iLCJnZXRUZXh0IiwiQWN0aW9uRm9ybVNpZGViYXJJdGVtQ29tcG9uZW50IiwiaXNFZGl0Iiwic2V0SXNFZGl0IiwiaWNvbiIsInVuZGVmaW5lZCIsIkFjdGlvblNpZGViYXJJdGVtQ29tcG9uZW50Iiwib25DbGljayIsImlzRXF1YWwiLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VEaXNwYXRjaCIsIkRhdGFIb29rcyIsImFjdGlvbnMiLCJzb3J0V2VpZ2h0ZWRJdGVtcyIsInVzZUJ1aWxkQ29udGVudERhdGEiLCJIZWFkZXIiLCJTaWRlYmFySXRlbVdyYXBwZXIiLCJzdHlsZXMiLCJ1c2VEZWVwQ29tcGFyZU1lbW9pemUiLCJyZWYiLCJjdXJyZW50IiwidXNlRGVlcENvbXBhcmVFZmZlY3QiLCJjYWxsYmFjayIsImRlcHMiLCJtYXAiLCJDb250ZW50Q29tcG9uZW50IiwicGFnZSIsInBhcmFtcyIsImRpc3BhdGNoIiwic3RhdGVTZWxlY3Rvckhvb2siLCJwZXJtaXNzaW9uU2VsZWN0b3JIb29rIiwic2V0UGFyYW1zIiwiY29udGVudCIsInNpZGViYXJJdGVtcyIsInNpZGViYXIiLCJsZW5ndGgiLCJhY3Rpb25zSGVhZGVyIiwic2IiLCJpbmRleCIsInNpZGViYXJJdGVtIiwicGFyZW50Iiwid3JhcHBlciIsImhlYWRlciIsImZ1bGwiLCJjb250ZW50RnVsbCIsImRhdGFIb29rcyIsIkN1c3RvbVNpZGViYXJJdGVtQ29tcG9uZW50IiwicmVuZGVyIiwiaGVhZGVySW5mbyIsInRpdGxlIiwiTGluayIsImdldFJvdXRlVG8iLCJQbGFpblNpZGViYXJJdGVtIiwiUXVlcnkiLCJEaXZpZGVyIiwiaXNBY3Rpb25Gb3JtU2lkZWJhckl0ZW0iLCJpc0FjdGlvblNpZGViYXJJdGVtIiwiaXNDdXN0b21TaWRlYmFySXRlbSIsImlzRGl2aWRlclNpZGViYXJJdGVtIiwicGFyZW50RGF0YSIsInZpc2libGUiLCJxIiwidGVzdCIsImlzUGFnZSIsImNyZWF0ZVBhZ2VzIiwicm91dGVzIiwicGFnZXMiLCJyZW5kZXJSb3V0ZVByb3BzT2JqIiwia2V5cyIsInR5cGVzIiwicmVkdWNlIiwibWVtbyIsImtleSIsInBnIiwicmVuZGVyUm91dGVQcm9wcyIsImRpdmlkZXJTaWRlYmFySXRlbSIsInRleHQiLCJkaXZpZGVyIiwidXNlQnVpbGREYXRhIiwicm91dGVJdGVtIiwiYnVpbGREYXRhIiwiaWNvbk5hbWUiLCJjb2xvciIsImNvbXBvc2UiLCJGcmFnbWVudCIsInVzZUxvY2F0aW9uIiwiRXhlY3V0ZURhdGFIb29rIiwicGF0aG5hbWUiLCJob29rIiwiZm4iLCJBcnJheSIsImlzQXJyYXkiLCJyb3V0ZU1hdGNoIiwicm91dGVQYXJhbXMiLCJkYXRhSG9vayIsImRoIiwiaW5kZXgyIiwiRXhlY3V0ZVBlcm1pc3Npb25Ib29rIiwicGVybWlzc2lvbkhvb2siLCJwZXJtcyIsImZvckVhY2giLCJwZXJtaXNzaW9uIiwic2V0UGVybWlzc2lvbiIsInJlc3VsdCIsIlBlcm1pc3Npb25Ib29rcyIsInBlcm1pc3Npb25Ib29rcyIsInVzZUF1dGgiLCJjb21wYWN0IiwibWVyZ2UiLCJxdWVyeVN0cmluZyIsInVzZUxheW91dFN0YXRlIiwidXNlSXNBY3RpdmVSb3V0ZSIsInVzZVNlbGVjdFBlcm1pc3Npb24iLCJ1c2VTZWxlY3RTdGF0ZSIsImlkIiwicGVybWlzc2lvbnMiLCJzdGF0ZSIsImxvYyIsInJvdXRlIiwicGF0aCIsInNwbGl0IiwiaGFzaCIsInNlYXJjaCIsInBhcnNlIiwiYWN0aXZlIiwicGVybWlzc2lvbnNYIiwibmV3RGF0YSIsInVzZVJvdXRlTWF0Y2giLCJyb3V0ZU1hdGNoT2JqZWN0IiwiZmxvd1JpZ2h0IiwiZmluYWxTZWxlY3Rvckhvb2siLCJDdXN0b21MYXlvdXRJdGVtQ29tcG9uZW50IiwiQWNjb3JkaW9uIiwiRHJvcGRvd24iLCJNZW51IiwiRHJvcGRvd25JdGVtIiwidmVydGljYWwiLCJjaGlsZHJlbiIsIm9wZW4iLCJzZXRPcGVuIiwidmVydGljYWxEcm9wZG93blRpdGxlIiwiZXYiLCJzdG9wUHJvcGFnYXRpb24iLCJ2ZXJ0aWNhbERyb3Bkb3duSWNvblJvdGF0ZWQiLCJ2ZXJ0aWNhbERyb3Bkb3duSWNvbiIsInZlcnRpY2FsRHJvcGRvd25Db250ZW50IiwiU2VnbWVudCIsIm1vdmVJdGVtcyIsIkxheW91dEl0ZW1CYXIiLCJTZWNvbmRhcnlNZW51VG9nZ2xlSXRlbSIsIkxheW91dCIsImZvb3RlciIsInByaW1hcnlNZW51Iiwic3RhdHVzYmFyIiwic2Vjb25kYXJ5TWVudSIsImlzTW9iaWxlIiwibWVudU9wZW4iLCJzZXRNZW51T3BlbiIsInByaW1hcnlNZW51VG9nZ2xlIiwid2VpZ2h0IiwicHJpbWFyeU1lbnVJdGVtcyIsImZpbHRlciIsInYiLCJzZWNvbmRhcnlNZW51SXRlbXMiLCJtZW51Iiwic2Vjb25kYXJ5TWVudUNvbXAiLCJzZWNvbmRhcnlNZW51SGlkZGVuIiwiZm9vdGVySXRlbXMiLCJmb290ZXJDb21wIiwic3RhdHVzYmFySXRlbXMiLCJzdGF0dXNiYXJDb21wIiwibWVudWJhciIsImNvbnRlbnRXcmFwcGVyIiwic3BsaXRQb3NpdGlvbmVkSXRlbXMiLCJMYXlvdXRJdGVtV3JhcHBlciIsIml0ZW1zIiwicmVzdCIsImltcyIsImxlZnRJdGVtcyIsInJpZ2h0SXRlbXMiLCJpc0N1c3RvbUxheW91dEl0ZW0iLCJpc0Ryb3Bkb3duTGF5b3V0SXRlbSIsImlzTWVudUxheW91dEl0ZW0iLCJNZW51SXRlbSIsIlBsYWluSXRlbSIsImFzIiwiZHJvcGRvd24iLCJJdGVtIiwibGlua1BhcmFtZXRlcnMiLCJsaW5rUGFyYW1zIiwiSXRlbVgiLCJpY29uUm90YXRlZCIsInVzZU1lZGlhUXVlcnkiLCJ1c2VNb2JpbGVMYXlvdXQiLCJpc01vYmlsZVgiLCJxdWVyeSIsInNldE1vYmlsZSIsImdyb3VwQnkiLCJwdWxsSXRlbXMiLCJwdWxsZWQiLCJtb3ZlVG9LZXkiLCJwdXNoIiwiYWRkSXRlbXMiLCJuZXdJdGVtcyIsIml0ZW1zTWludXNQdWxsZWQiLCJpc0ltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlIiwiaW5pdGlhbExheW91dE1vZHVsZURhdGEiLCJwZXJtaXNzaW9uU2VsZWN0b3JIb29rcyIsIndpdGhMYXlvdXQiLCJjbGllbnQiLCJsYXlvdXRNb2R1bGVEYXRhIiwibW9kdWxlcyIsIm1vZHVsZSIsImxheW91dCIsImxheW91dEhvYyIsIldyYXBwZWQiLCJkaXNwbGF5TmFtZSIsIm5hbWUiLCJXaXRoTGF5b3V0IiwicHJvcHMiLCJjcmVhdGVTbGljZUhvb2siLCJjcmVhdGVTbGljZSIsImluaXRpYWxTdGF0ZSIsInJlZHVjZXJzIiwic3QiLCJhY3Rpb24iLCJwYXlsb2FkIiwibGF5b3V0TW9kdWxlIiwibWVtb2l6ZSIsInNvcnRCeSIsInNvcnRXZWlnaHRlZEl0ZW1zSW1wbCIsImxheW91dENsaWVudE1vZHVsZSIsIm9yZGVyIiwiaG9jcyIsImxheW91dEFjdGlvbnMiXSwic291cmNlUm9vdCI6IiJ9
|