tnx-shared 5.3.412 → 5.3.414
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/assets/Dockerfile.ci +1 -1
- package/bundles/tnx-shared.umd.js +175 -0
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/classes/constants.d.ts +2 -1
- package/classes/constants.d.ts.map +1 -1
- package/classes/form-schema.d.ts +1 -0
- package/classes/form-schema.d.ts.map +1 -1
- package/components/file-explorer/file-manager/file-manager.component.d.ts +3 -0
- package/components/file-explorer/file-manager/file-manager.component.d.ts.map +1 -1
- package/esm2015/classes/constants.js +2 -1
- package/esm2015/classes/form-schema.js +2 -1
- package/esm2015/components/file-explorer/file-manager/file-manager.component.js +156 -1
- package/esm2015/public-api.js +2 -2
- package/fesm2015/tnx-shared.js +157 -0
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/tnx-shared.metadata.json +1 -1
|
@@ -262,6 +262,7 @@ export class CrudFormSetting {
|
|
|
262
262
|
this.function = new CrudFormCustomFunction();
|
|
263
263
|
this.hiddenKySoSimCaNhan = false;
|
|
264
264
|
this.hiddenKySoUsbCaNhan = false;
|
|
265
|
+
this.hiddenKySoVNPTCA = false;
|
|
265
266
|
this.hiddenKySoDonVi = false;
|
|
266
267
|
this.hiddenKySoSmartCA = false;
|
|
267
268
|
this.hiddenButPhe = false;
|
|
@@ -1478,4 +1479,4 @@ export var EventType;
|
|
|
1478
1479
|
EventType["TABLE_FINISH_INIT"] = "tableFinishInit";
|
|
1479
1480
|
EventType["UPLOADED"] = "uploaded";
|
|
1480
1481
|
})(EventType || (EventType = {}));
|
|
1481
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvY2xhc3Nlcy9mb3JtLXNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBS0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFrQmhGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsOEJBQThCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2pILE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBWSxFQUFFLEtBQWE7SUFDbkQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDcEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMxQjtBQUNMLENBQUM7QUFFRCxNQUFNLE9BQU8sV0FBVztJQU9wQixZQUFZLElBQWtCO1FBRjlCLGFBQVEsR0FBNkcsUUFBUSxDQUFDO1FBRzFILElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDekQ7UUFDRCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBRUwsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFFBQVE7SUFJakIsWUFBWSxJQUFlO1FBSDNCLG9HQUFvRztRQUNwRyxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFHL0IsS0FBSyxNQUFNLEdBQUcs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OUIscUNBQXdCLENBQUE7SUFDeEIsNEJBQWUsQ0FBQTtJQUNmLDBCQUFhLENBQUE7SUFDYix1Q0FBMEIsQ0FBQTtJQUMxQiwwQkFBYSxDQUFBO0lBQ2IsNEJBQWUsQ0FBQTtJQUNmLG1EQUFzQyxDQUFBO0lBQ3RDLDRCQUFlLENBQUE7SUFDZix5Q0FBNEIsQ0FBQTtJQUM1QixrQ0FBcUIsQ0FBQTtJQUNyQiwwQkFBYSxDQUFBO0lBQ2IsOEJBQWlCLENBQUE7SUFDakIsNEJBQWUsQ0FBQTtJQUNmLGtDQUFxQixDQUFBO0lBQ3JCLGdDQUFtQixDQUFBO0lBQ25CLDhCQUFpQixDQUFBO0lBQ2pCLDJDQUE4QixDQUFBO0lBQzlCLDBCQUFhLENBQUE7SUFDYixnQ0FBbUIsQ0FBQTtJQUNuQiw4Q0FBaUMsQ0FBQTtJQUNqQyxrREFBcUMsQ0FBQTtJQUNyQyxrQ0FBcUIsQ0FBQTtBQUN6QixDQUFDLEVBMUJXLFNBQVMsS0FBVCxTQUFTLFFBMEJwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGVUcmFuc2Zvcm0sIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvYXBpJztcblxuaW1wb3J0IHsgQXV0b0NvbXBsZXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hdXRvY29tcGxldGUtcGlja2VyL2F1dG9jb21wbGV0ZS1waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEVudW1Mb2FpVmFuQmFuQmFzZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29uZ3ZpZWMtcGlja2VyL21vZGVscy9lbnVtcyc7XG5pbXBvcnQgeyBDcnVkTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY3J1ZC9jcnVkLWxpc3QvY3J1ZC1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIEVudGl0eVBpY2tlckRhdGFDb21wb25lbnRcbn0gZnJvbSAnLi4vY29tcG9uZW50cy9lbnRpdHktcGlja2VyL2VudGl0eS1waWNrZXItZGlhbG9nL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci1kYXRhL2VudGl0eS1waWNrZXItZGF0YS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBFbnRpdHlQaWNrZXJTZWxlY3RlZENvbXBvbmVudFxufSBmcm9tICcuLi9jb21wb25lbnRzL2VudGl0eS1waWNrZXIvZW50aXR5LXBpY2tlci1kaWFsb2cvY29tcG9uZW50cy9lbnRpdHktcGlja2VyLXNlbGVjdGVkL2VudGl0eS1waWNrZXItc2VsZWN0ZWQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgRW50aXR5UGlja2VyVHJlZURhdGFDb21wb25lbnRcbn0gZnJvbSAnLi4vY29tcG9uZW50cy9lbnRpdHktcGlja2VyL2VudGl0eS1waWNrZXItZGlhbG9nL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci10cmVlLWRhdGEvZW50aXR5LXBpY2tlci10cmVlLWRhdGEuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgRW50aXR5UGlja2VyVHJlZVNlbGVjdGVkQ29tcG9uZW50XG59IGZyb20gJy4uL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci9lbnRpdHktcGlja2VyLWRpYWxvZy9jb21wb25lbnRzL2VudGl0eS1waWNrZXItdHJlZS1zZWxlY3RlZC9lbnRpdHktcGlja2VyLXRyZWUtc2VsZWN0ZWQuY29tcG9uZW50JztcbmltcG9ydCB7IEVudGl0eVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci9lbnRpdHktcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWxlUGlja2VyU2V0dGluZyB9IGZyb20gJy4uL2NvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9tb2RlbHMvZmlsZS1waWNrZXItc2V0dGluZyc7XG5pbXBvcnQgeyBGaWxlTWFuYWdlclNldHRpbmcsIEZpbGVVcGxvYWRTZXR0aW5nIH0gZnJvbSAnLi4vY29tcG9uZW50cy9maWxlLWV4cGxvcmVyL21vZGVscy9maWxlLXNldHRpbmdzJztcbmltcG9ydCB7IEZpbGVEYXRhU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBGaWxlVHlwZUZsYWcgfSBmcm9tICcuLi9tb2RlbHMvZmlsZS10eXBlJztcbmltcG9ydCB7IEZpbHRlciwgU29ydCB9IGZyb20gJy4uL21vZGVscy9ncmlkLWluZm8nO1xuaW1wb3J0IHsgS2V5VmFsdWVUeXBlIH0gZnJvbSAnLi4vbW9kZWxzL3R5cGVzJztcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYmFzZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2VudGl0eS1tZXRhZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IE1hc3RlckRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWFzdGVyLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBDb250cm9sVHJlZU5vZGUsIENydWRGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi8uLi9jb21wb25lbnRzL2NydWQvY3J1ZC1mb3JtL2NydWQtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSUNvcnJlY3RvciB9IGZyb20gJy4vYmFzZS9jb3JyZWN0b3JzJztcbmltcG9ydCB7IElWYWxpZGF0b3IgfSBmcm9tICcuL2Jhc2UvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBFbnVtQ29udHJvbFBpY2tlclR5cGUsIEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleSwgRm9ybVN0YXRlLCBTaGFyZWRGb2xkZXJUeXBlIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgV29ya2Zsb3dTZXR0aW5nLCBXb3JrZmxvd1NldHRpbmdOZXcgfSBmcm9tICcuL3dvcmtmbG93LXNjaGVtYSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBQcm9wZXJ0eShpbml0OiBvYmplY3QsIHRvTWFwOiBvYmplY3QpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgIHRvTWFwW2tleV0gPSBpbml0W2tleV07XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTW9kZWxTY2hlbWEge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGZ1bGxOYW1lPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGRhdGFUeXBlPzogJ2ludCcgfCAnZGVjaW1hbCcgfCAnZGF0ZScgfCAnZGF0ZXRpbWUnIHwgJ3N0cmluZycgfCAnYm9vbGVhbicgfCAndGltZXNwYW4nIHwgJ2h0bWwnIHwgJ2ludFdpdGhvdXRNYXNrJyA9ICdzdHJpbmcnO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IE1vZGVsU2NoZW1hKSB7XG4gICAgICAgIGlmICghaW5pdFsnZnVsbE5hbWUnXSAmJiAhaW5pdFsnZGVzY3JpcHRpb24nXSkge1xuICAgICAgICAgICAgaW5pdFsnZnVsbE5hbWUnXSA9IGluaXRbJ2Rlc2NyaXB0aW9uJ10gPSBpbml0WyduYW1lJ107XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG5cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDcnVkQmFzZSB7XG4gICAgLy8gQ29tcG9uZW50IHN1YnNjcmliZSAtIEtoaSBzdWJjcmliZSBt4buZdCBjb21wb25lbnQgdGjDrCBhZGQgdsOgbyBhcnJheSDEkeG7gyBraGkgZGVzdHJveSB0aMOsIHVuc3Vic2NyaWJlXG4gICAgY29tcG9uZW50U3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkQmFzZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDcnVkTGlzdFNldHRpbmcge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgdGFyZ2V0UGF0aD86IHN0cmluZztcbiAgICBvYmplY3ROYW1lID0gJyc7XG4gICAgZW50aXR5S2V5ID0gJ2lkJztcbiAgICBzZXR0aW5nS2V5Pzogc3RyaW5nO1xuICAgIGVudGl0eU1ldGFkYXRhU2VydmljZT86IEVudGl0eU1ldGFkYXRhU2VydmljZTtcbiAgICBtb2RlbFNjaGVtYXM/OiBNb2RlbFNjaGVtYVtdID0gW107XG4gICAgY29scz86IENvbHVtblNjaGVtYUJhc2VbXSA9IFtdO1xuICAgIHJhd0NvbHM/OiBDb2x1bW5TY2hlbWFCYXNlW10gPSBbXTtcbiAgICBjb21tb25TY2hlbWFzPzogRm9ybUNvbnRyb2xCYXNlW10gPSBbXTtcbiAgICBjb2x1bW5TZXR0aW5nPzogQ29sdW1uU2V0dGluZyA9IG5ldyBDb2x1bW5TZXR0aW5nKCk7XG4gICAgcGFnZVNldHRpbmc/OiBQYWdlU2V0dGluZyA9IG5ldyBQYWdlU2V0dGluZygpO1xuICAgIGhlaWdodFR5cGU/OiBIZWlnaHRUeXBlID0gSGVpZ2h0VHlwZS5kZWZhdWx0OyAvLyBDw7MgY3VzdG9tIGNoaeG7gXUgY2FvIGtow7RuZzogVGjGsOG7nW5nIHPhu60gZOG7pW5nIHRyb25nIGRpYWxvZ1xuICAgIGZpeEhlaWdodFR5cGVJbkRpYWxvZz8gPSB0cnVlO1xuICAgIG11bHRpcGxlQ2hlY2tXaGVuQ2xpY2tSb3cgPSB0cnVlO1xuICAgIGN1c3RvbVdvcmtmbG93Q29kZVRyaW5oS3k6IEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleSA9IEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleS5NQUNfRElOSDtcbiAgICBzdGlja3lDb2x1bW4gPSBmYWxzZTtcbiAgICB0YWJsZU5hbWU/OiBzdHJpbmc7XG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZTtcbiAgICByZVNlbGVjdExhc3RJdGVtPyA9IHRydWU7IC8vIFNlbGVjdCBs4bqhaSBpdGVtIGN14buRaSBjw7luZyDEkcOjIGNo4buNbiBj4bunYSBncmlkXG4gICAgZmlyZUV2ZW50V2hlblJlU2VsZWN0PyA9IGZhbHNlO1xuICAgIGFkdmFuY2VEYXRhPzogYW55ID0ge307XG4gICAgZmllbGROZWVkR2V0UmVmPzogUmVmRmllbGRbXSA9IFtdO1xuICAgIHdvcmtmbG93U2V0dGluZz86IFdvcmtmbG93U2V0dGluZztcbiAgICB3b3JrZmxvd1NldHRpbmdOZXc/OiBXb3JrZmxvd1NldHRpbmdOZXc7XG4gICAgaXNXb3JrZmxvd1RyZWU/OiBib29sZWFuID0gZmFsc2U7XG4gICAgd29ya2Zsb3dDb25maWdBZHZhbmNlPzogV29ya2Zsb3dDb25maWdBZHZhbmNlO1xuICAgIGlnbm9yZVdvcmtmbG93PzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGRpc3BsYXlGaWVsZDogc3RyaW5nIHwgKChpdGVtKSA9PiBzdHJpbmcpOyAvLyB0csaw4budbmcgxJHhuqFpIGRp4buHbiBjaG8gYuG6o24gZ2hpIGzDoG0gdGnDqnUgxJHhu4EgaGnhu4NuIHRo4buLIChwaOG7pWMgduG7pSBjaG8gY8OhYyBk4buLY2ggduG7pSBraMOhYyBraGFpIHRow6FjKVxuICAgIGdldERpc3BsYXlOYW1lSW5TZXJ2ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBoYXNDdXN0b21IYW5kbGVDbGlja1JvdyA9IGZhbHNlO1xuICAgIGNoZWNrQWxsb3dUcmluaEt5OiAocm93RGF0YSkgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgICBjaGVja0FsbG93U2VsZWN0Um93OiAocm93RGF0YSwgZXZ0PykgPT4gYm9vbGVhbjtcbiAgICBnZXRJdGVtU3RhdGU6IChsc3RSb3dEYXRhOiBhbnlbXSkgPT4geyBba2V5OiBzdHJpbmddOiBhbnk7IH07XG4gICAgZ2V0RGF0YUZvck5leHRGaXJzdFN0ZXBUYXNrPzogKHJvd0RhdGEpID0+ICh7fSk7XG4gICAgY2hlY2tQZXJtaXNpb25UcmluaEt5ID0gZmFsc2U7XG4gICAgdXNlV29ya2Zsb3dCdXR0b24/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBzaG93RWRpdExpbmsgPSB0cnVlO1xuICAgIHNob3dCdXR0b25UaHVIb2kgPSB0cnVlO1xuICAgIHNob3dGaWxlTWFuYWdlckZyb21XZlByb2Nlc3MgPSB0cnVlO1xuICAgIHNob3dDb25maXJtRXhwb3J0ID0gZmFsc2U7XG4gICAgc2hvd0VkaXRMaW5rT25seVZpZXcgPSBmYWxzZTtcblxuICAgIHBsYWNlaG9sZGVyQ29tbW9uU2VhcmNoID0gJ1Thu6sga2jDs2EnO1xuICAgIHRvb2xUaXBTZWFyaEJveENvbW1vbiA9ICdUw6xtIGtp4bq/bSB0aGVvIGPDoWMgdHLGsOG7nW5nOiAnO1xuICAgIG1kV2lkdGhDb21tb25TZWFyY2ggPSAzO1xuICAgIHVzZUNvbW1vblNlYXJjaCA9IGZhbHNlO1xuICAgIHVzZUNvbW1vbkZ1bGxUZXh0U2VhcmNoID0gdHJ1ZTtcbiAgICBhcnJGdWxsVGV4dFNlYXJjaD86IE1vZGVsU2NoZW1hW10gPSBbXTtcbiAgICBoaWRkZW5TZWFyY2ggPSBmYWxzZTtcbiAgICBoaWRkZW5BdXRob3JpemVCdXR0b24gPSBmYWxzZTtcbiAgICBzdWZmaXhBdXRob3JpemVDb2RlID0gJyc7IC8vIHRow6ptIGjhuq11IHThu5EgbcOjIGNvZGUgdHJvbmcgY2jhu6ljIG7Eg25nIFBow6JuIHF1eeG7gW4gbsO6dCAocGjhu6VjIHbhu6UgY2FzZSBjcnVkTGlzdCBuw6B5IG7hurFtIHRyb25nIG3DoG4gaMOsbmggcG9wdXApXG5cbiAgICBoaWRkZW5IZWFkZXIgPSBmYWxzZTtcbiAgICBoaWRkZW5QYWdlU2V0dGluZyA9IGZhbHNlO1xuICAgIGhpZGRlblRleHRQYWdlID0gZmFsc2U7XG4gICAgaGlkZGVuVG9vbGJhciA9IGZhbHNlO1xuICAgIGhpZGRlbkJ1dHRvbnMgPSBmYWxzZTtcbiAgICBoaWRkZW5BZHZhbmNlU2VhcmNoID0gZmFsc2U7XG4gICAgaGlkZGVuU2F2ZVNldHRpbmcgPSBmYWxzZTtcbiAgICBoaWRkZW5TZXR0aW5nID0gZmFsc2U7XG4gICAgaGlkZGVuU2V0dGluZ1Blcm1pc3Npb24gPSBmYWxzZTtcbiAgICBoaWRkZW5TZXR0aW5nV29ya2Zsb3cgPSBmYWxzZTtcbiAgICBoaWRkZW5QYWdlVGl0bGUgPSBmYWxzZTtcblxuICAgIGhpZGRlbkNoZWNrYm94ID0gZmFsc2U7XG4gICAgaGlkZGVuT3JkZXJDb2x1bW4gPSBmYWxzZTtcbiAgICBoaWRkZW5Xb3JrZmxvd0NvbHVtbiA9IGZhbHNlO1xuICAgIGhpZGRlbldvcmtmbG93SGlzdG9yeSA9IGZhbHNlO1xuICAgIGFsbG93RmlsdGVyV29ya2Zsb3dDb2x1bW4gPSBmYWxzZTtcbiAgICBoaWRkZW5GdW5jdGlvbkNvbHVtbiA9IGZhbHNlO1xuICAgIGhpZGVuU29ydENvbHVtbiA9IGZhbHNlO1xuICAgIGhpZGRlblJlZnJlc2ggPSBmYWxzZTtcbiAgICBoaWRkZW5GaWx0ZXJSb3cgPSBmYWxzZTtcbiAgICBoaWRkZW5UcmluaEt5ID0gdHJ1ZTtcbiAgICBoaWRkZW5TZWFyY2hDdXN0b20gPSBmYWxzZTtcbiAgICB1c2VCYXNlVHJpbmhLeSA9IHRydWU7XG4gICAgZGlzYWJsZVNoYXJlID0gdHJ1ZTtcbiAgICBkaXNhYmxlVmlld1dvcmtmbG93QXR0YWNoID0gZmFsc2U7XG4gICAgaGlkZGVuV29ya2Zsb3dDb3JlU3RhdHVzID0gdHJ1ZTtcbiAgICByZXF1aXJlZFZhbkJhbkRpQWZ0ZXJUcmluaEt5ID0gZmFsc2U7XG4gICAgZGlzYWJsZUxhenlMb2FkQ29tbW9uU2VhcmNoID0gZmFsc2U7XG4gICAgaXNMaW1pdE51bWJlck9mTGluZSA9IHRydWU7XG4gICAgY3VzdG9tR2V0RGF0YSA9IGZhbHNlO1xuXG4gICAgZ3JvdXBDb2x1bW4/OiBDb2x1bW5TY2hlbWFCYXNlO1xuXG4gICAgc2hvd0V4cG9ydEFsbCA9IGZhbHNlO1xuICAgIHNob3dFeHBvcnRTZWxlY3RlZEl0ZW1zID0gdHJ1ZTtcbiAgICBzaG93RXhwb3J0V29yZFNlbGVjdGVkSXRlbXMgPSBmYWxzZTtcbiAgICBleHBvcnRBbGxNb2RlbDogRXhwb3J0QWxsTW9kZSA9IEV4cG9ydEFsbE1vZGUuQXV0b0dldERhdGE7XG4gICAgZXhwb3J0SXRlbXNNb2RlOiBFeHBvcnRJdGVtc01vZGUgPSBFeHBvcnRJdGVtc01vZGUuRnJvbUh0bWw7XG5cbiAgICBlbmFibGVWZXJzaW9uID0gZmFsc2U7XG4gICAgc2hvd1ZlcnNpb25CdXR0b24gPSBmYWxzZTtcbiAgICB2ZXJzaW9uTW9kZWw/OiB7IFtrZXk6IHN0cmluZ106IGFueTsgfSA9IHt9O1xuICAgIHNob3dIaXN0b3J5ID0gZmFsc2U7XG4gICAgaGlzdG9yeT86IGFueTtcblxuICAgIGNvbG9yRmlsdGVyRmllbGQgPSAnJztcbiAgICBjb2xvckZpbHRlclRhYmxlPzogUm93Q29sb3JPcHRpb25bXSA9IFtdO1xuICAgIGJ1dHRvbnNQZXJtaXNzaW9uQ3VzdG9tPzogQnV0dG9uQWN0aW9uW10gPSBbXTtcblxuXG4gICAgZW50aXR5TWV0YWRhdGFTZXR0aW5nPzogQ3J1ZEZvcm1TZXR0aW5nID0gbmV3IENydWRGb3JtU2V0dGluZygpO1xuXG4gICAgZmllbGRTZWFyY2hUZXh0Pzogc3RyaW5nW10gPSBbXTtcbiAgICBmaWx0ZXJUZW1wbGF0ZUFkdnM/OiBGaWx0ZXJbXTtcblxuICAgIGZ1bmN0aW9uOiBDcnVkTGlzdEN1c3RvbUZ1bmN0aW9uID0gbmV3IENydWRMaXN0Q3VzdG9tRnVuY3Rpb24oKTtcblxuICAgIHBvcHVwSGVhZGVyPyA9ICcnO1xuICAgIHBvcHVwU2l6ZT86IFBvcHVwU2l6ZSA9IG5ldyBQb3B1cFNpemUoKTtcbiAgICBtYXNrQ2xhc3M/OiBzdHJpbmc7XG5cbiAgICBoaWRkZW5SZW9yZGVyPyA9IGZhbHNlO1xuICAgIHJlb3JkZXJGaWVsZD8gPSAnVGh1VHUnO1xuICAgIGVuYWJsZVJlb3JkZXJSb3c/ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBBdXRvIGdlbmVyYXRlIGdyaWRJbmZvLmZpZWxkcyB1c2luZyBzZXR0aW5nLmNvbHMgKyBkYXRhTGlzdC5hZGR0aW9uYWxGaWVsZHNcbiAgICAgKiBAZGF0ZSAxMS80LzIwMjIgLSAyOjA0OjMxIFBNXG4gICAgICpcbiAgICAgKiBAdHlwZSB7P2Jvb2xlYW59XG4gICAgICovXG4gICAgYXV0b0dlbmVyYXRlU2VsZWN0RmllbGRzPyA9IGZhbHNlO1xuXG4gICAgbW9kaWZ5Um93RGF0YUZvclRhc2s6IChyb3dEYXRhKSA9PiB2b2lkID0gKHJvd0RhdGEpID0+ICh7fSk7XG4gICAgbW9kaWZ5SXRlbVRhc2s6IChtb2RlbFRhc2ssIHJvd0RhdGEpID0+IHZvaWQgPSAobW9kZWxUYXNrLCByb3dEYXRhKSA9PiAoe30pO1xuICAgIGdldEN1c3RvbURhdGFUcmluaEt5OiAocm93RGF0YSkgPT4gYW55ID0gKHJvd0RhdGEpID0+ICh7fSk7XG4gICAgZ2V0TGFiZWxCdXR0b25UcmluaEt5OiAocm93RGF0YSkgPT4gc3RyaW5nID0gKHJvd0RhdGEpID0+ICdUcsOsbmgga8O9JztcbiAgICBjaGVja1JlYWR5VG9UcmluaEt5OiAoKSA9PiBib29sZWFuID0gKCkgPT4gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkTGlzdFNldHRpbmcpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dDb25maWdBZHZhbmNlIHtcbiAgICBnZXRXb3JrZmxvd1NldHRpbmc6IChyb3dEYXRhKSA9PiBXb3JrZmxvd1NldHRpbmdOZXc7XG59XG5cbmV4cG9ydCBjbGFzcyBDcnVkTGlzdEN1c3RvbUZ1bmN0aW9uIHtcbiAgICAvLyBDdXN0b21pemVcbiAgICBnZXRTZWFyY2hDb250cm9sPzogKGZpZWxkOiBzdHJpbmcpID0+IEZvcm1TY2hlbWFCYXNlW10gPSAoZmllbGQ6IHN0cmluZykgPT4gbnVsbDtcbiAgICAvLyBBc3luYyBmdW5jdGlvblxuICAgIG1vZGlmeUFkdmFuY2VTZWFjaE1vZGVsPzogKGRhdGE6IEFkdmFuY2VTZWFyY2hEYXRhLCBzZXR0aW5nOiBBZHZhbmNlU2VhcmNoU2V0dGluZykgPT4gUHJvbWlzZTx2b2lkPiA9IGFzeW5jIChkYXRhKSA9PiBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRMaXN0Q3VzdG9tRnVuY3Rpb24pIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVyc29uYWxTZXR0aW5nIHtcbiAgICBjb2x1bW5TZXR0aW5nPzogQ29sdW1uU2V0dGluZyA9IG5ldyBDb2x1bW5TZXR0aW5nKCk7XG4gICAgcGFnZVNldHRpbmc/OiBQYWdlU2V0dGluZyA9IG5ldyBQYWdlU2V0dGluZygpO1xuICAgIGNvbG9yRmlsdGVyRmllbGQgPSAnJztcbiAgICBjb2xvckZpbHRlclRhYmxlPzogUm93Q29sb3JPcHRpb25bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFBlcnNvbmFsU2V0dGluZykge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDcnVkTGlzdERhdGEgZXh0ZW5kcyBDcnVkQmFzZSB7XG4gICAgbG9hZGluZyA9IGZhbHNlO1xuICAgIGFkanVzdGVkUG9zaXRpb25Mb2FkaW5nID0gZmFsc2U7XG4gICAgcmVhZHkgPSB0cnVlO1xuICAgIC8vIGJhc2UgcmVhZHkgbMOgIGNo4bupYyBuxINuZyBraeG7g20gdHJhIHJlYWR5IGPhu6dhIHJpw6puZyB0cm9uZyBiYXNlLiBrIGdp4buRbmcgduG7m2kgcmVhZHkg4bufIHRyw6puXG4gICAgLy8gRMO5bmcgxJHhu4Mga2nhu4NtIHRyYSBu4bq/dSBjw7Mgd29ya2Zsb3cgdGjDrCB04bqhbSB0aOG7nWkgY2jGsGEgY2hvIOG6pW4gdGjDqm0gbeG7m2kgbuG6v3UgY2jGsGEgbG9hZCB4b25nIGThu68gbGnhu4d1IGPhuqduIHRoaeG6v3RcbiAgICBiYXNlUmVhZHkgPSBmYWxzZTtcbiAgICBkYXRhU291cmNlPzogYW55W10gPSBbXTtcbiAgICAvLyDEkOG7kWkgduG7m2kgbGlzdCBk4bqhbmcgdHJlZSB0aMOsIHJhdyBkYXRhc291cmNlIGzDoCBsaXN0IGRhdGEga2hpIGNoxrBhIHTDoWkgY+G6pXUgdHLDumMgdGjDoG5oIGThu68gbGnhu4d1IHRyZWVcbiAgICBhbGxEYXRhU291cmNlPzogeyByYXc6IGFueVtdLCBkYXRhOiBhbnlbXTsgfSA9IHsgcmF3OiBbXSwgZGF0YTogW10gfTtcbiAgICBzZWxlY3RlZEl0ZW1zPzogYW55W10gPSBbXTtcbiAgICBzZWxlY3RlZEl0ZW0/OiBhbnk7XG4gICAgc2VsZWN0ZWRJdGVtTGFzdD86IGFueTtcbiAgICBzZWxlY3RlZElkPzogbnVtYmVyO1xuICAgIHRvdGFsID0gMDtcbiAgICBpdGVtRGF0YT86IGFueTtcbiAgICBhZHZhbmNlRGF0YTogYW55ID0ge307XG5cbiAgICAvLyBDw6FjIHRodeG7mWMgdMOtbmggYuG7lSBzdW5nIGRvIGLhu4sgbOG7l2kga2hpIHBhY2thZ2VcbiAgICBzdWJtaXR0aW5nOiBib29sZWFuID0gZmFsc2U7XG4gICAgLy8gRW5kIEPDoWMgdGh14buZYyB0w61uaCBi4buVIHN1bmcgZG8gYuG7iyBs4buXaSBraGkgcGFja2FnZVxuXG4gICAgZXhwYW5kZWRSb3dLZXlzPzogeyBba2V5OiBzdHJpbmddOiBib29sZWFuOyB9ID0ge307XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3REYXRhKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVudGl0eU1lZGF0YURhdGFTZXR0aW5nIHtcbiAgICBkYXRhPzogYW55ID0ge307XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRW50aXR5TWVkYXRhRGF0YVNldHRpbmcpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUm93Q29sb3JPcHRpb24ge1xuICAgIGZpbHRlclZhbHVlID0gJyc7XG4gICAgY29tcGFyZVR5cGUgPSAnJztcbiAgICBjb2xvciA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFJvd0NvbG9yT3B0aW9uKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBhZ2VTZXR0aW5nIHtcbiAgICBwYWdlID0gMTtcbiAgICBwYWdlU2l6ZSA9IDE1O1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFBhZ2VTZXR0aW5nKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbHVtblNldHRpbmcge1xuICAgIHNvcnRzPzogU29ydFtdID0gW107XG4gICAgc29ydEZpZWxkPzogc3RyaW5nO1xuICAgIHNvcnREaXI/OiAtMSB8IDAgfCAxIHwgMiA9IC0xO1xuICAgIGdyb3VwRmllbGQgPSAnJztcbiAgICBncm91cEluQ2xpZW50PyA9IGZhbHNlO1xuICAgIHNob3dHcm91cFNpemU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIGRldGFpbHM/OiBDb2x1bW5TZXR0aW5nRGV0YWlsW10gPSBbXTtcbiAgICBjb2x1bW5SZW9yZGVyPztcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDb2x1bW5TZXR0aW5nKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbHVtblNldHRpbmdEZXRhaWwge1xuICAgIG9yZGVyPzogbnVtYmVyID0gMTtcbiAgICBjb2x1bW5Db2RlPzogc3RyaW5nO1xuICAgIGNvbHVtbk5hbWU/OiBzdHJpbmc7XG4gICAgdmlzaWJsZT86IGJvb2xlYW47XG4gICAgdGV4dEFsaWduPzogVGV4dEFsaWduO1xuICAgIHdpZHRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ3J1ZEZvcm1EYXRhIGV4dGVuZHMgQ3J1ZEJhc2Uge1xuICAgIGRhdGE/OiBhbnkgPSB7fTtcbiAgICBzdWJtaXR0aW5nPyA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFRy4bqhbmcgdGjDoWkgY+G7p2EgZm9ybSDEkWFuZyDEkcaw4bujYyBt4bufOiBMw6AgZm9ybSB0aMOqbSBt4bubaSwgaGF5IGZvcm0gc+G7rWEsIGhheSBmb3JtIHjDs2FcbiAgICAgKi9cbiAgICBmb3JtU3RhdGU/OiBGb3JtU3RhdGUgPSBGb3JtU3RhdGUuQUREO1xuICAgIHdvcmtmbG93QnV0dG9ucz86IGFueVtdO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRGb3JtRGF0YSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDcnVkRm9ybUN1c3RvbUZ1bmN0aW9uIHtcbiAgICAvLyBDdXN0b21pemVcbiAgICBtb2RpZnlEYXRhQWZ0ZXJHZXRDYWNoZT86IChkYXRhOiBhbnkpID0+IHZvaWQgPSAoZGF0YTogYW55KSA9PiBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRMaXN0Q3VzdG9tRnVuY3Rpb24pIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3J1ZEZvcm1TZXR0aW5nIHtcbiAgICBkaXNhYmxlQ2FjaGluZyA9IGZhbHNlO1xuICAgIGhpZGRlblRyaW5oS3kgPSB0cnVlO1xuICAgIHNjaGVtYT86IEZvcm1TY2hlbWFCYXNlW10gPSBbXTtcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlO1xuICAgIGJ1aWxkSW5TY2hlbWE/OiBGb3JtQ29udHJvbEJhc2VbXSA9IFtdO1xuICAgIHVuaXF1ZUZpZWxkPzogc3RyaW5nW10gfCBzdHJpbmdbXVtdID0gW107XG4gICAgZmllbGREcm9wZG93bj86IHsgW2tleTogc3RyaW5nXTogRHJvcGRvd25Db250cm9sU2NoZW1hOyB9ID0ge307XG4gICAgZmllbGROZWVkR2V0UmVmPzogeyBba2V5OiBzdHJpbmddOiBUZXh0Q29udHJvbFNjaGVtYTsgfSA9IHt9O1xuICAgIGRpc3BsYXlGaWVsZD86IHN0cmluZyB8ICgoaXRlbSkgPT4gc3RyaW5nKTtcbiAgICBmaXJzdEZvY3VzQ29udHJvbD86IHN0cmluZztcbiAgICBmaWx0ZXJDaGVja0V4aXN0QnlWZXJzaW9uPzogRmlsdGVyW107XG4gICAgZGVmYXVsdEZpbHRlckNoZWNrRXhpc3Q/OiBGaWx0ZXJbXSB8ICgoKSA9PiBGaWx0ZXJbXSk7XG4gICAgY3VzdG9tV29ya2Zsb3dDb2RlVHJpbmhLeTogRW51bVdvcmtmbG93Q29yZUNvZGVTZXR0aW5nS2V5ID0gRW51bVdvcmtmbG93Q29yZUNvZGVTZXR0aW5nS2V5Lk1BQ19ESU5IO1xuICAgIGVudGl0eU1ldGFkYXRhRGF0YT86IENydWRGb3JtRGF0YTtcbiAgICBlbnRpdHlNZXRhZGF0YVNldHRpbmc/OiBDcnVkRm9ybVNldHRpbmc7XG4gICAgZnVuY3Rpb24/OiBDcnVkRm9ybUN1c3RvbUZ1bmN0aW9uID0gbmV3IENydWRGb3JtQ3VzdG9tRnVuY3Rpb24oKTtcbiAgICBoaWRkZW5LeVNvU2ltQ2FOaGFuPz0gZmFsc2U7XG4gICAgaGlkZGVuS3lTb1VzYkNhTmhhbj89IGZhbHNlO1xuICAgIGhpZGRlbkt5U29Eb25WaT89IGZhbHNlO1xuICAgIGhpZGRlbkt5U29TbWFydENBPz0gZmFsc2U7XG4gICAgaGlkZGVuQnV0UGhlPz0gZmFsc2U7XG4gICAgYXJyRmllbGRNdXN0VmFsaWRhdGU/OiBzdHJpbmdbXSA9IFtdO1xuICAgIGdldEN1c3RvbURhdGFUcmluaEt5OiAocm93RGF0YSkgPT4gYW55ID0gKHJvd0RhdGEpID0+ICh7fSk7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZEZvcm1TZXR0aW5nKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFkdmFuY2VTZWFyY2hEYXRhIGV4dGVuZHMgQ3J1ZEZvcm1EYXRhIHtcbiAgICBpbml0RGF0YT86IGFueSA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEFkdmFuY2VTZWFyY2hEYXRhKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFkdmFuY2VTZWFyY2hTZXR0aW5nIGV4dGVuZHMgQ3J1ZEZvcm1TZXR0aW5nIHtcbiAgICBmaWVsZEtleSA9ICdfayc7XG4gICAgZW50aXR5UGVybWlzc2lvblNjaGVtYT86IEZvcm1Db250cm9sQmFzZVtdID0gW107XG4gICAga2VlcEluaXRTZWFyY2hEYXRhTm90TnVsbCA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQWR2YW5jZVNlYXJjaFNldHRpbmcpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2NoZW1hQmFzZSB7XG4gICAgZmllbGQ/OiBzdHJpbmc7XG4gICAgZmllbGRGaWx0ZXI/OiBzdHJpbmc7XG4gICAgdW5pcXVlRmllbGQ/OiBzdHJpbmc7XG4gICAgdHlwZT86ICdib29sZWFuJyB8ICdpbnQnIHwgJ2RlY2ltYWwnIHwgJ2RhdGV0aW1lJyB8ICdzdHJpbmcnID0gJ3N0cmluZyc7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogU2NoZW1hQmFzZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtU2NoZW1hQmFzZSBleHRlbmRzIFNjaGVtYUJhc2Uge1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGZ1bGxMYWJlbD86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICAgIG1lc3NhZ2VDbGFzcz86IHN0cmluZztcbiAgICBzaG93TGFiZWw/ID0gdHJ1ZTtcbiAgICBnV2lkdGg/ID0gMTI7XG4gICAgbWRXaWR0aD8gPSA2O1xuICAgIHJvd1NwYW4/ID0gMTtcbiAgICB3aWR0aD86IHN0cmluZztcbiAgICBjbGFzcz8gPSAnJztcbiAgICBzdHlsZT86IGFueSA9IHt9O1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBoaWRkZW4/ID0gZmFsc2U7XG4gICAgaGlkZGVuQ2hlY2s/OiAocm9vdE1vZGVsOiBhbnksIGN1cnJlbnROb2RlOiBDb250cm9sVHJlZU5vZGUpID0+IGJvb2xlYW47XG4gICAgaGlkZGVuT25WaWV3PyA9IGZhbHNlO1xuICAgIHZpc2libGVJbkxpc3Q/ID0gdHJ1ZTtcbiAgICBvcGVyYXRvcj86IE9wZXJhdG9yO1xuICAgIGdyb3VwQ29kZT8gPSAnJztcbiAgICBkZWZhdWx0VmFsdWU/OiBhbnk7XG4gICAgZmllbGRBbGlhcz8gPSAnJztcbiAgICBkYXRhPzogYW55ID0ge307XG4gICAgaXNIdG1sTGFiZWw/ID0gZmFsc2U7XG4gICAgaXNIb3Jpem9udGFsbHlMYWJlbD8gPSBmYWxzZTtcbiAgICBvcmRlcj8gPSAwO1xuICAgIGVycm9yTGFiZWw/OiBzdHJpbmc7XG4gICAgc2hvd1Rvb2x0aXA/ID0gdHJ1ZTtcbiAgICBzaG93VG9vbHRpcE9ubHk/ID0gZmFsc2U7XG4gICAgdG9vbHRpcD86IGFueTtcbiAgICBnZW5lcmF0ZVRvb2x0aXA/OiAoaXRlbSkgPT4gYW55O1xuXG4gICAgYXV0b1NlYXJjaD8gPSB0cnVlOyAvLyBEw7luZyBjaG8gY29tbW9uc2VhcmNoO1xuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGb3JtU2NoZW1hQmFzZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb250YWluZXJTY2hlbWEgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZSB7XG4gICAgY29udHJvbHM6IEZvcm1TY2hlbWFCYXNlW107XG4gICAgc2hvd0luQm94PyA9IHRydWU7XG4gICAgYm94U3R5bGU/OiBhbnk7XG4gICAgcmVxdWlyZWQ/ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29udGFpbmVyU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1TY2hlbWFCYXNlV2l0aFNlcnZpY2UgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZSB7XG4gICAgLy8gVXJsIMSR4buDIGzhuqV5IGThu68gbGnhu4d1ICoqKiBLSMOUTkcgU+G7rCBE4bukTkcgVFJPTkcgQ8OBQyBDQVNFIFBI4buUIEJJ4bq+TiwgQ0jhu4ggU+G7rCBE4bukTkcgxJDhu5BJIFbhu5pJIEZPUk0gS0jhuqJPIFPDgVQgKioqXG4gICAgc2VydmljZVVyaT8gPSAnJztcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlIHwgTWFzdGVyRGF0YVNlcnZpY2U7XG4gICAgcmVmRmllbGRzPzogUmVmRmllbGRbXSA9IFtdO1xuICAgIGdyb3VwQ29kZT86IHN0cmluZztcbiAgICB2YWx1ZUZpZWxkPyA9ICdpZCc7XG4gICAgZGlzcGxheUZpZWxkPyA9ICd0ZW4nO1xuICAgIGRhdGFTb3VyY2U/OiBhbnlbXSA9IFtdO1xuXG4gICAgaXNTZXJ2ZXJMb2FkPyA9IGZhbHNlO1xuICAgIHNlYXJjaEZpZWxkPzogc3RyaW5nW107XG5cbiAgICBpc1RyZWU/ID0gZmFsc2U7XG4gICAgaXNUcmVlQmFzZU1vZGVsPyA9IGZhbHNlO1xuICAgIGZpZWxkVHJlZT86IHN0cmluZztcbiAgICB2YWx1ZVBhcmVudFJvb3Q/OiBhbnkgPSBudWxsOyAvLyBHacOhIHRy4buLIHRyxrDhu51uZyBbZmllbGRUcmVlXSBj4bunYSBpdGVtIHRyZWUgcm9vdFxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/ID0gJ2lkJzsgLy8gVHLGsOG7nW5nIHjDoWMgxJHhu4tuaCBi4bqjbiBnaGkgbMOgIGLhuqNuIGdoaSBjaGEgY+G7p2EgYuG6o24gZ2hpIGNvblxuICAgIHNlbGVjdENoaWxkSXRlbT8gPSBmYWxzZTsgLy8gQ8OzIHNlbGVjdCBi4bqjbiBnaGkgY29uIG7hur91IGNo4buNbiBi4bqjbiBnaGkgY2hhXG4gICAgc2VsZWN0RGVzY2VuZGFudD8gPSBmYWxzZTsvLyBDw7Mgc2VsZWN0IGLhuqNuIGdoaSBjb24sIGNow6F1IG7hur91IGNo4buNbiBi4bqjbiBnaGkgY2hhXG5cbiAgICBwbHVzVXJsPzogc3RyaW5nO1xuICAgIHNvcnRzPzogU29ydFtdID0gW107XG4gICAgc29ydEZpZWxkPyA9ICcnO1xuICAgIHNvcnREaXI/OiAxIHwgLTEgPSAxO1xuICAgIGZpZWxkUGx1cz8gPSAnJzsgLy8gRGFuaCBzw6FjaCBuaOG7r25nIHRyxrDhu51uZyBi4buVIHN1bmcgY+G6p24gbOG6pXkgdGjDqm0gbmdvw6BpIGlkLCB0ZW47IFbDrSBk4bulICxtYVxuICAgIGRlZmF1bHRGaWx0ZXJzPzogRmlsdGVyW10gfCBGdW5jdGlvbiB8IFByb21pc2U8RmlsdGVyW10+OyAvLyB0dW5ndHMgdGjDqm0ga2nhu4N1IGThu68gbGnhu4d1IGRlZmF1bHRGaWx0ZXJzIGzDoCBwcm9taXNlXG4gICAgYWZ0ZXJHZXREYXRhPzogRnVuY3Rpb247XG5cbiAgICBmdW5jU2V0RGVmYXVsdFZhbHVlPzogRnVuY3Rpb247XG5cbiAgICBmaWVsZFZhbHVlUGFyZW50PyA9ICd2YWx1ZSc7IC8vIFRyxrDhu51uZyBz4butIGThu6VuZyDEkeG7gyBs4bqleSBk4buvIGxp4buHdSBsw6BtIGtow7NhIHThu6sgYuG6o25nIGNoYSBj4bunYSBpdGVtIGRyb3AgZG93biDEkcaw4bujYyBjaOG7jW5cblxuICAgIGNhbGxiYWNrRGF0YUZpbmlzaD86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcbiAgICBtb2RpZnlGaWx0ZXI/OiBGdW5jdGlvbjtcbiAgICBmdW5jR2V0TGFiZWw/OiAoaXRlbSkgPT4gc3RyaW5nO1xuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGb3JtU2NoZW1hQmFzZVdpdGhTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExhYmVsU2NoZW1hIGV4dGVuZHMgRm9ybVNjaGVtYUJhc2Uge1xuICAgIGZvcj8gPSAnJztcbiAgICBpc0h0bWw/ID0gZmFsc2U7XG4gICAgbWRXaWR0aD8gPSAxMjtcbiAgICBpbmRleExhYmVsPzogbnVtYmVyO1xuICAgIHRleHQ/ID0gJyc7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogTGFiZWxTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGl0bGVTY2hlbWEgZXh0ZW5kcyBMYWJlbFNjaGVtYSB7XG4gICAgY2xhc3M/ID0gJ3RpdGxlLWdyb3VwIHRleHQtYm9sZCc7XG4gICAgbWRXaWR0aD8gPSAxMjtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUaXRsZVNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtQ29udHJvbEJhc2UgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZSB7XG4gICAgX2NvbXBvbmVudD86IGFueTsgLy8gQ29tcG9uZW50IGPhu6dhIHNjaGVtYSBraGkga2jhu59pIHThuqFvXG4gICAgdW5pcXVlRmllbGQ/OiBzdHJpbmc7IC8vIFPhu60gZOG7pW5nIHRyb25nIHRhYmxlIHNjaGVtYVxuICAgIGF1dG9mb2N1cz8gPSBmYWxzZTtcbiAgICB2YWxpZGF0b3JzPzogSVZhbGlkYXRvcltdID0gW107XG4gICAgY29ycmVjdG9ycz86IElDb3JyZWN0b3JbXSA9IFtdO1xuICAgIHJlcXVpcmVkPyA9IGZhbHNlO1xuICAgIHNob3dJY29uUmVxdWlyZWQ/ID0gZmFsc2U7XG4gICAgZW5hYmxlQ2FjaGluZz8gPSBmYWxzZTtcbiAgICBvbkNoYW5nZWQ/OiBGdW5jdGlvbjtcbiAgICBvbktleVVwPzogRnVuY3Rpb247XG4gICAgb25BZnRlckNoYW5nZWQ/OiBGdW5jdGlvbjtcbiAgICBvbkluaXQ/OiBGdW5jdGlvbjtcbiAgICBvblJvd05vZGVGaW5pc2hJbml0PzogRnVuY3Rpb247XG4gICAgdHJpZ2dlckxvYWRDaGlsZD86IEZ1bmN0aW9uO1xuICAgIGhhc09wZXJhdG9yQ2FuQm8/ID0gZmFsc2U7XG4gICAgYWRkVG9HcmlkSW5mbz8gPSBmYWxzZTtcbiAgICBpc0xhenlMb2FkPyA9IGZhbHNlO1xuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGb3JtQ29udHJvbEJhc2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRm9ybUNvbnRyb2xCYXNlV2l0aFNlcnZpY2UgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIC8qKiBDb3B5IHThu6sgRm9ybVNjaGVtYUJhc2VXaXRoU2VydmljZSAqL1xuICAgIC8vIFVybCDEkeG7gyBs4bqleSBk4buvIGxp4buHdSAqKiogS0jDlE5HIFPhu6wgROG7pE5HIFRST05HIEPDgUMgQ0FTRSBQSOG7lCBCSeG6vk4sIENI4buIIFPhu6wgROG7pE5HIMSQ4buQSSBW4buaSSBGT1JNIEtI4bqiTyBTw4FUICoqKlxuICAgIHNlcnZpY2VVcmk/ID0gJyc7XG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xuICAgIHJlZkZpZWxkcz86IFJlZkZpZWxkW10gPSBbXTtcbiAgICBncm91cENvZGU/OiBzdHJpbmc7XG4gICAgdmFsdWVGaWVsZD8gPSAnaWQnO1xuICAgIGRpc3BsYXlGaWVsZD8gPSAndGVuJztcblxuICAgIGlzU2VydmVyTG9hZD8gPSBmYWxzZTtcbiAgICBwcmV2ZW50U2VydmVyTG9hZE9uSW5pdD8gPSBmYWxzZTtcbiAgICBzZWFyY2hGaWVsZD86IHN0cmluZ1tdO1xuXG4gICAgaXNUcmVlPyA9IGZhbHNlO1xuICAgIGlzVHJlZUJhc2VNb2RlbD8gPSBmYWxzZTtcbiAgICBmaWVsZFRyZWU/OiBzdHJpbmc7XG4gICAgdmFsdWVQYXJlbnRSb290PzogYW55ID0gbnVsbDsgLy8gR2nDoSB0cuG7iyB0csaw4budbmcgW2ZpZWxkVHJlZV0gY+G7p2EgaXRlbSB0cmVlIHJvb3RcbiAgICBmaWVsZFBhcmVudFRyZWVJdGVtPyA9ICdpZCc7IC8vIFRyxrDhu51uZyB4w6FjIMSR4buLbmggYuG6o24gZ2hpIGzDoCBi4bqjbiBnaGkgY2hhIGPhu6dhIGLhuqNuIGdoaSBjb25cbiAgICBmaWVsZE1hUGhhbkNhcD8gPSAnbWFQaGFuQ2FwJzsgLy8gRmllbGQgbcOjIHBow6JuIGPhuqVwXG4gICAgc2VsZWN0Q2hpbGRJdGVtPyA9IGZhbHNlOyAvLyBDw7Mgc2VsZWN0IGLhuqNuIGdoaSBjb24gbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcbiAgICBzZWxlY3REZXNjZW5kYW50PyA9IGZhbHNlOy8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiwgY2jDoXUgbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcblxuICAgIHBhZ2VTaXplPzogbnVtYmVyID0gMTU7IC8vIETDuW5nIGNobyBkcm9wZG93biBzZXJ2ZXIgbG9hZFxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XG4gICAgc29ydHM/OiBTb3J0W10gPSBbXTtcbiAgICBzb3J0RmllbGQ/ID0gJyc7XG4gICAgc29ydERpcj86IDEgfCAtMSA9IDE7XG4gICAgZmllbGRQbHVzPyA9ICcnOyAvLyBEYW5oIHPDoWNoIG5o4buvbmcgdHLGsOG7nW5nIGLhu5Ugc3VuZyBj4bqnbiBs4bqleSB0aMOqbSBuZ2/DoGkgaWQsIHRlbjsgVsOtIGThu6UgLG1hXG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47IC8vIHR1bmd0cyB0aMOqbSBraeG7g3UgZOG7ryBsaeG7h3UgZGVmYXVsdEZpbHRlcnMgbMOgIHByb21pc2VcbiAgICBmaWx0ZXJXaGlsZVByb2Nlc3M/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47IC8vIHR1bmd0cyB0aMOqbSBraeG7g3UgZOG7ryBsaeG7h3UgZGVmYXVsdEZpbHRlcnMgbMOgIHByb21pc2VcbiAgICBiaW5kaW5nRmlsdGVycz86IEZpbHRlcltdO1xuICAgIGFmdGVyR2V0RGF0YT86IEZ1bmN0aW9uO1xuXG4gICAgZnVuY1NldERlZmF1bHRWYWx1ZT86IEZ1bmN0aW9uIHwgUHJvbWlzZTxhbnk+O1xuXG4gICAgcGFyZW50RmllbGQ/OiBzdHJpbmc7IC8vIENvbHVtbiB0xrDGoW5nIOG7qW5nIHRyb25nIHRhYmxlIHNxbCBzZXJ2ZXIuXG4gICAgZmllbGRWYWx1ZVBhcmVudD8gPSAndmFsdWUnOyAvLyBUcsaw4budbmcgc+G7rSBk4bulbmcgxJHhu4MgbOG6pXkgZOG7ryBsaeG7h3UgbMOgbSBraMOzYSB04burIGLhuqNuZyBjaGEgY+G7p2EgaXRlbSBkcm9wIGRvd24gxJHGsOG7o2MgY2jhu41uXG5cbiAgICBjYWxsYmFja0RhdGFGaW5pc2g/OiAoZXZ0OiBFdmVudERhdGEpID0+IHZvaWQ7XG4gICAgZmlyZUNhbGxCYWNrSW5zaWRlPyA9IHRydWU7XG4gICAgbW9kaWZ5RmlsdGVyPzogRnVuY3Rpb24gfCAoKGZpbHRlcnM6IEZpbHRlcltdLCBjb21wb25lbnQ/OiBhbnksIHRyZWVOb2RlPzogQ29udHJvbFRyZWVOb2RlKSA9PiB2b2lkKTtcblxuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XG4gICAgZnVuY0dldFZhbHVlPzogKGl0ZW0pID0+IGFueTtcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XG5cbiAgICAvKiogRW5kIGNvcHkgdOG7qyBGb3JtU2NoZW1hQmFzZVdpdGhTZXJ2aWNlICovXG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRm9ybUNvbnRyb2xCYXNlV2l0aFNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGV4dENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIHNlbGVjdEFsbFRleHQ/ID0gZmFsc2U7IC8vIENo4buNbiB04bqldCBj4bqjIHRleHQga2hpIGZvY3VzXG5cbiAgICBwbGFjZWhvbGRlcj8gPSAnJztcbiAgICBkYXRhRm9ybWF0PzogJ3RleHQnIHwgJ3Bhc3N3b3JkJyB8ICdudW1iZXInIHwgJ2VtYWlsJyB8ICdwaG9uZScgfCAnZmF4JyB8ICdtb25leScgfCAnbW9uZXlpbnQnIHwgJ2Ftb3VudCcgPSAndGV4dCc7XG4gICAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICAgIG1pbj8gPSAwO1xuICAgIG1heD8gPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcblxuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2UgfCBNYXN0ZXJEYXRhU2VydmljZTtcbiAgICBncm91cENvZGU/OiBzdHJpbmc7XG4gICAgdmFsdWVGaWVsZD8gPSAnaWQnO1xuICAgIGRpc3BsYXlGaWVsZD8gPSAndGVuJztcblxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XG4gICAgc29ydHM/OiBTb3J0W10gPSBbXTtcbiAgICBzb3J0RmllbGQ/ID0gJyc7XG4gICAgc29ydERpcj86IDEgfCAtMSA9IDE7XG4gICAgaXNSZWFkb25seT8gPSBmYWxzZTtcbiAgICBmaWVsZFBsdXM/ID0gJyc7IC8vIERhbmggc8OhY2ggbmjhu69uZyB0csaw4budbmcgYuG7lSBzdW5nIGPhuqduIGzhuqV5IHRow6ptIG5nb8OgaSBpZCwgdGVuOyBWw60gZOG7pSAsbWFcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUZXh0Q29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZVRleHRDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICBwbGFjZWhvbGRlcj8gPSAnJztcbiAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xuICAgIGdyb3VwQ29kZT86IHN0cmluZztcbiAgICB2YWx1ZUZpZWxkPyA9ICdpZCc7XG4gICAgZGlzcGxheUZpZWxkPyA9ICd0ZW4nO1xuICAgIGRhdGFTb3VyY2U/OiBhbnlbXTtcbiAgICBmdW5jR2V0TGFiZWw/OiAoaXRlbSkgPT4gc3RyaW5nO1xuXG4gICAgcGx1c1VybD86IHN0cmluZztcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xuICAgIHNvcnRGaWVsZD8gPSAnJztcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcbiAgICBmaWVsZFBsdXM/ID0gJyc7IC8vIERhbmggc8OhY2ggbmjhu69uZyB0csaw4budbmcgYuG7lSBzdW5nIGPhuqduIGzhuqV5IHRow6ptIG5nb8OgaSBpZCwgdGVuOyBWw60gZOG7pSAsbWFcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUmVmZXJlbmNlVGV4dENvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGV4dENvbnRyb2xTY2hlbWFXaXRoU2VydmljZSBleHRlbmRzIEZvcm1Db250cm9sQmFzZVdpdGhTZXJ2aWNlIHtcbiAgICBwbGFjZWhvbGRlcj8gPSAnJztcbiAgICBkYXRhRm9ybWF0PzogJ3RleHQnIHwgJ251bWJlcicgfCAnZW1haWwnIHwgJ3Bob25lJyB8ICdmYXgnIHwgJ21vbmV5JyB8ICdtb25leWludCcgfCAnYW1vdW50JyA9ICd0ZXh0JztcbiAgICBtYXhMZW5ndGg/OiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGV4dENvbnRyb2xTY2hlbWFXaXRoU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNYXNrQ29udHJvbFNjaGVtYSBleHRlbmRzIFRleHRDb250cm9sU2NoZW1hIHtcbiAgICBtYXNrVHlwZT86ICdkZWNpbWFsJyB8ICdpbnQnID0gJ2ludCc7XG4gICAgYXV0b0Zvcm1hdD8gPSB0cnVlO1xuICAgIG1pbj8gPSAwO1xuICAgIG1heD8gPSA5OTk5OTk5OTk5O1xuICAgIHByZWZpeD8gPSAnJztcbiAgICBzdWZmaXg/ID0gJyc7XG4gICAgZGVjaW1hbFBsYWNlcz8gPSAyO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IE1hc2tDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSBleHRlbmRzIFRleHRDb250cm9sU2NoZW1hIHtcbiAgICBtYXNrVHlwZT86ICdkZWNpbWFsJyB8ICdpbnQnO1xuICAgIG1pbj8gPSAwO1xuICAgIG1heD8gPSA5OTk5OTk5OTk5O1xuICAgIHByZWZpeD8gPSAnJztcbiAgICBzdWZmaXg/ID0gJyc7XG4gICAgZGVjaW1hbFBsYWNlcz8gPSAyO1xuICAgIC8vIFPhu60gZOG7pW5nIMSR4buDIGtoYWkgYsOhbyBvcGVyYXRvciBjaG8gY29udHJvbCB0cm9uZyBxdWVyeS1idWlsZGVyIHRoYXkgY2hvIGPDoWMgb3BlcmF0b3IgbeG6t2MgxJHhu4tuaCDEkcaw4bujYyB04bqhbyB04burIHF1ZXJ5LWJ1aWxkZXJcbiAgICBvcGVyYXRvcnM/OiBhbnlbXTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICBhcHBlbmRUbz8gPSAnYm9keSc7XG4gICAgcGFuZWxDbGFzcz8gPSAnJztcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBzaG93QnV0dG9uQmFyPyA9IGZhbHNlO1xuICAgIHNob3dUaW1lPyA9IGZhbHNlO1xuICAgIHNob3dJY29uPyA9IHRydWU7XG4gICAgZm9ybWF0PzogJ25vcm1hbCcgfCAnZnJvbU5vdycgPSAnbm9ybWFsJztcbiAgICBzaG93T25Gb2N1cz8gPSB0cnVlO1xuICAgIG1pbkRhdGU/OiBEYXRlID0gbnVsbDtcbiAgICBtYXhEYXRlPzogRGF0ZSA9IG51bGw7XG4gICAgdGltZU9ubHk/ID0gZmFsc2U7XG4gICAgZGF0ZUZvcm1hdD8gPSAnZGQvbW0veXknO1xuICAgIHZpZXc/OiAnZGF0ZScgfCAnbW9udGgnID0gJ2RhdGUnO1xuICAgIHllYXJSYW5nZT86IHN0cmluZyA9ICcxOTUwOjIwNTAnO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IERhdGVUaW1lQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLnNob3dUaW1lID8gJ2RkL01NL3l5eXkgaGg6bW0nIDogJ2RkL01NL3l5eXknO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVSYW5nZUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBEYXRlVGltZUNvbnRyb2xTY2hlbWEge1xuICAgIHNob3dJY29uPyA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IERhdGVUaW1lQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbnRpdHlQaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlV2l0aFNlcnZpY2Uge1xuXG4gICAgLy8gI1Byb3BlcnR5IG92ZXJyaWRlXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZTtcbiAgICAvLyAjRW5kIHByb3BlcnR5IG92ZXJyaWRlXG5cbiAgICByZXR1cm5UeXBlPzogJ3ZhbHVlJyB8ICdvYmplY3QnID0gJ3ZhbHVlJztcblxuICAgIG11bHRpcGxlPyA9IHRydWU7XG4gICAgbGltaXQ/ID0gMTAwMDtcbiAgICBwYWdlU2l6ZU9mTGlzdD86IG51bWJlcjtcbiAgICB0aXRsZT8gPSAnICc7XG4gICAgY29sdW1ucz86IEVudGl0eVBpY2tlckNvbHVtbltdO1xuICAgIGZpZWxkU2VhcmNoVGV4dD86IHN0cmluZ1tdID0gW107XG4gICAgb3BlcmF0b3JGaWVsZFNlYXJjaFRleHQ/OiBPcGVyYXRvci5jb250YWluIHwgT3BlcmF0b3IuZXF1YWwgPSBPcGVyYXRvci5jb250YWluO1xuICAgIGRhdGFJbml0PzogYW55ID0ge307XG4gICAgYWR2YW5jZVNlYXJjaE1vZGVsPzogYW55ID0ge307XG4gICAgaGlkZGVuQ2hlY2tib3g/OiBib29sZWFuID0gdHJ1ZTtcbiAgICBvblNlYXJjaEZvcm1Jbml0aWFsaXplZD86IEZ1bmN0aW9uO1xuICAgIG9uRm9ybUV2ZW50PzogRnVuY3Rpb247XG4gICAgb25EZWxldGluZz86IChyb3dEYXRhOiBhbnkpID0+IFByb21pc2U8Ym9vbGVhbj47XG4gICAgb25TZWxlY3RFbnRpdHk/OiBGdW5jdGlvbjsgLy8gbuG6v3UgZnVuY3Rpb24ga2jDoWMgbnVsbCB2w6AgcmV0dXJuIHRydWUgc+G6vSBjaG8gcGjDqXAgbeG7nyBkaWFsb2dcbiAgICBhZnRlckNvbnRlbnRMZWZ0SW5pdD86IChjcnVkTGlzdDogQ3J1ZExpc3RDb21wb25lbnQpID0+IHZvaWQ7IC8vIFNhdSBraGkgY8OhYyB0ZW1wbGF0ZSBjb250ZW50IGluaXRcbiAgICBhZnRlckNvbnRlbnRSaWdodEluaXQ/OiAoY3J1ZExpc3Q6IENydWRMaXN0Q29tcG9uZW50KSA9PiB2b2lkOyAvLyBTYXUga2hpIGPDoWMgdGVtcGxhdGUgY29udGVudCBpbml0XG4gICAgYWZ0ZXJHZXREYXRhPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBFbnRpdHlQaWNrZXJDb21wb25lbnQpID0+IHZvaWQ7XG4gICAgYWZ0ZXJHZXREYXRhVW5QaWNrZWQ/OiAoc291cmNlczogYW55W10sIGVsZW1lbnQ6IEVudGl0eVBpY2tlckRhdGFDb21wb25lbnQgfCBFbnRpdHlQaWNrZXJUcmVlRGF0YUNvbXBvbmVudCkgPT4gdm9pZDtcbiAgICBhZnRlckdldERhdGFQaWNrZWQ/OiAoc291cmNlczogYW55W10sIGVsZW1lbnQ6IEVudGl0eVBpY2tlclNlbGVjdGVkQ29tcG9uZW50IHwgRW50aXR5UGlja2VyVHJlZVNlbGVjdGVkQ29tcG9uZW50KSA9PiB2b2lkO1xuXG4gICAgYmVmb3JlUmVuZGVyRGF0YVNvdXJjZT86IChzb3VyY2VzOiBhbnlbXSwgZWxlbWVudDogRW50aXR5UGlja2VyQ29tcG9uZW50KSA9PiB2b2lkO1xuICAgIGJlZm9yZVJlbmRlckRhdGFTb3VyY2VVblBpY2tlZD86IChzb3VyY2VzOiBhbnlbXSwgZWxlbWVudDogRW50aXR5UGlja2VyRGF0YUNvbXBvbmVudCB8IEVudGl0eVBpY2tlclRyZWVEYXRhQ29tcG9uZW50KSA9PiB2b2lkO1xuICAgIGJlZm9yZVJlbmRlckRhdGFTb3VyY2VQaWNrZWQ/OiAoc291cmNlczogYW55W10sIGVsZW1lbnQ6IEVudGl0eVBpY2tlclNlbGVjdGVkQ29tcG9uZW50IHwgRW50aXR5UGlja2VyVHJlZVNlbGVjdGVkQ29tcG9uZW50KSA9PiB2b2lkO1xuICAgIG1vZGlmeURhdGFTZWxlY3RlZD86IChzb3VyY2UpID0+IHZvaWQ7XG5cbiAgICAvLyBDw7Mgc+G7rSBk4bulbmcgcGx1c1VybCDhu58gbcOgbiBow6xuaCBjaMOtbmggRW50aXR5UGlja2VyIGhheSBraMO0bmcuXG4gICAgdXNlRGVmYXVsdFBsdXNsVXJsSW5MaXN0PyA9IGZhbHNlO1xuXG4gICAgLy8gQ8OzIHPhu60gZOG7pW5nIGRlZmF1bHRGaWx0ZXIga2hpIHTDrG0ga2nhur9tIGRhbmggc8OhY2gg4bufIG3DoG4gaMOsbmggY2jDrW5oIEVudGl0eVBpY2tlci5cbiAgICB1c2VEZWZhdWx0RmlsdGVySW5MaXN0PyA9IGZhbHNlO1xuICAgIGhpZGRlbkFkdmFuY2VTZWFyY2g/ID0gZmFsc2U7XG4gICAgcmVhZE9ubHk/ID0gZmFsc2U7XG4gICAgaWdub3JlV29ya2Zsb3c/ID0gZmFsc2U7XG4gICAgcm93QnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+ID0gbnVsbDtcbiAgICByb3dCdXR0b25CZWZvcmVUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuICAgIGhpZGRlblBhZ2VTZXR0aW5nPyA9IGZhbHNlO1xuICAgIHNob3dFZGl0TGluaz8gPSB0cnVlO1xuICAgIHRpdGxlVW5QaWNrZWQ/ID0gJ0Rhbmggc8OhY2ggY8OhYyBt4bulYyBjaMawYSBjaOG7jW4nO1xuICAgIHRpdGxlUGlja2VkPyA9ICdEYW5oIHPDoWNoIGPDoWMgbeG7pWMgxJHDoyBjaOG7jW4nO1xuICAgIGZpZWxkc1BpY2tlZD8gPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEVudGl0eVBpY2tlckNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEVudGl0eVBpY2tlckNvbnRyb2xTY2hlbWEge1xuICAgIHNwbGl0Y2hhcj86IHN0cmluZztcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBkYXRhVHlwZT86IEVudW1Db250cm9sUGlja2VyVHlwZSA9IEVudW1Db250cm9sUGlja2VyVHlwZS5VU0VSO1xuICAgIGFwcGVuZFRvPyA9ICdib2R5JztcbiAgICBtb2RpZnlJbml0U2VhcmNoRGF0YT86IEZ1bmN0aW9uOyAvLyBT4butIGThu6VuZyDEkeG7gyBtb2RpZnkgZGF0YSBj4bunYSBwaOG6p24gc2VhcmNoLCB0aMaw4budbmcgxJHhu4Mgc2V0IGluaXQgZGF0YSBkeW5hbWljIHRoZW8gbmh1IGPhuqd1XG4gICAgY2FsbEJhY2s/OiB7IFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uOyB9O1xuICAgIG9uUmVhZHk/OiAoZXZ0OiBFdmVudERhdGEpID0+IHZvaWQ7XG4gICAgb25BZGp1c3RlZFZhbHVlPzogRnVuY3Rpb247XG4gICAgbW9kaWZ5Q29udHJvbD86IEZ1bmN0aW9uOyAvLyBT4butIGThu6VuZyDEkeG7gyBtb2RpZnkgc2NoZW1hIGJhc2VcbiAgICBuZWVkQ2xvbmU/ID0gZmFsc2U7IC8vIFPhu60gZOG7pW5nIHRyb25nIHRhYmxlIHNjaGVtYSwga2hpIGRhdGFzb3VyY2UgY+G7p2EgbeG7mXQgY+G7mXQgdHLDqm4gbeG7l2kgZMOybmcgbMOgIGtow6FjIG5oYXUgY+G6p24gc2V0IG5lZWRDbG9uZSA9IHRydWVcXFxuICAgIGlzQ2hlY2tXcml0ZVZhbHVlPyA9IGZhbHNlO1xuICAgIHVzZVBpY2tlcj8gPSB0cnVlO1xuICAgIGlzQ2FjaGluZz8gPSBmYWxzZTsgLy8gZMO5bmcgcmnDqm5nIGNobyBjYW5Cb1BpY2tlclxuICAgIGFmdGVyR2V0RGF0YURyb3Bkb3duPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBBdXRvQ29tcGxldGVQaWNrZXJDb21wb25lbnQpID0+IHZvaWQ7XG4gICAgbGltaXRSb3dJdGVtPyA9IGZhbHNlO1xuICAgIG1heFJvd0l0ZW0/ID0gMjtcbiAgICBpc092ZXJyaWRlQ29sdW1ucz86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXcmFwUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEge1xuICAgIGRhdGFUeXBlPzogRW51bUNvbnRyb2xQaWNrZXJUeXBlID0gRW51bUNvbnRyb2xQaWNrZXJUeXBlLlVTRVI7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogV3JhcFBpY2tlckNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3VzdG9tQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XG4gICAgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIC8vIFPhu60gZOG7pW5nIMSR4buDIGtoYWkgYsOhbyBvcGVyYXRvciBjaG8gY29udHJvbCB0cm9uZyBxdWVyeS1idWlsZGVyIHRoYXkgY2hvIGPDoWMgb3BlcmF0b3IgbeG6t2MgxJHhu4tuaCDEkcaw4bujYyB04bqhbyB04burIHF1ZXJ5LWJ1aWxkZXJcbiAgICBvcGVyYXRvcnM/OiBhbnlbXTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDdXN0b21Db250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbG9yUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XG4gICAgZW5hYmxlQ2FjaGluZz8gPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbG9yUGlja2VyQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIFNwYW5Db250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICBzb3VyY2VGaWVsZD86IHN0cmluZztcbiAgICBpc2h0bWw/ID0gZmFsc2U7XG4gICAgZWRpdGFibGU/ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogU3BhbkNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29sb3JDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICBzb3VyY2VGaWVsZD86IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDb2xvckNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2V5VmFsdWVDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogS2V5VmFsdWVDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEltYWdlVXBsb2FkZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICBpc0F2YXRhcj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBtdWx0aXBsZT86IGJvb2xlYW4gPSB0cnVlO1xuICAgIGxvYWRCeUVudGl0eUtleT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBlbnRpdHlLZXk/OiBzdHJpbmc7XG4gICAgdGVtcGxhdGVJdGVtPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgICB0ZW1wbGF0ZUl0ZW1zPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBJbWFnZVVwbG9hZGVyQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaWxlTWFuYWdlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIC8vIGVtaXQgZXZlbnQga2hpIGNo4buNbiBt4buZdCByb3cgdHJvbmcgZmlsZSBtYW5hZ2VyXG4gICAgb25TZWxlY3RlZD86IEZ1bmN0aW9uID0gKCkgPT4ge1xuICAgIH07XG4gICAgbWRXaWR0aD8gPSAxMjtcbiAgICAvKipcbiAgICAgKiDEkOG7i25oIGThuqFuZyBmaWxlIGNvbnRyb2wgc+G6vSBuaOG6rW4sIGThuqFuZyBjaHXhu5dpIGPDoWNoIG5oYXUgYuG7n2kgZOG6pXUgJywnXG4gICAgICogc+G6vSBvdmVycmlkZSBhY2NlcHRGaWxlVHlwZXMuXG4gICAgICogVkQ6ICcuZG9jLC5kb2N4LC5wZGYnXG4gICAgICovXG4gICAgYWNjZXB0Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEZsYWcgZGUgYmlldCBmaWxlIHVwbG9hZCBuaGFuIG5odW5nIGxvYWkgZmlsZSBuYW8uXG4gICAgICogVkQ6IEZpbGVUeXBlRmxhZy5BVURJTyB8IEZpbGVUeXBlRmxhZy5WSURFT1xuICAgICAqL1xuICAgIGFjY2VwdEZpbGVUeXBlcz86IEZpbGVUeXBlRmxhZyA9IEZpbGVUeXBlRmxhZy5WSURFTyB8IEZpbGVUeXBlRmxhZy5JTUFHRSB8IEZpbGVUeXBlRmxhZy5ET0MgfCBGaWxlVHlwZUZsYWcuQVVESU8gfCBGaWxlVHlwZUZsYWcuQ09NUFJFU1NFRDtcbiAgICBtYXhGaWxlU2l6ZT8gPSAxMDAwMDAwMDA7XG4gICAgaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnk/ID0gJ3swfTogUXXDoSBkdW5nIGzGsOG7o25nIGZpbGUgY2hvIHBow6lwLCAnO1xuICAgIGludmFsaWRGaWxlU2l6ZU1lc3NhZ2VEZXRhaWw/ID0gJ2R1bmcgbMaw4bujbmcgdOG7kWkgxJFhIGzDoCB7MH0uJztcbiAgICBpbnZhbGlkRmlsZVR5cGVNZXNzYWdlU3VtbWFyeT8gPSAnezB9OiBLaMO0bmcgxJHDum5nIMSR4buLbmggZOG6oW5nIGZpbGUsICc7XG4gICAgaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbD8gPSAnxJHhu4tuaCBk4bqhbmcgZmlsZSBjaG8gcGjDqXA6IHswfS4nO1xuICAgIGludmFsaWRGaWxlTGltaXRNZXNzYWdlU3VtbWFyeT8gPSAnUXXDoSBz4buRIGzGsOG7o25nIGZpbGUgY2hvIHBow6lwLCAnO1xuICAgIGludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsPyA9ICd04buRaSDEkWEgezB9IGZpbGUuJztcbiAgICBtb2RlPzogRmlsZU1hbmFnZXJNb2RlIHwgRmlsZVVwbG9hZE1vZGUgPSBGaWxlTWFuYWdlck1vZGUubXVsdGlwbGU7XG4gICAgbGF5b3V0PzogRW51bUZpbGVMYXlvdXQgPSBFbnVtRmlsZUxheW91dC5MSVNUO1xuICAgIHJlYWRvbmx5PyA9IGZhbHNlO1xuICAgIGhpZGRlblBhZ2VTZXR0aW5nPyA9IGZhbHNlO1xuXG4gICAgLy8gU2VydmljZSBkw7luZyDEkeG7gyBs4bqleSBkYXRhc291cmNlIGPhu6dhIG5oaeG7gXUgY29udHJvbCBt4buZdCBs4bqnbi5cbiAgICBmaWxlRGF0YVNlcnZpY2U/OiBGaWxlRGF0YVNlcnZpY2U7XG5cbiAgICAvLyBC4buZIDMga2V5IMSR4buDIGzhuqV5IHRoxrAgbeG7pWMgZ+G7kWMuXG4gICAgc2VydmljZUNvZGU/OiBzdHJpbmc7XG4gICAgZW50aXR5Pzogc3RyaW5nO1xuICAgIGVudGl0eUtleT86IHN0cmluZztcbiAgICAvLyBUcsaw4budbmcgaOG7o3Ag4bufIHRyb25nIGZvcm0sIGTDuW5nIHRyxrDhu51uZyBuw6B5IMSR4buDIGzhuqV5XG4gICAgLy8gZW50aXR5S2V5IHThu6sgbW9kZWwuZGF0YSB0aGF5IHbDrCB0cnV54buBbiB2w6BvIGVudGl0eUtleVxuICAgIGVudGl0eUtleUZpZWxkPyA9ICdpZCc7XG4gICAgcm9vdEZvbGRlcklkPzogc3RyaW5nOyAvLyBjaG8gdHLGsOG7nW5nIGjhu6NwIHThuqFvIGZvbGRlciBiw6puIG5nb8OgaSBjb21wb25lbnRcblxuICAgIC8vIFTDqm4gdGjGsCBt4bulYyBn4buRYyBraGkgaGnhu4NuIHRo4buLIHRyw6puIGJyZWFkY3J1bWJzLlxuICAgIHJvb3RGb2xkZXJOYW1lPzogc3RyaW5nO1xuXG4gICAgZGF0YUt5U29Eb25WaT86IEZ1bmN0aW9uO1xuXG4gICAgaW5UYWlMaWV1PyA9IGZhbHNlO1xuICAgIGluVGFpTGlldUNodW5nPyA9IGZhbHNlO1xuICAgIGNvcHlUb0ZvbGRlcklkPyA9ICcnO1xuICAgIG11bHRpcGxlPyA9IHRydWU7XG4gICAgdXBsb2FkT25seT8gPSBmYWxzZTtcbiAgICB1c2VCcmVhZGNydW1icz8gPSB0cnVlO1xuICAgIHVzZVNpZ25hdHVyZT8gPSB0cnVlO1xuICAgIG11bHRpRW50aXR5S2V5PyA9IGZhbHNlOyAvLyBqb2luIGVudGl0eUtleSB0byBzdHJpbmcgc2VwYXJhdGVkIGJ5ICxcbiAgICBmaWxlUGlja2VyU2V0dGluZz86IEZpbGVQaWNrZXJTZXR0aW5nO1xuICAgIHNob3dEZWxldGU/ID0gdHJ1ZTtcbiAgICBoaWRkZW5DcmVhdGVGb2xkZXI/ID0gZmFsc2U7XG4gICAgaXNQdWJsaWM/OiBib29sZWFuO1xuICAgIG5vRmlsZU1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRmlsZU1hbmFnZXJDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb250cm9sU2NoZW1hIGV4dGVuZHMgRmlsZU1hbmFnZXJDb250cm9sU2NoZW1hIHtcbiAgICBtb2RlPyA9IEZpbGVVcGxvYWRNb2RlLnVzaW5nU2VydmljZUZpbGU7XG4gICAgbWRXaWR0aD8gPSA2O1xuICAgIHNoYXJlZEZvbGRlclR5cGU/OiBTaGFyZWRGb2xkZXJUeXBlID0gU2hhcmVkRm9sZGVyVHlwZS5UZW1wdDtcblxuICAgIGhpZGRlbkJ1dHRvbnM/ID0gZmFsc2U7XG4gICAgZGlzYWJsZWQ/ID0gZmFsc2U7XG4gICAgcmVhZG9ubHk/ID0gZmFsc2U7XG4gICAgYXV0b1NhdmVkPyA9IHRydWU7XG5cbiAgICBlbmFibGVTY2FuPyA9IGZhbHNlO1xuICAgIGV4dHJhY3RaaXBGaWxlPyA9IGZhbHNlO1xuICAgIGVuYWJsZURyaXZlRmlsZT8gPSBmYWxzZTtcblxuICAgIHNob3dEb3dubG9hZEZpbGU/ID0gdHJ1ZTtcbiAgICBzaG93RGVsZXRlRmlsZT8gPSB0cnVlO1xuICAgIHNob3dQcmludEZpbGU/ID0gdHJ1ZTtcbiAgICBtYXhGaWxlU2l6ZT8gPSAxMDAwMDAwMDA7IC8vIDEwMCBNQlxuICAgIGludmFsaWRGaWxlU2l6ZU1lc3NhZ2VTdW1tYXJ5PyA9ICd7MH06IFF1w6EgZHVuZyBsxrDhu6NuZyBmaWxlIGNobyBwaMOpcCwgJztcbiAgICBpbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsPyA9ICdkdW5nIGzGsOG7o25nIHThu5FpIMSRYSBsw6AgezB9Lic7XG4gICAgaW52YWxpZEZpbGVUeXBlTWVzc2FnZVN1bW1hcnk/ID0gJ3swfTogS2jDtG5nIMSRw7puZyDEkeG7i25oIGThuqFuZyBmaWxlLCAnO1xuICAgIGludmFsaWRGaWxlVHlwZU1lc3NhZ2VEZXRhaWw/ID0gJ8SR4buLbmggZOG6oW5nIGZpbGUgY2hvIHBow6lwOiB7MH0uJztcbiAgICBpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZVN1bW1hcnk/ID0gJ1F1w6Egc+G7kSBsxrDhu6NuZyBmaWxlIGNobyBwaMOpcCwgJztcbiAgICBpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZURldGFpbD8gPSAndOG7kWkgxJFhIHswfSBmaWxlLic7XG5cbiAgICBvblJlbW92ZT86IEZ1bmN0aW9uO1xuICAgIGhhc0ZpbGU/ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRmlsZVVwbG9hZENvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTd2l0Y2hDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogU3dpdGNoQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDaGVja2JveENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIGVuYWJsZUNhY2hpbmc/ID0gdHJ1ZTtcbiAgICBoaWRkZW5MYWJlbD8gPSBmYWxzZTsgLy8gU2V0ID0gdHJ1ZSBjaOG7pyB54bq/dSBraGkgZMO5bmcgdHJvbmcgdGFibGUgc2NoZW1hIMSR4buDIOG6qW4gbGFiZWwgxJFpLCB2w6wgbGFiZWwgxJHDoyBjw7MgdHLDqm4gdGnDqnUgxJHhu4EgY+G7mXRcbiAgICBkZWZhdWx0VmFsdWU/ID0gZmFsc2U7XG4gICAgZGlzcGxheUxhYmVsPyA9ICcnO1xuICAgIGlzQ3VzdG9tTGFiZWw/ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ2hlY2tib3hDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZSB7XG4gICAgc2hvd0xhYmVsPyA9IGZhbHNlO1xuICAgIGJ0Q2xhc3M/ID0gJ3AtYnV0dG9uLXRleHQnO1xuICAgIGljb24/O1xuICAgIGJ0U3R5bGU/ID0geyB3aWR0aDogJ2F1dG8nIH07XG4gICAgb25DbGljaz86IEZ1bmN0aW9uO1xuICAgIGJ1dHRvblRleHQ/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQnV0dG9uQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5idXR0b25UZXh0ID0gdGhpcy5sYWJlbDtcbiAgICAgICAgdGhpcy5sYWJlbCA9ICcnO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcbiAgICB0ZW1wbGF0ZTogYW55O1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRlbXBsYXRlQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZXh0QXJlYUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIHJvd3M/ID0gNTtcbiAgICBwbGFjZWhvbGRlcj8gPSAnJztcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUZXh0QXJlYUNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXNlclBpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2VXaXRoU2VydmljZSB7XG4gICAgYXBwZW5kVG8/ID0gJ2JvZHknO1xuICAgIG11bHRpcGxlPyA9IHRydWU7XG4gICAgdXNlclR5cGU/ID0gVXNlclR5cGUuQ2FuQm87XG4gICAgbGltaXQ/ID0gMjA7IC8vIEdp4bubaSBo4bqhbiBz4buRIG5nxrDhu51pIGTDuW5nIHThu5FpIMSRYSDEkcaw4bujYyBwaWNrXG4gICAgdGl0bGU/ID0gJ0No4buNbiBuZ8aw4budaSBkw7luZyc7XG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47XG4gICAgZmlsdGVyV2hpbGVQcm9jZXNzPzogRmlsdGVyW10gfCBGdW5jdGlvbiB8IFByb21pc2U8RmlsdGVyW10+O1xuICAgIGVuYWJsZUNhY2hpbmc/ID0gdHJ1ZTtcbiAgICBwYXJlbnRPcmdDb2RlPzogc3RyaW5nO1xuICAgIHBsYWNlaG9sZGVyPyA9ICcnO1xuICAgIGxhenlMb2FkT3JnYW5pemF0aW9uPyA9IGZhbHNlO1xuICAgIHZhbHVlRmllbGQ/ID0gJ2lkJztcbiAgICBkaXNwbGF5RmllbGQ/ID0gJ2Z1bGxOYW1lTmV3JztcbiAgICBmaWVsZFBsdXM/ID0gJyc7XG4gICAgcGx1c1VybD86IHN0cmluZztcbiAgICByZXR1cm5UeXBlPzogJ3ZhbHVlJyB8ICdvYmplY3QnID0gJ3ZhbHVlJztcbiAgICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgICBnZXREaXNwbGF5TmFtZT8gPSBmYWxzZTtcbiAgICBmaWVsZFNlYXJjaFRleHQ/OiBzdHJpbmdbXSA9IFtdO1xuICAgIG9wZXJhdG9yRmllbGRTZWFyY2hUZXh0PzogT3BlcmF0b3IuY29udGFpbiB8IE9wZXJhdG9yLmVxdWFsID0gT3BlcmF0b3IuY29udGFpbjtcbiAgICBjb2x1bW5zPzogRW50aXR5UGlja2VyQ29sdW1uW107XG4gICAgdXNlUGlja2VyPyA9IHRydWU7XG4gICAgaGlkZGVuQ29scz86IHN0cmluZ1tdID0gW107XG4gICAgZm9ybVN0YXRlPzogRm9ybVN0YXRlID0gRm9ybVN0YXRlLkFERDtcbiAgICBvblJlYWR5PzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XG4gICAgZnVuY0NvbXBhcmU/OiAoaXRlbTogYW55LCB2YWx1ZSkgPT4gYm9vbGVhbiA9IChpdGVtLCB2YWx1ZSkgPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09IHZhbHVlO1xuICAgIGFmdGVyQ29udGVudExlZnRJbml0PzogKGNydWRMaXN0OiBDcnVkTGlzdENvbXBvbmVudCkgPT4gdm9pZDsgLy8gU2F1IGtoaSBjw6FjIHRlbXBsYXRlIGNvbnRlbnQgaW5pdFxuICAgIGFmdGVyQ29udGVudFJpZ2h0SW5pdD86IChjcnVkTGlzdDogQ3J1ZExpc3RDb21wb25lbnQpID0+IHZvaWQ7IC8vIFNhdSBraGkgY8OhYyB0ZW1wbGF0ZSBjb250ZW50IGluaXRcbiAgICBhZnRlckdldERhdGE/OiAoc291cmNlczogYW55W10sIGVsZW1lbnQ6IEVudGl0eVBpY2tlckNvbXBvbmVudCkgPT4gdm9pZDtcbiAgICBhZnRlckdldERhdGFVblBpY2tlZD86IChzb3VyY2VzOiBhbnlbXSwgZWxlbWVudDogRW50aXR5UGlja2VyRGF0YUNvbXBvbmVudCB8IEVudGl0eVBpY2tlclRyZWVEYXRhQ29tcG9uZW50KSA9PiB2b2lkO1xuICAgIGFmdGVyR2V0RGF0YVBpY2tlZD86IChzb3VyY2VzOiBhbnlbXSwgZWxlbWVudDogRW50aXR5UGlja2VyU2VsZWN0ZWRDb21wb25lbnQgfCBFbnRpdHlQaWNrZXJUcmVlU2VsZWN0ZWRDb21wb25lbnQpID0+IHZvaWQ7XG4gICAgbW9kaWZ5RGF0YVNlbGVjdGVkPzogKHNvdXJjZSkgPT4gdm9pZDtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBVc2VyUGlja2VyQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb0NhdVRvQ2h1Y1BpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIGFwcGVuZFRvPyA9ICdib2R5JztcbiAgICBtdWx0aXBsZT8gPSB0cnVlO1xuICAgIGxpbWl0PyA9IDIwOyAvLyBHaeG7m2kgaOG6oW4gc+G7kSBi4bqjbiBnaGkgdOG7kWkgxJFhIMSRxrDhu6NjIHBpY2tcbiAgICB0aXRsZT8gPSAnQ2jhu41uIMSRxqFuIHbhu4snO1xuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nID0gJyc7XG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47XG4gICAgZW5hYmxlQ2FjaGluZz8gPSB0cnVlO1xuICAgIHZhbHVlRmllbGQ/ID0gJ2lkJztcbiAgICBkaXNwbGF5RmllbGQ/ID0gJ3Rlbic7XG4gICAgZmllbGRQbHVzPyA9ICcnO1xuICAgIHBsdXNVcmw/OiBzdHJpbmc7XG4gICAgaXNUcmVlPzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIG1vZGlmeUZpbHRlcj86IEZ1bmN0aW9uIHwgKChmaWx0ZXJzOiBGaWx0ZXJbXSwgY29tcG9uZW50PzogYW55LCB0cmVlTm9kZT86IENvbnRyb2xUcmVlTm9kZSkgPT4gdm9pZCk7XG5cbiAgICBvblJlYWR5PzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XG4gICAgZnVuY0NvbXBhcmU/OiAoaXRlbTogYW55LCB2YWx1ZSkgPT4gYm9vbGVhbiA9IChpdGVtLCB2YWx1ZSkgPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09IHZhbHVlO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvQ2F1VG9DaHVjUGlja2VyQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb0NhdVRvQ2h1Y1BpY2tlckNvbnRyb2xTY2hlbWFOZXcgZXh0ZW5kcyBDb0NhdVRvQ2h1Y1BpY2tlckNvbnRyb2xTY2hlbWEge1xuICAgIGlzVHJlZT86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDb0NhdVRvQ2h1Y1BpY2tlckNvbnRyb2xTY2hlbWFOZXcpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XG4gICAgZmlsdGVyPyA9IHRydWU7XG4gICAgbXVsdGlwbGU/ID0gdHJ1ZTtcbiAgICBwYXJlbnRPcmdJZD86IG51bWJlcjtcbiAgICBwYXJlbnRPcmdDb2RlPzogc3RyaW5nO1xuICAgIGVuYWJsZUNhY2hpbmc/ID0gdHJ1ZTtcbiAgICBpc1VzaW5nSWQ/ID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBPcmdhbml6YXRpb25QaWNrZXJDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvQ2F1VG9DaHVjQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XG4gICAgZmlsdGVyPyA9IHRydWU7XG4gICAgbXVsdGlwbGU/ID0gdHJ1ZTtcbiAgICBwYXJlbnRPcmdJZD86IG51bWJlcjtcbiAgICBwYXJlbnRPcmdDb2RlPzogc3RyaW5nO1xuICAgIGVuYWJsZUNhY2hpbmc/ID0gdHJ1ZTtcbiAgICBpc1VzaW5nSWQ/ID0gdHJ1ZTtcbiAgICBkaXNhYmxlZFBhcmVudEl0ZW0/ID0gdHJ1ZTtcbiAgICByb290UGFyZW50SWQ/OiBzdHJpbmcgPSBudWxsO1xuICAgIGRpc2FibGVkPyA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvQ2F1VG9DaHVjQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFZGl0b3JDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICBtb2RlPzogJ2Jhc2ljJyB8ICdtZWRpdW0nIHwgJ2Z1bGwnIHwgJ3NpbXBsZScgPSAnYmFzaWMnO1xuICAgIGhlaWdodD8gPSAyNTA7XG4gICAgaW5pdD86IGFueTtcbiAgICBsYW5ndWFnZUNvZGU/OiAndmknIHwgJ2VuJztcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZyA9ICcnO1xuICAgIGhpZGRlblRvb2xiYXI/OiBib29sZWFuID0gZmFsc2U7XG4gICAgaGlkZGVuTWVudWJhcj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpc0Z1bGxQYWdlPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEVkaXRvckNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2VXaXRoU2VydmljZSB7XG4gICAgdmFsdWVGaWVsZD8gPSAnaWQnO1xuICAgIGRpc3BsYXlGaWVsZD8gPSAndGVuJztcbiAgICByZXR1cm5UeXBlPzogJ3ZhbHVlJyB8ICdvYmplY3QnID0gJ3ZhbHVlJztcbiAgICBkYXRhU291cmNlPzogYW55IHwgRnVuY3Rpb247XG4gICAgLy8gU+G7rSBk4bulbmcgxJHhu4Mga2hhaSBiw6FvIG9wZXJhdG9yIGNobyBjb250cm9sIHRyb25nIHF1ZXJ5LWJ1aWxkZXIgdGhheSBjaG8gY8OhYyBvcGVyYXRvciBt4bq3YyDEkeG7i25oIMSRxrDhu6NjIHThuqFvIHThu6sgcXVlcnktYnVpbGRlclxuICAgIG9wZXJhdG9ycz86IGFueVtdO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IERhdGFTb3VyY2VDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERyb3Bkb3duQ29udHJvbFNjaGVtYSBleHRlbmRzIERhdGFTb3VyY2VDb250cm9sU2NoZW1hIHtcbiAgICBhcHBlbmRUbz8gPSAnYm9keSc7XG4gICAgcGFuZWxDbGFzcz8gPSAnJztcbiAgICBwbGFjZWhvbGRlcj8gPSAnQ2jhu41uJztcbiAgICBzZWxlY3RlZEl0ZW1zTGFiZWw/ID0gJ8SQw6MgY2jhu41uIHswfSBt4bulYyc7XG4gICAgc2VsZWN0ZWRBbGxJdGVtTGFiZWw/ID0gJ8SQw6MgY2jhu41uIHThuqV0IGPhuqMnO1xuICAgIGZpbHRlclBsYWNlaG9sZGVyPyA9ICdOaOG6rXAgdMOsbSBraeG6v20nO1xuICAgIHNlcnZlckxvYWRNZXNzYWdlPyA9ICdE4buvIGxp4buHdSBz4bq9IMSRxrDhu6NjIGzDoG0gbeG7m2kga2hpIHTDrG0ga2nhur9tJztcbiAgICBzaG93Q2xlYXI/ID0gdHJ1ZTtcbiAgICBmaWx0ZXI/ID0gdHJ1ZTtcbiAgICBtdWx0aXBsZT8gPSBmYWxzZTtcbiAgICBtYXhTZWxlY3RlZExhYmVscz8gPSA1O1xuICAgIG1heEl0ZW1EaXNwbGF5PyA9IDUwO1xuICAgIHZpcnR1YWxTY3JvbGw/OiBib29sZWFuID0gZmFsc2U7XG4gICAgZml0UGFuZWw/OiBib29sZWFuID0gdHJ1ZTtcbiAgICBlbmFibGVDYWNoaW5nPyA9IHRydWU7XG4gICAgbmVlZENsb25lPyA9IGZhbHNlOyAvLyBT4butIGThu6VuZyB0cm9uZyB0YWJsZSBzY2hlbWEsIGtoaSBkYXRhc291cmNlIGPhu6dhIG3hu5l0IGPhu5l0IHRyw6puIG3hu5dpIGTDsm5nIGzDoCBraMOhYyBuaGF1IGPhuqduIHNldCBuZWVkQ2xvbmUgPSB0cnVlXG4gICAgdGVtcGxhdGVJdGVtPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgICB0ZW1wbGF0ZVNlbGVjdGVkSXRlbT86IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcXVpY2tBZGQ/ID0gZmFsc2U7XG4gICAgY29scz86IEZvcm1TY2hlbWFCYXNlW107XG4gICAgcXVpY2tBZGRUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG4gICAgaW5pdERhdGE/OiBLZXlWYWx1ZVR5cGUgfCBGdW5jdGlvbiA9IHt9O1xuICAgIGRlZmF1bHRJbmRleD8gPSAtMTtcbiAgICBwb3B1cFNpemU/OiBQb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKHsgd2lkdGg6IDc1MCwgaGVpZ2h0OiA0MDAgfSk7XG4gICAgaW5zZXJ0UGx1c1VybD8gPSAnJztcblxuICAgIGxvYWRJbkZpcnN0RGlzcGxheT8gPSB0cnVlO1xuICAgIGF1dG9HZXREYXRhPyA9IHRydWU7XG4gICAgaXNBbGxvd0Rpc2FibGVkPyA9IHRydWU7XG5cbiAgICB2YWx1ZUZpZWxkPyA9ICdpZCc7XG4gICAgZGlzcGxheUZpZWxkPyA9ICd0ZW4nO1xuXG4gICAgYXV0b0Rpc3BsYXlGaXJzdD8gPSBmYWxzZTtcbiAgICBub3RJbkNydWRGb3JtPyA9IGZhbHNlO1xuICAgIHNlYXJjaE11bHRpcGxlPyA9IHRydWU7XG4gICAgZGlzYWJsZURpc3BsYXlGaWVsZFNlcnZlclNlYXJjaD8gPSBmYWxzZTtcblxuICAgIGxvYWRPbkluaXQ/ID0gZmFsc2U7XG4gICAgaXNMYXp5TG9hZD8gPSBmYWxzZTtcbiAgICBhbGxvd0xvYWREYXRhV2hlblBhcmVudE51bGw/ID0gZmFsc2U7XG5cbiAgICBkaXNhYmxlZFBhcmVudEl0ZW0/ID0gdHJ1ZTtcbiAgICBvbkFkanVzdGVkVmFsdWU/OiBGdW5jdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEcm9wZG93bkNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRkcmVzc0NvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIGhpZGVObz8gPSBmYWxzZTtcbiAgICBoaWRlU3RyZWV0PyA9IGZhbHNlO1xuICAgIGhpZGVXYXJkPyA9IGZhbHNlO1xuICAgIGhpZGVEaXN0cmljdD8gPSBmYWxzZTtcbiAgICByZXF1aXJlZE5vPyA9IHRydWU7XG4gICAgcmVxdWlyZWRTdHJlZXQ/ID0gdHJ1ZTtcbiAgICByZXF1aXJlZFdhcmQ/ID0gdHJ1ZTtcbiAgICByZXF1aXJlZERpc3RyaWN0PyA9IHRydWU7XG4gICAgcmVxdWlyZWRQcm92aW5jZT8gPSB0cnVlO1xuICAgIHdhcmRUb1Byb3ZpbmNlPyA9IHRydWU7XG4gICAgbm9XaWR0aD8gPSAxO1xuICAgIHN0cmVldFdpZHRoPyA9IDM7XG4gICAgd2FyZFdpZHRoPyA9IDM7XG4gICAgZGlzdHJpY3RXaWR0aD8gPSAyO1xuICAgIHByb3ZpbmNlV2lkdGg/ID0gMztcbiAgICBzaG93SW5Cb3g/ID0gZmFsc2U7XG4gICAgcHJvdmluY2VMYWJlbD8gPSAnVOG7iW5oL1Row6BuaCBwaOG7kSc7XG4gICAgcHJvdmluY2VQbGFjZWhvbGRlcj8gPSAnQ2jhu41uIFThu4luaC9UaMOgbmggcGjhu5EnO1xuICAgIGRpc3RyaWN0TGFiZWw/ID0gJ1F14bqtbi9IdXnhu4duJztcbiAgICBkaXN0cmljdFBsYWNlaG9sZGVyPyA9ICdDaOG7jW4gUXXhuq1uL0h1eeG7h24nO1xuICAgIHdhcmRMYWJlbD8gPSAnUGjGsOG7nW5nL1jDoyc7XG4gICAgd2FyZFBsYWNlaG9sZGVyPyA9ICdDaOG7jW4gUGjGsOG7nW5nL1jDoyc7XG4gICAgc3RyZWV0TGFiZWw/ID0gJ8SQxrDhu51uZyc7XG4gICAgc3RyZWV0UGxhY2Vob2xkZXI/ID0gJ1bDrSBk4bulOiBOZ3V54buFbiBYaeG7g24nO1xuICAgIG5vTGFiZWw/ID0gJ1Phu5EgbmjDoCc7XG4gICAgbm9QbGFjZWhvbGRlcj8gPSAnVsOtIGThu6U6IDA5JztcblxuICAgIGhpZGVIb2xkZXI/ID0gdHJ1ZTtcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlO1xuICAgIGNhY2hpbmc/ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQWRkcmVzc0NvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEFkZHJlc3NOZXdDb250cm9sU2NoZW1hIGV4dGVuZHMgQWRkcmVzc0NvbnRyb2xTY2hlbWEge1xuICAgIC8vIFPhu60gZOG7pW5nIGNobyBhZGRyZXNzIG3hu5tpXG4gICAgdmVyc2lvbj89IC0xO1xuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBBZGRyZXNzTmV3Q29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcihpbml0KTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVmFuQmFuUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XG4gICAgbWRXaWR0aD8gPSAxMjtcbiAgICB1c2VWYkRlbj8gPSB0cnVlO1xuICAgIHVzZVZiRGk/ID0gdHJ1ZTtcbiAgICByZWFkT25seT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICByZWFkb25seT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBsb2FpVmFuQmFuPzogRW51bUxvYWlWYW5CYW5CYXNlID0gRW51bUxvYWlWYW5CYW5CYXNlLlZCX0RJO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFZhbkJhblBpY2tlckNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29uZ1ZpZWNQaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICBtZFdpZHRoPyA9IDEyO1xuICAgIHNlcnZpY2VDb2RlPzogc3RyaW5nO1xuICAgIGVudGl0eT86IHN0cmluZztcbiAgICBlbnRpdHlLZXk/OiBzdHJpbmc7XG4gICAgc3RhdGU/OiBhbnkgPSB7fTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDb25nVmllY1BpY2tlckNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVyY2VudENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIG1kV2lkdGg/ID0gMTI7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUGVyY2VudENvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2hpcHNDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICBwbGFjZWhvbGRlcj8gPSAnJztcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ2hpcHNDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0ZUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSB7XG4gICAgcGxhY2Vob2xkZXI/ID0gJyc7XG4gICAgbXVsdGlwbGU/ID0gZmFsc2U7XG4gICAgbWluTGVuZ3RoRmlsdGVyPyA9IDE7XG4gICAgYXBwZW5kVG8/OiBzdHJpbmcgPSAnYm9keSc7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQXV0b0NvbXBsZXRlQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRpb0J1dHRvbkxpc3RDb250cm9sU2NoZW1hIGV4dGVuZHMgRGF0YVNvdXJjZUNvbnRyb2xTY2hlbWEge1xuICAgIHZhbHVlRmllbGQ/ID0gJ2lkJztcbiAgICBkaXNwbGF5RmllbGQ/ID0gJ3Rlbic7XG4gICAgZW5hYmxlQ2FjaGluZz8gPSB0cnVlO1xuICAgIGxheW91dD86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgPSAnaG9yaXpvbnRhbCc7XG4gICAgYWxpZ24/OiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgPSAnbGVmdCc7XG4gICAgb25BZGp1c3RlZFZhbHVlPzogRnVuY3Rpb247XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUmFkaW9CdXR0b25MaXN0Q29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDaGVja0JveExpc3RDb250cm9sU2NoZW1hIGV4dGVuZHMgRGF0YVNvdXJjZUNvbnRyb2xTY2hlbWEge1xuICAgIGVuYWJsZUNhY2hpbmc/ID0gdHJ1ZTtcbiAgICBsYXlvdXQ/OiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnID0gJ2hvcml6b250YWwnO1xuICAgIGFsaWduPzogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnID0gJ2xlZnQnO1xuICAgIGNsYXNzUGx1cz8gPSAnJztcbiAgICBmcmVlVGV4dD8gPSAnJztcbiAgICBwQ29sQ2xhc3M/OiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ2hlY2tCb3hMaXN0Q29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZVNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XG4gICAgcm93VGVtcGxhdGU6IEZvcm1TY2hlbWFCYXNlW107XG4gICAgYXV0b0dlbmVyYXRlSWQ/ID0gZmFsc2U7XG4gICAgcm93QnV0dG9ucz86IChyb3dEYXRhKSA9PiBNZW51SXRlbVtdO1xuICAgIGZvb3RlckJ1dHRvbnM/OiB7XG4gICAgICAgIGljb24/OiBzdHJpbmc7XG4gICAgICAgIGxhYmVsPzogc3RyaW5nO1xuICAgICAgICBjbGFzcz86IHN0cmluZztcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIH1bXTtcbiAgICBzaG93TnVtYmVyPyA9IHRydWU7XG4gICAgc2hvd0Z1bmN0aW9uPyA9IHRydWU7XG4gICAgc2hvd0Zvb3Rlcj8gPSB0cnVlO1xuICAgIHNob3dTYXZlPyA9IGZhbHNlO1xuICAgIHNob3dFZGl0PyA9IGZhbHNlO1xuICAgIHNob3dEZWxldGU/ID0gdHJ1ZTtcbiAgICBzaG93QWRkPyA9IHRydWU7XG4gICAgc2hvd0RpYWxvZz8gPSB0cnVlO1xuICAgIHBvcHVwU2l6ZT86IFBvcHVwU2l6ZSA9IG5ldyBQb3B1cFNpemUoeyB3aWR0aDogMTEwMCwgaGVpZ2h0OiA2NTAgfSk7XG4gICAgZW5hYmxlUmVvcmRlclJvdz8gPSBmYWxzZTtcbiAgICBlbmFibGVBZGRNdWx0aT8gPSBmYWxzZTtcbiAgICBwaWNrZXJDb250cm9sRmllbGQ/OiBzdHJpbmc7XG4gICAgaXNVbmlxdWU/ID0gdHJ1ZTtcbiAgICBlbmFibGVQYWdpbmc/ID0gZmFsc2U7XG4gICAgbGltaXQ/ID0gNTA7XG4gICAgaW5pdFJvd0NvdW50PyA9IDE7XG4gICAgbWRXaWR0aD8gPSAxMjtcbiAgICB3aWR0aEZ1bmN0aW9uQ29sdW1uPzogc3RyaW5nO1xuICAgIHJvd0J1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG4gICAgc3VtbWFyeVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG4gICAgaGVhZGVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+ID0gbnVsbDtcblxuICAgIG9uUmVvcmRlcmVkPzogRnVuY3Rpb247XG4gICAgb25UYWJsZUZpbmlzaEluaXQ/OiBGdW5jdGlvbjtcbiAgICBvbkFkZGluZz86IEZ1bmN0aW9uO1xuICAgIG9uQWRkZWQ/OiBGdW5jdGlvbjtcbiAgICBvblNhdmU/OiBGdW5jdGlvbjtcbiAgICBvbk1lc3NhZ2U/OiBGdW5jdGlvbjtcbiAgICBvbkRlbGV0aW5nPzogRnVuY3Rpb247XG4gICAgb25EZWxldGVkPzogRnVuY3Rpb247XG4gICAgb25Sb3dDbGljaz86IEZ1bmN0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRhYmxlU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRpc2FibGVDb250cm9sPygpIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlQ2hpbGRyZW5Db250cm9sKHRoaXMucm93VGVtcGxhdGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzYWJsZUNoaWxkcmVuQ29udHJvbD8gPSAoc2NoZW1hczogRm9ybUNvbnRyb2xCYXNlW10pID0+IHtcbiAgICAgICAgc2NoZW1hcy5mb3JFYWNoKHNjaGVtYSA9PiB7XG4gICAgICAgICAgICBzY2hlbWEuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFRhYmxlU2NoZW1hKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlQ2hpbGRyZW5Db250cm9sKHNjaGVtYS5yb3dUZW1wbGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBDb250YWluZXJTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDaGlsZHJlbkNvbnRyb2woc2NoZW1hLmNvbnRyb2xzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIEh0bWxQcmV2aWV3Q29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XG4gICAgaGVpZ2h0PyA9IDI1MDtcbiAgICBtYXRoSmF4VHlwZT86ICdDSFRNTCcgfCAnU1ZHJztcbiAgICB1c2VNYXRoSmF4TWVudT8gPSBmYWxzZTtcbiAgICBhdXRvU2Nyb2xsQm90dG9tPyA9IGZhbHNlO1xuICAgIGlzSHRtbD8gPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEh0bWxQcmV2aWV3Q29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5TY2hlbWFCYXNlIGV4dGVuZHMgRm9ybVNjaGVtYUJhc2VXaXRoU2VydmljZSB7XG4gICAgaXNBcnJheUZpZWxkPzogYm9vbGVhbjsgLy8gTMOgIGZpZWxkIGNo4bupYSBjw6FjIHZhbHVlIGPDoWNoIG5oYXUgYuG6sW5nIGThuqV1ICxcbiAgICB3aWR0aD86IHN0cmluZztcbiAgICBzaG93RWRpdExpbms/ID0gZmFsc2U7XG4gICAgc2hvd1RvZ2dsZUljb24/ID0gZmFsc2U7XG4gICAgY29sU3Bhbj86IG51bWJlcjtcbiAgICBncm91cD8gPSBmYWxzZTtcbiAgICB2aXNpYmxlPyA9IHRydWU7XG4gICAgcmVtb3ZlT25Jbml0PyA9IGZhbHNlO1xuICAgIGFsbG93RmlsdGVyPyA9IHRydWU7XG4gICAgdGV4dEFsaWduPzogVGV4dEFsaWduO1xuICAgIGNlbGxDbGFzcz86IHN0cmluZztcbiAgICBmdWxsVGV4dFNlYXJjaD8gPSBmYWxzZTtcbiAgICBpc0luVGFibGU/ID0gdHJ1ZTtcbiAgICByYXdDb2x1bW4/OiBDb2x1bW5TY2hlbWFCYXNlO1xuICAgIHNlcGFyYXRvcj8gPSAnLCAnO1xuICAgIG1heEl0ZW1EaXNwbGF5PyA9IDUwO1xuICAgIHBhZ2VTaXplPzogbnVtYmVyID0gMTU7IC8vIFByb3AgcGjhuqNpIGdp4buRbmcgduG7m2kgZHJvcGRvd25cblxuICAgIGZpbGVTZXR0aW5nPzogRmlsZVVwbG9hZFNldHRpbmcgfCBGaWxlTWFuYWdlclNldHRpbmc7XG4gICAgZGF0YVR5cGVSZWZGaWVsZD86IERhdGFUeXBlIHwgc3RyaW5nO1xuICAgIGZvcmNlR2V0RGF0YT8gPSBmYWxzZTtcbiAgICBkaXNwbGF5RmllbGRJbkdyaWQ/OiBzdHJpbmc7XG4gICAgZnVuY0dldFJlZkRhdGFSb3c/OiAocmVmSXRlbXMpID0+IHt9O1xuICAgIGZ1bmNTZXRWYWx1ZVJvdz86IChyb3dJdGVtLCBkYXRhKSA9PiB2b2lkO1xuICAgIGZ1bmNTZXRWYWx1ZVJvd1doZW5OdWxsT3JFbXB0eT86IChyb3dJdGVtKSA9PiB2b2lkO1xuICAgIGZ1bmNHZXRWYWx1ZU9mRmllbGQ/OiBGdW5jdGlvbiA9IChyb3dJdGVtKSA9PiByb3dJdGVtW3RoaXMuZmllbGRdO1xuICAgIHJvd1NwYW4/ID0gMTtcbiAgICBmb3JtYXQ/OiBzdHJpbmc7XG4gICAgZGF0YVR5cGU/OiBEYXRhVHlwZSB8IHN0cmluZztcbiAgICBjb250cm9sVHlwZT86IENvbnRyb2xUeXBlID0gQ29udHJvbFR5cGUudGV4dGJveDtcbiAgICB0ZW1wbGF0ZUZpbHRlcj86IFRlbXBsYXRlUmVmPGFueT47XG4gICAgZGlzYWJsZUNoZWNrQm94PyA9IHRydWU7XG4gICAgLy8gVGjhu6kgdOG7sSDGsHUgdGnDqm4gZ2V0IHJlZiBkYXRhIGPhu6dhIGNydWQtbGlzdFxuICAgIC8vIE7hur91IGPDsyB2YWx1ZSBuZ2jEqWEgbMOgIG5o4buvbmcgY+G7mXQgbsOgeSBj4bqnbiBwaOG6o2kgbOG6pXkgZOG7ryBsaeG7h3UgeG9uZyBy4buTaSBt4bubaSDEkeG6v24gY+G7mXQga2jDoWNcbiAgICBvcmRlcj86IG51bWJlciA9IDE7XG4gICAgbWF4V29yZERpc3BsYXk/OiBudW1iZXI7XG4gICAgbWF4TGVuZ3RoRGlzcGxheT86IG51bWJlcjtcbiAgICBtZFdpZHRoSW5TZWFyY2g/ID0gMTI7XG4gICAgc2hvd0J0bkV4cGFuZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBtaW4/ID0gMDtcbiAgICBtYXg/ID0gOTk5OTk5OTk5OTk7XG5cbiAgICBpc0ZvcmVpZ25GaWVsZD8gPSBmYWxzZTtcbiAgICBpc092ZXJyaWRlRmlsdGVyPyA9IGZhbHNlO1xuICAgIHNob3dDbGVhcj8gPSB0cnVlO1xuICAgIG11bHRpcGxlPyA9IGZhbHNlO1xuICAgIHNpbmdsZT8gPSBmYWxzZTtcbiAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuXG4gICAgcGlwZT86IFBpcGVUcmFuc2Zvcm07XG4gICAgYXN5bmNQaXBlPyA9IHRydWU7XG4gICAgc29ydD8gPSB0cnVlO1xuICAgIGV4dGVuZERhdGE/OiBhbnkgPSB7fTtcbiAgICBsZWZ0PzogTnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogSXMgdGhpcyBjb2x1bW4gcmVmIGEgcmVmIGNvbHVtbiBnZW5lcmF0ZWQgYnkgYmFzZVxuICAgICAqIEBkYXRlIDExLzQvMjAyMiAtIDI6MDU6NTUgUE1cbiAgICAgKlxuICAgICAqIEB0eXBlIHs/Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBpc1JlZkZpZWxkPyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogc2hvdWxkIGluY2x1ZGUgdGhpcyBjb2wgaW4gdGhlIGdyaWRJbmZvLmZpZWxkc1xuICAgICAqIEBkYXRlIDExLzQvMjAyMiAtIDI6MDY6MTYgUE1cbiAgICAgKlxuICAgICAqIEB0eXBlIHs/Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBpbmNsdWRlU2VsZWN0PyA9IHRydWU7XG4gICAgaXNQaW5uZWQ/ID0gZmFsc2U7XG5cbiAgICBoYXNPcGVyYXRvckNhbkJvPyA9IGZhbHNlO1xuICAgIG1pbmltaXplRmlsdGVyPzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGJpbmRpbmdGaWx0ZXJzPzogRmlsdGVyW107XG4gICAgZm9yY2VMb2FkaW5nPyA9IGZhbHNlOyAvLyBjaG8gcGjDqXAgbG9hZCBs4bqhaSBjcnVkLWxpc3Qga2hpIGNvbHVtbiBuw6B5IGtow7RuZyBwaOG6o2kgbMOgIHByb3BlcnR5IGPhu6dhIGJhc2VydmljZSAoZMO5bmcgdHJvbmcgY29tbW9uLXNlYXJjaClcbiAgICBhdXRvRGlzcGxheUZpcnN0PyA9IGZhbHNlO1xuICAgIG5vdEluQ3J1ZEZvcm0/ID0gZmFsc2U7XG4gICAgc2hvd1NldHRpbmc/ID0gdHJ1ZTtcblxuICAgIGNsaWNrPzogRnVuY3Rpb247XG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgYWxsb3dMb2FkRGF0YVdoZW5QYXJlbnROdWxsPyA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbHVtblNjaGVtYUJhc2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRHJvcGRvd25PcHRpb25zIHtcbiAgICBkaXNwbGF5RmllbGQ/ID0gJ3Rlbic7XG4gICAgdmFsdWVGaWVsZD8gPSAnaWQnO1xuICAgIGZpZWxkVHJlZT8gPSAnJztcbiAgICBzZWxlY3RDaGlsZEl0ZW0/ID0gZmFsc2U7IC8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxuICAgIHNlbGVjdERlc2NlbmRhbnQ/ID0gZmFsc2U7IC8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiwgY2jDoXUgbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcbiAgICBmaWVsZFBhcmVudFRyZWVJdGVtPyA9ICdpZCc7IC8vIFRyxrDhu51uZyB4w6FjIMSR4buLbmggYuG6o24gZ2hpIGzDoCBi4bqjbiBnaGkgY2hhIGPhu6dhIGLhuqNuIGdoaSBjb25cbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xuICAgIHNvcnRGaWVsZD8gPSAnJztcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcbiAgICBmaWVsZFBsdXM/ID0gJyc7XG4gICAgcGx1c1VybD86IHN0cmluZztcbiAgICBjYWxsYmFja0RhdGFGaW5pc2g/OiAoZXZ0OiBFdmVudERhdGEpID0+IHZvaWQ7XG4gICAgcGFnZT86IG51bWJlciA9IDE7XG4gICAgcGFnZVNpemU/ID0gNjY2O1xuICAgIGlzU2VydmVyTG9hZD8gPSBmYWxzZTtcbiAgICByZWZGaWVsZHM/OiBSZWZGaWVsZFtdID0gW107XG4gICAgaXNUcmVlQmFzZU1vZGVsPyA9IGZhbHNlO1xuICAgIGlzR2V0QWxsPyA9IGZhbHNlO1xuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XG4gICAgZnVuY0NvbXBhcmU/OiAoaXRlbTogYW55LCB2YWx1ZSkgPT4gYm9vbGVhbiA9IChpdGVtLCB2YWx1ZSkgPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09IHZhbHVlO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IERyb3Bkb3duT3B0aW9ucykge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZWZGaWVsZCB7XG4gICAgZmllbGQ/OiBzdHJpbmc7XG4gICAgbXVsdGlwbGU/ID0gZmFsc2U7XG4gICAgc2VwYXJhdG9yPyA9ICcsICc7XG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xuICAgIGlzQ2hpbGRPYmplY3Q/ID0gZmFsc2U7XG4gICAgZGlzcGxheUZpZWxkPyA9ICd0ZW4nO1xuICAgIGRpc3BsYXlGaWVsZEluR3JpZD86IHN0cmluZztcbiAgICB2YWx1ZUZpZWxkPyA9ICdpZCc7XG4gICAgZmllbGRQbHVzPyA9ICcnO1xuICAgIGdyb3VwQ29kZT86IHN0cmluZztcbiAgICBkYXRhU291cmNlPzogYW55W107XG4gICAgb3JkZXI/OiBudW1iZXIgPSAxO1xuICAgIGlzRm9yZWlnbkZpZWxkPyA9IGZhbHNlO1xuXG4gICAgaXNUcmVlPyA9IGZhbHNlO1xuICAgIGZpZWxkVHJlZT86IHN0cmluZztcbiAgICB2YWx1ZVBhcmVudFJvb3Q/OiBhbnkgPSBudWxsOyAvLyBHacOhIHRy4buLIHRyxrDhu51uZyBbZmllbGRUcmVlXSBj4bunYSBpdGVtIHRyZWUgcm9vdFxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/ID0gJ2lkJzsgLy8gVHLGsOG7nW5nIHjDoWMgxJHhu4tuaCBi4bqjbiBnaGkgbMOgIGLhuqNuIGdoaSBjaGEgY+G7p2EgYuG6o24gZ2hpIGNvblxuICAgIHNvcnRzPzogU29ydFtdID0gW107XG4gICAgc29ydEZpZWxkPyA9ICcnO1xuICAgIHNvcnREaXI/OiAxIHwgLTEgPSAxO1xuICAgIHBsdXNVcmw/OiBzdHJpbmc7XG5cbiAgICBmdW5jR2V0VmFsdWVPZkZpZWxkPzogRnVuY3Rpb24gPSAoaXRlbSkgPT4gaXRlbVt0aGlzLmZpZWxkXTtcbiAgICBmdW5jU2V0VmFsdWVSb3c/OiAocm93SXRlbSwgZGF0YSkgPT4gdm9pZDtcbiAgICBmdW5jU2V0VmFsdWVSb3dXaGVuTnVsbE9yRW1wdHk/OiAocm93SXRlbSkgPT4gdm9pZDtcbiAgICBmdW5jR2V0UmVmRGF0YVJvdz86IChyZWZJdGVtcykgPT4ge307XG4gICAgY2FsbGJhY2tEYXRhRmluaXNoPzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XG4gICAgZnVuY0NvbXBhcmU/OiAoaXRlbTogYW55LCB2YWx1ZSkgPT4gYm9vbGVhbiA9IChpdGVtLCB2YWx1ZSkgPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09IHZhbHVlO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFJlZkZpZWxkKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVudGl0eVBpY2tlckNvbHVtbiBleHRlbmRzIENvbHVtblNjaGVtYUJhc2Uge1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGNvZGU/OiBzdHJpbmc7XG4gICAgZGlzYWJsZWQ/ID0gZmFsc2U7XG4gICAgaXNTZWFyY2hhYmxlPyA9IHRydWU7XG4gICAgaXNEaXNwbGF5PyA9IHRydWU7XG4gICAgZGF0YVR5cGU/OiBEYXRhVHlwZSB8IHN0cmluZztcbiAgICBvcGVyYXRvcj86IE9wZXJhdG9yO1xuICAgIHdpZHRoPyA9ICcnO1xuICAgIG5vdEluRmllbGRzPyA9IGZhbHNlOyAvLyBDw6FjIHRyxrDhu51uZyBk4buvIGxp4buHdSDEkcaw4bujYyB04buVbmcgaOG7o3AgbOG6oWkgaGnhu4NuIHRo4buLIGzDqm4gZ3JpZCBtw6Aga2jDtG5nIHBo4bqjaSBs4bqleSB04burIHRyb25nIHRhYmxlIHJhLlxuXG4gICAgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEVudGl0eVBpY2tlckNvbHVtbikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDcnVkTGlzdENvbmZpZyB7XG4gICAgdG9vbHRpcFZpZXc/OiBzdHJpbmc7XG4gICAgb25WaWV3PzogRnVuY3Rpb247XG4gICAgZGlzYWJsZVJvd1NlbGVjdFdoZW5DbGlja0FjdGlvbj8gPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRMaXN0Q29uZmlnKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRyZWVEYXRhT3B0aW9uIHtcbiAgICBkaXNwbGF5RmllbGQgPSAndGVuJztcbiAgICBzaG9ydERpc3BsYXlGaWVsZCA9ICd0ZW4nO1xuICAgIGV4cGFuZGVkSWNvbiA9ICdwaSBwaS1mb2xkZXItb3Blbic7XG4gICAgY29sbGFwc2VkSWNvbiA9ICdwaSBwaS1mb2xkZXInO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRyZWVEYXRhT3B0aW9uKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIERpYWxvZ01vZGVsIHtcbiAgICBzaG93RWRpdEZvcm0/OiBib29sZWFuID0gZmFsc2U7XG4gICAgaGVhZGVyPzogc3RyaW5nID0gJyc7XG4gICAgcG9wdXBTaXplPzogUG9wdXBTaXplID0gbmV3IFBvcHVwU2l6ZSh7IG1heGltaXplOiB0cnVlIH0pO1xuICAgIGRhdGE/OiBhbnkgPSB7fTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEaWFsb2dNb2RlbCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQb3B1cFNpemUge1xuICAgIHdpZHRoPzogbnVtYmVyO1xuICAgIGhlaWdodD86IG51bWJlcjtcbiAgICBtYXhpbWl6ZT8gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQb3B1cFNpemUpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQnV0dG9uQWN0aW9uIHtcbiAgICByYXdUZXh0Pzogc3RyaW5nO1xuICAgIHBlcm1pc3Npb25Db2RlPzogc3RyaW5nO1xuICAgIGxzdEVsZW1lbnQ/OiBIVE1MQnV0dG9uRWxlbWVudFtdID0gW107XG4gICAgaXNBdXRob3JpemU/ID0gZmFsc2U7XG4gICAgaWQ6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBCdXR0b25BY3Rpb24pIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXZlbnREYXRhIHtcbiAgICBjdXJyZW50Tm9kZTogQ29udHJvbFRyZWVOb2RlO1xuICAgIHNvdXJjZU5vZGU/OiBDb250cm9sVHJlZU5vZGU7XG4gICAgc291cmNlRXZlbnQ/OiBhbnk7XG4gICAgZXZlbnRUeXBlPzogYW55O1xuICAgIGRhdGE/OiBhbnk7XG4gICAgcHJpdmF0ZSBfY3J1ZEZvcm06IENydWRGb3JtQ29tcG9uZW50O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluaXQ/OiB7XG4gICAgICAgICAgICBjdXJyZW50Tm9kZTogQ29udHJvbFRyZWVOb2RlLFxuICAgICAgICAgICAgc291cmNlTm9kZT86IENvbnRyb2xUcmVlTm9kZSxcbiAgICAgICAgICAgIHNvdXJjZUV2ZW50PzogYW55LFxuICAgICAgICAgICAgZXZlbnRUeXBlPzogYW55LFxuICAgICAgICAgICAgZGF0YT86IGFueSxcbiAgICAgICAgICAgIGNydWRGb3JtPzogQ3J1ZEZvcm1Db21wb25lbnQ7XG4gICAgICAgIH1cbiAgICApIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLm1vZGVsO1xuICAgIH1cblxuICAgIGdldCBtb2RlbCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5tb2RlbDtcbiAgICB9XG5cbiAgICBnZXQgcGFyZW50TW9kZWwoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE5vZGUucGFyZW50TW9kZWw7XG4gICAgfVxuXG4gICAgZ2V0IHBhcmVudFBhdGgoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE5vZGUucGFyZW50TW9kZWxQYXRoO1xuXG4gICAgfVxuXG4gICAgZ2V0IHJvb3RNb2RlbCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5yb290Tm9kZS5tb2RlbDtcbiAgICB9XG5cbiAgICBnZXQgY29udHJvbCgpOiBGb3JtU2NoZW1hQmFzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLmNvbnRyb2w7XG4gICAgfVxuXG4gICAgZ2V0IHBhcmVudENvbnRyb2woKTogRm9ybVNjaGVtYUJhc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5wYXJlbnRDb250cm9sO1xuICAgIH1cblxuICAgIGdldCBmb3JtQ29udHJvbHMoKTogRm9ybVNjaGVtYUJhc2VbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLmZvcm1Db250cm9scztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJWaWV3RGF0YSB7XG4gICAgY29kZT86IHN0cmluZztcbiAgICBoaWRkZW4/OiBib29sZWFuID0gZmFsc2U7XG4gICAgYWx3YXlSZW5kZXI/OiBib29sZWFuID0gZmFsc2U7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBoZWFkZXJTdHlsZUNsYXNzPzogc3RyaW5nO1xuICAgIGFjdGl2ZT86IGJvb2xlYW47XG4gICAgZG9Ob3RSZWxvYWQ/ID0gdHJ1ZTtcbiAgICB1c2VTY3JvbGxiYXI/ID0gdHJ1ZTsgLy8gQ29uZmlnIMSR4buDIHjDoWMgxJHhu4tuaCBjw7Mgc+G7rSBk4bulbmcgY3VzdG9tLXNjcm9sbGJhciBraMO0bmcsIG7hur91IGtow7RuZyB0aMOsIGTDuW5nIHNjcm9sbGJhciBt4bq3YyDEkeG7i25oIGPhu6dhIHRyw6xuaCBkdXnhu4d0XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGFiVmlld0RhdGEpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmllbGRSb3dTcGFuIHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIGZ1bmNHZXRWYWx1ZT86IChpdGVtKSA9PiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRmllbGRSb3dTcGFuKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExvZ1NldHRpbmcge1xuICAgIGlzRW5hYmxlTG9nPyA9IGZhbHNlO1xuICAgIGlzQ3VzdG9tQWxsPyA9IGZhbHNlO1xuICAgIHZhbHVlQmVmb3JlVXBkYXRlOiBhbnk7XG4gICAgZW1wdHlWYWx1ZT8gPSAnS2jDtG5nIGPDsyBnacOhIHRy4buLJztcbiAgICBhcnJWYWx1ZUFmdGVyVXBkYXRlOiBMb2dDb2x1bW5bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IExvZ1NldHRpbmcpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIExvZ0NvbHVtbiB7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHZhbHVlQmVmb3JlPzogc3RyaW5nO1xuICAgIHZhbHVlQWZ0ZXI/OiBzdHJpbmc7XG4gICAgdmlzaWJsZT8gPSB0cnVlO1xuICAgIGVudW1Mb2dUeXBlPyA9IEVudW1Mb2dUeXBlLk5vcm1hbDtcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogTG9nQ29sdW1uKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBlbnVtIEVudW1Mb2dUeXBlIHtcbiAgICBOb3JtYWwgPSAxLFxuICAgIEh0bWwgPSAyLFxuICAgIFRhYmxlID0gM1xufVxuXG5leHBvcnQgZW51bSBEYXRhVHlwZSB7XG4gICAgZGF0ZSA9ICdkYXRlJyxcbiAgICBkYXRldGltZSA9ICdkYXRldGltZScsXG4gICAgaHRtbCA9ICdodG1sJyxcbiAgICBzdHJpbmcgPSAnc3RyaW5nJyxcbiAgICBpbnQgPSAnaW50JyxcbiAgICBpbnRXaXRob3V0TWFzayA9ICdpbnRXaXRob3V0TWFzaycsXG4gICAgY3VycmVuY3kgPSAnY3VycmVuY3knLFxuICAgIGRlY2ltYWwgPSAnZGVjaW1hbCcsXG4gICAgYm9vbGVhbiA9ICdib29sZWFuJyxcbiAgICBlbnVtID0gJ2VudW0nLFxuICAgIGZpbGVVcGxvYWQgPSAnZmlsZVVwbG9hZCcsXG4gICAgZmlsZU1hbmFnZXIgPSAnZmlsZU1hbmFnZXInLFxuICAgIHRpbWVzcGFuID0gJ3RpbWVzcGFuJyxcbn1cblxuZXhwb3J0IGVudW0gQ29udHJvbFR5cGUge1xuICAgIGRyb3Bkb3duID0gJ2Ryb3Bkb3duJyxcbiAgICBkYXRldGltZSA9ICdkYXRldGltZScsXG4gICAgZGF0ZSA9ICdkYXRlJyxcbiAgICB0aW1lID0gJ3RpbWUnLFxuICAgIG51bWJlciA9ICdudW1iZXInLFxuICAgIHRleHRib3ggPSAndGV4dGJveCcsXG4gICAgY2hlY2tib3ggPSAnY2hlY2tib3gnLFxuICAgIHN3aXRjaCA9ICdzd2l0Y2gnXG59XG5cbmV4cG9ydCBlbnVtIE9wZXJhdG9yIHtcbiAgICBlcXVhbCA9ICdlcScsXG4gICAgbm90RXF1YWwgPSAnbmVxJyxcbiAgICBncmVhdGVyID0gJ2d0JyxcbiAgICBncmVhdGVyVGhhbkVxdWFsID0gJ2d0ZScsXG4gICAgbG93ZXIgPSAnbHQnLFxuICAgIGxvd2VyVGhhbkVxdWFsID0gJ2x0ZScsXG5cbiAgICByZWxhdGlvbmFsRGF0YSA9ICdyZWxhdGlvbmFsZGF0YScsXG4gICAgY29udGFpbiA9ICdjb250YWlucycsXG4gICAgbm90Q29udGFpbiA9ICduY29udGFpbnMnLFxuICAgIHN0YXJ0V2l0aCA9ICdzdGFydHN3aXRoJyxcbiAgICBub3RTdGFydFdpdGggPSAnbnN0YXJ0c3dpdGgnLFxuICAgIGVuZFdpdGggPSAnZW5kc3dpdGgnLFxuICAgIG5vdEVuZFdpdGggPSAnbmVuZHN3aXRoJyxcblxuICAgIGluID0gJ2luJyxcbiAgICBub3RJbiA9ICduaW4nLFxuXG4gICAgaXNOdWxsID0gJ2lzbnVsbCcsXG4gICAgaXNOb3ROdWxsID0gJ2lzbm90bnVsbCcsXG5cbiAgICBpblJvbGUgPSAnaGFzUm9sZScsXG4gICAgbm90SW5Sb2xlID0gJ25vdEhhc1JvbGUnLFxuICAgIGluQ2F0ZWdvcnkgPSAnaW5DYXRlZ29yeScsXG4gICAgbm90SW5DYXRlZ29yeSA9ICdub3RJbkNhdGVnb3J5JyxcbiAgICBpblBvc2l0aW9uID0gJ2luUG9zaXRpb24nLFxuICAgIG5vdEluUG9zaXRpb24gPSAnbm90SW5Qb3NpdGlvbicsXG4gICAgaW5MaXN0VXNlciA9ICdpbkxpc3RVc2VyJyxcbiAgICBub3RJbkxpc3RVc2VyID0gJ25vdEluTGlzdFVzZXInLFxuICAgIGluTGlzdEdyb3VwID0gJ2luTGlzdEdyb3VwJyxcbiAgICBub3RJbkxpc3RHcm91cCA9ICdub3RJbkxpc3RHcm91cCcsXG4gICAgaXNDdXJyZW50VXNlciA9ICdpc0N1cnJlbnRVc2VyJyxcbiAgICBpc0N1cnJlbnRDYW5CbyA9ICdpc0N1cnJlbnRDYW5Cbydcbn1cblxuZXhwb3J0IGVudW0gSGVpZ2h0VHlwZSB7XG4gICAgZGVmYXVsdCA9IDAsXG4gICAgZHluYW1pYyA9IC0xLFxuICAgIGN1c3RvbSA9IDFcbn1cblxuZXhwb3J0IGVudW0gRmlsZU1hbmFnZXJNb2RlIHtcbiAgICBzaW5nbGUgPSAnc2luZ2xlJyxcbiAgICBtdWx0aXBsZSA9ICdtdWx0aXBsZSdcbn1cblxuZXhwb3J0IGVudW0gRmlsZVVwbG9hZE1vZGUge1xuICAgIHVzaW5nRmlsZUluc3RhbmNlSWQgPSAndXNpbmdGaWxlSW5zdGFuY2VJZCcsXG4gICAgdXNpbmdTZXJ2aWNlRmlsZSA9ICd1c2luZ1NlcnZpY2VGaWxlJ1xufVxuXG5leHBvcnQgZW51bSBFbnVtRmlsZUxheW91dCB7XG4gICAgU0lNUExFID0gJ1NJTVBMRScsXG4gICAgU0lNUExFX0ZPUl9MSVNUID0gJ1NJTVBMRV9GT1JfTElTVCcsXG4gICAgTElTVCA9ICdMSVNUJyxcbiAgICBJTkxJTkUgPSAnSU5MSU5FJ1xufVxuXG5leHBvcnQgZW51bSBUZXh0QWxpZ24ge1xuICAgIExlZnQgPSAwLFxuICAgIENlbnRlciA9IDEsXG4gICAgUmlnaHQgPSAtMVxufVxuXG5leHBvcnQgZW51bSBFeHBvcnRJdGVtc01vZGUge1xuICAgIEZyb21IdG1sID0gMCxcbiAgICBNYW51YWxHZXREYXRhID0gMSxcbiAgICBBdXRvR2V0RGF0YSA9IDJcbn1cblxuZXhwb3J0IGVudW0gRXhwb3J0QWxsTW9kZSB7XG4gICAgTWFudWFsR2V0RGF0YSA9IDAsXG4gICAgQXV0b0dldERhdGEgPSAxXG59XG5cbmV4cG9ydCBlbnVtIFVzZXJUeXBlIHtcbiAgICBDYW5CbyxcbiAgICBOb3JtYWwsXG59XG5cbmV4cG9ydCBlbnVtIEV2ZW50VHlwZSB7XG4gICAgQ0hBTkdFID0gJ2NoYW5nZScsXG4gICAgQURKVVNUX1ZBTFVFID0gJ2FkanVzdFZhbHVlJyxcbiAgICBNT0RFTF9DSEFOR0VEID0gJ21vZGVsQ2hhbmdlZCcsXG4gICAgRk9STV9SRUFEWSA9ICdmb3JtUmVhZHknLFxuICAgIEVOVEVSID0gJ2VudGVyJyxcbiAgICBISURFID0gJ2hpZGUnLFxuICAgIFJPV19SRU9SREVSID0gJ3Jvd1Jlb3JkZXInLFxuICAgIEJMVVIgPSAnYmx1cicsXG4gICAgUkVBRFkgPSAnUkVBRFknLFxuICAgIERBVEFTT1VSQ0VfTE9BREVEID0gJ2RhdGFTb3VyY2VMb2FkZWQnLFxuICAgIENMSUNLID0gJ2NsaWNrJyxcbiAgICBBVVRPX0NPUlJFQ1QgPSAnYXV0b0NvcnJlY3QnLFxuICAgIFZBTElEQVRFID0gJ3ZhbGlkYXRlJyxcbiAgICBJTklUID0gJ2luaXQnLFxuICAgIEFERElORyA9ICdhZGRpbmcnLFxuICAgIEFEREVEID0gJ2FkZGVkJyxcbiAgICBERUxFVElORyA9ICdkZWxldGluZycsXG4gICAgREVMRVRFRCA9ICdkZWxldGVkJyxcbiAgICBTRUxFQ1QgPSAnc2VsZWN0JyxcbiAgICBUQUJMRV9DSEFOR0VEID0gJ3RhYmxlQ2hhbmdlZCcsXG4gICAgU0FWRSA9ICdzYXZlJyxcbiAgICBNRVNTQUdFID0gJ21lc3NhZ2UnLFxuICAgIFJPV19GSU5JU0hfSU5JVCA9ICdyb3dGaW5pc2hJbml0JyxcbiAgICBUQUJMRV9GSU5JU0hfSU5JVCA9ICd0YWJsZUZpbmlzaEluaXQnLFxuICAgIFVQTE9BREVEID0gJ3VwbG9hZGVkJyxcbn0gXG4iXX0=
|
|
1482
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90bngtc2hhcmVkL3NyYy9saWIvY2xhc3Nlcy9mb3JtLXNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBS0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFrQmhGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsOEJBQThCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2pILE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBWSxFQUFFLEtBQWE7SUFDbkQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDcEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMxQjtBQUNMLENBQUM7QUFFRCxNQUFNLE9BQU8sV0FBVztJQU9wQixZQUFZLElBQWtCO1FBRjlCLGFBQVEsR0FBNkcsUUFBUSxDQUFDO1FBRzFILElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDekQ7UUFDRCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBRUwsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFFBQVE7SUFJakIsWUFBWSxJQUFlO1FBSDNCLG9HQUFvRztRQUNwRyxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFHL0IsS0FBSyxNQUFNLEdBQUcs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QixDQUFBO0lBQzVCLDJDQUE4QixDQUFBO0lBQzlCLHFDQUF3QixDQUFBO0lBQ3hCLDRCQUFlLENBQUE7SUFDZiwwQkFBYSxDQUFBO0lBQ2IsdUNBQTBCLENBQUE7SUFDMUIsMEJBQWEsQ0FBQTtJQUNiLDRCQUFlLENBQUE7SUFDZixtREFBc0MsQ0FBQTtJQUN0Qyw0QkFBZSxDQUFBO0lBQ2YseUNBQTRCLENBQUE7SUFDNUIsa0NBQXFCLENBQUE7SUFDckIsMEJBQWEsQ0FBQTtJQUNiLDhCQUFpQixDQUFBO0lBQ2pCLDRCQUFlLENBQUE7SUFDZixrQ0FBcUIsQ0FBQTtJQUNyQixnQ0FBbUIsQ0FBQTtJQUNuQiw4QkFBaUIsQ0FBQTtJQUNqQiwyQ0FBOEIsQ0FBQTtJQUM5QiwwQkFBYSxDQUFBO0lBQ2IsZ0NBQW1CLENBQUE7SUFDbkIsOENBQWlDLENBQUE7SUFDakMsa0RBQXFDLENBQUE7SUFDckMsa0NBQXFCLENBQUE7QUFDekIsQ0FBQyxFQTFCVyxTQUFTLEtBQVQsU0FBUyxRQTBCcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlVHJhbnNmb3JtLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL2FwaSc7XG5cbmltcG9ydCB7IEF1dG9Db21wbGV0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLXBpY2tlci9hdXRvY29tcGxldGUtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbnVtTG9haVZhbkJhbkJhc2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2Nvbmd2aWVjLXBpY2tlci9tb2RlbHMvZW51bXMnO1xuaW1wb3J0IHsgQ3J1ZExpc3RDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2NydWQvY3J1ZC1saXN0L2NydWQtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBFbnRpdHlQaWNrZXJEYXRhQ29tcG9uZW50XG59IGZyb20gJy4uL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci9lbnRpdHktcGlja2VyLWRpYWxvZy9jb21wb25lbnRzL2VudGl0eS1waWNrZXItZGF0YS9lbnRpdHktcGlja2VyLWRhdGEuY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgRW50aXR5UGlja2VyU2VsZWN0ZWRDb21wb25lbnRcbn0gZnJvbSAnLi4vY29tcG9uZW50cy9lbnRpdHktcGlja2VyL2VudGl0eS1waWNrZXItZGlhbG9nL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci1zZWxlY3RlZC9lbnRpdHktcGlja2VyLXNlbGVjdGVkLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIEVudGl0eVBpY2tlclRyZWVEYXRhQ29tcG9uZW50XG59IGZyb20gJy4uL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci9lbnRpdHktcGlja2VyLWRpYWxvZy9jb21wb25lbnRzL2VudGl0eS1waWNrZXItdHJlZS1kYXRhL2VudGl0eS1waWNrZXItdHJlZS1kYXRhLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIEVudGl0eVBpY2tlclRyZWVTZWxlY3RlZENvbXBvbmVudFxufSBmcm9tICcuLi9jb21wb25lbnRzL2VudGl0eS1waWNrZXIvZW50aXR5LXBpY2tlci1kaWFsb2cvY29tcG9uZW50cy9lbnRpdHktcGlja2VyLXRyZWUtc2VsZWN0ZWQvZW50aXR5LXBpY2tlci10cmVlLXNlbGVjdGVkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbnRpdHlQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2VudGl0eS1waWNrZXIvZW50aXR5LXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsZVBpY2tlclNldHRpbmcgfSBmcm9tICcuLi9jb21wb25lbnRzL2ZpbGUtZXhwbG9yZXIvbW9kZWxzL2ZpbGUtcGlja2VyLXNldHRpbmcnO1xuaW1wb3J0IHsgRmlsZU1hbmFnZXJTZXR0aW5nLCBGaWxlVXBsb2FkU2V0dGluZyB9IGZyb20gJy4uL2NvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9tb2RlbHMvZmlsZS1zZXR0aW5ncyc7XG5pbXBvcnQgeyBGaWxlRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2ZpbGUtZXhwbG9yZXIvc2VydmljZXMvZmlsZS1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsZVR5cGVGbGFnIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbGUtdHlwZSc7XG5pbXBvcnQgeyBGaWx0ZXIsIFNvcnQgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC1pbmZvJztcbmltcG9ydCB7IEtleVZhbHVlVHlwZSB9IGZyb20gJy4uL21vZGVscy90eXBlcyc7XG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Jhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBFbnRpdHlNZXRhZGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9lbnRpdHktbWV0YWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBNYXN0ZXJEYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL21hc3Rlci1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udHJvbFRyZWVOb2RlLCBDcnVkRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vLi4vY29tcG9uZW50cy9jcnVkL2NydWQtZm9ybS9jcnVkLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IElDb3JyZWN0b3IgfSBmcm9tICcuL2Jhc2UvY29ycmVjdG9ycyc7XG5pbXBvcnQgeyBJVmFsaWRhdG9yIH0gZnJvbSAnLi9iYXNlL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgRW51bUNvbnRyb2xQaWNrZXJUeXBlLCBFbnVtV29ya2Zsb3dDb3JlQ29kZVNldHRpbmdLZXksIEZvcm1TdGF0ZSwgU2hhcmVkRm9sZGVyVHlwZSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFdvcmtmbG93U2V0dGluZywgV29ya2Zsb3dTZXR0aW5nTmV3IH0gZnJvbSAnLi93b3JrZmxvdy1zY2hlbWEnO1xuXG5leHBvcnQgZnVuY3Rpb24gbWFwUHJvcGVydHkoaW5pdDogb2JqZWN0LCB0b01hcDogb2JqZWN0KSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICB0b01hcFtrZXldID0gaW5pdFtrZXldO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1vZGVsU2NoZW1hIHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBmdWxsTmFtZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBkYXRhVHlwZT86ICdpbnQnIHwgJ2RlY2ltYWwnIHwgJ2RhdGUnIHwgJ2RhdGV0aW1lJyB8ICdzdHJpbmcnIHwgJ2Jvb2xlYW4nIHwgJ3RpbWVzcGFuJyB8ICdodG1sJyB8ICdpbnRXaXRob3V0TWFzaycgPSAnc3RyaW5nJztcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBNb2RlbFNjaGVtYSkge1xuICAgICAgICBpZiAoIWluaXRbJ2Z1bGxOYW1lJ10gJiYgIWluaXRbJ2Rlc2NyaXB0aW9uJ10pIHtcbiAgICAgICAgICAgIGluaXRbJ2Z1bGxOYW1lJ10gPSBpbml0WydkZXNjcmlwdGlvbiddID0gaW5pdFsnbmFtZSddO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3J1ZEJhc2Uge1xuICAgIC8vIENvbXBvbmVudCBzdWJzY3JpYmUgLSBLaGkgc3ViY3JpYmUgbeG7mXQgY29tcG9uZW50IHRow6wgYWRkIHbDoG8gYXJyYXkgxJHhu4Mga2hpIGRlc3Ryb3kgdGjDrCB1bnN1YnNjcmliZVxuICAgIGNvbXBvbmVudFN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZEJhc2UpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3J1ZExpc3RTZXR0aW5nIHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHRhcmdldFBhdGg/OiBzdHJpbmc7XG4gICAgb2JqZWN0TmFtZSA9ICcnO1xuICAgIGVudGl0eUtleSA9ICdpZCc7XG4gICAgc2V0dGluZ0tleT86IHN0cmluZztcbiAgICBlbnRpdHlNZXRhZGF0YVNlcnZpY2U/OiBFbnRpdHlNZXRhZGF0YVNlcnZpY2U7XG4gICAgbW9kZWxTY2hlbWFzPzogTW9kZWxTY2hlbWFbXSA9IFtdO1xuICAgIGNvbHM/OiBDb2x1bW5TY2hlbWFCYXNlW10gPSBbXTtcbiAgICByYXdDb2xzPzogQ29sdW1uU2NoZW1hQmFzZVtdID0gW107XG4gICAgY29tbW9uU2NoZW1hcz86IEZvcm1Db250cm9sQmFzZVtdID0gW107XG4gICAgY29sdW1uU2V0dGluZz86IENvbHVtblNldHRpbmcgPSBuZXcgQ29sdW1uU2V0dGluZygpO1xuICAgIHBhZ2VTZXR0aW5nPzogUGFnZVNldHRpbmcgPSBuZXcgUGFnZVNldHRpbmcoKTtcbiAgICBoZWlnaHRUeXBlPzogSGVpZ2h0VHlwZSA9IEhlaWdodFR5cGUuZGVmYXVsdDsgLy8gQ8OzIGN1c3RvbSBjaGnhu4F1IGNhbyBraMO0bmc6IFRoxrDhu51uZyBz4butIGThu6VuZyB0cm9uZyBkaWFsb2dcbiAgICBmaXhIZWlnaHRUeXBlSW5EaWFsb2c/ID0gdHJ1ZTtcbiAgICBtdWx0aXBsZUNoZWNrV2hlbkNsaWNrUm93ID0gdHJ1ZTtcbiAgICBjdXN0b21Xb3JrZmxvd0NvZGVUcmluaEt5OiBFbnVtV29ya2Zsb3dDb3JlQ29kZVNldHRpbmdLZXkgPSBFbnVtV29ya2Zsb3dDb3JlQ29kZVNldHRpbmdLZXkuTUFDX0RJTkg7XG4gICAgc3RpY2t5Q29sdW1uID0gZmFsc2U7XG4gICAgdGFibGVOYW1lPzogc3RyaW5nO1xuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2U7XG4gICAgcmVTZWxlY3RMYXN0SXRlbT8gPSB0cnVlOyAvLyBTZWxlY3QgbOG6oWkgaXRlbSBjdeG7kWkgY8O5bmcgxJHDoyBjaOG7jW4gY+G7p2EgZ3JpZFxuICAgIGZpcmVFdmVudFdoZW5SZVNlbGVjdD8gPSBmYWxzZTtcbiAgICBhZHZhbmNlRGF0YT86IGFueSA9IHt9O1xuICAgIGZpZWxkTmVlZEdldFJlZj86IFJlZkZpZWxkW10gPSBbXTtcbiAgICB3b3JrZmxvd1NldHRpbmc/OiBXb3JrZmxvd1NldHRpbmc7XG4gICAgd29ya2Zsb3dTZXR0aW5nTmV3PzogV29ya2Zsb3dTZXR0aW5nTmV3O1xuICAgIGlzV29ya2Zsb3dUcmVlPzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHdvcmtmbG93Q29uZmlnQWR2YW5jZT86IFdvcmtmbG93Q29uZmlnQWR2YW5jZTtcbiAgICBpZ25vcmVXb3JrZmxvdz86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBkaXNwbGF5RmllbGQ6IHN0cmluZyB8ICgoaXRlbSkgPT4gc3RyaW5nKTsgLy8gdHLGsOG7nW5nIMSR4bqhaSBkaeG7h24gY2hvIGLhuqNuIGdoaSBsw6BtIHRpw6p1IMSR4buBIGhp4buDbiB0aOG7iyAocGjhu6VjIHbhu6UgY2hvIGPDoWMgZOG7i2NoIHbhu6Uga2jDoWMga2hhaSB0aMOhYylcbiAgICBnZXREaXNwbGF5TmFtZUluU2VydmVyOiBib29sZWFuID0gZmFsc2U7XG4gICAgaGFzQ3VzdG9tSGFuZGxlQ2xpY2tSb3cgPSBmYWxzZTtcbiAgICBjaGVja0FsbG93VHJpbmhLeTogKHJvd0RhdGEpID0+IFByb21pc2U8Ym9vbGVhbj47XG4gICAgY2hlY2tBbGxvd1NlbGVjdFJvdzogKHJvd0RhdGEsIGV2dD8pID0+IGJvb2xlYW47XG4gICAgZ2V0SXRlbVN0YXRlOiAobHN0Um93RGF0YTogYW55W10pID0+IHsgW2tleTogc3RyaW5nXTogYW55OyB9O1xuICAgIGdldERhdGFGb3JOZXh0Rmlyc3RTdGVwVGFzaz86IChyb3dEYXRhKSA9PiAoe30pO1xuICAgIGNoZWNrUGVybWlzaW9uVHJpbmhLeSA9IGZhbHNlO1xuICAgIHVzZVdvcmtmbG93QnV0dG9uPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgc2hvd0VkaXRMaW5rID0gdHJ1ZTtcbiAgICBzaG93QnV0dG9uVGh1SG9pID0gdHJ1ZTtcbiAgICBzaG93RmlsZU1hbmFnZXJGcm9tV2ZQcm9jZXNzID0gdHJ1ZTtcbiAgICBzaG93Q29uZmlybUV4cG9ydCA9IGZhbHNlO1xuICAgIHNob3dFZGl0TGlua09ubHlWaWV3ID0gZmFsc2U7XG5cbiAgICBwbGFjZWhvbGRlckNvbW1vblNlYXJjaCA9ICdU4burIGtow7NhJztcbiAgICB0b29sVGlwU2VhcmhCb3hDb21tb24gPSAnVMOsbSBraeG6v20gdGhlbyBjw6FjIHRyxrDhu51uZzogJztcbiAgICBtZFdpZHRoQ29tbW9uU2VhcmNoID0gMztcbiAgICB1c2VDb21tb25TZWFyY2ggPSBmYWxzZTtcbiAgICB1c2VDb21tb25GdWxsVGV4dFNlYXJjaCA9IHRydWU7XG4gICAgYXJyRnVsbFRleHRTZWFyY2g/OiBNb2RlbFNjaGVtYVtdID0gW107XG4gICAgaGlkZGVuU2VhcmNoID0gZmFsc2U7XG4gICAgaGlkZGVuQXV0aG9yaXplQnV0dG9uID0gZmFsc2U7XG4gICAgc3VmZml4QXV0aG9yaXplQ29kZSA9ICcnOyAvLyB0aMOqbSBo4bqtdSB04buRIG3DoyBjb2RlIHRyb25nIGNo4bupYyBuxINuZyBQaMOibiBxdXnhu4FuIG7DunQgKHBo4bulYyB24bulIGNhc2UgY3J1ZExpc3QgbsOgeSBu4bqxbSB0cm9uZyBtw6BuIGjDrG5oIHBvcHVwKVxuXG4gICAgaGlkZGVuSGVhZGVyID0gZmFsc2U7XG4gICAgaGlkZGVuUGFnZVNldHRpbmcgPSBmYWxzZTtcbiAgICBoaWRkZW5UZXh0UGFnZSA9IGZhbHNlO1xuICAgIGhpZGRlblRvb2xiYXIgPSBmYWxzZTtcbiAgICBoaWRkZW5CdXR0b25zID0gZmFsc2U7XG4gICAgaGlkZGVuQWR2YW5jZVNlYXJjaCA9IGZhbHNlO1xuICAgIGhpZGRlblNhdmVTZXR0aW5nID0gZmFsc2U7XG4gICAgaGlkZGVuU2V0dGluZyA9IGZhbHNlO1xuICAgIGhpZGRlblNldHRpbmdQZXJtaXNzaW9uID0gZmFsc2U7XG4gICAgaGlkZGVuU2V0dGluZ1dvcmtmbG93ID0gZmFsc2U7XG4gICAgaGlkZGVuUGFnZVRpdGxlID0gZmFsc2U7XG5cbiAgICBoaWRkZW5DaGVja2JveCA9IGZhbHNlO1xuICAgIGhpZGRlbk9yZGVyQ29sdW1uID0gZmFsc2U7XG4gICAgaGlkZGVuV29ya2Zsb3dDb2x1bW4gPSBmYWxzZTtcbiAgICBoaWRkZW5Xb3JrZmxvd0hpc3RvcnkgPSBmYWxzZTtcbiAgICBhbGxvd0ZpbHRlcldvcmtmbG93Q29sdW1uID0gZmFsc2U7XG4gICAgaGlkZGVuRnVuY3Rpb25Db2x1bW4gPSBmYWxzZTtcbiAgICBoaWRlblNvcnRDb2x1bW4gPSBmYWxzZTtcbiAgICBoaWRkZW5SZWZyZXNoID0gZmFsc2U7XG4gICAgaGlkZGVuRmlsdGVyUm93ID0gZmFsc2U7XG4gICAgaGlkZGVuVHJpbmhLeSA9IHRydWU7XG4gICAgaGlkZGVuU2VhcmNoQ3VzdG9tID0gZmFsc2U7XG4gICAgdXNlQmFzZVRyaW5oS3kgPSB0cnVlO1xuICAgIGRpc2FibGVTaGFyZSA9IHRydWU7XG4gICAgZGlzYWJsZVZpZXdXb3JrZmxvd0F0dGFjaCA9IGZhbHNlO1xuICAgIGhpZGRlbldvcmtmbG93Q29yZVN0YXR1cyA9IHRydWU7XG4gICAgcmVxdWlyZWRWYW5CYW5EaUFmdGVyVHJpbmhLeSA9IGZhbHNlO1xuICAgIGRpc2FibGVMYXp5TG9hZENvbW1vblNlYXJjaCA9IGZhbHNlO1xuICAgIGlzTGltaXROdW1iZXJPZkxpbmUgPSB0cnVlO1xuICAgIGN1c3RvbUdldERhdGEgPSBmYWxzZTtcblxuICAgIGdyb3VwQ29sdW1uPzogQ29sdW1uU2NoZW1hQmFzZTtcblxuICAgIHNob3dFeHBvcnRBbGwgPSBmYWxzZTtcbiAgICBzaG93RXhwb3J0U2VsZWN0ZWRJdGVtcyA9IHRydWU7XG4gICAgc2hvd0V4cG9ydFdvcmRTZWxlY3RlZEl0ZW1zID0gZmFsc2U7XG4gICAgZXhwb3J0QWxsTW9kZWw6IEV4cG9ydEFsbE1vZGUgPSBFeHBvcnRBbGxNb2RlLkF1dG9HZXREYXRhO1xuICAgIGV4cG9ydEl0ZW1zTW9kZTogRXhwb3J0SXRlbXNNb2RlID0gRXhwb3J0SXRlbXNNb2RlLkZyb21IdG1sO1xuXG4gICAgZW5hYmxlVmVyc2lvbiA9IGZhbHNlO1xuICAgIHNob3dWZXJzaW9uQnV0dG9uID0gZmFsc2U7XG4gICAgdmVyc2lvbk1vZGVsPzogeyBba2V5OiBzdHJpbmddOiBhbnk7IH0gPSB7fTtcbiAgICBzaG93SGlzdG9yeSA9IGZhbHNlO1xuICAgIGhpc3Rvcnk/OiBhbnk7XG5cbiAgICBjb2xvckZpbHRlckZpZWxkID0gJyc7XG4gICAgY29sb3JGaWx0ZXJUYWJsZT86IFJvd0NvbG9yT3B0aW9uW10gPSBbXTtcbiAgICBidXR0b25zUGVybWlzc2lvbkN1c3RvbT86IEJ1dHRvbkFjdGlvbltdID0gW107XG5cblxuICAgIGVudGl0eU1ldGFkYXRhU2V0dGluZz86IENydWRGb3JtU2V0dGluZyA9IG5ldyBDcnVkRm9ybVNldHRpbmcoKTtcblxuICAgIGZpZWxkU2VhcmNoVGV4dD86IHN0cmluZ1tdID0gW107XG4gICAgZmlsdGVyVGVtcGxhdGVBZHZzPzogRmlsdGVyW107XG5cbiAgICBmdW5jdGlvbjogQ3J1ZExpc3RDdXN0b21GdW5jdGlvbiA9IG5ldyBDcnVkTGlzdEN1c3RvbUZ1bmN0aW9uKCk7XG5cbiAgICBwb3B1cEhlYWRlcj8gPSAnJztcbiAgICBwb3B1cFNpemU/OiBQb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKCk7XG4gICAgbWFza0NsYXNzPzogc3RyaW5nO1xuXG4gICAgaGlkZGVuUmVvcmRlcj8gPSBmYWxzZTtcbiAgICByZW9yZGVyRmllbGQ/ID0gJ1RodVR1JztcbiAgICBlbmFibGVSZW9yZGVyUm93PyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQXV0byBnZW5lcmF0ZSBncmlkSW5mby5maWVsZHMgdXNpbmcgc2V0dGluZy5jb2xzICsgZGF0YUxpc3QuYWRkdGlvbmFsRmllbGRzXG4gICAgICogQGRhdGUgMTEvNC8yMDIyIC0gMjowNDozMSBQTVxuICAgICAqXG4gICAgICogQHR5cGUgez9ib29sZWFufVxuICAgICAqL1xuICAgIGF1dG9HZW5lcmF0ZVNlbGVjdEZpZWxkcz8gPSBmYWxzZTtcblxuICAgIG1vZGlmeVJvd0RhdGFGb3JUYXNrOiAocm93RGF0YSkgPT4gdm9pZCA9IChyb3dEYXRhKSA9PiAoe30pO1xuICAgIG1vZGlmeUl0ZW1UYXNrOiAobW9kZWxUYXNrLCByb3dEYXRhKSA9PiB2b2lkID0gKG1vZGVsVGFzaywgcm93RGF0YSkgPT4gKHt9KTtcbiAgICBnZXRDdXN0b21EYXRhVHJpbmhLeTogKHJvd0RhdGEpID0+IGFueSA9IChyb3dEYXRhKSA9PiAoe30pO1xuICAgIGdldExhYmVsQnV0dG9uVHJpbmhLeTogKHJvd0RhdGEpID0+IHN0cmluZyA9IChyb3dEYXRhKSA9PiAnVHLDrG5oIGvDvSc7XG4gICAgY2hlY2tSZWFkeVRvVHJpbmhLeTogKCkgPT4gYm9vbGVhbiA9ICgpID0+IHRydWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3RTZXR0aW5nKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFdvcmtmbG93Q29uZmlnQWR2YW5jZSB7XG4gICAgZ2V0V29ya2Zsb3dTZXR0aW5nOiAocm93RGF0YSkgPT4gV29ya2Zsb3dTZXR0aW5nTmV3O1xufVxuXG5leHBvcnQgY2xhc3MgQ3J1ZExpc3RDdXN0b21GdW5jdGlvbiB7XG4gICAgLy8gQ3VzdG9taXplXG4gICAgZ2V0U2VhcmNoQ29udHJvbD86IChmaWVsZDogc3RyaW5nKSA9PiBGb3JtU2NoZW1hQmFzZVtdID0gKGZpZWxkOiBzdHJpbmcpID0+IG51bGw7XG4gICAgLy8gQXN5bmMgZnVuY3Rpb25cbiAgICBtb2RpZnlBZHZhbmNlU2VhY2hNb2RlbD86IChkYXRhOiBBZHZhbmNlU2VhcmNoRGF0YSwgc2V0dGluZzogQWR2YW5jZVNlYXJjaFNldHRpbmcpID0+IFByb21pc2U8dm9pZD4gPSBhc3luYyAoZGF0YSkgPT4gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkTGlzdEN1c3RvbUZ1bmN0aW9uKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBlcnNvbmFsU2V0dGluZyB7XG4gICAgY29sdW1uU2V0dGluZz86IENvbHVtblNldHRpbmcgPSBuZXcgQ29sdW1uU2V0dGluZygpO1xuICAgIHBhZ2VTZXR0aW5nPzogUGFnZVNldHRpbmcgPSBuZXcgUGFnZVNldHRpbmcoKTtcbiAgICBjb2xvckZpbHRlckZpZWxkID0gJyc7XG4gICAgY29sb3JGaWx0ZXJUYWJsZT86IFJvd0NvbG9yT3B0aW9uW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQZXJzb25hbFNldHRpbmcpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3J1ZExpc3REYXRhIGV4dGVuZHMgQ3J1ZEJhc2Uge1xuICAgIGxvYWRpbmcgPSBmYWxzZTtcbiAgICBhZGp1c3RlZFBvc2l0aW9uTG9hZGluZyA9IGZhbHNlO1xuICAgIHJlYWR5ID0gdHJ1ZTtcbiAgICAvLyBiYXNlIHJlYWR5IGzDoCBjaOG7qWMgbsSDbmcga2nhu4NtIHRyYSByZWFkeSBj4bunYSByacOqbmcgdHJvbmcgYmFzZS4gayBnaeG7kW5nIHbhu5tpIHJlYWR5IOG7nyB0csOqblxuICAgIC8vIETDuW5nIMSR4buDIGtp4buDbSB0cmEgbuG6v3UgY8OzIHdvcmtmbG93IHRow6wgdOG6oW0gdGjhu51pIGNoxrBhIGNobyDhuqVuIHRow6ptIG3hu5tpIG7hur91IGNoxrBhIGxvYWQgeG9uZyBk4buvIGxp4buHdSBj4bqnbiB0aGnhur90XG4gICAgYmFzZVJlYWR5ID0gZmFsc2U7XG4gICAgZGF0YVNvdXJjZT86IGFueVtdID0gW107XG4gICAgLy8gxJDhu5FpIHbhu5tpIGxpc3QgZOG6oW5nIHRyZWUgdGjDrCByYXcgZGF0YXNvdXJjZSBsw6AgbGlzdCBkYXRhIGtoaSBjaMawYSB0w6FpIGPhuqV1IHRyw7pjIHRow6BuaCBk4buvIGxp4buHdSB0cmVlXG4gICAgYWxsRGF0YVNvdXJjZT86IHsgcmF3OiBhbnlbXSwgZGF0YTogYW55W107IH0gPSB7IHJhdzogW10sIGRhdGE6IFtdIH07XG4gICAgc2VsZWN0ZWRJdGVtcz86IGFueVtdID0gW107XG4gICAgc2VsZWN0ZWRJdGVtPzogYW55O1xuICAgIHNlbGVjdGVkSXRlbUxhc3Q/OiBhbnk7XG4gICAgc2VsZWN0ZWRJZD86IG51bWJlcjtcbiAgICB0b3RhbCA9IDA7XG4gICAgaXRlbURhdGE/OiBhbnk7XG4gICAgYWR2YW5jZURhdGE6IGFueSA9IHt9O1xuXG4gICAgLy8gQ8OhYyB0aHXhu5ljIHTDrW5oIGLhu5Ugc3VuZyBkbyBi4buLIGzhu5dpIGtoaSBwYWNrYWdlXG4gICAgc3VibWl0dGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8vIEVuZCBDw6FjIHRodeG7mWMgdMOtbmggYuG7lSBzdW5nIGRvIGLhu4sgbOG7l2kga2hpIHBhY2thZ2VcblxuICAgIGV4cGFuZGVkUm93S2V5cz86IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbjsgfSA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRMaXN0RGF0YSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbnRpdHlNZWRhdGFEYXRhU2V0dGluZyB7XG4gICAgZGF0YT86IGFueSA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEVudGl0eU1lZGF0YURhdGFTZXR0aW5nKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJvd0NvbG9yT3B0aW9uIHtcbiAgICBmaWx0ZXJWYWx1ZSA9ICcnO1xuICAgIGNvbXBhcmVUeXBlID0gJyc7XG4gICAgY29sb3IgPSAnJztcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBSb3dDb2xvck9wdGlvbikge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQYWdlU2V0dGluZyB7XG4gICAgcGFnZSA9IDE7XG4gICAgcGFnZVNpemUgPSAxNTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQYWdlU2V0dGluZykge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5TZXR0aW5nIHtcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xuICAgIHNvcnRGaWVsZD86IHN0cmluZztcbiAgICBzb3J0RGlyPzogLTEgfCAwIHwgMSB8IDIgPSAtMTtcbiAgICBncm91cEZpZWxkID0gJyc7XG4gICAgZ3JvdXBJbkNsaWVudD8gPSBmYWxzZTtcbiAgICBzaG93R3JvdXBTaXplOiBib29sZWFuID0gdHJ1ZTtcbiAgICBkZXRhaWxzPzogQ29sdW1uU2V0dGluZ0RldGFpbFtdID0gW107XG4gICAgY29sdW1uUmVvcmRlcj87XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29sdW1uU2V0dGluZykge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5TZXR0aW5nRGV0YWlsIHtcbiAgICBvcmRlcj86IG51bWJlciA9IDE7XG4gICAgY29sdW1uQ29kZT86IHN0cmluZztcbiAgICBjb2x1bW5OYW1lPzogc3RyaW5nO1xuICAgIHZpc2libGU/OiBib29sZWFuO1xuICAgIHRleHRBbGlnbj86IFRleHRBbGlnbjtcbiAgICB3aWR0aD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIENydWRGb3JtRGF0YSBleHRlbmRzIENydWRCYXNlIHtcbiAgICBkYXRhPzogYW55ID0ge307XG4gICAgc3VibWl0dGluZz8gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBUcuG6oW5nIHRow6FpIGPhu6dhIGZvcm0gxJFhbmcgxJHGsOG7o2MgbeG7nzogTMOgIGZvcm0gdGjDqm0gbeG7m2ksIGhheSBmb3JtIHPhu61hLCBoYXkgZm9ybSB4w7NhXG4gICAgICovXG4gICAgZm9ybVN0YXRlPzogRm9ybVN0YXRlID0gRm9ybVN0YXRlLkFERDtcbiAgICB3b3JrZmxvd0J1dHRvbnM/OiBhbnlbXTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkRm9ybURhdGEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3J1ZEZvcm1DdXN0b21GdW5jdGlvbiB7XG4gICAgLy8gQ3VzdG9taXplXG4gICAgbW9kaWZ5RGF0YUFmdGVyR2V0Q2FjaGU/OiAoZGF0YTogYW55KSA9PiB2b2lkID0gKGRhdGE6IGFueSkgPT4gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkTGlzdEN1c3RvbUZ1bmN0aW9uKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENydWRGb3JtU2V0dGluZyB7XG4gICAgZGlzYWJsZUNhY2hpbmcgPSBmYWxzZTtcbiAgICBoaWRkZW5UcmluaEt5ID0gdHJ1ZTtcbiAgICBzY2hlbWE/OiBGb3JtU2NoZW1hQmFzZVtdID0gW107XG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZTtcbiAgICBidWlsZEluU2NoZW1hPzogRm9ybUNvbnRyb2xCYXNlW10gPSBbXTtcbiAgICB1bmlxdWVGaWVsZD86IHN0cmluZ1tdIHwgc3RyaW5nW11bXSA9IFtdO1xuICAgIGZpZWxkRHJvcGRvd24/OiB7IFtrZXk6IHN0cmluZ106IERyb3Bkb3duQ29udHJvbFNjaGVtYTsgfSA9IHt9O1xuICAgIGZpZWxkTmVlZEdldFJlZj86IHsgW2tleTogc3RyaW5nXTogVGV4dENvbnRyb2xTY2hlbWE7IH0gPSB7fTtcbiAgICBkaXNwbGF5RmllbGQ/OiBzdHJpbmcgfCAoKGl0ZW0pID0+IHN0cmluZyk7XG4gICAgZmlyc3RGb2N1c0NvbnRyb2w/OiBzdHJpbmc7XG4gICAgZmlsdGVyQ2hlY2tFeGlzdEJ5VmVyc2lvbj86IEZpbHRlcltdO1xuICAgIGRlZmF1bHRGaWx0ZXJDaGVja0V4aXN0PzogRmlsdGVyW10gfCAoKCkgPT4gRmlsdGVyW10pO1xuICAgIGN1c3RvbVdvcmtmbG93Q29kZVRyaW5oS3k6IEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleSA9IEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleS5NQUNfRElOSDtcbiAgICBlbnRpdHlNZXRhZGF0YURhdGE/OiBDcnVkRm9ybURhdGE7XG4gICAgZW50aXR5TWV0YWRhdGFTZXR0aW5nPzogQ3J1ZEZvcm1TZXR0aW5nO1xuICAgIGZ1bmN0aW9uPzogQ3J1ZEZvcm1DdXN0b21GdW5jdGlvbiA9IG5ldyBDcnVkRm9ybUN1c3RvbUZ1bmN0aW9uKCk7XG4gICAgaGlkZGVuS3lTb1NpbUNhTmhhbj89IGZhbHNlO1xuICAgIGhpZGRlbkt5U29Vc2JDYU5oYW4/PSBmYWxzZTtcbiAgICBoaWRkZW5LeVNvVk5QVENBPz0gZmFsc2U7XG4gICAgaGlkZGVuS3lTb0RvblZpPz0gZmFsc2U7XG4gICAgaGlkZGVuS3lTb1NtYXJ0Q0E/PSBmYWxzZTtcbiAgICBoaWRkZW5CdXRQaGU/PSBmYWxzZTtcbiAgICBhcnJGaWVsZE11c3RWYWxpZGF0ZT86IHN0cmluZ1tdID0gW107XG4gICAgZ2V0Q3VzdG9tRGF0YVRyaW5oS3k6IChyb3dEYXRhKSA9PiBhbnkgPSAocm93RGF0YSkgPT4gKHt9KTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkRm9ybVNldHRpbmcpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWR2YW5jZVNlYXJjaERhdGEgZXh0ZW5kcyBDcnVkRm9ybURhdGEge1xuICAgIGluaXREYXRhPzogYW55ID0ge307XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQWR2YW5jZVNlYXJjaERhdGEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWR2YW5jZVNlYXJjaFNldHRpbmcgZXh0ZW5kcyBDcnVkRm9ybVNldHRpbmcge1xuICAgIGZpZWxkS2V5ID0gJ19rJztcbiAgICBlbnRpdHlQZXJtaXNzaW9uU2NoZW1hPzogRm9ybUNvbnRyb2xCYXNlW10gPSBbXTtcbiAgICBrZWVwSW5pdFNlYXJjaERhdGFOb3ROdWxsID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBBZHZhbmNlU2VhcmNoU2V0dGluZykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTY2hlbWFCYXNlIHtcbiAgICBmaWVsZD86IHN0cmluZztcbiAgICBmaWVsZEZpbHRlcj86IHN0cmluZztcbiAgICB1bmlxdWVGaWVsZD86IHN0cmluZztcbiAgICB0eXBlPzogJ2Jvb2xlYW4nIHwgJ2ludCcgfCAnZGVjaW1hbCcgfCAnZGF0ZXRpbWUnIHwgJ3N0cmluZycgPSAnc3RyaW5nJztcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBTY2hlbWFCYXNlKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1TY2hlbWFCYXNlIGV4dGVuZHMgU2NoZW1hQmFzZSB7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgZnVsbExhYmVsPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIG1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgbWVzc2FnZUNsYXNzPzogc3RyaW5nO1xuICAgIHNob3dMYWJlbD8gPSB0cnVlO1xuICAgIGdXaWR0aD8gPSAxMjtcbiAgICBtZFdpZHRoPyA9IDY7XG4gICAgcm93U3Bhbj8gPSAxO1xuICAgIHdpZHRoPzogc3RyaW5nO1xuICAgIGNsYXNzPyA9ICcnO1xuICAgIHN0eWxlPzogYW55ID0ge307XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIGhpZGRlbj8gPSBmYWxzZTtcbiAgICBoaWRkZW5DaGVjaz86IChyb290TW9kZWw6IGFueSwgY3VycmVudE5vZGU6IENvbnRyb2xUcmVlTm9kZSkgPT4gYm9vbGVhbjtcbiAgICBoaWRkZW5PblZpZXc/ID0gZmFsc2U7XG4gICAgdmlzaWJsZUluTGlzdD8gPSB0cnVlO1xuICAgIG9wZXJhdG9yPzogT3BlcmF0b3I7XG4gICAgZ3JvdXBDb2RlPyA9ICcnO1xuICAgIGRlZmF1bHRWYWx1ZT86IGFueTtcbiAgICBmaWVsZEFsaWFzPyA9ICcnO1xuICAgIGRhdGE/OiBhbnkgPSB7fTtcbiAgICBpc0h0bWxMYWJlbD8gPSBmYWxzZTtcbiAgICBpc0hvcml6b250YWxseUxhYmVsPyA9IGZhbHNlO1xuICAgIG9yZGVyPyA9IDA7XG4gICAgZXJyb3JMYWJlbD86IHN0cmluZztcbiAgICBzaG93VG9vbHRpcD8gPSB0cnVlO1xuICAgIHNob3dUb29sdGlwT25seT8gPSBmYWxzZTtcbiAgICB0b29sdGlwPzogYW55O1xuICAgIGdlbmVyYXRlVG9vbHRpcD86IChpdGVtKSA9PiBhbnk7XG5cbiAgICBhdXRvU2VhcmNoPyA9IHRydWU7IC8vIETDuW5nIGNobyBjb21tb25zZWFyY2g7XG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZvcm1TY2hlbWFCYXNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbnRhaW5lclNjaGVtYSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcbiAgICBjb250cm9sczogRm9ybVNjaGVtYUJhc2VbXTtcbiAgICBzaG93SW5Cb3g/ID0gdHJ1ZTtcbiAgICBib3hTdHlsZT86IGFueTtcbiAgICByZXF1aXJlZD8gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDb250YWluZXJTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRm9ybVNjaGVtYUJhc2VXaXRoU2VydmljZSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcbiAgICAvLyBVcmwgxJHhu4MgbOG6pXkgZOG7ryBsaeG7h3UgKioqIEtIw5RORyBT4busIEThu6RORyBUUk9ORyBDw4FDIENBU0UgUEjhu5QgQknhur5OLCBDSOG7iCBT4busIEThu6RORyDEkOG7kEkgVuG7mkkgRk9STSBLSOG6ok8gU8OBVCAqKipcbiAgICBzZXJ2aWNlVXJpPyA9ICcnO1xuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2UgfCBNYXN0ZXJEYXRhU2VydmljZTtcbiAgICByZWZGaWVsZHM/OiBSZWZGaWVsZFtdID0gW107XG4gICAgZ3JvdXBDb2RlPzogc3RyaW5nO1xuICAgIHZhbHVlRmllbGQ/ID0gJ2lkJztcbiAgICBkaXNwbGF5RmllbGQ/ID0gJ3Rlbic7XG4gICAgZGF0YVNvdXJjZT86IGFueVtdID0gW107XG5cbiAgICBpc1NlcnZlckxvYWQ/ID0gZmFsc2U7XG4gICAgc2VhcmNoRmllbGQ/OiBzdHJpbmdbXTtcblxuICAgIGlzVHJlZT8gPSBmYWxzZTtcbiAgICBpc1RyZWVCYXNlTW9kZWw/ID0gZmFsc2U7XG4gICAgZmllbGRUcmVlPzogc3RyaW5nO1xuICAgIHZhbHVlUGFyZW50Um9vdD86IGFueSA9IG51bGw7IC8vIEdpw6EgdHLhu4sgdHLGsOG7nW5nIFtmaWVsZFRyZWVdIGPhu6dhIGl0ZW0gdHJlZSByb290XG4gICAgZmllbGRQYXJlbnRUcmVlSXRlbT8gPSAnaWQnOyAvLyBUcsaw4budbmcgeMOhYyDEkeG7i25oIGLhuqNuIGdoaSBsw6AgYuG6o24gZ2hpIGNoYSBj4bunYSBi4bqjbiBnaGkgY29uXG4gICAgc2VsZWN0Q2hpbGRJdGVtPyA9IGZhbHNlOyAvLyBDw7Mgc2VsZWN0IGLhuqNuIGdoaSBjb24gbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcbiAgICBzZWxlY3REZXNjZW5kYW50PyA9IGZhbHNlOy8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiwgY2jDoXUgbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcblxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XG4gICAgc29ydHM/OiBTb3J0W10gPSBbXTtcbiAgICBzb3J0RmllbGQ/ID0gJyc7XG4gICAgc29ydERpcj86IDEgfCAtMSA9IDE7XG4gICAgZmllbGRQbHVzPyA9ICcnOyAvLyBEYW5oIHPDoWNoIG5o4buvbmcgdHLGsOG7nW5nIGLhu5Ugc3VuZyBj4bqnbiBs4bqleSB0aMOqbSBuZ2/DoGkgaWQsIHRlbjsgVsOtIGThu6UgLG1hXG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47IC8vIHR1bmd0cyB0aMOqbSBraeG7g3UgZOG7ryBsaeG7h3UgZGVmYXVsdEZpbHRlcnMgbMOgIHByb21pc2VcbiAgICBhZnRlckdldERhdGE/OiBGdW5jdGlvbjtcblxuICAgIGZ1bmNTZXREZWZhdWx0VmFsdWU/OiBGdW5jdGlvbjtcblxuICAgIGZpZWxkVmFsdWVQYXJlbnQ/ID0gJ3ZhbHVlJzsgLy8gVHLGsOG7nW5nIHPhu60gZOG7pW5nIMSR4buDIGzhuqV5IGThu68gbGnhu4d1IGzDoG0ga2jDs2EgdOG7qyBi4bqjbmcgY2hhIGPhu6dhIGl0ZW0gZHJvcCBkb3duIMSRxrDhu6NjIGNo4buNblxuXG4gICAgY2FsbGJhY2tEYXRhRmluaXNoPzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xuICAgIG1vZGlmeUZpbHRlcj86IEZ1bmN0aW9uO1xuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XG4gICAgZnVuY0NvbXBhcmU/OiAoaXRlbTogYW55LCB2YWx1ZSkgPT4gYm9vbGVhbiA9IChpdGVtLCB2YWx1ZSkgPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09IHZhbHVlO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZvcm1TY2hlbWFCYXNlV2l0aFNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGFiZWxTY2hlbWEgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZSB7XG4gICAgZm9yPyA9ICcnO1xuICAgIGlzSHRtbD8gPSBmYWxzZTtcbiAgICBtZFdpZHRoPyA9IDEyO1xuICAgIGluZGV4TGFiZWw/OiBudW1iZXI7XG4gICAgdGV4dD8gPSAnJztcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBMYWJlbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUaXRsZVNjaGVtYSBleHRlbmRzIExhYmVsU2NoZW1hIHtcbiAgICBjbGFzcz8gPSAndGl0bGUtZ3JvdXAgdGV4dC1ib2xkJztcbiAgICBtZFdpZHRoPyA9IDEyO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRpdGxlU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sQmFzZSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcbiAgICBfY29tcG9uZW50PzogYW55OyAvLyBDb21wb25lbnQgY+G7p2Egc2NoZW1hIGtoaSBraOG7n2kgdOG6oW9cbiAgICB1bmlxdWVGaWVsZD86IHN0cmluZzsgLy8gU+G7rSBk4bulbmcgdHJvbmcgdGFibGUgc2NoZW1hXG4gICAgYXV0b2ZvY3VzPyA9IGZhbHNlO1xuICAgIHZhbGlkYXRvcnM/OiBJVmFsaWRhdG9yW10gPSBbXTtcbiAgICBjb3JyZWN0b3JzPzogSUNvcnJlY3RvcltdID0gW107XG4gICAgcmVxdWlyZWQ/ID0gZmFsc2U7XG4gICAgc2hvd0ljb25SZXF1aXJlZD8gPSBmYWxzZTtcbiAgICBlbmFibGVDYWNoaW5nPyA9IGZhbHNlO1xuICAgIG9uQ2hhbmdlZD86IEZ1bmN0aW9uO1xuICAgIG9uS2V5VXA/OiBGdW5jdGlvbjtcbiAgICBvbkFmdGVyQ2hhbmdlZD86IEZ1bmN0aW9uO1xuICAgIG9uSW5pdD86IEZ1bmN0aW9uO1xuICAgIG9uUm93Tm9kZUZpbmlzaEluaXQ/OiBGdW5jdGlvbjtcbiAgICB0cmlnZ2VyTG9hZENoaWxkPzogRnVuY3Rpb247XG4gICAgaGFzT3BlcmF0b3JDYW5Cbz8gPSBmYWxzZTtcbiAgICBhZGRUb0dyaWRJbmZvPyA9IGZhbHNlO1xuICAgIGlzTGF6eUxvYWQ/ID0gZmFsc2U7XG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZvcm1Db250cm9sQmFzZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtQ29udHJvbEJhc2VXaXRoU2VydmljZSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XG4gICAgLyoqIENvcHkgdOG7qyBGb3JtU2NoZW1hQmFzZVdpdGhTZXJ2aWNlICovXG4gICAgLy8gVXJsIMSR4buDIGzhuqV5IGThu68gbGnhu4d1ICoqKiBLSMOUTkcgU+G7rCBE4bukTkcgVFJPTkcgQ8OBQyBDQVNFIFBI4buUIEJJ4bq+TiwgQ0jhu4ggU+G7rCBE4bukTkcgxJDhu5BJIFbhu5pJIEZPUk0gS0jhuqJPIFPDgVQgKioqXG4gICAgc2VydmljZVVyaT8gPSAnJztcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlIHwgTWFzdGVyRGF0YVNlcnZpY2U7XG4gICAgcmVmRmllbGRzPzogUmVmRmllbGRbXSA9IFtdO1xuICAgIGdyb3VwQ29kZT86IHN0cmluZztcbiAgICB2YWx1ZUZpZWxkPyA9ICdpZCc7XG4gICAgZGlzcGxheUZpZWxkPyA9ICd0ZW4nO1xuXG4gICAgaXNTZXJ2ZXJMb2FkPyA9IGZhbHNlO1xuICAgIHByZXZlbnRTZXJ2ZXJMb2FkT25Jbml0PyA9IGZhbHNlO1xuICAgIHNlYXJjaEZpZWxkPzogc3RyaW5nW107XG5cbiAgICBpc1RyZWU/ID0gZmFsc2U7XG4gICAgaXNUcmVlQmFzZU1vZGVsPyA9IGZhbHNlO1xuICAgIGZpZWxkVHJlZT86IHN0cmluZztcbiAgICB2YWx1ZVBhcmVudFJvb3Q/OiBhbnkgPSBudWxsOyAvLyBHacOhIHRy4buLIHRyxrDhu51uZyBbZmllbGRUcmVlXSBj4bunYSBpdGVtIHRyZWUgcm9vdFxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/ID0gJ2lkJzsgLy8gVHLGsOG7nW5nIHjDoWMgxJHhu4tuaCBi4bqjbiBnaGkgbMOgIGLhuqNuIGdoaSBjaGEgY+G7p2EgYuG6o24gZ2hpIGNvblxuICAgIGZpZWxkTWFQaGFuQ2FwPyA9ICdtYVBoYW5DYXAnOyAvLyBGaWVsZCBtw6MgcGjDom4gY+G6pXBcbiAgICBzZWxlY3RDaGlsZEl0ZW0/ID0gZmFsc2U7IC8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxuICAgIHNlbGVjdERlc2NlbmRhbnQ/ID0gZmFsc2U7Ly8gQ8OzIHNlbGVjdCBi4bqjbiBnaGkgY29uLCBjaMOhdSBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxuXG4gICAgcGFnZVNpemU/OiBudW1iZXIgPSAxNTsgLy8gRMO5bmcgY2hvIGRyb3Bkb3duIHNlcnZlciBsb2FkXG4gICAgcGx1c1VybD86IHN0cmluZztcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xuICAgIHNvcnRGaWVsZD8gPSAnJztcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcbiAgICBmaWVsZFBsdXM/ID0gJyc7IC8vIERhbmggc8OhY2ggbmjhu69uZyB0csaw4budbmcgYuG7lSBzdW5nIGPhuqduIGzhuqV5IHRow6ptIG5nb8OgaSBpZCwgdGVuOyBWw60gZOG7pSAsbWFcbiAgICBkZWZhdWx0RmlsdGVycz86IEZpbHRlcltdIHwgRnVuY3Rpb24gfCBQcm9taXNlPEZpbHRlcltdPjsgLy8gdHVuZ3RzIHRow6ptIGtp4buDdSBk4buvIGxp4buHdSBkZWZhdWx0RmlsdGVycyBsw6AgcHJvbWlzZVxuICAgIGZpbHRlcldoaWxlUHJvY2Vzcz86IEZpbHRlcltdIHwgRnVuY3Rpb24gfCBQcm9taXNlPEZpbHRlcltdPjsgLy8gdHVuZ3RzIHRow6ptIGtp4buDdSBk4buvIGxp4buHdSBkZWZhdWx0RmlsdGVycyBsw6AgcHJvbWlzZVxuICAgIGJpbmRpbmdGaWx0ZXJzPzogRmlsdGVyW107XG4gICAgYWZ0ZXJHZXREYXRhPzogRnVuY3Rpb247XG5cbiAgICBmdW5jU2V0RGVmYXVsdFZhbHVlPzogRnVuY3Rpb24gfCBQcm9taXNlPGFueT47XG5cbiAgICBwYXJlbnRGaWVsZD86IHN0cmluZzsgLy8gQ29sdW1uIHTGsMahbmcg4bupbmcgdHJvbmcgdGFibGUgc3FsIHNlcnZlci5cbiAgICBmaWVsZFZhbHVlUGFyZW50PyA9ICd2YWx1ZSc7IC8vIFRyxrDhu51uZyBz4butIGThu6VuZyDEkeG7gyBs4bqleSBk4buvIGxp4buHdSBsw6BtIGtow7NhIHThu6sgYuG6o25nIGNoYSBj4bunYSBpdGVtIGRyb3AgZG93biDEkcaw4bujYyBjaOG7jW5cblxuICAgIGNhbGxiYWNrRGF0YUZpbmlzaD86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcbiAgICBmaXJlQ2FsbEJhY2tJbnNpZGU/ID0gdHJ1ZTtcbiAgICBtb2RpZnlGaWx0ZXI/OiBGdW5jdGlvbiB8ICgoZmlsdGVyczogRmlsdGVyW10sIGNvbXBvbmVudD86IGFueSwgdHJlZU5vZGU/OiBDb250cm9sVHJlZU5vZGUpID0+IHZvaWQpO1xuXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcbiAgICBmdW5jR2V0VmFsdWU/OiAoaXRlbSkgPT4gYW55O1xuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcblxuICAgIC8qKiBFbmQgY29weSB04burIEZvcm1TY2hlbWFCYXNlV2l0aFNlcnZpY2UgKi9cblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGb3JtQ29udHJvbEJhc2VXaXRoU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZXh0Q29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XG4gICAgc2VsZWN0QWxsVGV4dD8gPSBmYWxzZTsgLy8gQ2jhu41uIHThuqV0IGPhuqMgdGV4dCBraGkgZm9jdXNcblxuICAgIHBsYWNlaG9sZGVyPyA9ICcnO1xuICAgIGRhdGFGb3JtYXQ/OiAndGV4dCcgfCAncGFzc3dvcmQnIHwgJ251bWJlcicgfCAnZW1haWwnIHwgJ3Bob25lJyB8ICdmYXgnIHwgJ21vbmV5JyB8ICdtb25leWludCcgfCAnYW1vdW50JyA9ICd0ZXh0JztcbiAgICBtYXhMZW5ndGg/OiBudW1iZXI7XG4gICAgbWluPyA9IDA7XG4gICAgbWF4PyA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xuICAgIGdyb3VwQ29kZT86IHN0cmluZztcbiAgICB2YWx1ZUZpZWxkPyA9ICdpZCc7XG4gICAgZGlzcGxheUZpZWxkPyA9ICd0ZW4nO1xuXG4gICAgcGx1c1VybD86IHN0cmluZztcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xuICAgIHNvcnRGaWVsZD8gPSAnJztcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcbiAgICBpc1JlYWRvbmx5PyA9IGZhbHNlO1xuICAgIGZpZWxkUGx1cz8gPSAnJzsgLy8gRGFuaCBzw6FjaCBuaOG7r25nIHRyxrDhu51uZyBi4buVIHN1bmcgY+G6p24gbOG6pXkgdGjDqm0gbmdvw6BpIGlkLCB0ZW47IFbDrSBk4bulICxtYVxuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRleHRDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgUmVmZXJlbmNlVGV4dENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIHBsYWNlaG9sZGVyPyA9ICcnO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlIHwgTWFzdGVyRGF0YVNlcnZpY2U7XG4gICAgZ3JvdXBDb2RlPzogc3RyaW5nO1xuICAgIHZhbHVlRmllbGQ/ID0gJ2lkJztcbiAgICBkaXNwbGF5RmllbGQ/ID0gJ3Rlbic7XG4gICAgZGF0YVNvdXJjZT86IGFueVtdO1xuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XG5cbiAgICBwbHVzVXJsPzogc3RyaW5nO1xuICAgIHNvcnRzPzogU29ydFtdID0gW107XG4gICAgc29ydEZpZWxkPyA9ICcnO1xuICAgIHNvcnREaXI/OiAxIHwgLTEgPSAxO1xuICAgIGZpZWxkUGx1cz8gPSAnJzsgLy8gRGFuaCBzw6FjaCBuaOG7r25nIHRyxrDhu51uZyBi4buVIHN1bmcgY+G6p24gbOG6pXkgdGjDqm0gbmdvw6BpIGlkLCB0ZW47IFbDrSBk4bulICxtYVxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBSZWZlcmVuY2VUZXh0Q29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZXh0Q29udHJvbFNjaGVtYVdpdGhTZXJ2aWNlIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlV2l0aFNlcnZpY2Uge1xuICAgIHBsYWNlaG9sZGVyPyA9ICcnO1xuICAgIGRhdGFGb3JtYXQ/OiAndGV4dCcgfCAnbnVtYmVyJyB8ICdlbWFpbCcgfCAncGhvbmUnIHwgJ2ZheCcgfCAnbW9uZXknIHwgJ21vbmV5aW50JyB8ICdhbW91bnQnID0gJ3RleHQnO1xuICAgIG1heExlbmd0aD86IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUZXh0Q29udHJvbFNjaGVtYVdpdGhTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1hc2tDb250cm9sU2NoZW1hIGV4dGVuZHMgVGV4dENvbnRyb2xTY2hlbWEge1xuICAgIG1hc2tUeXBlPzogJ2RlY2ltYWwnIHwgJ2ludCcgPSAnaW50JztcbiAgICBhdXRvRm9ybWF0PyA9IHRydWU7XG4gICAgbWluPyA9IDA7XG4gICAgbWF4PyA9IDk5OTk5OTk5OTk7XG4gICAgcHJlZml4PyA9ICcnO1xuICAgIHN1ZmZpeD8gPSAnJztcbiAgICBkZWNpbWFsUGxhY2VzPyA9IDI7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogTWFza0NvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTnVtYmVyUmFuZ2VDb250cm9sU2NoZW1hIGV4dGVuZHMgVGV4dENvbnRyb2xTY2hlbWEge1xuICAgIG1hc2tUeXBlPzogJ2RlY2ltYWwnIHwgJ2ludCc7XG4gICAgbWluPyA9IDA7XG4gICAgbWF4PyA9IDk5OTk5OTk5OTk7XG4gICAgcHJlZml4PyA9ICcnO1xuICAgIHN1ZmZpeD8gPSAnJztcbiAgICBkZWNpbWFsUGxhY2VzPyA9IDI7XG4gICAgLy8gU+G7rSBk4bulbmcgxJHhu4Mga2hhaSBiw6FvIG9wZXJhdG9yIGNobyBjb250cm9sIHRyb25nIHF1ZXJ5LWJ1aWxkZXIgdGhheSBjaG8gY8OhYyBvcGVyYXRvciBt4bq3YyDEkeG7i25oIMSRxrDhu6NjIHThuqFvIHThu6sgcXVlcnktYnVpbGRlclxuICAgIG9wZXJhdG9ycz86IGFueVtdO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRlVGltZUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIGFwcGVuZFRvPyA9ICdib2R5JztcbiAgICBwYW5lbENsYXNzPyA9ICcnO1xuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIHNob3dCdXR0b25CYXI/ID0gZmFsc2U7XG4gICAgc2hvd1RpbWU/ID0gZmFsc2U7XG4gICAgc2hvd0ljb24/ID0gdHJ1ZTtcbiAgICBmb3JtYXQ/OiAnbm9ybWFsJyB8ICdmcm9tTm93JyA9ICdub3JtYWwnO1xuICAgIHNob3dPbkZvY3VzPyA9IHRydWU7XG4gICAgbWluRGF0ZT86IERhdGUgPSBudWxsO1xuICAgIG1heERhdGU/OiBEYXRlID0gbnVsbDtcbiAgICB0aW1lT25seT8gPSBmYWxzZTtcbiAgICBkYXRlRm9ybWF0PyA9ICdkZC9tbS95eSc7XG4gICAgdmlldz86ICdkYXRlJyB8ICdtb250aCcgPSAnZGF0ZSc7XG4gICAgeWVhclJhbmdlPzogc3RyaW5nID0gJzE5NTA6MjA1MCc7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRGF0ZVRpbWVDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuc2hvd1RpbWUgPyAnZGQvTU0veXl5eSBoaDptbScgOiAnZGQvTU0veXl5eSc7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRlVGltZVJhbmdlQ29udHJvbFNjaGVtYSBleHRlbmRzIERhdGVUaW1lQ29udHJvbFNjaGVtYSB7XG4gICAgc2hvd0ljb24/ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRGF0ZVRpbWVDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVudGl0eVBpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2VXaXRoU2VydmljZSB7XG5cbiAgICAvLyAjUHJvcGVydHkgb3ZlcnJpZGVcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlO1xuICAgIC8vICNFbmQgcHJvcGVydHkgb3ZlcnJpZGVcblxuICAgIHJldHVyblR5cGU/OiAndmFsdWUnIHwgJ29iamVjdCcgPSAndmFsdWUnO1xuXG4gICAgbXVsdGlwbGU/ID0gdHJ1ZTtcbiAgICBsaW1pdD8gPSAxMDAwO1xuICAgIHBhZ2VTaXplT2ZMaXN0PzogbnVtYmVyO1xuICAgIHRpdGxlPyA9ICcgJztcbiAgICBjb2x1bW5zPzogRW50aXR5UGlja2VyQ29sdW1uW107XG4gICAgZmllbGRTZWFyY2hUZXh0Pzogc3RyaW5nW10gPSBbXTtcbiAgICBvcGVyYXRvckZpZWxkU2VhcmNoVGV4dD86IE9wZXJhdG9yLmNvbnRhaW4gfCBPcGVyYXRvci5lcXVhbCA9IE9wZXJhdG9yLmNvbnRhaW47XG4gICAgZGF0YUluaXQ/OiBhbnkgPSB7fTtcbiAgICBhZHZhbmNlU2VhcmNoTW9kZWw/OiBhbnkgPSB7fTtcbiAgICBoaWRkZW5DaGVja2JveD86IGJvb2xlYW4gPSB0cnVlO1xuICAgIG9uU2VhcmNoRm9ybUluaXRpYWxpemVkPzogRnVuY3Rpb247XG4gICAgb25Gb3JtRXZlbnQ/OiBGdW5jdGlvbjtcbiAgICBvbkRlbGV0aW5nPzogKHJvd0RhdGE6IGFueSkgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgICBvblNlbGVjdEVudGl0eT86IEZ1bmN0aW9uOyAvLyBu4bq/dSBmdW5jdGlvbiBraMOhYyBudWxsIHbDoCByZXR1cm4gdHJ1ZSBz4bq9IGNobyBwaMOpcCBt4bufIGRpYWxvZ1xuICAgIGFmdGVyQ29udGVudExlZnRJbml0PzogKGNydWRMaXN0OiBDcnVkTGlzdENvbXBvbmVudCkgPT4gdm9pZDsgLy8gU2F1IGtoaSBjw6FjIHRlbXBsYXRlIGNvbnRlbnQgaW5pdFxuICAgIGFmdGVyQ29udGVudFJpZ2h0SW5pdD86IChjcnVkTGlzdDogQ3J1ZExpc3RDb21wb25lbnQpID0+IHZvaWQ7IC8vIFNhdSBraGkgY8OhYyB0ZW1wbGF0ZSBjb250ZW50IGluaXRcbiAgICBhZnRlckdldERhdGE/OiAoc291cmNlczogYW55W10sIGVsZW1lbnQ6IEVudGl0eVBpY2tlckNvbXBvbmVudCkgPT4gdm9pZDtcbiAgICBhZnRlckdldERhdGFVblBpY2tlZD86IChzb3VyY2VzOiBhbnlbXSwgZWxlbWVudDogRW50aXR5UGlja2VyRGF0YUNvbXBvbmVudCB8IEVudGl0eVBpY2tlclRyZWVEYXRhQ29tcG9uZW50KSA9PiB2b2lkO1xuICAgIGFmdGVyR2V0RGF0YVBpY2tlZD86IChzb3VyY2VzOiBhbnlbXSwgZWxlbWVudDogRW50aXR5UGlja2VyU2VsZWN0ZWRDb21wb25lbnQgfCBFbnRpdHlQaWNrZXJUcmVlU2VsZWN0ZWRDb21wb25lbnQpID0+IHZvaWQ7XG5cbiAgICBiZWZvcmVSZW5kZXJEYXRhU291cmNlPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBFbnRpdHlQaWNrZXJDb21wb25lbnQpID0+IHZvaWQ7XG4gICAgYmVmb3JlUmVuZGVyRGF0YVNvdXJjZVVuUGlja2VkPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBFbnRpdHlQaWNrZXJEYXRhQ29tcG9uZW50IHwgRW50aXR5UGlja2VyVHJlZURhdGFDb21wb25lbnQpID0+IHZvaWQ7XG4gICAgYmVmb3JlUmVuZGVyRGF0YVNvdXJjZVBpY2tlZD86IChzb3VyY2VzOiBhbnlbXSwgZWxlbWVudDogRW50aXR5UGlja2VyU2VsZWN0ZWRDb21wb25lbnQgfCBFbnRpdHlQaWNrZXJUcmVlU2VsZWN0ZWRDb21wb25lbnQpID0+IHZvaWQ7XG4gICAgbW9kaWZ5RGF0YVNlbGVjdGVkPzogKHNvdXJjZSkgPT4gdm9pZDtcblxuICAgIC8vIEPDsyBz4butIGThu6VuZyBwbHVzVXJsIOG7nyBtw6BuIGjDrG5oIGNow61uaCBFbnRpdHlQaWNrZXIgaGF5IGtow7RuZy5cbiAgICB1c2VEZWZhdWx0UGx1c2xVcmxJbkxpc3Q/ID0gZmFsc2U7XG5cbiAgICAvLyBDw7Mgc+G7rSBk4bulbmcgZGVmYXVsdEZpbHRlciBraGkgdMOsbSBraeG6v20gZGFuaCBzw6FjaCDhu58gbcOgbiBow6xuaCBjaMOtbmggRW50aXR5UGlja2VyLlxuICAgIHVzZURlZmF1bHRGaWx0ZXJJbkxpc3Q/ID0gZmFsc2U7XG4gICAgaGlkZGVuQWR2YW5jZVNlYXJjaD8gPSBmYWxzZTtcbiAgICByZWFkT25seT8gPSBmYWxzZTtcbiAgICBpZ25vcmVXb3JrZmxvdz8gPSBmYWxzZTtcbiAgICByb3dCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuICAgIHJvd0J1dHRvbkJlZm9yZVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG4gICAgaGlkZGVuUGFnZVNldHRpbmc/ID0gZmFsc2U7XG4gICAgc2hvd0VkaXRMaW5rPyA9IHRydWU7XG4gICAgdGl0bGVVblBpY2tlZD8gPSAnRGFuaCBzw6FjaCBjw6FjIG3hu6VjIGNoxrBhIGNo4buNbic7XG4gICAgdGl0bGVQaWNrZWQ/ID0gJ0Rhbmggc8OhY2ggY8OhYyBt4bulYyDEkcOjIGNo4buNbic7XG4gICAgZmllbGRzUGlja2VkPyA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRW50aXR5UGlja2VyQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRW50aXR5UGlja2VyQ29udHJvbFNjaGVtYSB7XG4gICAgc3BsaXRjaGFyPzogc3RyaW5nO1xuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIGRhdGFUeXBlPzogRW51bUNvbnRyb2xQaWNrZXJUeXBlID0gRW51bUNvbnRyb2xQaWNrZXJUeXBlLlVTRVI7XG4gICAgYXBwZW5kVG8/ID0gJ2JvZHknO1xuICAgIG1vZGlmeUluaXRTZWFyY2hEYXRhPzogRnVuY3Rpb247IC8vIFPhu60gZOG7pW5nIMSR4buDIG1vZGlmeSBkYXRhIGPhu6dhIHBo4bqnbiBzZWFyY2gsIHRoxrDhu51uZyDEkeG7gyBzZXQgaW5pdCBkYXRhIGR5bmFtaWMgdGhlbyBuaHUgY+G6p3VcbiAgICBjYWxsQmFjaz86IHsgW2tleTogc3RyaW5nXTogRnVuY3Rpb247IH07XG4gICAgb25SZWFkeT86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcbiAgICBvbkFkanVzdGVkVmFsdWU/OiBGdW5jdGlvbjtcbiAgICBtb2RpZnlDb250cm9sPzogRnVuY3Rpb247IC8vIFPhu60gZOG7pW5nIMSR4buDIG1vZGlmeSBzY2hlbWEgYmFzZVxuICAgIG5lZWRDbG9uZT8gPSBmYWxzZTsgLy8gU+G7rSBk4bulbmcgdHJvbmcgdGFibGUgc2NoZW1hLCBraGkgZGF0YXNvdXJjZSBj4bunYSBt4buZdCBj4buZdCB0csOqbiBt4buXaSBkw7JuZyBsw6Aga2jDoWMgbmhhdSBj4bqnbiBzZXQgbmVlZENsb25lID0gdHJ1ZVxcXG4gICAgaXNDaGVja1dyaXRlVmFsdWU/ID0gZmFsc2U7XG4gICAgdXNlUGlja2VyPyA9IHRydWU7XG4gICAgaXNDYWNoaW5nPyA9IGZhbHNlOyAvLyBkw7luZyByacOqbmcgY2hvIGNhbkJvUGlja2VyXG4gICAgYWZ0ZXJHZXREYXRhRHJvcGRvd24/OiAoc291cmNlczogYW55W10sIGVsZW1lbnQ6IEF1dG9Db21wbGV0ZVBpY2tlckNvbXBvbmVudCkgPT4gdm9pZDtcbiAgICBsaW1pdFJvd0l0ZW0/ID0gZmFsc2U7XG4gICAgbWF4Um93SXRlbT8gPSAyO1xuICAgIGlzT3ZlcnJpZGVDb2x1bW5zPzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFdyYXBQaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSB7XG4gICAgZGF0YVR5cGU/OiBFbnVtQ29udHJvbFBpY2tlclR5cGUgPSBFbnVtQ29udHJvbFBpY2tlclR5cGUuVVNFUjtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBXcmFwUGlja2VyQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDdXN0b21Db250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICB0ZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgLy8gU+G7rSBk4bulbmcgxJHhu4Mga2hhaSBiw6FvIG9wZXJhdG9yIGNobyBjb250cm9sIHRyb25nIHF1ZXJ5LWJ1aWxkZXIgdGhheSBjaG8gY8OhYyBvcGVyYXRvciBt4bq3YyDEkeG7i25oIMSRxrDhu6NjIHThuqFvIHThu6sgcXVlcnktYnVpbGRlclxuICAgIG9wZXJhdG9ycz86IGFueVtdO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEN1c3RvbUNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29sb3JQaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICBlbmFibGVDYWNoaW5nPyA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29sb3JQaWNrZXJDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgU3BhbkNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIHNvdXJjZUZpZWxkPzogc3RyaW5nO1xuICAgIGlzaHRtbD8gPSBmYWxzZTtcbiAgICBlZGl0YWJsZT8gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBTcGFuQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2xvckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIHNvdXJjZUZpZWxkPzogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbG9yQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBLZXlWYWx1ZUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBLZXlWYWx1ZUNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW1hZ2VVcGxvYWRlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIGlzQXZhdGFyPzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIG11bHRpcGxlPzogYm9vbGVhbiA9IHRydWU7XG4gICAgbG9hZEJ5RW50aXR5S2V5PzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGVudGl0eUtleT86IHN0cmluZztcbiAgICB0ZW1wbGF0ZUl0ZW0/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHRlbXBsYXRlSXRlbXM/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEltYWdlVXBsb2FkZXJDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZpbGVNYW5hZ2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XG4gICAgLy8gZW1pdCBldmVudCBraGkgY2jhu41uIG3hu5l0IHJvdyB0cm9uZyBmaWxlIG1hbmFnZXJcbiAgICBvblNlbGVjdGVkPzogRnVuY3Rpb24gPSAoKSA9PiB7XG4gICAgfTtcbiAgICBtZFdpZHRoPyA9IDEyO1xuICAgIC8qKlxuICAgICAqIMSQ4buLbmggZOG6oW5nIGZpbGUgY29udHJvbCBz4bq9IG5o4bqtbiwgZOG6oW5nIGNodeG7l2kgY8OhY2ggbmhhdSBi4bufaSBk4bqldSAnLCdcbiAgICAgKiBz4bq9IG92ZXJyaWRlIGFjY2VwdEZpbGVUeXBlcy5cbiAgICAgKiBWRDogJy5kb2MsLmRvY3gsLnBkZidcbiAgICAgKi9cbiAgICBhY2NlcHQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogRmxhZyBkZSBiaWV0IGZpbGUgdXBsb2FkIG5oYW4gbmh1bmcgbG9haSBmaWxlIG5hby5cbiAgICAgKiBWRDogRmlsZVR5cGVGbGFnLkFVRElPIHwgRmlsZVR5cGVGbGFnLlZJREVPXG4gICAgICovXG4gICAgYWNjZXB0RmlsZVR5cGVzPzogRmlsZVR5cGVGbGFnID0gRmlsZVR5cGVGbGFnLlZJREVPIHwgRmlsZVR5cGVGbGFnLklNQUdFIHwgRmlsZVR5cGVGbGFnLkRPQyB8IEZpbGVUeXBlRmxhZy5BVURJTyB8IEZpbGVUeXBlRmxhZy5DT01QUkVTU0VEO1xuICAgIG1heEZpbGVTaXplPyA9IDEwMDAwMDAwMDtcbiAgICBpbnZhbGlkRmlsZVNpemVNZXNzYWdlU3VtbWFyeT8gPSAnezB9OiBRdcOhIGR1bmcgbMaw4bujbmcgZmlsZSBjaG8gcGjDqXAsICc7XG4gICAgaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbD8gPSAnZHVuZyBsxrDhu6NuZyB04buRaSDEkWEgbMOgIHswfS4nO1xuICAgIGludmFsaWRGaWxlVHlwZU1lc3NhZ2VTdW1tYXJ5PyA9ICd7MH06IEtow7RuZyDEkcO6bmcgxJHhu4tuaCBk4bqhbmcgZmlsZSwgJztcbiAgICBpbnZhbGlkRmlsZVR5cGVNZXNzYWdlRGV0YWlsPyA9ICfEkeG7i25oIGThuqFuZyBmaWxlIGNobyBwaMOpcDogezB9Lic7XG4gICAgaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VTdW1tYXJ5PyA9ICdRdcOhIHPhu5EgbMaw4bujbmcgZmlsZSBjaG8gcGjDqXAsICc7XG4gICAgaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VEZXRhaWw/ID0gJ3Thu5FpIMSRYSB7MH0gZmlsZS4nO1xuICAgIG1vZGU/OiBGaWxlTWFuYWdlck1vZGUgfCBGaWxlVXBsb2FkTW9kZSA9IEZpbGVNYW5hZ2VyTW9kZS5tdWx0aXBsZTtcbiAgICBsYXlvdXQ/OiBFbnVtRmlsZUxheW91dCA9IEVudW1GaWxlTGF5b3V0LkxJU1Q7XG4gICAgcmVhZG9ubHk/ID0gZmFsc2U7XG4gICAgaGlkZGVuUGFnZVNldHRpbmc/ID0gZmFsc2U7XG5cbiAgICAvLyBTZXJ2aWNlIGTDuW5nIMSR4buDIGzhuqV5IGRhdGFzb3VyY2UgY+G7p2Egbmhp4buBdSBjb250cm9sIG3hu5l0IGzhuqduLlxuICAgIGZpbGVEYXRhU2VydmljZT86IEZpbGVEYXRhU2VydmljZTtcblxuICAgIC8vIELhu5kgMyBrZXkgxJHhu4MgbOG6pXkgdGjGsCBt4bulYyBn4buRYy5cbiAgICBzZXJ2aWNlQ29kZT86IHN0cmluZztcbiAgICBlbnRpdHk/OiBzdHJpbmc7XG4gICAgZW50aXR5S2V5Pzogc3RyaW5nO1xuICAgIC8vIFRyxrDhu51uZyBo4bujcCDhu58gdHJvbmcgZm9ybSwgZMO5bmcgdHLGsOG7nW5nIG7DoHkgxJHhu4MgbOG6pXlcbiAgICAvLyBlbnRpdHlLZXkgdOG7qyBtb2RlbC5kYXRhIHRoYXkgdsOsIHRydXnhu4FuIHbDoG8gZW50aXR5S2V5XG4gICAgZW50aXR5S2V5RmllbGQ/ID0gJ2lkJztcbiAgICByb290Rm9sZGVySWQ/OiBzdHJpbmc7IC8vIGNobyB0csaw4budbmcgaOG7o3AgdOG6oW8gZm9sZGVyIGLDqm4gbmdvw6BpIGNvbXBvbmVudFxuXG4gICAgLy8gVMOqbiB0aMawIG3hu6VjIGfhu5FjIGtoaSBoaeG7g24gdGjhu4sgdHLDqm4gYnJlYWRjcnVtYnMuXG4gICAgcm9vdEZvbGRlck5hbWU/OiBzdHJpbmc7XG5cbiAgICBkYXRhS3lTb0RvblZpPzogRnVuY3Rpb247XG5cbiAgICBpblRhaUxpZXU/ID0gZmFsc2U7XG4gICAgaW5UYWlMaWV1Q2h1bmc/ID0gZmFsc2U7XG4gICAgY29weVRvRm9sZGVySWQ/ID0gJyc7XG4gICAgbXVsdGlwbGU/ID0gdHJ1ZTtcbiAgICB1cGxvYWRPbmx5PyA9IGZhbHNlO1xuICAgIHVzZUJyZWFkY3J1bWJzPyA9IHRydWU7XG4gICAgdXNlU2lnbmF0dXJlPyA9IHRydWU7XG4gICAgbXVsdGlFbnRpdHlLZXk/ID0gZmFsc2U7IC8vIGpvaW4gZW50aXR5S2V5IHRvIHN0cmluZyBzZXBhcmF0ZWQgYnkgLFxuICAgIGZpbGVQaWNrZXJTZXR0aW5nPzogRmlsZVBpY2tlclNldHRpbmc7XG4gICAgc2hvd0RlbGV0ZT8gPSB0cnVlO1xuICAgIGhpZGRlbkNyZWF0ZUZvbGRlcj8gPSBmYWxzZTtcbiAgICBpc1B1YmxpYz86IGJvb2xlYW47XG4gICAgbm9GaWxlTWVzc2FnZT86IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGaWxlTWFuYWdlckNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGaWxlTWFuYWdlckNvbnRyb2xTY2hlbWEge1xuICAgIG1vZGU/ID0gRmlsZVVwbG9hZE1vZGUudXNpbmdTZXJ2aWNlRmlsZTtcbiAgICBtZFdpZHRoPyA9IDY7XG4gICAgc2hhcmVkRm9sZGVyVHlwZT86IFNoYXJlZEZvbGRlclR5cGUgPSBTaGFyZWRGb2xkZXJUeXBlLlRlbXB0O1xuXG4gICAgaGlkZGVuQnV0dG9ucz8gPSBmYWxzZTtcbiAgICBkaXNhYmxlZD8gPSBmYWxzZTtcbiAgICByZWFkb25seT8gPSBmYWxzZTtcbiAgICBhdXRvU2F2ZWQ/ID0gdHJ1ZTtcblxuICAgIGVuYWJsZVNjYW4/ID0gZmFsc2U7XG4gICAgZXh0cmFjdFppcEZpbGU/ID0gZmFsc2U7XG4gICAgZW5hYmxlRHJpdmVGaWxlPyA9IGZhbHNlO1xuXG4gICAgc2hvd0Rvd25sb2FkRmlsZT8gPSB0cnVlO1xuICAgIHNob3dEZWxldGVGaWxlPyA9IHRydWU7XG4gICAgc2hvd1ByaW50RmlsZT8gPSB0cnVlO1xuICAgIG1heEZpbGVTaXplPyA9IDEwMDAwMDAwMDsgLy8gMTAwIE1CXG4gICAgaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnk/ID0gJ3swfTogUXXDoSBkdW5nIGzGsOG7o25nIGZpbGUgY2hvIHBow6lwLCAnO1xuICAgIGludmFsaWRGaWxlU2l6ZU1lc3NhZ2VEZXRhaWw/ID0gJ2R1bmcgbMaw4bujbmcgdOG7kWkgxJFhIGzDoCB7MH0uJztcbiAgICBpbnZhbGlkRmlsZVR5cGVNZXNzYWdlU3VtbWFyeT8gPSAnezB9OiBLaMO0bmcgxJHDum5nIMSR4buLbmggZOG6oW5nIGZpbGUsICc7XG4gICAgaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbD8gPSAnxJHhu4tuaCBk4bqhbmcgZmlsZSBjaG8gcGjDqXA6IHswfS4nO1xuICAgIGludmFsaWRGaWxlTGltaXRNZXNzYWdlU3VtbWFyeT8gPSAnUXXDoSBz4buRIGzGsOG7o25nIGZpbGUgY2hvIHBow6lwLCAnO1xuICAgIGludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsPyA9ICd04buRaSDEkWEgezB9IGZpbGUuJztcblxuICAgIG9uUmVtb3ZlPzogRnVuY3Rpb247XG4gICAgaGFzRmlsZT8gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGaWxlVXBsb2FkQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN3aXRjaENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBTd2l0Y2hDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENoZWNrYm94Q29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XG4gICAgZW5hYmxlQ2FjaGluZz8gPSB0cnVlO1xuICAgIGhpZGRlbkxhYmVsPyA9IGZhbHNlOyAvLyBTZXQgPSB0cnVlIGNo4bunIHnhur91IGtoaSBkw7luZyB0cm9uZyB0YWJsZSBzY2hlbWEgxJHhu4Mg4bqpbiBsYWJlbCDEkWksIHbDrCBsYWJlbCDEkcOjIGPDsyB0csOqbiB0acOqdSDEkeG7gSBj4buZdFxuICAgIGRlZmF1bHRWYWx1ZT8gPSBmYWxzZTtcbiAgICBkaXNwbGF5TGFiZWw/ID0gJyc7XG4gICAgaXNDdXN0b21MYWJlbD8gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDaGVja2JveENvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcbiAgICBzaG93TGFiZWw/ID0gZmFsc2U7XG4gICAgYnRDbGFzcz8gPSAncC1idXR0b24tdGV4dCc7XG4gICAgaWNvbj87XG4gICAgYnRTdHlsZT8gPSB7IHdpZHRoOiAnYXV0bycgfTtcbiAgICBvbkNsaWNrPzogRnVuY3Rpb247XG4gICAgYnV0dG9uVGV4dD86IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBCdXR0b25Db250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJ1dHRvblRleHQgPSB0aGlzLmxhYmVsO1xuICAgICAgICB0aGlzLmxhYmVsID0gJyc7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybVNjaGVtYUJhc2Uge1xuICAgIHRlbXBsYXRlOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGVtcGxhdGVDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRleHRBcmVhQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XG4gICAgcm93cz8gPSA1O1xuICAgIHBsYWNlaG9sZGVyPyA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRleHRBcmVhQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVc2VyUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZVdpdGhTZXJ2aWNlIHtcbiAgICBhcHBlbmRUbz8gPSAnYm9keSc7XG4gICAgbXVsdGlwbGU/ID0gdHJ1ZTtcbiAgICB1c2VyVHlwZT8gPSBVc2VyVHlwZS5DYW5CbztcbiAgICBsaW1pdD8gPSAyMDsgLy8gR2nhu5tpIGjhuqFuIHPhu5EgbmfGsOG7nWkgZMO5bmcgdOG7kWkgxJFhIMSRxrDhu6NjIHBpY2tcbiAgICB0aXRsZT8gPSAnQ2jhu41uIG5nxrDhu51pIGTDuW5nJztcbiAgICBkZWZhdWx0RmlsdGVycz86IEZpbHRlcltdIHwgRnVuY3Rpb24gfCBQcm9taXNlPEZpbHRlcltdPjtcbiAgICBmaWx0ZXJXaGlsZVByb2Nlc3M/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47XG4gICAgZW5hYmxlQ2FjaGluZz8gPSB0cnVlO1xuICAgIHBhcmVudE9yZ0NvZGU/OiBzdHJpbmc7XG4gICAgcGxhY2Vob2xkZXI/ID0gJyc7XG4gICAgbGF6eUxvYWRPcmdhbml6YXRpb24/ID0gZmFsc2U7XG4gICAgdmFsdWVGaWVsZD8gPSAnaWQnO1xuICAgIGRpc3BsYXlGaWVsZD8gPSAnZnVsbE5hbWVOZXcnO1xuICAgIGZpZWxkUGx1cz8gPSAnJztcbiAgICBwbHVzVXJsPzogc3RyaW5nO1xuICAgIHJldHVyblR5cGU/OiAndmFsdWUnIHwgJ29iamVjdCcgPSAndmFsdWUnO1xuICAgIHBhZ2VTaXplPzogbnVtYmVyO1xuICAgIGdldERpc3BsYXlOYW1lPyA9IGZhbHNlO1xuICAgIGZpZWxkU2VhcmNoVGV4dD86IHN0cmluZ1tdID0gW107XG4gICAgb3BlcmF0b3JGaWVsZFNlYXJjaFRleHQ/OiBPcGVyYXRvci5jb250YWluIHwgT3BlcmF0b3IuZXF1YWwgPSBPcGVyYXRvci5jb250YWluO1xuICAgIGNvbHVtbnM/OiBFbnRpdHlQaWNrZXJDb2x1bW5bXTtcbiAgICB1c2VQaWNrZXI/ID0gdHJ1ZTtcbiAgICBoaWRkZW5Db2xzPzogc3RyaW5nW10gPSBbXTtcbiAgICBmb3JtU3RhdGU/OiBGb3JtU3RhdGUgPSBGb3JtU3RhdGUuQUREO1xuICAgIG9uUmVhZHk/OiAoZXZ0OiBFdmVudERhdGEpID0+IHZvaWQ7XG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XG4gICAgYWZ0ZXJDb250ZW50TGVmdEluaXQ/OiAoY3J1ZExpc3Q6IENydWRMaXN0Q29tcG9uZW50KSA9PiB2b2lkOyAvLyBTYXUga2hpIGPDoWMgdGVtcGxhdGUgY29udGVudCBpbml0XG4gICAgYWZ0ZXJDb250ZW50UmlnaHRJbml0PzogKGNydWRMaXN0OiBDcnVkTGlzdENvbXBvbmVudCkgPT4gdm9pZDsgLy8gU2F1IGtoaSBjw6FjIHRlbXBsYXRlIGNvbnRlbnQgaW5pdFxuICAgIGFmdGVyR2V0RGF0YT86IChzb3VyY2VzOiBhbnlbXSwgZWxlbWVudDogRW50aXR5UGlja2VyQ29tcG9uZW50KSA9PiB2b2lkO1xuICAgIGFmdGVyR2V0RGF0YVVuUGlja2VkPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBFbnRpdHlQaWNrZXJEYXRhQ29tcG9uZW50IHwgRW50aXR5UGlja2VyVHJlZURhdGFDb21wb25lbnQpID0+IHZvaWQ7XG4gICAgYWZ0ZXJHZXREYXRhUGlja2VkPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBFbnRpdHlQaWNrZXJTZWxlY3RlZENvbXBvbmVudCB8IEVudGl0eVBpY2tlclRyZWVTZWxlY3RlZENvbXBvbmVudCkgPT4gdm9pZDtcbiAgICBtb2RpZnlEYXRhU2VsZWN0ZWQ/OiAoc291cmNlKSA9PiB2b2lkO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFVzZXJQaWNrZXJDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvQ2F1VG9DaHVjUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XG4gICAgYXBwZW5kVG8/ID0gJ2JvZHknO1xuICAgIG11bHRpcGxlPyA9IHRydWU7XG4gICAgbGltaXQ/ID0gMjA7IC8vIEdp4bubaSBo4bqhbiBz4buRIGLhuqNuIGdoaSB04buRaSDEkWEgxJHGsOG7o2MgcGlja1xuICAgIHRpdGxlPyA9ICdDaOG7jW4gxJHGoW4gduG7iyc7XG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcgPSAnJztcbiAgICBkZWZhdWx0RmlsdGVycz86IEZpbHRlcltdIHwgRnVuY3Rpb24gfCBQcm9taXNlPEZpbHRlcltdPjtcbiAgICBlbmFibGVDYWNoaW5nPyA9IHRydWU7XG4gICAgdmFsdWVGaWVsZD8gPSAnaWQnO1xuICAgIGRpc3BsYXlGaWVsZD8gPSAndGVuJztcbiAgICBmaWVsZFBsdXM/ID0gJyc7XG4gICAgcGx1c1VybD86IHN0cmluZztcbiAgICBpc1RyZWU/OiBib29sZWFuID0gZmFsc2U7XG4gICAgbW9kaWZ5RmlsdGVyPzogRnVuY3Rpb24gfCAoKGZpbHRlcnM6IEZpbHRlcltdLCBjb21wb25lbnQ/OiBhbnksIHRyZWVOb2RlPzogQ29udHJvbFRyZWVOb2RlKSA9PiB2b2lkKTtcblxuICAgIG9uUmVhZHk/OiAoZXZ0OiBFdmVudERhdGEpID0+IHZvaWQ7XG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29DYXVUb0NodWNQaWNrZXJDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvQ2F1VG9DaHVjUGlja2VyQ29udHJvbFNjaGVtYU5ldyBleHRlbmRzIENvQ2F1VG9DaHVjUGlja2VyQ29udHJvbFNjaGVtYSB7XG4gICAgaXNUcmVlPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvQ2F1VG9DaHVjUGlja2VyQ29udHJvbFNjaGVtYU5ldykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcmdhbml6YXRpb25QaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICBmaWx0ZXI/ID0gdHJ1ZTtcbiAgICBtdWx0aXBsZT8gPSB0cnVlO1xuICAgIHBhcmVudE9yZ0lkPzogbnVtYmVyO1xuICAgIHBhcmVudE9yZ0NvZGU/OiBzdHJpbmc7XG4gICAgZW5hYmxlQ2FjaGluZz8gPSB0cnVlO1xuICAgIGlzVXNpbmdJZD8gPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IE9yZ2FuaXphdGlvblBpY2tlckNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29DYXVUb0NodWNDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICBmaWx0ZXI/ID0gdHJ1ZTtcbiAgICBtdWx0aXBsZT8gPSB0cnVlO1xuICAgIHBhcmVudE9yZ0lkPzogbnVtYmVyO1xuICAgIHBhcmVudE9yZ0NvZGU/OiBzdHJpbmc7XG4gICAgZW5hYmxlQ2FjaGluZz8gPSB0cnVlO1xuICAgIGlzVXNpbmdJZD8gPSB0cnVlO1xuICAgIGRpc2FibGVkUGFyZW50SXRlbT8gPSB0cnVlO1xuICAgIHJvb3RQYXJlbnRJZD86IHN0cmluZyA9IG51bGw7XG4gICAgZGlzYWJsZWQ/ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29DYXVUb0NodWNDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVkaXRvckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIG1vZGU/OiAnYmFzaWMnIHwgJ21lZGl1bScgfCAnZnVsbCcgfCAnc2ltcGxlJyA9ICdiYXNpYyc7XG4gICAgaGVpZ2h0PyA9IDI1MDtcbiAgICBpbml0PzogYW55O1xuICAgIGxhbmd1YWdlQ29kZT86ICd2aScgfCAnZW4nO1xuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nID0gJyc7XG4gICAgaGlkZGVuVG9vbGJhcj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBoaWRkZW5NZW51YmFyPzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGlzRnVsbFBhZ2U/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRWRpdG9yQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZVdpdGhTZXJ2aWNlIHtcbiAgICB2YWx1ZUZpZWxkPyA9ICdpZCc7XG4gICAgZGlzcGxheUZpZWxkPyA9ICd0ZW4nO1xuICAgIHJldHVyblR5cGU/OiAndmFsdWUnIHwgJ29iamVjdCcgPSAndmFsdWUnO1xuICAgIGRhdGFTb3VyY2U/OiBhbnkgfCBGdW5jdGlvbjtcbiAgICAvLyBT4butIGThu6VuZyDEkeG7gyBraGFpIGLDoW8gb3BlcmF0b3IgY2hvIGNvbnRyb2wgdHJvbmcgcXVlcnktYnVpbGRlciB0aGF5IGNobyBjw6FjIG9wZXJhdG9yIG3hurdjIMSR4buLbmggxJHGsOG7o2MgdOG6oW8gdOG7qyBxdWVyeS1idWlsZGVyXG4gICAgb3BlcmF0b3JzPzogYW55W107XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRGF0YVNvdXJjZUNvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db250cm9sU2NoZW1hIGV4dGVuZHMgRGF0YVNvdXJjZUNvbnRyb2xTY2hlbWEge1xuICAgIGFwcGVuZFRvPyA9ICdib2R5JztcbiAgICBwYW5lbENsYXNzPyA9ICcnO1xuICAgIHBsYWNlaG9sZGVyPyA9ICdDaOG7jW4nO1xuICAgIHNlbGVjdGVkSXRlbXNMYWJlbD8gPSAnxJDDoyBjaOG7jW4gezB9IG3hu6VjJztcbiAgICBzZWxlY3RlZEFsbEl0ZW1MYWJlbD8gPSAnxJDDoyBjaOG7jW4gdOG6pXQgY+G6oyc7XG4gICAgZmlsdGVyUGxhY2Vob2xkZXI/ID0gJ05o4bqtcCB0w6xtIGtp4bq/bSc7XG4gICAgc2VydmVyTG9hZE1lc3NhZ2U/ID0gJ0Thu68gbGnhu4d1IHPhur0gxJHGsOG7o2MgbMOgbSBt4bubaSBraGkgdMOsbSBraeG6v20nO1xuICAgIHNob3dDbGVhcj8gPSB0cnVlO1xuICAgIGZpbHRlcj8gPSB0cnVlO1xuICAgIG11bHRpcGxlPyA9IGZhbHNlO1xuICAgIG1heFNlbGVjdGVkTGFiZWxzPyA9IDU7XG4gICAgbWF4SXRlbURpc3BsYXk/ID0gNTA7XG4gICAgdmlydHVhbFNjcm9sbD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBmaXRQYW5lbD86IGJvb2xlYW4gPSB0cnVlO1xuICAgIGVuYWJsZUNhY2hpbmc/ID0gdHJ1ZTtcbiAgICBuZWVkQ2xvbmU/ID0gZmFsc2U7IC8vIFPhu60gZOG7pW5nIHRyb25nIHRhYmxlIHNjaGVtYSwga2hpIGRhdGFzb3VyY2UgY+G7p2EgbeG7mXQgY+G7mXQgdHLDqm4gbeG7l2kgZMOybmcgbMOgIGtow6FjIG5oYXUgY+G6p24gc2V0IG5lZWRDbG9uZSA9IHRydWVcbiAgICB0ZW1wbGF0ZUl0ZW0/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHRlbXBsYXRlU2VsZWN0ZWRJdGVtPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBxdWlja0FkZD8gPSBmYWxzZTtcbiAgICBjb2xzPzogRm9ybVNjaGVtYUJhc2VbXTtcbiAgICBxdWlja0FkZFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBpbml0RGF0YT86IEtleVZhbHVlVHlwZSB8IEZ1bmN0aW9uID0ge307XG4gICAgZGVmYXVsdEluZGV4PyA9IC0xO1xuICAgIHBvcHVwU2l6ZT86IFBvcHVwU2l6ZSA9IG5ldyBQb3B1cFNpemUoeyB3aWR0aDogNzUwLCBoZWlnaHQ6IDQwMCB9KTtcbiAgICBpbnNlcnRQbHVzVXJsPyA9ICcnO1xuXG4gICAgbG9hZEluRmlyc3REaXNwbGF5PyA9IHRydWU7XG4gICAgYXV0b0dldERhdGE/ID0gdHJ1ZTtcbiAgICBpc0FsbG93RGlzYWJsZWQ/ID0gdHJ1ZTtcblxuICAgIHZhbHVlRmllbGQ/ID0gJ2lkJztcbiAgICBkaXNwbGF5RmllbGQ/ID0gJ3Rlbic7XG5cbiAgICBhdXRvRGlzcGxheUZpcnN0PyA9IGZhbHNlO1xuICAgIG5vdEluQ3J1ZEZvcm0/ID0gZmFsc2U7XG4gICAgc2VhcmNoTXVsdGlwbGU/ID0gdHJ1ZTtcbiAgICBkaXNhYmxlRGlzcGxheUZpZWxkU2VydmVyU2VhcmNoPyA9IGZhbHNlO1xuXG4gICAgbG9hZE9uSW5pdD8gPSBmYWxzZTtcbiAgICBpc0xhenlMb2FkPyA9IGZhbHNlO1xuICAgIGFsbG93TG9hZERhdGFXaGVuUGFyZW50TnVsbD8gPSBmYWxzZTtcblxuICAgIGRpc2FibGVkUGFyZW50SXRlbT8gPSB0cnVlO1xuICAgIG9uQWRqdXN0ZWRWYWx1ZT86IEZ1bmN0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IERyb3Bkb3duQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGRyZXNzQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XG4gICAgaGlkZU5vPyA9IGZhbHNlO1xuICAgIGhpZGVTdHJlZXQ/ID0gZmFsc2U7XG4gICAgaGlkZVdhcmQ/ID0gZmFsc2U7XG4gICAgaGlkZURpc3RyaWN0PyA9IGZhbHNlO1xuICAgIHJlcXVpcmVkTm8/ID0gdHJ1ZTtcbiAgICByZXF1aXJlZFN0cmVldD8gPSB0cnVlO1xuICAgIHJlcXVpcmVkV2FyZD8gPSB0cnVlO1xuICAgIHJlcXVpcmVkRGlzdHJpY3Q/ID0gdHJ1ZTtcbiAgICByZXF1aXJlZFByb3ZpbmNlPyA9IHRydWU7XG4gICAgd2FyZFRvUHJvdmluY2U/ID0gdHJ1ZTtcbiAgICBub1dpZHRoPyA9IDE7XG4gICAgc3RyZWV0V2lkdGg/ID0gMztcbiAgICB3YXJkV2lkdGg/ID0gMztcbiAgICBkaXN0cmljdFdpZHRoPyA9IDI7XG4gICAgcHJvdmluY2VXaWR0aD8gPSAzO1xuICAgIHNob3dJbkJveD8gPSBmYWxzZTtcbiAgICBwcm92aW5jZUxhYmVsPyA9ICdU4buJbmgvVGjDoG5oIHBo4buRJztcbiAgICBwcm92aW5jZVBsYWNlaG9sZGVyPyA9ICdDaOG7jW4gVOG7iW5oL1Row6BuaCBwaOG7kSc7XG4gICAgZGlzdHJpY3RMYWJlbD8gPSAnUXXhuq1uL0h1eeG7h24nO1xuICAgIGRpc3RyaWN0UGxhY2Vob2xkZXI/ID0gJ0No4buNbiBRdeG6rW4vSHV54buHbic7XG4gICAgd2FyZExhYmVsPyA9ICdQaMaw4budbmcvWMOjJztcbiAgICB3YXJkUGxhY2Vob2xkZXI/ID0gJ0No4buNbiBQaMaw4budbmcvWMOjJztcbiAgICBzdHJlZXRMYWJlbD8gPSAnxJDGsOG7nW5nJztcbiAgICBzdHJlZXRQbGFjZWhvbGRlcj8gPSAnVsOtIGThu6U6IE5ndXnhu4VuIFhp4buDbic7XG4gICAgbm9MYWJlbD8gPSAnU+G7kSBuaMOgJztcbiAgICBub1BsYWNlaG9sZGVyPyA9ICdWw60gZOG7pTogMDknO1xuXG4gICAgaGlkZUhvbGRlcj8gPSB0cnVlO1xuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2U7XG4gICAgY2FjaGluZz8gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBBZGRyZXNzQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQWRkcmVzc05ld0NvbnRyb2xTY2hlbWEgZXh0ZW5kcyBBZGRyZXNzQ29udHJvbFNjaGVtYSB7XG4gICAgLy8gU+G7rSBk4bulbmcgY2hvIGFkZHJlc3MgbeG7m2lcbiAgICB2ZXJzaW9uPz0gLTE7XG4gICAgY29uc3RydWN0b3IoaW5pdD86IEFkZHJlc3NOZXdDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKGluaXQpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBWYW5CYW5QaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICBtZFdpZHRoPyA9IDEyO1xuICAgIHVzZVZiRGVuPyA9IHRydWU7XG4gICAgdXNlVmJEaT8gPSB0cnVlO1xuICAgIHJlYWRPbmx5PzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHJlYWRvbmx5PzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGxvYWlWYW5CYW4/OiBFbnVtTG9haVZhbkJhbkJhc2UgPSBFbnVtTG9haVZhbkJhbkJhc2UuVkJfREk7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVmFuQmFuUGlja2VyQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb25nVmllY1BpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIG1kV2lkdGg/ID0gMTI7XG4gICAgc2VydmljZUNvZGU/OiBzdHJpbmc7XG4gICAgZW50aXR5Pzogc3RyaW5nO1xuICAgIGVudGl0eUtleT86IHN0cmluZztcbiAgICBzdGF0ZT86IGFueSA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbmdWaWVjUGlja2VyQ29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQZXJjZW50Q29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XG4gICAgbWRXaWR0aD8gPSAxMjtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQZXJjZW50Q29udHJvbFNjaGVtYSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDaGlwc0NvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xuICAgIHBsYWNlaG9sZGVyPyA9ICcnO1xuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDaGlwc0NvbnRyb2xTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlQ29udHJvbFNjaGVtYSBleHRlbmRzIERhdGFTb3VyY2VDb250cm9sU2NoZW1hIHtcbiAgICBwbGFjZWhvbGRlcj8gPSAnJztcbiAgICBtdWx0aXBsZT8gPSBmYWxzZTtcbiAgICBtaW5MZW5ndGhGaWx0ZXI/ID0gMTtcbiAgICBhcHBlbmRUbz86IHN0cmluZyA9ICdib2R5JztcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBBdXRvQ29tcGxldGVDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhZGlvQnV0dG9uTGlzdENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSB7XG4gICAgdmFsdWVGaWVsZD8gPSAnaWQnO1xuICAgIGRpc3BsYXlGaWVsZD8gPSAndGVuJztcbiAgICBlbmFibGVDYWNoaW5nPyA9IHRydWU7XG4gICAgbGF5b3V0PzogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyA9ICdob3Jpem9udGFsJztcbiAgICBhbGlnbj86ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcbiAgICBvbkFkanVzdGVkVmFsdWU/OiBGdW5jdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBSYWRpb0J1dHRvbkxpc3RDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENoZWNrQm94TGlzdENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSB7XG4gICAgZW5hYmxlQ2FjaGluZz8gPSB0cnVlO1xuICAgIGxheW91dD86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgPSAnaG9yaXpvbnRhbCc7XG4gICAgYWxpZ24/OiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgPSAnbGVmdCc7XG4gICAgY2xhc3NQbHVzPyA9ICcnO1xuICAgIGZyZWVUZXh0PyA9ICcnO1xuICAgIHBDb2xDbGFzcz86IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDaGVja0JveExpc3RDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICByb3dUZW1wbGF0ZTogRm9ybVNjaGVtYUJhc2VbXTtcbiAgICBhdXRvR2VuZXJhdGVJZD8gPSBmYWxzZTtcbiAgICByb3dCdXR0b25zPzogKHJvd0RhdGEpID0+IE1lbnVJdGVtW107XG4gICAgZm9vdGVyQnV0dG9ucz86IHtcbiAgICAgICAgaWNvbj86IHN0cmluZztcbiAgICAgICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgICAgIGNsYXNzPzogc3RyaW5nO1xuICAgICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgfVtdO1xuICAgIHNob3dOdW1iZXI/ID0gdHJ1ZTtcbiAgICBzaG93RnVuY3Rpb24/ID0gdHJ1ZTtcbiAgICBzaG93Rm9vdGVyPyA9IHRydWU7XG4gICAgc2hvd1NhdmU/ID0gZmFsc2U7XG4gICAgc2hvd0VkaXQ/ID0gZmFsc2U7XG4gICAgc2hvd0RlbGV0ZT8gPSB0cnVlO1xuICAgIHNob3dBZGQ/ID0gdHJ1ZTtcbiAgICBzaG93RGlhbG9nPyA9IHRydWU7XG4gICAgcG9wdXBTaXplPzogUG9wdXBTaXplID0gbmV3IFBvcHVwU2l6ZSh7IHdpZHRoOiAxMTAwLCBoZWlnaHQ6IDY1MCB9KTtcbiAgICBlbmFibGVSZW9yZGVyUm93PyA9IGZhbHNlO1xuICAgIGVuYWJsZUFkZE11bHRpPyA9IGZhbHNlO1xuICAgIHBpY2tlckNvbnRyb2xGaWVsZD86IHN0cmluZztcbiAgICBpc1VuaXF1ZT8gPSB0cnVlO1xuICAgIGVuYWJsZVBhZ2luZz8gPSBmYWxzZTtcbiAgICBsaW1pdD8gPSA1MDtcbiAgICBpbml0Um93Q291bnQ/ID0gMTtcbiAgICBtZFdpZHRoPyA9IDEyO1xuICAgIHdpZHRoRnVuY3Rpb25Db2x1bW4/OiBzdHJpbmc7XG4gICAgcm93QnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+ID0gbnVsbDtcbiAgICBzdW1tYXJ5VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+ID0gbnVsbDtcbiAgICBoZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuXG4gICAgb25SZW9yZGVyZWQ/OiBGdW5jdGlvbjtcbiAgICBvblRhYmxlRmluaXNoSW5pdD86IEZ1bmN0aW9uO1xuICAgIG9uQWRkaW5nPzogRnVuY3Rpb247XG4gICAgb25BZGRlZD86IEZ1bmN0aW9uO1xuICAgIG9uU2F2ZT86IEZ1bmN0aW9uO1xuICAgIG9uTWVzc2FnZT86IEZ1bmN0aW9uO1xuICAgIG9uRGVsZXRpbmc/OiBGdW5jdGlvbjtcbiAgICBvbkRlbGV0ZWQ/OiBGdW5jdGlvbjtcbiAgICBvblJvd0NsaWNrPzogRnVuY3Rpb247XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGFibGVTY2hlbWEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGlzYWJsZUNvbnRyb2w/KCkge1xuICAgICAgICB0aGlzLmRpc2FibGVDaGlsZHJlbkNvbnRyb2wodGhpcy5yb3dUZW1wbGF0ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNhYmxlQ2hpbGRyZW5Db250cm9sPyA9IChzY2hlbWFzOiBGb3JtQ29udHJvbEJhc2VbXSkgPT4ge1xuICAgICAgICBzY2hlbWFzLmZvckVhY2goc2NoZW1hID0+IHtcbiAgICAgICAgICAgIHNjaGVtYS5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICBpZiAoc2NoZW1hIGluc3RhbmNlb2YgVGFibGVTY2hlbWEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVDaGlsZHJlbkNvbnRyb2woc2NoZW1hLnJvd1RlbXBsYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIENvbnRhaW5lclNjaGVtYSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZUNoaWxkcmVuQ29udHJvbChzY2hlbWEuY29udHJvbHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xufVxuXG5leHBvcnQgY2xhc3MgSHRtbFByZXZpZXdDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcbiAgICBoZWlnaHQ/ID0gMjUwO1xuICAgIG1hdGhKYXhUeXBlPzogJ0NIVE1MJyB8ICdTVkcnO1xuICAgIHVzZU1hdGhKYXhNZW51PyA9IGZhbHNlO1xuICAgIGF1dG9TY3JvbGxCb3R0b20/ID0gZmFsc2U7XG4gICAgaXNIdG1sPyA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogSHRtbFByZXZpZXdDb250cm9sU2NoZW1hKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbHVtblNjaGVtYUJhc2UgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZVdpdGhTZXJ2aWNlIHtcbiAgICBpc0FycmF5RmllbGQ/OiBib29sZWFuOyAvLyBMw6AgZmllbGQgY2jhu6lhIGPDoWMgdmFsdWUgY8OhY2ggbmhhdSBi4bqxbmcgZOG6pXUgLFxuICAgIHdpZHRoPzogc3RyaW5nO1xuICAgIHNob3dFZGl0TGluaz8gPSBmYWxzZTtcbiAgICBzaG93VG9nZ2xlSWNvbj8gPSBmYWxzZTtcbiAgICBjb2xTcGFuPzogbnVtYmVyO1xuICAgIGdyb3VwPyA9IGZhbHNlO1xuICAgIHZpc2libGU/ID0gdHJ1ZTtcbiAgICByZW1vdmVPbkluaXQ/ID0gZmFsc2U7XG4gICAgYWxsb3dGaWx0ZXI/ID0gdHJ1ZTtcbiAgICB0ZXh0QWxpZ24/OiBUZXh0QWxpZ247XG4gICAgY2VsbENsYXNzPzogc3RyaW5nO1xuICAgIGZ1bGxUZXh0U2VhcmNoPyA9IGZhbHNlO1xuICAgIGlzSW5UYWJsZT8gPSB0cnVlO1xuICAgIHJhd0NvbHVtbj86IENvbHVtblNjaGVtYUJhc2U7XG4gICAgc2VwYXJhdG9yPyA9ICcsICc7XG4gICAgbWF4SXRlbURpc3BsYXk/ID0gNTA7XG4gICAgcGFnZVNpemU/OiBudW1iZXIgPSAxNTsgLy8gUHJvcCBwaOG6o2kgZ2nhu5FuZyB24bubaSBkcm9wZG93blxuXG4gICAgZmlsZVNldHRpbmc/OiBGaWxlVXBsb2FkU2V0dGluZyB8IEZpbGVNYW5hZ2VyU2V0dGluZztcbiAgICBkYXRhVHlwZVJlZkZpZWxkPzogRGF0YVR5cGUgfCBzdHJpbmc7XG4gICAgZm9yY2VHZXREYXRhPyA9IGZhbHNlO1xuICAgIGRpc3BsYXlGaWVsZEluR3JpZD86IHN0cmluZztcbiAgICBmdW5jR2V0UmVmRGF0YVJvdz86IChyZWZJdGVtcykgPT4ge307XG4gICAgZnVuY1NldFZhbHVlUm93PzogKHJvd0l0ZW0sIGRhdGEpID0+IHZvaWQ7XG4gICAgZnVuY1NldFZhbHVlUm93V2hlbk51bGxPckVtcHR5PzogKHJvd0l0ZW0pID0+IHZvaWQ7XG4gICAgZnVuY0dldFZhbHVlT2ZGaWVsZD86IEZ1bmN0aW9uID0gKHJvd0l0ZW0pID0+IHJvd0l0ZW1bdGhpcy5maWVsZF07XG4gICAgcm93U3Bhbj8gPSAxO1xuICAgIGZvcm1hdD86IHN0cmluZztcbiAgICBkYXRhVHlwZT86IERhdGFUeXBlIHwgc3RyaW5nO1xuICAgIGNvbnRyb2xUeXBlPzogQ29udHJvbFR5cGUgPSBDb250cm9sVHlwZS50ZXh0Ym94O1xuICAgIHRlbXBsYXRlRmlsdGVyPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBkaXNhYmxlQ2hlY2tCb3g/ID0gdHJ1ZTtcbiAgICAvLyBUaOG7qSB04buxIMawdSB0acOqbiBnZXQgcmVmIGRhdGEgY+G7p2EgY3J1ZC1saXN0XG4gICAgLy8gTuG6v3UgY8OzIHZhbHVlIG5naMSpYSBsw6Agbmjhu69uZyBj4buZdCBuw6B5IGPhuqduIHBo4bqjaSBs4bqleSBk4buvIGxp4buHdSB4b25nIHLhu5NpIG3hu5tpIMSR4bq/biBj4buZdCBraMOhY1xuICAgIG9yZGVyPzogbnVtYmVyID0gMTtcbiAgICBtYXhXb3JkRGlzcGxheT86IG51bWJlcjtcbiAgICBtYXhMZW5ndGhEaXNwbGF5PzogbnVtYmVyO1xuICAgIG1kV2lkdGhJblNlYXJjaD8gPSAxMjtcbiAgICBzaG93QnRuRXhwYW5kPzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIG1pbj8gPSAwO1xuICAgIG1heD8gPSA5OTk5OTk5OTk5OTtcblxuICAgIGlzRm9yZWlnbkZpZWxkPyA9IGZhbHNlO1xuICAgIGlzT3ZlcnJpZGVGaWx0ZXI/ID0gZmFsc2U7XG4gICAgc2hvd0NsZWFyPyA9IHRydWU7XG4gICAgbXVsdGlwbGU/ID0gZmFsc2U7XG4gICAgc2luZ2xlPyA9IGZhbHNlO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgICBwaXBlPzogUGlwZVRyYW5zZm9ybTtcbiAgICBhc3luY1BpcGU/ID0gdHJ1ZTtcbiAgICBzb3J0PyA9IHRydWU7XG4gICAgZXh0ZW5kRGF0YT86IGFueSA9IHt9O1xuICAgIGxlZnQ/OiBOdW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBJcyB0aGlzIGNvbHVtbiByZWYgYSByZWYgY29sdW1uIGdlbmVyYXRlZCBieSBiYXNlXG4gICAgICogQGRhdGUgMTEvNC8yMDIyIC0gMjowNTo1NSBQTVxuICAgICAqXG4gICAgICogQHR5cGUgez9ib29sZWFufVxuICAgICAqL1xuICAgIGlzUmVmRmllbGQ/ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBzaG91bGQgaW5jbHVkZSB0aGlzIGNvbCBpbiB0aGUgZ3JpZEluZm8uZmllbGRzXG4gICAgICogQGRhdGUgMTEvNC8yMDIyIC0gMjowNjoxNiBQTVxuICAgICAqXG4gICAgICogQHR5cGUgez9ib29sZWFufVxuICAgICAqL1xuICAgIGluY2x1ZGVTZWxlY3Q/ID0gdHJ1ZTtcbiAgICBpc1Bpbm5lZD8gPSBmYWxzZTtcblxuICAgIGhhc09wZXJhdG9yQ2FuQm8/ID0gZmFsc2U7XG4gICAgbWluaW1pemVGaWx0ZXI/OiBib29sZWFuID0gZmFsc2U7XG4gICAgYmluZGluZ0ZpbHRlcnM/OiBGaWx0ZXJbXTtcbiAgICBmb3JjZUxvYWRpbmc/ID0gZmFsc2U7IC8vIGNobyBwaMOpcCBsb2FkIGzhuqFpIGNydWQtbGlzdCBraGkgY29sdW1uIG7DoHkga2jDtG5nIHBo4bqjaSBsw6AgcHJvcGVydHkgY+G7p2EgYmFzZXJ2aWNlIChkw7luZyB0cm9uZyBjb21tb24tc2VhcmNoKVxuICAgIGF1dG9EaXNwbGF5Rmlyc3Q/ID0gZmFsc2U7XG4gICAgbm90SW5DcnVkRm9ybT8gPSBmYWxzZTtcbiAgICBzaG93U2V0dGluZz8gPSB0cnVlO1xuXG4gICAgY2xpY2s/OiBGdW5jdGlvbjtcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBhbGxvd0xvYWREYXRhV2hlblBhcmVudE51bGw/ID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29sdW1uU2NoZW1hQmFzZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEcm9wZG93bk9wdGlvbnMge1xuICAgIGRpc3BsYXlGaWVsZD8gPSAndGVuJztcbiAgICB2YWx1ZUZpZWxkPyA9ICdpZCc7XG4gICAgZmllbGRUcmVlPyA9ICcnO1xuICAgIHNlbGVjdENoaWxkSXRlbT8gPSBmYWxzZTsgLy8gQ8OzIHNlbGVjdCBi4bqjbiBnaGkgY29uIG7hur91IGNo4buNbiBi4bqjbiBnaGkgY2hhXG4gICAgc2VsZWN0RGVzY2VuZGFudD8gPSBmYWxzZTsgLy8gQ8OzIHNlbGVjdCBi4bqjbiBnaGkgY29uLCBjaMOhdSBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/ID0gJ2lkJzsgLy8gVHLGsOG7nW5nIHjDoWMgxJHhu4tuaCBi4bqjbiBnaGkgbMOgIGLhuqNuIGdoaSBjaGEgY+G7p2EgYuG6o24gZ2hpIGNvblxuICAgIHNvcnRzPzogU29ydFtdID0gW107XG4gICAgc29ydEZpZWxkPyA9ICcnO1xuICAgIHNvcnREaXI/OiAxIHwgLTEgPSAxO1xuICAgIGZpZWxkUGx1cz8gPSAnJztcbiAgICBwbHVzVXJsPzogc3RyaW5nO1xuICAgIGNhbGxiYWNrRGF0YUZpbmlzaD86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcbiAgICBwYWdlPzogbnVtYmVyID0gMTtcbiAgICBwYWdlU2l6ZT8gPSA2NjY7XG4gICAgaXNTZXJ2ZXJMb2FkPyA9IGZhbHNlO1xuICAgIHJlZkZpZWxkcz86IFJlZkZpZWxkW10gPSBbXTtcbiAgICBpc1RyZWVCYXNlTW9kZWw/ID0gZmFsc2U7XG4gICAgaXNHZXRBbGw/ID0gZmFsc2U7XG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRHJvcGRvd25PcHRpb25zKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlZkZpZWxkIHtcbiAgICBmaWVsZD86IHN0cmluZztcbiAgICBtdWx0aXBsZT8gPSBmYWxzZTtcbiAgICBzZXBhcmF0b3I/ID0gJywgJztcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlIHwgTWFzdGVyRGF0YVNlcnZpY2U7XG4gICAgaXNDaGlsZE9iamVjdD8gPSBmYWxzZTtcbiAgICBkaXNwbGF5RmllbGQ/ID0gJ3Rlbic7XG4gICAgZGlzcGxheUZpZWxkSW5HcmlkPzogc3RyaW5nO1xuICAgIHZhbHVlRmllbGQ/ID0gJ2lkJztcbiAgICBmaWVsZFBsdXM/ID0gJyc7XG4gICAgZ3JvdXBDb2RlPzogc3RyaW5nO1xuICAgIGRhdGFTb3VyY2U/OiBhbnlbXTtcbiAgICBvcmRlcj86IG51bWJlciA9IDE7XG4gICAgaXNGb3JlaWduRmllbGQ/ID0gZmFsc2U7XG5cbiAgICBpc1RyZWU/ID0gZmFsc2U7XG4gICAgZmllbGRUcmVlPzogc3RyaW5nO1xuICAgIHZhbHVlUGFyZW50Um9vdD86IGFueSA9IG51bGw7IC8vIEdpw6EgdHLhu4sgdHLGsOG7nW5nIFtmaWVsZFRyZWVdIGPhu6dhIGl0ZW0gdHJlZSByb290XG4gICAgZmllbGRQYXJlbnRUcmVlSXRlbT8gPSAnaWQnOyAvLyBUcsaw4budbmcgeMOhYyDEkeG7i25oIGLhuqNuIGdoaSBsw6AgYuG6o24gZ2hpIGNoYSBj4bunYSBi4bqjbiBnaGkgY29uXG4gICAgc29ydHM/OiBTb3J0W10gPSBbXTtcbiAgICBzb3J0RmllbGQ/ID0gJyc7XG4gICAgc29ydERpcj86IDEgfCAtMSA9IDE7XG4gICAgcGx1c1VybD86IHN0cmluZztcblxuICAgIGZ1bmNHZXRWYWx1ZU9mRmllbGQ/OiBGdW5jdGlvbiA9IChpdGVtKSA9PiBpdGVtW3RoaXMuZmllbGRdO1xuICAgIGZ1bmNTZXRWYWx1ZVJvdz86IChyb3dJdGVtLCBkYXRhKSA9PiB2b2lkO1xuICAgIGZ1bmNTZXRWYWx1ZVJvd1doZW5OdWxsT3JFbXB0eT86IChyb3dJdGVtKSA9PiB2b2lkO1xuICAgIGZ1bmNHZXRSZWZEYXRhUm93PzogKHJlZkl0ZW1zKSA9PiB7fTtcbiAgICBjYWxsYmFja0RhdGFGaW5pc2g/OiAoZXZ0OiBFdmVudERhdGEpID0+IHZvaWQ7XG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUmVmRmllbGQpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRW50aXR5UGlja2VyQ29sdW1uIGV4dGVuZHMgQ29sdW1uU2NoZW1hQmFzZSB7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgY29kZT86IHN0cmluZztcbiAgICBkaXNhYmxlZD8gPSBmYWxzZTtcbiAgICBpc1NlYXJjaGFibGU/ID0gdHJ1ZTtcbiAgICBpc0Rpc3BsYXk/ID0gdHJ1ZTtcbiAgICBkYXRhVHlwZT86IERhdGFUeXBlIHwgc3RyaW5nO1xuICAgIG9wZXJhdG9yPzogT3BlcmF0b3I7XG4gICAgd2lkdGg/ID0gJyc7XG4gICAgbm90SW5GaWVsZHM/ID0gZmFsc2U7IC8vIEPDoWMgdHLGsOG7nW5nIGThu68gbGnhu4d1IMSRxrDhu6NjIHThu5VuZyBo4bujcCBs4bqhaSBoaeG7g24gdGjhu4sgbMOqbiBncmlkIG3DoCBraMO0bmcgcGjhuqNpIGzhuqV5IHThu6sgdHJvbmcgdGFibGUgcmEuXG5cbiAgICB0ZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRW50aXR5UGlja2VyQ29sdW1uKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENydWRMaXN0Q29uZmlnIHtcbiAgICB0b29sdGlwVmlldz86IHN0cmluZztcbiAgICBvblZpZXc/OiBGdW5jdGlvbjtcbiAgICBkaXNhYmxlUm93U2VsZWN0V2hlbkNsaWNrQWN0aW9uPyA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3RDb25maWcpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHJlZURhdGFPcHRpb24ge1xuICAgIGRpc3BsYXlGaWVsZCA9ICd0ZW4nO1xuICAgIHNob3J0RGlzcGxheUZpZWxkID0gJ3Rlbic7XG4gICAgZXhwYW5kZWRJY29uID0gJ3BpIHBpLWZvbGRlci1vcGVuJztcbiAgICBjb2xsYXBzZWRJY29uID0gJ3BpIHBpLWZvbGRlcic7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVHJlZURhdGFPcHRpb24pIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGlhbG9nTW9kZWwge1xuICAgIHNob3dFZGl0Rm9ybT86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBoZWFkZXI/OiBzdHJpbmcgPSAnJztcbiAgICBwb3B1cFNpemU/OiBQb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKHsgbWF4aW1pemU6IHRydWUgfSk7XG4gICAgZGF0YT86IGFueSA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IERpYWxvZ01vZGVsKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvcHVwU2l6ZSB7XG4gICAgd2lkdGg/OiBudW1iZXI7XG4gICAgaGVpZ2h0PzogbnVtYmVyO1xuICAgIG1heGltaXplPyA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFBvcHVwU2l6ZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCdXR0b25BY3Rpb24ge1xuICAgIHJhd1RleHQ/OiBzdHJpbmc7XG4gICAgcGVybWlzc2lvbkNvZGU/OiBzdHJpbmc7XG4gICAgbHN0RWxlbWVudD86IEhUTUxCdXR0b25FbGVtZW50W10gPSBbXTtcbiAgICBpc0F1dGhvcml6ZT8gPSBmYWxzZTtcbiAgICBpZDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEJ1dHRvbkFjdGlvbikge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFdmVudERhdGEge1xuICAgIGN1cnJlbnROb2RlOiBDb250cm9sVHJlZU5vZGU7XG4gICAgc291cmNlTm9kZT86IENvbnRyb2xUcmVlTm9kZTtcbiAgICBzb3VyY2VFdmVudD86IGFueTtcbiAgICBldmVudFR5cGU/OiBhbnk7XG4gICAgZGF0YT86IGFueTtcbiAgICBwcml2YXRlIF9jcnVkRm9ybTogQ3J1ZEZvcm1Db21wb25lbnQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5pdD86IHtcbiAgICAgICAgICAgIGN1cnJlbnROb2RlOiBDb250cm9sVHJlZU5vZGUsXG4gICAgICAgICAgICBzb3VyY2VOb2RlPzogQ29udHJvbFRyZWVOb2RlLFxuICAgICAgICAgICAgc291cmNlRXZlbnQ/OiBhbnksXG4gICAgICAgICAgICBldmVudFR5cGU/OiBhbnksXG4gICAgICAgICAgICBkYXRhPzogYW55LFxuICAgICAgICAgICAgY3J1ZEZvcm0/OiBDcnVkRm9ybUNvbXBvbmVudDtcbiAgICAgICAgfVxuICAgICkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE5vZGUubW9kZWw7XG4gICAgfVxuXG4gICAgZ2V0IG1vZGVsKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLm1vZGVsO1xuICAgIH1cblxuICAgIGdldCBwYXJlbnRNb2RlbCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5wYXJlbnRNb2RlbDtcbiAgICB9XG5cbiAgICBnZXQgcGFyZW50UGF0aCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5wYXJlbnRNb2RlbFBhdGg7XG5cbiAgICB9XG5cbiAgICBnZXQgcm9vdE1vZGVsKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLnJvb3ROb2RlLm1vZGVsO1xuICAgIH1cblxuICAgIGdldCBjb250cm9sKCk6IEZvcm1TY2hlbWFCYXNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE5vZGUuY29udHJvbDtcbiAgICB9XG5cbiAgICBnZXQgcGFyZW50Q29udHJvbCgpOiBGb3JtU2NoZW1hQmFzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLnBhcmVudENvbnRyb2w7XG4gICAgfVxuXG4gICAgZ2V0IGZvcm1Db250cm9scygpOiBGb3JtU2NoZW1hQmFzZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE5vZGUuZm9ybUNvbnRyb2xzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRhYlZpZXdEYXRhIHtcbiAgICBjb2RlPzogc3RyaW5nO1xuICAgIGhpZGRlbj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBhbHdheVJlbmRlcj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpY29uPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGhlYWRlclN0eWxlQ2xhc3M/OiBzdHJpbmc7XG4gICAgYWN0aXZlPzogYm9vbGVhbjtcbiAgICBkb05vdFJlbG9hZD8gPSB0cnVlO1xuICAgIHVzZVNjcm9sbGJhcj8gPSB0cnVlOyAvLyBDb25maWcgxJHhu4MgeMOhYyDEkeG7i25oIGPDsyBz4butIGThu6VuZyBjdXN0b20tc2Nyb2xsYmFyIGtow7RuZywgbuG6v3Uga2jDtG5nIHRow6wgZMO5bmcgc2Nyb2xsYmFyIG3hurdjIMSR4buLbmggY+G7p2EgdHLDrG5oIGR1eeG7h3RcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUYWJWaWV3RGF0YSkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGaWVsZFJvd1NwYW4ge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgZnVuY0dldFZhbHVlPzogKGl0ZW0pID0+IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGaWVsZFJvd1NwYW4pIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTG9nU2V0dGluZyB7XG4gICAgaXNFbmFibGVMb2c/ID0gZmFsc2U7XG4gICAgaXNDdXN0b21BbGw/ID0gZmFsc2U7XG4gICAgdmFsdWVCZWZvcmVVcGRhdGU6IGFueTtcbiAgICBlbXB0eVZhbHVlPyA9ICdLaMO0bmcgY8OzIGdpw6EgdHLhu4snO1xuICAgIGFyclZhbHVlQWZ0ZXJVcGRhdGU6IExvZ0NvbHVtbltdID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogTG9nU2V0dGluZykge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgY2xhc3MgTG9nQ29sdW1uIHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgdmFsdWVCZWZvcmU/OiBzdHJpbmc7XG4gICAgdmFsdWVBZnRlcj86IHN0cmluZztcbiAgICB2aXNpYmxlPyA9IHRydWU7XG4gICAgZW51bUxvZ1R5cGU/ID0gRW51bUxvZ1R5cGUuTm9ybWFsO1xuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBMb2dDb2x1bW4pIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGVudW0gRW51bUxvZ1R5cGUge1xuICAgIE5vcm1hbCA9IDEsXG4gICAgSHRtbCA9IDIsXG4gICAgVGFibGUgPSAzXG59XG5cbmV4cG9ydCBlbnVtIERhdGFUeXBlIHtcbiAgICBkYXRlID0gJ2RhdGUnLFxuICAgIGRhdGV0aW1lID0gJ2RhdGV0aW1lJyxcbiAgICBodG1sID0gJ2h0bWwnLFxuICAgIHN0cmluZyA9ICdzdHJpbmcnLFxuICAgIGludCA9ICdpbnQnLFxuICAgIGludFdpdGhvdXRNYXNrID0gJ2ludFdpdGhvdXRNYXNrJyxcbiAgICBjdXJyZW5jeSA9ICdjdXJyZW5jeScsXG4gICAgZGVjaW1hbCA9ICdkZWNpbWFsJyxcbiAgICBib29sZWFuID0gJ2Jvb2xlYW4nLFxuICAgIGVudW0gPSAnZW51bScsXG4gICAgZmlsZVVwbG9hZCA9ICdmaWxlVXBsb2FkJyxcbiAgICBmaWxlTWFuYWdlciA9ICdmaWxlTWFuYWdlcicsXG4gICAgdGltZXNwYW4gPSAndGltZXNwYW4nLFxufVxuXG5leHBvcnQgZW51bSBDb250cm9sVHlwZSB7XG4gICAgZHJvcGRvd24gPSAnZHJvcGRvd24nLFxuICAgIGRhdGV0aW1lID0gJ2RhdGV0aW1lJyxcbiAgICBkYXRlID0gJ2RhdGUnLFxuICAgIHRpbWUgPSAndGltZScsXG4gICAgbnVtYmVyID0gJ251bWJlcicsXG4gICAgdGV4dGJveCA9ICd0ZXh0Ym94JyxcbiAgICBjaGVja2JveCA9ICdjaGVja2JveCcsXG4gICAgc3dpdGNoID0gJ3N3aXRjaCdcbn1cblxuZXhwb3J0IGVudW0gT3BlcmF0b3Ige1xuICAgIGVxdWFsID0gJ2VxJyxcbiAgICBub3RFcXVhbCA9ICduZXEnLFxuICAgIGdyZWF0ZXIgPSAnZ3QnLFxuICAgIGdyZWF0ZXJUaGFuRXF1YWwgPSAnZ3RlJyxcbiAgICBsb3dlciA9ICdsdCcsXG4gICAgbG93ZXJUaGFuRXF1YWwgPSAnbHRlJyxcblxuICAgIHJlbGF0aW9uYWxEYXRhID0gJ3JlbGF0aW9uYWxkYXRhJyxcbiAgICBjb250YWluID0gJ2NvbnRhaW5zJyxcbiAgICBub3RDb250YWluID0gJ25jb250YWlucycsXG4gICAgc3RhcnRXaXRoID0gJ3N0YXJ0c3dpdGgnLFxuICAgIG5vdFN0YXJ0V2l0aCA9ICduc3RhcnRzd2l0aCcsXG4gICAgZW5kV2l0aCA9ICdlbmRzd2l0aCcsXG4gICAgbm90RW5kV2l0aCA9ICduZW5kc3dpdGgnLFxuXG4gICAgaW4gPSAnaW4nLFxuICAgIG5vdEluID0gJ25pbicsXG5cbiAgICBpc051bGwgPSAnaXNudWxsJyxcbiAgICBpc05vdE51bGwgPSAnaXNub3RudWxsJyxcblxuICAgIGluUm9sZSA9ICdoYXNSb2xlJyxcbiAgICBub3RJblJvbGUgPSAnbm90SGFzUm9sZScsXG4gICAgaW5DYXRlZ29yeSA9ICdpbkNhdGVnb3J5JyxcbiAgICBub3RJbkNhdGVnb3J5ID0gJ25vdEluQ2F0ZWdvcnknLFxuICAgIGluUG9zaXRpb24gPSAnaW5Qb3NpdGlvbicsXG4gICAgbm90SW5Qb3NpdGlvbiA9ICdub3RJblBvc2l0aW9uJyxcbiAgICBpbkxpc3RVc2VyID0gJ2luTGlzdFVzZXInLFxuICAgIG5vdEluTGlzdFVzZXIgPSAnbm90SW5MaXN0VXNlcicsXG4gICAgaW5MaXN0R3JvdXAgPSAnaW5MaXN0R3JvdXAnLFxuICAgIG5vdEluTGlzdEdyb3VwID0gJ25vdEluTGlzdEdyb3VwJyxcbiAgICBpc0N1cnJlbnRVc2VyID0gJ2lzQ3VycmVudFVzZXInLFxuICAgIGlzQ3VycmVudENhbkJvID0gJ2lzQ3VycmVudENhbkJvJ1xufVxuXG5leHBvcnQgZW51bSBIZWlnaHRUeXBlIHtcbiAgICBkZWZhdWx0ID0gMCxcbiAgICBkeW5hbWljID0gLTEsXG4gICAgY3VzdG9tID0gMVxufVxuXG5leHBvcnQgZW51bSBGaWxlTWFuYWdlck1vZGUge1xuICAgIHNpbmdsZSA9ICdzaW5nbGUnLFxuICAgIG11bHRpcGxlID0gJ211bHRpcGxlJ1xufVxuXG5leHBvcnQgZW51bSBGaWxlVXBsb2FkTW9kZSB7XG4gICAgdXNpbmdGaWxlSW5zdGFuY2VJZCA9ICd1c2luZ0ZpbGVJbnN0YW5jZUlkJyxcbiAgICB1c2luZ1NlcnZpY2VGaWxlID0gJ3VzaW5nU2VydmljZUZpbGUnXG59XG5cbmV4cG9ydCBlbnVtIEVudW1GaWxlTGF5b3V0IHtcbiAgICBTSU1QTEUgPSAnU0lNUExFJyxcbiAgICBTSU1QTEVfRk9SX0xJU1QgPSAnU0lNUExFX0ZPUl9MSVNUJyxcbiAgICBMSVNUID0gJ0xJU1QnLFxuICAgIElOTElORSA9ICdJTkxJTkUnXG59XG5cbmV4cG9ydCBlbnVtIFRleHRBbGlnbiB7XG4gICAgTGVmdCA9IDAsXG4gICAgQ2VudGVyID0gMSxcbiAgICBSaWdodCA9IC0xXG59XG5cbmV4cG9ydCBlbnVtIEV4cG9ydEl0ZW1zTW9kZSB7XG4gICAgRnJvbUh0bWwgPSAwLFxuICAgIE1hbnVhbEdldERhdGEgPSAxLFxuICAgIEF1dG9HZXREYXRhID0gMlxufVxuXG5leHBvcnQgZW51bSBFeHBvcnRBbGxNb2RlIHtcbiAgICBNYW51YWxHZXREYXRhID0gMCxcbiAgICBBdXRvR2V0RGF0YSA9IDFcbn1cblxuZXhwb3J0IGVudW0gVXNlclR5cGUge1xuICAgIENhbkJvLFxuICAgIE5vcm1hbCxcbn1cblxuZXhwb3J0IGVudW0gRXZlbnRUeXBlIHtcbiAgICBDSEFOR0UgPSAnY2hhbmdlJyxcbiAgICBBREpVU1RfVkFMVUUgPSAnYWRqdXN0VmFsdWUnLFxuICAgIE1PREVMX0NIQU5HRUQgPSAnbW9kZWxDaGFuZ2VkJyxcbiAgICBGT1JNX1JFQURZID0gJ2Zvcm1SZWFkeScsXG4gICAgRU5URVIgPSAnZW50ZXInLFxuICAgIEhJREUgPSAnaGlkZScsXG4gICAgUk9XX1JFT1JERVIgPSAncm93UmVvcmRlcicsXG4gICAgQkxVUiA9ICdibHVyJyxcbiAgICBSRUFEWSA9ICdSRUFEWScsXG4gICAgREFUQVNPVVJDRV9MT0FERUQgPSAnZGF0YVNvdXJjZUxvYWRlZCcsXG4gICAgQ0xJQ0sgPSAnY2xpY2snLFxuICAgIEFVVE9fQ09SUkVDVCA9ICdhdXRvQ29ycmVjdCcsXG4gICAgVkFMSURBVEUgPSAndmFsaWRhdGUnLFxuICAgIElOSVQgPSAnaW5pdCcsXG4gICAgQURESU5HID0gJ2FkZGluZycsXG4gICAgQURERUQgPSAnYWRkZWQnLFxuICAgIERFTEVUSU5HID0gJ2RlbGV0aW5nJyxcbiAgICBERUxFVEVEID0gJ2RlbGV0ZWQnLFxuICAgIFNFTEVDVCA9ICdzZWxlY3QnLFxuICAgIFRBQkxFX0NIQU5HRUQgPSAndGFibGVDaGFuZ2VkJyxcbiAgICBTQVZFID0gJ3NhdmUnLFxuICAgIE1FU1NBR0UgPSAnbWVzc2FnZScsXG4gICAgUk9XX0ZJTklTSF9JTklUID0gJ3Jvd0ZpbmlzaEluaXQnLFxuICAgIFRBQkxFX0ZJTklTSF9JTklUID0gJ3RhYmxlRmluaXNoSW5pdCcsXG4gICAgVVBMT0FERUQgPSAndXBsb2FkZWQnLFxufSBcbiJdfQ==
|