tango-app-ui-manage-users 3.7.0-alpha.2 → 3.7.0-alpha.4
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/esm2022/lib/components/tango-manage-users/assign-store-popup/assign-store-popup.component.mjs +9 -7
- package/esm2022/lib/components/tango-manage-users/brand-user/brand-user.component.mjs +24 -18
- package/esm2022/lib/components/tango-manage-users/user-table/alert-popup/alert-popup.component.mjs +23 -12
- package/esm2022/lib/components-v2/add-users/add-users.component.mjs +3 -3
- package/esm2022/lib/components-v2/chip-select/chip-select.component.mjs +178 -0
- package/esm2022/lib/components-v2/teams-creation/teams-creation.component.mjs +21 -9
- package/esm2022/lib/components-v2/teams-list/teams-list.component.mjs +36 -25
- package/esm2022/lib/components-v2/users-manage/users-manage.component.mjs +12 -9
- package/esm2022/lib/services-v2/manage-users.service.mjs +5 -1
- package/esm2022/lib/tango-manage-users.module.mjs +6 -3
- package/fesm2022/tango-app-ui-manage-users.mjs +301 -82
- package/fesm2022/tango-app-ui-manage-users.mjs.map +1 -1
- package/lib/components/tango-manage-users/brand-user/brand-user.component.d.ts +4 -1
- package/lib/components/tango-manage-users/user-table/alert-popup/alert-popup.component.d.ts +8 -4
- package/lib/components-v2/chip-select/chip-select.component.d.ts +36 -0
- package/lib/components-v2/teams-creation/teams-creation.component.d.ts +3 -0
- package/lib/components-v2/teams-list/teams-list.component.d.ts +2 -0
- package/lib/components-v2/users-manage/users-manage.component.d.ts +3 -1
- package/lib/services-v2/manage-users.service.d.ts +2 -0
- package/lib/tango-manage-users.module.d.ts +8 -7
- package/package.json +1 -1
|
@@ -282,6 +282,7 @@ export class AssignStorePopupComponent {
|
|
|
282
282
|
onUpload(e) {
|
|
283
283
|
let data = [];
|
|
284
284
|
let error = [];
|
|
285
|
+
let sheetName = '';
|
|
285
286
|
const file = e.target.files[0];
|
|
286
287
|
const allowedExtensions = /\.(xls|xlsx|csv)$/i;
|
|
287
288
|
const allowedTypes = [
|
|
@@ -308,17 +309,18 @@ export class AssignStorePopupComponent {
|
|
|
308
309
|
const ws = wb.Sheets[wsname];
|
|
309
310
|
data = utils.sheet_to_json(ws, { defval: "", raw: true });
|
|
310
311
|
this.excelData = data;
|
|
311
|
-
|
|
312
|
-
this.fileError = true;
|
|
313
|
-
this.ts.getErrorToast("Please Upload the Valid File");
|
|
314
|
-
return;
|
|
315
|
-
}
|
|
312
|
+
sheetName = wb.SheetNames[0];
|
|
316
313
|
};
|
|
317
314
|
reader.readAsBinaryString(target.files[0]);
|
|
318
315
|
reader.onloadend = async (e) => {
|
|
319
316
|
let processedArray = [];
|
|
317
|
+
if (sheetName != "StoreData") {
|
|
318
|
+
this.fileError = true;
|
|
319
|
+
this.ts.getErrorToast("Can you confirm whether the sheet name is StoreData ?");
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
320
322
|
if (!data?.length) {
|
|
321
|
-
this.ts.getErrorToast("Please upload a valid file
|
|
323
|
+
this.ts.getErrorToast("Please upload a valid file");
|
|
322
324
|
return;
|
|
323
325
|
}
|
|
324
326
|
const requiredKeys = ['Store Name/Store Id']; // Must always be present
|
|
@@ -545,4 +547,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
545
547
|
type: ViewChild,
|
|
546
548
|
args: ['afterValidation']
|
|
547
549
|
}] } });
|
|
548
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWduLXN0b3JlLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS11c2Vycy9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tbWFuYWdlLXVzZXJzL2Fzc2lnbi1zdG9yZS1wb3B1cC9hc3NpZ24tc3RvcmUtcG9wdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXVzZXJzL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1tYW5hZ2UtdXNlcnMvYXNzaWduLXN0b3JlLXBvcHVwL2Fzc2lnbi1zdG9yZS1wb3B1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssRUFDRyxTQUFTLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBWSxJQUFJLEVBQUUsS0FBSyxFQUFhLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBV3hELE1BQU0sT0FBTyx5QkFBeUI7SUFtQjFCO0lBQ0E7SUFDQTtJQUNEO0lBQ0M7SUF0QkQsSUFBSSxDQUFNO0lBQ25CLE1BQU0sR0FBVyxRQUFRLENBQUM7SUFDMUIsTUFBTSxHQUFVLEVBQUUsQ0FBQztJQUNuQixRQUFRLEdBQVUsRUFBRSxDQUFDO0lBQ3JCLEtBQUssR0FBTyxFQUFFLENBQUM7SUFDZixjQUFjLENBQU07SUFDcEIsUUFBUSxDQUFjO0lBQ3RCLFFBQVEsQ0FBTTtJQUNkLFFBQVEsQ0FBUztJQUNqQixrQkFBa0IsQ0FBSTtJQUN0QixvQkFBb0IsQ0FBSTtJQUN4QixpQkFBaUIsQ0FBSztJQUNFLFNBQVMsQ0FBYTtJQUNoQixlQUFlLENBQU07SUFFbkQsV0FBVyxDQUFNO0lBRWpCLFlBQ1UsV0FBd0IsRUFDeEIsRUFBcUIsRUFDckIsRUFBZ0IsRUFDakIsV0FBMkIsRUFDMUIsWUFB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QUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ2hDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxvQkFBb0IsQ0FBQztJQUN4RixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7d0dBcmtCVSx5QkFBeUI7NEZBQXpCLHlCQUF5QixtV0NyQnRDLG85bkJBK1JjOzs0RkQxUUQseUJBQXlCO2tCQVRyQyxTQUFTOytCQUNFLHdCQUF3QixRQUk1Qjt3QkFDSixrQkFBa0IsRUFBRSxpQkFBaUI7cUJBQ3RDOytMQUdRLElBQUk7c0JBQVosS0FBSztnQkFZa0IsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNRLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCwgVmlld0NoaWxkLEVsZW1lbnRSZWZcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy91c2VyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1zaGFyZWRcIjtcclxuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwsIE5nYk1vZGFsLCBOZ2JNb2RhbFJlZiB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQgeyBXb3JrQm9vaywgcmVhZCwgdXRpbHMsIFdvcmtTaGVldCB9IGZyb20gXCJ4bHN4XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItYXNzaWduLXN0b3JlLXBvcHVwXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9hc3NpZ24tc3RvcmUtcG9wdXAuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2Fzc2lnbi1zdG9yZS1wb3B1cC5jb21wb25lbnQuc2Nzc1wiLFxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxyXG4gIGhvc3Q6IHtcclxuICAgICcoZG9jdW1lbnQ6Y2xpY2spJzogJ29uQ2xpY2soJGV2ZW50KScsXHJcbiAgfSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFzc2lnblN0b3JlUG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHVzZXI6IGFueTtcclxuICBzZWxlY3Q6IHN0cmluZyA9IFwic3RvcmVzXCI7XHJcbiAgc3RvcmVzOiBhbnlbXSA9IFtdO1xyXG4gIGNsdXN0ZXJzOiBhbnlbXSA9IFtdO1xyXG4gIHRlYW1zOmFueVtdPVtdO1xyXG4gICRoZWFkZXJGaWx0ZXJzOiBhbnk7XHJcbiAgbW9kYWxSZWY6IE5nYk1vZGFsUmVmO1xyXG4gIHVzZXJEYXRhOiBhbnk7XHJcbiAgdXNlclR5cGU6IHN0cmluZztcclxuICBzZWxlY3RlZFRleHRzdG9yZXM6YW55XHJcbiAgc2VsZWN0ZWRUZXh0Y2x1c3RlcnM6YW55XHJcbiAgc2VsZWN0ZWRUZXh0dGVhbXM6IGFueVxyXG4gIEBWaWV3Q2hpbGQoXCJpbnB1dEZpbGVcIikgaW5wdXRGaWxlOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2FmdGVyVmFsaWRhdGlvbicpIGFmdGVyVmFsaWRhdGlvbjogYW55O1xyXG5cclxuICB1cGxvYWRQb3BVcDogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHRzOiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsXHJcbiAgKSB7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLmRhdGFTdWJqZWN0LnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnVzZXJEYXRhID0gZGF0YTtcclxuICAgICAgICB0aGlzLnVzZXJUeXBlID0gZGF0YSA9PSBcIlRhbmdvIFVzZXJcIiA/IFwidGFuZ29cIiA6IFwiY2xpZW50XCI7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIGxldCBkYXRhOiBhbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgfHwgXCJcIik7XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICB0aGlzLiRoZWFkZXJGaWx0ZXJzID0gZGF0YTtcclxuICAgIH0gZWxzZSBpZighZGF0YSl7XHJcbiAgICAgIGxldCB1c2VyOiBhbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VyLWluZm8nKSB8fCAnJyk7XHJcbiAgICAgIHRoaXMuJGhlYWRlckZpbHRlcnMgPSB1c2VyO1xyXG4gICAgICB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCA9IHVzZXIuY2xpZW50SWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZ2V0QXNzaWduU3RvcmVMaXN0KCk7XHJcbiAgICB0aGlzLmdldGNsdXN0ZXJMaXN0KCk7XHJcbiAgICB0aGlzLmdldHRlYW1zTGlzdCgpICAgIFxyXG4gIH1cclxuXHJcbiAgbG9hZFVzZXJBc3NpZ25EZXRhaWxzKCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAuZ2V0VXNlckFzc2lnbkRhdGEoe1xyXG4gICAgICAgIGVtYWlsOiB0aGlzLnVzZXIuZW1haWwsICAgICAgXHJcbiAgICAgIH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkU2VsZWN0ZWRTdG9yZXMocmVzLmRhdGEuc3RvcmVzKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkU2VsZWN0ZWRjbHVzdGVycyhyZXMuZGF0YS5jbHVzdGVycyk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFNlbGVjdGVkdGVhbXMocmVzLmRhdGEudGVhbXMpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9IFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHsgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRBc3NpZ25TdG9yZUxpc3QoKSB7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRBc3NpZ25TdG9yZXMoeyBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQgfSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFPYmplY3RbMF0uU3RvcmVzID0gcmVzLmRhdGEucmVzdWx0O1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRVc2VyQXNzaWduRGV0YWlscygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGF0YU9iamVjdFswXS5TdG9yZXMgPSBbXTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRjbHVzdGVyTGlzdCgpIHtcclxuICAgIHRoaXMudXNlclNlcnZpY2VcclxuICAgICAgLmdldEFzc2lnbmNsdXN0ZXJzKHsgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50IH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhT2JqZWN0WzFdLmNsdXN0ZXJzID0gcmVzLmRhdGEucmVzdWx0O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFPYmplY3RbMV0uY2x1c3RlcnMgPSBbXTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIGdldHRlYW1zTGlzdCgpIHtcclxuICAgIHRoaXMudXNlclNlcnZpY2VcclxuICAgICAgLmdldEFzc2lnbnRlYW1zKHsgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50IH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhT2JqZWN0WzJdLnRlYW1zID0gcmVzLmRhdGEucmVzdWx0O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8gaWYgKHRoaXMudXNlci5hc3NpZ25lZFZhbHVlKSB7XHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5sb2FkU2VsZWN0ZWR0ZWFtcyh0aGlzLnVzZXIuYXNzaWduZWRWYWx1ZSk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFPYmplY3RbMl0uY2x1c3RlcnMgPSBbXTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdG9yZXNUeXBlKGU6IGFueSkge1xyXG4gICAgdGhpcy5PcGVuZHJvcGRvd24gPSBmYWxzZTtcclxuICAgIC8vIHRoaXMucmVzZXRjbHVzdGVycygpO1xyXG4gICAgLy8gdGhpcy5yZXNldFN0b3JlKCk7XHJcbiAgICBpZiAodGhpcy5zZWxlY3QgPT0gXCJzdG9yZXNcIikge1xyXG4gICAgICBpZih0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0ubGVuZ3RoPT0wKXtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGV4dHN0b3JlcyA9IFwiU2VsZWN0IFN0b3Jlc1wiO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGV4dHN0b3JlcyA9IGAke3RoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXS5sZW5ndGh9IFN0b3JlcyBTZWxlY3RlZGA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZih0aGlzLnNlbGVjdCA9PSdjbHVzdGVycycpIHtcclxuICAgICAgaWYodGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzFdLmxlbmd0aD09MCl7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRleHRjbHVzdGVycyA9IFwiU2VsZWN0IENsdXN0ZXJzXCI7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZXh0Y2x1c3RlcnMgPSBgJHt0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMV0ubGVuZ3RofSBDbHVzdGVycyBTZWxlY3RlZGA7XHJcbiAgICAgIH0gICAgICBcclxuICAgIH1lbHNlIGlmKHRoaXMuc2VsZWN0ID09J3RlYW1zJykge1xyXG4gICAgICBpZih0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl0ubGVuZ3RoPT0wKXtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGV4dHRlYW1zID0gXCJTZWxlY3QgVGVhbXNcIjtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRleHR0ZWFtcyA9IGAke3RoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXS5sZW5ndGh9IFRlYW1zIFNlbGVjdGVkYDtcclxuICAgICAgfSAgICAgIFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRTdG9yZSgpIHtcclxuICAgIHRoaXMuZGF0YU9iamVjdFswXS5TdG9yZXMgPSBbXTtcclxuICAgIHRoaXMuc3RvcmVzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0gPSBbXTtcclxuICB9XHJcblxyXG4gIHJlc2V0Y2x1c3RlcnMoKSB7XHJcbiAgICB0aGlzLmRhdGFPYmplY3RbMV0uY2x1c3RlcnMgPSBbXTtcclxuICAgIHRoaXMuY2x1c3RlcnMgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsxXSA9IFtdO1xyXG4gIH1cclxuICByZXNldFRlYW1zKCkge1xyXG4gICAgdGhpcy5kYXRhT2JqZWN0WzJdLnRlYW1zID0gW107XHJcbiAgICB0aGlzLnRlYW1zID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl0gPSBbXTtcclxuICB9XHJcbiAgT3BlbmRyb3Bkb3duOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZGF0YU9iamVjdDogYW55W10gPSBbXHJcbiAgICB7IERlc2NyaXB0aW9uOiBcIlN0b3Jlc1wiLCBTdG9yZXM6IFtdIH0sXHJcbiAgICB7IERlc2NyaXB0aW9uOiBcIkNsdXN0ZXJzXCIsIGNsdXN0ZXJzOiBbXSB9LFxyXG4gICAgeyBEZXNjcmlwdGlvbjogXCJUZWFtc1wiLCB0ZWFtczogW10gfSxcclxuXHJcbiAgXTtcclxuICBzZWxlY3RlZFZhbHVlc0FycmF5OiBhbnlbXSA9IFtbXSwgW10sW11dO1xyXG4gIHNlbGVjdGVkVGV4dDogc3RyaW5nO1xyXG5cclxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoIXRhcmdldC5jbG9zZXN0KFwiLmRyb3Bkb3duMVwiKSkge1xyXG4gICAgICB0aGlzLk9wZW5kcm9wZG93biA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdChcIi5kcm9wZG93bi1jb250ZW50XCIpKSB7XHJcbiAgICAgIHRoaXMuZGF0YU9iamVjdC5mb3JFYWNoKChpdGVtOiBhbnksIGk6IGFueSkgPT4ge1xyXG4gICAgICAgIGl0ZW0uaXNPcGVuID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgRHJvcGRvd24odmFsdWU6IGFueSwgaW5kZXg6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5kYXRhT2JqZWN0LmZvckVhY2goKGl0ZW06IGFueSwgaTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpICE9PSBpbmRleCkge1xyXG4gICAgICAgIGl0ZW0uaXNPcGVuID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5kYXRhT2JqZWN0W2luZGV4XS5pc09wZW4gPSAhdGhpcy5kYXRhT2JqZWN0W2luZGV4XS5pc09wZW47XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDaGVja2JveFN0b3JlcyhcclxuICAgIGV2ZW50OiBhbnksXHJcbiAgICBzdG9yZTogYW55LFxyXG4gICAgaW5kZXg6IG51bWJlcixcclxuICAgIHN1YkluZGV4OiBudW1iZXJcclxuICApIHtcclxuICAgIGNvbnN0IHN0b3JlcyA9IHRoaXMuZGF0YU9iamVjdFswXS5TdG9yZXM7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0gPSB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0gfHwgW107XHJcblxyXG4gICAgaWYgKHN0b3JlID09PSBcIlNlbGVjdCBBbGxcIikge1xyXG4gICAgICBjb25zdCBjaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICAgIHN0b3Jlcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IChpdGVtLmNoZWNrZWQgPSBjaGVja2VkKSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXSA9IGNoZWNrZWQgPyBbLi4uc3RvcmVzXSA6IFtdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaXNDaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICAgIGNvbnN0IHN0b3JlSW5kZXggPSB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0uZmluZEluZGV4KFxyXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0uc3RvcmVOYW1lID09PSBzdG9yZS5zdG9yZU5hbWVcclxuICAgICAgKTtcclxuICAgICAgaXNDaGVja2VkXHJcbiAgICAgICAgPyB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0ucHVzaChzdG9yZSlcclxuICAgICAgICA6IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXS5zcGxpY2Uoc3RvcmVJbmRleCwgMSk7XHJcbiAgICAgIHRoaXMuZGF0YU9iamVjdFtpbmRleF0uU3RvcmVzW3N1YkluZGV4XS5jaGVja2VkID0gaXNDaGVja2VkO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdEFsbENoZWNrZWQgPSBzdG9yZXMuZXZlcnkoKGl0ZW06IGFueSkgPT4gaXRlbS5jaGVja2VkKTtcclxuICAgIChcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYHNlbGVjdGFsbCR7aW5kZXh9YCkgYXMgSFRNTElucHV0RWxlbWVudFxyXG4gICAgKT8uc2V0QXR0cmlidXRlKFwiY2hlY2tlZFwiLCBTdHJpbmcoc2VsZWN0QWxsQ2hlY2tlZCkpO1xyXG4gICAgKFxyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgb3B0aW9uJHtzdG9yZS5zdG9yZU5hbWV9YCkgYXMgSFRNTElucHV0RWxlbWVudFxyXG4gICAgKT8uc2V0QXR0cmlidXRlKFwiY2hlY2tlZFwiLCBTdHJpbmcoZXZlbnQudGFyZ2V0LmNoZWNrZWQpKTtcclxuXHJcbiAgICB0aGlzLmxvYWRUYWJsZSh0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRleHRzdG9yZXMgPSBgJHt0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0ubGVuZ3RofSBTdG9yZXMgU2VsZWN0ZWRgO1xyXG4gIH1cclxuICB0b2dnbGVDaGVja2JveFRlYW1zKFxyXG4gICAgZXZlbnQ6IGFueSxcclxuICAgIHRlYW06IGFueSxcclxuICAgIGluZGV4OiBudW1iZXIsXHJcbiAgICBzdWJJbmRleDogbnVtYmVyXHJcbiAgKSB7XHJcbiAgICBcclxuICAgIGNvbnN0IHRlYW1zID0gdGhpcy5kYXRhT2JqZWN0WzJdLnRlYW1zO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdID0gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdIHx8IFtdO1xyXG5cclxuICAgIGlmICh0ZWFtID09PSBcIlNlbGVjdCBBbGxcIikge1xyXG4gICAgICBjb25zdCBjaGVja2VkID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICAgIHRlYW1zLmZvckVhY2goKGl0ZW06IGFueSkgPT4gKGl0ZW0uY2hlY2tlZCA9IGNoZWNrZWQpKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdID0gY2hlY2tlZCA/IFsuLi50ZWFtc10gOiBbXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGlzQ2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG4gICAgICBjb25zdCBzdG9yZUluZGV4ID0gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdLmZpbmRJbmRleChcclxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnVzZXJOYW1lID09PSB0ZWFtLnVzZXJOYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGlzQ2hlY2tlZFxyXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdLnB1c2godGVhbSlcclxuICAgICAgICA6IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXS5zcGxpY2Uoc3RvcmVJbmRleCwgMSk7XHJcbiAgICAgIHRoaXMuZGF0YU9iamVjdFtpbmRleF0udGVhbXNbc3ViSW5kZXhdLmNoZWNrZWQgPSBpc0NoZWNrZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0QWxsQ2hlY2tlZCA9IHRlYW1zLmV2ZXJ5KChpdGVtOiBhbnkpID0+IGl0ZW0uY2hlY2tlZCk7XHJcbiAgICAoXHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBzZWxlY3RhbGwke2luZGV4fWApIGFzIEhUTUxJbnB1dEVsZW1lbnRcclxuICAgICk/LnNldEF0dHJpYnV0ZShcImNoZWNrZWRcIiwgU3RyaW5nKHNlbGVjdEFsbENoZWNrZWQpKTtcclxuICAgIChcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYG9wdGlvbiR7dGVhbXMuc3RvcmVOYW1lfWApIGFzIEhUTUxJbnB1dEVsZW1lbnRcclxuICAgICk/LnNldEF0dHJpYnV0ZShcImNoZWNrZWRcIiwgU3RyaW5nKGV2ZW50LnRhcmdldC5jaGVja2VkKSk7XHJcblxyXG4gICAgdGhpcy5sb2FkVGFibGUodGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRUZXh0dGVhbXMgPSBgJHt0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl0ubGVuZ3RofSBUZWFtcyBTZWxlY3RlZGA7XHJcbiAgfVxyXG5cclxuICBsb2FkVGFibGUodmFsdWVzOiBhbnlbXSkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ID09IFwic3RvcmVzXCIpIHtcclxuICAgICAgdGhpcy5zdG9yZXMgPSB2YWx1ZXM7XHJcbiAgICB9IGVsc2UgaWYodGhpcy5zZWxlY3QgPT0gXCJjbHVzdGVyc1wiKSB7XHJcbiAgICAgIHRoaXMuY2x1c3RlcnMgPSB2YWx1ZXM7XHJcbiAgICB9ZWxzZSBpZih0aGlzLnNlbGVjdCA9PSBcInRlYW1zXCIpIHtcclxuICAgICAgdGhpcy50ZWFtcyA9IHZhbHVlcztcclxuICAgIH1cclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25zdG9yZVNlbGVjdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0gID0gZXZlbnRcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBvbmdyb3VwU2VsZWN0KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsxXSAgPSBldmVudFxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfSAgXHJcbiAgb25UZWFtc1NlbGVjdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl0gID0gZXZlbnRcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBcclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBpZiAodGhpcy51c2VyLmFzc2lnbmVkVmFsdWUgJiYgdGhpcy51c2VyLmFzc2lnbmVkVmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucmVBc3NpZ25TdWJtaXQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYXNzaWduU3VibWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAgZXhjZWxFcnJvcjogYW55O1xyXG4gIGV4Y2VsRGF0YTogYW55ID0gW11cclxuICB2YWxpZGF0ZWRPdXRwdXQ6IGFueSA9IFtdO1xyXG5cclxuICBnZXRTdG9yZUNvdW50cyhkYXRhOiBhbnkpIHtcclxuXHJcbiAgICBjb25zdCB1bmlxdWVVc2VyTmFtZXMgPSBuZXcgU2V0KGRhdGE/Lm1hcCgoaXRlbTogYW55KSA9PiBpdGVtWydTdG9yZSBOYW1lL1N0b3JlIElkJ10pKTtcclxuICAgIHJldHVybiB1bmlxdWVVc2VyTmFtZXMuc2l6ZTtcclxuXHJcbiAgfVxyXG5cclxuICBmaWxlRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhcGlEYXRhOiBhbnkgPSBbXTtcclxuXHJcbiAgb25VcGxvYWQoZTphbnkpIHtcclxuICAgIGxldCBkYXRhOiBhbnkgPSBbXTtcclxuICAgIGxldCBlcnJvcjogYW55ID0gW107XHJcblxyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGUudGFyZ2V0LmZpbGVzWzBdO1xyXG4gIGNvbnN0IGFsbG93ZWRFeHRlbnNpb25zID0gL1xcLih4bHN8eGxzeHxjc3YpJC9pO1xyXG4gIGNvbnN0IGFsbG93ZWRUeXBlcyA9IFtcclxuICAgIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRcIiwgXHJcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXCJ0ZXh0L2NzdlwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXCJhcHBsaWNhdGlvbi9jc3ZcIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICBdO1xyXG5cclxuICBpZiAoIWFsbG93ZWRFeHRlbnNpb25zLnRlc3QoZmlsZS5uYW1lKSB8fCAhYWxsb3dlZFR5cGVzLmluY2x1ZGVzKGZpbGUudHlwZSkpIHtcclxuICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIk9ubHkgLnhsc3gsIG9yIC5jc3YgZmlsZXMgYXJlIGFsbG93ZWQuXCIpO1xyXG4gICAgdGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICAgIGNvbnN0IHRhcmdldDogRGF0YVRyYW5zZmVyID0gPERhdGFUcmFuc2Zlcj5lLnRhcmdldDtcclxuICAgIGlmICh0YXJnZXQuZmlsZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgIH1cclxuICAgIGlmICghIXRhcmdldC5maWxlc1swXS5uYW1lLm1hdGNoKC8oLnhsc3wueGxzeCkvKSkge1xyXG4gICAgICBjb25zdCByZWFkZXI6IEZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGJzdHI6IHN0cmluZyA9IGUudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgICBjb25zdCB3YjogV29ya0Jvb2sgPSByZWFkKGJzdHIsIHsgdHlwZTogXCJiaW5hcnlcIiB9KTtcclxuICAgICAgICBjb25zdCB3c25hbWU6IHN0cmluZyA9IHdiLlNoZWV0TmFtZXNbMF07XHJcbiAgICAgICAgY29uc3Qgd3M6IFdvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWVdO1xyXG5cclxuICAgICAgICBkYXRhID0gdXRpbHMuc2hlZXRfdG9fanNvbih3cywge2RlZnZhbDogXCJcIixyYXc6dHJ1ZX0pO1xyXG4gICAgICAgIHRoaXMuZXhjZWxEYXRhID0gZGF0YTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAod2IuU2hlZXROYW1lc1swXSAhPSBcIlN0b3JlRGF0YVwiKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVFcnJvciA9ICB0cnVlXHJcbiAgICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiUGxlYXNlIFVwbG9hZCB0aGUgVmFsaWQgRmlsZVwiKTtcclxuICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhcmdldC5maWxlc1swXSk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSBhc3luYyAoZSkgPT4ge1xyXG4gICAgICAgIGxldCBwcm9jZXNzZWRBcnJheTogYW55W10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKCFkYXRhPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiUGxlYXNlIHVwbG9hZCBhIHZhbGlkIGZpbGUgMlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCByZXF1aXJlZEtleXMgPSBbJ1N0b3JlIE5hbWUvU3RvcmUgSWQnXSAvLyBNdXN0IGFsd2F5cyBiZSBwcmVzZW50XHJcbiAgICAgICAgLy8gY29uc3Qgb3B0aW9uYWxLZXlzID0gWyd1c2VyUGhvbmUnLCAnY2l0eSddIDogWydjaXR5J107XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IGRhdGEuc29tZSgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaXRlbSk7XHJcbiAgICAgICAgICBjb25zdCBoYXNSZXF1aXJlZEtleXMgPSByZXF1aXJlZEtleXMuZXZlcnkoa2V5ID0+IGtleXMuaW5jbHVkZXMoa2V5KSk7XHJcbiAgICAgICAgICBjb25zdCBhbGxLZXlzQXJlQWxsb3dlZCA9IGtleXMuZXZlcnkoa2V5ID0+IFxyXG4gICAgICAgICAgICByZXF1aXJlZEtleXMuaW5jbHVkZXMoa2V5KVxyXG4gICAgICAgICAgICAvLyB8fCBvcHRpb25hbEtleXMuaW5jbHVkZXMoa2V5KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybiBoYXNSZXF1aXJlZEtleXMgJiYgYWxsS2V5c0FyZUFsbG93ZWQ7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICghaXNWYWxpZCkge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KCdQbGVhc2UgdXBsb2FkIGEgdmFsaWQgZmlsZS4nKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRhdGE/LmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCAhZWxlbWVudD8uWydTdG9yZSBOYW1lL1N0b3JlIElkJ10gfHwgZWxlbWVudD8uWydTdG9yZSBOYW1lL1N0b3JlIElkJ10gPT0gJycgfHwgZWxlbWVudD8uWydTdG9yZSBOYW1lL1N0b3JlIElkJ10gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBlcnJvci5wdXNoKGBJbnZhbGlkIFN0b3JlIE5hbWUvU3RvcmUgSWQgLSBBJHtpbmRleCArIDJ9YClcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHByb2Nlc3NlZEFycmF5LnB1c2goe1xyXG4gICAgICAgICAgICAgIHZhbHVlOiBkYXRhW2luZGV4XVsnU3RvcmUgTmFtZS9TdG9yZSBJZCddXHJcbiAgICAgICAgICAgIH0pIFxyXG4gICAgICAgICAgfSBcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmIChlcnJvci5sZW5ndGgpIHtcclxuICAgICAgICAgIGNvbnN0IHBvcHVwY29udGVudCA9IHtcclxuICAgICAgICAgICAgZGlzcGxheXByb3A6IGZhbHNlLFxyXG4gICAgICAgICAgICBpbWFnZXNyYzogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgICAgICAgIHRpdGxlOiBgSW52YWxpZCBkZXRhaWxzIWAsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGBQbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGFuZCBjb21wbGV0ZSBzdG9yZSBpbmZvcm1hdGlvbi5gLFxyXG4gICAgICAgICAgICBidXR0b250eXBlOiAnZXJyb3InLFxyXG4gICAgICAgICAgICBlcnJvcjogZXJyb3JcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYWZ0ZXJVcGxsb2FkKHBvcHVwY29udGVudClcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKHRoaXMuZmlsZUVycm9yKXtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgIFxyXG4gICAgICAgIHByb2Nlc3NlZEFycmF5ID0gcHJvY2Vzc2VkQXJyYXkubWFwKChlbDogYW55KSA9PiB7IHJldHVybiB7IHN0b3JlOiBlbD8udmFsdWUgfSB9KTtcclxuICAgICAgICBcclxuICAgICAgICAgdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAgICAgICAgIC5idWxrc3RvcmVBc3NpZ24oe1xyXG4gICAgICAgICAgICAgICAgdXNlckVtYWlsOnRoaXMudXNlci5lbWFpbCxcclxuICAgICAgICAgICAgICAgIGRhdGE6IHByb2Nlc3NlZEFycmF5XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4geyBcclxuICAgICAgICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwaURhdGEgPSByZXM/LmRhdGE/LnJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdID0gcmVzPy5kYXRhPy5yZXN1bHQubWFwKChlbDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RvcmVzID0gdGhpcy5kYXRhT2JqZWN0Py5bMF0/LlN0b3JlcztcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IHN0b3Jlcz8uZmluZCgodmFsOiBhbnkpID0+IHZhbC5faWQgPT09IGVsPy5faWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pLmZpbHRlcigoaXRlbTphbnkpID0+IGl0ZW0gIT09IG51bGwpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFmdGVyVXBsbG9hZCgpO1xyXG4gICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoXCJUaGUgZ2l2ZW4gU3RvcmUgbm90IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGJyYW5kXCIpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZXJyLmVycm9yLmNvZGUgPT0gNDAwKSB7IC8vIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwb3B1cGNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICBpbWFnZXNyYzogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUYwQzdcIi8+PHBhdGggZD1cIk0yNy45OTk4IDI0LjAwMTJWMjguMDAxMk0yNy45OTk4IDMyLjAwMTJIMjguMDA5OE0yNi4yODk4IDE4Ljg2MTJMMTcuODE5OCAzMy4wMDEyQzE3LjY0NTEgMzMuMzAzNiAxNy41NTI3IDMzLjY0NjUgMTcuNTUxOCAzMy45OTU3QzE3LjU1MDggMzQuMzQ0OSAxNy42NDEzIDM0LjY4ODMgMTcuODE0MiAzNC45OTE3QzE3Ljk4NzEgMzUuMjk1MSAxOC4yMzY1IDM1LjU0NzkgMTguNTM3NSAzNS43MjVDMTguODM4NSAzNS45MDIxIDE5LjE4MDYgMzUuOTk3MyAxOS41Mjk4IDM2LjAwMTJIMzYuNDY5OEMzNi44MTkgMzUuOTk3MyAzNy4xNjExIDM1LjkwMjEgMzcuNDYyMSAzNS43MjVDMzcuNzYzMSAzNS41NDc5IDM4LjAxMjQgMzUuMjk1MSAzOC4xODU0IDM0Ljk5MTdDMzguMzU4MyAzNC42ODgzIDM4LjQ0ODggMzQuMzQ0OSAzOC40NDc4IDMzLjk5NTdDMzguNDQ2OCAzMy42NDY1IDM4LjM1NDQgMzMuMzAzNiAzOC4xNzk4IDMzLjAwMTJMMjkuNzA5OCAxOC44NjEyQzI5LjUzMTUgMTguNTY3MyAyOS4yODA1IDE4LjMyNDMgMjguOTgxIDE4LjE1NTdDMjguNjgxNCAxNy45ODcgMjguMzQzNSAxNy44OTg0IDI3Ljk5OTggMTcuODk4NEMyNy42NTYgMTcuODk4NCAyNy4zMTgxIDE3Ljk4NyAyNy4wMTg2IDE4LjE1NTdDMjYuNzE5MSAxOC4zMjQzIDI2LjQ2OCAxOC41NjczIDI2LjI4OTggMTguODYxMlpcIiBzdHJva2U9XCIjREM2ODAzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRkZBRUJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYEludmFsaWQgZGV0YWlscyFgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGVudDogYFBsZWFzZSBwcm92aWRlIGNvcnJlY3QgYW5kIGNvbXBsZXRlIHN0b3JlIGluZm9ybWF0aW9uLmAsXHJcbiAgICAgICAgICAgICAgICAgICAgICBidXR0b250eXBlOiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVyci5lcnJvci5lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFmdGVyVXBsbG9hZChwb3B1cGNvbnRlbnQpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KGVyci5lcnJvci5lcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcbiAgICAgIC8vICQoXCIja3RfY3JlYXRlX2FjY291bnRfZm9ybV9hY2NvdW50X3R5cGVfcGVyc29uYWxcIikudmFsKFwiXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvY2VlZFN1Ym1pdCgpIHtcclxuICAgIHRoaXMubG9hZFRhYmxlKHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGV4dHN0b3JlcyA9IGAke3RoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXS5sZW5ndGh9IFN0b3JlcyBTZWxlY3RlZGA7XHJcbiAgfVxyXG5cclxuICAgY2xvc2VhY3RpdmVwb3B1cCgpIHtcclxuICAgIC8vIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICB9XHJcblxyXG4gIGFmdGVyVXBsbG9hZChkYXRhPzogYW55KSB7XHJcbiAgICB0aGlzLmV4Y2VsRXJyb3IgPSBkYXRhO1xyXG4gICAgaWYgKHRoaXMudXBsb2FkUG9wVXApIHtcclxuICAgICAgdGhpcy51cGxvYWRQb3BVcC5kaXNtaXNzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwbG9hZFBvcFVwID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0aGlzLmFmdGVyVmFsaWRhdGlvbiwgeyBjZW50ZXJlZDogdHJ1ZSwgYmFja2Ryb3A6ICdzdGF0aWMnIH0pXHJcbiAgfVxyXG5cclxuICBhc3NpZ25TdWJtaXQoKSB7XHJcbiAgICBcclxuICAgIHRoaXMuYXBpRGF0YSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXS5tYXAoKGVsOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBfaWQ6IGVsPy5faWQsXHJcbiAgICAgICAgc3RvcmVOYW1lOmVsPy5zdG9yZU5hbWUsXHJcbiAgICAgICAgc3RvcmVJZDplbD8uc3RvcmVJZFxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBkYXRhOiBbe1xyXG4gICAgICAgIHVzZXJFbWFpbDogdGhpcy51c2VyLmVtYWlsLFxyXG4gICAgICAgIHN0b3JlczogdGhpcy5hcGlEYXRhLFxyXG4gICAgICAgIGNsdXN0ZXJzOnRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsxXSxcclxuICAgICAgICB0ZWFtczp0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl0gXHJcbiAgICAgIH1dXHJcbiAgICAgIC8vIHVzZXJJZDp0aGlzLnVzZXIuX2lkLFxyXG4gICAgICAvLyBjbGllbnRJZDogdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQsXHJcbiAgICAgIC8vIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLFxyXG4gICAgfSAgXHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC5hc3NpZ25EYXRhKHBheWxvYWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy50cy5nZXRTdWNjZXNzVG9hc3QoYCR7dGhpcy5zZWxlY3QgPT0gJ3N0b3JlcycgPyAnU3RvcmVzJyA6ICdDbHVzdGVycyd9IEFzc2lnbmVkIHRvIFVzZXIgU3VjY2Vzc2Z1bGx5IWApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KGBVbmFibGUgdG8gYXNzaWduICR7dGhpcy5zZWxlY3QgPT0gJ3N0b3JlcycgPyAnc3RvcmVzJyA6ICdDbHVzdGVycyd9IHRvIHVzZXIhYClcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoJ3N1Ym1pdCcpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIlVuYWJsZSB0byBBc3NpZ24gU3RvcmVzIHRvIFVzZXIhXCIpO1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlQXNzaWduU3VibWl0KCkge1xyXG4gICAgbGV0IHBheWxvYWQ9IHtcclxuICAgICAgdXNlcklkOnRoaXMudXNlci5faWQsXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgdXNlckVtYWlsOiB0aGlzLnVzZXIuZW1haWwsXHJcbiAgICAgIHVzZXJUeXBlOiB0aGlzLnVzZXJUeXBlLFxyXG4gICAgICBzdG9yZXM6dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLFxyXG4gICAgICBjbHVzdGVyczp0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMV0sXHJcbiAgICAgIHRlYW1zOnRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXVxyXG4gICAgfVxyXG4gICAgdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAucmVBc3NpZ25TdG9yZXMocGF5bG9hZClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRzLmdldFN1Y2Nlc3NUb2FzdChgJHt0aGlzLnNlbGVjdCA9PSAnc3RvcmVzJyA/ICdTdG9yZXMnIDogJ0NsdXN0ZXJzJ30gQXNzaWduZWQgdG8gVXNlciBTdWNjZXNzZnVsbHkhYCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoYFVuYWJsZSB0byBhc3NpZ24gJHt0aGlzLnNlbGVjdCA9PSAnc3RvcmVzJyA/ICdzdG9yZXMnIDogJ0NsdXN0ZXJzJ30gdG8gdXNlciFgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiVW5hYmxlIHRvIEFzc2lnbiBTdG9yZXMgdG8gVXNlciFcIik7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZFNlbGVjdGVkU3RvcmVzKHN0b3JlczogYW55W10pIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXSA9IFtdO1xyXG4gICAgdGhpcy5kYXRhT2JqZWN0WzBdLlN0b3Jlcy5mb3JFYWNoKChzdG9yZTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGV4aXN0cyA9IHN0b3Jlcy5zb21lKCAoIG9iajphbnkgKSA9PiBvYmouc3RvcmVJZCA9PT0gc3RvcmUuc3RvcmVJZCApO1xyXG4gICAgICBpZiAoZXhpc3RzKSB7ICAgICAgICBcclxuICAgICAgICBzdG9yZS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0ucHVzaChzdG9yZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zdG9yZXMgPSB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF07XHJcbiAgICB0aGlzLnNlbGVjdGVkVGV4dHN0b3JlcyA9IGAke3RoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXS5sZW5ndGh9IFN0b3JlcyBTZWxlY3RlZGA7XHJcbiAgfVxyXG4gIGxvYWRTZWxlY3RlZHRlYW1zKHRlYW1zOiBhbnlbXSl7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl0gPSBbXTtcclxuICAgIHRoaXMuZGF0YU9iamVjdFsyXS50ZWFtcy5mb3JFYWNoKCh0ZWFtOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgZXhpc3RzID0gdGVhbXMuc29tZSggKCBvYmo6YW55ICkgPT4gb2JqLl9pZCA9PT0gdGVhbS5faWQgKTtcclxuICAgICAgaWYgKGV4aXN0cykge1xyXG4gICAgICAgIHRlYW0uY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdLnB1c2godGVhbSk7XHJcbiAgICAgICAgdGhpcy50ZWFtcy5wdXNoKHRlYW0uX2lkKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2VsZWN0ZWRUZXh0dGVhbXMgPSBgJHt0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMV0ubGVuZ3RofSBUZWFtcyBTZWxlY3RlZGA7XHJcbiAgfVxyXG4gIGxvYWRTZWxlY3RlZGNsdXN0ZXJzKGNsdXN0ZXJzOiBhbnlbXSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzFdID0gW107XHJcbiAgICB0aGlzLmRhdGFPYmplY3RbMV0uY2x1c3RlcnMuZm9yRWFjaCgoY2x1c3RlcjogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGV4aXN0cyA9IGNsdXN0ZXJzLnNvbWUoICggb2JqOmFueSApID0+IG9iai5faWQgPT09IGNsdXN0ZXIuX2lkICk7XHJcbiAgICAgIGlmIChleGlzdHMpIHtcclxuICAgICAgICBjbHVzdGVyLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsxXS5wdXNoKGNsdXN0ZXIpO1xyXG4gICAgICAgIHRoaXMuY2x1c3RlcnMucHVzaChjbHVzdGVyLl9pZClcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGV4dGNsdXN0ZXJzID0gYCR7dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzFdLmxlbmd0aH0gQ2x1c3RlcnMgU2VsZWN0ZWRgO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VNb2RhbCgpIHtcclxuICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoJ3N1Ym1pdCcpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZCBhc3NpZ24tc3RvcmUgcHktMCBzY3JvbGxcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMCBkLWZsZXggZmxleC1zdGFydCBmbGV4LWNvbHVtbiBwLTkgXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTVcIj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC03NXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgYWx0PVwiUGljXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvYXNzaWduLWFkZHVzZXIuc3ZnXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+XHJcbjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNEQUYxRkZcIi8+XHJcbjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+XHJcbjxwYXRoIGQ9XCJNMzIgMzdWMzVDMzIgMzMuOTM5MSAzMS41Nzg2IDMyLjkyMTcgMzAuODI4NCAzMi4xNzE2QzMwLjA3ODMgMzEuNDIxNCAyOS4wNjA5IDMxIDI4IDMxSDIxQzE5LjkzOTEgMzEgMTguOTIxNyAzMS40MjE0IDE4LjE3MTYgMzIuMTcxNkMxNy40MjE0IDMyLjkyMTcgMTcgMzMuOTM5MSAxNyAzNVYzN00zNiAyNFYzME0zOSAyN0gzM00yOC41IDIzQzI4LjUgMjUuMjA5MSAyNi43MDkxIDI3IDI0LjUgMjdDMjIuMjkwOSAyNyAyMC41IDI1LjIwOTEgMjAuNSAyM0MyMC41IDIwLjc5MDkgMjIuMjkwOSAxOSAyNC41IDE5QzI2LjcwOTEgMTkgMjguNSAyMC43OTA5IDI4LjUgMjNaXCIgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbjwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxhIGNsYXNzPVwidGl0bGUgbWItM1wiPkFzc2lnbiB7eyhzZWxlY3QgPT09J2NsdXN0ZXJzJyA/ICdhcyBsZWFkIHRvJyA6ICdhcyB1c2VyIHRvJykgfCB0aXRsZWNhc2V9fTwvYT5cclxuICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwic3ViLXRpdGxlIG15LTJcIj5QbGVhc2UgYXNzaWduIHRoZSB7e3NlbGVjdCA9PT0gJ3N0b3JlcycgPyAnc3RvcmUnIDooc2VsZWN0ID09PSd1c2VycycgPyAndXNlcicgOiAnY2x1c3RlcicpfX08L3NwYW4+IC0tPlxyXG4gICAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzMSBuYXYtbGluZS10YWJzIGJvcmRlci10cmFuc3BhcmVudCBmbGV4LW5vd3JhcCBcIj5cclxuXHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIG5hdi1pdGVtMVwiIChjbGljayk9XCJzZWxlY3Q9J3N0b3Jlcyc7IHN0b3Jlc1R5cGUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgPGEgW25nQ2xhc3NdPVwic2VsZWN0ID09PSAnc3RvcmVzJyA/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgbmF2LWxpbmsxIGN1cnNvci1wb2ludGVyIHRhYi10aXRsZSBtZS02XCI+U3RvcmVzPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBuYXYtaXRlbTFcIiAoY2xpY2spPVwic2VsZWN0PSdjbHVzdGVycyc7IHN0b3Jlc1R5cGUoJGV2ZW50KVwiPjxhXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3QgPT09ICdjbHVzdGVycycgPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIG5hdi1saW5rMSBjdXJzb3ItcG9pbnRlciBuby1ib3JkZXIgdGFiLXRpdGxlIG1lLTZcIj5DbHVzdGVyPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBuYXYtaXRlbTFcIiAoY2xpY2spPVwic2VsZWN0PSd0ZWFtcyc7IHN0b3Jlc1R5cGUoJGV2ZW50KVwiPjxhXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3QgPT09ICd0ZWFtcycgPyAnYWN0aXZlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIG5hdi1saW5rMSBjdXJzb3ItcG9pbnRlciBuby1ib3JkZXIgdGFiLXRpdGxlIG1lLTZcIj5UZWFtczwvYT5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3QgPT09J3N0b3JlcydcIiBjbGFzcz1cInctMTAwIG15LTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXItb3ZlcmxheVwiICpuZ0lmPVwiIShkYXRhT2JqZWN0WzBdPy5TdG9yZXM/Lmxlbmd0aClcIj5cclxuICAgICAgICAgICAgICAgICAgU2VsZWN0IFN0b3Jlc1xyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bGliLWdyb3VwLXNlbGVjdCBbaXRlbXNdPVwiZGF0YU9iamVjdFswXT8uU3RvcmVzXCIgW2Rpc2FibGVkXT1cImZhbHNlXCIgW211bHRpXT1cInRydWVcIiBbc2VhcmNoRmllbGRdPVwiJ3N0b3JlTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIidzdG9yZUlkJ1wiIChzZWxlY3RlZCk9XCJvbnN0b3JlU2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFZhbHVlc109XCJzZWxlY3RlZFZhbHVlc0FycmF5WzBdXCI+XHJcbiAgICAgICAgICAgICAgICA8L2xpYi1ncm91cC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdCA9PT0nY2x1c3RlcnMnXCIgY2xhc3M9XCJ3LTEwMCBteS01XCI+ICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyLW92ZXJsYXlcIiAqbmdJZj1cIiEoZGF0YU9iamVjdFsxXT8uY2x1c3RlcnM/Lmxlbmd0aClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBjbHVzdGVyXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpYi1ncm91cC1zZWxlY3QgW2l0ZW1zXT1cImRhdGFPYmplY3RbMV0/LmNsdXN0ZXJzXCIgW2Rpc2FibGVkXT1cImZhbHNlXCIgW211bHRpXT1cInRydWVcIiBbc2VhcmNoRmllbGRdPVwiJ2NsdXN0ZXJOYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIidjbHVzdGVyTmFtZSdcIiAoc2VsZWN0ZWQpPVwib25ncm91cFNlbGVjdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVzXT1cInNlbGVjdGVkVmFsdWVzQXJyYXlbMV1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpYi1ncm91cC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3QgPT09J3RlYW1zJ1wiIGNsYXNzPVwidy0xMDAgbXktNVwiPiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZWhvbGRlci1vdmVybGF5XCIgKm5nSWY9XCIhKGRhdGFPYmplY3RbMl0/LnRlYW1zPy5sZW5ndGgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIFNlbGVjdCBTdG9yZXNcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGxpYi1ncm91cC1zZWxlY3QgW2l0ZW1zXT1cImRhdGFPYmplY3RbMl0/LnRlYW1zXCIgW2Rpc2FibGVkXT1cImZhbHNlXCIgW211bHRpXT1cInRydWVcIiBbc2VhcmNoRmllbGRdPVwiJ3RlYW1OYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ3RlYW1OYW1lJ1wiIChzZWxlY3RlZCk9XCJvblRlYW1zU2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFZhbHVlc109XCJzZWxlY3RlZFZhbHVlc0FycmF5WzJdXCI+XHJcbiAgICAgICAgICAgICAgICA8L2xpYi1ncm91cC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxoMiBjbGFzcz1cInN0b3JlLWluZm8gZnctYm9sZFwiPlxyXG4gICAgICAgICAgICBAaWYoc2VsZWN0ID09PSdzdG9yZXMnKSB7XHJcbiAgICAgICAgICAgICAgICBTdG9yZSBcclxuICAgICAgICAgICAgfSBAZWxzZSBpZihzZWxlY3QgPT09J2NsdXN0ZXJzJykge1xyXG4gICAgICAgICAgICAgICAgQ2x1c3RlclxyXG4gICAgICAgICAgICB9QGVsc2UgaWYoc2VsZWN0ID09PSd0ZWFtcycpIHtcclxuICAgICAgICAgICAgICAgIFRlYW1zXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgSW5mb3JtYXRpb25cclxuICAgICAgICA8L2gyPlxyXG5cclxuICAgICAgICA8c2VjdGlvbiAgKm5nSWY9XCJzZWxlY3QgPT09J3N0b3JlcydcIiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIGgtMjAwcHggbWItMyBzY3JvbGxcIj5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlciAgbXQtMiBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+U1BPQyBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlN0b3JlIElEPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFwcGxpY2F0aW9uIElEPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkxvY2F0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgc3RvcmUgb2Ygc3RvcmVzO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tzdG9yZT8uc3BvY05hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tzdG9yZT8uc3RvcmVJZH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3N0b3JlPy5hcHBJZH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3N0b3JlPy5sb2NhdGlvbn19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4gICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgQGlmIChzZWxlY3RlZFZhbHVlc0FycmF5WzBdLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgYmctYXNzaWduLXVzZXIgdy0xMDAgbWItNSBteC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+PHN2ZyB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiB2aWV3Qm94PVwiMCAwIDM2IDM2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjJcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIzLjMzMjcgMjRWMjIuNjY2N0MyMy4zMzI3IDIxLjk1OTQgMjMuMDUxNyAyMS4yODExIDIyLjU1MTYgMjAuNzgxQzIyLjA1MTUgMjAuMjgxIDIxLjM3MzMgMjAgMjAuNjY2IDIwSDE1LjMzMjdDMTQuNjI1NCAyMCAxMy45NDcyIDIwLjI4MSAxMy40NDcxIDIwLjc4MUMxMi45NDcgMjEuMjgxMSAxMi42NjYgMjEuOTU5NCAxMi42NjYgMjIuNjY2N1YyNE0yMC42NjYgMTQuNjY2N0MyMC42NjYgMTYuMTM5NCAxOS40NzIxIDE3LjMzMzMgMTcuOTk5MyAxNy4zMzMzQzE2LjUyNjYgMTcuMzMzMyAxNS4zMzI3IDE2LjEzOTQgMTUuMzMyNyAxNC42NjY3QzE1LjMzMjcgMTMuMTkzOSAxNi41MjY2IDEyIDE3Ljk5OTMgMTJDMTkuNDcyMSAxMiAyMC42NjYgMTMuMTkzOSAyMC42NjYgMTQuNjY2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiBmb3JtLWNoZWNrLWxhYmVsIG1zLTVcIj5UaGUgdXNlciB7e3VzZXI/LnVzZXJOYW1lfX0gaXMgYXNzaWduZWQgdG8gdGhlIGFib3ZlIHN0b3Jlcy48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8c2VjdGlvbiAqbmdJZj1cInNlbGVjdCA9PT0nY2x1c3RlcnMnXCIgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBoLTIwMHB4IG1iLTMgc2Nyb2xsXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXIgbXQtMiBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtcy01XCI+Q2x1c3RlciBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlN0b3JlczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBjbHVzdGVyIG9mIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsxXTtsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibXMtNVwiPnt7Y2x1c3Rlcj8uY2x1c3Rlck5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2NsdXN0ZXI/LnN0b3JlTmFtZXN9fSA8c3BhbiAqbmdJZj1cImNsdXN0ZXI/LnN0b3JlTGlzdENvdW50ID4gMlwiIGNsYXNzPVwianVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgYmxlbmQtbW9kZSBtcy0zXCI+K3t7Y2x1c3Rlcj8uc3RvcmVMaXN0Q291bnQgLSAyfX08L3NwYW4+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIEBpZiAoc2VsZWN0ZWRWYWx1ZXNBcnJheVsxXS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgYmctYXNzaWduLXVzZXIgdy0xMDAgbWItNSBteC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj48c3ZnIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHZpZXdCb3g9XCIwIDAgMzYgMzZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjJcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMy4zMzI3IDI0VjIyLjY2NjdDMjMuMzMyNyAyMS45NTk0IDIzLjA1MTcgMjEuMjgxMSAyMi41NTE2IDIwLjc4MUMyMi4wNTE1IDIwLjI4MSAyMS4zNzMzIDIwIDIwLjY2NiAyMEgxNS4zMzI3QzE0LjYyNTQgMjAgMTMuOTQ3MiAyMC4yODEgMTMuNDQ3MSAyMC43ODFDMTIuOTQ3IDIxLjI4MTEgMTIuNjY2IDIxLjk1OTQgMTIuNjY2IDIyLjY2NjdWMjRNMjAuNjY2IDE0LjY2NjdDMjAuNjY2IDE2LjEzOTQgMTkuNDcyMSAxNy4zMzMzIDE3Ljk5OTMgMTcuMzMzM0MxNi41MjY2IDE3LjMzMzMgMTUuMzMyNyAxNi4xMzk0IDE1LjMzMjcgMTQuNjY2N0MxNS4zMzI3IDEzLjE5MzkgMTYuNTI2NiAxMiAxNy45OTkzIDEyQzE5LjQ3MjEgMTIgMjAuNjY2IDEzLjE5MzkgMjAuNjY2IDE0LjY2NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgZm9ybS1jaGVjay1sYWJlbCBtcy01XCI+VGhlIHVzZXIge3t1c2VyPy51c2VyTmFtZX19IGlzIGFzc2lnbmVkIGFzIGEgbWVtYmVyIHRvIHRoZSBhYm92ZVxyXG4gICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJzLjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJzZWxlY3QgPT09J3RlYW1zJ1wiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgaC0yMDBweCBtYi0zIHNjcm9sbFwiPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyIG10LTIgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibXMtNVwiPlRlYW0gTmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Vc2VyczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB0ZWFtIG9mIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXTtsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibXMtNVwiPnt7dGVhbT8udGVhbU5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3RlYW0/LnVzZXJOYW1lc319IDxzcGFuICpuZ0lmPVwidGVhbT8udXNlckxpc3RDb3VudCA+IDJcIiBjbGFzcz1cImp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGJsZW5kLW1vZGUgbXMtM1wiPit7e3RlYW0/LnVzZXJMaXN0Q291bnQgLSAyfX08L3NwYW4+PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIEBpZiAoc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgYmctYXNzaWduLXVzZXIgdy0xMDAgbWItNSBteC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj48c3ZnIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHZpZXdCb3g9XCIwIDAgMzYgMzZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjJcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yMy4zMzI3IDI0VjIyLjY2NjdDMjMuMzMyNyAyMS45NTk0IDIzLjA1MTcgMjEuMjgxMSAyMi41NTE2IDIwLjc4MUMyMi4wNTE1IDIwLjI4MSAyMS4zNzMzIDIwIDIwLjY2NiAyMEgxNS4zMzI3QzE0LjYyNTQgMjAgMTMuOTQ3MiAyMC4yODEgMTMuNDQ3MSAyMC43ODFDMTIuOTQ3IDIxLjI4MTEgMTIuNjY2IDIxLjk1OTQgMTIuNjY2IDIyLjY2NjdWMjRNMjAuNjY2IDE0LjY2NjdDMjAuNjY2IDE2LjEzOTQgMTkuNDcyMSAxNy4zMzMzIDE3Ljk5OTMgMTcuMzMzM0MxNi41MjY2IDE3LjMzMzMgMTUuMzMyNyAxNi4xMzk0IDE1LjMzMjcgMTQuNjY2N0MxNS4zMzI3IDEzLjE5MzkgMTYuNTI2NiAxMiAxNy45OTkzIDEyQzE5LjQ3MjEgMTIgMjAuNjY2IDEzLjE5MzkgMjAuNjY2IDE0LjY2NjdaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10LTIgZm9ybS1jaGVjay1sYWJlbCBtcy01XCI+VGhlIHVzZXIge3t1c2VyPy51c2VyTmFtZX19IGlzIGFzc2lnbmVkIGFzIGEgbWVtYmVyIHRvIHRoZSBhYm92ZVxyXG4gICAgICAgICAgICAgICAgICAgIHRlYW1zLjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJzZWxlY3QgPT09J3N0b3JlcydcIiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBteS01XCI+XHJcbiAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJociBtLTAgYm9yZGVyIGJvcmRlci1ncmF5LTQwMCBib3JkZXItMVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHBvc2l0aW9uLW9yIHB4LTEwXCI+b3I8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTUwMCBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9sIGNsYXNzPVwiY3VzdG9tLW9yZGVyZWQtbGlzdCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGQgZnMtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLXRleHRcIj5Vc2UgdGhlIHRlbXBsYXRlIHRvIHVwbG9hZCBtdWx0aXBsZSBzdG9yZXMgdG8gdXNlcnMgYXQgb25jZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJ1c2VyLXRleHQgbXktMlwiPjxzcGFuIGNsYXNzPVwidXNlci10ZXh0XCI+RG93bmxvYWQgdGhlIHRlbXBsYXRlIGhlcmUgLSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm1zLTFcIiBocmVmPVwiLi4vLi4vLi4vYXNzZXRzL2ZpbGVzL3N0b3JlTGlzdFRlbXBsYXRlLnhsc3hcIiBkb3dubG9hZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTcuNSAxMi41VjE1LjgzMzNDMTcuNSAxNi4yNzU0IDE3LjMyNDQgMTYuNjk5MyAxNy4wMTE4IDE3LjAxMThDMTYuNjk5MyAxNy4zMjQ0IDE2LjI3NTQgMTcuNSAxNS44MzMzIDE3LjVINC4xNjY2N0MzLjcyNDY0IDE3LjUgMy4zMDA3MiAxNy4zMjQ0IDIuOTg4MTYgMTcuMDExOEMyLjY3NTU5IDE2LjY5OTMgMi41IDE2LjI3NTQgMi41IDE1LjgzMzNWMTIuNU01LjgzMzMzIDguMzMzMzNMMTAgMTIuNU0xMCAxMi41TDE0LjE2NjcgOC4zMzMzM00xMCAxMi41VjIuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZW1wbGF0ZSBtcy0yXCI+RG93bmxvYWQgVGVtcGxhdGU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInVzZXItdGV4dCBteS0zXCI+QWRkIHlvdXIgZGF0YSB0byB0aGUgVGVtcGxhdGUgRmlsZTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInVzZXItdGV4dCBteS0zXCI+VXBsb2FkIGl0IGJlbG93IGZvciBwcm9jZXNzaW5nPC9saT4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvb2w+XHJcbiAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMyBtcy0zIHJpZ2h0LWJhciBweS01IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiID5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiYWNjb3VudFR5cGVcIiB0eXBlPVwicmFkaW9cIiBpZD1cImt0X2NyZWF0ZV9hY2NvdW50X2Zvcm1fYWNjb3VudF90eXBlX3BlcnNvbmFsXCIgYWNjZXB0ID0gXCIuY3N2LCBhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCwgYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCIgdmFsdWU9XCJwZXJzb25hbFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1jaGVja1wiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uVXBsb2FkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgbmctcmVmbGVjdC12YWx1ZT1cInBlcnNvbmFcIiB0eXBlPVwiZmlsZVwiICNpbnB1dEZpbGUgLz5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJrdF9jcmVhdGVfYWNjb3VudF9mb3JtX2FjY291bnRfdHlwZV9wZXJzb25hbFwiIGNsYXNzPVwiIHctNTAgcC00XCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ3LWJvbGQgdGV4dC1jZW50ZXIgdy0xMDAgZnMtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjQ2XCIgaGVpZ2h0PVwiNDZcIiB2aWV3Qm94PVwiMCAwIDQ2IDQ2XCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjNcIiB5PVwiM1wiIHdpZHRoPVwiNDBcIiBoZWlnaHQ9XCI0MFwiIHJ4PVwiMjBcIiBmaWxsPVwiI0YyRjRGN1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIHN0cm9rZT1cIiNGOUZBRkJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF80MDQ3XzQwNTY2KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjYuMzMzMyAyNi4zMzM0TDIzIDIzTTIzIDIzTDE5LjY2NjYgMjYuMzMzNE0yMyAyM1YzMC41TTI5Ljk5MTYgMjguMzI1QzMwLjgwNDQgMjcuODgxOSAzMS40NDY1IDI3LjE4MDggMzEuODE2NSAyNi4zMzIyQzMyLjE4NjYgMjUuNDgzNyAzMi4yNjM1IDI0LjUzNjEgMzIuMDM1MSAyMy42Mzg5QzMxLjgwNjggMjIuNzQxOCAzMS4yODYyIDIxLjk0NjMgMzAuNTU1NSAyMS4zNzc5QzI5LjgyNDggMjAuODA5NSAyOC45MjU3IDIwLjUwMDYgMjggMjAuNUgyNi45NUMyNi42OTc3IDE5LjUyNDQgMjYuMjI3NiAxOC42MTg2IDI1LjU3NDkgMTcuODUwOUMyNC45MjIyIDE3LjA4MzEgMjQuMTA0IDE2LjQ3MzIgMjMuMTgxNyAxNi4wNjcyQzIyLjI1OTQgMTUuNjYxMiAyMS4yNTcxIDE1LjQ2OTUgMjAuMjUwMSAxNS41MDY2QzE5LjI0MyAxNS41NDM3IDE4LjI1NzUgMTUuODA4NiAxNy4zNjc2IDE2LjI4MTRDMTYuNDc3NyAxNi43NTQyIDE1LjcwNjYgMTcuNDIyNiAxNS4xMTIyIDE4LjIzNjNDMTQuNTE3NyAxOS4wNTAxIDE0LjExNTUgMTkuOTg4IDEzLjkzNTggMjAuOTc5NUMxMy43NTYgMjEuOTcxMSAxMy44MDM0IDIyLjk5MDUgMTQuMDc0MyAyMy45NjExQzE0LjM0NTIgMjQuOTMxNyAxNC44MzI3IDI1LjgyODIgMTUuNSAyNi41ODM0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzQ3NTQ2N1wiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfNDA0N180MDU2NlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDEzIDEzKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS10aXRsZVwiPjxzcGFuIGNsYXNzPVwiY2xpY2stdXBsb2FkIGN1cnNvci1wb2ludGVyXCI+Q2xpY2sgdG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJtcy0yXCI+b3IgZHJhZyBhbmQgZHJvcDwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGEtc3ViXCI+dGhlIGRhdGEgYWRkZWQgdGVtcGxhdGUgZmlsZSBmb3IgcHJvY2Vzc2luZy48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1iLTEwIHctMTAwIG10LTEwXCIgcm9sZT1cImNsdXN0ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSB3LTEwMCBteC0zXCIgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIG14LTNcIiAoY2xpY2spPVwib25TdWJtaXQoKVwiPlN1Ym1pdDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2FmdGVyVmFsaWRhdGlvbiBsZXQtbW9kZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBib3JkZXItMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBtdC0wXCI+XHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBtdC0zXCI+PHNwYW4gY2xhc3M9XCJjb25maWctaGVhZGluZyBmdy1zZW1pYm9sZCB3LWF1dG9cIj5CdWxrIEFzc2lnbjwvc3Bhbj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB0LTAgcG9wdXAtc2Nyb2xsXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNhcmQgcm91bmRlZC0zIHAtMyBmbGV4LWNvbHVtbiBoLTcwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBjb25maWctaGVhZGluZyB3LTEwMFwiPnt7Z2V0U3RvcmVDb3VudHMoZXhjZWxEYXRhKX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgc3VidGl0bGUgbXQtMVwiPlRvdGFsIFJlY29yZHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY2FyZCByb3VuZGVkLTMgcC0zIGZsZXgtY29sdW1uIGgtNzBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgY29uZmlnLWhlYWRpbmcgdy0xMDBcIj57e2V4Y2VsRGF0YT8ubGVuZ3RofX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIHN1YnRpdGxlIG10LTFcIj5Sb3dzIHByb2Nlc3NlZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNhcmQgcm91bmRlZC0zIHAtMyBmbGV4LWNvbHVtbiBoLTcwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJleGNlbEVycm9yID8gJ2Vycm9yLWhlYWRpbmcnOicnXCIgY2xhc3M9XCJmdy1zZW1pYm9sZCBjb25maWctaGVhZGluZyB3LTEwMFwiPnt7ZXhjZWxFcnJvcj8uZXJyb3I/Lmxlbmd0aCB8fCAwfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJleGNlbEVycm9yID8gJ2V4Y2VsLWVycm9yJzonJ1wiIGNsYXNzPVwiZnctc2VtaWJvbGQgc3VidGl0bGUgbXQtMVwiPkVycm9yPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWV4Y2VsRXJyb3JcIiBjbGFzcz1cInRhYmxlLWhlYWRlciBtdC01XCIgc3R5bGU9XCJmb250LXdlaWdodDogNDAwO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiA+WW91J3JlIGFib3V0IHRvIGFzc2lnbiB7e2dldFN0b3JlQ291bnRzKGV4Y2VsRGF0YSl9fSB7e2dldFN0b3JlQ291bnRzKGV4Y2VsRGF0YSkgPiAxID8gJ1N0b3JlcycgOiAnU3RvcmUnfX0uIEFyZSB5b3Ugc3VyZSB3YW50IHRvIHByb2NlZWQ/PC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImV4Y2VsRXJyb3JcIiBjbGFzcz1cImZsZXgtY29sdW1uIG10LTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctaGVhZGluZyBmdy1ib2xkXCI+SW52YWxpZCBEZXRhaWxzICE8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0aXRsZSBtdC01XCI+UGxlYXNlIHByb3ZpZGUgY29ycmVjdCBpbmZvcm1hdGlvbi48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTUgdy0xMDAgcm91bmRlZC0zIGJvcmRlci1lcnJvciBtdC01IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXhjZWxFcnJvcj8uZXJyb3I7IGxldCBpID0gaW5kZXg7IGxldCBsYXN0ID0gbGFzdFwiIFtuZ0NsYXNzXT1cIiFsYXN0ID8gJ21iLTInIDogJydcIiBjbGFzcz1cInRleHQtZXJyb3JcIj57e2kgKyAxfX0pIHt7ZXJyb3J9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTAgdGV4dC1lbmQgcHQtMFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1tZCBidG4tZGVmYXVsdCBidG4tb3V0bGluZVwiIChjbGljayk9XCJjbG9zZWFjdGl2ZXBvcHVwKCk7bW9kZWwuY2xvc2UoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWV4Y2VsRXJyb3JcIiBjbGFzcz1cImJ0biBidG4tbWQgcHktMyBidG4tZGVmYXVsdCBtcy0zIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInByb2NlZWRTdWJtaXQoKTttb2RlbC5jbG9zZSgpXCI+UHJvY2VlZDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZXhjZWxFcnJvclwiIGNsYXNzPVwiYnRuIHB5LTMgYnRuLW1kIGJ0bi1kZWZhdWx0IG1zLTMgYnRuLWRhbmdlclwiIChjbGljayk9XCJmaWxlMS5jbGljaygpO1wiPlJldXBsb2FkPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlbjtcIiAjZmlsZTEgdHlwZT1cImZpbGVcIiBpZD1cImt0X2FjY291bnRfdGVhbV9zaXplX3NlbGVjdF8yXCIgYWNjZXB0ID0gXCIuY3N2LCBhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCwgYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uVXBsb2FkKCRldmVudClcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
550
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWduLXN0b3JlLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS11c2Vycy9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tbWFuYWdlLXVzZXJzL2Fzc2lnbi1zdG9yZS1wb3B1cC9hc3NpZ24tc3RvcmUtcG9wdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXVzZXJzL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1tYW5hZ2UtdXNlcnMvYXNzaWduLXN0b3JlLXBvcHVwL2Fzc2lnbi1zdG9yZS1wb3B1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssRUFDRyxTQUFTLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBWSxJQUFJLEVBQUUsS0FBSyxFQUFhLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBV3hELE1BQU0sT0FBTyx5QkFBeUI7SUFtQjFCO0lBQ0E7SUFDQTtJQUNEO0lBQ0M7SUF0QkQsSUFBSSxDQUFNO0lBQ25CLE1BQU0sR0FBVyxRQUFRLENBQUM7SUFDMUIsTUFBTSxHQUFVLEVBQUUsQ0FBQztJQUNuQixRQUFRLEdBQVUsRUFBRSxDQUFDO0lBQ3JCLEtBQUssR0FBTyxFQUFFLENBQUM7SUFDZixjQUFjLENBQU07SUFDcEIsUUFBUSxDQUFjO0lBQ3RCLFFBQVEsQ0FBTTtJQUNkLFFBQVEsQ0FBUztJQUNqQixrQkFBa0IsQ0FBSTtJQUN0QixvQkFBb0IsQ0FBSTtJQUN4QixpQkFBaUIsQ0FBSztJQUNFLFNBQVMsQ0FBYTtJQUNoQixlQUFlLENBQU07SUFFbkQsV0FBVyxDQUFNO0lBRWpCLFlBQ1UsV0FBd0IsRUFDeEIsRUFBcUIsRUFDckIsRUFBZ0IsRUFDakIsV0FBMkIsRUFDMUIsWUFB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QU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUNoQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sb0JBQW9CLENBQUM7SUFDeEYsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuQyxDQUFDO3dHQXRrQlUseUJBQXlCOzRGQUF6Qix5QkFBeUIsbVdDckJ0QyxvOW5CQStSYzs7NEZEMVFELHlCQUF5QjtrQkFUckMsU0FBUzsrQkFDRSx3QkFBd0IsUUFJNUI7d0JBQ0osa0JBQWtCLEVBQUUsaUJBQWlCO3FCQUN0QzsrTEFHUSxJQUFJO3NCQUFaLEtBQUs7Z0JBWWtCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDUSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsIFZpZXdDaGlsZCxFbGVtZW50UmVmXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdXNlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktc2hhcmVkXCI7XHJcbmltcG9ydCB7IE5nYkFjdGl2ZU1vZGFsLCBOZ2JNb2RhbCwgTmdiTW9kYWxSZWYgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcclxuaW1wb3J0IHsgV29ya0Jvb2ssIHJlYWQsIHV0aWxzLCBXb3JrU2hlZXQgfSBmcm9tIFwieGxzeFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLWFzc2lnbi1zdG9yZS1wb3B1cFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vYXNzaWduLXN0b3JlLXBvcHVwLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9hc3NpZ24tc3RvcmUtcG9wdXAuY29tcG9uZW50LnNjc3NcIixcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcclxuICBob3N0OiB7XHJcbiAgICAnKGRvY3VtZW50OmNsaWNrKSc6ICdvbkNsaWNrKCRldmVudCknLFxyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3NpZ25TdG9yZVBvcHVwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSB1c2VyOiBhbnk7XHJcbiAgc2VsZWN0OiBzdHJpbmcgPSBcInN0b3Jlc1wiO1xyXG4gIHN0b3JlczogYW55W10gPSBbXTtcclxuICBjbHVzdGVyczogYW55W10gPSBbXTtcclxuICB0ZWFtczphbnlbXT1bXTtcclxuICAkaGVhZGVyRmlsdGVyczogYW55O1xyXG4gIG1vZGFsUmVmOiBOZ2JNb2RhbFJlZjtcclxuICB1c2VyRGF0YTogYW55O1xyXG4gIHVzZXJUeXBlOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWRUZXh0c3RvcmVzOmFueVxyXG4gIHNlbGVjdGVkVGV4dGNsdXN0ZXJzOmFueVxyXG4gIHNlbGVjdGVkVGV4dHRlYW1zOiBhbnlcclxuICBAVmlld0NoaWxkKFwiaW5wdXRGaWxlXCIpIGlucHV0RmlsZTogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdhZnRlclZhbGlkYXRpb24nKSBhZnRlclZhbGlkYXRpb246IGFueTtcclxuXHJcbiAgdXBsb2FkUG9wVXA6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSB0czogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHVibGljIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbFxyXG4gICkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5kYXRhU3ViamVjdC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy51c2VyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy51c2VyVHlwZSA9IGRhdGEgPT0gXCJUYW5nbyBVc2VyXCIgPyBcInRhbmdvXCIgOiBcImNsaWVudFwiO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICBsZXQgZGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIHx8IFwiXCIpO1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgdGhpcy4kaGVhZGVyRmlsdGVycyA9IGRhdGE7XHJcbiAgICB9IGVsc2UgaWYoIWRhdGEpe1xyXG4gICAgICBsZXQgdXNlcjogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlci1pbmZvJykgfHwgJycpO1xyXG4gICAgICB0aGlzLiRoZWFkZXJGaWx0ZXJzID0gdXNlcjtcclxuICAgICAgdGhpcy4kaGVhZGVyRmlsdGVycy5jbGllbnQgPSB1c2VyLmNsaWVudElkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmdldEFzc2lnblN0b3JlTGlzdCgpO1xyXG4gICAgdGhpcy5nZXRjbHVzdGVyTGlzdCgpO1xyXG4gICAgdGhpcy5nZXR0ZWFtc0xpc3QoKSAgICBcclxuICB9XHJcblxyXG4gIGxvYWRVc2VyQXNzaWduRGV0YWlscygpIHtcclxuICAgIHRoaXMudXNlclNlcnZpY2VcclxuICAgICAgLmdldFVzZXJBc3NpZ25EYXRhKHtcclxuICAgICAgICBlbWFpbDogdGhpcy51c2VyLmVtYWlsLCAgICAgIFxyXG4gICAgICB9KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFNlbGVjdGVkU3RvcmVzKHJlcy5kYXRhLnN0b3Jlcyk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFNlbGVjdGVkY2x1c3RlcnMocmVzLmRhdGEuY2x1c3RlcnMpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRTZWxlY3RlZHRlYW1zKHJlcy5kYXRhLnRlYW1zKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfSBcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7ICAgICAgICBcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QXNzaWduU3RvcmVMaXN0KCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZVxyXG4gICAgICAuZ2V0QXNzaWduU3RvcmVzKHsgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50IH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhT2JqZWN0WzBdLlN0b3JlcyA9IHJlcy5kYXRhLnJlc3VsdDtcclxuICAgICAgICAgICAgdGhpcy5sb2FkVXNlckFzc2lnbkRldGFpbHMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFPYmplY3RbMF0uU3RvcmVzID0gW107XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Y2x1c3Rlckxpc3QoKSB7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRBc3NpZ25jbHVzdGVycyh7IGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCB9KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YU9iamVjdFsxXS5jbHVzdGVycyA9IHJlcy5kYXRhLnJlc3VsdDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYXRhT2JqZWN0WzFdLmNsdXN0ZXJzID0gW107XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBnZXR0ZWFtc0xpc3QoKSB7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRBc3NpZ250ZWFtcyh7IGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCB9KVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YU9iamVjdFsyXS50ZWFtcyA9IHJlcy5kYXRhLnJlc3VsdDtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIGlmICh0aGlzLnVzZXIuYXNzaWduZWRWYWx1ZSkge1xyXG4gICAgICAgICAgICAvLyAgIHRoaXMubG9hZFNlbGVjdGVkdGVhbXModGhpcy51c2VyLmFzc2lnbmVkVmFsdWUpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYXRhT2JqZWN0WzJdLmNsdXN0ZXJzID0gW107XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc3RvcmVzVHlwZShlOiBhbnkpIHtcclxuICAgIHRoaXMuT3BlbmRyb3Bkb3duID0gZmFsc2U7XHJcbiAgICAvLyB0aGlzLnJlc2V0Y2x1c3RlcnMoKTtcclxuICAgIC8vIHRoaXMucmVzZXRTdG9yZSgpO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ID09IFwic3RvcmVzXCIpIHtcclxuICAgICAgaWYodGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLmxlbmd0aD09MCl7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRleHRzdG9yZXMgPSBcIlNlbGVjdCBTdG9yZXNcIjtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRleHRzdG9yZXMgPSBgJHt0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0ubGVuZ3RofSBTdG9yZXMgU2VsZWN0ZWRgO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYodGhpcy5zZWxlY3QgPT0nY2x1c3RlcnMnKSB7XHJcbiAgICAgIGlmKHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsxXS5sZW5ndGg9PTApe1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZXh0Y2x1c3RlcnMgPSBcIlNlbGVjdCBDbHVzdGVyc1wiO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGV4dGNsdXN0ZXJzID0gYCR7dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzFdLmxlbmd0aH0gQ2x1c3RlcnMgU2VsZWN0ZWRgO1xyXG4gICAgICB9ICAgICAgXHJcbiAgICB9ZWxzZSBpZih0aGlzLnNlbGVjdCA9PSd0ZWFtcycpIHtcclxuICAgICAgaWYodGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdLmxlbmd0aD09MCl7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRleHR0ZWFtcyA9IFwiU2VsZWN0IFRlYW1zXCI7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZXh0dGVhbXMgPSBgJHt0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl0ubGVuZ3RofSBUZWFtcyBTZWxlY3RlZGA7XHJcbiAgICAgIH0gICAgICBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0U3RvcmUoKSB7XHJcbiAgICB0aGlzLmRhdGFPYmplY3RbMF0uU3RvcmVzID0gW107XHJcbiAgICB0aGlzLnN0b3JlcyA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdID0gW107XHJcbiAgfVxyXG5cclxuICByZXNldGNsdXN0ZXJzKCkge1xyXG4gICAgdGhpcy5kYXRhT2JqZWN0WzFdLmNsdXN0ZXJzID0gW107XHJcbiAgICB0aGlzLmNsdXN0ZXJzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMV0gPSBbXTtcclxuICB9XHJcbiAgcmVzZXRUZWFtcygpIHtcclxuICAgIHRoaXMuZGF0YU9iamVjdFsyXS50ZWFtcyA9IFtdO1xyXG4gICAgdGhpcy50ZWFtcyA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdID0gW107XHJcbiAgfVxyXG4gIE9wZW5kcm9wZG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRhdGFPYmplY3Q6IGFueVtdID0gW1xyXG4gICAgeyBEZXNjcmlwdGlvbjogXCJTdG9yZXNcIiwgU3RvcmVzOiBbXSB9LFxyXG4gICAgeyBEZXNjcmlwdGlvbjogXCJDbHVzdGVyc1wiLCBjbHVzdGVyczogW10gfSxcclxuICAgIHsgRGVzY3JpcHRpb246IFwiVGVhbXNcIiwgdGVhbXM6IFtdIH0sXHJcblxyXG4gIF07XHJcbiAgc2VsZWN0ZWRWYWx1ZXNBcnJheTogYW55W10gPSBbW10sIFtdLFtdXTtcclxuICBzZWxlY3RlZFRleHQ6IHN0cmluZztcclxuXHJcbiAgb25DbGljayhldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdChcIi5kcm9wZG93bjFcIikpIHtcclxuICAgICAgdGhpcy5PcGVuZHJvcGRvd24gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoXCIuZHJvcGRvd24tY29udGVudFwiKSkge1xyXG4gICAgICB0aGlzLmRhdGFPYmplY3QuZm9yRWFjaCgoaXRlbTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgICAgICBpdGVtLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIERyb3Bkb3duKHZhbHVlOiBhbnksIGluZGV4OiBudW1iZXIsIGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuZGF0YU9iamVjdC5mb3JFYWNoKChpdGVtOiBhbnksIGk6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaSAhPT0gaW5kZXgpIHtcclxuICAgICAgICBpdGVtLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGF0YU9iamVjdFtpbmRleF0uaXNPcGVuID0gIXRoaXMuZGF0YU9iamVjdFtpbmRleF0uaXNPcGVuO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ2hlY2tib3hTdG9yZXMoXHJcbiAgICBldmVudDogYW55LFxyXG4gICAgc3RvcmU6IGFueSxcclxuICAgIGluZGV4OiBudW1iZXIsXHJcbiAgICBzdWJJbmRleDogbnVtYmVyXHJcbiAgKSB7XHJcbiAgICBjb25zdCBzdG9yZXMgPSB0aGlzLmRhdGFPYmplY3RbMF0uU3RvcmVzO1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdID0gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdIHx8IFtdO1xyXG5cclxuICAgIGlmIChzdG9yZSA9PT0gXCJTZWxlY3QgQWxsXCIpIHtcclxuICAgICAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG4gICAgICBzdG9yZXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiAoaXRlbS5jaGVja2VkID0gY2hlY2tlZCkpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0gPSBjaGVja2VkID8gWy4uLnN0b3Jlc10gOiBbXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGlzQ2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG4gICAgICBjb25zdCBzdG9yZUluZGV4ID0gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLmZpbmRJbmRleChcclxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLnN0b3JlTmFtZSA9PT0gc3RvcmUuc3RvcmVOYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGlzQ2hlY2tlZFxyXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLnB1c2goc3RvcmUpXHJcbiAgICAgICAgOiB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0uc3BsaWNlKHN0b3JlSW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLmRhdGFPYmplY3RbaW5kZXhdLlN0b3Jlc1tzdWJJbmRleF0uY2hlY2tlZCA9IGlzQ2hlY2tlZDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxlY3RBbGxDaGVja2VkID0gc3RvcmVzLmV2ZXJ5KChpdGVtOiBhbnkpID0+IGl0ZW0uY2hlY2tlZCk7XHJcbiAgICAoXHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBzZWxlY3RhbGwke2luZGV4fWApIGFzIEhUTUxJbnB1dEVsZW1lbnRcclxuICAgICk/LnNldEF0dHJpYnV0ZShcImNoZWNrZWRcIiwgU3RyaW5nKHNlbGVjdEFsbENoZWNrZWQpKTtcclxuICAgIChcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYG9wdGlvbiR7c3RvcmUuc3RvcmVOYW1lfWApIGFzIEhUTUxJbnB1dEVsZW1lbnRcclxuICAgICk/LnNldEF0dHJpYnV0ZShcImNoZWNrZWRcIiwgU3RyaW5nKGV2ZW50LnRhcmdldC5jaGVja2VkKSk7XHJcblxyXG4gICAgdGhpcy5sb2FkVGFibGUodGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRUZXh0c3RvcmVzID0gYCR7dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLmxlbmd0aH0gU3RvcmVzIFNlbGVjdGVkYDtcclxuICB9XHJcbiAgdG9nZ2xlQ2hlY2tib3hUZWFtcyhcclxuICAgIGV2ZW50OiBhbnksXHJcbiAgICB0ZWFtOiBhbnksXHJcbiAgICBpbmRleDogbnVtYmVyLFxyXG4gICAgc3ViSW5kZXg6IG51bWJlclxyXG4gICkge1xyXG4gICAgXHJcbiAgICBjb25zdCB0ZWFtcyA9IHRoaXMuZGF0YU9iamVjdFsyXS50ZWFtcztcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXSB8fCBbXTtcclxuXHJcbiAgICBpZiAodGVhbSA9PT0gXCJTZWxlY3QgQWxsXCIpIHtcclxuICAgICAgY29uc3QgY2hlY2tlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xyXG4gICAgICB0ZWFtcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IChpdGVtLmNoZWNrZWQgPSBjaGVja2VkKSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXSA9IGNoZWNrZWQgPyBbLi4udGVhbXNdIDogW107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpc0NoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcclxuICAgICAgY29uc3Qgc3RvcmVJbmRleCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXS5maW5kSW5kZXgoXHJcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbS51c2VyTmFtZSA9PT0gdGVhbS51c2VyTmFtZVxyXG4gICAgICApO1xyXG4gICAgICBpc0NoZWNrZWRcclxuICAgICAgICA/IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXS5wdXNoKHRlYW0pXHJcbiAgICAgICAgOiB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl0uc3BsaWNlKHN0b3JlSW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLmRhdGFPYmplY3RbaW5kZXhdLnRlYW1zW3N1YkluZGV4XS5jaGVja2VkID0gaXNDaGVja2VkO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlbGVjdEFsbENoZWNrZWQgPSB0ZWFtcy5ldmVyeSgoaXRlbTogYW55KSA9PiBpdGVtLmNoZWNrZWQpO1xyXG4gICAgKFxyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgc2VsZWN0YWxsJHtpbmRleH1gKSBhcyBIVE1MSW5wdXRFbGVtZW50XHJcbiAgICApPy5zZXRBdHRyaWJ1dGUoXCJjaGVja2VkXCIsIFN0cmluZyhzZWxlY3RBbGxDaGVja2VkKSk7XHJcbiAgICAoXHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGBvcHRpb24ke3RlYW1zLnN0b3JlTmFtZX1gKSBhcyBIVE1MSW5wdXRFbGVtZW50XHJcbiAgICApPy5zZXRBdHRyaWJ1dGUoXCJjaGVja2VkXCIsIFN0cmluZyhldmVudC50YXJnZXQuY2hlY2tlZCkpO1xyXG5cclxuICAgIHRoaXMubG9hZFRhYmxlKHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGV4dHRlYW1zID0gYCR7dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdLmxlbmd0aH0gVGVhbXMgU2VsZWN0ZWRgO1xyXG4gIH1cclxuXHJcbiAgbG9hZFRhYmxlKHZhbHVlczogYW55W10pIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdCA9PSBcInN0b3Jlc1wiKSB7XHJcbiAgICAgIHRoaXMuc3RvcmVzID0gdmFsdWVzO1xyXG4gICAgfSBlbHNlIGlmKHRoaXMuc2VsZWN0ID09IFwiY2x1c3RlcnNcIikge1xyXG4gICAgICB0aGlzLmNsdXN0ZXJzID0gdmFsdWVzO1xyXG4gICAgfWVsc2UgaWYodGhpcy5zZWxlY3QgPT0gXCJ0ZWFtc1wiKSB7XHJcbiAgICAgIHRoaXMudGVhbXMgPSB2YWx1ZXM7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG9uc3RvcmVTZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdICA9IGV2ZW50XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgb25ncm91cFNlbGVjdChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMV0gID0gZXZlbnRcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH0gIFxyXG4gIG9uVGVhbXNTZWxlY3QoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdICA9IGV2ZW50XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcbiAgXHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgaWYgKHRoaXMudXNlci5hc3NpZ25lZFZhbHVlICYmIHRoaXMudXNlci5hc3NpZ25lZFZhbHVlLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnJlQXNzaWduU3VibWl0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFzc2lnblN1Ym1pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgIGV4Y2VsRXJyb3I6IGFueTtcclxuICBleGNlbERhdGE6IGFueSA9IFtdXHJcbiAgdmFsaWRhdGVkT3V0cHV0OiBhbnkgPSBbXTtcclxuXHJcbiAgZ2V0U3RvcmVDb3VudHMoZGF0YTogYW55KSB7XHJcblxyXG4gICAgY29uc3QgdW5pcXVlVXNlck5hbWVzID0gbmV3IFNldChkYXRhPy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbVsnU3RvcmUgTmFtZS9TdG9yZSBJZCddKSk7XHJcbiAgICByZXR1cm4gdW5pcXVlVXNlck5hbWVzLnNpemU7XHJcblxyXG4gIH1cclxuXHJcbiAgZmlsZUVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYXBpRGF0YTogYW55ID0gW107XHJcblxyXG4gIG9uVXBsb2FkKGU6YW55KSB7XHJcbiAgICBsZXQgZGF0YTogYW55ID0gW107XHJcbiAgICBsZXQgZXJyb3I6IGFueSA9IFtdO1xyXG4gICAgbGV0IHNoZWV0TmFtZTogYW55ID0gJyc7XHJcblxyXG4gICAgY29uc3QgZmlsZTogRmlsZSA9IGUudGFyZ2V0LmZpbGVzWzBdO1xyXG4gIGNvbnN0IGFsbG93ZWRFeHRlbnNpb25zID0gL1xcLih4bHN8eGxzeHxjc3YpJC9pO1xyXG4gIGNvbnN0IGFsbG93ZWRUeXBlcyA9IFtcclxuICAgIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRcIiwgXHJcbiAgICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXCJ0ZXh0L2NzdlwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgXCJhcHBsaWNhdGlvbi9jc3ZcIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICBdO1xyXG5cclxuICBpZiAoIWFsbG93ZWRFeHRlbnNpb25zLnRlc3QoZmlsZS5uYW1lKSB8fCAhYWxsb3dlZFR5cGVzLmluY2x1ZGVzKGZpbGUudHlwZSkpIHtcclxuICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIk9ubHkgLnhsc3gsIG9yIC5jc3YgZmlsZXMgYXJlIGFsbG93ZWQuXCIpO1xyXG4gICAgdGhpcy5pbnB1dEZpbGUubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICAgIGNvbnN0IHRhcmdldDogRGF0YVRyYW5zZmVyID0gPERhdGFUcmFuc2Zlcj5lLnRhcmdldDtcclxuICAgIGlmICh0YXJnZXQuZmlsZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgIH1cclxuICAgIGlmICghIXRhcmdldC5maWxlc1swXS5uYW1lLm1hdGNoKC8oLnhsc3wueGxzeCkvKSkge1xyXG4gICAgICBjb25zdCByZWFkZXI6IEZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGJzdHI6IHN0cmluZyA9IGUudGFyZ2V0LnJlc3VsdDtcclxuICAgICAgICBjb25zdCB3YjogV29ya0Jvb2sgPSByZWFkKGJzdHIsIHsgdHlwZTogXCJiaW5hcnlcIiB9KTtcclxuICAgICAgICBjb25zdCB3c25hbWU6IHN0cmluZyA9IHdiLlNoZWV0TmFtZXNbMF07XHJcbiAgICAgICAgY29uc3Qgd3M6IFdvcmtTaGVldCA9IHdiLlNoZWV0c1t3c25hbWVdO1xyXG5cclxuICAgICAgICBkYXRhID0gdXRpbHMuc2hlZXRfdG9fanNvbih3cywge2RlZnZhbDogXCJcIixyYXc6dHJ1ZX0pO1xyXG4gICAgICAgIHRoaXMuZXhjZWxEYXRhID0gZGF0YTtcclxuICAgICAgICBzaGVldE5hbWUgPSB3Yi5TaGVldE5hbWVzWzBdO1xyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh0YXJnZXQuZmlsZXNbMF0pO1xyXG4gICAgICByZWFkZXIub25sb2FkZW5kID0gYXN5bmMgKGUpID0+IHtcclxuICAgICAgICBsZXQgcHJvY2Vzc2VkQXJyYXk6IGFueVtdID0gW107XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHNoZWV0TmFtZSAhPSBcIlN0b3JlRGF0YVwiKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVFcnJvciA9ICB0cnVlXHJcbiAgICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiQ2FuIHlvdSBjb25maXJtIHdoZXRoZXIgdGhlIHNoZWV0IG5hbWUgaXMgU3RvcmVEYXRhID9cIik7XHJcbiAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghZGF0YT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIlBsZWFzZSB1cGxvYWQgYSB2YWxpZCBmaWxlXCIpO1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHJlcXVpcmVkS2V5cyA9IFsnU3RvcmUgTmFtZS9TdG9yZSBJZCddIC8vIE11c3QgYWx3YXlzIGJlIHByZXNlbnRcclxuICAgICAgICAvLyBjb25zdCBvcHRpb25hbEtleXMgPSBbJ3VzZXJQaG9uZScsICdjaXR5J10gOiBbJ2NpdHknXTtcclxuICAgICAgICBcclxuICAgICAgICBjb25zdCBpc1ZhbGlkID0gZGF0YS5zb21lKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpdGVtKTtcclxuICAgICAgICAgIGNvbnN0IGhhc1JlcXVpcmVkS2V5cyA9IHJlcXVpcmVkS2V5cy5ldmVyeShrZXkgPT4ga2V5cy5pbmNsdWRlcyhrZXkpKTtcclxuICAgICAgICAgIGNvbnN0IGFsbEtleXNBcmVBbGxvd2VkID0ga2V5cy5ldmVyeShrZXkgPT4gXHJcbiAgICAgICAgICAgIHJlcXVpcmVkS2V5cy5pbmNsdWRlcyhrZXkpXHJcbiAgICAgICAgICAgIC8vIHx8IG9wdGlvbmFsS2V5cy5pbmNsdWRlcyhrZXkpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuIGhhc1JlcXVpcmVkS2V5cyAmJiBhbGxLZXlzQXJlQWxsb3dlZDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoJ1BsZWFzZSB1cGxvYWQgYSB2YWxpZCBmaWxlLicpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGF0YT8uZm9yRWFjaCgoZWxlbWVudDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoICFlbGVtZW50Py5bJ1N0b3JlIE5hbWUvU3RvcmUgSWQnXSB8fCBlbGVtZW50Py5bJ1N0b3JlIE5hbWUvU3RvcmUgSWQnXSA9PSAnJyB8fCBlbGVtZW50Py5bJ1N0b3JlIE5hbWUvU3RvcmUgSWQnXSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGVycm9yLnB1c2goYEludmFsaWQgU3RvcmUgTmFtZS9TdG9yZSBJZCAtIEEke2luZGV4ICsgMn1gKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcHJvY2Vzc2VkQXJyYXkucHVzaCh7XHJcbiAgICAgICAgICAgICAgdmFsdWU6IGRhdGFbaW5kZXhdWydTdG9yZSBOYW1lL1N0b3JlIElkJ11cclxuICAgICAgICAgICAgfSkgXHJcbiAgICAgICAgICB9IFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgaWYgKGVycm9yLmxlbmd0aCkge1xyXG4gICAgICAgICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgICAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICAgICAgdGl0bGU6IGBJbnZhbGlkIGRldGFpbHMhYCxcclxuICAgICAgICAgICAgY29udGVudDogYFBsZWFzZSBwcm92aWRlIGNvcnJlY3QgYW5kIGNvbXBsZXRlIHN0b3JlIGluZm9ybWF0aW9uLmAsXHJcbiAgICAgICAgICAgIGJ1dHRvbnR5cGU6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIGVycm9yOiBlcnJvclxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5hZnRlclVwbGxvYWQocG9wdXBjb250ZW50KVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy5maWxlRXJyb3Ipe1xyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgcHJvY2Vzc2VkQXJyYXkgPSBwcm9jZXNzZWRBcnJheS5tYXAoKGVsOiBhbnkpID0+IHsgcmV0dXJuIHsgc3RvcmU6IGVsPy52YWx1ZSB9IH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgLmJ1bGtzdG9yZUFzc2lnbih7XHJcbiAgICAgICAgICAgICAgICB1c2VyRW1haWw6dGhpcy51c2VyLmVtYWlsLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogcHJvY2Vzc2VkQXJyYXlcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7IFxyXG4gICAgICAgICAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBpRGF0YSA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0gPSByZXM/LmRhdGE/LnJlc3VsdC5tYXAoKGVsOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdG9yZXMgPSB0aGlzLmRhdGFPYmplY3Q/LlswXT8uU3RvcmVzO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RvcmVzPy5maW5kKCh2YWw6IGFueSkgPT4gdmFsLl9pZCA9PT0gZWw/Ll9pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2guY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgfSkuZmlsdGVyKChpdGVtOmFueSkgPT4gaXRlbSAhPT0gbnVsbCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJVcGxsb2FkKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChcIlRoZSBnaXZlbiBTdG9yZSBub3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYnJhbmRcIik7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChlcnIuZXJyb3IuY29kZSA9PSA0MDApIHsgLy8gdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvcHVwY29udGVudCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlwcm9wOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBgSW52YWxpZCBkZXRhaWxzIWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBgUGxlYXNlIHByb3ZpZGUgY29ycmVjdCBhbmQgY29tcGxldGUgc3RvcmUgaW5mb3JtYXRpb24uYCxcclxuICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnR5cGU6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyLmVycm9yLmVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJVcGxsb2FkKHBvcHVwY29udGVudClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoZXJyLmVycm9yLmVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0RmlsZS5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgfTtcclxuICAgICAgLy8gJChcIiNrdF9jcmVhdGVfYWNjb3VudF9mb3JtX2FjY291bnRfdHlwZV9wZXJzb25hbFwiKS52YWwoXCJcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm9jZWVkU3VibWl0KCkge1xyXG4gICAgdGhpcy5sb2FkVGFibGUodGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRUZXh0c3RvcmVzID0gYCR7dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLmxlbmd0aH0gU3RvcmVzIFNlbGVjdGVkYDtcclxuICB9XHJcblxyXG4gICBjbG9zZWFjdGl2ZXBvcHVwKCkge1xyXG4gICAgLy8gdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gIH1cclxuXHJcbiAgYWZ0ZXJVcGxsb2FkKGRhdGE/OiBhbnkpIHtcclxuICAgIHRoaXMuZXhjZWxFcnJvciA9IGRhdGE7XHJcbiAgICBpZiAodGhpcy51cGxvYWRQb3BVcCkge1xyXG4gICAgICB0aGlzLnVwbG9hZFBvcFVwLmRpc21pc3MoKTtcclxuICAgIH1cclxuICAgIHRoaXMudXBsb2FkUG9wVXAgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuYWZ0ZXJWYWxpZGF0aW9uLCB7IGNlbnRlcmVkOiB0cnVlLCBiYWNrZHJvcDogJ3N0YXRpYycgfSlcclxuICB9XHJcblxyXG4gIGFzc2lnblN1Ym1pdCgpIHtcclxuICAgIFxyXG4gICAgdGhpcy5hcGlEYXRhID0gdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLm1hcCgoZWw6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIF9pZDogZWw/Ll9pZCxcclxuICAgICAgICBzdG9yZU5hbWU6ZWw/LnN0b3JlTmFtZSxcclxuICAgICAgICBzdG9yZUlkOmVsPy5zdG9yZUlkXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIGRhdGE6IFt7XHJcbiAgICAgICAgdXNlckVtYWlsOiB0aGlzLnVzZXIuZW1haWwsXHJcbiAgICAgICAgc3RvcmVzOiB0aGlzLmFwaURhdGEsXHJcbiAgICAgICAgY2x1c3RlcnM6dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzFdLFxyXG4gICAgICAgIHRlYW1zOnRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXSBcclxuICAgICAgfV1cclxuICAgICAgLy8gdXNlcklkOnRoaXMudXNlci5faWQsXHJcbiAgICAgIC8vIGNsaWVudElkOiB0aGlzLiRoZWFkZXJGaWx0ZXJzLmNsaWVudCxcclxuICAgICAgLy8gdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICB9ICBcclxuICAgIHRoaXMudXNlclNlcnZpY2VcclxuICAgICAgLmFzc2lnbkRhdGEocGF5bG9hZClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLnRzLmdldFN1Y2Nlc3NUb2FzdChgJHt0aGlzLnNlbGVjdCA9PSAnc3RvcmVzJyA/ICdTdG9yZXMnIDogJ0NsdXN0ZXJzJ30gQXNzaWduZWQgdG8gVXNlciBTdWNjZXNzZnVsbHkhYCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoYFVuYWJsZSB0byBhc3NpZ24gJHt0aGlzLnNlbGVjdCA9PSAnc3RvcmVzJyA/ICdzdG9yZXMnIDogJ0NsdXN0ZXJzJ30gdG8gdXNlciFgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50cy5nZXRFcnJvclRvYXN0KFwiVW5hYmxlIHRvIEFzc2lnbiBTdG9yZXMgdG8gVXNlciFcIik7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge30sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVBc3NpZ25TdWJtaXQoKSB7XHJcbiAgICBsZXQgcGF5bG9hZD0ge1xyXG4gICAgICB1c2VySWQ6dGhpcy51c2VyLl9pZCxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuJGhlYWRlckZpbHRlcnMuY2xpZW50LFxyXG4gICAgICB1c2VyRW1haWw6IHRoaXMudXNlci5lbWFpbCxcclxuICAgICAgdXNlclR5cGU6IHRoaXMudXNlclR5cGUsXHJcbiAgICAgIHN0b3Jlczp0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMF0sXHJcbiAgICAgIGNsdXN0ZXJzOnRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsxXSxcclxuICAgICAgdGVhbXM6dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC5yZUFzc2lnblN0b3JlcyhwYXlsb2FkKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHMuZ2V0U3VjY2Vzc1RvYXN0KGAke3RoaXMuc2VsZWN0ID09ICdzdG9yZXMnID8gJ1N0b3JlcycgOiAnQ2x1c3RlcnMnfSBBc3NpZ25lZCB0byBVc2VyIFN1Y2Nlc3NmdWxseSFgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudHMuZ2V0RXJyb3JUb2FzdChgVW5hYmxlIHRvIGFzc2lnbiAke3RoaXMuc2VsZWN0ID09ICdzdG9yZXMnID8gJ3N0b3JlcycgOiAnQ2x1c3RlcnMnfSB0byB1c2VyIWApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKCdzdWJtaXQnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRzLmdldEVycm9yVG9hc3QoXCJVbmFibGUgdG8gQXNzaWduIFN0b3JlcyB0byBVc2VyIVwiKTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7fSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkU2VsZWN0ZWRTdG9yZXMoc3RvcmVzOiBhbnlbXSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdID0gW107XHJcbiAgICB0aGlzLmRhdGFPYmplY3RbMF0uU3RvcmVzLmZvckVhY2goKHN0b3JlOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgZXhpc3RzID0gc3RvcmVzLnNvbWUoICggb2JqOmFueSApID0+IG9iai5zdG9yZUlkID09PSBzdG9yZS5zdG9yZUlkICk7XHJcbiAgICAgIGlmIChleGlzdHMpIHsgICAgICAgIFxyXG4gICAgICAgIHN0b3JlLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXS5wdXNoKHN0b3JlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0b3JlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVswXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRUZXh0c3RvcmVzID0gYCR7dGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzBdLmxlbmd0aH0gU3RvcmVzIFNlbGVjdGVkYDtcclxuICB9XHJcbiAgbG9hZFNlbGVjdGVkdGVhbXModGVhbXM6IGFueVtdKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsyXSA9IFtdO1xyXG4gICAgdGhpcy5kYXRhT2JqZWN0WzJdLnRlYW1zLmZvckVhY2goKHRlYW06IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBleGlzdHMgPSB0ZWFtcy5zb21lKCAoIG9iajphbnkgKSA9PiBvYmouX2lkID09PSB0ZWFtLl9pZCApO1xyXG4gICAgICBpZiAoZXhpc3RzKSB7XHJcbiAgICAgICAgdGVhbS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMl0ucHVzaCh0ZWFtKTtcclxuICAgICAgICB0aGlzLnRlYW1zLnB1c2godGVhbS5faWQpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZFRleHR0ZWFtcyA9IGAke3RoaXMuc2VsZWN0ZWRWYWx1ZXNBcnJheVsxXS5sZW5ndGh9IFRlYW1zIFNlbGVjdGVkYDtcclxuICB9XHJcbiAgbG9hZFNlbGVjdGVkY2x1c3RlcnMoY2x1c3RlcnM6IGFueVtdKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMV0gPSBbXTtcclxuICAgIHRoaXMuZGF0YU9iamVjdFsxXS5jbHVzdGVycy5mb3JFYWNoKChjbHVzdGVyOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgZXhpc3RzID0gY2x1c3RlcnMuc29tZSggKCBvYmo6YW55ICkgPT4gb2JqLl9pZCA9PT0gY2x1c3Rlci5faWQgKTtcclxuICAgICAgaWYgKGV4aXN0cykge1xyXG4gICAgICAgIGNsdXN0ZXIuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzFdLnB1c2goY2x1c3Rlcik7XHJcbiAgICAgICAgdGhpcy5jbHVzdGVycy5wdXNoKGNsdXN0ZXIuX2lkKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2VsZWN0ZWRUZXh0Y2x1c3RlcnMgPSBgJHt0aGlzLnNlbGVjdGVkVmFsdWVzQXJyYXlbMV0ubGVuZ3RofSBDbHVzdGVycyBTZWxlY3RlZGA7XHJcbiAgfVxyXG5cclxuICBjbG9zZU1vZGFsKCkge1xyXG4gICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZSgnc3VibWl0Jyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkIGFzc2lnbi1zdG9yZSBweS0wIHNjcm9sbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0wIGQtZmxleCBmbGV4LXN0YXJ0IGZsZXgtY29sdW1uIHAtOSBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXktNVwiPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTc1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBhbHQ9XCJQaWNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9hc3NpZ24tYWRkdXNlci5zdmdcIj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj5cclxuPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0RBRjFGRlwiLz5cclxuPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRUFGOEZGXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz5cclxuPHBhdGggZD1cIk0zMiAzN1YzNUMzMiAzMy45MzkxIDMxLjU3ODYgMzIuOTIxNyAzMC44Mjg0IDMyLjE3MTZDMzAuMDc4MyAzMS40MjE0IDI5LjA2MDkgMzEgMjggMzFIMjFDMTkuOTM5MSAzMSAxOC45MjE3IDMxLjQyMTQgMTguMTcxNiAzMi4xNzE2QzE3LjQyMTQgMzIuOTIxNyAxNyAzMy45MzkxIDE3IDM1VjM3TTM2IDI0VjMwTTM5IDI3SDMzTTI4LjUgMjNDMjguNSAyNS4yMDkxIDI2LjcwOTEgMjcgMjQuNSAyN0MyMi4yOTA5IDI3IDIwLjUgMjUuMjA5MSAyMC41IDIzQzIwLjUgMjAuNzkwOSAyMi4yOTA5IDE5IDI0LjUgMTlDMjYuNzA5MSAxOSAyOC41IDIwLjc5MDkgMjguNSAyM1pcIiBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGEgY2xhc3M9XCJ0aXRsZSBtYi0zXCI+QXNzaWduIHt7KHNlbGVjdCA9PT0nY2x1c3RlcnMnID8gJ2FzIGxlYWQgdG8nIDogJ2FzIHVzZXIgdG8nKSB8IHRpdGxlY2FzZX19PC9hPlxyXG4gICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJzdWItdGl0bGUgbXktMlwiPlBsZWFzZSBhc3NpZ24gdGhlIHt7c2VsZWN0ID09PSAnc3RvcmVzJyA/ICdzdG9yZScgOihzZWxlY3QgPT09J3VzZXJzJyA/ICd1c2VyJyA6ICdjbHVzdGVyJyl9fTwvc3Bhbj4gLS0+XHJcbiAgICAgICAgPHVsIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMxIG5hdi1saW5lLXRhYnMgYm9yZGVyLXRyYW5zcGFyZW50IGZsZXgtbm93cmFwIFwiPlxyXG5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gbmF2LWl0ZW0xXCIgKGNsaWNrKT1cInNlbGVjdD0nc3RvcmVzJzsgc3RvcmVzVHlwZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCJzZWxlY3QgPT09ICdzdG9yZXMnID8gJ2FjdGl2ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGluayBuYXYtbGluazEgY3Vyc29yLXBvaW50ZXIgdGFiLXRpdGxlIG1lLTZcIj5TdG9yZXM8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIG5hdi1pdGVtMVwiIChjbGljayk9XCJzZWxlY3Q9J2NsdXN0ZXJzJzsgc3RvcmVzVHlwZSgkZXZlbnQpXCI+PGFcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdCA9PT0gJ2NsdXN0ZXJzJyA/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgbmF2LWxpbmsxIGN1cnNvci1wb2ludGVyIG5vLWJvcmRlciB0YWItdGl0bGUgbWUtNlwiPkNsdXN0ZXI8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIG5hdi1pdGVtMVwiIChjbGljayk9XCJzZWxlY3Q9J3RlYW1zJzsgc3RvcmVzVHlwZSgkZXZlbnQpXCI+PGFcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdCA9PT0gJ3RlYW1zJyA/ICdhY3RpdmUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgbmF2LWxpbmsxIGN1cnNvci1wb2ludGVyIG5vLWJvcmRlciB0YWItdGl0bGUgbWUtNlwiPlRlYW1zPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdCA9PT0nc3RvcmVzJ1wiIGNsYXNzPVwidy0xMDAgbXktNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZWhvbGRlci1vdmVybGF5XCIgKm5nSWY9XCIhKGRhdGFPYmplY3RbMF0/LlN0b3Jlcz8ubGVuZ3RoKVwiPlxyXG4gICAgICAgICAgICAgICAgICBTZWxlY3QgU3RvcmVzXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxsaWItZ3JvdXAtc2VsZWN0IFtpdGVtc109XCJkYXRhT2JqZWN0WzBdPy5TdG9yZXNcIiBbZGlzYWJsZWRdPVwiZmFsc2VcIiBbbXVsdGldPVwidHJ1ZVwiIFtzZWFyY2hGaWVsZF09XCInc3RvcmVOYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ3N0b3JlSWQnXCIgKHNlbGVjdGVkKT1cIm9uc3RvcmVTZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVzXT1cInNlbGVjdGVkVmFsdWVzQXJyYXlbMF1cIj5cclxuICAgICAgICAgICAgICAgIDwvbGliLWdyb3VwLXNlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ID09PSdjbHVzdGVycydcIiBjbGFzcz1cInctMTAwIG15LTVcIj4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXItb3ZlcmxheVwiICpuZ0lmPVwiIShkYXRhT2JqZWN0WzFdPy5jbHVzdGVycz8ubGVuZ3RoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IGNsdXN0ZXJcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8bGliLWdyb3VwLXNlbGVjdCBbaXRlbXNdPVwiZGF0YU9iamVjdFsxXT8uY2x1c3RlcnNcIiBbZGlzYWJsZWRdPVwiZmFsc2VcIiBbbXVsdGldPVwidHJ1ZVwiIFtzZWFyY2hGaWVsZF09XCInY2x1c3Rlck5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ2NsdXN0ZXJOYW1lJ1wiIChzZWxlY3RlZCk9XCJvbmdyb3VwU2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRWYWx1ZXNdPVwic2VsZWN0ZWRWYWx1ZXNBcnJheVsxXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGliLWdyb3VwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdCA9PT0ndGVhbXMnXCIgY2xhc3M9XCJ3LTEwMCBteS01XCI+ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlaG9sZGVyLW92ZXJsYXlcIiAqbmdJZj1cIiEoZGF0YU9iamVjdFsyXT8udGVhbXM/Lmxlbmd0aClcIj5cclxuICAgICAgICAgICAgICAgICAgU2VsZWN0IFN0b3Jlc1xyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bGliLWdyb3VwLXNlbGVjdCBbaXRlbXNdPVwiZGF0YU9iamVjdFsyXT8udGVhbXNcIiBbZGlzYWJsZWRdPVwiZmFsc2VcIiBbbXVsdGldPVwidHJ1ZVwiIFtzZWFyY2hGaWVsZF09XCIndGVhbU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCIndGVhbU5hbWUnXCIgKHNlbGVjdGVkKT1cIm9uVGVhbXNTZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVzXT1cInNlbGVjdGVkVmFsdWVzQXJyYXlbMl1cIj5cclxuICAgICAgICAgICAgICAgIDwvbGliLWdyb3VwLXNlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGgyIGNsYXNzPVwic3RvcmUtaW5mbyBmdy1ib2xkXCI+XHJcbiAgICAgICAgICAgIEBpZihzZWxlY3QgPT09J3N0b3JlcycpIHtcclxuICAgICAgICAgICAgICAgIFN0b3JlIFxyXG4gICAgICAgICAgICB9IEBlbHNlIGlmKHNlbGVjdCA9PT0nY2x1c3RlcnMnKSB7XHJcbiAgICAgICAgICAgICAgICBDbHVzdGVyXHJcbiAgICAgICAgICAgIH1AZWxzZSBpZihzZWxlY3QgPT09J3RlYW1zJykge1xyXG4gICAgICAgICAgICAgICAgVGVhbXNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBJbmZvcm1hdGlvblxyXG4gICAgICAgIDwvaDI+XHJcblxyXG4gICAgICAgIDxzZWN0aW9uICAqbmdJZj1cInNlbGVjdCA9PT0nc3RvcmVzJ1wiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgaC0yMDBweCBtYi0zIHNjcm9sbFwiPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyICBtdC0yIG1iLTRcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5TUE9DIE5hbWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+U3RvcmUgSUQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+QXBwbGljYXRpb24gSUQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+TG9jYXRpb248L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBzdG9yZSBvZiBzdG9yZXM7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3N0b3JlPy5zcG9jTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3N0b3JlPy5zdG9yZUlkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7c3RvcmU/LmFwcElkfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7c3RvcmU/LmxvY2F0aW9ufX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPiAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBAaWYgKHNlbGVjdGVkVmFsdWVzQXJyYXlbMF0ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBiZy1hc3NpZ24tdXNlciB3LTEwMCBtYi01IG14LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj48c3ZnIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHZpZXdCb3g9XCIwIDAgMzYgMzZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIyXCIgeT1cIjJcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiByeD1cIjE2XCIgZmlsbD1cIiNEQUYxRkZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBzdHJva2U9XCIjRUFGOEZGXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMjMuMzMyNyAyNFYyMi42NjY3QzIzLjMzMjcgMjEuOTU5NCAyMy4wNTE3IDIxLjI4MTEgMjIuNTUxNiAyMC43ODFDMjIuMDUxNSAyMC4yODEgMjEuMzczMyAyMCAyMC42NjYgMjBIMTUuMzMyN0MxNC42MjU0IDIwIDEzLjk0NzIgMjAuMjgxIDEzLjQ0NzEgMjAuNzgxQzEyLjk0NyAyMS4yODExIDEyLjY2NiAyMS45NTk0IDEyLjY2NiAyMi42NjY3VjI0TTIwLjY2NiAxNC42NjY3QzIwLjY2NiAxNi4xMzk0IDE5LjQ3MjEgMTcuMzMzMyAxNy45OTkzIDE3LjMzMzNDMTYuNTI2NiAxNy4zMzMzIDE1LjMzMjcgMTYuMTM5NCAxNS4zMzI3IDE0LjY2NjdDMTUuMzMyNyAxMy4xOTM5IDE2LjUyNjYgMTIgMTcuOTk5MyAxMkMxOS40NzIxIDEyIDIwLjY2NiAxMy4xOTM5IDIwLjY2NiAxNC42NjY3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdC0yIGZvcm0tY2hlY2stbGFiZWwgbXMtNVwiPlRoZSB1c2VyIHt7dXNlcj8udXNlck5hbWV9fSBpcyBhc3NpZ25lZCB0byB0aGUgYWJvdmUgc3RvcmVzLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDxzZWN0aW9uICpuZ0lmPVwic2VsZWN0ID09PSdjbHVzdGVycydcIiBjbGFzcz1cInctMTAwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIGgtMjAwcHggbWItMyBzY3JvbGxcIj5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlciBtdC0yIG1iLTRcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1zLTVcIj5DbHVzdGVyIE5hbWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+U3RvcmVzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGNsdXN0ZXIgb2YgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzFdO2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJtcy01XCI+e3tjbHVzdGVyPy5jbHVzdGVyTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7Y2x1c3Rlcj8uc3RvcmVOYW1lc319IDxzcGFuICpuZ0lmPVwiY2x1c3Rlcj8uc3RvcmVMaXN0Q291bnQgPiAyXCIgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBibGVuZC1tb2RlIG1zLTNcIj4re3tjbHVzdGVyPy5zdG9yZUxpc3RDb3VudCAtIDJ9fTwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgQGlmIChzZWxlY3RlZFZhbHVlc0FycmF5WzFdLmxlbmd0aCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBiZy1hc3NpZ24tdXNlciB3LTEwMCBtYi01IG14LTJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPjxzdmcgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgdmlld0JveD1cIjAgMCAzNiAzNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBzdHJva2U9XCIjRUFGOEZGXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIzLjMzMjcgMjRWMjIuNjY2N0MyMy4zMzI3IDIxLjk1OTQgMjMuMDUxNyAyMS4yODExIDIyLjU1MTYgMjAuNzgxQzIyLjA1MTUgMjAuMjgxIDIxLjM3MzMgMjAgMjAuNjY2IDIwSDE1LjMzMjdDMTQuNjI1NCAyMCAxMy45NDcyIDIwLjI4MSAxMy40NDcxIDIwLjc4MUMxMi45NDcgMjEuMjgxMSAxMi42NjYgMjEuOTU5NCAxMi42NjYgMjIuNjY2N1YyNE0yMC42NjYgMTQuNjY2N0MyMC42NjYgMTYuMTM5NCAxOS40NzIxIDE3LjMzMzMgMTcuOTk5MyAxNy4zMzMzQzE2LjUyNjYgMTcuMzMzMyAxNS4zMzI3IDE2LjEzOTQgMTUuMzMyNyAxNC42NjY3QzE1LjMzMjcgMTMuMTkzOSAxNi41MjY2IDEyIDE3Ljk5OTMgMTJDMTkuNDcyMSAxMiAyMC42NjYgMTMuMTkzOSAyMC42NjYgMTQuNjY2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiBmb3JtLWNoZWNrLWxhYmVsIG1zLTVcIj5UaGUgdXNlciB7e3VzZXI/LnVzZXJOYW1lfX0gaXMgYXNzaWduZWQgYXMgYSBtZW1iZXIgdG8gdGhlIGFib3ZlXHJcbiAgICAgICAgICAgICAgICAgICAgY2x1c3RlcnMuPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8c2VjdGlvbiAqbmdJZj1cInNlbGVjdCA9PT0ndGVhbXMnXCIgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBoLTIwMHB4IG1iLTMgc2Nyb2xsXCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXIgbXQtMiBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtcy01XCI+VGVhbSBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlVzZXJzPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHRlYW0gb2YgdGhpcy5zZWxlY3RlZFZhbHVlc0FycmF5WzJdO2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJtcy01XCI+e3t0ZWFtPy50ZWFtTmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7dGVhbT8udXNlck5hbWVzfX0gPHNwYW4gKm5nSWY9XCJ0ZWFtPy51c2VyTGlzdENvdW50ID4gMlwiIGNsYXNzPVwianVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgYmxlbmQtbW9kZSBtcy0zXCI+K3t7dGVhbT8udXNlckxpc3RDb3VudCAtIDJ9fTwvc3Bhbj48L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgQGlmIChzZWxlY3RlZFZhbHVlc0FycmF5WzJdLmxlbmd0aCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBiZy1hc3NpZ24tdXNlciB3LTEwMCBtYi01IG14LTJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPjxzdmcgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgdmlld0JveD1cIjAgMCAzNiAzNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCIxNlwiIGZpbGw9XCIjREFGMUZGXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHJ4PVwiMTZcIiBzdHJva2U9XCIjRUFGOEZGXCIgc3Ryb2tlLXdpZHRoPVwiNFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIzLjMzMjcgMjRWMjIuNjY2N0MyMy4zMzI3IDIxLjk1OTQgMjMuMDUxNyAyMS4yODExIDIyLjU1MTYgMjAuNzgxQzIyLjA1MTUgMjAuMjgxIDIxLjM3MzMgMjAgMjAuNjY2IDIwSDE1LjMzMjdDMTQuNjI1NCAyMCAxMy45NDcyIDIwLjI4MSAxMy40NDcxIDIwLjc4MUMxMi45NDcgMjEuMjgxMSAxMi42NjYgMjEuOTU5NCAxMi42NjYgMjIuNjY2N1YyNE0yMC42NjYgMTQuNjY2N0MyMC42NjYgMTYuMTM5NCAxOS40NzIxIDE3LjMzMzMgMTcuOTk5MyAxNy4zMzMzQzE2LjUyNjYgMTcuMzMzMyAxNS4zMzI3IDE2LjEzOTQgMTUuMzMyNyAxNC42NjY3QzE1LjMzMjcgMTMuMTkzOSAxNi41MjY2IDEyIDE3Ljk5OTMgMTJDMTkuNDcyMSAxMiAyMC42NjYgMTMuMTkzOSAyMC42NjYgMTQuNjY2N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXQtMiBmb3JtLWNoZWNrLWxhYmVsIG1zLTVcIj5UaGUgdXNlciB7e3VzZXI/LnVzZXJOYW1lfX0gaXMgYXNzaWduZWQgYXMgYSBtZW1iZXIgdG8gdGhlIGFib3ZlXHJcbiAgICAgICAgICAgICAgICAgICAgdGVhbXMuPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8c2VjdGlvbiAqbmdJZj1cInNlbGVjdCA9PT0nc3RvcmVzJ1wiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIG15LTVcIj5cclxuICAgICAgICAgICAgICAgIDxociBjbGFzcz1cImhyIG0tMCBib3JkZXIgYm9yZGVyLWdyYXktNDAwIGJvcmRlci0xXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgcG9zaXRpb24tb3IgcHgtMTBcIj5vcjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNTAwIG15LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b2wgY2xhc3M9XCJjdXN0b20tb3JkZXJlZC1saXN0IHRleHQtZ3JheS00MDAgZnctYm9sZCBmcy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInVzZXItdGV4dFwiPlVzZSB0aGUgdGVtcGxhdGUgdG8gdXBsb2FkIG11bHRpcGxlIHN0b3JlcyB0byB1c2VycyBhdCBvbmNlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInVzZXItdGV4dCBteS0yXCI+PHNwYW4gY2xhc3M9XCJ1c2VyLXRleHRcIj5Eb3dubG9hZCB0aGUgdGVtcGxhdGUgaGVyZSAtIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwibXMtMVwiIGhyZWY9XCIuLi8uLi8uLi9hc3NldHMvZmlsZXMvc3RvcmVMaXN0VGVtcGxhdGUueGxzeFwiIGRvd25sb2FkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTUuODMzMzMgOC4zMzMzM0wxMCAxMi41TTEwIDEyLjVMMTQuMTY2NyA4LjMzMzMzTTEwIDEyLjVWMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRlbXBsYXRlIG1zLTJcIj5Eb3dubG9hZCBUZW1wbGF0ZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidXNlci10ZXh0IG15LTNcIj5BZGQgeW91ciBkYXRhIHRvIHRoZSBUZW1wbGF0ZSBGaWxlPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidXNlci10ZXh0IG15LTNcIj5VcGxvYWQgaXQgYmVsb3cgZm9yIHByb2Nlc3Npbmc8L2xpPiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9vbD5cclxuICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIG1zLTMgcmlnaHQtYmFyIHB5LTUgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCIgPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJhY2NvdW50VHlwZVwiIHR5cGU9XCJyYWRpb1wiIGlkPVwia3RfY3JlYXRlX2FjY291bnRfZm9ybV9hY2NvdW50X3R5cGVfcGVyc29uYWxcIiBhY2NlcHQgPSBcIi5jc3YsIGFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0LCBhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIiB2YWx1ZT1cInBlcnNvbmFsXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWNoZWNrXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25VcGxvYWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBuZy1yZWZsZWN0LXZhbHVlPVwicGVyc29uYVwiIHR5cGU9XCJmaWxlXCIgI2lucHV0RmlsZSAvPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImt0X2NyZWF0ZV9hY2NvdW50X2Zvcm1fYWNjb3VudF90eXBlX3BlcnNvbmFsXCIgY2xhc3M9XCIgdy01MCBwLTRcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWNlbnRlciB3LTEwMCBmcy00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNDZcIiBoZWlnaHQ9XCI0NlwiIHZpZXdCb3g9XCIwIDAgNDYgNDZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI0MFwiIGhlaWdodD1cIjQwXCIgcng9XCIyMFwiIGZpbGw9XCIjRjJGNEY3XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjIwXCIgc3Ryb2tlPVwiI0Y5RkFGQlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiNlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzQwNDdfNDA1NjYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yNi4zMzMzIDI2LjMzMzRMMjMgMjNNMjMgMjNMMTkuNjY2NiAyNi4zMzM0TTIzIDIzVjMwLjVNMjkuOTkxNiAyOC4zMjVDMzAuODA0NCAyNy44ODE5IDMxLjQ0NjUgMjcuMTgwOCAzMS44MTY1IDI2LjMzMjJDMzIuMTg2NiAyNS40ODM3IDMyLjI2MzUgMjQuNTM2MSAzMi4wMzUxIDIzLjYzODlDMzEuODA2OCAyMi43NDE4IDMxLjI4NjIgMjEuOTQ2MyAzMC41NTU1IDIxLjM3NzlDMjkuODI0OCAyMC44MDk1IDI4LjkyNTcgMjAuNTAwNiAyOCAyMC41SDI2Ljk1QzI2LjY5NzcgMTkuNTI0NCAyNi4yMjc2IDE4LjYxODYgMjUuNTc0OSAxNy44NTA5QzI0LjkyMjIgMTcuMDgzMSAyNC4xMDQgMTYuNDczMiAyMy4xODE3IDE2LjA2NzJDMjIuMjU5NCAxNS42NjEyIDIxLjI1NzEgMTUuNDY5NSAyMC4yNTAxIDE1LjUwNjZDMTkuMjQzIDE1LjU0MzcgMTguMjU3NSAxNS44MDg2IDE3LjM2NzYgMTYuMjgxNEMxNi40Nzc3IDE2Ljc1NDIgMTUuNzA2NiAxNy40MjI2IDE1LjExMjIgMTguMjM2M0MxNC41MTc3IDE5LjA1MDEgMTQuMTE1NSAxOS45ODggMTMuOTM1OCAyMC45Nzk1QzEzLjc1NiAyMS45NzExIDEzLjgwMzQgMjIuOTkwNSAxNC4wNzQzIDIzLjk2MTFDMTQuMzQ1MiAyNC45MzE3IDE0LjgzMjcgMjUuODI4MiAxNS41IDI2LjU4MzRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNDc1NDY3XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF80MDQ3XzQwNTY2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTMgMTMpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhLXRpdGxlXCI+PHNwYW4gY2xhc3M9XCJjbGljay11cGxvYWQgY3Vyc29yLXBvaW50ZXJcIj5DbGljayB0b1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBsb2FkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cIm1zLTJcIj5vciBkcmFnIGFuZCBkcm9wPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YS1zdWJcIj50aGUgZGF0YSBhZGRlZCB0ZW1wbGF0ZSBmaWxlIGZvciBwcm9jZXNzaW5nLjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbWItMTAgdy0xMDAgbXQtMTBcIiByb2xlPVwiY2x1c3RlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHctMTAwIG14LTNcIiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDAgbXgtM1wiIChjbGljayk9XCJvblN1Ym1pdCgpXCI+U3VibWl0PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYWZ0ZXJWYWxpZGF0aW9uIGxldC1tb2RlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIG10LTBcIj5cclxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIG10LTNcIj48c3BhbiBjbGFzcz1cImNvbmZpZy1oZWFkaW5nIGZ3LXNlbWlib2xkIHctYXV0b1wiPkJ1bGsgQXNzaWduPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtMCBwb3B1cC1zY3JvbGxcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XHJcbiAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY2FyZCByb3VuZGVkLTMgcC0zIGZsZXgtY29sdW1uIGgtNzBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkIGNvbmZpZy1oZWFkaW5nIHctMTAwXCI+e3tnZXRTdG9yZUNvdW50cyhleGNlbERhdGEpfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBzdWJ0aXRsZSBtdC0xXCI+VG90YWwgUmVjb3JkczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jYXJkIHJvdW5kZWQtMyBwLTMgZmxleC1jb2x1bW4gaC03MHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZCBjb25maWctaGVhZGluZyB3LTEwMFwiPnt7ZXhjZWxEYXRhPy5sZW5ndGh9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgc3VidGl0bGUgbXQtMVwiPlJvd3MgcHJvY2Vzc2VkPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY2FyZCByb3VuZGVkLTMgcC0zIGZsZXgtY29sdW1uIGgtNzBweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImV4Y2VsRXJyb3IgPyAnZXJyb3ItaGVhZGluZyc6JydcIiBjbGFzcz1cImZ3LXNlbWlib2xkIGNvbmZpZy1oZWFkaW5nIHctMTAwXCI+e3tleGNlbEVycm9yPy5lcnJvcj8ubGVuZ3RoIHx8IDB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImV4Y2VsRXJyb3IgPyAnZXhjZWwtZXJyb3InOicnXCIgY2xhc3M9XCJmdy1zZW1pYm9sZCBzdWJ0aXRsZSBtdC0xXCI+RXJyb3I8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZXhjZWxFcnJvclwiIGNsYXNzPVwidGFibGUtaGVhZGVyIG10LTVcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA0MDA7XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ID5Zb3UncmUgYWJvdXQgdG8gYXNzaWduIHt7Z2V0U3RvcmVDb3VudHMoZXhjZWxEYXRhKX19IHt7Z2V0U3RvcmVDb3VudHMoZXhjZWxEYXRhKSA+IDEgPyAnU3RvcmVzJyA6ICdTdG9yZSd9fS4gQXJlIHlvdSBzdXJlIHdhbnQgdG8gcHJvY2VlZD88L2Rpdj5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZXhjZWxFcnJvclwiIGNsYXNzPVwiZmxleC1jb2x1bW4gbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy1oZWFkaW5nIGZ3LWJvbGRcIj5JbnZhbGlkIERldGFpbHMgITwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1YnRpdGxlIG10LTVcIj5QbGVhc2UgcHJvdmlkZSBjb3JyZWN0IGluZm9ybWF0aW9uLjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNSB3LTEwMCByb3VuZGVkLTMgYm9yZGVyLWVycm9yIG10LTUgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlcnJvciBvZiBleGNlbEVycm9yPy5lcnJvcjsgbGV0IGkgPSBpbmRleDsgbGV0IGxhc3QgPSBsYXN0XCIgW25nQ2xhc3NdPVwiIWxhc3QgPyAnbWItMicgOiAnJ1wiIGNsYXNzPVwidGV4dC1lcnJvclwiPnt7aSArIDF9fSkge3tlcnJvcn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMCB0ZXh0LWVuZCBwdC0wXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW1kIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cImNsb3NlYWN0aXZlcG9wdXAoKTttb2RlbC5jbG9zZSgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhZXhjZWxFcnJvclwiIGNsYXNzPVwiYnRuIGJ0bi1tZCBweS0zIGJ0bi1kZWZhdWx0IG1zLTMgYnRuLXByaW1hcnlcIiAoY2xpY2spPVwicHJvY2VlZFN1Ym1pdCgpO21vZGVsLmNsb3NlKClcIj5Qcm9jZWVkPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJleGNlbEVycm9yXCIgY2xhc3M9XCJidG4gcHktMyBidG4tbWQgYnRuLWRlZmF1bHQgbXMtMyBidG4tZGFuZ2VyXCIgKGNsaWNrKT1cImZpbGUxLmNsaWNrKCk7XCI+UmV1cGxvYWQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuO1wiICNmaWxlMSB0eXBlPVwiZmlsZVwiIGlkPVwia3RfYWNjb3VudF90ZWFtX3NpemVfc2VsZWN0XzJcIiBhY2NlcHQgPSBcIi5jc3YsIGFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0LCBhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25VcGxvYWQoJGV2ZW50KVwiIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|