@rangertechnologies/ngnxt 2.1.231 → 2.1.233

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.
@@ -349,6 +349,7 @@ export class PropertiesComponent {
349
349
  Label: this.createElementConfig(),
350
350
  Boolean: this.createElementConfig(),
351
351
  File: this.createElementConfig(),
352
+ Icon: this.createElementConfig(), //MSM10JUL25 icon selector element
352
353
  };
353
354
  constructor(http, formBuilderService, templateService) {
354
355
  this.http = http;
@@ -1017,4 +1018,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1017
1018
  type: HostListener,
1018
1019
  args: ['document:click', ['$event']]
1019
1020
  }] } });
1020
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvcGFnZXMvYnVpbGRlci9wcm9wZXJ0aWVzL3Byb3BlcnRpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL3BhZ2VzL2J1aWxkZXIvcHJvcGVydGllcy9wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkksT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUMsQ0FBQSx3QkFBd0I7QUFHNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDbkYscUZBQXFGO0FBQ3JGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBc0IsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7OztBQVFwSyxNQUFNLE9BQU8sbUJBQW1CO0lBK1hWO0lBQTBCO0lBQStDO0lBOVg3RixPQUFPLENBQU07SUFDYixJQUFJLENBQVM7SUFDYixPQUFPLENBQU07SUFFYixtQkFBbUIsQ0FBQyxNQUErRjtRQUNqSCxPQUFPO1lBQ0wsWUFBWSxFQUFFLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFF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Q0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ2hHLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQzt3R0Fua0NVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLG9iQ3JCaEMsOHYrQkE0aEJNLDQyTkQzZ0JNLFlBQVksNlZBQUUsV0FBVyxxZ0RBQUUscUJBQXFCLHN6QkFBRSxZQUFZOzs0RkFJN0QsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxDQUFDOzhJQWlCL0QsaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFHRSxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBeUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFb0MsUUFBUTtzQkFBakQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQW0rQnhDLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFQIDIySkFOMjVcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS1idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3JvcHBlclBvc2l0aW9uLCBEaW1lbnNpb25zLCBJbWFnZVRyYW5zZm9ybSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvaW1hZ2UtY3JvcHBlci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnOy8vQVAtMjhNQVIyNSBpbXBvcnQgdXVpZFxuLy8gQVAtMTFBUFIyNSBpbXBvcnQgdGVtcGxhdGUgc2VydmljZVxuaW1wb3J0IHsgVGVtcGxhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdGVtcGxhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbWFnZUNyb3BwZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vLi4vY29tcG9uZW50cy9pbWFnZS1jcm9wcGVyL2NvbXBvbmVudC9pbWFnZS1jcm9wcGVyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgTnh0U2VhcmNoQm94IH0gZnJvbSBcIi4uLy4uLy4uL2NvbXBvbmVudHMvc2VhcmNoLWJveC9zZWFyY2gtYm94LmNvbXBvbmVudFwiO1xuLy9BUC0yNUpVTjI1LUltcG9ydGluZyBjb21tb24gY29uc3RhbnRzIGZvciBlbGVtZW50LCBmaWVsZCwgYW5kIGFwcGVhcmFuY2UgcHJvcGVydGllc1xuaW1wb3J0IHsgQ09NTU9OX0VMRU1FTlRfUFJPUFMsIENPTU1PTl9PUFRJT05TX0ZJRUxELCBDT01NT05fRklFTERfUFJPUFMsIENPTU1PTl9BUFBFQVJBTkNFX1BST1BTLCBDT01NT05fQ09MVU1OX0ZJRUxEfSBmcm9tICcuLi9wcm9wZXJ0aWVzL2NvbW1vbi1maWVsZHMuY29uc3RhbnRzJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wcm9wZXJ0aWVzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIEltYWdlQ3JvcHBlckNvbXBvbmVudCwgTnh0U2VhcmNoQm94XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9wZXJ0aWVzLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0aWVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZWxlbWVudDogYW55O1xuICBmcm9tOiBzdHJpbmc7XG4gIGNvbHVtbnM6IGFueTtcblxuICBjcmVhdGVFbGVtZW50Q29uZmlnKGNvbmZpZz86IHsgY3VzdG9tRWxlbWVudFByb3BzPzogYW55W10sIGN1c3RvbUZpZWxkUHJvcHM/OiBhbnlbXSwgY3VzdG9tQXBwZWFyYW5jZVByb3BzPzogYW55W119KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVsZW1lbnRQcm9wczogWy4uLkNPTU1PTl9FTEVNRU5UX1BST1BTLCAuLi4oY29uZmlnPy5jdXN0b21FbGVtZW50UHJvcHMgfHwgW10pXSxcbiAgICAgIGZpZWxkUHJvcHM6IFsuLi5DT01NT05fRklFTERfUFJPUFMsIC4uLihjb25maWc/LmN1c3RvbUZpZWxkUHJvcHMgfHwgW10pXSxcbiAgICAgIGFwcGVhcmFuY2U6IFsuLi5DT01NT05fQVBQRUFSQU5DRV9QUk9QUywgLi4uKGNvbmZpZz8uY3VzdG9tQXBwZWFyYW5jZVByb3BzIHx8IFtdKV1cbiAgICB9O1xuICB9XG5cbiAgQE91dHB1dCgpIGZvcm1CdXR0b25IYW5kbGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSB0ZW1wbGF0ZVNhdmVIYW5kbGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHNlbGVjdGVkT3B0aW9uOiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWRFbGVtZW50SW5kZXg6IG51bWJlciA9IC0xO1xuICBASW5wdXQoKSBzZWxlY3RlZEVsZW1lbnRUeXBlOiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWRBbGlnbjogc3RyaW5nID0gJ2FsaWduLWxlZnQnOyAgLy8gQWRkIHRoaXMgcHJvcGVydHlcbiAgc2VsZWN0ZWRTdHlsZXM6IHN0cmluZ1tdID0gW107ICAvLyBVc2luZyBhcnJheSBzaW5jZSBtdWx0aXBsZSBzdHlsZXMgY2FuIGJlIHNlbGVjdGVkXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIHNlbGVjdGVkRWxlbWVudDogYW55ID0gbnVsbDsgIC8vIFJlY2VpdmUgdGhlIHNlbGVjdGVkIGVsZW1lbnRcbiAgaGVhZGVyU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG4gIGJvb2tJZDogYW55O1xuICBib29rOiBhbnk7XG4gIGFjdGl2ZVRhYjogc3RyaW5nID0gJ2F0dHJpYnV0ZXMnO1xuICBzZWxlY3RDb2x1bW46IGFueVxuICB0cmFuc2Zvcm06IEltYWdlVHJhbnNmb3JtID0ge1xuICAgIHRyYW5zbGF0ZVVuaXQ6ICdweCcsXG4gICAgc2NhbGU6IDEsXG4gICAgcm90YXRlOiAwLFxuICAgIGZsaXBIOiBmYWxzZSxcbiAgICBmbGlwVjogZmFsc2UsXG4gICAgdHJhbnNsYXRlSDogMCxcbiAgICB0cmFuc2xhdGVWOiAwXG4gIH07XG4gIGNhbnZhc1JvdGF0aW9uID0gMDtcbiAgY3JvcHBlcj86IENyb3BwZXJQb3NpdGlvbjtcbiAgbG9hZGluZyA9IGZhbHNlO1xuICBjcm9wcGVyTWF4SGVpZ2h0ID0gMDtcbiAgY3JvcHBlck1heFdpZHRoID0gMDtcbiAgY3JvcHBlck1pbkhlaWdodCA9IDA7XG4gIGNyb3BwZXJNaW5XaWR0aCA9IDA7XG4gIGNyb3BwZXJTdGF0aWNXaWR0aCA9IDA7XG4gIGNyb3BwZXJTdGF0aWNIZWlnaHQgPSAwO1xuICBhc3BlY3RSYXRpbyA9IDQgLyAzO1xuICByb3VuZENyb3BwZXIgPSBmYWxzZTtcbiAgaW1hZ2VDaGFuZ2VkRXZlbnQ6IEV2ZW50IHwgbnVsbCA9IG51bGw7XG4gIGFsaWduSW1hZ2UgPSAnY2VudGVyJyBhcyBjb25zdDtcbiAgLy8gIFwiZW5kcG9pbnRcIjogXCJodHRwczovL2Rldi1hcGkudmFsYXJoci5jb20vbnh0XCIsXG4gIC8vIFNLUzI4TUFSMjUgZGVmYXVsdCBib29rIHNlYXJjaCBlbmRwb2ludFxuICBib29rU3VidGV4dCA9IHtcbiAgICBcImVuZHBvaW50XCI6IFwiaHR0cHM6Ly9kZXYtYXBpLnZhbGFyaHIuY29tL254dFwiLFxuICAgIFwidmFyaWFibGVcIjogbnVsbCxcbiAgICBcImZpZWxkXCI6IFsnbGFiZWwnLCAnbmFtZSddLFxuICAgIFwiZGVmYXVsdEZpZWxkXCI6IFwibGFiZWxcIlxuICB9XG4gIGlzTGlua0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuICBASW5wdXQoKSB0ZW1wbGF0ZVNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnZHJvcGRvd24nLCB7IHN0YXRpYzogZmFsc2UgfSkgZHJvcGRvd24hOiBFbGVtZW50UmVmO1xuXG5cbiAgZHJhZ2dlZElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgZm9ybUVsZW1lbnRzOiBhbnlbXSA9IFtdO1xuIFxuICB1bmlxdWVfaWQ6IHN0cmluZyA9ICdib29rLTEyMzQnOyAvLyBzaG91bGQgYmUgY29uc2lzdGVudFxuICBzZWxlY3RlZFRlbXBsYXRlOiBhbnk7XG5cbiAgZWxlbWVudFByb3BlcnRpZXMgPSB7XG4gICAgLy8gQVAtMTBNQVIyNSAtIERlZmluZXMgdGhlIEhlYWRlciBlbGVtZW50IHdpdGggYSB0ZXh0IGlucHV0IGZpZWxkICAgXG4gICAgLy8gQVAtMjVNQVIyNSBBZGQgc3VidGV4dCBhbGwgdmFyaWFibGVzXG4gICAgJ0hlYWRlcic6IHtcbiAgICAgIGVsZW1lbnRQcm9wczogW1xuICAgICAgICB7IGxhYmVsOiAnTGFiZWwnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQnLCB0eXBlOiAndGV4dCcsIGtleTogJ3RpdGxlJyB9XVxuICAgIH0sXG4gICAgLy8gQVAtMTlNQVIyNSBBZGQgTGluZSBQcm9wZXJ0eVxuICAgICdMaW5lJzoge1xuICAgICAgZWxlbWVudFByb3BzOiBbXG4gICAgICAgIHsgbGFiZWw6ICdMaW5lIFdpZHRoJywgdHlwZTogJ2ZpZWxkU2l6ZScsIGtleTogJ3NpemUnIH0sXG4gICAgICAgIHsgbGFiZWw6ICdQYWRkaW5nIFRvcCcsIHR5cGU6ICdudW1iZXInLCBrZXk6ICdwYWRkaW5nVG9wJywgcGxhY2Vob2xkZXI6ICdFbnRlciBwYWRkaW5nIHRvcCcgfSxcbiAgICAgICAgeyBsYWJlbDogJ1BhZGRpbmcgQm90dG9tJywgdHlwZTogJ251bWJlcicsIGtleTogJ3BhZGRpbmdCb3R0b20nLCBwbGFjZWhvbGRlcjogJ0VudGVyIHBhZGRpbmcgYm90dG9tJyB9LFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdMaW5lIFN0eWxlJywgdHlwZTogJ3NlbGVjdCcsIGtleTogJ2xpbmVTdHlsZScsXG4gICAgICAgICAgb3B0aW9uczogWydTb2xpZCcsICdEYXNoZWQnLCAnRG90dGVkJ11cbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGZpZWxkUHJvcHM6IFtdXG4gICAgfSxcblxuICAgICdTcGFjZSc6IHtcbiAgICAgIGVsZW1lbnRQcm9wczogW1xuICAgICAgICB7IGxhYmVsOiAnRWxlbWVudCcsIHR5cGU6ICdudW1iZXInLCBrZXk6ICdxdWVzdGlvbk51bWJlcicgfSxcbiAgICAgICAgeyBsYWJlbDogJ0ZpZWxkIFNpemUnLCB0eXBlOiAnZmllbGRTaXplJywga2V5OiAnc2l6ZScgfSxcbiAgICAgIF0sXG4gICAgICBmaWVsZFByb3BzOiBbXVxuICAgIH0sXG5cbiAgICBcIlRhYmxlXCI6IHtcbiAgICAgIFwiZWxlbWVudFByb3BzXCI6IFtcbiAgICAgICAge2xhYmVsOiAnSXMgTGFiZWwnLCBwbGFjZWhvbGRlcjogJ0VudGVyIFRleHQgJywgdHlwZTogJ2NoZWNrYm94Jywga2V5OiAnc3R5bGUuc2hvd0xhYmVsJyB9LFxuICAgICAgICB7IGtleTogJ3ByaW1hcnlLZXknIH0sXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcInRhYmxlTmFtZVwiLCBcInBsYWNlaG9sZGVyXCI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwia2V5XCI6IFwicXVlc3Rpb25UZXh0XCIgfSxcbiAgICAgICAgeyBcImxhYmVsXCI6IFwiaW5wdXRUZXh0QWxpZ25tZW50XCIsIFwicGxhY2Vob2xkZXJcIjogXCJMZWZ0XCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJpbnB1dFRleHRBbGlnbm1lbnRcIiB9LFxuICAgICAgICB7IFwibGFiZWxcIjogXCJ0YWJsZVNjYWxlU2l6ZVwiLCBcInBsYWNlaG9sZGVyXCI6IFwiMDYgLSBGdWxsIFNjYWxlXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJ0YWJsZVNjYWxlU2l6ZVwiIH0sXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcImlzTm9zSW5kaWNhdG9yXCIsIFwicGxhY2Vob2xkZXJcIjogXCIwNiAtIEZ1bGwgU2NhbGVcIiwgXCJ0eXBlXCI6IFwiY2hlY2tib3hcIiwgXCJrZXlcIjogXCJ0YWJsZUNvbmZpZy5pc05vc0luZGljYXRvclwiIH0sXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcImlzUGFnaW5hdGlvblwiLCBcInBsYWNlaG9sZGVyXCI6IFwiMDYgLSBGdWxsIFNjYWxlXCIsIFwidHlwZVwiOiBcImNoZWNrYm94XCIsIFwia2V5XCI6IFwidGFibGVDb25maWcuaXNQYWdpbmF0aW9uXCIgfSxcbiAgICAgICAgeyBcImxhYmVsXCI6IFwiYWRkSW5saW5lUmVjb3JkXCIsIFwicGxhY2Vob2xkZXJcIjogXCIwNiAtIEZ1bGwgU2NhbGVcIiwgXCJ0eXBlXCI6IFwiY2hlY2tib3hcIiwgXCJrZXlcIjogXCJ0YWJsZUNvbmZpZy5hZGRJbmxpbmVSZWNvcmRcIiB9LFxuICAgICAgICB7IFwibGFiZWxcIjogXCJhY3Rpb25CdXR0b25cIiwgXCJwbGFjZWhvbGRlclwiOiBcIjA2IC0gRnVsbCBTY2FsZVwiLCBcInR5cGVcIjogXCJjaGVja2JveFwiLCBcImtleVwiOiBcInRhYmxlQ29uZmlnLmFjdGlvbkJ1dHRvblwiIH0sXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcInNlYXJjaEJhclwiLCBcInBsYWNlaG9sZGVyXCI6IFwiMDYgLSBGdWxsIFNjYWxlXCIsIFwidHlwZVwiOiBcImNoZWNrYm94XCIsIFwia2V5XCI6IFwidGFibGVDb25maWcuc2VhcmNoQmFyXCIgfSxcbiAgICAgICAgeyBcImxhYmVsXCI6IFwiaXNEZWxldGVSb3dcIiwgXCJwbGFjZWhvbGRlclwiOiBcIjA2IC0gRnVsbCBTY2FsZVwiLCBcInR5cGVcIjogXCJjaGVja2JveFwiLCBcImtleVwiOiBcInRhYmxlQ29uZmlnLmlzRGVsZXRlUm93XCIgfSxcbiAgICAgICAgeyBcImxhYmVsXCI6IFwiaXNFZGl0Um93XCIsIFwicGxhY2Vob2xkZXJcIjogXCIwNiAtIEZ1bGwgU2NhbGVcIiwgXCJ0eXBlXCI6IFwiY2hlY2tib3hcIiwgXCJrZXlcIjogXCJ0YWJsZUNvbmZpZy5pc0VkaXRSb3dcIiB9LFxuICAgICAgICB7IFwibGFiZWxcIjogXCJpc0J1dHRvbnNcIiwgXCJwbGFjZWhvbGRlclwiOiBcIjA2IC0gRnVsbCBTY2FsZVwiLCBcInR5cGVcIjogXCJjaGVja2JveFwiLCBcImtleVwiOiBcInRhYmxlQ29uZmlnLmlzQnV0dG9uc1wiIH0sXG5cblxuICAgICAgICB7IFwibGFiZWxcIjogXCJyb3dDaG9pY2VcIiwgXCJwbGFjZWhvbGRlclwiOiBcIlwiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwia2V5XCI6IFwicm93Q2hvaWNlXCIgfSxcbiAgICAgICAgeyBsYWJlbDogJ3F1ZXN0aW9uTnVtYmVyJywgdHlwZTogJ251bWJlcicsIGtleTogJ3F1ZXN0aW9uTnVtYmVyJyB9LFxuICAgICAgICB7IGxhYmVsOiAnRmllbGQgU2l6ZScsIHR5cGU6ICdmaWVsZFNpemUnLCBrZXk6ICdzaXplJyB9LFxuICAgICAgXSxcbiAgICAgIFwiZmllbGRQcm9wc1wiOiBbXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcInRhYmxlSWRcIiwgXCJwbGFjZWhvbGRlclwiOiBcIkVtcF9UYWJsZV8wMVwiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwia2V5XCI6IFwidGFibGVJZFwiIH0sXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcImhlbHBUZXh0XCIsIFwicGxhY2Vob2xkZXJcIjogXCJFbnRlciBtZXNzYWdlXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJoZWxwVGV4dFwiIH0sXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcImRlZmF1bHRWYWx1ZVwiLCBcInBsYWNlaG9sZGVyXCI6IFwiRGVmYXVsdCBWYWx1ZVwiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwia2V5XCI6IFwiZGVmYXVsdFZhbHVlXCIgfSxcbiAgICAgICAgeyBsYWJlbDogJ1JlZmVyZW5jZScsIHBsYWNlaG9sZGVyOiAnUmVmZXJlbmNlIEZpZWxkJywgdHlwZTogJ3RleHQnLCBrZXk6ICdyZWZlcmVuY2VGaWVsZCcgfSxcbiAgICAgICAge1xuICAgICAgICAgIFwibGFiZWxcIjogXCJcIiwgXCJwbGFjZWhvbGRlclwiOiBcIkVudGVyIFRleHRcIiwgXCJ0eXBlXCI6IFwic3ViUXVlc3Rpb25cIiwgXCJrZXlcIjogXCJpc1N1YlRleHRcIixcbiAgICAgICAgICBcInN1YlF1ZXN0aW9uXCI6IFtcbiAgICAgICAgICAgIHsgXCJsYWJlbFwiOiBcIkVuZCBQb2ludFwiLCBcInBsYWNlaG9sZGVyXCI6IFwiZW5kcG9pbnRcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcInN1YlRleHQuZW5kcG9pbnRcIiB9LFxuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwiVmFyaWFibGVcIiwgXCJwbGFjZWhvbGRlclwiOiBcInZhcmlhYmxlXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJzdWJUZXh0LnZhcmlhYmxlXCIgfSxcbiAgICAgICAgICAgIHsgXCJsYWJlbFwiOiBcIkZpZWxkXCIsIFwicGxhY2Vob2xkZXJcIjogXCJmaWVsZFwiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwia2V5XCI6IFwic3ViVGV4dC5maWVsZFwiIH0sXG5cbiAgICAgICAgICAgIHsgXCJsYWJlbFwiOiBcIkRlZmF1bHQgRmllbGRcIiwgXCJwbGFjZWhvbGRlclwiOiBcImRlZmF1bHRGaWVsZFwiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwia2V5XCI6IFwic3ViVGV4dC5kZWZhdWx0RmllbGRcIiB9LFxuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwiTGFiZWwgRmllbGRcIiwgXCJwbGFjZWhvbGRlclwiOiBcImxhYmVsRmllbGRcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcInN1YlRleHQubGFiZWxGaWVsZFwiIH0sXG4gICAgICAgICAgICB7IFwibGFiZWxcIjogXCJWYWx1ZSBGaWVsZFwiLCBcInBsYWNlaG9sZGVyXCI6IFwidmFsdWVGaWVsZFwiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwia2V5XCI6IFwic3ViVGV4dC52YWx1ZUZpZWxkXCIgfSxcbiAgICAgICAgICAgIHsgXCJsYWJlbFwiOiBcIlNvdXJjZSBRdWVzdGlvbiBJZFwiLCBcInBsYWNlaG9sZGVyXCI6IFwic291cmNlUXVlc3Rpb25JZFwiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwia2V5XCI6IFwic3ViVGV4dC5zb3VyY2VRdWVzdGlvbklkXCIgfSxcbiAgICAgICAgICAgIHsgXCJsYWJlbFwiOiBcIkRlcGVuZGVudCBWYWx1ZVwiLCBcInBsYWNlaG9sZGVyXCI6IFwiZGVwZW5kZW50VmFsdWVcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcInN1YlRleHQuZGVwZW5kZW50VmFsdWVcIiB9LFxuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwiRGVwZW5kZW50IEZpZWxkXCIsIFwicGxhY2Vob2xkZXJcIjogXCJpc0RlcGVuZGVudEZpZWxkXCIsIFwidHlwZVwiOiBcImJvb2xlYW5cIiwgXCJrZXlcIjogXCJzdWJUZXh0LmlzRGVwZW5kZW50RmllbGRcIiB9LFxuXG4gICAgICAgICAgICB7IFwibGFiZWxcIjogXCJRdWVyeSBGaWVsZFwiLCBcInBsYWNlaG9sZGVyXCI6IFwicXVlcnlGaWVsZFwiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwia2V5XCI6IFwic3ViVGV4dC5xdWVyeUZpZWxkXCIgfSxcbiAgICAgICAgICAgIHsgXCJsYWJlbFwiOiBcIlF1ZXJ5IFZhbHVlXCIsIFwicGxhY2Vob2xkZXJcIjogXCJxdWVyeVZhbHVlXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJzdWJUZXh0LnF1ZXJ5VmFsdWVcIiB9LFxuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwiUXVlcnkgVmFsdWUgUmVmXCIsIFwicGxhY2Vob2xkZXJcIjogXCJxdWVyeVZhbHVlUmVmXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJzdWJUZXh0LnF1ZXJ5VmFsdWVSZWZlcmVuY2VcIiB9LFxuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwiVW5pcXVlIEtleVwiLCBcInBsYWNlaG9sZGVyXCI6IFwidW5pcXVlS2V5XCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJzdWJUZXh0LnVuaXF1ZUtleVwiIH0sXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIFwiYXBwZWFyYW5jZVwiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdTZWxlY3QgRm9udCcsIHR5cGU6ICdzZWxlY3QnLCBrZXk6ICdmb250JywgcGxhY2Vob2xkZXI6ICdMZWZ0JywgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBvcHRpb25zOiBbJ0hlbHZldGljYSBOZXVlJywgJ0FyaWFsJywgJ1RpbWVzIE5ldyBSb21hbicsICdSb2JvdG8nXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ0ZvbnQgQ29sb3InLCB0eXBlOiAnY29sb3InLCBrZXk6ICdmb250Q29sb3InLCBkZWZhdWx0VmFsdWU6ICcnLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnRm9udCBTaXplJywgdHlwZTogJ3NlbGVjdCcsIGtleTogJ2ZvbnRTaXplJywgZGVmYXVsdFZhbHVlOiAnJywgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdTbWFsbCcsIHZhbHVlOiAnMTJweCcgfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ01lZGl1bScsIHZhbHVlOiAnMTRweCcgfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ0xhcmdlJywgdmFsdWU6ICcxNnB4JyB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdGb250IFdpZHRoJywgdHlwZTogJ3NlbGVjdCcsIGtleTogJ2ZvbnRXZWlnaHQnLCBkZWZhdWx0VmFsdWU6ICcnLCByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJzQwMCcsIGxhYmVsOiAnNDAwLU5vcm1hbCcgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJzUwMCcsIGxhYmVsOiAnNTAwLU1lZGl1bScgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJzYwMCcsIGxhYmVsOiAnNjAwLVNlbWkgQm9sZCcgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJzcwMCcsIGxhYmVsOiAnNzAwLUJvbGQnIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdEdXBsaWNhdGUgRmllbGQnLCB0eXBlOiAnYnV0dG9uLXRvZ2dsZScsIGtleTogJ2R1cGxpY2F0ZUZpZWxkJywgZGVmYXVsdFZhbHVlOiBmYWxzZSB9XG4gICAgICAgIF1cbiAgICB9LFxuICAgIFwiVGFibGVDb2x1bW5cIjoge1xuICAgICAgXCJlbGVtZW50UHJvcHNcIjogW1xuXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcImhlYWRlckxhYmVsc1wiLCBcInBsYWNlaG9sZGVyXCI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwidGFyZ2V0QXJyYXlcIjogXCJmaWVsZHNNZXRhXCIsIFwidGFyZ2V0QXJyYXlLZXlcIjogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIFwia2V5XCI6IFwibGFiZWxcIiB9LFxuICAgICAgICB7IFwibGFiZWxcIjogXCJhcGlOYW1lXCIsIFwicGxhY2Vob2xkZXJcIjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJ0YXJnZXRBcnJheVwiOiBcImZpZWxkc01ldGFcIiwgXCJ0YXJnZXRBcnJheUtleVwiOiBcInVuaXF1ZUlkZW50aWZpZXJcIiwgXCJrZXlcIjogXCJhcGlOYW1lXCIgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgXCJsYWJlbFwiOiBcIlN1bW1hcnkgQ29sdW1uXCIsIFwicGxhY2Vob2xkZXJcIjogXCJTdW1tYXJ5IENvbHVtblwiLCBcInR5cGVcIjogXCJzdWJRdWVzdGlvblwiLCBcInRhcmdldEFycmF5XCI6IFwiZmllbGRzTWV0YVwiLCBcInRhcmdldEFycmF5S2V5XCI6IFwidW5pcXVlSWRlbnRpZmllclwiLCBcImtleVwiOiBcInN1bW1hcnlDb2x1bW5cIixcbiAgICAgICAgICBcInN1YlF1ZXN0aW9uXCI6IFtcbiAgICAgICAgICAgIHsgXCJsYWJlbFwiOiBcIlR5cGVcIiwgXCJwbGFjZWhvbGRlclwiOiBcIkVtcGxveWVlIERldGFpbHNcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcInRhcmdldEFycmF5XCI6IFwiZmllbGRzTWV0YVwiLCBcInRhcmdldEFycmF5S2V5XCI6IFwidW5pcXVlSWRlbnRpZmllclwiLCBcImtleVwiOiBcImZsZFR5cGVcIiB9LFxuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwiT3BlcmF0aW9uXCIsIFwicGxhY2Vob2xkZXJcIjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJ0YXJnZXRBcnJheVwiOiBcImZpZWxkc01ldGFcIiwgXCJ0YXJnZXRBcnJheUtleVwiOiBcInVuaXF1ZUlkZW50aWZpZXJcIiwgXCJrZXlcIjogXCJvcGVyYXRpb25cIiB9LFxuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwiT3BlcmFuZHNcIiwgXCJwbGFjZWhvbGRlclwiOiBcIkVtcGxveWVlIERldGFpbHNcIiwgXCJ0eXBlXCI6IFwiYXJyYXlcIiwgXCJ0YXJnZXRBcnJheVwiOiBcImZpZWxkc01ldGFcIiwgXCJ0YXJnZXRBcnJheUtleVwiOiBcInVuaXF1ZUlkZW50aWZpZXJcIiwgXCJrZXlcIjogXCJvcGVyYW5kc1wiIH0sXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCJsYWJlbFwiOiBcIlN1bW1hcnkgUm93XCIsIFwicGxhY2Vob2xkZXJcIjogXCJTdW1tYXJ5IFJvd1wiLCBcInR5cGVcIjogXCJzdWJRdWVzdGlvblwiLCBcInRhcmdldEFycmF5XCI6IFwiZmllbGRzTWV0YVwiLCBcInRhcmdldEFycmF5S2V5XCI6IFwidW5pcXVlSWRlbnRpZmllclwiLCBcImtleVwiOiBcInN1bW1hcnlSb3dcIiwgXCJzdWJRdWVzdGlvblwiOiBbXG4gICAgICAgICAgICB7IFwibGFiZWxcIjogXCJUeXBlXCIsIFwicGxhY2Vob2xkZXJcIjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJ0YXJnZXRBcnJheVwiOiBcImZpZWxkc01ldGFcIiwgXCJ0YXJnZXRBcnJheUtleVwiOiBcInVuaXF1ZUlkZW50aWZpZXJcIiwgXCJrZXlcIjogXCJmbGRUeXBlXCIgfSxcbiAgICAgICAgICAgIHsgXCJsYWJlbFwiOiBcIm9wZXJhdGlvblwiLCBcInBsYWNlaG9sZGVyXCI6IFwib3BlcmF0aW9uXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJ0YXJnZXRBcnJheVwiOiBcImZpZWxkc01ldGFcIiwgXCJ0YXJnZXRBcnJheUtleVwiOiBcInVuaXF1ZUlkZW50aWZpZXJcIiwgXCJrZXlcIjogXCJvcGVyYXRpb25cIiB9LFxuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwiY29sdW1uXCIsIFwicGxhY2Vob2xkZXJcIjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIFwidHlwZVwiOiBcInJhZGlvXCIsIFwidGFyZ2V0QXJyYXlcIjogXCJmaWVsZHNNZXRhXCIsIFwidGFyZ2V0QXJyYXlLZXlcIjogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIFwia2V5XCI6IFwiY29sdW1uXCIgfSxcbiAgICAgICAgICAgIHsgXCJsYWJlbFwiOiBcIm9wZXJhbmRzXCIsIFwicGxhY2Vob2xkZXJcIjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIFwidHlwZVwiOiBcImFycmF5XCIsIFwidGFyZ2V0QXJyYXlcIjogXCJmaWVsZHNNZXRhXCIsIFwidGFyZ2V0QXJyYXlLZXlcIjogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIFwia2V5XCI6IFwib3BlcmFuZHNcIiB9LFxuICAgICAgICAgIF1cbiAgICAgICAgfSxcblxuICAgICAgICB7IFwibGFiZWxcIjogXCJpbnB1dFRleHRBbGlnbm1lbnRcIiwgXCJwbGFjZWhvbGRlclwiOiBcIkxlZnRcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcImlucHV0VGV4dEFsaWdubWVudFwiIH0sXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcInRhYmxlU2NhbGVTaXplXCIsIFwicGxhY2Vob2xkZXJcIjogXCIwNiAtIEZ1bGwgU2NhbGVcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcInRhYmxlU2NhbGVTaXplXCIgfSxcbiAgICAgICAgeyBcImxhYmVsXCI6IFwicm93Q2hvaWNlXCIsIFwicGxhY2Vob2xkZXJcIjogXCJcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcInJvd0Nob2ljZVwiIH0sXG4gICAgICBdLFxuICAgICAgXCJmaWVsZFByb3BzXCI6IFtcbiAgICAgICAgeyBcImxhYmVsXCI6IFwidGFibGVJZFwiLCBcInBsYWNlaG9sZGVyXCI6IFwiRW1wX1RhYmxlXzAxXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJ0YWJsZUlkXCIgfSxcbiAgICAgICAgeyBcImxhYmVsXCI6IFwiaW5wdXRUZXh0QWxpZ25tZW50XCIsIFwicGxhY2Vob2xkZXJcIjogXCJMZWZ0XCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJpbnB1dFRleHRBbGlnbm1lbnRcIiB9LFxuICAgICAgICB7IFwibGFiZWxcIjogXCJoZWxwVGV4dFwiLCBcInBsYWNlaG9sZGVyXCI6IFwiRW50ZXIgaGVscCBtZXNzYWdlIGhlcmVcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcImhlbHBUZXh0XCIgfSxcbiAgICAgICAgeyBcImxhYmVsXCI6IFwiZGVmYXVsdFZhbHVlXCIsIFwicGxhY2Vob2xkZXJcIjogXCJEZWZhdWx0IFZhbHVlXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJkZWZhdWx0VmFsdWVcIiB9LFxuICAgICAgICB7IFwibGFiZWxcIjogXCJyZWZlcmVuY2VBbmNob3JcIiwgXCJwbGFjZWhvbGRlclwiOiBcImh0dHA6Ly9zb3VyY2UvcmFuZ2Vybnh0X2Jpb19kYXRhLzc0L2QuZG9jXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJyZWZlcmVuY2VBbmNob3JcIiB9LFxuICAgICAgXSxcbiAgICAgIFwiYXBwZWFyYW5jZVwiOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ1NlbGVjdCBGb250JywgdHlwZTogJ3NlbGVjdCcsIGtleTogJ2ZvbnQnLCBwbGFjZWhvbGRlcjogJ0xlZnQnLCByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICBvcHRpb25zOiBbJ0hlbHZldGljYSBOZXVlJywgJ0FyaWFsJywgJ1RpbWVzIE5ldyBSb21hbicsICdSb2JvdG8nXVxuICAgICAgICB9LFxuICAgICAgICB7IGxhYmVsOiAnRm9udCBDb2xvcicsIHR5cGU6ICdjb2xvcicsIGtleTogJ2ZvbnRDb2xvcicsIGRlZmF1bHRWYWx1ZTogJycsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ0ZvbnQgU2l6ZScsIHR5cGU6ICdzZWxlY3QnLCBrZXk6ICdmb250U2l6ZScsIGRlZmF1bHRWYWx1ZTogJycsIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgIHsgbGFiZWw6ICdTbWFsbCcsIHZhbHVlOiAnMTJweCcgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6ICdNZWRpdW0nLCB2YWx1ZTogJzE0cHgnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnTGFyZ2UnLCB2YWx1ZTogJzE2cHgnIH1cbiAgICAgICAgICBdXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnRm9udCBXaWR0aCcsIHR5cGU6ICdzZWxlY3QnLCBrZXk6ICdmb250V2VpZ2h0JywgZGVmYXVsdFZhbHVlOiAnJywgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgeyB2YWx1ZTogJzQwMCcsIGxhYmVsOiAnNDAwLU5vcm1hbCcgfSxcbiAgICAgICAgICAgIHsgdmFsdWU6ICc1MDAnLCBsYWJlbDogJzUwMC1NZWRpdW0nIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiAnNjAwJywgbGFiZWw6ICc2MDAtU2VtaSBCb2xkJyB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogJzcwMCcsIGxhYmVsOiAnNzAwLUJvbGQnIH1cbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHsgbGFiZWw6ICdEdXBsaWNhdGUgRmllbGQnLCB0eXBlOiAnYnV0dG9uLXRvZ2dsZScsIGtleTogJ2R1cGxpY2F0ZUZpZWxkJywgZGVmYXVsdFZhbHVlOiBmYWxzZSB9XG4gICAgICBdXG4gICAgfSxcblxuICAgIExpc3RDb2x1bW46IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZyh7XG4gICAgICBjdXN0b21GaWVsZFByb3BzOiBbXG4gICAgICAgIC4uLkNPTU1PTl9PUFRJT05TX0ZJRUxELm1hcChvcHQgPT4gKHtcbiAgICAgICAgICB0eXBlOiAnbGlzdCdcbiAgICAgICAgfSkpLFxuICAgICAgXSxcbiAgICAgIGN1c3RvbUVsZW1lbnRQcm9wczpbXG4gICAgICAgIHsgbGFiZWw6IFwiaGVhZGVyTGFiZWxzXCIsIHBsYWNlaG9sZGVyOiBcIkVtcGxveWVlIERldGFpbHNcIiwgdHlwZTogXCJ0ZXh0XCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwibGFiZWxcIiB9LFxuICAgICAgICB7IGxhYmVsOiBcImFwaU5hbWVcIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcInRleHRcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJhcGlOYW1lXCIgfSxcbiAgICBcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiBcIlN1bW1hcnkgQ29sdW1uXCIsIHBsYWNlaG9sZGVyOiBcIlN1bW1hcnkgQ29sdW1uXCIsIHR5cGU6IFwic3ViUXVlc3Rpb25cIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJzdW1tYXJ5Q29sdW1uXCIsXG4gICAgICAgICAgc3ViUXVlc3Rpb246IFtcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiVHlwZVwiLCBwbGFjZWhvbGRlcjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIHR5cGU6IFwidGV4dFwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcImZsZFR5cGVcIiB9LFxuICAgICAgICAgICAgeyBsYWJlbDogXCJPcGVyYXRpb25cIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcInRleHRcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJvcGVyYXRpb25cIiB9LFxuICAgICAgICAgICAgeyBsYWJlbDogXCJPcGVyYW5kc1wiLCBwbGFjZWhvbGRlcjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIHR5cGU6IFwiYXJyYXlcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJvcGVyYW5kc1wiIH0sXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgIFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6IFwiU3VtbWFyeSBSb3dcIiwgcGxhY2Vob2xkZXI6IFwiU3VtbWFyeSBSb3dcIiwgdHlwZTogXCJzdWJRdWVzdGlvblwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcInN1bW1hcnlSb3dcIixcbiAgICAgICAgICBzdWJRdWVzdGlvbjogW1xuICAgICAgICAgICAgeyBsYWJlbDogXCJUeXBlXCIsIHBsYWNlaG9sZGVyOiBcIkVtcGxveWVlIERldGFpbHNcIiwgdHlwZTogXCJ0ZXh0XCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwiZmxkVHlwZVwiIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiBcIm9wZXJhdGlvblwiLCBwbGFjZWhvbGRlcjogXCJvcGVyYXRpb25cIiwgdHlwZTogXCJ0ZXh0XCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwib3BlcmF0aW9uXCIgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiY29sdW1uXCIsIHBsYWNlaG9sZGVyOiBcIkVtcGxveWVlIERldGFpbHNcIiwgdHlwZTogXCJyYWRpb1wiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcImNvbHVtblwiIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiBcIm9wZXJhbmRzXCIsIHBsYWNlaG9sZGVyOiBcIkVtcGxveWVlIERldGFpbHNcIiwgdHlwZTogXCJhcnJheVwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcIm9wZXJhbmRzXCIgfSxcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgfSksICAgIFxuXG4gICAgRHJvcGRvd25Db2x1bW46IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZyh7XG4gICAgICBjdXN0b21GaWVsZFByb3BzOiBbXG5cbiAgICAgICAgLi4uQ09NTU9OX09QVElPTlNfRklFTEQubWFwKG9wdCA9PiAoe1xuICAgICAgICAgIC4uLm9wdCxcbiAgICAgICAgICB0eXBlOiAnZHJvcGRvd24nXG4gICAgICAgIH0pKSxcbiAgICAgIF0sXG4gICAgICAgIGN1c3RvbUVsZW1lbnRQcm9wczpbXG4gICAgICAgIHsgbGFiZWw6IFwiaGVhZGVyTGFiZWxzXCIsIHBsYWNlaG9sZGVyOiBcIkVtcGxveWVlIERldGFpbHNcIiwgdHlwZTogXCJ0ZXh0XCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwibGFiZWxcIiB9LFxuICAgICAgICB7IGxhYmVsOiBcImFwaU5hbWVcIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcInRleHRcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJhcGlOYW1lXCIgfSxcbiAgICBcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiBcIlN1bW1hcnkgQ29sdW1uXCIsIHBsYWNlaG9sZGVyOiBcIlN1bW1hcnkgQ29sdW1uXCIsIHR5cGU6IFwic3ViUXVlc3Rpb25cIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJzdW1tYXJ5Q29sdW1uXCIsXG4gICAgICAgICAgc3ViUXVlc3Rpb246IFtcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiVHlwZVwiLCBwbGFjZWhvbGRlcjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIHR5cGU6IFwidGV4dFwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcImZsZFR5cGVcIiB9LFxuICAgICAgICAgICAgeyBsYWJlbDogXCJPcGVyYXRpb25cIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcInRleHRcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJvcGVyYXRpb25cIiB9LFxuICAgICAgICAgICAgeyBsYWJlbDogXCJPcGVyYW5kc1wiLCBwbGFjZWhvbGRlcjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIHR5cGU6IFwiYXJyYXlcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJvcGVyYW5kc1wiIH0sXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgIFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6IFwiU3VtbWFyeSBSb3dcIiwgcGxhY2Vob2xkZXI6IFwiU3VtbWFyeSBSb3dcIiwgdHlwZTogXCJzdWJRdWVzdGlvblwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcInN1bW1hcnlSb3dcIixcbiAgICAgICAgICBzdWJRdWVzdGlvbjogW1xuICAgICAgICAgICAgeyBsYWJlbDogXCJUeXBlXCIsIHBsYWNlaG9sZGVyOiBcIkVtcGxveWVlIERldGFpbHNcIiwgdHlwZTogXCJ0ZXh0XCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwiZmxkVHlwZVwiIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiBcIm9wZXJhdGlvblwiLCBwbGFjZWhvbGRlcjogXCJvcGVyYXRpb25cIiwgdHlwZTogXCJ0ZXh0XCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwib3BlcmF0aW9uXCIgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiY29sdW1uXCIsIHBsYWNlaG9sZGVyOiBcIkVtcGxveWVlIERldGFpbHNcIiwgdHlwZTogXCJyYWRpb1wiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcImNvbHVtblwiIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiBcIm9wZXJhbmRzXCIsIHBsYWNlaG9sZGVyOiBcIkVtcGxveWVlIERldGFpbHNcIiwgdHlwZTogXCJhcnJheVwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcIm9wZXJhbmRzXCIgfSxcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgfSksICAgIFxuXG4gICAgRGF0ZUNvbHVtbjogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKHtcbiAgICAgIGN1c3RvbUZpZWxkUHJvcHM6IFtcbiAgICAgICAgLi4uQ09NTU9OX09QVElPTlNfRklFTEQubWFwKG9wdCA9PiAoe1xuICAgICAgICAgIHR5cGU6ICdkYXRlJ1xuICAgICAgICB9KSksXG4gICAgICBdLFxuICAgICAgY3VzdG9tRWxlbWVudFByb3BzOltcbiAgICAgICAgeyBsYWJlbDogXCJoZWFkZXJMYWJlbHNcIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcInRleHRcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJsYWJlbFwiIH0sXG4gICAgICAgIHsgbGFiZWw6IFwiYXBpTmFtZVwiLCBwbGFjZWhvbGRlcjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIHR5cGU6IFwidGV4dFwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcImFwaU5hbWVcIiB9LFxuICAgIFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6IFwiU3VtbWFyeSBDb2x1bW5cIiwgcGxhY2Vob2xkZXI6IFwiU3VtbWFyeSBDb2x1bW5cIiwgdHlwZTogXCJzdWJRdWVzdGlvblwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcInN1bW1hcnlDb2x1bW5cIixcbiAgICAgICAgICBzdWJRdWVzdGlvbjogW1xuICAgICAgICAgICAgeyBsYWJlbDogXCJUeXBlXCIsIHBsYWNlaG9sZGVyOiBcIkVtcGxveWVlIERldGFpbHNcIiwgdHlwZTogXCJ0ZXh0XCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwiZmxkVHlwZVwiIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiBcIk9wZXJhdGlvblwiLCBwbGFjZWhvbGRlcjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIHR5cGU6IFwidGV4dFwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcIm9wZXJhdGlvblwiIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiBcIk9wZXJhbmRzXCIsIHBsYWNlaG9sZGVyOiBcIkVtcGxveWVlIERldGFpbHNcIiwgdHlwZTogXCJhcnJheVwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcIm9wZXJhbmRzXCIgfSxcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogXCJTdW1tYXJ5IFJvd1wiLCBwbGFjZWhvbGRlcjogXCJTdW1tYXJ5IFJvd1wiLCB0eXBlOiBcInN1YlF1ZXN0aW9uXCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwic3VtbWFyeVJvd1wiLFxuICAgICAgICAgIHN1YlF1ZXN0aW9uOiBbXG4gICAgICAgICAgICB7IGxhYmVsOiBcIlR5cGVcIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcInRleHRcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJmbGRUeXBlXCIgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6IFwib3BlcmF0aW9uXCIsIHBsYWNlaG9sZGVyOiBcIm9wZXJhdGlvblwiLCB0eXBlOiBcInRleHRcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJvcGVyYXRpb25cIiB9LFxuICAgICAgICAgICAgeyBsYWJlbDogXCJjb2x1bW5cIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcInJhZGlvXCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwiY29sdW1uXCIgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6IFwib3BlcmFuZHNcIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcImFycmF5XCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwib3BlcmFuZHNcIiB9LFxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9KSwgICAgXG5cbiAgICBDaGVja2JveDogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKHtcbiAgICAgIGN1c3RvbUZpZWxkUHJvcHM6IENPTU1PTl9PUFRJT05TX0ZJRUxELm1hcChvcHQgPT4gKHtcbiAgICAgICAgLi4ub3B0LFxuICAgICAgICB0eXBlOiAnY2hlY2tib3gnXG4gICAgICB9KSlcbiAgICB9KSxcbiAgXG4gICAgRHJvcGRvd246IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZyh7XG4gICAgICBjdXN0b21GaWVsZFByb3BzOiBDT01NT05fT1BUSU9OU19GSUVMRC5tYXAob3B0ID0+ICh7XG4gICAgICAgIC4uLm9wdCxcbiAgICAgICAgdHlwZTogJ2Ryb3Bkb3duJ1xuICAgICAgfSkpXG4gICAgfSksXG4gIFxuICAgIFJhZGlvOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoe1xuICAgICAgY3VzdG9tRmllbGRQcm9wczogQ09NTU9OX09QVElPTlNfRklFTEQubWFwKG9wdCA9PiAoe1xuICAgICAgICAuLi5vcHQsXG4gICAgICAgIHR5cGU6ICdjaGVja2JveCdcbiAgICAgIH0pKVxuICAgIH0pLFxuXG4gICAgVGV4dDogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG5cbiAgICBDYWxlbmRhcjogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG5cbiAgICBEYXRlOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcblxuICAgIFRpbWU6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuXG4gICAgRGF0ZVRpbWU6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuXG4gICAgRW1haWw6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuXG4gICAgQm9vazogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG4gICAgXG4gICAgTGlzdDogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG5cbiAgICBUZXh0QXJlYTogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG5cbiAgICBSaWNoVGV4dEFyZWE6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuICAgIFxuICAgIE51bWJlcjogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG5cbiAgICBJbWFnZTogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG5cbiAgICBMYWJlbDogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG5cbiAgICBCb29sZWFuOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcblxuICAgIEZpbGU6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuXG4gIH07XG4gIFxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBmb3JtQnVpbGRlclNlcnZpY2U6IEZvcm1CdWlsZGVyU2VydmljZSxwcml2YXRlIHRlbXBsYXRlU2VydmljZTogVGVtcGxhdGVTZXJ2aWNlKSB7IH1cblxuICBoYW5kbGVUZW1wbGF0ZVNlbGVjdGlvbihldmVudDogYW55KSB7XG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSBldmVudC5lbGVtZW50czsgXG4gICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlID0gZXZlbnQuc2VsZWN0ZWRUZW1wbGF0ZTtcbiAgICB0aGlzLnRlbXBsYXRlU2VydmljZS5mb3JtRWxlbWVudHMgPSB0aGlzLmZvcm1FbGVtZW50cztcbiAgICB0aGlzLnRlbXBsYXRlU2VydmljZS5ib29rID0gdGhpcy5ib29rO1xuICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLnVuaXF1ZV9pZCA9IHRoaXMudW5pcXVlX2lkO1xuICB9XG4gIGR1cGxpY2F0ZUZpZWxkKGVsZW1lbnQ6IGFueSkge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuZ2V0RWxlbWVudHMoKTtcbiAgICBjb25zdCBjb3B5ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlbGVtZW50KSk7XG4gICAgLy9BUC0xOEFQUjI1IEdlbmVyYXRlIGEgbmV3IElEIHVzaW5nIHRoZSBzZXJ2aWNlJ3MgbWV0aG9kXG4gICAgY29weS5pZCA9IHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmFkZEVsZW1lbnRXaXRoSWQoKTtcbiAgICAvL2NvcHkudXVpZCA9IGNvcHkuaWQ7IFxuICAgIC8vIEFQLTE4QVBSMjUgU2V0IHRoZSBxdWVzdGlvbk51bWJlciB0byB0aGUgbmV4dCBhdmFpbGFibGUgbnVtYmVyXG4gICAgY29weS5xdWVzdGlvbk51bWJlciA9IGVsZW1lbnRzLmxlbmd0aCArIDE7XG4gICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuYWRkRWxlbWVudChjb3B5KTtcbiAgfVxuICBcbiAgc2F2ZURhdGEoKSB7XG4gICAgdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZm9ybUVsZW1lbnRzID0gdGhpcy5mb3JtRWxlbWVudHM7XG4gICAgdGhpcy50ZW1wbGF0ZVNlcnZpY2UuYm9vayA9IHRoaXMuYm9vaztcbiAgICB0aGlzLnRlbXBsYXRlU2VydmljZS51bmlxdWVfaWQgPSB0aGlzLnVuaXF1ZV9pZDtcbiAgICBjb25zdCB1cGRhdGVkQm9vayA9IHRoaXMudGVtcGxhdGVTZXJ2aWNlLmRvd25sb2FkKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvL0FQLTEwTUFSMjUgU3Vic2NyaWJlcyB0byBoZWFkZXIgc2VsZWN0aW9uIGNoYW5nZXMgYW5kIHVwZGF0ZXMgdGhlIHNlbGVjdGVkIGVsZW1lbnQgIFxuICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLnNlbGVjdEhlYWRlclN1YmplY3QkLnN1YnNjcmliZShoZWFkZXIgPT4ge1xuICAgICAgaWYgKGhlYWRlcikge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFsndHlwZSddID0gaGVhZGVyO1xuICAgICAgICB0aGlzLmhlYWRlclNlbGVjdCA9IHRydWU7XG4gICAgICAgIHRoaXMuYm9vayA9IHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmdldEJvb2soKTtcbiAgICAgICAgdGhpcy5ib29rSWQgPSB0aGlzLmJvb2sucmVjb3Jkc1swXS5pZDtcbiAgICAgIH1cblxuICAgIH0pO1xuICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLnNlbGVjdGVkRWxlbWVudCQuc3Vic2NyaWJlKGluZGV4ID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXggPSBpbmRleDtcbiAgICAgIHRoaXMuaGVhZGVyU2VsZWN0ID0gZmFsc2U7XG4gICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmdldEVsZW1lbnRzKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50ID0gZWxlbWVudHNbaW5kZXhdO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFsnZmllbGRzTWV0YSddID0gdHlwZW9mIHRoaXMuc2VsZWN0ZWRFbGVtZW50LmZpZWxkc01ldGEgPT09ICdvYmplY3QnID8gdGhpcy5zZWxlY3RlZEVsZW1lbnQuZmllbGRzTWV0YSA6IEpTT04ucGFyc2UodGhpcy5zZWxlY3RlZEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSB8fCBbXSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RDb2x1bW4gPSB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5nZXRTZWxlY3RUYWJsZUNvbHVtbigpID09PSB1bmRlZmluZWQgPyBudWxsIDogdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuZ2V0U2VsZWN0VGFibGVDb2x1bW4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdENvbHVtbiA9IG51bGxcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5nZXRQcm9wZXJ0aWVzKClcbiAgICB9KTtcbiAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5zZWxlY3RIZWFkZXJTdWJqZWN0JC5zdWJzY3JpYmUoYWN0aW9uID0+IHtcbiAgICAgIGlmIChhY3Rpb24pIHtcbiAgICAgICAgdGhpcy5ib29rID0gdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuZ2V0Qm9vaygpO1xuICAgICAgfVxuXG4gICAgfSk7XG4gICAgIGlmICh0aGlzLmZyb20gPT09ICdmb3JtQnVpbGRlcicpIHtcbiAgICBjb25zdCBmaWVsZHNNZXRhID0gdHlwZW9mIHRoaXMuZWxlbWVudC5maWVsZHNNZXRhID09PSAnc3RyaW5nJ1xuICAgICAgPyBKU09OLnBhcnNlKHRoaXMuZWxlbWVudC5maWVsZHNNZXRhKVxuICAgICAgOiB0aGlzLmVsZW1lbnQuZmllbGRzTWV0YTtcblxuICAgIHRoaXMuY29sdW1ucyA9IGZpZWxkc01ldGEubWFwKGNvbHVtbiA9PiAoe1xuICAgICAgLi4uY29sdW1uLFxuICAgICAgdHlwZTogY29sdW1uLmZsZFR5cGUgfHwgJ1RleHQnIC8vIERlZmF1bHQgdG8gJ1RleHQnIGlmIGZsZFR5cGUgbm90IGF2YWlsYWJsZVxuICAgIH0pKTtcbiAgfVxuICB9XG5cbiAgLy8gQVAgMjNNQVkyNSAtIEFkZCBhIG5ldyBidXR0b24gd2l0aCBkZWZhdWx0IHN0eWxpbmdcbiAgYWRkTmV3QnV0dG9uKCk6IHZvaWQge1xuICAgIGNvbnN0IGxhc3RQZXJjZW50ID0gdGhpcy5ib29rPy5xdWVzdGlvbmJvb2s/LmFjdGlvbj8uc2xpY2UoLTEpWzBdPy5wb3NpdGlvblBlcmNlbnQgfHwgMDtcbiAgICBjb25zdCBidXR0b25zID0ge1xuICAgICAgbmFtZTogJycsXG4gICAgICBldmVudHRvZW1pdDogJycsXG4gICAgICBhbHQ6ICcnLFxuICAgICAgZW5kcG9pbnQ6ICcnLFxuICAgICAgbWV0aG9kOiAnJyxcbiAgICAgIGlkOiB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5hZGRFbGVtZW50V2l0aElkKCksXG4gICAgICBwb3NpdGlvblBlcmNlbnQ6IGxhc3RQZXJjZW50ICsgMTAsICBcbiAgICAgIHdpZHRoOiAxMDAsXG4gICAgICBib3JkZXJSYWRpdXM6IDYsXG4gICAgICBhbGlnbm1lbnQ6ICdmbGV4LXN0YXJ0J1xuICAgIH07XG4gICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UudXBkYXRlUXVlc3Rpb25Cb29rQWN0aW9uQnV0dG9ucyhidXR0b25zLCAnYWRkJyk7XG4gIH1cbiAgXG4gLy9BUCAyM01BWTI1IC0gUmVtb3ZlIGEgYnV0dG9uIGZyb20gdGhlIGFjdGlvbiBsaXN0XG4gIHJlbW92ZUJ1dHRvbihidG46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLnVwZGF0ZVF1ZXN0aW9uQm9va0FjdGlvbkJ1dHRvbnMoYnRuLCdyZW1vdmUnKTtcbiAgfVxuICAvL0FQIDIzTUFZMjUgLSBVcGRhdGUgYSBzcGVjaWZpYyBwcm9wZXJ0eSBvZiBhIGJ1dHRvblxuICBvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGluZGV4OiBudW1iZXIsIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgYnV0dG9ucyA9IHRoaXMuZ2V0VmFsdWVCeVBhdGgoJ2FjdGlvbicpIHx8IFtdO1xuICAgIGlmIChidXR0b25zW2luZGV4XSkge1xuICAgICAgYnV0dG9uc1tpbmRleF1ba2V5XSA9IHZhbHVlO1xuICAgICAgdGhpcy5zZXRWYWx1ZUJ5UGF0aCgnYWN0aW9uJywgYnV0dG9ucyk7IFxuICAgIH1cbiAgfVxuICAvL0FQLTEwTUFSMjUgVXBkYXRlcyB0aGUgdGl0bGUgdXNpbmcgdGhlIGZvcm0gYnVpbGRlciBzZXJ2aWNlICBcbiAgdXBkYXRlVGl0bGUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLnVwZGF0ZVRpdGxlKGV2ZW50KTtcbiAgfVxuICB2YWxpZGF0ZUlucHV0KHZhbHVlOiBzdHJpbmcsIHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlID09PSAnbGFiZWwnIHx8IHR5cGUgPT09ICdwbGFjZWhvbGRlcicpIHtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gL15bYS16QS1aMC05XFxzXSokLztcbiAgICAgIGlmICghcmVnZXgudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnT25seSBsZXR0ZXJzIGFuZCBudW1iZXJzIGFyZSBhbGxvd2VkJztcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0IGZpZWxkQXNTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ib29rU3VidGV4dC5maWVsZC5qb2luKCcsICcpOyAvL1NLUzI4TUFSMjUgQ29udmVydCBhcnJheSB0byBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nXG4gIH1cblxuICB1cGRhdGVGaWVsZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5ib29rU3VidGV4dC5maWVsZCA9IHZhbHVlLnNwbGl0KCcsJykubWFwKGl0ZW0gPT4gaXRlbS50cmltKCkpOyAvL1NLUzI4TUFSMjUgQ29udmVydCBzdHJpbmcgYmFjayB0byBhcnJheVxuICB9XG4gIC8vIFNLUzIwTUFSMjUgR2V0dGVyIHRvIGZpbHRlciBjb2x1bW5zLCBleGNsdWRpbmcgdGhlIG9uZSB3aXRoIGN1cnJlbnRVbmlxdWVJZGVudGlmaWVyXG4gIGdldCBmaWx0ZXJlZENvbHVtbnMoKTogYW55W10ge1xuICAgIGNvbnN0IHRhcmdldEFycmF5ID0gdGhpcy5nZXREYXRhQnlQYXRoKCdmaWVsZHNNZXRhJyk7XG4gICAgcmV0dXJuIHRhcmdldEFycmF5LmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnVuaXF1ZUlkZW50aWZpZXIgIT09IHRoaXMuc2VsZWN0Q29sdW1uKTtcbiAgfVxuXG4gIC8vIFNLUzIwTUFSMjUgTWV0aG9kIHRvIGhhbmRsZSBjaGVja2JveCBjaGFuZ2VzXG4gIG9uQ2hlY2tib3hDaGFuZ2UodGFyZ2V0QXJyYXlQYXRoOiBhbnksIHRhcmdldEFycmF5S2V5OiBhbnksIGtleTogYW55LCBhcGlOYW1lOiBzdHJpbmcsIGlzQ2hlY2tlZDogYm9vbGVhbikge1xuICAgIGNvbnN0IHRhcmdldEFycmF5ID0gdGhpcy5nZXREYXRhQnlQYXRoKHRhcmdldEFycmF5UGF0aCk7XG4gICAgY29uc3QgZm91bmRJdGVtID0gdGFyZ2V0QXJyYXkuZmluZChpdGVtID0+IGl0ZW1bdGFyZ2V0QXJyYXlLZXldID09PSB0aGlzLnNlbGVjdENvbHVtbik7XG4gICAgZm91bmRJdGVtW2tleV0gPSBmb3VuZEl0ZW1ba2V5XSA/IGZvdW5kSXRlbVtrZXldIDogW107XG4gICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgLy8gQWRkIGFwaU5hbWUgdG8gc2VsZWN0ZWRBcGlOYW1lcyBpZiBub3QgYWxyZWFkeSBwcmVzZW50XG4gICAgICBpZiAoIWZvdW5kSXRlbVtrZXldLmluY2x1ZGVzKGFwaU5hbWUpKSB7XG4gICAgICAgIGZvdW5kSXRlbVtrZXldLnB1c2goYXBpTmFtZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlbW92ZSBhcGlOYW1lIGZyb20gc2VsZWN0ZWRBcGlOYW1lcyBpZiBwcmVzZW50XG4gICAgICBjb25zdCBpbmRleCA9IGZvdW5kSXRlbVtrZXldLmluZGV4T2YoYXBpTmFtZSk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICBmb3VuZEl0ZW1ba2V5XS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyB0aGlzLnVwZGF0ZUVsZW1lbnQodGhpcy5zZWxlY3RlZEVsZW1lbnQpXG4gIH1cbiAgdXBkYXRlUHJvcGVydHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCA+PSAwKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQudHlwZSA9PT0gJ1RhYmxlJykge1xuICAgICAgICB0aGlzLnNldFZhbHVlQnlQYXRoKGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gJ3F1ZXN0aW9uVGV4dCcgfHwga2V5ID09PSAncXVlc3Rpb24nKSB7XG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZUlucHV0KHZhbHVlLCBrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoa2V5ID09PSAncXVlc3Rpb25OdW1iZXInKSB7XG4gICAgICAgIC8vQVAtMTBNQVIyNSBDb252ZXJ0IHRoZSB2YWx1ZSB0byBhbiBpbnRlZ2VyICBcbiAgICAgICAgY29uc3QgbmV3T3JkZXIgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgICBpZiAoaXNOYU4obmV3T3JkZXIpKSByZXR1cm47XG5cbiAgICAgICAgLy9BUC0xME1BUjI1IFVwZGF0ZSB0aGUgZWxlbWVudCdzIHF1ZXN0aW9uTnVtYmVyIGluIHRoZSBmb3JtIGJ1aWxkZXIgc2VydmljZSAgXG4gICAgICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLnVwZGF0ZUVsZW1lbnQodGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCwgeyBxdWVzdGlvbk51bWJlcjogbmV3T3JkZXIgfSk7XG5cbiAgICAgICAgLy9BUC0xME1BUjI1IFNvcnQgZWxlbWVudHMgYmFzZWQgb24gdGhlIHVwZGF0ZWQgcXVlc3Rpb25OdW1iZXIgIFxuICAgICAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5zb3J0RWxlbWVudHNCeU9yZGVyKCk7XG4gICAgICB9XG5cblxuICAgICAgaWYgKGtleSA9PT0gJ2ZvbnRXZWlnaHQnKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50W2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdXBkYXRlID0geyBba2V5XTogdmFsdWUgfTtcbiAgICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLnVwZGF0ZUVsZW1lbnQodGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCwgdXBkYXRlKTtcblxuICAgICAgLy8gU3BlY2lhbCBoYW5kbGluZyBmb3IgZm9udCBhbmQgZm9udCB3ZWlnaHRcbiAgICAgIGlmIChrZXkgPT09ICdmb250Jykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5mb250ID0gdmFsdWU7IC8vIERpcmVjdGx5IHVwZGF0ZSB0aGUgc2VsZWN0ZWQgZWxlbWVudCdzIGZvbnQgcHJvcGVydHlcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gU0tTMjFNQVIyNSByYWRpbyBidXR0b24gY2xpY2sgaGFuZGxlclxuICBvblJhZGlvQ2hhbmdlKHRhcmdldEFycmF5UGF0aDogYW55LCB0YXJnZXRBcnJheUtleTogYW55LCBrZXk6IGFueSwgdmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudC50eXBlID09PSAnVGFibGUnKSB7XG4gICAgICAvLyB0aGlzLnVwZGF0ZVZhbHVlQnlBcnJheVBhdGgodGFyZ2V0QXJyYXksIHRhcmdldEFycmF5S2V5LCB0aGlzLnNlbGVjdENvbHVtbiwga2V5LCB2YWx1ZSk7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSA9IHR5cGVvZiB0aGlzLnNlbGVjdGVkRWxlbWVudD8uZmllbGRzTWV0YSA9PT0gJ29iamVjdCcgPyB0aGlzLnNlbGVjdGVkRWxlbWVudD8uZmllbGRzTWV0YSA6IEpTT04ucGFyc2UodGhpcy5zZWxlY3RlZEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSB8fCBbXSk7XG4gICAgICB9XG4gICAgICBjb25zdCB0YXJnZXRBcnJheSA9IHRoaXMuZ2V0RGF0YUJ5UGF0aCh0YXJnZXRBcnJheVBhdGgpO1xuICAgICAgLy8gY29uc29sZS5sb2coXCJ0YXJnZXRBcnJheVwiLCB0YXJnZXRBcnJheSwgXCJ0YXJnZXRBcnJheUtleVwiLCB0YXJnZXRBcnJheUtleSwgXCJzZWxlY3RDb2x1bW5cIiwgdGhpcy5zZWxlY3RDb2x1bW4sIFwia2V5UGF0aFwiLCBrZXksIFwiZXZlbnRcIiwgdmFsdWUpXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGFyZ2V0QXJyYXkpKSByZXR1cm47XG5cbiAgICAgIC8vIEZpbmQgdGhlIG9iamVjdCB0aGF0IG1hdGNoZXMgc2VsZWN0Q29sdW1uXG4gICAgICBsZXQgZm91bmRJdGVtID0gdGFyZ2V0QXJyYXkuZmluZChpdGVtID0+IGl0ZW1bdGFyZ2V0QXJyYXlLZXldID09PSB0aGlzLnNlbGVjdENvbHVtbik7XG5cbiAgICAgIC8vIElmIHRoZSBpdGVtIGRvZXMgbm90IGV4aXN0LCBjcmVhdGUgYW5kIGFkZCBpdFxuICAgICAgaWYgKCFmb3VuZEl0ZW0pIHtcbiAgICAgICAgZm91bmRJdGVtID0geyBbdGFyZ2V0QXJyYXlLZXldOiB0aGlzLnNlbGVjdENvbHVtbiB9OyAvLyBFbnN1cmUgdGhlIGtleSBleGlzdHNcbiAgICAgICAgdGFyZ2V0QXJyYXkucHVzaChmb3VuZEl0ZW0pO1xuICAgICAgfVxuXG4gICAgICAvLyBUcmF2ZXJzZSBhbmQgc2V0IHRoZSB2YWx1ZVxuICAgICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdCgnLicpO1xuICAgICAgbGV0IG9iaiA9IGZvdW5kSXRlbTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICBjb25zdCBrZXkgPSBrZXlzW2ldO1xuICAgICAgICBpZiAoIW9ialtrZXldKSBvYmpba2V5XSA9IHt9OyAvLyBJbml0aWFsaXplIG1pc3Npbmcgb2JqZWN0c1xuICAgICAgICBvYmogPSBvYmpba2V5XTtcbiAgICAgIH1cblxuICAgICAgLy8gQXNzaWduIHRoZSB2YWx1ZSBiYXNlZCBvbiBpbnB1dCB0eXBlXG4gICAgICBjb25zdCBsYXN0S2V5ID0ga2V5c1trZXlzLmxlbmd0aCAtIDFdO1xuXG4gICAgICBvYmpbbGFzdEtleV0gPSB2YWx1ZTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFsnZmllbGRzTWV0YSddID0gdHlwZW9mIHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5maWVsZHNNZXRhID09PSAnb2JqZWN0JyA/IEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5maWVsZHNNZXRhKSA6IHRoaXMuc2VsZWN0ZWRFbGVtZW50WydmaWVsZHNNZXRhJ10gfHwgW107XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZUVsZW1lbnQodGhpcy5zZWxlY3RlZEVsZW1lbnQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0VmFsdWVCeVBhdGgoa2V5LCB2YWx1ZSk7IC8vIEZhbGxiYWNrIGZvciBub24tVGFibGUgZWxlbWVudHMsIGlmIGFwcGxpY2FibGVcbiAgICB9XG4gIH1cbiAgb25SZXF1aXJlZENoYW5nZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudCkge1xuICAgICAgbGV0IGxhYmVsID0gdGhpcy5zZWxlY3RlZEVsZW1lbnQubGFiZWwgPyB0aGlzLnNlbGVjdGVkRWxlbWVudC5sYWJlbC5yZXBsYWNlKC9cXHMqXFwqKyQvLCAnJykgOiAnTGFiZWwnO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbGFiZWwgPSBgJHtsYWJlbH0gKmA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudXBkYXRlUHJvcGVydHkoJ2xhYmVsJywgbGFiZWwpO1xuICAgICAgdGhpcy51cGRhdGVQcm9wZXJ0eSgnaXNPcHRpb25hbCcsIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvLyBUb2dnbGUgZm9yIFN1YiBRdWVzdGlvbnMgKEVhY2ggcHJvcCBoYXMgaXRzIG93biBzdGF0ZSlcbiAgdG9nZ2xlU3ViUXVlc3Rpb24ocHJvcDogYW55KSB7XG4gICAgcHJvcC5pc0V4cGFuZGVkID0gIXByb3AuaXNFeHBhbmRlZDtcbiAgfVxuXG4gIC8vIFNlcGFyYXRlIFRvZ2dsZSBmb3IgU3R5bGUgU2VjdGlvblxuICBpc1N0eWxlRXhwYW5kZWQgPSBmYWxzZTtcblxuICB0b2dnbGVTdHlsZVNlY3Rpb24oKSB7XG4gICAgdGhpcy5pc1N0eWxlRXhwYW5kZWQgPSAhdGhpcy5pc1N0eWxlRXhwYW5kZWQ7XG4gIH1cblxuICBnZXRQcm9wZXJ0aWVzKCkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZEVsZW1lbnQpIHJldHVybiBudWxsO1xuXG4gICAgLy8gQVAtMTBNQVIyNSBSZXRyaWV2ZSB0aGUgbGF0ZXN0IGJvb2sgZGF0YVxuICAgIHRoaXMuYm9vayA9IHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmdldEJvb2soKTtcblxuICAgIC8vIEFQLTEwTUFSMjUgSWYgdGhlIHNlbGVjdGVkIGVsZW1lbnQgaXMgYSAnSGVhZGVyJywgcmV0dXJuIGl0cyBwcm9wZXJ0aWVzXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50Py50eXBlID09PSAnSGVhZGVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFByb3BlcnRpZXNbJ0hlYWRlciddO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdENvbHVtbiAhPT0gbnVsbCkge1xuICAgICAgICAvLyBHZXQgdGhlIGNvbHVtbiBtZXRhZGF0YVxuICAgICAgICBjb25zdCBmaWVsZHNNZXRhID0gQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkRWxlbWVudC5maWVsZHNNZXRhKSBcbiAgICAgICAgICA/IHRoaXMuc2VsZWN0ZWRFbGVtZW50LmZpZWxkc01ldGEgXG4gICAgICAgICAgOiBKU09OLnBhcnNlKHRoaXMuc2VsZWN0ZWRFbGVtZW50LmZpZWxkc01ldGEgfHwgJ1tdJyk7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBjb2x1bW4gPSBmaWVsZHNNZXRhLmZpbmQoKGM6IGFueSkgPT4gYy51bmlxdWVJZGVudGlmaWVyID09PSB0aGlzLnNlbGVjdENvbHVtbik7XG4gICAgICAgIFxuICAgICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgICAgLy8gUmV0dXJuIHNwZWNpZmljIHByb3BlcnRpZXMgYmFzZWQgb24gY29sdW1uIHR5cGVcbiAgICAgICAgICBzd2l0Y2ggKGNvbHVtbi5mbGRUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdMaXN0JzpcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFByb3BlcnRpZXNbJ0xpc3RDb2x1bW4nXTtcbiAgICAgICAgICAgIGNhc2UgJ0Ryb3Bkb3duJzpcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFByb3BlcnRpZXNbJ0Ryb3Bkb3duQ29sdW1uJ107XG4gICAgICAgICAgICBjYXNlICdEYXRlJzpcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFByb3BlcnRpZXNbJ0RhdGVDb2x1bW4nXTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzWydUYWJsZUNvbHVtbiddO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UHJvcGVydGllc1t0aGlzLnNlbGVjdGVkRWxlbWVudD8udHlwZV0gfHwgdGhpcy5lbGVtZW50UHJvcGVydGllc1snRGVmYXVsdENvbHVtbiddO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UHJvcGVydGllc1t0aGlzLnNlbGVjdGVkRWxlbWVudD8udHlwZV07XG4gIH1cbiAgLy8gQVAtMjhNQVIyNSBBZGQgYW4gb3B0aW9uIHdpdGggYSB1bmlxdWUgVVVJRFxuICBhZGRPcHRpb24ob3B0aW9uczogYW55W10pIHtcbiAgICBjb25zdCB1bmlxdWVfaWQgPSB1dWlkdjQoKTtcbiAgICBvcHRpb25zLnB1c2goeyBpZDogdW5pcXVlX2lkLHZhbHVlOiAnJyB9KTtcbiAgfVxuXG4gIC8vIEFQLTI4TUFSMjUgRnVuY3Rpb24gdG8gcmVtb3ZlIGFuIG9wdGlvbiBiYXNlZCBvbiBpdHMgdW5pcXVlIFVVSURcbiAgcmVtb3ZlT3B0aW9uKG9wdGlvbnM6IGFueVtdLCBpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgaW5kZXggPSBvcHRpb25zLmZpbmRJbmRleChvcHRpb24gPT4gb3B0aW9uLmlkID09PSBpZCk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgb3B0aW9ucy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUJ1dHRvbkNsaWNrKCkge1xuICAgIHRoaXMuZm9ybUJ1dHRvbkhhbmRsZXIuZW1pdCh0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5kb3dubG9hZEVsZW1lbnQoKSk7XG4gIH1cbiAgaGFuZGxlVGVtcGxhdGVTYXZlKCkge1xuICAgIHRoaXMudGVtcGxhdGVTYXZlSGFuZGxlci5lbWl0KHRoaXMudGVtcGxhdGVTZXJ2aWNlLmRvd25sb2FkKCkpO1xuICB9XG4gIC8vIFNLUzEzTUFSMjUgYWN0aXZlIHRhYiBzZWxlY3RcbiAgc2V0QWN0aXZlVGFiKHRhYjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG4gIH1cbiAgLy8gU0tTMTNNQVIyNSB0YWJsZSBwcm9wZXJ0eSBzYXZlXG4gIG9uU2F2ZSgpOiB2b2lkIHtcbiAgICAvLyBjb25zb2xlLmxvZygnU2F2aW5nIGRhdGE6Jyk7XG4gIH1cbiAgLy8gU0tTMTNNQVIyNSB0YWJsZSBwcm9wZXJ0eSByZXNldFxuICBvbkNhbmNlbCgpOiB2b2lkIHtcbiAgICAvLyBjb25zb2xlLmxvZygnT3BlcmF0aW9uIGNhbmNlbGxlZCcpO1xuICB9XG5cbiAgdXBkYXRlUHJvcGVydGllcyhlbGVtZW50VHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gUmVzZXQgYWxpZ25tZW50IGFuZCBzdHlsZXMgaWYgc3dpdGNoaW5nIGVsZW1lbnRzXG4gICAgdGhpcy5zZWxlY3RlZEFsaWduID0gJ2FsaWduLWxlZnQnO1xuICAgIHRoaXMuc2VsZWN0ZWRTdHlsZXMgPSBbXTtcblxuICAgIC8vIEZldGNoIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzZWxlY3RlZCBlbGVtZW50IHR5cGVcblxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmdldFByb3BlcnRpZXMoKTtcbiAgICBpZiAocHJvcGVydGllcykge1xuICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwcm9wZXJ0aWVzIGFyZSBkeW5hbWljYWxseSB1cGRhdGVkXG4gICAgfVxuICB9XG5cbiAgb25BbGlnblNlbGVjdCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC50ZXh0QWxpZ24gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBvblN0eWxlU2VsZWN0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRFbGVtZW50KSByZXR1cm47XG5cbiAgICAvLyBJbml0aWFsaXplIHN0eWxlcyBhcnJheSBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuc3R5bGVzID0gdGhpcy5zZWxlY3RlZEVsZW1lbnQuc3R5bGVzIHx8IFtdO1xuXG4gICAgLy8gRW5zdXJlIG9ubHkgb25lIHN0eWxlIGlzIHNlbGVjdGVkIGF0IGEgdGltZVxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnN0eWxlcyA9IFt2YWx1ZV07XG5cbiAgfVxuXG4gIGlzU3R5bGVBY3RpdmUodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRWxlbWVudD8uc3R5bGVzPy5pbmNsdWRlcyh2YWx1ZSkgfHwgZmFsc2U7XG4gIH1cbiAgZ2V0VmFsdWVCeVBhdGgocGF0aDogc3RyaW5nKTogYW55IHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50WydmaWVsZHNNZXRhJ10gPSB0eXBlb2YgdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LmZpZWxkc01ldGEgPT09ICdvYmplY3QnID8gdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LmZpZWxkc01ldGEgOiBKU09OLnBhcnNlKHRoaXMuc2VsZWN0ZWRFbGVtZW50WydmaWVsZHNNZXRhJ10gfHwgW10pO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50WydzdWJUZXh0J10gPSBcbiAgICAgICAgdHlwZW9mIHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5zdWJUZXh0ID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgPyB0aGlzLnNlbGVjdGVkRWxlbWVudC5zdWJUZXh0XG4gICAgICAgICAgICA6ICh0eXBlb2YgdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LnN1YlRleHQgPT09ICdzdHJpbmcnICYmIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnN1YlRleHQudHJpbSgpICE9PSAnJyBcbiAgICAgICAgICAgICAgICA/IEpTT04ucGFyc2UodGhpcy5zZWxlY3RlZEVsZW1lbnQuc3ViVGV4dCkgXG4gICAgICAgICAgICAgICAgOiB7fSk7XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnRbJ3N1YlRleHQnXSAmJiBBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWRFbGVtZW50WydzdWJUZXh0J10uZmllbGQpKSB7XG4gICAgICAgIC8vIENvbnZlcnQgYXJyYXkgdG8gYSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50WydzdWJUZXh0J10uZmllbGQgPSB0aGlzLnNlbGVjdGVkRWxlbWVudFsnc3ViVGV4dCddLmZpZWxkLmpvaW4oJywgJyk7XG4gICAgfSAgXG4gICAgcmV0dXJuIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiBvYmo/LltrZXldID8/ICcnLCB0aGlzLnNlbGVjdGVkRWxlbWVudCk7XG4gIH1cbmlzQW5vdGhlcklkU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5nZXRFbGVtZW50cygpXG4gICAgLnNvbWUoKGVsLCBpKSA9PiBpICE9PSB0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4ICYmIGVsLnByaW1hcnlLZXkpO1xufVxuICBvblRvZ2dsZUNoYW5nZShwYXRoOiBzdHJpbmcsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNoZWNrZWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XG4gICAgdGhpcy5zZXRWYWx1ZUJ5UGF0aChwYXRoLCBjaGVja2VkKTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50WydmaWVsZHNNZXRhJ10gPSB0eXBlb2YgdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LmZpZWxkc01ldGEgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZEVsZW1lbnQ/LmZpZWxkc01ldGEpIDogdGhpcy5zZWxlY3RlZEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSB8fCBbXTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVFbGVtZW50KHRoaXMuc2VsZWN0ZWRFbGVtZW50KVxuICB9XG5cbiAgc2V0VmFsdWVCeVBhdGgocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCA+PSAwKSB7XG4gICAgICBpZiAocGF0aCA9PT0gJ3F1ZXN0aW9uVGV4dCcgfHwgdmFsdWUgPT09ICdxdWVzdGlvbicpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlSW5wdXQodmFsdWUsIHZhbHVlKSkge1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocGF0aCA9PT0gJ3F1ZXN0aW9uTnVtYmVyJykge1xuICAgICAgICAvL0FQLTEwTUFSMjUgQ29udmVydCB0aGUgdmFsdWUgdG8gYW4gaW50ZWdlciAgXG4gICAgICAgIGNvbnN0IG5ld09yZGVyID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICAgICAgaWYgKGlzTmFOKG5ld09yZGVyKSkgcmV0dXJuO1xuXG4gICAgICAgIC8vQVAtMTBNQVIyNSBVcGRhdGUgdGhlIGVsZW1lbnQncyBxdWVzdGlvbk51bWJlciBpbiB0aGUgZm9ybSBidWlsZGVyIHNlcnZpY2UgIFxuICAgICAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS51cGRhdGVFbGVtZW50KHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXgsIHsgcXVlc3Rpb25OdW1iZXI6IG5ld09yZGVyIH0pO1xuXG4gICAgICAgIC8vQVAtMTBNQVIyNSBTb3J0IGVsZW1lbnRzIGJhc2VkIG9uIHRoZSB1cGRhdGVkIHF1ZXN0aW9uTnVtYmVyICBcbiAgICAgICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2Uuc29ydEVsZW1lbnRzQnlPcmRlcigpO1xuICAgICAgfVxuICAgICAgaWYgKHBhdGggPT09ICdmb250V2VpZ2h0Jykge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnRm9udCB3ZWlnaHQgc2VsZWN0ZWQ6JywgdmFsdWUpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFtwYXRoXSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgLy8gU3BlY2lhbCBoYW5kbGluZyBmb3IgZm9udCBhbmQgZm9udCB3ZWlnaHRcbiAgICAgIGlmIChwYXRoID09PSAnZm9udCcpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuZm9udCA9IHZhbHVlOyAvLyBEaXJlY3RseSB1cGRhdGUgdGhlIHNlbGVjdGVkIGVsZW1lbnQncyBmb250IHByb3BlcnR5XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICBsZXQgb2JqID0gdGhpcy5zZWxlY3RlZEVsZW1lbnQ7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50Py50eXBlID09PSAnVGFibGUnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFsnZmllbGRzTWV0YSddID0gdHlwZW9mIHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5maWVsZHNNZXRhID09PSAnb2JqZWN0JyA/IHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5maWVsZHNNZXRhIDogSlNPTi5wYXJzZSh0aGlzLnNlbGVjdGVkRWxlbWVudFsnZmllbGRzTWV0YSddIHx8IFtdKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRbJ3N1YlRleHQnXSA9IHR5cGVvZiB0aGlzLnNlbGVjdGVkRWxlbWVudD8uc3ViVGV4dCA9PT0gJ29iamVjdCcgPyB0aGlzLnNlbGVjdGVkRWxlbWVudD8uc3ViVGV4dCA6IEpTT04ucGFyc2UodGhpcy5zZWxlY3RlZEVsZW1lbnRbJ3N1YlRleHQnXSk7XG5cbiAgICBrZXlzLmZvckVhY2goKGtleSwgaW5kZXgpID0+IHtcbiAgICAgIGlmICghb2JqW2tleV0pIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG5leHQga2V5IGlzIGEgbnVtYmVyIChhcnJheSBpbmRleClcbiAgICAgICAgY29uc3QgbmV4dEtleSA9IGtleXNbaW5kZXggKyAxXTtcbiAgICAgICAgb2JqW2tleV0gPSBpc05hTihOdW1iZXIobmV4dEtleSkpID8ge30gOiBbXTtcbiAgICAgIH1cbiAgICAgIGlmIChpbmRleCA9PT0ga2V5cy5sZW5ndGggLSAxKSB7XG4gICAgICAgIG9ialtrZXldID0gdmFsdWU7IC8vIEFzc2lnbiB2YWx1ZSB0byBsYXN0IGtleVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqID0gb2JqW2tleV07IC8vIE1vdmUgZGVlcGVyXG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuZWxlbWVudFVwZGF0ZSh0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4LCB0aGlzLnNlbGVjdGVkRWxlbWVudCk7XG4gIH1cbiAgZ2V0U3R5bGVLZXlzKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRFbGVtZW50IHx8ICF0aGlzLnNlbGVjdGVkRWxlbWVudC5zdHlsZSB8fCB0eXBlb2YgdGhpcy5zZWxlY3RlZEVsZW1lbnQuc3R5bGUgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkRWxlbWVudC5zdHlsZSk7XG4gIH0gIFxuXG4gIC8vIFNLUzE5TUFSMjUgdXBkYXRlIGVsZW1lbnQgaW4gc2Vydmllc1xuICB1cGRhdGVFbGVtZW50KGVsZW1lbnQ6IGFueSkge1xuICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmVsZW1lbnRVcGRhdGUodGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCwgZWxlbWVudClcbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScgJiYgdGhpcy5zZWxlY3RDb2x1bW4pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50WydmaWVsZHNNZXRhJ10gPSB0eXBlb2YgdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LmZpZWxkc01ldGEgPT09ICdvYmplY3QnID8gdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LmZpZWxkc01ldGEgOiBKU09OLnBhcnNlKHRoaXMuc2VsZWN0ZWRFbGVtZW50LmZpZWxkc01ldGEgfHwgW10pO1xuICAgICAgY29uc3QgZm91bmRJdGVtID0gdGhpcy5zZWxlY3RlZEVsZW1lbnRbJ2ZpZWxkc01ldGEnXS5maW5kKGl0ZW0gPT4gaXRlbVsndW5pcXVlSWRlbnRpZmllciddID09PSB0aGlzLnNlbGVjdENvbHVtbik7XG4gICAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5zZXRTZWxlY3RlZFRhYmxlRWxlbWVudCh0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4LCB7IGNvbHVtbjogZm91bmRJdGVtPy5hcGlOYW1lIHx8IG51bGwgfSk7XG4gICAgfVxuICB9XG4gIC8vIFNLUzE5TUFSMjUgZ2V0IHZhbHVlIGZyb20gYXJyYXlcbiAgZ2V0VmFsdWVCeUFycmF5UGF0aCh0YXJnZXRBcnJheVBhdGg6IGFueSwgdGFyZ2V0QXJyYXlLZXk6IHN0cmluZywgc2VsZWN0Q29sdW1uOiBzdHJpbmcsIGtleVBhdGg6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50Py50eXBlID09PSAnVGFibGUnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFsnZmllbGRzTWV0YSddID0gdHlwZW9mIHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5maWVsZHNNZXRhID09PSAnb2JqZWN0JyA/IHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5maWVsZHNNZXRhIDogSlNPTi5wYXJzZSh0aGlzLnNlbGVjdGVkRWxlbWVudFsnZmllbGRzTWV0YSddIHx8IFtdKTtcbiAgICB9XG4gICAgY29uc3QgdGFyZ2V0QXJyYXkgPSB0aGlzLmdldERhdGFCeVBhdGgodGFyZ2V0QXJyYXlQYXRoKTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGFyZ2V0QXJyYXkpKSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCBmb3VuZEl0ZW0gPSB0YXJnZXRBcnJheS5maW5kKGl0ZW0gPT4gaXRlbVt0YXJnZXRBcnJheUtleV0gPT09IHNlbGVjdENvbHVtbik7XG5cbiAgICByZXR1cm4gZm91bmRJdGVtID8ga2V5UGF0aC5zcGxpdCgnLicpLnJlZHVjZSgob2JqLCBrZXkpID0+IG9iaj8uW2tleV0sIGZvdW5kSXRlbSkgOiAnJztcbiAgfVxuXG4gIC8vU0tTMTlNQVIyNSBGdW5jdGlvbiB0byB1cGRhdGUgYSB2YWx1ZSBpbiBhbiBhcnJheSBkeW5hbWljYWxseVxuICB1cGRhdGVWYWx1ZUJ5QXJyYXlQYXRoKHRhcmdldEFycmF5UGF0aDogYW55LCB0YXJnZXRBcnJheUtleTogc3RyaW5nLCBzZWxlY3RDb2x1bW46IHN0cmluZywga2V5UGF0aDogc3RyaW5nLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50WydmaWVsZHNNZXRhJ10gPSB0eXBlb2YgdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LmZpZWxkc01ldGEgPT09ICdvYmplY3QnID8gdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LmZpZWxkc01ldGEgOiBKU09OLnBhcnNlKHRoaXMuc2VsZWN0ZWRFbGVtZW50WydmaWVsZHNNZXRhJ10gfHwgW10pO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXRBcnJheSA9IHRoaXMuZ2V0RGF0YUJ5UGF0aCh0YXJnZXRBcnJheVBhdGgpO1xuICAgIC8vIGNvbnNvbGUubG9nKFwidGFyZ2V0QXJyYXlcIiwgdGFyZ2V0QXJyYXksIFwidGFyZ2V0QXJyYXlLZXlcIiwgdGFyZ2V0QXJyYXlLZXksIFwic2VsZWN0Q29sdW1uXCIsIHNlbGVjdENvbHVtbiwgXCJrZXlQYXRoXCIsIGtleVBhdGgsIFwiZXZlbnRcIiwgZXZlbnQpXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRhcmdldEFycmF5KSkgcmV0dXJuO1xuXG4gICAgLy8gRmluZCB0aGUgb2JqZWN0IHRoYXQgbWF0Y2hlcyBzZWxlY3RDb2x1bW5cbiAgICBsZXQgZm91bmRJdGVtID0gdGFyZ2V0QXJyYXkuZmluZChpdGVtID0+IGl0ZW1bdGFyZ2V0QXJyYXlLZXldID09PSBzZWxlY3RDb2x1bW4pO1xuXG4gICAgLy8gSWYgdGhlIGl0ZW0gZG9lcyBub3QgZXhpc3QsIGNyZWF0ZSBhbmQgYWRkIGl0XG4gICAgaWYgKCFmb3VuZEl0ZW0pIHtcbiAgICAgIGZvdW5kSXRlbSA9IHsgW3RhcmdldEFycmF5S2V5XTogc2VsZWN0Q29sdW1uIH07IC8vIEVuc3VyZSB0aGUga2V5IGV4aXN0c1xuICAgICAgdGFyZ2V0QXJyYXkucHVzaChmb3VuZEl0ZW0pO1xuICAgIH1cblxuICAgIC8vIFRyYXZlcnNlIGFuZCBzZXQgdGhlIHZhbHVlXG4gICAgY29uc3Qga2V5cyA9IGtleVBhdGguc3BsaXQoJy4nKTtcbiAgICBsZXQgb2JqID0gZm91bmRJdGVtO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcbiAgICAgIGlmICghb2JqW2tleV0pIG9ialtrZXldID0ge307IC8vIEluaXRpYWxpemUgbWlzc2luZyBvYmplY3RzXG4gICAgICBvYmogPSBvYmpba2V5XTtcbiAgICB9XG5cbiAgICAvLyBBc3NpZ24gdGhlIHZhbHVlIGJhc2VkIG9uIGlucHV0IHR5cGVcbiAgICBjb25zdCBsYXN0S2V5ID0ga2V5c1trZXlzLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgb2JqW2xhc3RLZXldID0gaW5wdXRFbGVtZW50Py50eXBlID09PSAnY2hlY2tib3gnID8gaW5wdXRFbGVtZW50LmNoZWNrZWQgOiBpbnB1dEVsZW1lbnQudmFsdWU7XG4gICAgaWYgKGtleVBhdGggPT09ICdzdW1tYXJ5Q29sdW1uJykge1xuICAgICAgaWYgKG9ialsnc3VtbWFyeVJvdyddID09PSB0cnVlKSB7XG4gICAgICAgIG9ialsnc3VtbWFyeVJvdyddID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXRFbGVtZW50LmNoZWNrZWQgPT09IHRydWUpIHtcbiAgICAgICAgb2JqWydmbGRUeXBlJ10gPSAnY2FsY3VsYXRpb24nXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmpbJ2ZsZFR5cGUnXSA9ICdUZXh0J1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoa2V5UGF0aCA9PT0gJ3N1bW1hcnlSb3cnKSB7XG4gICAgICBpZiAob2JqWydzdW1tYXJ5Q29sdW1uJ10gPT09IHRydWUpIHtcbiAgICAgICAgb2JqWydzdW1tYXJ5Q29sdW1uJ10gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dEVsZW1lbnQuY2hlY2tlZCA9PT0gdHJ1ZSkge1xuICAgICAgICBvYmpbJ2ZsZFR5cGUnXSA9ICdjYWxjdWxhdGlvbidcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9ialsnZmxkVHlwZSddID0gJ1RleHQnXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJykge1xuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSA9IHR5cGVvZiB0aGlzLnNlbGVjdGVkRWxlbWVudD8uZmllbGRzTWV0YSA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRWxlbWVudD8uZmllbGRzTWV0YSkgOiB0aGlzLnNlbGVjdGVkRWxlbWVudFsnZmllbGRzTWV0YSddIHx8IFtdO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZUVsZW1lbnQodGhpcy5zZWxlY3RlZEVsZW1lbnQpXG4gIH1cbiAgZ2V0RGF0YUJ5UGF0aChwYXRoOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJykge1xuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSA9IHR5cGVvZiB0aGlzLnNlbGVjdGVkRWxlbWVudD8uZmllbGRzTWV0YSA9PT0gJ29iamVjdCcgPyB0aGlzLnNlbGVjdGVkRWxlbWVudD8uZmllbGRzTWV0YSA6IEpTT04ucGFyc2UodGhpcy5zZWxlY3RlZEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSB8fCBbXSk7XG4gICAgfVxuICAgIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChvYmosIGtleSkgPT4gb2JqPy5ba2V5XSwgdGhpcy5zZWxlY3RlZEVsZW1lbnQpO1xuICB9XG5cbiAgLy8gU0tTMjVNQVIyNSBpbWFnZSBlZGl0IGZ1bmN0aW9uc1xuICBmbGlwSG9yaXpvbnRhbCgpIHtcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHtcbiAgICAgIC4uLnRoaXMudHJhbnNmb3JtLFxuICAgICAgZmxpcEg6ICF0aGlzLnRyYW5zZm9ybS5mbGlwSFxuICAgIH07XG4gIH1cblxuICBmbGlwVmVydGljYWwoKSB7XG4gICAgdGhpcy50cmFuc2Zvcm0gPSB7XG4gICAgICAuLi50aGlzLnRyYW5zZm9ybSxcbiAgICAgIGZsaXBWOiAhdGhpcy50cmFuc2Zvcm0uZmxpcFZcbiAgICB9O1xuICB9XG5cbiAgcmVzZXRJbWFnZSgpIHtcbiAgICB0aGlzLmNhbnZhc1JvdGF0aW9uID0gMDtcbiAgICB0aGlzLmNyb3BwZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50cmFuc2Zvcm0gPSB7XG4gICAgICB0cmFuc2xhdGVVbml0OiAncHgnLFxuICAgICAgc2NhbGU6IDEsXG4gICAgICByb3RhdGU6IDAsXG4gICAgICBmbGlwSDogZmFsc2UsXG4gICAgICBmbGlwVjogZmFsc2UsXG4gICAgICB0cmFuc2xhdGVIOiAwLFxuICAgICAgdHJhbnNsYXRlVjogMFxuICAgIH07XG4gIH1cblxuICB6b29tT3V0KCkge1xuICAgIHRoaXMudHJhbnNmb3JtID0ge1xuICAgICAgLi4udGhpcy50cmFuc2Zvcm0sXG4gICAgICBzY2FsZTogdGhpcy50cmFuc2Zvcm0uc2NhbGUhIC0gLjFcbiAgICB9O1xuICB9XG5cbiAgem9vbUluKCkge1xuICAgIHRoaXMudHJhbnNmb3JtID0ge1xuICAgICAgLi4udGhpcy50cmFuc2Zvcm0sXG4gICAgICBzY2FsZTogdGhpcy50cmFuc2Zvcm0uc2NhbGUhICsgLjFcbiAgICB9O1xuICB9XG4gIHJvdGF0ZUxlZnQoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgLy8gVXNlIHRpbWVvdXQgYmVjYXVzZSByb3RhdGluZyBpbWFnZSBpcyBhIGhlYXZ5IG9wZXJhdGlvbiBhbmQgd2lsbCBibG9jayB0aGUgdWkgdGhyZWFkXG4gICAgICB0aGlzLmNhbnZhc1JvdGF0aW9uLS07XG4gICAgICB0aGlzLmZsaXBBZnRlclJvdGF0ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcm90YXRlUmlnaHQoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2FudmFzUm90YXRpb24rKztcbiAgICAgIHRoaXMuZmxpcEFmdGVyUm90YXRlKCk7XG4gICAgfSk7XG4gIH1cblxuICBtb3ZlTGVmdCgpIHtcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHtcbiAgICAgIC4uLnRoaXMudHJhbnNmb3JtLFxuICAgICAgdHJhbnNsYXRlSDogdGhpcy50cmFuc2Zvcm0udHJhbnNsYXRlSCEgLSAxXG4gICAgfTtcbiAgfVxuXG4gIG1vdmVSaWdodCgpIHtcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHtcbiAgICAgIC4uLnRoaXMudHJhbnNmb3JtLFxuICAgICAgdHJhbnNsYXRlSDogdGhpcy50cmFuc2Zvcm0udHJhbnNsYXRlSCEgKyAxXG4gICAgfTtcbiAgfVxuXG4gIG1vdmVEb3duKCkge1xuICAgIHRoaXMudHJhbnNmb3JtID0ge1xuICAgICAgLi4udGhpcy50cmFuc2Zvcm0sXG4gICAgICB0cmFuc2xhdGVWOiB0aGlzLnRyYW5zZm9ybS50cmFuc2xhdGVWISArIDFcbiAgICB9O1xuICB9XG5cbiAgbW92ZVVwKCkge1xuICAgIHRoaXMudHJhbnNmb3JtID0ge1xuICAgICAgLi4udGhpcy50cmFuc2Zvcm0sXG4gICAgICB0cmFuc2xhdGVWOiB0aGlzLnRyYW5zZm9ybS50cmFuc2xhdGVWISAtIDFcbiAgICB9O1xuICB9XG4gIHByaXZhdGUgZmxpcEFmdGVyUm90YXRlKCkge1xuICAgIGNvbnN0IGZsaXBwZWRIID0gdGhpcy50cmFuc2Zvcm0uZmxpcEg7XG4gICAgY29uc3QgZmxpcHBlZFYgPSB0aGlzLnRyYW5zZm9ybS5mbGlwVjtcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHtcbiAgICAgIC4uLnRoaXMudHJhbnNmb3JtLFxuICAgICAgZmxpcEg6IGZsaXBwZWRWLFxuICAgICAgZmxpcFY6IGZsaXBwZWRILFxuICAgICAgdHJhbnNsYXRlSDogMCxcbiAgICAgIHRyYW5zbGF0ZVY6IDBcbiAgICB9O1xuICB9XG4gIGFzeW5jIGltYWdlQ3JvcHBlZChldmVudDogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2U2NCA9IGF3YWl0IHRoaXMuY29udmVydEJsb2JUb0Jhc2U2NChldmVudC5vYmplY3RVcmwpO1xuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuaW1hZ2VEYXRhID0gYmFzZTY0O1xuICAgICAgYXdhaXQgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuZWxlbWVudFVwZGF0ZSh0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4LCB0aGlzLnNlbGVjdGVkRWxlbWVudCk7XG4gICAgICAvLyBjb25zb2xlLmxvZygnQ1JPUFBFRCcsIGV2ZW50KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGluIGltYWdlQ3JvcHBlZDpcIiwgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG5cbiAgY3JvcHBlclJlYWR5KHNvdXJjZUltYWdlRGltZW5zaW9uczogRGltZW5zaW9ucykge1xuICAgIC8vIGNvbnNvbGUubG9nKCdDcm9wcGVyIHJlYWR5Jywgc291cmNlSW1hZ2VEaW1lbnNpb25zKTtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuICAvLyBTS1MyNU1BUjI1IGJsb2IgdG8gYmFzZSA2NCBjb252ZXJ0ZXJcbiAgY29udmVydEJsb2JUb0Jhc2U2NChvYmplY3RVcmw6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGZldGNoKG9iamVjdFVybClcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHJlc3BvbnNlLmJsb2IoKSlcbiAgICAgIC50aGVuKGJsb2IgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoYmxvYik7XG4gICAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCBhcyBzdHJpbmcpO1xuICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gZXJyb3IgPT4gcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuICAvLyBTS1MyOE1BUjI1IHFiIGJvb2sgdXBkYXRlIGluIGJvb2sgZWxlbWVudFxuICBjaGlsZEV2ZW50Q2FwdHVyZShldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQucWJSZWZlcmVuY2UgPSBldmVudC52YWx1ZU9iaj8ubmFtZVxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnFiUmVmZXJlbmNlUXVlc3Rpb25zID0gZXZlbnQudmFsdWVPYmo/Lmpzb25Cb2R5XG4gICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuZWxlbWVudFVwZGF0ZSh0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4LCB0aGlzLnNlbGVjdGVkRWxlbWVudCk7XG4gIH1cblxuICAvLyBTS1MyOE1BUjI1IGJvb2sgc2VhcmNoIGRyb3Bkb3duIGVtaXRcbiAgbGlua1RvZ2dsZURyb3Bkb3duKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuaXNMaW5rRHJvcGRvd25PcGVuID0gIXRoaXMuaXNMaW5rRHJvcGRvd25PcGVuO1xuICB9XG5cbiAgLy8gU0tTMjhNQVIyNSBib29rIHNlYXJjaCBkcm9wZG93biBjbG9zZVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uQ2xpY2tPdXRzaWRlKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICh0aGlzLmRyb3Bkb3duICYmICF0aGlzLmRyb3Bkb3duLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgdGhpcy5pc0xpbmtEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgLy8gQVAtMjhNQVIyNSBXaGVuIGRyYWcgc3RhcnRzLCBzdG9yZSB0aGUgaW5kZXhcbiAgb25EcmFnU3RhcnQoZXZlbnQ6IERyYWdFdmVudCwgaWQ6IHN0cmluZykge1xuICAgIHRoaXMuZHJhZ2dlZElkID0gaWQ7XG4gICAgZXZlbnQuZGF0YVRyYW5zZmVyIS5lZmZlY3RBbGxvd2VkID0gXCJtb3ZlXCI7XG4gIH1cblxuICAvLyBBUC0yOE1BUjI1IFByZXZlbnQgZGVmYXVsdCBiZWhhdmlvciB0byBhbGxvdyBkcm9wXG4gIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICAvLyBBUC0yOE1BUjI1IFN3YXAgdGhlIGRyYWdnZWQgaXRlbSB3aXRoIHRoZSBkcm9wcGVkIHBvc2l0aW9uXG4gIG9uRHJvcChldmVudDogRHJhZ0V2ZW50LCBrZXk6IHN0cmluZykge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgdGFyZ2V0SWQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KFwiLm9wdGlvbi1pdGVtc1wiKT8uZ2V0QXR0cmlidXRlKFwiZGF0YS1pZFwiKTtcblxuICAgIGlmICh0aGlzLmRyYWdnZWRJZCAmJiB0YXJnZXRJZCAmJiB0aGlzLmRyYWdnZWRJZCAhPT0gdGFyZ2V0SWQpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkRWxlbWVudFtrZXldO1xuXG4gICAgICBbb3B0aW9uc1t0aGlzLmRyYWdnZWRJZF0sIG9wdGlvbnNbdGFyZ2V0SWRdXSA9IFtvcHRpb25zW3RhcmdldElkXSwgb3B0aW9uc1t0aGlzLmRyYWdnZWRJZF1dO1xuICAgICAgLy8gRmluZCB0aGUgaW5kZXhlcyBvZiB0aGUgZHJhZ2dlZCBhbmQgdGFyZ2V0IG9wdGlvbnNcbiAgICAgIGNvbnN0IGRyYWdnZWRJbmRleCA9IG9wdGlvbnMuZmluZEluZGV4KG9wdGlvbiA9PiBvcHRpb24uaWQgPT09IHRoaXMuZHJhZ2dlZElkKTtcbiAgICAgIGNvbnN0IHRhcmdldEluZGV4ID0gb3B0aW9ucy5maW5kSW5kZXgob3B0aW9uID0+IG9wdGlvbi5pZCA9PT0gdGFyZ2V0SWQpO1xuXG4gICAgICAvLyBTd2FwIHRoZSBpdGVtc1xuICAgICAgaWYgKGRyYWdnZWRJbmRleCAhPT0gLTEgJiYgdGFyZ2V0SW5kZXggIT09IC0xKSB7XG4gICAgICAgIFtvcHRpb25zW2RyYWdnZWRJbmRleF0sIG9wdGlvbnNbdGFyZ2V0SW5kZXhdXSA9IFtvcHRpb25zW3RhcmdldEluZGV4XSwgb3B0aW9uc1tkcmFnZ2VkSW5kZXhdXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmRyYWdnZWRJZCA9IG51bGw7XG4gIH1cbn1cbiIsIjwhLS0gQVAgMjJKQU4yNSAtIEZpZWxkIGFuZCBFbGVtZW50IFByb3BlcnRpZXMgLS0+XG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJ0YWJzXCI+XG4gICAgPGRpdiBjbGFzcz1cInRhYlwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogYWN0aXZlVGFiID09PSAnYXR0cmlidXRlcyd9XCIgKGNsaWNrKT1cInNldEFjdGl2ZVRhYignYXR0cmlidXRlcycpXCI+XG4gICAgICBBdHRyaWJ1dGVzXG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRhYlwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogYWN0aXZlVGFiID09PSAncHJvcGVydHknfVwiIChjbGljayk9XCJzZXRBY3RpdmVUYWIoJ3Byb3BlcnR5JylcIj5cbiAgICAgIFByb3BlcnR5XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRhYlwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogYWN0aXZlVGFiID09PSAnYXBwZWFyYW5jZSd9XCIgKGNsaWNrKT1cInNldEFjdGl2ZVRhYignYXBwZWFyYW5jZScpXCI+XG4gICAgICBBcHBlYXJhbmNlXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnYXR0cmlidXRlcydcIj5cbiAgICA8IS0tIEVsZW1lbnQgUHJvcGVycnRpZXMgLS0+XG4gICAgPCEtLSBBUC0wNk1BUjI1IFNlbGVjdCBlbGVtZW50IHR5cGUgc2hvdyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiZ2V0UHJvcGVydGllcygpXCI+XG4gICAgICA8IS0tIFNLUzI1TUFSMjUgdGhpcyBpcyBmb3IgaW1hZ2UgZWRpdCAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEVsZW1lbnQ/LnR5cGUgPT09ICdJbWFnZSdcIj5cbiAgICAgICAgPGltYWdlLWNyb3BwZXIgKm5nSWY9XCJzZWxlY3RlZEVsZW1lbnQuaW1hZ2VEYXRhIFwiIFtpbWFnZUJhc2U2NF09XCJzZWxlY3RlZEVsZW1lbnQub3JnSW1hZ2VEYXRhXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIiBbYWxpZ25JbWFnZV09XCJhbGlnbkltYWdlXCIgW3JvdW5kQ3JvcHBlcl09XCJyb3VuZENyb3BwZXJcIiBbYmFja2dyb3VuZENvbG9yXT1cIid3aGl0ZSdcIlxuICAgICAgICAgIGltYWdlQWx0VGV4dD1cIkFsdGVybmF0aXZlIGltYWdlIHRleHRcIiBbYWxsb3dNb3ZlSW1hZ2VdPVwiZmFsc2VcIiBbaGlkZVJlc2l6ZVNxdWFyZXNdPVwiZmFsc2VcIlxuICAgICAgICAgIFtjYW52YXNSb3RhdGlvbl09XCJjYW52YXNSb3RhdGlvblwiIFthc3BlY3RSYXRpb109XCJhc3BlY3RSYXRpb1wiIFtjb250YWluV2l0aGluQXNwZWN0UmF0aW9dPVwiZmFsc2VcIlxuICAgICAgICAgIFttYWludGFpbkFzcGVjdFJhdGlvXT1cImZhbHNlXCIgW2Nyb3BwZXJTdGF0aWNXaWR0aF09XCJjcm9wcGVyU3RhdGljV2lkdGhcIlxuICAgICAgICAgIFtjcm9wcGVyU3RhdGljSGVpZ2h0XT1cImNyb3BwZXJTdGF0aWNIZWlnaHRcIiBbY3JvcHBlck1pbldpZHRoXT1cImNyb3BwZXJNaW5XaWR0aFwiXG4gICAgICAgICAgW2Nyb3BwZXJNaW5IZWlnaHRdPVwiY3JvcHBlck1pbkhlaWdodFwiIFtjcm9wcGVyTWF4V2lkdGhdPVwiY3JvcHBlck1heFdpZHRoXCJcbiAgICAgICAgICBbY3JvcHBlck1heEhlaWdodF09XCJjcm9wcGVyTWF4SGVpZ2h0XCIgW3Jlc2V0Q3JvcE9uQXNwZWN0UmF0aW9DaGFuZ2VdPSd0cnVlJyBbKGNyb3BwZXIpXT1cImNyb3BwZXJcIlxuICAgICAgICAgIFsodHJhbnNmb3JtKV09XCJ0cmFuc2Zvcm1cIiBbb25seVNjYWxlRG93bl09XCJ0cnVlXCIgb3V0cHV0PVwiYmxvYlwiIGZvcm1hdD1cInBuZ1wiXG4gICAgICAgICAgKGltYWdlQ3JvcHBlZCk9XCJpbWFnZUNyb3BwZWQoJGV2ZW50KVwiIChjcm9wcGVyUmVhZHkpPVwiY3JvcHBlclJlYWR5KCRldmVudClcIj48L2ltYWdlLWNyb3BwZXI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWxlY3RlZEVsZW1lbnQuaW1hZ2VEYXRhIFwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiAycHg7XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJyb3RhdGVMZWZ0KClcIiB0aXRsZT1cIlJvdGF0ZSBMZWZ0XCI+4p+yPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJyb3RhdGVSaWdodCgpXCIgdGl0bGU9XCJSb3RhdGUgUmlnaHRcIj7in7M8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgbG9nby1pY29uXCIgKGNsaWNrKT1cInpvb21PdXQoKVwiIHRpdGxlPVwiWm9vbSBPdXRcIj4tPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJ6b29tSW4oKVwiIHRpdGxlPVwiWm9vbSBJblwiPis8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgbG9nby1pY29uXCIgKGNsaWNrKT1cIm1vdmVMZWZ0KClcIiB0aXRsZT1cIk1vdmUgTGVmdFwiPuKGkDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsb2dvLWljb25cIiAoY2xpY2spPVwibW92ZVJpZ2h0KClcIiB0aXRsZT1cIk1vdmUgUmlnaHRcIj7ihpI8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgbG9nby1pY29uXCIgKGNsaWNrKT1cIm1vdmVVcCgpXCIgdGl0bGU9XCJNb3ZlIFVwXCI+4oaRPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJtb3ZlRG93bigpXCIgdGl0bGU9XCJNb3ZlIERvd25cIj7ihpM8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgbG9nby1pY29uXCIgKGNsaWNrKT1cImZsaXBIb3Jpem9udGFsKClcIiBbY2xhc3MuZW5hYmxlZF09XCJ0cmFuc2Zvcm0uZmxpcEhcIlxuICAgICAgICAgICAgdGl0bGU9XCJGbGlwIEhvcml6b250YWxseVwiPuKGlDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsb2dvLWljb25cIiAoY2xpY2spPVwiZmxpcFZlcnRpY2FsKClcIiBbY2xhc3MuZW5hYmxlZF09XCJ0cmFuc2Zvcm0uZmxpcFZcIlxuICAgICAgICAgICAgdGl0bGU9XCJGbGlwIFZlcnRpY2FsbHlcIj7ihpU8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgbG9nby1pY29uXCIgKGNsaWNrKT1cInJlc2V0SW1hZ2UoKVwiIHRpdGxlPVwiUmVzZXRcIj7DlzwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBTS1MyOE1BUjI1IHNlYXJjaCBib29rIHNwZWNpZmljIGZvciBib29rIGVsZW1lbnQgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRFbGVtZW50Py50eXBlID09PSAnQm9vaydcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1zbVwiPlNlYXJjaCBCb29rPC9sYWJlbD5cbiAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogMnB4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIj5cbiAgICAgICAgICA8bnh0LXNlYXJjaC1ib3ggW3F1ZXN0aW9uXT1cInNlbGVjdGVkRWxlbWVudFwiIFthcGlNZXRhXT1cImJvb2tTdWJ0ZXh0XCIgW3BsYWNlSG9sZGVyVGV4dF09XCInU2VhcmNoLi4uJ1wiXG4gICAgICAgICAgICAoc2VhcmNoVmFsdWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LnZhbHVlKVwiPlxuICAgICAgICAgIDwvbnh0LXNlYXJjaC1ib3g+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmstaWNvblwiPlxuICAgICAgICAgICAgPHN2ZyAoY2xpY2spPVwibGlua1RvZ2dsZURyb3Bkb3duKCRldmVudClcIiBmaWxsPVwiIzAwMDAwMFwiIHZlcnNpb249XCIxLjFcIiBpZD1cIkNhcGFfMVwiXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB3aWR0aD1cIjI0cHhcIiBoZWlnaHQ9XCIyNHB4XCJcbiAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA0NTAgNDUwXCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIj5cbiAgICAgICAgICAgICAgPGc+XG4gICAgICAgICAgICAgICAgPGc+XG4gICAgICAgICAgICAgICAgICA8Zz5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zMTguMTUsMjMwLjE5NWw3Ny45MzQtNzcuOTM3YzMxLjg5NC0zMS44OTIsMzEuODk0LTgzLjc4Mi0wLjAwNC0xMTUuNjc0bC0xMi42Ni0xMi42NlxuICAgICAgICAgIGMtMzEuODkzLTMxLjg5Ni04My43OC0zMS44OTYtMTE1LjY3NC0wLjAwNGwtNzcuOTM3LDc3LjkzNGMtMTcuNTg4LDE3LjU4OC0yNS40NTcsNDEuMjY0LTIzLjY0Niw2NC4zMTFcbiAgICAgICAgICBjLTIzLjA0NS0xLjgxMy00Ni43MjIsNi4wNTYtNjQuMzA4LDIzLjY0N0wyMy45MiwyNjcuNzQ4Yy0zMS44OTQsMzEuODg5LTMxLjg5NCw4My43NzksMCwxMTUuNjc0bDEyLjY2NCwxMi42NjJcbiAgICAgICAgICBjMzEuODkzLDMxLjg5Myw4My43ODMsMzEuODkzLDExNS42NzQsMGw3Ny45MzUtNzcuOTM2YzE3LjU5Mi0xNy41OSwyNS40NTktNDEuMjY2LDIzLjY0Ny02NC4zMDlcbiAgICAgICAgICBDMjc2Ljg4NCwyNTUuNjU0LDMwMC41NiwyNDcuNzgzLDMxOC4xNSwyMzAuMTk1eiBNMjAyLjY1MywyOTAuNjA1bC03Ny45MzYsNzcuOTM4Yy0xNi43MDUsMTYuNzAzLTQzLjg4OSwxNi43MDMtNjAuNTksMFxuICAgICAgICAgIGwtMTIuNjY2LTEyLjY2NmMtMTYuNzA1LTE2LjcwMS0xNi43MDMtNDMuODg1LDAtNjAuNTk0bDc3LjkzNi03Ny45MzJjMTQuMTQtMTQuMTQxLDM1Ljc3OS0xNi4zMDYsNTIuMjI2LTYuNTE2bC0zMi4zMDIsMzIuMzA3XG4gICAgICAgICAgYy03LjYwNiw3LjYwNC03LjYwNiwxOS45MzgsMCwyNy41NDFjNy42MDUsNy42MDcsMTkuOTM3LDcuNjA3LDI3LjU0MSwwbDMyLjMwNi0zMi4zMDNcbiAgICAgICAgICBDMjE4Ljk1OSwyNTQuODI4LDIxNi43OTUsMjc2LjQ2OSwyMDIuNjUzLDI5MC42MDV6IE0yMzguMzgyLDIwOS4xNjlsMzIuMjk5LTMyLjMwNmM3LjYwOC03LjYwMiw3LjYwOC0xOS45MzUsMC0yNy41MzhcbiAgICAgICAgICBjLTcuNjA0LTcuNjEtMTkuOTM2LTcuNjEtMjcuNTQxLTAuMDA0bC0zMi4zMDMsMzIuMzAzYy05Ljc5MS0xNi40NDYtNy42MjctMzguMDg3LDYuNTE0LTUyLjIyNmw3Ny45MzUtNzcuOTM1XG4gICAgICAgICAgYzE2LjcwNy0xNi43MDcsNDMuODktMTYuNzA3LDYwLjU5NCwwbDEyLjY2NCwxMi42NjRjMTYuNzA1LDE2LjcwNSwxNi43MDUsNDMuODg2LDAsNjAuNTkxbC03Ny45MzYsNzcuOTM3XG4gICAgICAgICAgQzI3Ni40NjgsMjE2Ljc5NywyNTQuODI4LDIxOC45NTksMjM4LjM4MiwyMDkuMTY5elwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMzQzLjQ2NiwyNjEuNDY1Yy00NS4yODcsMC04MiwzNi43MTMtODIsODJzMzYuNzEzLDgyLDgyLDgyYzQ1LjI4NiwwLDgyLTM2LjcxMyw4Mi04MlMzODguNzUzLDI2MS40NjUsMzQzLjQ2NiwyNjEuNDY1elxuICAgICAgICAgICBNMzcyLjUwNSwzMzMuNTY0bC01Ni4wNDYsNTYuMTA0Yy0wLjIzOSwwLjIzOC0wLjUzNiwwLjQxLTAuODYyLDAuNDk2bC0yMi4zMTUsNS44NWMtMC42NDksMC4xNjgtMS4zNDctMC4wMi0xLjgyMi0wLjQ5NFxuICAgICAgICAgIGMtMC40NzctMC40NzktMC42NjYtMS4xNzItMC40OTYtMS44MjRsNS44MjYtMjIuMzE4YzAuMDg0LTAuMzI2LDAuMjU2LTAuNjI3LDAuNDk0LTAuODYzbDU2LjA0Ny01Ni4xMDRcbiAgICAgICAgICBjMC43NDItMC43NDIsMS45NDUtMC43NDQsMi42ODgtMC4wMDJsNC41NDgsNC41NDFjMC43MzksMC43NCwwLjc0MSwxLjk0MywwLDIuNjg4bC0zNy40MzMsMzcuNDcxbDQuNzA5LDQuNzAzbDM3LjQzNS0zNy40NzFcbiAgICAgICAgICBjMC43MzktMC43NDIsMS45NC0wLjc0MiwyLjY4Mi0wLjAwMmw0LjU1LDQuNTQxQzM3My4yNSwzMzEuNjE3LDM3My4yNSwzMzIuODIyLDM3Mi41MDUsMzMzLjU2NHogTTM5NS40NzIsMzEwLjU3NGwtMTcsMTcuMDE4XG4gICAgICAgICAgYy0wLjczOSwwLjc0NC0xLjk0MiwwLjc0NC0yLjY4NSwwLjAwMmwtMTYuNDg5LTE2LjQ3NWMtMC43NDQtMC43NC0wLjc0NC0xLjk0My0wLjAwMi0yLjY4OGwxNy0xNy4wMlxuICAgICAgICAgIGMwLjc0MS0wLjc0LDEuOTQ0LTAuNzQsMi42ODgtMC4wMDJsMTYuNDg3LDE2LjQ3N0MzOTYuMjE2LDMwOC42MjksMzk2LjIxNiwzMDkuODMyLDM5NS40NzIsMzEwLjU3NHpcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluay1kcm9wZG93bi1tZW51XCIgKm5nSWY9XCJpc0xpbmtEcm9wZG93bk9wZW5cIiAjZHJvcGRvd24+XG4gICAgICAgICAgICAgIDxsYWJlbD5FbmRwb2ludDo8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImJvb2tTdWJ0ZXh0LmVuZHBvaW50XCIgLz5cblxuICAgICAgICAgICAgICA8bGFiZWw+VmFyaWFibGU6PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJib29rU3VidGV4dC52YXJpYWJsZVwiIC8+XG5cbiAgICAgICAgICAgICAgPGxhYmVsPkZpZWxkOjwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtuZ01vZGVsXT1cImZpZWxkQXNTdHJpbmdcIiAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVGaWVsZCgkZXZlbnQpXCIgLz5cblxuICAgICAgICAgICAgICA8bGFiZWw+RGVmYXVsdCBGaWVsZDo8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImJvb2tTdWJ0ZXh0LmRlZmF1bHRGaWVsZFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByb3Agb2YgZ2V0UHJvcGVydGllcygpLmVsZW1lbnRQcm9wc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCAqbmdJZj1cInByb3AudHlwZSAhPT0gJ2NoZWNrYm94JyAmJiBwcm9wLnR5cGUgIT09ICdzdWJRdWVzdGlvbidcIiBjbGFzcz1cInRleHQtc21cIj57eyBwcm9wLmxhYmVsXG4gICAgICAgICAgICB9fTwvbGFiZWw+XG5cbiAgICAgICAgICA8IS0tIFRleHQgSW5wdXQgLS0+XG4gICAgICAgICAgPGlucHV0ICpuZ0lmPVwicHJvcC50eXBlID09PSAndGV4dCdcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJwcm9wLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJoZWFkZXJTZWxlY3QgPyBib29rLnJlY29yZHNbMF0udGl0bGUgOiAoc2VsZWN0ZWRFbGVtZW50Py50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgPyBnZXRWYWx1ZUJ5QXJyYXlQYXRoKHByb3AudGFyZ2V0QXJyYXksIHByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbiwgcHJvcC5rZXkgKSA6IGdldFZhbHVlQnlQYXRoKHByb3Aua2V5KSApIDogIGdldFZhbHVlQnlQYXRoKHByb3Aua2V5KSlcIlxuICAgICAgICAgICAgKGlucHV0KT1cImhlYWRlclNlbGVjdCA/IHVwZGF0ZVRpdGxlKCRldmVudC50YXJnZXQudmFsdWUpIDogKHNlbGVjdGVkRWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJyA/IChwcm9wLnRhcmdldEFycmF5ID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4sIHByb3Aua2V5LCAkZXZlbnQpIDogc2V0VmFsdWVCeVBhdGgocHJvcC5rZXksICRldmVudC50YXJnZXQudmFsdWUpICkgOiBzZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSkpXCJcbiAgICAgICAgICAgIFtjbGFzcy5yZWFkLW9ubHldPVwic2VsZWN0ZWRFbGVtZW50LnJlYWRPbmx5XCIgW3JlYWRvbmx5XT1cInNlbGVjdGVkRWxlbWVudC5yZWFkT25seVwiIC8+XG5cbiAgICAgICAgICA8IS0tIGhlbHAgdGV4dCAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC5rZXkgPT09ICdoZWxwVGV4dCcgJiYgc2VsZWN0ZWRFbGVtZW50LmhlbHBUZXh0XCI+e3tcbiAgICAgICAgICAgIHNlbGVjdGVkRWxlbWVudC5oZWxwVGV4dCB9fTwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBxdWVzdGlvbk51bWJlciAtLT5cbiAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJwcm9wLmtleSA9PT0gJ3F1ZXN0aW9uTnVtYmVyJ1wiIHR5cGU9XCJudW1iZXJcIiBbdmFsdWVdPVwic2VsZWN0ZWRFbGVtZW50LnF1ZXN0aW9uTnVtYmVyXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJzZXRWYWx1ZUJ5UGF0aCgncXVlc3Rpb25OdW1iZXInLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIC8+XG5cbiAgICAgICAgICA8IS0tIGZpbGUgLS0+XG4gICAgICAgICAgPCEtLSBBZGQgdGhpcyBpbnNpZGUgdGhlIGVsZW1lbnRQcm9wcyBsb29wIHdoZXJlIG90aGVyIGlucHV0cyBhcmUgcmVuZGVyZWQgLS0+XG4gICAgICAgICAgPHNlbGVjdCAqbmdJZj1cInByb3AudHlwZSA9PT0gJ3NlbGVjdCcgJiYgcHJvcC5rZXkgPT09ICdzdXBwb3J0VHlwZSdcIiBbdmFsdWVdPVwic2VsZWN0ZWRFbGVtZW50W3Byb3Aua2V5XVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInNldFZhbHVlQnlQYXRoKHByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBmaWxlIGNhdGVnb3J5PC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcHJvcC5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPiB7eyBvcHRpb24ubGFiZWwgfX0gPC9vcHRpb24+XG4gICAgICAgICAgPC9zZWxlY3Q+XG5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC50eXBlID09PSAnY2hlY2tib3gnXCI+XG5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZEVsZW1lbnQudHlwZSA9PT0gJ1RhYmxlJyA/IChwcm9wLnRhcmdldEFycmF5ID8gZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4sIHByb3Aua2V5ICkgOiBnZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSkgKTogIGdldFZhbHVlQnlQYXRoKHByb3Aua2V5KSBcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIiBzZWxlY3RlZEVsZW1lbnQudHlwZSA9PT0gJ1RhYmxlJyA/IChwcm9wLnRhcmdldEFycmF5ID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4sIHByb3Aua2V5LCAkZXZlbnQpIDogb25Ub2dnbGVDaGFuZ2UocHJvcC5rZXksICRldmVudCkgKSA6IG9uVG9nZ2xlQ2hhbmdlKHByb3Aua2V5LCAkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b2dnbGUtbGFiZWxcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMTBweDtcIj57eyBwcm9wLmxhYmVsIH19PC9zcGFuPlxuXG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tQVAtMTFKVU4yNSAtIFNob3cgdGhpcyBzZWN0aW9uIG9ubHkgaWYgdGhlIHByb3BlcnR5IGtleSBpcyAncHJpbWFyeUtleScgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb3Aua2V5ID09PSAncHJpbWFyeUtleSdcIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJnZXRWYWx1ZUJ5UGF0aCgncHJpbWFyeUtleScpXCIgW2Rpc2FibGVkXT1cIiFnZXRWYWx1ZUJ5UGF0aCgncHJpbWFyeUtleScpICYmIGlzQW5vdGhlcklkU2VsZWN0ZWQoKVwiIChjaGFuZ2UpPVwib25Ub2dnbGVDaGFuZ2UoJ3ByaW1hcnlLZXknLCAkZXZlbnQpXCIvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b2dnbGUtbGFiZWxcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMTBweDtcIj5wcmltYXJ5S2V5PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBTS1MyME1BUjI1IFN1YnF1ZXN0aW9uIFR5cGUgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ3N1YlF1ZXN0aW9uJ1wiPlxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3c7IGdhcDogMTBweDsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cbiAgICAgICAgICAgICAgPGRpdj57eyBwcm9wLmxhYmVsIH19PC9kaXY+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkRWxlbWVudC50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgPyBnZXRWYWx1ZUJ5QXJyYXlQYXRoKHByb3AudGFyZ2V0QXJyYXksIHByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbiwgcHJvcC5rZXkgKSA6IGdldFZhbHVlQnlQYXRoKHByb3Aua2V5KSApOiAgZ2V0VmFsdWVCeVBhdGgocHJvcC5rZXkpIFwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIgc2VsZWN0ZWRFbGVtZW50LnR5cGUgPT09ICdUYWJsZScgPyAocHJvcC50YXJnZXRBcnJheSA/IHVwZGF0ZVZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uLCBwcm9wLmtleSwgJGV2ZW50KSA6IG9uVG9nZ2xlQ2hhbmdlKHByb3Aua2V5LCAkZXZlbnQpICkgOiBvblRvZ2dsZUNoYW5nZShwcm9wLmtleSwgJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gU0tTMjBNQVIyNSBSZW5kZXIgc3VicXVlc3Rpb25zIHdoZW4gY2hlY2tib3ggaXMgY2hlY2tlZCAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZEVsZW1lbnQudHlwZSA9PT0gJ1RhYmxlJyA/IChwcm9wLnRhcmdldEFycmF5ID8gZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4sIHByb3Aua2V5ICkgOiBnZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSkgKTogIGdldFZhbHVlQnlQYXRoKHByb3Aua2V5KVwiPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdWJQcm9wIG9mIHByb3Auc3ViUXVlc3Rpb25cIlxuICAgICAgICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2U3ZjJmZjsgcGFkZGluZzogOHB4OyBib3JkZXItcmFkaXVzOiA0cHg7XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBzdWJQcm9wLmxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICdhcnJheSdcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBJdGVyYXRlIG92ZXIgZmlsdGVyZWQgY29sdW1ucyB0byBkaXNwbGF5IGNoZWNrYm94ZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBmaWx0ZXJlZENvbHVtbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic3ViUHJvcC5vcGVyYW5kcyA/IHN1YlByb3Aub3BlcmFuZHMuaW5jbHVkZXMoY29sdW1uLmFwaU5hbWUpIDogZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2Uoc3ViUHJvcC50YXJnZXRBcnJheSxzdWJQcm9wLnRhcmdldEFycmF5S2V5LHN1YlByb3Aua2V5LCBjb2x1bW4uYXBpTmFtZSwgJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sdW1uLmFwaU5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPCEtLSBTS1MyMU1BUjI1IE5ldyByYWRpbyB0eXBlIC0tPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1YlByb3AudHlwZSA9PT0gJ3JhZGlvJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgZmlsdGVyZWRDb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYWRpb1wiIFtuYW1lXT1cInN1YlByb3Aua2V5XCIgW3ZhbHVlXT1cImNvbHVtbi5hcGlOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0VmFsdWVCeUFycmF5UGF0aChzdWJQcm9wLnRhcmdldEFycmF5LCBzdWJQcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4sIHN1YlByb3Aua2V5KSA9PT0gY29sdW1uLmFwaU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUmFkaW9DaGFuZ2Uoc3ViUHJvcC50YXJnZXRBcnJheSwgc3ViUHJvcC50YXJnZXRBcnJheUtleSwgc3ViUHJvcC5rZXksIGNvbHVtbi5hcGlOYW1lKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sdW1uLmFwaU5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPCEtLSBTS1MyME1BUjI1IEFkZCBtb3JlIHN1YnByb3BlcnR5IHR5cGVzIGFzIG5lZWRlZCAtLT5cbiAgICAgICAgICAgICAgICAgIDwhLS0gSW5zaWRlIHRoZSBzdWJQcm9wIG5nRm9yIGxvb3AgLS0+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICd0ZXh0J1wiIHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cInN1YlByb3AucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRFbGVtZW50LnR5cGUgPT09ICdUYWJsZScgPyAoc3ViUHJvcC50YXJnZXRBcnJheSA/IGdldFZhbHVlQnlBcnJheVBhdGgoc3ViUHJvcC50YXJnZXRBcnJheSwgc3ViUHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uLCBzdWJQcm9wLmtleSApIDogZ2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXkpICkgOiBnZXRWYWx1ZUJ5UGF0aChzdWJQcm9wLmtleSlcIlxuICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwic2VsZWN0ZWRFbGVtZW50LnR5cGUgPT09ICdUYWJsZScgPyAoc3ViUHJvcC50YXJnZXRBcnJheSA/IHVwZGF0ZVZhbHVlQnlBcnJheVBhdGgoc3ViUHJvcC50YXJnZXRBcnJheSwgc3ViUHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uLCBzdWJQcm9wLmtleSwgJGV2ZW50KSA6IHNldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LnZhbHVlKSApIDogc2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXksICRldmVudC50YXJnZXQudmFsdWUpXCIgLz5cblxuICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwic3ViUHJvcC50eXBlID09PSAnYm9vbGVhbidcIiB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJnZXRWYWx1ZUJ5UGF0aChzdWJQcm9wLmtleSlcIlxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LmNoZWNrZWQpXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxzZWxlY3QgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICdzZWxlY3QnXCIgW3ZhbHVlXT1cImdldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5KVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXksICRldmVudC50YXJnZXQudmFsdWUpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzdWJQcm9wLm9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCI+e3sgb3B0aW9uIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInN1YlByb3AudHlwZSA9PT0gJ2NoZWNrYm94J1wiIHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImdldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5KVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXksICRldmVudC50YXJnZXQuY2hlY2tlZClcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBTS1MyME1BUjI1IFRleHQgQWxpZ24gQnV0dG9ucyAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC50eXBlID09PSAnYWxpZ24nXCI+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcHJvcC5vcHRpb25zXCIgKGNsaWNrKT1cIm9uQWxpZ25TZWxlY3Qob3B0aW9uLnZhbHVlKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2VsZWN0ZWRFbGVtZW50Py50ZXh0QWxpZ24gPT09IG9wdGlvbi52YWx1ZVwiIFt0aXRsZV09XCJvcHRpb24udmFsdWVcIj5cbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cIicuLi9hc3NldHMvaWNvbnMvJyArIG9wdGlvbi5pY29uICsgJy5zdmcnXCIgW2FsdF09XCJvcHRpb24udmFsdWVcIiBjbGFzcz1cImljb24tc2l6ZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzdHlsZSdcIj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wLm9wdGlvbnNcIiAoY2xpY2spPVwib25TdHlsZVNlbGVjdChvcHRpb24udmFsdWUpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpc1N0eWxlQWN0aXZlKG9wdGlvbi52YWx1ZSlcIiBbdGl0bGVdPVwib3B0aW9uLnZhbHVlXCI+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCInLi4vYXNzZXRzL2ljb25zLycgKyBvcHRpb24uaWNvbiArICcuc3ZnJ1wiIFthbHRdPVwib3B0aW9uLnZhbHVlXCIgY2xhc3M9XCJpY29uLXNpemVcIiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIEZpZWxkIFNpemUgQ29udHJvbHMgLS0+XG4gICAgICAgICAgPCEtLSBBUCAyNUZFQjI1IC0gQ2hhbmdlIGtleSBzaXplIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLmtleSA9PT0gJ3NpemUnXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFt2YWx1ZV09XCJzZWxlY3RlZEVsZW1lbnQ/LnNpemVcIiAoaW5wdXQpPVwic2V0VmFsdWVCeVBhdGgoJ3NpemUnLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2l6ZS1pbnB1dFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIEFQLTE5TUFSMjUgTGluZSBQcm9wZXJ0aWVzIC0tPlxuICAgICAgICAgIDwhLS0gUGFkZGluZyBUb3AgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb3Aua2V5ID09PSAncGFkZGluZ1RvcCdcIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgW3BsYWNlaG9sZGVyXT1cInByb3AucGxhY2Vob2xkZXJcIiBbdmFsdWVdPVwic2VsZWN0ZWRFbGVtZW50Py5wYWRkaW5nVG9wXCJcbiAgICAgICAgICAgICAgKGlucHV0KT1cInNldFZhbHVlQnlQYXRoKCdwYWRkaW5nVG9wJywgJGV2ZW50LnRhcmdldC52YWx1ZSlcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBQYWRkaW5nIEJvdHRvbSAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC5rZXkgPT09ICdwYWRkaW5nQm90dG9tJ1wiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBbcGxhY2Vob2xkZXJdPVwicHJvcC5wbGFjZWhvbGRlclwiIFt2YWx1ZV09XCJzZWxlY3RlZEVsZW1lbnQ/LnBhZGRpbmdCb3R0b21cIlxuICAgICAgICAgICAgICAoaW5wdXQpPVwic2V0VmFsdWVCeVBhdGgoJ3BhZGRpbmdCb3R0b20nLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIExpbmUgU3R5bGUgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb3Aua2V5ID09PSAnbGluZVN0eWxlJ1wiPlxuICAgICAgICAgICAgPHNlbGVjdCBbdmFsdWVdPVwic2VsZWN0ZWRFbGVtZW50Py5saW5lU3R5bGVcIiAoY2hhbmdlKT1cInNldFZhbHVlQnlQYXRoKCdsaW5lU3R5bGUnLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcHJvcC5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvblwiPnt7IG9wdGlvbiB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIENvbG9yIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLmtleSA9PT0gJ2NvbG9yJ1wiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIFt2YWx1ZV09XCJzZWxlY3RlZEVsZW1lbnQ/LmNvbG9yXCJcbiAgICAgICAgICAgICAgKGlucHV0KT1cInNldFZhbHVlQnlQYXRoKCdjb2xvcicsICRldmVudC50YXJnZXQudmFsdWUpXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgICA8IS0tIEFQIDIzTUFZMjUgLSBBY3Rpb24gQnV0dG9uIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC5rZXkgPT09ICd0aXRsZSdcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDE1cHg7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IHBhZGRpbmc6IDIwcHg7IGJvcmRlci1yYWRpdXM6IDEycHg7IGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0taGVhZGVyXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3sgcHJvcC5sYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhZGROZXdCdXR0b24oKVwiIGNsYXNzPVwiYWRkLWJ1dHRvblwiPisgQWRkIEJ1dHRvbjwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBidG4gb2YgYm9vaz8ucXVlc3Rpb25ib29rPy5hY3Rpb24gfHwgW107IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cImJ1dHRvbi1jb25maWctY2FyZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGxhYmVsPkJ1dHRvbiBOYW1lPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJidG4ubmFtZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQnV0dG9uUHJvcGVydHlDaGFuZ2UoaSwgJ25hbWUnLCAkZXZlbnQpXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBidXR0b24gbmFtZVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGxhYmVsPkV2ZW50IE5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImJ0bi5ldmVudHRvZW1pdFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQnV0dG9uUHJvcGVydHlDaGFuZ2UoaSwgJ2V2ZW50dG9lbWl0JywgJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiRXZlbnQgdG8gZW1pdFwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGxhYmVsPkFsdDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiYnRuLmFsdFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQnV0dG9uUHJvcGVydHlDaGFuZ2UoaSwgJ2FsdCcsICRldmVudClcIiBwbGFjZWhvbGRlcj1cIkJ1dHRvbiBhbHQgdGV4dFwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGxhYmVsPkVuZHBvaW50PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJidG4uZW5kcG9pbnRcIiAobmdNb2RlbENoYW5nZSk9XCJvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGksICdlbmRwb2ludCcsICRldmVudClcIiBwbGFjZWhvbGRlcj1cIkFQSSBlbmRwb2ludFwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGxhYmVsPk1ldGhvZDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJidG4ubWV0aG9kXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25CdXR0b25Qcm9wZXJ0eUNoYW5nZShpLCAnbWV0aG9kJywgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIidHRVQnXCI+R0VUPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiJ1BPU1QnXCI+UE9TVDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIidQVVQnXCI+UFVUPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiJ0RFTEVURSdcIj5ERUxFVEU8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgICAgICA8IS0tIEFQIDIzTUFZMjUgLSBBY3Rpb24gU3R5bGUgRmllbGRzIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGxhYmVsPkJhY2tncm91bmQgQ29sb3I8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgWyhuZ01vZGVsKV09XCJidG4uYmdDb2xvclwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQnV0dG9uUHJvcGVydHlDaGFuZ2UoaSwgJ2JnQ29sb3InLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICA8bGFiZWw+Qm9yZGVyIFJhZGl1czwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtaW49XCIwXCIgbWF4PVwiNTBcIiBbKG5nTW9kZWwpXT1cImJ0bi5ib3JkZXJSYWRpdXNcIiBcbiAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQnV0dG9uUHJvcGVydHlDaGFuZ2UoaSwgJ2JvcmRlclJhZGl1cycsICRldmVudClcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgYnRuLmJvcmRlclJhZGl1cyB9fXB4PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxsYWJlbD5CdXR0b24gV2lkdGggKHB4KTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgWyhuZ01vZGVsKV09XCJidG4ud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25CdXR0b25Qcm9wZXJ0eUNoYW5nZShpLCAnd2lkdGgnLCAkZXZlbnQpXCIgbWluPVwiNTBcIiBwbGFjZWhvbGRlcj1cIkVudGVyIHdpZHRoIGluIHB4XCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGxhYmVsPlRleHQgQ29sb3I8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgWyhuZ01vZGVsKV09XCJidG4udGV4dENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQnV0dG9uUHJvcGVydHlDaGFuZ2UoaSwgJ3RleHRDb2xvcicsICRldmVudClcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICA8bGFiZWw+UG9zaXRpb24gKCUpPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIG1pbj1cIjBcIiBtYXg9XCIxMDBcIiBbKG5nTW9kZWwpXT1cImJ0bi5wb3NpdGlvblBlcmNlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25CdXR0b25Qcm9wZXJ0eUNoYW5nZShpLCAncG9zaXRpb25QZXJjZW50JywgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBidG4ucG9zaXRpb25QZXJjZW50IH19JTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlQnV0dG9uKGJ0bilcIiBjbGFzcz1cInJlbW92ZS1idXR0b25cIj7DlyBSZW1vdmU8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwidGFiLWNvbnRlbnRcIiAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gJ3Byb3BlcnR5J1wiPlxuICAgIDwhLS0gRmllbGQgRWxlbWVudHMgUHJvcGVydGllcyAtLT5cbiAgICA8IS0tIEFQLTA2TUFSMjUgU2hvdyBlbGVtZW50cyBJRCAgLS0+XG4gICAgPGRpdiAqbmdJZj1cImdldFByb3BlcnRpZXMoKVwiPlxuICAgICAgPGxhYmVsPkxhYmVsIElkPC9sYWJlbD5cbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDEzcHg7IHBhZGRpbmc6IDExcHg7IGJvcmRlci1yYWRpdXM6IDVweDsgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjhmODsgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcIj5cbiAgICAgICAge3sgaGVhZGVyU2VsZWN0ID8gYm9va0lkIDogc2VsZWN0ZWRFbGVtZW50LmlkIH19PC9kaXY+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wIG9mIGdldFByb3BlcnRpZXMoKS5maWVsZFByb3BzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1zbVwiPnt7IHByb3AubGFiZWwgfX08L2xhYmVsPlxuXG4gICAgICAgICAgPCEtLSBTS1MyMU1BUjI1IFRvZ2dsZSBHcm91cCAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC50eXBlID09PSAndG9nZ2xlR3JvdXAnXCIgY2xhc3M9XCJ0b2dnbGUtZ3JvdXBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2dnbGUtaXRlbVwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0b2dnbGUtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwic2VsZWN0ZWRFbGVtZW50Py5pc09wdGlvbmFsXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25SZXF1aXJlZENoYW5nZSgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpXCIgLz5cbiAgICAgICAgICAgICAgICBSZXF1aXJlZFxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidG9nZ2xlLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cInNlbGVjdGVkRWxlbWVudD8uaXNSZWFkT25seVwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlQ2hhbmdlKCdpc1JlYWRPbmx5JywgJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgICAgUmVhZCBPbmx5XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2dnbGUtaXRlbVwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0b2dnbGUtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgLz5cbiAgICAgICAgICAgICAgICBEaXNhYmxlZFxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidG9nZ2xlLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cInNlbGVjdGVkRWxlbWVudD8uaXNIaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblRvZ2dsZUNoYW5nZSgnaXNIaWRkZW4nLCAkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgICBJcyBIaWRlXG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gQVAgMjhGRUIyNSAtIGhhbmRsZWQgb3B0aW9ucyB3aXRoIFVVSUQgLS0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdkcm9wZG93bicgfHwgcHJvcC50eXBlID09PSAnY2hlY2tib3gnIHx8IHByb3AudHlwZSA9PT0gJ3JhZGlvJyAmJiBwcm9wLmtleSA9PT0gJ29wdGlvbnMnXCJcbiAgICAgICAgICAgIGNsYXNzPVwib3B0aW9ucy1jb250YWluZXJcIj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbi1saXN0XCIgKGRyYWdvdmVyKT1cIm9uRHJhZ092ZXIoJGV2ZW50KVwiIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQsIHByb3Aua2V5KVwiPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc2VsZWN0ZWRFbGVtZW50W3Byb3Aua2V5XVwiIGNsYXNzPVwib3B0aW9uLWl0ZW1zXCIgW2F0dHIuZGF0YS1pZF09XCJvcHRpb24uaWRcIlxuICAgICAgICAgICAgICAgIGRyYWdnYWJsZT1cInRydWVcIiAoZHJhZ3N0YXJ0KT1cIm9uRHJhZ1N0YXJ0KCRldmVudCwgb3B0aW9uLmlkKVwiPlxuXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJvcHRpb24udmFsdWVcIiBwbGFjZWhvbGRlcj1cIk9wdGlvblwiIGNsYXNzPVwib3B0aW9uc1wiIC8+XG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuLi9hc3NldHMvaWNvbnMvVHJhc2guc3ZnXCIgKGNsaWNrKT1cInJlbW92ZU9wdGlvbihzZWxlY3RlZEVsZW1lbnRbcHJvcC5rZXldLCBvcHRpb24uaWQpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcmFnLWhhbmRsZVwiPuKYsDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkT3B0aW9uKHNlbGVjdGVkRWxlbWVudFtwcm9wLmtleV0pXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGQtdmFyaWVudFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sZ1wiPis8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+QWRkPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGlucHV0ICpuZ0lmPVwicHJvcC50eXBlID09PSAndGV4dCdcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJwcm9wLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJoZWFkZXJTZWxlY3QgPyBib29rLnJlY29yZHNbMF0udGl0bGUgOiAoc2VsZWN0ZWRFbGVtZW50Py50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgPyBnZXRWYWx1ZUJ5QXJyYXlQYXRoKHByb3AudGFyZ2V0QXJyYXksIHByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbiwgcHJvcC5rZXkgKSA6IGdldFZhbHVlQnlQYXRoKHByb3Aua2V5KSApIDogIGdldFZhbHVlQnlQYXRoKHByb3Aua2V5KSlcIlxuICAgICAgICAgICAgKGlucHV0KT1cImhlYWRlclNlbGVjdCA/IHVwZGF0ZVRpdGxlKCRldmVudC50YXJnZXQudmFsdWUpIDogKHNlbGVjdGVkRWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJyA/IChwcm9wLnRhcmdldEFycmF5ID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4sIHByb3Aua2V5LCAkZXZlbnQpIDogc2V0VmFsdWVCeVBhdGgocHJvcC5rZXksICRldmVudC50YXJnZXQudmFsdWUpICkgOiBzZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSkpXCJcbiAgICAgICAgICAgIFtjbGFzcy5yZWFkLW9ubHldPVwic2VsZWN0ZWRFbGVtZW50LnJlYWRPbmx5XCIgW3JlYWRvbmx5XT1cInNlbGVjdGVkRWxlbWVudC5yZWFkT25seVwiIC8+XG5cbiAgICAgICAgICA8IS0tIFN1YiBRdWVzdGlvbnMgVG9nZ2xlIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzdWJRdWVzdGlvbidcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHlsZS10b2dnbGUtaGVhZGVyXCIgKGNsaWNrKT1cInRvZ2dsZVN1YlF1ZXN0aW9uKHByb3ApXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkLWVsZW1lbnRzXCI+U3ViIFRleHQ8L2Rpdj5cbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInByb3AuaXNFeHBhbmRlZCA/ICcuLi9hc3NldHMvaWNvbnMvYXJyb3ctZG93bi5zdmcnIDogJy4uL2Fzc2V0cy9pY29ucy9hcnJvdy1yaWdodC5zdmcnXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJUb2dnbGUgQXJyb3dcIiBjbGFzcz1cImFycm93LWljb25cIj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFJlbmRlciBzdWJxdWVzdGlvbnMgd2hlbiBhcnJvdyBpcyBkb3duIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AuaXNFeHBhbmRlZFwiIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI2RkZDsgcGFkZGluZzogOHB4OyBib3JkZXItcmFkaXVzOiA0cHg7XCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHN1YlByb3Agb2YgcHJvcC5zdWJRdWVzdGlvblwiIGNsYXNzPVwic3ViLXF1ZXN0aW9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgc3ViUHJvcC5sYWJlbCB9fTwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInN1YlByb3AudHlwZSA9PT0gJ3RleHQnXCIgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwic3ViUHJvcC5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRWYWx1ZUJ5UGF0aChzdWJQcm9wLmtleSlcIiAoaW5wdXQpPVwic2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXksICRldmVudC50YXJnZXQudmFsdWUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICA8IS0tIEFQLTAyQVBSMjUgUmVuZGVyIGlucHV0IGZpZWxkIG9ubHkgaWYgc3ViUHJvcC50eXBlIGlzICdhcnJheScgLS0+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICdhcnJheSdcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJzdWJQcm9wLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImdldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5KVwiIChpbnB1dCk9XCJzZXRWYWx1ZUJ5UGF0aChzdWJQcm9wLmtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtuZ01vZGVsXT1cImZpZWxkQXNTdHJpbmdcIiAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVGaWVsZCgkZXZlbnQpXCIgLz4gLS0+XG5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInN1YlByb3AudHlwZSA9PT0gJ2Jvb2xlYW4nXCIgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiZ2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRWYWx1ZUJ5UGF0aChzdWJQcm9wLmtleSwgJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC50eXBlID09PSAnY2hlY2tib3gnXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvZ2dsZS1sYWJlbFwiIHN0eWxlPVwicGFkZGluZy1yaWdodDogMTBweDtcIj57eyBwcm9wLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkRWxlbWVudC50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgPyBnZXRWYWx1ZUJ5QXJyYXlQYXRoKHByb3AudGFyZ2V0QXJyYXksIHByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbiwgcHJvcC5rZXkgKSA6IGdldFZhbHVlQnlQYXRoKHByb3Aua2V5KSApOiAgZ2V0VmFsdWVCeVBhdGgocHJvcC5rZXkpIFwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiIHNlbGVjdGVkRWxlbWVudC50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgPyB1cGRhdGVWYWx1ZUJ5QXJyYXlQYXRoKHByb3AudGFyZ2V0QXJyYXksIHByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbiwgcHJvcC5rZXksICRldmVudCkgOiBvblRvZ2dsZUNoYW5nZShwcm9wLmtleSwgJGV2ZW50KSApIDogb25Ub2dnbGVDaGFuZ2UocHJvcC5rZXksICRldmVudClcIiAvPlxuXG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBTS1MyMU1BUjI1IE1vdmUgU3R5bGUgT3V0c2lkZSB0aGUgTG9vcCAtLT5cbiAgICAgIDwhLS0gU3R5bGUgVG9nZ2xlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInN0eWxlLXRvZ2dsZS1oZWFkZXJcIiAoY2xpY2spPVwidG9nZ2xlU3R5bGVTZWN0aW9uKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWQtZWxlbWVudHNcIj5TdHlsZTwvZGl2PlxuICAgICAgICA8aW1nIFtzcmNdPVwiaXNTdHlsZUV4cGFuZGVkID8gJy4uL2Fzc2V0cy9pY29ucy9hcnJvdy1kb3duLnN2ZycgOiAnLi4vYXNzZXRzL2ljb25zL2Fycm93LXJpZ2h0LnN2ZydcIlxuICAgICAgICAgIGFsdD1cIlRvZ2dsZSBBcnJvd1wiIGNsYXNzPVwiYXJyb3ctaWNvblwiPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJpc1N0eWxlRXhwYW5kZWRcIiBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IHBhZGRpbmc6IDhweDsgYm9yZGVyLXJhZGl1czogNHB4O1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGtleSBvZiBnZXRTdHlsZUtleXMoKVwiPlxuICAgICAgICAgICAgPGxhYmVsPnt7IGtleSB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRWxlbWVudC5zdHlsZVtrZXldXCJcbiAgICAgICAgICAgICAgKGlucHV0KT1cInNldFZhbHVlQnlQYXRoKCdzdHlsZS4nICsga2V5LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIge3sga2V5IH19XCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCIgKm5nSWY9XCJhY3RpdmVUYWIgPT09ICdhcHBlYXJhbmNlJ1wiPlxuICAgIDxkaXYgKm5nSWY9XCJnZXRQcm9wZXJ0aWVzKClcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByb3Agb2YgZ2V0UHJvcGVydGllcygpLmFwcGVhcmFuY2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LXNtXCI+e3sgcHJvcC5sYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgICAgPCEtLSBGb250IFNlbGVjdGlvbiAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC5rZXkgPT09ICdmb250J1wiPlxuICAgICAgICAgICAgPHNlbGVjdCAqbmdJZj1cInByb3AudHlwZSA9PT0gJ3NlbGVjdCdcIiBjbGFzcz1cInNlbGVjdC1jb250YWluZXJcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRWxlbWVudC5mb250XCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRWYWx1ZUJ5UGF0aCgnZm9udCcsICRldmVudC50YXJnZXQudmFsdWUpXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wLm9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAge3sgb3B0aW9uIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBJbnB1dCBCb3ggLS0+XG4gICAgICAgICAgPGlucHV0ICpuZ0lmPVwicHJvcC50eXBlID09PSAndGV4dCdcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJwcm9wLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZEVsZW1lbnRbcHJvcC5rZXldXCIgKGlucHV0KT1cInNldFZhbHVlQnlQYXRoKHByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIC8+XG5cbiAgICAgICAgICA8IS0tIEZvbnQgU2l6ZSBTZWxlY3Rpb24gLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb3Aua2V5ID09PSAnZm9udFNpemUnXCI+XG4gICAgICAgICAgICA8c2VsZWN0ICpuZ0lmPVwicHJvcC50eXBlID09PSAnc2VsZWN0J1wiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRFbGVtZW50W3Byb3Aua2V5XVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0VmFsdWVCeVBhdGgocHJvcC5rZXksICRldmVudC50YXJnZXQudmFsdWUpXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wLm9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBGb250IFdlaWdodCBTZWxlY3Rpb24gLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb3Aua2V5ID09PSAnZm9udFdlaWdodCdcIj5cbiAgICAgICAgICAgIDxzZWxlY3QgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzZWxlY3QnXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEVsZW1lbnRbcHJvcC5rZXldXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHByb3Aub3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj5cbiAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPCEtLSBEcm9wZG93biBCb3ggLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC50eXBlID09PSAnZHJvcGRvd24nXCIgY2xhc3M9XCJpbnB1dC1ib3gtZmllbGRcIj5cbiAgICAgICAgICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRWxlbWVudFtwcm9wLmtleV1cIiAoY2hhbmdlKT1cInNldFZhbHVlQnlQYXRoKHByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wLm9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICB7eyBvcHRpb24gfX1cbiAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBDb2xvciBQaWNrZXIgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC50eXBlID09PSAnY29sb3InXCIgY2xhc3M9XCJjb2xvci1zZWxlY3RvclwiPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEVsZW1lbnQuZm9udENvbG9yXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldFZhbHVlQnlQYXRoKCdmb250Q29sb3InLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gSEVYIElucHV0IEJveCAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdjb2xvcidcIiBjbGFzcz1cImhleC1pbnB1dC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPHNwYW4+SEVYIENvZGU8L3NwYW4+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRFbGVtZW50W3Byb3Aua2V5XVwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSlcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgXG4gICAgICAgICAgPCEtLSBBUC0xN0FQUjI1IEJ1dHRvbiBmb3IgRHVwbGljYXRlIEZpZWxkICAtLT5cbjxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdidXR0b24tdG9nZ2xlJ1wiIGNsYXNzPVwiYnV0dG9uLXRvZ2dsZS13cmFwcGVyXCI+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJ0b2dnbGUtYnV0dG9uXCJcbiAgICAoY2xpY2spPVwiZHVwbGljYXRlRmllbGQoc2VsZWN0ZWRFbGVtZW50KVwiPlxuICAgIEFkZCBEdXBsaWNhdGVcbiAgPC9idXR0b24+XG48L2Rpdj5cblxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG48IS0tIEFQLTA4QVBSMjUgRGVmYXVsdCBTYXZlIEJ1dHRvbiAtLT5cbjxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCIgKm5nSWY9XCIhdGVtcGxhdGVTZWxlY3RlZFwiPlxuICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsLWJ0blwiIChjbGljayk9XCJvbkNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XG4gIDxidXR0b24gY2xhc3M9XCJzYXZlLWJ0blwiIChjbGljayk9XCJoYW5kbGVCdXR0b25DbGljaygpXCI+U2F2ZTwvYnV0dG9uPlxuPC9kaXY+XG5cbjwhLS0gQVAtMDhBUFIyNSBUZW1wbGF0ZSBTYXZlIEJ1dHRvbiAtLT5cbjxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCIgKm5nSWY9XCJ0ZW1wbGF0ZVNlbGVjdGVkXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAyMHB4O1wiPlxuICA8YnV0dG9uIGNsYXNzPVwic2F2ZS1idG5cIiAoY2xpY2spPVwiaGFuZGxlVGVtcGxhdGVTYXZlKClcIj5TYXZlIFRlbXBsYXRlPC9idXR0b24+XG48L2Rpdj5cblxuPC9kaXY+Il19
1021
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvcGFnZXMvYnVpbGRlci9wcm9wZXJ0aWVzL3Byb3BlcnRpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL3BhZ2VzL2J1aWxkZXIvcHJvcGVydGllcy9wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkksT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUMsQ0FBQSx3QkFBd0I7QUFHNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scURBQXFELENBQUM7QUFDbkYscUZBQXFGO0FBQ3JGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBc0IsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7OztBQVFwSyxNQUFNLE9BQU8sbUJBQW1CO0lBZ1lWO0lBQTBCO0lBQStDO0lBL1g3RixPQUFPLENBQU07SUFDYixJQUFJLENBQVM7SUFDYixPQUFPLENBQU07SUFFYixtQkFBbUIsQ0FBQyxNQUErRjtRQUNqSCxPQUFPO1lBQ0wsWUFBWSxFQUFFLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLGtCQUFrQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzlFLFVBQVUsRUFBRSxDQUFDLEdBQUcsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN4RSxVQUFVLEVBQUUsQ0FBQyxHQUFHLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLElBQUksRUFBRSxDQUFDLENBQUM7U0FDbkYsQ0FBQztJQUNKLENBQUM7SUFFUyxpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQzVDLG1CQUFtQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDeEQsY0FBYyxHQUFXLEVBQUUsQ0FBQztJQUM1QixvQkFBb0IsR0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6QixtQkFBbUIsR0FBVyxFQUFFLENBQUM7SUFDMUMsYUFBYSxHQUFXLFlBQVksQ0FBQyxDQUFFLG9CQUFvQjtJQUMzRCxjQUFjLEdBQWEsRUFBRSxDQUFDLENBQUUsb0RBQW9EO0lBQ3BGLFlBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIsZUFBZSxHQUFRLElBQUksQ0FBQyxDQUFFLCtCQUErQjtJQUM3RCxZQUFZLEdBQVksS0FBSyxDQUFDO0lBQzlCLE1BQU0sQ0FBTTtJQUNaLElBQUksQ0FBTTtJQUNWLFNBQVMsR0FBVyxZQUFZLENBQUM7SUFDakMsWUFBWSxDQUFLO0lBQ2pCLFNBQVMsR0FBbUI7UUFDMUIsYUFBYSxFQUFFLElBQUk7UUFDbkIsS0FBSyxFQUFFLENBQUM7UUFDUixNQUFNLEVBQUUsQ0FBQztRQUNULEtBQUssRUFBRSxLQUFLO1FBQ1osS0FBSyxFQUFFLEtBQUs7UUFDWixVQUFVLEVBQUUsQ0FBQztRQUNiLFVBQVUsRUFBRSxDQUFDO0tBQ2QsQ0FBQztJQUNGLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDbkIsT0FBTyxDQUFtQjtJQUMxQixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUNyQixlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUNyQixlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLGtCQUFrQixHQUFHLENBQUMsQ0FBQztJQUN2QixtQkFBbUIsR0FBRyxDQUFDLENBQUM7SUFDeEIsV0FBVyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEIsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUNyQixpQkFBaUIsR0FBaUIsSUFBSSxDQUFDO0lBQ3ZDLFVBQVUsR0FBRyxRQUFpQixDQUFDO0lBQy9CLGtEQUFrRDtJQUNsRCwwQ0FBMEM7SUFDMUMsV0FBVyxHQUFHO1FBQ1osVUFBVSxFQUFFLGlDQUFpQztRQUM3QyxVQUFVLEVBQUUsSUFBSTtRQUNoQixPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO1FBQzFCLGNBQWMsRUFBRSxPQUFPO0tBQ3hCLENBQUE7SUFDRCxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDbEIsZ0JBQWdCLEdBQVksS0FBSyxDQUFDO0lBRUQsUUFBUSxDQUFjO0lBR2hFLFNBQVMsR0FBa0IsSUFBSSxDQUFDO0lBQ2hDLFlBQVksR0FBVSxFQUFFLENBQUM7SUFFekIsU0FBUyxHQUFXLFdBQVcsQ0FBQyxDQUFDLHVCQUF1QjtJQUN4RCxnQkFBZ0IsQ0FBTTtJQUV0QixpQkFBaUIsR0FBRztRQUNsQixxRUFBcUU7UUFDckUsdUNBQXVDO1FBQ3ZDLFFBQVEsRUFBRTtZQUNSLFlBQVksRUFBRTtnQkFDWixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUU7YUFBQztTQUM3RTtRQUNELCtCQUErQjtRQUMvQixNQUFNLEVBQUU7WUFDTixZQUFZLEVBQUU7Z0JBQ1osRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtnQkFDdkQsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUU7Z0JBQzdGLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUU7Z0JBQ3RHO29CQUNFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsV0FBVztvQkFDckQsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7aUJBQ3ZDO2FBQ0Y7WUFDRCxVQUFVLEVBQUUsRUFBRTtTQUNmO1FBRUQsT0FBTyxFQUFFO1lBQ1AsWUFBWSxFQUFFO2dCQUNaLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDM0QsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTthQUN4RDtZQUNELFVBQVUsRUFBRSxFQUFFO1NBQ2Y7UUFFRCxPQUFPLEVBQUU7WUFDUCxjQUFjLEVBQUU7Z0JBQ2QsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsaUJBQWlCLEVBQUU7Z0JBQzFGLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRTtnQkFDckIsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUU7Z0JBQ2xHLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7Z0JBQ3JHLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtnQkFDeEcsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLDRCQUE0QixFQUFFO2dCQUN4SCxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLDBCQUEwQixFQUFFO2dCQUNwSCxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsNkJBQTZCLEVBQUU7Z0JBQzFILEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEVBQUU7Z0JBQ3BILEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUU7Z0JBQzlHLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUseUJBQXlCLEVBQUU7Z0JBQ2xILEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUU7Z0JBQzlHLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUU7Z0JBRzlHLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtnQkFDL0UsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ2xFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUU7YUFDeEQ7WUFDRCxZQUFZLEVBQUU7Z0JBQ1osRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUN2RixFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBQzFGLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRTtnQkFDbEcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDM0Y7b0JBQ0UsT0FBTyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFdBQVc7b0JBQ25GLGFBQWEsRUFBRTt3QkFDYixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRTt3QkFDOUYsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7d0JBQzdGLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRTt3QkFFcEYsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUU7d0JBQzFHLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFO3dCQUNwRyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTt3QkFDcEcsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLDBCQUEwQixFQUFFO3dCQUN2SCxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUU7d0JBQ2hILEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSwwQkFBMEIsRUFBRTt3QkFFdkgsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7d0JBQ3BHLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFO3dCQUNwRyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLDZCQUE2QixFQUFFO3dCQUNwSCxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtxQkFDbEc7aUJBQ0Y7YUFDRjtZQUNELFlBQVksRUFBRTtnQkFDVjtvQkFDRSxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJO29CQUN0RixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxDQUFDO2lCQUNsRTtnQkFDRCxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDMUY7b0JBQ0UsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSTtvQkFDckYsT0FBTyxFQUFFO3dCQUNQLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO3dCQUNqQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTt3QkFDbEMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7cUJBQ2xDO2lCQUNGO2dCQUVEO29CQUNFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUk7b0JBQ3hGLE9BQU8sRUFBRTt3QkFDUCxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTt3QkFDckMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7d0JBQ3JDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO3dCQUN4QyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtxQkFDcEM7aUJBQ0Y7Z0JBQ0QsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRTthQUNoRztTQUNKO1FBQ0QsYUFBYSxFQUFFO1lBQ2IsY0FBYyxFQUFFO2dCQUVkLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7Z0JBQ2pLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBRTlKO29CQUNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxlQUFlO29CQUM1SyxhQUFhLEVBQUU7d0JBQ2IsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTt3QkFDM0osRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTt3QkFDbEssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtxQkFDbEs7aUJBQ0Y7Z0JBQ0Q7b0JBQ0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRTt3QkFDbEwsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTt3QkFDM0osRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7d0JBQzNKLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7d0JBQzdKLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7cUJBQ2xLO2lCQUNGO2dCQUVELEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7Z0JBQ3JHLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtnQkFDeEcsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO2FBQ2hGO1lBQ0QsWUFBWSxFQUFFO2dCQUNaLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDdkYsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTtnQkFDckcsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBQ3BHLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRTtnQkFDbEcsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLDJDQUEyQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFO2FBQ3JJO1lBQ0QsWUFBWSxFQUFFO2dCQUNaO29CQUNFLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUk7b0JBQ3RGLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLENBQUM7aUJBQ2xFO2dCQUNELEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUMxRjtvQkFDRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJO29CQUNyRixPQUFPLEVBQUU7d0JBQ1AsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7d0JBQ2pDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO3dCQUNsQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtxQkFDbEM7aUJBQ0Y7Z0JBRUQ7b0JBQ0UsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSTtvQkFDeEYsT0FBTyxFQUFFO3dCQUNQLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO3dCQUNyQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTt3QkFDckMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUU7d0JBQ3hDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO3FCQUNwQztpQkFDRjtnQkFDRCxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFO2FBQ2hHO1NBQ0Y7UUFFRCxVQUFVLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQ25DLGdCQUFnQixFQUFFO2dCQUNoQixHQUFHLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ2xDLElBQUksRUFBRSxNQUFNO2lCQUNiLENBQUMsQ0FBQzthQUNKO1lBQ0Qsa0JBQWtCLEVBQUM7Z0JBQ2pCLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFO2dCQUNySixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTtnQkFFbEo7b0JBQ0UsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxlQUFlO29CQUNoSyxXQUFXLEVBQUU7d0JBQ1gsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUU7d0JBQy9JLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFO3dCQUN0SixFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRTtxQkFDdEo7aUJBQ0Y7Z0JBRUQ7b0JBQ0UsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLFlBQVk7b0JBQ3ZKLFdBQVcsRUFBRTt3QkFDWCxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTt3QkFDL0ksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFO3dCQUMvSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRTt3QkFDakosRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7cUJBQ3RKO2lCQUNGO2FBQ0Y7U0FDRixDQUFDO1FBRUYsY0FBYyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUN2QyxnQkFBZ0IsRUFBRTtnQkFFaEIsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNsQyxHQUFHLEdBQUc7b0JBQ04sSUFBSSxFQUFFLFVBQVU7aUJBQ2pCLENBQUMsQ0FBQzthQUNKO1lBQ0Msa0JBQWtCLEVBQUM7Z0JBQ25CLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFO2dCQUNySixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTtnQkFFbEo7b0JBQ0UsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxlQUFlO29CQUNoSyxXQUFXLEVBQUU7d0JBQ1gsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUU7d0JBQy9JLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFO3dCQUN0SixFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRTtxQkFDdEo7aUJBQ0Y7Z0JBRUQ7b0JBQ0UsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLFlBQVk7b0JBQ3ZKLFdBQVcsRUFBRTt3QkFDWCxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTt3QkFDL0ksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFO3dCQUMvSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRTt3QkFDakosRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7cUJBQ3RKO2lCQUNGO2FBQ0Y7U0FDRixDQUFDO1FBRUYsVUFBVSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNuQyxnQkFBZ0IsRUFBRTtnQkFDaEIsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNsQyxJQUFJLEVBQUUsTUFBTTtpQkFDYixDQUFDLENBQUM7YUFDSjtZQUNELGtCQUFrQixFQUFDO2dCQUNqQixFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRTtnQkFDckosRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUU7Z0JBRWxKO29CQUNFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsZUFBZTtvQkFDaEssV0FBVyxFQUFFO3dCQUNYLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFO3dCQUMvSSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRTt3QkFDdEosRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7cUJBQ3RKO2lCQUNGO2dCQUVEO29CQUNFLEtBQUssRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxZQUFZO29CQUN2SixXQUFXLEVBQUU7d0JBQ1gsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUU7d0JBQy9JLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRTt3QkFDL0ksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUU7d0JBQ2pKLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO3FCQUN0SjtpQkFDRjthQUNGO1NBQ0YsQ0FBQztRQUVGLFFBQVEsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDakMsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDakQsR0FBRyxHQUFHO2dCQUNOLElBQUksRUFBRSxVQUFVO2FBQ2pCLENBQUMsQ0FBQztTQUNKLENBQUM7UUFFRixRQUFRLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQ2pDLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pELEdBQUcsR0FBRztnQkFDTixJQUFJLEVBQUUsVUFBVTthQUNqQixDQUFDLENBQUM7U0FDSixDQUFDO1FBRUYsS0FBSyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUM5QixnQkFBZ0IsRUFBRSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRCxHQUFHLEdBQUc7Z0JBQ04sSUFBSSxFQUFFLFVBQVU7YUFDakIsQ0FBQyxDQUFDO1NBQ0osQ0FBQztRQUVGLElBQUksRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7UUFFaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtRQUVwQyxJQUFJLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1FBRWhDLElBQUksRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7UUFFaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtRQUVwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1FBRWpDLElBQUksRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7UUFFaEMsSUFBSSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtRQUVoQyxRQUFRLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1FBRXBDLFlBQVksRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7UUFFeEMsTUFBTSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtRQUVsQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1FBRWpDLEtBQUssRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7UUFFakMsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtRQUVuQyxJQUFJLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1FBRWhDLElBQUksRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxrQ0FBa0M7S0FDckUsQ0FBQztJQUdGLFlBQW9CLElBQWdCLEVBQVUsa0JBQXNDLEVBQVMsZUFBZ0M7UUFBekcsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFBUyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFBSSxDQUFDO0lBRWxJLHVCQUF1QixDQUFDLEtBQVU7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN0RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDbEQsQ0FBQztJQUNELGNBQWMsQ0FBQyxPQUFZO1FBQ3pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNqRCx5REFBeUQ7UUFDekQsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNyRCx1QkFBdUI7UUFDdkIsaUVBQWlFO1FBQ2pFLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVELFFBQVE7UUFDTixzRkFBc0Y7UUFDdEYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM5RCxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO2dCQUM1QixDQUFDO2dCQUNELElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hDLENBQUM7UUFFSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztZQUNsQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDZixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO29CQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxHQUFHLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUNsTCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDM0ksQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO2dCQUMxQixDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUN0QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoRCxDQUFDO1FBRUgsQ0FBQyxDQUFDLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFLENBQUM7WUFDbkMsTUFBTSxVQUFVLEdBQUcsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsS0FBSyxRQUFRO2dCQUM1RCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztnQkFDckMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1lBRTVCLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZDLEdBQUcsTUFBTTtnQkFDVCxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsNkNBQTZDO2FBQzdFLENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQztJQUNELENBQUM7SUFFRCxxREFBcUQ7SUFDckQsWUFBWTtRQUNWLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLElBQUksQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSSxFQUFFLEVBQUU7WUFDUixXQUFXLEVBQUUsRUFBRTtZQUNmLEdBQUcsRUFBRSxFQUFFO1lBQ1AsUUFBUSxFQUFFLEVBQUU7WUFDWixNQUFNLEVBQUUsRUFBRTtZQUNWLEVBQUUsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUU7WUFDOUMsZUFBZSxFQUFFLFdBQVcsR0FBRyxFQUFFO1lBQ2pDLEtBQUssRUFBRSxHQUFHO1lBQ1YsWUFBWSxFQUFFLENBQUM7WUFDZixTQUFTLEVBQUUsWUFBWTtTQUN4QixDQUFDO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLCtCQUErQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUYsbURBQW1EO0lBQ2xELFlBQVksQ0FBQyxHQUFRO1FBQ25CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUNELHFEQUFxRDtJQUNyRCxzQkFBc0IsQ0FBQyxLQUFhLEVBQUUsR0FBVyxFQUFFLEtBQVU7UUFDM0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEQsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBQ0QsK0RBQStEO0lBQy9ELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELGFBQWEsQ0FBQyxLQUFhLEVBQUUsSUFBWTtRQUN2QyxJQUFJLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQy9DLE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFDO1lBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsc0NBQXNDLENBQUM7Z0JBQzNELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLG9EQUFvRDtJQUNoRyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLHlDQUF5QztJQUMvRyxDQUFDO0lBQ0Qsc0ZBQXNGO0lBQ3RGLElBQUksZUFBZTtRQUNqQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JELE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELCtDQUErQztJQUMvQyxnQkFBZ0IsQ0FBQyxlQUFvQixFQUFFLGNBQW1CLEVBQUUsR0FBUSxFQUFFLE9BQWUsRUFBRSxTQUFrQjtRQUN2RyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZGLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RELElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCx5REFBeUQ7WUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDdEMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixrREFBa0Q7WUFDbEQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNmLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7UUFDSCxDQUFDO1FBQ0QsMkNBQTJDO0lBQzdDLENBQUM7SUFDRCxjQUFjLENBQUMsR0FBVyxFQUFFLEtBQVU7UUFDcEMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbkMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUNELElBQUksR0FBRyxLQUFLLGNBQWMsSUFBSSxHQUFHLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNwQyxPQUFPO2dCQUNULENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxHQUFHLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztnQkFDN0IsOENBQThDO2dCQUM5QyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUM7b0JBQUUsT0FBTztnQkFFNUIsOEVBQThFO2dCQUM5RSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUUvRixnRUFBZ0U7Z0JBQ2hFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ2hELENBQUM7WUFHRCxJQUFJLEdBQUcsS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDcEMsQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUV6RSw0Q0FBNEM7WUFDNUMsSUFBSSxHQUFHLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLHVEQUF1RDtZQUM1RixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCx3Q0FBd0M7SUFDeEMsYUFBYSxDQUFDLGVBQW9CLEVBQUUsY0FBbUIsRUFBRSxHQUFRLEVBQUUsS0FBVTtRQUMzRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQzFDLDJGQUEyRjtZQUMzRixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxHQUFHLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3RMLENBQUM7WUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3hELCtJQUErSTtZQUMvSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7Z0JBQUUsT0FBTztZQUV4Qyw0Q0FBNEM7WUFDNUMsSUFBSSxTQUFTLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFckYsZ0RBQWdEO1lBQ2hELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDZixTQUFTLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLHdCQUF3QjtnQkFDN0UsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5QixDQUFDO1lBRUQsNkJBQTZCO1lBQzdCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDO1lBRXBCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO29CQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyw2QkFBNkI7Z0JBQzNELEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakIsQ0FBQztZQUVELHVDQUF1QztZQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUV0QyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEdBQUcsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUwsQ0FBQztZQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBQzFDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxpREFBaUQ7UUFDcEYsQ0FBQztJQUNILENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxLQUFjO1FBQzdCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFFckcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixLQUFLLEdBQUcsR0FBRyxLQUFLLElBQUksQ0FBQztZQUN2QixDQUFDO1lBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFRCx5REFBeUQ7SUFDekQsaUJBQWlCLENBQUMsSUFBUztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFFeEIsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQy9DLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFdkMsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTlDLDBFQUEwRTtRQUMxRSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQzNDLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDL0IsMEJBQTBCO2dCQUMxQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO29CQUMvRCxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVO29CQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQztnQkFFeEQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFFckYsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDWCxrREFBa0Q7b0JBQ2xELFFBQVEsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUN2QixLQUFLLE1BQU07NEJBQ1QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBQzlDLEtBQUssVUFBVTs0QkFDYixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3dCQUNsRCxLQUFLLE1BQU07NEJBQ1QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBQzlDOzRCQUNFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUNqRCxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdkcsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCw4Q0FBOEM7SUFDOUMsU0FBUyxDQUFDLE9BQWM7UUFDdEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELG1FQUFtRTtJQUNuRSxZQUFZLENBQUMsT0FBYyxFQUFFLEVBQVU7UUFDckMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUNELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBQ0QsK0JBQStCO0lBQy9CLFlBQVksQ0FBQyxHQUFXO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxpQ0FBaUM7SUFDakMsTUFBTTtRQUNKLCtCQUErQjtJQUNqQyxDQUFDO0lBQ0Qsa0NBQWtDO0lBQ2xDLFFBQVE7UUFDTixzQ0FBc0M7SUFDeEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLFdBQW1CO1FBQ2xDLG1EQUFtRDtRQUNuRCxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUV6QixvREFBb0Q7UUFFcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hDLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixtREFBbUQ7UUFDckQsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYTtRQUN6QixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFBRSxPQUFPO1FBRWxDLDhDQUE4QztRQUM5QyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFFaEUsOENBQThDO1FBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFeEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUNoRSxDQUFDO0lBQ0QsY0FBYyxDQUFDLElBQVk7UUFDekIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxHQUFHLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RMLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQztZQUMzQixPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxLQUFLLFFBQVE7Z0JBQzdDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU87Z0JBQzlCLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7b0JBQzlGLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDO29CQUMxQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFbEIsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFGLDRDQUE0QztZQUM1QyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFDSCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFO2FBQ3pDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsb0JBQW9CLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFDQyxjQUFjLENBQUMsSUFBWSxFQUFFLEtBQVk7UUFDdkMsTUFBTSxPQUFPLEdBQUksS0FBSyxDQUFDLE1BQTJCLENBQUMsT0FBTyxDQUFDO1FBQzNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsR0FBRyxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsVUFBVSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZLEVBQUUsS0FBVTtRQUVyQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxJQUFJLElBQUksS0FBSyxjQUFjLElBQUksS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLElBQUksS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUM5Qiw4Q0FBOEM7Z0JBQzlDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQztvQkFBRSxPQUFPO2dCQUU1Qiw4RUFBOEU7Z0JBQzlFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBRS9GLGdFQUFnRTtnQkFDaEUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDaEQsQ0FBQztZQUNELElBQUksSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUMxQiwrQ0FBK0M7Z0JBQy9DLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3JDLENBQUM7WUFDRCw0Q0FBNEM7WUFDNUMsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLHVEQUF1RDtZQUM1RixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEdBQUcsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEwsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUVsSyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDZCxrREFBa0Q7Z0JBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlDLENBQUM7WUFDRCxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5QixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsMkJBQTJCO1lBQy9DLENBQUM7aUJBQU0sQ0FBQztnQkFDTixHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYztZQUNoQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUNELFlBQVk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxJQUFJLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDM0csT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxhQUFhLENBQUMsT0FBWTtRQUN4QixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN6RSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDaEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsR0FBRyxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsVUFBVSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUM7WUFDakwsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEgsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDckgsQ0FBQztJQUNILENBQUM7SUFDRCxrQ0FBa0M7SUFDbEMsbUJBQW1CLENBQUMsZUFBb0IsRUFBRSxjQUFzQixFQUFFLFlBQW9CLEVBQUUsT0FBZTtRQUNyRyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEdBQUcsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEwsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFM0MsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxZQUFZLENBQUMsQ0FBQztRQUVsRixPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3pGLENBQUM7SUFFRCwrREFBK0Q7SUFDL0Qsc0JBQXNCLENBQUMsZUFBb0IsRUFBRSxjQUFzQixFQUFFLFlBQW9CLEVBQUUsT0FBZSxFQUFFLEtBQVk7UUFDdEgsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxHQUFHLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RMLENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hELDhJQUE4STtRQUM5SSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7WUFBRSxPQUFPO1FBRXhDLDRDQUE0QztRQUM1QyxJQUFJLFNBQVMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLFlBQVksQ0FBQyxDQUFDO1FBRWhGLGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixTQUFTLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsd0JBQXdCO1lBQ3hFLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELDZCQUE2QjtRQUM3QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLElBQUksR0FBRyxHQUFHLFNBQVMsQ0FBQztRQUVwQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLDZCQUE2QjtZQUMzRCxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLENBQUM7UUFFRCx1Q0FBdUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEMsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFFdEQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLFlBQVksRUFBRSxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQzdGLElBQUksT0FBTyxLQUFLLGVBQWUsRUFBRSxDQUFDO1lBQ2hDLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUMvQixHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzVCLENBQUM7WUFDRCxJQUFJLFlBQVksQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxhQUFhLENBQUE7WUFDaEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUE7WUFDekIsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLE9BQU8sS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUM3QixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUMvQixDQUFDO1lBQ0QsSUFBSSxZQUFZLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNsQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsYUFBYSxDQUFBO1lBQ2hDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFBO1lBQ3pCLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxHQUFHLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFMLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBQ0QsYUFBYSxDQUFDLElBQVk7UUFDeEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxHQUFHLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RMLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsY0FBYztRQUNaLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixHQUFHLElBQUksQ0FBQyxTQUFTO1lBQ2pCLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSztTQUM3QixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHO1lBQ2YsR0FBRyxJQUFJLENBQUMsU0FBUztZQUNqQixLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUs7U0FDN0IsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNmLGFBQWEsRUFBRSxJQUFJO1lBQ25CLEtBQUssRUFBRSxDQUFDO1lBQ1IsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUUsS0FBSztZQUNaLEtBQUssRUFBRSxLQUFLO1lBQ1osVUFBVSxFQUFFLENBQUM7WUFDYixVQUFVLEVBQUUsQ0FBQztTQUNkLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixHQUFHLElBQUksQ0FBQyxTQUFTO1lBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQU0sR0FBRyxFQUFFO1NBQ2xDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixHQUFHLElBQUksQ0FBQyxTQUFTO1lBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQU0sR0FBRyxFQUFFO1NBQ2xDLENBQUM7SUFDSixDQUFDO0lBQ0QsVUFBVTtRQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNmLEdBQUcsSUFBSSxDQUFDLFNBQVM7WUFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVyxHQUFHLENBQUM7U0FDM0MsQ0FBQztJQUNKLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNmLEdBQUcsSUFBSSxDQUFDLFNBQVM7WUFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVyxHQUFHLENBQUM7U0FDM0MsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNmLEdBQUcsSUFBSSxDQUFDLFNBQVM7WUFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVyxHQUFHLENBQUM7U0FDM0MsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNmLEdBQUcsSUFBSSxDQUFDLFNBQVM7WUFDakIsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVyxHQUFHLENBQUM7U0FDM0MsQ0FBQztJQUNKLENBQUM7SUFDTyxlQUFlO1FBQ3JCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixHQUFHLElBQUksQ0FBQyxTQUFTO1lBQ2pCLEtBQUssRUFBRSxRQUFRO1lBQ2YsS0FBSyxFQUFFLFFBQVE7WUFDZixVQUFVLEVBQUUsQ0FBQztZQUNiLFVBQVUsRUFBRSxDQUFDO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFDRCxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQVU7UUFDM0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztZQUN4QyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM3RixpQ0FBaUM7UUFDbkMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDO0lBR0QsWUFBWSxDQUFDLHFCQUFpQztRQUM1Qyx1REFBdUQ7UUFDdkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUNELHVDQUF1QztJQUN2QyxtQkFBbUIsQ0FBQyxTQUFpQjtRQUNuQyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUM7YUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNYLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3JDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFnQixDQUFDLENBQUM7Z0JBQzFELE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCw0Q0FBNEM7SUFDNUMsaUJBQWlCLENBQUMsS0FBVTtRQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQTtRQUN2RCxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFBO1FBQ3BFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLGtCQUFrQixDQUFDLEtBQVk7UUFDN0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNyRCxDQUFDO0lBRUQsd0NBQXdDO0lBRXhDLGNBQWMsQ0FBQyxLQUFZO1FBQ3pCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN6RSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBQ0QsK0NBQStDO0lBQy9DLFdBQVcsQ0FBQyxLQUFnQixFQUFFLEVBQVU7UUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSyxDQUFDLFlBQWEsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO0lBQzdDLENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsVUFBVSxDQUFDLEtBQWdCO1FBQ3pCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsNkRBQTZEO0lBQzdELE1BQU0sQ0FBQyxLQUFnQixFQUFFLEdBQVc7UUFDbEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sUUFBUSxHQUFJLEtBQUssQ0FBQyxNQUFzQixDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFakcsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFMUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUM1RixxREFBcUQ7WUFDckQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9FLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1lBRXhFLGlCQUFpQjtZQUNqQixJQUFJLFlBQVksS0FBSyxDQUFDLENBQUMsSUFBSSxXQUFXLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDaEcsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO3dHQXBrQ1UsbUJBQW1COzRGQUFuQixtQkFBbUIsb2JDckJoQyw4ditCQTRoQk0sNDJORDNnQk0sWUFBWSw2VkFBRSxXQUFXLHFnREFBRSxxQkFBcUIsc3pCQUFFLFlBQVk7OzRGQUk3RCxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxZQUFZLENBQUM7OElBaUIvRCxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUdFLG1CQUFtQjtzQkFBM0IsS0FBSztnQkF5Q0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVvQyxRQUFRO3NCQUFqRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBbytCeEMsY0FBYztzQkFEYixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQVAgMjJKQU4yNVxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtLWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDcm9wcGVyUG9zaXRpb24sIERpbWVuc2lvbnMsIEltYWdlVHJhbnNmb3JtIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9pbWFnZS1jcm9wcGVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7Ly9BUC0yOE1BUjI1IGltcG9ydCB1dWlkXG4vLyBBUC0xMUFQUjI1IGltcG9ydCB0ZW1wbGF0ZSBzZXJ2aWNlXG5pbXBvcnQgeyBUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90ZW1wbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEltYWdlQ3JvcHBlckNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL2ltYWdlLWNyb3BwZXIvY29tcG9uZW50L2ltYWdlLWNyb3BwZXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBOeHRTZWFyY2hCb3ggfSBmcm9tIFwiLi4vLi4vLi4vY29tcG9uZW50cy9zZWFyY2gtYm94L3NlYXJjaC1ib3guY29tcG9uZW50XCI7XG4vL0FQLTI1SlVOMjUtSW1wb3J0aW5nIGNvbW1vbiBjb25zdGFudHMgZm9yIGVsZW1lbnQsIGZpZWxkLCBhbmQgYXBwZWFyYW5jZSBwcm9wZXJ0aWVzXG5pbXBvcnQgeyBDT01NT05fRUxFTUVOVF9QUk9QUywgQ09NTU9OX09QVElPTlNfRklFTEQsIENPTU1PTl9GSUVMRF9QUk9QUywgQ09NTU9OX0FQUEVBUkFOQ0VfUFJPUFMsIENPTU1PTl9DT0xVTU5fRklFTER9IGZyb20gJy4uL3Byb3BlcnRpZXMvY29tbW9uLWZpZWxkcy5jb25zdGFudHMnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXByb3BlcnRpZXMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgSW1hZ2VDcm9wcGVyQ29tcG9uZW50LCBOeHRTZWFyY2hCb3hdLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvcGVydGllcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Byb3BlcnRpZXMuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByb3BlcnRpZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBlbGVtZW50OiBhbnk7XG4gIGZyb206IHN0cmluZztcbiAgY29sdW1uczogYW55O1xuXG4gIGNyZWF0ZUVsZW1lbnRDb25maWcoY29uZmlnPzogeyBjdXN0b21FbGVtZW50UHJvcHM/OiBhbnlbXSwgY3VzdG9tRmllbGRQcm9wcz86IGFueVtdLCBjdXN0b21BcHBlYXJhbmNlUHJvcHM/OiBhbnlbXX0pIHtcbiAgICByZXR1cm4ge1xuICAgICAgZWxlbWVudFByb3BzOiBbLi4uQ09NTU9OX0VMRU1FTlRfUFJPUFMsIC4uLihjb25maWc/LmN1c3RvbUVsZW1lbnRQcm9wcyB8fCBbXSldLFxuICAgICAgZmllbGRQcm9wczogWy4uLkNPTU1PTl9GSUVMRF9QUk9QUywgLi4uKGNvbmZpZz8uY3VzdG9tRmllbGRQcm9wcyB8fCBbXSldLFxuICAgICAgYXBwZWFyYW5jZTogWy4uLkNPTU1PTl9BUFBFQVJBTkNFX1BST1BTLCAuLi4oY29uZmlnPy5jdXN0b21BcHBlYXJhbmNlUHJvcHMgfHwgW10pXVxuICAgIH07XG4gIH1cblxuICBAT3V0cHV0KCkgZm9ybUJ1dHRvbkhhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHRlbXBsYXRlU2F2ZUhhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgc2VsZWN0ZWRPcHRpb246IHN0cmluZyA9ICcnO1xuICBzZWxlY3RlZEVsZW1lbnRJbmRleDogbnVtYmVyID0gLTE7XG4gIEBJbnB1dCgpIHNlbGVjdGVkRWxlbWVudFR5cGU6IHN0cmluZyA9ICcnO1xuICBzZWxlY3RlZEFsaWduOiBzdHJpbmcgPSAnYWxpZ24tbGVmdCc7ICAvLyBBZGQgdGhpcyBwcm9wZXJ0eVxuICBzZWxlY3RlZFN0eWxlczogc3RyaW5nW10gPSBbXTsgIC8vIFVzaW5nIGFycmF5IHNpbmNlIG11bHRpcGxlIHN0eWxlcyBjYW4gYmUgc2VsZWN0ZWRcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgPSAnJztcbiAgc2VsZWN0ZWRFbGVtZW50OiBhbnkgPSBudWxsOyAgLy8gUmVjZWl2ZSB0aGUgc2VsZWN0ZWQgZWxlbWVudFxuICBoZWFkZXJTZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYm9va0lkOiBhbnk7XG4gIGJvb2s6IGFueTtcbiAgYWN0aXZlVGFiOiBzdHJpbmcgPSAnYXR0cmlidXRlcyc7XG4gIHNlbGVjdENvbHVtbjogYW55XG4gIHRyYW5zZm9ybTogSW1hZ2VUcmFuc2Zvcm0gPSB7XG4gICAgdHJhbnNsYXRlVW5pdDogJ3B4JyxcbiAgICBzY2FsZTogMSxcbiAgICByb3RhdGU6IDAsXG4gICAgZmxpcEg6IGZhbHNlLFxuICAgIGZsaXBWOiBmYWxzZSxcbiAgICB0cmFuc2xhdGVIOiAwLFxuICAgIHRyYW5zbGF0ZVY6IDBcbiAgfTtcbiAgY2FudmFzUm90YXRpb24gPSAwO1xuICBjcm9wcGVyPzogQ3JvcHBlclBvc2l0aW9uO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIGNyb3BwZXJNYXhIZWlnaHQgPSAwO1xuICBjcm9wcGVyTWF4V2lkdGggPSAwO1xuICBjcm9wcGVyTWluSGVpZ2h0ID0gMDtcbiAgY3JvcHBlck1pbldpZHRoID0gMDtcbiAgY3JvcHBlclN0YXRpY1dpZHRoID0gMDtcbiAgY3JvcHBlclN0YXRpY0hlaWdodCA9IDA7XG4gIGFzcGVjdFJhdGlvID0gNCAvIDM7XG4gIHJvdW5kQ3JvcHBlciA9IGZhbHNlO1xuICBpbWFnZUNoYW5nZWRFdmVudDogRXZlbnQgfCBudWxsID0gbnVsbDtcbiAgYWxpZ25JbWFnZSA9ICdjZW50ZXInIGFzIGNvbnN0O1xuICAvLyAgXCJlbmRwb2ludFwiOiBcImh0dHBzOi8vZGV2LWFwaS52YWxhcmhyLmNvbS9ueHRcIixcbiAgLy8gU0tTMjhNQVIyNSBkZWZhdWx0IGJvb2sgc2VhcmNoIGVuZHBvaW50XG4gIGJvb2tTdWJ0ZXh0ID0ge1xuICAgIFwiZW5kcG9pbnRcIjogXCJodHRwczovL2Rldi1hcGkudmFsYXJoci5jb20vbnh0XCIsXG4gICAgXCJ2YXJpYWJsZVwiOiBudWxsLFxuICAgIFwiZmllbGRcIjogWydsYWJlbCcsICduYW1lJ10sXG4gICAgXCJkZWZhdWx0RmllbGRcIjogXCJsYWJlbFwiXG4gIH1cbiAgaXNMaW5rRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRlbXBsYXRlU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdkcm9wZG93bicsIHsgc3RhdGljOiBmYWxzZSB9KSBkcm9wZG93biE6IEVsZW1lbnRSZWY7XG5cblxuICBkcmFnZ2VkSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBmb3JtRWxlbWVudHM6IGFueVtdID0gW107XG4gXG4gIHVuaXF1ZV9pZDogc3RyaW5nID0gJ2Jvb2stMTIzNCc7IC8vIHNob3VsZCBiZSBjb25zaXN0ZW50XG4gIHNlbGVjdGVkVGVtcGxhdGU6IGFueTtcblxuICBlbGVtZW50UHJvcGVydGllcyA9IHtcbiAgICAvLyBBUC0xME1BUjI1IC0gRGVmaW5lcyB0aGUgSGVhZGVyIGVsZW1lbnQgd2l0aCBhIHRleHQgaW5wdXQgZmllbGQgICBcbiAgICAvLyBBUC0yNU1BUjI1IEFkZCBzdWJ0ZXh0IGFsbCB2YXJpYWJsZXNcbiAgICAnSGVhZGVyJzoge1xuICAgICAgZWxlbWVudFByb3BzOiBbXG4gICAgICAgIHsgbGFiZWw6ICdMYWJlbCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCcsIHR5cGU6ICd0ZXh0Jywga2V5OiAndGl0bGUnIH1dXG4gICAgfSxcbiAgICAvLyBBUC0xOU1BUjI1IEFkZCBMaW5lIFByb3BlcnR5XG4gICAgJ0xpbmUnOiB7XG4gICAgICBlbGVtZW50UHJvcHM6IFtcbiAgICAgICAgeyBsYWJlbDogJ0xpbmUgV2lkdGgnLCB0eXBlOiAnZmllbGRTaXplJywga2V5OiAnc2l6ZScgfSxcbiAgICAgICAgeyBsYWJlbDogJ1BhZGRpbmcgVG9wJywgdHlwZTogJ251bWJlcicsIGtleTogJ3BhZGRpbmdUb3AnLCBwbGFjZWhvbGRlcjogJ0VudGVyIHBhZGRpbmcgdG9wJyB9LFxuICAgICAgICB7IGxhYmVsOiAnUGFkZGluZyBCb3R0b20nLCB0eXBlOiAnbnVtYmVyJywga2V5OiAncGFkZGluZ0JvdHRvbScsIHBsYWNlaG9sZGVyOiAnRW50ZXIgcGFkZGluZyBib3R0b20nIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ0xpbmUgU3R5bGUnLCB0eXBlOiAnc2VsZWN0Jywga2V5OiAnbGluZVN0eWxlJyxcbiAgICAgICAgICBvcHRpb25zOiBbJ1NvbGlkJywgJ0Rhc2hlZCcsICdEb3R0ZWQnXVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgZmllbGRQcm9wczogW11cbiAgICB9LFxuXG4gICAgJ1NwYWNlJzoge1xuICAgICAgZWxlbWVudFByb3BzOiBbXG4gICAgICAgIHsgbGFiZWw6ICdFbGVtZW50JywgdHlwZTogJ251bWJlcicsIGtleTogJ3F1ZXN0aW9uTnVtYmVyJyB9LFxuICAgICAgICB7IGxhYmVsOiAnRmllbGQgU2l6ZScsIHR5cGU6ICdmaWVsZFNpemUnLCBrZXk6ICdzaXplJyB9LFxuICAgICAgXSxcbiAgICAgIGZpZWxkUHJvcHM6IFtdXG4gICAgfSxcblxuICAgIFwiVGFibGVcIjoge1xuICAgICAgXCJlbGVtZW50UHJvcHNcIjogW1xuICAgICAgICB7bGFiZWw6ICdJcyBMYWJlbCcsIHBsYWNlaG9sZGVyOiAnRW50ZXIgVGV4dCAnLCB0eXBlOiAnY2hlY2tib3gnLCBrZXk6ICdzdHlsZS5zaG93TGFiZWwnIH0sXG4gICAgICAgIHsga2V5OiAncHJpbWFyeUtleScgfSxcbiAgICAgICAgeyBcImxhYmVsXCI6IFwidGFibGVOYW1lXCIsIFwicGxhY2Vob2xkZXJcIjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJxdWVzdGlvblRleHRcIiB9LFxuICAgICAgICB7IFwibGFiZWxcIjogXCJpbnB1dFRleHRBbGlnbm1lbnRcIiwgXCJwbGFjZWhvbGRlclwiOiBcIkxlZnRcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcImlucHV0VGV4dEFsaWdubWVudFwiIH0sXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcInRhYmxlU2NhbGVTaXplXCIsIFwicGxhY2Vob2xkZXJcIjogXCIwNiAtIEZ1bGwgU2NhbGVcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcInRhYmxlU2NhbGVTaXplXCIgfSxcbiAgICAgICAgeyBcImxhYmVsXCI6IFwiaXNOb3NJbmRpY2F0b3JcIiwgXCJwbGFjZWhvbGRlclwiOiBcIjA2IC0gRnVsbCBTY2FsZVwiLCBcInR5cGVcIjogXCJjaGVja2JveFwiLCBcImtleVwiOiBcInRhYmxlQ29uZmlnLmlzTm9zSW5kaWNhdG9yXCIgfSxcbiAgICAgICAgeyBcImxhYmVsXCI6IFwiaXNQYWdpbmF0aW9uXCIsIFwicGxhY2Vob2xkZXJcIjogXCIwNiAtIEZ1bGwgU2NhbGVcIiwgXCJ0eXBlXCI6IFwiY2hlY2tib3hcIiwgXCJrZXlcIjogXCJ0YWJsZUNvbmZpZy5pc1BhZ2luYXRpb25cIiB9LFxuICAgICAgICB7IFwibGFiZWxcIjogXCJhZGRJbmxpbmVSZWNvcmRcIiwgXCJwbGFjZWhvbGRlclwiOiBcIjA2IC0gRnVsbCBTY2FsZVwiLCBcInR5cGVcIjogXCJjaGVja2JveFwiLCBcImtleVwiOiBcInRhYmxlQ29uZmlnLmFkZElubGluZVJlY29yZFwiIH0sXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcImFjdGlvbkJ1dHRvblwiLCBcInBsYWNlaG9sZGVyXCI6IFwiMDYgLSBGdWxsIFNjYWxlXCIsIFwidHlwZVwiOiBcImNoZWNrYm94XCIsIFwia2V5XCI6IFwidGFibGVDb25maWcuYWN0aW9uQnV0dG9uXCIgfSxcbiAgICAgICAgeyBcImxhYmVsXCI6IFwic2VhcmNoQmFyXCIsIFwicGxhY2Vob2xkZXJcIjogXCIwNiAtIEZ1bGwgU2NhbGVcIiwgXCJ0eXBlXCI6IFwiY2hlY2tib3hcIiwgXCJrZXlcIjogXCJ0YWJsZUNvbmZpZy5zZWFyY2hCYXJcIiB9LFxuICAgICAgICB7IFwibGFiZWxcIjogXCJpc0RlbGV0ZVJvd1wiLCBcInBsYWNlaG9sZGVyXCI6IFwiMDYgLSBGdWxsIFNjYWxlXCIsIFwidHlwZVwiOiBcImNoZWNrYm94XCIsIFwia2V5XCI6IFwidGFibGVDb25maWcuaXNEZWxldGVSb3dcIiB9LFxuICAgICAgICB7IFwibGFiZWxcIjogXCJpc0VkaXRSb3dcIiwgXCJwbGFjZWhvbGRlclwiOiBcIjA2IC0gRnVsbCBTY2FsZVwiLCBcInR5cGVcIjogXCJjaGVja2JveFwiLCBcImtleVwiOiBcInRhYmxlQ29uZmlnLmlzRWRpdFJvd1wiIH0sXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcImlzQnV0dG9uc1wiLCBcInBsYWNlaG9sZGVyXCI6IFwiMDYgLSBGdWxsIFNjYWxlXCIsIFwidHlwZVwiOiBcImNoZWNrYm94XCIsIFwia2V5XCI6IFwidGFibGVDb25maWcuaXNCdXR0b25zXCIgfSxcblxuXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcInJvd0Nob2ljZVwiLCBcInBsYWNlaG9sZGVyXCI6IFwiXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJyb3dDaG9pY2VcIiB9LFxuICAgICAgICB7IGxhYmVsOiAncXVlc3Rpb25OdW1iZXInLCB0eXBlOiAnbnVtYmVyJywga2V5OiAncXVlc3Rpb25OdW1iZXInIH0sXG4gICAgICAgIHsgbGFiZWw6ICdGaWVsZCBTaXplJywgdHlwZTogJ2ZpZWxkU2l6ZScsIGtleTogJ3NpemUnIH0sXG4gICAgICBdLFxuICAgICAgXCJmaWVsZFByb3BzXCI6IFtcbiAgICAgICAgeyBcImxhYmVsXCI6IFwidGFibGVJZFwiLCBcInBsYWNlaG9sZGVyXCI6IFwiRW1wX1RhYmxlXzAxXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJ0YWJsZUlkXCIgfSxcbiAgICAgICAgeyBcImxhYmVsXCI6IFwiaGVscFRleHRcIiwgXCJwbGFjZWhvbGRlclwiOiBcIkVudGVyIG1lc3NhZ2VcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcImhlbHBUZXh0XCIgfSxcbiAgICAgICAgeyBcImxhYmVsXCI6IFwiZGVmYXVsdFZhbHVlXCIsIFwicGxhY2Vob2xkZXJcIjogXCJEZWZhdWx0IFZhbHVlXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJkZWZhdWx0VmFsdWVcIiB9LFxuICAgICAgICB7IGxhYmVsOiAnUmVmZXJlbmNlJywgcGxhY2Vob2xkZXI6ICdSZWZlcmVuY2UgRmllbGQnLCB0eXBlOiAndGV4dCcsIGtleTogJ3JlZmVyZW5jZUZpZWxkJyB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCJsYWJlbFwiOiBcIlwiLCBcInBsYWNlaG9sZGVyXCI6IFwiRW50ZXIgVGV4dFwiLCBcInR5cGVcIjogXCJzdWJRdWVzdGlvblwiLCBcImtleVwiOiBcImlzU3ViVGV4dFwiLFxuICAgICAgICAgIFwic3ViUXVlc3Rpb25cIjogW1xuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwiRW5kIFBvaW50XCIsIFwicGxhY2Vob2xkZXJcIjogXCJlbmRwb2ludFwiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwia2V5XCI6IFwic3ViVGV4dC5lbmRwb2ludFwiIH0sXG4gICAgICAgICAgICB7IFwibGFiZWxcIjogXCJWYXJpYWJsZVwiLCBcInBsYWNlaG9sZGVyXCI6IFwidmFyaWFibGVcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcInN1YlRleHQudmFyaWFibGVcIiB9LFxuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwiRmllbGRcIiwgXCJwbGFjZWhvbGRlclwiOiBcImZpZWxkXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJzdWJUZXh0LmZpZWxkXCIgfSxcblxuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwiRGVmYXVsdCBGaWVsZFwiLCBcInBsYWNlaG9sZGVyXCI6IFwiZGVmYXVsdEZpZWxkXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJzdWJUZXh0LmRlZmF1bHRGaWVsZFwiIH0sXG4gICAgICAgICAgICB7IFwibGFiZWxcIjogXCJMYWJlbCBGaWVsZFwiLCBcInBsYWNlaG9sZGVyXCI6IFwibGFiZWxGaWVsZFwiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwia2V5XCI6IFwic3ViVGV4dC5sYWJlbEZpZWxkXCIgfSxcbiAgICAgICAgICAgIHsgXCJsYWJlbFwiOiBcIlZhbHVlIEZpZWxkXCIsIFwicGxhY2Vob2xkZXJcIjogXCJ2YWx1ZUZpZWxkXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJzdWJUZXh0LnZhbHVlRmllbGRcIiB9LFxuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwiU291cmNlIFF1ZXN0aW9uIElkXCIsIFwicGxhY2Vob2xkZXJcIjogXCJzb3VyY2VRdWVzdGlvbklkXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJzdWJUZXh0LnNvdXJjZVF1ZXN0aW9uSWRcIiB9LFxuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwiRGVwZW5kZW50IFZhbHVlXCIsIFwicGxhY2Vob2xkZXJcIjogXCJkZXBlbmRlbnRWYWx1ZVwiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwia2V5XCI6IFwic3ViVGV4dC5kZXBlbmRlbnRWYWx1ZVwiIH0sXG4gICAgICAgICAgICB7IFwibGFiZWxcIjogXCJEZXBlbmRlbnQgRmllbGRcIiwgXCJwbGFjZWhvbGRlclwiOiBcImlzRGVwZW5kZW50RmllbGRcIiwgXCJ0eXBlXCI6IFwiYm9vbGVhblwiLCBcImtleVwiOiBcInN1YlRleHQuaXNEZXBlbmRlbnRGaWVsZFwiIH0sXG5cbiAgICAgICAgICAgIHsgXCJsYWJlbFwiOiBcIlF1ZXJ5IEZpZWxkXCIsIFwicGxhY2Vob2xkZXJcIjogXCJxdWVyeUZpZWxkXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJrZXlcIjogXCJzdWJUZXh0LnF1ZXJ5RmllbGRcIiB9LFxuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwiUXVlcnkgVmFsdWVcIiwgXCJwbGFjZWhvbGRlclwiOiBcInF1ZXJ5VmFsdWVcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcInN1YlRleHQucXVlcnlWYWx1ZVwiIH0sXG4gICAgICAgICAgICB7IFwibGFiZWxcIjogXCJRdWVyeSBWYWx1ZSBSZWZcIiwgXCJwbGFjZWhvbGRlclwiOiBcInF1ZXJ5VmFsdWVSZWZcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcInN1YlRleHQucXVlcnlWYWx1ZVJlZmVyZW5jZVwiIH0sXG4gICAgICAgICAgICB7IFwibGFiZWxcIjogXCJVbmlxdWUgS2V5XCIsIFwicGxhY2Vob2xkZXJcIjogXCJ1bmlxdWVLZXlcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcInN1YlRleHQudW5pcXVlS2V5XCIgfSxcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgXCJhcHBlYXJhbmNlXCI6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ1NlbGVjdCBGb250JywgdHlwZTogJ3NlbGVjdCcsIGtleTogJ2ZvbnQnLCBwbGFjZWhvbGRlcjogJ0xlZnQnLCByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IFsnSGVsdmV0aWNhIE5ldWUnLCAnQXJpYWwnLCAnVGltZXMgTmV3IFJvbWFuJywgJ1JvYm90byddXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnRm9udCBDb2xvcicsIHR5cGU6ICdjb2xvcicsIGtleTogJ2ZvbnRDb2xvcicsIGRlZmF1bHRWYWx1ZTogJycsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdGb250IFNpemUnLCB0eXBlOiAnc2VsZWN0Jywga2V5OiAnZm9udFNpemUnLCBkZWZhdWx0VmFsdWU6ICcnLCByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ1NtYWxsJywgdmFsdWU6ICcxMnB4JyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnTWVkaXVtJywgdmFsdWU6ICcxNHB4JyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnTGFyZ2UnLCB2YWx1ZTogJzE2cHgnIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICBcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0ZvbnQgV2lkdGgnLCB0eXBlOiAnc2VsZWN0Jywga2V5OiAnZm9udFdlaWdodCcsIGRlZmF1bHRWYWx1ZTogJycsIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICB7IHZhbHVlOiAnNDAwJywgbGFiZWw6ICc0MDAtTm9ybWFsJyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnNTAwJywgbGFiZWw6ICc1MDAtTWVkaXVtJyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnNjAwJywgbGFiZWw6ICc2MDAtU2VtaSBCb2xkJyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnNzAwJywgbGFiZWw6ICc3MDAtQm9sZCcgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ0R1cGxpY2F0ZSBGaWVsZCcsIHR5cGU6ICdidXR0b24tdG9nZ2xlJywga2V5OiAnZHVwbGljYXRlRmllbGQnLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH1cbiAgICAgICAgXVxuICAgIH0sXG4gICAgXCJUYWJsZUNvbHVtblwiOiB7XG4gICAgICBcImVsZW1lbnRQcm9wc1wiOiBbXG5cbiAgICAgICAgeyBcImxhYmVsXCI6IFwiaGVhZGVyTGFiZWxzXCIsIFwicGxhY2Vob2xkZXJcIjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIFwidHlwZVwiOiBcInRleHRcIiwgXCJ0YXJnZXRBcnJheVwiOiBcImZpZWxkc01ldGFcIiwgXCJ0YXJnZXRBcnJheUtleVwiOiBcInVuaXF1ZUlkZW50aWZpZXJcIiwgXCJrZXlcIjogXCJsYWJlbFwiIH0sXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcImFwaU5hbWVcIiwgXCJwbGFjZWhvbGRlclwiOiBcIkVtcGxveWVlIERldGFpbHNcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcInRhcmdldEFycmF5XCI6IFwiZmllbGRzTWV0YVwiLCBcInRhcmdldEFycmF5S2V5XCI6IFwidW5pcXVlSWRlbnRpZmllclwiLCBcImtleVwiOiBcImFwaU5hbWVcIiB9LFxuXG4gICAgICAgIHtcbiAgICAgICAgICBcImxhYmVsXCI6IFwiU3VtbWFyeSBDb2x1bW5cIiwgXCJwbGFjZWhvbGRlclwiOiBcIlN1bW1hcnkgQ29sdW1uXCIsIFwidHlwZVwiOiBcInN1YlF1ZXN0aW9uXCIsIFwidGFyZ2V0QXJyYXlcIjogXCJmaWVsZHNNZXRhXCIsIFwidGFyZ2V0QXJyYXlLZXlcIjogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIFwia2V5XCI6IFwic3VtbWFyeUNvbHVtblwiLFxuICAgICAgICAgIFwic3ViUXVlc3Rpb25cIjogW1xuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwiVHlwZVwiLCBcInBsYWNlaG9sZGVyXCI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwidGFyZ2V0QXJyYXlcIjogXCJmaWVsZHNNZXRhXCIsIFwidGFyZ2V0QXJyYXlLZXlcIjogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIFwia2V5XCI6IFwiZmxkVHlwZVwiIH0sXG4gICAgICAgICAgICB7IFwibGFiZWxcIjogXCJPcGVyYXRpb25cIiwgXCJwbGFjZWhvbGRlclwiOiBcIkVtcGxveWVlIERldGFpbHNcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcInRhcmdldEFycmF5XCI6IFwiZmllbGRzTWV0YVwiLCBcInRhcmdldEFycmF5S2V5XCI6IFwidW5pcXVlSWRlbnRpZmllclwiLCBcImtleVwiOiBcIm9wZXJhdGlvblwiIH0sXG4gICAgICAgICAgICB7IFwibGFiZWxcIjogXCJPcGVyYW5kc1wiLCBcInBsYWNlaG9sZGVyXCI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCBcInR5cGVcIjogXCJhcnJheVwiLCBcInRhcmdldEFycmF5XCI6IFwiZmllbGRzTWV0YVwiLCBcInRhcmdldEFycmF5S2V5XCI6IFwidW5pcXVlSWRlbnRpZmllclwiLCBcImtleVwiOiBcIm9wZXJhbmRzXCIgfSxcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcImxhYmVsXCI6IFwiU3VtbWFyeSBSb3dcIiwgXCJwbGFjZWhvbGRlclwiOiBcIlN1bW1hcnkgUm93XCIsIFwidHlwZVwiOiBcInN1YlF1ZXN0aW9uXCIsIFwidGFyZ2V0QXJyYXlcIjogXCJmaWVsZHNNZXRhXCIsIFwidGFyZ2V0QXJyYXlLZXlcIjogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIFwia2V5XCI6IFwic3VtbWFyeVJvd1wiLCBcInN1YlF1ZXN0aW9uXCI6IFtcbiAgICAgICAgICAgIHsgXCJsYWJlbFwiOiBcIlR5cGVcIiwgXCJwbGFjZWhvbGRlclwiOiBcIkVtcGxveWVlIERldGFpbHNcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcInRhcmdldEFycmF5XCI6IFwiZmllbGRzTWV0YVwiLCBcInRhcmdldEFycmF5S2V5XCI6IFwidW5pcXVlSWRlbnRpZmllclwiLCBcImtleVwiOiBcImZsZFR5cGVcIiB9LFxuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwib3BlcmF0aW9uXCIsIFwicGxhY2Vob2xkZXJcIjogXCJvcGVyYXRpb25cIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcInRhcmdldEFycmF5XCI6IFwiZmllbGRzTWV0YVwiLCBcInRhcmdldEFycmF5S2V5XCI6IFwidW5pcXVlSWRlbnRpZmllclwiLCBcImtleVwiOiBcIm9wZXJhdGlvblwiIH0sXG4gICAgICAgICAgICB7IFwibGFiZWxcIjogXCJjb2x1bW5cIiwgXCJwbGFjZWhvbGRlclwiOiBcIkVtcGxveWVlIERldGFpbHNcIiwgXCJ0eXBlXCI6IFwicmFkaW9cIiwgXCJ0YXJnZXRBcnJheVwiOiBcImZpZWxkc01ldGFcIiwgXCJ0YXJnZXRBcnJheUtleVwiOiBcInVuaXF1ZUlkZW50aWZpZXJcIiwgXCJrZXlcIjogXCJjb2x1bW5cIiB9LFxuICAgICAgICAgICAgeyBcImxhYmVsXCI6IFwib3BlcmFuZHNcIiwgXCJwbGFjZWhvbGRlclwiOiBcIkVtcGxveWVlIERldGFpbHNcIiwgXCJ0eXBlXCI6IFwiYXJyYXlcIiwgXCJ0YXJnZXRBcnJheVwiOiBcImZpZWxkc01ldGFcIiwgXCJ0YXJnZXRBcnJheUtleVwiOiBcInVuaXF1ZUlkZW50aWZpZXJcIiwgXCJrZXlcIjogXCJvcGVyYW5kc1wiIH0sXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcImlucHV0VGV4dEFsaWdubWVudFwiLCBcInBsYWNlaG9sZGVyXCI6IFwiTGVmdFwiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwia2V5XCI6IFwiaW5wdXRUZXh0QWxpZ25tZW50XCIgfSxcbiAgICAgICAgeyBcImxhYmVsXCI6IFwidGFibGVTY2FsZVNpemVcIiwgXCJwbGFjZWhvbGRlclwiOiBcIjA2IC0gRnVsbCBTY2FsZVwiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwia2V5XCI6IFwidGFibGVTY2FsZVNpemVcIiB9LFxuICAgICAgICB7IFwibGFiZWxcIjogXCJyb3dDaG9pY2VcIiwgXCJwbGFjZWhvbGRlclwiOiBcIlwiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwia2V5XCI6IFwicm93Q2hvaWNlXCIgfSxcbiAgICAgIF0sXG4gICAgICBcImZpZWxkUHJvcHNcIjogW1xuICAgICAgICB7IFwibGFiZWxcIjogXCJ0YWJsZUlkXCIsIFwicGxhY2Vob2xkZXJcIjogXCJFbXBfVGFibGVfMDFcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcInRhYmxlSWRcIiB9LFxuICAgICAgICB7IFwibGFiZWxcIjogXCJpbnB1dFRleHRBbGlnbm1lbnRcIiwgXCJwbGFjZWhvbGRlclwiOiBcIkxlZnRcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcImlucHV0VGV4dEFsaWdubWVudFwiIH0sXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcImhlbHBUZXh0XCIsIFwicGxhY2Vob2xkZXJcIjogXCJFbnRlciBoZWxwIG1lc3NhZ2UgaGVyZVwiLCBcInR5cGVcIjogXCJ0ZXh0XCIsIFwia2V5XCI6IFwiaGVscFRleHRcIiB9LFxuICAgICAgICB7IFwibGFiZWxcIjogXCJkZWZhdWx0VmFsdWVcIiwgXCJwbGFjZWhvbGRlclwiOiBcIkRlZmF1bHQgVmFsdWVcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcImRlZmF1bHRWYWx1ZVwiIH0sXG4gICAgICAgIHsgXCJsYWJlbFwiOiBcInJlZmVyZW5jZUFuY2hvclwiLCBcInBsYWNlaG9sZGVyXCI6IFwiaHR0cDovL3NvdXJjZS9yYW5nZXJueHRfYmlvX2RhdGEvNzQvZC5kb2NcIiwgXCJ0eXBlXCI6IFwidGV4dFwiLCBcImtleVwiOiBcInJlZmVyZW5jZUFuY2hvclwiIH0sXG4gICAgICBdLFxuICAgICAgXCJhcHBlYXJhbmNlXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnU2VsZWN0IEZvbnQnLCB0eXBlOiAnc2VsZWN0Jywga2V5OiAnZm9udCcsIHBsYWNlaG9sZGVyOiAnTGVmdCcsIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIG9wdGlvbnM6IFsnSGVsdmV0aWNhIE5ldWUnLCAnQXJpYWwnLCAnVGltZXMgTmV3IFJvbWFuJywgJ1JvYm90byddXG4gICAgICAgIH0sXG4gICAgICAgIHsgbGFiZWw6ICdGb250IENvbG9yJywgdHlwZTogJ2NvbG9yJywga2V5OiAnZm9udENvbG9yJywgZGVmYXVsdFZhbHVlOiAnJywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnRm9udCBTaXplJywgdHlwZTogJ3NlbGVjdCcsIGtleTogJ2ZvbnRTaXplJywgZGVmYXVsdFZhbHVlOiAnJywgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgeyBsYWJlbDogJ1NtYWxsJywgdmFsdWU6ICcxMnB4JyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ01lZGl1bScsIHZhbHVlOiAnMTRweCcgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6ICdMYXJnZScsIHZhbHVlOiAnMTZweCcgfVxuICAgICAgICAgIF1cbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdGb250IFdpZHRoJywgdHlwZTogJ3NlbGVjdCcsIGtleTogJ2ZvbnRXZWlnaHQnLCBkZWZhdWx0VmFsdWU6ICcnLCByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICB7IHZhbHVlOiAnNDAwJywgbGFiZWw6ICc0MDAtTm9ybWFsJyB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogJzUwMCcsIGxhYmVsOiAnNTAwLU1lZGl1bScgfSxcbiAgICAgICAgICAgIHsgdmFsdWU6ICc2MDAnLCBsYWJlbDogJzYwMC1TZW1pIEJvbGQnIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiAnNzAwJywgbGFiZWw6ICc3MDAtQm9sZCcgfVxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAgeyBsYWJlbDogJ0R1cGxpY2F0ZSBGaWVsZCcsIHR5cGU6ICdidXR0b24tdG9nZ2xlJywga2V5OiAnZHVwbGljYXRlRmllbGQnLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH1cbiAgICAgIF1cbiAgICB9LFxuXG4gICAgTGlzdENvbHVtbjogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKHtcbiAgICAgIGN1c3RvbUZpZWxkUHJvcHM6IFtcbiAgICAgICAgLi4uQ09NTU9OX09QVElPTlNfRklFTEQubWFwKG9wdCA9PiAoe1xuICAgICAgICAgIHR5cGU6ICdsaXN0J1xuICAgICAgICB9KSksXG4gICAgICBdLFxuICAgICAgY3VzdG9tRWxlbWVudFByb3BzOltcbiAgICAgICAgeyBsYWJlbDogXCJoZWFkZXJMYWJlbHNcIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcInRleHRcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJsYWJlbFwiIH0sXG4gICAgICAgIHsgbGFiZWw6IFwiYXBpTmFtZVwiLCBwbGFjZWhvbGRlcjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIHR5cGU6IFwidGV4dFwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcImFwaU5hbWVcIiB9LFxuICAgIFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6IFwiU3VtbWFyeSBDb2x1bW5cIiwgcGxhY2Vob2xkZXI6IFwiU3VtbWFyeSBDb2x1bW5cIiwgdHlwZTogXCJzdWJRdWVzdGlvblwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcInN1bW1hcnlDb2x1bW5cIixcbiAgICAgICAgICBzdWJRdWVzdGlvbjogW1xuICAgICAgICAgICAgeyBsYWJlbDogXCJUeXBlXCIsIHBsYWNlaG9sZGVyOiBcIkVtcGxveWVlIERldGFpbHNcIiwgdHlwZTogXCJ0ZXh0XCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwiZmxkVHlwZVwiIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiBcIk9wZXJhdGlvblwiLCBwbGFjZWhvbGRlcjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIHR5cGU6IFwidGV4dFwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcIm9wZXJhdGlvblwiIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiBcIk9wZXJhbmRzXCIsIHBsYWNlaG9sZGVyOiBcIkVtcGxveWVlIERldGFpbHNcIiwgdHlwZTogXCJhcnJheVwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcIm9wZXJhbmRzXCIgfSxcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogXCJTdW1tYXJ5IFJvd1wiLCBwbGFjZWhvbGRlcjogXCJTdW1tYXJ5IFJvd1wiLCB0eXBlOiBcInN1YlF1ZXN0aW9uXCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwic3VtbWFyeVJvd1wiLFxuICAgICAgICAgIHN1YlF1ZXN0aW9uOiBbXG4gICAgICAgICAgICB7IGxhYmVsOiBcIlR5cGVcIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcInRleHRcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJmbGRUeXBlXCIgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6IFwib3BlcmF0aW9uXCIsIHBsYWNlaG9sZGVyOiBcIm9wZXJhdGlvblwiLCB0eXBlOiBcInRleHRcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJvcGVyYXRpb25cIiB9LFxuICAgICAgICAgICAgeyBsYWJlbDogXCJjb2x1bW5cIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcInJhZGlvXCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwiY29sdW1uXCIgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6IFwib3BlcmFuZHNcIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcImFycmF5XCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwib3BlcmFuZHNcIiB9LFxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9KSwgICAgXG5cbiAgICBEcm9wZG93bkNvbHVtbjogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKHtcbiAgICAgIGN1c3RvbUZpZWxkUHJvcHM6IFtcblxuICAgICAgICAuLi5DT01NT05fT1BUSU9OU19GSUVMRC5tYXAob3B0ID0+ICh7XG4gICAgICAgICAgLi4ub3B0LFxuICAgICAgICAgIHR5cGU6ICdkcm9wZG93bidcbiAgICAgICAgfSkpLFxuICAgICAgXSxcbiAgICAgICAgY3VzdG9tRWxlbWVudFByb3BzOltcbiAgICAgICAgeyBsYWJlbDogXCJoZWFkZXJMYWJlbHNcIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcInRleHRcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJsYWJlbFwiIH0sXG4gICAgICAgIHsgbGFiZWw6IFwiYXBpTmFtZVwiLCBwbGFjZWhvbGRlcjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIHR5cGU6IFwidGV4dFwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcImFwaU5hbWVcIiB9LFxuICAgIFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6IFwiU3VtbWFyeSBDb2x1bW5cIiwgcGxhY2Vob2xkZXI6IFwiU3VtbWFyeSBDb2x1bW5cIiwgdHlwZTogXCJzdWJRdWVzdGlvblwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcInN1bW1hcnlDb2x1bW5cIixcbiAgICAgICAgICBzdWJRdWVzdGlvbjogW1xuICAgICAgICAgICAgeyBsYWJlbDogXCJUeXBlXCIsIHBsYWNlaG9sZGVyOiBcIkVtcGxveWVlIERldGFpbHNcIiwgdHlwZTogXCJ0ZXh0XCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwiZmxkVHlwZVwiIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiBcIk9wZXJhdGlvblwiLCBwbGFjZWhvbGRlcjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIHR5cGU6IFwidGV4dFwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcIm9wZXJhdGlvblwiIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiBcIk9wZXJhbmRzXCIsIHBsYWNlaG9sZGVyOiBcIkVtcGxveWVlIERldGFpbHNcIiwgdHlwZTogXCJhcnJheVwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcIm9wZXJhbmRzXCIgfSxcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogXCJTdW1tYXJ5IFJvd1wiLCBwbGFjZWhvbGRlcjogXCJTdW1tYXJ5IFJvd1wiLCB0eXBlOiBcInN1YlF1ZXN0aW9uXCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwic3VtbWFyeVJvd1wiLFxuICAgICAgICAgIHN1YlF1ZXN0aW9uOiBbXG4gICAgICAgICAgICB7IGxhYmVsOiBcIlR5cGVcIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcInRleHRcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJmbGRUeXBlXCIgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6IFwib3BlcmF0aW9uXCIsIHBsYWNlaG9sZGVyOiBcIm9wZXJhdGlvblwiLCB0eXBlOiBcInRleHRcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJvcGVyYXRpb25cIiB9LFxuICAgICAgICAgICAgeyBsYWJlbDogXCJjb2x1bW5cIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcInJhZGlvXCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwiY29sdW1uXCIgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6IFwib3BlcmFuZHNcIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcImFycmF5XCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwib3BlcmFuZHNcIiB9LFxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgIF1cbiAgICB9KSwgICAgXG5cbiAgICBEYXRlQ29sdW1uOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoe1xuICAgICAgY3VzdG9tRmllbGRQcm9wczogW1xuICAgICAgICAuLi5DT01NT05fT1BUSU9OU19GSUVMRC5tYXAob3B0ID0+ICh7XG4gICAgICAgICAgdHlwZTogJ2RhdGUnXG4gICAgICAgIH0pKSxcbiAgICAgIF0sXG4gICAgICBjdXN0b21FbGVtZW50UHJvcHM6W1xuICAgICAgICB7IGxhYmVsOiBcImhlYWRlckxhYmVsc1wiLCBwbGFjZWhvbGRlcjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIHR5cGU6IFwidGV4dFwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcImxhYmVsXCIgfSxcbiAgICAgICAgeyBsYWJlbDogXCJhcGlOYW1lXCIsIHBsYWNlaG9sZGVyOiBcIkVtcGxveWVlIERldGFpbHNcIiwgdHlwZTogXCJ0ZXh0XCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwiYXBpTmFtZVwiIH0sXG4gICAgXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogXCJTdW1tYXJ5IENvbHVtblwiLCBwbGFjZWhvbGRlcjogXCJTdW1tYXJ5IENvbHVtblwiLCB0eXBlOiBcInN1YlF1ZXN0aW9uXCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwic3VtbWFyeUNvbHVtblwiLFxuICAgICAgICAgIHN1YlF1ZXN0aW9uOiBbXG4gICAgICAgICAgICB7IGxhYmVsOiBcIlR5cGVcIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcInRleHRcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJmbGRUeXBlXCIgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiT3BlcmF0aW9uXCIsIHBsYWNlaG9sZGVyOiBcIkVtcGxveWVlIERldGFpbHNcIiwgdHlwZTogXCJ0ZXh0XCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwib3BlcmF0aW9uXCIgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiT3BlcmFuZHNcIiwgcGxhY2Vob2xkZXI6IFwiRW1wbG95ZWUgRGV0YWlsc1wiLCB0eXBlOiBcImFycmF5XCIsIHRhcmdldEFycmF5OiBcImZpZWxkc01ldGFcIiwgdGFyZ2V0QXJyYXlLZXk6IFwidW5pcXVlSWRlbnRpZmllclwiLCBrZXk6IFwib3BlcmFuZHNcIiB9LFxuICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICBcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiBcIlN1bW1hcnkgUm93XCIsIHBsYWNlaG9sZGVyOiBcIlN1bW1hcnkgUm93XCIsIHR5cGU6IFwic3ViUXVlc3Rpb25cIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJzdW1tYXJ5Um93XCIsXG4gICAgICAgICAgc3ViUXVlc3Rpb246IFtcbiAgICAgICAgICAgIHsgbGFiZWw6IFwiVHlwZVwiLCBwbGFjZWhvbGRlcjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIHR5cGU6IFwidGV4dFwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcImZsZFR5cGVcIiB9LFxuICAgICAgICAgICAgeyBsYWJlbDogXCJvcGVyYXRpb25cIiwgcGxhY2Vob2xkZXI6IFwib3BlcmF0aW9uXCIsIHR5cGU6IFwidGV4dFwiLCB0YXJnZXRBcnJheTogXCJmaWVsZHNNZXRhXCIsIHRhcmdldEFycmF5S2V5OiBcInVuaXF1ZUlkZW50aWZpZXJcIiwga2V5OiBcIm9wZXJhdGlvblwiIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiBcImNvbHVtblwiLCBwbGFjZWhvbGRlcjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIHR5cGU6IFwicmFkaW9cIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJjb2x1bW5cIiB9LFxuICAgICAgICAgICAgeyBsYWJlbDogXCJvcGVyYW5kc1wiLCBwbGFjZWhvbGRlcjogXCJFbXBsb3llZSBEZXRhaWxzXCIsIHR5cGU6IFwiYXJyYXlcIiwgdGFyZ2V0QXJyYXk6IFwiZmllbGRzTWV0YVwiLCB0YXJnZXRBcnJheUtleTogXCJ1bmlxdWVJZGVudGlmaWVyXCIsIGtleTogXCJvcGVyYW5kc1wiIH0sXG4gICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgXVxuICAgIH0pLCAgICBcblxuICAgIENoZWNrYm94OiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoe1xuICAgICAgY3VzdG9tRmllbGRQcm9wczogQ09NTU9OX09QVElPTlNfRklFTEQubWFwKG9wdCA9PiAoe1xuICAgICAgICAuLi5vcHQsXG4gICAgICAgIHR5cGU6ICdjaGVja2JveCdcbiAgICAgIH0pKVxuICAgIH0pLFxuICBcbiAgICBEcm9wZG93bjogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKHtcbiAgICAgIGN1c3RvbUZpZWxkUHJvcHM6IENPTU1PTl9PUFRJT05TX0ZJRUxELm1hcChvcHQgPT4gKHtcbiAgICAgICAgLi4ub3B0LFxuICAgICAgICB0eXBlOiAnZHJvcGRvd24nXG4gICAgICB9KSlcbiAgICB9KSxcbiAgXG4gICAgUmFkaW86IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZyh7XG4gICAgICBjdXN0b21GaWVsZFByb3BzOiBDT01NT05fT1BUSU9OU19GSUVMRC5tYXAob3B0ID0+ICh7XG4gICAgICAgIC4uLm9wdCxcbiAgICAgICAgdHlwZTogJ2NoZWNrYm94J1xuICAgICAgfSkpXG4gICAgfSksXG5cbiAgICBUZXh0OiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcblxuICAgIENhbGVuZGFyOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcblxuICAgIERhdGU6IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuXG4gICAgVGltZTogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG5cbiAgICBEYXRlVGltZTogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG5cbiAgICBFbWFpbDogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG5cbiAgICBCb29rOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcbiAgICBcbiAgICBMaXN0OiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcblxuICAgIFRleHRBcmVhOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcblxuICAgIFJpY2hUZXh0QXJlYTogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG4gICAgXG4gICAgTnVtYmVyOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcblxuICAgIEltYWdlOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcblxuICAgIExhYmVsOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSxcblxuICAgIEJvb2xlYW46IHRoaXMuY3JlYXRlRWxlbWVudENvbmZpZygpLFxuXG4gICAgRmlsZTogdGhpcy5jcmVhdGVFbGVtZW50Q29uZmlnKCksXG5cbiAgICBJY29uOiB0aGlzLmNyZWF0ZUVsZW1lbnRDb25maWcoKSwgLy9NU00xMEpVTDI1IGljb24gc2VsZWN0b3IgZWxlbWVudFxuICB9O1xuICBcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgZm9ybUJ1aWxkZXJTZXJ2aWNlOiBGb3JtQnVpbGRlclNlcnZpY2UscHJpdmF0ZSB0ZW1wbGF0ZVNlcnZpY2U6IFRlbXBsYXRlU2VydmljZSkgeyB9XG5cbiAgaGFuZGxlVGVtcGxhdGVTZWxlY3Rpb24oZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gZXZlbnQuZWxlbWVudHM7IFxuICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSA9IGV2ZW50LnNlbGVjdGVkVGVtcGxhdGU7XG4gICAgdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZm9ybUVsZW1lbnRzID0gdGhpcy5mb3JtRWxlbWVudHM7XG4gICAgdGhpcy50ZW1wbGF0ZVNlcnZpY2UuYm9vayA9IHRoaXMuYm9vaztcbiAgICB0aGlzLnRlbXBsYXRlU2VydmljZS51bmlxdWVfaWQgPSB0aGlzLnVuaXF1ZV9pZDtcbiAgfVxuICBkdXBsaWNhdGVGaWVsZChlbGVtZW50OiBhbnkpIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmdldEVsZW1lbnRzKCk7XG4gICAgY29uc3QgY29weSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZWxlbWVudCkpO1xuICAgIC8vQVAtMThBUFIyNSBHZW5lcmF0ZSBhIG5ldyBJRCB1c2luZyB0aGUgc2VydmljZSdzIG1ldGhvZFxuICAgIGNvcHkuaWQgPSB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5hZGRFbGVtZW50V2l0aElkKCk7XG4gICAgLy9jb3B5LnV1aWQgPSBjb3B5LmlkOyBcbiAgICAvLyBBUC0xOEFQUjI1IFNldCB0aGUgcXVlc3Rpb25OdW1iZXIgdG8gdGhlIG5leHQgYXZhaWxhYmxlIG51bWJlclxuICAgIGNvcHkucXVlc3Rpb25OdW1iZXIgPSBlbGVtZW50cy5sZW5ndGggKyAxO1xuICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmFkZEVsZW1lbnQoY29weSk7XG4gIH1cbiAgXG4gIHNhdmVEYXRhKCkge1xuICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLmZvcm1FbGVtZW50cyA9IHRoaXMuZm9ybUVsZW1lbnRzO1xuICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLmJvb2sgPSB0aGlzLmJvb2s7XG4gICAgdGhpcy50ZW1wbGF0ZVNlcnZpY2UudW5pcXVlX2lkID0gdGhpcy51bmlxdWVfaWQ7XG4gICAgY29uc3QgdXBkYXRlZEJvb2sgPSB0aGlzLnRlbXBsYXRlU2VydmljZS5kb3dubG9hZCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy9BUC0xME1BUjI1IFN1YnNjcmliZXMgdG8gaGVhZGVyIHNlbGVjdGlvbiBjaGFuZ2VzIGFuZCB1cGRhdGVzIHRoZSBzZWxlY3RlZCBlbGVtZW50ICBcbiAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5zZWxlY3RIZWFkZXJTdWJqZWN0JC5zdWJzY3JpYmUoaGVhZGVyID0+IHtcbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkRWxlbWVudCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50ID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRbJ3R5cGUnXSA9IGhlYWRlcjtcbiAgICAgICAgdGhpcy5oZWFkZXJTZWxlY3QgPSB0cnVlO1xuICAgICAgICB0aGlzLmJvb2sgPSB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5nZXRCb29rKCk7XG4gICAgICAgIHRoaXMuYm9va0lkID0gdGhpcy5ib29rLnJlY29yZHNbMF0uaWQ7XG4gICAgICB9XG5cbiAgICB9KTtcbiAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5zZWxlY3RlZEVsZW1lbnQkLnN1YnNjcmliZShpbmRleCA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4ID0gaW5kZXg7XG4gICAgICB0aGlzLmhlYWRlclNlbGVjdCA9IGZhbHNlO1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5nZXRFbGVtZW50cygpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IGVsZW1lbnRzW2luZGV4XTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50Py50eXBlID09PSAnVGFibGUnKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSA9IHR5cGVvZiB0aGlzLnNlbGVjdGVkRWxlbWVudC5maWVsZHNNZXRhID09PSAnb2JqZWN0JyA/IHRoaXMuc2VsZWN0ZWRFbGVtZW50LmZpZWxkc01ldGEgOiBKU09OLnBhcnNlKHRoaXMuc2VsZWN0ZWRFbGVtZW50WydmaWVsZHNNZXRhJ10gfHwgW10pO1xuICAgICAgICAgIHRoaXMuc2VsZWN0Q29sdW1uID0gdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuZ2V0U2VsZWN0VGFibGVDb2x1bW4oKSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmdldFNlbGVjdFRhYmxlQ29sdW1uKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RDb2x1bW4gPSBudWxsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZ2V0UHJvcGVydGllcygpXG4gICAgfSk7XG4gICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2Uuc2VsZWN0SGVhZGVyU3ViamVjdCQuc3Vic2NyaWJlKGFjdGlvbiA9PiB7XG4gICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgIHRoaXMuYm9vayA9IHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmdldEJvb2soKTtcbiAgICAgIH1cblxuICAgIH0pO1xuICAgICBpZiAodGhpcy5mcm9tID09PSAnZm9ybUJ1aWxkZXInKSB7XG4gICAgY29uc3QgZmllbGRzTWV0YSA9IHR5cGVvZiB0aGlzLmVsZW1lbnQuZmllbGRzTWV0YSA9PT0gJ3N0cmluZydcbiAgICAgID8gSlNPTi5wYXJzZSh0aGlzLmVsZW1lbnQuZmllbGRzTWV0YSlcbiAgICAgIDogdGhpcy5lbGVtZW50LmZpZWxkc01ldGE7XG5cbiAgICB0aGlzLmNvbHVtbnMgPSBmaWVsZHNNZXRhLm1hcChjb2x1bW4gPT4gKHtcbiAgICAgIC4uLmNvbHVtbixcbiAgICAgIHR5cGU6IGNvbHVtbi5mbGRUeXBlIHx8ICdUZXh0JyAvLyBEZWZhdWx0IHRvICdUZXh0JyBpZiBmbGRUeXBlIG5vdCBhdmFpbGFibGVcbiAgICB9KSk7XG4gIH1cbiAgfVxuXG4gIC8vIEFQIDIzTUFZMjUgLSBBZGQgYSBuZXcgYnV0dG9uIHdpdGggZGVmYXVsdCBzdHlsaW5nXG4gIGFkZE5ld0J1dHRvbigpOiB2b2lkIHtcbiAgICBjb25zdCBsYXN0UGVyY2VudCA9IHRoaXMuYm9vaz8ucXVlc3Rpb25ib29rPy5hY3Rpb24/LnNsaWNlKC0xKVswXT8ucG9zaXRpb25QZXJjZW50IHx8IDA7XG4gICAgY29uc3QgYnV0dG9ucyA9IHtcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgZXZlbnR0b2VtaXQ6ICcnLFxuICAgICAgYWx0OiAnJyxcbiAgICAgIGVuZHBvaW50OiAnJyxcbiAgICAgIG1ldGhvZDogJycsXG4gICAgICBpZDogdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuYWRkRWxlbWVudFdpdGhJZCgpLFxuICAgICAgcG9zaXRpb25QZXJjZW50OiBsYXN0UGVyY2VudCArIDEwLCAgXG4gICAgICB3aWR0aDogMTAwLFxuICAgICAgYm9yZGVyUmFkaXVzOiA2LFxuICAgICAgYWxpZ25tZW50OiAnZmxleC1zdGFydCdcbiAgICB9O1xuICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLnVwZGF0ZVF1ZXN0aW9uQm9va0FjdGlvbkJ1dHRvbnMoYnV0dG9ucywgJ2FkZCcpO1xuICB9XG4gIFxuIC8vQVAgMjNNQVkyNSAtIFJlbW92ZSBhIGJ1dHRvbiBmcm9tIHRoZSBhY3Rpb24gbGlzdFxuICByZW1vdmVCdXR0b24oYnRuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS51cGRhdGVRdWVzdGlvbkJvb2tBY3Rpb25CdXR0b25zKGJ0biwncmVtb3ZlJyk7XG4gIH1cbiAgLy9BUCAyM01BWTI1IC0gVXBkYXRlIGEgc3BlY2lmaWMgcHJvcGVydHkgb2YgYSBidXR0b25cbiAgb25CdXR0b25Qcm9wZXJ0eUNoYW5nZShpbmRleDogbnVtYmVyLCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGJ1dHRvbnMgPSB0aGlzLmdldFZhbHVlQnlQYXRoKCdhY3Rpb24nKSB8fCBbXTtcbiAgICBpZiAoYnV0dG9uc1tpbmRleF0pIHtcbiAgICAgIGJ1dHRvbnNbaW5kZXhdW2tleV0gPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2V0VmFsdWVCeVBhdGgoJ2FjdGlvbicsIGJ1dHRvbnMpOyBcbiAgICB9XG4gIH1cbiAgLy9BUC0xME1BUjI1IFVwZGF0ZXMgdGhlIHRpdGxlIHVzaW5nIHRoZSBmb3JtIGJ1aWxkZXIgc2VydmljZSAgXG4gIHVwZGF0ZVRpdGxlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS51cGRhdGVUaXRsZShldmVudCk7XG4gIH1cbiAgdmFsaWRhdGVJbnB1dCh2YWx1ZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZSA9PT0gJ2xhYmVsJyB8fCB0eXBlID09PSAncGxhY2Vob2xkZXInKSB7XG4gICAgICBjb25zdCByZWdleCA9IC9eW2EtekEtWjAtOVxcc10qJC87XG4gICAgICBpZiAoIXJlZ2V4LnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ09ubHkgbGV0dGVycyBhbmQgbnVtYmVycyBhcmUgYWxsb3dlZCc7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldCBmaWVsZEFzU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYm9va1N1YnRleHQuZmllbGQuam9pbignLCAnKTsgLy9TS1MyOE1BUjI1IENvbnZlcnQgYXJyYXkgdG8gY29tbWEtc2VwYXJhdGVkIHN0cmluZ1xuICB9XG5cbiAgdXBkYXRlRmllbGQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuYm9va1N1YnRleHQuZmllbGQgPSB2YWx1ZS5zcGxpdCgnLCcpLm1hcChpdGVtID0+IGl0ZW0udHJpbSgpKTsgLy9TS1MyOE1BUjI1IENvbnZlcnQgc3RyaW5nIGJhY2sgdG8gYXJyYXlcbiAgfVxuICAvLyBTS1MyME1BUjI1IEdldHRlciB0byBmaWx0ZXIgY29sdW1ucywgZXhjbHVkaW5nIHRoZSBvbmUgd2l0aCBjdXJyZW50VW5pcXVlSWRlbnRpZmllclxuICBnZXQgZmlsdGVyZWRDb2x1bW5zKCk6IGFueVtdIHtcbiAgICBjb25zdCB0YXJnZXRBcnJheSA9IHRoaXMuZ2V0RGF0YUJ5UGF0aCgnZmllbGRzTWV0YScpO1xuICAgIHJldHVybiB0YXJnZXRBcnJheS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi51bmlxdWVJZGVudGlmaWVyICE9PSB0aGlzLnNlbGVjdENvbHVtbik7XG4gIH1cblxuICAvLyBTS1MyME1BUjI1IE1ldGhvZCB0byBoYW5kbGUgY2hlY2tib3ggY2hhbmdlc1xuICBvbkNoZWNrYm94Q2hhbmdlKHRhcmdldEFycmF5UGF0aDogYW55LCB0YXJnZXRBcnJheUtleTogYW55LCBrZXk6IGFueSwgYXBpTmFtZTogc3RyaW5nLCBpc0NoZWNrZWQ6IGJvb2xlYW4pIHtcbiAgICBjb25zdCB0YXJnZXRBcnJheSA9IHRoaXMuZ2V0RGF0YUJ5UGF0aCh0YXJnZXRBcnJheVBhdGgpO1xuICAgIGNvbnN0IGZvdW5kSXRlbSA9IHRhcmdldEFycmF5LmZpbmQoaXRlbSA9PiBpdGVtW3RhcmdldEFycmF5S2V5XSA9PT0gdGhpcy5zZWxlY3RDb2x1bW4pO1xuICAgIGZvdW5kSXRlbVtrZXldID0gZm91bmRJdGVtW2tleV0gPyBmb3VuZEl0ZW1ba2V5XSA6IFtdO1xuICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgIC8vIEFkZCBhcGlOYW1lIHRvIHNlbGVjdGVkQXBpTmFtZXMgaWYgbm90IGFscmVhZHkgcHJlc2VudFxuICAgICAgaWYgKCFmb3VuZEl0ZW1ba2V5XS5pbmNsdWRlcyhhcGlOYW1lKSkge1xuICAgICAgICBmb3VuZEl0ZW1ba2V5XS5wdXNoKGFwaU5hbWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZW1vdmUgYXBpTmFtZSBmcm9tIHNlbGVjdGVkQXBpTmFtZXMgaWYgcHJlc2VudFxuICAgICAgY29uc3QgaW5kZXggPSBmb3VuZEl0ZW1ba2V5XS5pbmRleE9mKGFwaU5hbWUpO1xuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgZm91bmRJdGVtW2tleV0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdGhpcy51cGRhdGVFbGVtZW50KHRoaXMuc2VsZWN0ZWRFbGVtZW50KVxuICB9XG4gIHVwZGF0ZVByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXggPj0gMCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50LnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZUJ5UGF0aChrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChrZXkgPT09ICdxdWVzdGlvblRleHQnIHx8IGtleSA9PT0gJ3F1ZXN0aW9uJykge1xuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVJbnB1dCh2YWx1ZSwga2V5KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gJ3F1ZXN0aW9uTnVtYmVyJykge1xuICAgICAgICAvL0FQLTEwTUFSMjUgQ29udmVydCB0aGUgdmFsdWUgdG8gYW4gaW50ZWdlciAgXG4gICAgICAgIGNvbnN0IG5ld09yZGVyID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICAgICAgaWYgKGlzTmFOKG5ld09yZGVyKSkgcmV0dXJuO1xuXG4gICAgICAgIC8vQVAtMTBNQVIyNSBVcGRhdGUgdGhlIGVsZW1lbnQncyBxdWVzdGlvbk51bWJlciBpbiB0aGUgZm9ybSBidWlsZGVyIHNlcnZpY2UgIFxuICAgICAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS51cGRhdGVFbGVtZW50KHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXgsIHsgcXVlc3Rpb25OdW1iZXI6IG5ld09yZGVyIH0pO1xuXG4gICAgICAgIC8vQVAtMTBNQVIyNSBTb3J0IGVsZW1lbnRzIGJhc2VkIG9uIHRoZSB1cGRhdGVkIHF1ZXN0aW9uTnVtYmVyICBcbiAgICAgICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2Uuc29ydEVsZW1lbnRzQnlPcmRlcigpO1xuICAgICAgfVxuXG5cbiAgICAgIGlmIChrZXkgPT09ICdmb250V2VpZ2h0Jykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFtrZXldID0gdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHVwZGF0ZSA9IHsgW2tleV06IHZhbHVlIH07XG4gICAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS51cGRhdGVFbGVtZW50KHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXgsIHVwZGF0ZSk7XG5cbiAgICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgZm9yIGZvbnQgYW5kIGZvbnQgd2VpZ2h0XG4gICAgICBpZiAoa2V5ID09PSAnZm9udCcpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQuZm9udCA9IHZhbHVlOyAvLyBEaXJlY3RseSB1cGRhdGUgdGhlIHNlbGVjdGVkIGVsZW1lbnQncyBmb250IHByb3BlcnR5XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIFNLUzIxTUFSMjUgcmFkaW8gYnV0dG9uIGNsaWNrIGhhbmRsZXJcbiAgb25SYWRpb0NoYW5nZSh0YXJnZXRBcnJheVBhdGg6IGFueSwgdGFyZ2V0QXJyYXlLZXk6IGFueSwga2V5OiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQudHlwZSA9PT0gJ1RhYmxlJykge1xuICAgICAgLy8gdGhpcy51cGRhdGVWYWx1ZUJ5QXJyYXlQYXRoKHRhcmdldEFycmF5LCB0YXJnZXRBcnJheUtleSwgdGhpcy5zZWxlY3RDb2x1bW4sIGtleSwgdmFsdWUpO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50Py50eXBlID09PSAnVGFibGUnKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50WydmaWVsZHNNZXRhJ10gPSB0eXBlb2YgdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LmZpZWxkc01ldGEgPT09ICdvYmplY3QnID8gdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LmZpZWxkc01ldGEgOiBKU09OLnBhcnNlKHRoaXMuc2VsZWN0ZWRFbGVtZW50WydmaWVsZHNNZXRhJ10gfHwgW10pO1xuICAgICAgfVxuICAgICAgY29uc3QgdGFyZ2V0QXJyYXkgPSB0aGlzLmdldERhdGFCeVBhdGgodGFyZ2V0QXJyYXlQYXRoKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwidGFyZ2V0QXJyYXlcIiwgdGFyZ2V0QXJyYXksIFwidGFyZ2V0QXJyYXlLZXlcIiwgdGFyZ2V0QXJyYXlLZXksIFwic2VsZWN0Q29sdW1uXCIsIHRoaXMuc2VsZWN0Q29sdW1uLCBcImtleVBhdGhcIiwga2V5LCBcImV2ZW50XCIsIHZhbHVlKVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRhcmdldEFycmF5KSkgcmV0dXJuO1xuXG4gICAgICAvLyBGaW5kIHRoZSBvYmplY3QgdGhhdCBtYXRjaGVzIHNlbGVjdENvbHVtblxuICAgICAgbGV0IGZvdW5kSXRlbSA9IHRhcmdldEFycmF5LmZpbmQoaXRlbSA9PiBpdGVtW3RhcmdldEFycmF5S2V5XSA9PT0gdGhpcy5zZWxlY3RDb2x1bW4pO1xuXG4gICAgICAvLyBJZiB0aGUgaXRlbSBkb2VzIG5vdCBleGlzdCwgY3JlYXRlIGFuZCBhZGQgaXRcbiAgICAgIGlmICghZm91bmRJdGVtKSB7XG4gICAgICAgIGZvdW5kSXRlbSA9IHsgW3RhcmdldEFycmF5S2V5XTogdGhpcy5zZWxlY3RDb2x1bW4gfTsgLy8gRW5zdXJlIHRoZSBrZXkgZXhpc3RzXG4gICAgICAgIHRhcmdldEFycmF5LnB1c2goZm91bmRJdGVtKTtcbiAgICAgIH1cblxuICAgICAgLy8gVHJhdmVyc2UgYW5kIHNldCB0aGUgdmFsdWVcbiAgICAgIGNvbnN0IGtleXMgPSBrZXkuc3BsaXQoJy4nKTtcbiAgICAgIGxldCBvYmogPSBmb3VuZEl0ZW07XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgaWYgKCFvYmpba2V5XSkgb2JqW2tleV0gPSB7fTsgLy8gSW5pdGlhbGl6ZSBtaXNzaW5nIG9iamVjdHNcbiAgICAgICAgb2JqID0gb2JqW2tleV07XG4gICAgICB9XG5cbiAgICAgIC8vIEFzc2lnbiB0aGUgdmFsdWUgYmFzZWQgb24gaW5wdXQgdHlwZVxuICAgICAgY29uc3QgbGFzdEtleSA9IGtleXNba2V5cy5sZW5ndGggLSAxXTtcblxuICAgICAgb2JqW2xhc3RLZXldID0gdmFsdWU7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSA9IHR5cGVvZiB0aGlzLnNlbGVjdGVkRWxlbWVudD8uZmllbGRzTWV0YSA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkRWxlbWVudD8uZmllbGRzTWV0YSkgOiB0aGlzLnNlbGVjdGVkRWxlbWVudFsnZmllbGRzTWV0YSddIHx8IFtdO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVFbGVtZW50KHRoaXMuc2VsZWN0ZWRFbGVtZW50KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFZhbHVlQnlQYXRoKGtleSwgdmFsdWUpOyAvLyBGYWxsYmFjayBmb3Igbm9uLVRhYmxlIGVsZW1lbnRzLCBpZiBhcHBsaWNhYmxlXG4gICAgfVxuICB9XG4gIG9uUmVxdWlyZWRDaGFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQpIHtcbiAgICAgIGxldCBsYWJlbCA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50LmxhYmVsID8gdGhpcy5zZWxlY3RlZEVsZW1lbnQubGFiZWwucmVwbGFjZSgvXFxzKlxcKiskLywgJycpIDogJ0xhYmVsJztcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGxhYmVsID0gYCR7bGFiZWx9ICpgO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnVwZGF0ZVByb3BlcnR5KCdsYWJlbCcsIGxhYmVsKTtcbiAgICAgIHRoaXMudXBkYXRlUHJvcGVydHkoJ2lzT3B0aW9uYWwnLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gVG9nZ2xlIGZvciBTdWIgUXVlc3Rpb25zIChFYWNoIHByb3AgaGFzIGl0cyBvd24gc3RhdGUpXG4gIHRvZ2dsZVN1YlF1ZXN0aW9uKHByb3A6IGFueSkge1xuICAgIHByb3AuaXNFeHBhbmRlZCA9ICFwcm9wLmlzRXhwYW5kZWQ7XG4gIH1cblxuICAvLyBTZXBhcmF0ZSBUb2dnbGUgZm9yIFN0eWxlIFNlY3Rpb25cbiAgaXNTdHlsZUV4cGFuZGVkID0gZmFsc2U7XG5cbiAgdG9nZ2xlU3R5bGVTZWN0aW9uKCkge1xuICAgIHRoaXMuaXNTdHlsZUV4cGFuZGVkID0gIXRoaXMuaXNTdHlsZUV4cGFuZGVkO1xuICB9XG5cbiAgZ2V0UHJvcGVydGllcygpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRFbGVtZW50KSByZXR1cm4gbnVsbDtcblxuICAgIC8vIEFQLTEwTUFSMjUgUmV0cmlldmUgdGhlIGxhdGVzdCBib29rIGRhdGFcbiAgICB0aGlzLmJvb2sgPSB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5nZXRCb29rKCk7XG5cbiAgICAvLyBBUC0xME1BUjI1IElmIHRoZSBzZWxlY3RlZCBlbGVtZW50IGlzIGEgJ0hlYWRlcicsIHJldHVybiBpdHMgcHJvcGVydGllc1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudD8udHlwZSA9PT0gJ0hlYWRlcicpIHtcbiAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzWydIZWFkZXInXTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50Py50eXBlID09PSAnVGFibGUnKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RDb2x1bW4gIT09IG51bGwpIHtcbiAgICAgICAgLy8gR2V0IHRoZSBjb2x1bW4gbWV0YWRhdGFcbiAgICAgICAgY29uc3QgZmllbGRzTWV0YSA9IEFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZEVsZW1lbnQuZmllbGRzTWV0YSkgXG4gICAgICAgICAgPyB0aGlzLnNlbGVjdGVkRWxlbWVudC5maWVsZHNNZXRhIFxuICAgICAgICAgIDogSlNPTi5wYXJzZSh0aGlzLnNlbGVjdGVkRWxlbWVudC5maWVsZHNNZXRhIHx8ICdbXScpO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgY29sdW1uID0gZmllbGRzTWV0YS5maW5kKChjOiBhbnkpID0+IGMudW5pcXVlSWRlbnRpZmllciA9PT0gdGhpcy5zZWxlY3RDb2x1bW4pO1xuICAgICAgICBcbiAgICAgICAgaWYgKGNvbHVtbikge1xuICAgICAgICAgIC8vIFJldHVybiBzcGVjaWZpYyBwcm9wZXJ0aWVzIGJhc2VkIG9uIGNvbHVtbiB0eXBlXG4gICAgICAgICAgc3dpdGNoIChjb2x1bW4uZmxkVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnTGlzdCc6XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzWydMaXN0Q29sdW1uJ107XG4gICAgICAgICAgICBjYXNlICdEcm9wZG93bic6XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzWydEcm9wZG93bkNvbHVtbiddO1xuICAgICAgICAgICAgY2FzZSAnRGF0ZSc6XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRQcm9wZXJ0aWVzWydEYXRlQ29sdW1uJ107XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UHJvcGVydGllc1snVGFibGVDb2x1bW4nXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFByb3BlcnRpZXNbdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LnR5cGVdIHx8IHRoaXMuZWxlbWVudFByb3BlcnRpZXNbJ0RlZmF1bHRDb2x1bW4nXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFByb3BlcnRpZXNbdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LnR5cGVdO1xuICB9XG4gIC8vIEFQLTI4TUFSMjUgQWRkIGFuIG9wdGlvbiB3aXRoIGEgdW5pcXVlIFVVSURcbiAgYWRkT3B0aW9uKG9wdGlvbnM6IGFueVtdKSB7XG4gICAgY29uc3QgdW5pcXVlX2lkID0gdXVpZHY0KCk7XG4gICAgb3B0aW9ucy5wdXNoKHsgaWQ6IHVuaXF1ZV9pZCx2YWx1ZTogJycgfSk7XG4gIH1cblxuICAvLyBBUC0yOE1BUjI1IEZ1bmN0aW9uIHRvIHJlbW92ZSBhbiBvcHRpb24gYmFzZWQgb24gaXRzIHVuaXF1ZSBVVUlEXG4gIHJlbW92ZU9wdGlvbihvcHRpb25zOiBhbnlbXSwgaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGluZGV4ID0gb3B0aW9ucy5maW5kSW5kZXgob3B0aW9uID0+IG9wdGlvbi5pZCA9PT0gaWQpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIG9wdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVCdXR0b25DbGljaygpIHtcbiAgICB0aGlzLmZvcm1CdXR0b25IYW5kbGVyLmVtaXQodGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuZG93bmxvYWRFbGVtZW50KCkpO1xuICB9XG4gIGhhbmRsZVRlbXBsYXRlU2F2ZSgpIHtcbiAgICB0aGlzLnRlbXBsYXRlU2F2ZUhhbmRsZXIuZW1pdCh0aGlzLnRlbXBsYXRlU2VydmljZS5kb3dubG9hZCgpKTtcbiAgfVxuICAvLyBTS1MxM01BUjI1IGFjdGl2ZSB0YWIgc2VsZWN0XG4gIHNldEFjdGl2ZVRhYih0YWI6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlVGFiID0gdGFiO1xuICB9XG4gIC8vIFNLUzEzTUFSMjUgdGFibGUgcHJvcGVydHkgc2F2ZVxuICBvblNhdmUoKTogdm9pZCB7XG4gICAgLy8gY29uc29sZS5sb2coJ1NhdmluZyBkYXRhOicpO1xuICB9XG4gIC8vIFNLUzEzTUFSMjUgdGFibGUgcHJvcGVydHkgcmVzZXRcbiAgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgLy8gY29uc29sZS5sb2coJ09wZXJhdGlvbiBjYW5jZWxsZWQnKTtcbiAgfVxuXG4gIHVwZGF0ZVByb3BlcnRpZXMoZWxlbWVudFR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIFJlc2V0IGFsaWdubWVudCBhbmQgc3R5bGVzIGlmIHN3aXRjaGluZyBlbGVtZW50c1xuICAgIHRoaXMuc2VsZWN0ZWRBbGlnbiA9ICdhbGlnbi1sZWZ0JztcbiAgICB0aGlzLnNlbGVjdGVkU3R5bGVzID0gW107XG5cbiAgICAvLyBGZXRjaCB0aGUgcHJvcGVydGllcyBvZiB0aGUgc2VsZWN0ZWQgZWxlbWVudCB0eXBlXG5cbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgaWYgKHByb3BlcnRpZXMpIHtcbiAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcHJvcGVydGllcyBhcmUgZHluYW1pY2FsbHkgdXBkYXRlZFxuICAgIH1cbiAgfVxuXG4gIG9uQWxpZ25TZWxlY3QodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQudGV4dEFsaWduID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgb25TdHlsZVNlbGVjdCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBzdHlsZXMgYXJyYXkgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnN0eWxlcyA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50LnN0eWxlcyB8fCBbXTtcblxuICAgIC8vIEVuc3VyZSBvbmx5IG9uZSBzdHlsZSBpcyBzZWxlY3RlZCBhdCBhIHRpbWVcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zdHlsZXMgPSBbdmFsdWVdO1xuXG4gIH1cblxuICBpc1N0eWxlQWN0aXZlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LnN0eWxlcz8uaW5jbHVkZXModmFsdWUpIHx8IGZhbHNlO1xuICB9XG4gIGdldFZhbHVlQnlQYXRoKHBhdGg6IHN0cmluZyk6IGFueSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50Py50eXBlID09PSAnVGFibGUnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFsnZmllbGRzTWV0YSddID0gdHlwZW9mIHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5maWVsZHNNZXRhID09PSAnb2JqZWN0JyA/IHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5maWVsZHNNZXRhIDogSlNPTi5wYXJzZSh0aGlzLnNlbGVjdGVkRWxlbWVudFsnZmllbGRzTWV0YSddIHx8IFtdKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFsnc3ViVGV4dCddID0gXG4gICAgICAgIHR5cGVvZiB0aGlzLnNlbGVjdGVkRWxlbWVudD8uc3ViVGV4dCA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgID8gdGhpcy5zZWxlY3RlZEVsZW1lbnQuc3ViVGV4dFxuICAgICAgICAgICAgOiAodHlwZW9mIHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5zdWJUZXh0ID09PSAnc3RyaW5nJyAmJiB0aGlzLnNlbGVjdGVkRWxlbWVudC5zdWJUZXh0LnRyaW0oKSAhPT0gJycgXG4gICAgICAgICAgICAgICAgPyBKU09OLnBhcnNlKHRoaXMuc2VsZWN0ZWRFbGVtZW50LnN1YlRleHQpIFxuICAgICAgICAgICAgICAgIDoge30pO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50WydzdWJUZXh0J10gJiYgQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkRWxlbWVudFsnc3ViVGV4dCddLmZpZWxkKSkge1xuICAgICAgICAvLyBDb252ZXJ0IGFycmF5IHRvIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZ1xuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFsnc3ViVGV4dCddLmZpZWxkID0gdGhpcy5zZWxlY3RlZEVsZW1lbnRbJ3N1YlRleHQnXS5maWVsZC5qb2luKCcsICcpO1xuICAgIH0gIFxuICAgIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChvYmosIGtleSkgPT4gb2JqPy5ba2V5XSA/PyAnJywgdGhpcy5zZWxlY3RlZEVsZW1lbnQpO1xuICB9XG5pc0Fub3RoZXJJZFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UuZ2V0RWxlbWVudHMoKVxuICAgIC5zb21lKChlbCwgaSkgPT4gaSAhPT0gdGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCAmJiBlbC5wcmltYXJ5S2V5KTtcbn1cbiAgb25Ub2dnbGVDaGFuZ2UocGF0aDogc3RyaW5nLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBjaGVja2VkID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jaGVja2VkO1xuICAgIHRoaXMuc2V0VmFsdWVCeVBhdGgocGF0aCwgY2hlY2tlZCk7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50Py50eXBlID09PSAnVGFibGUnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFsnZmllbGRzTWV0YSddID0gdHlwZW9mIHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5maWVsZHNNZXRhID09PSAnb2JqZWN0JyA/IEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5maWVsZHNNZXRhKSA6IHRoaXMuc2VsZWN0ZWRFbGVtZW50WydmaWVsZHNNZXRhJ10gfHwgW107XG4gICAgfVxuICAgIHRoaXMudXBkYXRlRWxlbWVudCh0aGlzLnNlbGVjdGVkRWxlbWVudClcbiAgfVxuXG4gIHNldFZhbHVlQnlQYXRoKHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXggPj0gMCkge1xuICAgICAgaWYgKHBhdGggPT09ICdxdWVzdGlvblRleHQnIHx8IHZhbHVlID09PSAncXVlc3Rpb24nKSB7XG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZUlucHV0KHZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHBhdGggPT09ICdxdWVzdGlvbk51bWJlcicpIHtcbiAgICAgICAgLy9BUC0xME1BUjI1IENvbnZlcnQgdGhlIHZhbHVlIHRvIGFuIGludGVnZXIgIFxuICAgICAgICBjb25zdCBuZXdPcmRlciA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgICAgIGlmIChpc05hTihuZXdPcmRlcikpIHJldHVybjtcblxuICAgICAgICAvL0FQLTEwTUFSMjUgVXBkYXRlIHRoZSBlbGVtZW50J3MgcXVlc3Rpb25OdW1iZXIgaW4gdGhlIGZvcm0gYnVpbGRlciBzZXJ2aWNlICBcbiAgICAgICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2UudXBkYXRlRWxlbWVudCh0aGlzLnNlbGVjdGVkRWxlbWVudEluZGV4LCB7IHF1ZXN0aW9uTnVtYmVyOiBuZXdPcmRlciB9KTtcblxuICAgICAgICAvL0FQLTEwTUFSMjUgU29ydCBlbGVtZW50cyBiYXNlZCBvbiB0aGUgdXBkYXRlZCBxdWVzdGlvbk51bWJlciAgXG4gICAgICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLnNvcnRFbGVtZW50c0J5T3JkZXIoKTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXRoID09PSAnZm9udFdlaWdodCcpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ0ZvbnQgd2VpZ2h0IHNlbGVjdGVkOicsIHZhbHVlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRbcGF0aF0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgZm9yIGZvbnQgYW5kIGZvbnQgd2VpZ2h0XG4gICAgICBpZiAocGF0aCA9PT0gJ2ZvbnQnKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LmZvbnQgPSB2YWx1ZTsgLy8gRGlyZWN0bHkgdXBkYXRlIHRoZSBzZWxlY3RlZCBlbGVtZW50J3MgZm9udCBwcm9wZXJ0eVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgbGV0IG9iaiA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50O1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJykge1xuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSA9IHR5cGVvZiB0aGlzLnNlbGVjdGVkRWxlbWVudD8uZmllbGRzTWV0YSA9PT0gJ29iamVjdCcgPyB0aGlzLnNlbGVjdGVkRWxlbWVudD8uZmllbGRzTWV0YSA6IEpTT04ucGFyc2UodGhpcy5zZWxlY3RlZEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSB8fCBbXSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50WydzdWJUZXh0J10gPSB0eXBlb2YgdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LnN1YlRleHQgPT09ICdvYmplY3QnID8gdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LnN1YlRleHQgOiBKU09OLnBhcnNlKHRoaXMuc2VsZWN0ZWRFbGVtZW50WydzdWJUZXh0J10pO1xuXG4gICAga2V5cy5mb3JFYWNoKChrZXksIGluZGV4KSA9PiB7XG4gICAgICBpZiAoIW9ialtrZXldKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBuZXh0IGtleSBpcyBhIG51bWJlciAoYXJyYXkgaW5kZXgpXG4gICAgICAgIGNvbnN0IG5leHRLZXkgPSBrZXlzW2luZGV4ICsgMV07XG4gICAgICAgIG9ialtrZXldID0gaXNOYU4oTnVtYmVyKG5leHRLZXkpKSA/IHt9IDogW107XG4gICAgICB9XG4gICAgICBpZiAoaW5kZXggPT09IGtleXMubGVuZ3RoIC0gMSkge1xuICAgICAgICBvYmpba2V5XSA9IHZhbHVlOyAvLyBBc3NpZ24gdmFsdWUgdG8gbGFzdCBrZXlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iaiA9IG9ialtrZXldOyAvLyBNb3ZlIGRlZXBlclxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmVsZW1lbnRVcGRhdGUodGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCwgdGhpcy5zZWxlY3RlZEVsZW1lbnQpO1xuICB9XG4gIGdldFN0eWxlS2V5cygpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRWxlbWVudCB8fCAhdGhpcy5zZWxlY3RlZEVsZW1lbnQuc3R5bGUgfHwgdHlwZW9mIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnN0eWxlICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZEVsZW1lbnQuc3R5bGUpO1xuICB9ICBcblxuICAvLyBTS1MxOU1BUjI1IHVwZGF0ZSBlbGVtZW50IGluIHNlcnZpZXNcbiAgdXBkYXRlRWxlbWVudChlbGVtZW50OiBhbnkpIHtcbiAgICB0aGlzLmZvcm1CdWlsZGVyU2VydmljZS5lbGVtZW50VXBkYXRlKHRoaXMuc2VsZWN0ZWRFbGVtZW50SW5kZXgsIGVsZW1lbnQpXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50Py50eXBlID09PSAnVGFibGUnICYmIHRoaXMuc2VsZWN0Q29sdW1uKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFsnZmllbGRzTWV0YSddID0gdHlwZW9mIHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5maWVsZHNNZXRhID09PSAnb2JqZWN0JyA/IHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5maWVsZHNNZXRhIDogSlNPTi5wYXJzZSh0aGlzLnNlbGVjdGVkRWxlbWVudC5maWVsZHNNZXRhIHx8IFtdKTtcbiAgICAgIGNvbnN0IGZvdW5kSXRlbSA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50WydmaWVsZHNNZXRhJ10uZmluZChpdGVtID0+IGl0ZW1bJ3VuaXF1ZUlkZW50aWZpZXInXSA9PT0gdGhpcy5zZWxlY3RDb2x1bW4pO1xuICAgICAgdGhpcy5mb3JtQnVpbGRlclNlcnZpY2Uuc2V0U2VsZWN0ZWRUYWJsZUVsZW1lbnQodGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCwgeyBjb2x1bW46IGZvdW5kSXRlbT8uYXBpTmFtZSB8fCBudWxsIH0pO1xuICAgIH1cbiAgfVxuICAvLyBTS1MxOU1BUjI1IGdldCB2YWx1ZSBmcm9tIGFycmF5XG4gIGdldFZhbHVlQnlBcnJheVBhdGgodGFyZ2V0QXJyYXlQYXRoOiBhbnksIHRhcmdldEFycmF5S2V5OiBzdHJpbmcsIHNlbGVjdENvbHVtbjogc3RyaW5nLCBrZXlQYXRoOiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJykge1xuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSA9IHR5cGVvZiB0aGlzLnNlbGVjdGVkRWxlbWVudD8uZmllbGRzTWV0YSA9PT0gJ29iamVjdCcgPyB0aGlzLnNlbGVjdGVkRWxlbWVudD8uZmllbGRzTWV0YSA6IEpTT04ucGFyc2UodGhpcy5zZWxlY3RlZEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSB8fCBbXSk7XG4gICAgfVxuICAgIGNvbnN0IHRhcmdldEFycmF5ID0gdGhpcy5nZXREYXRhQnlQYXRoKHRhcmdldEFycmF5UGF0aCk7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRhcmdldEFycmF5KSkgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgZm91bmRJdGVtID0gdGFyZ2V0QXJyYXkuZmluZChpdGVtID0+IGl0ZW1bdGFyZ2V0QXJyYXlLZXldID09PSBzZWxlY3RDb2x1bW4pO1xuXG4gICAgcmV0dXJuIGZvdW5kSXRlbSA/IGtleVBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiBvYmo/LltrZXldLCBmb3VuZEl0ZW0pIDogJyc7XG4gIH1cblxuICAvL1NLUzE5TUFSMjUgRnVuY3Rpb24gdG8gdXBkYXRlIGEgdmFsdWUgaW4gYW4gYXJyYXkgZHluYW1pY2FsbHlcbiAgdXBkYXRlVmFsdWVCeUFycmF5UGF0aCh0YXJnZXRBcnJheVBhdGg6IGFueSwgdGFyZ2V0QXJyYXlLZXk6IHN0cmluZywgc2VsZWN0Q29sdW1uOiBzdHJpbmcsIGtleVBhdGg6IHN0cmluZywgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRFbGVtZW50Py50eXBlID09PSAnVGFibGUnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudFsnZmllbGRzTWV0YSddID0gdHlwZW9mIHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5maWVsZHNNZXRhID09PSAnb2JqZWN0JyA/IHRoaXMuc2VsZWN0ZWRFbGVtZW50Py5maWVsZHNNZXRhIDogSlNPTi5wYXJzZSh0aGlzLnNlbGVjdGVkRWxlbWVudFsnZmllbGRzTWV0YSddIHx8IFtdKTtcbiAgICB9XG4gICAgY29uc3QgdGFyZ2V0QXJyYXkgPSB0aGlzLmdldERhdGFCeVBhdGgodGFyZ2V0QXJyYXlQYXRoKTtcbiAgICAvLyBjb25zb2xlLmxvZyhcInRhcmdldEFycmF5XCIsIHRhcmdldEFycmF5LCBcInRhcmdldEFycmF5S2V5XCIsIHRhcmdldEFycmF5S2V5LCBcInNlbGVjdENvbHVtblwiLCBzZWxlY3RDb2x1bW4sIFwia2V5UGF0aFwiLCBrZXlQYXRoLCBcImV2ZW50XCIsIGV2ZW50KVxuICAgIGlmICghQXJyYXkuaXNBcnJheSh0YXJnZXRBcnJheSkpIHJldHVybjtcblxuICAgIC8vIEZpbmQgdGhlIG9iamVjdCB0aGF0IG1hdGNoZXMgc2VsZWN0Q29sdW1uXG4gICAgbGV0IGZvdW5kSXRlbSA9IHRhcmdldEFycmF5LmZpbmQoaXRlbSA9PiBpdGVtW3RhcmdldEFycmF5S2V5XSA9PT0gc2VsZWN0Q29sdW1uKTtcblxuICAgIC8vIElmIHRoZSBpdGVtIGRvZXMgbm90IGV4aXN0LCBjcmVhdGUgYW5kIGFkZCBpdFxuICAgIGlmICghZm91bmRJdGVtKSB7XG4gICAgICBmb3VuZEl0ZW0gPSB7IFt0YXJnZXRBcnJheUtleV06IHNlbGVjdENvbHVtbiB9OyAvLyBFbnN1cmUgdGhlIGtleSBleGlzdHNcbiAgICAgIHRhcmdldEFycmF5LnB1c2goZm91bmRJdGVtKTtcbiAgICB9XG5cbiAgICAvLyBUcmF2ZXJzZSBhbmQgc2V0IHRoZSB2YWx1ZVxuICAgIGNvbnN0IGtleXMgPSBrZXlQYXRoLnNwbGl0KCcuJyk7XG4gICAgbGV0IG9iaiA9IGZvdW5kSXRlbTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICBpZiAoIW9ialtrZXldKSBvYmpba2V5XSA9IHt9OyAvLyBJbml0aWFsaXplIG1pc3Npbmcgb2JqZWN0c1xuICAgICAgb2JqID0gb2JqW2tleV07XG4gICAgfVxuXG4gICAgLy8gQXNzaWduIHRoZSB2YWx1ZSBiYXNlZCBvbiBpbnB1dCB0eXBlXG4gICAgY29uc3QgbGFzdEtleSA9IGtleXNba2V5cy5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgIG9ialtsYXN0S2V5XSA9IGlucHV0RWxlbWVudD8udHlwZSA9PT0gJ2NoZWNrYm94JyA/IGlucHV0RWxlbWVudC5jaGVja2VkIDogaW5wdXRFbGVtZW50LnZhbHVlO1xuICAgIGlmIChrZXlQYXRoID09PSAnc3VtbWFyeUNvbHVtbicpIHtcbiAgICAgIGlmIChvYmpbJ3N1bW1hcnlSb3cnXSA9PT0gdHJ1ZSkge1xuICAgICAgICBvYmpbJ3N1bW1hcnlSb3cnXSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGlucHV0RWxlbWVudC5jaGVja2VkID09PSB0cnVlKSB7XG4gICAgICAgIG9ialsnZmxkVHlwZSddID0gJ2NhbGN1bGF0aW9uJ1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqWydmbGRUeXBlJ10gPSAnVGV4dCdcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGtleVBhdGggPT09ICdzdW1tYXJ5Um93Jykge1xuICAgICAgaWYgKG9ialsnc3VtbWFyeUNvbHVtbiddID09PSB0cnVlKSB7XG4gICAgICAgIG9ialsnc3VtbWFyeUNvbHVtbiddID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXRFbGVtZW50LmNoZWNrZWQgPT09IHRydWUpIHtcbiAgICAgICAgb2JqWydmbGRUeXBlJ10gPSAnY2FsY3VsYXRpb24nXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmpbJ2ZsZFR5cGUnXSA9ICdUZXh0J1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50WydmaWVsZHNNZXRhJ10gPSB0eXBlb2YgdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LmZpZWxkc01ldGEgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZEVsZW1lbnQ/LmZpZWxkc01ldGEpIDogdGhpcy5zZWxlY3RlZEVsZW1lbnRbJ2ZpZWxkc01ldGEnXSB8fCBbXTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVFbGVtZW50KHRoaXMuc2VsZWN0ZWRFbGVtZW50KVxuICB9XG4gIGdldERhdGFCeVBhdGgocGF0aDogc3RyaW5nKTogYW55IHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50WydmaWVsZHNNZXRhJ10gPSB0eXBlb2YgdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LmZpZWxkc01ldGEgPT09ICdvYmplY3QnID8gdGhpcy5zZWxlY3RlZEVsZW1lbnQ/LmZpZWxkc01ldGEgOiBKU09OLnBhcnNlKHRoaXMuc2VsZWN0ZWRFbGVtZW50WydmaWVsZHNNZXRhJ10gfHwgW10pO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgob2JqLCBrZXkpID0+IG9iaj8uW2tleV0sIHRoaXMuc2VsZWN0ZWRFbGVtZW50KTtcbiAgfVxuXG4gIC8vIFNLUzI1TUFSMjUgaW1hZ2UgZWRpdCBmdW5jdGlvbnNcbiAgZmxpcEhvcml6b250YWwoKSB7XG4gICAgdGhpcy50cmFuc2Zvcm0gPSB7XG4gICAgICAuLi50aGlzLnRyYW5zZm9ybSxcbiAgICAgIGZsaXBIOiAhdGhpcy50cmFuc2Zvcm0uZmxpcEhcbiAgICB9O1xuICB9XG5cbiAgZmxpcFZlcnRpY2FsKCkge1xuICAgIHRoaXMudHJhbnNmb3JtID0ge1xuICAgICAgLi4udGhpcy50cmFuc2Zvcm0sXG4gICAgICBmbGlwVjogIXRoaXMudHJhbnNmb3JtLmZsaXBWXG4gICAgfTtcbiAgfVxuXG4gIHJlc2V0SW1hZ2UoKSB7XG4gICAgdGhpcy5jYW52YXNSb3RhdGlvbiA9IDA7XG4gICAgdGhpcy5jcm9wcGVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMudHJhbnNmb3JtID0ge1xuICAgICAgdHJhbnNsYXRlVW5pdDogJ3B4JyxcbiAgICAgIHNjYWxlOiAxLFxuICAgICAgcm90YXRlOiAwLFxuICAgICAgZmxpcEg6IGZhbHNlLFxuICAgICAgZmxpcFY6IGZhbHNlLFxuICAgICAgdHJhbnNsYXRlSDogMCxcbiAgICAgIHRyYW5zbGF0ZVY6IDBcbiAgICB9O1xuICB9XG5cbiAgem9vbU91dCgpIHtcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHtcbiAgICAgIC4uLnRoaXMudHJhbnNmb3JtLFxuICAgICAgc2NhbGU6IHRoaXMudHJhbnNmb3JtLnNjYWxlISAtIC4xXG4gICAgfTtcbiAgfVxuXG4gIHpvb21JbigpIHtcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHtcbiAgICAgIC4uLnRoaXMudHJhbnNmb3JtLFxuICAgICAgc2NhbGU6IHRoaXMudHJhbnNmb3JtLnNjYWxlISArIC4xXG4gICAgfTtcbiAgfVxuICByb3RhdGVMZWZ0KCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7IC8vIFVzZSB0aW1lb3V0IGJlY2F1c2Ugcm90YXRpbmcgaW1hZ2UgaXMgYSBoZWF2eSBvcGVyYXRpb24gYW5kIHdpbGwgYmxvY2sgdGhlIHVpIHRocmVhZFxuICAgICAgdGhpcy5jYW52YXNSb3RhdGlvbi0tO1xuICAgICAgdGhpcy5mbGlwQWZ0ZXJSb3RhdGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJvdGF0ZVJpZ2h0KCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNhbnZhc1JvdGF0aW9uKys7XG4gICAgICB0aGlzLmZsaXBBZnRlclJvdGF0ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgbW92ZUxlZnQoKSB7XG4gICAgdGhpcy50cmFuc2Zvcm0gPSB7XG4gICAgICAuLi50aGlzLnRyYW5zZm9ybSxcbiAgICAgIHRyYW5zbGF0ZUg6IHRoaXMudHJhbnNmb3JtLnRyYW5zbGF0ZUghIC0gMVxuICAgIH07XG4gIH1cblxuICBtb3ZlUmlnaHQoKSB7XG4gICAgdGhpcy50cmFuc2Zvcm0gPSB7XG4gICAgICAuLi50aGlzLnRyYW5zZm9ybSxcbiAgICAgIHRyYW5zbGF0ZUg6IHRoaXMudHJhbnNmb3JtLnRyYW5zbGF0ZUghICsgMVxuICAgIH07XG4gIH1cblxuICBtb3ZlRG93bigpIHtcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHtcbiAgICAgIC4uLnRoaXMudHJhbnNmb3JtLFxuICAgICAgdHJhbnNsYXRlVjogdGhpcy50cmFuc2Zvcm0udHJhbnNsYXRlViEgKyAxXG4gICAgfTtcbiAgfVxuXG4gIG1vdmVVcCgpIHtcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHtcbiAgICAgIC4uLnRoaXMudHJhbnNmb3JtLFxuICAgICAgdHJhbnNsYXRlVjogdGhpcy50cmFuc2Zvcm0udHJhbnNsYXRlViEgLSAxXG4gICAgfTtcbiAgfVxuICBwcml2YXRlIGZsaXBBZnRlclJvdGF0ZSgpIHtcbiAgICBjb25zdCBmbGlwcGVkSCA9IHRoaXMudHJhbnNmb3JtLmZsaXBIO1xuICAgIGNvbnN0IGZsaXBwZWRWID0gdGhpcy50cmFuc2Zvcm0uZmxpcFY7XG4gICAgdGhpcy50cmFuc2Zvcm0gPSB7XG4gICAgICAuLi50aGlzLnRyYW5zZm9ybSxcbiAgICAgIGZsaXBIOiBmbGlwcGVkVixcbiAgICAgIGZsaXBWOiBmbGlwcGVkSCxcbiAgICAgIHRyYW5zbGF0ZUg6IDAsXG4gICAgICB0cmFuc2xhdGVWOiAwXG4gICAgfTtcbiAgfVxuICBhc3luYyBpbWFnZUNyb3BwZWQoZXZlbnQ6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlNjQgPSBhd2FpdCB0aGlzLmNvbnZlcnRCbG9iVG9CYXNlNjQoZXZlbnQub2JqZWN0VXJsKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LmltYWdlRGF0YSA9IGJhc2U2NDtcbiAgICAgIGF3YWl0IHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmVsZW1lbnRVcGRhdGUodGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCwgdGhpcy5zZWxlY3RlZEVsZW1lbnQpO1xuICAgICAgLy8gY29uc29sZS5sb2coJ0NST1BQRUQnLCBldmVudCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBpbiBpbWFnZUNyb3BwZWQ6XCIsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuXG4gIGNyb3BwZXJSZWFkeShzb3VyY2VJbWFnZURpbWVuc2lvbnM6IERpbWVuc2lvbnMpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnQ3JvcHBlciByZWFkeScsIHNvdXJjZUltYWdlRGltZW5zaW9ucyk7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH1cbiAgLy8gU0tTMjVNQVIyNSBibG9iIHRvIGJhc2UgNjQgY29udmVydGVyXG4gIGNvbnZlcnRCbG9iVG9CYXNlNjQob2JqZWN0VXJsOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBmZXRjaChvYmplY3RVcmwpXG4gICAgICAudGhlbihyZXNwb25zZSA9PiByZXNwb25zZS5ibG9iKCkpXG4gICAgICAudGhlbihibG9iID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpO1xuICAgICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nKTtcbiAgICAgICAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cbiAgLy8gU0tTMjhNQVIyNSBxYiBib29rIHVwZGF0ZSBpbiBib29rIGVsZW1lbnRcbiAgY2hpbGRFdmVudENhcHR1cmUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50LnFiUmVmZXJlbmNlID0gZXZlbnQudmFsdWVPYmo/Lm5hbWVcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5xYlJlZmVyZW5jZVF1ZXN0aW9ucyA9IGV2ZW50LnZhbHVlT2JqPy5qc29uQm9keVxuICAgIHRoaXMuZm9ybUJ1aWxkZXJTZXJ2aWNlLmVsZW1lbnRVcGRhdGUodGhpcy5zZWxlY3RlZEVsZW1lbnRJbmRleCwgdGhpcy5zZWxlY3RlZEVsZW1lbnQpO1xuICB9XG5cbiAgLy8gU0tTMjhNQVIyNSBib29rIHNlYXJjaCBkcm9wZG93biBlbWl0XG4gIGxpbmtUb2dnbGVEcm9wZG93bihldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzTGlua0Ryb3Bkb3duT3BlbiA9ICF0aGlzLmlzTGlua0Ryb3Bkb3duT3BlbjtcbiAgfVxuXG4gIC8vIFNLUzI4TUFSMjUgYm9vayBzZWFyY2ggZHJvcGRvd24gY2xvc2VcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkNsaWNrT3V0c2lkZShldmVudDogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kcm9wZG93biAmJiAhdGhpcy5kcm9wZG93bi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHRoaXMuaXNMaW5rRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIC8vIEFQLTI4TUFSMjUgV2hlbiBkcmFnIHN0YXJ0cywgc3RvcmUgdGhlIGluZGV4XG4gIG9uRHJhZ1N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQsIGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRyYWdnZWRJZCA9IGlkO1xuICAgIGV2ZW50LmRhdGFUcmFuc2ZlciEuZWZmZWN0QWxsb3dlZCA9IFwibW92ZVwiO1xuICB9XG5cbiAgLy8gQVAtMjhNQVIyNSBQcmV2ZW50IGRlZmF1bHQgYmVoYXZpb3IgdG8gYWxsb3cgZHJvcFxuICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgLy8gQVAtMjhNQVIyNSBTd2FwIHRoZSBkcmFnZ2VkIGl0ZW0gd2l0aCB0aGUgZHJvcHBlZCBwb3NpdGlvblxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCwga2V5OiBzdHJpbmcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IHRhcmdldElkID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdChcIi5vcHRpb24taXRlbXNcIik/LmdldEF0dHJpYnV0ZShcImRhdGEtaWRcIik7XG5cbiAgICBpZiAodGhpcy5kcmFnZ2VkSWQgJiYgdGFyZ2V0SWQgJiYgdGhpcy5kcmFnZ2VkSWQgIT09IHRhcmdldElkKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5zZWxlY3RlZEVsZW1lbnRba2V5XTtcblxuICAgICAgW29wdGlvbnNbdGhpcy5kcmFnZ2VkSWRdLCBvcHRpb25zW3RhcmdldElkXV0gPSBbb3B0aW9uc1t0YXJnZXRJZF0sIG9wdGlvbnNbdGhpcy5kcmFnZ2VkSWRdXTtcbiAgICAgIC8vIEZpbmQgdGhlIGluZGV4ZXMgb2YgdGhlIGRyYWdnZWQgYW5kIHRhcmdldCBvcHRpb25zXG4gICAgICBjb25zdCBkcmFnZ2VkSW5kZXggPSBvcHRpb25zLmZpbmRJbmRleChvcHRpb24gPT4gb3B0aW9uLmlkID09PSB0aGlzLmRyYWdnZWRJZCk7XG4gICAgICBjb25zdCB0YXJnZXRJbmRleCA9IG9wdGlvbnMuZmluZEluZGV4KG9wdGlvbiA9PiBvcHRpb24uaWQgPT09IHRhcmdldElkKTtcblxuICAgICAgLy8gU3dhcCB0aGUgaXRlbXNcbiAgICAgIGlmIChkcmFnZ2VkSW5kZXggIT09IC0xICYmIHRhcmdldEluZGV4ICE9PSAtMSkge1xuICAgICAgICBbb3B0aW9uc1tkcmFnZ2VkSW5kZXhdLCBvcHRpb25zW3RhcmdldEluZGV4XV0gPSBbb3B0aW9uc1t0YXJnZXRJbmRleF0sIG9wdGlvbnNbZHJhZ2dlZEluZGV4XV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kcmFnZ2VkSWQgPSBudWxsO1xuICB9XG59XG4iLCI8IS0tIEFQIDIySkFOMjUgLSBGaWVsZCBhbmQgRWxlbWVudCBQcm9wZXJ0aWVzIC0tPlxuPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwidGFic1wiPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFjdGl2ZVRhYiA9PT0gJ2F0dHJpYnV0ZXMnfVwiIChjbGljayk9XCJzZXRBY3RpdmVUYWIoJ2F0dHJpYnV0ZXMnKVwiPlxuICAgICAgQXR0cmlidXRlc1xuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFjdGl2ZVRhYiA9PT0gJ3Byb3BlcnR5J31cIiAoY2xpY2spPVwic2V0QWN0aXZlVGFiKCdwcm9wZXJ0eScpXCI+XG4gICAgICBQcm9wZXJ0eVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0YWJcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGFjdGl2ZVRhYiA9PT0gJ2FwcGVhcmFuY2UnfVwiIChjbGljayk9XCJzZXRBY3RpdmVUYWIoJ2FwcGVhcmFuY2UnKVwiPlxuICAgICAgQXBwZWFyYW5jZVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwidGFiLWNvbnRlbnRcIiAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gJ2F0dHJpYnV0ZXMnXCI+XG4gICAgPCEtLSBFbGVtZW50IFByb3BlcnJ0aWVzIC0tPlxuICAgIDwhLS0gQVAtMDZNQVIyNSBTZWxlY3QgZWxlbWVudCB0eXBlIHNob3cgLS0+XG4gICAgPGRpdiAqbmdJZj1cImdldFByb3BlcnRpZXMoKVwiPlxuICAgICAgPCEtLSBTS1MyNU1BUjI1IHRoaXMgaXMgZm9yIGltYWdlIGVkaXQgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRFbGVtZW50Py50eXBlID09PSAnSW1hZ2UnXCI+XG4gICAgICAgIDxpbWFnZS1jcm9wcGVyICpuZ0lmPVwic2VsZWN0ZWRFbGVtZW50LmltYWdlRGF0YSBcIiBbaW1hZ2VCYXNlNjRdPVwic2VsZWN0ZWRFbGVtZW50Lm9yZ0ltYWdlRGF0YVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCIgW2FsaWduSW1hZ2VdPVwiYWxpZ25JbWFnZVwiIFtyb3VuZENyb3BwZXJdPVwicm91bmRDcm9wcGVyXCIgW2JhY2tncm91bmRDb2xvcl09XCInd2hpdGUnXCJcbiAgICAgICAgICBpbWFnZUFsdFRleHQ9XCJBbHRlcm5hdGl2ZSBpbWFnZSB0ZXh0XCIgW2FsbG93TW92ZUltYWdlXT1cImZhbHNlXCIgW2hpZGVSZXNpemVTcXVhcmVzXT1cImZhbHNlXCJcbiAgICAgICAgICBbY2FudmFzUm90YXRpb25dPVwiY2FudmFzUm90YXRpb25cIiBbYXNwZWN0UmF0aW9dPVwiYXNwZWN0UmF0aW9cIiBbY29udGFpbldpdGhpbkFzcGVjdFJhdGlvXT1cImZhbHNlXCJcbiAgICAgICAgICBbbWFpbnRhaW5Bc3BlY3RSYXRpb109XCJmYWxzZVwiIFtjcm9wcGVyU3RhdGljV2lkdGhdPVwiY3JvcHBlclN0YXRpY1dpZHRoXCJcbiAgICAgICAgICBbY3JvcHBlclN0YXRpY0hlaWdodF09XCJjcm9wcGVyU3RhdGljSGVpZ2h0XCIgW2Nyb3BwZXJNaW5XaWR0aF09XCJjcm9wcGVyTWluV2lkdGhcIlxuICAgICAgICAgIFtjcm9wcGVyTWluSGVpZ2h0XT1cImNyb3BwZXJNaW5IZWlnaHRcIiBbY3JvcHBlck1heFdpZHRoXT1cImNyb3BwZXJNYXhXaWR0aFwiXG4gICAgICAgICAgW2Nyb3BwZXJNYXhIZWlnaHRdPVwiY3JvcHBlck1heEhlaWdodFwiIFtyZXNldENyb3BPbkFzcGVjdFJhdGlvQ2hhbmdlXT0ndHJ1ZScgWyhjcm9wcGVyKV09XCJjcm9wcGVyXCJcbiAgICAgICAgICBbKHRyYW5zZm9ybSldPVwidHJhbnNmb3JtXCIgW29ubHlTY2FsZURvd25dPVwidHJ1ZVwiIG91dHB1dD1cImJsb2JcIiBmb3JtYXQ9XCJwbmdcIlxuICAgICAgICAgIChpbWFnZUNyb3BwZWQpPVwiaW1hZ2VDcm9wcGVkKCRldmVudClcIiAoY3JvcHBlclJlYWR5KT1cImNyb3BwZXJSZWFkeSgkZXZlbnQpXCI+PC9pbWFnZS1jcm9wcGVyPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRFbGVtZW50LmltYWdlRGF0YSBcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogMnB4O1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsb2dvLWljb25cIiAoY2xpY2spPVwicm90YXRlTGVmdCgpXCIgdGl0bGU9XCJSb3RhdGUgTGVmdFwiPuKfsjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsb2dvLWljb25cIiAoY2xpY2spPVwicm90YXRlUmlnaHQoKVwiIHRpdGxlPVwiUm90YXRlIFJpZ2h0XCI+4p+zPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJ6b29tT3V0KClcIiB0aXRsZT1cIlpvb20gT3V0XCI+LTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsb2dvLWljb25cIiAoY2xpY2spPVwiem9vbUluKClcIiB0aXRsZT1cIlpvb20gSW5cIj4rPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJtb3ZlTGVmdCgpXCIgdGl0bGU9XCJNb3ZlIExlZnRcIj7ihpA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgbG9nby1pY29uXCIgKGNsaWNrKT1cIm1vdmVSaWdodCgpXCIgdGl0bGU9XCJNb3ZlIFJpZ2h0XCI+4oaSPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJtb3ZlVXAoKVwiIHRpdGxlPVwiTW92ZSBVcFwiPuKGkTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBsb2dvLWljb25cIiAoY2xpY2spPVwibW92ZURvd24oKVwiIHRpdGxlPVwiTW92ZSBEb3duXCI+4oaTPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJmbGlwSG9yaXpvbnRhbCgpXCIgW2NsYXNzLmVuYWJsZWRdPVwidHJhbnNmb3JtLmZsaXBIXCJcbiAgICAgICAgICAgIHRpdGxlPVwiRmxpcCBIb3Jpem9udGFsbHlcIj7ihpQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgbG9nby1pY29uXCIgKGNsaWNrKT1cImZsaXBWZXJ0aWNhbCgpXCIgW2NsYXNzLmVuYWJsZWRdPVwidHJhbnNmb3JtLmZsaXBWXCJcbiAgICAgICAgICAgIHRpdGxlPVwiRmxpcCBWZXJ0aWNhbGx5XCI+4oaVPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGxvZ28taWNvblwiIChjbGljayk9XCJyZXNldEltYWdlKClcIiB0aXRsZT1cIlJlc2V0XCI+w5c8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gU0tTMjhNQVIyNSBzZWFyY2ggYm9vayBzcGVjaWZpYyBmb3IgYm9vayBlbGVtZW50IC0tPlxuICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkRWxlbWVudD8udHlwZSA9PT0gJ0Jvb2snXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtc21cIj5TZWFyY2ggQm9vazwvbGFiZWw+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBnYXA6IDJweDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCI+XG4gICAgICAgICAgPG54dC1zZWFyY2gtYm94IFtxdWVzdGlvbl09XCJzZWxlY3RlZEVsZW1lbnRcIiBbYXBpTWV0YV09XCJib29rU3VidGV4dFwiIFtwbGFjZUhvbGRlclRleHRdPVwiJ1NlYXJjaC4uLidcIlxuICAgICAgICAgICAgKHNlYXJjaFZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudC52YWx1ZSlcIj5cbiAgICAgICAgICA8L254dC1zZWFyY2gtYm94PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5rLWljb25cIj5cbiAgICAgICAgICAgIDxzdmcgKGNsaWNrKT1cImxpbmtUb2dnbGVEcm9wZG93bigkZXZlbnQpXCIgZmlsbD1cIiMwMDAwMDBcIiB2ZXJzaW9uPVwiMS4xXCIgaWQ9XCJDYXBhXzFcIlxuICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiXG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgNDUwIDQ1MFwiIHhtbDpzcGFjZT1cInByZXNlcnZlXCI+XG4gICAgICAgICAgICAgIDxnPlxuICAgICAgICAgICAgICAgIDxnPlxuICAgICAgICAgICAgICAgICAgPGc+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMzE4LjE1LDIzMC4xOTVsNzcuOTM0LTc3LjkzN2MzMS44OTQtMzEuODkyLDMxLjg5NC04My43ODItMC4wMDQtMTE1LjY3NGwtMTIuNjYtMTIuNjZcbiAgICAgICAgICBjLTMxLjg5My0zMS44OTYtODMuNzgtMzEuODk2LTExNS42NzQtMC4wMDRsLTc3LjkzNyw3Ny45MzRjLTE3LjU4OCwxNy41ODgtMjUuNDU3LDQxLjI2NC0yMy42NDYsNjQuMzExXG4gICAgICAgICAgYy0yMy4wNDUtMS44MTMtNDYuNzIyLDYuMDU2LTY0LjMwOCwyMy42NDdMMjMuOTIsMjY3Ljc0OGMtMzEuODk0LDMxLjg4OS0zMS44OTQsODMuNzc5LDAsMTE1LjY3NGwxMi42NjQsMTIuNjYyXG4gICAgICAgICAgYzMxLjg5MywzMS44OTMsODMuNzgzLDMxLjg5MywxMTUuNjc0LDBsNzcuOTM1LTc3LjkzNmMxNy41OTItMTcuNTksMjUuNDU5LTQxLjI2NiwyMy42NDctNjQuMzA5XG4gICAgICAgICAgQzI3Ni44ODQsMjU1LjY1NCwzMDAuNTYsMjQ3Ljc4MywzMTguMTUsMjMwLjE5NXogTTIwMi42NTMsMjkwLjYwNWwtNzcuOTM2LDc3LjkzOGMtMTYuNzA1LDE2LjcwMy00My44ODksMTYuNzAzLTYwLjU5LDBcbiAgICAgICAgICBsLTEyLjY2Ni0xMi42NjZjLTE2LjcwNS0xNi43MDEtMTYuNzAzLTQzLjg4NSwwLTYwLjU5NGw3Ny45MzYtNzcuOTMyYzE0LjE0LTE0LjE0MSwzNS43NzktMTYuMzA2LDUyLjIyNi02LjUxNmwtMzIuMzAyLDMyLjMwN1xuICAgICAgICAgIGMtNy42MDYsNy42MDQtNy42MDYsMTkuOTM4LDAsMjcuNTQxYzcuNjA1LDcuNjA3LDE5LjkzNyw3LjYwNywyNy41NDEsMGwzMi4zMDYtMzIuMzAzXG4gICAgICAgICAgQzIxOC45NTksMjU0LjgyOCwyMTYuNzk1LDI3Ni40NjksMjAyLjY1MywyOTAuNjA1eiBNMjM4LjM4MiwyMDkuMTY5bDMyLjI5OS0zMi4zMDZjNy42MDgtNy42MDIsNy42MDgtMTkuOTM1LDAtMjcuNTM4XG4gICAgICAgICAgYy03LjYwNC03LjYxLTE5LjkzNi03LjYxLTI3LjU0MS0wLjAwNGwtMzIuMzAzLDMyLjMwM2MtOS43OTEtMTYuNDQ2LTcuNjI3LTM4LjA4Nyw2LjUxNC01Mi4yMjZsNzcuOTM1LTc3LjkzNVxuICAgICAgICAgIGMxNi43MDctMTYuNzA3LDQzLjg5LTE2LjcwNyw2MC41OTQsMGwxMi42NjQsMTIuNjY0YzE2LjcwNSwxNi43MDUsMTYuNzA1LDQzLjg4NiwwLDYwLjU5MWwtNzcuOTM2LDc3LjkzN1xuICAgICAgICAgIEMyNzYuNDY4LDIxNi43OTcsMjU0LjgyOCwyMTguOTU5LDIzOC4zODIsMjA5LjE2OXpcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTM0My40NjYsMjYxLjQ2NWMtNDUuMjg3LDAtODIsMzYuNzEzLTgyLDgyczM2LjcxMyw4Miw4Miw4MmM0NS4yODYsMCw4Mi0zNi43MTMsODItODJTMzg4Ljc1MywyNjEuNDY1LDM0My40NjYsMjYxLjQ2NXpcbiAgICAgICAgICAgTTM3Mi41MDUsMzMzLjU2NGwtNTYuMDQ2LDU2LjEwNGMtMC4yMzksMC4yMzgtMC41MzYsMC40MS0wLjg2MiwwLjQ5NmwtMjIuMzE1LDUuODVjLTAuNjQ5LDAuMTY4LTEuMzQ3LTAuMDItMS44MjItMC40OTRcbiAgICAgICAgICBjLTAuNDc3LTAuNDc5LTAuNjY2LTEuMTcyLTAuNDk2LTEuODI0bDUuODI2LTIyLjMxOGMwLjA4NC0wLjMyNiwwLjI1Ni0wLjYyNywwLjQ5NC0wLjg2M2w1Ni4wNDctNTYuMTA0XG4gICAgICAgICAgYzAuNzQyLTAuNzQyLDEuOTQ1LTAuNzQ0LDIuNjg4LTAuMDAybDQuNTQ4LDQuNTQxYzAuNzM5LDAuNzQsMC43NDEsMS45NDMsMCwyLjY4OGwtMzcuNDMzLDM3LjQ3MWw0LjcwOSw0LjcwM2wzNy40MzUtMzcuNDcxXG4gICAgICAgICAgYzAuNzM5LTAuNzQyLDEuOTQtMC43NDIsMi42ODItMC4wMDJsNC41NSw0LjU0MUMzNzMuMjUsMzMxLjYxNywzNzMuMjUsMzMyLjgyMiwzNzIuNTA1LDMzMy41NjR6IE0zOTUuNDcyLDMxMC41NzRsLTE3LDE3LjAxOFxuICAgICAgICAgIGMtMC43MzksMC43NDQtMS45NDIsMC43NDQtMi42ODUsMC4wMDJsLTE2LjQ4OS0xNi40NzVjLTAuNzQ0LTAuNzQtMC43NDQtMS45NDMtMC4wMDItMi42ODhsMTctMTcuMDJcbiAgICAgICAgICBjMC43NDEtMC43NCwxLjk0NC0wLjc0LDIuNjg4LTAuMDAybDE2LjQ4NywxNi40NzdDMzk2LjIxNiwzMDguNjI5LDM5Ni4yMTYsMzA5LjgzMiwzOTUuNDcyLDMxMC41NzR6XCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmstZHJvcGRvd24tbWVudVwiICpuZ0lmPVwiaXNMaW5rRHJvcGRvd25PcGVuXCIgI2Ryb3Bkb3duPlxuICAgICAgICAgICAgICA8bGFiZWw+RW5kcG9pbnQ6PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJib29rU3VidGV4dC5lbmRwb2ludFwiIC8+XG5cbiAgICAgICAgICAgICAgPGxhYmVsPlZhcmlhYmxlOjwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiYm9va1N1YnRleHQudmFyaWFibGVcIiAvPlxuXG4gICAgICAgICAgICAgIDxsYWJlbD5GaWVsZDo8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbbmdNb2RlbF09XCJmaWVsZEFzU3RyaW5nXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlRmllbGQoJGV2ZW50KVwiIC8+XG5cbiAgICAgICAgICAgICAgPGxhYmVsPkRlZmF1bHQgRmllbGQ6PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJib29rU3VidGV4dC5kZWZhdWx0RmllbGRcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wIG9mIGdldFByb3BlcnRpZXMoKS5lbGVtZW50UHJvcHNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJwcm9wLnR5cGUgIT09ICdjaGVja2JveCcgJiYgcHJvcC50eXBlICE9PSAnc3ViUXVlc3Rpb24nXCIgY2xhc3M9XCJ0ZXh0LXNtXCI+e3sgcHJvcC5sYWJlbFxuICAgICAgICAgICAgfX08L2xhYmVsPlxuXG4gICAgICAgICAgPCEtLSBUZXh0IElucHV0IC0tPlxuICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInByb3AudHlwZSA9PT0gJ3RleHQnXCIgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwicHJvcC5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiaGVhZGVyU2VsZWN0ID8gYm9vay5yZWNvcmRzWzBdLnRpdGxlIDogKHNlbGVjdGVkRWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJyA/IChwcm9wLnRhcmdldEFycmF5ID8gZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4sIHByb3Aua2V5ICkgOiBnZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSkgKSA6ICBnZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSkpXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJoZWFkZXJTZWxlY3QgPyB1cGRhdGVUaXRsZSgkZXZlbnQudGFyZ2V0LnZhbHVlKSA6IChzZWxlY3RlZEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScgPyAocHJvcC50YXJnZXRBcnJheSA/IHVwZGF0ZVZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uLCBwcm9wLmtleSwgJGV2ZW50KSA6IHNldFZhbHVlQnlQYXRoKHByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LnZhbHVlKSApIDogc2V0VmFsdWVCeVBhdGgocHJvcC5rZXksICRldmVudC50YXJnZXQudmFsdWUpKVwiXG4gICAgICAgICAgICBbY2xhc3MucmVhZC1vbmx5XT1cInNlbGVjdGVkRWxlbWVudC5yZWFkT25seVwiIFtyZWFkb25seV09XCJzZWxlY3RlZEVsZW1lbnQucmVhZE9ubHlcIiAvPlxuXG4gICAgICAgICAgPCEtLSBoZWxwIHRleHQgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb3Aua2V5ID09PSAnaGVscFRleHQnICYmIHNlbGVjdGVkRWxlbWVudC5oZWxwVGV4dFwiPnt7XG4gICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQuaGVscFRleHQgfX08L2Rpdj5cblxuICAgICAgICAgIDwhLS0gcXVlc3Rpb25OdW1iZXIgLS0+XG4gICAgICAgICAgPGlucHV0ICpuZ0lmPVwicHJvcC5rZXkgPT09ICdxdWVzdGlvbk51bWJlcidcIiB0eXBlPVwibnVtYmVyXCIgW3ZhbHVlXT1cInNlbGVjdGVkRWxlbWVudC5xdWVzdGlvbk51bWJlclwiXG4gICAgICAgICAgICAoaW5wdXQpPVwic2V0VmFsdWVCeVBhdGgoJ3F1ZXN0aW9uTnVtYmVyJywgJGV2ZW50LnRhcmdldC52YWx1ZSlcIiAvPlxuXG4gICAgICAgICAgPCEtLSBmaWxlIC0tPlxuICAgICAgICAgIDwhLS0gQWRkIHRoaXMgaW5zaWRlIHRoZSBlbGVtZW50UHJvcHMgbG9vcCB3aGVyZSBvdGhlciBpbnB1dHMgYXJlIHJlbmRlcmVkIC0tPlxuICAgICAgICAgIDxzZWxlY3QgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzZWxlY3QnICYmIHByb3Aua2V5ID09PSAnc3VwcG9ydFR5cGUnXCIgW3ZhbHVlXT1cInNlbGVjdGVkRWxlbWVudFtwcm9wLmtleV1cIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3QgZmlsZSBjYXRlZ29yeTwvb3B0aW9uPlxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHByb3Aub3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIj4ge3sgb3B0aW9uLmxhYmVsIH19IDwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ2NoZWNrYm94J1wiPlxuXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRFbGVtZW50LnR5cGUgPT09ICdUYWJsZScgPyAocHJvcC50YXJnZXRBcnJheSA/IGdldFZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uLCBwcm9wLmtleSApIDogZ2V0VmFsdWVCeVBhdGgocHJvcC5rZXkpICk6ICBnZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSkgXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCIgc2VsZWN0ZWRFbGVtZW50LnR5cGUgPT09ICdUYWJsZScgPyAocHJvcC50YXJnZXRBcnJheSA/IHVwZGF0ZVZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uLCBwcm9wLmtleSwgJGV2ZW50KSA6IG9uVG9nZ2xlQ2hhbmdlKHByb3Aua2V5LCAkZXZlbnQpICkgOiBvblRvZ2dsZUNoYW5nZShwcm9wLmtleSwgJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9nZ2xlLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDEwcHg7XCI+e3sgcHJvcC5sYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLUFQLTExSlVOMjUgLSBTaG93IHRoaXMgc2VjdGlvbiBvbmx5IGlmIHRoZSBwcm9wZXJ0eSBrZXkgaXMgJ3ByaW1hcnlLZXknIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLmtleSA9PT0gJ3ByaW1hcnlLZXknXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiZ2V0VmFsdWVCeVBhdGgoJ3ByaW1hcnlLZXknKVwiIFtkaXNhYmxlZF09XCIhZ2V0VmFsdWVCeVBhdGgoJ3ByaW1hcnlLZXknKSAmJiBpc0Fub3RoZXJJZFNlbGVjdGVkKClcIiAoY2hhbmdlKT1cIm9uVG9nZ2xlQ2hhbmdlKCdwcmltYXJ5S2V5JywgJGV2ZW50KVwiLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9nZ2xlLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDEwcHg7XCI+cHJpbWFyeUtleTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gU0tTMjBNQVIyNSBTdWJxdWVzdGlvbiBUeXBlIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzdWJRdWVzdGlvbidcIj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogcm93OyBnYXA6IDEwcHg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XG4gICAgICAgICAgICAgIDxkaXY+e3sgcHJvcC5sYWJlbCB9fTwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZEVsZW1lbnQudHlwZSA9PT0gJ1RhYmxlJyA/IChwcm9wLnRhcmdldEFycmF5ID8gZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4sIHByb3Aua2V5ICkgOiBnZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSkgKTogIGdldFZhbHVlQnlQYXRoKHByb3Aua2V5KSBcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiIHNlbGVjdGVkRWxlbWVudC50eXBlID09PSAnVGFibGUnID8gKHByb3AudGFyZ2V0QXJyYXkgPyB1cGRhdGVWYWx1ZUJ5QXJyYXlQYXRoKHByb3AudGFyZ2V0QXJyYXksIHByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbiwgcHJvcC5rZXksICRldmVudCkgOiBvblRvZ2dsZUNoYW5nZShwcm9wLmtleSwgJGV2ZW50KSApIDogb25Ub2dnbGVDaGFuZ2UocHJvcC5rZXksICRldmVudClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIFNLUzIwTUFSMjUgUmVuZGVyIHN1YnF1ZXN0aW9ucyB3aGVuIGNoZWNrYm94IGlzIGNoZWNrZWQgLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRFbGVtZW50LnR5cGUgPT09ICdUYWJsZScgPyAocHJvcC50YXJnZXRBcnJheSA/IGdldFZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uLCBwcm9wLmtleSApIDogZ2V0VmFsdWVCeVBhdGgocHJvcC5rZXkpICk6ICBnZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSlcIj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3ViUHJvcCBvZiBwcm9wLnN1YlF1ZXN0aW9uXCJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNlN2YyZmY7IHBhZGRpbmc6IDhweDsgYm9yZGVyLXJhZGl1czogNHB4O1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgc3ViUHJvcC5sYWJlbCB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3ViUHJvcC50eXBlID09PSAnYXJyYXknXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gSXRlcmF0ZSBvdmVyIGZpbHRlcmVkIGNvbHVtbnMgdG8gZGlzcGxheSBjaGVja2JveGVzIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgZmlsdGVyZWRDb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInN1YlByb3Aub3BlcmFuZHMgPyBzdWJQcm9wLm9wZXJhbmRzLmluY2x1ZGVzKGNvbHVtbi5hcGlOYW1lKSA6IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKHN1YlByb3AudGFyZ2V0QXJyYXksc3ViUHJvcC50YXJnZXRBcnJheUtleSxzdWJQcm9wLmtleSwgY29sdW1uLmFwaU5hbWUsICRldmVudC50YXJnZXQuY2hlY2tlZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbi5hcGlOYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwhLS0gU0tTMjFNQVIyNSBOZXcgcmFkaW8gdHlwZSAtLT5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICdyYWRpbydcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGZpbHRlcmVkQ29sdW1uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBbbmFtZV09XCJzdWJQcm9wLmtleVwiIFt2YWx1ZV09XCJjb2x1bW4uYXBpTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImdldFZhbHVlQnlBcnJheVBhdGgoc3ViUHJvcC50YXJnZXRBcnJheSwgc3ViUHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uLCBzdWJQcm9wLmtleSkgPT09IGNvbHVtbi5hcGlOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblJhZGlvQ2hhbmdlKHN1YlByb3AudGFyZ2V0QXJyYXksIHN1YlByb3AudGFyZ2V0QXJyYXlLZXksIHN1YlByb3Aua2V5LCBjb2x1bW4uYXBpTmFtZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbHVtbi5hcGlOYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwhLS0gU0tTMjBNQVIyNSBBZGQgbW9yZSBzdWJwcm9wZXJ0eSB0eXBlcyBhcyBuZWVkZWQgLS0+XG4gICAgICAgICAgICAgICAgICA8IS0tIEluc2lkZSB0aGUgc3ViUHJvcCBuZ0ZvciBsb29wIC0tPlxuICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwic3ViUHJvcC50eXBlID09PSAndGV4dCdcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJzdWJQcm9wLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkRWxlbWVudC50eXBlID09PSAnVGFibGUnID8gKHN1YlByb3AudGFyZ2V0QXJyYXkgPyBnZXRWYWx1ZUJ5QXJyYXlQYXRoKHN1YlByb3AudGFyZ2V0QXJyYXksIHN1YlByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbiwgc3ViUHJvcC5rZXkgKSA6IGdldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5KSApIDogZ2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cInNlbGVjdGVkRWxlbWVudC50eXBlID09PSAnVGFibGUnID8gKHN1YlByb3AudGFyZ2V0QXJyYXkgPyB1cGRhdGVWYWx1ZUJ5QXJyYXlQYXRoKHN1YlByb3AudGFyZ2V0QXJyYXksIHN1YlByb3AudGFyZ2V0QXJyYXlLZXksIHNlbGVjdENvbHVtbiwgc3ViUHJvcC5rZXksICRldmVudCkgOiBzZXRWYWx1ZUJ5UGF0aChzdWJQcm9wLmtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSkgKSA6IHNldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIC8+XG5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInN1YlByb3AudHlwZSA9PT0gJ2Jvb2xlYW4nXCIgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiZ2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRWYWx1ZUJ5UGF0aChzdWJQcm9wLmtleSwgJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiIC8+XG4gICAgICAgICAgICAgICAgICA8c2VsZWN0ICpuZ0lmPVwic3ViUHJvcC50eXBlID09PSAnc2VsZWN0J1wiIFt2YWx1ZV09XCJnZXRWYWx1ZUJ5UGF0aChzdWJQcm9wLmtleSlcIlxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc3ViUHJvcC5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvblwiPnt7IG9wdGlvbiB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICdjaGVja2JveCdcIiB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJnZXRWYWx1ZUJ5UGF0aChzdWJQcm9wLmtleSlcIlxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LmNoZWNrZWQpXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gU0tTMjBNQVIyNSBUZXh0IEFsaWduIEJ1dHRvbnMgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ2FsaWduJ1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHByb3Aub3B0aW9uc1wiIChjbGljayk9XCJvbkFsaWduU2VsZWN0KG9wdGlvbi52YWx1ZSlcIlxuICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkRWxlbWVudD8udGV4dEFsaWduID09PSBvcHRpb24udmFsdWVcIiBbdGl0bGVdPVwib3B0aW9uLnZhbHVlXCI+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCInLi4vYXNzZXRzL2ljb25zLycgKyBvcHRpb24uaWNvbiArICcuc3ZnJ1wiIFthbHRdPVwib3B0aW9uLnZhbHVlXCIgY2xhc3M9XCJpY29uLXNpemVcIiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC50eXBlID09PSAnc3R5bGUnXCI+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcHJvcC5vcHRpb25zXCIgKGNsaWNrKT1cIm9uU3R5bGVTZWxlY3Qob3B0aW9uLnZhbHVlKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNTdHlsZUFjdGl2ZShvcHRpb24udmFsdWUpXCIgW3RpdGxlXT1cIm9wdGlvbi52YWx1ZVwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiJy4uL2Fzc2V0cy9pY29ucy8nICsgb3B0aW9uLmljb24gKyAnLnN2ZydcIiBbYWx0XT1cIm9wdGlvbi52YWx1ZVwiIGNsYXNzPVwiaWNvbi1zaXplXCIgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBGaWVsZCBTaXplIENvbnRyb2xzIC0tPlxuICAgICAgICAgIDwhLS0gQVAgMjVGRUIyNSAtIENoYW5nZSBrZXkgc2l6ZSAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC5rZXkgPT09ICdzaXplJ1wiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBbdmFsdWVdPVwic2VsZWN0ZWRFbGVtZW50Py5zaXplXCIgKGlucHV0KT1cInNldFZhbHVlQnlQYXRoKCdzaXplJywgJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNpemUtaW5wdXRcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBBUC0xOU1BUjI1IExpbmUgUHJvcGVydGllcyAtLT5cbiAgICAgICAgICA8IS0tIFBhZGRpbmcgVG9wIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLmtleSA9PT0gJ3BhZGRpbmdUb3AnXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFtwbGFjZWhvbGRlcl09XCJwcm9wLnBsYWNlaG9sZGVyXCIgW3ZhbHVlXT1cInNlbGVjdGVkRWxlbWVudD8ucGFkZGluZ1RvcFwiXG4gICAgICAgICAgICAgIChpbnB1dCk9XCJzZXRWYWx1ZUJ5UGF0aCgncGFkZGluZ1RvcCcsICRldmVudC50YXJnZXQudmFsdWUpXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gUGFkZGluZyBCb3R0b20gLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb3Aua2V5ID09PSAncGFkZGluZ0JvdHRvbSdcIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgW3BsYWNlaG9sZGVyXT1cInByb3AucGxhY2Vob2xkZXJcIiBbdmFsdWVdPVwic2VsZWN0ZWRFbGVtZW50Py5wYWRkaW5nQm90dG9tXCJcbiAgICAgICAgICAgICAgKGlucHV0KT1cInNldFZhbHVlQnlQYXRoKCdwYWRkaW5nQm90dG9tJywgJGV2ZW50LnRhcmdldC52YWx1ZSlcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBMaW5lIFN0eWxlIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLmtleSA9PT0gJ2xpbmVTdHlsZSdcIj5cbiAgICAgICAgICAgIDxzZWxlY3QgW3ZhbHVlXT1cInNlbGVjdGVkRWxlbWVudD8ubGluZVN0eWxlXCIgKGNoYW5nZSk9XCJzZXRWYWx1ZUJ5UGF0aCgnbGluZVN0eWxlJywgJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHByb3Aub3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIj57eyBvcHRpb24gfX08L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBDb2xvciAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC5rZXkgPT09ICdjb2xvcidcIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiBbdmFsdWVdPVwic2VsZWN0ZWRFbGVtZW50Py5jb2xvclwiXG4gICAgICAgICAgICAgIChpbnB1dCk9XCJzZXRWYWx1ZUJ5UGF0aCgnY29sb3InLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICAgPCEtLSBBUCAyM01BWTI1IC0gQWN0aW9uIEJ1dHRvbiAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cInByb3Aua2V5ID09PSAndGl0bGUnXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxNXB4OyBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBwYWRkaW5nOiAyMHB4OyBib3JkZXItcmFkaXVzOiAxMnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmOWY5O1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWhlYWRlclwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7IHByb3AubGFiZWwgfX08L2xhYmVsPlxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkTmV3QnV0dG9uKClcIiBjbGFzcz1cImFkZC1idXR0b25cIj4rIEFkZCBCdXR0b248L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnRuIG9mIGJvb2s/LnF1ZXN0aW9uYm9vaz8uYWN0aW9uIHx8IFtdOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJidXR0b24tY29uZmlnLWNhcmRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxsYWJlbD5CdXR0b24gTmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiYnRuLm5hbWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGksICduYW1lJywgJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgYnV0dG9uIG5hbWVcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxsYWJlbD5FdmVudCBOYW1lPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJidG4uZXZlbnR0b2VtaXRcIiAobmdNb2RlbENoYW5nZSk9XCJvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGksICdldmVudHRvZW1pdCcsICRldmVudClcIiBwbGFjZWhvbGRlcj1cIkV2ZW50IHRvIGVtaXRcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxsYWJlbD5BbHQ8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImJ0bi5hbHRcIiAobmdNb2RlbENoYW5nZSk9XCJvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGksICdhbHQnLCAkZXZlbnQpXCIgcGxhY2Vob2xkZXI9XCJCdXR0b24gYWx0IHRleHRcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxsYWJlbD5FbmRwb2ludDwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiYnRuLmVuZHBvaW50XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25CdXR0b25Qcm9wZXJ0eUNoYW5nZShpLCAnZW5kcG9pbnQnLCAkZXZlbnQpXCIgcGxhY2Vob2xkZXI9XCJBUEkgZW5kcG9pbnRcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxsYWJlbD5NZXRob2Q8L2xhYmVsPlxuICAgICAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwiYnRuLm1ldGhvZFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQnV0dG9uUHJvcGVydHlDaGFuZ2UoaSwgJ21ldGhvZCcsICRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCInR0VUJ1wiPkdFVDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIidQT1NUJ1wiPlBPU1Q8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCInUFVUJ1wiPlBVVDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIidERUxFVEUnXCI+REVMRVRFPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICAgICAgPCEtLSBBUCAyM01BWTI1IC0gQWN0aW9uIFN0eWxlIEZpZWxkcyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxsYWJlbD5CYWNrZ3JvdW5kIENvbG9yPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIFsobmdNb2RlbCldPVwiYnRuLmJnQ29sb3JcIiAobmdNb2RlbENoYW5nZSk9XCJvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGksICdiZ0NvbG9yJywgJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGxhYmVsPkJvcmRlciBSYWRpdXM8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhbmdlXCIgbWluPVwiMFwiIG1heD1cIjUwXCIgWyhuZ01vZGVsKV09XCJidG4uYm9yZGVyUmFkaXVzXCIgXG4gICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGksICdib3JkZXJSYWRpdXMnLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGJ0bi5ib3JkZXJSYWRpdXMgfX1weDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgIFxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICA8bGFiZWw+QnV0dG9uIFdpZHRoIChweCk8L2xhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFsobmdNb2RlbCldPVwiYnRuLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQnV0dG9uUHJvcGVydHlDaGFuZ2UoaSwgJ3dpZHRoJywgJGV2ZW50KVwiIG1pbj1cIjUwXCIgcGxhY2Vob2xkZXI9XCJFbnRlciB3aWR0aCBpbiBweFwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxsYWJlbD5UZXh0IENvbG9yPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIFsobmdNb2RlbCldPVwiYnRuLnRleHRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkJ1dHRvblByb3BlcnR5Q2hhbmdlKGksICd0ZXh0Q29sb3InLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGxhYmVsPlBvc2l0aW9uICglKTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBtaW49XCIwXCIgbWF4PVwiMTAwXCIgWyhuZ01vZGVsKV09XCJidG4ucG9zaXRpb25QZXJjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQnV0dG9uUHJvcGVydHlDaGFuZ2UoaSwgJ3Bvc2l0aW9uUGVyY2VudCcsICRldmVudClcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgYnRuLnBvc2l0aW9uUGVyY2VudCB9fSU8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInJlbW92ZUJ1dHRvbihidG4pXCIgY2xhc3M9XCJyZW1vdmUtYnV0dG9uXCI+w5cgUmVtb3ZlPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCIgKm5nSWY9XCJhY3RpdmVUYWIgPT09ICdwcm9wZXJ0eSdcIj5cbiAgICA8IS0tIEZpZWxkIEVsZW1lbnRzIFByb3BlcnRpZXMgLS0+XG4gICAgPCEtLSBBUC0wNk1BUjI1IFNob3cgZWxlbWVudHMgSUQgIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJnZXRQcm9wZXJ0aWVzKClcIj5cbiAgICAgIDxsYWJlbD5MYWJlbCBJZDwvbGFiZWw+XG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxM3B4OyBwYWRkaW5nOiAxMXB4OyBib3JkZXItcmFkaXVzOiA1cHg7IGJhY2tncm91bmQtY29sb3I6ICNmOGY4Zjg7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XCI+XG4gICAgICAgIHt7IGhlYWRlclNlbGVjdCA/IGJvb2tJZCA6IHNlbGVjdGVkRWxlbWVudC5pZCB9fTwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcCBvZiBnZXRQcm9wZXJ0aWVzKCkuZmllbGRQcm9wc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtc21cIj57eyBwcm9wLmxhYmVsIH19PC9sYWJlbD5cblxuICAgICAgICAgIDwhLS0gU0tTMjFNQVIyNSBUb2dnbGUgR3JvdXAgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ3RvZ2dsZUdyb3VwJ1wiIGNsYXNzPVwidG9nZ2xlLWdyb3VwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidG9nZ2xlLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cInNlbGVjdGVkRWxlbWVudD8uaXNPcHRpb25hbFwiXG4gICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUmVxdWlyZWRDaGFuZ2UoJGV2ZW50LnRhcmdldC5jaGVja2VkKVwiIC8+XG4gICAgICAgICAgICAgICAgUmVxdWlyZWRcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZS1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRvZ2dsZS1sYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJzZWxlY3RlZEVsZW1lbnQ/LmlzUmVhZE9ubHlcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblRvZ2dsZUNoYW5nZSgnaXNSZWFkT25seScsICRldmVudClcIiAvPlxuICAgICAgICAgICAgICAgIFJlYWQgT25seVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidG9nZ2xlLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIC8+XG4gICAgICAgICAgICAgICAgRGlzYWJsZWRcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZS1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRvZ2dsZS1sYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJzZWxlY3RlZEVsZW1lbnQ/LmlzSGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Ub2dnbGVDaGFuZ2UoJ2lzSGlkZGVuJywgJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgICAgSXMgSGlkZVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIEFQIDI4RkVCMjUgLSBoYW5kbGVkIG9wdGlvbnMgd2l0aCBVVUlEIC0tPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwicHJvcC50eXBlID09PSAnZHJvcGRvd24nIHx8IHByb3AudHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBwcm9wLnR5cGUgPT09ICdyYWRpbycgJiYgcHJvcC5rZXkgPT09ICdvcHRpb25zJ1wiXG4gICAgICAgICAgICBjbGFzcz1cIm9wdGlvbnMtY29udGFpbmVyXCI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24tbGlzdFwiIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIiAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50LCBwcm9wLmtleSlcIj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHNlbGVjdGVkRWxlbWVudFtwcm9wLmtleV1cIiBjbGFzcz1cIm9wdGlvbi1pdGVtc1wiIFthdHRyLmRhdGEtaWRdPVwib3B0aW9uLmlkXCJcbiAgICAgICAgICAgICAgICBkcmFnZ2FibGU9XCJ0cnVlXCIgKGRyYWdzdGFydCk9XCJvbkRyYWdTdGFydCgkZXZlbnQsIG9wdGlvbi5pZClcIj5cblxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwib3B0aW9uLnZhbHVlXCIgcGxhY2Vob2xkZXI9XCJPcHRpb25cIiBjbGFzcz1cIm9wdGlvbnNcIiAvPlxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi4vYXNzZXRzL2ljb25zL1RyYXNoLnN2Z1wiIChjbGljayk9XCJyZW1vdmVPcHRpb24oc2VsZWN0ZWRFbGVtZW50W3Byb3Aua2V5XSwgb3B0aW9uLmlkKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJhZy1oYW5kbGVcIj7imLA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFkZE9wdGlvbihzZWxlY3RlZEVsZW1lbnRbcHJvcC5rZXldKVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRkLXZhcmllbnRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGdcIj4rPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuPkFkZDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInByb3AudHlwZSA9PT0gJ3RleHQnXCIgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwicHJvcC5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiaGVhZGVyU2VsZWN0ID8gYm9vay5yZWNvcmRzWzBdLnRpdGxlIDogKHNlbGVjdGVkRWxlbWVudD8udHlwZSA9PT0gJ1RhYmxlJyA/IChwcm9wLnRhcmdldEFycmF5ID8gZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4sIHByb3Aua2V5ICkgOiBnZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSkgKSA6ICBnZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSkpXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJoZWFkZXJTZWxlY3QgPyB1cGRhdGVUaXRsZSgkZXZlbnQudGFyZ2V0LnZhbHVlKSA6IChzZWxlY3RlZEVsZW1lbnQ/LnR5cGUgPT09ICdUYWJsZScgPyAocHJvcC50YXJnZXRBcnJheSA/IHVwZGF0ZVZhbHVlQnlBcnJheVBhdGgocHJvcC50YXJnZXRBcnJheSwgcHJvcC50YXJnZXRBcnJheUtleSwgc2VsZWN0Q29sdW1uLCBwcm9wLmtleSwgJGV2ZW50KSA6IHNldFZhbHVlQnlQYXRoKHByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LnZhbHVlKSApIDogc2V0VmFsdWVCeVBhdGgocHJvcC5rZXksICRldmVudC50YXJnZXQudmFsdWUpKVwiXG4gICAgICAgICAgICBbY2xhc3MucmVhZC1vbmx5XT1cInNlbGVjdGVkRWxlbWVudC5yZWFkT25seVwiIFtyZWFkb25seV09XCJzZWxlY3RlZEVsZW1lbnQucmVhZE9ubHlcIiAvPlxuXG4gICAgICAgICAgPCEtLSBTdWIgUXVlc3Rpb25zIFRvZ2dsZSAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC50eXBlID09PSAnc3ViUXVlc3Rpb24nXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3R5bGUtdG9nZ2xlLWhlYWRlclwiIChjbGljayk9XCJ0b2dnbGVTdWJRdWVzdGlvbihwcm9wKVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZC1lbGVtZW50c1wiPlN1YiBUZXh0PC9kaXY+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJwcm9wLmlzRXhwYW5kZWQgPyAnLi4vYXNzZXRzL2ljb25zL2Fycm93LWRvd24uc3ZnJyA6ICcuLi9hc3NldHMvaWNvbnMvYXJyb3ctcmlnaHQuc3ZnJ1wiXG4gICAgICAgICAgICAgICAgYWx0PVwiVG9nZ2xlIEFycm93XCIgY2xhc3M9XCJhcnJvdy1pY29uXCI+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBSZW5kZXIgc3VicXVlc3Rpb25zIHdoZW4gYXJyb3cgaXMgZG93biAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLmlzRXhwYW5kZWRcIiBzdHlsZT1cImJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IHBhZGRpbmc6IDhweDsgYm9yZGVyLXJhZGl1czogNHB4O1wiPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzdWJQcm9wIG9mIHByb3Auc3ViUXVlc3Rpb25cIiBjbGFzcz1cInN1Yi1xdWVzdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7IHN1YlByb3AubGFiZWwgfX08L2xhYmVsPlxuXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICd0ZXh0J1wiIHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cInN1YlByb3AucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXkpXCIgKGlucHV0KT1cInNldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgPCEtLSBBUC0wMkFQUjI1IFJlbmRlciBpbnB1dCBmaWVsZCBvbmx5IGlmIHN1YlByb3AudHlwZSBpcyAnYXJyYXknIC0tPlxuICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwic3ViUHJvcC50eXBlID09PSAnYXJyYXknXCIgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwic3ViUHJvcC5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRWYWx1ZUJ5UGF0aChzdWJQcm9wLmtleSlcIiAoaW5wdXQpPVwic2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXksICRldmVudC50YXJnZXQudmFsdWUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQgdHlwZT1cInRleHRcIiBbbmdNb2RlbF09XCJmaWVsZEFzU3RyaW5nXCIgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlRmllbGQoJGV2ZW50KVwiIC8+IC0tPlxuXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJzdWJQcm9wLnR5cGUgPT09ICdib29sZWFuJ1wiIHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImdldFZhbHVlQnlQYXRoKHN1YlByb3Aua2V5KVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0VmFsdWVCeVBhdGgoc3ViUHJvcC5rZXksICRldmVudC50YXJnZXQuY2hlY2tlZClcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ2NoZWNrYm94J1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0b2dnbGUtbGFiZWxcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDEwcHg7XCI+e3sgcHJvcC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZEVsZW1lbnQudHlwZSA9PT0gJ1RhYmxlJyA/IChwcm9wLnRhcmdldEFycmF5ID8gZ2V0VmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4sIHByb3Aua2V5ICkgOiBnZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSkgKTogIGdldFZhbHVlQnlQYXRoKHByb3Aua2V5KSBcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIiBzZWxlY3RlZEVsZW1lbnQudHlwZSA9PT0gJ1RhYmxlJyA/IChwcm9wLnRhcmdldEFycmF5ID8gdXBkYXRlVmFsdWVCeUFycmF5UGF0aChwcm9wLnRhcmdldEFycmF5LCBwcm9wLnRhcmdldEFycmF5S2V5LCBzZWxlY3RDb2x1bW4sIHByb3Aua2V5LCAkZXZlbnQpIDogb25Ub2dnbGVDaGFuZ2UocHJvcC5rZXksICRldmVudCkgKSA6IG9uVG9nZ2xlQ2hhbmdlKHByb3Aua2V5LCAkZXZlbnQpXCIgLz5cblxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gU0tTMjFNQVIyNSBNb3ZlIFN0eWxlIE91dHNpZGUgdGhlIExvb3AgLS0+XG4gICAgICA8IS0tIFN0eWxlIFRvZ2dsZSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHlsZS10b2dnbGUtaGVhZGVyXCIgKGNsaWNrKT1cInRvZ2dsZVN0eWxlU2VjdGlvbigpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkLWVsZW1lbnRzXCI+U3R5bGU8L2Rpdj5cbiAgICAgICAgPGltZyBbc3JjXT1cImlzU3R5bGVFeHBhbmRlZCA/ICcuLi9hc3NldHMvaWNvbnMvYXJyb3ctZG93bi5zdmcnIDogJy4uL2Fzc2V0cy9pY29ucy9hcnJvdy1yaWdodC5zdmcnXCJcbiAgICAgICAgICBhbHQ9XCJUb2dnbGUgQXJyb3dcIiBjbGFzcz1cImFycm93LWljb25cIj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiaXNTdHlsZUV4cGFuZGVkXCIgc3R5bGU9XCJib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBwYWRkaW5nOiA4cHg7IGJvcmRlci1yYWRpdXM6IDRweDtcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBrZXkgb2YgZ2V0U3R5bGVLZXlzKClcIj5cbiAgICAgICAgICAgIDxsYWJlbD57eyBrZXkgfX08L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEVsZW1lbnQuc3R5bGVba2V5XVwiXG4gICAgICAgICAgICAgIChpbnB1dCk9XCJzZXRWYWx1ZUJ5UGF0aCgnc3R5bGUuJyArIGtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSlcIiBwbGFjZWhvbGRlcj1cIkVudGVyIHt7IGtleSB9fVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnYXBwZWFyYW5jZSdcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiZ2V0UHJvcGVydGllcygpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wIG9mIGdldFByb3BlcnRpZXMoKS5hcHBlYXJhbmNlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1zbVwiPnt7IHByb3AubGFiZWwgfX08L2xhYmVsPlxuICAgICAgICAgIDwhLS0gRm9udCBTZWxlY3Rpb24gLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInByb3Aua2V5ID09PSAnZm9udCdcIj5cbiAgICAgICAgICAgIDxzZWxlY3QgKm5nSWY9XCJwcm9wLnR5cGUgPT09ICdzZWxlY3QnXCIgY2xhc3M9XCJzZWxlY3QtY29udGFpbmVyXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEVsZW1lbnQuZm9udFwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0VmFsdWVCeVBhdGgoJ2ZvbnQnLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcHJvcC5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbiB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gSW5wdXQgQm94IC0tPlxuICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInByb3AudHlwZSA9PT0gJ3RleHQnXCIgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwicHJvcC5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWRFbGVtZW50W3Byb3Aua2V5XVwiIChpbnB1dCk9XCJzZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSlcIiAvPlxuXG4gICAgICAgICAgPCEtLSBGb250IFNpemUgU2VsZWN0aW9uIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLmtleSA9PT0gJ2ZvbnRTaXplJ1wiPlxuICAgICAgICAgICAgPHNlbGVjdCAqbmdJZj1cInByb3AudHlwZSA9PT0gJ3NlbGVjdCdcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRWxlbWVudFtwcm9wLmtleV1cIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldFZhbHVlQnlQYXRoKHByb3Aua2V5LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcHJvcC5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gRm9udCBXZWlnaHQgU2VsZWN0aW9uIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLmtleSA9PT0gJ2ZvbnRXZWlnaHQnXCI+XG4gICAgICAgICAgICA8c2VsZWN0ICpuZ0lmPVwicHJvcC50eXBlID09PSAnc2VsZWN0J1wiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRFbGVtZW50W3Byb3Aua2V5XVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0VmFsdWVCeVBhdGgocHJvcC5rZXksICRldmVudC50YXJnZXQudmFsdWUpXCI+XG4gICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcm9wLm9wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDwhLS0gRHJvcGRvd24gQm94IC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiIGNsYXNzPVwiaW5wdXQtYm94LWZpZWxkXCI+XG4gICAgICAgICAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEVsZW1lbnRbcHJvcC5rZXldXCIgKGNoYW5nZSk9XCJzZXRWYWx1ZUJ5UGF0aChwcm9wLmtleSwgJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgcHJvcC5vcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAge3sgb3B0aW9uIH19XG4gICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gQ29sb3IgUGlja2VyIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AudHlwZSA9PT0gJ2NvbG9yJ1wiIGNsYXNzPVwiY29sb3Itc2VsZWN0b3JcIj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRFbGVtZW50LmZvbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRWYWx1ZUJ5UGF0aCgnZm9udENvbG9yJywgJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIEhFWCBJbnB1dCBCb3ggLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC50eXBlID09PSAnY29sb3InXCIgY2xhc3M9XCJoZXgtaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxzcGFuPkhFWCBDb2RlPC9zcGFuPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRWxlbWVudFtwcm9wLmtleV1cIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0VmFsdWVCeVBhdGgocHJvcC5rZXksICRldmVudC50YXJnZXQudmFsdWUpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIFxuICAgICAgICAgIDwhLS0gQVAtMTdBUFIyNSBCdXR0b24gZm9yIER1cGxpY2F0ZSBGaWVsZCAgLS0+XG48ZGl2ICpuZ0lmPVwicHJvcC50eXBlID09PSAnYnV0dG9uLXRvZ2dsZSdcIiBjbGFzcz1cImJ1dHRvbi10b2dnbGUtd3JhcHBlclwiPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiXG4gICAgKGNsaWNrKT1cImR1cGxpY2F0ZUZpZWxkKHNlbGVjdGVkRWxlbWVudClcIj5cbiAgICBBZGQgRHVwbGljYXRlXG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuPCEtLSBBUC0wOEFQUjI1IERlZmF1bHQgU2F2ZSBCdXR0b24gLS0+XG48ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRhaW5lclwiICpuZ0lmPVwiIXRlbXBsYXRlU2VsZWN0ZWRcIj5cbiAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbC1idG5cIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICA8YnV0dG9uIGNsYXNzPVwic2F2ZS1idG5cIiAoY2xpY2spPVwiaGFuZGxlQnV0dG9uQ2xpY2soKVwiPlNhdmU8L2J1dHRvbj5cbjwvZGl2PlxuXG48IS0tIEFQLTA4QVBSMjUgVGVtcGxhdGUgU2F2ZSBCdXR0b24gLS0+XG48ZGl2IGNsYXNzPVwiYnV0dG9uLWNvbnRhaW5lclwiICpuZ0lmPVwidGVtcGxhdGVTZWxlY3RlZFwiIHN0eWxlPVwibWFyZ2luLXRvcDogMjBweDtcIj5cbiAgPGJ1dHRvbiBjbGFzcz1cInNhdmUtYnRuXCIgKGNsaWNrKT1cImhhbmRsZVRlbXBsYXRlU2F2ZSgpXCI+U2F2ZSBUZW1wbGF0ZTwvYnV0dG9uPlxuPC9kaXY+XG5cbjwvZGl2PiJdfQ==