fx-form-builder-wrapper 0.0.95 → 0.0.99

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.
@@ -358,7 +358,7 @@ export class DynamicTableComponent extends FxBaseComponent {
358
358
  initializeCheckboxDefaults(tableData) {
359
359
  tableData.rows.forEach((row) => {
360
360
  tableData.columns.forEach((column) => {
361
- if (column.cellType === 'checkbox' && column.unCheckedValue) {
361
+ if (column.cellType === 'checkbox' && column.unCheckedValue && !row[column.header]) {
362
362
  row[column.header] = column.unCheckedValue;
363
363
  }
364
364
  });
@@ -382,4 +382,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
382
382
  }], tableConfig: [{
383
383
  type: Input
384
384
  }] } });
385
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQWEsZUFBZSxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRTdGLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7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LElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUM1RCxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7Z0JBQzdDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUtNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO3dHQWxaVSxxQkFBcUI7NEZBQXJCLHFCQUFxQiwrTEN6Q2xDLHNtakJBNE5vQix1NkZEeExSLFlBQVksMmJBQUUsV0FBVyw0bERBQUUsc0JBQXNCLGdIQUFFLG1CQUFtQiw4QkFBQyxpQkFBaUIsMjdDQUFDLGlCQUFpQiw4QkFBQyxlQUFlLDhCQUFDLGNBQWM7OzRGQUt4SSxxQkFBcUI7a0JBUmpDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUMsaUJBQWlCLEVBQUMsaUJBQWlCLEVBQUMsZUFBZSxFQUFDLGNBQWMsQ0FBQzs0SEFNM0ksU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRnhCYXNlQ29tcG9uZW50LCBGeE1vZGUsIEZ4U2V0dGluZywgRnhTdHJpbmdTZXR0aW5nLCBGeFZhbGlkYXRpb24sIEZ4VmFsaWRhdG9yU2VydmljZSB9IGZyb20gJ0BpbnN0YW50c3lzLWxhYnMvZngnO1xyXG5pbXBvcnQgeyBTZXR0aW5nc1BhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGFuZWwvc2V0dGluZ3MtcGFuZWwvc2V0dGluZ3MtcGFuZWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9meC1idWlsZGVyLXdyYXBwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7Zm9ya0pvaW4sIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE11bHRpU2VsZWN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tdWx0aXNlbGVjdCc7XHJcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcclxuaW1wb3J0IHsgSW5wdXROdW1iZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0bnVtYmVyJztcclxuaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2Ryb3Bkb3duJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb2x1bW5Db25maWcge1xyXG4gIGhlYWRlcjogc3RyaW5nO1xyXG4gIGNlbGxUeXBlOiAndGV4dCcgfCAnaW5wdXQtdGV4dCcgfCAnaW5wdXQtbnVtYmVyJyB8ICdkcm9wZG93bicgfCAnc21hcnQtZHJvcGRvd24nIHwgJ2NoZWNrYm94JyB8ICdyYWRpbycgfCAncmFkaW8tZ3JvdXAnIHwgJ2ZpbGUtdXBsb2FkJyB8ICd0ZXh0YXJlYSc7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgb3B0aW9ucz86IHN0cmluZ1tdO1xyXG4gIGFwaVVybD86IHN0cmluZztcclxuICB2YWx1ZUtleT86IHN0cmluZztcclxuICBsYWJlbEtleT86IHN0cmluZztcclxuICBjbGFzc05hbWU/OiBzdHJpbmc7XHJcbiAgaXNNdWx0aXNlbGVjdD86IGJvb2xlYW47XHJcbiAgY2hlY2tlZFZhbHVlPzogYW55O1xyXG4gIHVuQ2hlY2tlZFZhbHVlPzogYW55O1xyXG4gIGNoZWNrQm94TGFiZWw/OiBzdHJpbmc7XHJcbiAgaXNSZXF1aXJlZD86Ym9vbGVhbixcclxuICBlcnJvck1lc3NhZ2U/OnN0cmluZ1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb25maWcge1xyXG4gIGNvbHVtbnM6IFRhYmxlQ29sdW1uQ29uZmlnW107XHJcbiAgcm93czogYW55W107XHJcbn1cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmeC1keW5hbWljLXRhYmxlJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBTZXR0aW5nc1BhbmVsQ29tcG9uZW50LCBSZWFjdGl2ZUZvcm1zTW9kdWxlLE11bHRpU2VsZWN0TW9kdWxlLElucHV0TnVtYmVyTW9kdWxlLElucHV0VGV4dE1vZHVsZSxEcm9wZG93bk1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9keW5hbWljLXRhYmxlLmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljVGFibGVDb21wb25lbnQgZXh0ZW5kcyBGeEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgdGFibGVSb3dzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgQElucHV0KCkgcHJldmlld1R5cGU6IEZ4TW9kZSA9IEZ4TW9kZS5WSUVXO1xyXG4gIEBJbnB1dCgpIHRhYmxlQ29uZmlnOiBhbnkgPSB7XHJcbiAgICBjb2x1bW5zOiBbXHJcbiAgICAgIHsgaGVhZGVyOiAnQ29sdW1uIDEnLCBjZWxsVHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgaGVhZGVyOiAnQ29sdW1uIDInLCBjZWxsVHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgaGVhZGVyOiAnQ29sdW1uIDMnLCBjZWxsVHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgaGVhZGVyOiAnQ29sdW1uIDQnLCBjZWxsVHlwZTogJ3RleHQnIH0sXHJcbiAgICAgIHsgaGVhZGVyOiAnQ29sdW1uIDUnLCBjZWxsVHlwZTogJ3RleHQnIH0sXHJcbiAgICBdLFxyXG59O1xyXG5cclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Qm9vbGVhbj4oKTtcclxuICAvLyBwdWJsaWMgdXBsb2FkZWRJbWFnZXM6IEFycmF5PFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IEZpbGUgfCBudWxsPiB8IG51bGw+ID0gW107XHJcbiAgcHVibGljIHVwbG9hZGVkSW1hZ2VzOiBBcnJheTxBcnJheTx7IHJlc3VsdDogc3RyaW5nLCBmaWxlOiBGaWxlIHwgbnVsbH0+PiA9IFtdO1xyXG5cclxuICBwdWJsaWMgZ2VuZXJhbFZhbHVlczogYW55O1xyXG5cclxuICBwdWJsaWMgdGFibGVGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIHB1YmxpYyBzbWFydERyb3Bkb3duT3B0aW9uczogeyBba2V5OiBzdHJpbmddOiBBcnJheTx7IG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9PiB9ID0ge307XHJcbiAgcHJpdmF0ZSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBmeEJ1aWxkZXJXcmFwcGVyU2VydmljZTogRnhCdWlsZGVyV3JhcHBlclNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGNkcik7XHJcbiAgICB0aGlzLm9uSW5pdC5zdWJzY3JpYmUoKGZ4RGF0YSk9PntcclxuICAgICAgdGhpcy5fcmVnaXN0ZXIodGhpcy50YWJsZUZvcm1Db250cm9sKTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlLnZhcmlhYmxlcyQucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHZhcmlhYmxlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHZhcmlhYmxlcykge1xyXG4gICAgICAgICAgbGV0IGR5bmFtaWNUYWJsZVZhbHVlczogYW55O1xyXG4gICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFyaWFibGVzKSkge1xyXG4gICAgICAgICAgICBpZiAoa2V5LmluY2x1ZGVzKCdkeW5hbWljLXRhYmxlJykpIHtcclxuICAgICAgICAgICAgICBkeW5hbWljVGFibGVWYWx1ZXMgPSB2YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGR5bmFtaWNUYWJsZVZhbHVlcykubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnN0IGZpbGVIZWFkZXJOYW1lID0gZHluYW1pY1RhYmxlVmFsdWVzPy5jb2x1bW5zLmZpbmQoKGY6IGFueSkgPT4gZi5jZWxsVHlwZSA9PT0gJ2ZpbGUtdXBsb2FkJyk/LmhlYWRlcjtcclxuICAgICAgICAgICAgY29uc3QgZmlsZUhlYWRlck5hbWUgPSBkeW5hbWljVGFibGVWYWx1ZXM/LmNvbHVtbnMuZmluZCgoZjogYW55KSA9PiBmLmNlbGxUeXBlID09PSAnZmlsZS11cGxvYWQnKT8uaGVhZGVyO1xyXG4gICAgICAgICAgICBkeW5hbWljVGFibGVWYWx1ZXM/LnJvd3M/LmZvckVhY2goKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgIC8vIC8vIHRoaXMudXBsb2FkZWRJbWFnZXNbaW5kZXhdID0gaXRlbVtmaWxlSGVhZGVyTmFtZV0gPyBpdGVtW2ZpbGVIZWFkZXJOYW1lXTogbnVsbDtcclxuICAgICAgICAgICAgICAvLyBjb25zdCBmaWxlVXJsID0gaXRlbVtmaWxlSGVhZGVyTmFtZV07IC8vIEdldCB0aGUgZmlsZSBVUkxcclxuXHJcbiAgICAgICAgICAgICAgLy8gdGhpcy51cGxvYWRlZEltYWdlc1tpbmRleF0gPSBmaWxlVXJsXHJcbiAgICAgICAgICAgICAgLy8gICA/IHsgcmVzdWx0OiBmaWxlVXJsLCBmaWxlOiBudWxsIH0gLy8gU3RvcmUgdGhlIFVSTCBhcyAncmVzdWx0J1xyXG4gICAgICAgICAgICAgIC8vICAgOiBudWxsO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGlmIChpdGVtW2ZpbGVIZWFkZXJOYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJzZVVybHMoaXRlbVtmaWxlSGVhZGVyTmFtZV0sIGluZGV4LGR5bmFtaWNUYWJsZVZhbHVlcz8uY29sdW1ucyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgIHRoaXMudGFibGVDb25maWcgPSAgdGhpcy5pbml0aWFsaXplQ2hlY2tib3hEZWZhdWx0cyhkeW5hbWljVGFibGVWYWx1ZXMpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnRhYmxlQ29uZmlnID0gZHluYW1pY1RhYmxlVmFsdWVzO1xyXG4gICAgICAgICAgICB0aGlzLmZ4RGF0YS52YWx1ZSA9IHRoaXMudGFibGVDb25maWc7XHJcbiAgICAgICAgICAgIC8vIHRoaXMudGFibGVGb3JtQ29udHJvbC5yZXNldCgpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnRhYmxlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGVGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgIC8vIERlbGF5IHRvIGVuc3VyZSBwcm9wZXIgcGF0Y2hpbmdcclxuICAgICAgICAgICAgICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLnRhYmxlQ29uZmlnLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInRhYmxlRm9ybUNvbnRyb2xcIix0aGlzLnRhYmxlRm9ybUNvbnRyb2wpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfSwgNTApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYodGhpcy5meERhdGE/LnZhbHVlICYmIE9iamVjdC5rZXlzKHRoaXMuZnhEYXRhPy52YWx1ZSk/Lmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgdGhpcy50YWJsZUNvbmZpZyA9IHRoaXMuZnhEYXRhLnZhbHVlO1xyXG4gICAgICAgIHRoaXMuZmV0Y2hTbWFydERyb3Bkb3duRGF0YSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAxMDApXHJcbiAgfVxyXG4gIFxyXG4gIHByb3RlY3RlZCBmZXRjaFNtYXJ0RHJvcGRvd25EYXRhKCk6IHZvaWQge1xyXG4gICAgdGhpcy50YWJsZUNvbmZpZy5jb2x1bW5zXHJcbiAgICAgIC5maWx0ZXIoKGNvbHVtbjogVGFibGVDb2x1bW5Db25maWcpID0+IGNvbHVtbi5jZWxsVHlwZSA9PT0gJ3NtYXJ0LWRyb3Bkb3duJyAmJiBjb2x1bW4/LmFwaVVybClcclxuICAgICAgLmZvckVhY2goKGNvbHVtbjogVGFibGVDb2x1bW5Db25maWcpID0+IHtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0PGFueT4oY29sdW1uLmFwaVVybCEpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zbWFydERyb3Bkb3duT3B0aW9uc1tjb2x1bW4uaGVhZGVyXSA9IHJlc3BvbnNlLm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICAgICAgICB2YWx1ZTogaXRlbVtjb2x1bW4udmFsdWVLZXkhXSxcclxuICAgICAgICAgICAgbmFtZTogaXRlbVtjb2x1bW4ubGFiZWxLZXkhXSxcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgdXBsb2FkSW1hZ2UoZXZlbnQ6IEV2ZW50LCByb3dJbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgLy8gICBjb25zdCBmaWxlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcz8uWzBdO1xyXG4gIC8vICAgaWYgKGZpbGUpIHtcclxuICAvLyAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAvLyAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAvLyAgICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XSA9IHtcclxuICAvLyAgICAgICAgIHJlc3VsdDogcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcsXHJcbiAgLy8gICAgICAgICBmaWxlOiBmaWxlXHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICAgIHRoaXMudGFibGVDb25maWcucm93c1tyb3dJbmRleF1bdGhpcy50YWJsZUNvbmZpZy5jb2x1bW5zLmZpbmQoKGY6IGFueSkgPT4gZi5jZWxsVHlwZSA9PT0gJ2ZpbGUtdXBsb2FkJyk/LmhlYWRlcl0gPSBmaWxlO1xyXG4gIC8vICAgICAgIGNvbnNvbGUubG9nKFwidGFibGVDb25maWdcIiwgdGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgLy8gICAgIH07XHJcbiAgLy8gICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgcHVibGljIHVwbG9hZEltYWdlKGV2ZW50OiBFdmVudCwgcm93SW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgZmlsZXMgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzO1xyXG4gICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0gPSB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XSB8fCBbXTtcclxuICBcclxuICAgICAgQXJyYXkuZnJvbShmaWxlcykuZm9yRWFjaCgoZmlsZTogRmlsZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdLnB1c2goe1xyXG4gICAgICAgICAgICByZXN1bHQ6IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nLFxyXG4gICAgICAgICAgICBmaWxlOiBmaWxlXHJcbiAgICAgICAgICB9KTtcclxuICBcclxuICAgICAgICAgIC8vIE9wdGlvbmFsbHkgYWRkIHRvIHRhYmxlQ29uZmlnIGlmIG9ubHkgb25lIGZpbGUgaXMgdHJhY2tlZCB0aGVyZVxyXG4gICAgICAgICAgY29uc3QgY29sdW1uSGVhZGVyID0gdGhpcy50YWJsZUNvbmZpZy5jb2x1bW5zLmZpbmQoKGY6IGFueSkgPT4gZi5jZWxsVHlwZSA9PT0gJ2ZpbGUtdXBsb2FkJyk/LmhlYWRlcjtcclxuICAgICAgICAgIHRoaXMudGFibGVDb25maWcucm93c1tyb3dJbmRleF1bY29sdW1uSGVhZGVyXSA9IHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdLm1hcChpbWcgPT4gaW1nLmZpbGUpO1xyXG4gIFxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJ0YWJsZUNvbmZpZ1wiLCB0aGlzLnRhYmxlQ29uZmlnKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcblxyXG4gIHByb3RlY3RlZCBzZXR0aW5ncygpOiBGeFNldHRpbmdbXSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAnY29sdW1uLXNpemUnLCAkdGl0bGU6ICdOby4gb2YgY29sdW1ucycsIHZhbHVlOiAxIH0pLFxyXG4gICAgICBuZXcgRnhTdHJpbmdTZXR0aW5nKHsga2V5OiAndGFibGUtY29uZmlnJywgJHRpdGxlOiAnVGFibGUgQ29uZmlndXJhdGlvbicsIHZhbHVlOiB7fSB9KSxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdmFsaWRhdGlvbnMoKTogRnhWYWxpZGF0aW9uW10ge1xyXG4gICAgcmV0dXJuIFtGeFZhbGlkYXRvclNlcnZpY2UucmVxdWlyZWRdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFycmF5KGNvdW50OiBudW1iZXIpOiBudW1iZXJbXSB7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogY291bnQgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DaGFuZ2VDb25maWd1cmF0aW9uKGV2ZW50OiBhbnkpOiB2b2lkIHsgXHJcbiAgICAgdGhpcy5nZW5lcmFsVmFsdWVzID0ge1xyXG4gICAgICBlbmFibGVBUEk6IGV2ZW50Py5lbmFibGVBUEksXHJcbiAgICAgIGFwaTogZXZlbnQ/LmFwaVxyXG4gICAgfVxyXG4gICAgY29uc3QgY29sdW1ucyA9IGV2ZW50LmNvbHVtbnMubWFwKChjb2w6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGhlYWRlcjogY29sPy5oZWFkZXIsXHJcbiAgICAgICAgY2VsbFR5cGU6IGNvbD8uY2VsbFR5cGUsXHJcbiAgICAgICAgcGxhY2Vob2xkZXI6IGNvbD8ucGxhY2Vob2xkZXIsXHJcbiAgICAgICAgb3B0aW9uczogY29sPy5vcHRpb25zLFxyXG4gICAgICAgIGFwaVVybDogY29sPy5hcGlVcmwsXHJcbiAgICAgICAgdmFsdWVLZXk6IGNvbD8udmFsdWVLZXksXHJcbiAgICAgICAgbGFiZWxLZXk6IGNvbD8ubGFiZWxLZXksXHJcbiAgICAgICAgY2xhc3NOYW1lOiBjb2w/LmNsYXNzTmFtZSxcclxuICAgICAgICBhcGlLZXk6IGNvbD8uYXBpS2V5LFxyXG4gICAgICAgIGlzTXVsdGlzZWxlY3Q6IGNvbD8uaXNNdWx0aXNlbGVjdCxcclxuICAgICAgICBjaGVja2VkVmFsdWU6IGNvbD8uY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIHVuQ2hlY2tlZFZhbHVlOiBjb2w/LnVuQ2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGNoZWNrQm94TGFiZWw6Y29sPy5jaGVja0JveExhYmVsLFxyXG4gICAgICAgIGlzUmVxdWlyZWQ6Y29sPy5pc1JlcXVpcmVkLFxyXG4gICAgICAgIGVycm9yTWVzc2FnZTpjb2w/LmVycm9yTWVzc2FnZVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmKCFldmVudD8uZW5hYmxlQVBJKSB7XHJcbiAgICAgIHRoaXMudGFibGVDb25maWcuY29sdW1ucyA9IGNvbHVtbnM7XHJcbiAgICAgIC8vIHRoaXMudGFibGVDb25maWcucm93cyA9IEFycmF5LmZyb20oeyBsZW5ndGg6ICtldmVudD8ucm93cyB9LCAoZSwgaW5kZXgpID0+ICh7IG5hbWU6IGBTS1UtJHtpbmRleCArIDF9YCwgYWdlOiBpbmRleCAlIDIgIT09IDAsIGdlbmRlcjogJ21hbGUnIH0pKVxyXG4gICAgICAvLyB0aGlzLnRhYmxlQ29uZmlnLnJvd3MgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiArZXZlbnQ/LnJvd3MgfSwgKGUsIGluZGV4KSA9PiB7XHJcbiAgICAgIC8vICAgY29uc3Qgcm93cyA9IGNvbHVtbnMubWFwKChjOiBhbnkpID0+IHtcclxuICAgICAgLy8gICAgIHJldHVybiB7XHJcbiAgICAgIC8vICAgICAgIGM/LmhlYWRlcjogbnVsbFxyXG4gICAgICAvLyAgICAgfVxyXG4gICAgICAvLyAgIH0pXHJcbiAgICAgIC8vICAgcmV0dXJuIHJvd3NcclxuICAgICAgLy8gfSlcclxuICAgICAgdGhpcy50YWJsZUNvbmZpZy5yb3dzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogK2V2ZW50Py5yb3dzIH0sIChfLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBjb2x1bW5zLnJlZHVjZSgoYWNjOiBhbnksIGM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgYWNjW2M/LmhlYWRlcl0gPSAnJzsgLy8gSW5pdGlhbGl6ZSBlYWNoIGNvbHVtbiBrZXkgd2l0aCBudWxsXHJcbiAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgIH0sIHt9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIFxyXG4gICAgICB0aGlzLmZldGNoU21hcnREcm9wZG93bkRhdGEoKTtcclxuICAgIH1cclxuICAgIGlmKGV2ZW50Py5lbmFibGVBUEkpIHtcclxuICAgICAgdGhpcy5kcmF3VGFibGUoZXZlbnQsIGNvbHVtbnMpXHJcbiAgICAgIHRoaXMudGFibGVDb25maWcgPSB7XHJcbiAgICAgICAgY29sdW1uczogY29sdW1ucyxcclxuICAgICAgICByb3dzOiBbXVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICB0aGlzLnRhYmxlQ29uZmlnID0gIHRoaXMuaW5pdGlhbGl6ZUNoZWNrYm94RGVmYXVsdHModGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgICB0aGlzLnRhYmxlQ29uZmlnLmdlbmVyYWxWYWx1ZXMgPSB0aGlzLmdlbmVyYWxWYWx1ZXM7XHJcbiAgICB0aGlzLmZ4RGF0YS52YWx1ZSA9IHRoaXMudGFibGVDb25maWc7XHJcbiAgICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wucmVzZXQoKTtcclxuICAgIGNvbnNvbGUubG9nKFwiYWZ0ZXJcIilcclxuICAgIHRoaXMudGFibGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnRhYmxlQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlU2V0dGluZ3MoKTogdm9pZHtcclxuICAgIGlmKHRoaXMuZnhEYXRhLnNldHRpbmdzKXtcclxuICAgICAgZm9yKGxldCBzZXR0aW5nIG9mIHRoaXMuZnhEYXRhLnNldHRpbmdzKXtcclxuICAgICAgaWYoc2V0dGluZy5rZXkgPT09ICd0YWJsZS1jb25maWcnKXtcclxuICAgICAgICBzZXR0aW5nLnZhbHVlID0gdGhpcy50YWJsZUNvbmZpZztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBkcmF3VGFibGUoZXZlbnQ6IGFueSwgY29sdW1uczogYW55KTogdm9pZCB7XHJcbiAgLy8gICBsZXQgcm93cztcclxuICAvLyAgIHRoaXMuaHR0cC5nZXQoZXZlbnQuYXBpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgLy8gICAgIGlmKHJlcykge1xyXG4gIC8vICAgICAgIHJvd3MgPSByZXMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAvLyAgICAgICAgIGNvbnN0IG5ld09iajogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gIC8vICAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xyXG4gIC8vICAgICAgICAgICBuZXdPYmpbY29sLmhlYWRlcl0gPSBpdGVtW2NvbC5hcGlLZXldO1xyXG4gIC8vICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgICByZXR1cm4gbmV3T2JqO1xyXG4gIC8vICAgICAgIH0pO1xyXG4gIC8vICAgICAgIHRoaXMudGFibGVDb25maWcgPSB7XHJcbiAgLy8gICAgICAgICBjb2x1bW5zLFxyXG4gIC8vICAgICAgICAgcm93c1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICB0aGlzLnRhYmxlQ29uZmlnLmdlbmVyYWxWYWx1ZXMgPSB0aGlzLmdlbmVyYWxWYWx1ZXM7XHJcbiAgLy8gICAgICAgdGhpcy5meERhdGEudmFsdWUgPSB0aGlzLnRhYmxlQ29uZmlnO1xyXG4gIC8vICAgICAgIHRoaXMudGFibGVGb3JtQ29udHJvbC5yZXNldCgpO1xyXG4gIC8vICAgICAgIHRoaXMudGFibGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnRhYmxlQ29uZmlnKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSlcclxuICAvLyB9XHJcblxyXG4gICAgcHVibGljIGRyYXdUYWJsZShldmVudDogYW55LCBjb2x1bW5zOiBhbnkpOiB2b2lkIHtcclxuICAgIGxldCByb3dzO1xyXG4gICAgdGhpcy5odHRwLmdldChldmVudC5hcGkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzKSB7XHJcbiAgICAgICAgcm93cyA9IHJlcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbmV3T2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgICAgICAgICBjb2x1bW5zLmZvckVhY2goKGNvbDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIG5ld09ialtjb2wuaGVhZGVyXSA9IGl0ZW1bY29sLmFwaUtleV0gfHwgJyc7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybiBuZXdPYmo7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy50YWJsZUNvbmZpZyA9IHtcclxuICAgICAgICAgIGNvbHVtbnMsXHJcbiAgICAgICAgICByb3dzXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGFibGVDb25maWcuZ2VuZXJhbFZhbHVlcyA9IHRoaXMuZ2VuZXJhbFZhbHVlcztcclxuICAgICAgICB0aGlzLmZ4RGF0YS52YWx1ZSA9IHRoaXMudGFibGVDb25maWc7XHJcbiAgICAgICAgdGhpcy50YWJsZUZvcm1Db250cm9sLnJlc2V0KCk7XHJcbiAgICAgICAgdGhpcy50YWJsZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudGFibGVDb25maWcpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8gcHVibGljIGRlbGV0ZUZpbGUoZmlsZTogYW55LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLnVwbG9hZGVkSW1hZ2VzLnNwbGljZShpbmRleCwgMSwgbnVsbCk7XHJcbiAgLy8gICB0aGlzLnRhYmxlQ29uZmlnLnJvd3NbaW5kZXhdW3RoaXMudGFibGVDb25maWcuY29sdW1ucy5maW5kKChmOiBhbnkpID0+IGYuY2VsbFR5cGUgPT09ICdmaWxlLXVwbG9hZCcpPy5oZWFkZXJdID0gbnVsbDtcclxuICAvLyAgIGNvbnNvbGUubG9nKFwidGFibGVDb25maWdcIiwgdGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgLy8gICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBwdWJsaWMgZGVsZXRlRmlsZShyb3dJbmRleDogbnVtYmVyLCBpbWFnZUluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAvLyAgIGlmICh0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XSkge1xyXG4gIC8vICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XS5zcGxpY2UoaW1hZ2VJbmRleCwgMSk7XHJcbiAgXHJcbiAgLy8gICAgIGNvbnN0IGNvbHVtbkhlYWRlciA9IHRoaXMudGFibGVDb25maWcuY29sdW1ucy5maW5kKChmOiBhbnkpID0+IGYuY2VsbFR5cGUgPT09ICdmaWxlLXVwbG9hZCcpPy5oZWFkZXI7XHJcbiAgLy8gICAgIHRoaXMudGFibGVDb25maWcucm93c1tyb3dJbmRleF1bY29sdW1uSGVhZGVyXSA9IHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdLm1hcChpbWcgPT4gaW1nLmZpbGUpO1xyXG4gIC8vICAgICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBwdWJsaWMgZGVsZXRlRmlsZShyb3dJbmRleDogbnVtYmVyLCBpbWFnZUluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XSkge1xyXG4gICAgICBjb25zdCByZW1vdmVkRmlsZSA9IHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdW2ltYWdlSW5kZXhdO1xyXG4gIFxyXG4gICAgICAvLyBUcmFjayB0aGUgZmlsZSB0byBkZWxldGUgaWYgaXQncyBhbiB1cGxvYWRlZCBmaWxlIChpLmUuLCBoYXMgVVJMIGFuZCBubyBGaWxlIG9iamVjdClcclxuICAgICAgaWYgKHJlbW92ZWRGaWxlPy5yZXN1bHQgJiYgdHlwZW9mIHJlbW92ZWRGaWxlLnJlc3VsdCA9PT0gJ3N0cmluZycgJiYgcmVtb3ZlZEZpbGUuZmlsZSA9PT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMudGFibGVDb25maWcucm93c1tyb3dJbmRleF0uZmlsZXNUb0RlbGV0ZSA9IHRoaXMudGFibGVDb25maWcucm93c1tyb3dJbmRleF0uZmlsZXNUb0RlbGV0ZSB8fCBbXTtcclxuICAgICAgICB0aGlzLnRhYmxlQ29uZmlnLnJvd3Nbcm93SW5kZXhdLmZpbGVzVG9EZWxldGUucHVzaChyZW1vdmVkRmlsZS5yZXN1bHQpO1xyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIC8vIFJlbW92ZSB0aGUgZmlsZSBmcm9tIHRoZSBVSVxyXG4gICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XS5zcGxpY2UoaW1hZ2VJbmRleCwgMSk7XHJcbiAgXHJcbiAgICAgIGNvbnN0IGNvbHVtbkhlYWRlciA9IHRoaXMudGFibGVDb25maWcuY29sdW1ucy5maW5kKChmOiBhbnkpID0+IGYuY2VsbFR5cGUgPT09ICdmaWxlLXVwbG9hZCcpPy5oZWFkZXI7XHJcbiAgICAgIHRoaXMudGFibGVDb25maWcucm93c1tyb3dJbmRleF1bY29sdW1uSGVhZGVyXSA9IHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdLm1hcChpbWcgPT4gaW1nLmZpbGUpO1xyXG4gIFxyXG4gICAgICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIFxyXG5cclxuICAvLyBwdWJsaWMgcGFyc2VVcmxzKHVybDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICBuZXh0OiAoaW1hZ2VCbG9iOiBCbG9iKSA9PiB7XHJcbiAgLy8gICAgICAgY29uc3QgaW1hZ2VVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGltYWdlQmxvYik7XHJcbiAgLy8gICAgICAgdGhpcy51cGxvYWRlZEltYWdlc1tpbmRleF0gPSB7XHJcbiAgLy8gICAgICAgICByZXN1bHQ6IGltYWdlVVJMLFxyXG4gIC8vICAgICAgICAgZmlsZTogbnVsbFxyXG4gIC8vICAgICAgIH07XHJcbiAgLy8gICAgIH0sXHJcbiAgLy8gICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAvLyAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBpbWFnZTonLCBlcnJvcik7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gcHVibGljIHBhcnNlVXJscyh1cmw6IHN0cmluZywgcm93SW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkuc3Vic2NyaWJlKHtcclxuICAvLyAgICAgbmV4dDogKGltYWdlQmxvYjogQmxvYikgPT4ge1xyXG4gIC8vICAgICAgIGNvbnN0IGltYWdlVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChpbWFnZUJsb2IpO1xyXG4gIFxyXG4gIC8vICAgICAgIHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdID0gdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0gfHwgW107XHJcbiAgLy8gICAgICAgdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0ucHVzaCh7XHJcbiAgLy8gICAgICAgICByZXN1bHQ6IGltYWdlVVJMLFxyXG4gIC8vICAgICAgICAgZmlsZTogbnVsbFxyXG4gIC8vICAgICAgIH0pO1xyXG4gIFxyXG4gIC8vICAgICAgIGNvbnN0IGNvbHVtbkhlYWRlciA9IHRoaXMudGFibGVDb25maWcuY29sdW1ucy5maW5kKChmOiBhbnkpID0+IGYuY2VsbFR5cGUgPT09ICdmaWxlLXVwbG9hZCcpPy5oZWFkZXI7XHJcbiAgLy8gICAgICAgdGhpcy50YWJsZUNvbmZpZy5yb3dzW3Jvd0luZGV4XVtjb2x1bW5IZWFkZXJdID0gdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0ubWFwKGltZyA9PiBpbWcuZmlsZSk7XHJcbiAgXHJcbiAgLy8gICAgICAgdGhpcy50YWJsZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudGFibGVDb25maWcpO1xyXG4gIC8vICAgICB9LFxyXG4gIC8vICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgLy8gICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgaW1hZ2U6JywgZXJyb3IpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBwYXJzZVVybHModXJsczogc3RyaW5nW10sIHJvd0luZGV4OiBudW1iZXIsIGNvbHVtbnM6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHVybHMpIHx8ICF1cmxzLmxlbmd0aCkgcmV0dXJuO1xyXG4gIFxyXG4gICAgdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0gPSB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XSB8fCBbXTtcclxuICBcclxuICAgIGNvbnN0IGNvbHVtbkhlYWRlciA9IGNvbHVtbnMuZmluZCgoZjogYW55KSA9PiBmLmNlbGxUeXBlID09PSAnZmlsZS11cGxvYWQnKT8uaGVhZGVyO1xyXG4gICAgaWYgKCFjb2x1bW5IZWFkZXIpIHJldHVybjtcclxuICBcclxuICAgIGNvbnN0IGltYWdlRmV0Y2hlczogT2JzZXJ2YWJsZTxzdHJpbmc+W10gPSBbXTtcclxuICBcclxuICAgIHVybHMuZm9yRWFjaCgodXJsOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgIGNvbnN0IGltYWdlJCA9IHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKGltYWdlQmxvYjogQmxvYikgPT4gVVJMLmNyZWF0ZU9iamVjdFVSTChpbWFnZUJsb2IpKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaW1hZ2VGZXRjaGVzLnB1c2goaW1hZ2UkKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgXHJcbiAgICBpZiAoIWltYWdlRmV0Y2hlcy5sZW5ndGgpIHJldHVybjtcclxuICBcclxuICAgIGZvcmtKb2luKGltYWdlRmV0Y2hlcykuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGltYWdlVVJMczogc3RyaW5nW10pID0+IHtcclxuICAgICAgICBpbWFnZVVSTHMuZm9yRWFjaCgoaW1hZ2VVUkw6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0ucHVzaCh7XHJcbiAgICAgICAgICAgIHJlc3VsdDogaW1hZ2VVUkwsXHJcbiAgICAgICAgICAgIGZpbGU6IG51bGxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gIFxyXG4gICAgICAgIC8vIHRoaXMudGFibGVDb25maWcucm93c1tyb3dJbmRleF1bY29sdW1uSGVhZGVyXSA9IHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdLm1hcChpbWcgPT4gaW1nLnJlc3VsdCk7XHJcbiAgXHJcbiAgICAgICAgLy8gdGhpcy50YWJsZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudGFibGVDb25maWcpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgb25lIG9yIG1vcmUgaW1hZ2VzOicsIGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIFxyXG4gIG9uQ2hlY2tib3hDaGFuZ2UoZXZlbnQ6IEV2ZW50LCByb3c6IGFueSwgY29sdW1uOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICByb3dbY29sdW1uLmhlYWRlcl0gPSBpbnB1dC5jaGVja2VkID8gY29sdW1uLmNoZWNrZWRWYWx1ZSA6IGNvbHVtbi51bkNoZWNrZWRWYWx1ZTtcclxuICB9XHJcbiAgXHJcblxyXG4gIGluaXRpYWxpemVDaGVja2JveERlZmF1bHRzKHRhYmxlRGF0YTogYW55KTogdm9pZCB7XHJcbiAgICB0YWJsZURhdGEucm93cy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICB0YWJsZURhdGEuY29sdW1ucy5mb3JFYWNoKChjb2x1bW46IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChjb2x1bW4uY2VsbFR5cGUgPT09ICdjaGVja2JveCcgJiYgY29sdW1uLnVuQ2hlY2tlZFZhbHVlKSB7XHJcbiAgICAgICAgICByb3dbY29sdW1uLmhlYWRlcl0gPSBjb2x1bW4udW5DaGVja2VkVmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRhYmxlRGF0YTtcclxuICB9XHJcbiAgXHJcbiAgXHJcbiAgXHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGZ4LXNldHRpbmdzLXBhbmVsIFtmeERhdGFdPVwiZnhEYXRhXCIgW3RhYmxlRGF0YV09XCJmeERhdGFcIiAoY29uZmlndXJhdGlvbik9XCJvbkNoYW5nZUNvbmZpZ3VyYXRpb24oJGV2ZW50KVwiPlxyXG4gICAgPGRpdiAqbmdJZj1cImZ4RGF0YVwiPlxyXG4gICAgICAgIDx0YWJsZSBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIGNsYXNzPVwiZm9ybUJ1aWxkZXJfZHluYW1pY190YWJsZVwiPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGVDb25maWcuY29sdW1uc1wiPnt7IGNvbHVtbi5oZWFkZXIgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgdGFibGVDb25maWcucm93czsgbGV0IHJvd0luZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB0YWJsZUNvbmZpZy5jb2x1bW5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbi5jZWxsVHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPnt7cm93W2NvbHVtbi5oZWFkZXJdfX08L3NwYW4+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiICpuZ1N3aXRjaENhc2U9XCInaW5wdXQtdGV4dCdcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4/LnBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2x1bW4uaGVhZGVyXVwiIC8+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaW5wdXQtdGV4dCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sdW1uPy5jbGFzc05hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4/LnBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmhlYWRlcl1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29sdW1uPy5pc1JlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI21vZGVsPVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbj8uaXNSZXF1aXJlZCAmJiBtb2RlbC5pbnZhbGlkICYmIG1vZGVsLnRvdWNoZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LXNtIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2x1bW4/LmVycm9yTWVzc2FnZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgKm5nU3dpdGNoQ2FzZT1cIidpbnB1dC1udW1iZXInXCIgdHlwZT1cIm51bWJlclwiIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4/LnBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2x1bW4uaGVhZGVyXVwiIC8+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgKm5nU3dpdGNoQ2FzZT1cIidkcm9wZG93bidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5oZWFkZXJdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdJZj1cImNvbHVtbi5wbGFjZWhvbGRlclwiIHZhbHVlPVwiXCI+e3sgY29sdW1uLnBsYWNlaG9sZGVyIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGNvbHVtbj8ub3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24/Lm9wdGlvblZhbHVlXCI+ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uPy5vcHRpb25OYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c2VsZWN0IFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiIHN0eWxlPVwid2lkdGg6IDYwJTtcIiAqbmdTd2l0Y2hDYXNlPVwiJ3NtYXJ0LWRyb3Bkb3duJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmhlYWRlcl1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IHt7Y29sdW1uLmhlYWRlcn19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdJZj1cImNvbHVtbi5wbGFjZWhvbGRlclwiIHZhbHVlPVwiXCI+e3sgY29sdW1uLnBsYWNlaG9sZGVyIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHNtYXJ0RHJvcGRvd25PcHRpb25zW2NvbHVtbi5oZWFkZXJdXCIgW3ZhbHVlXT1cIm9wdGlvbj8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24/Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8cC1tdWx0aVNlbGVjdCBbb3B0aW9uc109XCJzbWFydERyb3Bkb3duT3B0aW9uc1tjb2x1bW4uaGVhZGVyXVwiIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5oZWFkZXJdXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IENpdGllc1wiICpuZ1N3aXRjaENhc2U9XCInc21hcnQtZHJvcGRvd24nXCIvPiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHNtYXJ0LWRyb3Bkb3duIGhhbmRsaW5nIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc21hcnQtZHJvcGRvd24nXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUmVndWxhciBkcm9wZG93biBpZiBpc011bHRpc2VsZWN0IGlzIGZhbHNlIG9yIG5vdCBzZXQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCAqbmdJZj1cIiFjb2x1bW4/LmlzTXVsdGlzZWxlY3RcIiBbY2xhc3NdPVwiY29sdW1uPy5jbGFzc05hbWVcIiBzdHlsZT1cIndpZHRoOiA2MCU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5oZWFkZXJdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0lmPVwiY29sdW1uLnBsYWNlaG9sZGVyXCIgdmFsdWU9XCJcIj57eyBjb2x1bW4ucGxhY2Vob2xkZXIgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzbWFydERyb3Bkb3duT3B0aW9uc1tjb2x1bW4uaGVhZGVyXVwiIFt2YWx1ZV09XCJvcHRpb24/LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbj8ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUHJpbWVORyBtdWx0aXNlbGVjdCBpZiBpc011bHRpc2VsZWN0IGlzIHRydWUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgKm5nSWY9XCJjb2x1bW4/LmlzTXVsdGlzZWxlY3RcIiBbb3B0aW9uc109XCJzbWFydERyb3Bkb3duT3B0aW9uc1tjb2x1bW4uaGVhZGVyXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2x1bW4uaGVhZGVyXVwiIFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAoJ1NlbGVjdCAnICsgY29sdW1uLmhlYWRlcilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkcm9wZG93bmljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGRkX2Rvd25faWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGkgcGktYW5nbGUtZG93biB0ZXh0LXhsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCBbY2xhc3NdPVwiY29sdW1uPy5jbGFzc05hbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrYm94J1wiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmhlYWRlcl1cIiAvPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY2hlY2tib3gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyb3dbY29sdW1uLmhlYWRlcl0gPT09IGNvbHVtbi5jaGVja2VkVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGVja2JveENoYW5nZSgkZXZlbnQsIHJvdywgY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbj8uY2hlY2tCb3hMYWJlbCB8fCAnJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJyYWRpby17e3Jvd0luZGV4fX1cIiBbY2xhc3NdPVwiY29sdW1uPy5jbGFzc05hbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ3JhZGlvJ1wiIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmhlYWRlcl1cIiAvPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGdhcDogMTBweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCIncmFkaW8tZ3JvdXAnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29sdW1uLm9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJyYWRpby1ncm91cC17e3Jvd0luZGV4fX1cIiB0eXBlPVwicmFkaW9cIiBbdmFsdWVdPVwib3B0aW9uPy5vcHRpb25OYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5oZWFkZXJdXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uPy5vcHRpb25OYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmaWxlLXVwbG9hZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWVuZCBqdXN0aWZ5LWVuZCByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBmbGV4LXdyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGltYWdlIG9mIHVwbG9hZGVkSW1hZ2VzPy5bcm93SW5kZXhdOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDBcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZT8ucmVzdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiVXBsb2FkZWQgSW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQgc2hhZG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlRmlsZShyb3dJbmRleCwgaSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSB0b3AtMCByaWdodC0wIHRleHQtd2hpdGUgcm91bmRlZC1tZCB3LTUgaC01IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNoYWRvdy1sZyBob3ZlcjpiZy1yZWQtNjAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4p2MXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImZpbGVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdXBsb2FkRmlsZSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGxvYWRJbWFnZSgkZXZlbnQsIHJvd0luZGV4KVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwbG9hZEZpbGUuY2xpY2soKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMiBiZy1ibHVlLTUwMCB0ZXh0LXdoaXRlIHB4LTMgcHktMSByb3VuZGVkIGhvdmVyOmJnLWJsdWUtNjAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwbG9hZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGUtdXBsb2FkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcmVsYXRpdmUgZ2FwLTQgZmxleC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTIgZmxleC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIiAqbmdGb3I9XCJsZXQgaW1hZ2Ugb2YgdXBsb2FkZWRJbWFnZXM/Lltyb3dJbmRleF07IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyB3aWR0aD1cIjEwMFwiIGhlaWdodD1cIjgwXCIgW3NyY109XCJpbWFnZT8ucmVzdWx0XCIgYWx0PVwiVXBsb2FkZWQgSW1hZ2VcIiBjbGFzcz1cInJvdW5kZWQgc2hhZG93IG9yaWVudGF0aW9uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cImRlbGV0ZUZpbGUocm93SW5kZXgsIGkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIHRvcC0wIHJpZ2h0LTAgdGV4dC13aGl0ZSByb3VuZGVkLW1kIHctNSBoLTUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNjgzN18yOTY4MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgcng9XCI5XCIgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWFzayBpZD1cIm1hc2swXzY4MzdfMjk2ODNcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjRcIiB5PVwiNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXNrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBtYXNrPVwidXJsKCNtYXNrMF82ODM3XzI5NjgzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMjA0NSA4Ljk5ODE1TDUuODE4MDIgNi42MTE2N0w2LjYxMzUxIDUuODE2MTdMOSA4LjIwMjY2TDExLjM4NjUgNS44MTYxN0wxMi4xODIgNi42MTE2N0w5Ljc5NTUgOC45OTgxNUwxMi4xODIgMTEuMzg0NkwxMS4zODY1IDEyLjE4MDFMOSA5Ljc5MzY1TDYuNjEzNTEgMTIuMTgwMUw1LjgxODAyIDExLjM4NDZMOC4yMDQ1IDguOTk4MTVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF82ODM3XzI5NjgzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgcng9XCI5XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiIHR5cGU9XCJmaWxlXCIgbmFtZT1cImZpbGVcIiAjdXBsb2FkRmlsZSBoaWRkZW4gbXVsdGlwbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBsb2FkSW1hZ2UoJGV2ZW50LCByb3dJbmRleClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJ1cGxvYWRGaWxlLmNsaWNrKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjlcIiBoZWlnaHQ9XCIyOFwiIHZpZXdCb3g9XCIwIDAgMjkgMjhcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMDAxIDMuMDAxOTVDMTEuNTMyMiAzLjAwMTk1IDkuMTY3MjIgMy44Njk1NiA3LjIzNjQxIDUuMzg0MTRMNy4yMzU5OCA0LjU5Njk1QzcuMjM1OTggNC41MjQ3MyA3LjIyMTc1IDQuNDUzMjEgNy4xOTQxMSA0LjM4NjQ4QzcuMTY2NDcgNC4zMTk3NSA3LjEyNTk2IDQuMjU5MTIgNy4wNzQ4OSA0LjIwODA0QzcuMDIzODEgNC4xNTY5NyA2Ljk2MzE4IDQuMTE2NDYgNi44OTY0NSA0LjA4ODgyQzYuODI5NzIgNC4wNjExOCA2Ljc1ODIgNC4wNDY5NSA2LjY4NTk4IDQuMDQ2OTVDNi42MTM3NSA0LjA0Njk1IDYuNTQyMjMgNC4wNjExOCA2LjQ3NTUgNC4wODg4MkM2LjQwODc3IDQuMTE2NDYgNi4zNDgxNCA0LjE1Njk3IDYuMjk3MDcgNC4yMDgwNEM2LjI0NTk5IDQuMjU5MTIgNi4yMDU0OCA0LjMxOTc1IDYuMTc3ODQgNC4zODY0OEM2LjE1MDIgNC40NTMyMSA2LjEzNTk4IDQuNTI0NzMgNi4xMzU5OCA0LjU5Njk1TDYuMTM2NDIgNi42ODY1MkM2LjEzNjQzIDYuODMyMzkgNi4xOTQzOCA2Ljk3MjI4IDYuMjk3NTIgNy4wNzU0MkM2LjQwMDY3IDcuMTc4NTYgNi41NDA1NSA3LjIzNjUxIDYuNjg2NDIgNy4yMzY1Mkg4Ljc3NTk4QzguODQ4MiA3LjIzNjUyIDguOTE5NzIgNy4yMjIzIDguOTg2NDUgNy4xOTQ2NkM5LjA1MzE4IDcuMTY3MDIgOS4xMTM4MSA3LjEyNjUxIDkuMTY0ODkgNy4wNzU0M0M5LjIxNTk2IDcuMDI0MzYgOS4yNTY0NyA2Ljk2MzczIDkuMjg0MTEgNi44OTdDOS4zMTE3NSA2LjgzMDI3IDkuMzI1OTggNi43NTg3NSA5LjMyNTk4IDYuNjg2NTJDOS4zMjU5OCA2LjYxNDMgOS4zMTE3NSA2LjU0Mjc4IDkuMjg0MTEgNi40NzYwNUM5LjI1NjQ3IDYuNDA5MzIgOS4yMTU5NiA2LjM0ODY5IDkuMTY0ODkgNi4yOTc2MUM5LjExMzgxIDYuMjQ2NTQgOS4wNTMxOCA2LjIwNjAzIDguOTg2NDUgNi4xNzgzOUM4LjkxOTcyIDYuMTUwNzUgOC44NDgyIDYuMTM2NTIgOC43NzU5OCA2LjEzNjUySDguMDU4NEM5Ljc3MDIgNC44NDM4NyAxMS44Mzk5IDQuMTAxOTUgMTQuMDAxIDQuMTAxOTVDMTkuNDc1MSA0LjEwMTk1IDIzLjkwMSA4LjUyNzgyIDIzLjkwMSAxNC4wMDJDMjMuOTAxIDE5LjQ3NjEgMTkuNDc1MSAyMy45MDIgMTQuMDAxIDIzLjkwMkM4LjUyNjg0IDIzLjkwMiA0LjEwMDk4IDE5LjQ3NjEgNC4xMDA5OCAxNC4wMDJDNC4xMDA5OCAxMi42MzgxIDQuMzgyNjMgMTEuMjg4OCA0LjkyODU1IDEwLjAzODlDNC45ODY5MSA5LjkwNTMyIDQuOTg5ODIgOS43NTM5OSA0LjkzNjY1IDkuNjE4MjJDNC44ODM0NyA5LjQ4MjQ2IDQuNzc4NTUgOS4zNzMzNiA0LjY0NDk2IDkuMzE0OTJDNC41Nzg3NyA5LjI4NTk2IDQuNTA3NTMgOS4yNzAzMiA0LjQzNTMgOS4yNjg5QzQuMzYzMDYgOS4yNjc0NyA0LjI5MTI2IDkuMjgwMyA0LjIyMzk4IDkuMzA2NjNDNC4xNTY3MSA5LjMzMjk3IDQuMDk1MjggOS4zNzIzIDQuMDQzMjEgOS40MjIzOEMzLjk5MTE0IDkuNDcyNDcgMy45NDk0NCA5LjUzMjMyIDMuOTIwNTEgOS41OTg1MkMzLjMxMzkzIDEwLjk4NzIgMy4wMDA5OCAxMi40ODY2IDMuMDAwOTggMTQuMDAyQzMuMDAwOTggMjAuMDcwNiA3LjkzMjM2IDI1LjAwMiAxNC4wMDEgMjUuMDAyQzIwLjA2OTYgMjUuMDAyIDI1LjAwMSAyMC4wNzA2IDI1LjAwMSAxNC4wMDJDMjUuMDAxIDcuOTMzMzQgMjAuMDY5NiAzLjAwMTk1IDE0LjAwMSAzLjAwMTk1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMy45OTg4IDYuMTM5NjVDOS42NjE2IDYuMTM5NjUgNi4xMzM3OSA5LjY2NzQ2IDYuMTMzNzkgMTQuMDA0NkM2LjEzMzc5IDE4LjM0MTggOS42NjE2IDIxLjg2OTYgMTMuOTk4OCAyMS44Njk2QzE4LjMzNiAyMS44Njk2IDIxLjg2MzggMTguMzQxOCAyMS44NjM4IDE0LjAwNDZDMjEuODYzOCA5LjY2NzQ2IDE4LjMzNiA2LjEzOTY1IDEzLjk5ODggNi4xMzk2NVpNMTMuOTk4OCA4LjIyOTY1QzE0LjE0NDcgOC4yMjk2NSAxNC4yODQ2IDguMjg3NTkgMTQuMzg3NyA4LjM5MDc0QzE0LjQ5MDggOC40OTM4OCAxNC41NDg4IDguNjMzNzggMTQuNTQ4OCA4Ljc3OTY1VjEzLjc3NjlMMTcuNTIyNyAxNi43NTA4QzE3LjYyNTggMTYuODUzOSAxNy42ODM3IDE2Ljk5MzggMTcuNjgzNyAxNy4xMzk2QzE3LjY4MzcgMTcuMjg1NSAxNy42MjU4IDE3LjQyNTQgMTcuNTIyNyAxNy41Mjg1QzE3LjQxOTUgMTcuNjMxNiAxNy4yNzk2IDE3LjY4OTYgMTcuMTMzOCAxNy42ODk2QzE2Ljk4NzkgMTcuNjg5NiAxNi44NDgxIDE3LjYzMTYgMTYuNzQ0OSAxNy41Mjg1TDEzLjYwOTkgMTQuMzkzNUMxMy41MDY4IDE0LjI5MDQgMTMuNDQ4OCAxNC4xNTA1IDEzLjQ0ODggMTQuMDA0NlY4Ljc3OTY1QzEzLjQ0ODggOC42MzM3OCAxMy41MDY3IDguNDkzODggMTMuNjA5OSA4LjM5MDc0QzEzLjcxMyA4LjI4NzU5IDEzLjg1MjkgOC4yMjk2NSAxMy45OTg4IDguMjI5NjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjNBMDQxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI4LjU2XCIgaGVpZ2h0PVwiMjhcIiByeD1cIjEuNTE0NzlcIiBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUuMDY4IDIyLjczOTFWMTcuNjcwOEgxOC40OTY4TDE0LjIxMDggMTIuNjAyNUw5LjkyNDggMTcuNjcwOEgxMy4zNTM2VjIyLjczOTFIOS4wNjc1OVYyMi42OTY5QzguOTIzNTggMjIuNzA1MyA4Ljc4NjQzIDIyLjczOTEgOC42Mzg5OSAyMi43MzkxQzYuOTMzOTEgMjIuNzM5MSA1LjI5ODY2IDIyLjA3MTcgNC4wOTI5OCAyMC44ODM1QzIuODg3MyAxOS42OTU0IDIuMjA5OTYgMTguMDg0IDIuMjA5OTYgMTYuNDAzN0MyLjIwOTk2IDEzLjE1MzIgNC43MDQ0MyAxMC41MDQyIDcuOTA1MjMgMTAuMTQxQzguMTg1ODUgOC42OTUzIDguOTY4OTIgNy4zOTExOCAxMC4xMTk3IDYuNDUyOTJDMTEuMjcwNiA1LjUxNDY1IDEyLjcxNzIgNS4wMDA4OSAxNC4yMTA4IDVDMTUuNzA0NyA1LjAwMDgyIDE3LjE1MTUgNS41MTQ1MiAxOC4zMDI2IDYuNDUyNzdDMTkuNDUzNyA3LjM5MTAxIDIwLjIzNzEgOC42OTUxNiAyMC41MTgxIDEwLjE0MUMyMy43MTg5IDEwLjUwNDIgMjYuMjEgMTMuMTUzMiAyNi4yMSAxNi40MDM3QzI2LjIxIDE4LjA4NCAyNS41MzI2IDE5LjY5NTQgMjQuMzI2OSAyMC44ODM1QzIzLjEyMTMgMjIuMDcxNyAyMS40ODYgMjIuNzM5MSAxOS43ODA5IDIyLjczOTFDMTkuNjM2OSAyMi43MzkxIDE5LjQ5ODEgMjIuNzA1MyAxOS4zNTIzIDIyLjY5NjlWMjIuNzM5MUgxNS4wNjhaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInVwbG9hZEZpbGUuY2xpY2soKVwiIGNsYXNzPVwidGV4dC1iYXNlIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdVcGxvYWQnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGV4dGFyZWEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiIG5hbWU9XCJcIiBpZD1cIlwiIGNvbHM9XCIzMFwiIHJvd3M9XCIyXCIgW3BsYWNlaG9sZGVyXT1cImNvbHVtbj8ucGxhY2Vob2xkZXJcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuPC9meC1zZXR0aW5ncy1wYW5lbD4iXX0=
385
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9meC1idWlsZGVyLXdyYXBwZXIvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQWEsZUFBZSxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRTdGLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7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LElBQUksTUFBTSxDQUFDLGNBQWMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDbkYsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO2dCQUM3QyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFLTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzt3R0FsWlUscUJBQXFCOzRGQUFyQixxQkFBcUIsK0xDekNsQyxzbWpCQTROb0IsdTZGRHhMUixZQUFZLDJiQUFFLFdBQVcsNGxEQUFFLHNCQUFzQixnSEFBRSxtQkFBbUIsOEJBQUMsaUJBQWlCLDI3Q0FBQyxpQkFBaUIsOEJBQUMsZUFBZSw4QkFBQyxjQUFjOzs0RkFLeEkscUJBQXFCO2tCQVJqQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFDLGlCQUFpQixFQUFDLGlCQUFpQixFQUFDLGVBQWUsRUFBQyxjQUFjLENBQUM7NEhBTTNJLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEZ4QmFzZUNvbXBvbmVudCwgRnhNb2RlLCBGeFNldHRpbmcsIEZ4U3RyaW5nU2V0dGluZywgRnhWYWxpZGF0aW9uLCBGeFZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICdAaW5zdGFudHN5cy1sYWJzL2Z4JztcclxuaW1wb3J0IHsgU2V0dGluZ3NQYW5lbENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhbmVsL3NldHRpbmdzLXBhbmVsL3NldHRpbmdzLXBhbmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZngtYnVpbGRlci13cmFwcGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQge2ZvcmtKb2luLCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNdWx0aVNlbGVjdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvbXVsdGlzZWxlY3QnO1xyXG5pbXBvcnQgeyBJbnB1dFRleHRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XHJcbmltcG9ydCB7IElucHV0TnVtYmVyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dG51bWJlcic7XHJcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29sdW1uQ29uZmlnIHtcclxuICBoZWFkZXI6IHN0cmluZztcclxuICBjZWxsVHlwZTogJ3RleHQnIHwgJ2lucHV0LXRleHQnIHwgJ2lucHV0LW51bWJlcicgfCAnZHJvcGRvd24nIHwgJ3NtYXJ0LWRyb3Bkb3duJyB8ICdjaGVja2JveCcgfCAncmFkaW8nIHwgJ3JhZGlvLWdyb3VwJyB8ICdmaWxlLXVwbG9hZCcgfCAndGV4dGFyZWEnO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcclxuICBhcGlVcmw/OiBzdHJpbmc7XHJcbiAgdmFsdWVLZXk/OiBzdHJpbmc7XHJcbiAgbGFiZWxLZXk/OiBzdHJpbmc7XHJcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xyXG4gIGlzTXVsdGlzZWxlY3Q/OiBib29sZWFuO1xyXG4gIGNoZWNrZWRWYWx1ZT86IGFueTtcclxuICB1bkNoZWNrZWRWYWx1ZT86IGFueTtcclxuICBjaGVja0JveExhYmVsPzogc3RyaW5nO1xyXG4gIGlzUmVxdWlyZWQ/OmJvb2xlYW4sXHJcbiAgZXJyb3JNZXNzYWdlPzpzdHJpbmdcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29uZmlnIHtcclxuICBjb2x1bW5zOiBUYWJsZUNvbHVtbkNvbmZpZ1tdO1xyXG4gIHJvd3M6IGFueVtdO1xyXG59XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZngtZHluYW1pYy10YWJsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgU2V0dGluZ3NQYW5lbENvbXBvbmVudCwgUmVhY3RpdmVGb3Jtc01vZHVsZSxNdWx0aVNlbGVjdE1vZHVsZSxJbnB1dE51bWJlck1vZHVsZSxJbnB1dFRleHRNb2R1bGUsRHJvcGRvd25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZHluYW1pYy10YWJsZS5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgRHluYW1pY1RhYmxlQ29tcG9uZW50IGV4dGVuZHMgRnhCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHRhYmxlUm93czogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpIHByZXZpZXdUeXBlOiBGeE1vZGUgPSBGeE1vZGUuVklFVztcclxuICBASW5wdXQoKSB0YWJsZUNvbmZpZzogYW55ID0ge1xyXG4gICAgY29sdW1uczogW1xyXG4gICAgICB7IGhlYWRlcjogJ0NvbHVtbiAxJywgY2VsbFR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IGhlYWRlcjogJ0NvbHVtbiAyJywgY2VsbFR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IGhlYWRlcjogJ0NvbHVtbiAzJywgY2VsbFR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IGhlYWRlcjogJ0NvbHVtbiA0JywgY2VsbFR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgICB7IGhlYWRlcjogJ0NvbHVtbiA1JywgY2VsbFR5cGU6ICd0ZXh0JyB9LFxyXG4gICAgXSxcclxufTtcclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PEJvb2xlYW4+KCk7XHJcbiAgLy8gcHVibGljIHVwbG9hZGVkSW1hZ2VzOiBBcnJheTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBGaWxlIHwgbnVsbD4gfCBudWxsPiA9IFtdO1xyXG4gIHB1YmxpYyB1cGxvYWRlZEltYWdlczogQXJyYXk8QXJyYXk8eyByZXN1bHQ6IHN0cmluZywgZmlsZTogRmlsZSB8IG51bGx9Pj4gPSBbXTtcclxuXHJcbiAgcHVibGljIGdlbmVyYWxWYWx1ZXM6IGFueTtcclxuXHJcbiAgcHVibGljIHRhYmxlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICBwdWJsaWMgc21hcnREcm9wZG93bk9wdGlvbnM6IHsgW2tleTogc3RyaW5nXTogQXJyYXk8eyBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfT4gfSA9IHt9O1xyXG4gIHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZnhCdWlsZGVyV3JhcHBlclNlcnZpY2U6IEZ4QnVpbGRlcldyYXBwZXJTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihjZHIpO1xyXG4gICAgdGhpcy5vbkluaXQuc3Vic2NyaWJlKChmeERhdGEpPT57XHJcbiAgICAgIHRoaXMuX3JlZ2lzdGVyKHRoaXMudGFibGVGb3JtQ29udHJvbCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5meEJ1aWxkZXJXcmFwcGVyU2VydmljZS52YXJpYWJsZXMkLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCh2YXJpYWJsZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICh2YXJpYWJsZXMpIHtcclxuICAgICAgICAgIGxldCBkeW5hbWljVGFibGVWYWx1ZXM6IGFueTtcclxuICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhcmlhYmxlcykpIHtcclxuICAgICAgICAgICAgaWYgKGtleS5pbmNsdWRlcygnZHluYW1pYy10YWJsZScpKSB7XHJcbiAgICAgICAgICAgICAgZHluYW1pY1RhYmxlVmFsdWVzID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhkeW5hbWljVGFibGVWYWx1ZXMpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAvLyBjb25zdCBmaWxlSGVhZGVyTmFtZSA9IGR5bmFtaWNUYWJsZVZhbHVlcz8uY29sdW1ucy5maW5kKChmOiBhbnkpID0+IGYuY2VsbFR5cGUgPT09ICdmaWxlLXVwbG9hZCcpPy5oZWFkZXI7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVIZWFkZXJOYW1lID0gZHluYW1pY1RhYmxlVmFsdWVzPy5jb2x1bW5zLmZpbmQoKGY6IGFueSkgPT4gZi5jZWxsVHlwZSA9PT0gJ2ZpbGUtdXBsb2FkJyk/LmhlYWRlcjtcclxuICAgICAgICAgICAgZHluYW1pY1RhYmxlVmFsdWVzPy5yb3dzPy5mb3JFYWNoKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAvLyAvLyB0aGlzLnVwbG9hZGVkSW1hZ2VzW2luZGV4XSA9IGl0ZW1bZmlsZUhlYWRlck5hbWVdID8gaXRlbVtmaWxlSGVhZGVyTmFtZV06IG51bGw7XHJcbiAgICAgICAgICAgICAgLy8gY29uc3QgZmlsZVVybCA9IGl0ZW1bZmlsZUhlYWRlck5hbWVdOyAvLyBHZXQgdGhlIGZpbGUgVVJMXHJcblxyXG4gICAgICAgICAgICAgIC8vIHRoaXMudXBsb2FkZWRJbWFnZXNbaW5kZXhdID0gZmlsZVVybFxyXG4gICAgICAgICAgICAgIC8vICAgPyB7IHJlc3VsdDogZmlsZVVybCwgZmlsZTogbnVsbCB9IC8vIFN0b3JlIHRoZSBVUkwgYXMgJ3Jlc3VsdCdcclxuICAgICAgICAgICAgICAvLyAgIDogbnVsbDtcclxuICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBpZiAoaXRlbVtmaWxlSGVhZGVyTmFtZV0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFyc2VVcmxzKGl0ZW1bZmlsZUhlYWRlck5hbWVdLCBpbmRleCxkeW5hbWljVGFibGVWYWx1ZXM/LmNvbHVtbnMpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICB0aGlzLnRhYmxlQ29uZmlnID0gIHRoaXMuaW5pdGlhbGl6ZUNoZWNrYm94RGVmYXVsdHMoZHluYW1pY1RhYmxlVmFsdWVzKTtcclxuICAgICAgICAgICAgLy8gdGhpcy50YWJsZUNvbmZpZyA9IGR5bmFtaWNUYWJsZVZhbHVlcztcclxuICAgICAgICAgICAgdGhpcy5meERhdGEudmFsdWUgPSB0aGlzLnRhYmxlQ29uZmlnO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnRhYmxlRm9ybUNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgICAgICAgLy8gdGhpcy50YWJsZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudGFibGVDb25maWcpO1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7ICAvLyBEZWxheSB0byBlbnN1cmUgcHJvcGVyIHBhdGNoaW5nXHJcbiAgICAgICAgICAgICAgdGhpcy50YWJsZUZvcm1Db250cm9sLnBhdGNoVmFsdWUodGhpcy50YWJsZUNvbmZpZywgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJ0YWJsZUZvcm1Db250cm9sXCIsdGhpcy50YWJsZUZvcm1Db250cm9sKTtcclxuICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH0sIDUwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmKHRoaXMuZnhEYXRhPy52YWx1ZSAmJiBPYmplY3Qua2V5cyh0aGlzLmZ4RGF0YT8udmFsdWUpPy5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgIHRoaXMudGFibGVDb25maWcgPSB0aGlzLmZ4RGF0YS52YWx1ZTtcclxuICAgICAgICB0aGlzLmZldGNoU21hcnREcm9wZG93bkRhdGEoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKVxyXG4gIH1cclxuICBcclxuICBwcm90ZWN0ZWQgZmV0Y2hTbWFydERyb3Bkb3duRGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMudGFibGVDb25maWcuY29sdW1uc1xyXG4gICAgICAuZmlsdGVyKChjb2x1bW46IFRhYmxlQ29sdW1uQ29uZmlnKSA9PiBjb2x1bW4uY2VsbFR5cGUgPT09ICdzbWFydC1kcm9wZG93bicgJiYgY29sdW1uPy5hcGlVcmwpXHJcbiAgICAgIC5mb3JFYWNoKChjb2x1bW46IFRhYmxlQ29sdW1uQ29uZmlnKSA9PiB7XHJcbiAgICAgICAgdGhpcy5odHRwLmdldDxhbnk+KGNvbHVtbi5hcGlVcmwhKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuc21hcnREcm9wZG93bk9wdGlvbnNbY29sdW1uLmhlYWRlcl0gPSByZXNwb25zZS5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgdmFsdWU6IGl0ZW1bY29sdW1uLnZhbHVlS2V5IV0sXHJcbiAgICAgICAgICAgIG5hbWU6IGl0ZW1bY29sdW1uLmxhYmVsS2V5IV0sXHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gcHVibGljIHVwbG9hZEltYWdlKGV2ZW50OiBFdmVudCwgcm93SW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gIC8vICAgY29uc3QgZmlsZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXM/LlswXTtcclxuICAvLyAgIGlmIChmaWxlKSB7XHJcbiAgLy8gICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgLy8gICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgLy8gICAgICAgdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0gPSB7XHJcbiAgLy8gICAgICAgICByZXN1bHQ6IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nLFxyXG4gIC8vICAgICAgICAgZmlsZTogZmlsZVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICB0aGlzLnRhYmxlQ29uZmlnLnJvd3Nbcm93SW5kZXhdW3RoaXMudGFibGVDb25maWcuY29sdW1ucy5maW5kKChmOiBhbnkpID0+IGYuY2VsbFR5cGUgPT09ICdmaWxlLXVwbG9hZCcpPy5oZWFkZXJdID0gZmlsZTtcclxuICAvLyAgICAgICBjb25zb2xlLmxvZyhcInRhYmxlQ29uZmlnXCIsIHRoaXMudGFibGVDb25maWcpO1xyXG4gIC8vICAgICB9O1xyXG4gIC8vICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyB1cGxvYWRJbWFnZShldmVudDogRXZlbnQsIHJvd0luZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZpbGVzID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcztcclxuICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdID0gdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0gfHwgW107XHJcbiAgXHJcbiAgICAgIEFycmF5LmZyb20oZmlsZXMpLmZvckVhY2goKGZpbGU6IEZpbGUpID0+IHtcclxuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XS5wdXNoKHtcclxuICAgICAgICAgICAgcmVzdWx0OiByZWFkZXIucmVzdWx0IGFzIHN0cmluZyxcclxuICAgICAgICAgICAgZmlsZTogZmlsZVxyXG4gICAgICAgICAgfSk7XHJcbiAgXHJcbiAgICAgICAgICAvLyBPcHRpb25hbGx5IGFkZCB0byB0YWJsZUNvbmZpZyBpZiBvbmx5IG9uZSBmaWxlIGlzIHRyYWNrZWQgdGhlcmVcclxuICAgICAgICAgIGNvbnN0IGNvbHVtbkhlYWRlciA9IHRoaXMudGFibGVDb25maWcuY29sdW1ucy5maW5kKChmOiBhbnkpID0+IGYuY2VsbFR5cGUgPT09ICdmaWxlLXVwbG9hZCcpPy5oZWFkZXI7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlQ29uZmlnLnJvd3Nbcm93SW5kZXhdW2NvbHVtbkhlYWRlcl0gPSB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XS5tYXAoaW1nID0+IGltZy5maWxlKTtcclxuICBcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwidGFibGVDb25maWdcIiwgdGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG5cclxuICBwcm90ZWN0ZWQgc2V0dGluZ3MoKTogRnhTZXR0aW5nW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ2NvbHVtbi1zaXplJywgJHRpdGxlOiAnTm8uIG9mIGNvbHVtbnMnLCB2YWx1ZTogMSB9KSxcclxuICAgICAgbmV3IEZ4U3RyaW5nU2V0dGluZyh7IGtleTogJ3RhYmxlLWNvbmZpZycsICR0aXRsZTogJ1RhYmxlIENvbmZpZ3VyYXRpb24nLCB2YWx1ZToge30gfSksXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHZhbGlkYXRpb25zKCk6IEZ4VmFsaWRhdGlvbltdIHtcclxuICAgIHJldHVybiBbRnhWYWxpZGF0b3JTZXJ2aWNlLnJlcXVpcmVkXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBcnJheShjb3VudDogbnVtYmVyKTogbnVtYmVyW10ge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IGNvdW50IH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlQ29uZmlndXJhdGlvbihldmVudDogYW55KTogdm9pZCB7IFxyXG4gICAgIHRoaXMuZ2VuZXJhbFZhbHVlcyA9IHtcclxuICAgICAgZW5hYmxlQVBJOiBldmVudD8uZW5hYmxlQVBJLFxyXG4gICAgICBhcGk6IGV2ZW50Py5hcGlcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbHVtbnMgPSBldmVudC5jb2x1bW5zLm1hcCgoY29sOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBoZWFkZXI6IGNvbD8uaGVhZGVyLFxyXG4gICAgICAgIGNlbGxUeXBlOiBjb2w/LmNlbGxUeXBlLFxyXG4gICAgICAgIHBsYWNlaG9sZGVyOiBjb2w/LnBsYWNlaG9sZGVyLFxyXG4gICAgICAgIG9wdGlvbnM6IGNvbD8ub3B0aW9ucyxcclxuICAgICAgICBhcGlVcmw6IGNvbD8uYXBpVXJsLFxyXG4gICAgICAgIHZhbHVlS2V5OiBjb2w/LnZhbHVlS2V5LFxyXG4gICAgICAgIGxhYmVsS2V5OiBjb2w/LmxhYmVsS2V5LFxyXG4gICAgICAgIGNsYXNzTmFtZTogY29sPy5jbGFzc05hbWUsXHJcbiAgICAgICAgYXBpS2V5OiBjb2w/LmFwaUtleSxcclxuICAgICAgICBpc011bHRpc2VsZWN0OiBjb2w/LmlzTXVsdGlzZWxlY3QsXHJcbiAgICAgICAgY2hlY2tlZFZhbHVlOiBjb2w/LmNoZWNrZWRWYWx1ZSxcclxuICAgICAgICB1bkNoZWNrZWRWYWx1ZTogY29sPy51bkNoZWNrZWRWYWx1ZSxcclxuICAgICAgICBjaGVja0JveExhYmVsOmNvbD8uY2hlY2tCb3hMYWJlbCxcclxuICAgICAgICBpc1JlcXVpcmVkOmNvbD8uaXNSZXF1aXJlZCxcclxuICAgICAgICBlcnJvck1lc3NhZ2U6Y29sPy5lcnJvck1lc3NhZ2VcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZighZXZlbnQ/LmVuYWJsZUFQSSkge1xyXG4gICAgICB0aGlzLnRhYmxlQ29uZmlnLmNvbHVtbnMgPSBjb2x1bW5zO1xyXG4gICAgICAvLyB0aGlzLnRhYmxlQ29uZmlnLnJvd3MgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiArZXZlbnQ/LnJvd3MgfSwgKGUsIGluZGV4KSA9PiAoeyBuYW1lOiBgU0tVLSR7aW5kZXggKyAxfWAsIGFnZTogaW5kZXggJSAyICE9PSAwLCBnZW5kZXI6ICdtYWxlJyB9KSlcclxuICAgICAgLy8gdGhpcy50YWJsZUNvbmZpZy5yb3dzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogK2V2ZW50Py5yb3dzIH0sIChlLCBpbmRleCkgPT4ge1xyXG4gICAgICAvLyAgIGNvbnN0IHJvd3MgPSBjb2x1bW5zLm1hcCgoYzogYW55KSA9PiB7XHJcbiAgICAgIC8vICAgICByZXR1cm4ge1xyXG4gICAgICAvLyAgICAgICBjPy5oZWFkZXI6IG51bGxcclxuICAgICAgLy8gICAgIH1cclxuICAgICAgLy8gICB9KVxyXG4gICAgICAvLyAgIHJldHVybiByb3dzXHJcbiAgICAgIC8vIH0pXHJcbiAgICAgIHRoaXMudGFibGVDb25maWcucm93cyA9IEFycmF5LmZyb20oeyBsZW5ndGg6ICtldmVudD8ucm93cyB9LCAoXywgaW5kZXgpID0+IHtcclxuICAgICAgICByZXR1cm4gY29sdW1ucy5yZWR1Y2UoKGFjYzogYW55LCBjOiBhbnkpID0+IHtcclxuICAgICAgICAgIGFjY1tjPy5oZWFkZXJdID0gJyc7IC8vIEluaXRpYWxpemUgZWFjaCBjb2x1bW4ga2V5IHdpdGggbnVsbFxyXG4gICAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgICB9LCB7fSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5mZXRjaFNtYXJ0RHJvcGRvd25EYXRhKCk7XHJcbiAgICB9XHJcbiAgICBpZihldmVudD8uZW5hYmxlQVBJKSB7XHJcbiAgICAgIHRoaXMuZHJhd1RhYmxlKGV2ZW50LCBjb2x1bW5zKVxyXG4gICAgICB0aGlzLnRhYmxlQ29uZmlnID0ge1xyXG4gICAgICAgIGNvbHVtbnM6IGNvbHVtbnMsXHJcbiAgICAgICAgcm93czogW11cclxuICAgICAgfTtcclxuICAgIH1cclxuICAgdGhpcy50YWJsZUNvbmZpZyA9ICB0aGlzLmluaXRpYWxpemVDaGVja2JveERlZmF1bHRzKHRoaXMudGFibGVDb25maWcpO1xyXG4gICAgdGhpcy50YWJsZUNvbmZpZy5nZW5lcmFsVmFsdWVzID0gdGhpcy5nZW5lcmFsVmFsdWVzO1xyXG4gICAgdGhpcy5meERhdGEudmFsdWUgPSB0aGlzLnRhYmxlQ29uZmlnO1xyXG4gICAgdGhpcy50YWJsZUZvcm1Db250cm9sLnJlc2V0KCk7XHJcbiAgICBjb25zb2xlLmxvZyhcImFmdGVyXCIpXHJcbiAgICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVNldHRpbmdzKCk6IHZvaWR7XHJcbiAgICBpZih0aGlzLmZ4RGF0YS5zZXR0aW5ncyl7XHJcbiAgICAgIGZvcihsZXQgc2V0dGluZyBvZiB0aGlzLmZ4RGF0YS5zZXR0aW5ncyl7XHJcbiAgICAgIGlmKHNldHRpbmcua2V5ID09PSAndGFibGUtY29uZmlnJyl7XHJcbiAgICAgICAgc2V0dGluZy52YWx1ZSA9IHRoaXMudGFibGVDb25maWc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgZHJhd1RhYmxlKGV2ZW50OiBhbnksIGNvbHVtbnM6IGFueSk6IHZvaWQge1xyXG4gIC8vICAgbGV0IHJvd3M7XHJcbiAgLy8gICB0aGlzLmh0dHAuZ2V0KGV2ZW50LmFwaSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gIC8vICAgICBpZihyZXMpIHtcclxuICAvLyAgICAgICByb3dzID0gcmVzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgICBjb25zdCBuZXdPYmo6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICAvLyAgICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sOiBhbnkpID0+IHtcclxuICAvLyAgICAgICAgICAgbmV3T2JqW2NvbC5oZWFkZXJdID0gaXRlbVtjb2wuYXBpS2V5XTtcclxuICAvLyAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgICAgcmV0dXJuIG5ld09iajtcclxuICAvLyAgICAgICB9KTtcclxuICAvLyAgICAgICB0aGlzLnRhYmxlQ29uZmlnID0ge1xyXG4gIC8vICAgICAgICAgY29sdW1ucyxcclxuICAvLyAgICAgICAgIHJvd3NcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgdGhpcy50YWJsZUNvbmZpZy5nZW5lcmFsVmFsdWVzID0gdGhpcy5nZW5lcmFsVmFsdWVzO1xyXG4gIC8vICAgICAgIHRoaXMuZnhEYXRhLnZhbHVlID0gdGhpcy50YWJsZUNvbmZpZztcclxuICAvLyAgICAgICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wucmVzZXQoKTtcclxuICAvLyAgICAgICB0aGlzLnRhYmxlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy50YWJsZUNvbmZpZyk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG5cclxuICAgIHB1YmxpYyBkcmF3VGFibGUoZXZlbnQ6IGFueSwgY29sdW1uczogYW55KTogdm9pZCB7XHJcbiAgICBsZXQgcm93cztcclxuICAgIHRoaXMuaHR0cC5nZXQoZXZlbnQuYXBpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmKHJlcykge1xyXG4gICAgICAgIHJvd3MgPSByZXMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5ld09iajogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2w6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBuZXdPYmpbY29sLmhlYWRlcl0gPSBpdGVtW2NvbC5hcGlLZXldIHx8ICcnO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm4gbmV3T2JqO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudGFibGVDb25maWcgPSB7XHJcbiAgICAgICAgICBjb2x1bW5zLFxyXG4gICAgICAgICAgcm93c1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnRhYmxlQ29uZmlnLmdlbmVyYWxWYWx1ZXMgPSB0aGlzLmdlbmVyYWxWYWx1ZXM7XHJcbiAgICAgICAgdGhpcy5meERhdGEudmFsdWUgPSB0aGlzLnRhYmxlQ29uZmlnO1xyXG4gICAgICAgIHRoaXMudGFibGVGb3JtQ29udHJvbC5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMudGFibGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnRhYmxlQ29uZmlnKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIHB1YmxpYyBkZWxldGVGaWxlKGZpbGU6IGFueSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gIC8vICAgdGhpcy51cGxvYWRlZEltYWdlcy5zcGxpY2UoaW5kZXgsIDEsIG51bGwpO1xyXG4gIC8vICAgdGhpcy50YWJsZUNvbmZpZy5yb3dzW2luZGV4XVt0aGlzLnRhYmxlQ29uZmlnLmNvbHVtbnMuZmluZCgoZjogYW55KSA9PiBmLmNlbGxUeXBlID09PSAnZmlsZS11cGxvYWQnKT8uaGVhZGVyXSA9IG51bGw7XHJcbiAgLy8gICBjb25zb2xlLmxvZyhcInRhYmxlQ29uZmlnXCIsIHRoaXMudGFibGVDb25maWcpO1xyXG4gIC8vICAgdGhpcy50YWJsZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudGFibGVDb25maWcpO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gcHVibGljIGRlbGV0ZUZpbGUocm93SW5kZXg6IG51bWJlciwgaW1hZ2VJbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgLy8gICBpZiAodGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0pIHtcclxuICAvLyAgICAgdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0uc3BsaWNlKGltYWdlSW5kZXgsIDEpO1xyXG4gIFxyXG4gIC8vICAgICBjb25zdCBjb2x1bW5IZWFkZXIgPSB0aGlzLnRhYmxlQ29uZmlnLmNvbHVtbnMuZmluZCgoZjogYW55KSA9PiBmLmNlbGxUeXBlID09PSAnZmlsZS11cGxvYWQnKT8uaGVhZGVyO1xyXG4gIC8vICAgICB0aGlzLnRhYmxlQ29uZmlnLnJvd3Nbcm93SW5kZXhdW2NvbHVtbkhlYWRlcl0gPSB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XS5tYXAoaW1nID0+IGltZy5maWxlKTtcclxuICAvLyAgICAgdGhpcy50YWJsZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudGFibGVDb25maWcpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZUZpbGUocm93SW5kZXg6IG51bWJlciwgaW1hZ2VJbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0pIHtcclxuICAgICAgY29uc3QgcmVtb3ZlZEZpbGUgPSB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XVtpbWFnZUluZGV4XTtcclxuICBcclxuICAgICAgLy8gVHJhY2sgdGhlIGZpbGUgdG8gZGVsZXRlIGlmIGl0J3MgYW4gdXBsb2FkZWQgZmlsZSAoaS5lLiwgaGFzIFVSTCBhbmQgbm8gRmlsZSBvYmplY3QpXHJcbiAgICAgIGlmIChyZW1vdmVkRmlsZT8ucmVzdWx0ICYmIHR5cGVvZiByZW1vdmVkRmlsZS5yZXN1bHQgPT09ICdzdHJpbmcnICYmIHJlbW92ZWRGaWxlLmZpbGUgPT09IG51bGwpIHtcclxuICAgICAgICB0aGlzLnRhYmxlQ29uZmlnLnJvd3Nbcm93SW5kZXhdLmZpbGVzVG9EZWxldGUgPSB0aGlzLnRhYmxlQ29uZmlnLnJvd3Nbcm93SW5kZXhdLmZpbGVzVG9EZWxldGUgfHwgW107XHJcbiAgICAgICAgdGhpcy50YWJsZUNvbmZpZy5yb3dzW3Jvd0luZGV4XS5maWxlc1RvRGVsZXRlLnB1c2gocmVtb3ZlZEZpbGUucmVzdWx0KTtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICAvLyBSZW1vdmUgdGhlIGZpbGUgZnJvbSB0aGUgVUlcclxuICAgICAgdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0uc3BsaWNlKGltYWdlSW5kZXgsIDEpO1xyXG4gIFxyXG4gICAgICBjb25zdCBjb2x1bW5IZWFkZXIgPSB0aGlzLnRhYmxlQ29uZmlnLmNvbHVtbnMuZmluZCgoZjogYW55KSA9PiBmLmNlbGxUeXBlID09PSAnZmlsZS11cGxvYWQnKT8uaGVhZGVyO1xyXG4gICAgICB0aGlzLnRhYmxlQ29uZmlnLnJvd3Nbcm93SW5kZXhdW2NvbHVtbkhlYWRlcl0gPSB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XS5tYXAoaW1nID0+IGltZy5maWxlKTtcclxuICBcclxuICAgICAgdGhpcy50YWJsZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudGFibGVDb25maWcpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBcclxuXHJcbiAgLy8gcHVibGljIHBhcnNlVXJscyh1cmw6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkuc3Vic2NyaWJlKHtcclxuICAvLyAgICAgbmV4dDogKGltYWdlQmxvYjogQmxvYikgPT4ge1xyXG4gIC8vICAgICAgIGNvbnN0IGltYWdlVVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChpbWFnZUJsb2IpO1xyXG4gIC8vICAgICAgIHRoaXMudXBsb2FkZWRJbWFnZXNbaW5kZXhdID0ge1xyXG4gIC8vICAgICAgICAgcmVzdWx0OiBpbWFnZVVSTCxcclxuICAvLyAgICAgICAgIGZpbGU6IG51bGxcclxuICAvLyAgICAgICB9O1xyXG4gIC8vICAgICB9LFxyXG4gIC8vICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgLy8gICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgaW1hZ2U6JywgZXJyb3IpO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIC8vIHB1YmxpYyBwYXJzZVVybHModXJsOiBzdHJpbmcsIHJvd0luZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnN1YnNjcmliZSh7XHJcbiAgLy8gICAgIG5leHQ6IChpbWFnZUJsb2I6IEJsb2IpID0+IHtcclxuICAvLyAgICAgICBjb25zdCBpbWFnZVVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoaW1hZ2VCbG9iKTtcclxuICBcclxuICAvLyAgICAgICB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XSA9IHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdIHx8IFtdO1xyXG4gIC8vICAgICAgIHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdLnB1c2goe1xyXG4gIC8vICAgICAgICAgcmVzdWx0OiBpbWFnZVVSTCxcclxuICAvLyAgICAgICAgIGZpbGU6IG51bGxcclxuICAvLyAgICAgICB9KTtcclxuICBcclxuICAvLyAgICAgICBjb25zdCBjb2x1bW5IZWFkZXIgPSB0aGlzLnRhYmxlQ29uZmlnLmNvbHVtbnMuZmluZCgoZjogYW55KSA9PiBmLmNlbGxUeXBlID09PSAnZmlsZS11cGxvYWQnKT8uaGVhZGVyO1xyXG4gIC8vICAgICAgIHRoaXMudGFibGVDb25maWcucm93c1tyb3dJbmRleF1bY29sdW1uSGVhZGVyXSA9IHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdLm1hcChpbWcgPT4gaW1nLmZpbGUpO1xyXG4gIFxyXG4gIC8vICAgICAgIHRoaXMudGFibGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnRhYmxlQ29uZmlnKTtcclxuICAvLyAgICAgfSxcclxuICAvLyAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gIC8vICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGltYWdlOicsIGVycm9yKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICBwdWJsaWMgcGFyc2VVcmxzKHVybHM6IHN0cmluZ1tdLCByb3dJbmRleDogbnVtYmVyLCBjb2x1bW5zOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheSh1cmxzKSB8fCAhdXJscy5sZW5ndGgpIHJldHVybjtcclxuICBcclxuICAgIHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdID0gdGhpcy51cGxvYWRlZEltYWdlc1tyb3dJbmRleF0gfHwgW107XHJcbiAgXHJcbiAgICBjb25zdCBjb2x1bW5IZWFkZXIgPSBjb2x1bW5zLmZpbmQoKGY6IGFueSkgPT4gZi5jZWxsVHlwZSA9PT0gJ2ZpbGUtdXBsb2FkJyk/LmhlYWRlcjtcclxuICAgIGlmICghY29sdW1uSGVhZGVyKSByZXR1cm47XHJcbiAgXHJcbiAgICBjb25zdCBpbWFnZUZldGNoZXM6IE9ic2VydmFibGU8c3RyaW5nPltdID0gW107XHJcbiAgXHJcbiAgICB1cmxzLmZvckVhY2goKHVybDogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmICh1cmwpIHtcclxuICAgICAgICBjb25zdCBpbWFnZSQgPSB0aGlzLmh0dHAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5waXBlKFxyXG4gICAgICAgICAgbWFwKChpbWFnZUJsb2I6IEJsb2IpID0+IFVSTC5jcmVhdGVPYmplY3RVUkwoaW1hZ2VCbG9iKSlcclxuICAgICAgICApO1xyXG4gICAgICAgIGltYWdlRmV0Y2hlcy5wdXNoKGltYWdlJCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIFxyXG4gICAgaWYgKCFpbWFnZUZldGNoZXMubGVuZ3RoKSByZXR1cm47XHJcbiAgXHJcbiAgICBmb3JrSm9pbihpbWFnZUZldGNoZXMpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChpbWFnZVVSTHM6IHN0cmluZ1tdKSA9PiB7XHJcbiAgICAgICAgaW1hZ2VVUkxzLmZvckVhY2goKGltYWdlVVJMOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgIHRoaXMudXBsb2FkZWRJbWFnZXNbcm93SW5kZXhdLnB1c2goe1xyXG4gICAgICAgICAgICByZXN1bHQ6IGltYWdlVVJMLFxyXG4gICAgICAgICAgICBmaWxlOiBudWxsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICBcclxuICAgICAgICAvLyB0aGlzLnRhYmxlQ29uZmlnLnJvd3Nbcm93SW5kZXhdW2NvbHVtbkhlYWRlcl0gPSB0aGlzLnVwbG9hZGVkSW1hZ2VzW3Jvd0luZGV4XS5tYXAoaW1nID0+IGltZy5yZXN1bHQpO1xyXG4gIFxyXG4gICAgICAgIC8vIHRoaXMudGFibGVGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnRhYmxlQ29uZmlnKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIG9uZSBvciBtb3JlIGltYWdlczonLCBlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBcclxuICBvbkNoZWNrYm94Q2hhbmdlKGV2ZW50OiBFdmVudCwgcm93OiBhbnksIGNvbHVtbjogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgcm93W2NvbHVtbi5oZWFkZXJdID0gaW5wdXQuY2hlY2tlZCA/IGNvbHVtbi5jaGVja2VkVmFsdWUgOiBjb2x1bW4udW5DaGVja2VkVmFsdWU7XHJcbiAgfVxyXG4gIFxyXG5cclxuICBpbml0aWFsaXplQ2hlY2tib3hEZWZhdWx0cyh0YWJsZURhdGE6IGFueSk6IHZvaWQge1xyXG4gICAgdGFibGVEYXRhLnJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcclxuICAgICAgdGFibGVEYXRhLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoY29sdW1uLmNlbGxUeXBlID09PSAnY2hlY2tib3gnICYmIGNvbHVtbi51bkNoZWNrZWRWYWx1ZSAmJiAhcm93W2NvbHVtbi5oZWFkZXJdKSB7XHJcbiAgICAgICAgICByb3dbY29sdW1uLmhlYWRlcl0gPSBjb2x1bW4udW5DaGVja2VkVmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRhYmxlRGF0YTtcclxuICB9XHJcbiAgXHJcbiAgXHJcbiAgXHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGZ4LXNldHRpbmdzLXBhbmVsIFtmeERhdGFdPVwiZnhEYXRhXCIgW3RhYmxlRGF0YV09XCJmeERhdGFcIiAoY29uZmlndXJhdGlvbik9XCJvbkNoYW5nZUNvbmZpZ3VyYXRpb24oJGV2ZW50KVwiPlxyXG4gICAgPGRpdiAqbmdJZj1cImZ4RGF0YVwiPlxyXG4gICAgICAgIDx0YWJsZSBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIGNsYXNzPVwiZm9ybUJ1aWxkZXJfZHluYW1pY190YWJsZVwiPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGVDb25maWcuY29sdW1uc1wiPnt7IGNvbHVtbi5oZWFkZXIgfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3cgb2YgdGFibGVDb25maWcucm93czsgbGV0IHJvd0luZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB0YWJsZUNvbmZpZy5jb2x1bW5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbHVtbi5jZWxsVHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPnt7cm93W2NvbHVtbi5oZWFkZXJdfX08L3NwYW4+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiICpuZ1N3aXRjaENhc2U9XCInaW5wdXQtdGV4dCdcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4/LnBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2x1bW4uaGVhZGVyXVwiIC8+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaW5wdXQtdGV4dCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sdW1uPy5jbGFzc05hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4/LnBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmhlYWRlcl1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiY29sdW1uPy5pc1JlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI21vZGVsPVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbj8uaXNSZXF1aXJlZCAmJiBtb2RlbC5pbnZhbGlkICYmIG1vZGVsLnRvdWNoZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LXNtIG10LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2x1bW4/LmVycm9yTWVzc2FnZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgKm5nU3dpdGNoQ2FzZT1cIidpbnB1dC1udW1iZXInXCIgdHlwZT1cIm51bWJlclwiIFtwbGFjZWhvbGRlcl09XCJjb2x1bW4/LnBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2x1bW4uaGVhZGVyXVwiIC8+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgKm5nU3dpdGNoQ2FzZT1cIidkcm9wZG93bidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5oZWFkZXJdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdJZj1cImNvbHVtbi5wbGFjZWhvbGRlclwiIHZhbHVlPVwiXCI+e3sgY29sdW1uLnBsYWNlaG9sZGVyIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGNvbHVtbj8ub3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24/Lm9wdGlvblZhbHVlXCI+ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uPy5vcHRpb25OYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c2VsZWN0IFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiIHN0eWxlPVwid2lkdGg6IDYwJTtcIiAqbmdTd2l0Y2hDYXNlPVwiJ3NtYXJ0LWRyb3Bkb3duJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmhlYWRlcl1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IHt7Y29sdW1uLmhlYWRlcn19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdJZj1cImNvbHVtbi5wbGFjZWhvbGRlclwiIHZhbHVlPVwiXCI+e3sgY29sdW1uLnBsYWNlaG9sZGVyIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHNtYXJ0RHJvcGRvd25PcHRpb25zW2NvbHVtbi5oZWFkZXJdXCIgW3ZhbHVlXT1cIm9wdGlvbj8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24/Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8cC1tdWx0aVNlbGVjdCBbb3B0aW9uc109XCJzbWFydERyb3Bkb3duT3B0aW9uc1tjb2x1bW4uaGVhZGVyXVwiIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5oZWFkZXJdXCIgb3B0aW9uTGFiZWw9XCJuYW1lXCIgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IENpdGllc1wiICpuZ1N3aXRjaENhc2U9XCInc21hcnQtZHJvcGRvd24nXCIvPiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIHNtYXJ0LWRyb3Bkb3duIGhhbmRsaW5nIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc21hcnQtZHJvcGRvd24nXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUmVndWxhciBkcm9wZG93biBpZiBpc011bHRpc2VsZWN0IGlzIGZhbHNlIG9yIG5vdCBzZXQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCAqbmdJZj1cIiFjb2x1bW4/LmlzTXVsdGlzZWxlY3RcIiBbY2xhc3NdPVwiY29sdW1uPy5jbGFzc05hbWVcIiBzdHlsZT1cIndpZHRoOiA2MCU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5oZWFkZXJdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0lmPVwiY29sdW1uLnBsYWNlaG9sZGVyXCIgdmFsdWU9XCJcIj57eyBjb2x1bW4ucGxhY2Vob2xkZXIgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzbWFydERyb3Bkb3duT3B0aW9uc1tjb2x1bW4uaGVhZGVyXVwiIFt2YWx1ZV09XCJvcHRpb24/LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbj8ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUHJpbWVORyBtdWx0aXNlbGVjdCBpZiBpc011bHRpc2VsZWN0IGlzIHRydWUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgKm5nSWY9XCJjb2x1bW4/LmlzTXVsdGlzZWxlY3RcIiBbb3B0aW9uc109XCJzbWFydERyb3Bkb3duT3B0aW9uc1tjb2x1bW4uaGVhZGVyXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2x1bW4uaGVhZGVyXVwiIFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiIG9wdGlvbkxhYmVsPVwibmFtZVwiIG9wdGlvblZhbHVlPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbHVtbi5wbGFjZWhvbGRlciB8fCAoJ1NlbGVjdCAnICsgY29sdW1uLmhlYWRlcilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkcm9wZG93bmljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGRkX2Rvd25faWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGkgcGktYW5nbGUtZG93biB0ZXh0LXhsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCBbY2xhc3NdPVwiY29sdW1uPy5jbGFzc05hbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrYm94J1wiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmhlYWRlcl1cIiAvPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY2hlY2tib3gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2NsYXNzXT1cImNvbHVtbj8uY2xhc3NOYW1lXCIgY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyb3dbY29sdW1uLmhlYWRlcl0gPT09IGNvbHVtbi5jaGVja2VkVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGVja2JveENoYW5nZSgkZXZlbnQsIHJvdywgY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbj8uY2hlY2tCb3hMYWJlbCB8fCAnJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJyYWRpby17e3Jvd0luZGV4fX1cIiBbY2xhc3NdPVwiY29sdW1uPy5jbGFzc05hbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ3JhZGlvJ1wiIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sdW1uLmhlYWRlcl1cIiAvPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGdhcDogMTBweDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCIncmFkaW8tZ3JvdXAnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29sdW1uLm9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJyYWRpby1ncm91cC17e3Jvd0luZGV4fX1cIiB0eXBlPVwicmFkaW9cIiBbdmFsdWVdPVwib3B0aW9uPy5vcHRpb25OYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbHVtbi5oZWFkZXJdXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uPy5vcHRpb25OYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmaWxlLXVwbG9hZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWVuZCBqdXN0aWZ5LWVuZCByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBmbGV4LXdyYXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGltYWdlIG9mIHVwbG9hZGVkSW1hZ2VzPy5bcm93SW5kZXhdOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDBcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZT8ucmVzdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiVXBsb2FkZWQgSW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvdW5kZWQgc2hhZG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlRmlsZShyb3dJbmRleCwgaSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSB0b3AtMCByaWdodC0wIHRleHQtd2hpdGUgcm91bmRlZC1tZCB3LTUgaC01IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHNoYWRvdy1sZyBob3ZlcjpiZy1yZWQtNjAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4p2MXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImZpbGVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdXBsb2FkRmlsZSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ1cGxvYWRJbWFnZSgkZXZlbnQsIHJvd0luZGV4KVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwbG9hZEZpbGUuY2xpY2soKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMiBiZy1ibHVlLTUwMCB0ZXh0LXdoaXRlIHB4LTMgcHktMSByb3VuZGVkIGhvdmVyOmJnLWJsdWUtNjAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVwbG9hZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ZpbGUtdXBsb2FkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgcmVsYXRpdmUgZ2FwLTQgZmxleC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTIgZmxleC13cmFwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIiAqbmdGb3I9XCJsZXQgaW1hZ2Ugb2YgdXBsb2FkZWRJbWFnZXM/Lltyb3dJbmRleF07IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyB3aWR0aD1cIjEwMFwiIGhlaWdodD1cIjgwXCIgW3NyY109XCJpbWFnZT8ucmVzdWx0XCIgYWx0PVwiVXBsb2FkZWQgSW1hZ2VcIiBjbGFzcz1cInJvdW5kZWQgc2hhZG93IG9yaWVudGF0aW9uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cImRlbGV0ZUZpbGUocm93SW5kZXgsIGkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFic29sdXRlIHRvcC0wIHJpZ2h0LTAgdGV4dC13aGl0ZSByb3VuZGVkLW1kIHctNSBoLTUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfNjgzN18yOTY4MylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgcng9XCI5XCIgZmlsbD1cIiNGM0EwNDFcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWFzayBpZD1cIm1hc2swXzY4MzdfMjk2ODNcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjRcIiB5PVwiNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXNrPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBtYXNrPVwidXJsKCNtYXNrMF82ODM3XzI5NjgzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMjA0NSA4Ljk5ODE1TDUuODE4MDIgNi42MTE2N0w2LjYxMzUxIDUuODE2MTdMOSA4LjIwMjY2TDExLjM4NjUgNS44MTYxN0wxMi4xODIgNi42MTE2N0w5Ljc5NTUgOC45OTgxNUwxMi4xODIgMTEuMzg0NkwxMS4zODY1IDEyLjE4MDFMOSA5Ljc5MzY1TDYuNjEzNTEgMTIuMTgwMUw1LjgxODAyIDExLjM4NDZMOC4yMDQ1IDguOTk4MTVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF82ODM3XzI5NjgzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgcng9XCI5XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiIHR5cGU9XCJmaWxlXCIgbmFtZT1cImZpbGVcIiAjdXBsb2FkRmlsZSBoaWRkZW4gbXVsdGlwbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBsb2FkSW1hZ2UoJGV2ZW50LCByb3dJbmRleClcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJ1cGxvYWRGaWxlLmNsaWNrKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjlcIiBoZWlnaHQ9XCIyOFwiIHZpZXdCb3g9XCIwIDAgMjkgMjhcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTQuMDAxIDMuMDAxOTVDMTEuNTMyMiAzLjAwMTk1IDkuMTY3MjIgMy44Njk1NiA3LjIzNjQxIDUuMzg0MTRMNy4yMzU5OCA0LjU5Njk1QzcuMjM1OTggNC41MjQ3MyA3LjIyMTc1IDQuNDUzMjEgNy4xOTQxMSA0LjM4NjQ4QzcuMTY2NDcgNC4zMTk3NSA3LjEyNTk2IDQuMjU5MTIgNy4wNzQ4OSA0LjIwODA0QzcuMDIzODEgNC4xNTY5NyA2Ljk2MzE4IDQuMTE2NDYgNi44OTY0NSA0LjA4ODgyQzYuODI5NzIgNC4wNjExOCA2Ljc1ODIgNC4wNDY5NSA2LjY4NTk4IDQuMDQ2OTVDNi42MTM3NSA0LjA0Njk1IDYuNTQyMjMgNC4wNjExOCA2LjQ3NTUgNC4wODg4MkM2LjQwODc3IDQuMTE2NDYgNi4zNDgxNCA0LjE1Njk3IDYuMjk3MDcgNC4yMDgwNEM2LjI0NTk5IDQuMjU5MTIgNi4yMDU0OCA0LjMxOTc1IDYuMTc3ODQgNC4zODY0OEM2LjE1MDIgNC40NTMyMSA2LjEzNTk4IDQuNTI0NzMgNi4xMzU5OCA0LjU5Njk1TDYuMTM2NDIgNi42ODY1MkM2LjEzNjQzIDYuODMyMzkgNi4xOTQzOCA2Ljk3MjI4IDYuMjk3NTIgNy4wNzU0MkM2LjQwMDY3IDcuMTc4NTYgNi41NDA1NSA3LjIzNjUxIDYuNjg2NDIgNy4yMzY1Mkg4Ljc3NTk4QzguODQ4MiA3LjIzNjUyIDguOTE5NzIgNy4yMjIzIDguOTg2NDUgNy4xOTQ2NkM5LjA1MzE4IDcuMTY3MDIgOS4xMTM4MSA3LjEyNjUxIDkuMTY0ODkgNy4wNzU0M0M5LjIxNTk2IDcuMDI0MzYgOS4yNTY0NyA2Ljk2MzczIDkuMjg0MTEgNi44OTdDOS4zMTE3NSA2LjgzMDI3IDkuMzI1OTggNi43NTg3NSA5LjMyNTk4IDYuNjg2NTJDOS4zMjU5OCA2LjYxNDMgOS4zMTE3NSA2LjU0Mjc4IDkuMjg0MTEgNi40NzYwNUM5LjI1NjQ3IDYuNDA5MzIgOS4yMTU5NiA2LjM0ODY5IDkuMTY0ODkgNi4yOTc2MUM5LjExMzgxIDYuMjQ2NTQgOS4wNTMxOCA2LjIwNjAzIDguOTg2NDUgNi4xNzgzOUM4LjkxOTcyIDYuMTUwNzUgOC44NDgyIDYuMTM2NTIgOC43NzU5OCA2LjEzNjUySDguMDU4NEM5Ljc3MDIgNC44NDM4NyAxMS44Mzk5IDQuMTAxOTUgMTQuMDAxIDQuMTAxOTVDMTkuNDc1MSA0LjEwMTk1IDIzLjkwMSA4LjUyNzgyIDIzLjkwMSAxNC4wMDJDMjMuOTAxIDE5LjQ3NjEgMTkuNDc1MSAyMy45MDIgMTQuMDAxIDIzLjkwMkM4LjUyNjg0IDIzLjkwMiA0LjEwMDk4IDE5LjQ3NjEgNC4xMDA5OCAxNC4wMDJDNC4xMDA5OCAxMi42MzgxIDQuMzgyNjMgMTEuMjg4OCA0LjkyODU1IDEwLjAzODlDNC45ODY5MSA5LjkwNTMyIDQuOTg5ODIgOS43NTM5OSA0LjkzNjY1IDkuNjE4MjJDNC44ODM0NyA5LjQ4MjQ2IDQuNzc4NTUgOS4zNzMzNiA0LjY0NDk2IDkuMzE0OTJDNC41Nzg3NyA5LjI4NTk2IDQuNTA3NTMgOS4yNzAzMiA0LjQzNTMgOS4yNjg5QzQuMzYzMDYgOS4yNjc0NyA0LjI5MTI2IDkuMjgwMyA0LjIyMzk4IDkuMzA2NjNDNC4xNTY3MSA5LjMzMjk3IDQuMDk1MjggOS4zNzIzIDQuMDQzMjEgOS40MjIzOEMzLjk5MTE0IDkuNDcyNDcgMy45NDk0NCA5LjUzMjMyIDMuOTIwNTEgOS41OTg1MkMzLjMxMzkzIDEwLjk4NzIgMy4wMDA5OCAxMi40ODY2IDMuMDAwOTggMTQuMDAyQzMuMDAwOTggMjAuMDcwNiA3LjkzMjM2IDI1LjAwMiAxNC4wMDEgMjUuMDAyQzIwLjA2OTYgMjUuMDAyIDI1LjAwMSAyMC4wNzA2IDI1LjAwMSAxNC4wMDJDMjUuMDAxIDcuOTMzMzQgMjAuMDY5NiAzLjAwMTk1IDE0LjAwMSAzLjAwMTk1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMy45OTg4IDYuMTM5NjVDOS42NjE2IDYuMTM5NjUgNi4xMzM3OSA5LjY2NzQ2IDYuMTMzNzkgMTQuMDA0NkM2LjEzMzc5IDE4LjM0MTggOS42NjE2IDIxLjg2OTYgMTMuOTk4OCAyMS44Njk2QzE4LjMzNiAyMS44Njk2IDIxLjg2MzggMTguMzQxOCAyMS44NjM4IDE0LjAwNDZDMjEuODYzOCA5LjY2NzQ2IDE4LjMzNiA2LjEzOTY1IDEzLjk5ODggNi4xMzk2NVpNMTMuOTk4OCA4LjIyOTY1QzE0LjE0NDcgOC4yMjk2NSAxNC4yODQ2IDguMjg3NTkgMTQuMzg3NyA4LjM5MDc0QzE0LjQ5MDggOC40OTM4OCAxNC41NDg4IDguNjMzNzggMTQuNTQ4OCA4Ljc3OTY1VjEzLjc3NjlMMTcuNTIyNyAxNi43NTA4QzE3LjYyNTggMTYuODUzOSAxNy42ODM3IDE2Ljk5MzggMTcuNjgzNyAxNy4xMzk2QzE3LjY4MzcgMTcuMjg1NSAxNy42MjU4IDE3LjQyNTQgMTcuNTIyNyAxNy41Mjg1QzE3LjQxOTUgMTcuNjMxNiAxNy4yNzk2IDE3LjY4OTYgMTcuMTMzOCAxNy42ODk2QzE2Ljk4NzkgMTcuNjg5NiAxNi44NDgxIDE3LjYzMTYgMTYuNzQ0OSAxNy41Mjg1TDEzLjYwOTkgMTQuMzkzNUMxMy41MDY4IDE0LjI5MDQgMTMuNDQ4OCAxNC4xNTA1IDEzLjQ0ODggMTQuMDA0NlY4Ljc3OTY1QzEzLjQ0ODggOC42MzM3OCAxMy41MDY3IDguNDkzODggMTMuNjA5OSA4LjM5MDc0QzEzLjcxMyA4LjI4NzU5IDEzLjg1MjkgOC4yMjk2NSAxMy45OTg4IDguMjI5NjVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRjNBMDQxXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjI4LjU2XCIgaGVpZ2h0PVwiMjhcIiByeD1cIjEuNTE0NzlcIiBmaWxsPVwiI0YzQTA0MVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTUuMDY4IDIyLjczOTFWMTcuNjcwOEgxOC40OTY4TDE0LjIxMDggMTIuNjAyNUw5LjkyNDggMTcuNjcwOEgxMy4zNTM2VjIyLjczOTFIOS4wNjc1OVYyMi42OTY5QzguOTIzNTggMjIuNzA1MyA4Ljc4NjQzIDIyLjczOTEgOC42Mzg5OSAyMi43MzkxQzYuOTMzOTEgMjIuNzM5MSA1LjI5ODY2IDIyLjA3MTcgNC4wOTI5OCAyMC44ODM1QzIuODg3MyAxOS42OTU0IDIuMjA5OTYgMTguMDg0IDIuMjA5OTYgMTYuNDAzN0MyLjIwOTk2IDEzLjE1MzIgNC43MDQ0MyAxMC41MDQyIDcuOTA1MjMgMTAuMTQxQzguMTg1ODUgOC42OTUzIDguOTY4OTIgNy4zOTExOCAxMC4xMTk3IDYuNDUyOTJDMTEuMjcwNiA1LjUxNDY1IDEyLjcxNzIgNS4wMDA4OSAxNC4yMTA4IDVDMTUuNzA0NyA1LjAwMDgyIDE3LjE1MTUgNS41MTQ1MiAxOC4zMDI2IDYuNDUyNzdDMTkuNDUzNyA3LjM5MTAxIDIwLjIzNzEgOC42OTUxNiAyMC41MTgxIDEwLjE0MUMyMy43MTg5IDEwLjUwNDIgMjYuMjEgMTMuMTUzMiAyNi4yMSAxNi40MDM3QzI2LjIxIDE4LjA4NCAyNS41MzI2IDE5LjY5NTQgMjQuMzI2OSAyMC44ODM1QzIzLjEyMTMgMjIuMDcxNyAyMS40ODYgMjIuNzM5MSAxOS43ODA5IDIyLjczOTFDMTkuNjM2OSAyMi43MzkxIDE5LjQ5ODEgMjIuNzA1MyAxOS4zNTIzIDIyLjY5NjlWMjIuNzM5MUgxNS4wNjhaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInVwbG9hZEZpbGUuY2xpY2soKVwiIGNsYXNzPVwidGV4dC1iYXNlIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdVcGxvYWQnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGV4dGFyZWEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIFtjbGFzc109XCJjb2x1bW4/LmNsYXNzTmFtZVwiIG5hbWU9XCJcIiBpZD1cIlwiIGNvbHM9XCIzMFwiIHJvd3M9XCIyXCIgW3BsYWNlaG9sZGVyXT1cImNvbHVtbj8ucGxhY2Vob2xkZXJcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuPC9meC1zZXR0aW5ncy1wYW5lbD4iXX0=
@@ -616,7 +616,7 @@ class DynamicTableComponent extends FxBaseComponent {
616
616
  initializeCheckboxDefaults(tableData) {
617
617
  tableData.rows.forEach((row) => {
618
618
  tableData.columns.forEach((column) => {
619
- if (column.cellType === 'checkbox' && column.unCheckedValue) {
619
+ if (column.cellType === 'checkbox' && column.unCheckedValue && !row[column.header]) {
620
620
  row[column.header] = column.unCheckedValue;
621
621
  }
622
622
  });