tnx-shared 5.0.42 → 5.0.44

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.
@@ -1,5 +1,5 @@
1
1
  import { __awaiter } from "tslib";
2
- import { EnumControlPickerType, EnumWorkflowCoreCodeSettingKey, FormState, SharedFolderType } from './constants';
2
+ import { EnumControlPickerType, EnumCoreVersion, EnumWorkflowCoreCodeSettingKey, FormState, SharedFolderType } from './constants';
3
3
  export class ModelSchema {
4
4
  constructor(init) {
5
5
  this.dataType = 'string';
@@ -336,6 +336,7 @@ export class FormControlBaseWithService extends FormControlBase {
336
336
  this.fieldPlus = ''; // Danh sách những trường bổ sung cần lấy thêm ngoài id, ten; Ví dụ ,ma
337
337
  this.fieldValueParent = 'value'; // Trường sử dụng để lấy dữ liệu làm khóa từ bảng cha của item drop down được chọn
338
338
  this.fireCallBackInside = true;
339
+ this.coreVersion = EnumCoreVersion.V5;
339
340
  this.funcCompare = (item, value) => item[this.valueField] == value;
340
341
  for (const key in init) {
341
342
  this[key] = init[key];
@@ -1106,4 +1107,4 @@ export var ExportAllMode;
1106
1107
  ExportAllMode[ExportAllMode["ManualGetData"] = 0] = "ManualGetData";
1107
1108
  ExportAllMode[ExportAllMode["AutoGetData"] = 1] = "AutoGetData";
1108
1109
  })(ExportAllMode || (ExportAllMode = {}));
1109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY2xhc3Nlcy9mb3JtLXNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBZ0JBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHakgsTUFBTSxPQUFPLFdBQVc7SUFNcEIsWUFBWSxJQUFrQjtRQUQ5QixhQUFRLEdBQThGLFFBQVEsQ0FBQztRQUUzRyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFFBQVE7SUFHakIsWUFBWSxJQUFlO1FBRjNCLG9HQUFvRztRQUNwRyxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFFL0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxlQUFlO0lBbUZ4QixZQUFZLElBQXNCO1FBakZsQyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFHakIsaUJBQVksR0FBbUIsRUFBRSxDQUFDO1FBQ2xDLFNBQUksR0FBd0IsRUFBRSxDQUFDO1FBQy9CLGtCQUFhLEdBQW1CLElBQUksYUFBYSxFQUFFLENBQUM7UUFDcEQsZ0JBQVcsR0FBaUIsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM5QyxlQUFVLEdBQWdCLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyx5REFBeUQ7UUFDdkcsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FB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SUFDakIsK0RBQWUsQ0FBQTtBQUNuQixDQUFDLEVBSFcsYUFBYSxLQUFiLGFBQWEsUUFHeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlVHJhbnNmb3JtLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBBdXRvQ29tcGxldGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS1waWNrZXIvYXV0b2NvbXBsZXRlLXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDcnVkTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY3J1ZC9jcnVkLWxpc3QvY3J1ZC1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudGl0eVBpY2tlckRhdGFDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2VudGl0eS1waWNrZXIvZW50aXR5LXBpY2tlci1kaWFsb2cvY29tcG9uZW50cy9lbnRpdHktcGlja2VyLWRhdGEvZW50aXR5LXBpY2tlci1kYXRhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudGl0eVBpY2tlclNlbGVjdGVkQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9lbnRpdHktcGlja2VyL2VudGl0eS1waWNrZXItZGlhbG9nL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci1zZWxlY3RlZC9lbnRpdHktcGlja2VyLXNlbGVjdGVkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudGl0eVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci9lbnRpdHktcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbGVEYXRhU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbHRlciwgU29ydCB9IGZyb20gJy4uL21vZGVscy9ncmlkLWluZm8nO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Jhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2VudGl0eS1tZXRhZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFzdGVyRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udHJvbFRyZWVOb2RlLCBDcnVkRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vLi4vY29tcG9uZW50cy9jcnVkL2NydWQtZm9ybS9jcnVkLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUNvcnJlY3RvciB9IGZyb20gJy4vYmFzZS9jb3JyZWN0b3JzJztcclxuaW1wb3J0IHsgSVZhbGlkYXRvciB9IGZyb20gJy4vYmFzZS92YWxpZGF0b3JzJztcclxuaW1wb3J0IHsgRW51bUNvbnRyb2xQaWNrZXJUeXBlLCBFbnVtV29ya2Zsb3dDb3JlQ29kZVNldHRpbmdLZXksIEZvcm1TdGF0ZSwgU2hhcmVkRm9sZGVyVHlwZSB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgV29ya2Zsb3dTZXR0aW5nLCBXb3JrZmxvd1NldHRpbmdOZXcgfSBmcm9tICcuL3dvcmtmbG93LXNjaGVtYSc7XHJcblxyXG5leHBvcnQgY2xhc3MgTW9kZWxTY2hlbWEge1xyXG4gICAgZmllbGQ6IHN0cmluZztcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIGZ1bGxOYW1lOiBzdHJpbmc7XHJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgZGF0YVR5cGU/OiAnaW50JyB8ICdkZWNpbWFsJyB8ICdkYXRlJyB8ICdkYXRldGltZScgfCAnc3RyaW5nJyB8ICdib29sZWFuJyB8ICdjdXJyZW5jeScgfCAndGltZXNwYW4nID0gJ3N0cmluZyc7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogTW9kZWxTY2hlbWEpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkQmFzZSB7XHJcbiAgICAvLyBDb21wb25lbnQgc3Vic2NyaWJlIC0gS2hpIHN1YmNyaWJlIG3hu5l0IGNvbXBvbmVudCB0aMOsIGFkZCB2w6BvIGFycmF5IMSR4buDIGtoaSBkZXN0cm95IHRow6wgdW5zdWJzY3JpYmVcclxuICAgIGNvbXBvbmVudFN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZEJhc2UpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkTGlzdFNldHRpbmcge1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIG9iamVjdE5hbWUgPSAnJztcclxuICAgIGVudGl0eUtleSA9ICdpZCc7XHJcbiAgICBzZXR0aW5nS2V5Pzogc3RyaW5nO1xyXG4gICAgZW50aXR5TWV0YWRhdGFTZXJ2aWNlPzogRW50aXR5TWV0YWRhdGFTZXJ2aWNlO1xyXG4gICAgbW9kZWxTY2hlbWFzPzogTW9kZWxTY2hlbWFbXSA9IFtdO1xyXG4gICAgY29scz86IENvbHVtblNjaGVtYUJhc2VbXSA9IFtdO1xyXG4gICAgY29sdW1uU2V0dGluZz86IENvbHVtblNldHRpbmcgPSBuZXcgQ29sdW1uU2V0dGluZygpO1xyXG4gICAgcGFnZVNldHRpbmc/OiBQYWdlU2V0dGluZyA9IG5ldyBQYWdlU2V0dGluZygpO1xyXG4gICAgaGVpZ2h0VHlwZT86IEhlaWdodFR5cGUgPSBIZWlnaHRUeXBlLmRlZmF1bHQ7IC8vIEPDsyBjdXN0b20gY2hp4buBdSBjYW8ga2jDtG5nOiBUaMaw4budbmcgc+G7rSBk4bulbmcgdHJvbmcgZGlhbG9nXHJcbiAgICBmaXhIZWlnaHRUeXBlSW5EaWFsb2c/PSB0cnVlO1xyXG4gICAgbXVsdGlwbGVDaGVja1doZW5DbGlja1JvdyA9IHRydWU7XHJcbiAgICBjdXN0b21Xb3JrZmxvd0NvZGVUcmluaEt5OiBFbnVtV29ya2Zsb3dDb3JlQ29kZVNldHRpbmdLZXkgPSBFbnVtV29ya2Zsb3dDb3JlQ29kZVNldHRpbmdLZXkuTUFDX0RJTkg7XHJcbiAgICBzdGlja3lDb2x1bW4gPSBmYWxzZTtcclxuICAgIHRhYmxlTmFtZT86IHN0cmluZztcclxuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2U7XHJcbiAgICByZVNlbGVjdExhc3RJdGVtPz0gdHJ1ZTsgLy8gU2VsZWN0IGzhuqFpIGl0ZW0gY3Xhu5FpIGPDuW5nIMSRw6MgY2jhu41uIGPhu6dhIGdyaWRcclxuICAgIGZpcmVFdmVudFdoZW5SZVNlbGVjdD89IGZhbHNlO1xyXG4gICAgYWR2YW5jZURhdGE/OiBhbnkgPSB7fTtcclxuICAgIHdvcmtmbG93U2V0dGluZz86IFdvcmtmbG93U2V0dGluZztcclxuICAgIHdvcmtmbG93Q29uZmlnQWR2YW5jZT86IFdvcmtmbG93Q29uZmlnQWR2YW5jZTtcclxuICAgIGRpc3BsYXlGaWVsZDogc3RyaW5nIHwgKChpdGVtKSA9PiBzdHJpbmcpOyAvLyB0csaw4budbmcgxJHhuqFpIGRp4buHbiBjaG8gYuG6o24gZ2hpIGzDoG0gdGnDqnUgxJHhu4EgaGnhu4NuIHRo4buLIChwaOG7pWMgduG7pSBjaG8gY8OhYyBk4buLY2ggduG7pSBraMOhYyBraGFpIHRow6FjKVxyXG4gICAgaGFzQ3VzdG9tSGFuZGxlQ2xpY2tSb3cgPSBmYWxzZTtcclxuICAgIGNoZWNrQWxsb3dUcmluaEt5OiAocm93RGF0YSkgPT4gUHJvbWlzZTxib29sZWFuPjtcclxuICAgIGNoZWNrUGVybWlzaW9uVHJpbmhLeSA9IGZhbHNlO1xyXG5cclxuICAgIHNob3dFZGl0TGluayA9IHRydWU7XHJcblxyXG4gICAgaGlkZGVuSGVhZGVyID0gZmFsc2U7XHJcbiAgICBoaWRkZW5QYWdlU2V0dGluZyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuVGV4dFBhZ2UgPSBmYWxzZTtcclxuICAgIGhpZGRlblRvb2xiYXIgPSBmYWxzZTtcclxuICAgIGhpZGRlbkJ1dHRvbnMgPSBmYWxzZTtcclxuICAgIGhpZGRlbkFkdmFuY2VTZWFyY2ggPSBmYWxzZTtcclxuICAgIGhpZGRlblNhdmVTZXR0aW5nID0gZmFsc2U7XHJcbiAgICBoaWRkZW5TZXR0aW5nID0gZmFsc2U7XHJcbiAgICBoaWRkZW5TZXR0aW5nUGVybWlzc2lvbiA9IGZhbHNlO1xyXG4gICAgaGlkZGVuU2V0dGluZ1dvcmtmbG93ID0gZmFsc2U7XHJcbiAgICBoaWRkZW5TZXR0aW5nV29ya2Zsb3dOZXcgPSB0cnVlO1xyXG4gICAgaGlkZGVuUGFnZVRpdGxlID0gZmFsc2U7XHJcblxyXG4gICAgaGlkZGVuQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgIGhpZGRlbk9yZGVyQ29sdW1uID0gZmFsc2U7XHJcbiAgICBoaWRkZW5Xb3JrZmxvd0NvbHVtbiA9IGZhbHNlO1xyXG4gICAgaGlkZGVuRnVuY3Rpb25Db2x1bW4gPSBmYWxzZTtcclxuICAgIGhpZGRlblJlZnJlc2ggPSBmYWxzZTtcclxuICAgIGhpZGRlbkZpbHRlclJvdyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuVHJpbmhLeSA9IHRydWU7XHJcbiAgICB1c2VCYXNlVHJpbmhLeSA9IHRydWU7XHJcbiAgICBoaWRkZW5Xb3JrZmxvd0NvcmVTdGF0dXMgPSB0cnVlO1xyXG4gICAgcmVxdWlyZWRWYW5CYW5EaUFmdGVyVHJpbmhLeSA9IGZhbHNlO1xyXG5cclxuICAgIGdyb3VwQ29sdW1uPzogQ29sdW1uU2NoZW1hQmFzZTtcclxuXHJcbiAgICBzaG93RXhwb3J0QWxsID0gZmFsc2U7XHJcbiAgICBleHBvcnRBbGxNb2RlbDogRXhwb3J0QWxsTW9kZSA9IEV4cG9ydEFsbE1vZGUuQXV0b0dldERhdGE7XHJcbiAgICBleHBvcnRJdGVtc01vZGU6IEV4cG9ydEl0ZW1zTW9kZSA9IEV4cG9ydEl0ZW1zTW9kZS5Gcm9tSHRtbDtcclxuXHJcbiAgICBlbmFibGVWZXJzaW9uID0gZmFsc2U7XHJcbiAgICBzaG93VmVyc2lvbkJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgdmVyc2lvbk1vZGVsPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG4gICAgc2hvd0hpc3RvcnkgPSBmYWxzZTtcclxuICAgIGhpc3Rvcnk/OiBhbnk7XHJcblxyXG4gICAgY29sb3JGaWx0ZXJGaWVsZCA9ICcnO1xyXG4gICAgY29sb3JGaWx0ZXJUYWJsZT86IFJvd0NvbG9yT3B0aW9uW10gPSBbXTtcclxuXHJcbiAgICBlbnRpdHlNZXRhZGF0YVNldHRpbmc/OiBDcnVkRm9ybVNldHRpbmcgPSBuZXcgQ3J1ZEZvcm1TZXR0aW5nKCk7XHJcblxyXG4gICAgZmllbGRTZWFyY2hUZXh0Pzogc3RyaW5nW10gPSBbXTtcclxuICAgIGZpbHRlclRlbXBsYXRlQWR2cz86IEZpbHRlcltdO1xyXG5cclxuICAgIGZ1bmN0aW9uOiBDcnVkTGlzdEN1c3RvbUZ1bmN0aW9uID0gbmV3IENydWRMaXN0Q3VzdG9tRnVuY3Rpb24oKTtcclxuXHJcbiAgICBwb3B1cEhlYWRlcj89ICcnO1xyXG4gICAgcG9wdXBTaXplPzogUG9wdXBTaXplID0gbmV3IFBvcHVwU2l6ZSgpO1xyXG4gICAgbWFza0NsYXNzPzogc3RyaW5nO1xyXG5cclxuICAgIGdldEN1c3RvbURhdGFUcmluaEt5OiAocm93RGF0YSkgPT4gYW55ID0gKHJvd0RhdGEpID0+ICh7fSk7XHJcbiAgICBnZXRMYWJlbEJ1dHRvblRyaW5oS3k6IChyb3dEYXRhKSA9PiBzdHJpbmcgPSAocm93RGF0YSkgPT4gJ1Ryw6xuaCBrw70nO1xyXG4gICAgY2hlY2tSZWFkeVRvVHJpbmhLeTogKCkgPT4gYm9vbGVhbiA9ICgpID0+IHRydWU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRMaXN0U2V0dGluZykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFdvcmtmbG93Q29uZmlnQWR2YW5jZSB7XHJcbiAgICBnZXRXb3JrZmxvd1NldHRpbmc6IChyb3dEYXRhKSA9PiBXb3JrZmxvd1NldHRpbmdOZXc7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkTGlzdEN1c3RvbUZ1bmN0aW9uIHtcclxuICAgIC8vIEN1c3RvbWl6ZVxyXG4gICAgZ2V0U2VhcmNoQ29udHJvbD86IChmaWVsZDogc3RyaW5nKSA9PiBGb3JtU2NoZW1hQmFzZVtdID0gKGZpZWxkOiBzdHJpbmcpID0+IG51bGw7XHJcbiAgICAvLyBBc3luYyBmdW5jdGlvblxyXG4gICAgbW9kaWZ5QWR2YW5jZVNlYWNoTW9kZWw/OiAoZGF0YTogQWR2YW5jZVNlYXJjaERhdGEsIHNldHRpbmc6IEFkdmFuY2VTZWFyY2hTZXR0aW5nKSA9PiBQcm9taXNlPHZvaWQ+ID0gYXN5bmMgKGRhdGEpID0+IG51bGw7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3RDdXN0b21GdW5jdGlvbikge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBlcnNvbmFsU2V0dGluZyB7XHJcbiAgICBjb2x1bW5TZXR0aW5nPzogQ29sdW1uU2V0dGluZyA9IG5ldyBDb2x1bW5TZXR0aW5nKCk7XHJcbiAgICBwYWdlU2V0dGluZz86IFBhZ2VTZXR0aW5nID0gbmV3IFBhZ2VTZXR0aW5nKCk7XHJcbiAgICBjb2xvckZpbHRlckZpZWxkID0gJyc7XHJcbiAgICBjb2xvckZpbHRlclRhYmxlPzogUm93Q29sb3JPcHRpb25bXSA9IFtdO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFBlcnNvbmFsU2V0dGluZykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENydWRMaXN0RGF0YSBleHRlbmRzIENydWRCYXNlIHtcclxuICAgIGxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHJlYWR5ID0gdHJ1ZTtcclxuICAgIGRhdGFTb3VyY2U/OiBhbnlbXSA9IFtdO1xyXG4gICAgc2VsZWN0ZWRJdGVtcz86IGFueVtdID0gW107XHJcbiAgICBzZWxlY3RlZEl0ZW0/OiBhbnk7XHJcbiAgICBzZWxlY3RlZEl0ZW1MYXN0PzogYW55O1xyXG4gICAgc2VsZWN0ZWRJZD86IG51bWJlcjtcclxuICAgIHRvdGFsID0gMDtcclxuICAgIGl0ZW1EYXRhPzogYW55O1xyXG4gICAgYWR2YW5jZURhdGE6IGFueSA9IHt9O1xyXG5cclxuICAgIGV4cGFuZGVkUm93S2V5cz86IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRMaXN0RGF0YSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRW50aXR5TWVkYXRhRGF0YVNldHRpbmcge1xyXG4gICAgZGF0YT86IGFueSA9IHt9O1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEVudGl0eU1lZGF0YURhdGFTZXR0aW5nKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUm93Q29sb3JPcHRpb24ge1xyXG4gICAgZmlsdGVyVmFsdWUgPSAnJztcclxuICAgIGNvbXBhcmVUeXBlID0gJyc7XHJcbiAgICBjb2xvciA9ICcnO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFJvd0NvbG9yT3B0aW9uKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUGFnZVNldHRpbmcge1xyXG4gICAgcGFnZSA9IDE7XHJcbiAgICBwYWdlU2l6ZSA9IDE1O1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFBhZ2VTZXR0aW5nKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29sdW1uU2V0dGluZyB7XHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPzogc3RyaW5nO1xyXG4gICAgc29ydERpcj86IC0xIHwgMCB8IDEgfCAyID0gLTE7XHJcbiAgICBncm91cEZpZWxkID0gJyc7XHJcbiAgICBkZXRhaWxzPzogQ29sdW1uU2V0dGluZ0RldGFpbFtdID0gW107XHJcbiAgICBjb2x1bW5SZW9yZGVyP1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbHVtblNldHRpbmcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb2x1bW5TZXR0aW5nRGV0YWlsIHtcclxuICAgIG9yZGVyPzogbnVtYmVyO1xyXG4gICAgY29sdW1uQ29kZT86IHN0cmluZztcclxuICAgIGNvbHVtbk5hbWU/OiBzdHJpbmc7XHJcbiAgICB2aXNpYmxlPzogYm9vbGVhbjtcclxuICAgIHRleHRBbGlnbj86IFRleHRBbGlnbjtcclxuICAgIHdpZHRoPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3J1ZEZvcm1EYXRhIGV4dGVuZHMgQ3J1ZEJhc2Uge1xyXG4gICAgZGF0YT86IGFueSA9IHt9O1xyXG4gICAgc3VibWl0dGluZz89IGZhbHNlO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUcuG6oW5nIHRow6FpIGPhu6dhIGZvcm0gxJFhbmcgxJHGsOG7o2MgbeG7nzogTMOgIGZvcm0gdGjDqm0gbeG7m2ksIGhheSBmb3JtIHPhu61hLCBoYXkgZm9ybSB4w7NhXHJcbiAgICAgKi9cclxuICAgIGZvcm1TdGF0ZT86IEZvcm1TdGF0ZSA9IEZvcm1TdGF0ZS5BREQ7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZEZvcm1EYXRhKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkRm9ybUN1c3RvbUZ1bmN0aW9uIHtcclxuICAgIC8vIEN1c3RvbWl6ZVxyXG4gICAgbW9kaWZ5RGF0YUFmdGVyR2V0Q2FjaGU/OiAoZGF0YTogYW55KSA9PiB2b2lkID0gKGRhdGE6IGFueSkgPT4gbnVsbDtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkTGlzdEN1c3RvbUZ1bmN0aW9uKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3J1ZEZvcm1TZXR0aW5nIHtcclxuICAgIGRpc2FibGVDYWNoaW5nID0gZmFsc2U7XHJcbiAgICBoaWRkZW5UcmluaEt5ID0gdHJ1ZTtcclxuICAgIHNjaGVtYT86IEZvcm1TY2hlbWFCYXNlW10gPSBbXTtcclxuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2U7XHJcbiAgICBidWlsZEluU2NoZW1hPzogRm9ybUNvbnRyb2xCYXNlW10gPSBbXTtcclxuICAgIHVuaXF1ZUZpZWxkPzogc3RyaW5nW10gfCBzdHJpbmdbXVtdID0gW107XHJcbiAgICBmaWVsZERyb3Bkb3duPzogeyBba2V5OiBzdHJpbmddOiBEcm9wZG93bkNvbnRyb2xTY2hlbWEgfSA9IHt9O1xyXG4gICAgZmllbGROZWVkR2V0UmVmPzogeyBba2V5OiBzdHJpbmddOiBUZXh0Q29udHJvbFNjaGVtYSB9ID0ge307XHJcbiAgICBkaXNwbGF5RmllbGQ/OiBzdHJpbmcgfCAoKGl0ZW0pID0+IHN0cmluZyk7XHJcbiAgICBmaXJzdEZvY3VzQ29udHJvbD86IHN0cmluZztcclxuICAgIGZpbHRlckNoZWNrRXhpc3RCeVZlcnNpb24/OiBGaWx0ZXJbXTtcclxuICAgIGRlZmF1bHRGaWx0ZXJDaGVja0V4aXN0PzogRmlsdGVyW10gfCAoKCkgPT4gRmlsdGVyW10pO1xyXG4gICAgY3VzdG9tV29ya2Zsb3dDb2RlVHJpbmhLeTogRW51bVdvcmtmbG93Q29yZUNvZGVTZXR0aW5nS2V5ID0gRW51bVdvcmtmbG93Q29yZUNvZGVTZXR0aW5nS2V5Lk1BQ19ESU5IO1xyXG4gICAgZW50aXR5TWV0YWRhdGFEYXRhPzogQ3J1ZEZvcm1EYXRhO1xyXG4gICAgZW50aXR5TWV0YWRhdGFTZXR0aW5nPzogQ3J1ZEZvcm1TZXR0aW5nO1xyXG4gICAgZnVuY3Rpb24/OiBDcnVkRm9ybUN1c3RvbUZ1bmN0aW9uID0gbmV3IENydWRGb3JtQ3VzdG9tRnVuY3Rpb24oKTtcclxuICAgIGdldEN1c3RvbURhdGFUcmluaEt5OiAocm93RGF0YSkgPT4gYW55ID0gKHJvd0RhdGEpID0+ICh7fSk7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZEZvcm1TZXR0aW5nKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQWR2YW5jZVNlYXJjaERhdGEgZXh0ZW5kcyBDcnVkRm9ybURhdGEge1xyXG4gICAgaW5pdERhdGE/OiBhbnkgPSB7fTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBBZHZhbmNlU2VhcmNoRGF0YSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQWR2YW5jZVNlYXJjaFNldHRpbmcgZXh0ZW5kcyBDcnVkRm9ybVNldHRpbmcge1xyXG4gICAgZmllbGRLZXkgPSAnX2snO1xyXG4gICAgZW50aXR5UGVybWlzc2lvblNjaGVtYT86IEZvcm1Db250cm9sQmFzZVtdID0gW107XHJcbiAgICBrZWVwSW5pdFNlYXJjaERhdGFOb3ROdWxsID0gdHJ1ZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBBZHZhbmNlU2VhcmNoU2V0dGluZykge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2NoZW1hQmFzZSB7XHJcbiAgICBmaWVsZD86IHN0cmluZztcclxuICAgIHVuaXF1ZUZpZWxkPzogc3RyaW5nO1xyXG4gICAgdHlwZT86ICdib29sZWFuJyB8ICdpbnQnIHwgJ2RlY2ltYWwnIHwgJ2RhdGV0aW1lJyB8ICdzdHJpbmcnID0gJ3N0cmluZyc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFNjaGVtYUJhc2UpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtU2NoZW1hQmFzZSBleHRlbmRzIFNjaGVtYUJhc2Uge1xyXG4gICAgbGFiZWw/OiBzdHJpbmc7XHJcbiAgICBmdWxsTGFiZWw/OiBzdHJpbmc7XHJcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcclxuICAgIHNob3dMYWJlbD89IHRydWU7XHJcbiAgICBnV2lkdGg/PSAxMjtcclxuICAgIG1kV2lkdGg/PSA2O1xyXG4gICAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgICBjbGFzcz89ICcnO1xyXG4gICAgc3R5bGU/OiBhbnkgPSB7fTtcclxuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcclxuICAgIGhpZGRlbj89IGZhbHNlO1xyXG4gICAgaGlkZGVuQ2hlY2s/OiAocm9vdE1vZGVsOiBhbnksIGN1cnJlbnROb2RlOiBDb250cm9sVHJlZU5vZGUpID0+IGJvb2xlYW47XHJcbiAgICBoaWRkZW5PblZpZXc/PSBmYWxzZTtcclxuICAgIHZpc2libGVJbkxpc3Q/PSB0cnVlO1xyXG4gICAgb3BlcmF0b3I/OiBPcGVyYXRvcjtcclxuICAgIGdyb3VwQ29kZT89ICcnO1xyXG4gICAgZGVmYXVsdFZhbHVlPzogYW55O1xyXG4gICAgZmllbGRBbGlhcz89ICcnO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZvcm1TY2hlbWFCYXNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb250YWluZXJTY2hlbWEgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZSB7XHJcbiAgICBjb250cm9sczogRm9ybVNjaGVtYUJhc2VbXTtcclxuICAgIHNob3dJbkJveD89IHRydWU7XHJcbiAgICBib3hTdHlsZT86IGFueTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDb250YWluZXJTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1TY2hlbWFCYXNlV2l0aFNlcnZpY2UgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZSB7XHJcbiAgICAvLyBVcmwgxJHhu4MgbOG6pXkgZOG7ryBsaeG7h3UgKioqIEtIw5RORyBT4busIEThu6RORyBUUk9ORyBDw4FDIENBU0UgUEjhu5QgQknhur5OLCBDSOG7iCBT4busIEThu6RORyDEkOG7kEkgVuG7mkkgRk9STSBLSOG6ok8gU8OBVCAqKipcclxuICAgIHNlcnZpY2VVcmk/PSAnJztcclxuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2UgfCBNYXN0ZXJEYXRhU2VydmljZTtcclxuICAgIHJlZkZpZWxkcz86IFJlZkZpZWxkW10gPSBbXTtcclxuICAgIGdyb3VwQ29kZT86IHN0cmluZztcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ3Rlbic7XHJcbiAgICBkYXRhU291cmNlPzogYW55W10gPSBbXTtcclxuXHJcbiAgICBpc1NlcnZlckxvYWQ/PSBmYWxzZTtcclxuICAgIHNlYXJjaEZpZWxkPzogc3RyaW5nW107XHJcblxyXG4gICAgaXNUcmVlPz0gZmFsc2U7XHJcbiAgICBmaWVsZFRyZWU/OiBzdHJpbmc7XHJcbiAgICB2YWx1ZVBhcmVudFJvb3Q/OiBhbnkgPSBudWxsOyAvLyBHacOhIHRy4buLIHRyxrDhu51uZyBbZmllbGRUcmVlXSBj4bunYSBpdGVtIHRyZWUgcm9vdFxyXG4gICAgZmllbGRQYXJlbnRUcmVlSXRlbT89ICdpZCc7IC8vIFRyxrDhu51uZyB4w6FjIMSR4buLbmggYuG6o24gZ2hpIGzDoCBi4bqjbiBnaGkgY2hhIGPhu6dhIGLhuqNuIGdoaSBjb25cclxuICAgIHNlbGVjdENoaWxkSXRlbT89IGZhbHNlOyAvLyBDw7Mgc2VsZWN0IGLhuqNuIGdoaSBjb24gbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcclxuXHJcbiAgICBwbHVzVXJsPzogc3RyaW5nO1xyXG4gICAgc29ydHM/OiBTb3J0W10gPSBbXTtcclxuICAgIHNvcnRGaWVsZD89ICcnO1xyXG4gICAgc29ydERpcj86IDEgfCAtMSA9IDE7XHJcbiAgICBmaWVsZFBsdXM/PSAnJzsgLy8gRGFuaCBzw6FjaCBuaOG7r25nIHRyxrDhu51uZyBi4buVIHN1bmcgY+G6p24gbOG6pXkgdGjDqm0gbmdvw6BpIGlkLCB0ZW47IFbDrSBk4bulICxtYVxyXG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47IC8vIHR1bmd0cyB0aMOqbSBraeG7g3UgZOG7ryBsaeG7h3UgZGVmYXVsdEZpbHRlcnMgbMOgIHByb21pc2VcclxuICAgIGFmdGVyR2V0RGF0YT86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGZ1bmNTZXREZWZhdWx0VmFsdWU/OiBGdW5jdGlvbjtcclxuXHJcbiAgICBmaWVsZFZhbHVlUGFyZW50Pz0gJ3ZhbHVlJzsgLy8gVHLGsOG7nW5nIHPhu60gZOG7pW5nIMSR4buDIGzhuqV5IGThu68gbGnhu4d1IGzDoG0ga2jDs2EgdOG7qyBi4bqjbmcgY2hhIGPhu6dhIGl0ZW0gZHJvcCBkb3duIMSRxrDhu6NjIGNo4buNblxyXG5cclxuICAgIGNhbGxiYWNrRGF0YUZpbmlzaD86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIG1vZGlmeUZpbHRlcj86IEZ1bmN0aW9uO1xyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGb3JtU2NoZW1hQmFzZVdpdGhTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBMYWJlbFNjaGVtYSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcclxuICAgIGZvcj89ICcnO1xyXG4gICAgaXNIdG1sPz0gZmFsc2U7XHJcbiAgICBtZFdpZHRoPz0gMTI7XHJcbiAgICBpbmRleExhYmVsPzogbnVtYmVyO1xyXG4gICAgdGV4dD89ICcnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBMYWJlbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGl0bGVTY2hlbWEgZXh0ZW5kcyBMYWJlbFNjaGVtYSB7XHJcbiAgICBjbGFzcz89ICd0aXRsZS1ncm91cCB0ZXh0LWJvbGQnO1xyXG4gICAgbWRXaWR0aD89IDEyO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRpdGxlU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtQ29udHJvbEJhc2UgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZSB7XHJcbiAgICBfY29tcG9uZW50PzogYW55OyAvLyBDb21wb25lbnQgY+G7p2Egc2NoZW1hIGtoaSBraOG7n2kgdOG6oW9cclxuICAgIHVuaXF1ZUZpZWxkPzogc3RyaW5nOyAvLyBT4butIGThu6VuZyB0cm9uZyB0YWJsZSBzY2hlbWFcclxuICAgIGF1dG9mb2N1cz89IGZhbHNlO1xyXG4gICAgdmFsaWRhdG9ycz86IElWYWxpZGF0b3JbXSA9IFtdO1xyXG4gICAgY29ycmVjdG9ycz86IElDb3JyZWN0b3JbXSA9IFtdO1xyXG4gICAgcmVxdWlyZWQ/PSBmYWxzZTtcclxuICAgIGVuYWJsZUNhY2hpbmc/PSBmYWxzZTtcclxuICAgIG9uQ2hhbmdlZD86IEZ1bmN0aW9uO1xyXG4gICAgdHJpZ2dlckxvYWRDaGlsZD86IEZ1bmN0aW9uO1xyXG4gICAgaGFzT3BlcmF0b3JDYW5Cbz89IGZhbHNlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZvcm1Db250cm9sQmFzZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybUNvbnRyb2xCYXNlV2l0aFNlcnZpY2UgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgLyoqIENvcHkgdOG7qyBGb3JtU2NoZW1hQmFzZVdpdGhTZXJ2aWNlICovXHJcbiAgICAvLyBVcmwgxJHhu4MgbOG6pXkgZOG7ryBsaeG7h3UgKioqIEtIw5RORyBT4busIEThu6RORyBUUk9ORyBDw4FDIENBU0UgUEjhu5QgQknhur5OLCBDSOG7iCBT4busIEThu6RORyDEkOG7kEkgVuG7mkkgRk9STSBLSOG6ok8gU8OBVCAqKipcclxuICAgIHNlcnZpY2VVcmk/PSAnJztcclxuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2UgfCBNYXN0ZXJEYXRhU2VydmljZTtcclxuICAgIHJlZkZpZWxkcz86IFJlZkZpZWxkW10gPSBbXTtcclxuICAgIGdyb3VwQ29kZT86IHN0cmluZztcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ3Rlbic7XHJcblxyXG4gICAgaXNTZXJ2ZXJMb2FkPz0gZmFsc2U7XHJcbiAgICBzZWFyY2hGaWVsZD86IHN0cmluZ1tdO1xyXG5cclxuICAgIGlzVHJlZT89IGZhbHNlO1xyXG4gICAgZmllbGRUcmVlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVQYXJlbnRSb290PzogYW55ID0gbnVsbDsgLy8gR2nDoSB0cuG7iyB0csaw4budbmcgW2ZpZWxkVHJlZV0gY+G7p2EgaXRlbSB0cmVlIHJvb3RcclxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/PSAnaWQnOyAvLyBUcsaw4budbmcgeMOhYyDEkeG7i25oIGLhuqNuIGdoaSBsw6AgYuG6o24gZ2hpIGNoYSBj4bunYSBi4bqjbiBnaGkgY29uXHJcbiAgICBzZWxlY3RDaGlsZEl0ZW0/PSBmYWxzZTsgLy8gQ8OzIHNlbGVjdCBi4bqjbiBnaGkgY29uIG7hur91IGNo4buNbiBi4bqjbiBnaGkgY2hhXHJcblxyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIHNvcnRzPzogU29ydFtdID0gW107XHJcbiAgICBzb3J0RmllbGQ/PSAnJztcclxuICAgIHNvcnREaXI/OiAxIHwgLTEgPSAxO1xyXG4gICAgZmllbGRQbHVzPz0gJyc7IC8vIERhbmggc8OhY2ggbmjhu69uZyB0csaw4budbmcgYuG7lSBzdW5nIGPhuqduIGzhuqV5IHRow6ptIG5nb8OgaSBpZCwgdGVuOyBWw60gZOG7pSAsbWFcclxuICAgIGRlZmF1bHRGaWx0ZXJzPzogRmlsdGVyW10gfCBGdW5jdGlvbiB8IFByb21pc2U8RmlsdGVyW10+OyAvLyB0dW5ndHMgdGjDqm0ga2nhu4N1IGThu68gbGnhu4d1IGRlZmF1bHRGaWx0ZXJzIGzDoCBwcm9taXNlXHJcbiAgICBiaW5kaW5nRmlsdGVycz86IEZpbHRlcltdIHwgRnVuY3Rpb24gfCBQcm9taXNlPEZpbHRlcltdPjsgLy8gdHVuZ3RzIHRow6ptIGtp4buDdSBk4buvIGxp4buHdSBkZWZhdWx0RmlsdGVycyBsw6AgcHJvbWlzZVxyXG4gICAgYWZ0ZXJHZXREYXRhPzogRnVuY3Rpb247XHJcblxyXG4gICAgZnVuY1NldERlZmF1bHRWYWx1ZT86IEZ1bmN0aW9uO1xyXG5cclxuICAgIHBhcmVudEZpZWxkPzogc3RyaW5nOyAvLyBDb2x1bW4gdMawxqFuZyDhu6luZyB0cm9uZyB0YWJsZSBzcWwgc2VydmVyLlxyXG4gICAgZmllbGRWYWx1ZVBhcmVudD89ICd2YWx1ZSc7IC8vIFRyxrDhu51uZyBz4butIGThu6VuZyDEkeG7gyBs4bqleSBk4buvIGxp4buHdSBsw6BtIGtow7NhIHThu6sgYuG6o25nIGNoYSBj4bunYSBpdGVtIGRyb3AgZG93biDEkcaw4bujYyBjaOG7jW5cclxuXHJcbiAgICBjYWxsYmFja0RhdGFGaW5pc2g/OiAoZXZ0OiBFdmVudERhdGEpID0+IHZvaWQ7XHJcbiAgICBmaXJlQ2FsbEJhY2tJbnNpZGU/PSB0cnVlO1xyXG4gICAgbW9kaWZ5RmlsdGVyPzogRnVuY3Rpb247XHJcblxyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuICAgIC8qKiBFbmQgY29weSB04burIEZvcm1TY2hlbWFCYXNlV2l0aFNlcnZpY2UgKi9cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRm9ybUNvbnRyb2xCYXNlV2l0aFNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRleHRDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIHNlbGVjdEFsbFRleHQ/PSBmYWxzZTsgLy8gQ2jhu41uIHThuqV0IGPhuqMgdGV4dCBraGkgZm9jdXNcclxuXHJcbiAgICBwbGFjZWhvbGRlcj89ICcnO1xyXG4gICAgZGF0YUZvcm1hdD86ICd0ZXh0JyB8ICdwYXNzd29yZCcgfCAnbnVtYmVyJyB8ICdlbWFpbCcgfCAncGhvbmUnIHwgJ2ZheCcgfCAnbW9uZXknIHwgJ21vbmV5aW50JyB8ICdhbW91bnQnID0gJ3RleHQnO1xyXG4gICAgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG4gICAgbWluPz0gMDtcclxuICAgIG1heD89IDk5OTk5OTk5O1xyXG5cclxuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2UgfCBNYXN0ZXJEYXRhU2VydmljZTtcclxuICAgIGdyb3VwQ29kZT86IHN0cmluZztcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ3Rlbic7XHJcblxyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIHNvcnRzPzogU29ydFtdID0gW107XHJcbiAgICBzb3J0RmllbGQ/PSAnJztcclxuICAgIHNvcnREaXI/OiAxIHwgLTEgPSAxO1xyXG4gICAgZmllbGRQbHVzPz0gJyc7IC8vIERhbmggc8OhY2ggbmjhu69uZyB0csaw4budbmcgYuG7lSBzdW5nIGPhuqduIGzhuqV5IHRow6ptIG5nb8OgaSBpZCwgdGVuOyBWw60gZOG7pSAsbWFcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGV4dENvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRleHRDb250cm9sU2NoZW1hV2l0aFNlcnZpY2UgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2VXaXRoU2VydmljZSB7XHJcbiAgICBwbGFjZWhvbGRlcj89ICcnO1xyXG4gICAgZGF0YUZvcm1hdD86ICd0ZXh0JyB8ICdudW1iZXInIHwgJ2VtYWlsJyB8ICdwaG9uZScgfCAnZmF4JyB8ICdtb25leScgfCAnbW9uZXlpbnQnIHwgJ2Ftb3VudCcgPSAndGV4dCc7XHJcbiAgICBtYXhMZW5ndGg/OiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRleHRDb250cm9sU2NoZW1hV2l0aFNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE1hc2tDb250cm9sU2NoZW1hIGV4dGVuZHMgVGV4dENvbnRyb2xTY2hlbWEge1xyXG4gICAgbWFza1R5cGU/OiAnZGVjaW1hbCcgfCAnaW50JyA9ICdpbnQnO1xyXG4gICAgbWluPz0gMDtcclxuICAgIG1heD89IDk5OTk5OTk5OTk7XHJcbiAgICBwcmVmaXg/PSAnJztcclxuICAgIHN1ZmZpeD89ICcnO1xyXG4gICAgZGVjaW1hbFBsYWNlcz89IDI7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogTWFza0NvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSBleHRlbmRzIFRleHRDb250cm9sU2NoZW1hIHtcclxuICAgIG1hc2tUeXBlPzogJ2RlY2ltYWwnIHwgJ2ludCc7XHJcbiAgICBtaW4/PSAwO1xyXG4gICAgbWF4Pz0gOTk5OTk5OTk5OTtcclxuICAgIHByZWZpeD89ICcnO1xyXG4gICAgc3VmZml4Pz0gJyc7XHJcbiAgICBkZWNpbWFsUGxhY2VzPz0gMjtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVUaW1lQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBhcHBlbmRUbz89ICdib2R5JztcclxuICAgIHBhbmVsQ2xhc3M/PSAnJztcclxuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gICAgc2hvd1RpbWU/PSBmYWxzZTtcclxuICAgIHNob3dJY29uPz0gdHJ1ZTtcclxuICAgIGZvcm1hdD86ICdub3JtYWwnIHwgJ2Zyb21Ob3cnID0gJ2Zyb21Ob3cnO1xyXG4gICAgc2hvd09uRm9jdXM/PSB0cnVlO1xyXG4gICAgbWluRGF0ZT86IERhdGUgPSBudWxsO1xyXG4gICAgbWF4RGF0ZT86IERhdGUgPSBudWxsO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEYXRlVGltZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLnNob3dUaW1lID8gJ2RkL01NL3l5eXkgaGg6bW0nIDogJ2RkL01NL3l5eXknO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVUaW1lUmFuZ2VDb250cm9sU2NoZW1hIGV4dGVuZHMgRGF0ZVRpbWVDb250cm9sU2NoZW1hIHtcclxuICAgIHNob3dJY29uPz0gZmFsc2U7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRGF0ZVRpbWVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlQaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlV2l0aFNlcnZpY2Uge1xyXG5cclxuICAgIC8vICNQcm9wZXJ0eSBvdmVycmlkZVxyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZTtcclxuICAgIC8vICNFbmQgcHJvcGVydHkgb3ZlcnJpZGVcclxuXHJcbiAgICByZXR1cm5UeXBlPzogJ3ZhbHVlJyB8ICdvYmplY3QnID0gJ3ZhbHVlJztcclxuXHJcbiAgICBtdWx0aXBsZT89IHRydWU7XHJcbiAgICBsaW1pdD89IDEwMDA7XHJcbiAgICB0aXRsZT89ICcgJztcclxuICAgIGNvbHVtbnM/OiBFbnRpdHlQaWNrZXJDb2x1bW5bXTtcclxuICAgIGZpZWxkU2VhcmNoVGV4dD86IHN0cmluZ1tdID0gW107XHJcbiAgICBkYXRhSW5pdD86IGFueSA9IHt9O1xyXG4gICAgYWR2YW5jZVNlYXJjaE1vZGVsPzogYW55ID0ge307XHJcbiAgICBvblNlYXJjaEZvcm1Jbml0aWFsaXplZD86IEZ1bmN0aW9uO1xyXG4gICAgb25Gb3JtRXZlbnQ/OiBGdW5jdGlvbjtcclxuICAgIG9uU2VsZWN0RW50aXR5PzogRnVuY3Rpb247IC8vIG7hur91IGZ1bmN0aW9uIGtow6FjIG51bGwgdsOgIHJldHVybiB0cnVlIHPhur0gY2hvIHBow6lwIG3hu58gZGlhbG9nXHJcbiAgICBhZnRlckNvbnRlbnRMZWZ0SW5pdD86IChjcnVkTGlzdDogQ3J1ZExpc3RDb21wb25lbnQpID0+IHZvaWQ7IC8vIFNhdSBraGkgY8OhYyB0ZW1wbGF0ZSBjb250ZW50IGluaXRcclxuICAgIGFmdGVyQ29udGVudFJpZ2h0SW5pdD86IChjcnVkTGlzdDogQ3J1ZExpc3RDb21wb25lbnQpID0+IHZvaWQ7IC8vIFNhdSBraGkgY8OhYyB0ZW1wbGF0ZSBjb250ZW50IGluaXRcclxuICAgIGFmdGVyR2V0RGF0YT86IChzb3VyY2VzOiBhbnlbXSwgZWxlbWVudDogRW50aXR5UGlja2VyQ29tcG9uZW50KSA9PiB2b2lkO1xyXG4gICAgYWZ0ZXJHZXREYXRhVW5QaWNrZWQ/OiAoc291cmNlczogYW55W10sIGVsZW1lbnQ6IEVudGl0eVBpY2tlckRhdGFDb21wb25lbnQpID0+IHZvaWQ7XHJcbiAgICBhZnRlckdldERhdGFQaWNrZWQ/OiAoc291cmNlczogYW55W10sIGVsZW1lbnQ6IEVudGl0eVBpY2tlclNlbGVjdGVkQ29tcG9uZW50KSA9PiB2b2lkO1xyXG5cclxuICAgIC8vIEPDsyBz4butIGThu6VuZyBwbHVzVXJsIOG7nyBtw6BuIGjDrG5oIGNow61uaCBFbnRpdHlQaWNrZXIgaGF5IGtow7RuZy5cclxuICAgIHVzZURlZmF1bHRQbHVzbFVybEluTGlzdD89IGZhbHNlO1xyXG5cclxuICAgIC8vIEPDsyBz4butIGThu6VuZyBkZWZhdWx0RmlsdGVyIGtoaSB0w6xtIGtp4bq/bSBkYW5oIHPDoWNoIOG7nyBtw6BuIGjDrG5oIGNow61uaCBFbnRpdHlQaWNrZXIuXHJcbiAgICB1c2VEZWZhdWx0RmlsdGVySW5MaXN0Pz0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEVudGl0eVBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBFbnRpdHlQaWNrZXJDb250cm9sU2NoZW1hIHtcclxuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gICAgZGF0YVR5cGU/OiBFbnVtQ29udHJvbFBpY2tlclR5cGUgPSBFbnVtQ29udHJvbFBpY2tlclR5cGUuVVNFUjtcclxuICAgIGFwcGVuZFRvPz0gJ2JvZHknO1xyXG4gICAgbW9kaWZ5SW5pdFNlYXJjaERhdGE/OiBGdW5jdGlvbjsgLy8gU+G7rSBk4bulbmcgxJHhu4MgbW9kaWZ5IGRhdGEgY+G7p2EgcGjhuqduIHNlYXJjaCwgdGjGsOG7nW5nIMSR4buDIHNldCBpbml0IGRhdGEgZHluYW1pYyB0aGVvIG5odSBj4bqndVxyXG4gICAgY2FsbEJhY2s/OiB7IFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uIH07XHJcbiAgICBvblJlYWR5PzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgbW9kaWZ5Q29udHJvbD86IEZ1bmN0aW9uOyAvLyBT4butIGThu6VuZyDEkeG7gyBtb2RpZnkgc2NoZW1hIGJhc2VcclxuICAgIG5lZWRDbG9uZT89IGZhbHNlOyAvLyBT4butIGThu6VuZyB0cm9uZyB0YWJsZSBzY2hlbWEsIGtoaSBkYXRhc291cmNlIGPhu6dhIG3hu5l0IGPhu5l0IHRyw6puIG3hu5dpIGTDsm5nIGzDoCBraMOhYyBuaGF1IGPhuqduIHNldCBuZWVkQ2xvbmUgPSB0cnVlXFxcclxuICAgIGFmdGVyR2V0RGF0YURyb3Bkb3duPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBBdXRvQ29tcGxldGVQaWNrZXJDb21wb25lbnQpID0+IHZvaWQ7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV3JhcFBpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hIHtcclxuICAgIGRhdGFUeXBlPzogRW51bUNvbnRyb2xQaWNrZXJUeXBlID0gRW51bUNvbnRyb2xQaWNrZXJUeXBlLlVTRVI7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogV3JhcFBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEN1c3RvbUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3VzdG9tQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29sb3JQaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGVuYWJsZUNhY2hpbmc/PSB0cnVlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbG9yUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFNwYW5Db250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIHNvdXJjZUZpZWxkPzogc3RyaW5nO1xyXG4gICAgaXNodG1sPz0gZmFsc2U7XHJcbiAgICBlZGl0YWJsZT89IGZhbHNlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFNwYW5Db250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb2xvckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgc291cmNlRmllbGQ/OiBzdHJpbmc7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29sb3JDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBLZXlWYWx1ZUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEtleVZhbHVlQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRmlsZU1hbmFnZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIG1kV2lkdGg/PSAxMjtcclxuICAgIGFjY2VwdD86IHN0cmluZztcclxuICAgIG1heEZpbGVTaXplPz0gMTAwMDAwMDAwO1xyXG4gICAgaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnk/PSAnezB9OiBRdcOhIGR1bmcgbMaw4bujbmcgZmlsZSBjaG8gcGjDqXAsICc7XHJcbiAgICBpbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsPz0gJ2R1bmcgbMaw4bujbmcgdOG7kWkgxJFhIGzDoCB7MH0uJztcclxuICAgIGludmFsaWRGaWxlVHlwZU1lc3NhZ2VTdW1tYXJ5Pz0gJ3swfTogS2jDtG5nIMSRw7puZyDEkeG7i25oIGThuqFuZyBmaWxlLCAnO1xyXG4gICAgaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbD89ICfEkeG7i25oIGThuqFuZyBmaWxlIGNobyBwaMOpcDogezB9Lic7XHJcbiAgICBpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZVN1bW1hcnk/PSAnUXXDoSBz4buRIGzGsOG7o25nIGZpbGUgY2hvIHBow6lwLCAnO1xyXG4gICAgaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VEZXRhaWw/PSAndOG7kWkgxJFhIHswfSBmaWxlLic7XHJcbiAgICBtb2RlPzogRmlsZU1hbmFnZXJNb2RlIHwgRmlsZVVwbG9hZE1vZGUgPSBGaWxlTWFuYWdlck1vZGUubXVsdGlwbGU7XHJcbiAgICBsYXlvdXQ/OiBFbnVtRmlsZUxheW91dCA9IEVudW1GaWxlTGF5b3V0LkxJU1Q7XHJcbiAgICByZWFkb25seT89IGZhbHNlO1xyXG5cclxuICAgIC8vIFNlcnZpY2UgZMO5bmcgxJHhu4MgbOG6pXkgZGF0YXNvdXJjZSBj4bunYSBuaGnhu4F1IGNvbnRyb2wgbeG7mXQgbOG6p24uXHJcbiAgICBmaWxlRGF0YVNlcnZpY2U/OiBGaWxlRGF0YVNlcnZpY2U7XHJcblxyXG4gICAgLy8gQuG7mSAzIGtleSDEkeG7gyBs4bqleSB0aMawIG3hu6VjIGfhu5FjLlxyXG4gICAgc2VydmljZUNvZGU/OiBzdHJpbmc7XHJcbiAgICBlbnRpdHk/OiBzdHJpbmc7XHJcbiAgICBlbnRpdHlLZXk/OiBzdHJpbmc7XHJcblxyXG4gICAgLy8gVMOqbiB0aMawIG3hu6VjIGfhu5FjIGtoaSBoaeG7g24gdGjhu4sgdHLDqm4gYnJlYWRjcnVtYnMuXHJcbiAgICByb290Rm9sZGVyTmFtZT86IHN0cmluZztcclxuXHJcbiAgICAvLyBUcsaw4budbmcgaOG7o3Ag4bufIHRyb25nIGZvcm0sIGTDuW5nIHRyxrDhu51uZyBuw6B5IMSR4buDIGzhuqV5XHJcbiAgICAvLyBlbnRpdHlLZXkgdOG7qyBtb2RlbC5kYXRhIHRoYXkgdsOsIHRydXnhu4FuIHbDoG8gZW50aXR5S2V5XHJcbiAgICBlbnRpdHlLZXlGaWVsZD89ICdpZCc7XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGaWxlTWFuYWdlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb250cm9sU2NoZW1hIGV4dGVuZHMgRmlsZU1hbmFnZXJDb250cm9sU2NoZW1hIHtcclxuICAgIG1vZGU/PSBGaWxlVXBsb2FkTW9kZS51c2luZ1NlcnZpY2VGaWxlO1xyXG4gICAgbWRXaWR0aD89IDY7XHJcbiAgICBzaGFyZWRGb2xkZXJUeXBlPzogU2hhcmVkRm9sZGVyVHlwZSA9IFNoYXJlZEZvbGRlclR5cGUuVGVtcHQ7XHJcblxyXG4gICAgaGlkZGVuQnV0dG9ucz89IGZhbHNlO1xyXG4gICAgZGlzYWJsZWQ/PSBmYWxzZTtcclxuICAgIHJlYWRvbmx5Pz0gZmFsc2U7XHJcbiAgICBhdXRvU2F2ZWQ/PSB0cnVlO1xyXG5cclxuICAgIGVuYWJsZVNjYW4/PSBmYWxzZTtcclxuICAgIGV4dHJhY3RaaXBGaWxlPz0gZmFsc2U7XHJcbiAgICBlbmFibGVEcml2ZUZpbGU/PSBmYWxzZTtcclxuXHJcbiAgICBzaG93RG93bmxvYWRGaWxlPz0gdHJ1ZTtcclxuICAgIHNob3dEZWxldGVGaWxlPz0gdHJ1ZTtcclxuICAgIHNob3dQcmludEZpbGU/PSB0cnVlO1xyXG4gICAgbWF4RmlsZVNpemU/PSAxMDAwMDAwMDA7IC8vIDEwMCBNQlxyXG4gICAgaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnk/PSAnezB9OiBRdcOhIGR1bmcgbMaw4bujbmcgZmlsZSBjaG8gcGjDqXAsICc7XHJcbiAgICBpbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsPz0gJ2R1bmcgbMaw4bujbmcgdOG7kWkgxJFhIGzDoCB7MH0uJztcclxuICAgIGludmFsaWRGaWxlVHlwZU1lc3NhZ2VTdW1tYXJ5Pz0gJ3swfTogS2jDtG5nIMSRw7puZyDEkeG7i25oIGThuqFuZyBmaWxlLCAnO1xyXG4gICAgaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbD89ICfEkeG7i25oIGThuqFuZyBmaWxlIGNobyBwaMOpcDogezB9Lic7XHJcbiAgICBpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZVN1bW1hcnk/PSAnUXXDoSBz4buRIGzGsOG7o25nIGZpbGUgY2hvIHBow6lwLCAnO1xyXG4gICAgaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VEZXRhaWw/PSAndOG7kWkgxJFhIHswfSBmaWxlLic7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZpbGVVcGxvYWRDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBjbGFzcyBTd2l0Y2hDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBTd2l0Y2hDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDaGVja2JveENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBoaWRkZW5MYWJlbD89IGZhbHNlOyAvLyBTZXQgPSB0cnVlIGNo4bunIHnhur91IGtoaSBkw7luZyB0cm9uZyB0YWJsZSBzY2hlbWEgxJHhu4Mg4bqpbiBsYWJlbCDEkWksIHbDrCBsYWJlbCDEkcOjIGPDsyB0csOqbiB0acOqdSDEkeG7gSBj4buZdFxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENoZWNrYm94Q29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcclxuICAgIHNob3dMYWJlbD89IGZhbHNlO1xyXG4gICAgYnRDbGFzcz89ICdwLWJ1dHRvbi10ZXh0JztcclxuICAgIGljb24/O1xyXG4gICAgYnRTdHlsZT89IHsgd2lkdGg6ICdhdXRvJyB9O1xyXG4gICAgb25DbGljaz86IEZ1bmN0aW9uO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEJ1dHRvbkNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcclxuICAgIHRlbXBsYXRlOiBhbnk7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGVtcGxhdGVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUZXh0QXJlYUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgcm93cz89IDU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGV4dEFyZWFDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBVc2VyUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBhcHBlbmRUbz89ICdib2R5JztcclxuICAgIG11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIGxpbWl0Pz0gMjA7IC8vIEdp4bubaSBo4bqhbiBz4buRIG5nxrDhu51pIGTDuW5nIHThu5FpIMSRYSDEkcaw4bujYyBwaWNrXHJcbiAgICB0aXRsZT89ICdDaOG7jW4gbmfGsOG7nWkgZMO5bmcnO1xyXG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47XHJcbiAgICBlbmFibGVDYWNoaW5nPz0gdHJ1ZTtcclxuICAgIHBhcmVudE9yZ0NvZGU/OiBzdHJpbmc7XHJcbiAgICBwbGFjZWhvbGRlcj89ICcnO1xyXG4gICAgbGF6eUxvYWRPcmdhbml6YXRpb24/PSBmYWxzZTtcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ2Z1bGxOYW1lTmV3JztcclxuICAgIGZpZWxkUGx1cz89ICcnO1xyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIHJldHVyblR5cGU/OiAndmFsdWUnIHwgJ29iamVjdCcgPSAndmFsdWUnO1xyXG4gICAgb25SZWFkeT86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XHJcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVXNlclBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvQ2F1VG9DaHVjUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBhcHBlbmRUbz89ICdib2R5JztcclxuICAgIG11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIGxpbWl0Pz0gMjA7IC8vIEdp4bubaSBo4bqhbiBz4buRIGLhuqNuIGdoaSB04buRaSDEkWEgxJHGsOG7o2MgcGlja1xyXG4gICAgdGl0bGU/PSAnQ2jhu41uIMSRxqFuIHbhu4snO1xyXG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47XHJcbiAgICBlbmFibGVDYWNoaW5nPz0gdHJ1ZTtcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ3Rlbic7XHJcbiAgICBmaWVsZFBsdXM/PSAnJztcclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICBvblJlYWR5PzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBVc2VyUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBmaWx0ZXI/PSB0cnVlO1xyXG4gICAgbXVsdGlwbGU/PSB0cnVlO1xyXG4gICAgcGFyZW50T3JnSWQ/OiBudW1iZXI7XHJcbiAgICBwYXJlbnRPcmdDb2RlPzogc3RyaW5nO1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBpc1VzaW5nSWQ/PSB0cnVlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IE9yZ2FuaXphdGlvblBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvQ2F1VG9DaHVjQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBmaWx0ZXI/PSB0cnVlO1xyXG4gICAgbXVsdGlwbGU/PSB0cnVlO1xyXG4gICAgcGFyZW50T3JnSWQ/OiBudW1iZXI7XHJcbiAgICBwYXJlbnRPcmdDb2RlPzogc3RyaW5nO1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBpc1VzaW5nSWQ/PSB0cnVlO1xyXG4gICAgZGlzYWJsZWRQYXJlbnRJdGVtPz0gdHJ1ZTtcclxuICAgIHJvb3RQYXJlbnRJZD86IHN0cmluZyA9IG51bGw7XHJcbiAgICBkaXNhYmxlZD89IGZhbHNlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvQ2F1VG9DaHVjQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRWRpdG9yQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBtb2RlPzogJ2Jhc2ljJyB8ICdtZWRpdW0nIHwgJ2Z1bGwnIHwgJ3NpbXBsZScgPSAnYmFzaWMnO1xyXG4gICAgaGVpZ2h0Pz0gMjUwO1xyXG4gICAgaW5pdD86IGFueTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBFZGl0b3JDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZVdpdGhTZXJ2aWNlIHtcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ3Rlbic7XHJcbiAgICByZXR1cm5UeXBlPzogJ3ZhbHVlJyB8ICdvYmplY3QnID0gJ3ZhbHVlJztcclxuICAgIGRhdGFTb3VyY2U/OiBhbnkgfCBGdW5jdGlvbjtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEYXRhU291cmNlQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db250cm9sU2NoZW1hIGV4dGVuZHMgRGF0YVNvdXJjZUNvbnRyb2xTY2hlbWEge1xyXG4gICAgYXBwZW5kVG8/PSAnYm9keSc7XHJcbiAgICBwYW5lbENsYXNzPz0gJyc7XHJcbiAgICBwbGFjZWhvbGRlcj89ICdDaOG7jW4nO1xyXG4gICAgc2VsZWN0ZWRJdGVtc0xhYmVsPz0gJ8SQw6MgY2jhu41uIHswfSBt4bulYyc7XHJcbiAgICBzZWxlY3RlZEFsbEl0ZW1MYWJlbD89ICfEkMOjIGNo4buNbiB04bqldCBj4bqjJztcclxuICAgIHNob3dDbGVhcj89IHRydWU7XHJcbiAgICBmaWx0ZXI/PSB0cnVlO1xyXG4gICAgbXVsdGlwbGU/PSBmYWxzZTtcclxuICAgIGdlbmVyYXRlVG9vbHRpcD86IChpdGVtKSA9PiBzdHJpbmc7XHJcbiAgICBtYXhTZWxlY3RlZExhYmVscz89IDU7XHJcbiAgICBtYXhJdGVtRGlzcGxheT89IDUwO1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBuZWVkQ2xvbmU/PSBmYWxzZTsgLy8gU+G7rSBk4bulbmcgdHJvbmcgdGFibGUgc2NoZW1hLCBraGkgZGF0YXNvdXJjZSBj4bunYSBt4buZdCBj4buZdCB0csOqbiBt4buXaSBkw7JuZyBsw6Aga2jDoWMgbmhhdSBj4bqnbiBzZXQgbmVlZENsb25lID0gdHJ1ZVxyXG4gICAgdGVtcGxhdGVJdGVtPzogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIHRlbXBsYXRlU2VsZWN0ZWRJdGVtPzogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIHF1aWNrQWRkPz0gZmFsc2U7XHJcbiAgICBjb2xzPzogRm9ybVNjaGVtYUJhc2VbXTtcclxuICAgIGluaXREYXRhPzogYW55ID0ge307XHJcbiAgICBwb3B1cFNpemU/OiBQb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKHsgd2lkdGg6IDc1MCwgaGVpZ2h0OiA0MDAgfSk7XHJcblxyXG4gICAgbG9hZEluRmlyc3REaXNwbGF5Pz0gdHJ1ZTtcclxuXHJcbiAgICBhdXRvR2V0RGF0YT89IHRydWU7XHJcblxyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuXHJcbiAgICBhdXRvRGlzcGxheUZpcnN0Pz0gZmFsc2U7XHJcbiAgICBub3RJbkNydWRGb3JtPz0gZmFsc2U7XHJcbiAgICBzZWFyY2hNdWx0aXBsZT89IHRydWU7XHJcbiAgICBkaXNhYmxlRGlzcGxheUZpZWxkU2VydmVyU2VhcmNoPz0gZmFsc2U7XHJcblxyXG4gICAgbG9hZE9uSW5pdD89IGZhbHNlO1xyXG4gICAgYWxsb3dMb2FkRGF0YVdoZW5QYXJlbnROdWxsPz0gZmFsc2U7XHJcblxyXG4gICAgZGlzYWJsZWRQYXJlbnRJdGVtPz0gdHJ1ZTtcclxuICAgIG9uQWRqdXN0ZWRWYWx1ZT86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEcm9wZG93bkNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFkZHJlc3NDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGhpZGVObz89IGZhbHNlO1xyXG4gICAgaGlkZVN0cmVldD89IGZhbHNlO1xyXG4gICAgaGlkZVdhcmQ/PSBmYWxzZTtcclxuICAgIGhpZGVEaXN0cmljdD89IGZhbHNlO1xyXG4gICAgcmVxdWlyZWRObz89IHRydWU7XHJcbiAgICByZXF1aXJlZFN0cmVldD89IHRydWU7XHJcbiAgICByZXF1aXJlZFdhcmQ/PSB0cnVlO1xyXG4gICAgcmVxdWlyZWREaXN0cmljdD89IHRydWU7XHJcbiAgICByZXF1aXJlZFByb3ZpbmNlPz0gdHJ1ZTtcclxuICAgIHdhcmRUb1Byb3ZpbmNlPz0gdHJ1ZTtcclxuICAgIG5vV2lkdGg/PSAxO1xyXG4gICAgc3RyZWV0V2lkdGg/PSAzO1xyXG4gICAgd2FyZFdpZHRoPz0gMztcclxuICAgIGRpc3RyaWN0V2lkdGg/PSAyO1xyXG4gICAgcHJvdmluY2VXaWR0aD89IDM7XHJcbiAgICBzaG93SW5Cb3g/PSBmYWxzZTtcclxuXHJcbiAgICBoaWRlSG9sZGVyPz0gdHJ1ZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBBZGRyZXNzQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVmFuQmFuUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBtZFdpZHRoPz0gMTI7XHJcbiAgICB1c2VWYkRlbj89IHRydWU7XHJcbiAgICB1c2VWYkRpPz0gdHJ1ZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBWYW5CYW5QaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb25nVmllY1BpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgbWRXaWR0aD89IDEyO1xyXG4gICAgc2VydmljZUNvZGU/OiBzdHJpbmc7XHJcbiAgICBlbnRpdHk/OiBzdHJpbmc7XHJcbiAgICBlbnRpdHlLZXk/OiBzdHJpbmc7XHJcbiAgICBzdGF0ZT86IGFueSA9IHt9O1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbmdWaWVjUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlQ29udHJvbFNjaGVtYSBleHRlbmRzIERhdGFTb3VyY2VDb250cm9sU2NoZW1hIHtcclxuICAgIHBsYWNlaG9sZGVyPz0gJyc7XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG4gICAgbWluTGVuZ3RoRmlsdGVyPz0gMTtcclxuICAgIGFwcGVuZFRvPzogc3RyaW5nID0gJ2JvZHknO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEF1dG9Db21wbGV0ZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJhZGlvQnV0dG9uTGlzdENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSB7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBsYXlvdXQ/OiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnID0gJ2hvcml6b250YWwnO1xyXG4gICAgYWxpZ24/OiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgPSAnbGVmdCc7XHJcbiAgICBvbkFkanVzdGVkVmFsdWU/OiBGdW5jdGlvbjtcclxuICAgIGRpc2FibGVDaGVjaz86ICgpID0+IGJvb2xlYW47XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFJhZGlvQnV0dG9uTGlzdENvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENoZWNrQm94TGlzdENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSB7XHJcbiAgICBlbmFibGVDYWNoaW5nPz0gdHJ1ZTtcclxuICAgIGxheW91dD86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgPSAnaG9yaXpvbnRhbCc7XHJcbiAgICBhbGlnbj86ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcclxuICAgIGNsYXNzUGx1cz89ICcnO1xyXG4gICAgZnJlZVRleHQ/PSAnJztcclxuICAgIHBDb2xDbGFzcz86IG51bWJlcjtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDaGVja0JveExpc3RDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUYWJsZVNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICByb3dUZW1wbGF0ZTogRm9ybVNjaGVtYUJhc2VbXTtcclxuICAgIHJvd0J1dHRvbnM/OiAocm93RGF0YSkgPT4gTWVudUl0ZW1bXTtcclxuICAgIGZvb3RlckJ1dHRvbnM/OiB7XHJcbiAgICAgICAgaWNvbj86IHN0cmluZztcclxuICAgICAgICBsYWJlbD86IHN0cmluZztcclxuICAgICAgICBjbGFzcz86IHN0cmluZztcclxuICAgICAgICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICB9W107XHJcbiAgICBzaG93TnVtYmVyPz0gdHJ1ZTtcclxuICAgIHNob3dGdW5jdGlvbj89IHRydWU7XHJcbiAgICBzaG93Rm9vdGVyPz0gdHJ1ZTtcclxuICAgIHNob3dTYXZlPz0gZmFsc2U7XHJcbiAgICBzaG93RWRpdD89IGZhbHNlO1xyXG4gICAgc2hvd0RlbGV0ZT89IHRydWU7XHJcbiAgICBzaG93QWRkPz0gdHJ1ZTtcclxuICAgIGVuYWJsZVJlb3JkZXJSb3c/PSBmYWxzZTtcclxuICAgIG9uUmVvcmRlcmVkPzogRnVuY3Rpb247XHJcbiAgICBlbmFibGVBZGRNdWx0aT89IGZhbHNlO1xyXG4gICAgcGlja2VyQ29udHJvbEZpZWxkPzogc3RyaW5nO1xyXG4gICAgaXNVbmlxdWU/PSB0cnVlO1xyXG4gICAgZW5hYmxlUGFnaW5nPz0gZmFsc2U7XHJcbiAgICBsaW1pdD89IDUwO1xyXG4gICAgaW5pdFJvd0NvdW50Pz0gMTtcclxuICAgIG1kV2lkdGg/PSAxMjtcclxuXHJcbiAgICBvbkFkZGluZz86IEZ1bmN0aW9uO1xyXG4gICAgb25BZGRlZD86IEZ1bmN0aW9uO1xyXG4gICAgb25TYXZlPzogRnVuY3Rpb247XHJcbiAgICBvbk1lc3NhZ2U/OiBGdW5jdGlvbjtcclxuICAgIG9uRGVsZXRpbmc/OiBGdW5jdGlvbjtcclxuICAgIG9uRGVsZXRlZD86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUYWJsZVNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29sdW1uU2NoZW1hQmFzZSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlV2l0aFNlcnZpY2Uge1xyXG4gICAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgICBzaG93RWRpdExpbms/PSBmYWxzZTtcclxuICAgIGNvbFNwYW4/OiBudW1iZXI7XHJcbiAgICBncm91cD89IGZhbHNlO1xyXG4gICAgdmlzaWJsZT89IHRydWU7XHJcbiAgICByZW1vdmVPbkluaXQ/PSBmYWxzZTtcclxuICAgIGFsbG93RmlsdGVyPz0gdHJ1ZTtcclxuICAgIHRleHRBbGlnbj86IFRleHRBbGlnbjtcclxuICAgIGNlbGxDbGFzcz86IHN0cmluZztcclxuICAgIGZ1bGxUZXh0U2VhcmNoPz0gZmFsc2U7XHJcbiAgICByYXdDb2x1bW4/OiBDb2x1bW5TY2hlbWFCYXNlO1xyXG4gICAgc2VwYXJhdG9yPz0gJywgJztcclxuXHJcbiAgICBkYXRhVHlwZVJlZkZpZWxkPzogRGF0YVR5cGUgfCBzdHJpbmc7XHJcbiAgICBmb3JjZUdldERhdGE/PSBmYWxzZTtcclxuICAgIGZ1bmNHZXRSZWZEYXRhUm93PzogKHJlZkl0ZW1zKSA9PiB7fTtcclxuICAgIGZ1bmNTZXRWYWx1ZVJvdz86IChyb3dJdGVtLCBkYXRhKSA9PiB2b2lkO1xyXG4gICAgcm93U3Bhbj89IDE7XHJcbiAgICBmb3JtYXQ/OiBzdHJpbmc7XHJcbiAgICBkYXRhVHlwZT86IERhdGFUeXBlIHwgc3RyaW5nO1xyXG4gICAgY29udHJvbFR5cGU/OiBDb250cm9sVHlwZSA9IENvbnRyb2xUeXBlLnRleHRib3g7XHJcbiAgICB0ZW1wbGF0ZUZpbHRlcj86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBmaWVsZEZpbHRlcj86IHN0cmluZztcclxuICAgIGRpc2FibGVDaGVja0JveD89IHRydWU7XHJcbiAgICAvLyBUaOG7qSB04buxIMawdSB0acOqbiBnZXQgcmVmIGRhdGEgY+G7p2EgY3J1ZC1saXN0XHJcbiAgICAvLyBO4bq/dSBjw7MgdmFsdWUgbmdoxKlhIGzDoCBuaOG7r25nIGPhu5l0IG7DoHkgY+G6p24gcGjhuqNpIGzhuqV5IGThu68gbGnhu4d1IHhvbmcgcuG7k2kgbeG7m2kgxJHhur9uIGPhu5l0IGtow6FjXHJcbiAgICBvcmRlcj86IG51bWJlcjtcclxuICAgIG1heFdvcmREaXNwbGF5PzogbnVtYmVyO1xyXG4gICAgbWF4TGVuZ3RoRGlzcGxheT86IG51bWJlcjtcclxuXHJcbiAgICBtZFdpZHRoSW5TZWFyY2g/PSAxMjtcclxuXHJcbiAgICBtaW4/PSAwO1xyXG4gICAgbWF4Pz0gOTk5OTk5O1xyXG5cclxuICAgIHNob3dDbGVhcj89IHRydWU7XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG5cclxuICAgIHBpcGU/OiBQaXBlVHJhbnNmb3JtO1xyXG4gICAgYXN5bmNQaXBlPz0gdHJ1ZTtcclxuICAgIHNvcnQ/PSB0cnVlO1xyXG4gICAgZXh0ZW5kRGF0YT86IGFueSA9IHt9O1xyXG5cclxuICAgIGdlbmVyYXRlZFJlZkNvbHVtbj86IGFueTsgLy8gVE9ETzogTmFtTkggdGjDqm0gdOG6oW0gdGhlbyB5w6p1IGPhuqd1IGPhu6dhIExpbmgsIExpbmggY2hlY2sgbOG6oWkgc2F1XHJcbiAgICBoYXNPcGVyYXRvckNhbkJvPz0gZmFsc2U7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29sdW1uU2NoZW1hQmFzZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25PcHRpb25zIHtcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBmaWVsZFRyZWU/PSAnJztcclxuICAgIHNlbGVjdENoaWxkSXRlbT89IGZhbHNlOyAvLyBDw7Mgc2VsZWN0IGLhuqNuIGdoaSBjb24gbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcclxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/PSAnaWQnOyAvLyBUcsaw4budbmcgeMOhYyDEkeG7i25oIGLhuqNuIGdoaSBsw6AgYuG6o24gZ2hpIGNoYSBj4bunYSBi4bqjbiBnaGkgY29uXHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIGZpZWxkUGx1cz89ICcnO1xyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIGNhbGxiYWNrRGF0YUZpbmlzaD86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIHBhZ2VTaXplPz0gOTk5OTtcclxuICAgIGlzU2VydmVyTG9hZD89IGZhbHNlO1xyXG4gICAgcmVmRmllbGRzPzogUmVmRmllbGRbXSA9IFtdO1xyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEcm9wZG93bk9wdGlvbnMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0IGNsYXNzIFJlZkZpZWxkIHtcclxuICAgIGZpZWxkOiBzdHJpbmc7XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG4gICAgc2VwYXJhdG9yPz0gJywgJztcclxuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2UgfCBNYXN0ZXJEYXRhU2VydmljZTtcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBmaWVsZFBsdXM/PSAnJztcclxuICAgIGdyb3VwQ29kZT86IHN0cmluZztcclxuICAgIGRhdGFTb3VyY2U/OiBhbnlbXTtcclxuICAgIG9yZGVyPzogbnVtYmVyO1xyXG5cclxuICAgIGlzVHJlZT89IGZhbHNlO1xyXG4gICAgZmllbGRUcmVlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVQYXJlbnRSb290PzogYW55ID0gbnVsbDsgLy8gR2nDoSB0cuG7iyB0csaw4budbmcgW2ZpZWxkVHJlZV0gY+G7p2EgaXRlbSB0cmVlIHJvb3RcclxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/PSAnaWQnOyAvLyBUcsaw4budbmcgeMOhYyDEkeG7i25oIGLhuqNuIGdoaSBsw6AgYuG6o24gZ2hpIGNoYSBj4bunYSBi4bqjbiBnaGkgY29uXHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICBmdW5jU2V0VmFsdWVSb3c/OiAocm93SXRlbSwgZGF0YSkgPT4gdm9pZDtcclxuICAgIGZ1bmNHZXRSZWZEYXRhUm93PzogKHJlZkl0ZW1zKSA9PiB7fTtcclxuICAgIGNhbGxiYWNrRGF0YUZpbmlzaD86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XHJcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUmVmRmllbGQpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmNsYXNzIFByb3BGb3JEcm9wZG93biB7XHJcbiAgICBzZXJ2ZXJGaWx0ZXJVcmk/OiBzdHJpbmc7XHJcbiAgICBsb2FkSW5GaXJzdERpc3BsYXk/PSB0cnVlO1xyXG4gICAgZGlzcGxheUZpZWxkU2VydmVyPz0gJ3Rlbic7XHJcbiAgICB2YWx1ZUZpZWxkU2VydmVyPz0gJ2lkJztcclxuXHJcbiAgICBkYXRhU291cmNlPzogYW55O1xyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xyXG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uO1xyXG4gICAgY2FsbGJhY2tEYXRhRmluaXNoPzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgbW9kaWZ5RmlsdGVyPzogRnVuY3Rpb247XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG4gICAgc2VwYXJhdG9yPz0gJywgJztcclxuICAgIHNlYXJjaE11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIGlzVHJlZT89IGZhbHNlO1xyXG4gICAgZmllbGRUcmVlPzogc3RyaW5nO1xyXG4gICAgc2VsZWN0Q2hpbGRJdGVtPz0gZmFsc2U7IC8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxyXG4gICAgdmFsdWVQYXJlbnRSb290PzogYW55ID0gbnVsbDsgLy8gR2nDoSB0cuG7iyB0csaw4budbmcgW2ZpZWxkVHJlZV0gY+G7p2EgaXRlbSB0cmVlIHJvb3RcclxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/PSAnaWQnOyAvLyBUcsaw4budbmcgeMOhYyDEkeG7i25oIGLhuqNuIGdoaSBsw6AgYuG6o24gZ2hpIGNoYSBj4bunYSBi4bqjbiBnaGkgY29uXHJcbiAgICBncm91cENvZGU/OiBzdHJpbmc7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgc2VhcmNoRmllbGQ/OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZmllbGRQbHVzPz0gJyc7XHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcblxyXG4gICAgZmllbGRWYWx1ZVBhcmVudD89ICd2YWx1ZSc7IC8vIFRyxrDhu51uZyBz4butIGThu6VuZyDEkeG7gyBs4bqleSBk4buvIGxp4buHdSBsw6BtIGtow7NhIHThu6sgYuG6o25nIGNoYSBj4bunYSBpdGVtIGRyb3AgZG93biDEkcaw4bujYyBjaOG7jW5cclxuXHJcbiAgICBmdW5jR2V0TGFiZWw/OiAoaXRlbSkgPT4gc3RyaW5nO1xyXG4gICAgZnVuY0NvbXBhcmU/OiAoaXRlbTogYW55LCB2YWx1ZSkgPT4gYm9vbGVhbiA9IChpdGVtLCB2YWx1ZSkgPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09IHZhbHVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQcm9wRm9yRHJvcGRvd24pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlQaWNrZXJDb2x1bW4gZXh0ZW5kcyBDb2x1bW5TY2hlbWFCYXNlIHtcclxuICAgIGxhYmVsPzogc3RyaW5nO1xyXG4gICAgY29kZT86IHN0cmluZztcclxuICAgIGRpc2FibGVkPz0gZmFsc2U7XHJcbiAgICBpc1NlYXJjaGFibGU/PSB0cnVlO1xyXG4gICAgaXNEaXNwbGF5Pz0gdHJ1ZTtcclxuICAgIGRhdGFUeXBlPzogRGF0YVR5cGUgfCBzdHJpbmc7XHJcbiAgICBvcGVyYXRvcj86IE9wZXJhdG9yO1xyXG4gICAgd2lkdGg/PSAnJztcclxuICAgIG5vdEluRmllbGRzPz0gZmFsc2U7IC8vIEPDoWMgdHLGsOG7nW5nIGThu68gbGnhu4d1IMSRxrDhu6NjIHThu5VuZyBo4bujcCBs4bqhaSBoaeG7g24gdGjhu4sgbMOqbiBncmlkIG3DoCBraMO0bmcgcGjhuqNpIGzhuqV5IHThu6sgdHJvbmcgdGFibGUgcmEuXHJcblxyXG4gICAgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBFbnRpdHlQaWNrZXJDb2x1bW4pIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEdldFJlZkRhdGFTY2hlbWEgZXh0ZW5kcyBQcm9wRm9yRHJvcGRvd24ge1xyXG4gICAgZmllbGQ/OiBzdHJpbmc7XHJcbiAgICBmdW5jU2V0VmFsdWVSb3c/OiAocm93SXRlbSwgZGF0YSkgPT4gdm9pZDtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBHZXRSZWZEYXRhU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkTGlzdENvbmZpZyB7XHJcbiAgICB0b29sdGlwVmlldz86IHN0cmluZztcclxuICAgIG9uVmlldz86IEZ1bmN0aW9uO1xyXG4gICAgZGlzYWJsZVJvd1NlbGVjdFdoZW5DbGlja0FjdGlvbj89IHRydWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3RDb25maWcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUcmVlRGF0YU9wdGlvbiB7XHJcbiAgICBkaXNwbGF5RmllbGQgPSAndGVuJztcclxuICAgIHNob3J0RGlzcGxheUZpZWxkID0gJ3Rlbic7XHJcbiAgICBleHBhbmRlZEljb24gPSAncGkgcGktZm9sZGVyLW9wZW4nO1xyXG4gICAgY29sbGFwc2VkSWNvbiA9ICdwaSBwaS1mb2xkZXInO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRyZWVEYXRhT3B0aW9uKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGlhbG9nTW9kZWwge1xyXG4gICAgc2hvd0VkaXRGb3JtPzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaGVhZGVyPzogc3RyaW5nID0gJyc7XHJcbiAgICBwb3B1cFNpemU/OiBQb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKHsgbWF4aW1pemU6IHRydWUgfSlcclxuICAgIGRhdGE/OiBhbnkgPSB7fTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEaWFsb2dNb2RlbCkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBvcHVwU2l6ZSB7XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGhlaWdodD86IG51bWJlcjtcclxuICAgIG1heGltaXplPz0gZmFsc2U7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUG9wdXBTaXplKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRXZlbnREYXRhIHtcclxuICAgIGN1cnJlbnROb2RlOiBDb250cm9sVHJlZU5vZGU7XHJcbiAgICBzb3VyY2VOb2RlPzogQ29udHJvbFRyZWVOb2RlO1xyXG4gICAgc291cmNlRXZlbnQ/OiBhbnk7XHJcbiAgICBldmVudFR5cGU/OiBhbnk7XHJcbiAgICBkYXRhPzogYW55O1xyXG4gICAgcHJpdmF0ZSBfY3J1ZEZvcm06IENydWRGb3JtQ29tcG9uZW50O1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgaW5pdD86IHtcclxuICAgICAgICAgICAgY3VycmVudE5vZGU6IENvbnRyb2xUcmVlTm9kZSxcclxuICAgICAgICAgICAgc291cmNlTm9kZT86IENvbnRyb2xUcmVlTm9kZSxcclxuICAgICAgICAgICAgc291cmNlRXZlbnQ/OiBhbnksXHJcbiAgICAgICAgICAgIGV2ZW50VHlwZT86IGFueSxcclxuICAgICAgICAgICAgZGF0YT86IGFueSxcclxuICAgICAgICAgICAgY3J1ZEZvcm0/OiBDcnVkRm9ybUNvbXBvbmVudFxyXG4gICAgICAgIH1cclxuICAgICkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgdmFsdWUoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5tb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbW9kZWwoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5tb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcGFyZW50TW9kZWwoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5wYXJlbnRNb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcGFyZW50UGF0aCgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLnBhcmVudE1vZGVsUGF0aDtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHJvb3RNb2RlbCgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLnJvb3ROb2RlLm1vZGVsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb250cm9sKCk6IEZvcm1TY2hlbWFCYXNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5jb250cm9sXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHBhcmVudENvbnRyb2woKTogRm9ybVNjaGVtYUJhc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLnBhcmVudENvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGZvcm1Db250cm9scygpOiBGb3JtU2NoZW1hQmFzZVtdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5mb3JtQ29udHJvbHM7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIERhdGFUeXBlIHtcclxuICAgIGRhdGUgPSAnZGF0ZScsXHJcbiAgICBkYXRldGltZSA9ICdkYXRldGltZScsXHJcbiAgICBodG1sID0gJ2h0bWwnLFxyXG4gICAgc3RyaW5nID0gJ3N0cmluZycsXHJcbiAgICBpbnQgPSAnaW50JyxcclxuICAgIGRlY2ltYWwgPSAnZGVjaW1hbCcsXHJcbiAgICBib29sZWFuID0gJ2Jvb2xlYW4nLFxyXG4gICAgZW51bSA9ICdlbnVtJyxcclxuICAgIGN1cnJlbmN5ID0gJ2N1cnJlbmN5J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBDb250cm9sVHlwZSB7XHJcbiAgICBkcm9wZG93biA9ICdkcm9wZG93bicsXHJcbiAgICBkYXRldGltZSA9ICdkYXRldGltZScsXHJcbiAgICBkYXRlID0gJ2RhdGUnLFxyXG4gICAgdGltZSA9ICd0aW1lJyxcclxuICAgIG51bWJlciA9ICdudW1iZXInLFxyXG4gICAgdGV4dGJveCA9ICd0ZXh0Ym94JyxcclxuICAgIGNoZWNrYm94ID0gJ2NoZWNrYm94JyxcclxuICAgIHN3aXRjaCA9ICdzd2l0Y2gnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIE9wZXJhdG9yIHtcclxuICAgIGVxdWFsID0gJ2VxJyxcclxuICAgIG5vdEVxdWFsID0gJ25lcScsXHJcbiAgICBncmVhdGVyID0gJ2d0JyxcclxuICAgIGdyZWF0ZXJUaGFuRXF1YWwgPSAnZ3RlJyxcclxuICAgIGxvd2VyID0gJ2x0JyxcclxuICAgIGxvd2VyVGhhbkVxdWFsID0gJ2x0ZScsXHJcblxyXG4gICAgY29udGFpbiA9ICdjb250YWlucycsXHJcbiAgICBub3RDb250YWluID0gJ25jb250YWlucycsXHJcbiAgICBzdGFydFdpdGggPSAnc3RhcnRzd2l0aCcsXHJcbiAgICBub3RTdGFydFdpdGggPSAnbnN0YXJ0c3dpdGgnLFxyXG4gICAgZW5kV2l0aCA9ICdlbmRzd2l0aCcsXHJcbiAgICBub3RFbmRXaXRoID0gJ25lbmRzd2l0aCcsXHJcblxyXG4gICAgaW4gPSAnaW4nLFxyXG4gICAgbm90SW4gPSAnbmluJyxcclxuXHJcbiAgICBpc051bGwgPSAnaXNudWxsJyxcclxuICAgIGlzTm90TnVsbCA9ICdpc25vdG51bGwnLFxyXG5cclxuICAgIGluUm9sZSA9ICdoYXNSb2xlJyxcclxuICAgIG5vdEluUm9sZSA9ICdub3RIYXNSb2xlJyxcclxuICAgIGluQ2F0ZWdvcnkgPSAnaW5DYXRlZ29yeScsXHJcbiAgICBub3RJbkNhdGVnb3J5ID0gJ25vdEluQ2F0ZWdvcnknLFxyXG4gICAgaW5Qb3NpdGlvbiA9ICdpblBvc2l0aW9uJyxcclxuICAgIG5vdEluUG9zaXRpb24gPSAnbm90SW5Qb3NpdGlvbicsXHJcbiAgICBpbkxpc3RVc2VyID0gJ2luTGlzdFVzZXInLFxyXG4gICAgbm90SW5MaXN0VXNlciA9ICdub3RJbkxpc3RVc2VyJyxcclxuICAgIGluTGlzdEdyb3VwID0gJ2luTGlzdEdyb3VwJyxcclxuICAgIG5vdEluTGlzdEdyb3VwID0gJ25vdEluTGlzdEdyb3VwJyxcclxuICAgIGlzQ3VycmVudFVzZXIgPSAnaXNDdXJyZW50VXNlcicsXHJcbiAgICBpc0N1cnJlbnRDYW5CbyA9ICdpc0N1cnJlbnRDYW5CbydcclxufVxyXG5cclxuZXhwb3J0IGVudW0gSGVpZ2h0VHlwZSB7XHJcbiAgICBkZWZhdWx0ID0gMCxcclxuICAgIGR5bmFtaWMgPSAtMSxcclxuICAgIGN1c3RvbSA9IDFcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRmlsZU1hbmFnZXJNb2RlIHtcclxuICAgIHNpbmdsZSA9ICdzaW5nbGUnLFxyXG4gICAgbXVsdGlwbGUgPSAnbXVsdGlwbGUnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEZpbGVVcGxvYWRNb2RlIHtcclxuICAgIHVzaW5nRmlsZUluc3RhbmNlSWQgPSAndXNpbmdGaWxlSW5zdGFuY2VJZCcsXHJcbiAgICB1c2luZ1NlcnZpY2VGaWxlID0gJ3VzaW5nU2VydmljZUZpbGUnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEVudW1GaWxlTGF5b3V0IHtcclxuICAgIFNJTVBMRSA9ICdTSU1QTEUnLFxyXG4gICAgTElTVCA9ICdMSVNUJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBUZXh0QWxpZ24ge1xyXG4gICAgTGVmdCA9IDAsXHJcbiAgICBDZW50ZXIgPSAxLFxyXG4gICAgUmlnaHQgPSAtMVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBFeHBvcnRJdGVtc01vZGUge1xyXG4gICAgRnJvbUh0bWwgPSAwLFxyXG4gICAgTWFudWFsR2V0RGF0YSA9IDEsXHJcbiAgICBBdXRvR2V0RGF0YSA9IDJcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRXhwb3J0QWxsTW9kZSB7XHJcbiAgICBNYW51YWxHZXREYXRhID0gMCxcclxuICAgIEF1dG9HZXREYXRhID0gMVxyXG59XHJcbiJdfQ==
1110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY2xhc3Nlcy9mb3JtLXNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBZ0JBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsOEJBQThCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2xJLE1BQU0sT0FBTyxXQUFXO0lBTXBCLFlBQVksSUFBa0I7UUFEOUIsYUFBUSxHQUE4RixRQUFRLENBQUM7UUFFM0csS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxRQUFRO0lBR2pCLFlBQVksSUFBZTtRQUYzQixvR0FBb0c7UUFDcEcsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBRS9CLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQW1GeEIsWUFBWSxJQUFzQjtRQWpGbEMsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBR2pCLGlCQUFZLEdBQW1CLEVBQUUsQ0FBQztRQUNsQyxTQUFJLEdBQXdCLEVBQUUsQ0FBQztRQUMvQixrQkFBYSxHQUFtQixJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ3BELGdCQUFXLEdBQWlCLElBQUksV0FBVyxFQUFFLENBQUM7UUFDOUMsZUFBVSxHQUFnQixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMseURBQXlEO1FBQ3ZHLDBCQUFxQixHQUFHLElB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QUFOLElBQVksYUFHWDtBQUhELFdBQVksYUFBYTtJQUNyQixtRUFBaUIsQ0FBQTtJQUNqQiwrREFBZSxDQUFBO0FBQ25CLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGVUcmFuc2Zvcm0sIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3RuLWN1c3RvbS1wcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IEF1dG9Db21wbGV0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLXBpY2tlci9hdXRvY29tcGxldGUtcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENydWRMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jcnVkL2NydWQtbGlzdC9jcnVkLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW50aXR5UGlja2VyRGF0YUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci9lbnRpdHktcGlja2VyLWRpYWxvZy9jb21wb25lbnRzL2VudGl0eS1waWNrZXItZGF0YS9lbnRpdHktcGlja2VyLWRhdGEuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW50aXR5UGlja2VyU2VsZWN0ZWRDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2VudGl0eS1waWNrZXIvZW50aXR5LXBpY2tlci1kaWFsb2cvY29tcG9uZW50cy9lbnRpdHktcGlja2VyLXNlbGVjdGVkL2VudGl0eS1waWNrZXItc2VsZWN0ZWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW50aXR5UGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9lbnRpdHktcGlja2VyL2VudGl0eS1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZURhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9maWxlLWV4cGxvcmVyL3NlcnZpY2VzL2ZpbGUtZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsdGVyLCBTb3J0IH0gZnJvbSAnLi4vbW9kZWxzL2dyaWQtaW5mbyc7XHJcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW50aXR5TWV0YWRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZW50aXR5LW1ldGFkYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXN0ZXJEYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL21hc3Rlci1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb250cm9sVHJlZU5vZGUsIENydWRGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi8uLi9jb21wb25lbnRzL2NydWQvY3J1ZC1mb3JtL2NydWQtZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJQ29ycmVjdG9yIH0gZnJvbSAnLi9iYXNlL2NvcnJlY3RvcnMnO1xyXG5pbXBvcnQgeyBJVmFsaWRhdG9yIH0gZnJvbSAnLi9iYXNlL3ZhbGlkYXRvcnMnO1xyXG5pbXBvcnQgeyBFbnVtQ29udHJvbFBpY2tlclR5cGUsIEVudW1Db3JlVmVyc2lvbiwgRW51bVdvcmtmbG93Q29yZUNvZGVTZXR0aW5nS2V5LCBGb3JtU3RhdGUsIFNoYXJlZEZvbGRlclR5cGUgfSBmcm9tICcuL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IFdvcmtmbG93U2V0dGluZywgV29ya2Zsb3dTZXR0aW5nTmV3IH0gZnJvbSAnLi93b3JrZmxvdy1zY2hlbWEnO1xyXG5cclxuZXhwb3J0IGNsYXNzIE1vZGVsU2NoZW1hIHtcclxuICAgIGZpZWxkOiBzdHJpbmc7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBmdWxsTmFtZTogc3RyaW5nO1xyXG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICAgIGRhdGFUeXBlPzogJ2ludCcgfCAnZGVjaW1hbCcgfCAnZGF0ZScgfCAnZGF0ZXRpbWUnIHwgJ3N0cmluZycgfCAnYm9vbGVhbicgfCAnY3VycmVuY3knIHwgJ3RpbWVzcGFuJyA9ICdzdHJpbmcnO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IE1vZGVsU2NoZW1hKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3J1ZEJhc2Uge1xyXG4gICAgLy8gQ29tcG9uZW50IHN1YnNjcmliZSAtIEtoaSBzdWJjcmliZSBt4buZdCBjb21wb25lbnQgdGjDrCBhZGQgdsOgbyBhcnJheSDEkeG7gyBraGkgZGVzdHJveSB0aMOsIHVuc3Vic2NyaWJlXHJcbiAgICBjb21wb25lbnRTdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRCYXNlKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3J1ZExpc3RTZXR0aW5nIHtcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICBvYmplY3ROYW1lID0gJyc7XHJcbiAgICBlbnRpdHlLZXkgPSAnaWQnO1xyXG4gICAgc2V0dGluZ0tleT86IHN0cmluZztcclxuICAgIGVudGl0eU1ldGFkYXRhU2VydmljZT86IEVudGl0eU1ldGFkYXRhU2VydmljZTtcclxuICAgIG1vZGVsU2NoZW1hcz86IE1vZGVsU2NoZW1hW10gPSBbXTtcclxuICAgIGNvbHM/OiBDb2x1bW5TY2hlbWFCYXNlW10gPSBbXTtcclxuICAgIGNvbHVtblNldHRpbmc/OiBDb2x1bW5TZXR0aW5nID0gbmV3IENvbHVtblNldHRpbmcoKTtcclxuICAgIHBhZ2VTZXR0aW5nPzogUGFnZVNldHRpbmcgPSBuZXcgUGFnZVNldHRpbmcoKTtcclxuICAgIGhlaWdodFR5cGU/OiBIZWlnaHRUeXBlID0gSGVpZ2h0VHlwZS5kZWZhdWx0OyAvLyBDw7MgY3VzdG9tIGNoaeG7gXUgY2FvIGtow7RuZzogVGjGsOG7nW5nIHPhu60gZOG7pW5nIHRyb25nIGRpYWxvZ1xyXG4gICAgZml4SGVpZ2h0VHlwZUluRGlhbG9nPz0gdHJ1ZTtcclxuICAgIG11bHRpcGxlQ2hlY2tXaGVuQ2xpY2tSb3cgPSB0cnVlO1xyXG4gICAgY3VzdG9tV29ya2Zsb3dDb2RlVHJpbmhLeTogRW51bVdvcmtmbG93Q29yZUNvZGVTZXR0aW5nS2V5ID0gRW51bVdvcmtmbG93Q29yZUNvZGVTZXR0aW5nS2V5Lk1BQ19ESU5IO1xyXG4gICAgc3RpY2t5Q29sdW1uID0gZmFsc2U7XHJcbiAgICB0YWJsZU5hbWU/OiBzdHJpbmc7XHJcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlO1xyXG4gICAgcmVTZWxlY3RMYXN0SXRlbT89IHRydWU7IC8vIFNlbGVjdCBs4bqhaSBpdGVtIGN14buRaSBjw7luZyDEkcOjIGNo4buNbiBj4bunYSBncmlkXHJcbiAgICBmaXJlRXZlbnRXaGVuUmVTZWxlY3Q/PSBmYWxzZTtcclxuICAgIGFkdmFuY2VEYXRhPzogYW55ID0ge307XHJcbiAgICB3b3JrZmxvd1NldHRpbmc/OiBXb3JrZmxvd1NldHRpbmc7XHJcbiAgICB3b3JrZmxvd0NvbmZpZ0FkdmFuY2U/OiBXb3JrZmxvd0NvbmZpZ0FkdmFuY2U7XHJcbiAgICBkaXNwbGF5RmllbGQ6IHN0cmluZyB8ICgoaXRlbSkgPT4gc3RyaW5nKTsgLy8gdHLGsOG7nW5nIMSR4bqhaSBkaeG7h24gY2hvIGLhuqNuIGdoaSBsw6BtIHRpw6p1IMSR4buBIGhp4buDbiB0aOG7iyAocGjhu6VjIHbhu6UgY2hvIGPDoWMgZOG7i2NoIHbhu6Uga2jDoWMga2hhaSB0aMOhYylcclxuICAgIGhhc0N1c3RvbUhhbmRsZUNsaWNrUm93ID0gZmFsc2U7XHJcbiAgICBjaGVja0FsbG93VHJpbmhLeTogKHJvd0RhdGEpID0+IFByb21pc2U8Ym9vbGVhbj47XHJcbiAgICBjaGVja1Blcm1pc2lvblRyaW5oS3kgPSBmYWxzZTtcclxuXHJcbiAgICBzaG93RWRpdExpbmsgPSB0cnVlO1xyXG5cclxuICAgIGhpZGRlbkhlYWRlciA9IGZhbHNlO1xyXG4gICAgaGlkZGVuUGFnZVNldHRpbmcgPSBmYWxzZTtcclxuICAgIGhpZGRlblRleHRQYWdlID0gZmFsc2U7XHJcbiAgICBoaWRkZW5Ub29sYmFyID0gZmFsc2U7XHJcbiAgICBoaWRkZW5CdXR0b25zID0gZmFsc2U7XHJcbiAgICBoaWRkZW5BZHZhbmNlU2VhcmNoID0gZmFsc2U7XHJcbiAgICBoaWRkZW5TYXZlU2V0dGluZyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuU2V0dGluZyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuU2V0dGluZ1Blcm1pc3Npb24gPSBmYWxzZTtcclxuICAgIGhpZGRlblNldHRpbmdXb3JrZmxvdyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuU2V0dGluZ1dvcmtmbG93TmV3ID0gdHJ1ZTtcclxuICAgIGhpZGRlblBhZ2VUaXRsZSA9IGZhbHNlO1xyXG5cclxuICAgIGhpZGRlbkNoZWNrYm94ID0gZmFsc2U7XHJcbiAgICBoaWRkZW5PcmRlckNvbHVtbiA9IGZhbHNlO1xyXG4gICAgaGlkZGVuV29ya2Zsb3dDb2x1bW4gPSBmYWxzZTtcclxuICAgIGhpZGRlbkZ1bmN0aW9uQ29sdW1uID0gZmFsc2U7XHJcbiAgICBoaWRkZW5SZWZyZXNoID0gZmFsc2U7XHJcbiAgICBoaWRkZW5GaWx0ZXJSb3cgPSBmYWxzZTtcclxuICAgIGhpZGRlblRyaW5oS3kgPSB0cnVlO1xyXG4gICAgdXNlQmFzZVRyaW5oS3kgPSB0cnVlO1xyXG4gICAgaGlkZGVuV29ya2Zsb3dDb3JlU3RhdHVzID0gdHJ1ZTtcclxuICAgIHJlcXVpcmVkVmFuQmFuRGlBZnRlclRyaW5oS3kgPSBmYWxzZTtcclxuXHJcbiAgICBncm91cENvbHVtbj86IENvbHVtblNjaGVtYUJhc2U7XHJcblxyXG4gICAgc2hvd0V4cG9ydEFsbCA9IGZhbHNlO1xyXG4gICAgZXhwb3J0QWxsTW9kZWw6IEV4cG9ydEFsbE1vZGUgPSBFeHBvcnRBbGxNb2RlLkF1dG9HZXREYXRhO1xyXG4gICAgZXhwb3J0SXRlbXNNb2RlOiBFeHBvcnRJdGVtc01vZGUgPSBFeHBvcnRJdGVtc01vZGUuRnJvbUh0bWw7XHJcblxyXG4gICAgZW5hYmxlVmVyc2lvbiA9IGZhbHNlO1xyXG4gICAgc2hvd1ZlcnNpb25CdXR0b24gPSBmYWxzZTtcclxuICAgIHZlcnNpb25Nb2RlbD86IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIHNob3dIaXN0b3J5ID0gZmFsc2U7XHJcbiAgICBoaXN0b3J5PzogYW55O1xyXG5cclxuICAgIGNvbG9yRmlsdGVyRmllbGQgPSAnJztcclxuICAgIGNvbG9yRmlsdGVyVGFibGU/OiBSb3dDb2xvck9wdGlvbltdID0gW107XHJcblxyXG4gICAgZW50aXR5TWV0YWRhdGFTZXR0aW5nPzogQ3J1ZEZvcm1TZXR0aW5nID0gbmV3IENydWRGb3JtU2V0dGluZygpO1xyXG5cclxuICAgIGZpZWxkU2VhcmNoVGV4dD86IHN0cmluZ1tdID0gW107XHJcbiAgICBmaWx0ZXJUZW1wbGF0ZUFkdnM/OiBGaWx0ZXJbXTtcclxuXHJcbiAgICBmdW5jdGlvbjogQ3J1ZExpc3RDdXN0b21GdW5jdGlvbiA9IG5ldyBDcnVkTGlzdEN1c3RvbUZ1bmN0aW9uKCk7XHJcblxyXG4gICAgcG9wdXBIZWFkZXI/PSAnJztcclxuICAgIHBvcHVwU2l6ZT86IFBvcHVwU2l6ZSA9IG5ldyBQb3B1cFNpemUoKTtcclxuICAgIG1hc2tDbGFzcz86IHN0cmluZztcclxuXHJcbiAgICBnZXRDdXN0b21EYXRhVHJpbmhLeTogKHJvd0RhdGEpID0+IGFueSA9IChyb3dEYXRhKSA9PiAoe30pO1xyXG4gICAgZ2V0TGFiZWxCdXR0b25UcmluaEt5OiAocm93RGF0YSkgPT4gc3RyaW5nID0gKHJvd0RhdGEpID0+ICdUcsOsbmgga8O9JztcclxuICAgIGNoZWNrUmVhZHlUb1RyaW5oS3k6ICgpID0+IGJvb2xlYW4gPSAoKSA9PiB0cnVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkTGlzdFNldHRpbmcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0NvbmZpZ0FkdmFuY2Uge1xyXG4gICAgZ2V0V29ya2Zsb3dTZXR0aW5nOiAocm93RGF0YSkgPT4gV29ya2Zsb3dTZXR0aW5nTmV3O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3J1ZExpc3RDdXN0b21GdW5jdGlvbiB7XHJcbiAgICAvLyBDdXN0b21pemVcclxuICAgIGdldFNlYXJjaENvbnRyb2w/OiAoZmllbGQ6IHN0cmluZykgPT4gRm9ybVNjaGVtYUJhc2VbXSA9IChmaWVsZDogc3RyaW5nKSA9PiBudWxsO1xyXG4gICAgLy8gQXN5bmMgZnVuY3Rpb25cclxuICAgIG1vZGlmeUFkdmFuY2VTZWFjaE1vZGVsPzogKGRhdGE6IEFkdmFuY2VTZWFyY2hEYXRhLCBzZXR0aW5nOiBBZHZhbmNlU2VhcmNoU2V0dGluZykgPT4gUHJvbWlzZTx2b2lkPiA9IGFzeW5jIChkYXRhKSA9PiBudWxsO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRMaXN0Q3VzdG9tRnVuY3Rpb24pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQZXJzb25hbFNldHRpbmcge1xyXG4gICAgY29sdW1uU2V0dGluZz86IENvbHVtblNldHRpbmcgPSBuZXcgQ29sdW1uU2V0dGluZygpO1xyXG4gICAgcGFnZVNldHRpbmc/OiBQYWdlU2V0dGluZyA9IG5ldyBQYWdlU2V0dGluZygpO1xyXG4gICAgY29sb3JGaWx0ZXJGaWVsZCA9ICcnO1xyXG4gICAgY29sb3JGaWx0ZXJUYWJsZT86IFJvd0NvbG9yT3B0aW9uW10gPSBbXTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQZXJzb25hbFNldHRpbmcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkTGlzdERhdGEgZXh0ZW5kcyBDcnVkQmFzZSB7XHJcbiAgICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICByZWFkeSA9IHRydWU7XHJcbiAgICBkYXRhU291cmNlPzogYW55W10gPSBbXTtcclxuICAgIHNlbGVjdGVkSXRlbXM/OiBhbnlbXSA9IFtdO1xyXG4gICAgc2VsZWN0ZWRJdGVtPzogYW55O1xyXG4gICAgc2VsZWN0ZWRJdGVtTGFzdD86IGFueTtcclxuICAgIHNlbGVjdGVkSWQ/OiBudW1iZXI7XHJcbiAgICB0b3RhbCA9IDA7XHJcbiAgICBpdGVtRGF0YT86IGFueTtcclxuICAgIGFkdmFuY2VEYXRhOiBhbnkgPSB7fTtcclxuXHJcbiAgICBleHBhbmRlZFJvd0tleXM/OiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkTGlzdERhdGEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVudGl0eU1lZGF0YURhdGFTZXR0aW5nIHtcclxuICAgIGRhdGE/OiBhbnkgPSB7fTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBFbnRpdHlNZWRhdGFEYXRhU2V0dGluZykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJvd0NvbG9yT3B0aW9uIHtcclxuICAgIGZpbHRlclZhbHVlID0gJyc7XHJcbiAgICBjb21wYXJlVHlwZSA9ICcnO1xyXG4gICAgY29sb3IgPSAnJztcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBSb3dDb2xvck9wdGlvbikge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBhZ2VTZXR0aW5nIHtcclxuICAgIHBhZ2UgPSAxO1xyXG4gICAgcGFnZVNpemUgPSAxNTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQYWdlU2V0dGluZykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbHVtblNldHRpbmcge1xyXG4gICAgc29ydHM/OiBTb3J0W10gPSBbXTtcclxuICAgIHNvcnRGaWVsZD86IHN0cmluZztcclxuICAgIHNvcnREaXI/OiAtMSB8IDAgfCAxIHwgMiA9IC0xO1xyXG4gICAgZ3JvdXBGaWVsZCA9ICcnO1xyXG4gICAgZGV0YWlscz86IENvbHVtblNldHRpbmdEZXRhaWxbXSA9IFtdO1xyXG4gICAgY29sdW1uUmVvcmRlcj9cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDb2x1bW5TZXR0aW5nKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29sdW1uU2V0dGluZ0RldGFpbCB7XHJcbiAgICBvcmRlcj86IG51bWJlcjtcclxuICAgIGNvbHVtbkNvZGU/OiBzdHJpbmc7XHJcbiAgICBjb2x1bW5OYW1lPzogc3RyaW5nO1xyXG4gICAgdmlzaWJsZT86IGJvb2xlYW47XHJcbiAgICB0ZXh0QWxpZ24/OiBUZXh0QWxpZ247XHJcbiAgICB3aWR0aD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENydWRGb3JtRGF0YSBleHRlbmRzIENydWRCYXNlIHtcclxuICAgIGRhdGE/OiBhbnkgPSB7fTtcclxuICAgIHN1Ym1pdHRpbmc/PSBmYWxzZTtcclxuICAgIC8qKlxyXG4gICAgICogVHLhuqFuZyB0aMOhaSBj4bunYSBmb3JtIMSRYW5nIMSRxrDhu6NjIG3hu586IEzDoCBmb3JtIHRow6ptIG3hu5tpLCBoYXkgZm9ybSBz4butYSwgaGF5IGZvcm0geMOzYVxyXG4gICAgICovXHJcbiAgICBmb3JtU3RhdGU/OiBGb3JtU3RhdGUgPSBGb3JtU3RhdGUuQUREO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRGb3JtRGF0YSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3J1ZEZvcm1DdXN0b21GdW5jdGlvbiB7XHJcbiAgICAvLyBDdXN0b21pemVcclxuICAgIG1vZGlmeURhdGFBZnRlckdldENhY2hlPzogKGRhdGE6IGFueSkgPT4gdm9pZCA9IChkYXRhOiBhbnkpID0+IG51bGw7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3RDdXN0b21GdW5jdGlvbikge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENydWRGb3JtU2V0dGluZyB7XHJcbiAgICBkaXNhYmxlQ2FjaGluZyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuVHJpbmhLeSA9IHRydWU7XHJcbiAgICBzY2hlbWE/OiBGb3JtU2NoZW1hQmFzZVtdID0gW107XHJcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlO1xyXG4gICAgYnVpbGRJblNjaGVtYT86IEZvcm1Db250cm9sQmFzZVtdID0gW107XHJcbiAgICB1bmlxdWVGaWVsZD86IHN0cmluZ1tdIHwgc3RyaW5nW11bXSA9IFtdO1xyXG4gICAgZmllbGREcm9wZG93bj86IHsgW2tleTogc3RyaW5nXTogRHJvcGRvd25Db250cm9sU2NoZW1hIH0gPSB7fTtcclxuICAgIGZpZWxkTmVlZEdldFJlZj86IHsgW2tleTogc3RyaW5nXTogVGV4dENvbnRyb2xTY2hlbWEgfSA9IHt9O1xyXG4gICAgZGlzcGxheUZpZWxkPzogc3RyaW5nIHwgKChpdGVtKSA9PiBzdHJpbmcpO1xyXG4gICAgZmlyc3RGb2N1c0NvbnRyb2w/OiBzdHJpbmc7XHJcbiAgICBmaWx0ZXJDaGVja0V4aXN0QnlWZXJzaW9uPzogRmlsdGVyW107XHJcbiAgICBkZWZhdWx0RmlsdGVyQ2hlY2tFeGlzdD86IEZpbHRlcltdIHwgKCgpID0+IEZpbHRlcltdKTtcclxuICAgIGN1c3RvbVdvcmtmbG93Q29kZVRyaW5oS3k6IEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleSA9IEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleS5NQUNfRElOSDtcclxuICAgIGVudGl0eU1ldGFkYXRhRGF0YT86IENydWRGb3JtRGF0YTtcclxuICAgIGVudGl0eU1ldGFkYXRhU2V0dGluZz86IENydWRGb3JtU2V0dGluZztcclxuICAgIGZ1bmN0aW9uPzogQ3J1ZEZvcm1DdXN0b21GdW5jdGlvbiA9IG5ldyBDcnVkRm9ybUN1c3RvbUZ1bmN0aW9uKCk7XHJcbiAgICBnZXRDdXN0b21EYXRhVHJpbmhLeTogKHJvd0RhdGEpID0+IGFueSA9IChyb3dEYXRhKSA9PiAoe30pO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRGb3JtU2V0dGluZykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFkdmFuY2VTZWFyY2hEYXRhIGV4dGVuZHMgQ3J1ZEZvcm1EYXRhIHtcclxuICAgIGluaXREYXRhPzogYW55ID0ge307XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQWR2YW5jZVNlYXJjaERhdGEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFkdmFuY2VTZWFyY2hTZXR0aW5nIGV4dGVuZHMgQ3J1ZEZvcm1TZXR0aW5nIHtcclxuICAgIGZpZWxkS2V5ID0gJ19rJztcclxuICAgIGVudGl0eVBlcm1pc3Npb25TY2hlbWE/OiBGb3JtQ29udHJvbEJhc2VbXSA9IFtdO1xyXG4gICAga2VlcEluaXRTZWFyY2hEYXRhTm90TnVsbCA9IHRydWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQWR2YW5jZVNlYXJjaFNldHRpbmcpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNjaGVtYUJhc2Uge1xyXG4gICAgZmllbGQ/OiBzdHJpbmc7XHJcbiAgICB1bmlxdWVGaWVsZD86IHN0cmluZztcclxuICAgIHR5cGU/OiAnYm9vbGVhbicgfCAnaW50JyB8ICdkZWNpbWFsJyB8ICdkYXRldGltZScgfCAnc3RyaW5nJyA9ICdzdHJpbmcnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBTY2hlbWFCYXNlKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybVNjaGVtYUJhc2UgZXh0ZW5kcyBTY2hlbWFCYXNlIHtcclxuICAgIGxhYmVsPzogc3RyaW5nO1xyXG4gICAgZnVsbExhYmVsPzogc3RyaW5nO1xyXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgICBzaG93TGFiZWw/PSB0cnVlO1xyXG4gICAgZ1dpZHRoPz0gMTI7XHJcbiAgICBtZFdpZHRoPz0gNjtcclxuICAgIHdpZHRoPzogc3RyaW5nO1xyXG4gICAgY2xhc3M/PSAnJztcclxuICAgIHN0eWxlPzogYW55ID0ge307XHJcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgICBoaWRkZW4/PSBmYWxzZTtcclxuICAgIGhpZGRlbkNoZWNrPzogKHJvb3RNb2RlbDogYW55LCBjdXJyZW50Tm9kZTogQ29udHJvbFRyZWVOb2RlKSA9PiBib29sZWFuO1xyXG4gICAgaGlkZGVuT25WaWV3Pz0gZmFsc2U7XHJcbiAgICB2aXNpYmxlSW5MaXN0Pz0gdHJ1ZTtcclxuICAgIG9wZXJhdG9yPzogT3BlcmF0b3I7XHJcbiAgICBncm91cENvZGU/PSAnJztcclxuICAgIGRlZmF1bHRWYWx1ZT86IGFueTtcclxuICAgIGZpZWxkQWxpYXM/PSAnJztcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGb3JtU2NoZW1hQmFzZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29udGFpbmVyU2NoZW1hIGV4dGVuZHMgRm9ybVNjaGVtYUJhc2Uge1xyXG4gICAgY29udHJvbHM6IEZvcm1TY2hlbWFCYXNlW107XHJcbiAgICBzaG93SW5Cb3g/PSB0cnVlO1xyXG4gICAgYm94U3R5bGU/OiBhbnk7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29udGFpbmVyU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtU2NoZW1hQmFzZVdpdGhTZXJ2aWNlIGV4dGVuZHMgRm9ybVNjaGVtYUJhc2Uge1xyXG4gICAgLy8gVXJsIMSR4buDIGzhuqV5IGThu68gbGnhu4d1ICoqKiBLSMOUTkcgU+G7rCBE4bukTkcgVFJPTkcgQ8OBQyBDQVNFIFBI4buUIEJJ4bq+TiwgQ0jhu4ggU+G7rCBE4bukTkcgxJDhu5BJIFbhu5pJIEZPUk0gS0jhuqJPIFPDgVQgKioqXHJcbiAgICBzZXJ2aWNlVXJpPz0gJyc7XHJcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlIHwgTWFzdGVyRGF0YVNlcnZpY2U7XHJcbiAgICByZWZGaWVsZHM/OiBSZWZGaWVsZFtdID0gW107XHJcbiAgICBncm91cENvZGU/OiBzdHJpbmc7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgZGF0YVNvdXJjZT86IGFueVtdID0gW107XHJcblxyXG4gICAgaXNTZXJ2ZXJMb2FkPz0gZmFsc2U7XHJcbiAgICBzZWFyY2hGaWVsZD86IHN0cmluZ1tdO1xyXG5cclxuICAgIGlzVHJlZT89IGZhbHNlO1xyXG4gICAgZmllbGRUcmVlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVQYXJlbnRSb290PzogYW55ID0gbnVsbDsgLy8gR2nDoSB0cuG7iyB0csaw4budbmcgW2ZpZWxkVHJlZV0gY+G7p2EgaXRlbSB0cmVlIHJvb3RcclxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/PSAnaWQnOyAvLyBUcsaw4budbmcgeMOhYyDEkeG7i25oIGLhuqNuIGdoaSBsw6AgYuG6o24gZ2hpIGNoYSBj4bunYSBi4bqjbiBnaGkgY29uXHJcbiAgICBzZWxlY3RDaGlsZEl0ZW0/PSBmYWxzZTsgLy8gQ8OzIHNlbGVjdCBi4bqjbiBnaGkgY29uIG7hur91IGNo4buNbiBi4bqjbiBnaGkgY2hhXHJcblxyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIHNvcnRzPzogU29ydFtdID0gW107XHJcbiAgICBzb3J0RmllbGQ/PSAnJztcclxuICAgIHNvcnREaXI/OiAxIHwgLTEgPSAxO1xyXG4gICAgZmllbGRQbHVzPz0gJyc7IC8vIERhbmggc8OhY2ggbmjhu69uZyB0csaw4budbmcgYuG7lSBzdW5nIGPhuqduIGzhuqV5IHRow6ptIG5nb8OgaSBpZCwgdGVuOyBWw60gZOG7pSAsbWFcclxuICAgIGRlZmF1bHRGaWx0ZXJzPzogRmlsdGVyW10gfCBGdW5jdGlvbiB8IFByb21pc2U8RmlsdGVyW10+OyAvLyB0dW5ndHMgdGjDqm0ga2nhu4N1IGThu68gbGnhu4d1IGRlZmF1bHRGaWx0ZXJzIGzDoCBwcm9taXNlXHJcbiAgICBhZnRlckdldERhdGE/OiBGdW5jdGlvbjtcclxuXHJcbiAgICBmdW5jU2V0RGVmYXVsdFZhbHVlPzogRnVuY3Rpb247XHJcblxyXG4gICAgZmllbGRWYWx1ZVBhcmVudD89ICd2YWx1ZSc7IC8vIFRyxrDhu51uZyBz4butIGThu6VuZyDEkeG7gyBs4bqleSBk4buvIGxp4buHdSBsw6BtIGtow7NhIHThu6sgYuG6o25nIGNoYSBj4bunYSBpdGVtIGRyb3AgZG93biDEkcaw4bujYyBjaOG7jW5cclxuXHJcbiAgICBjYWxsYmFja0RhdGFGaW5pc2g/OiAoZXZ0OiBFdmVudERhdGEpID0+IHZvaWQ7XHJcbiAgICBtb2RpZnlGaWx0ZXI/OiBGdW5jdGlvbjtcclxuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XHJcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRm9ybVNjaGVtYUJhc2VXaXRoU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTGFiZWxTY2hlbWEgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZSB7XHJcbiAgICBmb3I/PSAnJztcclxuICAgIGlzSHRtbD89IGZhbHNlO1xyXG4gICAgbWRXaWR0aD89IDEyO1xyXG4gICAgaW5kZXhMYWJlbD86IG51bWJlcjtcclxuICAgIHRleHQ/PSAnJztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogTGFiZWxTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRpdGxlU2NoZW1hIGV4dGVuZHMgTGFiZWxTY2hlbWEge1xyXG4gICAgY2xhc3M/PSAndGl0bGUtZ3JvdXAgdGV4dC1ib2xkJztcclxuICAgIG1kV2lkdGg/PSAxMjtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUaXRsZVNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybUNvbnRyb2xCYXNlIGV4dGVuZHMgRm9ybVNjaGVtYUJhc2Uge1xyXG4gICAgX2NvbXBvbmVudD86IGFueTsgLy8gQ29tcG9uZW50IGPhu6dhIHNjaGVtYSBraGkga2jhu59pIHThuqFvXHJcbiAgICB1bmlxdWVGaWVsZD86IHN0cmluZzsgLy8gU+G7rSBk4bulbmcgdHJvbmcgdGFibGUgc2NoZW1hXHJcbiAgICBhdXRvZm9jdXM/PSBmYWxzZTtcclxuICAgIHZhbGlkYXRvcnM/OiBJVmFsaWRhdG9yW10gPSBbXTtcclxuICAgIGNvcnJlY3RvcnM/OiBJQ29ycmVjdG9yW10gPSBbXTtcclxuICAgIHJlcXVpcmVkPz0gZmFsc2U7XHJcbiAgICBlbmFibGVDYWNoaW5nPz0gZmFsc2U7XHJcbiAgICBvbkNoYW5nZWQ/OiBGdW5jdGlvbjtcclxuICAgIHRyaWdnZXJMb2FkQ2hpbGQ/OiBGdW5jdGlvbjtcclxuICAgIGhhc09wZXJhdG9yQ2FuQm8/PSBmYWxzZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGb3JtQ29udHJvbEJhc2UpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sQmFzZVdpdGhTZXJ2aWNlIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIC8qKiBDb3B5IHThu6sgRm9ybVNjaGVtYUJhc2VXaXRoU2VydmljZSAqL1xyXG4gICAgLy8gVXJsIMSR4buDIGzhuqV5IGThu68gbGnhu4d1ICoqKiBLSMOUTkcgU+G7rCBE4bukTkcgVFJPTkcgQ8OBQyBDQVNFIFBI4buUIEJJ4bq+TiwgQ0jhu4ggU+G7rCBE4bukTkcgxJDhu5BJIFbhu5pJIEZPUk0gS0jhuqJPIFPDgVQgKioqXHJcbiAgICBzZXJ2aWNlVXJpPz0gJyc7XHJcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlIHwgTWFzdGVyRGF0YVNlcnZpY2U7XHJcbiAgICByZWZGaWVsZHM/OiBSZWZGaWVsZFtdID0gW107XHJcbiAgICBncm91cENvZGU/OiBzdHJpbmc7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG5cclxuICAgIGlzU2VydmVyTG9hZD89IGZhbHNlO1xyXG4gICAgc2VhcmNoRmllbGQ/OiBzdHJpbmdbXTtcclxuXHJcbiAgICBpc1RyZWU/PSBmYWxzZTtcclxuICAgIGZpZWxkVHJlZT86IHN0cmluZztcclxuICAgIHZhbHVlUGFyZW50Um9vdD86IGFueSA9IG51bGw7IC8vIEdpw6EgdHLhu4sgdHLGsOG7nW5nIFtmaWVsZFRyZWVdIGPhu6dhIGl0ZW0gdHJlZSByb290XHJcbiAgICBmaWVsZFBhcmVudFRyZWVJdGVtPz0gJ2lkJzsgLy8gVHLGsOG7nW5nIHjDoWMgxJHhu4tuaCBi4bqjbiBnaGkgbMOgIGLhuqNuIGdoaSBjaGEgY+G7p2EgYuG6o24gZ2hpIGNvblxyXG4gICAgc2VsZWN0Q2hpbGRJdGVtPz0gZmFsc2U7IC8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxyXG5cclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIGZpZWxkUGx1cz89ICcnOyAvLyBEYW5oIHPDoWNoIG5o4buvbmcgdHLGsOG7nW5nIGLhu5Ugc3VuZyBj4bqnbiBs4bqleSB0aMOqbSBuZ2/DoGkgaWQsIHRlbjsgVsOtIGThu6UgLG1hXHJcbiAgICBkZWZhdWx0RmlsdGVycz86IEZpbHRlcltdIHwgRnVuY3Rpb24gfCBQcm9taXNlPEZpbHRlcltdPjsgLy8gdHVuZ3RzIHRow6ptIGtp4buDdSBk4buvIGxp4buHdSBkZWZhdWx0RmlsdGVycyBsw6AgcHJvbWlzZVxyXG4gICAgYmluZGluZ0ZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47IC8vIHR1bmd0cyB0aMOqbSBraeG7g3UgZOG7ryBsaeG7h3UgZGVmYXVsdEZpbHRlcnMgbMOgIHByb21pc2VcclxuICAgIGFmdGVyR2V0RGF0YT86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGZ1bmNTZXREZWZhdWx0VmFsdWU/OiBGdW5jdGlvbjtcclxuXHJcbiAgICBwYXJlbnRGaWVsZD86IHN0cmluZzsgLy8gQ29sdW1uIHTGsMahbmcg4bupbmcgdHJvbmcgdGFibGUgc3FsIHNlcnZlci5cclxuICAgIGZpZWxkVmFsdWVQYXJlbnQ/PSAndmFsdWUnOyAvLyBUcsaw4budbmcgc+G7rSBk4bulbmcgxJHhu4MgbOG6pXkgZOG7ryBsaeG7h3UgbMOgbSBraMOzYSB04burIGLhuqNuZyBjaGEgY+G7p2EgaXRlbSBkcm9wIGRvd24gxJHGsOG7o2MgY2jhu41uXHJcblxyXG4gICAgY2FsbGJhY2tEYXRhRmluaXNoPzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgZmlyZUNhbGxCYWNrSW5zaWRlPz0gdHJ1ZTtcclxuICAgIG1vZGlmeUZpbHRlcj86IEZ1bmN0aW9uO1xyXG4gICAgY29yZVZlcnNpb24/PSBFbnVtQ29yZVZlcnNpb24uVjU7XHJcblxyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuICAgIC8qKiBFbmQgY29weSB04burIEZvcm1TY2hlbWFCYXNlV2l0aFNlcnZpY2UgKi9cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRm9ybUNvbnRyb2xCYXNlV2l0aFNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRleHRDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIHNlbGVjdEFsbFRleHQ/PSBmYWxzZTsgLy8gQ2jhu41uIHThuqV0IGPhuqMgdGV4dCBraGkgZm9jdXNcclxuXHJcbiAgICBwbGFjZWhvbGRlcj89ICcnO1xyXG4gICAgZGF0YUZvcm1hdD86ICd0ZXh0JyB8ICdwYXNzd29yZCcgfCAnbnVtYmVyJyB8ICdlbWFpbCcgfCAncGhvbmUnIHwgJ2ZheCcgfCAnbW9uZXknIHwgJ21vbmV5aW50JyB8ICdhbW91bnQnID0gJ3RleHQnO1xyXG4gICAgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG4gICAgbWluPz0gMDtcclxuICAgIG1heD89IDk5OTk5OTk5O1xyXG5cclxuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2UgfCBNYXN0ZXJEYXRhU2VydmljZTtcclxuICAgIGdyb3VwQ29kZT86IHN0cmluZztcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ3Rlbic7XHJcblxyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIHNvcnRzPzogU29ydFtdID0gW107XHJcbiAgICBzb3J0RmllbGQ/PSAnJztcclxuICAgIHNvcnREaXI/OiAxIHwgLTEgPSAxO1xyXG4gICAgZmllbGRQbHVzPz0gJyc7IC8vIERhbmggc8OhY2ggbmjhu69uZyB0csaw4budbmcgYuG7lSBzdW5nIGPhuqduIGzhuqV5IHRow6ptIG5nb8OgaSBpZCwgdGVuOyBWw60gZOG7pSAsbWFcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGV4dENvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRleHRDb250cm9sU2NoZW1hV2l0aFNlcnZpY2UgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2VXaXRoU2VydmljZSB7XHJcbiAgICBwbGFjZWhvbGRlcj89ICcnO1xyXG4gICAgZGF0YUZvcm1hdD86ICd0ZXh0JyB8ICdudW1iZXInIHwgJ2VtYWlsJyB8ICdwaG9uZScgfCAnZmF4JyB8ICdtb25leScgfCAnbW9uZXlpbnQnIHwgJ2Ftb3VudCcgPSAndGV4dCc7XHJcbiAgICBtYXhMZW5ndGg/OiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRleHRDb250cm9sU2NoZW1hV2l0aFNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE1hc2tDb250cm9sU2NoZW1hIGV4dGVuZHMgVGV4dENvbnRyb2xTY2hlbWEge1xyXG4gICAgbWFza1R5cGU/OiAnZGVjaW1hbCcgfCAnaW50JyA9ICdpbnQnO1xyXG4gICAgbWluPz0gMDtcclxuICAgIG1heD89IDk5OTk5OTk5OTk7XHJcbiAgICBwcmVmaXg/PSAnJztcclxuICAgIHN1ZmZpeD89ICcnO1xyXG4gICAgZGVjaW1hbFBsYWNlcz89IDI7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogTWFza0NvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSBleHRlbmRzIFRleHRDb250cm9sU2NoZW1hIHtcclxuICAgIG1hc2tUeXBlPzogJ2RlY2ltYWwnIHwgJ2ludCc7XHJcbiAgICBtaW4/PSAwO1xyXG4gICAgbWF4Pz0gOTk5OTk5OTk5OTtcclxuICAgIHByZWZpeD89ICcnO1xyXG4gICAgc3VmZml4Pz0gJyc7XHJcbiAgICBkZWNpbWFsUGxhY2VzPz0gMjtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVUaW1lQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBhcHBlbmRUbz89ICdib2R5JztcclxuICAgIHBhbmVsQ2xhc3M/PSAnJztcclxuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gICAgc2hvd1RpbWU/PSBmYWxzZTtcclxuICAgIHNob3dJY29uPz0gdHJ1ZTtcclxuICAgIGZvcm1hdD86ICdub3JtYWwnIHwgJ2Zyb21Ob3cnID0gJ2Zyb21Ob3cnO1xyXG4gICAgc2hvd09uRm9jdXM/PSB0cnVlO1xyXG4gICAgbWluRGF0ZT86IERhdGUgPSBudWxsO1xyXG4gICAgbWF4RGF0ZT86IERhdGUgPSBudWxsO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEYXRlVGltZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLnNob3dUaW1lID8gJ2RkL01NL3l5eXkgaGg6bW0nIDogJ2RkL01NL3l5eXknO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVUaW1lUmFuZ2VDb250cm9sU2NoZW1hIGV4dGVuZHMgRGF0ZVRpbWVDb250cm9sU2NoZW1hIHtcclxuICAgIHNob3dJY29uPz0gZmFsc2U7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRGF0ZVRpbWVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlQaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlV2l0aFNlcnZpY2Uge1xyXG5cclxuICAgIC8vICNQcm9wZXJ0eSBvdmVycmlkZVxyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZTtcclxuICAgIC8vICNFbmQgcHJvcGVydHkgb3ZlcnJpZGVcclxuXHJcbiAgICByZXR1cm5UeXBlPzogJ3ZhbHVlJyB8ICdvYmplY3QnID0gJ3ZhbHVlJztcclxuXHJcbiAgICBtdWx0aXBsZT89IHRydWU7XHJcbiAgICBsaW1pdD89IDEwMDA7XHJcbiAgICB0aXRsZT89ICcgJztcclxuICAgIGNvbHVtbnM/OiBFbnRpdHlQaWNrZXJDb2x1bW5bXTtcclxuICAgIGZpZWxkU2VhcmNoVGV4dD86IHN0cmluZ1tdID0gW107XHJcbiAgICBkYXRhSW5pdD86IGFueSA9IHt9O1xyXG4gICAgYWR2YW5jZVNlYXJjaE1vZGVsPzogYW55ID0ge307XHJcbiAgICBvblNlYXJjaEZvcm1Jbml0aWFsaXplZD86IEZ1bmN0aW9uO1xyXG4gICAgb25Gb3JtRXZlbnQ/OiBGdW5jdGlvbjtcclxuICAgIG9uU2VsZWN0RW50aXR5PzogRnVuY3Rpb247IC8vIG7hur91IGZ1bmN0aW9uIGtow6FjIG51bGwgdsOgIHJldHVybiB0cnVlIHPhur0gY2hvIHBow6lwIG3hu58gZGlhbG9nXHJcbiAgICBhZnRlckNvbnRlbnRMZWZ0SW5pdD86IChjcnVkTGlzdDogQ3J1ZExpc3RDb21wb25lbnQpID0+IHZvaWQ7IC8vIFNhdSBraGkgY8OhYyB0ZW1wbGF0ZSBjb250ZW50IGluaXRcclxuICAgIGFmdGVyQ29udGVudFJpZ2h0SW5pdD86IChjcnVkTGlzdDogQ3J1ZExpc3RDb21wb25lbnQpID0+IHZvaWQ7IC8vIFNhdSBraGkgY8OhYyB0ZW1wbGF0ZSBjb250ZW50IGluaXRcclxuICAgIGFmdGVyR2V0RGF0YT86IChzb3VyY2VzOiBhbnlbXSwgZWxlbWVudDogRW50aXR5UGlja2VyQ29tcG9uZW50KSA9PiB2b2lkO1xyXG4gICAgYWZ0ZXJHZXREYXRhVW5QaWNrZWQ/OiAoc291cmNlczogYW55W10sIGVsZW1lbnQ6IEVudGl0eVBpY2tlckRhdGFDb21wb25lbnQpID0+IHZvaWQ7XHJcbiAgICBhZnRlckdldERhdGFQaWNrZWQ/OiAoc291cmNlczogYW55W10sIGVsZW1lbnQ6IEVudGl0eVBpY2tlclNlbGVjdGVkQ29tcG9uZW50KSA9PiB2b2lkO1xyXG5cclxuICAgIC8vIEPDsyBz4butIGThu6VuZyBwbHVzVXJsIOG7nyBtw6BuIGjDrG5oIGNow61uaCBFbnRpdHlQaWNrZXIgaGF5IGtow7RuZy5cclxuICAgIHVzZURlZmF1bHRQbHVzbFVybEluTGlzdD89IGZhbHNlO1xyXG5cclxuICAgIC8vIEPDsyBz4butIGThu6VuZyBkZWZhdWx0RmlsdGVyIGtoaSB0w6xtIGtp4bq/bSBkYW5oIHPDoWNoIOG7nyBtw6BuIGjDrG5oIGNow61uaCBFbnRpdHlQaWNrZXIuXHJcbiAgICB1c2VEZWZhdWx0RmlsdGVySW5MaXN0Pz0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEVudGl0eVBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBFbnRpdHlQaWNrZXJDb250cm9sU2NoZW1hIHtcclxuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gICAgZGF0YVR5cGU/OiBFbnVtQ29udHJvbFBpY2tlclR5cGUgPSBFbnVtQ29udHJvbFBpY2tlclR5cGUuVVNFUjtcclxuICAgIGFwcGVuZFRvPz0gJ2JvZHknO1xyXG4gICAgbW9kaWZ5SW5pdFNlYXJjaERhdGE/OiBGdW5jdGlvbjsgLy8gU+G7rSBk4bulbmcgxJHhu4MgbW9kaWZ5IGRhdGEgY+G7p2EgcGjhuqduIHNlYXJjaCwgdGjGsOG7nW5nIMSR4buDIHNldCBpbml0IGRhdGEgZHluYW1pYyB0aGVvIG5odSBj4bqndVxyXG4gICAgY2FsbEJhY2s/OiB7IFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uIH07XHJcbiAgICBvblJlYWR5PzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgbW9kaWZ5Q29udHJvbD86IEZ1bmN0aW9uOyAvLyBT4butIGThu6VuZyDEkeG7gyBtb2RpZnkgc2NoZW1hIGJhc2VcclxuICAgIG5lZWRDbG9uZT89IGZhbHNlOyAvLyBT4butIGThu6VuZyB0cm9uZyB0YWJsZSBzY2hlbWEsIGtoaSBkYXRhc291cmNlIGPhu6dhIG3hu5l0IGPhu5l0IHRyw6puIG3hu5dpIGTDsm5nIGzDoCBraMOhYyBuaGF1IGPhuqduIHNldCBuZWVkQ2xvbmUgPSB0cnVlXFxcclxuICAgIGFmdGVyR2V0RGF0YURyb3Bkb3duPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBBdXRvQ29tcGxldGVQaWNrZXJDb21wb25lbnQpID0+IHZvaWQ7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV3JhcFBpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hIHtcclxuICAgIGRhdGFUeXBlPzogRW51bUNvbnRyb2xQaWNrZXJUeXBlID0gRW51bUNvbnRyb2xQaWNrZXJUeXBlLlVTRVI7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogV3JhcFBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEN1c3RvbUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3VzdG9tQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29sb3JQaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGVuYWJsZUNhY2hpbmc/PSB0cnVlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbG9yUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFNwYW5Db250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIHNvdXJjZUZpZWxkPzogc3RyaW5nO1xyXG4gICAgaXNodG1sPz0gZmFsc2U7XHJcbiAgICBlZGl0YWJsZT89IGZhbHNlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFNwYW5Db250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb2xvckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgc291cmNlRmllbGQ/OiBzdHJpbmc7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29sb3JDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBLZXlWYWx1ZUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEtleVZhbHVlQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRmlsZU1hbmFnZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIG1kV2lkdGg/PSAxMjtcclxuICAgIGFjY2VwdD86IHN0cmluZztcclxuICAgIG1heEZpbGVTaXplPz0gMTAwMDAwMDAwO1xyXG4gICAgaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnk/PSAnezB9OiBRdcOhIGR1bmcgbMaw4bujbmcgZmlsZSBjaG8gcGjDqXAsICc7XHJcbiAgICBpbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsPz0gJ2R1bmcgbMaw4bujbmcgdOG7kWkgxJFhIGzDoCB7MH0uJztcclxuICAgIGludmFsaWRGaWxlVHlwZU1lc3NhZ2VTdW1tYXJ5Pz0gJ3swfTogS2jDtG5nIMSRw7puZyDEkeG7i25oIGThuqFuZyBmaWxlLCAnO1xyXG4gICAgaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbD89ICfEkeG7i25oIGThuqFuZyBmaWxlIGNobyBwaMOpcDogezB9Lic7XHJcbiAgICBpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZVN1bW1hcnk/PSAnUXXDoSBz4buRIGzGsOG7o25nIGZpbGUgY2hvIHBow6lwLCAnO1xyXG4gICAgaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VEZXRhaWw/PSAndOG7kWkgxJFhIHswfSBmaWxlLic7XHJcbiAgICBtb2RlPzogRmlsZU1hbmFnZXJNb2RlIHwgRmlsZVVwbG9hZE1vZGUgPSBGaWxlTWFuYWdlck1vZGUubXVsdGlwbGU7XHJcbiAgICBsYXlvdXQ/OiBFbnVtRmlsZUxheW91dCA9IEVudW1GaWxlTGF5b3V0LkxJU1Q7XHJcbiAgICByZWFkb25seT89IGZhbHNlO1xyXG5cclxuICAgIC8vIFNlcnZpY2UgZMO5bmcgxJHhu4MgbOG6pXkgZGF0YXNvdXJjZSBj4bunYSBuaGnhu4F1IGNvbnRyb2wgbeG7mXQgbOG6p24uXHJcbiAgICBmaWxlRGF0YVNlcnZpY2U/OiBGaWxlRGF0YVNlcnZpY2U7XHJcblxyXG4gICAgLy8gQuG7mSAzIGtleSDEkeG7gyBs4bqleSB0aMawIG3hu6VjIGfhu5FjLlxyXG4gICAgc2VydmljZUNvZGU/OiBzdHJpbmc7XHJcbiAgICBlbnRpdHk/OiBzdHJpbmc7XHJcbiAgICBlbnRpdHlLZXk/OiBzdHJpbmc7XHJcblxyXG4gICAgLy8gVMOqbiB0aMawIG3hu6VjIGfhu5FjIGtoaSBoaeG7g24gdGjhu4sgdHLDqm4gYnJlYWRjcnVtYnMuXHJcbiAgICByb290Rm9sZGVyTmFtZT86IHN0cmluZztcclxuXHJcbiAgICAvLyBUcsaw4budbmcgaOG7o3Ag4bufIHRyb25nIGZvcm0sIGTDuW5nIHRyxrDhu51uZyBuw6B5IMSR4buDIGzhuqV5XHJcbiAgICAvLyBlbnRpdHlLZXkgdOG7qyBtb2RlbC5kYXRhIHRoYXkgdsOsIHRydXnhu4FuIHbDoG8gZW50aXR5S2V5XHJcbiAgICBlbnRpdHlLZXlGaWVsZD89ICdpZCc7XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGaWxlTWFuYWdlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb250cm9sU2NoZW1hIGV4dGVuZHMgRmlsZU1hbmFnZXJDb250cm9sU2NoZW1hIHtcclxuICAgIG1vZGU/PSBGaWxlVXBsb2FkTW9kZS51c2luZ1NlcnZpY2VGaWxlO1xyXG4gICAgbWRXaWR0aD89IDY7XHJcbiAgICBzaGFyZWRGb2xkZXJUeXBlPzogU2hhcmVkRm9sZGVyVHlwZSA9IFNoYXJlZEZvbGRlclR5cGUuVGVtcHQ7XHJcblxyXG4gICAgaGlkZGVuQnV0dG9ucz89IGZhbHNlO1xyXG4gICAgZGlzYWJsZWQ/PSBmYWxzZTtcclxuICAgIHJlYWRvbmx5Pz0gZmFsc2U7XHJcbiAgICBhdXRvU2F2ZWQ/PSB0cnVlO1xyXG5cclxuICAgIGVuYWJsZVNjYW4/PSBmYWxzZTtcclxuICAgIGV4dHJhY3RaaXBGaWxlPz0gZmFsc2U7XHJcbiAgICBlbmFibGVEcml2ZUZpbGU/PSBmYWxzZTtcclxuXHJcbiAgICBzaG93RG93bmxvYWRGaWxlPz0gdHJ1ZTtcclxuICAgIHNob3dEZWxldGVGaWxlPz0gdHJ1ZTtcclxuICAgIHNob3dQcmludEZpbGU/PSB0cnVlO1xyXG4gICAgbWF4RmlsZVNpemU/PSAxMDAwMDAwMDA7IC8vIDEwMCBNQlxyXG4gICAgaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnk/PSAnezB9OiBRdcOhIGR1bmcgbMaw4bujbmcgZmlsZSBjaG8gcGjDqXAsICc7XHJcbiAgICBpbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsPz0gJ2R1bmcgbMaw4bujbmcgdOG7kWkgxJFhIGzDoCB7MH0uJztcclxuICAgIGludmFsaWRGaWxlVHlwZU1lc3NhZ2VTdW1tYXJ5Pz0gJ3swfTogS2jDtG5nIMSRw7puZyDEkeG7i25oIGThuqFuZyBmaWxlLCAnO1xyXG4gICAgaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbD89ICfEkeG7i25oIGThuqFuZyBmaWxlIGNobyBwaMOpcDogezB9Lic7XHJcbiAgICBpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZVN1bW1hcnk/PSAnUXXDoSBz4buRIGzGsOG7o25nIGZpbGUgY2hvIHBow6lwLCAnO1xyXG4gICAgaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VEZXRhaWw/PSAndOG7kWkgxJFhIHswfSBmaWxlLic7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZpbGVVcGxvYWRDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBjbGFzcyBTd2l0Y2hDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBTd2l0Y2hDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDaGVja2JveENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBoaWRkZW5MYWJlbD89IGZhbHNlOyAvLyBTZXQgPSB0cnVlIGNo4bunIHnhur91IGtoaSBkw7luZyB0cm9uZyB0YWJsZSBzY2hlbWEgxJHhu4Mg4bqpbiBsYWJlbCDEkWksIHbDrCBsYWJlbCDEkcOjIGPDsyB0csOqbiB0acOqdSDEkeG7gSBj4buZdFxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENoZWNrYm94Q29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcclxuICAgIHNob3dMYWJlbD89IGZhbHNlO1xyXG4gICAgYnRDbGFzcz89ICdwLWJ1dHRvbi10ZXh0JztcclxuICAgIGljb24/O1xyXG4gICAgYnRTdHlsZT89IHsgd2lkdGg6ICdhdXRvJyB9O1xyXG4gICAgb25DbGljaz86IEZ1bmN0aW9uO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEJ1dHRvbkNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcclxuICAgIHRlbXBsYXRlOiBhbnk7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGVtcGxhdGVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUZXh0QXJlYUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgcm93cz89IDU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGV4dEFyZWFDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBVc2VyUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBhcHBlbmRUbz89ICdib2R5JztcclxuICAgIG11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIGxpbWl0Pz0gMjA7IC8vIEdp4bubaSBo4bqhbiBz4buRIG5nxrDhu51pIGTDuW5nIHThu5FpIMSRYSDEkcaw4bujYyBwaWNrXHJcbiAgICB0aXRsZT89ICdDaOG7jW4gbmfGsOG7nWkgZMO5bmcnO1xyXG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47XHJcbiAgICBlbmFibGVDYWNoaW5nPz0gdHJ1ZTtcclxuICAgIHBhcmVudE9yZ0NvZGU/OiBzdHJpbmc7XHJcbiAgICBwbGFjZWhvbGRlcj89ICcnO1xyXG4gICAgbGF6eUxvYWRPcmdhbml6YXRpb24/PSBmYWxzZTtcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ2Z1bGxOYW1lTmV3JztcclxuICAgIGZpZWxkUGx1cz89ICcnO1xyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIHJldHVyblR5cGU/OiAndmFsdWUnIHwgJ29iamVjdCcgPSAndmFsdWUnO1xyXG4gICAgb25SZWFkeT86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XHJcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVXNlclBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvQ2F1VG9DaHVjUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBhcHBlbmRUbz89ICdib2R5JztcclxuICAgIG11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIGxpbWl0Pz0gMjA7IC8vIEdp4bubaSBo4bqhbiBz4buRIGLhuqNuIGdoaSB04buRaSDEkWEgxJHGsOG7o2MgcGlja1xyXG4gICAgdGl0bGU/PSAnQ2jhu41uIMSRxqFuIHbhu4snO1xyXG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47XHJcbiAgICBlbmFibGVDYWNoaW5nPz0gdHJ1ZTtcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ3Rlbic7XHJcbiAgICBmaWVsZFBsdXM/PSAnJztcclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICBvblJlYWR5PzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBVc2VyUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBmaWx0ZXI/PSB0cnVlO1xyXG4gICAgbXVsdGlwbGU/PSB0cnVlO1xyXG4gICAgcGFyZW50T3JnSWQ/OiBudW1iZXI7XHJcbiAgICBwYXJlbnRPcmdDb2RlPzogc3RyaW5nO1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBpc1VzaW5nSWQ/PSB0cnVlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IE9yZ2FuaXphdGlvblBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvQ2F1VG9DaHVjQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBmaWx0ZXI/PSB0cnVlO1xyXG4gICAgbXVsdGlwbGU/PSB0cnVlO1xyXG4gICAgcGFyZW50T3JnSWQ/OiBudW1iZXI7XHJcbiAgICBwYXJlbnRPcmdDb2RlPzogc3RyaW5nO1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBpc1VzaW5nSWQ/PSB0cnVlO1xyXG4gICAgZGlzYWJsZWRQYXJlbnRJdGVtPz0gdHJ1ZTtcclxuICAgIHJvb3RQYXJlbnRJZD86IHN0cmluZyA9IG51bGw7XHJcbiAgICBkaXNhYmxlZD89IGZhbHNlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvQ2F1VG9DaHVjQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRWRpdG9yQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBtb2RlPzogJ2Jhc2ljJyB8ICdtZWRpdW0nIHwgJ2Z1bGwnIHwgJ3NpbXBsZScgPSAnYmFzaWMnO1xyXG4gICAgaGVpZ2h0Pz0gMjUwO1xyXG4gICAgaW5pdD86IGFueTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBFZGl0b3JDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZVdpdGhTZXJ2aWNlIHtcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ3Rlbic7XHJcbiAgICByZXR1cm5UeXBlPzogJ3ZhbHVlJyB8ICdvYmplY3QnID0gJ3ZhbHVlJztcclxuICAgIGRhdGFTb3VyY2U/OiBhbnkgfCBGdW5jdGlvbjtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEYXRhU291cmNlQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db250cm9sU2NoZW1hIGV4dGVuZHMgRGF0YVNvdXJjZUNvbnRyb2xTY2hlbWEge1xyXG4gICAgYXBwZW5kVG8/PSAnYm9keSc7XHJcbiAgICBwYW5lbENsYXNzPz0gJyc7XHJcbiAgICBwbGFjZWhvbGRlcj89ICdDaOG7jW4nO1xyXG4gICAgc2VsZWN0ZWRJdGVtc0xhYmVsPz0gJ8SQw6MgY2jhu41uIHswfSBt4bulYyc7XHJcbiAgICBzZWxlY3RlZEFsbEl0ZW1MYWJlbD89ICfEkMOjIGNo4buNbiB04bqldCBj4bqjJztcclxuICAgIHNob3dDbGVhcj89IHRydWU7XHJcbiAgICBmaWx0ZXI/PSB0cnVlO1xyXG4gICAgbXVsdGlwbGU/PSBmYWxzZTtcclxuICAgIGdlbmVyYXRlVG9vbHRpcD86IChpdGVtKSA9PiBzdHJpbmc7XHJcbiAgICBtYXhTZWxlY3RlZExhYmVscz89IDU7XHJcbiAgICBtYXhJdGVtRGlzcGxheT89IDUwO1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBuZWVkQ2xvbmU/PSBmYWxzZTsgLy8gU+G7rSBk4bulbmcgdHJvbmcgdGFibGUgc2NoZW1hLCBraGkgZGF0YXNvdXJjZSBj4bunYSBt4buZdCBj4buZdCB0csOqbiBt4buXaSBkw7JuZyBsw6Aga2jDoWMgbmhhdSBj4bqnbiBzZXQgbmVlZENsb25lID0gdHJ1ZVxyXG4gICAgdGVtcGxhdGVJdGVtPzogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIHRlbXBsYXRlU2VsZWN0ZWRJdGVtPzogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIHF1aWNrQWRkPz0gZmFsc2U7XHJcbiAgICBjb2xzPzogRm9ybVNjaGVtYUJhc2VbXTtcclxuICAgIGluaXREYXRhPzogYW55ID0ge307XHJcbiAgICBwb3B1cFNpemU/OiBQb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKHsgd2lkdGg6IDc1MCwgaGVpZ2h0OiA0MDAgfSk7XHJcblxyXG4gICAgbG9hZEluRmlyc3REaXNwbGF5Pz0gdHJ1ZTtcclxuXHJcbiAgICBhdXRvR2V0RGF0YT89IHRydWU7XHJcblxyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuXHJcbiAgICBhdXRvRGlzcGxheUZpcnN0Pz0gZmFsc2U7XHJcbiAgICBub3RJbkNydWRGb3JtPz0gZmFsc2U7XHJcbiAgICBzZWFyY2hNdWx0aXBsZT89IHRydWU7XHJcbiAgICBkaXNhYmxlRGlzcGxheUZpZWxkU2VydmVyU2VhcmNoPz0gZmFsc2U7XHJcblxyXG4gICAgbG9hZE9uSW5pdD89IGZhbHNlO1xyXG4gICAgYWxsb3dMb2FkRGF0YVdoZW5QYXJlbnROdWxsPz0gZmFsc2U7XHJcblxyXG4gICAgZGlzYWJsZWRQYXJlbnRJdGVtPz0gdHJ1ZTtcclxuICAgIG9uQWRqdXN0ZWRWYWx1ZT86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEcm9wZG93bkNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFkZHJlc3NDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGhpZGVObz89IGZhbHNlO1xyXG4gICAgaGlkZVN0cmVldD89IGZhbHNlO1xyXG4gICAgaGlkZVdhcmQ/PSBmYWxzZTtcclxuICAgIGhpZGVEaXN0cmljdD89IGZhbHNlO1xyXG4gICAgcmVxdWlyZWRObz89IHRydWU7XHJcbiAgICByZXF1aXJlZFN0cmVldD89IHRydWU7XHJcbiAgICByZXF1aXJlZFdhcmQ/PSB0cnVlO1xyXG4gICAgcmVxdWlyZWREaXN0cmljdD89IHRydWU7XHJcbiAgICByZXF1aXJlZFByb3ZpbmNlPz0gdHJ1ZTtcclxuICAgIHdhcmRUb1Byb3ZpbmNlPz0gdHJ1ZTtcclxuICAgIG5vV2lkdGg/PSAxO1xyXG4gICAgc3RyZWV0V2lkdGg/PSAzO1xyXG4gICAgd2FyZFdpZHRoPz0gMztcclxuICAgIGRpc3RyaWN0V2lkdGg/PSAyO1xyXG4gICAgcHJvdmluY2VXaWR0aD89IDM7XHJcbiAgICBzaG93SW5Cb3g/PSBmYWxzZTtcclxuXHJcbiAgICBoaWRlSG9sZGVyPz0gdHJ1ZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBBZGRyZXNzQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVmFuQmFuUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBtZFdpZHRoPz0gMTI7XHJcbiAgICB1c2VWYkRlbj89IHRydWU7XHJcbiAgICB1c2VWYkRpPz0gdHJ1ZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBWYW5CYW5QaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb25nVmllY1BpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgbWRXaWR0aD89IDEyO1xyXG4gICAgc2VydmljZUNvZGU/OiBzdHJpbmc7XHJcbiAgICBlbnRpdHk/OiBzdHJpbmc7XHJcbiAgICBlbnRpdHlLZXk/OiBzdHJpbmc7XHJcbiAgICBzdGF0ZT86IGFueSA9IHt9O1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbmdWaWVjUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlQ29udHJvbFNjaGVtYSBleHRlbmRzIERhdGFTb3VyY2VDb250cm9sU2NoZW1hIHtcclxuICAgIHBsYWNlaG9sZGVyPz0gJyc7XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG4gICAgbWluTGVuZ3RoRmlsdGVyPz0gMTtcclxuICAgIGFwcGVuZFRvPzogc3RyaW5nID0gJ2JvZHknO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEF1dG9Db21wbGV0ZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJhZGlvQnV0dG9uTGlzdENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSB7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBsYXlvdXQ/OiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnID0gJ2hvcml6b250YWwnO1xyXG4gICAgYWxpZ24/OiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgPSAnbGVmdCc7XHJcbiAgICBvbkFkanVzdGVkVmFsdWU/OiBGdW5jdGlvbjtcclxuICAgIGRpc2FibGVDaGVjaz86ICgpID0+IGJvb2xlYW47XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFJhZGlvQnV0dG9uTGlzdENvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENoZWNrQm94TGlzdENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSB7XHJcbiAgICBlbmFibGVDYWNoaW5nPz0gdHJ1ZTtcclxuICAgIGxheW91dD86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgPSAnaG9yaXpvbnRhbCc7XHJcbiAgICBhbGlnbj86ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcclxuICAgIGNsYXNzUGx1cz89ICcnO1xyXG4gICAgZnJlZVRleHQ/PSAnJztcclxuICAgIHBDb2xDbGFzcz86IG51bWJlcjtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDaGVja0JveExpc3RDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUYWJsZVNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICByb3dUZW1wbGF0ZTogRm9ybVNjaGVtYUJhc2VbXTtcclxuICAgIHJvd0J1dHRvbnM/OiAocm93RGF0YSkgPT4gTWVudUl0ZW1bXTtcclxuICAgIGZvb3RlckJ1dHRvbnM/OiB7XHJcbiAgICAgICAgaWNvbj86IHN0cmluZztcclxuICAgICAgICBsYWJlbD86IHN0cmluZztcclxuICAgICAgICBjbGFzcz86IHN0cmluZztcclxuICAgICAgICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICB9W107XHJcbiAgICBzaG93TnVtYmVyPz0gdHJ1ZTtcclxuICAgIHNob3dGdW5jdGlvbj89IHRydWU7XHJcbiAgICBzaG93Rm9vdGVyPz0gdHJ1ZTtcclxuICAgIHNob3dTYXZlPz0gZmFsc2U7XHJcbiAgICBzaG93RWRpdD89IGZhbHNlO1xyXG4gICAgc2hvd0RlbGV0ZT89IHRydWU7XHJcbiAgICBzaG93QWRkPz0gdHJ1ZTtcclxuICAgIGVuYWJsZVJlb3JkZXJSb3c/PSBmYWxzZTtcclxuICAgIG9uUmVvcmRlcmVkPzogRnVuY3Rpb247XHJcbiAgICBlbmFibGVBZGRNdWx0aT89IGZhbHNlO1xyXG4gICAgcGlja2VyQ29udHJvbEZpZWxkPzogc3RyaW5nO1xyXG4gICAgaXNVbmlxdWU/PSB0cnVlO1xyXG4gICAgZW5hYmxlUGFnaW5nPz0gZmFsc2U7XHJcbiAgICBsaW1pdD89IDUwO1xyXG4gICAgaW5pdFJvd0NvdW50Pz0gMTtcclxuICAgIG1kV2lkdGg/PSAxMjtcclxuXHJcbiAgICBvbkFkZGluZz86IEZ1bmN0aW9uO1xyXG4gICAgb25BZGRlZD86IEZ1bmN0aW9uO1xyXG4gICAgb25TYXZlPzogRnVuY3Rpb247XHJcbiAgICBvbk1lc3NhZ2U/OiBGdW5jdGlvbjtcclxuICAgIG9uRGVsZXRpbmc/OiBGdW5jdGlvbjtcclxuICAgIG9uRGVsZXRlZD86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUYWJsZVNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29sdW1uU2NoZW1hQmFzZSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlV2l0aFNlcnZpY2Uge1xyXG4gICAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgICBzaG93RWRpdExpbms/PSBmYWxzZTtcclxuICAgIGNvbFNwYW4/OiBudW1iZXI7XHJcbiAgICBncm91cD89IGZhbHNlO1xyXG4gICAgdmlzaWJsZT89IHRydWU7XHJcbiAgICByZW1vdmVPbkluaXQ/PSBmYWxzZTtcclxuICAgIGFsbG93RmlsdGVyPz0gdHJ1ZTtcclxuICAgIHRleHRBbGlnbj86IFRleHRBbGlnbjtcclxuICAgIGNlbGxDbGFzcz86IHN0cmluZztcclxuICAgIGZ1bGxUZXh0U2VhcmNoPz0gZmFsc2U7XHJcbiAgICByYXdDb2x1bW4/OiBDb2x1bW5TY2hlbWFCYXNlO1xyXG4gICAgc2VwYXJhdG9yPz0gJywgJztcclxuXHJcbiAgICBkYXRhVHlwZVJlZkZpZWxkPzogRGF0YVR5cGUgfCBzdHJpbmc7XHJcbiAgICBmb3JjZUdldERhdGE/PSBmYWxzZTtcclxuICAgIGZ1bmNHZXRSZWZEYXRhUm93PzogKHJlZkl0ZW1zKSA9PiB7fTtcclxuICAgIGZ1bmNTZXRWYWx1ZVJvdz86IChyb3dJdGVtLCBkYXRhKSA9PiB2b2lkO1xyXG4gICAgcm93U3Bhbj89IDE7XHJcbiAgICBmb3JtYXQ/OiBzdHJpbmc7XHJcbiAgICBkYXRhVHlwZT86IERhdGFUeXBlIHwgc3RyaW5nO1xyXG4gICAgY29udHJvbFR5cGU/OiBDb250cm9sVHlwZSA9IENvbnRyb2xUeXBlLnRleHRib3g7XHJcbiAgICB0ZW1wbGF0ZUZpbHRlcj86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBmaWVsZEZpbHRlcj86IHN0cmluZztcclxuICAgIGRpc2FibGVDaGVja0JveD89IHRydWU7XHJcbiAgICAvLyBUaOG7qSB04buxIMawdSB0acOqbiBnZXQgcmVmIGRhdGEgY+G7p2EgY3J1ZC1saXN0XHJcbiAgICAvLyBO4bq/dSBjw7MgdmFsdWUgbmdoxKlhIGzDoCBuaOG7r25nIGPhu5l0IG7DoHkgY+G6p24gcGjhuqNpIGzhuqV5IGThu68gbGnhu4d1IHhvbmcgcuG7k2kgbeG7m2kgxJHhur9uIGPhu5l0IGtow6FjXHJcbiAgICBvcmRlcj86IG51bWJlcjtcclxuICAgIG1heFdvcmREaXNwbGF5PzogbnVtYmVyO1xyXG4gICAgbWF4TGVuZ3RoRGlzcGxheT86IG51bWJlcjtcclxuXHJcbiAgICBtZFdpZHRoSW5TZWFyY2g/PSAxMjtcclxuXHJcbiAgICBtaW4/PSAwO1xyXG4gICAgbWF4Pz0gOTk5OTk5O1xyXG5cclxuICAgIHNob3dDbGVhcj89IHRydWU7XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG5cclxuICAgIHBpcGU/OiBQaXBlVHJhbnNmb3JtO1xyXG4gICAgYXN5bmNQaXBlPz0gdHJ1ZTtcclxuICAgIHNvcnQ/PSB0cnVlO1xyXG4gICAgZXh0ZW5kRGF0YT86IGFueSA9IHt9O1xyXG5cclxuICAgIGdlbmVyYXRlZFJlZkNvbHVtbj86IGFueTsgLy8gVE9ETzogTmFtTkggdGjDqm0gdOG6oW0gdGhlbyB5w6p1IGPhuqd1IGPhu6dhIExpbmgsIExpbmggY2hlY2sgbOG6oWkgc2F1XHJcbiAgICBoYXNPcGVyYXRvckNhbkJvPz0gZmFsc2U7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29sdW1uU2NoZW1hQmFzZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25PcHRpb25zIHtcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBmaWVsZFRyZWU/PSAnJztcclxuICAgIHNlbGVjdENoaWxkSXRlbT89IGZhbHNlOyAvLyBDw7Mgc2VsZWN0IGLhuqNuIGdoaSBjb24gbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcclxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/PSAnaWQnOyAvLyBUcsaw4budbmcgeMOhYyDEkeG7i25oIGLhuqNuIGdoaSBsw6AgYuG6o24gZ2hpIGNoYSBj4bunYSBi4bqjbiBnaGkgY29uXHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIGZpZWxkUGx1cz89ICcnO1xyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIGNhbGxiYWNrRGF0YUZpbmlzaD86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIHBhZ2VTaXplPz0gOTk5OTtcclxuICAgIGlzU2VydmVyTG9hZD89IGZhbHNlO1xyXG4gICAgcmVmRmllbGRzPzogUmVmRmllbGRbXSA9IFtdO1xyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEcm9wZG93bk9wdGlvbnMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0IGNsYXNzIFJlZkZpZWxkIHtcclxuICAgIGZpZWxkOiBzdHJpbmc7XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG4gICAgc2VwYXJhdG9yPz0gJywgJztcclxuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2UgfCBNYXN0ZXJEYXRhU2VydmljZTtcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBmaWVsZFBsdXM/PSAnJztcclxuICAgIGdyb3VwQ29kZT86IHN0cmluZztcclxuICAgIGRhdGFTb3VyY2U/OiBhbnlbXTtcclxuICAgIG9yZGVyPzogbnVtYmVyO1xyXG5cclxuICAgIGlzVHJlZT89IGZhbHNlO1xyXG4gICAgZmllbGRUcmVlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVQYXJlbnRSb290PzogYW55ID0gbnVsbDsgLy8gR2nDoSB0cuG7iyB0csaw4budbmcgW2ZpZWxkVHJlZV0gY+G7p2EgaXRlbSB0cmVlIHJvb3RcclxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/PSAnaWQnOyAvLyBUcsaw4budbmcgeMOhYyDEkeG7i25oIGLhuqNuIGdoaSBsw6AgYuG6o24gZ2hpIGNoYSBj4bunYSBi4bqjbiBnaGkgY29uXHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICBmdW5jU2V0VmFsdWVSb3c/OiAocm93SXRlbSwgZGF0YSkgPT4gdm9pZDtcclxuICAgIGZ1bmNHZXRSZWZEYXRhUm93PzogKHJlZkl0ZW1zKSA9PiB7fTtcclxuICAgIGNhbGxiYWNrRGF0YUZpbmlzaD86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XHJcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUmVmRmllbGQpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmNsYXNzIFByb3BGb3JEcm9wZG93biB7XHJcbiAgICBzZXJ2ZXJGaWx0ZXJVcmk/OiBzdHJpbmc7XHJcbiAgICBsb2FkSW5GaXJzdERpc3BsYXk/PSB0cnVlO1xyXG4gICAgZGlzcGxheUZpZWxkU2VydmVyPz0gJ3Rlbic7XHJcbiAgICB2YWx1ZUZpZWxkU2VydmVyPz0gJ2lkJztcclxuXHJcbiAgICBkYXRhU291cmNlPzogYW55O1xyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xyXG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uO1xyXG4gICAgY2FsbGJhY2tEYXRhRmluaXNoPzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgbW9kaWZ5RmlsdGVyPzogRnVuY3Rpb247XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG4gICAgc2VwYXJhdG9yPz0gJywgJztcclxuICAgIHNlYXJjaE11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIGlzVHJlZT89IGZhbHNlO1xyXG4gICAgZmllbGRUcmVlPzogc3RyaW5nO1xyXG4gICAgc2VsZWN0Q2hpbGRJdGVtPz0gZmFsc2U7IC8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxyXG4gICAgdmFsdWVQYXJlbnRSb290PzogYW55ID0gbnVsbDsgLy8gR2nDoSB0cuG7iyB0csaw4budbmcgW2ZpZWxkVHJlZV0gY+G7p2EgaXRlbSB0cmVlIHJvb3RcclxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/PSAnaWQnOyAvLyBUcsaw4budbmcgeMOhYyDEkeG7i25oIGLhuqNuIGdoaSBsw6AgYuG6o24gZ2hpIGNoYSBj4bunYSBi4bqjbiBnaGkgY29uXHJcbiAgICBncm91cENvZGU/OiBzdHJpbmc7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgc2VhcmNoRmllbGQ/OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZmllbGRQbHVzPz0gJyc7XHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcblxyXG4gICAgZmllbGRWYWx1ZVBhcmVudD89ICd2YWx1ZSc7IC8vIFRyxrDhu51uZyBz4butIGThu6VuZyDEkeG7gyBs4bqleSBk4buvIGxp4buHdSBsw6BtIGtow7NhIHThu6sgYuG6o25nIGNoYSBj4bunYSBpdGVtIGRyb3AgZG93biDEkcaw4bujYyBjaOG7jW5cclxuXHJcbiAgICBmdW5jR2V0TGFiZWw/OiAoaXRlbSkgPT4gc3RyaW5nO1xyXG4gICAgZnVuY0NvbXBhcmU/OiAoaXRlbTogYW55LCB2YWx1ZSkgPT4gYm9vbGVhbiA9IChpdGVtLCB2YWx1ZSkgPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09IHZhbHVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQcm9wRm9yRHJvcGRvd24pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlQaWNrZXJDb2x1bW4gZXh0ZW5kcyBDb2x1bW5TY2hlbWFCYXNlIHtcclxuICAgIGxhYmVsPzogc3RyaW5nO1xyXG4gICAgY29kZT86IHN0cmluZztcclxuICAgIGRpc2FibGVkPz0gZmFsc2U7XHJcbiAgICBpc1NlYXJjaGFibGU/PSB0cnVlO1xyXG4gICAgaXNEaXNwbGF5Pz0gdHJ1ZTtcclxuICAgIGRhdGFUeXBlPzogRGF0YVR5cGUgfCBzdHJpbmc7XHJcbiAgICBvcGVyYXRvcj86IE9wZXJhdG9yO1xyXG4gICAgd2lkdGg/PSAnJztcclxuICAgIG5vdEluRmllbGRzPz0gZmFsc2U7IC8vIEPDoWMgdHLGsOG7nW5nIGThu68gbGnhu4d1IMSRxrDhu6NjIHThu5VuZyBo4bujcCBs4bqhaSBoaeG7g24gdGjhu4sgbMOqbiBncmlkIG3DoCBraMO0bmcgcGjhuqNpIGzhuqV5IHThu6sgdHJvbmcgdGFibGUgcmEuXHJcblxyXG4gICAgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBFbnRpdHlQaWNrZXJDb2x1bW4pIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEdldFJlZkRhdGFTY2hlbWEgZXh0ZW5kcyBQcm9wRm9yRHJvcGRvd24ge1xyXG4gICAgZmllbGQ/OiBzdHJpbmc7XHJcbiAgICBmdW5jU2V0VmFsdWVSb3c/OiAocm93SXRlbSwgZGF0YSkgPT4gdm9pZDtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBHZXRSZWZEYXRhU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkTGlzdENvbmZpZyB7XHJcbiAgICB0b29sdGlwVmlldz86IHN0cmluZztcclxuICAgIG9uVmlldz86IEZ1bmN0aW9uO1xyXG4gICAgZGlzYWJsZVJvd1NlbGVjdFdoZW5DbGlja0FjdGlvbj89IHRydWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3RDb25maWcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUcmVlRGF0YU9wdGlvbiB7XHJcbiAgICBkaXNwbGF5RmllbGQgPSAndGVuJztcclxuICAgIHNob3J0RGlzcGxheUZpZWxkID0gJ3Rlbic7XHJcbiAgICBleHBhbmRlZEljb24gPSAncGkgcGktZm9sZGVyLW9wZW4nO1xyXG4gICAgY29sbGFwc2VkSWNvbiA9ICdwaSBwaS1mb2xkZXInO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRyZWVEYXRhT3B0aW9uKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGlhbG9nTW9kZWwge1xyXG4gICAgc2hvd0VkaXRGb3JtPzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaGVhZGVyPzogc3RyaW5nID0gJyc7XHJcbiAgICBwb3B1cFNpemU/OiBQb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKHsgbWF4aW1pemU6IHRydWUgfSlcclxuICAgIGRhdGE/OiBhbnkgPSB7fTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEaWFsb2dNb2RlbCkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBvcHVwU2l6ZSB7XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGhlaWdodD86IG51bWJlcjtcclxuICAgIG1heGltaXplPz0gZmFsc2U7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUG9wdXBTaXplKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRXZlbnREYXRhIHtcclxuICAgIGN1cnJlbnROb2RlOiBDb250cm9sVHJlZU5vZGU7XHJcbiAgICBzb3VyY2VOb2RlPzogQ29udHJvbFRyZWVOb2RlO1xyXG4gICAgc291cmNlRXZlbnQ/OiBhbnk7XHJcbiAgICBldmVudFR5cGU/OiBhbnk7XHJcbiAgICBkYXRhPzogYW55O1xyXG4gICAgcHJpdmF0ZSBfY3J1ZEZvcm06IENydWRGb3JtQ29tcG9uZW50O1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgaW5pdD86IHtcclxuICAgICAgICAgICAgY3VycmVudE5vZGU6IENvbnRyb2xUcmVlTm9kZSxcclxuICAgICAgICAgICAgc291cmNlTm9kZT86IENvbnRyb2xUcmVlTm9kZSxcclxuICAgICAgICAgICAgc291cmNlRXZlbnQ/OiBhbnksXHJcbiAgICAgICAgICAgIGV2ZW50VHlwZT86IGFueSxcclxuICAgICAgICAgICAgZGF0YT86IGFueSxcclxuICAgICAgICAgICAgY3J1ZEZvcm0/OiBDcnVkRm9ybUNvbXBvbmVudFxyXG4gICAgICAgIH1cclxuICAgICkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgdmFsdWUoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5tb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbW9kZWwoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5tb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcGFyZW50TW9kZWwoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5wYXJlbnRNb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcGFyZW50UGF0aCgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLnBhcmVudE1vZGVsUGF0aDtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHJvb3RNb2RlbCgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLnJvb3ROb2RlLm1vZGVsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb250cm9sKCk6IEZvcm1TY2hlbWFCYXNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5jb250cm9sXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHBhcmVudENvbnRyb2woKTogRm9ybVNjaGVtYUJhc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLnBhcmVudENvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGZvcm1Db250cm9scygpOiBGb3JtU2NoZW1hQmFzZVtdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5mb3JtQ29udHJvbHM7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIERhdGFUeXBlIHtcclxuICAgIGRhdGUgPSAnZGF0ZScsXHJcbiAgICBkYXRldGltZSA9ICdkYXRldGltZScsXHJcbiAgICBodG1sID0gJ2h0bWwnLFxyXG4gICAgc3RyaW5nID0gJ3N0cmluZycsXHJcbiAgICBpbnQgPSAnaW50JyxcclxuICAgIGRlY2ltYWwgPSAnZGVjaW1hbCcsXHJcbiAgICBib29sZWFuID0gJ2Jvb2xlYW4nLFxyXG4gICAgZW51bSA9ICdlbnVtJyxcclxuICAgIGN1cnJlbmN5ID0gJ2N1cnJlbmN5J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBDb250cm9sVHlwZSB7XHJcbiAgICBkcm9wZG93biA9ICdkcm9wZG93bicsXHJcbiAgICBkYXRldGltZSA9ICdkYXRldGltZScsXHJcbiAgICBkYXRlID0gJ2RhdGUnLFxyXG4gICAgdGltZSA9ICd0aW1lJyxcclxuICAgIG51bWJlciA9ICdudW1iZXInLFxyXG4gICAgdGV4dGJveCA9ICd0ZXh0Ym94JyxcclxuICAgIGNoZWNrYm94ID0gJ2NoZWNrYm94JyxcclxuICAgIHN3aXRjaCA9ICdzd2l0Y2gnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIE9wZXJhdG9yIHtcclxuICAgIGVxdWFsID0gJ2VxJyxcclxuICAgIG5vdEVxdWFsID0gJ25lcScsXHJcbiAgICBncmVhdGVyID0gJ2d0JyxcclxuICAgIGdyZWF0ZXJUaGFuRXF1YWwgPSAnZ3RlJyxcclxuICAgIGxvd2VyID0gJ2x0JyxcclxuICAgIGxvd2VyVGhhbkVxdWFsID0gJ2x0ZScsXHJcblxyXG4gICAgY29udGFpbiA9ICdjb250YWlucycsXHJcbiAgICBub3RDb250YWluID0gJ25jb250YWlucycsXHJcbiAgICBzdGFydFdpdGggPSAnc3RhcnRzd2l0aCcsXHJcbiAgICBub3RTdGFydFdpdGggPSAnbnN0YXJ0c3dpdGgnLFxyXG4gICAgZW5kV2l0aCA9ICdlbmRzd2l0aCcsXHJcbiAgICBub3RFbmRXaXRoID0gJ25lbmRzd2l0aCcsXHJcblxyXG4gICAgaW4gPSAnaW4nLFxyXG4gICAgbm90SW4gPSAnbmluJyxcclxuXHJcbiAgICBpc051bGwgPSAnaXNudWxsJyxcclxuICAgIGlzTm90TnVsbCA9ICdpc25vdG51bGwnLFxyXG5cclxuICAgIGluUm9sZSA9ICdoYXNSb2xlJyxcclxuICAgIG5vdEluUm9sZSA9ICdub3RIYXNSb2xlJyxcclxuICAgIGluQ2F0ZWdvcnkgPSAnaW5DYXRlZ29yeScsXHJcbiAgICBub3RJbkNhdGVnb3J5ID0gJ25vdEluQ2F0ZWdvcnknLFxyXG4gICAgaW5Qb3NpdGlvbiA9ICdpblBvc2l0aW9uJyxcclxuICAgIG5vdEluUG9zaXRpb24gPSAnbm90SW5Qb3NpdGlvbicsXHJcbiAgICBpbkxpc3RVc2VyID0gJ2luTGlzdFVzZXInLFxyXG4gICAgbm90SW5MaXN0VXNlciA9ICdub3RJbkxpc3RVc2VyJyxcclxuICAgIGluTGlzdEdyb3VwID0gJ2luTGlzdEdyb3VwJyxcclxuICAgIG5vdEluTGlzdEdyb3VwID0gJ25vdEluTGlzdEdyb3VwJyxcclxuICAgIGlzQ3VycmVudFVzZXIgPSAnaXNDdXJyZW50VXNlcicsXHJcbiAgICBpc0N1cnJlbnRDYW5CbyA9ICdpc0N1cnJlbnRDYW5CbydcclxufVxyXG5cclxuZXhwb3J0IGVudW0gSGVpZ2h0VHlwZSB7XHJcbiAgICBkZWZhdWx0ID0gMCxcclxuICAgIGR5bmFtaWMgPSAtMSxcclxuICAgIGN1c3RvbSA9IDFcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRmlsZU1hbmFnZXJNb2RlIHtcclxuICAgIHNpbmdsZSA9ICdzaW5nbGUnLFxyXG4gICAgbXVsdGlwbGUgPSAnbXVsdGlwbGUnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEZpbGVVcGxvYWRNb2RlIHtcclxuICAgIHVzaW5nRmlsZUluc3RhbmNlSWQgPSAndXNpbmdGaWxlSW5zdGFuY2VJZCcsXHJcbiAgICB1c2luZ1NlcnZpY2VGaWxlID0gJ3VzaW5nU2VydmljZUZpbGUnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEVudW1GaWxlTGF5b3V0IHtcclxuICAgIFNJTVBMRSA9ICdTSU1QTEUnLFxyXG4gICAgTElTVCA9ICdMSVNUJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBUZXh0QWxpZ24ge1xyXG4gICAgTGVmdCA9IDAsXHJcbiAgICBDZW50ZXIgPSAxLFxyXG4gICAgUmlnaHQgPSAtMVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBFeHBvcnRJdGVtc01vZGUge1xyXG4gICAgRnJvbUh0bWwgPSAwLFxyXG4gICAgTWFudWFsR2V0RGF0YSA9IDEsXHJcbiAgICBBdXRvR2V0RGF0YSA9IDJcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRXhwb3J0QWxsTW9kZSB7XHJcbiAgICBNYW51YWxHZXREYXRhID0gMCxcclxuICAgIEF1dG9HZXREYXRhID0gMVxyXG59XHJcbiJdfQ==