vcomply-workflow-engine 6.0.81 → 6.0.82

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.
@@ -2712,7 +2712,7 @@ export class WorkflowComplianceComponent {
2712
2712
  viewResponsibilities() {
2713
2713
  let url;
2714
2714
  const id = this.responsibilityData?.data?.responsibility?.id;
2715
- let urlSubstring = '/compliance/responsibilities/' + id;
2715
+ let urlSubstring = '/compliance/responsibilities/';
2716
2716
  this.disconnectRefresh.emit(false);
2717
2717
  if (window.location.host.startsWith('localhost')) {
2718
2718
  url = 'http://' + window.location.host + urlSubstring;
@@ -3861,4 +3861,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3861
3861
  type: ViewChild,
3862
3862
  args: ['customItemTemplate', { static: true }]
3863
3863
  }] } });
3864
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctY29tcGxpYW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1jb21wbGlhbmNlL3dvcmtmbG93LWNvbXBsaWFuY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctY29tcGxpYW5jZS93b3JrZmxvdy1jb21wbGlhbmNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFLbkMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBR25DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQWtCLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhFLE9BQU8sRUFDTCxjQUFjLEVBQ2QsY0FBYyxHQUNmLE1BQU0saURBQWlELENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQVN6RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUTlELE1BQU0sT0FBTywyQkFBMkI7SUErQ3RDLElBQXlCLFVBQVUsQ0FBQyxlQUF3QjtRQUMxRCxJQUFJLGVBQWUsRUFBRTtZQUNuQixJQUFJLENBQUMsZ0JBQWdC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LG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQXVSWSxTQUFTO3NCQUEzQixTQUFTO3VCQUFDLE1BQU07Z0JBR1IscUJBQXFCO3NCQUE3QixLQUFLO2dCQXdnSTZDLGtCQUFrQjtzQkFBcEUsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBFZGl0b3JDb25maWcgfSBmcm9tICd2Y29tcGx5LWVkaXRvcic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9yZXNwb25zaWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC9tb21lbnQnO1xuaW1wb3J0IHsgVWlLaXRTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvdWkta2l0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQcm9ncmFtc1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9wcm9ncmFtcy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEdSQ19UWVBFX0FSUkFZLFxuICBPVEhFUl9HUkNfQ0FSRCxcbn0gZnJvbSAnLi4vd29ya2Zsb3cvc2hhcmVkL2NvbnN0YW50cy9ncmNPYmplY3QuY29uc3RhbnQnO1xuaW1wb3J0IHsgR3JjU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93L3NoYXJlZC9zZXJ2aWNlcy9ncmMuc2VydmljZSc7XG5pbXBvcnQgeyBERUZBVUxUXzI0SFIsIERFRkFVTFRfVElNRSB9IGZyb20gJy4uL2NvbnN0YW50cy90aW1lLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBPcmdhbml6YXRpb25Vc2VyU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL29yZ2FuaXphdGlvbi11c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcGxpYW5jZUNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9jb21tb24td29ya2Zsb3ctc2VydmljZXMvY29tcGxpYW5jZS1jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBPcmdhbml6YXRpb25Db21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvY29tbW9uLXdvcmtmbG93LXNlcnZpY2VzL29yZ2FuaXphdGlvbi1jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBGcmVxdWVuY3lPYmplY3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ZyZXF1ZW5jeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVzcG9uc2liaWxpdHkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3Jlc3BvbnNpYmlsdHkuaW50ZXJmYWNlJztcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi4vc2hhcmVkQ29tcG9uZW50cy9wcm9ncmFtLWxpc3QvaW50ZXJmYWNlcy9saXN0LWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL3Byb2dyYW0tbGlzdC9pbnRlcmZhY2VzL2RhdGEtc291cmNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZnJhbWVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaWZyYW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudHMnO1xuaW1wb3J0IHsgUFJPR1JBTV9MSVNUX0FQSSB9IGZyb20gJy4uL2NvbnN0YW50cy9hcGkuY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXdvcmtmbG93LWNvbXBsaWFuY2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctY29tcGxpYW5jZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dvcmtmbG93LWNvbXBsaWFuY2UuY29tcG9uZW50Lmxlc3MnLCAnLi4vZm9ybXMubGVzcyddLFxuICAvLyBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dDb21wbGlhbmNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyogRGVmaW5pbmcgdGhlIGlucHV0IHBhcmFtZXRlcnMgZm9yIHRoZSBjb21wb25lbnQuICovXG4gIEBJbnB1dCgpIG1vZGUgPSAnQ1JFQVRFJztcbiAgQElucHV0KCkgcmVzcG9uc2liaWxpdHlJZCA9ICcnO1xuICBASW5wdXQoKSBmcmFtZXdvcmtEZXRhaWxzOiBBcnJheTxhbnk+ID0gW107XG4gIEBJbnB1dCgpIGlzRW50cnVzdDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGZlYXR1cmU6IGFueTtcbiAgQElucHV0KCkgYXNzZXNzbWVudERldGFpbHM6IGFueTtcbiAgQVNTRVRTID0gQVNTRVRTO1xuICBhbGxHcm91cEFzc2lnbmVlOiBib29sZWFuID0gdHJ1ZTtcbiAgYXNzaWdub3JJZDogYW55W10gPSBbXTtcbiAgYXNzaWduZWVJZHM6IGFueVtdID0gW107XG4gIHJldmlld2VySWRzOiBhbnlbXSA9IFtdO1xuICBvdmVyc2VlcklkczogYW55W10gPSBbXTtcbiAgZGlzYWJsZVJhZGlvQXNzaWduZWU6IGFueVtdID0gW107XG4gIGlzUmVzcG9uc2liaWxpdHlTaW1wbGlmaWVkOiBib29sZWFuID0gZmFsc2U7XG4gIHF1ZXJ5UGFyYW06IHN0cmluZyA9ICcnO1xuICByZWNlbnRSZXNwb25zaWJpbGl0eVVybDogYW55ID0ge1xuICAgIGJ5UmVzcG9uc2liaWxpdGllczogeyB0eXBlOiBbJ3JlY2VudF9yZXNwb25zaWJpbGl0aWVzJ10sIHN1YlR5cGU6IFsnQ0MnXSB9LFxuICAgIGJ5U3RhdHVzOiB7IHR5cGU6IFtdLCBzdWJUeXBlOiBbXSB9LFxuICAgIGZpbHRlck9iamVjdDoge1xuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IFtdLFxuICAgICAgZW50cnVzdGVkQnk6IFtdLFxuICAgICAgZW50cnVzdGVkVG86IFtdLFxuICAgICAgcmlza0lkczogW10sXG4gICAgICByZXNwb25zaWJpbGl0eUNhdGVnb3J5OiBbXSxcbiAgICB9LFxuICAgIHRpbWVQZXJpb2REZXRhaWxzOiB7IHR5cGU6ICcnLCBzZWxlY3RlZFBlcmlvZDogJycsIHNlbGVjdGVkWWVhcjogJycgfSxcbiAgICBzdGF0dXM6ICcnLFxuICB9O1xuICBpc1Jlc3BvbnNpYmlsaXR5UmNMaW5rRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBncmNMaXN0OiBBcnJheTxhbnk+ID0gW107XG4gIGdyY0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBvdGhlckdSQ0NhcmQ6IGFueSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoT1RIRVJfR1JDX0NBUkQpKTtcbiAgc2VsZWN0ZWRHUkNUYWI6IG51bWJlciA9IDA7XG4gIGdyY1RhYkxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBncmNTZWFyY2hTdHJpbmc6IHN0cmluZyA9ICcnO1xuICBHUkNfVFlQRV9BUlJBWSA9IEdSQ19UWVBFX0FSUkFZO1xuICBncmNEYXRhV2l0aFR5cGVzOiBhbnkgPSB7XG4gICAgYXNzZXRzOiBbXSxcbiAgICBwcm9jZXNzZXM6IFtdLFxuICAgIHZlbmRvcnM6IFtdLFxuICAgIGludmVudG9yeTogW10sXG4gIH07XG4gIHNlbGVjdGVkQ2F0ZWdvcnk6IGFueVtdID0gW107XG4gIHByb2dyYW1MaXN0VXJsID0gUFJPR1JBTV9MSVNUX0FQSTtcblxuICBASW5wdXQoJ2Nsb3NlT25Fc2MnKSBzZXQgY2xvc2VPbkVzYyhlc2NhcGVDb25kaXRpb246IGJvb2xlYW4pIHtcbiAgICBpZiAoZXNjYXBlQ29uZGl0aW9uKSB7XG4gICAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgb3JnRGV0YWlsczogYW55O1xuXG4gIHVybCA9XG4gICAgJ3E9e1wiYnlSZXNwb25zaWJpbGl0aWVzXCI6e1widHlwZVwiOltcInJlc3BvbnNpYmlsaXRpZXNfaW5fcXVldWVcIl0sXCJzdWJUeXBlXCI6W1wiQ0NcIl19LFwiYnlTdGF0dXNcIjp7XCJ0eXBlXCI6W1wicmVzcG9uc2liaWxpdGllc19pbl9xdWV1ZVwiXSxcInN1YlR5cGVcIjpbXX0sXCJmaWx0ZXJPYmplY3RcIjp7XCJyZXNwb25zaWJpbGl0eUNlbnRlclwiOltdLFwiZW50cnVzdGVkQnlcIjpbXSxcImVudHJ1c3RlZFRvXCI6W10sXCJyaXNrSWRzXCI6W10sXCJyZXNwb25zaWJpbGl0eUNhdGVnb3J5XCI6W119LFwidGltZVBlcmlvZERldGFpbHNcIjp7XCJ0eXBlXCI6XCJcIixcInNlbGVjdGVkUGVyaW9kXCI6XCJcIixcInNlbGVjdGVkWWVhclwiOlwiXCJ9LFwic3RhdHVzXCI6XCJcIn0nO1xuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xvc2VXb3JrZmxvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJlc2V0Rm9ybSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2hlY2twb2ludENvdW50VXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJjU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIG9wZW5lZEZyb20hOiBhbnk7IC8vd2hlbiBvcGVuZWQgZnJvbSByaXNrIHRyZWF0bWVudCBpdCB3aWxsIGJlICdSSVNLX1RSRUFUTUVOVCdcbiAgQElucHV0KCkgc2VsZWN0ZWRSQzogbnVtYmVyID0gMDsgLy8gNC01IGRpZ2l0IGlkIG9mIHNlbGVjdGVkIHJjIGJ5IGRlZmF1bHQgd2hlbiBvcGVuZWQgZnJvbSByaXNrIHRyZWF0bWVudFxuICAvLyBASW5wdXQoKSBzZWxlY3RlZFByb2dyYW06IGFueSA9IG51bGw7XG4gIGZlYXR1cmVGbGFnX2dyb3VwczogYm9vbGVhbiA9IGZhbHNlO1xuICBzZWxlY3RlZFByb2dyYW06IGFueSA9IG51bGw7XG4gIHNlbGVjdGVkUmV2aWV3ZXI6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoJ3NlbGVjdGVkUHJvZ3JhbScpIHNldCBzZXRTZWxlY3RlZFByb2dyYW0ocHJvZ3JhbTogYW55KSB7XG4gICAgaWYgKHByb2dyYW0gJiYgT2JqZWN0LmtleXMocHJvZ3JhbSk/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0gPSBwcm9ncmFtO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbSA9IFtdO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubGlua2VkUHJvZ3JhbSA9IFtdO1xuICAgICAgLy8gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbS5wdXNoKHByb2dyYW0pO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubGlua2VkUHJvZ3JhbS5wdXNoKHByb2dyYW0pO1xuICAgIH1cbiAgfVxuXG4gIC8qIENyZWF0aW5nIGFuIGV2ZW50IGVtaXR0ZXIuICovXG4gIEBPdXRwdXQoKSBvblJlbW92aW5nQ2hlY2twb2ludDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBpc0Fzc2Vzc21lbnREaXNhYmxlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGFzc2lnbmVlVHlwZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgLy8gaXQgd2lsbCBlbWl0IHdoZW4gYXNzaWduZWUgdHlwZSBjaGFuZ2VcbiAgQE91dHB1dCgpIG9uUmV2aWV3ZXJUeXBlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpOyAvLyBpdCB3aWxsIGVtaXQgd2hlbiByZXZpZXdlciB0eXBlIGNoYW5nZVxuXG4gIGVudHJ1c3RMb2FkZXIgPSBmYWxzZTtcbiAgc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcbiAgZGVzY3JpcHRpb246IEVkaXRvckNvbmZpZyA9IHtcbiAgICBtb2RlOiAncHJpbWUnLFxuICAgIGNvbG9yUGFsZXR0ZTogdHJ1ZSxcbiAgICBsaW5rOiB0cnVlLFxuICAgIHBsYWNlaG9sZGVyOiAnQWRkIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgY29tcGxldGluZyB0aGUgcmVzcG9uc2liaWxpdHknLFxuICB9O1xuICBwcm9ncmFtUGVvcGxlTGlzdDogYW55ID0ge1xuICAgIGFzc2lnbmVlc0xpc3Q6IFtdLFxuICAgIHJldmlld2Vyc0xpc3Q6IFtdLFxuICAgIG92ZXJzZWVyc0xpc3Q6IFtdLFxuICB9O1xuICBsb2FkZXIgPSBmYWxzZTtcbiAgc3VibWl0dGVkID0gZmFsc2U7XG4gIGVkaXREZXRhaWxzITogYW55O1xuICBzbWlsZXlNZXNzYWdlID0gYERvbmUhYDtcbiAgYWN0aW9uQnV0dG9ucyA9IFtcbiAgICB7XG4gICAgICBidXR0b25UZXh0OiAnRW50cnVzdCBNb3JlIFJlc3BvbnNpYmlsaXRpZXMnLFxuICAgICAgY2xhc3M6ICd3aGl0ZS1idG4nLFxuICAgICAgaWQ6ICdhZGRNb3JlJyxcbiAgICB9LFxuICAgIHsgYnV0dG9uVGV4dDogJ1ZpZXcgUmVzcG9uc2liaWxpdGllcycsIGNsYXNzOiAnYmx1ZS1idG4nLCBpZDogJ3ZpZXcnIH0sXG4gIF07XG4gIHNob3dTbWlsZXkgPSBmYWxzZTtcbiAgbWVtYmVySWQgPSAwO1xuICBvcmdhbml6YXRpb25JZCA9IDA7XG4gIHJjTGlzdExvYWRlZCA9IGZhbHNlO1xuICBhc3NpZ25vcnNMaXN0TG9hZGVkID0gZmFsc2U7XG4gIGFzc2lnbmVlc0xpc3RMb2FkZWQgPSBmYWxzZTtcbiAgY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSBmYWxzZTtcbiAgZ3JvdXBzTGlzdExvYWRlZCA9IGZhbHNlO1xuICBhc3N1cmFuY2VDYXRlZ29yeUxpc3RMb2FkZWQgPSBmYWxzZTtcbiAgc2VsZWN0ZWRGcmFtZXdvcmtWYWx1ZXMhOiBhbnk7XG4gIGhhc1Jldmlld2VyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gdXNlcnNMaXN0OiBhbnlbXSA9IFtdO1xuICBhc3NpZ25vcnNMaXN0OiBhbnlbXSA9IFtdO1xuICBhc3NpZ25lZXNMaXN0OiBhbnlbXSA9IFtdO1xuICByZXZpZXdlcnNMaXN0OiBhbnlbXSA9IFtdO1xuICBkaXNhYmxlQXNzaWduZWVJZHM6IGFueVtdID0gW107XG4gIGRpc2FibGVSZXZpZXdlcklkczogYW55W10gPSBbXTtcbiAgZGlzYWJsZU92ZXJzZWVySWRzOiBhbnlbXSA9IFtdO1xuICByZXZpZXdlck1lbWJlcklkc0xpc3Q6IGFueVtdID0gW107XG4gIGdyb3VwT3ZlcnNlZXJMaXN0OiBhbnlbXSA9IFtdO1xuICBncm91cFJldmlld2VyTGlzdDogYW55W10gPSBbXTtcbiAgZ3JvdXBBc3NpZ25lZUxpc3Q6IGFueVtdID0gW107XG4gIG92ZXJzZWVyc0xpc3Q6IGFueVtdID0gW107XG4gIGFsbFVzZXJzTGlzdDogYW55W10gPSBbXTtcbiAgYmVoYWxmT2ZVc2Vyc0xpc3Q6IGFueVtdID0gW107XG4gIGFzc2lnbmVlVXNlckxpc3Q6IGFueVtdID0gW107XG4gIHJldmlld2VyVXNlckxpc3Q6IGFueVtdID0gW107XG4gIG92ZXJzZWVyVXNlckxpc3Q6IGFueVtdID0gW107XG4gIG92ZXJzZWVyVXNlck5vdGlmeUxpc3Q6IGFueVtdID0gW107XG4gIGFsbENhdGVnb3JpZXM6IGFueVtdID0gW107XG4gIGFzc3VyYW5jZUNhdGVnb3JpZXNMaXN0OiBhbnlbXSA9IFtdO1xuICBhc3N1cmFuY2VSZXF1aXJlc0F1ZGl0TGlzdDogYW55W10gPSBbXTtcbiAgZ3JvdXBzTGlzdDogYW55W10gPSBbXTtcbiAgT3JnR3JvdXA6IGFueVtdID0gW107XG4gIGFkbWluc0xpc3Q6IGFueVtdID0gW107XG4gIHJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3Q6IGFueVtdID0gW107XG4gIGNhdGVnb3J5TGlzdDogYW55W10gPSBbXTtcbiAgbm9uUmVtb3ZhYmxlVXNlcnNMaXN0OiBhbnlbXSA9IFtdO1xuICByZXNwb25zaWJpbGl0eUNlbnRlclR5cGU6IE51bWJlciA9IDA7XG5cbiAgcmVzcG9uc2liaWxpdHlGb3JtOiBhbnkgPSB7XG4gICAgYXNzaWdub3JzOiB7XG4gICAgICBlbmFibGU6IGZhbHNlLFxuICAgICAgbGlzdDogW10sXG4gICAgfSxcbiAgICByZXNwb25zaWJpbGl0eToge1xuICAgICAgbmFtZTogJycsXG4gICAgICBrZXlSZXNwb25zaWJpbGl0eTogZmFsc2UsXG4gICAgfSxcbiAgICBhc3NpZ25lZUdyb3Vwczoge1xuICAgICAgd2hvQ2FuQ29tcGxldGU6ICdBTllPTkUnLFxuICAgICAgbGlzdDogW10sXG4gICAgfSxcbiAgICBhc3NpZ25lZXM6IHtcbiAgICAgIHdob0NhbkNvbXBsZXRlOiAnQUxMJyxcbiAgICAgIGxpc3Q6IFtdLFxuICAgIH0sXG4gICAgYWxsb3dFZGl0RHVlRGF0ZTogZmFsc2UsXG4gICAgZnJlcXVlbmN5OiAnJyxcbiAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgb2JqZWN0aXZlOiAnJyxcbiAgICByYzogW10sXG4gICAgcmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlOiAwLFxuICAgIGNhdGVnb3J5OiBbXSxcbiAgICBwcm9ncmFtOiBbXSxcbiAgICBwcm9ncmFtX3NlbGVjdGVkX2lkczogW10sXG4gICAgY2hlY2twb2ludEluc3RydWN0aW9uOiAnJyxcbiAgICBjdXN0b21UYWdzOiBbXSxcbiAgICBjaGVja3BvaW50czogW10sXG4gICAgcmV2aWV3ZXJzOiB7XG4gICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6IHRydWUsXG4gICAgICByZXZpZXdGcmVxdWVuY3k6IHtcbiAgICAgICAgcmV2aWV3Q29tcGxldGVEYXlzOiAyLFxuICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOiAyLFxuICAgICAgfSxcbiAgICAgIGxpc3Q6IFtdLFxuICAgIH0sXG4gICAgZ3JvdXBSZXZpZXdlcnM6IHtcbiAgICAgIHNlcXVlbnRpYWxXb3JrZmxvdzogdHJ1ZSxcbiAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xuICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6IDIsXG4gICAgICAgIHJldmlld05PdENvbXBsZXRlZERheXM6IDIsXG4gICAgICB9LFxuICAgICAgbGlzdDogW10sXG4gICAgfSxcbiAgICBvdmVyc2VlcnM6IHtcbiAgICAgIG5vdGlmeUxpc3Q6IFtdLFxuICAgICAgbGlzdDogW10sXG4gICAgfSxcbiAgICBvdmVyc2VlcnNHcm91cHM6IHtcbiAgICAgIG5vdGlmeUxpc3Q6IFtdLFxuICAgICAgbGlzdDogW10sXG4gICAgfSxcbiAgICBmb3JtYXRBbmRFdmlkZW5jZToge1xuICAgICAgZm9ybWF0UmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgZm9ybWF0RmlsZXM6IFtdLFxuICAgICAgZm9ybWF0TGlua3M6IFtdLFxuICAgICAgZXZpZGVuY2VSZXF1aXJlZDogZmFsc2UsXG4gICAgfSxcbiAgICBhc3N1cmFuY2VMaXN0OiBbXSxcbiAgICByZXF1aXJlc0F1ZGl0TGlzdDogW10sXG4gICAgcmlza0NsYXNzOiAnbG93JyxcbiAgICByaXNrTWF0cml4OiAnMCwwLDAsMCwwLDAnLFxuICAgIGF1ZGl0X2NhdGVnb3J5X2RldGFpbHM6IHtcbiAgICAgIGNhdGVnb3J5X2lkOiAwLFxuICAgICAgc2FtcGxlOiA1LFxuICAgICAgcGVyY2VudGFnZTogMzAsXG4gICAgICBmcmVxdWVuY3lfcGF0dGVybjogJzF+MH4zfjEnLFxuICAgICAgZnJlcXVlbmN5X3RpbWU6IERFRkFVTFRfMjRIUixcbiAgICB9LFxuICAgIGFzc2Vzc21lbnQ6IHtcbiAgICAgIGNhdGVnb3J5X2lkOiAnJyxcbiAgICAgIGFzc2Vzc21lbnRfaWQ6ICcnLFxuICAgIH0sXG4gICAgbmV3X2NoZWNrcG9pbnRzOiB7fSxcbiAgICBsaW5rZWRQcm9ncmFtOiBbXSxcbiAgICBzZWxlY3RlZEdSQ09iamVjdHM6IFtdLFxuICB9O1xuICBtb3JlT3B0aW9uczogYW55ID0ge1xuICAgIE9CSkVDVElWRTogZmFsc2UsXG4gICAgUkM6IGZhbHNlLFxuICAgIENBVEVHT1JZOiBmYWxzZSxcbiAgICBQUk9HUkFNOiBmYWxzZSxcbiAgICBGT1JNQVRFX0VWSURFTkNFOiBmYWxzZSxcbiAgICBDSEVDS1BPSU5UUzogZmFsc2UsXG4gICAgQVNTRVNTTUVOVDogZmFsc2UsXG4gICAgUklTS19DTEFTU0lGSUNBVElPTjogZmFsc2UsXG4gICAgUkVWSUVXRVI6IGZhbHNlLFxuICAgIE9WRVJTRUVSOiBmYWxzZSxcbiAgICBBU1NVUkFOQ0U6IGZhbHNlLFxuICAgIEFQUFM6IGZhbHNlLFxuICAgIFJFUVVJUkVTX0FVRElUOiBmYWxzZSxcbiAgICBDSEVDS1BPSU5UU19ORVc6IGZhbHNlLFxuICAgIEdSQ19PQkpFQ1RTOiBmYWxzZSxcbiAgfTtcbiAgYWN0aXZlU2VsZWN0b3IgPSAnJztcbiAgc2lkZVNlbGVjdG9yRWxlbWVudHM6IGFueSA9IFtcbiAgICAnYXNzdXJhbmNlJyxcbiAgICAnZnJhbWV3b3JrJyxcbiAgICAnYXNzaWdub3JzJyxcbiAgICAnYXNzaWduZWVzJyxcbiAgICAnY2F0ZWdvcnknLFxuICAgICdwcm9ncmFtJyxcbiAgICAncmMnLFxuICAgICdjaGVja3BvaW50cycsXG4gICAgJ2ZyZXF1ZW5jeScsXG4gICAgJ3Jldmlld2VyJyxcbiAgICAncmV2aWV3ZXJGcmVxdWVuY3knLFxuICAgICdvdmVyc2VlcicsXG4gICAgJ292ZXJzZWVyTm90aWZ5JyxcbiAgICAncmlza0NhbGN1bGF0b3InLFxuICAgICdpc0Fzc2Vzc21lbnQnLFxuICAgICdyZXF1aXJlc19hdWRpdCcsXG4gICAgJ2NoZWNrcG9pbnRzLW5ldycsXG4gICAgJ0dSQ19PQkpFQ1RTJyxcbiAgXTtcblxuICBmb2N1cyA9IHtcbiAgICByZXNwb25zaWJpbGl0eU5hbWU6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOiBmYWxzZSxcbiAgICBvYmplY3RpdmU6IGZhbHNlLFxuICB9O1xuXG4gIGNhdGVnb3JpZXM6IGFueSA9IHtcbiAgICByZWd1bGF0aW9uczoge1xuICAgICAgbGlzdDogW10sXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdLFxuICAgIH0sXG4gICAgc3RhbmRhcmRzOiB7XG4gICAgICBsaXN0OiBbXSxcbiAgICAgIHNlbGVjdGVkTGlzdDogW10sXG4gICAgfSxcbiAgICBpbnRlcm5hbENvbnRyb2xzOiB7XG4gICAgICBsaXN0OiBbXSxcbiAgICAgIHNlbGVjdGVkTGlzdDogW10sXG4gICAgfSxcbiAgICBvdGhlcnM6IHtcbiAgICAgIGxpc3Q6IFtdLFxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXSxcbiAgICB9LFxuICB9O1xuXG4gIGFsbFByb2dyYW1zOiBhbnlbXSA9IFtdO1xuXG4gIHJpc2tDbGFzc2lmaWNhdGlvbiA9IFtcbiAgICB7IG5hbWU6ICdMb3cnLCB2YWx1ZTogJ2xvdycsIGNsYXNzOiAnbG93JyB9LFxuICAgIHsgbmFtZTogJ0xvdy1NZWRpdW0nLCB2YWx1ZTogJ2xvd19tZWRpdW0nLCBjbGFzczogJ2xvdy1tZWQnIH0sXG4gICAgeyBuYW1lOiAnTWVkaXVtLUhpZ2gnLCB2YWx1ZTogJ21lZGl1bV9oaWdoJywgY2xhc3M6ICdtZWQtaGlnaCcgfSxcbiAgICB7IG5hbWU6ICdIaWdoJywgdmFsdWU6ICdoaWdoJywgY2xhc3M6ICdoaWdoJyB9LFxuICBdO1xuXG4gIGFzc2lnbm9yTW9kZSA9ICdjaGVja2JveCc7XG4gIHJjTW9kZSA9ICdjaGVja2JveCc7XG4gIGludmFsaWRUeXBlID0gJyc7XG4gIHJlc3BvbnNpYmlsaXR5UGF5bG9hZCE6IGFueTtcbiAgYXNzaWduZWVSYWRpb1NlbGVjdCA9IGZhbHNlO1xuICBwcm9ncmFtc0xpc3Q6IGFueVtdID0gW107XG5cbiAgLy8gZnJlcXVlbmN5IHZhcmlhYmxlIGRlY2xhcmF0aW9uXG4gIGZyZXF1ZW5jeURldGFpbHMgPSB7XG4gICAgcGF0dGVybjogJycsXG4gICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcbiAgICBkYXRlT2ZNb2RpZmllZDogMCxcbiAgICBkZWFjdGl2YXRpb25WYWx1ZTogMCxcbiAgICBzZWxlY3RlZFJlcG9ydDogMCxcbiAgICBsaWZlY3ljbGU6ICcwMDAwLTAwLTAwfn4wJyxcbiAgICBzdGFydERhdGU6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgd2luZG93OiAwLFxuICAgIGZhaWxlZDogMCxcbiAgICB0aW1lOiBERUZBVUxUX1RJTUUsXG4gICAgZmFpbGVkVGltZTogJycsXG4gICAgY29udGludW91c19mYWlsZWRfZGF5czogMCxcbiAgICBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzOiB7fSxcbiAgfTtcblxuICBmcmVxdWVuY3lPYmplY3Q6IEZyZXF1ZW5jeU9iamVjdCB8IG51bGwgPSBudWxsO1xuICBmcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdIb3cgb2Z0ZW4gZG9lcyB0aGUgcmVzcG9uc2liaWxpdHkgb2NjdXI/JztcbiAgc2hvcnRNb250aDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBpc0VkaXRXaGF0OiBCb29sZWFuID0gdHJ1ZTtcbiAgaXNGcmFtZXdvcmtBdmFpbGFibGUgPSAxO1xuICBpc05vdGlmaWNhdGlvblBlbmRpbmcgPSAwO1xuXG4gIGFzc3VyYW5jZUZsYWchOiBhbnk7XG4gIHJpc2tDbGFzc2lmaWNhdGlvbkZsYWchOiBhbnk7XG4gIGhpZGRlbkxpc3Q6IGFueVtdID0gW107XG4gIHN1YnNjcmlwdGlvbkRldGFpbHMhOiBhbnk7XG4gIGlzUmlza0VuYWJsZTogYm9vbGVhbiA9IHRydWU7XG4gIGlzRHVwbGljYXRlRW50cnVzdDogYm9vbGVhbiA9IGZhbHNlO1xuICBhdWRpdFRpbWU6IHN0cmluZyA9IERFRkFVTFRfVElNRTtcbiAgc2VuZEF1ZGl0UmVtaW5kZXJzVmFsdWU6IG51bWJlciA9IDI7XG4gIHNhbXBsZVZhbHVlOiBhbnk7XG4gIHNhbXBsZVBlcmNlbnRhZ2U6IGFueTtcbiAgc2VsZWN0ZWRTYW1wbGUhOiBudW1iZXI7XG4gIGlzU2FtcGxlOiBib29sZWFuID0gZmFsc2U7XG4gIHRlbXBDaGVja1ZhbHVlOiBudW1iZXIgPSAtMTtcbiAgaXNBc3Nlc3NtZW50OiBib29sZWFuID0gZmFsc2U7XG4gIG1hbmFnZVBlcm1pc3Npb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgY2hlY2twb2ludENvdW50OiBudW1iZXIgPSAwO1xuICByb2xlQmFzZWRQZXJtaXNzaW9ucyE6IGFueTtcbiAgaXNHcm91cEFzc2lnbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHJlc3BvbnNpYmlsaXR5RGF0YSE6IGFueTtcbiAgb3JpZ2luYWxBc3NpZ25lZSE6IGFueTtcbiAgdXNlckxpc3RMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYXNzaWdub3JzTGlzdExvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICByYXdSZXNwb25zaWJpbGl0eTogYW55O1xuICBvdGhlckdSQ1N1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgYWxsb3dFZGl0RHVlRGF0ZUZlYXR1cmVGbGFnOiBib29sZWFuID0gZmFsc2U7XG4gIGFsbFByb2dhbVNlbGVjdGVkOiBhbnlbXSA9IFtdO1xuXG5cbiAgQFZpZXdDaGlsZCgnd2hhdCcpIHdoYXRJbnB1dCE6IEVsZW1lbnRSZWY7XG4gIHVuU3Vic2NyaWJlUHJvZ3JhbSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgQElucHV0KCkgcmVzcG9uc2liaWxpdHlEZXRhaWxzOiBhbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzcG9uc2liaWxpdHlTZXJ2aWNlOiBSZXNwb25zaWJpbGl0eVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlLFxuICAgIHByaXZhdGUgdWlLaXRTZXJ2aWNlOiBVaUtpdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVybWlzc2lvbjogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9ncmFtU2VydmljZTogUHJvZ3JhbXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ3JjU2VydmljZTogR3JjU2VydmljZSxcbiAgICBwcml2YXRlIG9yZ2FuaXphdGlvblVzZXJTZXJ2aWNlOiBPcmdhbml6YXRpb25Vc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGNvbXBsaWFuY2VDb21tb25TZXJ2aWNlOiBDb21wbGlhbmNlQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIG9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2U6IE9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpZnJhbWVTZXJ2aWNlOiBJZnJhbWVTZXJ2aWNlLFxuXG4gICkge1xuICAgIHRoaXMub3JnYW5pemF0aW9uQ29tbW9uU2VydmljZT8uZ2V0T3JnVXNlckluZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBjb21wbGlhbmNlU3VibW9kdWxlID1cbiAgICAgICAgICByZXM/LnJvbGVBY3Rpb25zW1xuICAgICAgICAgICAgcmVzPy5yb2xlQWN0aW9ucz8uZmluZEluZGV4KFxuICAgICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubW9kdWxlTmFtZSA9PT0gJ2NvbXBsaWFuY2UnXG4gICAgICAgICAgICApXG4gICAgICAgICAgXT8uc3ViTW9kdWxlO1xuICAgICAgICBjb25zdCBwZXJtaXNzaW9ucyA9XG4gICAgICAgICAgY29tcGxpYW5jZVN1Ym1vZHVsZVtcbiAgICAgICAgICAgIGNvbXBsaWFuY2VTdWJtb2R1bGU/LmZpbmRJbmRleChcbiAgICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/LnN1Yk1vZHVsZU5hbWUgPT09ICdQcm9ncmFtcydcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdPy5wZXJtaXNzaW9ucztcbiAgICAgICAgdGhpcy5tYW5hZ2VQZXJtaXNzaW9uID0gcGVybWlzc2lvbnNbXG4gICAgICAgICAgcGVybWlzc2lvbnM/LmZpbmRJbmRleCgoZWxlOiBhbnkpID0+IGVsZT8ubmFtZSA9PT0gJ21hbmFnZSBwcm9ncmFtcycpXG4gICAgICAgIF0/LmVuYWJsZVxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLm1hbmFnZVBlcm1pc3Npb24pIHtcbiAgICAgICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnQ0FURUdPUlknKTtcbiAgICAgICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnUFJPR1JBTScpO1xuICAgICAgICAgIHRoaXMuZ2V0Q2F0ZWdvcnlMaXN0KCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEZlYXR1cmVGbGFncygpO1xuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGZhbHNlKTtcbiAgICB0aGlzLmdldEluaXRpYWxEYXRhKCk7XG4gIH1cblxuICBzZXRGZWF0dXJlRmxhZ3MoKSB7XG4gICAgdGhpcy5mZWF0dXJlRmxhZ19ncm91cHMgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9yZXNwb25zaWJpbGl0eV9ncm91cHMnXG4gICAgKTtcbiAgICB0aGlzLmlzUmVzcG9uc2liaWxpdHlTaW1wbGlmaWVkID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfcmVzcG9uc2liaWxpdHlfc2ltcGxpZmljYXRpb24nXG4gICAgKTtcbiAgICB0aGlzLmlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfcmVzcG9uc2liaWxpdHlfcmNfbGluaydcbiAgICApO1xuICAgIHRoaXMuYWxsb3dFZGl0RHVlRGF0ZUZlYXR1cmVGbGFnID1cbiAgICAgIHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9lZGl0X2R1ZV9kYXRlJyk7XG4gIH1cblxuICBnZXRJbml0aWFsRGF0YSgpIHtcbiAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnQVNTRVNTTUVOVCcpO1xuICAgIHRoaXMuZ2V0QXNzaWduZWVzTGlzdCgpO1xuICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcbiAgICB0aGlzLmdldE9yZ2FuaXphdGlvbkRldGFpbHMoKTtcbiAgICB0aGlzLmdldFVzZXJEZXRhaWxzKCk7XG4gICAgdGhpcy5zaG9ydE1vbnRoID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLm1vbnRoQXJyYXkubWFwKChtb250aCkgPT5cbiAgICAgIG1vbnRoLnN1YnN0cmluZygwLCAzKVxuICAgICk7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0NSRUFURScpIHtcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XG4gICAgICB0aGlzLm1lbWJlcklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyRGV0YWlscygpLnVzZXIudWlkO1xuICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ0NIRUNLUE9JTlRTJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgICAgdGhpcy5nZXRSQ0xpc3QoKTtcbiAgICAgIHRoaXMuZ2V0R3JvdXBzTGlzdCgpO1xuICAgICAgdGhpcy5nZXRBc3NpZ25vcnNMaXN0KCk7XG4gICAgICB0aGlzLmdldEFzc3VyYW5jZSgpO1xuICAgIH1cbiAgICB0aGlzLmdldE9yZ0RldGFpbHMoKTtcbiAgICB0aGlzLmdldFN1YnNjcmlwdGlvbkRldGFpbCgpO1xuICAgIHRoaXMuc2V0UmVzcG9uc2liaWxpdHlOYW1lKCk7XG4gICAgdGhpcy5oaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMuZW1pdCh0aGlzLmhpZGRlbkxpc3QpO1xuICB9XG5cbiAgZ2V0T3JnRGV0YWlscygpIHtcbiAgICB0aGlzLm9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2U/LmdldE9yZ0RldGFpbHNJbmZvKCk/LnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc1Jpc2tFbmFibGUgPSByZXM/LmVuYWJsZV9yaXNrY2xhc3MgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIGlmICghcmVzPy5lbmFibGVfcmlza2NsYXNzKSB7XG4gICAgICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ1JJU0tfQ0xBU1NJRklDQVRJT04nKTtcbiAgICAgICAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZGVuTGlzdCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFN1YnNjcmlwdGlvbkRldGFpbCgpIHtcbiAgICB0aGlzLm9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2U/LmdldFN1YnNjcmlwdGlvbkRldGFpbHNJbmZvKCk/LnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25EZXRhaWxzID0gcmVzO1xuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25EZXRhaWxzWzBdPy5hc3Nlc3NtZW50X2ZsYWcpIHtcbiAgICAgICAgICB0aGlzLmhpZGRlbkxpc3QgPSB0aGlzLmhpZGRlbkxpc3Q/LmZpbHRlcihcbiAgICAgICAgICAgIChlbGUpID0+IGVsZSAhPT0gJ0FTU0VTU01FTlQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZGVuTGlzdCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFjdGl2YXRlU2VsZWN0b3IodHlwZTogYW55LCBldmVudDogYm9vbGVhbikge1xuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSBldmVudCA/IHR5cGUgOiAnJztcbiAgICBpZiAodGhpcy5zaWRlU2VsZWN0b3JFbGVtZW50cz8uaW5jbHVkZXModHlwZSkpIHtcbiAgICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KGV2ZW50KTtcbiAgICB9XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdjaGVja3BvaW50cy1uZXcnOlxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnByZXZpZXdQYW5lbC5uZXh0KGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyYyc6XG4gICAgICAgIHRoaXMuZ2V0UkNMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXNzaWdub3JzJzpcbiAgICAgICAgdGhpcy5nZXRBc3NpZ25vcnNMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXNzaWduZWVzJzpcbiAgICAgICAgdGhpcy5nZXRHcm91cHNMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXNzdXJhbmNlJzpcbiAgICAgICAgdGhpcy5nZXRBc3N1cmFuY2UoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgc2V0UmVzcG9uc2liaWxpdHlOYW1lKCkge1xuICAgIGlmICh0aGlzLmFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X3R5cGUgPT09ICdjb21wbGlhbmNlX2F1ZGl0Jykge1xuICAgICAgY29uc3QgYXNzZXNzbWVudERhdGEgPSB7XG4gICAgICAgIHRhcmdldDoge1xuICAgICAgICAgIHZhbHVlOiAnQXVkaXQ6ICcgKyB0aGlzLmFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X25hbWUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgYXNzZXNzbWVudF9pZDogdGhpcy5hc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkLFxuICAgICAgICBjYXRlZ29yeV9pZDogdGhpcy5hc3Nlc3NtZW50RGV0YWlscy5jYXRlZ29yeVswXT8uX2lkLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5zZXRBc3Nlc3NtZW50RGF0YShbdGhpcy5hc3Nlc3NtZW50RGV0YWlsc10sIHBheWxvYWQsICdhc3Nlc3NtZW50Jyk7XG5cbiAgICAgIHRoaXMud2hhdENoYW5nZWQoYXNzZXNzbWVudERhdGEpO1xuICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ0NIRUNLUE9JTlRTJyk7XG4gICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnQ0hFQ0tQT0lOVFNfTkVXJyk7XG4gICAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZGVuTGlzdCk7XG4gICAgfVxuICB9XG5cbiAgd2hhdENoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Lm5hbWUgPSBldmVudD8udGFyZ2V0Py52YWx1ZTtcbiAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIHRoaXMuaXNFZGl0V2hhdCA9IHRydWU7XG4gICAgICBpZiAodGhpcy5pbnZhbGlkVHlwZSA9PT0gJ3doYXQnKSB7XG4gICAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnJztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0VkaXRXaGF0ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYWN0aXZlRGVzZWxlY3RvcigpIHtcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gJyc7XG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSB0cnVlO1xuICAgIHRoaXMubW9yZU9wdGlvbnNbZXZlbnQuY29kZV0gPSBldmVudC5jaGVja2VkO1xuICB9XG5cbiAgb25SY1R5cGVDaGFuZ2Uoc2VsZWN0ZWRUeXBlOiBOdW1iZXIpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9IHNlbGVjdGVkVHlwZSA/PyAwO1xuICB9XG5cbiAgZ2V0UkNMaXN0KHByb2dyYW1faWQ/OiBzdHJpbmcpIHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAocHJvZ3JhbV9pZCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncHJvZ3JhbV9pZHMnLCBwcm9ncmFtX2lkKTtcbiAgICB9XG4gICAgdGhpcy5jb21wbGlhbmNlQ29tbW9uU2VydmljZT8uZ2V0UmNMaXN0SW5mbyhwYXJhbXMpPy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCA9IHJlcztcbiAgICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnJldHVybklkcyh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYywgJ3JjaWQnKTtcbiAgICAgICAgY29uc3QgUkMgPSB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XG4gICAgICAgICAgaWRzPy5pbmNsdWRlcyhlbGVtZW50LnJjaWQpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChSQz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMgPSBSQztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3BlbmVkRnJvbSA9PT0gJ1JJU0tfVFJFQVRNRU5UJykge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LFxuICAgICAgICAgICAgW3RoaXMuc2VsZWN0ZWRSQ10sXG4gICAgICAgICAgICAncmNpZCdcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkMgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuYWN0aW9uQnV0dG9ucyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYnV0dG9uVGV4dDogJ0dvIHRvIHJpc2sgdHJlYXRtZW50JyxcbiAgICAgICAgICAgICAgY2xhc3M6ICdibHVlLWJ0bicsXG4gICAgICAgICAgICAgIGlkOiAndmlldycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgICAgLy8gUHJldmlvdXNseSB0aGVyZSB3YXMgb25seSBSQyB3YXMgZW1pdHRpbmcgd2hpY2ggbWFkZSB0aGUgY2hlY2tlZCBvcHRpb25zIHRvIGRlIGNoZWNrIG5vdyBjaGVja2luZyB0aGUgY29uZGl0aW9uIGFuZCBzZW5kaW5nIGFsbCB0aGUgc2VsZWN0ZWQgb3B0aW9uc1xuICAgICAgICAgIGxldCBjaGVja2VkTW9yZU9wdGlvbnMgPSBbXTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLm1vcmVPcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5tb3JlT3B0aW9uc1trZXldKSB7XG4gICAgICAgICAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChjaGVja2VkTW9yZU9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFVzZXJEZXRhaWxzKCkge1xuICAgIGlmICh0aGlzLmFjdGlvbkJ1dHRvbnM/Lmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uQ29tbW9uU2VydmljZT8uZ2V0T3JnVXNlckluZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmcgPSByZXM/Lm5vdGlmaWNhdGlvbl9wZW5kaW5nX2ZsYWc7XG4gICAgICAgICAgdGhpcy5hY3Rpb25CdXR0b25zWzFdLmJ1dHRvblRleHQgPSB0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZ1xuICAgICAgICAgICAgPyAnVmlldyBSZXNwb25zaWJpbGl0aWVzIGluIFF1ZXVlJ1xuICAgICAgICAgICAgOiAnVmlldyBSZXNwb25zaWJpbGl0aWVzJztcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldEFzc3VyYW5jZSgpIHtcbiAgICB0aGlzLmFzc3VyYW5jZUNhdGVnb3J5TGlzdExvYWRlZCA9IHRydWU7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuZ2V0QXNzdXJhbmNlKCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYXNzdXJhbmNlQ2F0ZWdvcmllc0xpc3QgPSByZXM7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAodGhpcy5zdWJzY3JpcHRpb25EZXRhaWxzICYmXG4gICAgICAgICAgICAhdGhpcy5zdWJzY3JpcHRpb25EZXRhaWxzWzBdLmFzc3VyYW5jZV9mbGFnKSB8fFxuICAgICAgICAgIHRoaXMuYXNzdXJhbmNlQ2F0ZWdvcmllc0xpc3Q/Lmxlbmd0aCA9PSAwXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdBU1NVUkFOQ0UnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZGVuTGlzdCk7XG4gICAgICAgIHRoaXMuYXNzdXJhbmNlQ2F0ZWdvcnlMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5hc3N1cmFuY2VDYXRlZ29yeUxpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnZXRPcmdhbml6YXRpb25EZXRhaWxzKCkge1xuICAgIHRoaXMub3JnYW5pemF0aW9uQ29tbW9uU2VydmljZT8uZ2V0T3JnRGV0YWlsc0luZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzRnJhbWV3b3JrQXZhaWxhYmxlID0gcmVzPy5lbmFibGVfcmVzcG9uc2liaWxpdHlfZnJhbWV3b3JrO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q2F0ZWdvcnlMaXN0KCkge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2UuZ2V0Q2F0ZWdvcmllc0xpc3QoKS5zdWJzY3JpYmUoXG4gICAgICAocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSByZXM7XG4gICAgICAgIHRoaXMuYWxsQ2F0ZWdvcmllcyA9IGNsb25lRGVlcChyZXMpO1xuICAgICAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY29tcGxpYW5jZV90eXBlID09IDApIHtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcy5vdGhlcnMubGlzdC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNvbXBsaWFuY2VfdHlwZSA9PSAxKSB7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMucmVndWxhdGlvbnMubGlzdC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNvbXBsaWFuY2VfdHlwZSA9PSAyKSB7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMuc3RhbmRhcmRzLmxpc3QucHVzaChlbGVtZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5jb21wbGlhbmNlX3R5cGUgPT0gMykge1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzLmludGVybmFsQ29udHJvbHMubGlzdC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZmlsdGVyTGlzdHNBY2NvcmRpbmdUb1Byb2dyYW0ocHJvZ3JhbV9pZD86IHN0cmluZykge1xuICAgIHRoaXMudW5TdWJzY3JpYmVQcm9ncmFtLm5leHQoKTtcbiAgICB0aGlzLnVuU3Vic2NyaWJlUHJvZ3JhbS5jb21wbGV0ZSgpO1xuICAgIGlmIChwcm9ncmFtX2lkICYmIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSB7XG4gICAgICB0aGlzLmdldFBlb3BsZUxpc3RBZ2FpbnN0UElEKHByb2dyYW1faWQpO1xuICAgICAgdGhpcy5nZXRSQ0xpc3QocHJvZ3JhbV9pZCk7XG4gICAgICB0aGlzLmdldEdyb3Vwc0xpc3QocHJvZ3JhbV9pZCk7XG4gICAgICB0aGlzLmdldEFzc2lnbm9yc0xpc3QocHJvZ3JhbV9pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2V0QXNzaWduZWVzTGlzdCgpO1xuICAgICAgdGhpcy5nZXRSQ0xpc3QoKTtcbiAgICAgIHRoaXMuZ2V0R3JvdXBzTGlzdCgpO1xuICAgICAgdGhpcy5nZXRBc3NpZ25vcnNMaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJvZ3JhbURldGFpbHMocHJvZ3JhbUlkPzogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0UHJvZ3JhbShwcm9ncmFtSWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgcmVzPy5hc3Nlc3NtZW50ICYmXG4gICAgICAgIHJlcz8uYXNzZXNzbWVudD8ubGVuZ3RoICYmXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3Nlc3NtZW50KT8ubGVuZ3RoXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlBc3Nlc3NtZW50ID0gcmVzPy5hc3Nlc3NtZW50LmZpbHRlcihcbiAgICAgICAgICAoYXNzZXNzbWVudDogYW55KSA9PlxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2Vzc21lbnQ/LmNhdGVnb3J5X2lkID09PVxuICAgICAgICAgICAgYXNzZXNzbWVudD8uY2F0ZWdvcnlfaWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGNhdGVnb3J5QXNzZXNzbWVudD8ubGVuZ3RoICYmXG4gICAgICAgICAgY2F0ZWdvcnlBc3Nlc3NtZW50WzBdPy5hc3Nlc3NtZW50SWRzPy5sZW5ndGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgaXNFeGlzdCA9IGNhdGVnb3J5QXNzZXNzbWVudFswXT8uYXNzZXNzbWVudElkcz8uaW5jbHVkZXMoXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKCFpc0V4aXN0KSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50ID0ge1xuICAgICAgICAgICAgICBhc3Nlc3NtZW50X2lkOiAnJyxcbiAgICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICcnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudCA9IHtcbiAgICAgICAgICAgIGFzc2Vzc21lbnRfaWQ6ICcnLFxuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6ICcnLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBnZXRMaXN0c0FjY29yZGluZ1RvUHJvZ3JhbShwcm9ncmFtX2lkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmdldFBlb3BsZUxpc3RBZ2FpbnN0UElEKHByb2dyYW1faWQpO1xuICAgIHRoaXMuZ2V0UkNMaXN0KHByb2dyYW1faWQpO1xuICAgIHRoaXMuZ2V0R3JvdXBzTGlzdChwcm9ncmFtX2lkKTtcbiAgICB0aGlzLmdldEFzc2lnbm9yc0xpc3QocHJvZ3JhbV9pZCk7XG4gIH1cblxuICBnZXRBc3NpZ25vcnNMaXN0KHByb2dyYW1faWQ/OiBzdHJpbmcpIHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAocHJvZ3JhbV9pZCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncHJvZ3JhbV9pZHMnLCBwcm9ncmFtX2lkKTtcbiAgICB9XG4gICAgdGhpcy5hc3NpZ25vcnNMaXN0TG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5nZXRBc3NpZ25vcnNMaXN0KHBhcmFtcykuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYmVoYWxmT2ZVc2Vyc0xpc3QgPSByZXM7XG4gICAgICAgIGlmIChwcm9ncmFtX2lkKSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoTGlzdHNXaGlsZVByb2dyYW1TZWxlY3RlZCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hc3NpZ25vcnNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5hc3NpZ25vcnNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5hc3NpZ25vcnNMaXN0TG9hZGVyID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgaWYgKHByb2dyYW1faWQpIHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnZXRBc3NpZ25lZXNMaXN0KHByb2dyYW1faWQ/OiBzdHJpbmcpIHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAocHJvZ3JhbV9pZCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncHJvZ3JhbV9pZHMnLCBwcm9ncmFtX2lkKTtcbiAgICB9XG4gICAgdGhpcy51c2VyTGlzdExvYWRlciA9IHRydWU7XG4gICAgdGhpcy5mZXRjaEFzc2lnbmVlKHByb2dyYW1faWQpO1xuICB9XG5cbiAgZmV0Y2hBc3NpZ25lZShwcm9ncmFtX2lkPzogc3RyaW5nKSB7XG4gICAgdGhpcy5vcmdhbml6YXRpb25Vc2VyU2VydmljZS5nZXRPcmdhbml6YXRpb25Vc2VycygpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmFsbFVzZXJzTGlzdCA9IHJlcy5tYXAoKHVzZXI6IGFueSkgPT4ge1xuICAgICAgICAgIHVzZXIubWVtYmVyX25hbWUgPSB1c2VyLmVtcGxveWVlX25hbWU7XG4gICAgICAgICAgcmV0dXJuIHVzZXI7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocHJvZ3JhbV9pZCkge1xuICAgICAgICAgIHRoaXMucmVmcmVzaExpc3RzV2hpbGVQcm9ncmFtU2VsZWN0ZWQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnVzZXJMaXN0TG9hZGVyID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnVzZXJMaXN0TG9hZGVyID0gZmFsc2U7XG4gICAgICAgIGlmIChwcm9ncmFtX2lkKSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoTGlzdHNXaGlsZVByb2dyYW1TZWxlY3RlZCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0UGVvcGxlTGlzdEFnYWluc3RQSUQocHJvZ3JhbV9pZDogc3RyaW5nKSB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKHByb2dyYW1faWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3Byb2dyYW1faWRzJywgcHJvZ3JhbV9pZCk7XG4gICAgICB0aGlzLnVzZXJMaXN0TG9hZGVyID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5vcmdhbml6YXRpb25Vc2VyU2VydmljZS5nZXRPcmdhbml6YXRpb25Vc2VycygpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNldE9yZ2FuaXphdGlvblVzZXJMaXN0KHJlcyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9pZHMgfHxcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdD8ubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QsXG4gICAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgYWxsSWRzID0gW1xuICAgICAgICAgICAgICAuLi5uZXcgU2V0KGlkcyksXG4gICAgICAgICAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfYXNzaWduZWVfaWRzXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgY29uc3QgYXNzaWdub3JzID0gdGhpcy5hc3NpZ25lZXNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgICAgICBhbGxJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm15X21lbWJlcl9pZClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoYXNzaWdub3JzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSBhc3NpZ25vcnM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBhc3NpZ25vcnMgPSB0aGlzLmFzc2lnbmVlc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X2Fzc2lnbmVlX2lkcz8uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgZWxlbWVudD8ubXlfbWVtYmVyX2lkXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoYXNzaWdub3JzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSBhc3NpZ25vcnM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZVByb2dyYW1Bc3NpZ25lZUdyb3VwKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2hlY2tlZE1vcmVPcHRpb25zID0gW107XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X3Jldmlld2VycyB8fFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCB8fFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QsXG4gICAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgYWxsSWRzID0gW1xuICAgICAgICAgICAgLi4ubmV3IFNldChpZHMpLFxuICAgICAgICAgICAgLi4ubmV3IFNldCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfcmV2aWV3ZXJzKSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnN0IHJldmlld2VycyA9IHRoaXMucmV2aWV3ZXJzTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgIGFsbElkcz8uaW5jbHVkZXMoZWxlbWVudD8ubXlfbWVtYmVyX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gY29uc3QgcmV2aWV3ZXJzID0gdGhpcy5yZXZpZXdlcnNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PiB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfcmV2aWV3ZXJzPy5pbmNsdWRlcyhlbGVtZW50Py5teV9tZW1iZXJfaWQpKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICByZXZpZXdlcnM/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzICYmXG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0ID0gcmV2aWV3ZXJzO1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSByZXZpZXdlcnM7XG4gICAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZChcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLlJFVklFV0VSID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlUHJvZ3JhbVJldmlld2VyR3JvdXAoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbVswXS5kZWZhdWx0X292ZXJzZWVycyB8fFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCB8fFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3QsXG4gICAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgYWxsRGVmYXVsdENDSWRzID0gW1xuICAgICAgICAgICAgLi4ubmV3IFNldChpZHMpLFxuICAgICAgICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19tZW1iZXJfZW1haWxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXTtcbiAgICAgICAgICBjb25zdCBvdmVyc2VlcnNDQyA9IHRoaXMub3ZlcnNlZXJzTGlzdD8uZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XG4gICAgICAgICAgICBhbGxEZWZhdWx0Q0NJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm15X21lbWJlcl9pZClcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIGNvbnN0IG92ZXJzZWVycyA9IHRoaXMub3ZlcnNlZXJzTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT4gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbVswXS5kZWZhdWx0X292ZXJzZWVycy5jY19lbWFpbC5pbmNsdWRlcyhlbGVtZW50Lm15X21lbWJlcl9pZCkpO1xuICAgICAgICAgIGNvbnN0IG5vdGlmeUxpc3RJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0LFxuICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IGFsbERlZmF1bHRDQ0ZhaWx1cmVJZHMgPSBbXG4gICAgICAgICAgICAuLi5uZXcgU2V0KG5vdGlmeUxpc3RJZHMpLFxuICAgICAgICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX21lbWJlcl9lbWFpbFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnN0IG92ZXJzZWVyc0NDRmFpbHVyZSA9IHRoaXMub3ZlcnNlZXJzTGlzdD8uZmlsdGVyKFxuICAgICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgYWxsRGVmYXVsdENDRmFpbHVyZUlkcz8uaW5jbHVkZXMoZWxlbWVudD8ubXlfbWVtYmVyX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gY29uc3Qgbm90aWZ5T3ZlcnNlZXJzID0gdGhpcy5vdmVyc2VlcnNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PiB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfb3ZlcnNlZXJzLmZhaWx1cmVfY2NfZW1haWwuaW5jbHVkZXMoZWxlbWVudC5teV9tZW1iZXJfaWQpKTtcbiAgICAgICAgICAvLyBpZiAob3ZlcnNlZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICAvLyAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0ID0gb3ZlcnNlZXJzO1xuICAgICAgICAgIC8vICAgdGhpcy5tb3JlT3B0aW9ucy5PVkVSU0VFUiA9IHRydWU7XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIC8vIGlmIChub3RpZnlPdmVyc2VlcnM/Lmxlbmd0aCkge1xuICAgICAgICAgIC8vICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3QgPSBub3RpZnlPdmVyc2VlcnM7XG4gICAgICAgICAgLy8gICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgICAvLyB9XG5cbiAgICAgICAgICBpZiAob3ZlcnNlZXJzQ0M/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3QgPSBvdmVyc2VlcnNDQztcbiAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IHRoaXMuYXNzaWduVXNlck1lbWJlcklkKFxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3QgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG92ZXJzZWVyc0NDRmFpbHVyZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9IG92ZXJzZWVyc0NDRmFpbHVyZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9XG4gICAgICAgICAgICAgICAgdGhpcy5hc3NpZ25Vc2VyTWVtYmVySWQoXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3QgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgIHRoaXMucG9wdWxhdGVQcm9ncmFtT3ZlcnNlZXJHcm91cCgpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMubW9yZU9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAodGhpcy5tb3JlT3B0aW9uc1trZXldKSB7XG4gICAgICAgICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaChrZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoY2hlY2tlZE1vcmVPcHRpb25zKTtcbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMudXNlckxpc3RMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgdGhpcy51c2VyTGlzdExvYWRlciA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBzZXRPcmdhbml6YXRpb25Vc2VyTGlzdChyZXM6IGFueSkge1xuICAgIHRoaXMuYXNzaWduZWVzTGlzdCA9IHJlcy5hc3NpZ25lZS5tYXAoKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdXNlci5tZW1iZXJfbmFtZSA9IHVzZXIuZW1wbG95ZWVfbmFtZTtcbiAgICAgIHJldHVybiB1c2VyO1xuICAgIH0pO1xuICAgIHRoaXMub3ZlcnNlZXJzTGlzdCA9IHJlcy5vdmVyc2Vlci5tYXAoKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdXNlci5tZW1iZXJfbmFtZSA9IHVzZXIuZW1wbG95ZWVfbmFtZTtcbiAgICAgIHJldHVybiB1c2VyO1xuICAgIH0pO1xuICAgIHRoaXMucmV2aWV3ZXJzTGlzdCA9IHJlcy5yZXZpZXdlci5tYXAoKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdXNlci5tZW1iZXJfbmFtZSA9IHVzZXIuZW1wbG95ZWVfbmFtZTtcbiAgICAgIHJldHVybiB1c2VyO1xuICAgIH0pO1xuICAgIHRoaXMucHJvZ3JhbVBlb3BsZUxpc3QgPSB7XG4gICAgICBhc3NpZ25lZXNMaXN0OiBbLi4ubmV3IFNldCh0aGlzLmFzc2lnbmVlc0xpc3QpXSxcbiAgICAgIHJldmlld2Vyc0xpc3Q6IFsuLi5uZXcgU2V0KHRoaXMucmV2aWV3ZXJzTGlzdCldLFxuICAgICAgb3ZlcnNlZXJzTGlzdDogWy4uLm5ldyBTZXQodGhpcy5vdmVyc2VlcnNMaXN0KV0sXG4gICAgfTtcbiAgfVxuXG4gIGdldEdyb3Vwc0xpc3QocHJvZ3JhbV9pZD86IHN0cmluZykge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmIChwcm9ncmFtX2lkKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9ncmFtX2lkcycsIHByb2dyYW1faWQpO1xuICAgIH1cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZVxuICAgICAgLmdldE9yZ2FuaXphdGlvbkdyb3VwcyhwYXJhbXMpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51blN1YnNjcmliZVByb2dyYW0pKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHJlcyA/PyBbXTtcbiAgICAgICAgICBpZiAoIXByb2dyYW1faWQpIHtcbiAgICAgICAgICAgIHRoaXMuT3JnR3JvdXAgPSBkYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBncm91cHM6IGFueSA9IFtdO1xuICAgICAgICAgIGlmIChkYXRhPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGRhdGE/LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBvYmogPSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBOYW1lOiBlbGVtZW50Lmdyb3VwX25hbWUsXG4gICAgICAgICAgICAgICAgdXNlcklkczogZWxlbWVudC5tZW1iZXJfaWRzLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBncm91cHMucHVzaChvYmopO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ3JvdXBzTGlzdCA9IGdyb3VwcztcbiAgICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzICYmXG4gICAgICAgICAgICB0aGlzLk9yZ0dyb3VwPy5sZW5ndGggJiZcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgcHJvZ3JhbV9pZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoTGlzdHNXaGlsZVByb2dyYW1TZWxlY3RlZCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHMgJiZcbiAgICAgICAgICAgIHByb2dyYW1faWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkR3JvdXBzID0gZGF0YS5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbVswXS5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcz8uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgZWxlbWVudC5ncm91cF9pZFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGdyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGxldCBtZW1iZXJJZHM6IGFueVtdID0gW107XG4gICAgICAgICAgICAgIHNlbGVjdGVkR3JvdXBzLmZvckVhY2goKGVhY2hHcm91cDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVhY2hHcm91cD8ubWVtYmVyX2lkcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICBtZW1iZXJJZHMgPSBbXG4gICAgICAgICAgICAgICAgICAgIC4uLm5ldyBTZXQobWVtYmVySWRzLmNvbmNhdChlYWNoR3JvdXA/Lm1lbWJlcl9pZHMpKSxcbiAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0LFxuICAgICAgICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFsbElkcyA9IFsuLi5uZXcgU2V0KGlkcyksIC4uLm5ldyBTZXQobWVtYmVySWRzKV07XG4gICAgICAgICAgICAgICAgY29uc3QgYXNzaWdub3JzID0gdGhpcy5hc3NpZ25lZXNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgYWxsSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5teV9tZW1iZXJfaWQpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoYXNzaWdub3JzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gYXNzaWdub3JzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhc3NpZ25vcnMgPSB0aGlzLmFzc2lnbmVlc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICBtZW1iZXJJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm15X21lbWJlcl9pZClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChhc3NpZ25vcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSBhc3NpZ25vcnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBnZXRFZGl0UmVzcG9uc2liaWxpdHlEZXRhaWxzKGlkOiBhbnkpIHtcbiAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgIHRoaXMucG9wdWxhdGVSZXNwb25zaWJpbGl0eURldGFpbHMoKTtcbiAgfVxuXG4gIHNldExpc3QobGlzdDogYW55W10sIGlkczogYW55W10sIGtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF0YTogYW55ID0gW107XG4gICAgaWRzPy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdC5maW5kSW5kZXgoXG4gICAgICAgIChsaXN0RWxlbWVudDogYW55KSA9PiBsaXN0RWxlbWVudFtrZXldID09IGVsZW1lbnRcbiAgICAgICk7XG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIGRhdGEucHVzaChsaXN0W2luZGV4XSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICByZXR1cm5JZHMobGlzdDogYW55W10sIGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxpc3RcbiAgICAgID8ubWFwKChlbGUpID0+IHtcbiAgICAgICAgaWYgKGVsZVtrZXldKSB7XG4gICAgICAgICAgcmV0dXJuIGVsZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoZWxlKSA9PiBlbGUpO1xuICB9XG5cbiAgcG9wdWxhdGVQcm9ncmFtQXNzaWduZWVHcm91cCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHMgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgaWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0LFxuICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYWxsSWRzID0gW1xuICAgICAgICAgIC4uLm5ldyBTZXQoaWRzKSxcbiAgICAgICAgICAuLi5uZXcgU2V0KFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzXG4gICAgICAgICAgKSxcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgYXNzaWduZWVHcm91cHMgPSB0aGlzLmdyb3VwQXNzaWduZWVMaXN0Py5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICBhbGxJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lmdyb3VwX2lkKVxuICAgICAgICApO1xuICAgICAgICBpZiAoYXNzaWduZWVHcm91cHM/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3QgPSBhc3NpZ25lZUdyb3VwcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0ID0gW107XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFzc2lnbmVlR3JvdXBzID0gdGhpcy5ncm91cEFzc2lnbmVlTGlzdD8uZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzPy5pbmNsdWRlcyhcbiAgICAgICAgICAgIGVsZW1lbnQ/Lmdyb3VwX2lkXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBpZiAoYXNzaWduZWVHcm91cHM/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3QgPSBhc3NpZ25lZUdyb3VwcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0ID0gW107XG4gICAgfVxuICB9XG5cbiAgcG9wdWxhdGVQcm9ncmFtT3ZlcnNlZXJHcm91cCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3VwcyB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVyc1xuICAgICAgICA/LmZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3QsXG4gICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICApO1xuICAgICAgICBjb25zdCBhbGxEZWZhdWx0Q0NHcm91cElkcyA9IFtcbiAgICAgICAgICAuLi5uZXcgU2V0KGlkcyksXG4gICAgICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzXG4gICAgICAgICAgKSxcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJzQ0NHcm91cCA9IHRoaXMuZ3JvdXBPdmVyc2Vlckxpc3Q/LmZpbHRlcihcbiAgICAgICAgICAoZWxlbWVudDogYW55KSA9PiBhbGxEZWZhdWx0Q0NHcm91cElkcz8uaW5jbHVkZXMoZWxlbWVudD8uZ3JvdXBfaWQpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG5vdGlmeUxpc3RJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubm90aWZ5TGlzdCxcbiAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGFsbERlZmF1bHRDQ0ZhaWx1cmVHcm91cElkcyA9IFtcbiAgICAgICAgICAuLi5uZXcgU2V0KG5vdGlmeUxpc3RJZHMpLFxuICAgICAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzXG4gICAgICAgICAgKSxcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJzQ0NGYWlsdXJlR3JvdXAgPSB0aGlzLmdyb3VwT3ZlcnNlZXJMaXN0Py5maWx0ZXIoXG4gICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgIGFsbERlZmF1bHRDQ0ZhaWx1cmVHcm91cElkcz8uaW5jbHVkZXMoZWxlbWVudD8uZ3JvdXBfaWQpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChvdmVyc2VlcnNDQ0dyb3VwPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubGlzdCA9IG92ZXJzZWVyc0NDR3JvdXA7XG4gICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PVkVSU0VFUiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzLmxpc3QgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3ZlcnNlZXJzQ0NGYWlsdXJlR3JvdXA/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5ub3RpZnlMaXN0ID1cbiAgICAgICAgICAgIG92ZXJzZWVyc0NDRmFpbHVyZUdyb3VwO1xuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5ub3RpZnlMaXN0ID0gW107XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyc0NDR3JvdXAgPSB0aGlzLmdyb3VwT3ZlcnNlZXJMaXN0Py5maWx0ZXIoXG4gICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzPy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgZWxlbWVudD8uZ3JvdXBfaWRcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJzQ0NGYWlsdXJlR3JvdXAgPSB0aGlzLmdyb3VwT3ZlcnNlZXJMaXN0Py5maWx0ZXIoXG4gICAgICAgICAgKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbF9ncm91cHM/LmluY2x1ZGVzKFxuICAgICAgICAgICAgICBlbGVtZW50Py5ncm91cF9pZFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBpZiAob3ZlcnNlZXJzQ0NHcm91cD8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzLmxpc3QgPSBvdmVyc2VlcnNDQ0dyb3VwO1xuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdmVyc2VlcnNDQ0ZhaWx1cmVHcm91cC5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubm90aWZ5TGlzdCA9XG4gICAgICAgICAgICBvdmVyc2VlcnNDQ0ZhaWx1cmVHcm91cDtcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubGlzdCA9IFtdO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzLm5vdGlmeUxpc3QgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwb3B1bGF0ZVByb2dyYW1SZXZpZXdlckdyb3VwKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X3Jldmlld2VyX2dyb3VwX2lkcyB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGhcbiAgICApIHtcbiAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3QsXG4gICAgICAgICdncm91cF9pZCdcbiAgICAgICk7XG4gICAgICBjb25zdCBhbGxJZHMgPSBbXG4gICAgICAgIC4uLm5ldyBTZXQoaWRzKSxcbiAgICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdPy5kZWZhdWx0X3Jldmlld2VyX2dyb3VwX2lkc1xuICAgICAgICApLFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHJldmlld2Vyc0dyb3VwID0gdGhpcy5ncm91cFJldmlld2VyTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgYWxsSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5ncm91cF9pZClcbiAgICAgICk7XG4gICAgICBpZiAoXG4gICAgICAgIHJldmlld2Vyc0dyb3VwPy5sZW5ndGggfHxcbiAgICAgICAgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzICYmXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmdyb3VwUmV2aWV3ZXJzLmxpc3QgPSByZXZpZXdlcnNHcm91cDtcbiAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5SRVZJRVdFUiA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5ncm91cFJldmlld2Vycy5saXN0ID0gW107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmdyb3VwUmV2aWV3ZXJzLmxpc3QgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwb3B1bGF0ZU92ZXJzZWVyRGF0YShyZXM6IGFueSkge1xuICAgIGxldCBvdmVyc2VlclVzZXJMaXN0OiBudW1iZXJbXSA9IFtdO1xuICAgIGxldCBvdmVyc2VlclVzZXJOb3RpZnlMaXN0OiBudW1iZXJbXSA9IFtdO1xuICAgIGxldCBvdmVyc2VlckVtcGxveWVlc0xpc3QgPSByZXM/LmNjX21lbWJlcl9lbWFpbFxuICAgICAgPyBPYmplY3Qua2V5cyhyZXM/LmNjX21lbWJlcl9lbWFpbCkubWFwKE51bWJlcilcbiAgICAgIDogW107XG4gICAgb3ZlcnNlZXJVc2VyTGlzdCA9XG4gICAgICBvdmVyc2VlckVtcGxveWVlc0xpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmNjRW1haWxHcm91cElkcz8ubGVuZ3RoID4gMFxuICAgICAgICA/IG92ZXJzZWVyRW1wbG95ZWVzTGlzdC5maWx0ZXIoKGVtcGxveWVlSWRzOiBudW1iZXIpID0+XG4gICAgICAgICAgcmVzPy5leGlzdGluZ1VzZXJJZHM/LmNjRW1haWxNZW1iZXJJZHM/LmluY2x1ZGVzKGVtcGxveWVlSWRzKVxuICAgICAgICApXG4gICAgICAgIDogWy4uLm92ZXJzZWVyRW1wbG95ZWVzTGlzdF07XG4gICAgbGV0IG92ZXJzZWVyRW1wbG95ZWVOb3RpZnlMaXN0ID0gcmVzPy5mYWlsdXJlX2NjX21lbWJlcl9lbWFpbFxuICAgICAgPyBPYmplY3Qua2V5cyhyZXM/LmZhaWx1cmVfY2NfbWVtYmVyX2VtYWlsKS5tYXAoTnVtYmVyKVxuICAgICAgOiBbXTtcbiAgICBvdmVyc2VlclVzZXJOb3RpZnlMaXN0ID1cbiAgICAgIG92ZXJzZWVyRW1wbG95ZWVOb3RpZnlMaXN0Py5sZW5ndGggPiAwICYmXG4gICAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5mYWlsdXJlQ0NFbWFpbEdyb3VwSWRzPy5sZW5ndGggPiAwXG4gICAgICAgID8gb3ZlcnNlZXJFbXBsb3llZU5vdGlmeUxpc3QuZmlsdGVyKChlbXBsb3llZUlkczogbnVtYmVyKSA9PlxuICAgICAgICAgIHJlcz8uZXhpc3RpbmdVc2VySWRzPy5mYWlsdXJlQ0NFbWFpbE1lbWJlcklkcz8uaW5jbHVkZXMoZW1wbG95ZWVJZHMpXG4gICAgICAgIClcbiAgICAgICAgOiBbLi4ub3ZlcnNlZXJFbXBsb3llZU5vdGlmeUxpc3RdO1xuXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ292ZXJzZWVycyddID0ge1xuICAgICAgbGlzdDogcmVzPy5jY19tZW1iZXJfZW1haWxcbiAgICAgICAgPyB0aGlzLnNldExpc3QodGhpcy5vdmVyc2VlcnNMaXN0LCBvdmVyc2VlclVzZXJMaXN0LCAnZW1wbG95ZWVfaWQnKVxuICAgICAgICA6IFtdLFxuICAgICAgbm90aWZ5TGlzdDogcmVzPy5mYWlsdXJlX2NjX21lbWJlcl9lbWFpbFxuICAgICAgICA/IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLm92ZXJzZWVyc0xpc3QsXG4gICAgICAgICAgb3ZlcnNlZXJVc2VyTm90aWZ5TGlzdCxcbiAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgIClcbiAgICAgICAgOiBbXSxcbiAgICB9O1xuXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ292ZXJzZWVyc0dyb3VwcyddID0ge1xuICAgICAgbGlzdDogcmVzPy51c2VyR3JvdXBJZHM/LmNjRW1haWxHcm91cElkc1xuICAgICAgICA/IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLk9yZ0dyb3VwLFxuICAgICAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5jY0VtYWlsR3JvdXBJZHMsXG4gICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICApXG4gICAgICAgIDogW10sXG4gICAgICBub3RpZnlMaXN0OiByZXM/LnVzZXJHcm91cElkcz8uZmFpbHVyZUNDRW1haWxHcm91cElkc1xuICAgICAgICA/IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLk9yZ0dyb3VwLFxuICAgICAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5mYWlsdXJlQ0NFbWFpbEdyb3VwSWRzLFxuICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgKVxuICAgICAgICA6IFtdLFxuICAgIH07XG4gIH1cblxuICBwb3B1bGF0ZVJldmlld2VyRGF0YShyZXM6IGFueSkge1xuICAgIGNvbnN0IHJldmlld2VyRGV0YWlscyA9IE9iamVjdC5rZXlzKHJlcz8ucmV2aWV3ZXJfYXJyKTtcbiAgICB0aGlzLmhhc1Jldmlld2VyID0gcmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGdyb3VwUmV2aWV3ZXJEZXRhaWxzID0gcmVzPy51c2VyR3JvdXBJZHM/LnJldmlld2VyR3JvdXBJZHM/Lmxlbmd0aFxuICAgICAgPyBPYmplY3QuYXNzaWduKHJlcz8udXNlckdyb3VwSWRzPy5yZXZpZXdlckdyb3VwSWRzKVxuICAgICAgOiBbXTtcbiAgICBsZXQgcmV2aWV3ZXJfdXNlcnM6IGFueVtdID0gW107XG4gICAgcmV2aWV3ZXJfdXNlcnMgPVxuICAgICAgcmVzPy5yZXZpZXdlcl9hcnI/LmxldmVsMT8ucmV2aWV3ZXJzPy5sZW5ndGggPiAwICYmXG4gICAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5yZXZpZXdlckdyb3VwSWRzPy5sZW5ndGggPiAwXG4gICAgICAgID8gcmVzPy5yZXZpZXdlcl9hcnI/LmxldmVsMT8ucmV2aWV3ZXJzLmZpbHRlcigobWVtYmVySWQ6IGFueSkgPT5cbiAgICAgICAgICByZXM/LmV4aXN0aW5nVXNlcklkcz8ucmV2aWV3ZXJJZHM/LmluY2x1ZGVzKG1lbWJlcklkPy5tZW1iZXJfaWQpXG4gICAgICAgIClcbiAgICAgICAgOiByZXM/LnJldmlld2VyX2Fycj8ubGV2ZWwxPy5yZXZpZXdlcnM7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ3Jldmlld2VycyddID0ge1xuICAgICAgc2VxdWVudGlhbFdvcmtmbG93OlxuICAgICAgICByZXM/LnJldmlld2VyX2Fycj8ubGV2ZWwxPy50eXBlID09ICdTRVFVRU5USUFMJyA/IHRydWUgOiBmYWxzZSxcbiAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xuICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6XG4gICAgICAgICAgcmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwID8gcmVzPy5yZXZpZXdfYWZ0ZXJfZGF5cyA6IDIsXG4gICAgICAgIHJldmlld05PdENvbXBsZXRlZERheXM6XG4gICAgICAgICAgcmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwID8gcmVzPy5yZXZpZXdfZmFpbGVkX2FmdGVyX2RheXMgOiAyLFxuICAgICAgfSxcbiAgICAgIGFjY2VwdGVkRGF0YTogcmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwID8gcmV2aWV3ZXJfdXNlcnMgOiBbXSxcbiAgICAgIGxpc3Q6XG4gICAgICAgIHJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGhpcy5zZXRSZXZpZXdlclBheWxvYWQoXG4gICAgICAgICAgICByZXZpZXdlcl91c2VycyxcbiAgICAgICAgICAgICdvYmplY3QnLFxuICAgICAgICAgICAgcmVzPy5yZXZpZXdlcl9hcnI/LmxldmVsMT8udHlwZVxuICAgICAgICAgIClcbiAgICAgICAgICA6IFtdLFxuICAgIH07XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ2dyb3VwUmV2aWV3ZXJzJ10gPSB7XG4gICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6XG4gICAgICAgIHJlcz8ucmV2aWV3ZXJfYXJyPy5sZXZlbDE/LnR5cGUgPT0gJ1NFUVVFTlRJQUwnID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgcmV2aWV3RnJlcXVlbmN5OiB7XG4gICAgICAgIHJldmlld0NvbXBsZXRlRGF5czpcbiAgICAgICAgICByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDAgPyByZXM/LnJldmlld19hZnRlcl9kYXlzIDogMixcbiAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czpcbiAgICAgICAgICByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDAgPyByZXM/LnJldmlld19mYWlsZWRfYWZ0ZXJfZGF5cyA6IDIsXG4gICAgICB9LFxuICAgICAgbGlzdDpcbiAgICAgICAgZ3JvdXBSZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRoaXMuc2V0TGlzdCh0aGlzLk9yZ0dyb3VwLCBncm91cFJldmlld2VyRGV0YWlscywgJ2dyb3VwX2lkJylcbiAgICAgICAgICA6IFtdLFxuICAgIH07XG4gIH1cblxuICBwb3B1bGF0ZUFzc2lnbmVlRGF0YShyZXM6IGFueSkge1xuICAgIGxldCBBc3NpZ25lZUFueVVzZXJMaXN0OiBudW1iZXJbXSA9IFtdO1xuICAgIGxldCBBc3NpZ25lZUFsbFVzZXJMaXN0OiBudW1iZXJbXSA9IFtdO1xuICAgIGxldCBhc3NpZ25lZUFueU9uZUxpc3QgPVxuICAgICAgcmVzPy5hc3NpZ25lZF90b19tZW1iZXJfaWQgJiYgdGhpcy5pc0VudHJ1c3RcbiAgICAgICAgPyByZXM/LmFzc2lnbmVkX3RvX21lbWJlcl9pZFxuICAgICAgICA6IFtdO1xuICAgIEFzc2lnbmVlQW55VXNlckxpc3QgPVxuICAgICAgcmVzPy5hc3NpZ25lZF90b19tZW1iZXJfaWQ/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmFzc2lnbmVlQW55b25lR3JvdXBJZHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyBhc3NpZ25lZUFueU9uZUxpc3QuZmlsdGVyKChlbXBsb3llZUlkczogbnVtYmVyKSA9PlxuICAgICAgICAgIHJlcz8uZXhpc3RpbmdVc2VySWRzPy5hc3NpZ25lZUFueW9uZUlkcz8uaW5jbHVkZXMoZW1wbG95ZWVJZHMpXG4gICAgICAgIClcbiAgICAgICAgOiBbLi4uYXNzaWduZWVBbnlPbmVMaXN0XTtcblxuICAgIEFzc2lnbmVlQWxsVXNlckxpc3QgPVxuICAgICAgcmVzPy5hc3NpZ25lZV9tZW1iZXJfaWQgJiYgIXRoaXMuaXNFbnRydXN0ID8gcmVzPy5hc3NpZ25lZV9tZW1iZXJfaWQgOiBbXTtcbiAgICBjb25zdCBhc3NpZ25lZFRvVXNlckRldGFpbHMgPSB0aGlzLnNldExpc3QoXG4gICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXG4gICAgICBbTnVtYmVyKHJlcz8uYXNzaWduZWVfbWVtYmVyX2lkKV0sXG4gICAgICAnZW1wbG95ZWVfaWQnXG4gICAgKTtcbiAgICBpZiAoYXNzaWduZWRUb1VzZXJEZXRhaWxzPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG1lbWJlcl9pZCA9IGFzc2lnbmVkVG9Vc2VyRGV0YWlsc1swXT8ubXlfbWVtYmVyX2lkO1xuICAgICAgaWYgKHJlcz8uZXhpc3RpbmdVc2VySWRzPy5hc3NpZ25lZUFsbElkcz8uaW5jbHVkZXMobWVtYmVyX2lkKSkge1xuICAgICAgICBBc3NpZ25lZUFsbFVzZXJMaXN0ID0gcmVzPy5hc3NpZ25lZV9tZW1iZXJfaWQ7XG4gICAgICAgIHJlcy51c2VyR3JvdXBJZHNbJ2Fzc2lnbmVlQWxsR3JvdXBJZHMnXSA9IFtdO1xuICAgICAgfSBlbHNlIGlmIChyZXM/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbGxHcm91cElkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBBc3NpZ25lZUFsbFVzZXJMaXN0ID0gW107XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtWydhc3NpZ25lZXMnXSA9IHtcbiAgICAgIHdob0NhbkNvbXBsZXRlOiByZXMuaXNHcm91cEFzc2lnblRvID8gJ0FOWV9PTkUnIDogJ0FMTCcsXG4gICAgICBsaXN0OlxuICAgICAgICByZXM/LmFzc2lnbmVkX3RvX21lbWJlcl9pZD8ubGVuZ3RoID09IDBcbiAgICAgICAgICA/IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcbiAgICAgICAgICAgIFtOdW1iZXIoQXNzaWduZWVBbGxVc2VyTGlzdCldLFxuICAgICAgICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICAgICAgIClcbiAgICAgICAgICA6IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcbiAgICAgICAgICAgIEFzc2lnbmVlQW55VXNlckxpc3QsXG4gICAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xuICAgICAgICAgICksXG4gICAgfTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsnYXNzaWduZWVHcm91cHMnXSA9IHtcbiAgICAgIHdob0NhbkNvbXBsZXRlOiByZXM/LmlzR3JvdXBBc3NpZ25UbyA/ICdBTllfT05FJyA6ICdBTEwnLFxuICAgICAgbGlzdDpcbiAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmFzc2lnbmVlQW55b25lR3JvdXBJZHM/Lmxlbmd0aCA9PSAwXG4gICAgICAgICAgPyByZXM/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbGxHcm91cElkcz8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICAgIHRoaXMuT3JnR3JvdXAsXG4gICAgICAgICAgICAgIHJlcz8udXNlckdyb3VwSWRzPy5hc3NpZ25lZUFsbEdyb3VwSWRzLFxuICAgICAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgICAgICApXG4gICAgICAgICAgICA6IFtdXG4gICAgICAgICAgOiB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLk9yZ0dyb3VwLFxuICAgICAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmFzc2lnbmVlQW55b25lR3JvdXBJZHMsXG4gICAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgICAgKSxcbiAgICB9O1xuICAgIHRoaXMuYWxsR3JvdXBBc3NpZ25lZSA9XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICF0aGlzLmlzRW50cnVzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiB0aGlzIGZ1bmN0aW9uIGlzIGZvciBnZXR0aW5nIHRoZSB1c2VycyBkYXRhIGJhc2VkIG9uIG1lbWJlcl9pZCBvZiB1c2VycyBvZiBzZWxlY3RlZCBVc2VyIEdyb3VwXG4gICAqIEBwYXJhbSB1c2VybGlzdCBjb250YWlucyB1c2VycyBkYXRhXG4gICAqIEBwYXJhbSBzZWxlY3RlZGdyb3VwcyBjb250YWlucyBzZWxlY3RlZCBVc2VyIEdyb3VwIGRhdGFcbiAgICogQHJldHVybnMgdXNlciBkYXRhIG9mIFNlbGVjdGVkIHVzZXIgZ3JvdXAuXG4gICAqL1xuICBnZXRHcm91cHNVc2VyRW1wbG95ZWVzSWQodXNlckxpc3Q6IGFueSwgc2VsZWN0ZWRHcm91cHM6IGFueSkge1xuICAgIGxldCBncm91cE1lbWJlcklkczogYW55ID0gW107XG4gICAgbGV0IGdyb3VwVXNlckVtcGxveWVlOiBhbnkgPSBbXTtcbiAgICBzZWxlY3RlZEdyb3Vwcz8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xuICAgICAgZ3JvdXBNZW1iZXJJZHMgPSBbLi4ubmV3IFNldChbLi4uZ3JvdXBNZW1iZXJJZHMsIC4uLmdyb3VwPy5tZW1iZXJfaWRzXSldO1xuICAgIH0pO1xuICAgIHVzZXJMaXN0Py5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgaWYgKGdyb3VwTWVtYmVySWRzPy5pbmNsdWRlcyhlbGU/Lm15X21lbWJlcl9pZCkpIHtcbiAgICAgICAgZ3JvdXBVc2VyRW1wbG95ZWUucHVzaChlbGUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBncm91cFVzZXJFbXBsb3llZTtcbiAgfVxuXG4gIHNldFJldmlld2VyUGF5bG9hZChcbiAgICBpZHM6IGFueVtdLFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICBhY2NlcHRlZERhdGE/OiBBcnJheTxhbnk+LFxuICAgIHJldmlld2VyVHlwZT86IHN0cmluZ1xuICApIHtcbiAgICBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IGlkT2JqQXJyYXkgPSB0aGlzLnJldHVybklkcyhpZHMsICd1aWQnKTtcbiAgICAgIHJldHVybiB0aGlzLnNldExpc3QodGhpcy5hbGxVc2Vyc0xpc3QsIGlkT2JqQXJyYXksICd1aWQnKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdsaXN0Jykge1xuICAgICAgY29uc3QgcGF5TG9hZDogYW55ID0gW107XG4gICAgICBjb25zdCBpZHNMaXN0ID0gdGhpcy5yZXR1cm5JZHMoaWRzLCAndWlkJyk7XG4gICAgICBpZHNMaXN0LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICBsZXQgaW5kZXggPSAtMTtcbiAgICAgICAgaWYgKChhY2NlcHRlZERhdGEgPz8gW10pPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaW5kZXggPVxuICAgICAgICAgICAgYWNjZXB0ZWREYXRhPy5maW5kSW5kZXgoKGVsZSkgPT4gZWxlLm1lbWJlcl9pZCA9PT0gZWxlbWVudCkgPz8gLTE7XG4gICAgICAgIH1cbiAgICAgIFxuICAgICAgICBwYXlMb2FkLnB1c2goeyBtZW1iZXJfaWQ6IGVsZW1lbnQgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBwYXlMb2FkO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrV2hldGhlckFsbExpc3RzTG9hZGVkKCkge1xuICAgIGNvbnN0IGVkaXRMb2FkZXIgPVxuICAgICAgdGhpcy5tb2RlID09PSAnRURJVCdcbiAgICAgICAgPyB0aGlzLnJjTGlzdExvYWRlZCAmJlxuICAgICAgICB0aGlzLmdyb3Vwc0xpc3RMb2FkZWQgJiZcbiAgICAgICAgdGhpcy5hc3NpZ25vcnNMaXN0TG9hZGVkICYmXG4gICAgICAgIHRoaXMuYXNzdXJhbmNlQ2F0ZWdvcnlMaXN0TG9hZGVkXG4gICAgICAgIDogdHJ1ZTtcbiAgICBpZiAodGhpcy5jYXRlZ29yaWVzTGlzdExvYWRlZCAmJiB0aGlzLmFzc2lnbmVlc0xpc3RMb2FkZWQgJiYgZWRpdExvYWRlcikge1xuICAgICAgaWYgKHRoaXMuZnJhbWV3b3JrRGV0YWlscz8ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmFzc2lnbkZyb21GcmFtZXdvcmsodGhpcy5mcmFtZXdvcmtEZXRhaWxzWzBdKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZ2V0RWRpdFJlc3BvbnNpYmlsaXR5RGV0YWlscyh0aGlzLnJlc3BvbnNpYmlsaXR5SWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFByb2dyYW0pIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtLnB1c2godGhpcy5zZWxlY3RlZFByb2dyYW0pO1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1fc2VsZWN0ZWRfaWRzLnB1c2goXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbS5jYXRlZ29yeV9pZFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnlfaWQgPVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LmNhdGVnb3J5X2lkPy50b1N0cmluZygpO1xuICAgICAgICAgIGlmICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbikge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID1cbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LmRlZmF1bHRfYXNzaWduZWVfdHlwZSA9PSAnQU5ZT05FJ1xuICAgICAgICAgICAgICAgID8gJ0FOWV9PTkUnXG4gICAgICAgICAgICAgICAgOiAnQUxMJztcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3cgPVxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uZGVmYXVsdF9yZXZpZXdlcnNfdHlwZSA9PSAnU0VRVUVOVElBTCdcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZXZpZGVuY2VSZXF1aXJlZCA9IHRoaXNcbiAgICAgICAgICAgICAgLnNlbGVjdGVkUHJvZ3JhbT8uZXZpZGVuY2VfdXBsb2FkX2ZsYWdcbiAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHByb2dyYW1DdXN0b21UYWdzID0gdGhpcy5zZWxlY3RlZFByb2dyYW0/LmN1c3RvbV90YWdzXG4gICAgICAgICAgICA/IEpTT04ucGFyc2UodGhpcy5zZWxlY3RlZFByb2dyYW0uY3VzdG9tX3RhZ3MpXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICAgIHByb2dyYW1DdXN0b21UYWdzLmZvckVhY2goKHRhZzogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YWdEYXRhID0gSlNPTi5wYXJzZSh0YWcpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgKHRhZ0VsZW1lbnQ6IGFueSkgPT4gdGFnRWxlbWVudC50YWdfbmFtZSA9PSB0YWdEYXRhLnRhZ19uYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MucHVzaCh0YWdEYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBjaGVja2VkTW9yZU9wdGlvbnMgPSBbXTtcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLlBST0dSQU0gPSB0cnVlO1xuICAgICAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdQUk9HUkFNJyk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LmV2aWRlbmNlX3VwbG9hZF9mbGFnICYmXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvblxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0ZPUk1BVEVfRVZJREVOQ0UnKTtcbiAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuRk9STUFURV9FVklERU5DRSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZmlsdGVyTGlzdHNBY2NvcmRpbmdUb1Byb2dyYW0odGhpcy5zZWxlY3RlZFByb2dyYW0/Ll9pZCk7XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGNoZWNrZWRNb3JlT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcbiAgICAgIH0sIDMwMCk7XG4gICAgfVxuICB9XG5cbiAgc2F2ZVNlbGVjdGVkTGlzdCh0eXBlOiBzdHJpbmcsIHNlbGVjdGVkSXRlbXM6IGFueSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXNzaWdub3JzJzpcbiAgICAgICAgaWYgKHRoaXMuaW52YWxpZFR5cGUgPT09ICd3aG9tJykge1xuICAgICAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMubGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLmFzc2lnbm9yc0xpc3QsXG4gICAgICAgICAgW3NlbGVjdGVkSXRlbXMubWVtYmVyX2lkXSxcbiAgICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgICApO1xuICAgICAgICAvLyB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XG4gICAgICAgIGlmICh0aGlzLmludmFsaWRUeXBlID09PSAnd2hvJykge1xuICAgICAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgIXRoaXMuaXNFbnRydXN0ICYmXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlICE9PSAnQU5ZX09ORSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXG4gICAgICAgICAgICBbc2VsZWN0ZWRJdGVtcy5lbXBsb3llZV9pZF0sXG4gICAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgICAgdGhpcy5zYXZlR3JvdXBBc3NpZ25lZURhdGEoc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmMnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYyA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QsXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAnaXRlbV9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yY1NlbGVjdGVkLmVtaXQodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmM/Lmxlbmd0aCA+IDApO1xuICAgICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmM/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlcXVpcmVzQXVkaXRMaXN0ID0gW107XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ2F1ZGl0X2NhdGVnb3J5X2RldGFpbHMnXVsnY2F0ZWdvcnlfaWQnXSA9IDA7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ1RhYkNvdW50KHsgcmNfaWRzOiAnJyB9KTtcbiAgICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoeyByY19pZHM6ICcnLCB0eXBlOiB0aGlzLnNlbGVjdGVkR1JDVGFiIH0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2F0ZWdvcnknOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeSA9IHNlbGVjdGVkSXRlbXM7XG4gICAgICAgIHNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFnID1cbiAgICAgICAgICAgIGVsZW1lbnQuY3VzdG9tX3RhZ3MgIT09ICcnICYmXG4gICAgICAgICAgICAgIGVsZW1lbnQuY3VzdG9tX3RhZ3MgIT09ICdudWxsJyAmJlxuICAgICAgICAgICAgICBlbGVtZW50LmN1c3RvbV90YWdzICE9ICdbXSdcbiAgICAgICAgICAgICAgPyBKU09OLnBhcnNlKGVsZW1lbnQuY3VzdG9tX3RhZ3MpXG4gICAgICAgICAgICAgIDogW107XG4gICAgICAgICAgaWYgKHRhZz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGFnLmZvckVhY2goKHRhZ0RhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnX25hbWUgPT0gdGFnRGF0YS50YWdfbmFtZVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLnB1c2godGFnRGF0YSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncHJvZ3JhbSc6XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmxpbmtlZFByb2dyYW0gPSBzZWxlY3RlZEl0ZW1zPy5saW5rZWRQcm9ncmFtO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0gJiZcbiAgICAgICAgICAhKFxuICAgICAgICAgICAgKHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5wcm9ncmFtVHlwZSA9PT0gMCAmJlxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ubmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3VuY2F0ZWdvcml6ZWQnKSB8fFxuICAgICAgICAgICAgIXRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXG4gICAgICAgICAgKSAmJlxuICAgICAgICAgICF0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfZGVwcmVjYXRlX3ByaW1hcnlfcHJvZ3JhbV9mbGFnJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnkgPSBzZWxlY3RlZEl0ZW1zLmNhdGVnb3JpZXNcbiAgICAgICAgICAgID8gc2VsZWN0ZWRJdGVtcy5jYXRlZ29yaWVzXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICAgIGxldCBjYXRlZ29yeUlkID0gc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcmllcz8udG9TdHJpbmcoKTtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcmllcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkICsgJywnICsgY2F0ZWdvcnlJZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnlfaWQgPVxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jYXRlZ29yeV9pZD8udG9TdHJpbmcoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbV9zZWxlY3RlZF9pZHMgPSBbXG4gICAgICAgICAgICAuLi5uZXcgU2V0KHNlbGVjdGVkSXRlbXM/LmNhdGVnb3JpZXMpLFxuICAgICAgICAgICAgLi4ubmV3IFNldChbc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRdKSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnN0IHByb2dyYW1DdXN0b21UYWdzID0gc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY3VzdG9tX3RhZ3NcbiAgICAgICAgICAgID8gSlNPTi5wYXJzZShzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jdXN0b21fdGFncylcbiAgICAgICAgICAgIDogW107XG4gICAgICAgICAgcHJvZ3JhbUN1c3RvbVRhZ3M/LmZvckVhY2goKHRhZzogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YWdEYXRhID0gdHlwZW9mIHRhZyA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKHRhZykgOiB0YWc7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxuICAgICAgICAgICAgICAodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ19uYW1lID09IHRhZ0RhdGEudGFnX25hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5wdXNoKHRhZ0RhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzZXNzbWVudCkge1xuICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2Vzc21lbnQpPy5sZW5ndGhcbiAgICAgICAgICAgICAgPyB0aGlzLmdldFByb2dyYW1EZXRhaWxzKHNlbGVjdGVkSXRlbXM/LnByb2dyYW0uX2lkKVxuICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5ID0gc2VsZWN0ZWRJdGVtcy5jYXRlZ29yaWVzXG4gICAgICAgICAgICA/IHNlbGVjdGVkSXRlbXMuY2F0ZWdvcmllc1xuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtID0gW107XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnlfaWQgPSAnJztcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtX3NlbGVjdGVkX2lkcyA9IFtdO1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MgPSBbXTtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtID0gc2VsZWN0ZWRJdGVtcy5wcm9ncmFtXG4gICAgICAgICAgICA/IFtzZWxlY3RlZEl0ZW1zLnByb2dyYW1dXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICAgIGxldCBjYXRlZ29yeUlkID0gc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcmllcz8udG9TdHJpbmcoKTtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcmllcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkICsgJywnICsgY2F0ZWdvcnlJZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnlfaWQgPVxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jYXRlZ29yeV9pZD8udG9TdHJpbmcoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbV9zZWxlY3RlZF9pZHMgPSBbXG4gICAgICAgICAgICAuLi5uZXcgU2V0KHNlbGVjdGVkSXRlbXM/LmNhdGVnb3JpZXMpLFxuICAgICAgICAgICAgLi4ubmV3IFNldChbc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWRdKSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnN0IHByb2dyYW1DdXN0b21UYWdzID0gc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY3VzdG9tX3RhZ3NcbiAgICAgICAgICAgID8gSlNPTi5wYXJzZShzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jdXN0b21fdGFncylcbiAgICAgICAgICAgIDogW107XG4gICAgICAgICAgcHJvZ3JhbUN1c3RvbVRhZ3M/LmZvckVhY2goKHRhZzogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YWdEYXRhID0gdHlwZW9mIHRhZyA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKHRhZykgOiB0YWc7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxuICAgICAgICAgICAgICAodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ19uYW1lID09IHRhZ0RhdGEudGFnX25hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5wdXNoKHRhZ0RhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbikge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID1cbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uZGVmYXVsdF9hc3NpZ25lZV90eXBlID09ICdBTllPTkUnXG4gICAgICAgICAgICAgICAgPyAnQU5ZX09ORSdcbiAgICAgICAgICAgICAgICA6ICdBTEwnO1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvdyA9XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmRlZmF1bHRfcmV2aWV3ZXJzX3R5cGUgPT0gJ1NFUVVFTlRJQUwnXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWQgPVxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5ldmlkZW5jZV91cGxvYWRfZmxhZyA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5ldmlkZW5jZV91cGxvYWRfZmxhZykge1xuICAgICAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLkZPUk1BVEVfRVZJREVOQ0UgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5wcm9ncmFtVHlwZSA9PT0gMCAmJlxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ubmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3VuY2F0ZWdvcml6ZWQnXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/Ll9pZCAmJlxuICAgICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvblxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVyTGlzdHNBY2NvcmRpbmdUb1Byb2dyYW0oc2VsZWN0ZWRJdGVtcy5wcm9ncmFtLl9pZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmZpbHRlckxpc3RzQWNjb3JkaW5nVG9Qcm9ncmFtKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXZpZXdlcic6XG4gICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgIHRoaXMuc2F2ZUdyb3VwUmV2aWV3ZXJEYXRhKHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5yZXZpZXdlcnNMaXN0LFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdmVyc2Vlcic6XG4gICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgIHRoaXMuc2F2ZU92ZXJzZWVyRGF0YShzZWxlY3RlZEl0ZW1zLCAnb3ZlcnNlZXJMaXN0Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLmFsbFVzZXJzTGlzdCxcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3ZlcnNlZXJOb3RpZnknOlxuICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgICAgICB0aGlzLnNhdmVPdmVyc2VlckRhdGEoc2VsZWN0ZWRJdGVtcywgJ292ZXJzZWVyTm90aWZ5TGlzdCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5hbGxVc2Vyc0xpc3QsXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc3VyYW5jZSc6XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc3VyYW5jZUxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5hc3N1cmFuY2VDYXRlZ29yaWVzTGlzdCxcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICdjYXRlZ29yeV9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXF1aXJlc19hdWRpdCc6XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlcXVpcmVzQXVkaXRMaXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMuYXNzdXJhbmNlUmVxdWlyZXNBdWRpdExpc3QsXG4gICAgICAgICAgW3NlbGVjdGVkSXRlbXM/LmNhdGVnb3J5X2lkXSxcbiAgICAgICAgICAnY2F0ZWdvcnlfaWQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtWydhdWRpdF9jYXRlZ29yeV9kZXRhaWxzJ11bJ2NhdGVnb3J5X2lkJ10gPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmNhdGVnb3J5X2lkO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NoZWNrcG9pbnRzJzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHMgPSBzZWxlY3RlZEl0ZW1zPy5jaGVja3BvaW50RGV0YWlscztcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludEluc3RydWN0aW9uID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5jaGVja3BvaW50SW5zdHJ1Y3Rpb247XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2FsY3VsYXRlZHJpc2snOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yaXNrQ2xhc3MgPSBzZWxlY3RlZEl0ZW1zPy5yaXNrQ2xhc3M7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJpc2tNYXRyaXggPSBzZWxlY3RlZEl0ZW1zPy5yaXNrTWF0cml4O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Zvcm1hdGVfZXZpZGVuY2UnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRSZXF1aXJlZCA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uaXNGb3JtYXRlVXBsb2FkZWQgPz8gZmFsc2U7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdEZpbGVzID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5maWxlcyA/PyBbXTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0TGlua3MgPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmxpbmtzID8/IFtdO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5ldmlkZW5jZVJlcXVpcmVkID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5pc0V2aWRlbmNlUmVxdWlyZWQgPz8gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmV2aWV3RnJlcXVlbmN5JzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeSA9IHtcbiAgICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6IHNlbGVjdGVkSXRlbXMuY29tcGxldGVEYXlzLFxuICAgICAgICAgIHJldmlld05PdENvbXBsZXRlZERheXM6IHNlbGVjdGVkSXRlbXMubm90Q29tcGxldGVkLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0dSQ19PQkpFQ1RTJzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzID0gc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgdGhpcy5zZXRPdGhlckdSQ1R5cGVzRm9ybWF0ZSgpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgcHJvZ3JhbSBpcyBzZWxlY3RlZCBhbmQgdGhlIHVzZXIgaGFzIGZ1bGwgcGVybWlzc2lvbiwgcmVmcmVzaCB0aGUgbGlzdHMgd2hpbGUgdGhlIHByb2dyYW1cbiAgICogaXMgc2VsZWN0ZWQuIE90aGVyd2lzZSwgcmVmcmVzaCBhbGwgbGlzdHMuXG4gICAqIDwvY29kZT5cbiAgICovXG4gIGNhbGxSZWZyZXNoTGlzdCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtPy5sZW5ndGggJiZcbiAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXG4gICAgKSB7XG4gICAgICB0aGlzLnJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlKHR5cGU6IGFueSwgZXZlbnQ/OiBhbnkpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ3JjJzpcbiAgICAgICAgY29uc3QgcmNJbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjLmZpbmRJbmRleChcbiAgICAgICAgICAocmM6IGFueSkgPT4gcmMucmNfaWQgPT0gZXZlbnQucmNfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMuc3BsaWNlKHJjSW5kZXgsIDEpO1xuICAgICAgICB0aGlzLnJjU2VsZWN0ZWQuZW1pdCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYz8ubGVuZ3RoID4gMCk7XG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYz8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVxdWlyZXNBdWRpdExpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsnYXVkaXRfY2F0ZWdvcnlfZGV0YWlscyddWydjYXRlZ29yeV9pZCddID0gMDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoeyByY19pZHM6ICcnIH0pO1xuICAgICAgICB0aGlzLmdldE90aGVyR1JDT2JqZWN0cyh7IHJjX2lkczogJycsIHR5cGU6IHRoaXMuc2VsZWN0ZWRHUkNUYWIgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXNzaWdub3JzJzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3QgPSBbXTtcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3NpZ25lZXMnOlxuICAgICAgICBjb25zdCBlbnRydXN0SW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0LmZpbmRJbmRleChcbiAgICAgICAgICAob3duZXI6IGFueSkgPT4gb3duZXIuZW1wbG95ZWVfaWQgPT0gZXZlbnQuZW1wbG95ZWVfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3Quc3BsaWNlKGVudHJ1c3RJbmRleCwgMSk7XG4gICAgICAgIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdncm91cGFzc2lnbmVlcyc6XG4gICAgICAgIGNvbnN0IGdyb3VwSW5kZXggPVxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT4gZ3JvdXAuZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0LnNwbGljZShncm91cEluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmV2aWV3ZXInOlxuICAgICAgICBjb25zdCByZXZpZXdlckluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QuZmluZEluZGV4KFxuICAgICAgICAgIChyZXZpZXdlcjogYW55KSA9PiByZXZpZXdlci5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdC5zcGxpY2UocmV2aWV3ZXJJbmRleCwgMSk7XG4gICAgICAgIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdncm91cFJldmlld2VyJzpcbiAgICAgICAgY29uc3QgZ3JvdXBSZXZpZXdlckluZGV4ID1cbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3QuZmluZEluZGV4KFxuICAgICAgICAgICAgKHJldmlld2VyOiBhbnkpID0+IHJldmlld2VyLmdyb3VwX2lkID09IGV2ZW50Lmdyb3VwX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZ3JvdXBSZXZpZXdlcnMubGlzdC5zcGxpY2UoXG4gICAgICAgICAgZ3JvdXBSZXZpZXdlckluZGV4LFxuICAgICAgICAgIDFcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdmVyc2Vlcic6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVySW5kZXggPVxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3QuZmluZEluZGV4KFxuICAgICAgICAgICAgKG92ZXJzZWVyOiBhbnkpID0+IG92ZXJzZWVyLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3Quc3BsaWNlKG92ZXJzZWVySW5kZXgsIDEpO1xuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3ZlcnNlZXJHcm91cCc6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyR3JvdXBJbmRleCA9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgICAob3ZlcnNlZXI6IGFueSkgPT4gb3ZlcnNlZXIuZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubGlzdC5zcGxpY2UoXG4gICAgICAgICAgb3ZlcnNlZXJHcm91cEluZGV4LFxuICAgICAgICAgIDFcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdmVyc2Vlck5vdGlmeUxpc3QnOlxuICAgICAgICBjb25zdCBvdmVyc2Vlck5vdGlmeUluZGV4ID1cbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0LmZpbmRJbmRleChcbiAgICAgICAgICAgIChvdmVyc2Vlck46IGFueSkgPT4gb3ZlcnNlZXJOLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3Quc3BsaWNlKFxuICAgICAgICAgIG92ZXJzZWVyTm90aWZ5SW5kZXgsXG4gICAgICAgICAgMVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3ZlcnNlZXJHcm91cE5vdGlmeUxpc3QnOlxuICAgICAgICBjb25zdCBvdmVyc2Vlckdyb3VwTm90aWZ5SW5kZXggPVxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3QuZmluZEluZGV4KFxuICAgICAgICAgICAgKG92ZXJzZWVyTjogYW55KSA9PiBvdmVyc2Vlck4uZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubm90aWZ5TGlzdC5zcGxpY2UoXG4gICAgICAgICAgb3ZlcnNlZXJHcm91cE5vdGlmeUluZGV4LFxuICAgICAgICAgIDFcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjYXRlZ29yeSc6XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5SW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeS5maW5kSW5kZXgoXG4gICAgICAgICAgKGNhdGVnb3J5OiBhbnkpID0+IGNhdGVnb3J5LmNhdGVnb3J5X2lkID09IGV2ZW50LmNhdGVnb3J5X2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5LnNwbGljZShjYXRlZ29yeUluZGV4LCAxKTtcbiAgICAgICAgY29uc3QgdGFnID0gSlNPTi5wYXJzZShldmVudC5jdXN0b21fdGFncyk7XG4gICAgICAgIGlmICh0YWc/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0YWcuZm9yRWFjaCgodGFnRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleENUID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnX25hbWUgPT0gdGFnRGF0YS50YWdfbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpbmRleENUICE9IC0xKSB7XG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3Muc3BsaWNlKGluZGV4Q1QsIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFnID0gSlNPTi5wYXJzZShlbGVtZW50LmN1c3RvbV90YWdzKTtcbiAgICAgICAgICAgIGlmICh0YWc/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgdGFnLmZvckVhY2goKHRhZ0RhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ19uYW1lID09IHRhZ0RhdGEudGFnX25hbWVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5wdXNoKHRhZ0RhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwcm9ncmFtJzpcbiAgICAgICAgdGhpcy5jaGVja0RlZmF1bHRQcm9ncmFtT25SZW1vdmUoZXZlbnQpO1xuICAgICAgICAvLyB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeSA9IFtdO1xuICAgICAgICAvLyB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtID0gW107XG5cbiAgICAgICAgLy8gdGhpcy5maWx0ZXJMaXN0c0FjY29yZGluZ1RvUHJvZ3JhbSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JlcXVpcmVzX2F1ZGl0JzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVxdWlyZXNBdWRpdExpc3QgPSBbXTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXVkaXRfY2F0ZWdvcnlfZGV0YWlscyA9IHtcbiAgICAgICAgICBjYXRlZ29yeV9pZDogMCxcbiAgICAgICAgICBzYW1wbGU6IDAsXG4gICAgICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgICAgICBmcmVxdWVuY3lfcGF0dGVybjogJycsXG4gICAgICAgICAgZnJlcXVlbmN5X3RpbWU6ICcnLFxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc3VyYW5jZSc6XG4gICAgICAgIGNvbnN0IGFzc3VyYW5jZUluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzdXJhbmNlTGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgKGFzc3VyYW5jZTogYW55KSA9PiBhc3N1cmFuY2UuY2F0ZWdvcnlfaWQgPT0gYXNzdXJhbmNlLmNhdGVnb3J5X2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc3VyYW5jZUxpc3Quc3BsaWNlKGFzc3VyYW5jZUluZGV4LCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjaGVja3BvaW50JzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHMuc3BsaWNlKGV2ZW50LCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3Nlc3NtZW50JzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudCA9IHtcbiAgICAgICAgICBjYXRlZ29yeV9pZDogJycsXG4gICAgICAgICAgYXNzZXNzbWVudF9pZDogJycsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbmV3LWNoZWNrcG9pbnRzJzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubmV3X2NoZWNrcG9pbnRzID0ge307XG4gICAgICAgIHRoaXMuY2hlY2twb2ludENvdW50ID0gMDtcbiAgICAgICAgdGhpcy5jaGVja3BvaW50Q291bnRVcGRhdGVkLmVtaXQodGhpcy5jaGVja3BvaW50Q291bnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0dSQ19PQkpFQ1RTJzpcbiAgICAgICAgdGhpcy5yZW1vdmVPdGhlckdSQ09iamVjdHMoZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzYXZlR3JvdXBBc3NpZ25lZURhdGEoc2VsZWN0ZWRJdGVtczogYW55KSB7XG4gICAgbGV0IHVzZXJPYmo6IGFueTtcbiAgICB1c2VyT2JqID0gc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID8gc2VsZWN0ZWRJdGVtcyA6IHNlbGVjdGVkSXRlbXM/LnVzZXJzO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0LFxuICAgICAgdXNlck9iaixcbiAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgKTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgdGhpcy5PcmdHcm91cCxcbiAgICAgIHNlbGVjdGVkSXRlbXM/Lmdyb3VwcyxcbiAgICAgICdncm91cF9pZCdcbiAgICApO1xuICB9XG5cbiAgc2F2ZUdyb3VwUmV2aWV3ZXJEYXRhKHNlbGVjdGVkSXRlbXM6IGFueSkge1xuICAgIGxldCB1c2VyT2JqOiBhbnkgPSBbXTtcbiAgICBzZWxlY3RlZEl0ZW1zLnVzZXJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICB1c2VyT2JqLnB1c2goZWxlLmVtcGxveWVlX2lkKTtcbiAgICB9KTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMucmV2aWV3ZXJzTGlzdCxcbiAgICAgIHVzZXJPYmosXG4gICAgICAnZW1wbG95ZWVfaWQnXG4gICAgKTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5ncm91cFJldmlld2VycyA9IHtcbiAgICAgIGxpc3Q6IHNlbGVjdGVkSXRlbXM/Lmdyb3Vwcz8ubGVuZ3RoID4gMCA/IHNlbGVjdGVkSXRlbXM/Lmdyb3VwcyA6IFtdLFxuICAgIH07XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvdyA9XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyBmYWxzZVxuICAgICAgICA6IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3c7XG4gIH1cblxuICBzYXZlT3ZlcnNlZXJEYXRhKHNlbGVjdGVkSXRlbXM6IGFueSwgdHlwZTogYW55KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdvdmVyc2Vlckxpc3QnOlxuICAgICAgICBsZXQgb3ZlcnNlZXJzZWxlY3RlZGxpc3QgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnVzZXJzLFxuICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0LFxuICAgICAgICAgIG92ZXJzZWVyc2VsZWN0ZWRsaXN0LFxuICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzWydsaXN0J10gPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/Lmdyb3Vwcz8ubGVuZ3RoID4gMCA/IHNlbGVjdGVkSXRlbXM/Lmdyb3VwcyA6IFtdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ292ZXJzZWVyTm90aWZ5TGlzdCc6XG4gICAgICAgIGxldCBvdmVyc2VlcnNlbGVjdGVkTm90aWZ5bGlzdCA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMudXNlcnMsXG4gICAgICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLm92ZXJzZWVyc0xpc3QsXG4gICAgICAgICAgb3ZlcnNlZXJzZWxlY3RlZE5vdGlmeWxpc3QsXG4gICAgICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHNbJ25vdGlmeUxpc3QnXSA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzPy5sZW5ndGggPiAwID8gc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzIDogW107XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBlbnRydXN0RnJhbWV3b3JrKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJlc2V0KCk7XG4gICAgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XG5cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eSA9IHtcbiAgICAgIG5hbWU6IGV2ZW50LnJlcG9ydF9uYW1lLFxuICAgICAga2V5UmVzcG9uc2liaWxpdHk6IGV2ZW50LmtleV9jb21wbGlhbmNlID8gdHJ1ZSA6IGZhbHNlLFxuICAgIH07XG4gICAgY29uc3QgbmV3U3RhcnREYXRlID1cbiAgICAgIGV2ZW50LnN0YXJ0X2RhdGUgfHwgZXZlbnQuc3RhcnRfZGF0ZSAhPSBudWxsIHx8IGV2ZW50LnN0YXJ0X2RhdGUgIT09ICcnXG4gICAgICAgID8gbmV3IERhdGUoZXZlbnQuc3RhcnRfZGF0ZSAqIDEwMDApXG4gICAgICAgIDogbmV3IERhdGUoKTtcbiAgICBjb25zdCBwdnRUZW1wbGF0ZSA9XG4gICAgICBldmVudC5mcmVxdWVuY3lfdGVtcGxhdGUgJiYgZXZlbnQuZnJlcXVlbmN5X3RlbXBsYXRlICE9PSAnJ1xuICAgICAgICA/IGV2ZW50LmZyZXF1ZW5jeV90ZW1wbGF0ZVxuICAgICAgICA6IGV2ZW50LmZyZXF1ZW5jeTtcbiAgICBjb25zdCBmcmVxdWVuY3lEZXRhaWxzT2JqZWN0OiBhbnkgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2Uuc2hvcnRIYW5kX2ZyZXFDYWwoXG4gICAgICBwdnRUZW1wbGF0ZSxcbiAgICAgIG5ld1N0YXJ0RGF0ZS5nZXREYXRlKCksXG4gICAgICBuZXdTdGFydERhdGUuZ2V0TW9udGgoKSxcbiAgICAgIG5ld1N0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpXG4gICAgKTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscyA9IGZyZXF1ZW5jeURldGFpbHNPYmplY3Q/LnBhdHRlcm47XG4gICAgZXZlbnQuZnJlcXVlbmN5X2RldGFpbHMgPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscztcbiAgICBldmVudC5mcmVxdWVuY3lfdGltZSA9IERFRkFVTFRfMjRIUjtcbiAgICBldmVudC5yZW1pbmRlcl9iZWZvcmVfZGF5cyA9IGV2ZW50LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZVxuICAgICAgPyBldmVudC5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGVcbiAgICAgIDogMjtcbiAgICBldmVudC5mYWlsZWRfYWZ0ZXJfZGF5cyA9IGV2ZW50Lm1hcmtfZmFpbGVkX2FmdGVyXG4gICAgICA/IGV2ZW50Lm1hcmtfZmFpbGVkX2FmdGVyXG4gICAgICA6IDI7XG4gICAgZXZlbnQubGlmZWN5Y2xlX2RldGFpbHMgPSAnMDAwMC0wMC0wMH5+MCc7XG4gICAgZXZlbnQuc3RhcnRfb2ZfZGF5X3V0YyA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5mcmFtZXdvcmtTdGFydERhdGUoZXZlbnQpO1xuICAgIGV2ZW50Lm9uX2NvbXBsZXRpb25fb2YgPSBbXTtcbiAgICBldmVudC5kb21fdXRjID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgZXZlbnQuY29udGludW91c19mYWlsZWRfZGF5cyA9XG4gICAgICBmcmVxdWVuY3lEZXRhaWxzT2JqZWN0LmNvbnRpbnVvdXNfZmFpbGVkX2RheXM7XG5cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPVxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5X2RldGFpbHM7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5X3RpbWUgPSBERUZBVUxUXzI0SFI7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVtaW5kZXJfYmVmb3JlX2RheXMgPVxuICAgICAgZXZlbnQucmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlID8gZXZlbnQucmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlIDogMjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mYWlsZWRfYWZ0ZXJfZGF5cyA9IGV2ZW50Lm1hcmtfZmFpbGVkX2FmdGVyXG4gICAgICA/IGV2ZW50Lm1hcmtfZmFpbGVkX2FmdGVyXG4gICAgICA6IDI7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubGlmZWN5Y2xlRGV0YWlscyA9ICcwMDAwLTAwLTAwfn4wJztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zdGFydF9vZl9kYXlfdXRjID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlXG4gICAgICAuZnJhbWV3b3JrU3RhcnREYXRlKGV2ZW50KVxuICAgICAgLnRvRml4ZWQoKVxuICAgICAgLnRvU3RyaW5nKCk7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub25fY29tcGxldGlvbl9vZiA9IFtdO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmRvbV91dGMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5kZXNjcmlwdGlvbiA9XG4gICAgICBldmVudC5yZW1hcmtzLnRyaW0oKSAhPSAnJyA/IGV2ZW50LnJlbWFya3MgOiAnJztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzID1cbiAgICAgIGV2ZW50LmN1c3RvbV90YWdzICYmXG4gICAgICAgIGV2ZW50LmN1c3RvbV90YWdzICE9PSBudWxsICYmXG4gICAgICAgIGV2ZW50LmN1c3RvbV90YWdzICE9PSAnbnVsbCcgJiZcbiAgICAgICAgZXZlbnQuY3VzdG9tX3RhZ3MgIT09ICcnXG4gICAgICAgID8gSlNPTi5wYXJzZShldmVudC5jdXN0b21fdGFncylcbiAgICAgICAgOiBbXTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vYmplY3RpdmUgPSBldmVudC5jb250cm9sX29iamVjdGl2ZVxuICAgICAgPyBldmVudC5jb250cm9sX29iamVjdGl2ZVxuICAgICAgOiAnJztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeSA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMuYWxsQ2F0ZWdvcmllcyxcbiAgICAgIFtldmVudC5jYXRlZ29yeV9pZF0sXG4gICAgICAnY2F0ZWdvcnlfaWQnXG4gICAgKTsgLy9cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld0NvbXBsZXRlRGF5cyA9IDI7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeS5yZXZpZXdOT3RDb21wbGV0ZWREYXlzID0gMjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYyA9IHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdC5maW5kKFxuICAgICAgKHJjOiBhbnkpID0+IHJjLnJjX2lkID09PSBldmVudC5lbnRpdHlfaWRcbiAgICApXG4gICAgICA/IFtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LmZpbmQoXG4gICAgICAgICAgKHJjOiBhbnkpID0+IHJjLnJjX2lkID09PSBldmVudC5lbnRpdHlfaWRcbiAgICAgICAgKSxcbiAgICAgIF1cbiAgICAgIDogW107XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmlza0NsYXNzID0gdGhpcy5pc1Jpc2tFbmFibGUgPyAxIDogMjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcml2YXRlX2xpYnJhcnlfaWQgPSBldmVudC5yZXBvcnRfaWQ7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID1cbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeV9kZXRhaWxzO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNsYXNzaWZpY2F0aW9uID0gdGhpcy5pc1Jpc2tFbmFibGUgPyAxIDogMjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jb250aW51b3VzX2ZhaWxlZF9kYXlzID1cbiAgICAgIGZyZXF1ZW5jeURldGFpbHNPYmplY3QuY29udGludW91c19mYWlsZWRfZGF5cztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zdGFydERhdGUgPVxuICAgICAgdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmZyYW1ld29ya1N0YXJ0RGF0ZShldmVudCk7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UgPSB7XG4gICAgICBldmlkZW5jZVJlcXVpcmVkOiBldmVudC5yZXBvcnRfdXBsb2FkX2ZsYWcgPyB0cnVlIDogZmFsc2UsXG4gICAgICBmb3JtYXRGaWxlczogZXZlbnQucmVwb3J0X2Zvcm1hdCxcbiAgICAgIGZvcm1hdExpbmtzOlxuICAgICAgICAhZXZlbnQucmVwb3J0X2Zvcm1hdF9saW5rIHx8IGV2ZW50LnJlcG9ydF9mb3JtYXRfbGluayA9PSAnJ1xuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IFtldmVudC5yZXBvcnRfZm9ybWF0X2xpbmtdLFxuICAgICAgZm9ybWF0UmVxdWlyZWQ6XG4gICAgICAgIGV2ZW50LnJlcG9ydF9mb3JtYXQ/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAoZXZlbnQucmVwb3J0X2Zvcm1hdF9saW5rICYmIGV2ZW50LnJlcG9ydF9mb3JtYXRfbGluayAhPSAnJylcbiAgICAgICAgICA/IHRydWVcbiAgICAgICAgICA6IGZhbHNlLFxuICAgIH07XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXVkaXRfY2F0ZWdvcnlfZGV0YWlscyA9IHtcbiAgICAgIGNhdGVnb3J5X2lkOiAwLFxuICAgICAgc2FtcGxlOiA1LFxuICAgICAgcGVyY2VudGFnZTogMzAsXG4gICAgICBmcmVxdWVuY3lfcGF0dGVybjogJzF+MH4zfjEnLFxuICAgICAgZnJlcXVlbmN5X3RpbWU6IERFRkFVTFRfMjRIUixcbiAgICB9O1xuXG4gICAgZXZlbnQuZnJlcXVlbmN5X3RpbWUgPSBERUZBVUxUX1RJTUU7XG4gICAgaWYgKFxuICAgICAgZXZlbnQuZnJlcXVlbmN5X2RldGFpbHMgIT09ICcnICYmXG4gICAgICBldmVudC5mcmVxdWVuY3lfZGV0YWlscyAhPT0gJzV+MH4wfjAnXG4gICAgKSB7XG4gICAgICB0aGlzLmZyZXF1ZW5jeVBvcHVsYXRpb24oZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPSAnJztcbiAgICB9XG5cbiAgICBldmVudC5mcmVxdWVuY3lfdGltZSA9IERFRkFVTFRfMjRIUjtcbiAgICBldmVudC5wbGFjZWhvbGRlciA9IHRoaXMuZ2V0RnJlcXVlbmN5UGxhY2Vob2xkZXIoZXZlbnQpO1xuICAgIGNvbnN0IGNoZWNrZWRNb3JlT3B0aW9ucyA9IFtdO1xuXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZSAhPT0gJycpIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdPQkpFQ1RJVkUnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuT0JKRUNUSVZFID0gdHJ1ZTtcbiAgICB9XG4gICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1JJU0tfQ0xBU1NJRklDQVRJT04nKTtcbiAgICB0aGlzLm1vcmVPcHRpb25zLlJJU0tfQ0xBU1NJRklDQVRJT04gPSB0cnVlO1xuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeT8ubGVuZ3RoID4gMCkge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0NBVEVHT1JZJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLkNBVEVHT1JZID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZm9ybWF0QW5kRXZpZGVuY2U/LmV2aWRlbmNlUmVxdWlyZWQgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5mb3JtYXRBbmRFdmlkZW5jZT8uZm9ybWF0UmVxdWlyZWRcbiAgICApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdGT1JNQVRFX0VWSURFTkNFJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLkZPUk1BVEVfRVZJREVOQ0UgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoZXZlbnQuZW50aXR5X2lkID4gMCkge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1JDJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLlJDID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoY2hlY2tlZE1vcmVPcHRpb25zKTtcbiAgICAvLyAgZXZlbnQucGxhY2Vob2xkZXJcbiAgfVxuXG4gIGFzc2lnbkZyb21GcmFtZXdvcmsoZnJlcU9iajogYW55KSB7XG4gICAgaWYgKGZyZXFPYmouZGF0YSkge1xuICAgICAgLy8gdGhpcy5yZXNldCgpO1xuICAgICAgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XG4gICAgICBjb25zdCBuZXdTdGFydERhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgICBjb25zdCBmcmVxdWVuY3lEZXRhaWxzT2JqZWN0OiBhbnkgPVxuICAgICAgICB0aGlzLmZyZXF1ZW5jeVNlcnZpY2Uuc2hvcnRIYW5kX2ZyZXFDYWwoXG4gICAgICAgICAgZnJlcU9iai5kYXRhLmZyZXF1ZW5jeSxcbiAgICAgICAgICBuZXdTdGFydERhdGUuZ2V0RGF0ZSgpLFxuICAgICAgICAgIG5ld1N0YXJ0RGF0ZS5nZXRNb250aCgpLFxuICAgICAgICAgIG5ld1N0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpXG4gICAgICAgICk7XG5cbiAgICAgIGxldCBldmVudDogYW55ID0ge307XG4gICAgICBldmVudC5mcmVxdWVuY3lfZGV0YWlscyA9IGZyZXF1ZW5jeURldGFpbHNPYmplY3Q/LnBhdHRlcm47XG4gICAgICBldmVudC5mcmVxdWVuY3lfdGltZSA9IERFRkFVTFRfMjRIUjtcbiAgICAgIGV2ZW50LnJlbWluZGVyX2JlZm9yZV9kYXlzID0gMjtcbiAgICAgIGV2ZW50LmZhaWxlZF9hZnRlcl9kYXlzID0gMjtcbiAgICAgIGV2ZW50LmxpZmVjeWNsZV9kZXRhaWxzID0gJzAwMDAtMDAtMDB+fjAnO1xuICAgICAgZXZlbnQuc3RhcnRfb2ZfZGF5X3V0YyA9IERhdGUubm93KCkgLyAxMDAwO1xuICAgICAgZXZlbnQub25fY29tcGxldGlvbl9vZiA9IFtdO1xuICAgICAgZXZlbnQuZG9tX3V0YyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgZXZlbnQuY29udGludW91c19mYWlsZWRfZGF5cyA9XG4gICAgICAgIGZyZXF1ZW5jeURldGFpbHNPYmplY3QuY29udGludW91c19mYWlsZWRfZGF5cztcbiAgICAgIHRoaXMuZ2V0RnJlcXVlbmN5UGxhY2Vob2xkZXIoZXZlbnQpO1xuICAgICAgZXZlbnQucGxhY2Vob2xkZXIgPSB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyO1xuICAgICAgZXZlbnQuZnJlcXVlbmN5X3RpbWUgPSBERUZBVUxUX1RJTUU7XG4gICAgICB0aGlzLmZyZXF1ZW5jeVBvcHVsYXRpb24oZXZlbnQpO1xuXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lID0gZnJlcU9iai5kYXRhLm5hbWUgPz8gJyc7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vYmplY3RpdmUgPSBmcmVxT2JqLmRhdGEub2JqZWN0aXZlcyA/PyAnJztcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9IGZyZXF1ZW5jeURldGFpbHNPYmplY3Q/LnBhdHRlcm4gPz8gJyc7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zdGFydERhdGUgPSBldmVudC5zdGFydF9vZl9kYXlfdXRjO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVtaW5kZXJfYmVmb3JlX2RheXMgPSBldmVudC5yZW1pbmRlcl9iZWZvcmVfZGF5cztcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPVxuICAgICAgICBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZmFpbGVkX2FmdGVyX2RheXMgPSBldmVudC5mYWlsZWRfYWZ0ZXJfZGF5cztcbiAgICAgIHRoaXMuc2VsZWN0ZWRGcmFtZXdvcmtWYWx1ZXMgPSBmcmVxT2JqLnNlbGVjdGVkRnJhbWV3b3JrRGF0YSA/PyB1bmRlZmluZWQ7XG4gICAgICBpZiAoZnJlcU9iaj8uZGF0YT8uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZGVzY3JpcHRpb24gPSBmcmVxT2JqPy5kYXRhPy5kZXNjcmlwdGlvbjtcbiAgICAgIH1cbiAgICAgIGlmIChmcmVxT2JqPy5kYXRhPy5vYmplY3RpdmVzKSB7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZSA9IGZyZXFPYmouZGF0YS5vYmplY3RpdmVzID8/ICcnO1xuICAgICAgICB0aGlzLm1vcmVPcHRpb25zLk9CSkVDVElWRSA9IHRydWU7XG4gICAgICAgIGxldCBjaGVja2VkTW9yZU9wdGlvbnMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5tb3JlT3B0aW9ucykge1xuICAgICAgICAgIGlmICh0aGlzLm1vcmVPcHRpb25zW2tleV0pIHtcbiAgICAgICAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChjaGVja2VkTW9yZU9wdGlvbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGxpc3QgdXNlcmxpc3QgZm9yIGxpc3RpbmcgdXNlcnNcbiAgICogQHJldHVybnMgYXNzaWduIHVzZXIncyBteV9tZW1iZXJfaWQgIHRvIG1lbWJlcl9pZCBkYXRhXG4gICAqL1xuICBhc3NpZ25Vc2VyTWVtYmVySWQobGlzdDogYW55KSB7XG4gICAgY29uc3QgdXNlck9iaiA9IFsuLi5saXN0XTtcbiAgICB1c2VyT2JqPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIHVzZXIubWVtYmVyX2lkID0gdXNlcj8ubXlfbWVtYmVyX2lkO1xuICAgIH0pO1xuICAgIGxpc3QgPSBbLi4udXNlck9ial07XG4gICAgcmV0dXJuIGxpc3Q7XG4gIH1cblxuICByZWZyZXNoQWxsTGlzdHMoKSB7XG4gICAgbGV0IGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgYWxsVXNlcnNJZHM6IGFueSA9IFtdO1xuICAgIGxldCBhc3NpZ25lZUdyb3VwSWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgcmV2aWV3ZXJzSWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgb3ZlcnNlZXJJZHM6IGFueSA9IFtdO1xuICAgIGxldCBhc3NpZ25lZUlkczogYW55ID0gW107XG4gICAgbGV0IGdyb3VwUmV2aWV3ZXJJZHM6IGFueSA9IFtdO1xuICAgIGxldCBncm91cE92ZXJzZWVySWRzOiBhbnkgPSBbXTtcbiAgICB0aGlzLnJldmlld2VySWRzID0gW107XG4gICAgdGhpcy5hc3NpZ25vcklkID0gW107XG4gICAgdGhpcy5vdmVyc2VlcklkcyA9IFtdO1xuICAgIHRoaXMuYXNzaWduZWVJZHMgPSBbXTtcblxuICAgIGNvbnN0IGFsbFVzZXJzID0gY2xvbmVEZWVwKHRoaXMuYWxsVXNlcnNMaXN0KTtcbiAgICBjb25zdCBhbGxHcm91cHMgPSBjbG9uZURlZXAodGhpcy5PcmdHcm91cCk7XG4gICAgY29uc3QgYmVoYWxmVXNlcnMgPSBjbG9uZURlZXAodGhpcy5iZWhhbGZPZlVzZXJzTGlzdCk7XG5cbiAgICBjb25zdCBhc3NpZ25vcnMgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdCk7XG4gICAgY29uc3QgYXNzaWduZWVzID0gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3QpO1xuXG4gICAgY29uc3QgYXNzaWduZWVHcm91cExpc3QgPSBjbG9uZURlZXAoXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3RcbiAgICApO1xuICAgIGNvbnN0IHJldmlld2VycyA9IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCk7XG4gICAgY29uc3QgZ3JvdXBSZXZpZXdlcnNMaXN0ID0gdGhpcy5mZWF0dXJlRmxhZ19ncm91cHNcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdClcbiAgICAgIDogW107XG4gICAgY29uc3Qgb3ZlcnNlZXJMaXN0ID0gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3QpO1xuICAgIGNvbnN0IGdyb3VwT3ZlcnNlZXJMaXN0ID0gdGhpcy5mZWF0dXJlRmxhZ19ncm91cHNcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3QpXG4gICAgICA6IFtdO1xuICAgIGNvbnN0IG5vdGlmeU92ZXJzZWVycyA9IGNsb25lRGVlcChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RcbiAgICApO1xuICAgIGNvbnN0IGdyb3VwTm90aWZ5T3ZlcnNlZXJzID0gdGhpcy5mZWF0dXJlRmxhZ19ncm91cHNcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3QpXG4gICAgICA6IFtdO1xuICAgIGFzc2lnbm9ycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKHVzZXIubWVtYmVyX2lkKTtcbiAgICAgIHRoaXMuYXNzaWdub3JJZC5wdXNoKHVzZXIubWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBhc3NpZ25lZXM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgICAgYXNzaWduZWVJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgICAgdGhpcy5hc3NpZ25lZUlkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgfSk7XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5saXN0Py5sZW5ndGggPT0gMCkge1xuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMucHVzaCh0aGlzLm1lbWJlcklkKTtcbiAgICAgIHRoaXMuYXNzaWdub3JJZC5wdXNoKHRoaXMubWVtYmVySWQpO1xuICAgIH1cbiAgICBhbGxVc2Vycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICBhbGxVc2Vyc0lkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgfSk7XG4gICAgYXNzaWduZWVHcm91cExpc3Q/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcbiAgICAgIGFzc2lnbmVlR3JvdXBJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xuICAgIH0pO1xuXG4gICAgcmV2aWV3ZXJzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIHJldmlld2Vyc0lkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICB0aGlzLnJldmlld2VySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBncm91cFJldmlld2Vyc0xpc3Q/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcbiAgICAgIGdyb3VwUmV2aWV3ZXJJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xuICAgIH0pO1xuICAgIGdyb3VwT3ZlcnNlZXJMaXN0Py5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XG4gICAgICBncm91cE92ZXJzZWVySWRzLnB1c2goZ3JvdXA/Lmdyb3VwX2lkKTtcbiAgICB9KTtcbiAgICBncm91cE5vdGlmeU92ZXJzZWVycz8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xuICAgICAgZ3JvdXBPdmVyc2Vlcklkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XG4gICAgfSk7XG4gICAgb3ZlcnNlZXJMaXN0Py5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICAgIHRoaXMub3ZlcnNlZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIG5vdGlmeU92ZXJzZWVycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICBvdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICB0aGlzLm92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICB9KTtcblxuICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzID0gWy4uLm5ldyBTZXQoYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMpXTtcbiAgICBhbGxVc2Vyc0lkcyA9IFsuLi5uZXcgU2V0KGFsbFVzZXJzSWRzKV07XG4gICAgYXNzaWduZWVJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25lZUlkcyldO1xuICAgIHJldmlld2Vyc0lkcyA9IFsuLi5uZXcgU2V0KHJldmlld2Vyc0lkcyldO1xuICAgIG92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQob3ZlcnNlZXJJZHMpXTtcbiAgICB0aGlzLmFzc2lnbm9ySWQgPSBbLi4ubmV3IFNldCh0aGlzLmFzc2lnbm9ySWQpXTtcbiAgICB0aGlzLmFzc2lnbmVlSWRzID0gWy4uLm5ldyBTZXQodGhpcy5hc3NpZ25lZUlkcyldO1xuICAgIHRoaXMucmV2aWV3ZXJJZHMgPSBbLi4ubmV3IFNldCh0aGlzLnJldmlld2VySWRzKV07XG4gICAgdGhpcy5vdmVyc2VlcklkcyA9IFsuLi5uZXcgU2V0KHRoaXMub3ZlcnNlZXJJZHMpXTtcblxuICAgIGFzc2lnbmVlR3JvdXBJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25lZUdyb3VwSWRzKV07XG4gICAgZ3JvdXBSZXZpZXdlcklkcyA9IFsuLi5uZXcgU2V0KGdyb3VwUmV2aWV3ZXJJZHMpXTtcbiAgICBncm91cE92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQoZ3JvdXBPdmVyc2VlcklkcyldO1xuICAgIHRoaXMuYXNzaWdub3JzTGlzdCA9IGJlaGFsZlVzZXJzLmZpbHRlcihcbiAgICAgICh1c2VyOiBhbnkpID0+ICFvdmVyc2Vlcklkcz8uaW5jbHVkZXModXNlci5tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmFzc2lnbmVlc0xpc3QgPSBhbGxVc2VycztcbiAgICB0aGlzLnJldmlld2Vyc0xpc3QgPSBhbGxVc2VycztcbiAgICB0aGlzLm92ZXJzZWVyc0xpc3QgPSBhbGxVc2VycztcblxuICAgIHRoaXMuZGlzYWJsZUxpc3QoXG4gICAgICBhbGxVc2VycyxcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLFxuICAgICAgYXNzaWduZWVJZHMsXG4gICAgICByZXZpZXdlcnNJZHMsXG4gICAgICBvdmVyc2Vlcklkc1xuICAgICk7XG4gICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICB0aGlzLmdyb3VwQXNzaWduZWVMaXN0ID0gYWxsR3JvdXBzLmZpbHRlcihcbiAgICAgICAgKGdyb3VwOiBhbnkpID0+XG4gICAgICAgICAgIShcbiAgICAgICAgICAgIGdyb3VwUmV2aWV3ZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZCkgfHxcbiAgICAgICAgICAgIGdyb3VwT3ZlcnNlZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcbiAgICAgICAgICApXG4gICAgICApO1xuICAgICAgdGhpcy5yZXZpZXdlck1lbWJlcklkc0xpc3QgPSB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZCh0aGlzLmFsbFVzZXJzTGlzdCk7XG4gICAgICB0aGlzLm92ZXJzZWVyc0xpc3QgPSB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZCh0aGlzLmFsbFVzZXJzTGlzdCk7XG4gICAgICB0aGlzLmdyb3VwUmV2aWV3ZXJMaXN0ID0gYWxsR3JvdXBzLmZpbHRlcihcbiAgICAgICAgKGdyb3VwOiBhbnkpID0+XG4gICAgICAgICAgIShcbiAgICAgICAgICAgIGdyb3VwT3ZlcnNlZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZCkgfHxcbiAgICAgICAgICAgIGFzc2lnbmVlR3JvdXBJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcbiAgICAgICAgICApXG4gICAgICApO1xuICAgICAgdGhpcy5ncm91cE92ZXJzZWVyTGlzdCA9IGFsbEdyb3Vwcy5maWx0ZXIoXG4gICAgICAgIChncm91cDogYW55KSA9PlxuICAgICAgICAgICEoXG4gICAgICAgICAgICBhc3NpZ25lZUdyb3VwSWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpIHx8XG4gICAgICAgICAgICBncm91cFJldmlld2VySWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpXG4gICAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBkaXNhYmxlTGlzdChcbiAgICBhbGxVc2VyczogYW55LFxuICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzOiBhbnksXG4gICAgYXNzaWduZWVJZHM6IGFueSxcbiAgICByZXZpZXdlcnNJZHM6IGFueSxcbiAgICBvdmVyc2VlcklkczogYW55XG4gICkge1xuICAgIGxldCBkaXNhYmxlQXNzaWduZWVMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgcmV2aWV3ZXJzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVBc3NpZ25lZUlkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgZGlzYWJsZUFzc2lnbmVlTGlzdCxcbiAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVSYWRpb0Fzc2lnbmVlID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICBkaXNhYmxlQXNzaWduZWVMaXN0LFxuICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICk7XG4gICAgbGV0IGRpc2FibGVSZXZpZXdlckxpc3QgPSBhbGxVc2Vycy5maWx0ZXIoXG4gICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICBvdmVyc2Vlcklkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxuICAgICAgICBhc3NpZ25lZUlkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxuICAgICk7XG4gICAgdGhpcy5kaXNhYmxlUmV2aWV3ZXJJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgIGRpc2FibGVSZXZpZXdlckxpc3QsXG4gICAgICAnZW1wbG95ZWVfaWQnXG4gICAgKTtcbiAgICBsZXQgZGlzYWJsZU92ZXJzZWVyTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcbiAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgIHJldmlld2Vyc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxuICAgICk7XG4gICAgdGhpcy5kaXNhYmxlT3ZlcnNlZXJJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgIGRpc2FibGVPdmVyc2Vlckxpc3QsXG4gICAgICAnZW1wbG95ZWVfaWQnXG4gICAgKTtcbiAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgIGxldCBkaXNhYmxlUmV2aWV3ZXJMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxuICAgICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgICAgYXNzaWduZWVJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcbiAgICAgICk7XG4gICAgICB0aGlzLmRpc2FibGVSZXZpZXdlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICBkaXNhYmxlUmV2aWV3ZXJMaXN0LFxuICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgKTtcbiAgICAgIGxldCBkaXNhYmxlT3ZlcnNlZXJzTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcbiAgICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxuICAgICAgICAgIHJldmlld2Vyc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxuICAgICAgKTtcbiAgICAgIHRoaXMuZGlzYWJsZU92ZXJzZWVySWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgIGRpc2FibGVPdmVyc2VlcnNMaXN0LFxuICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZWZyZXNoTGlzdHNXaGlsZVByb2dyYW1TZWxlY3RlZCgpIHtcbiAgICBsZXQgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM6IGFueSA9IFtdO1xuICAgIGxldCByZXZpZXdlcnNJZHM6IGFueSA9IFtdO1xuICAgIGxldCBvdmVyc2VlcklkczogYW55ID0gW107XG4gICAgbGV0IGFzc2lnbmVlSWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgYXNzaWduZWVHcm91cElkczogYW55ID0gW107XG4gICAgbGV0IGdyb3VwUmV2aWV3ZXJJZHM6IGFueSA9IFtdO1xuICAgIGxldCBncm91cE92ZXJzZWVySWRzOiBhbnkgPSBbXTtcbiAgICB0aGlzLnJldmlld2VySWRzID0gW107XG4gICAgdGhpcy5hc3NpZ25vcklkID0gW107XG4gICAgdGhpcy5vdmVyc2VlcklkcyA9IFtdO1xuICAgIHRoaXMuYXNzaWduZWVJZHMgPSBbXTtcbiAgICBjb25zdCBiZWhhbGZVc2VycyA9IGNsb25lRGVlcCh0aGlzLmJlaGFsZk9mVXNlcnNMaXN0KTtcbiAgICBjb25zdCBhbGxHcm91cHMgPSBjbG9uZURlZXAodGhpcy5PcmdHcm91cCk7XG4gICAgY29uc3QgYXNzaWdub3JzID0gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5saXN0KTtcbiAgICBjb25zdCBhc3NpZ25lZXMgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdCk7XG4gICAgY29uc3QgYXNzaWduZWVHcm91cExpc3QgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0KVxuICAgICAgOiBbXTtcbiAgICBjb25zdCByZXZpZXdlcnMgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdCk7XG4gICAgY29uc3QgZ3JvdXBSZXZpZXdlcnNMaXN0ID0gdGhpcy5mZWF0dXJlRmxhZ19ncm91cHNcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdClcbiAgICAgIDogW107XG4gICAgY29uc3Qgb3ZlcnNlZXJMaXN0ID0gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3QpO1xuICAgIGNvbnN0IGdyb3VwT3ZlcnNlZXJMaXN0ID0gdGhpcy5mZWF0dXJlRmxhZ19ncm91cHNcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3QpXG4gICAgICA6IFtdO1xuICAgIGNvbnN0IG5vdGlmeU92ZXJzZWVycyA9IGNsb25lRGVlcChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RcbiAgICApO1xuICAgIGNvbnN0IGdyb3VwTm90aWZ5T3ZlcnNlZXJzID0gdGhpcy5mZWF0dXJlRmxhZ19ncm91cHNcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3QpXG4gICAgICA6IFtdO1xuICAgIGFzc2lnbm9ycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICB0aGlzLmFzc2lnbm9ySWQucHVzaCh1c2VyPy5tZW1iZXJfaWQpO1xuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMucHVzaCh1c2VyPy5tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIGFzc2lnbmVlcz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICBhc3NpZ25lZUlkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICB0aGlzLmFzc2lnbmVlSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8ubGVuZ3RoID09IDApIHtcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLnB1c2godGhpcy5tZW1iZXJJZCk7XG4gICAgICB0aGlzLmFzc2lnbm9ySWQucHVzaCh0aGlzLm1lbWJlcklkKTtcbiAgICB9XG5cbiAgICBhc3NpZ25lZUdyb3VwTGlzdD8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xuICAgICAgYXNzaWduZWVHcm91cElkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XG4gICAgfSk7XG4gICAgcmV2aWV3ZXJzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIHJldmlld2Vyc0lkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICB0aGlzLnJldmlld2VySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBncm91cFJldmlld2Vyc0xpc3Q/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcbiAgICAgIGdyb3VwUmV2aWV3ZXJJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xuICAgIH0pO1xuICAgIG92ZXJzZWVyTGlzdD8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICBvdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICB0aGlzLm92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBub3RpZnlPdmVyc2VlcnM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgb3ZlcnNlZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgICAgdGhpcy5vdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgfSk7XG4gICAgZ3JvdXBPdmVyc2Vlckxpc3Q/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcbiAgICAgIGdyb3VwT3ZlcnNlZXJJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xuICAgIH0pO1xuICAgIGdyb3VwTm90aWZ5T3ZlcnNlZXJzPy5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XG4gICAgICBncm91cE92ZXJzZWVySWRzLnB1c2goZ3JvdXA/Lmdyb3VwX2lkKTtcbiAgICB9KTtcbiAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcyA9IFsuLi5uZXcgU2V0KGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzKV07XG4gICAgYXNzaWduZWVJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25lZUlkcyldO1xuICAgIHJldmlld2Vyc0lkcyA9IFsuLi5uZXcgU2V0KHJldmlld2Vyc0lkcyldO1xuICAgIG92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQob3ZlcnNlZXJJZHMpXTtcbiAgICBhc3NpZ25lZUdyb3VwSWRzID0gWy4uLm5ldyBTZXQoYXNzaWduZWVHcm91cElkcyldO1xuICAgIGdyb3VwUmV2aWV3ZXJJZHMgPSBbLi4ubmV3IFNldChncm91cFJldmlld2VySWRzKV07XG4gICAgZ3JvdXBPdmVyc2VlcklkcyA9IFsuLi5uZXcgU2V0KGdyb3VwT3ZlcnNlZXJJZHMpXTtcbiAgICB0aGlzLmFzc2lnbm9ySWQgPSBbLi4ubmV3IFNldCh0aGlzLmFzc2lnbm9ySWQpXTtcbiAgICB0aGlzLmFzc2lnbmVlSWRzID0gWy4uLm5ldyBTZXQodGhpcy5hc3NpZ25lZUlkcyldO1xuICAgIHRoaXMucmV2aWV3ZXJJZHMgPSBbLi4ubmV3IFNldCh0aGlzLnJldmlld2VySWRzKV07XG4gICAgdGhpcy5vdmVyc2VlcklkcyA9IFsuLi5uZXcgU2V0KHRoaXMub3ZlcnNlZXJJZHMpXTtcblxuICAgIHRoaXMuYXNzaWdub3JzTGlzdCA9IGJlaGFsZlVzZXJzLmZpbHRlcihcbiAgICAgICh1c2VyOiBhbnkpID0+ICFvdmVyc2Vlcklkcz8uaW5jbHVkZXModXNlci5tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmFzc2lnbmVlc0xpc3QgPSB0aGlzLnByb2dyYW1QZW9wbGVMaXN0Py5hc3NpZ25lZXNMaXN0O1xuICAgIHRoaXMucmV2aWV3ZXJzTGlzdCA9IHRoaXMucHJvZ3JhbVBlb3BsZUxpc3Q/LnJldmlld2Vyc0xpc3Q7XG4gICAgdGhpcy5vdmVyc2VlcnNMaXN0ID0gdGhpcy5wcm9ncmFtUGVvcGxlTGlzdD8ub3ZlcnNlZXJzTGlzdDtcblxuICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgdGhpcy5ncm91cEFzc2lnbmVlTGlzdCA9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtICYmXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LmFzc2lnbmVlX2dyb3VwX2lkcz8ubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGhpcy5wcm9ncmFtR3JvdXBMaXN0KFxuICAgICAgICAgICAgYWxsR3JvdXBzLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LmFzc2lnbmVlX2dyb3VwX2lkc1xuICAgICAgICAgIClcbiAgICAgICAgICA6IGFsbEdyb3Vwcy5maWx0ZXIoXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT5cbiAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICBncm91cFJldmlld2VySWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpIHx8XG4gICAgICAgICAgICAgICAgZ3JvdXBPdmVyc2Vlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgIHRoaXMucmV2aWV3ZXJNZW1iZXJJZHNMaXN0ID0gdGhpcy5hc3NpZ25Vc2VyTWVtYmVySWQoXG4gICAgICAgIHRoaXMucHJvZ3JhbVBlb3BsZUxpc3QucmV2aWV3ZXJzTGlzdFxuICAgICAgKTtcbiAgICAgIHRoaXMuZ3JvdXBSZXZpZXdlckxpc3QgPVxuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbSAmJlxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5yZXZpZXdlcl9ncm91cF9pZHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRoaXMucHJvZ3JhbUdyb3VwTGlzdChcbiAgICAgICAgICAgIGFsbEdyb3VwcyxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5yZXZpZXdlcl9ncm91cF9pZHNcbiAgICAgICAgICApXG4gICAgICAgICAgOiBhbGxHcm91cHMuZmlsdGVyKFxuICAgICAgICAgICAgKGdyb3VwOiBhbnkpID0+XG4gICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgZ3JvdXBPdmVyc2Vlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKSB8fFxuICAgICAgICAgICAgICAgIGFzc2lnbmVlR3JvdXBJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICB0aGlzLm92ZXJzZWVyc0xpc3QgPSB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZChcbiAgICAgICAgdGhpcy5wcm9ncmFtUGVvcGxlTGlzdC5vdmVyc2VlcnNMaXN0XG4gICAgICApO1xuICAgICAgdGhpcy5ncm91cE92ZXJzZWVyTGlzdCA9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtICYmXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/Lm92ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzPy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0aGlzLnByb2dyYW1Hcm91cExpc3QoXG4gICAgICAgICAgICBhbGxHcm91cHMsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ub3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHNcbiAgICAgICAgICApXG4gICAgICAgICAgOiBhbGxHcm91cHMuZmlsdGVyKFxuICAgICAgICAgICAgKGdyb3VwOiBhbnkpID0+XG4gICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgYXNzaWduZWVHcm91cElkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKSB8fFxuICAgICAgICAgICAgICAgIGdyb3VwUmV2aWV3ZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZGlzYWJsZVByb2dyYW1MaXN0KFxuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMsXG4gICAgICBhc3NpZ25lZUlkcyxcbiAgICAgIHJldmlld2Vyc0lkcyxcbiAgICAgIG92ZXJzZWVySWRzXG4gICAgKTtcbiAgfVxuXG4gIHByb2dyYW1Hcm91cExpc3QoYWxsR3JvdXBzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgLy8gYXJnc1swXVxuICAgIGxldCBhc3NpZ25lZVByb2dyYW06IGFueSA9IFtdO1xuICAgIGxldCBncm91cElkcyA9IGFyZ3NbMF07XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRQcm9ncmFtICYmIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5hc3NpZ25lZV9ncm91cF9pZHMpIHtcbiAgICAgIGFzc2lnbmVlUHJvZ3JhbSA9IGFsbEdyb3Vwcy5maWx0ZXIoKGdyb3VwOiBhbnkpID0+XG4gICAgICAgIGdyb3VwSWRzLmluY2x1ZGVzKGdyb3VwLmdyb3VwX2lkKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGFzc2lnbmVlUHJvZ3JhbTtcbiAgfVxuXG4gIGRpc2FibGVQcm9ncmFtTGlzdChcbiAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkczogYW55LFxuICAgIGFzc2lnbmVlSWRzOiBhbnksXG4gICAgcmV2aWV3ZXJzSWRzOiBhbnksXG4gICAgb3ZlcnNlZXJJZHM6IGFueVxuICApIHtcbiAgICBsZXQgZGlzYWJsZUFzc2lnbmVlTGlzdCA9IHRoaXMucHJvZ3JhbVBlb3BsZUxpc3Q/LmFzc2lnbmVlc0xpc3QuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgcmV2aWV3ZXJzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVBc3NpZ25lZUlkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgZGlzYWJsZUFzc2lnbmVlTGlzdCxcbiAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVSYWRpb0Fzc2lnbmVlID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICBkaXNhYmxlQXNzaWduZWVMaXN0LFxuICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICk7XG4gICAgbGV0IGRpc2FibGVSZXZpZXdlckxpc3QgPSB0aGlzLnByb2dyYW1QZW9wbGVMaXN0Py5yZXZpZXdlcnNMaXN0LmZpbHRlcihcbiAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgIGFzc2lnbmVlSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVSZXZpZXdlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgZGlzYWJsZVJldmlld2VyTGlzdCxcbiAgICAgICdlbXBsb3llZV9pZCdcbiAgICApO1xuICAgIGxldCBkaXNhYmxlT3ZlcnNlZXJMaXN0ID0gdGhpcy5wcm9ncmFtUGVvcGxlTGlzdD8ub3ZlcnNlZXJzTGlzdC5maWx0ZXIoXG4gICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxuICAgICAgICByZXZpZXdlcnNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuZGlzYWJsZU92ZXJzZWVySWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICBkaXNhYmxlT3ZlcnNlZXJMaXN0LFxuICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICk7XG4gICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICBsZXQgZGlzYWJsZVJldmlld2VyTGlzdCA9IHRoaXMucmV2aWV3ZXJNZW1iZXJJZHNMaXN0LmZpbHRlcihcbiAgICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgICBvdmVyc2Vlcklkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxuICAgICAgICAgIGFzc2lnbmVlSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXG4gICAgICApO1xuICAgICAgdGhpcy5kaXNhYmxlUmV2aWV3ZXJJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgZGlzYWJsZVJldmlld2VyTGlzdCxcbiAgICAgICAgJ21lbWJlcl9pZCdcbiAgICAgICk7XG4gICAgICBsZXQgZGlzYWJsZU92ZXJzZWVyTGlzdCA9IHRoaXMub3ZlcnNlZXJzTGlzdC5maWx0ZXIoXG4gICAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcbiAgICAgICAgICByZXZpZXdlcnNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcbiAgICAgICk7XG4gICAgICB0aGlzLmRpc2FibGVPdmVyc2VlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICBkaXNhYmxlT3ZlcnNlZXJMaXN0LFxuICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGZvcm0gaXMgdmFsaWQsIHRoZW4gaWYgdGhlIG1vZGUgaXMgRURJVCwgdGhlbiBzZXQgdGhlIG9yZ2FuaXphdGlvbklkIGFuZCBtZW1iZXJJZCB0byB0aGVcbiAgICogYXV0aFNlcnZpY2UgdmFsdWVzLCBhbmQgdGhlbiBjYWxsIHRoZSBlbnRydXN0UmVzcG9uc2liaWxpdHkgZnVuY3Rpb24gd2l0aCB0aGUgcmVzcG9uc2liaWxpdHlGb3JtIGFzXG4gICAqIGEgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBJZiB0aGUgbW9kZSBpcyBub3QgRURJVCwgdGhlbiBjYWxsIHRoZSBlbnRydXN0UmVzcG9uc2liaWxpdHkgZnVuY3Rpb24gd2l0aCB0aGUgcmVzcG9uc2liaWxpdHlGb3JtXG4gICAqIGFzIGEgcGFyYW1ldGVyLlxuICAgKiBAcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUuXG4gICAqL1xuICBzdWJtaXRSZXNwb25zaWJpbGl0eSgpIHtcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVSZXNwb25zaWJpbGl0eSgpO1xuICAgIGlmICghdmFsaWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PSAnRURJVCcpIHtcbiAgICAgIHRoaXMub3JnYW5pemF0aW9uSWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE9yZ2FuaXphdGlvbklkKCk7XG4gICAgICB0aGlzLm1lbWJlcklkID0gdGhpcy5hdXRoU2VydmljZS5nZXRNZW1iZXJJZCgpO1xuICAgICAgdGhpcy5lbnRydXN0UmVzcG9uc2liaWxpdHkodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0pO1xuICAgICAgLy8gZWRpdCBjb25kaXRpb25zXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW50cnVzdFJlc3BvbnNpYmlsaXR5KHRoaXMucmVzcG9uc2liaWxpdHlGb3JtKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIHJlc3BvbnNpYmlsaXR5IG5hbWUgaXMgZW1wdHksIG9yIHRoZSBmcmVxdWVuY3kgaXMgZW1wdHksIG9yIHRoZSBhc3NpZ25lZXMgbGlzdCBpcyBlbXB0eSxcbiAgICogdGhlbiByZXR1cm4gZmFsc2UuIE90aGVyd2lzZSwgcmV0dXJuIHRydWUuXG4gICAqL1xuICB2YWxpZGF0ZVJlc3BvbnNpYmlsaXR5KCkge1xuICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICBpZiAoXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMuZW5hYmxlICYmXG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMubGlzdD8ubGVuZ3RoID09PSAwXG4gICAgKSB7XG4gICAgICB0aGlzLmludmFsaWRUeXBlID0gJ3dob20nO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZSB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZS50cmltKCkgPT0gJydcbiAgICApIHtcbiAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnd2hhdCc7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0IHx8XG4gICAgICAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgKCF0aGlzLmZlYXR1cmVGbGFnX2dyb3VwcyB8fFxuICAgICAgICAgICgoIXRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdCB8fFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPT0gMCkgJiZcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSkpXG4gICAgKSB7XG4gICAgICB0aGlzLmludmFsaWRUeXBlID0gJ3dobyc7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9PSAnJyB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID09PSAnJyB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID09PSAnNX4wfjB+MCdcbiAgICApIHtcbiAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnd2hlbic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnJztcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAhdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZSB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZS50cmltKCkgPT0gJycgfHxcbiAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9PT0gJycgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9PT0gJzV+MH4wfjAnIHx8XG4gICAgICAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICghdGhpcy5mZWF0dXJlRmxhZ19ncm91cHMgfHxcbiAgICAgICAgICAoKCF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0IHx8XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZUdyb3Vwcy5saXN0Py5sZW5ndGggPT0gMCkgJiZcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGVudHJ1c3RSZXNwb25zaWJpbGl0eShlbnRydXN0Rm9ybTogYW55KSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLmVudHJ1c3RMb2FkZXIgPSB0cnVlO1xuICAgIGxldCBzdGFydERhdGUgPSBtb21lbnQocGFyc2VJbnQoZW50cnVzdEZvcm0uc3RhcnREYXRlKSAqIDEwMDApLmZvcm1hdChcbiAgICAgICdZWVlZLU1NLUREIEhIOm1tOnNzJ1xuICAgICk7XG4gICAgc3RhcnREYXRlID0gbW9tZW50KHN0YXJ0RGF0ZS5zcGxpdCgnICcpWzBdICsgJyAwMDowMDowMCcpLmZvcm1hdChcbiAgICAgICdZWVlZLU1NLUREIEhIOm1tOnNzJ1xuICAgICk7XG4gICAgY29uc3QgcmNEZXRhaWxzID1cbiAgICAgIGVudHJ1c3RGb3JtLnJjPy5sZW5ndGggPiAwXG4gICAgICAgID8gZW50cnVzdEZvcm0ucmMubWFwKChyYzogYW55KTogYW55ID0+IHtcbiAgICAgICAgICAgIGlmIChyYykge1xuICAgICAgICAgICAgICBjb25zdCByY0RldGFpbHNBcnIgPSB7XG4gICAgICAgICAgICAgICAgcGFyZW50X3JjX2lkczogcmMucGFyZW50X3JjX2lkcyxcbiAgICAgICAgICAgICAgICByY19pZDogcmMucmNpZCxcbiAgICAgICAgICAgICAgICBjaGlsZF9yY19pZHM6IHJjPy5pdGVtX2NoaWxkX2lkcyxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIHJjRGV0YWlsc0FycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICA6IFtdO1xuICAgIGNvbnN0IHJjRGV0YWlsc0lkQXJyID1cbiAgICAgIGVudHJ1c3RGb3JtLnJjPy5sZW5ndGggPiAwXG4gICAgICAgID8gZW50cnVzdEZvcm0ucmMubWFwKChyYzogYW55KTogYW55ID0+IHtcbiAgICAgICAgICAgIGlmIChyYykge1xuICAgICAgICAgICAgICByZXR1cm4gcmMucmNpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICA6IFtdO1xuXG4gICAgY29uc3QgbW9yZU9wdGlvbnMgPSB0aGlzLm1vcmVPcHRpb25zO1xuXG4gICAgY29uc3QgY2hlY2tDb250aW51b3VzRmFpbGVkVmFsdWUgPSAoZGV0YWlsczogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBmcmVxdWVuY3lUeXBlID0gcGFyc2VJbnQoZGV0YWlscy5zcGxpdCgnficpWzBdKTtcbiAgICAgIGlmIChmcmVxdWVuY3lUeXBlID09PSAxIHx8IGZyZXF1ZW5jeVR5cGUgPT09IDIgfHwgZnJlcXVlbmN5VHlwZSA9PT0gMykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgbGV0IGxpbmtlZFByb2dyYW1JZHM6IGFueVtdID0gW107XG4gICAgbGV0IGxpbmtlZENhdGVnb3J5SWRzOiBhbnlbXSA9IFtdO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5saW5rZWRQcm9ncmFtPy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uY2F0ZWdvcnlfaWQgIT09IGVsZT8uY2F0ZWdvcnlfaWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCBwcm9ncmFtID0ge1xuICAgICAgICAgIHByb2dyYW1JZDogZWxlPy5jYXRlZ29yeV9pZCxcbiAgICAgICAgICBwcm9ncmFtT2JqZWN0SWQ6IGVsZT8uX2lkLFxuICAgICAgICAgIHN1YlByb2dyYW1JZHM6IGVsZT8uY2hpbGRfaWQ/LmZpbHRlcigoZWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5Py5pbmNsdWRlcyhlbCk7XG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICAgIGxpbmtlZFByb2dyYW1JZHM/LnB1c2gocHJvZ3JhbSk7XG4gICAgICAgIGxpbmtlZENhdGVnb3J5SWRzPy5wdXNoKGVsZT8uY2F0ZWdvcnlfaWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IGNhdGVnb3J5SWRzRXhjZXB0RGVmYXVsdDogYW55ID0gW107XG4gICAgY2F0ZWdvcnlJZHNFeGNlcHREZWZhdWx0ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmNhdGVnb3J5Py5maWx0ZXIoXG4gICAgICAoZWw6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGVsICE9PSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uY2F0ZWdvcnlfaWQgJiZcbiAgICAgICAgICAhdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmNoaWxkX2lkPy5pbmNsdWRlcyhlbClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuY29tYmluZVVzZXJBbmRVc2VyR3JvdXBNZW1iZXJzKFxuICAgICAgdGhpcy5tb2RlID09PSAnRURJVCcgJiZcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9PT0gJ0FMTCcgJiZcbiAgICAgIHRoaXMucmF3UmVzcG9uc2liaWxpdHk/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbGxHcm91cElkcz8ubGVuZ3RoXG4gICAgKTtcblxuICAgIGNvbnN0IHJlbWFya3MgPVxuICAgICAgZW50cnVzdEZvcm0uZGVzY3JpcHRpb24ucmVwbGFjZSgvXFwmbmJzcDsvZywgJycpLnRyaW0oKSAhPT0gJydcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5kZXNjcmlwdGlvblxuICAgICAgICA6ICcnO1xuICAgIGNvbnN0IG9iamVjdGl2ZSA9XG4gICAgICBlbnRydXN0Rm9ybS5vYmplY3RpdmUucmVwbGFjZSgvXFwmbmJzcDsvZywgJycpLnRyaW0oKSAhPT0gJydcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5vYmplY3RpdmVcbiAgICAgICAgOiAnJztcbiAgICBsZXQgcGF5bG9hZDogYW55ID0ge1xuICAgICAgYXBwX2Fzc29jaWF0aW9uOiBbXSxcbiAgICAgIGFzc2lnbmVlX21lbWJlcl9pZDogdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgIHRoaXMuYXNzaWduZWVVc2VyTGlzdCxcbiAgICAgICAgJ3VpZCdcbiAgICAgICkudG9TdHJpbmcoKSxcbiAgICAgIHByb2dyYW1fY2F0X2lkczogbW9yZU9wdGlvbnM/LlBST0dSQU1cbiAgICAgICAgPyBlbnRydXN0Rm9ybT8ucHJvZ3JhbT8ubGVuZ3RoXG4gICAgICAgICAgPyBbZW50cnVzdEZvcm0/LnByb2dyYW1bMF0/LmNhdGVnb3J5X2lkXVxuICAgICAgICAgIDogW11cbiAgICAgICAgOiBbXSxcbiAgICAgIGxpbmtlZF9wcm9ncmFtX2lkczogbGlua2VkUHJvZ3JhbUlkcyxcbiAgICAgIGxpbmtlZF9jYXRlZ29yeV9pZHM6IHRoaXMuZ2V0VW5pcXVlSWRzKFtcbiAgICAgICAgLi4uY2F0ZWdvcnlJZHNFeGNlcHREZWZhdWx0LFxuICAgICAgICAuLi5saW5rZWRDYXRlZ29yeUlkcyxcbiAgICAgIF0pLFxuICAgICAgLy8gY2F0ZWdvcnlfaWQ6ICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbV9zZWxlY3RlZF9pZHM/Lmxlbmd0aCA+IDApID8gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmNhdGVnb3J5X2lkIDogJycsXG4gICAgICBjYXRlZ29yeV9pZDpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1fc2VsZWN0ZWRfaWRzPy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0aGlzLmdldFVuaXF1ZUlkcyhbXG4gICAgICAgICAgICAuLi50aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uY2F0ZWdvcnksXG4gICAgICAgICAgICAuLi5saW5rZWRDYXRlZ29yeUlkcyxcbiAgICAgICAgICAgIC4uLltlbnRydXN0Rm9ybT8ucHJvZ3JhbVswXT8uY2F0ZWdvcnlfaWRdLFxuICAgICAgICAgIF0pPy5yZXZlcnNlKCkudG9TdHJpbmcoKVxuICAgICAgICAgIDogJycsXG4gICAgICBjY19tZW1iZXJfZW1haWw6IG1vcmVPcHRpb25zPy5PVkVSU0VFUlxuICAgICAgICA/IHRoaXMucmV0dXJuSWRzKHRoaXMub3ZlcnNlZXJVc2VyTGlzdCwgJ3VpZCcpLnRvU3RyaW5nKClcbiAgICAgICAgOiAnJyxcbiAgICAgIGNoZWNrcG9pbnRfZGVzY3JpcHRpb246IG1vcmVPcHRpb25zPy5DSEVDS1BPSU5UU1xuICAgICAgICA/IGVudHJ1c3RGb3JtLmNoZWNrcG9pbnRJbnN0cnVjdGlvblxuICAgICAgICA6ICcnLFxuICAgICAgY2hlY2twb2ludF9kZXRhaWxzOiBtb3JlT3B0aW9ucz8uQ0hFQ0tQT0lOVFNcbiAgICAgICAgPyBKU09OLnN0cmluZ2lmeSh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cylcbiAgICAgICAgOiAnJyxcbiAgICAgIGNoZWNrcG9pbnRfZmxhZzogMCxcbiAgICAgIGNvbGxhYm9yYXRvcl9tYXJrX2RvbmU6IDAsXG4gICAgICBjb21tZW50OiAnJyxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGNoZWNrQ29udGludW91c0ZhaWxlZFZhbHVlKGVudHJ1c3RGb3JtLmZyZXF1ZW5jeSlcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5jb250aW51b3VzX2ZhaWxlZF9kYXlzXG4gICAgICAgIDogMCxcbiAgICAgIGNvc3Rfb2ZfY29tcGxpYW5jZTogJycsXG4gICAgICBjcmVhdGVkX2J5OiBlbnRydXN0Rm9ybS5hc3NpZ25vcnMubGlzdD8ubGVuZ3RoIDwgMSA/IDAgOiB0aGlzLm1lbWJlcklkLFxuICAgICAgY3JlYXRpb25fd2luZG93OiAwLFxuICAgICAgY3VzdG9tX3RhZ3M6IEpTT04uc3RyaW5naWZ5KGVudHJ1c3RGb3JtLmN1c3RvbVRhZ3MpLFxuICAgICAgZW50aXR5X3RyZWU6IG1vcmVPcHRpb25zPy5SQ1xuICAgICAgICA/IHRoaXMuaXNSZXNwb25zaWJpbGl0eVJjTGlua0VuYWJsZWQgJiZcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9PSAxXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogcmNEZXRhaWxzXG4gICAgICAgIDogW10sXG4gICAgICBlbnRydXN0X2Zyb21fcmlzazogdGhpcy5vcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IGVudHJ1c3RGb3JtLmZhaWxlZF9hZnRlcl9kYXlzLFxuICAgICAgZmFpbGVkX3RpbWVfdXRjOiBlbnRydXN0Rm9ybS5mYWlsZWRfdGltZV91dGMsXG4gICAgICBmYWlsdXJlX2NjX21lbWJlcl9lbWFpbDogbW9yZU9wdGlvbnM/Lk9WRVJTRUVSXG4gICAgICAgID8gdGhpcy5yZXR1cm5JZHModGhpcy5vdmVyc2VlclVzZXJOb3RpZnlMaXN0LCAndWlkJykudG9TdHJpbmcoKVxuICAgICAgICA6ICcnLFxuICAgICAgZnJlcXVlbmN5X2RldGFpbHM6IGVudHJ1c3RGb3JtLmZyZXF1ZW5jeSxcbiAgICAgIGZyZXF1ZW5jeV90aW1lOiBlbnRydXN0Rm9ybS50aW1lSW4yNEhyID8/IERFRkFVTFRfMjRIUixcbiAgICAgIGdyY19vYmplY3RfaWQ6IDAsXG4gICAgICBncmNfcmVsYXRpb25zaGlwOiAnJyxcbiAgICAgIGlmX3Rlc3RwbGFuX2ZhaWxlZDogMCxcbiAgICAgIGltcGFjdDogJycsXG4gICAgICBpc0dyb3VwQXNzaWduVG86XG4gICAgICAgIGVudHJ1c3RGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9PSAnQU5ZX09ORScgPyAxIDogMCxcbiAgICAgIGlzX2tleV9jb21wbGlhbmNlOiBlbnRydXN0Rm9ybS5yZXNwb25zaWJpbGl0eS5rZXlSZXNwb25zaWJpbGl0eSA/IDEgOiAwLFxuICAgICAgYWxsb3dFZGl0RHVlRGF0ZTogZW50cnVzdEZvcm0/LmFsbG93RWRpdER1ZURhdGUgPyB0cnVlIDogZmFsc2UsXG4gICAgICBsaWJyYXJ5X3JlcG9ydF9pZDogMCxcbiAgICAgIGxpZmVjeWNsZV9kZXRhaWxzOiBlbnRydXN0Rm9ybS5saWZlY3ljbGVEZXRhaWxzID8/ICcwMDAwLTAwLTAwfn4wJyxcbiAgICAgIGxpbmtfZm9yX2RldGFpbHM6IG1vcmVPcHRpb25zPy5GT1JNQVRFX0VWSURFTkNFXG4gICAgICAgID8gZW50cnVzdEZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0TGlua3NcbiAgICAgICAgOiBbXSxcbiAgICAgIGxpbmthZ2VzOiB7IGNvbXBsaWFuY2U6IFtdIH0sXG4gICAgICBtZW1iZXJfaWQ6XG4gICAgICAgIHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtLmFzc2lnbm9ycy5saXN0LCAndWlkJyk/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtLmFzc2lnbm9ycy5saXN0LCAndWlkJylbMF1cbiAgICAgICAgICA6IHRoaXMubWVtYmVySWQsXG4gICAgICBvYmplY3RpdmU6IG1vcmVPcHRpb25zPy5PQkpFQ1RJVkUgPyBvYmplY3RpdmUgOiAnJyxcbiAgICAgIG9uX2NvbXBsZXRpb25fb2Y6IGVudHJ1c3RGb3JtLnJlcG9ydElkID8gW2VudHJ1c3RGb3JtLnJlcG9ydElkXSA6IFtdLFxuICAgICAgb25fY29tcGxldGlvbl9vZl90eXBlOiAxLFxuICAgICAgb3JnYW5pc2F0aW9uX2lkOiB0aGlzLm9yZ2FuaXphdGlvbklkLFxuICAgICAgb3ZlcnJpZGVfd2Vla2x5OiAwLFxuICAgICAgcGFyZW50X2lkOiAwLFxuICAgICAgcGVuYWx0eTogJycsXG4gICAgICBwcml2YXRlX2xpYnJhcnlfaWQ6IDAsXG4gICAgICByZW1hcmtzOiByZW1hcmtzLFxuICAgICAgcmVtaW5kZXJfYmVmb3JlX2RheXM6IGVudHJ1c3RGb3JtLnJlbWluZGVyX2JlZm9yZV9kYXlzLFxuICAgICAgcmVwb3J0X2Zvcm1hdDogbW9yZU9wdGlvbnM/LkZPUk1BVEVfRVZJREVOQ0VcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRGaWxlc1xuICAgICAgICA6IFtdLFxuICAgICAgaXNGb3JtYXRVcGxvYWQ6XG4gICAgICAgIG1vcmVPcHRpb25zPy5GT1JNQVRFX0VWSURFTkNFICYmXG4gICAgICAgICAgZW50cnVzdEZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0UmVxdWlyZWRcbiAgICAgICAgICA/IDFcbiAgICAgICAgICA6IDAsXG4gICAgICByZXBvcnRfZm9ybWF0X2xpbms6ICcnLFxuICAgICAgcmVwb3J0X25hbWU6IGVudHJ1c3RGb3JtLnJlc3BvbnNpYmlsaXR5Lm5hbWUsXG4gICAgICByZXBvcnRfdXBsb2FkX2ZsYWc6IGVudHJ1c3RGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWRcbiAgICAgICAgPyAxXG4gICAgICAgIDogMCxcbiAgICAgIHJldmlld19hZnRlcl9kYXlzOiBtb3JlT3B0aW9ucz8uUkVWSUVXRVJcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld0NvbXBsZXRlRGF5cyA9PT0gJydcbiAgICAgICAgICA/IDBcbiAgICAgICAgICA6IE51bWJlcihlbnRydXN0Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld0NvbXBsZXRlRGF5cylcbiAgICAgICAgOiAwLFxuICAgICAgcmV2aWV3X2ZhaWxlZF9hZnRlcl9kYXlzOiBtb3JlT3B0aW9ucz8uUkVWSUVXRVJcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld05PdENvbXBsZXRlZERheXMgPT09ICcnXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiBOdW1iZXIoZW50cnVzdEZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeS5yZXZpZXdOT3RDb21wbGV0ZWREYXlzKVxuICAgICAgICA6IDAsXG4gICAgICByZXZpZXdlcl9hcnI6IG1vcmVPcHRpb25zPy5SRVZJRVdFUlxuICAgICAgICA/IHtcbiAgICAgICAgICBsZXZlbDE6IHtcbiAgICAgICAgICAgIHJldmlld2VyczogdGhpcy5zZXRSZXZpZXdlclBheWxvYWQoXG4gICAgICAgICAgICAgIHRoaXMucmV2aWV3ZXJVc2VyTGlzdCxcbiAgICAgICAgICAgICAgJ2xpc3QnLFxuICAgICAgICAgICAgICBlbnRydXN0Rm9ybS5yZXZpZXdlcnMuYWNjZXB0ZWREYXRhLFxuICAgICAgICAgICAgICBlbnRydXN0Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93XG4gICAgICAgICAgICAgICAgPyAnU0VRVUVOVElBTCdcbiAgICAgICAgICAgICAgICA6ICdBTllPTkUnXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHlwZTogZW50cnVzdEZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvd1xuICAgICAgICAgICAgICA/ICdTRVFVRU5USUFMJ1xuICAgICAgICAgICAgICA6ICdBTllPTkUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgICAgOiB7fSxcbiAgICAgIHVzZXJHcm91cElkczoge1xuICAgICAgICBhc3NpZ25lZUFsbEdyb3VwSWRzOlxuICAgICAgICAgIGVudHJ1c3RGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSAhPT0gJ0FOWV9PTkUnXG4gICAgICAgICAgICA/IHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdCwgJ3VnaWQnKVxuICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgYXNzaWduZWVBbnlvbmVHcm91cElkczpcbiAgICAgICAgICBlbnRydXN0Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT09ICdBTllfT05FJ1xuICAgICAgICAgICAgPyB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QsICd1Z2lkJylcbiAgICAgICAgICAgIDogW10sXG4gICAgICAgIGNjRW1haWxHcm91cElkczpcbiAgICAgICAgICB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3QsXG4gICAgICAgICAgICAndWdpZCdcbiAgICAgICAgICApID8/IFtdLFxuICAgICAgICBmYWlsdXJlQ0NFbWFpbEdyb3VwSWRzOlxuICAgICAgICAgIHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdCxcbiAgICAgICAgICAgICd1Z2lkJ1xuICAgICAgICAgICkgPz8gW10sXG4gICAgICAgIHJldmlld2VyR3JvdXBJZHM6XG4gICAgICAgICAgdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3QsXG4gICAgICAgICAgICAndWdpZCdcbiAgICAgICAgICApID8/IFtdLFxuICAgICAgfSxcbiAgICAgIGV4aXN0aW5nVXNlcklkczoge1xuICAgICAgICBhc3NpZ25lZUFsbElkczpcbiAgICAgICAgICBlbnRydXN0Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgIT09ICdBTllfT05FJ1xuICAgICAgICAgICAgPyB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybT8uYXNzaWduZWVzPy5saXN0LCAndWlkJylcbiAgICAgICAgICAgIDogW10sXG4gICAgICAgIGFzc2lnbmVlQW55b25lSWRzOlxuICAgICAgICAgIGVudHJ1c3RGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9PT0gJ0FOWV9PTkUnXG4gICAgICAgICAgICA/IHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtPy5hc3NpZ25lZXM/Lmxpc3QsICd1aWQnKVxuICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgY2NFbWFpbE1lbWJlcklkczpcbiAgICAgICAgICB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybT8ub3ZlcnNlZXJzPy5saXN0LCAndWlkJykgPz8gW10sXG4gICAgICAgIGZhaWx1cmVDQ0VtYWlsTWVtYmVySWRzOlxuICAgICAgICAgIHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QsICd1aWQnKSA/P1xuICAgICAgICAgIFtdLFxuICAgICAgICByZXZpZXdlcklkczpcbiAgICAgICAgICB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3QsXG4gICAgICAgICAgICAndWlkJ1xuICAgICAgICAgICkgPz8gW10sXG4gICAgICB9LFxuICAgICAgcmV2aWV3ZXJfY2hlY2twb2ludHM6IFt7IGNoZWNrcG9pbnRzOiBbXSwgaW5zdHJ1Y3Rpb246ICcnIH1dLFxuICAgICAgcmV2aWV3ZXJfaWQ6IDAsXG4gICAgICByaXNrX2NsYXNzOiB0aGlzLmlzUmlza0VuYWJsZSA/IGVudHJ1c3RGb3JtLnJpc2tDbGFzcyA6IDIsXG4gICAgICByaXNrX2lkczogJycsXG4gICAgICByaXNrX21hdHJpeF9kYXRhOiBtb3JlT3B0aW9ucz8uUklTS19DTEFTU0lGSUNBVElPTlxuICAgICAgICA/IGVudHJ1c3RGb3JtLnJpc2tNYXRyaXhcbiAgICAgICAgOiAnMCwwLDAsMCwwLDAnLFxuICAgICAgc2FtcGxlX3NpemU6IDAsXG4gICAgICBzdGFydF9kYXRlX3V0Yzogc3RhcnREYXRlLFxuICAgICAgc3RhdHV0b3J5X2RheTogMCxcbiAgICAgIHRlc3RfcmVxdWlyZWRfZmxhZzogbW9yZU9wdGlvbnM/LkFTU1VSQU5DRVxuICAgICAgICA/IGVudHJ1c3RGb3JtLmFzc3VyYW5jZUxpc3Q/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IDFcbiAgICAgICAgICA6IDBcbiAgICAgICAgOiAwLFxuICAgICAgdGVzdHBsYW5fY2F0ZWdvcnlfaWQ6IG1vcmVPcHRpb25zPy5BU1NVUkFOQ0VcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyhlbnRydXN0Rm9ybS5hc3N1cmFuY2VMaXN0LCAnY2F0ZWdvcnlfaWQnKVxuICAgICAgICA6IFtdLFxuICAgICAgdGVzdHBsYW5fY2F0ZWdvcnlfbWFuYWdlcjogJycsXG4gICAgICBhdWRpdF9jYXRlZ29yeV9kZXRhaWxzOlxuICAgICAgICBtb3JlT3B0aW9ucz8uUkVRVUlSRVNfQVVESVQgJiZcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXVkaXRfY2F0ZWdvcnlfZGV0YWlscz8uY2F0ZWdvcnlfaWRcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgIGNhdGVnb3J5X2lkOlxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hdWRpdF9jYXRlZ29yeV9kZXRhaWxzLmNhdGVnb3J5X2lkLFxuICAgICAgICAgICAgc2FtcGxlOiB0aGlzLnNlbGVjdGVkU2FtcGxlID09PSAwID8gdGhpcy5zYW1wbGVWYWx1ZSA6IDAsXG4gICAgICAgICAgICBwZXJjZW50YWdlOiB0aGlzLnNlbGVjdGVkU2FtcGxlID09PSAxID8gdGhpcy5zYW1wbGVQZXJjZW50YWdlIDogMCxcbiAgICAgICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuOiBgMX4wfiR7dGhpcy5zZW5kQXVkaXRSZW1pbmRlcnNWYWx1ZX1+MWAsXG4gICAgICAgICAgICBmcmVxdWVuY3lfdGltZTogbW9tZW50KHRoaXMuYXVkaXRUaW1lLCAnSEg6bW0gYScpLmZvcm1hdChcbiAgICAgICAgICAgICAgJ0hIOm1tOnNzJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9XG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICBjYXRlZ29yeV9pZDogMCxcbiAgICAgICAgICAgIHNhbXBsZTogMCxcbiAgICAgICAgICAgIHBlcmNlbnRhZ2U6IDAsXG4gICAgICAgICAgICBmcmVxdWVuY3lfcGF0dGVybjogYGAsXG4gICAgICAgICAgICBmcmVxdWVuY3lfdGltZTogJycsXG4gICAgICAgICAgfSxcbiAgICAgIGFzc2Vzc21lbnQ6IHtcbiAgICAgICAgY2F0ZWdvcnlfaWQ6IG1vcmVPcHRpb25zPy5BU1NFU1NNRU5UXG4gICAgICAgICAgPyBlbnRydXN0Rm9ybT8uYXNzZXNzbWVudD8uY2F0ZWdvcnlfaWRcbiAgICAgICAgICA6ICcnLFxuICAgICAgICBhc3Nlc3NtZW50X2lkOiBtb3JlT3B0aW9ucz8uQVNTRVNTTUVOVFxuICAgICAgICAgID8gZW50cnVzdEZvcm0/LmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnREZXRhaWxzPy5haWRcbiAgICAgICAgICA6ICcnLFxuICAgICAgfSxcbiAgICAgIGFzc2Vzc21lbnRfY2hlY2twb2ludDogbW9yZU9wdGlvbnM/LkNIRUNLUE9JTlRTX05FV1xuICAgICAgICA/IE9iamVjdC5rZXlzKGVudHJ1c3RGb3JtPy5uZXdfY2hlY2twb2ludHMpPy5sZW5ndGggPiAwXG4gICAgICAgICAgPyBlbnRydXN0Rm9ybT8ubmV3X2NoZWNrcG9pbnRzXG4gICAgICAgICAgOiB7fVxuICAgICAgICA6IHt9LFxuICAgICAgcXVlc3Rpb25uYWlyZV90eXBlOiBtb3JlT3B0aW9ucz8uQ0hFQ0tQT0lOVFNfTkVXXG4gICAgICAgID8gT2JqZWN0LmtleXMoZW50cnVzdEZvcm0/Lm5ld19jaGVja3BvaW50cyk/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/ICdhc3Nlc3NtZW50X2NoZWNrcG9pbnQnXG4gICAgICAgICAgOiBtb3JlT3B0aW9ucz8uQVNTRVNTTUVOVCAmJiBlbnRydXN0Rm9ybT8uYXNzZXNzbWVudD8uY2F0ZWdvcnlfaWRcbiAgICAgICAgICAgID8gJ2Fzc2Vzc21lbnQnXG4gICAgICAgICAgICA6IEpTT04uc3RyaW5naWZ5KHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5jaGVja3BvaW50cykgIT0gJycgJiZcbiAgICAgICAgICAgICAgbW9yZU9wdGlvbnM/LkNIRUNLUE9JTlRTXG4gICAgICAgICAgICAgID8gJ2NoZWNrcG9pbnQnXG4gICAgICAgICAgICAgIDogJydcbiAgICAgICAgOiAnJyxcblxuICAgICAgbGlua2VkX0dSQ19pZHM6IG1vcmVPcHRpb25zPy5HUkNfT0JKRUNUU1xuICAgICAgICA/IGVudHJ1c3RGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cy5tYXAoKGdyYzogYW55KSA9PiBncmMuZ3JjaWQpXG4gICAgICAgIDogW10sXG4gICAgICBmcmVxdWVuY3k6IHRoaXMuZnJlcXVlbmN5T2JqZWN0LFxuICAgICAgc2VsZWN0ZWRDYXRlZ29yeTogdGhpcy5zZWxlY3RlZFByb2dyYW1zXG4gICAgfTtcblxuXG5cbiAgICBpZiAodGhpcy5pc1Jlc3BvbnNpYmlsaXR5UmNMaW5rRW5hYmxlZCkge1xuICAgICAgcGF5bG9hZFsncmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlJ10gPVxuICAgICAgICB0aGlzLmlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkICYmIG1vcmVPcHRpb25zPy5SQ1xuICAgICAgICAgID8gdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlclR5cGVcbiAgICAgICAgICA6IDA7XG4gICAgICBwYXlsb2FkWydyZXNwb25zaWJpbGl0eUNlbnRlckFyciddID1cbiAgICAgICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5UmNMaW5rRW5hYmxlZCAmJiBtb3JlT3B0aW9ucz8uUkNcbiAgICAgICAgICA/IHJjRGV0YWlsc0lkQXJyXG4gICAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zaWJpbGl0eVBheWxvYWQgPSB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5idWlsZFJlc3BvbnNpYmlsaXR5UGF5bG9hZChwYXlsb2FkKTtcblxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkID0gcGF5bG9hZDtcbiAgICBpZiAodGhpcy5tb2RlID09ICdDUkVBVEUnICYmICF0aGlzLmlzRHVwbGljYXRlRW50cnVzdCkge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2Uuc3VibWl0RW50cnVzdChyZXNwb25zaWJpbGl0eVBheWxvYWQpLnN1YnNjcmliZShcbiAgICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IHRydWU7XG4gICAgICAgICAgdGhpcy5lbnRydXN0TG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eURhdGEgPSByZXM7XG5cbiAgICAgICAgICBpZiAocmVzLm1lc3NhZ2UgJiYgcmVzLm1lc3NhZ2UudG9Mb3dlckNhc2UoKSA9PT0gJ2J1bGsgZW50cnVzdCcpIHtcbiAgICAgICAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9IGBZb3UgaGF2ZSBlbnRydXN0ZWQgJHtyZXMuY2FsY3VsYXRlX25vX29mX3Jlc3BvbnNpYmlpdGllc30gcmVzcG9uc2liaWxpdGllcy4gVGhlc2Ugd291bGQgYmUgcmVmbGVjdGVkIHdpdGhpbiB5b3VyIGFjY291bnQgaW4gc29tZXRpbWUuYDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMuaXNOb3RpZmljYXRpb25QZW5kaW5nICYmIHBheWxvYWQuY3JlYXRlZF9ieSA9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnNtaWxleU1lc3NhZ2UgPVxuICAgICAgICAgICAgICAnVGhpcyByZXNwb25zaWJpbGl0eSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgbm90aWZpY2F0aW9uIHF1ZXVlLic7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChwYXlsb2FkLmNyZWF0ZWRfYnkgPiAwKSB7XG4gICAgICAgICAgICAgIHRoaXMuYWN0aW9uQnV0dG9uc1sxXS5idXR0b25UZXh0ID0gJ1ZpZXcgUmVzcG9uc2liaWxpdGllcyc7XG4gICAgICAgICAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9IGBZb3UganVzdCBjcmVhdGVkIGEgcmVzcG9uc2liaWxpdHkgb24gYmVoYWxmICR7ZW50cnVzdEZvcm0uYXNzaWdub3JzLmxpc3QuZmluZChcbiAgICAgICAgICAgICAgICAobWVtYmVyOiBhbnkpID0+IG1lbWJlci5tZW1iZXJfaWQgPT09IHBheWxvYWQubWVtYmVyX2lkXG4gICAgICAgICAgICAgICkubWVtYmVyX25hbWVcbiAgICAgICAgICAgICAgICB9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvL3RoaXMucmVzZXQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZW50cnVzdExvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXG4gICAgICAgICAgICAnYWxlcnQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9kZSA9PSAnRURJVCcgfHwgdGhpcy5pc0R1cGxpY2F0ZUVudHJ1c3QpIHtcbiAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9IGBUaGUgcmVzcG9uc2liaWxpdHkgaGFzIGJlZW4gbW9kaWZpZWQuYDtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlXG4gICAgICAgIC51cGRhdGVFbnRydXN0KHBheWxvYWQsIHRoaXMucmVzcG9uc2liaWxpdHlJZCwgdHJ1ZSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlEYXRhID0gcmVzO1xuICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZW50cnVzdExvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc2hvd1NtaWxleSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNEdXBsaWNhdGVFbnRydXN0ID0gZmFsc2U7XG5cbiAgICAgICAgICAgIC8vIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdyhcbiAgICAgICAgICAgICAgJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsXG4gICAgICAgICAgICAgICdhbGVydCdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHVuaXF1ZUlkVXNlckdyb3VwcyhcbiAgICB0b3RhbFVzZXJMaXN0OiBhbnksXG4gICAgc2VsZWN0ZWRHcm91cDogYW55LFxuICAgIHNlbGVjdGVkVXNlcnM6IGFueVxuICApIHtcbiAgICBsZXQgZ3JvdXBVc2VyTGlzdCA9IHRoaXMuZ2V0R3JvdXBzVXNlckVtcGxveWVlc0lkKFxuICAgICAgdG90YWxVc2VyTGlzdCxcbiAgICAgIHNlbGVjdGVkR3JvdXBcbiAgICApO1xuICAgIGxldCBpZHMgPSBuZXcgU2V0KHNlbGVjdGVkVXNlcnMubWFwKCh1c2VyOiBhbnkpID0+IHVzZXI/Lm15X21lbWJlcl9pZCkpO1xuICAgIGxldCB1c2VyTGlzdCA9IFtcbiAgICAgIC4uLnNlbGVjdGVkVXNlcnMsXG4gICAgICAuLi5ncm91cFVzZXJMaXN0LmZpbHRlcihcbiAgICAgICAgKGdyb3VwVXNlcjogYW55KSA9PiAhaWRzLmhhcyhncm91cFVzZXI/Lm15X21lbWJlcl9pZClcbiAgICAgICksXG4gICAgXTtcbiAgICByZXR1cm4gdXNlckxpc3Q7XG4gIH1cblxuICBjb21iaW5lVXNlckFuZFVzZXJHcm91cE1lbWJlcnMoaXNHcm91cD86IGFueSkge1xuICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgdGhpcy5hc3NpZ25lZVVzZXJMaXN0ID0gaXNHcm91cFxuICAgICAgICA/IFt7IGVtcGxveWVlX2lkOiB0aGlzLnJhd1Jlc3BvbnNpYmlsaXR5Py5hc3NpZ25lZV9tZW1iZXJfaWQgfV1cbiAgICAgICAgOiB0aGlzLnVuaXF1ZUlkVXNlckdyb3VwcyhcbiAgICAgICAgICB0aGlzLmFsbFVzZXJzTGlzdCxcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QsXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdFxuICAgICAgICApO1xuICAgICAgdGhpcy5yZXZpZXdlclVzZXJMaXN0ID0gdGhpcy51bmlxdWVJZFVzZXJHcm91cHMoXG4gICAgICAgIHRoaXMuYWxsVXNlcnNMaXN0LFxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3QsXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RcbiAgICAgICk7XG4gICAgICB0aGlzLm92ZXJzZWVyVXNlckxpc3QgPSB0aGlzLnVuaXF1ZUlkVXNlckdyb3VwcyhcbiAgICAgICAgdGhpcy5hbGxVc2Vyc0xpc3QsXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3QsXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RcbiAgICAgICk7XG4gICAgICB0aGlzLm92ZXJzZWVyVXNlck5vdGlmeUxpc3QgPSB0aGlzLnVuaXF1ZUlkVXNlckdyb3VwcyhcbiAgICAgICAgdGhpcy5hbGxVc2Vyc0xpc3QsXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3QsXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXNzaWduZWVVc2VyTGlzdCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q7XG4gICAgICB0aGlzLnJldmlld2VyVXNlckxpc3QgPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0O1xuICAgICAgdGhpcy5vdmVyc2VlclVzZXJMaXN0ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdDtcbiAgICAgIHRoaXMub3ZlcnNlZXJVc2VyTm90aWZ5TGlzdCA9XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEl0IHJlc2V0cyB0aGUgZm9ybS5cbiAgICovXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSBmYWxzZTtcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0gPSB7XG4gICAgICBhc3NpZ25vcnM6IHtcbiAgICAgICAgZW5hYmxlOiBmYWxzZSxcbiAgICAgICAgbGlzdDogW10sXG4gICAgICB9LFxuICAgICAgcmVzcG9uc2liaWxpdHk6IHtcbiAgICAgICAgbmFtZTogJycsXG4gICAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhc3NpZ25lZUdyb3Vwczoge1xuICAgICAgICB3aG9DYW5Db21wbGV0ZTogJ0FMTCcsXG4gICAgICAgIGxpc3Q6IFtdLFxuICAgICAgfSxcbiAgICAgIGFzc2lnbmVlczoge1xuICAgICAgICB3aG9DYW5Db21wbGV0ZTogJ0FMTCcsXG4gICAgICAgIGxpc3Q6IFtdLFxuICAgICAgfSxcbiAgICAgIGFsbG93RWRpdER1ZURhdGU6IGZhbHNlLFxuICAgICAgZnJlcXVlbmN5OiAnJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgIG9iamVjdGl2ZTogJycsXG4gICAgICByYzogW10sXG4gICAgICBjYXRlZ29yeTogW10sXG4gICAgICBjaGVja3BvaW50SW5zdHJ1Y3Rpb246ICcnLFxuICAgICAgY3VzdG9tVGFnczogW10sXG4gICAgICBjaGVja3BvaW50czogW10sXG4gICAgICByZXZpZXdlcnM6IHtcbiAgICAgICAgc2VxdWVudGlhbFdvcmtmbG93OiB0cnVlLFxuICAgICAgICByZXZpZXdGcmVxdWVuY3k6IHtcbiAgICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6IDIsXG4gICAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czogMixcbiAgICAgICAgfSxcbiAgICAgICAgbGlzdDogW10sXG4gICAgICB9LFxuICAgICAgZ3JvdXBSZXZpZXdlcnM6IHtcbiAgICAgICAgc2VxdWVudGlhbFdvcmtmbG93OiB0cnVlLFxuICAgICAgICByZXZpZXdGcmVxdWVuY3k6IHtcbiAgICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6IDIsXG4gICAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czogMixcbiAgICAgICAgfSxcbiAgICAgICAgbGlzdDogW10sXG4gICAgICB9LFxuICAgICAgb3ZlcnNlZXJzOiB7XG4gICAgICAgIG5vdGlmeUxpc3Q6IFtdLFxuICAgICAgICBsaXN0OiBbXSxcbiAgICAgIH0sXG4gICAgICBvdmVyc2VlcnNHcm91cHM6IHtcbiAgICAgICAgbm90aWZ5TGlzdDogW10sXG4gICAgICAgIGxpc3Q6IFtdLFxuICAgICAgfSxcbiAgICAgIGZvcm1hdEFuZEV2aWRlbmNlOiB7XG4gICAgICAgIGZvcm1hdFJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZm9ybWF0RmlsZXM6IFtdLFxuICAgICAgICBmb3JtYXRMaW5rczogW10sXG4gICAgICAgIGV2aWRlbmNlUmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGFzc3VyYW5jZUxpc3Q6IFtdLFxuICAgICAgcmVxdWlyZXNBdWRpdExpc3Q6IFtdLFxuICAgICAgcmlza0NsYXNzOiAxLFxuICAgICAgcmlza01hdHJpeDogJzAsMCwwLDAsMCwwJyxcbiAgICAgIHByb2dyYW06IFtdLFxuICAgICAgcHJvZ3JhbV9zZWxlY3RlZF9pZHM6IFtdLFxuICAgIH07XG4gICAgdGhpcy5tb3JlT3B0aW9ucyA9IHtcbiAgICAgIE9CSkVDVElWRTogZmFsc2UsXG4gICAgICBSQzogZmFsc2UsXG4gICAgICBDQVRFR09SWTogZmFsc2UsXG4gICAgICBGT1JNQVRFX0VWSURFTkNFOiBmYWxzZSxcbiAgICAgIENIRUNLUE9JTlRTOiBmYWxzZSxcbiAgICAgIFJJU0tfQ0xBU1NJRklDQVRJT046IGZhbHNlLFxuICAgICAgUkVWSUVXRVI6IGZhbHNlLFxuICAgICAgT1ZFUlNFRVI6IGZhbHNlLFxuICAgICAgQVNTVVJBTkNFOiBmYWxzZSxcbiAgICAgIEFQUFM6IGZhbHNlLFxuICAgIH07XG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9ICdIb3cgb2Z0ZW4gZG9lcyB0aGUgcmVzcG9uc2liaWxpdHkgb2NjdXI/JztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMgPSB7XG4gICAgICBwYXR0ZXJuOiAnJyxcbiAgICAgIG5vdGlmaWNhdGlvblBlbmRpbmc6IDAsXG4gICAgICBkYXRlT2ZNb2RpZmllZDogMCxcbiAgICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxuICAgICAgc2VsZWN0ZWRSZXBvcnQ6IDAsXG4gICAgICBsaWZlY3ljbGU6ICcwMDAwLTAwLTAwfn4wJyxcbiAgICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxuICAgICAgc3RhcnRPblRoZURheTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxuICAgICAgd2luZG93OiAwLFxuICAgICAgZmFpbGVkOiAwLFxuICAgICAgdGltZTogREVGQVVMVF9USU1FLFxuICAgICAgZmFpbGVkVGltZTogJycsXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwLFxuICAgICAgb25Db21wbGV0aW9uUmVwb3J0RGV0YWlsczoge30sXG4gICAgfTtcbiAgICB0aGlzLnNhbXBsZVZhbHVlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2FtcGxlUGVyY2VudGFnZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnNlbGVjdGVkU2FtcGxlID0gLTE7XG4gICAgdGhpcy5zZW5kQXVkaXRSZW1pbmRlcnNWYWx1ZSA9IDI7XG4gICAgdGhpcy5hdWRpdFRpbWUgPSBERUZBVUxUX1RJTUU7XG4gICAgdGhpcy5tb2RlID0gJ0NSRUFURSc7XG4gICAgdGhpcy5pc0VudHJ1c3QgPSB0cnVlO1xuICAgIHRoaXMuYXNzZXNzbWVudERldGFpbHMgPSBudWxsO1xuICAgIHRoaXMucmVzZXRGb3JtLmVtaXQodHJ1ZSk7XG4gIH1cbiAgYWN0aW9uKGV2ZW50OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnKSB7XG4gICAgICB0aGlzLmNsb3NlU21pbGV5KCdkcycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzd2l0Y2ggKGV2ZW50KSB7XG4gICAgICBjYXNlICdhZGRNb3JlJzpcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3ZpZXcnOlxuICAgICAgICB0aGlzLnZpZXdSZXNwb25zaWJpbGl0aWVzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICB2aWV3UmVzcG9uc2liaWxpdGllcygpOiB2b2lkIHtcbiAgICBsZXQgdXJsOiBzdHJpbmc7XG4gICAgY29uc3QgaWQgPSB0aGlzLnJlc3BvbnNpYmlsaXR5RGF0YT8uZGF0YT8ucmVzcG9uc2liaWxpdHk/LmlkO1xuICAgIGxldCB1cmxTdWJzdHJpbmcgPSAnL2NvbXBsaWFuY2UvcmVzcG9uc2liaWxpdGllcy8nICsgaWQ7XG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcbiAgICAgIHVybCA9ICdodHRwOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgdXJsU3Vic3RyaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyB1cmxTdWJzdHJpbmc7XG4gICAgfVxuICAgIHRoaXMuaWZyYW1lU2VydmljZS5yZWRpcmVjdElmSW5JZnJhbWUodXJsLCB0aGlzLm1vZGUgIT09ICdFRElUJyk7XG5cbiAgICB0aGlzLmNsb3NlU21pbGV5KCdkcycpO1xuICAgIHRoaXMucmVzZXQoKTtcbiAgfVxuICBjbG9zZVNtaWxleShldmVudDogYW55KSB7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xuICAgIC8vIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHRoaXMucmVzcG9uc2liaWxpdHlEYXRhKTtcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogdGhpcy5yZXNwb25zaWJpbGl0eURhdGEsIGNvbmZpcm06IGZhbHNlIH0pO1xuICB9XG5cbiAgZ2V0T25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyhldmVudDogYW55KSB7XG4gICAgY29uc3QgZnJlcXVlbmN5RGF0YSA9IGV2ZW50Py5wYXR0ZXJuPy5zcGxpdCgnficpO1xuICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEYXRhWzBdKSA9PSA2KSB7XG4gICAgICByZXR1cm4gZXZlbnQ/Lm9uQ29tcGxldGlvblJlcG9ydERldGFpbHM7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gZm9yIGVkaXQgcmVzcG9uc2liaWxpdHlcbiAgZnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZXZlbnQ6IGFueSkge1xuICAgIGxldCBkYXRhOiBhbnkgPSB7XG4gICAgICBwYXR0ZXJuOiBldmVudD8ucGF0dGVybixcbiAgICAgIHdpbmRvdzogZXZlbnQ/LnN0YXJ0QmVmb3JlLFxuICAgICAgZmFpbGVkQWZ0ZXI6IGV2ZW50Py5lbmRBZnRlcixcbiAgICAgIGZhaWxlZF90aW1lX3V0YzogZXZlbnQuZmFpbGVkX3RpbWVfdXRjLFxuICAgICAgbGlmZWN5Y2xlRGV0YWlsczogZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzLFxuICAgICAgc3RhcnRGcm9tOiBOdW1iZXIoZXZlbnQ/LnN0YXJ0X29mX2RheV91dGMpLFxuICAgICAgdGltZUluMjRIcjogZXZlbnQudGltZSxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGV2ZW50LmF1dG9EZWFjdGl2YXRlLFxuICAgICAgc3RhcnREYXRlOiBOdW1iZXIoZXZlbnQ/LnN0YXJ0X29mX2RheV91dGMpLFxuICAgICAvLyByZXBvcnRJZDogZXZlbnQ/Lm9uX2NvbXBsZXRpb25fb2ZbMF0gPz8gMCxcbiAgICAgIHRpbWVJbjEyaHI6IHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lSW4xMihcbiAgICAgICAgZXZlbnQudGltZVxuICAgICAgKSxcbiAgICB9O1xuICAgIHRoaXMuZnJlcXVlbmN5RGF0YShkYXRhKTtcbiAgfVxuXG4gIGZyZXF1ZW5jeVBvcHVsYXRpb24oZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5wYXR0ZXJuID0gZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gZXZlbnQ/LmZyZXF1ZW5jeV90aW1lO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy53aW5kb3cgPSBldmVudD8ucmVtaW5kZXJfYmVmb3JlX2RheXM7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZCA9IGV2ZW50Py5mYWlsZWRfYWZ0ZXJfZGF5cztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zdGFydERhdGUgPSBldmVudD8uc3RhcnRfb2ZfZGF5X3V0YztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuc2VsZWN0ZWRSZXBvcnQgPSBldmVudD8ub25fY29tcGxldGlvbl9vZlswXSA/PyAwO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5kYXRlT2ZNb2RpZmllZCA9IGV2ZW50Py5kb21fdXRjO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5jb250aW51b3VzX2ZhaWxlZF9kYXlzID1cbiAgICAgIGV2ZW50Py5jb250aW51b3VzX2ZhaWxlZF9kYXlzO1xuICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSBldmVudD8ucGxhY2Vob2xkZXI7XG5cbiAgICAvLyBsZXQgb25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyA9IHRoaXMuZ2V0T25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyhldmVudCk7XG4gICAgLy8gaWYgKG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMgIT0gbnVsbCkge1xuICAgIC8vICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLm9uQ29tcGxldGlvblJlcG9ydERldGFpbHMgPVxuICAgIC8vICAgICBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzO1xuICAgIC8vIH1cbiAgfVxuXG4gIHNldFBheWxvYWQoZXZlbnQ6IGFueSk6IFJlc3BvbnNpYmlsaXR5IHwgIG51bGwge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBmcmVxdWVuY3lEYXRhKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5pbnZhbGlkVHlwZSA9PT0gJ3doZW4nKSB7XG4gICAgICB0aGlzLmludmFsaWRUeXBlID0gJyc7XG4gICAgfVxuICAgIHRoaXMuZnJlcXVlbmN5T2JqZWN0ID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnNldEZyZXF1ZW5jeU9iamVjdChldmVudCk7XG5cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPSBldmVudC5wYXR0ZXJuO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlbWluZGVyX2JlZm9yZV9kYXlzID1cbiAgICAgIGV2ZW50LmNhc2UgPT09ICdkYWlseScgPyAwIDogZXZlbnQud2luZG93O1xuXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZmFpbGVkX2FmdGVyX2RheXMgPSBldmVudC5mYWlsZWRBZnRlcjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mYWlsZWRfdGltZV91dGMgPSBldmVudC5mYWlsZWRfdGltZV91dGM7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubGlmZWN5Y2xlRGV0YWlscyA9IGV2ZW50LmxpZmVjeWNsZURldGFpbHM7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVwb3J0SWQgPSBldmVudC5yZXBvcnRJZCA/PyAwO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnN0YXJ0RGF0ZSA9IGV2ZW50LnN0YXJ0RnJvbTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS50aW1lSW4yNEhyID0gZXZlbnQudGltZUluMjRIcjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jb250aW51b3VzX2ZhaWxlZF9kYXlzID1cbiAgICAgIGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXM7XG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCBmYWxzZSk7XG4gICAgbGV0IHBheWxvYWQ6IGFueSA9IHtcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiBldmVudC5wYXR0ZXJuLFxuICAgICAgZnJlcXVlbmN5X3RpbWU6IGV2ZW50LnRpbWVJbjEyaHIsXG4gICAgICByZW1pbmRlcl9iZWZvcmVfZGF5czogZXZlbnQud2luZG93LFxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IGV2ZW50LmZhaWxlZEFmdGVyLFxuICAgICAgbGlmZWN5Y2xlX2RldGFpbHM6IGV2ZW50LmxpZmVjeWNsZURldGFpbHMsXG4gICAgICBzdGFydF9vZl9kYXlfdXRjOiBldmVudC5zdGFydEZyb20sXG4gICAgICBvbl9jb21wbGV0aW9uX29mOiBbZXZlbnQucmVwb3J0SWRdLFxuICAgICAgZG9tX3V0YzogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzLFxuICAgICAgcGxhY2Vob2xkZXI6IGV2ZW50LnBsYWNlaG9sZGVyLFxuICAgIH07XG5cbiAgICBldmVudC5mcmVxdWVuY3lfZGV0YWlscyA9IGV2ZW50LnBhdHRlcm47XG4gICAgLy8gbGV0IG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMgPSB0aGlzLmdldE9uQ29tcGxldGlvblJlcG9ydERldGFpbHMoZXZlbnQpO1xuICAgIC8vIGlmIChvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzICE9IG51bGwpIHtcbiAgICAvLyAgIHBheWxvYWQub25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyA9IG9uQ29tcGxldGlvblJlcG9ydERldGFpbHM7XG4gICAgLy8gfVxuICAgIHRoaXMuZnJlcXVlbmN5T2JqZWN0ID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnNldEZyZXF1ZW5jeU9iamVjdChldmVudCk7XG5cbiAgICB0aGlzLmZyZXF1ZW5jeVBvcHVsYXRpb24ocGF5bG9hZCk7XG4gIH1cblxuICBjaGVja0JsYW5rKGRhdGE6IHN0cmluZykge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBsZXQgdGV4dCA9IGRhdGE7XG4gICAgICByZXR1cm4gdGV4dC5yZXBsYWNlKC9cXCZuYnNwOy9nLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSXQgdGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYSBzdHJpbmcuXG4gICAqIEBwYXJhbSB7YW55fSByZXMgLSBhbnkgPSB7XG4gICAqL1xuICBnZXRGcmVxdWVuY3lQbGFjZWhvbGRlcihmcmVxdWVuY3k6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZyZXF1ZW5jeVRpbWUgPSAgIHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lSW4xMihmcmVxdWVuY3k/LnRpbWUpO1xuICAgICAgICBjb25zdCBmcmVxdWVuY3lEZXRhaWxzID0gZnJlcXVlbmN5LnBhdHRlcm4uc3BsaXQoJ34nKTtcbiAgICAgICAgc3dpdGNoIChmcmVxdWVuY3k/LnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdkYWlseSc6XG4gICAgICAgICAgICB0aGlzLmdldERhaWx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICd3ZWVrbHknOlxuICAgICAgICAgICAgdGhpcy5nZXRXZWVrbHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ21vbnRobHknOlxuICAgICAgICAgICAgdGhpcy5nZXRNb250aGx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdxdWFydGVybHknOlxuICAgICAgICAgICAgdGhpcy5nZXRRdWFydGVybHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2JpYW5udWFsbHknOlxuICAgICAgICAgICAgdGhpcy5nZXRCaWFubnVhbFBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAneWVhcmx5JzpcbiAgICAgICAgICAgIHRoaXMuZ2V0WWVhcmx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdvbmVfdGltZSc6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC8vIGNvbnN0IGRhdGVPYmplY3QgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgLy8gICBtb21lbnQoXG4gICAgICAgICAgICAgIC8vICAgICBmcmVxdWVuY3lbMV0gK1xuICAgICAgICAgICAgICAvLyAgICAgICAnLScgK1xuICAgICAgICAgICAgICAvLyAgICAgICBmcmVxdWVuY3lbMl0gK1xuICAgICAgICAgICAgICAvLyAgICAgICAnLScgK1xuICAgICAgICAgICAgICAvLyAgICAgICBmcmVxdWVuY3lbM10gK1xuICAgICAgICAgICAgICAvLyAgICAgICAnIDAwOjAwOjAwJyxcbiAgICAgICAgICAgICAgLy8gICAgICdZWVlZLU1NLUREIEhIOm1tOnNzJ1xuICAgICAgICAgICAgICAvLyAgICkudW5peCgpICogMTAwMFxuICAgICAgICAgICAgICAvLyApO1xuICAgICAgICAgICAgICAvLyAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgICAgICAgICAvLyB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICAgLy8gICAnT25lIFRpbWUgJyArXG4gICAgICAgICAgICAgIC8vICAgZGF0ZU9iamVjdC5nZXREYXRlKCkgK1xuICAgICAgICAgICAgICAvLyAgICcgJyArXG4gICAgICAgICAgICAgIC8vICAgdGhpcy5zaG9ydE1vbnRoW2RhdGVPYmplY3QuZ2V0TW9udGgoKV0gK1xuICAgICAgICAgICAgICAvLyAgICcgJyArXG4gICAgICAgICAgICAgIC8vICAgZGF0ZU9iamVjdC5nZXRGdWxsWWVhcigpICtcbiAgICAgICAgICAgICAgLy8gICAnIGJ5ICcgK1xuICAgICAgICAgICAgICAvLyAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdyYW5kb20nOlxuICAgICAgICAgICAgdGhpcy5nZXRSYW5kb21QbGFjZWhvbGRlcihmcmVxdWVuY3ksIGZyZXF1ZW5jeVRpbWUpO1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICAgICAgJ1lvdSBoYXZlIHNlbGVjdGVkIGFuIG9uZ29pbmcgZnJlcXVlbmN5Lic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdvbl9jb21wbGV0aW9uX29mJzpcbiAgICAgICAgICAgIC8vIHRoaXMuZ2V0T25Db21wbGV0aW9uT2YoXG4gICAgICAgICAgICAvLyAgIGZyZXF1ZW5jeSxcbiAgICAgICAgICAgIC8vICAgcmVzPy5vbl9jb21wbGV0aW9uX29mWzBdLFxuICAgICAgICAgICAgLy8gICByZXMub25Db21wbGV0aW9uUmVwb3J0RGV0YWlsc1xuICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgfVxuICAgICAgXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogSXQgZ2V0cyB0aGUgZnJlcXVlbmN5IGRldGFpbHMgYW5kIHJlcG9ydCBpZCwgdGhlbiBpdCBzZXRzIHRoZSBmcmVxdWVuY3kgcGxhY2Vob2xkZXIgdG8gdGhlIGZyZXF1ZW5jeVxuICAgKiBkZXRhaWxzIGFuZCB0aGVuIGl0IGdldHMgdGhlIG9uIGNvbXBsZXRpb24gb2YgcmVzcG9uc2liaWxpdHkgYW5kIHNldHMgdGhlIGZyZXF1ZW5jeSBwbGFjZWhvbGRlciB0b1xuICAgKiB0aGUgZnJlcXVlbmN5IGRldGFpbHMgYW5kIHRoZSByZXBvcnQgbmFtZS5cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbMF0gPSZndDsgXCIxXCJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHJlcG9ydElkIC0gbnVtYmVyXG4gICAqL1xuICBnZXRPbkNvbXBsZXRpb25PZihcbiAgICBmcmVxdWVuY3lEZXRhaWxzOiBhbnksXG4gICAgcmVwb3J0SWQ6IG51bWJlcixcbiAgICBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzOiBhbnlcbiAgKSB7XG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICBmcmVxdWVuY3lEZXRhaWxzWzNdICtcbiAgICAgICcgJyArXG4gICAgICAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAxID8gJ2RheXMnIDogJ2RheScpICtcbiAgICAgICcgYWZ0ZXIgY29tcGxldGlvbiBvZiAnO1xuICAgIGlmIChvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzKSB7XG4gICAgICBpZiAocmVwb3J0SWQgPT09IG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMuUmVwb3J0SWQpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1szXSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAxID8gJ2RheXMnIDogJ2RheScpICtcbiAgICAgICAgICAnIGFmdGVyIGNvbXBsZXRpb24gb2YgJyArXG4gICAgICAgICAgKG9uQ29tcGxldGlvblJlcG9ydERldGFpbHNcbiAgICAgICAgICAgID8gb25Db21wbGV0aW9uUmVwb3J0RGV0YWlscy5yZXBvcnRfbmFtZVxuICAgICAgICAgICAgOiAnJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIklmIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzNdIGlzIDEsIHRoZW4gc2V0IHRoZSBmcmVxdWVuY3lQbGFjZWhvbGRlciB0byAnRGFpbHkgYnkgJyArIGZyZXF1ZW5jeVRpbWUsXG4gICAqIG90aGVyd2lzZSBpZiBmcmVxdWVuY3lEZXRhaWxzWzNdIGlzIGdyZWF0ZXIgdGhhbiAxLCB0aGVuIHNldCB0aGUgZnJlcXVlbmN5UGxhY2Vob2xkZXIgdG8gJ0V2ZXJ5ICcgK1xuICAgKiBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSArICcgZGF5cyBieSAnICsgZnJlcXVlbmN5VGltZS5cIlxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFswLCAwLCAwLCAxXVxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTI6MDAgQU1cIlxuICAgKi9cbiAgZ2V0RGFpbHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xuICAgICBmcmVxdWVuY3lEZXRhaWxzID0gZnJlcXVlbmN5RGV0YWlscy5tYXAoTnVtYmVyKVxuICAgICAgaWYgKGZyZXF1ZW5jeURldGFpbHM/LmRheT09PSAxKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAnRGFpbHkgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJ0V2ZXJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHNbM10gKyAoZnJlcXVlbmN5RGV0YWlsc1szXSA+IDEgPyAnIGRheXMnIDogJyBkYXknKSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfVxuICAgIFxuICB9XG5cbiAgLyoqXG4gICAqIEl0IHRha2VzIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBudW1iZXJzIGFuZCByZXR1cm5zIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCB3b3Jkcy5cbiAgICpcbiAgICogVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBudW1iZXJzLCBsaWtlIHRoaXM6XG4gICAqXG4gICAqIGdldFdlZWtseVBsYWNlaG9sZGVyKFtcIjFcIixcIjIsMyw0LDUsNiw3XCIsXCIxXCIsXCIxXCJdLCBcIjEwOjAwIEFNXCIpXG4gICAqXG4gICAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCB3b3JkcywgbGlrZSB0aGlzOlxuICAgKlxuICAgKiBcIkV2ZXJ5IE1vbmRheSxUdWVzZGF5LFdlZG5lc2RheSxUaHVyc2RheSxGcmlkYXksU2F0dXJkYXkgYnkgMTA6MDAgQU1cIjwvY29kZT5cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCIxXCIsIFwiMSwyLDMsNCw1XCIsIFwiXCIsIFwiMVwiLCBcIlwiXVxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxuICAgKi9cbiAgZ2V0V2Vla2x5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcbiAgICB7XG4gICAgICBjb25zdCBzZWxlY3RlZERheSA9IGZyZXF1ZW5jeURldGFpbHNbMV0uc3BsaXQoJywnKS5tYXAoKGVsZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZGF5TmFtZVtwYXJzZUludChlbGUpIC0gMV07XG4gICAgICB9KTtcblxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID09PSAxKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICdFdmVyeSAnICsgc2VsZWN0ZWREYXkuam9pbigpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA9PT0gMikge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnRXZlcnkgYWx0ZXJuYXRlICcgKyBzZWxlY3RlZERheS5qb2luKCkgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xuICAgICAgfVxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID09PSAzKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICdFdmVyeSAzcmQgJyArIHNlbGVjdGVkRGF5LmpvaW4oKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9XG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAzKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICdFdmVyeSAnICtcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ3RoICcgK1xuICAgICAgICAgIHNlbGVjdGVkRGF5LmpvaW4oKSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB0YWtlcyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbnVtYmVycywgY29udmVydHMgdGhlbSB0byBtb250aCBuYW1lcywgYW5kIHRoZW4gYWRkcyB0aGVtIHRvIGFcbiAgICogc2VudGVuY2UuXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gW1wiMVwiLCBcIjFcIiwgXCIxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMlwiXVxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxuICAgKi9cbiAgZ2V0TW9udGhseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XG4gICAge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRNb250aCA9IGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKS5tYXAoKGVsZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZWxlKSAtIDFdO1xuICAgICAgfSk7XG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDEpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJzFzdCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJzJuZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJzNyZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMSB8fFxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzFcbiAgICAgICkge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICduZCBvZiBldmVyeSAnICtcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID4gMykge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ3RoIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBpcyAxLCAyLCAzLCAyMSwgMjIsIDIzLCBvciBncmVhdGVyIHRoYW4gMywgdGhlbiBzZXQgdGhlXG4gICAqIGZyZXF1ZW5jeVBsYWNlaG9sZGVyIHRvIGEgc3RyaW5nIHRoYXQgaW5jbHVkZXMgdGhlIGZyZXF1ZW5jeURldGFpbHNbMV0gYW5kIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzJdXG4gICAqIGFuZCB0aGUgZnJlcXVlbmN5VGltZS5cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCIzXCIsIFwiMVwiLCBcIjEsMiwzXCJdXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMDowMCBBTVwiXG4gICAqL1xuICBnZXRRdWFydGVybHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xuICAgIHtcbiAgICAgIGNvbnN0IHF1YXJ0ZXJseSA9IFtcbiAgICAgICAgJ0phbnVhcnksIEFwcmlsLCBKdWx5LCBPY3RvYmVyJyxcbiAgICAgICAgJ0ZlYnJ1YXJ5LCBNYXksIEF1Z3VzdCwgTm92ZW1iZXInLFxuICAgICAgICAnIE1hcmNoLCBKdW5lLCBTZXB0ZW1iZXIsIERlY2VtYmVyJyxcbiAgICAgIF07XG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDEpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJzFzdCBvZiBldmVyeSAnICtcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICcybmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMSB8fFxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzFcbiAgICAgICkge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIyKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAnbmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICdyZCBvZiBldmVyeSAnICtcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID4gMykge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ3RoIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSXQgdGFrZXMgYSBzdHJpbmcgb2YgY29tbWEgc2VwYXJhdGVkIG51bWJlcnMgYW5kIHJldHVybnMgYSBzdHJpbmcgb2YgY29tbWEgc2VwYXJhdGVkIG1vbnRoIG5hbWVzLlxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFtcIjFcIiwgXCIxXCIsIFwiMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJcIl1cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEwOjAwIEFNXCJcbiAgICovXG4gIGdldEJpYW5udWFsUGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcbiAgICB7XG4gICAgICBjb25zdCBzZWxlY3RlZE1vbnRoID0gZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpLm1hcCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChlbGUpIC0gMV07XG4gICAgICB9KTtcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnMXN0IG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMikge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnMm5kIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIxIHx8XG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzMVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMikge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ25kIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICdyZCBvZiBldmVyeSAnICtcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAndGggb2YgZXZlcnkgJyArXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzFdIGlzIGxlc3MgdGhhbiAyLCB0aGVuIHRoZSBmcmVxdWVuY3lQbGFjZWhvbGRlciBpcyBzZXQgdG8gdGhlIDFzdCwgMm5kLFxuICAgKiAzcmQsIG9yIG50aCBvZiBldmVyeSBtb250aCBieSBmcmVxdWVuY3lUaW1lLlxuICAgKlxuICAgKiBJZiB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBpcyBncmVhdGVyIHRoYW4gMSwgdGhlbiB0aGUgZnJlcXVlbmN5UGxhY2Vob2xkZXIgaXMgc2V0IHRvIHRoZSAxc3QsIDJuZCxcbiAgICogM3JkLCBvciBudGggb2YgZXZlcnkgbW9udGgsIEludGVydmFsOiBldmVyeSB5ZWFyU2VxdWVuY2UgeWVhcnMgYnkgZnJlcXVlbmN5VGltZS5cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCJZZWFybHlcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIl1cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEwOjAwIEFNXCJcbiAgICovXG4gIGdldFllYXJseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XG4gICAge1xuICAgICAgY29uc3QgeWVhclNlcXVlbmNlID1cbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAwID8gcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgOiAxO1xuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pIDwgMikge1xuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDEpIHtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICcxc3Qgb2YgZXZlcnkgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICcybmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMpIHtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICczcmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgICAndGggb2YgZXZlcnkgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMxIHx8XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIxXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMikge1xuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICAgJ25kIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMykge1xuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICAgJ3JkIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID4gMSkge1xuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDEpIHtcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgJzFzdCAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgJzJuZCAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMpIHtcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgJzNyZCAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAgICd0aCBvZiAgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xuICAgICAgICAgICAgJyB5ZWFycyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzMSB8fFxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAgICdzdCBvZiBldmVyeSAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAgICduZCBvZiBldmVyeSAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAgICdyZCBvZiBldmVyeSAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEl0IHRha2VzIGEgZnJlcXVlbmN5RGV0YWlscyBhcnJheSBhbmQgYSBmcmVxdWVuY3lUaW1lIGFycmF5IGFuZCByZXR1cm5zIGEgc3RyaW5nLlxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFs0LDEsMSwxXVxuICAgKi9cbiAgZ2V0UmFuZG9tUGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcbiAgICBjb25zdCBxdWFydGVybHkgPSBbXG4gICAgICAnSmFudWFyeSwgQXByaWwsIEp1bHksIE9jdG9iZXInLFxuICAgICAgJ0ZlYnJ1YXJ5LCBNYXksIEF1Z3VzdCwgTm92ZW1iZXInLFxuICAgICAgJyBNYXJjaCwgSnVuZSwgU2VwdGVtYmVyLCBEZWNlbWJlcicsXG4gICAgXTtcbiAgICB7XG4gICAgICBzd2l0Y2ggKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICdFdmVyeSB3ZWVrIGZvciAnICsgZnJlcXVlbmN5RGV0YWlsc1szXSArICcgcmFuZG9tIGluc3RhbmNlcyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICcgRXZlcnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJykubWFwKChlbGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGVsZSkgLSAxXTtcbiAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBhbGlnblxuICAgICAgICAgICAgfSkgK1xuICAgICAgICAgICAgJyBmb3IgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzNdICtcbiAgICAgICAgICAgICcgcmFuZG9tIGluc3RhbmNlcyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICdFdmVyeSAnICtcbiAgICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xuICAgICAgICAgICAgJyBmb3IgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzNdICtcbiAgICAgICAgICAgICcgcmFuZG9tIGluc3RhbmNlcyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICdFdmVyeSB5ZWFyIGZvciAnICsgZnJlcXVlbmN5RGV0YWlsc1szXSArICcgcmFuZG9tIGluc3RhbmNlcyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFwiV2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIGVkaXQgYnV0dG9uLCB0aGUgZWRpdCBidXR0b24gaXMgaGlkZGVuIGFuZCB0aGUgaW5wdXQgZmllbGQgaXMgc2hvd24uXG4gICAqIFdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBpbnB1dCBmaWVsZCwgdGhlIGlucHV0IGZpZWxkIGlzIGhpZGRlbiBhbmQgdGhlIGVkaXQgYnV0dG9uIGlzIHNob3duLlwiXG4gICAqIEBwYXJhbSB7YW55fSBldmVudCAtIGFueSAtIHRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZnVuY3Rpb25cbiAgICovXG4gIG9uRWRpdFdoYXQoZXZlbnQ6IGFueSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gdGhpcyB3aWxsIG1ha2UgdGhlIGV4ZWN1dGlvbiBhZnRlciB0aGUgYWJvdmUgYm9vbGVhbiBoYXMgY2hhbmdlZFxuICAgICAgdGhpcy5pc0VkaXRXaGF0ID0gZmFsc2U7XG4gICAgICB0aGlzLndoYXRJbnB1dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggYSBwYXJhbWV0ZXIgYW5kIHJldHVybnMgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAgICogQHBhcmFtIHthbnl9IFtyZXNdIC0gaXMgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSVxuICAgKi9cbiAgZ2V0RWRpdE1vcmVPcHRpb25zKHJlcz86IGFueSkge1xuICAgIGxldCBjaGVja2VkTW9yZU9wdGlvbnMgPSBbXTtcbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlICE9PSAnJykge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ09CSkVDVElWRScpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PQkpFQ1RJVkUgPSB0cnVlO1xuICAgIH1cbiAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUklTS19DTEFTU0lGSUNBVElPTicpO1xuICAgIHRoaXMubW9yZU9wdGlvbnMuUklTS19DTEFTU0lGSUNBVElPTiA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbT8ubGVuZ3RoID4gMCkge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1BST0dSQU0nKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuUFJPR1JBTSA9IHRydWU7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWQgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdFJlcXVpcmVkXG4gICAgKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnRk9STUFURV9FVklERU5DRScpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5GT1JNQVRFX0VWSURFTkNFID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjPy5sZW5ndGggPiAwKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUkMnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLmlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkICYmXG4gICAgICByZXM/LnJlc3BvbnNpYmlsaXR5Q2VudGVyQXJyICYmXG4gICAgICByZXM/LnJlc3BvbnNpYmlsaXR5Q2VudGVyQXJyPy5sZW5ndGhcbiAgICApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdSQycpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5SQyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGggPiAwKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnQ0hFQ0tQT0lOVFMnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zZWxlY3RlZEdSQ09iamVjdHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdHUkNfT0JKRUNUUycpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5HUkNfT0JKRUNUUyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXI/Lmxpc3Q/Lmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdSRVZJRVdFUicpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5SRVZJRVdFUiA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ09WRVJTRUVSJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc3VyYW5jZUxpc3Q/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdBU1NVUkFOQ0UnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuQVNTVVJBTkNFID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVxdWlyZXNBdWRpdExpc3Q/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdSRVFVSVJFU19BVURJVCcpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5SRVFVSVJFU19BVURJVCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5xdWVzdGlvbm5haXJlX3R5cGUgPT09ICdhc3Nlc3NtZW50Jykge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0FTU0VTU01FTlQnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuQVNTRVNTTUVOVCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5xdWVzdGlvbm5haXJlX3R5cGUgPT09ICdhc3Nlc3NtZW50X2NoZWNrcG9pbnQnKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnQ0hFQ0tQT0lOVFNfTkVXJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLkNIRUNLUE9JTlRTX05FVyA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGNoZWNrZWRNb3JlT3B0aW9ucyk7XG4gIH1cblxuICAvLyBGb3JtYXQgJiBFdmlkZW5jZVxuICB0ZXN0RnVuY3Rpb24oKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZS50cmltKCkgIT09ICcnICYmXG4gICAgICB0aGlzLmlzRWRpdFdoYXQgPT09IGZhbHNlXG4gICAgKSB7XG4gICAgICB0aGlzLmlzRWRpdFdoYXQgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZGVzY3JpcHRpb24gPT0gJzxicj4nKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5kZXNjcmlwdGlvbiA9ICcnO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlID09ICc8YnI+Jykge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlID0gJyc7XG4gICAgfVxuICB9XG5cbiAgcmV2aWV3ZXJUeXBlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93ID1cbiAgICAgIGV2ZW50ID09PSAnU0VRVUVOVElBTCcgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICBzZWxlY3RlZFNhbXBsZURhdGEoZXZlbnQ6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRTYW1wbGUgPSBldmVudDtcbiAgICB0aGlzLnRlbXBDaGVja1ZhbHVlID0gZXZlbnQ7XG4gIH1cblxuICAvKipcbiAgICogSXQgcG9wdWxhdGVzIGEgbGlzdCBvZiBhc3N1cmFuY2UgY2F0ZWdvcmllcyBiYXNlZCBvbiB0aGUgdGVzdCBwbGFuIGNhdGVnb3J5IHNlbGVjdGVkLlxuICAgKiBAcGFyYW0ge2FueX0gdGVzdFBsYW5DYXRlZ29yeSAtIGFueVxuICAgKi9cbiAgcG9wdWxhdGVBc3N1cmFuY2VMaXN0KHRlc3RQbGFuQ2F0ZWdvcnk6IGFueSkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc3VyYW5jZSA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMuYXNzdXJhbmNlQ2F0ZWdvcmllc0xpc3QsXG4gICAgICBbdGVzdFBsYW5DYXRlZ29yeT8uY2F0ZWdvcnlfaWRdLFxuICAgICAgJ2NhdGVnb3J5X2lkJ1xuICAgICk7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXVkaXRfY2F0ZWdvcnlfZGV0YWlscyA9IHRlc3RQbGFuQ2F0ZWdvcnk7XG4gICAgaWYgKHRlc3RQbGFuQ2F0ZWdvcnkuc2FtcGxlKSB7XG4gICAgICB0aGlzLmlzU2FtcGxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2FtcGxlVmFsdWUgPSB0ZXN0UGxhbkNhdGVnb3J5LnNhbXBsZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTYW1wbGUgPSAwO1xuICAgIH1cblxuICAgIGlmICh0ZXN0UGxhbkNhdGVnb3J5LnBlcmNlbnRhZ2UpIHtcbiAgICAgIHRoaXMuaXNTYW1wbGUgPSB0cnVlO1xuICAgICAgdGhpcy5zYW1wbGVQZXJjZW50YWdlID0gdGVzdFBsYW5DYXRlZ29yeS5wZXJjZW50YWdlO1xuICAgICAgdGhpcy5zZWxlY3RlZFNhbXBsZSA9IDE7XG4gICAgfVxuICAgIHRoaXMudGVtcENoZWNrVmFsdWUgPSB0aGlzLnNlbGVjdGVkU2FtcGxlO1xuICAgIHRoaXMuc2VuZEF1ZGl0UmVtaW5kZXJzVmFsdWUgPSB0ZXN0UGxhbkNhdGVnb3J5LmZyZXF1ZW5jeV9wYXR0ZXJuXG4gICAgICA/IHBhcnNlSW50KHRlc3RQbGFuQ2F0ZWdvcnkuZnJlcXVlbmN5X3BhdHRlcm4uc3BsaXQoJ34nKVsyXSlcbiAgICAgIDogMjtcbiAgICB0aGlzLmF1ZGl0VGltZSA9IG1vbWVudChcbiAgICAgIHRlc3RQbGFuQ2F0ZWdvcnk/LmZyZXF1ZW5jeV90aW1lLFxuICAgICAgJ0hIOm1tOnNzJ1xuICAgICkuZm9ybWF0KCdISDptbSBhJyk7XG4gIH1cblxuIFxuXG4gIC8vb24gc2FtcGxlIHRvZ2dsZSBvbi9vZmZcbiAgY2hlY2tJbnB1dFZhbHVlKGV2ZW50OiBhbnkpIHtcbiAgICBsZXQga2V5ID0gZXZlbnQuY2hhckNvZGU7IC8vICAgICAgICAga2V5ID0gZXZlbnQua2V5Q29kZTsgIChCb3RoIGNhbiBiZSB1c2VkKVxuICAgIHJldHVybiAoa2V5ID4gNDcgJiYga2V5IDwgNTgpIHx8IGtleSA9PSA0NTtcbiAgfVxuXG4gIHN3aXRjaEVuYWJsZShldmVudDogYm9vbGVhbikge1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFNhbXBsZSA9IHRoaXMudGVtcENoZWNrVmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTYW1wbGUgPSAtMTtcbiAgICB9XG4gIH1cblxuICAvLyBUT0RPOiAgc2VsZWN0IEFzc2Vzc21lbnQgbGlzdCBhbmQgc2V0IGlkIHRvIHBheWxvYWRcbiAgb25Bc3Nlc3NtZW50U2VsZWN0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmlzQXNzZXNzbWVudCA9IGZhbHNlO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQgPSBldmVudDtcbiAgfVxuICAvLyBUT0RPOiBQb3B1bGF0ZSBhc3Nlc3NtZW50IGRhdGEgZnJvbSBhbHJlYWR5IHNlbGVjdGVkIGRhdGFcbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBhc3Nlc3NtZW50RGV0YWlscyA6IHNlbGVjdGVkIGFzc2Vzc21lbnQgZGV0YWlscyBsaWtlIGl0J3Mgb2JqZWN0IGlkIGFuZCBjYXRlZ29yeV9pZFxuICAgKi9cbiAgZ2V0QXNzZXNzbWVudERldGFpbHMoYXNzZXNzbWVudERldGFpbHM6IGFueSwgdHlwZT86IHN0cmluZykge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlXG4gICAgICAuZ2V0QXNzZXNzbWVudERldGFpbHNCeUlEKGFzc2Vzc21lbnREZXRhaWxzLmFzc2Vzc21lbnRfaWQpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNldEFzc2Vzc21lbnREYXRhKHJlcywgYXNzZXNzbWVudERldGFpbHMsIHR5cGUpO1xuICAgICAgfSk7XG4gIH1cblxuICBzZXRBc3Nlc3NtZW50RGF0YShyZXM6IGFueSwgYXNzZXNzbWVudERldGFpbHM6IGFueSwgdHlwZT86IHN0cmluZykge1xuICAgIGlmIChyZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0eXBlID09PSAnYXNzZXNzbWVudCcpIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlEZXRhaWxzID0gcmVzWzBdLmNhdGVnb3J5LmZpbmQoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGUuX2lkID09IGFzc2Vzc21lbnREZXRhaWxzLmNhdGVnb3J5X2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnMuQVNTRVNTTUVOVCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGFzc2Vzc21lbnREYXRhID0ge1xuICAgICAgICAgIGNhdGVnb3J5X2lkOiBhc3Nlc3NtZW50RGV0YWlscy5jYXRlZ29yeV9pZCxcbiAgICAgICAgICBhc3Nlc3NtZW50X2lkOiBhc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkLFxuICAgICAgICAgIGFzc2Vzc21lbnREZXRhaWxzOiB7XG4gICAgICAgICAgICBpZDogYXNzZXNzbWVudERldGFpbHMuYXNzZXNzbWVudF9pZCxcbiAgICAgICAgICAgIGFzc2Vzc21lbnRfbmFtZTogcmVzWzBdLmFzc2Vzc21lbnRfbmFtZSxcbiAgICAgICAgICAgIHF1ZXN0aW9uczogcmVzWzBdLnF1ZXN0aW9uc0NvdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2F0ZWdvcnlfZGV0YWlsczogY2F0ZWdvcnlEZXRhaWxzLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50ID0gSlNPTi5wYXJzZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShhc3Nlc3NtZW50RGF0YSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFNfTkVXID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wb3N0QXNzZXNzbWVudCh7IGFzc2Vzc21lbnREZXRhaWxzOiByZXNbMF0ucXVlc3Rpb25zIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uUmVtb3ZlQ2hlY2twb2ludHModHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5vblJlbW92aW5nQ2hlY2twb2ludC5lbWl0KHR5cGUpO1xuICB9XG5cbiAgcmVtb3ZlQ2hlY2twb2ludCgpIHtcbiAgICB0aGlzLm1vcmVPcHRpb25zLkNIRUNLUE9JTlRTID0gZmFsc2U7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgQXNzZXNzbWVudCBkZXRhaWxzXG4gICAqL1xuICBwb3N0QXNzZXNzbWVudChldmVudDogYW55KSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubmV3X2NoZWNrcG9pbnRzID0gZXZlbnQuYXNzZXNzbWVudERldGFpbHM7XG4gICAgdGhpcy5jaGVja3BvaW50Q291bnQgPSBldmVudC5hc3Nlc3NtZW50RGV0YWlscy5lbGVtZW50cz8ubGVuZ3RoO1xuICAgIHRoaXMuY2hlY2twb2ludENvdW50VXBkYXRlZC5lbWl0KHRoaXMuY2hlY2twb2ludENvdW50KTtcbiAgICB0aGlzLnNldElzVXBsb2FkZWQoZmFsc2UpO1xuICB9XG5cbiAgc2V0SXNVcGxvYWRlZChldmVudDogYW55KSB7XG4gICAgaWYgKCFldmVudCkgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XG4gICAgdGhpcy5hdXRoU2VydmljZS5wcmV2aWV3UGFuZWwubmV4dChldmVudCk7XG4gIH1cblxuICBjaGVja0RlZmF1bHRQcm9ncmFtT25SZW1vdmUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuYWxsUHJvZ2FtU2VsZWN0ZWQgPSB0aGlzLmFsbFByb2dhbVNlbGVjdGVkLmZpbHRlcihcbiAgICAgIChwcm9ncmFtOiBhbnkpID0+IHByb2dyYW0/LmlkICE9PSBldmVudD8uaWRcbiAgICApO1xuICAgIHRoaXMucmVtb3ZlUHJvZ3JhbShldmVudCk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB0YWtlcyBhbiBhcnJheSBvZiBudW1iZXJzIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHVuaXF1ZSBudW1iZXJzLlxuICAgKiBAcGFyYW0ge2FueX0gYXJyYXkgLSBUaGUgYXJyYXkgeW91IHdhbnQgdG8gZ2V0IHRoZSB1bmlxdWUgdmFsdWVzIGZyb20uXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMuXG4gICAqL1xuICBnZXRVbmlxdWVJZHMoYXJyYXk6IGFueSkge1xuICAgIGNvbnN0IHVuaXF1ZSA9IFsuLi5uZXcgU2V0KGFycmF5KV07XG4gICAgcmV0dXJuIHVuaXF1ZTtcbiAgfVxuXG4gIG9wZW5Bc3NpZ25lZUNoYW5nZUNvbmZpcm1hdGlvbihldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPSAnQU5ZX09ORSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9ICcnO1xuICAgICAgdGhpcy5hc3NpZ25lZVR5cGVDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIG1vZGUgaXMgRURJVCwgZW1pdCB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSB7YW55fSBldmVudCAtIGFueSAtIHRoZSBldmVudCB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSByYWRpbyBidXR0b25cbiAgICovXG4gIG9uUmV2aWV3ZXJXb3JrZmxvd0NoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvdyA9XG4gICAgICBldmVudCA9PT0gJ3NlcXVlbnRpYWwnID8gdHJ1ZSA6IGZhbHNlO1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJyAmJiB0aGlzLmhhc1Jldmlld2VyKSB7XG4gICAgICB0aGlzLm9uUmV2aWV3ZXJUeXBlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGdldE90aGVyR1JDT2JqZWN0cyhldmVudD86IGFueSkge1xuICAgIGlmICh0aGlzLm90aGVyR1JDU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm90aGVyR1JDU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIGV2ZW50ID0ge1xuICAgICAgICByY19pZHM6ICcnLFxuICAgICAgICB0eXBlOiB0aGlzLnNlbGVjdGVkR1JDVGFiLFxuICAgICAgICBzdGF0ZTogMSxcbiAgICAgICAgcGFnZTogMSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChldmVudD8uc2VhcmNoU3RyaW5nICYmIHRoaXMuZ3JjU2VhcmNoU3RyaW5nICE9PSBldmVudD8uc2VhcmNoU3RyaW5nKSB7XG4gICAgICB0aGlzLmdyY1NlYXJjaFN0cmluZyA9IGV2ZW50Py5zZWFyY2hTdHJpbmc7XG4gICAgICB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoe1xuICAgICAgICByY19pZHM6ICcnLFxuICAgICAgICBzZWFyY2hTdHJpbmc6IHRoaXMuZ3JjU2VhcmNoU3RyaW5nLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuZ3JjTG9hZGVyID0gdHJ1ZTtcbiAgICBldmVudFsncmNfaWRzJ10gPSB0aGlzLmdldEFsbFJDSWRzKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjKTtcbiAgICBldmVudFsnZ3JjVHlwZSddID0gdGhpcy5zZWxlY3RlZEdSQ1RhYjtcbiAgICB0aGlzLm90aGVyR1JDU3Vic2NyaXB0aW9uID0gdGhpcy5ncmNTZXJ2aWNlXG4gICAgICAuZ2V0R1JDTGlzdChldmVudClcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmdyY0xpc3QgPSBkYXRhO1xuICAgICAgICB0aGlzLmdyY0xvYWRlciA9IGZhbHNlO1xuICAgICAgICBpZihldmVudD8ubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzID0gZGF0YT8uZGF0YT8uZmlsdGVyKChpdGVtOiBhbnkpID0+IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cy5pbmNsdWRlcyhpdGVtLmdyY2lkKSk7XG4gICAgICAgICAgdGhpcy5zZXRPdGhlckdSQ1R5cGVzRm9ybWF0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gYGdldE90aGVyR1JDVGFiQ291bnRgIHJldHJpZXZlcyB0aGUgY291bnQgb2YgZGlmZmVyZW50IHR5cGVzIG9mIGl0ZW1zIChhc3NldHMsXG4gICAqIHByb2Nlc3NlcywgdmVuZG9ycywgaW52ZW50b3J5KSBhbmQgdXBkYXRlcyB0aGUgY29ycmVzcG9uZGluZyB0YWJzIHdpdGggdGhlIGNvdW50LlxuICAgKiBAcGFyYW0ge2FueX0gW2V2ZW50XSAtIFRoZSBcImV2ZW50XCIgcGFyYW1ldGVyIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlXG4gICAqIFwiZ2V0T3RoZXJHUkNUYWJDb3VudFwiIGZ1bmN0aW9uLiBJdCBpcyBvZiB0eXBlIFwiYW55XCIsIHdoaWNoIG1lYW5zIGl0IGNhbiBhY2NlcHQgYW55IGRhdGEgdHlwZS5cbiAgICovXG4gIGdldE90aGVyR1JDVGFiQ291bnQoZXZlbnQ/OiBhbnkpIHtcbiAgICBldmVudFsncmNfaWRzJ10gPSB0aGlzLmdldEFsbFJDSWRzKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjKTtcbiAgICB0aGlzLmdyY1RhYkxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5ncmNTZXJ2aWNlLmdldEdSQ1RhYnNDb3VudChldmVudCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub3RoZXJHUkNDYXJkLmZvckVhY2goKHRhYjogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IE9CSkVDVF9MQUJFTDogYW55ID0ge1xuICAgICAgICAgIEFTU0VUOiAnQXNzZXRzJyxcbiAgICAgICAgICBQUk9DRVNTOiAnUHJvY2Vzc2VzJyxcbiAgICAgICAgICBWRU5ET1I6ICdWZW5kb3JzJyxcbiAgICAgICAgICBJTlZFTlRPUlk6ICdJbnZlbnRvcnknLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmdyY1RhYkxvYWRlciA9IGZhbHNlO1xuICAgICAgICBjb25zdCBUQUJfTkFNRSA9IE9CSkVDVF9MQUJFTFt0YWI/LnRpdGxlPy50b1VwcGVyQ2FzZSgpXTtcbiAgICAgICAgaWYgKFRBQl9OQU1FKSB7XG4gICAgICAgICAgdGFiLnRpdGxlID0gVEFCX05BTUU7XG4gICAgICAgICAgdGFiLnZhbHVlID0gaW5kZXg7XG4gICAgICAgICAgdGFiLnNlbGVjdGVkQ291bnQgPSAwO1xuICAgICAgICAgIHRhYi5rZXkgPSBUQUJfTkFNRT8udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXkgPSBgJHt0YWIua2V5fV90eXBlX2NvdW50YDtcbiAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIHRhYi5jb3VudCA9IGRhdGFba2V5XTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRBbGxSQ0lkcyhyY0lkczogYW55KSB7XG4gICAgY29uc3QgYWxsSWRzOiBudW1iZXJbXSA9IHJjSWRzLmZsYXRNYXAoKHJjOiBhbnkpID0+IFtcbiAgICAgIC4uLnJjLml0ZW1fcGFyZW50X2lkcy5tYXAoTnVtYmVyKSxcbiAgICAgIC4uLnJjLml0ZW1fY2hpbGRfaWRzLm1hcChOdW1iZXIpLFxuICAgICAgTnVtYmVyKHJjLnJjX2lkKSxcbiAgICBdKTtcblxuICAgIHJldHVybiB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RcbiAgICAgIC5maWx0ZXIoKHJjOiBhbnkpID0+IGFsbElkcy5pbmNsdWRlcyhyYz8ucmNfaWQpKVxuICAgICAgLm1hcCgoZWxlOiBhbnkpID0+IGVsZS5faWQpXG4gICAgICAuam9pbignLCcpO1xuICB9XG5cbiAgc2V0T3RoZXJHUkNUeXBlc0Zvcm1hdGUoKSB7XG4gICAgY29uc3QgZ3JjVHlwZXMgPSBHUkNfVFlQRV9BUlJBWTtcbiAgICB0aGlzLnJlc2V0R1JDRGF0YVdpdGhUeXBlcygpO1xuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5ncmNEYXRhV2l0aFR5cGVzW2dyY1R5cGVzW2l0ZW0/LnR5cGVdXT8ucHVzaChpdGVtKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0R1JDRGF0YVdpdGhUeXBlcygpIHtcbiAgICB0aGlzLmdyY0RhdGFXaXRoVHlwZXMgPSB7XG4gICAgICBhc3NldHM6IFtdLFxuICAgICAgcHJvY2Vzc2VzOiBbXSxcbiAgICAgIHZlbmRvcnM6IFtdLFxuICAgICAgaW52ZW50b3J5OiBbXSxcbiAgICB9O1xuICB9XG5cbiAgcmVtb3ZlT3RoZXJHUkNPYmplY3RzKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBncmNUeXBlcyA9IEdSQ19UWVBFX0FSUkFZO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cyA9XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzLmZpbHRlcihcbiAgICAgICAgKGdyYzogYW55KSA9PiBncmM/Ll9pZCAhPT0gZXZlbnQ/Ll9pZFxuICAgICAgKTtcbiAgICB0aGlzLmZpbHRlck90aGVyR1JDRGF0YShldmVudCwgZ3JjVHlwZXNbZXZlbnQ/LnR5cGVdKTtcbiAgICB0aGlzLm90aGVyR1JDQ2FyZFswXS5zZWxlY3RlZENvdW50XG4gICAgICA/ICh0aGlzLm90aGVyR1JDQ2FyZFtldmVudD8udHlwZV0uc2VsZWN0ZWRDb3VudCAtPSAxKVxuICAgICAgOiAwO1xuICB9XG5cbiAgZmlsdGVyT3RoZXJHUkNEYXRhKGV2ZW50OiBhbnksIHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuZ3JjRGF0YVdpdGhUeXBlc1t0eXBlXSA9IHRoaXMuZ3JjRGF0YVdpdGhUeXBlc1t0eXBlXT8uZmlsdGVyKFxuICAgICAgKGdyYzogYW55KSA9PiBncmM/Ll9pZCAhPT0gZXZlbnQ/Ll9pZFxuICAgICk7XG4gIH1cblxuICAvLyBOZXcgUHJvZ3JhbSBMaXN0XG4gIHByb2dyYW1zITogTGlzdEl0ZW1bXTsgLy8gQXNzaWduIG1vY2sgZGF0YVxuICBzZWxlY3RlZFByb2dyYW1zOiBhbnlbXSA9IFtdO1xuXG5cbiAgQFZpZXdDaGlsZCgnY3VzdG9tSXRlbVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgY3VzdG9tSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG5cblxuXG4gIG9uSXRlbXNTZWxlY3RlZENoYW5nZShpdGVtczogTGlzdEl0ZW1bXSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtcyA9IGl0ZW1zO1xuICAgIHRoaXMuYWxsUHJvZ2FtU2VsZWN0ZWQgPSAoW10gYXMgYW55KS5jb25jYXQoLi4uIE9iamVjdC52YWx1ZXMoaXRlbXMpKTtcbiAgfVxuXG4gIHNlbGVjdENhdGVnb3J5KCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSA9IFtdLmNvbmNhdCguLi5PYmplY3QudmFsdWVzKHRoaXMuc2VsZWN0ZWRQcm9ncmFtcykpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRVc2VySW5mbygpIHtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKT8udXNlcjtcblxuICAgIHJldHVybiB7XG4gICAgICBtZW1iZXJfZW1haWw6IGN1cnJlbnRVc2VyPy5lbWFpbCxcbiAgICAgIG1lbWJlcl9pZDogY3VycmVudFVzZXIuaWQsXG4gICAgICBtZW1iZXJfbmFtZTogY3VycmVudFVzZXIubmFtZSxcbiAgICAgIG9yZ2FuaXNhdGlvbl9pZDogY3VycmVudFVzZXIub3JnYW5pc2F0aW9uX2lkLFxuICAgICAgX2lkOiB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkuX2lkLFxuICAgIH1cbiAgfVxuXG4gIHJlbW92ZVByb2dyYW0ocHJvZ3JhbTogYW55KTogdm9pZCB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRQcm9ncmFtcyk7XG4gICAga2V5cy5mb3JFYWNoKChrZXk6IGFueSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNba2V5XS5maW5kSW5kZXgoXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LmlkID09PSBwcm9ncmFtPy5pZFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1zW2tleV0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHBvcHVsYXRlUmVzcG9uc2liaWxpdHlEZXRhaWxzKCkge1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgY29uc3QgcmVzID0gdGhpcy5yZXNwb25zaWJpbGl0eURldGFpbHM7XG4gICAgY29uc3QgY3VycmVudHNVZXJJbmZvID0gdGhpcy5jdXJyZW50VXNlckluZm87XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0gPSB7XG4gICAgICBhc3NpZ25vcnM6IHtcbiAgICAgICAgZW5hYmxlOiBmYWxzZSxcbiAgICAgICAgbGlzdDpcbiAgICAgICAgICB0aGlzLnNldExpc3QodGhpcy5hc3NpZ25vcnNMaXN0LCBbcmVzLmFzc2lnbm9ySWRdLCAndWlkJylcbiAgICAgICAgICAgID8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyB0aGlzLnNldExpc3QodGhpcy5hc3NpZ25vcnNMaXN0LCBbcmVzLmFzc2lnbm9ySWRdLCAndWlkJylcbiAgICAgICAgICAgIDogW2N1cnJlbnRzVWVySW5mb10sXG4gICAgICB9LFxuICAgICAgcmVzcG9uc2liaWxpdHk6IHtcbiAgICAgICAgbmFtZTogcmVzPy50aXRsZSxcbiAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IHJlcz8ua2V5LFxuICAgICAgfSxcbiAgICAgIGFzc2lnbmVlczoge1xuICAgICAgICB3aG9DYW5Db21wbGV0ZTogcmVzLmFzc2lnbmVlLnR5cGUudG9Mb3dlckNhc2UoKSAsXG4gICAgICAgIGxpc3Q6XG4gICAgICAgICAgICB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0LFxuICAgICAgICAgICAgICAgIHJlcy5hc3NpZ25lZS51c2VySWQgLFxuICAgICAgICAgICAgICAgICd1aWQnXG4gICAgICAgICAgICAgIClcbiAgICAgIH0sXG4gICAgICBhbGxvd0VkaXREdWVEYXRlOiByZXM/LmFsbG93RWRpdER1ZURhdGUsXG4gICAgICBmcmVxdWVuY3k6IHJlcz8uZnJlcXVlbmN5X2RldGFpbHMsXG4gICAgICBkZXNjcmlwdGlvbjogcmVzPy5ub3RlcyxcbiAgICAgIG9iamVjdGl2ZTogcmVzPy5vYmplY3RpdmUsXG4gICAgICByYzogdGhpcy5zZXRMaXN0KFxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QsXG4gICAgICAgIHJlcy5yZXNwb25zaWJpbGl0eUNlbnRlcj8uaWQsXG4gICAgICAgICdyY2lkJ1xuICAgICAgKSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZTpcbiAgICAgIHJlcy5yZXNwb25zaWJpbGl0eUNlbnRlcj8udHlwZSA9PT0gJ2FsbCcgPyAxOiAwLFxuICAgICAgY2F0ZWdvcnk6IHJlcz8ucHJvZ3JhbV9jYXRfaWRzPy5sZW5ndGhcbiAgICAgICAgPyByZXM/LmNhdGVnb3J5X2lkc19hcnJheS5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+ICFyZXMucHJvZ3JhbV9jYXRfaWRzPy5pbmNsdWRlcyhlbGUpXG4gICAgICAgICAgKVxuICAgICAgICA6IHJlcz8uY2F0ZWdvcnlfaWRzX2FycmF5LFxuICAgICAgcHJvZ3JhbV9zZWxlY3RlZF9pZHM6IHJlcz8uY2F0ZWdvcnlfaWQ/LnNwbGl0KCcsJykgPz8gW10sXG4gICAgICBjYXRlZ29yeV9pZDogcmVzPy5jYXRlZ29yeV9pZCA/PyAnJyxcblxuICAgICAgcHJvZ3JhbTogcmVzPy5wcm9ncmFtRGV0YWlscz8uY2F0ZWdvcnlfaWRcbiAgICAgICAgPyBbcmVzPy5wcm9ncmFtRGV0YWlsc11cbiAgICAgICAgOiBbXSxcbiAgICAgIGNoZWNrcG9pbnRJbnN0cnVjdGlvbjogcmVzPy5jaGVja3BvaW50X2Rlc2NyaXB0aW9uLFxuICAgICAgY3VzdG9tVGFnczogcmVzPy50YWdzICxcbiAgICAgIGNoZWNrcG9pbnRzOiByZXM/LmNoZWNrcG9pbnRfZGV0YWlsc1xuICAgICAgICA/IEpTT04ucGFyc2UocmVzPy5jaGVja3BvaW50X2RldGFpbHMpXG4gICAgICAgIDogJycsXG4gICAgICByZXZpZXdlcnM6IHtcbiAgICAgICAgc2VxdWVudGlhbFdvcmtmbG93OlxuICAgICAgICAgIHJlcz8ucmV2aWV3ZXI/LnR5cGUgPT0gJ3NlcXVlbnRpYWwnID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICByZXZpZXdGcmVxdWVuY3k6IHtcbiAgICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6XG4gICAgICAgICAgICByZXM/LnJldmlld2VyPy5mcmVxdWVuY3k/LmNvbXBsZXRlQnkgPz8gMixcbiAgICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOlxuICAgICAgICAgICAgcmVzPy5yZXZpZXdlcj8uZnJlcXVlbmN5Py5lbmRBZnRlciA/PyAyLFxuICAgICAgICB9LFxuICAgICAgICBsaXN0OiB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5yZXZpZXdlcnNMaXN0LFxuICAgICAgICAgIHJlcz8ucmV2aWV3ZXI/LnVzZXJJZCxcbiAgICAgICAgICAndWlkJ1xuICAgICAgICApXG4gICAgICB9LFxuXG4gICAgICBvdmVyc2VlcnM6IHtcbiAgICAgICAgbGlzdDogcmVzPy5vdmVyc2VlclxuICAgICAgICAgID8gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgICB0aGlzLm92ZXJzZWVyc0xpc3QsXG4gICAgICAgICAgICAgIHJlcz8ub3ZlcnNlZXI/LnN1Y2Nlc3M/LnVzZXJJZCxcbiAgICAgICAgICAgICAgJ3VpZCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IFtdLFxuICAgICAgICBub3RpZnlMaXN0OiByZXM/Lm92ZXJzZWVyPy5mYWlsPy51c2VySWRcbiAgICAgICAgICA/IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0LFxuICAgICAgICAgICAgICByZXM/Lm92ZXJzZWVyPy5mYWlsPy51c2VySWQsXG4gICAgICAgICAgICAgICd1aWQnXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBbXSxcbiAgICAgIH0sXG4gICAgICBmb3JtYXRBbmRFdmlkZW5jZToge1xuICAgICAgICBmb3JtYXRSZXF1aXJlZDpcbiAgICAgICAgICByZXM/LmV2aWRlbmNlPy5mb3JtYXQ/LmRhdGE/Lmxlbmd0aCA+IDAgXG4gICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgIGZvcm1hdEZpbGVzOiByZXMuZXZpZGVuY2U/LmZvcm1hdD8udHlwZSA9PT0gJ2ZpbGUnID8gcmVzPy5ldmlkZW5jZT8uZm9ybWF0Py5kYXRhIDogW10sXG4gICAgICAgIGZvcm1hdExpbmtzOiByZXM/LmV2aWRlbmNlPy5mb3JtYXQ/LnR5cGUgPT09ICdsaW5rJyA/IHJlcz8uZXZpZGVuY2U/LmZvcm1hdD8uZGF0YSA6IFtdLFxuICAgICAgICBldmlkZW5jZVJlcXVpcmVkOiByZXM/LmV2aWRlbmNlPy5yZXF1aXJlZCA/IHRydWUgOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhc3N1cmFuY2VMaXN0OiBbXSxcbiAgICAgIHJlcXVpcmVzQXVkaXRMaXN0OiBbXSxcbiAgICAgIHJpc2tDbGFzczogcmVzPy5yaXNrQ2xhc3MsXG4gICAgICBzZWxlY3RlZEdSQ09iamVjdHM6IHJlcz8uZ3JjT2JqZWN0SWQgPz8gW10sXG4gICAgfTtcbiAgICAgaWYocmVzLmdyY09iamVjdElkPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zZWxlY3RlZEdSQ09iamVjdHMgPSByZXM/LmdyY09iamVjdElkO1xuICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoe21vZGU6ICdFRElUJ30pO1xuICAgIH1cbiAgICB0aGlzLnBvcHVsYXRlRnJlcXVlbmN5RGV0YWlscyhyZXMuZnJlcXVlbmN5KTtcbiAgICB0aGlzLmdldEVkaXRNb3JlT3B0aW9ucyhyZXMpO1xuICAgXG4gIH1cblxuICBwb3B1bGF0ZUZyZXF1ZW5jeURldGFpbHMoZnJlcXVlbmN5OiBhbnkpIHtcbiAgICBjb25zdCBnZXRQYXR0ZXJuID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNyZWF0ZUZyZXF1ZW5jeVBhdHRlcm4oZnJlcXVlbmN5KTtcbiAgICBjb25zdCBsaWZlY3ljbGVEZXRhaWxzID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmdldExpZmVjeWNsZVBhdHRlcm4oZnJlcXVlbmN5KTtcbiAgICBmcmVxdWVuY3kucGF0dGVybiA9IGdldFBhdHRlcm47XG4gICAgZnJlcXVlbmN5LmxpZmVjeWNsZV9kZXRhaWxzID0gbGlmZWN5Y2xlRGV0YWlscy5wYXR0ZXJuO1xuICAgIGZyZXF1ZW5jeS5zdGFydF9vZl9kYXlfdXRjID0gbGlmZWN5Y2xlRGV0YWlscy5zdGFydEZyb207XG4gICAgdGhpcy5mcmVxdWVuY3lEYXRhUG9wdWxhdGlvbihmcmVxdWVuY3kpO1xuICAgIHRoaXMuZ2V0RnJlcXVlbmN5UGxhY2Vob2xkZXIoZnJlcXVlbmN5KTtcblxuICB9XG5cbiAgLy8gZnJlcXVlbmN5RGF0YVBvcHVsYXRpb24ocmVzOiBhbnkpIHtcbiAgLy8gICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPSByZXM/LmZyZXF1ZW5jeV9kZXRhaWxzO1xuICAvLyB9XG4gIFxuICBcbn1cbiIsIjxkaXYgY2xhc3M9XCJ3b3JrZmx3LWNvbXBsaWFuY2VcIiAqbmdJZj1cIiFzaG93U21pbGV5XCI+XG4gIDwhLS0gQmVoYWxmIC0tPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJtb2RlICE9PSAnRURJVCdcIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25vcnMnXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25vcnMnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cIlxuICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbm9ycydcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGltZ1xuICAgICAgICBbc3JjXT1cIkFTU0VUUy5pbV9jcmVhdGluZ1wiXG4gICAgICAgIGFsdD1cImltXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8ubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbm9ycydcbiAgICAgICAgXCJcbiAgICAgIC8+XG5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbm9ycydcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgICA+SSBhbSBjcmVhdGluZyB0aGlzIHJlc3BvbnNpYmlsaXR5IG9uIGJlaGFsZiBvZiBzb21lb25lIGVsc2VcbiAgICAgICAgICA8YXBwLWNzLXN3aXRjaFxuICAgICAgICAgICAgW25nVmFsdWVdPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5lbmFibGVcIlxuICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMuZW5hYmxlID0gJGV2ZW50O1xuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3QgPSBbXVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9hcHAtY3Mtc3dpdGNoPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8ubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbm9ycydcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzaWdub3JzJywgdHJ1ZSlcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJXaG8gaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoaXMgcmVzcG9uc2liaWxpdHk/XCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5lbmFibGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbm9ycydcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGJfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8uc2xpY2UoMCwgMSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25vcnMnLCBiX3VzZXIpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiYl91c2VyLm1lbWJlcl9uYW1lXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3sgYl91c2VyLm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYmVoYWxmLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgYl91c2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5zbGljZSgwLDIpXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25vcnMnLGJfdXNlcilcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tiX3VzZXIubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cImJlaGFsZi5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPitcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzaWdub3JzJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzaWdub3JzJywgdHJ1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNiZWhhbGYgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgYl91c2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0IHwgc2xpY2UgOiAyO1xuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbm9ycycsIGJfdXNlcilcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGJfdXNlci5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPHBcbiAgICAgICAgICAqbmdJZj1cImludmFsaWRUeXBlID09PSAnd2hvbSdcIlxuICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgICAgICAgPlxuICAgICAgICAgIFBsZWFzZSBzZWxlY3QgdGhlIHBlcnNvbiByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhpcyByZXNwb25zaWJpbGl0eS5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gV2hhdCAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdmcmFtZXdvcmsnXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXNwb25zaWJpbGl0eU5hbWUnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cIlxuICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJlc3BvbnNpYmlsaXR5Py5uYW1lLnRyaW0oKSAhPT0gJycgJiZcbiAgICAgICAgIWZvY3VzLnJlc3BvbnNpYmlsaXR5TmFtZVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwiQVNTRVRTLndoYXRcIlxuICAgICAgICBhbHQ9XCJpbVwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXNwb25zaWJpbGl0eT8ubmFtZS50cmltKCkgPT09ICcnIHx8XG4gICAgICAgICAgZm9jdXMucmVzcG9uc2liaWxpdHlOYW1lXG4gICAgICAgIFwiXG4gICAgICAvPlxuXG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVzcG9uc2liaWxpdHk/Lm5hbWUudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICAgICFmb2N1cy5yZXNwb25zaWJpbGl0eU5hbWVcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+XG4gICAgICAgICAgV2hhdD8gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgaXNGcmFtZXdvcmtBdmFpbGFibGUgJiZcbiAgICAgICAgICAgICAgbW9kZSAhPT0gJ0VESVQnICYmXG4gICAgICAgICAgICAgIG9wZW5lZEZyb20gIT09ICdSSVNLX1RSRUFUTUVOVCcgJiZcbiAgICAgICAgICAgICAgYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfdHlwZSAhPT0gJ2NvbXBsaWFuY2VfYXVkaXQnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyYW1ld29yaycsIHRydWUpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBTZWxlY3QgRnJvbSBBIGZyYW1ld29ya1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXNwb25zaWJpbGl0eT8ua2V5UmVzcG9uc2liaWxpdHlcIlxuICAgICAgICAgIGNsYXNzPVwiaW5kaWNhdG9yXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCInVGhpcyByZXNwb25zaWJpbGl0eSBpcyBtYXJrZWQgYXMga2V5IHJlc3BvbnNpYmlsaXR5LidcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGVhNzA7PC9pPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJlc3BvbnNpYmlsaXR5Py5uYW1lLnRyaW0oKSA9PSAnJyB8fCAhaXNFZGl0V2hhdFxuICAgICAgICAgIFwiXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIldoYXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5P1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ3aGF0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoZm9jdXNpbik9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXNwb25zaWJpbGl0eU5hbWUnLCB0cnVlKVwiXG4gICAgICAgICAgKGZvY3Vzb3V0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4gICAgICAgICAgKGNsaWNrT3V0c2lkZSk9XCJ0ZXN0RnVuY3Rpb24oKVwiXG4gICAgICAgICAgI3doYXRcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJlc3BvbnNpYmlsaXR5Py5uYW1lLnRyaW0oKSAhPSAnJyAmJiBpc0VkaXRXaGF0XG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPnt7XG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eT8ubmFtZVxuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF90eXBlICE9PSAnY29tcGxpYW5jZV9hdWRpdCdcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRWRpdFdoYXQoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cFxuICAgICAgICAgICpuZ0lmPVwiaW52YWxpZFR5cGUgPT09ICd3aGF0J1wiXG4gICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcbiAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICA+XG4gICAgICAgICAgUGxlYXNlIGVudGVyIGEgbmFtZSBmb3IgdGhpcyByZXNwb25zaWJpbGl0eS5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3dpdGNoLXJvdyBhbGlnbi1yaWdodFwiPlxuICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXG4gICAgICAgICAgICBbbmdWYWx1ZV09XCJyZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHk/LmtleVJlc3BvbnNpYmlsaXR5XCJcbiAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkua2V5UmVzcG9uc2liaWxpdHkgPSAkZXZlbnRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+S2V5IFJlc3BvbnNpYmlsaXR5XG4gICAgICAgICAgPC9hcHAtY3Mtc3dpdGNoPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFdobyAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25lZXMnXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25lZXMnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cIlxuICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbmVlcydcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGltZ1xuICAgICAgICBbc3JjXT1cIkFTU0VUUy5jYXNlX2Fzc2lnbmVlc1wiXG4gICAgICAgIGFsdD1cImltXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcydcbiAgICAgICAgXCJcbiAgICAgIC8+XG5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbmVlcydcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZWRpdC1kdWUtZGF0ZVwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICAgICAgPldobz8gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxuICAgICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImFsbG93RWRpdER1ZURhdGVGZWF0dXJlRmxhZyAmJiBmYWxzZVwiXG4gICAgICAgICAgICBjbGFzcz1cInN3aXRjaC1yb3cgYWxpZ24tcmlnaHRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXG4gICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hbGxvd0VkaXREdWVEYXRlXCJcbiAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwicmVzcG9uc2liaWxpdHlGb3JtLmFsbG93RWRpdER1ZURhdGUgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICA+QUxMT1cgQVNTSUdORUUgVE8gRURJVCBDT01QTEVURUQgV09SSzxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAnSWYgaXTigJlzIGVuYWJsZWQsIHRoZSBhc3NpZ25lZSB3aWxsIGhhdmUgdGhlIG9wdGlvbiB0byBtb2RpZnkgYSBwcmV2aW91c2x5IGNvbXBsZXRlZCBkdWUgZGF0ZS4nXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9hcHAtY3Mtc3dpdGNoPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0IHZ4LW10LTBcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICghZmVhdHVyZUZsYWdfZ3JvdXBzIHx8XG4gICAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFnX2dyb3VwcykpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2Fzc2lnbmVlcycsIHRydWUpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hvIGlzIHJlc3BvbnNpYmxlIGZvciBjb21wbGV0aW5nIHRoZSByZXNwb25zaWJpbGl0eT9cIlxuICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzKSB8fFxuICAgICAgICAgICAgKChyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwKSAmJlxuICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGVfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8uc2xpY2UoMCwgMSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLCBlX3VzZXIpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiZV91c2VyLm1lbWJlcl9uYW1lXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3sgZV91c2VyLm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5iZ1wiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFzc2lnbmVlcy5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/LnNsaWNlKDEpLmxlbmd0aCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiICpuZ0lmPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoJ2Fzc2lnbmVlcycsIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0WzBdKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInVzZXIucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhYWxsR3JvdXBBc3NpZ25lZSB8fCBtb2RlICE9PSAnRURJVCdcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgJ2dyb3VwYXNzaWduZWVzJyxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFswXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0WzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3RbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGVuZ3RoPjFcIiBbY2xhc3MucGx1c109XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGVuZ3RoPjJcIiAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgZV91c2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5zbGljZSgwLDIpXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLGVfdXNlcilcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tlX3VzZXIubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cImFzc2lnbmVlcy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPitcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiICpuZ0lmPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0WzBdKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWV9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInVzZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPiAre3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiYgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMFwiID4mPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGhcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiKCFhbGxHcm91cEFzc2lnbmVlIHx8IG1vZGUgIT09ICdFRElUJylcIiBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdncm91cGFzc2lnbmVlcycscmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFswXSlcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3RbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggLSAxfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbmVlcycgJiZcbiAgICAgICAgICAgICAgKCFmZWF0dXJlRmxhZ19ncm91cHMgfHxcbiAgICAgICAgICAgICAgICAoZmVhdHVyZUZsYWdfZ3JvdXBzICYmICghYWxsR3JvdXBBc3NpZ25lZSB8fCBtb2RlICE9PSAnRURJVCcpKSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzaWduZWVzJywgdHJ1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICN1c2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGVfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdCB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbmVlcycsIGVfdXNlcilcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGVfdXNlci5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNncm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0XG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoZmVhdHVyZUZsYWdfZ3JvdXBzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICghYWxsR3JvdXBBc3NpZ25lZSB8fCBtb2RlICE9PSAnRURJVCcpKVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnZ3JvdXBhc3NpZ25lZXMnLCBncm91cClcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwLmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG5cbiAgICAgICAgPHBcbiAgICAgICAgICAqbmdJZj1cImludmFsaWRUeXBlID09PSAnd2hvJ1wiXG4gICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcbiAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICA+XG4gICAgICAgICAgUGxlYXNlIHNlbGVjdCB0aGUgcGVyc29uIHJlc3BvbnNpYmxlIGZvciBjb21wbGV0aW5nIHRoaXNcbiAgICAgICAgICByZXNwb25zaWJpbGl0eS5cbiAgICAgICAgPC9wPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzR3JvdXBBc3NpZ25lZFwiPlxuICAgICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICAgICpuZ0lmPVwibW9kZSAhPT0gJ0VESVQnXCJcbiAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9ICdBTEwnXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT0gJ0FMTCdcIlxuICAgICAgICAgICAgW25hbWVdPVwiJ3doYXQnXCJcbiAgICAgICAgICAgID5BTEwgU0VMRUNURUQgUEVSU09OUyBORUVEIFRPIENPTVBMRVRFIFRISVM8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgJ0lmIHNlbGVjdGVkLCBzZXBhcmF0ZSByZXNwb25zaWJpbGl0aWVzIHdpbGwgYmUgY3JlYXRlZCBmb3IgZWFjaCBwZXJzb24uJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgICAgKm5nSWY9XCJtb2RlICE9PSAnRURJVCdcIlxuICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9ICdBTllfT05FJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT0gJ0FOWV9PTkUnXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIid3aGF0J1wiXG4gICAgICAgICAgICA+QU5ZIFNFTEVDVEVEIFBFUlNPTiBDQU4gQ09NUExFVEUgVEhJU1xuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdJZiBzZWxlY3RlZCwgb25seSBvbmUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBjcmVhdGVkLidcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID4mI3hlOTFmOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzd2l0Y2gtcm93IGFsaWduLXJpZ2h0XCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIG1vZGUgPT0gJ0VESVQnICYmXG4gICAgICAgICAgICAgICghZmVhdHVyZUZsYWdfZ3JvdXBzIHx8XG4gICAgICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNzLXN3aXRjaFxuICAgICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJvcGVuQXNzaWduZWVDaGFuZ2VDb25maXJtYXRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cIlxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT0gJ0FOWV9PTkUnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEFOWSBTRUxFQ1RFRCBQRVJTT04gQ0FOIENPTVBMRVRFIFRISVNcbiAgICAgICAgICAgIDwvYXBwLWNzLXN3aXRjaD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjYXNzaWduZWVzIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGVfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdCB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLCBlX3VzZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBlX3VzZXIubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBXaGVuPyAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdmcmVxdWVuY3knICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cIlxuICAgICAgICAhcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxpbWdcbiAgICAgICAgW3NyY109XCJBU1NFVFMud2hlblwiXG4gICAgICAgIGFsdD1cImltXCJcbiAgICAgICAgKm5nSWY9XCIhcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knXCJcbiAgICAgIC8+XG5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2ZyZXF1ZW5jeScgJiZcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmZyZXF1ZW5jeSAhPSAnJyAmJlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZnJlcXVlbmN5ICE9ICc1fjB+MH4wJ1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICAgID5XaGVuPyA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsXG4gICAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmZyZXF1ZW5jeSA9PSAnJyB8fFxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgPT0gJzV+MH4wfjAnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdCBidXR0b24tc2VjXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIHRydWUpXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmcmVxdWVuY3lQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICBTZXQgQSBmcmVxdWVuY3lcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgIT0gJycgJiZcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZnJlcXVlbmN5ICE9PSAnNX4wfjB+MCdcbiAgICAgICAgICBcIlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQgYnV0dG9uLXNlY1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwXCJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImZyZXF1ZW5jeVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgPnt7IGZyZXF1ZW5jeVBsYWNlaG9sZGVyIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdmcmVxdWVuY3knXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCB0cnVlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPkVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwXG4gICAgICAgICAgKm5nSWY9XCJpbnZhbGlkVHlwZSA9PT0gJ3doZW4nXCJcbiAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxuICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgID5cbiAgICAgICAgICBQbGVhc2Ugc2VsZWN0IHRoZSBmcmVxdWVuY3kgb2Ygb2NjdXJyZW5jZSBmb3IgdGhpcyByZXNwb25zaWJpbGl0eS5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gTm90ZXMgLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnbm90ZXMnXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdub3RlcycgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImxlZnRcIlxuICAgICAgW2NsYXNzLmNoZWNrZWRdPVwiXG4gICAgICAgIGNoZWNrQmxhbmsocmVzcG9uc2liaWxpdHlGb3JtPy5kZXNjcmlwdGlvbikudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICAhZm9jdXMuZGVzY3JpcHRpb25cbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGltZ1xuICAgICAgICBbc3JjXT1cIkFTU0VUUy5ub3Rlc1wiXG4gICAgICAgIGFsdD1cImltXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjaGVja0JsYW5rKHJlc3BvbnNpYmlsaXR5Rm9ybT8uZGVzY3JpcHRpb24pLnRyaW0oKSA9PT0gJycgfHxcbiAgICAgICAgICBmb2N1cy5kZXNjcmlwdGlvblxuICAgICAgICBcIlxuICAgICAgLz5cblxuICAgICAgPHN2Z1xuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgY2hlY2tCbGFuayhyZXNwb25zaWJpbGl0eUZvcm0/LmRlc2NyaXB0aW9uKS50cmltKCkgIT09ICcnICYmXG4gICAgICAgICAgIWZvY3VzLmRlc2NyaXB0aW9uXG4gICAgICAgIFwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+Tm90ZXM8L2xhYmVsPlxuICAgICAgICA8dmNvbXBseS1lZGl0b3JcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJ7XG4gICAgICAgICAgICBtb2RlOiAncHJpbWUnLFxuICAgICAgICAgICAgY29sb3JQYWxldHRlOiB0cnVlLFxuICAgICAgICAgICAgbGluazogdHJ1ZSxcbiAgICAgICAgICAgIGlkOiAnbm90ZXMnLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICdBZGQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBjb21wbGV0aW5nIHRoZSByZXNwb25zaWJpbGl0eSdcbiAgICAgICAgICB9XCJcbiAgICAgICAgPjwvdmNvbXBseS1lZGl0b3I+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBPYmplY3RpdmUgLS0+XG4gIDxkaXZcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5PQkpFQ1RJVkVcIlxuICAgIFthdHRyLmlkXT1cIidPQkpFQ1RJVkUnXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnb2JqZWN0aXZlJ1wiXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnb2JqZWN0aXZlJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGVmdFwiXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgY2hlY2tCbGFuayhyZXNwb25zaWJpbGl0eUZvcm0/Lm9iamVjdGl2ZSkudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICAhZm9jdXMub2JqZWN0aXZlXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxpbWdcbiAgICAgICAgW3NyY109XCJBU1NFVFMub2JqZWN0aXZlc1wiXG4gICAgICAgIGFsdD1cImltXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjaGVja0JsYW5rKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub2JqZWN0aXZlKS50cmltKCkgPT09ICcnIHx8XG4gICAgICAgICAgZm9jdXMub2JqZWN0aXZlXG4gICAgICAgIFwiXG4gICAgICAvPlxuXG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGNoZWNrQmxhbmsocmVzcG9uc2liaWxpdHlGb3JtPy5vYmplY3RpdmUpLnRyaW0oKSAhPT0gJycgJiZcbiAgICAgICAgICAhZm9jdXMub2JqZWN0aXZlXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk9iamVjdGl2ZTwvbGFiZWw+XG4gICAgICAgIDx2Y29tcGx5LWVkaXRvclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZVwiXG4gICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJ7XG4gICAgICAgICAgICBtb2RlOiAncHJpbWUnLFxuICAgICAgICAgICAgY29sb3JQYWxldHRlOiB0cnVlLFxuICAgICAgICAgICAgaWQ6ICdvYmplY3RpdmUnLFxuICAgICAgICAgICAgbGluazogdHJ1ZSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAnVGhpcyBvcHRpb24gbGV0cyB5b3Ugc3BlY2lmeSBhbiBvYmplY3RpdmUgZm9yIHRoZSByZXNwb25zaWJpbGl0eS4nXG4gICAgICAgICAgfVwiXG4gICAgICAgID48L3Zjb21wbHktZWRpdG9yPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gUmVzcG9uc2liaWxpdHkgQ2VudGVyIC0tPlxuICA8ZGl2XG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uUkNcIlxuICAgIFthdHRyLmlkXT1cIidSQydcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3JjJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGVmdFwiXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ3JjJ1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwiQVNTRVRTLnJlc3BvbnNpYmlsaXR5X2NlbnRlclwiXG4gICAgICAgIGFsdD1cIlwiXG4gICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID09IDAgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcIlxuICAgICAgLz5cblxuICAgICAgPHN2Z1xuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGggPiAwICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAncmMnXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UmVzcG9uc2liaWxpdHkgQ2VudGVyIDwvbGFiZWw+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20taW5wdXRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjJywgdHJ1ZSlcIlxuICAgICAgICAgICAgYXJpYS1wbGFjZWhvbGRlcj1cIlNlbGVjdCB0aGUgcmVzcG9uc2liaWxpdHkgY2VudGVyIG9yIHRoZSByZXNwb25zaWJpbGl0eSBjZW50ZXJzIGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5LlwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwhLS0gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjJyx0cnVlKVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJlc3BvbnNpYmlsaXR5IENlbnRlcihzKVwiIHJlYWRvbmx5PiAtLT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgW2NsYXNzLnJlYWRPbmx5XT1cIm9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCdcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCByYyBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5zbGljZSgwLCAxKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyYycsIHJjKVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwib3BlbmVkRnJvbSAhPT0gJ1JJU0tfVFJFQVRNRU5UJ1wiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyYz8uaXRlbV9uYW1lXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgID57eyByYz8uaXRlbV9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJjUG9wb3Zlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/LnNsaWNlKDEpLmxlbmd0aCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGg+MVwiIFtjbGFzcy5wbHVzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aD4yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IHJjIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/LnNsaWNlKDAsMilcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmMnLHJjKVwiICpuZ0lmPVwib3BlbmVkRnJvbSAhPT0gJ1JJU0tfVFJFQVRNRU5UJ1wiPiYjeGU5MGQ7PC9pPnt7cmM/Lml0ZW1fbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJyYy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmVzcG9uc2liaWxpdHlGb3JtPy5yYz8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdyYycgJiYgb3BlbmVkRnJvbSAhPT0gJ1JJU0tfVFJFQVRNRU5UJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmMnLCB0cnVlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXBwLXBvcG92ZXIgI3JjUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCByYyBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnJjIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ3JjJywgcmMpXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7IHJjLml0ZW1fbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkICYmXG4gICAgICAgICAgICAobW9kZSAhPSAnRURJVCcgfHwgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoIDw9IDEpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDwhLS0gPGFwcC1jcy1yYWRpbz48ZGl2IFthcHBUb29sdGlwXT1cIidDcmVhdGUgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcyBmb3IgZWFjaCByZXNwb25zaWJpbGl0eSBjZW50ZXInXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+Q1JFQVRFIFNFUEFSQVRFIFJFU1BPTlNJQklMSVRJRVMgRk9SIEVBQ0ggUkVTUE9OU0lCSUxJVFkgQ0VO4oCmPC9kaXY+PGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidJZiBzZWxlY3RlZCwgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcyB3aWxsIGJlIGNyZWF0ZWQgZm9yIGVhY2ggUmVzcG9uc2liaWxpdHkgQ2VudGVyLidcIiBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIiB0eXBlPVwid2hpdGVcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkxZjs8L2k+PC9hcHAtY3MtcmFkaW8+IC0tPlxuICAgICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgbW9kZSA9PSAnRURJVCcgJiZcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9PT0gMSAmJlxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGggPiAxXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwicmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID09PSAwXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIidmZl9yZXNwb25zaWJpbGl0eV9yY19saW5rJ1wiXG4gICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cIm9uUmNUeXBlQ2hhbmdlKDApXCJcbiAgICAgICAgICAgID48ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwicmMtcmFkaW8tdGV4dFwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdDcmVhdGUgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcyBmb3IgZWFjaCByZXNwb25zaWJpbGl0eSBjZW50ZXJzJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBDUkVBVEUgU0VQQVJBVEUgUkVTUE9OU0lCSUxJVElFUyBGT1IgRUFDSCBSRVNQT05TSUJJTElUWSBDRU7igKZcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdJZiBzZWxlY3RlZCwgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcyB3aWxsIGJlIGNyZWF0ZWQgZm9yIGVhY2ggUmVzcG9uc2liaWxpdHkgQ2VudGVyLidcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID4mI3hlOTFmOzwvaVxuICAgICAgICAgICAgPjwvYXBwLWNzLXJhZGlvXG4gICAgICAgICAgPlxuICAgICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgbW9kZSA9PSAnRURJVCcgJiZcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9PT0gMSAmJlxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGggPiAxXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwicmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID09PSAxXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIidmZl9yZXNwb25zaWJpbGl0eV9yY19saW5rJ1wiXG4gICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cIm9uUmNUeXBlQ2hhbmdlKDEpXCJcbiAgICAgICAgICAgID5ESVNQTEFZIFRIRSBTQU1FIFJFU1BPTlNJQklMSVRZIElOIEFMTCBSRVNQT05TSUJJTElUWSBDRU5URVJTPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdJZiBzZWxlY3RlZCwgdGhlIHNhbWUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBsaW5rZWQgdG8gZWFjaCBSZXNwb25zaWJpbGl0eSBDZW50ZXIuJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICA+PC9hcHAtY3MtcmFkaW9cbiAgICAgICAgICA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gUHJvZ3JhbSAtLT5cbiAgPGRpdlxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/LlBST0dSQU1cIlxuICAgIFthdHRyLmlkXT1cIidQUk9HUkFNJ1wiXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Byb2dyYW0nXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdwcm9ncmFtJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGVmdFwiXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtPy5sZW5ndGggPiAwICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAncHJvZ3JhbSdcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGltZ1xuICAgICAgICBbc3JjXT1cIkFTU0VUUy5jYXNlX2NhdGVnb3J5XCJcbiAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aCA9PSAwIHx8XG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdwcm9ncmFtJ1xuICAgICAgICBcIlxuICAgICAgLz5cblxuICAgICAgPHN2Z1xuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Byb2dyYW0nXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlByb2dyYW08L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCJzZWxlY3RlZENhdGVnb3J5Py5sZW5ndGggPT0gMFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWlucHV0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdwcm9ncmFtJywgdHJ1ZSlcIlxuICAgICAgICAgICAgYXJpYS1wbGFjZWhvbGRlcj1cIlNlbGVjdCB0aGUgUHJvZ3JhbSBvciBQcm9ncmFtIENhdGVnb3JpZXMgdGhhdCB0aGlzIHJlc3BvbnNpYmlsaXR5IHJlbGF0ZXMgdG8uXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPCEtLSA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncHJvZ3JhbScsdHJ1ZSlcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSZXNwb25zaWJpbGl0eSBwcm9ncmFtKHMpXCIgcmVhZG9ubHk+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJzZWxlY3RlZENhdGVnb3J5Py5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAhaGlkZGVuTGlzdD8uaW5jbHVkZXMoJ1BST0dSQU0nKSAmJlxuICAgICAgICAgICAgICAgICAgIXByb2dyYW0/LmlzVmlld09ubHlQcm9ncmFtXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdwcm9ncmFtJywgYWxsUHJvZ2FtU2VsZWN0ZWRbMF0pXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJhbGxQcm9nYW1TZWxlY3RlZFswXT8ubmFtZSA/PyAnLS0nXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3sgYWxsUHJvZ2FtU2VsZWN0ZWRbMF0/Lm5hbWUgPz8gXCItLVwiIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgIChjbGljayk9XCJwcm9ncmFtLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhbGxQcm9nYW1TZWxlY3RlZD8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICt7eyBhbGxQcm9nYW1TZWxlY3RlZD8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtPy5sZW5ndGg+MlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IHByb2dyYW0gb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtXCI+PGkgY2xhc3M9XCJpY29uc1wiICpuZ0lmPVwiZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnKVwiIChjbGljayk9XCJyZW1vdmUoJ3Byb2dyYW0nLHByb2dyYW0pXCI+JiN4ZTkwZDs8L2k+IHt7cHJvZ3JhbT8ubmFtZT8/Jy0tJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtIC0gPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbT8ubGVuZ3RoID4gMlwiIGNsYXNzPVwiY291bnRcIiB0eXBlPVwiYnV0dG9uXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicHJvZ3JhbS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPisge3tyZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/LnNsaWNlKDIpLmxlbmd0aH19PC9idXR0b24+IC0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmxpbmtlZFByb2dyYW0/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInByb2dyYW0ucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4rIHt7cmVzcG9uc2liaWxpdHlGb3JtPy5saW5rZWRQcm9ncmFtPy5sZW5ndGggLSAxfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdwcm9ncmFtJyAmJiAhaGlkZGVuTGlzdC5pbmNsdWRlcygnUFJPR1JBTScpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Byb2dyYW0nLCB0cnVlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjcHJvZ3JhbSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBwcm9ncmFtIG9mIGFsbFByb2dhbVNlbGVjdGVkIHwgc2xpY2U6IDE7XG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXZhdGFyLWNhcmRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJwcm9ncmFtPy5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAhaGlkZGVuTGlzdD8uaW5jbHVkZXMoJ1BST0dSQU0nKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIXByb2dyYW0/LmlzVmlld09ubHlQcm9ncmFtXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdwcm9ncmFtJywgcHJvZ3JhbSlcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IHByb2dyYW0/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmN1c3RvbVRhZ3M/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWcgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5jdXN0b21UYWdzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFnPy50YWdfbmFtZT8udHJpbSgpXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtbXQtMlwiPnt7XG4gICAgICAgICAgICAgICAgdGFnPy50YWdfbmFtZVxuICAgICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhZy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyB0YWc/LnRhZ19uYW1lIH19XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEZvcm1hdCAmIEV2aWRlbmNlIC0tPlxuICA8ZGl2XG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uRk9STUFURV9FVklERU5DRVwiXG4gICAgW2F0dHIuaWRdPVwiJ0ZPUk1BVEVfRVZJREVOQ0UnXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnZm9ybWF0ZV9ldmlkZW5jZSdcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Zvcm1hdGVfZXZpZGVuY2UnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxuICAgICAgPGltZ1xuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWQgPT0gZmFsc2UgJiZcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRGaWxlcy5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdExpbmtzPy5sZW5ndGggPT0gMFxuICAgICAgICBcIlxuICAgICAgICBbc3JjXT1cIkFTU0VUUy5mb3JtYXRfZXZpZGVuY2VcIlxuICAgICAgICBhbHQ9XCJpbVwiXG4gICAgICAvPlxuXG4gICAgICA8c3ZnXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZXZpZGVuY2VSZXF1aXJlZCB8fFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdEZpbGVzLmxlbmd0aCB8fFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdExpbmtzPy5sZW5ndGhcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICA+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGFwcC1mb3JtYXQtYW5kLWV2aWRlbmNlXG4gICAgICAgICh1cGRhdGVGaWxlcyk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdmb3JtYXRlX2V2aWRlbmNlJywgJGV2ZW50KVwiXG4gICAgICAgIFttb2RlXT1cIidyZXNwb25zaWJpbGl0eSdcIlxuICAgICAgICBbZm9ybWF0RXZpZGFuY2VEYXRhXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uZm9ybWF0QW5kRXZpZGVuY2VcIlxuICAgICAgPlxuICAgICAgPC9hcHAtZm9ybWF0LWFuZC1ldmlkZW5jZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBBc3Nlc3NtZW50IC0tPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uQVNTRVNTTUVOVFwiXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgW2F0dHIuaWRdPVwiJ0FTU0VTU01FTlQnXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnaXNBc3Nlc3NtZW50J1wiXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnaXNBc3Nlc3NtZW50JyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGVmdFwiXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZFwiXG4gICAgPlxuICAgICAgPGltZ1xuICAgICAgICAqbmdJZj1cIiFyZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZFwiXG4gICAgICAgIFtzcmNdPVwiQVNTRVRTLmFzc2Vzc21lbnRzXCJcbiAgICAgICAgYWx0PVwiaW1cIlxuICAgICAgLz5cblxuICAgICAgPHN2Z1xuICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkXCJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICA+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkFTU0VTU01FTlRTPC9sYWJlbD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkXCJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgYWN0aXZhdGVTZWxlY3RvcignaXNBc3Nlc3NtZW50JywgdHJ1ZSk7IGlzQXNzZXNzbWVudCA9IHRydWVcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhbiBhc3Nlc3NtZW50IGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aFwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgKm5nSWY9XCJhc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF90eXBlICE9PSAnY29tcGxpYW5jZV9hdWRpdCdcIlxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2Fzc2Vzc21lbnQnLCBjYXRlZ29yeSlcIlxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnREZXRhaWxzXG4gICAgICAgICAgICAgICAgICA/LmFzc2Vzc21lbnRfbmFtZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnREZXRhaWxzXG4gICAgICAgICAgICAgICAgICA/LmFzc2Vzc21lbnRfbmFtZVxuICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cIndvcmtmbG93TGF2ZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LXBsLTEgdngtcHItMSB2eC1saC00IHZ4LW1sLTEgdngtdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyByZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LnF1ZXN0aW9ucyB9fVxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50RGV0YWlscz8ucXVlc3Rpb25zID4gMVxuICAgICAgICAgICAgICAgICAgPyBcIlF1ZXN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICA6IFwiUXVlc3Rpb25cIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X3R5cGUgIT09ICdjb21wbGlhbmNlX2F1ZGl0J1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgIGFjdGl2YXRlU2VsZWN0b3IoJ2lzQXNzZXNzbWVudCcsIHRydWUpOyBpc0Fzc2Vzc21lbnQgPSB0cnVlXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIENoZWNrcG9pbnRzIC0tPlxuICA8IS0tICpuZ0lmPVwibW9yZU9wdGlvbnMuY2hlY2twb2ludHNcIiAtLT5cbiAgPGRpdlxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/LkNIRUNLUE9JTlRTXCJcbiAgICBbYXR0ci5pZF09XCInQ0hFQ0tQT0lOVFMnXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMnXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdjaGVja3BvaW50cycgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxuICAgICAgPGltZ1xuICAgICAgICBbc3JjXT1cIkFTU0VUUy5jaGVja3BvaW50c1wiXG4gICAgICAgIGFsdD1cImltXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMnXG4gICAgICAgIFwiXG4gICAgICAvPlxuXG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uY2hlY2twb2ludHM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NoZWNrcG9pbnRzJ1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5cbiAgICAgICAgICA8IS0tIHt7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzfGpzb259fVxuICAgICAgICAgICAgICAgIHt7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRJbnN0cnVjdGlvbn19IC0tPlxuXG4gICAgICAgICAgQ2hlY2twb2ludHNcbiAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzPy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NoZWNrcG9pbnRzJyx0cnVlKVwiPisgQWRkIENoZWNrcG9pbnRzPC9idXR0b24+IC0tPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3QgYnV0dG9uLXNlY1wiXG4gICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzPy5sZW5ndGggPT09IDBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cycsIHRydWUpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQWRkIGNoZWNrcG9pbnRzIGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5XCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cycsIHRydWUpXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEFkZCBDaGVja3BvaW50c1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGggPiAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBjaGVja3BvaW50IG9mIHJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8uc2xpY2UoMCwgMSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2hlY2twb2ludD8ubGFiZWxcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57eyBjaGVja3BvaW50Py5sYWJlbCB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2hlY2twb2ludC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lciBjaGVja3BvaW50c1wiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGg+MlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBjaGVja3BvaW50IG9mIHJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8uc2xpY2UoMCwxKVwiPnt7Y2hlY2twb2ludD8ubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoID4gMVwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJjaGVja3BvaW50LnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGgtIDF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2NoZWNrcG9pbnRzJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMnLCB0cnVlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwidGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aFwiXG4gICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0XCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBhbGVydC1pY29uXCI+JiN4ZTkzMDs8L2k+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgPllvdSBjYW4gbm93IHVzZSB0aGUgbmV3IDxzdHJvbmc+Q2hlY2twb2ludHMgPC9zdHJvbmc+b3JcbiAgICAgICAgICA8c3Ryb25nPkFzc2Vzc21lbnRzPC9zdHJvbmc+IGZlYXR1cmUgaW5zdGVhZCBvZiB0aGUgb2xkIGNoZWNrcG9pbnRzXG4gICAgICAgICAgZnVuY3Rpb25hbGl0eSB0byBjcmVhdGUgYW5hbHl0aWNhbCBxdWVzdGlvbnMuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJyZW1vdmUtYnRuXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblJlbW92ZUNoZWNrcG9pbnRzKCdjaGVja3BvaW50JylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFJlbW92ZSBDaGVja3BvaW50c1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIHRvIGNvbnRpbnVlLjwvc3BhblxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxhcHAtcG9wb3ZlciAjY2hlY2twb2ludCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrcG9pbnQgb2YgcmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAge3sgY2hlY2twb2ludD8ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gTmV3ICBDaGVja3BvaW50cyAtLT5cbiAgPCEtLSAqbmdJZj1cIm1vcmVPcHRpb25zLmNoZWNrcG9pbnRzXCIgLS0+XG4gIDxkaXZcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5DSEVDS1BPSU5UU19ORVdcIlxuICAgIFthdHRyLmlkXT1cIidDSEVDS1BPSU5UUy1ORVcnXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMtbmV3J1wiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxuICAgICAgPGltZ1xuICAgICAgICBbc3JjXT1cIkFTU0VUUy5jaGVja3BvaW50c1wiXG4gICAgICAgIGFsdD1cImltXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMnXG4gICAgICAgIFwiXG4gICAgICAvPlxuXG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICAqbmdJZj1cImNoZWNrcG9pbnRDb3VudCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdjaGVja3BvaW50cydcIlxuICAgICAgPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5cbiAgICAgICAgICA8IS0tIHt7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzfGpzb259fVxuICAgICAgICAgICAgICAgIHt7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRJbnN0cnVjdGlvbn19IC0tPlxuXG4gICAgICAgICAgQ2hlY2twb2ludHNcbiAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiY2hlY2twb2ludC12ZXJzaW9uXCI+IFYyLjA8L3NwYW4+IC0tPlxuICAgICAgICAgIDwhLS0gPGJ1dHRvbiAgY2xhc3M9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cy1uZXcnLHRydWUpXCI+KyBBZGQgQ2hlY2twb2ludHM8L2J1dHRvbj4gLS0+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgYnV0dG9uLXNlY1wiICpuZ0lmPVwiY2hlY2twb2ludENvdW50ID09PSAwXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMtbmV3JywgdHJ1ZSlcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJBZGQgY2hlY2twb2ludHMgZm9yIHRoaXMgcmVzcG9uc2liaWxpdHlcIlxuICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cy1uZXcnLCB0cnVlKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBBZGQgQ2hlY2twb2ludHNcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiY2hlY2twb2ludENvdW50ID4gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvblJlbW92ZUNoZWNrcG9pbnRzKCduZXctY2hlY2twb2ludHMnKVwiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICA+e3sgY2hlY2twb2ludENvdW50IH19XG4gICAgICAgICAgICAgIHt7IGNoZWNrcG9pbnRDb3VudCA+IDEgPyBcIlF1ZXN0aW9uc1wiIDogXCJRdWVzdGlvblwiIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lciBjaGVja3BvaW50c1wiIFtjbGFzcy5tb3JlLW9uZV09XCJjaGVja3BvaW50Q291bnQgPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwib25SZW1vdmVDaGVja3BvaW50cygnbmV3LWNoZWNrcG9pbnRzJylcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjaGVja3BvaW50Q291bnR9fSB7e2NoZWNrcG9pbnRDb3VudCA+IDEgPyAnUXVlc3Rpb25zJzogJ1F1ZXN0aW9uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2NoZWNrcG9pbnRzLW5ldydcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NoZWNrcG9pbnRzLW5ldycsIHRydWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxhcHAtcG9wb3ZlciAjY2hlY2twb2ludCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrcG9pbnQgb2YgcmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAge3sgY2hlY2twb2ludD8ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gUmlzayBDbGFzc2lmaWNhdGlvbiAtLT5cbiAgPGRpdlxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/LlJJU0tfQ0xBU1NJRklDQVRJT05cIlxuICAgIFthdHRyLmlkXT1cIidSSVNLX0NMQVNTSUZJQ0FUSU9OJ1wiXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jpc2tDYWxjdWxhdG9yJ1wiXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmlza0NhbGN1bGF0b3InICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cbiAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMucmlza3NcIiBhbHQ9XCJpbVwiIC8+XG5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICA+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxuICAgICAgICAgIFJpc2sgQ2xhc3NpZmljYXRpb25cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcigncmlza0NhbGN1bGF0b3InLCB0cnVlKVwiXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgKyBSaXNrIENhbGN1bGF0b3JcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xhc3NpZmljYXRpb25cIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwibG93XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCByaXNrIG9mIHJpc2tDbGFzc2lmaWNhdGlvblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJbcmlzay5jbGFzc11cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY2xhc3NpZmljYXRpb25cIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5yaXNrQ2xhc3NcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwicmlzaz8udmFsdWVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPnt7IHJpc2s/Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBSZXZpZXdlciAtLT5cbiAgPGRpdlxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/LlJFVklFV0VSXCJcbiAgICBbYXR0ci5pZF09XCInUkVWSUVXRVInXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlckZyZXF1ZW5jeScgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcidcbiAgICBcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cbiAgICAgIDxpbWdcbiAgICAgICAgW3NyY109XCJBU1NFVFMucmV2aWV3ZXJcIlxuICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXInXG4gICAgICAgIFwiXG4gICAgICAvPlxuXG4gICAgICA8c3ZnXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJ1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UmV2aWV3ZXI8L2xhYmVsPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgICFmZWF0dXJlRmxhZ19ncm91cHMpIHx8XG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgIGZlYXR1cmVGbGFnX2dyb3VwcylcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCB0cnVlKVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSZXZpZXdlclwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzKSB8fFxuICAgICAgICAgICAgKChyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwKSAmJlxuICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IHJldmlld2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5zbGljZSgwLCAxKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyZXZpZXdlcicsIHJldmlld2VyKVwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmV2aWV3ZXIubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57eyByZXZpZXdlci5tZW1iZXJfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmV2aWV3ZXIucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIiBbY2xhc3MubW9yZS1vbmVdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aD4xXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MucGx1c109XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoPjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgcmV2aWV3ZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/LnNsaWNlKDAsMilcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmV2aWV3ZXInLHJldmlld2VyKVwiPiYjeGU5MGQ7PC9pPiB7e3Jldmlld2VyLm1lbWJlcl9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJyZXZpZXdlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIiAqbmdJZj1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoJ3Jldmlld2VyJywgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RbMF0pXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidXNlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdC5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAmXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgICdncm91cFJldmlld2VyJyxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFswXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0WzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3RbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiICpuZ0lmPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Lmxlbmd0aCA+IDAgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ3Jldmlld2VyJyxyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFswXSlcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIj57e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJ1c2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cImxlZnRcIj4gK3t7cmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Lmxlbmd0aCA+IDAgJiYgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMFwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3QubGVuZ3RoID4gMCBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ2dyb3VwUmV2aWV3ZXInLHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3RbMF0pXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3RbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggLSAxfX08L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCB0cnVlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgW2NoZWNrZWRdPVwicmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3dcIlxuICAgICAgICAgIFtuYW1lXT1cIidyZXZpZXdlcidcIlxuICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwib25SZXZpZXdlcldvcmtmbG93Q2hhbmdlKCdzZXF1ZW50aWFsJylcIlxuICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDBcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgU0VRVUVOVElBTDxpXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAnVGhlIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgc2VudCBmb3IgcmV2aWV3IG9uZSBhdCBhIHRpbWUgaW4gdGhlIHNlcXVlbmNlIGRlZmluZWQgYnkgeW91LidcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxuICAgICAgICAgID5cbiAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICBbY2hlY2tlZF09XCIhcmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3dcIlxuICAgICAgICAgIFtuYW1lXT1cIidyZXZpZXdlcidcIlxuICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwib25SZXZpZXdlcldvcmtmbG93Q2hhbmdlKCdhbnlSZXZpZXdlcicpXCJcbiAgICAgICAgPlxuICAgICAgICAgIEFOWSBSRVZJRVdFUiBDQU4gTUFSSyBUSElTIEFTIFJFVklFV0VEPGlcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICdUaGUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBzZW50IGZvciByZXZpZXcgdG8gYWxsIHJldmlld2VycyBhdCB0aGUgc2FtZSB0aW1lLiBJZiBhbnlvbmUgb2YgdGhlIHJldmlld2VyIHJldmlld3MgdGhlIHJlc3BvbnNpYmlsaXR5LCBpdCB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgcmV2aWV3ZWQuJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgPlxuICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNyZXZpZXdlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCByZXZpZXdlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyZXZpZXdlcicsIHJldmlld2VyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgcmV2aWV3ZXIubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjdXNlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCByZXZpZXdlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyZXZpZXdlcicsIHJldmlld2VyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgcmV2aWV3ZXIubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjZ3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdncm91cFJldmlld2VyJywgZ3JvdXApXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBncm91cC5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gT3ZlcnNlZXIgLS0+XG4gIDxkaXZcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5PVkVSU0VFUlwiXG4gICAgW2F0dHIuaWRdPVwiJ09WRVJTRUVSJ1wiXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXJOb3RpZnknIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXInXG4gICAgXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgIVsnb3ZlcnNlZXJOb3RpZnknLCAnb3ZlcnNlZXJOb3RpZnknXS5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcikgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwiQVNTRVRTLm92ZXJzaWdodFwiXG4gICAgICAgIGFsdD1cIlwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA9PSAwKSB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXJOb3RpZnknIHx8XG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcidcbiAgICAgICAgXCJcbiAgICAgIC8+XG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwKSAmJlxuICAgICAgICAgICEoXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyTm90aWZ5JyB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyJ1xuICAgICAgICAgIClcbiAgICAgICAgXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5PdmVyc2lnaHQ8L2xhYmVsPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgICFmZWF0dXJlRmxhZ19ncm91cHMpIHx8XG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ292ZXJzZWVyJywgdHJ1ZSlcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJXaG8gc2hvdWxkIGhhdmUgb3ZlcnNpZ2h0IG9mIHRoZSByZXNwb25zaWJpbGl0eT9cIlxuICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgIWZlYXR1cmVGbGFnX2dyb3VwcykgfHxcbiAgICAgICAgICAgICgocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDApICYmXG4gICAgICAgICAgICAgIGZlYXR1cmVGbGFnX2dyb3VwcylcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWZlYXR1cmVGbGFnX2dyb3Vwc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/LnNsaWNlKDAsIDEpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyJywgb3ZlcnNlZXIpXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJvdmVyc2Vlci5tZW1iZXJfbmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7IG92ZXJzZWVyLm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2VlcnMucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiBbY2xhc3MubW9yZS1vbmVdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aD4yXCIgKm5nSWY9XCIhZmVhdHVyZUZsYWdfZ3JvdXBzXCIgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8uc2xpY2UoMCwyKVwiPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlcicsb3ZlcnNlZXIpXCI+JiN4ZTkwZDs8L2k+IHt7b3ZlcnNlZXIubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVycy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIiAqbmdJZj1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoJ292ZXJzZWVyJywgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RbMF0pXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3ZlcnNlZXJVc2VyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdC5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPiY8L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgJ292ZXJzZWVyR3JvdXAnLFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFswXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFswXS5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0WzBdLmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3ZlcnNlZXJHcm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiAqbmdJZj1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdC5sZW5ndGggPiAwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicscmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RbMF0pXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIj57e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2VlclVzZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPiAre3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3QubGVuZ3RoID4gMCAmJiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMFwiID4mPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMCBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyR3JvdXAnLHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0WzBdKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFswXS5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIiAgPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3RbMF0uZ3JvdXBfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyR3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnb3ZlcnNlZXInXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvdmVyc2VlcicsIHRydWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzKSB8fFxuICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvdmVyc2Vlck5vdGlmeScsIHRydWUpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hvIHNob3VsZCBiZSBub3RpZmllZCBpZiB0aGUgcmVzcG9uc2liaWxpdHkgaXMgbm90IGNvbXBsZXQuLi5cIlxuICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAnV2hvIHNob3VsZCBiZSBub3RpZmllZCBpZiB0aGUgcmVzcG9uc2liaWxpdHkgaXMgbm90IGNvbXBsZXRlZD8nXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgIWZlYXR1cmVGbGFnX2dyb3VwcykgfHxcbiAgICAgICAgICAgICgocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDApICYmXG4gICAgICAgICAgICAgIGZlYXR1cmVGbGFnX2dyb3VwcylcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWZlYXR1cmVGbGFnX2dyb3Vwc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/LnNsaWNlKFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyTm90aWZ5TGlzdCcsIG92ZXJzZWVyKVwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwib3ZlcnNlZXIubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57eyBvdmVyc2Vlci5tZW1iZXJfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAoY2xpY2spPVwibm90aWZ5LnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8uc2xpY2UoMSkubGVuZ3RoIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgW2NsYXNzLm1vcmUtb25lXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGg+MVwiIFtjbGFzcy5wbHVzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGg+MlwiICpuZ0lmPVwiIWZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8uc2xpY2UoMCwyKVwiPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlck5vdGlmeUxpc3QnLG92ZXJzZWVyKVwiPiYjeGU5MGQ7PC9pPiB7e292ZXJzZWVyLm1lbWJlcl9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJub3RpZnkucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgJ292ZXJzZWVyTm90aWZ5TGlzdCcsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0WzBdXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibm90aWZ5VXNlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAnb3ZlcnNlZXJHcm91cE5vdGlmeUxpc3QnLFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJub3RpZnlHcm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7XG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiICpuZ0lmPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXJOb3RpZnlMaXN0JyxyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFswXSlcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RbMF0/LmVtcGxveWVlX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RbMF0/LmVtcGxveWVlX25hbWV9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm5vdGlmeVVzZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPiAre3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoIC0gMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Lmxlbmd0aCA+IDAgJiYgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDBcIiA+Jjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDAgXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlckdyb3VwTm90aWZ5TGlzdCcscmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3RbMF0pXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0WzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIiAgPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3RbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJub3RpZnlHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggLSAxfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnb3ZlcnNlZXJOb3RpZnknXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvdmVyc2Vlck5vdGlmeScsIHRydWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJzIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IG92ZXJzZWVyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0XG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyJywgb3ZlcnNlZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJVc2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IG92ZXJzZWVycyBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicsIG92ZXJzZWVycylcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IG92ZXJzZWVycz8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlckdyb3VwJywgb3ZlcnNlZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNub3RpZnkgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyTm90aWZ5TGlzdCcsIG92ZXJzZWVyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8YXBwLXBvcG92ZXIgI25vdGlmeVVzZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyTm90aWZ5TGlzdCcsIG92ZXJzZWVyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8YXBwLXBvcG92ZXIgI25vdGlmeUdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGdyb3VwIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0XG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlckdyb3VwTm90aWZ5TGlzdCcsIGdyb3VwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgZ3JvdXA/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBBc3N1cmFuY2UgLS0+XG4gIDxkaXZcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5BU1NVUkFOQ0VcIlxuICAgIFthdHRyLmlkXT1cIidBU1NVUkFOQ0UnXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXNzdXJhbmNlJ1wiXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzdXJhbmNlJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cbiAgICAgIDxpbWdcbiAgICAgICAgW3NyY109XCJBU1NFVFMucmV2aWV3ZXJcIlxuICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc3VyYW5jZSdcbiAgICAgICAgXCJcbiAgICAgIC8+XG5cbiAgICAgIDxzdmdcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc3VyYW5jZUxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc3VyYW5jZSdcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICA+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkFzc3VyYW5jZTwvbGFiZWw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXG4gICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc3VyYW5jZUxpc3Q/Lmxlbmd0aCA9PSAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWlucHV0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3N1cmFuY2UnLCB0cnVlKVwiXG4gICAgICAgICAgICBhcmlhLXBsYWNlaG9sZGVyPVwiU2VsZWN0IHRoZSB0ZXN0IHBsYW4gY2F0ZWdvcmllcyB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGFkZCB0aGlzIHJlc3BvbnNpYmlsaXR5IHRvLlwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5sZW5ndGggPiAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBhc3N1cmFuY2Ugb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5zbGljZSgwLCAxKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhc3N1cmFuY2UnLCBhc3N1cmFuY2UpXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJhc3N1cmFuY2UuY2F0ZWdvcnlfbmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7IGFzc3VyYW5jZS5jYXRlZ29yeV9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhc3N1cmFuY2UucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LmFzc3VyYW5jZUxpc3Q/LnNsaWNlKDEpLmxlbmd0aCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzdXJhbmNlJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzdXJhbmNlJywgdHJ1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNhc3N1cmFuY2UgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgYXNzdXJhbmNlIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3N1cmFuY2UnLCBhc3N1cmFuY2UpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBhc3N1cmFuY2UuY2F0ZWdvcnlfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFJlcXVpcmVzIEF1ZGl0IC0tPlxuICA8ZGl2XG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uUkVRVUlSRVNfQVVESVQgJiYgcmVzcG9uc2liaWxpdHlGb3JtLnJjLmxlbmd0aCA+IDBcIlxuICAgIFthdHRyLmlkXT1cIidSRVFVSVJFU19BVURJVCdcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXF1aXJlc19hdWRpdCdcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3JlcXVpcmVzX2F1ZGl0JyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cbiAgICAgIDxpbWdcbiAgICAgICAgW3NyY109XCJBU1NFVFMuYXVkaXRcIlxuICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3Q/Lmxlbmd0aCA9PSAwIHx8XG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXF1aXJlc19hdWRpdCdcbiAgICAgICAgXCJcbiAgICAgIC8+XG5cbiAgICAgIDxzdmdcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJlcXVpcmVzQXVkaXRMaXN0Py5sZW5ndGggPiAwICYmXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXF1aXJlc19hdWRpdCdcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICA+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlJFUVVJUkVTIEFVRElUPzwvbGFiZWw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXG4gICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJlcXVpcmVzQXVkaXRMaXN0Py5sZW5ndGggPT0gMFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiSWYgeWVzLCBzZWxlY3QgYW4gQXVkaXQgQ2F0ZWdvcnkuXCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmVxdWlyZXNfYXVkaXQnLCB0cnVlKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3Q/Lmxlbmd0aCA+IDBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncmVxdWlyZXNfYXVkaXQnLCBvdmVyc2VlcilcIlxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXF1aXJlc0F1ZGl0TGlzdFswXT8uY2F0ZWdvcnlfbmFtZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXF1aXJlc0F1ZGl0TGlzdFswXT8uY2F0ZWdvcnlfbmFtZVxuICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JlcXVpcmVzX2F1ZGl0JywgdHJ1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBjOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwhLS0gY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIEVkaXQ8L2J1dHRvbj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXF1aXJlc0F1ZGl0TGlzdD8ubGVuZ3RoXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbCB2eC1tdC04XCI+XG4gICAgICAgICAgICBTQU1QTEUgU0laRVxuICAgICAgICAgICAgPGFwcC1jcy1zd2l0Y2hcbiAgICAgICAgICAgICAgWyhuZ1ZhbHVlKV09XCJpc1NhbXBsZVwiXG4gICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInN3aXRjaEVuYWJsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2FwcC1jcy1zd2l0Y2g+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2FtcGxlLXBhcnRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzU2FtcGxlXCI+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgIHZhbHVlPVwiMFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2FtcGxlLXJhZGlvXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkU2FtcGxlRGF0YSgwKVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkU2FtcGxlID09PSAwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj5DT1VOVDwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIi0tXCJcbiAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwiY2hlY2tJbnB1dFZhbHVlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2FtcGxlVmFsdWVcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JcIj5PUjwvZGl2PlxuICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgICAgICB2YWx1ZT1cIjFcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNhbXBsZS1yYWRpb1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZFNhbXBsZURhdGEoMSlcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFNhbXBsZSA9PT0gMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+UEVSQ0VOVEFHRTwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwiY2hlY2tJbnB1dFZhbHVlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2FtcGxlUGVyY2VudGFnZVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCItLVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LW10LThcIlxuICAgICAgICAgICAgPlNFVCBBIFJFTUlOREVSIElGIFRIRSBBVURJVCBQTEFOIElTIE5PVCBDUkVBVEVELjwvbGFiZWxcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlbWluZGVyLXBhcnRcIj5cbiAgICAgICAgICAgIFNlbmQgcmVtaW5kZXIgZXZlcnlcbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCIyXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZW5kQXVkaXRSZW1pbmRlcnNWYWx1ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgRGF5IGJ5XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGltZVwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIjEyaHIgZm9ybWF0XCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF1ZGl0VGltZVwiXG4gICAgICAgICAgICAgICAgW25neFRpbWVwaWNrZXJdPVwiZGFpbHlUaW1lXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImF1ZGl0VGltZS50b1VwcGVyQ2FzZSgpXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgW21pbl09XCJjdXJyZW50VGltZVwiXG4gICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5NTU7PC9pPlxuICAgICAgICAgICAgICA8bmd4LW1hdGVyaWFsLXRpbWVwaWNrZXIgI2RhaWx5VGltZSBbZGVmYXVsdFRpbWVdPVwiYXVkaXRUaW1lXCI+XG4gICAgICAgICAgICAgIDwvbmd4LW1hdGVyaWFsLXRpbWVwaWNrZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBMaW5rIG9mIEdSQyBvYmplY3RzIC0tPlxuICA8ZGl2XG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uR1JDX09CSkVDVFMgJiYgcmVzcG9uc2liaWxpdHlGb3JtLnJjLmxlbmd0aCA+IDBcIlxuICAgIFthdHRyLmlkXT1cIidHUkNfT0JKRUNUUydcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdHUkNfT0JKRUNUUydcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ0dSQ19PQkpFQ1RTJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cbiAgICAgIDxpbWdcbiAgICAgICAgW3NyY109XCJBU1NFVFMuYXVkaXRcIlxuICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnR1JDX09CSkVDVFMnXG4gICAgICAgIFwiXG4gICAgICAvPlxuXG4gICAgICA8c3ZnXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5zZWxlY3RlZEdSQ09iamVjdHM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ0dSQ19PQkpFQ1RTJ1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+TElOSyBHUkMgT0JKRUNUKFMpPC9sYWJlbD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcbiAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPT09IDBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBHUkMgb2JqZWN0KHMpIHRvIGxpbmsgd2l0aCB0aGlzIHJlc3BvbnNpYmlsaXR5XCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignR1JDX09CSkVDVFMnLCB0cnVlKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnNlbGVjdGVkR1JDT2JqZWN0cz8ubGVuZ3RoXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlbGVjdGVkR1JDIG9mIEdSQ19UWVBFX0FSUkFZOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiZ3JjRGF0YVdpdGhUeXBlc1tzZWxlY3RlZEdSQ10/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQgdngtbWItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGdyYyBvZiBncmNEYXRhV2l0aFR5cGVzW3NlbGVjdGVkR1JDXT8uc2xpY2UoMCwgMSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnR1JDX09CSkVDVFMnLCBncmMsIDApXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid29ya2Zsb3dMYXZlbCB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTQgdngtbXItMSB2eC10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkR1JDIHwgdGl0bGVjYXNlIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJncmM/Lm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgPnt7IGdyYz8ubmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwb3BvdmVyR1JDLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JjRGF0YVdpdGhUeXBlc1tzZWxlY3RlZEdSQ10/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICt7eyBncmNEYXRhV2l0aFR5cGVzW3NlbGVjdGVkR1JDXS5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnR1JDJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEdSQ1RhYiA9IGdyY0RhdGFXaXRoVHlwZXNbc2VsZWN0ZWRHUkNdWzBdPy50eXBlO1xuICAgICAgICAgICAgICAgICAgZ2V0T3RoZXJHUkNPYmplY3RzKCk7XG4gICAgICAgICAgICAgICAgICBhY3RpdmF0ZVNlbGVjdG9yKCdHUkNfT0JKRUNUUycsIHRydWUpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNwb3BvdmVyR1JDIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JjIG9mIGdyY0RhdGFXaXRoVHlwZXNbc2VsZWN0ZWRHUkNdIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ0dSQ19PQkpFQ1RTJywgZ3JjLCBqICsgMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdyYy5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48YXBwLXVzZXJzLXJhZGlvLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbm9ycydcIlxuICBbdXNlcnNMaXN0XT1cImFzc2lnbm9yc0xpc3RcIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3RcIlxuICBbaXRlbUVtYWlsS2V5XT1cIidtZW1iZXJfZW1haWwnXCJcbiAgW3VzZXJJZEtleV09XCInbWVtYmVyX2lkJ1wiXG4gIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnYXNzaWdub3JzJywgJGV2ZW50KVwiXG4gIChjbG9zZVVzZXJzTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxuICBbbG9hZGVkXT1cImFzc2lnbm9yc0xpc3RMb2FkZWRcIlxuPlxuPC9hcHAtdXNlcnMtcmFkaW8tbGlzdD5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXNzaWduZWVzJ1wiPlxuICA8YXBwLWdyb3VwLXVzZXJzLWxpc3RcbiAgICAqbmdJZj1cIlxuICAgICAgaXNFbnRydXN0IHx8IHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy53aG9DYW5Db21wbGV0ZSA9PT0gJ0FOWV9PTkUnXG4gICAgXCJcbiAgICBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCJcbiAgICBbdXNlcnNMaXN0XT1cImFzc2lnbmVlc0xpc3RcIlxuICAgIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ0Fzc2lnbmVlJ1wiXG4gICAgW2dyb3Vwc0xpc3RdPVwiZ3JvdXBzTGlzdFwiXG4gICAgW2Fzc2lnbmVlR3JvdXBzTGlzdF09XCJncm91cEFzc2lnbmVlTGlzdFwiXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3RcIlxuICAgIFtzZWxlY3RlZEdyb3Vwc109XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0XCJcbiAgICBbdXNlcklkS2V5XT1cIidteV9tZW1iZXJfaWQnXCJcbiAgICBbZ3JvdXBJZEtleV09XCInZ3JvdXBfaWQnXCJcbiAgICBbbG9hZGVyXT1cInVzZXJMaXN0TG9hZGVyIHx8IGFzc2lnbm9yc0xpc3RMb2FkZXJcIlxuICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2Fzc2lnbmVlcycsICRldmVudClcIlxuICAgIChjbG9zZVVzZXJzTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxuICAgIFtncm91cHNFbmFibGVkXT1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiXG4gID5cbiAgPC9hcHAtZ3JvdXAtdXNlcnMtbGlzdD5cbiAgPGFwcC11c2Vycy1yYWRpby1saXN0XG4gICAgKm5nSWY9XCJcbiAgICAgICFpc0VudHJ1c3QgJiYgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSAhPT0gJ0FOWV9PTkUnXG4gICAgXCJcbiAgICBbaXRlbUVtYWlsS2V5XT1cIidlbXBsb3llZV9lbWFpbCdcIlxuICAgIFt1c2Vyc0xpc3RdPVwiYXNzaWduZWVzTGlzdFwiXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0XCJcbiAgICBbdXNlcklkS2V5XT1cIidlbXBsb3llZV9pZCdcIlxuICAgIFtpdGVtTmFtZUtleV09XCInZW1wbG95ZWVfbmFtZSdcIlxuICAgIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ0Fzc2lnbmVlJ1wiXG4gICAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnYXNzaWduZWVzJywgJGV2ZW50KVwiXG4gICAgKGNsb3NlVXNlcnNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4gICAgW2xvYWRlZF09XCJhc3NpZ25lZXNMaXN0TG9hZGVkXCJcbiAgPlxuICA8L2FwcC11c2Vycy1yYWRpby1saXN0PlxuPC9uZy1jb250YWluZXI+XG5cbjxhcHAtY2hlY2twb2ludHNcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzJ1wiXG4gIFtjaGVja3BvaW50SW5zdHJ1Y3Rpb25dPVwicmVzcG9uc2liaWxpdHlGb3JtPy5jaGVja3BvaW50SW5zdHJ1Y3Rpb25cIlxuICBbY2hlY2twb2ludERhdGFdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5jaGVja3BvaW50c1wiXG4gIChzYXZlQ2hlY2tQb2ludCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdjaGVja3BvaW50cycsICRldmVudClcIlxuICAoY2xvc2VDaGVja1BvaW50KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4+PC9hcHAtY2hlY2twb2ludHM+XG48YXBwLWZyZXF1ZW5jeS1jb250YWluZXJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcIlxuICBbZnJlcXVlbmN5RGV0YWlsc109XCJmcmVxdWVuY3lEZXRhaWxzXCJcbiAgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiXG4gIChzZWxlY3RlZEZyZXF1ZW5jeSk9XCJmcmVxdWVuY3lEYXRhKCRldmVudClcIlxuICBbbW9kZV09XCIncmVzcG9uc2liaWxpdHknXCJcbiAgKGNsb3NlRnJlcXVlbmN5KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4+XG48L2FwcC1mcmVxdWVuY3ktY29udGFpbmVyPlxuXG48YXBwLXJlc3BvbnNpYmlsaXR5LWNlbnRlcnMtbGlzdFxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmMnXCJcbiAgW2xvYWRlZF09XCJyY0xpc3RMb2FkZWRcIlxuICBbcmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdF09XCJyZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0XCJcbiAgW3JhZGlvU2VsZWN0aW9uXT1cIlxuICAgIG1vZGUgPT0gJ0VESVQnICYmIHJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9PT0gMCA/IHRydWUgOiBmYWxzZVxuICBcIlxuICBbc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLnJjXCJcbiAgW3JjSWRLZXldPVwiJ2l0ZW1faWQnXCJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgncmMnLCAkZXZlbnQpXCJcbiAgKGNsb3NlUmNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4+XG48L2FwcC1yZXNwb25zaWJpbGl0eS1jZW50ZXJzLWxpc3Q+XG5cbjxhcHAtY2F0ZWdvcnktbXVsdGktc2VsZWN0XG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcIlxuICBbY2F0ZWdvcnlMaXN0XT1cImNhdGVnb3JpZXNcIlxuICBbYWxsQ2F0ZWdvcmllc109XCJhbGxDYXRlZ29yaWVzXCJcbiAgW2NhdGVnb3J5SWRLZXldPVwiJ2NhdGVnb3J5X2lkJ1wiXG4gIFtzZWxlY3RlZENhdGVnb3JpZXNdPVwicmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5XCJcbiAgKHNhdmVTZWxlY3RlZENhdGVnb3J5KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgJGV2ZW50KVwiXG4gIChjbG9zZUNhdGVnb3JpZXNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4+XG48L2FwcC1jYXRlZ29yeS1tdWx0aS1zZWxlY3Q+XG5cbjwhLS0gUHJvZ3JhbSBMaXN0IFBvcHVwIC0tPlxuPGFwcC1saXN0LWNvbnRhaW5lclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncHJvZ3JhbSdcIlxuICAoY2xvc2UpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbj5cbiAgPGFwcC1wcm9ncmFtLWxpc3RcbiAgICBib2R5XG4gICAgKGl0ZW1zU2VsZWN0ZWRDaGFuZ2UpPVwib25JdGVtc1NlbGVjdGVkQ2hhbmdlKCRldmVudClcIlxuICAgIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkUHJvZ3JhbXNcIlxuICAgIFt1cmxdPVwicHJvZ3JhbUxpc3RVcmxcIlxuICA+PC9hcHAtcHJvZ3JhbS1saXN0PlxuICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtdy0xMDBcIiBmb290ZXI+XG4gICAgPGRpdiAgY2xhc3M9XCJsZWZ0LXNpZGUgdngtZnMtMTIgdngtZC1mbGV4XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsUHJvZ2FtU2VsZWN0ZWQubGVuZ3RoID4gMFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2VsZWN0ZWQtY291bnQtYm94IHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIj4ge3sgYWxsUHJvZ2FtU2VsZWN0ZWQubGVuZ3RoIH19PC9idXR0b24+IFxuICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdGVkLXRleHRcIj4gUHJvZ3JhbSB7e2FsbFByb2dhbVNlbGVjdGVkLmxlbmd0aCA+IDEgPyAnQ2F0ZWdvcmllcycgOiAnQ2F0ZWdvcnknfX0gU2VsZWN0ZWQ8L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHQtc2lkZSB2eC1kLWZsZXhcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWxCdG5cIiAoY2xpY2spPVwiYWN0aXZlRGVzZWxlY3RvcigpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwibmV4dEJ0blwiIChjbGljayk9XCJhY3RpdmVEZXNlbGVjdG9yKCk7IHNlbGVjdENhdGVnb3J5KClcIj5cbiAgICAgICAgTmV4dCA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxZTs8L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2FwcC1saXN0LWNvbnRhaW5lcj5cblxuPGFwcC1vd25lci1saXN0XG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcicgJiYgIWZlYXR1cmVGbGFnX2dyb3Vwc1wiXG4gIFtsaXN0SGVhZGluZ109XCInU2VsZWN0IGEgUmV2aWV3ZXInXCJcbiAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxuICBbcGx1cmFsVGV4dF09XCInVXNlcnMgc2VsZWN0ZWQnXCJcbiAgW3VzZXJzTGlzdF09XCJhbGxVc2Vyc0xpc3RcIlxuICBbc2hvd1dvcmtmbG93XT1cInRydWVcIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3RcIlxuICBbdXNlcklkS2V5XT1cIidlbXBsb3llZV9pZCdcIlxuICBbaXRlbUVtYWlsS2V5XT1cIidlbXBsb3llZV9lbWFpbCdcIlxuICBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cIlxuICAgIHNhdmVTZWxlY3RlZExpc3QoJ3Jldmlld2VyJywgJGV2ZW50KTtcbiAgICBhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlckZyZXF1ZW5jeScsIHRydWUpXG4gIFwiXG4gIChjbG9zZVVzZXJzTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxuICBbbW9kZV09XCJtb2RlXCJcbiAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInUmV2aWV3ZXInXCJcbiAgW3Jldmlld2VyV29ya2Zsb3dUeXBlXT1cIlxuICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5zZXF1ZW50aWFsV29ya2Zsb3dcbiAgICAgID8gJ1NFUVVFTlRJQUwnXG4gICAgICA6ICdBTlkgUkVWSUVXRVIgQ0FOIE1BUksgVEhJUyBBUyBSRVZJRVdFRCdcbiAgXCJcbiAgKHJldmlld2VyV29ya2Zsb3dUeXBlQ2hhbmdlKT1cInJldmlld2VyVHlwZUNoYW5nZSgkZXZlbnQpXCJcbj5cbjwvYXBwLW93bmVyLWxpc3Q+XG48dXNlci1ncm91cC1saXN0XG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcicgJiYgZmVhdHVyZUZsYWdfZ3JvdXBzXCJcbiAgW3NlbGVjdGVkUmV2aWV3ZXJdPVwidHJ1ZVwiXG4gIFt1c2VybGlzdF09XCJyZXZpZXdlck1lbWJlcklkc0xpc3RcIlxuICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxuICBbZ3JvdXBMaXN0XT1cImdyb3VwUmV2aWV3ZXJMaXN0XCJcbiAgW3NlbGVjdGVkR3JvdXBzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3RcIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFwiXG4gIChjYW5jZWwpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbiAgKHNhdmUpPVwiXG4gICAgc2F2ZVNlbGVjdGVkTGlzdCgncmV2aWV3ZXInLCAkZXZlbnQpO1xuICAgIGFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyRnJlcXVlbmN5JywgdHJ1ZSlcbiAgXCJcbiAgW21vZGVdPVwibW9kZVwiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ1Jldmlld2VyJ1wiXG4gIFtsb2FkaW5nXT1cInVzZXJMaXN0TG9hZGVyIHx8IGFzc2lnbm9yc0xpc3RMb2FkZXJcIlxuICAocmV2aWV3ZXJXb3JrZmxvd1R5cGVDaGFuZ2UpPVwicmV2aWV3ZXJUeXBlQ2hhbmdlKCRldmVudClcIlxuICBbcmV2aWV3ZXJXb3JrZmxvd1R5cGVdPVwiXG4gICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/LnNlcXVlbnRpYWxXb3JrZmxvd1xuICAgICAgPyAnU0VRVUVOVElBTCdcbiAgICAgIDogJ0FOWSBSRVZJRVdFUiBDQU4gTUFSSyBUSElTIEFTIFJFVklFV0VEJ1xuICBcIlxuICBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCJcbj5cbjwvdXNlci1ncm91cC1saXN0PlxuPGFwcC1vd25lci1saXN0XG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcicgJiYgIWZlYXR1cmVGbGFnX2dyb3Vwc1wiXG4gIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCJcbiAgW3BsdXJhbFRleHRdPVwiJ1VzZXJzIHNlbGVjdGVkJ1wiXG4gIFt1c2Vyc0xpc3RdPVwiYWxsVXNlcnNMaXN0XCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0XCJcbiAgW3VzZXJJZEtleV09XCInZW1wbG95ZWVfaWQnXCJcbiAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInT3ZlcnNlZXInXCJcbiAgW2l0ZW1OYW1lS2V5XT1cIidtZW1iZXJfbmFtZSdcIlxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdvdmVyc2VlcicsICRldmVudClcIlxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbiAgW2l0ZW1FbWFpbEtleV09XCInZW1wbG95ZWVfZW1haWwnXCJcbj5cbjwvYXBwLW93bmVyLWxpc3Q+XG48dXNlci1ncm91cC1saXN0XG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcicgJiYgZmVhdHVyZUZsYWdfZ3JvdXBzXCJcbiAgW2dyb3VwRW5hYmxlZF09XCJ0cnVlXCJcbiAgW2dyb3VwTGlzdF09XCJncm91cE92ZXJzZWVyTGlzdFwiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFwiXG4gIFt1c2VybGlzdF09XCJvdmVyc2VlcnNMaXN0XCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0XCJcbiAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInT3ZlcnNlZXInXCJcbiAgW2xvYWRpbmddPVwidXNlckxpc3RMb2FkZXIgfHwgYXNzaWdub3JzTGlzdExvYWRlclwiXG4gIChzYXZlKT1cInNhdmVTZWxlY3RlZExpc3QoJ292ZXJzZWVyJywgJGV2ZW50KVwiXG4gIChjYW5jZWwpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbiAgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiXG4+XG48L3VzZXItZ3JvdXAtbGlzdD5cblxuPGFwcC1vd25lci1saXN0XG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2Vlck5vdGlmeScgJiYgIWZlYXR1cmVGbGFnX2dyb3Vwc1wiXG4gIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCJcbiAgW3BsdXJhbFRleHRdPVwiJ1VzZXJzIHNlbGVjdGVkJ1wiXG4gIFt1c2Vyc0xpc3RdPVwiYWxsVXNlcnNMaXN0XCJcbiAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInT3ZlcnNlZXInXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0XCJcbiAgW3VzZXJJZEtleV09XCInZW1wbG95ZWVfaWQnXCJcbiAgW2l0ZW1OYW1lS2V5XT1cIidtZW1iZXJfbmFtZSdcIlxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdvdmVyc2Vlck5vdGlmeScsICRldmVudClcIlxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbiAgW2l0ZW1FbWFpbEtleV09XCInZW1wbG95ZWVfZW1haWwnXCJcbj48L2FwcC1vd25lci1saXN0PlxuPHVzZXItZ3JvdXAtbGlzdFxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXJOb3RpZnknICYmIGZlYXR1cmVGbGFnX2dyb3Vwc1wiXG4gIFt1c2VybGlzdF09XCJvdmVyc2VlcnNMaXN0XCJcbiAgW2dyb3VwRW5hYmxlZF09XCJ0cnVlXCJcbiAgW2dyb3VwTGlzdF09XCJncm91cE92ZXJzZWVyTGlzdFwiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFwiXG4gIFtzZWxlY3RlZFVzZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdFwiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ092ZXJzZWVyJ1wiXG4gIFtsb2FkaW5nXT1cInVzZXJMaXN0TG9hZGVyIHx8IGFzc2lnbm9yc0xpc3RMb2FkZXJcIlxuICAoc2F2ZSk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdvdmVyc2Vlck5vdGlmeScsICRldmVudClcIlxuICAoY2FuY2VsKT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4gIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlRmxhZ19ncm91cHNcIlxuPlxuPC91c2VyLWdyb3VwLWxpc3Q+XG5cbjxhcHAtb3duZXItbGlzdFxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXNzdXJhbmNlJ1wiXG4gIFtzaW5ndWxhclRleHRdPVwiJ1Rlc3QgQ2F0ZWdvcnkgc2VsZWN0ZWQnXCJcbiAgW3BsdXJhbFRleHRdPVwiJ1Rlc3QgQ2F0ZWdvcmllcyBzZWxlY3RlZCdcIlxuICBbc2VhcmNoUGxhY2Vob2xkZXJdPVwiJ1NlYXJjaCBUZXN0IENhdGVnb3J5Li4uJ1wiXG4gIFtsaXN0SGVhZGluZ109XCInU2VsZWN0IFRlc3QgQ2F0ZWdvcmllcydcIlxuICBbdXNlcnNMaXN0XT1cImFzc3VyYW5jZUNhdGVnb3JpZXNMaXN0XCJcbiAgW25vRGF0YVRleHRdPVwiJ05vIFRlc3QgQ2F0ZWdvcmllcyBGb3VuZCdcIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzdXJhbmNlTGlzdFwiXG4gIFt1c2VySWRLZXldPVwiJ2NhdGVnb3J5X2lkJ1wiXG4gIFtpdGVtRW1haWxLZXldPVwiJ2NhdGVnb3J5X25hbWUnXCJcbiAgW2l0ZW1OYW1lS2V5XT1cIidjYXRlZ29yeV9uYW1lJ1wiXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2Fzc3VyYW5jZScsICRldmVudClcIlxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbiAgW3NlYXJjaFBsYWNlaG9sZGVyXT1cIidTZWFyY2ggQ2F0ZWdvcnknXCJcbj5cbjwvYXBwLW93bmVyLWxpc3Q+XG5cbjxhcHAtYXVkaXQtY2F0ZWdvcnktbGlzdFxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmVxdWlyZXNfYXVkaXQnXCJcbiAgKGNsb3NlTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxuICBbYXVkaXRDYXRlZ29yeV09XCJhc3N1cmFuY2VSZXF1aXJlc0F1ZGl0TGlzdFwiXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ3JlcXVpcmVzX2F1ZGl0JywgJGV2ZW50KVwiXG4gIFtzZWxlY3RlZERhdGFdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXF1aXJlc0F1ZGl0TGlzdFswXVwiXG4+PC9hcHAtYXVkaXQtY2F0ZWdvcnktbGlzdD5cblxuPGFwcC1sb2FkZXItaW5saW5lXG4gICpuZ0lmPVwiKGxvYWRlciAmJiB0aGlzLm1vZGUgPT09ICdFRElUJykgfHwgZW50cnVzdExvYWRlclwiXG4+PC9hcHAtbG9hZGVyLWlubGluZT5cbjxhcHAtZnJhbWV3b3JrLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyYW1ld29yaydcIlxuICAoYXNzaWduQ29udHJvbCk9XCJhc3NpZ25Gcm9tRnJhbWV3b3JrKCRldmVudClcIlxuICBbcHJldmlvdXNTZWxlY3RlZFZhbHVlc109XCJzZWxlY3RlZEZyYW1ld29ya1ZhbHVlc1wiXG4gIChjbG9zZUZyYW1ld29yayk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxuICAoZW50cnVzdEZyYW1ld29yayk9XCJlbnRydXN0RnJhbWV3b3JrKCRldmVudClcIlxuPjwvYXBwLWZyYW1ld29yay1saXN0PlxuXG48IS0tIHJpc2stY2FsY3VsYXRvciBoZXJlIC0tPlxuPGFwcC1yaXNrLWNsYXNzaWZpY2F0aW9uXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyaXNrQ2FsY3VsYXRvcidcIlxuICBbY3VycmVudFJpc2tWYWx1ZV09XCJyZXNwb25zaWJpbGl0eUZvcm0ucmlza0NsYXNzXCJcbiAgKHNhdmVMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NhbGN1bGF0ZWRyaXNrJywgJGV2ZW50KVwiXG4gIChjbG9zZUxpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbj5cbjwvYXBwLXJpc2stY2xhc3NpZmljYXRpb24+XG5cbjxhcHAtcmV2aWV3LWZyZXF1ZW5jeVxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXJGcmVxdWVuY3knXCJcbiAgW3Jldmlld0NvbXBsZXRlRGF5c109XCJcbiAgICByZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeS5yZXZpZXdDb21wbGV0ZURheXNcbiAgXCJcbiAgW3Jldmlld05PdENvbXBsZXRlZERheXNdPVwiXG4gICAgcmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5yZXZpZXdGcmVxdWVuY3kucmV2aWV3Tk90Q29tcGxldGVkRGF5c1xuICBcIlxuICAoc2F2ZVJldmlld0ZyZXF1ZW5jeSk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdyZXZpZXdGcmVxdWVuY3knLCAkZXZlbnQpXCJcbiAgKGNsb3NlUmV2aWV3RnJlcXVlbmN5KT1cIlxuICAgIGFjdGl2ZURlc2VsZWN0b3IoKTtcbiAgICBhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlcicsIGZhbHNlKTtcbiAgICByZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSBbXTtcbiAgICByZXNwb25zaWJpbGl0eUZvcm0uZ3JvdXBSZXZpZXdlcnMubGlzdCA9IFtdXG4gIFwiXG4gIChiYWNrVG9Vc2VyTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKCk7IGFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyJywgdHJ1ZSlcIlxuPlxuPC9hcHAtcmV2aWV3LWZyZXF1ZW5jeT5cblxuPGFwcC1hc3Nlc3NtZW50LWxpc3RcbiAgKm5nSWY9XCJpc0Fzc2Vzc21lbnRcIlxuICBbcHJvZ3JhbV9pZHNdPVwicmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1bMF0/Ll9pZFwiXG4gIChjYW5jZWxBc3Nlc3NtZW50KT1cIlxuICAgIGlzQXNzZXNzbWVudCA9IGZhbHNlOyBhY3RpdmF0ZVNlbGVjdG9yKCdpc0Fzc2Vzc21lbnQnLCBmYWxzZSlcbiAgXCJcbiAgW2lzRWRpdF09XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWQgPyB0cnVlIDogZmFsc2VcIlxuICBbc2VsZWN0ZWRBc3Nlc3NtZW50XT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzZXNzbWVudFwiXG4gIChvbkFzc2Vzc21lbnRTZWxlY3QpPVwiXG4gICAgb25Bc3Nlc3NtZW50U2VsZWN0KCRldmVudCk7IGFjdGl2YXRlU2VsZWN0b3IoJ2lzQXNzZXNzbWVudCcsIGZhbHNlKVxuICBcIlxuPjwvYXBwLWFzc2Vzc21lbnQtbGlzdD5cblxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxuICAqbmdJZj1cInNob3dTbWlsZXlcIlxuICBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCJcbiAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXG4gIChhY3Rpb24pPVwiYWN0aW9uKCRldmVudClcIlxuICAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiXG4+PC9hcHAtc21pbGV5LWRpYWxvZy1pbmxpbmU+XG5cbjxkaXYgY2xhc3M9XCJpbXBvcnRcIiAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMtbmV3J1wiPlxuICA8YXBwLWNyZWF0ZS1hc3Nlc3NtZW50LWNvbnRhaW5lclxuICAgICNlZGl0b3JcbiAgICBbb3BlblBvcnRhbF09XCInUkVTUE9OU0lCSUxJVFlfQ0hFQ0tQT0lOVCdcIlxuICAgIChwb3N0QXNzZXNzbWVudCk9XCJwb3N0QXNzZXNzbWVudCgkZXZlbnQpXCJcbiAgICAoc2V0SXNVcGxvYWRlZCk9XCJzZXRJc1VwbG9hZGVkKCRldmVudClcIlxuICAgIFtjaGVja3BvaW50SlNPTl09XCJyZXNwb25zaWJpbGl0eUZvcm0ubmV3X2NoZWNrcG9pbnRzXCJcbiAgPlxuICA8L2FwcC1jcmVhdGUtYXNzZXNzbWVudC1jb250YWluZXI+XG48L2Rpdj5cblxuPGFwcC1ncmMtb2JqZWN0LWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ0dSQ19PQkpFQ1RTJ1wiXG4gIFtncmNPYmplY3RdPVwiZ3JjTGlzdFwiXG4gIFtzZWxlY3RlZEdSQ109XCJyZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzIHwgcmVmRGlzY29ubmVjdFwiXG4gIFtsb2FkZXJdPVwiZ3JjTG9hZGVyXCJcbiAgW3RhYmxlQ2FyZF09XCJvdGhlckdSQ0NhcmRcIlxuICBbc2VsZWN0ZWRUYWJdPVwic2VsZWN0ZWRHUkNUYWJcIlxuICBbY2FyZExvYWRlcl09XCJncmNUYWJMb2FkZXJcIlxuICAoZ2V0T3RoZXJHUkNPYmplY3RzKT1cImdldE90aGVyR1JDT2JqZWN0cygkZXZlbnQpXCJcbiAgKHNhdmVPdGhlckdSQyk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdHUkNfT0JKRUNUUycsICRldmVudClcIlxuICAoY2xvc2VPdGhlckdSQyk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdHUkNfT0JKRUNUUycsIGZhbHNlKVwiXG4+PC9hcHAtZ3JjLW9iamVjdC1saXN0PlxuIl19
3864
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctY29tcGxpYW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1jb21wbGlhbmNlL3dvcmtmbG93LWNvbXBsaWFuY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctY29tcGxpYW5jZS93b3JrZmxvdy1jb21wbGlhbmNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFLbkMsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBR25DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQWtCLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhFLE9BQU8sRUFDTCxjQUFjLEVBQ2QsY0FBYyxHQUNmLE1BQU0saURBQWlELENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQVN6RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUTlELE1BQU0sT0FBTywyQkFBMkI7SUErQ3RDLElBQXlCLFVBQVUsQ0FBQyxlQUF3QjtRQUMxRCxJQUFJLGVBQWUsRUFBRTtZQUNuQixJQUFJLENBQUMsZ0JBQWdC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QUE3QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBdVJZLFNBQVM7c0JBQTNCLFNBQVM7dUJBQUMsTUFBTTtnQkFHUixxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBd2dJNkMsa0JBQWtCO3NCQUFwRSxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ3Zjb21wbHktZWRpdG9yJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc3BvbnNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3Jlc3BvbnNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRnJlcXVlbmN5U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuLi91aS1raXQvc25hY2stYmFyL3NuYWNrLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByb2dyYW1zU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3Byb2dyYW1zLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgR1JDX1RZUEVfQVJSQVksXG4gIE9USEVSX0dSQ19DQVJELFxufSBmcm9tICcuLi93b3JrZmxvdy9zaGFyZWQvY29uc3RhbnRzL2dyY09iamVjdC5jb25zdGFudCc7XG5pbXBvcnQgeyBHcmNTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3cvc2hhcmVkL3NlcnZpY2VzL2dyYy5zZXJ2aWNlJztcbmltcG9ydCB7IERFRkFVTFRfMjRIUiwgREVGQVVMVF9USU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzL3RpbWUuY29uc3RhbnRzJztcbmltcG9ydCB7IE9yZ2FuaXphdGlvblVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvb3JnYW5pemF0aW9uLXVzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb21wbGlhbmNlQ29tbW9uU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2NvbW1vbi13b3JrZmxvdy1zZXJ2aWNlcy9jb21wbGlhbmNlLWNvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ2FuaXphdGlvbkNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9jb21tb24td29ya2Zsb3ctc2VydmljZXMvb3JnYW5pemF0aW9uLWNvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZyZXF1ZW5jeU9iamVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZnJlcXVlbmN5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVzcG9uc2liaWx0eS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL3Byb2dyYW0tbGlzdC9pbnRlcmZhY2VzL2xpc3QtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJy4uL3NoYXJlZENvbXBvbmVudHMvcHJvZ3JhbS1saXN0L2ludGVyZmFjZXMvZGF0YS1zb3VyY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IElmcmFtZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pZnJhbWUuc2VydmljZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi9jb25zdGFudHMvYXNzZXRzLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBQUk9HUkFNX0xJU1RfQVBJIH0gZnJvbSAnLi4vY29uc3RhbnRzL2FwaS5jb25zdGFudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtd29ya2Zsb3ctY29tcGxpYW5jZScsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1jb21wbGlhbmNlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd29ya2Zsb3ctY29tcGxpYW5jZS5jb21wb25lbnQubGVzcycsICcuLi9mb3Jtcy5sZXNzJ10sXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0NvbXBsaWFuY2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKiBEZWZpbmluZyB0aGUgaW5wdXQgcGFyYW1ldGVycyBmb3IgdGhlIGNvbXBvbmVudC4gKi9cbiAgQElucHV0KCkgbW9kZSA9ICdDUkVBVEUnO1xuICBASW5wdXQoKSByZXNwb25zaWJpbGl0eUlkID0gJyc7XG4gIEBJbnB1dCgpIGZyYW1ld29ya0RldGFpbHM6IEFycmF5PGFueT4gPSBbXTtcbiAgQElucHV0KCkgaXNFbnRydXN0OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgZmVhdHVyZTogYW55O1xuICBASW5wdXQoKSBhc3Nlc3NtZW50RGV0YWlsczogYW55O1xuICBBU1NFVFMgPSBBU1NFVFM7XG4gIGFsbEdyb3VwQXNzaWduZWU6IGJvb2xlYW4gPSB0cnVlO1xuICBhc3NpZ25vcklkOiBhbnlbXSA9IFtdO1xuICBhc3NpZ25lZUlkczogYW55W10gPSBbXTtcbiAgcmV2aWV3ZXJJZHM6IGFueVtdID0gW107XG4gIG92ZXJzZWVySWRzOiBhbnlbXSA9IFtdO1xuICBkaXNhYmxlUmFkaW9Bc3NpZ25lZTogYW55W10gPSBbXTtcbiAgaXNSZXNwb25zaWJpbGl0eVNpbXBsaWZpZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcXVlcnlQYXJhbTogc3RyaW5nID0gJyc7XG4gIHJlY2VudFJlc3BvbnNpYmlsaXR5VXJsOiBhbnkgPSB7XG4gICAgYnlSZXNwb25zaWJpbGl0aWVzOiB7IHR5cGU6IFsncmVjZW50X3Jlc3BvbnNpYmlsaXRpZXMnXSwgc3ViVHlwZTogWydDQyddIH0sXG4gICAgYnlTdGF0dXM6IHsgdHlwZTogW10sIHN1YlR5cGU6IFtdIH0sXG4gICAgZmlsdGVyT2JqZWN0OiB7XG4gICAgICByZXNwb25zaWJpbGl0eUNlbnRlcjogW10sXG4gICAgICBlbnRydXN0ZWRCeTogW10sXG4gICAgICBlbnRydXN0ZWRUbzogW10sXG4gICAgICByaXNrSWRzOiBbXSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxuICAgIH0sXG4gICAgdGltZVBlcmlvZERldGFpbHM6IHsgdHlwZTogJycsIHNlbGVjdGVkUGVyaW9kOiAnJywgc2VsZWN0ZWRZZWFyOiAnJyB9LFxuICAgIHN0YXR1czogJycsXG4gIH07XG4gIGlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGdyY0xpc3Q6IEFycmF5PGFueT4gPSBbXTtcbiAgZ3JjTG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIG90aGVyR1JDQ2FyZDogYW55ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShPVEhFUl9HUkNfQ0FSRCkpO1xuICBzZWxlY3RlZEdSQ1RhYjogbnVtYmVyID0gMDtcbiAgZ3JjVGFiTG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIGdyY1NlYXJjaFN0cmluZzogc3RyaW5nID0gJyc7XG4gIEdSQ19UWVBFX0FSUkFZID0gR1JDX1RZUEVfQVJSQVk7XG4gIGdyY0RhdGFXaXRoVHlwZXM6IGFueSA9IHtcbiAgICBhc3NldHM6IFtdLFxuICAgIHByb2Nlc3NlczogW10sXG4gICAgdmVuZG9yczogW10sXG4gICAgaW52ZW50b3J5OiBbXSxcbiAgfTtcbiAgc2VsZWN0ZWRDYXRlZ29yeTogYW55W10gPSBbXTtcbiAgcHJvZ3JhbUxpc3RVcmwgPSBQUk9HUkFNX0xJU1RfQVBJO1xuXG4gIEBJbnB1dCgnY2xvc2VPbkVzYycpIHNldCBjbG9zZU9uRXNjKGVzY2FwZUNvbmRpdGlvbjogYm9vbGVhbikge1xuICAgIGlmIChlc2NhcGVDb25kaXRpb24pIHtcbiAgICAgIHRoaXMuYWN0aXZlRGVzZWxlY3RvcigpO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKSBvcmdEZXRhaWxzOiBhbnk7XG5cbiAgdXJsID1cbiAgICAncT17XCJieVJlc3BvbnNpYmlsaXRpZXNcIjp7XCJ0eXBlXCI6W1wicmVzcG9uc2liaWxpdGllc19pbl9xdWV1ZVwiXSxcInN1YlR5cGVcIjpbXCJDQ1wiXX0sXCJieVN0YXR1c1wiOntcInR5cGVcIjpbXCJyZXNwb25zaWJpbGl0aWVzX2luX3F1ZXVlXCJdLFwic3ViVHlwZVwiOltdfSxcImZpbHRlck9iamVjdFwiOntcInJlc3BvbnNpYmlsaXR5Q2VudGVyXCI6W10sXCJlbnRydXN0ZWRCeVwiOltdLFwiZW50cnVzdGVkVG9cIjpbXSxcInJpc2tJZHNcIjpbXSxcInJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnlcIjpbXX0sXCJ0aW1lUGVyaW9kRGV0YWlsc1wiOntcInR5cGVcIjpcIlwiLFwic2VsZWN0ZWRQZXJpb2RcIjpcIlwiLFwic2VsZWN0ZWRZZWFyXCI6XCJcIn0sXCJzdGF0dXNcIjpcIlwifSc7XG4gIEBPdXRwdXQoKSBwaWNrZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcG9wdWxhdGVPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjbG9zZVdvcmtmbG93ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmVzZXRGb3JtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZGlzY29ubmVjdFJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjaGVja3BvaW50Q291bnRVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmNTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgb3BlbmVkRnJvbSE6IGFueTsgLy93aGVuIG9wZW5lZCBmcm9tIHJpc2sgdHJlYXRtZW50IGl0IHdpbGwgYmUgJ1JJU0tfVFJFQVRNRU5UJ1xuICBASW5wdXQoKSBzZWxlY3RlZFJDOiBudW1iZXIgPSAwOyAvLyA0LTUgZGlnaXQgaWQgb2Ygc2VsZWN0ZWQgcmMgYnkgZGVmYXVsdCB3aGVuIG9wZW5lZCBmcm9tIHJpc2sgdHJlYXRtZW50XG4gIC8vIEBJbnB1dCgpIHNlbGVjdGVkUHJvZ3JhbTogYW55ID0gbnVsbDtcbiAgZmVhdHVyZUZsYWdfZ3JvdXBzOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkUHJvZ3JhbTogYW55ID0gbnVsbDtcbiAgc2VsZWN0ZWRSZXZpZXdlcjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgnc2VsZWN0ZWRQcm9ncmFtJykgc2V0IHNldFNlbGVjdGVkUHJvZ3JhbShwcm9ncmFtOiBhbnkpIHtcbiAgICBpZiAocHJvZ3JhbSAmJiBPYmplY3Qua2V5cyhwcm9ncmFtKT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbSA9IHByb2dyYW07XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtID0gW107XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5saW5rZWRQcm9ncmFtID0gW107XG4gICAgICAvLyB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtLnB1c2gocHJvZ3JhbSk7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5saW5rZWRQcm9ncmFtLnB1c2gocHJvZ3JhbSk7XG4gICAgfVxuICB9XG5cbiAgLyogQ3JlYXRpbmcgYW4gZXZlbnQgZW1pdHRlci4gKi9cbiAgQE91dHB1dCgpIG9uUmVtb3ZpbmdDaGVja3BvaW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGlzQXNzZXNzbWVudERpc2FibGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgYXNzaWduZWVUeXBlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpOyAvLyBpdCB3aWxsIGVtaXQgd2hlbiBhc3NpZ25lZSB0eXBlIGNoYW5nZVxuICBAT3V0cHV0KCkgb25SZXZpZXdlclR5cGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7IC8vIGl0IHdpbGwgZW1pdCB3aGVuIHJldmlld2VyIHR5cGUgY2hhbmdlXG5cbiAgZW50cnVzdExvYWRlciA9IGZhbHNlO1xuICBzY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xuICBkZXNjcmlwdGlvbjogRWRpdG9yQ29uZmlnID0ge1xuICAgIG1vZGU6ICdwcmltZScsXG4gICAgY29sb3JQYWxldHRlOiB0cnVlLFxuICAgIGxpbms6IHRydWUsXG4gICAgcGxhY2Vob2xkZXI6ICdBZGQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBjb21wbGV0aW5nIHRoZSByZXNwb25zaWJpbGl0eScsXG4gIH07XG4gIHByb2dyYW1QZW9wbGVMaXN0OiBhbnkgPSB7XG4gICAgYXNzaWduZWVzTGlzdDogW10sXG4gICAgcmV2aWV3ZXJzTGlzdDogW10sXG4gICAgb3ZlcnNlZXJzTGlzdDogW10sXG4gIH07XG4gIGxvYWRlciA9IGZhbHNlO1xuICBzdWJtaXR0ZWQgPSBmYWxzZTtcbiAgZWRpdERldGFpbHMhOiBhbnk7XG4gIHNtaWxleU1lc3NhZ2UgPSBgRG9uZSFgO1xuICBhY3Rpb25CdXR0b25zID0gW1xuICAgIHtcbiAgICAgIGJ1dHRvblRleHQ6ICdFbnRydXN0IE1vcmUgUmVzcG9uc2liaWxpdGllcycsXG4gICAgICBjbGFzczogJ3doaXRlLWJ0bicsXG4gICAgICBpZDogJ2FkZE1vcmUnLFxuICAgIH0sXG4gICAgeyBidXR0b25UZXh0OiAnVmlldyBSZXNwb25zaWJpbGl0aWVzJywgY2xhc3M6ICdibHVlLWJ0bicsIGlkOiAndmlldycgfSxcbiAgXTtcbiAgc2hvd1NtaWxleSA9IGZhbHNlO1xuICBtZW1iZXJJZCA9IDA7XG4gIG9yZ2FuaXphdGlvbklkID0gMDtcbiAgcmNMaXN0TG9hZGVkID0gZmFsc2U7XG4gIGFzc2lnbm9yc0xpc3RMb2FkZWQgPSBmYWxzZTtcbiAgYXNzaWduZWVzTGlzdExvYWRlZCA9IGZhbHNlO1xuICBjYXRlZ29yaWVzTGlzdExvYWRlZCA9IGZhbHNlO1xuICBncm91cHNMaXN0TG9hZGVkID0gZmFsc2U7XG4gIGFzc3VyYW5jZUNhdGVnb3J5TGlzdExvYWRlZCA9IGZhbHNlO1xuICBzZWxlY3RlZEZyYW1ld29ya1ZhbHVlcyE6IGFueTtcbiAgaGFzUmV2aWV3ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyB1c2Vyc0xpc3Q6IGFueVtdID0gW107XG4gIGFzc2lnbm9yc0xpc3Q6IGFueVtdID0gW107XG4gIGFzc2lnbmVlc0xpc3Q6IGFueVtdID0gW107XG4gIHJldmlld2Vyc0xpc3Q6IGFueVtdID0gW107XG4gIGRpc2FibGVBc3NpZ25lZUlkczogYW55W10gPSBbXTtcbiAgZGlzYWJsZVJldmlld2VySWRzOiBhbnlbXSA9IFtdO1xuICBkaXNhYmxlT3ZlcnNlZXJJZHM6IGFueVtdID0gW107XG4gIHJldmlld2VyTWVtYmVySWRzTGlzdDogYW55W10gPSBbXTtcbiAgZ3JvdXBPdmVyc2Vlckxpc3Q6IGFueVtdID0gW107XG4gIGdyb3VwUmV2aWV3ZXJMaXN0OiBhbnlbXSA9IFtdO1xuICBncm91cEFzc2lnbmVlTGlzdDogYW55W10gPSBbXTtcbiAgb3ZlcnNlZXJzTGlzdDogYW55W10gPSBbXTtcbiAgYWxsVXNlcnNMaXN0OiBhbnlbXSA9IFtdO1xuICBiZWhhbGZPZlVzZXJzTGlzdDogYW55W10gPSBbXTtcbiAgYXNzaWduZWVVc2VyTGlzdDogYW55W10gPSBbXTtcbiAgcmV2aWV3ZXJVc2VyTGlzdDogYW55W10gPSBbXTtcbiAgb3ZlcnNlZXJVc2VyTGlzdDogYW55W10gPSBbXTtcbiAgb3ZlcnNlZXJVc2VyTm90aWZ5TGlzdDogYW55W10gPSBbXTtcbiAgYWxsQ2F0ZWdvcmllczogYW55W10gPSBbXTtcbiAgYXNzdXJhbmNlQ2F0ZWdvcmllc0xpc3Q6IGFueVtdID0gW107XG4gIGFzc3VyYW5jZVJlcXVpcmVzQXVkaXRMaXN0OiBhbnlbXSA9IFtdO1xuICBncm91cHNMaXN0OiBhbnlbXSA9IFtdO1xuICBPcmdHcm91cDogYW55W10gPSBbXTtcbiAgYWRtaW5zTGlzdDogYW55W10gPSBbXTtcbiAgcmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdDogYW55W10gPSBbXTtcbiAgY2F0ZWdvcnlMaXN0OiBhbnlbXSA9IFtdO1xuICBub25SZW1vdmFibGVVc2Vyc0xpc3Q6IGFueVtdID0gW107XG4gIHJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZTogTnVtYmVyID0gMDtcblxuICByZXNwb25zaWJpbGl0eUZvcm06IGFueSA9IHtcbiAgICBhc3NpZ25vcnM6IHtcbiAgICAgIGVuYWJsZTogZmFsc2UsXG4gICAgICBsaXN0OiBbXSxcbiAgICB9LFxuICAgIHJlc3BvbnNpYmlsaXR5OiB7XG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGtleVJlc3BvbnNpYmlsaXR5OiBmYWxzZSxcbiAgICB9LFxuICAgIGFzc2lnbmVlR3JvdXBzOiB7XG4gICAgICB3aG9DYW5Db21wbGV0ZTogJ0FOWU9ORScsXG4gICAgICBsaXN0OiBbXSxcbiAgICB9LFxuICAgIGFzc2lnbmVlczoge1xuICAgICAgd2hvQ2FuQ29tcGxldGU6ICdBTEwnLFxuICAgICAgbGlzdDogW10sXG4gICAgfSxcbiAgICBhbGxvd0VkaXREdWVEYXRlOiBmYWxzZSxcbiAgICBmcmVxdWVuY3k6ICcnLFxuICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICBvYmplY3RpdmU6ICcnLFxuICAgIHJjOiBbXSxcbiAgICByZXNwb25zaWJpbGl0eUNlbnRlclR5cGU6IDAsXG4gICAgY2F0ZWdvcnk6IFtdLFxuICAgIHByb2dyYW06IFtdLFxuICAgIHByb2dyYW1fc2VsZWN0ZWRfaWRzOiBbXSxcbiAgICBjaGVja3BvaW50SW5zdHJ1Y3Rpb246ICcnLFxuICAgIGN1c3RvbVRhZ3M6IFtdLFxuICAgIGNoZWNrcG9pbnRzOiBbXSxcbiAgICByZXZpZXdlcnM6IHtcbiAgICAgIHNlcXVlbnRpYWxXb3JrZmxvdzogdHJ1ZSxcbiAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xuICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6IDIsXG4gICAgICAgIHJldmlld05PdENvbXBsZXRlZERheXM6IDIsXG4gICAgICB9LFxuICAgICAgbGlzdDogW10sXG4gICAgfSxcbiAgICBncm91cFJldmlld2Vyczoge1xuICAgICAgc2VxdWVudGlhbFdvcmtmbG93OiB0cnVlLFxuICAgICAgcmV2aWV3RnJlcXVlbmN5OiB7XG4gICAgICAgIHJldmlld0NvbXBsZXRlRGF5czogMixcbiAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czogMixcbiAgICAgIH0sXG4gICAgICBsaXN0OiBbXSxcbiAgICB9LFxuICAgIG92ZXJzZWVyczoge1xuICAgICAgbm90aWZ5TGlzdDogW10sXG4gICAgICBsaXN0OiBbXSxcbiAgICB9LFxuICAgIG92ZXJzZWVyc0dyb3Vwczoge1xuICAgICAgbm90aWZ5TGlzdDogW10sXG4gICAgICBsaXN0OiBbXSxcbiAgICB9LFxuICAgIGZvcm1hdEFuZEV2aWRlbmNlOiB7XG4gICAgICBmb3JtYXRSZXF1aXJlZDogZmFsc2UsXG4gICAgICBmb3JtYXRGaWxlczogW10sXG4gICAgICBmb3JtYXRMaW5rczogW10sXG4gICAgICBldmlkZW5jZVJlcXVpcmVkOiBmYWxzZSxcbiAgICB9LFxuICAgIGFzc3VyYW5jZUxpc3Q6IFtdLFxuICAgIHJlcXVpcmVzQXVkaXRMaXN0OiBbXSxcbiAgICByaXNrQ2xhc3M6ICdsb3cnLFxuICAgIHJpc2tNYXRyaXg6ICcwLDAsMCwwLDAsMCcsXG4gICAgYXVkaXRfY2F0ZWdvcnlfZGV0YWlsczoge1xuICAgICAgY2F0ZWdvcnlfaWQ6IDAsXG4gICAgICBzYW1wbGU6IDUsXG4gICAgICBwZXJjZW50YWdlOiAzMCxcbiAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuOiAnMX4wfjN+MScsXG4gICAgICBmcmVxdWVuY3lfdGltZTogREVGQVVMVF8yNEhSLFxuICAgIH0sXG4gICAgYXNzZXNzbWVudDoge1xuICAgICAgY2F0ZWdvcnlfaWQ6ICcnLFxuICAgICAgYXNzZXNzbWVudF9pZDogJycsXG4gICAgfSxcbiAgICBuZXdfY2hlY2twb2ludHM6IHt9LFxuICAgIGxpbmtlZFByb2dyYW06IFtdLFxuICAgIHNlbGVjdGVkR1JDT2JqZWN0czogW10sXG4gIH07XG4gIG1vcmVPcHRpb25zOiBhbnkgPSB7XG4gICAgT0JKRUNUSVZFOiBmYWxzZSxcbiAgICBSQzogZmFsc2UsXG4gICAgQ0FURUdPUlk6IGZhbHNlLFxuICAgIFBST0dSQU06IGZhbHNlLFxuICAgIEZPUk1BVEVfRVZJREVOQ0U6IGZhbHNlLFxuICAgIENIRUNLUE9JTlRTOiBmYWxzZSxcbiAgICBBU1NFU1NNRU5UOiBmYWxzZSxcbiAgICBSSVNLX0NMQVNTSUZJQ0FUSU9OOiBmYWxzZSxcbiAgICBSRVZJRVdFUjogZmFsc2UsXG4gICAgT1ZFUlNFRVI6IGZhbHNlLFxuICAgIEFTU1VSQU5DRTogZmFsc2UsXG4gICAgQVBQUzogZmFsc2UsXG4gICAgUkVRVUlSRVNfQVVESVQ6IGZhbHNlLFxuICAgIENIRUNLUE9JTlRTX05FVzogZmFsc2UsXG4gICAgR1JDX09CSkVDVFM6IGZhbHNlLFxuICB9O1xuICBhY3RpdmVTZWxlY3RvciA9ICcnO1xuICBzaWRlU2VsZWN0b3JFbGVtZW50czogYW55ID0gW1xuICAgICdhc3N1cmFuY2UnLFxuICAgICdmcmFtZXdvcmsnLFxuICAgICdhc3NpZ25vcnMnLFxuICAgICdhc3NpZ25lZXMnLFxuICAgICdjYXRlZ29yeScsXG4gICAgJ3Byb2dyYW0nLFxuICAgICdyYycsXG4gICAgJ2NoZWNrcG9pbnRzJyxcbiAgICAnZnJlcXVlbmN5JyxcbiAgICAncmV2aWV3ZXInLFxuICAgICdyZXZpZXdlckZyZXF1ZW5jeScsXG4gICAgJ292ZXJzZWVyJyxcbiAgICAnb3ZlcnNlZXJOb3RpZnknLFxuICAgICdyaXNrQ2FsY3VsYXRvcicsXG4gICAgJ2lzQXNzZXNzbWVudCcsXG4gICAgJ3JlcXVpcmVzX2F1ZGl0JyxcbiAgICAnY2hlY2twb2ludHMtbmV3JyxcbiAgICAnR1JDX09CSkVDVFMnLFxuICBdO1xuXG4gIGZvY3VzID0ge1xuICAgIHJlc3BvbnNpYmlsaXR5TmFtZTogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246IGZhbHNlLFxuICAgIG9iamVjdGl2ZTogZmFsc2UsXG4gIH07XG5cbiAgY2F0ZWdvcmllczogYW55ID0ge1xuICAgIHJlZ3VsYXRpb25zOiB7XG4gICAgICBsaXN0OiBbXSxcbiAgICAgIHNlbGVjdGVkTGlzdDogW10sXG4gICAgfSxcbiAgICBzdGFuZGFyZHM6IHtcbiAgICAgIGxpc3Q6IFtdLFxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXSxcbiAgICB9LFxuICAgIGludGVybmFsQ29udHJvbHM6IHtcbiAgICAgIGxpc3Q6IFtdLFxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXSxcbiAgICB9LFxuICAgIG90aGVyczoge1xuICAgICAgbGlzdDogW10sXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdLFxuICAgIH0sXG4gIH07XG5cbiAgYWxsUHJvZ3JhbXM6IGFueVtdID0gW107XG5cbiAgcmlza0NsYXNzaWZpY2F0aW9uID0gW1xuICAgIHsgbmFtZTogJ0xvdycsIHZhbHVlOiAnbG93JywgY2xhc3M6ICdsb3cnIH0sXG4gICAgeyBuYW1lOiAnTG93LU1lZGl1bScsIHZhbHVlOiAnbG93X21lZGl1bScsIGNsYXNzOiAnbG93LW1lZCcgfSxcbiAgICB7IG5hbWU6ICdNZWRpdW0tSGlnaCcsIHZhbHVlOiAnbWVkaXVtX2hpZ2gnLCBjbGFzczogJ21lZC1oaWdoJyB9LFxuICAgIHsgbmFtZTogJ0hpZ2gnLCB2YWx1ZTogJ2hpZ2gnLCBjbGFzczogJ2hpZ2gnIH0sXG4gIF07XG5cbiAgYXNzaWdub3JNb2RlID0gJ2NoZWNrYm94JztcbiAgcmNNb2RlID0gJ2NoZWNrYm94JztcbiAgaW52YWxpZFR5cGUgPSAnJztcbiAgcmVzcG9uc2liaWxpdHlQYXlsb2FkITogYW55O1xuICBhc3NpZ25lZVJhZGlvU2VsZWN0ID0gZmFsc2U7XG4gIHByb2dyYW1zTGlzdDogYW55W10gPSBbXTtcblxuICAvLyBmcmVxdWVuY3kgdmFyaWFibGUgZGVjbGFyYXRpb25cbiAgZnJlcXVlbmN5RGV0YWlscyA9IHtcbiAgICBwYXR0ZXJuOiAnJyxcbiAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxuICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxuICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxuICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxuICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxuICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICB3aW5kb3c6IDAsXG4gICAgZmFpbGVkOiAwLFxuICAgIHRpbWU6IERFRkFVTFRfVElNRSxcbiAgICBmYWlsZWRUaW1lOiAnJyxcbiAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwLFxuICAgIG9uQ29tcGxldGlvblJlcG9ydERldGFpbHM6IHt9LFxuICB9O1xuXG4gIGZyZXF1ZW5jeU9iamVjdDogRnJlcXVlbmN5T2JqZWN0IHwgbnVsbCA9IG51bGw7XG4gIGZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gJ0hvdyBvZnRlbiBkb2VzIHRoZSByZXNwb25zaWJpbGl0eSBvY2N1cj8nO1xuICBzaG9ydE1vbnRoOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIGlzRWRpdFdoYXQ6IEJvb2xlYW4gPSB0cnVlO1xuICBpc0ZyYW1ld29ya0F2YWlsYWJsZSA9IDE7XG4gIGlzTm90aWZpY2F0aW9uUGVuZGluZyA9IDA7XG5cbiAgYXNzdXJhbmNlRmxhZyE6IGFueTtcbiAgcmlza0NsYXNzaWZpY2F0aW9uRmxhZyE6IGFueTtcbiAgaGlkZGVuTGlzdDogYW55W10gPSBbXTtcbiAgc3Vic2NyaXB0aW9uRGV0YWlscyE6IGFueTtcbiAgaXNSaXNrRW5hYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNEdXBsaWNhdGVFbnRydXN0OiBib29sZWFuID0gZmFsc2U7XG4gIGF1ZGl0VGltZTogc3RyaW5nID0gREVGQVVMVF9USU1FO1xuICBzZW5kQXVkaXRSZW1pbmRlcnNWYWx1ZTogbnVtYmVyID0gMjtcbiAgc2FtcGxlVmFsdWU6IGFueTtcbiAgc2FtcGxlUGVyY2VudGFnZTogYW55O1xuICBzZWxlY3RlZFNhbXBsZSE6IG51bWJlcjtcbiAgaXNTYW1wbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdGVtcENoZWNrVmFsdWU6IG51bWJlciA9IC0xO1xuICBpc0Fzc2Vzc21lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbWFuYWdlUGVybWlzc2lvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBjaGVja3BvaW50Q291bnQ6IG51bWJlciA9IDA7XG4gIHJvbGVCYXNlZFBlcm1pc3Npb25zITogYW55O1xuICBpc0dyb3VwQXNzaWduZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmVzcG9uc2liaWxpdHlEYXRhITogYW55O1xuICBvcmlnaW5hbEFzc2lnbmVlITogYW55O1xuICB1c2VyTGlzdExvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBhc3NpZ25vcnNMaXN0TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIHJhd1Jlc3BvbnNpYmlsaXR5OiBhbnk7XG4gIG90aGVyR1JDU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBhbGxvd0VkaXREdWVEYXRlRmVhdHVyZUZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWxsUHJvZ2FtU2VsZWN0ZWQ6IGFueVtdID0gW107XG5cblxuICBAVmlld0NoaWxkKCd3aGF0Jykgd2hhdElucHV0ITogRWxlbWVudFJlZjtcbiAgdW5TdWJzY3JpYmVQcm9ncmFtID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBASW5wdXQoKSByZXNwb25zaWJpbGl0eURldGFpbHM6IGFueTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXNwb25zaWJpbGl0eVNlcnZpY2U6IFJlc3BvbnNpYmlsaXR5U2VydmljZSxcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZSxcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIHByb2dyYW1TZXJ2aWNlOiBQcm9ncmFtc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBncmNTZXJ2aWNlOiBHcmNTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3JnYW5pemF0aW9uVXNlclNlcnZpY2U6IE9yZ2FuaXphdGlvblVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29tcGxpYW5jZUNvbW1vblNlcnZpY2U6IENvbXBsaWFuY2VDb21tb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgb3JnYW5pemF0aW9uQ29tbW9uU2VydmljZTogT3JnYW5pemF0aW9uQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIGlmcmFtZVNlcnZpY2U6IElmcmFtZVNlcnZpY2UsXG5cbiAgKSB7XG4gICAgdGhpcy5vcmdhbml6YXRpb25Db21tb25TZXJ2aWNlPy5nZXRPcmdVc2VySW5mbygpPy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbXBsaWFuY2VTdWJtb2R1bGUgPVxuICAgICAgICAgIHJlcz8ucm9sZUFjdGlvbnNbXG4gICAgICAgICAgICByZXM/LnJvbGVBY3Rpb25zPy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tb2R1bGVOYW1lID09PSAnY29tcGxpYW5jZSdcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdPy5zdWJNb2R1bGU7XG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb25zID1cbiAgICAgICAgICBjb21wbGlhbmNlU3VibW9kdWxlW1xuICAgICAgICAgICAgY29tcGxpYW5jZVN1Ym1vZHVsZT8uZmluZEluZGV4KFxuICAgICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uc3ViTW9kdWxlTmFtZSA9PT0gJ1Byb2dyYW1zJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgIF0/LnBlcm1pc3Npb25zO1xuICAgICAgICB0aGlzLm1hbmFnZVBlcm1pc3Npb24gPSBwZXJtaXNzaW9uc1tcbiAgICAgICAgICBwZXJtaXNzaW9ucz8uZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlPy5uYW1lID09PSAnbWFuYWdlIHByb2dyYW1zJylcbiAgICAgICAgXT8uZW5hYmxlXG4gICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMubWFuYWdlUGVybWlzc2lvbikge1xuICAgICAgICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdDQVRFR09SWScpO1xuICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdQUk9HUkFNJyk7XG4gICAgICAgICAgdGhpcy5nZXRDYXRlZ29yeUxpc3QoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RmVhdHVyZUZsYWdzKCk7XG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xuICAgIHRoaXMuZ2V0SW5pdGlhbERhdGEoKTtcbiAgfVxuXG4gIHNldEZlYXR1cmVGbGFncygpIHtcbiAgICB0aGlzLmZlYXR1cmVGbGFnX2dyb3VwcyA9IHRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFxuICAgICAgJ2ZmX3Jlc3BvbnNpYmlsaXR5X2dyb3VwcydcbiAgICApO1xuICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVNpbXBsaWZpZWQgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9yZXNwb25zaWJpbGl0eV9zaW1wbGlmaWNhdGlvbidcbiAgICApO1xuICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVJjTGlua0VuYWJsZWQgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9yZXNwb25zaWJpbGl0eV9yY19saW5rJ1xuICAgICk7XG4gICAgdGhpcy5hbGxvd0VkaXREdWVEYXRlRmVhdHVyZUZsYWcgPVxuICAgICAgdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX2VkaXRfZHVlX2RhdGUnKTtcbiAgfVxuXG4gIGdldEluaXRpYWxEYXRhKCkge1xuICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdBU1NFU1NNRU5UJyk7XG4gICAgdGhpcy5nZXRBc3NpZ25lZXNMaXN0KCk7XG4gICAgdGhpcy5jaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpO1xuICAgIHRoaXMuZ2V0T3JnYW5pemF0aW9uRGV0YWlscygpO1xuICAgIHRoaXMuZ2V0VXNlckRldGFpbHMoKTtcbiAgICB0aGlzLnNob3J0TW9udGggPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UubW9udGhBcnJheS5tYXAoKG1vbnRoKSA9PlxuICAgICAgbW9udGguc3Vic3RyaW5nKDAsIDMpXG4gICAgKTtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnQ1JFQVRFJykge1xuICAgICAgdGhpcy5vcmdhbml6YXRpb25JZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKTtcbiAgICAgIHRoaXMubWVtYmVySWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkudXNlci51aWQ7XG4gICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnQ0hFQ0tQT0lOVFMnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgICB0aGlzLmdldFJDTGlzdCgpO1xuICAgICAgdGhpcy5nZXRHcm91cHNMaXN0KCk7XG4gICAgICB0aGlzLmdldEFzc2lnbm9yc0xpc3QoKTtcbiAgICAgIHRoaXMuZ2V0QXNzdXJhbmNlKCk7XG4gICAgfVxuICAgIHRoaXMuZ2V0T3JnRGV0YWlscygpO1xuICAgIHRoaXMuZ2V0U3Vic2NyaXB0aW9uRGV0YWlsKCk7XG4gICAgdGhpcy5zZXRSZXNwb25zaWJpbGl0eU5hbWUoKTtcbiAgICB0aGlzLmhpZGVFbGVtZW50c0Zyb21Nb3JlT3B0aW9ucy5lbWl0KHRoaXMuaGlkZGVuTGlzdCk7XG4gIH1cblxuICBnZXRPcmdEZXRhaWxzKCkge1xuICAgIHRoaXMub3JnYW5pemF0aW9uQ29tbW9uU2VydmljZT8uZ2V0T3JnRGV0YWlsc0luZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzUmlza0VuYWJsZSA9IHJlcz8uZW5hYmxlX3Jpc2tjbGFzcyA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgaWYgKCFyZXM/LmVuYWJsZV9yaXNrY2xhc3MpIHtcbiAgICAgICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnUklTS19DTEFTU0lGSUNBVElPTicpO1xuICAgICAgICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQodGhpcy5oaWRkZW5MaXN0KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0U3Vic2NyaXB0aW9uRGV0YWlsKCkge1xuICAgIHRoaXMub3JnYW5pemF0aW9uQ29tbW9uU2VydmljZT8uZ2V0U3Vic2NyaXB0aW9uRGV0YWlsc0luZm8oKT8uc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbkRldGFpbHMgPSByZXM7XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbkRldGFpbHNbMF0/LmFzc2Vzc21lbnRfZmxhZykge1xuICAgICAgICAgIHRoaXMuaGlkZGVuTGlzdCA9IHRoaXMuaGlkZGVuTGlzdD8uZmlsdGVyKFxuICAgICAgICAgICAgKGVsZSkgPT4gZWxlICE9PSAnQVNTRVNTTUVOVCdcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQodGhpcy5oaWRkZW5MaXN0KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgYWN0aXZhdGVTZWxlY3Rvcih0eXBlOiBhbnksIGV2ZW50OiBib29sZWFuKSB7XG4gICAgdGhpcy5hY3RpdmVTZWxlY3RvciA9IGV2ZW50ID8gdHlwZSA6ICcnO1xuICAgIGlmICh0aGlzLnNpZGVTZWxlY3RvckVsZW1lbnRzPy5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2NoZWNrcG9pbnRzLW5ldyc6XG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UucHJldmlld1BhbmVsLm5leHQoZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JjJzpcbiAgICAgICAgdGhpcy5nZXRSQ0xpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3NpZ25vcnMnOlxuICAgICAgICB0aGlzLmdldEFzc2lnbm9yc0xpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3NpZ25lZXMnOlxuICAgICAgICB0aGlzLmdldEdyb3Vwc0xpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3N1cmFuY2UnOlxuICAgICAgICB0aGlzLmdldEFzc3VyYW5jZSgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzZXRSZXNwb25zaWJpbGl0eU5hbWUoKSB7XG4gICAgaWYgKHRoaXMuYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfdHlwZSA9PT0gJ2NvbXBsaWFuY2VfYXVkaXQnKSB7XG4gICAgICBjb25zdCBhc3Nlc3NtZW50RGF0YSA9IHtcbiAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgdmFsdWU6ICdBdWRpdDogJyArIHRoaXMuYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICBhc3Nlc3NtZW50X2lkOiB0aGlzLmFzc2Vzc21lbnREZXRhaWxzLmFzc2Vzc21lbnRfaWQsXG4gICAgICAgIGNhdGVnb3J5X2lkOiB0aGlzLmFzc2Vzc21lbnREZXRhaWxzLmNhdGVnb3J5WzBdPy5faWQsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNldEFzc2Vzc21lbnREYXRhKFt0aGlzLmFzc2Vzc21lbnREZXRhaWxzXSwgcGF5bG9hZCwgJ2Fzc2Vzc21lbnQnKTtcblxuICAgICAgdGhpcy53aGF0Q2hhbmdlZChhc3Nlc3NtZW50RGF0YSk7XG4gICAgICB0aGlzLmhpZGRlbkxpc3QucHVzaCgnQ0hFQ0tQT0lOVFMnKTtcbiAgICAgIHRoaXMuaGlkZGVuTGlzdC5wdXNoKCdDSEVDS1BPSU5UU19ORVcnKTtcbiAgICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQodGhpcy5oaWRkZW5MaXN0KTtcbiAgICB9XG4gIH1cblxuICB3aGF0Q2hhbmdlZChldmVudDogYW55KSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZSA9IGV2ZW50Py50YXJnZXQ/LnZhbHVlO1xuICAgIGlmIChldmVudC50YXJnZXQudmFsdWUudHJpbSgpICE9PSAnJykge1xuICAgICAgdGhpcy5pc0VkaXRXaGF0ID0gdHJ1ZTtcbiAgICAgIGlmICh0aGlzLmludmFsaWRUeXBlID09PSAnd2hhdCcpIHtcbiAgICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICcnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzRWRpdFdoYXQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhY3RpdmVEZXNlbGVjdG9yKCkge1xuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSAnJztcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XG4gIH1cblxuICBhZGRNb3JlSW5mbyhldmVudDogYW55KSB7XG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IHRydWU7XG4gICAgdGhpcy5tb3JlT3B0aW9uc1tldmVudC5jb2RlXSA9IGV2ZW50LmNoZWNrZWQ7XG4gIH1cblxuICBvblJjVHlwZUNoYW5nZShzZWxlY3RlZFR5cGU6IE51bWJlcikge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID0gc2VsZWN0ZWRUeXBlID8/IDA7XG4gIH1cblxuICBnZXRSQ0xpc3QocHJvZ3JhbV9pZD86IHN0cmluZykge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmIChwcm9ncmFtX2lkKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9ncmFtX2lkcycsIHByb2dyYW1faWQpO1xuICAgIH1cbiAgICB0aGlzLmNvbXBsaWFuY2VDb21tb25TZXJ2aWNlPy5nZXRSY0xpc3RJbmZvKHBhcmFtcyk/LnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0ID0gcmVzO1xuICAgICAgICB0aGlzLnJjTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjLCAncmNpZCcpO1xuICAgICAgICBjb25zdCBSQyA9IHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICBpZHM/LmluY2x1ZGVzKGVsZW1lbnQucmNpZClcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKFJDPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYyA9IFJDO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vcGVuZWRGcm9tID09PSAnUklTS19UUkVBVE1FTlQnKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QsXG4gICAgICAgICAgICBbdGhpcy5zZWxlY3RlZFJDXSxcbiAgICAgICAgICAgICdyY2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5SQyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5hY3Rpb25CdXR0b25zID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBidXR0b25UZXh0OiAnR28gdG8gcmlzayB0cmVhdG1lbnQnLFxuICAgICAgICAgICAgICBjbGFzczogJ2JsdWUtYnRuJyxcbiAgICAgICAgICAgICAgaWQ6ICd2aWV3JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXTtcbiAgICAgICAgICAvLyBQcmV2aW91c2x5IHRoZXJlIHdhcyBvbmx5IFJDIHdhcyBlbWl0dGluZyB3aGljaCBtYWRlIHRoZSBjaGVja2VkIG9wdGlvbnMgdG8gZGUgY2hlY2sgbm93IGNoZWNraW5nIHRoZSBjb25kaXRpb24gYW5kIHNlbmRpbmcgYWxsIHRoZSBzZWxlY3RlZCBvcHRpb25zXG4gICAgICAgICAgbGV0IGNoZWNrZWRNb3JlT3B0aW9ucyA9IFtdO1xuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMubW9yZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vcmVPcHRpb25zW2tleV0pIHtcbiAgICAgICAgICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGNoZWNrZWRNb3JlT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJjTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0VXNlckRldGFpbHMoKSB7XG4gICAgaWYgKHRoaXMuYWN0aW9uQnV0dG9ucz8ubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5vcmdhbml6YXRpb25Db21tb25TZXJ2aWNlPy5nZXRPcmdVc2VySW5mbygpPy5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmlzTm90aWZpY2F0aW9uUGVuZGluZyA9IHJlcz8ubm90aWZpY2F0aW9uX3BlbmRpbmdfZmxhZztcbiAgICAgICAgICB0aGlzLmFjdGlvbkJ1dHRvbnNbMV0uYnV0dG9uVGV4dCA9IHRoaXMuaXNOb3RpZmljYXRpb25QZW5kaW5nXG4gICAgICAgICAgICA/ICdWaWV3IFJlc3BvbnNpYmlsaXRpZXMgaW4gUXVldWUnXG4gICAgICAgICAgICA6ICdWaWV3IFJlc3BvbnNpYmlsaXRpZXMnO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QXNzdXJhbmNlKCkge1xuICAgIHRoaXMuYXNzdXJhbmNlQ2F0ZWdvcnlMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5nZXRBc3N1cmFuY2UoKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5hc3N1cmFuY2VDYXRlZ29yaWVzTGlzdCA9IHJlcztcbiAgICAgICAgaWYgKFxuICAgICAgICAgICh0aGlzLnN1YnNjcmlwdGlvbkRldGFpbHMgJiZcbiAgICAgICAgICAgICF0aGlzLnN1YnNjcmlwdGlvbkRldGFpbHNbMF0uYXNzdXJhbmNlX2ZsYWcpIHx8XG4gICAgICAgICAgdGhpcy5hc3N1cmFuY2VDYXRlZ29yaWVzTGlzdD8ubGVuZ3RoID09IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5oaWRkZW5MaXN0LnB1c2goJ0FTU1VSQU5DRScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGlkZUVsZW1lbnRzRnJvbU1vcmVPcHRpb25zLmVtaXQodGhpcy5oaWRkZW5MaXN0KTtcbiAgICAgICAgdGhpcy5hc3N1cmFuY2VDYXRlZ29yeUxpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLmFzc3VyYW5jZUNhdGVnb3J5TGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdldE9yZ2FuaXphdGlvbkRldGFpbHMoKSB7XG4gICAgdGhpcy5vcmdhbml6YXRpb25Db21tb25TZXJ2aWNlPy5nZXRPcmdEZXRhaWxzSW5mbygpPy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNGcmFtZXdvcmtBdmFpbGFibGUgPSByZXM/LmVuYWJsZV9yZXNwb25zaWJpbGl0eV9mcmFtZXdvcms7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRDYXRlZ29yeUxpc3QoKSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5nZXRDYXRlZ29yaWVzTGlzdCgpLnN1YnNjcmliZShcbiAgICAgIChyZXMpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHJlcztcbiAgICAgICAgdGhpcy5hbGxDYXRlZ29yaWVzID0gY2xvbmVEZWVwKHJlcyk7XG4gICAgICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5jb21wbGlhbmNlX3R5cGUgPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzLm90aGVycy5saXN0LnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY29tcGxpYW5jZV90eXBlID09IDEpIHtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcy5yZWd1bGF0aW9ucy5saXN0LnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY29tcGxpYW5jZV90eXBlID09IDIpIHtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcy5zdGFuZGFyZHMubGlzdC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNvbXBsaWFuY2VfdHlwZSA9PSAzKSB7XG4gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMuaW50ZXJuYWxDb250cm9scy5saXN0LnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBmaWx0ZXJMaXN0c0FjY29yZGluZ1RvUHJvZ3JhbShwcm9ncmFtX2lkPzogc3RyaW5nKSB7XG4gICAgdGhpcy51blN1YnNjcmliZVByb2dyYW0ubmV4dCgpO1xuICAgIHRoaXMudW5TdWJzY3JpYmVQcm9ncmFtLmNvbXBsZXRlKCk7XG4gICAgaWYgKHByb2dyYW1faWQgJiYgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24pIHtcbiAgICAgIHRoaXMuZ2V0UGVvcGxlTGlzdEFnYWluc3RQSUQocHJvZ3JhbV9pZCk7XG4gICAgICB0aGlzLmdldFJDTGlzdChwcm9ncmFtX2lkKTtcbiAgICAgIHRoaXMuZ2V0R3JvdXBzTGlzdChwcm9ncmFtX2lkKTtcbiAgICAgIHRoaXMuZ2V0QXNzaWdub3JzTGlzdChwcm9ncmFtX2lkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nZXRBc3NpZ25lZXNMaXN0KCk7XG4gICAgICB0aGlzLmdldFJDTGlzdCgpO1xuICAgICAgdGhpcy5nZXRHcm91cHNMaXN0KCk7XG4gICAgICB0aGlzLmdldEFzc2lnbm9yc0xpc3QoKTtcbiAgICB9XG4gIH1cblxuICBnZXRQcm9ncmFtRGV0YWlscyhwcm9ncmFtSWQ/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5nZXRQcm9ncmFtKHByb2dyYW1JZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICByZXM/LmFzc2Vzc21lbnQgJiZcbiAgICAgICAgcmVzPy5hc3Nlc3NtZW50Py5sZW5ndGggJiZcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2Vzc21lbnQpPy5sZW5ndGhcbiAgICAgICkge1xuICAgICAgICBjb25zdCBjYXRlZ29yeUFzc2Vzc21lbnQgPSByZXM/LmFzc2Vzc21lbnQuZmlsdGVyKFxuICAgICAgICAgIChhc3Nlc3NtZW50OiBhbnkpID0+XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzZXNzbWVudD8uY2F0ZWdvcnlfaWQgPT09XG4gICAgICAgICAgICBhc3Nlc3NtZW50Py5jYXRlZ29yeV9pZFxuICAgICAgICApO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgY2F0ZWdvcnlBc3Nlc3NtZW50Py5sZW5ndGggJiZcbiAgICAgICAgICBjYXRlZ29yeUFzc2Vzc21lbnRbMF0/LmFzc2Vzc21lbnRJZHM/Lmxlbmd0aFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBpc0V4aXN0ID0gY2F0ZWdvcnlBc3Nlc3NtZW50WzBdPy5hc3Nlc3NtZW50SWRzPy5pbmNsdWRlcyhcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoIWlzRXhpc3QpIHtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQgPSB7XG4gICAgICAgICAgICAgIGFzc2Vzc21lbnRfaWQ6ICcnLFxuICAgICAgICAgICAgICBjYXRlZ29yeV9pZDogJycsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50ID0ge1xuICAgICAgICAgICAgYXNzZXNzbWVudF9pZDogJycsXG4gICAgICAgICAgICBjYXRlZ29yeV9pZDogJycsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldExpc3RzQWNjb3JkaW5nVG9Qcm9ncmFtKHByb2dyYW1faWQ6IHN0cmluZykge1xuICAgIHRoaXMuZ2V0UGVvcGxlTGlzdEFnYWluc3RQSUQocHJvZ3JhbV9pZCk7XG4gICAgdGhpcy5nZXRSQ0xpc3QocHJvZ3JhbV9pZCk7XG4gICAgdGhpcy5nZXRHcm91cHNMaXN0KHByb2dyYW1faWQpO1xuICAgIHRoaXMuZ2V0QXNzaWdub3JzTGlzdChwcm9ncmFtX2lkKTtcbiAgfVxuXG4gIGdldEFzc2lnbm9yc0xpc3QocHJvZ3JhbV9pZD86IHN0cmluZykge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmIChwcm9ncmFtX2lkKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9ncmFtX2lkcycsIHByb2dyYW1faWQpO1xuICAgIH1cbiAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmdldEFzc2lnbm9yc0xpc3QocGFyYW1zKS5zdWJzY3JpYmUoXG4gICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5iZWhhbGZPZlVzZXJzTGlzdCA9IHJlcztcbiAgICAgICAgaWYgKHByb2dyYW1faWQpIHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuYXNzaWdub3JzTGlzdExvYWRlciA9IGZhbHNlO1xuICAgICAgICBpZiAocHJvZ3JhbV9pZCkge1xuICAgICAgICAgIHRoaXMucmVmcmVzaExpc3RzV2hpbGVQcm9ncmFtU2VsZWN0ZWQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdldEFzc2lnbmVlc0xpc3QocHJvZ3JhbV9pZD86IHN0cmluZykge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmIChwcm9ncmFtX2lkKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdwcm9ncmFtX2lkcycsIHByb2dyYW1faWQpO1xuICAgIH1cbiAgICB0aGlzLnVzZXJMaXN0TG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLmZldGNoQXNzaWduZWUocHJvZ3JhbV9pZCk7XG4gIH1cblxuICBmZXRjaEFzc2lnbmVlKHByb2dyYW1faWQ/OiBzdHJpbmcpIHtcbiAgICB0aGlzLm9yZ2FuaXphdGlvblVzZXJTZXJ2aWNlLmdldE9yZ2FuaXphdGlvblVzZXJzKCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYWxsVXNlcnNMaXN0ID0gcmVzLm1hcCgodXNlcjogYW55KSA9PiB7XG4gICAgICAgICAgdXNlci5tZW1iZXJfbmFtZSA9IHVzZXIuZW1wbG95ZWVfbmFtZTtcbiAgICAgICAgICByZXR1cm4gdXNlcjtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwcm9ncmFtX2lkKSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoTGlzdHNXaGlsZVByb2dyYW1TZWxlY3RlZCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMudXNlckxpc3RMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudXNlckxpc3RMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgaWYgKHByb2dyYW1faWQpIHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnZXRQZW9wbGVMaXN0QWdhaW5zdFBJRChwcm9ncmFtX2lkOiBzdHJpbmcpIHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAocHJvZ3JhbV9pZCkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncHJvZ3JhbV9pZHMnLCBwcm9ncmFtX2lkKTtcbiAgICAgIHRoaXMudXNlckxpc3RMb2FkZXIgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLm9yZ2FuaXphdGlvblVzZXJTZXJ2aWNlLmdldE9yZ2FuaXphdGlvblVzZXJzKCkuc3Vic2NyaWJlKFxuICAgICAgKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0T3JnYW5pemF0aW9uVXNlckxpc3QocmVzKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X2Fzc2lnbmVlX2lkcyB8fFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0Py5sZW5ndGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCxcbiAgICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBhbGxJZHMgPSBbXG4gICAgICAgICAgICAgIC4uLm5ldyBTZXQoaWRzKSxcbiAgICAgICAgICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9pZHNcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjb25zdCBhc3NpZ25vcnMgPSB0aGlzLmFzc2lnbmVlc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XG4gICAgICAgICAgICAgIGFsbElkcz8uaW5jbHVkZXMoZWxlbWVudD8ubXlfbWVtYmVyX2lkKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChhc3NpZ25vcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IGFzc2lnbm9ycztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0ID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc2lnbm9ycyA9IHRoaXMuYXNzaWduZWVzTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfYXNzaWduZWVfaWRzPy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICBlbGVtZW50Py5teV9tZW1iZXJfaWRcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChhc3NpZ25vcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IGFzc2lnbm9ycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlUHJvZ3JhbUFzc2lnbmVlR3JvdXAoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjaGVja2VkTW9yZU9wdGlvbnMgPSBbXTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfcmV2aWV3ZXJzIHx8XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoIHx8XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgaWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCxcbiAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBhbGxJZHMgPSBbXG4gICAgICAgICAgICAuLi5uZXcgU2V0KGlkcyksXG4gICAgICAgICAgICAuLi5uZXcgU2V0KHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1bMF0uZGVmYXVsdF9yZXZpZXdlcnMpLFxuICAgICAgICAgIF07XG4gICAgICAgICAgY29uc3QgcmV2aWV3ZXJzID0gdGhpcy5yZXZpZXdlcnNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgICAgYWxsSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5teV9tZW1iZXJfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBjb25zdCByZXZpZXdlcnMgPSB0aGlzLnJldmlld2Vyc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1bMF0uZGVmYXVsdF9yZXZpZXdlcnM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm15X21lbWJlcl9pZCkpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHJldmlld2Vycz8ubGVuZ3RoIHx8XG4gICAgICAgICAgICAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMgJiZcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSByZXZpZXdlcnM7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCA9IHJldmlld2VycztcbiAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCA9IHRoaXMuYXNzaWduVXNlck1lbWJlcklkKFxuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkVWSUVXRVIgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdCA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgIHRoaXMucG9wdWxhdGVQcm9ncmFtUmV2aWV3ZXJHcm91cCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfb3ZlcnNlZXJzIHx8XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoIHx8XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdCxcbiAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBhbGxEZWZhdWx0Q0NJZHMgPSBbXG4gICAgICAgICAgICAuLi5uZXcgU2V0KGlkcyksXG4gICAgICAgICAgICAuLi5uZXcgU2V0KFxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX21lbWJlcl9lbWFpbFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnN0IG92ZXJzZWVyc0NDID0gdGhpcy5vdmVyc2VlcnNMaXN0Py5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgIGFsbERlZmF1bHRDQ0lkcz8uaW5jbHVkZXMoZWxlbWVudD8ubXlfbWVtYmVyX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gY29uc3Qgb3ZlcnNlZXJzID0gdGhpcy5vdmVyc2VlcnNMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PiB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfb3ZlcnNlZXJzLmNjX2VtYWlsLmluY2x1ZGVzKGVsZW1lbnQubXlfbWVtYmVyX2lkKSk7XG4gICAgICAgICAgY29uc3Qgbm90aWZ5TGlzdElkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3QsXG4gICAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgYWxsRGVmYXVsdENDRmFpbHVyZUlkcyA9IFtcbiAgICAgICAgICAgIC4uLm5ldyBTZXQobm90aWZ5TGlzdElkcyksXG4gICAgICAgICAgICAuLi5uZXcgU2V0KFxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfbWVtYmVyX2VtYWlsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF07XG4gICAgICAgICAgY29uc3Qgb3ZlcnNlZXJzQ0NGYWlsdXJlID0gdGhpcy5vdmVyc2VlcnNMaXN0Py5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgICAgICBhbGxEZWZhdWx0Q0NGYWlsdXJlSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5teV9tZW1iZXJfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBjb25zdCBub3RpZnlPdmVyc2VlcnMgPSB0aGlzLm92ZXJzZWVyc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1bMF0uZGVmYXVsdF9vdmVyc2VlcnMuZmFpbHVyZV9jY19lbWFpbC5pbmNsdWRlcyhlbGVtZW50Lm15X21lbWJlcl9pZCkpO1xuICAgICAgICAgIC8vIGlmIChvdmVyc2VlcnM/Lmxlbmd0aCkge1xuICAgICAgICAgIC8vICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3QgPSBvdmVyc2VlcnM7XG4gICAgICAgICAgLy8gICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgLy8gaWYgKG5vdGlmeU92ZXJzZWVycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgLy8gICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9IG5vdGlmeU92ZXJzZWVycztcbiAgICAgICAgICAvLyAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xuICAgICAgICAgIC8vIH1cblxuICAgICAgICAgIGlmIChvdmVyc2VlcnNDQz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IG92ZXJzZWVyc0NDO1xuICAgICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0ID0gdGhpcy5hc3NpZ25Vc2VyTWVtYmVySWQoXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLmxpc3RcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob3ZlcnNlZXJzQ0NGYWlsdXJlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0ID0gb3ZlcnNlZXJzQ0NGYWlsdXJlO1xuICAgICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0ID1cbiAgICAgICAgICAgICAgICB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZChcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdCA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IFtdO1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0ID0gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZVByb2dyYW1PdmVyc2Vlckdyb3VwKCk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5tb3JlT3B0aW9ucykge1xuICAgICAgICAgIGlmICh0aGlzLm1vcmVPcHRpb25zW2tleV0pIHtcbiAgICAgICAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChjaGVja2VkTW9yZU9wdGlvbnMpO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgdGhpcy51c2VyTGlzdExvYWRlciA9IGZhbHNlO1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlZnJlc2hBbGxMaXN0cygpO1xuICAgICAgICB0aGlzLnVzZXJMaXN0TG9hZGVyID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHNldE9yZ2FuaXphdGlvblVzZXJMaXN0KHJlczogYW55KSB7XG4gICAgdGhpcy5hc3NpZ25lZXNMaXN0ID0gcmVzLmFzc2lnbmVlLm1hcCgodXNlcjogYW55KSA9PiB7XG4gICAgICB1c2VyLm1lbWJlcl9uYW1lID0gdXNlci5lbXBsb3llZV9uYW1lO1xuICAgICAgcmV0dXJuIHVzZXI7XG4gICAgfSk7XG4gICAgdGhpcy5vdmVyc2VlcnNMaXN0ID0gcmVzLm92ZXJzZWVyLm1hcCgodXNlcjogYW55KSA9PiB7XG4gICAgICB1c2VyLm1lbWJlcl9uYW1lID0gdXNlci5lbXBsb3llZV9uYW1lO1xuICAgICAgcmV0dXJuIHVzZXI7XG4gICAgfSk7XG4gICAgdGhpcy5yZXZpZXdlcnNMaXN0ID0gcmVzLnJldmlld2VyLm1hcCgodXNlcjogYW55KSA9PiB7XG4gICAgICB1c2VyLm1lbWJlcl9uYW1lID0gdXNlci5lbXBsb3llZV9uYW1lO1xuICAgICAgcmV0dXJuIHVzZXI7XG4gICAgfSk7XG4gICAgdGhpcy5wcm9ncmFtUGVvcGxlTGlzdCA9IHtcbiAgICAgIGFzc2lnbmVlc0xpc3Q6IFsuLi5uZXcgU2V0KHRoaXMuYXNzaWduZWVzTGlzdCldLFxuICAgICAgcmV2aWV3ZXJzTGlzdDogWy4uLm5ldyBTZXQodGhpcy5yZXZpZXdlcnNMaXN0KV0sXG4gICAgICBvdmVyc2VlcnNMaXN0OiBbLi4ubmV3IFNldCh0aGlzLm92ZXJzZWVyc0xpc3QpXSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0R3JvdXBzTGlzdChwcm9ncmFtX2lkPzogc3RyaW5nKSB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKHByb2dyYW1faWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ3Byb2dyYW1faWRzJywgcHJvZ3JhbV9pZCk7XG4gICAgfVxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlXG4gICAgICAuZ2V0T3JnYW5pemF0aW9uR3JvdXBzKHBhcmFtcylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuU3Vic2NyaWJlUHJvZ3JhbSkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gcmVzID8/IFtdO1xuICAgICAgICAgIGlmICghcHJvZ3JhbV9pZCkge1xuICAgICAgICAgICAgdGhpcy5PcmdHcm91cCA9IGRhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGdyb3VwczogYW55ID0gW107XG4gICAgICAgICAgaWYgKGRhdGE/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZGF0YT8uZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgICAgICAgICAgICBncm91cE5hbWU6IGVsZW1lbnQuZ3JvdXBfbmFtZSxcbiAgICAgICAgICAgICAgICB1c2VySWRzOiBlbGVtZW50Lm1lbWJlcl9pZHMsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGdyb3Vwcy5wdXNoKG9iaik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5ncm91cHNMaXN0ID0gZ3JvdXBzO1xuICAgICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCA9IHRydWU7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlRmxhZ19ncm91cHMgJiZcbiAgICAgICAgICAgIHRoaXMuT3JnR3JvdXA/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbT8ubGVuZ3RoICYmXG4gICAgICAgICAgICBwcm9ncmFtX2lkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEFsbExpc3RzKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcyAmJlxuICAgICAgICAgICAgcHJvZ3JhbV9pZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRHcm91cHMgPSBkYXRhLmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtWzBdLmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzPy5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICBlbGVtZW50Lmdyb3VwX2lkXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoZ3JvdXBzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgbGV0IG1lbWJlcklkczogYW55W10gPSBbXTtcbiAgICAgICAgICAgICAgc2VsZWN0ZWRHcm91cHMuZm9yRWFjaCgoZWFjaEdyb3VwOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZWFjaEdyb3VwPy5tZW1iZXJfaWRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIG1lbWJlcklkcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgLi4ubmV3IFNldChtZW1iZXJJZHMuY29uY2F0KGVhY2hHcm91cD8ubWVtYmVyX2lkcykpLFxuICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3Q/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QsXG4gICAgICAgICAgICAgICAgICAnbXlfbWVtYmVyX2lkJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxsSWRzID0gWy4uLm5ldyBTZXQoaWRzKSwgLi4ubmV3IFNldChtZW1iZXJJZHMpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBhc3NpZ25vcnMgPSB0aGlzLmFzc2lnbmVlc0xpc3QuZmlsdGVyKChlbGVtZW50OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICBhbGxJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lm15X21lbWJlcl9pZClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChhc3NpZ25vcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSBhc3NpZ25vcnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFzc2lnbm9ycyA9IHRoaXMuYXNzaWduZWVzTGlzdC5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgIG1lbWJlcklkcz8uaW5jbHVkZXMoZWxlbWVudD8ubXlfbWVtYmVyX2lkKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGFzc2lnbm9ycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IGFzc2lnbm9ycztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgdGhpcy5ncm91cHNMaXN0TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldEVkaXRSZXNwb25zaWJpbGl0eURldGFpbHMoaWQ6IGFueSkge1xuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgdGhpcy5wb3B1bGF0ZVJlc3BvbnNpYmlsaXR5RGV0YWlscygpO1xuICB9XG5cbiAgc2V0TGlzdChsaXN0OiBhbnlbXSwgaWRzOiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBkYXRhOiBhbnkgPSBbXTtcbiAgICBpZHM/LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBsaXN0LmZpbmRJbmRleChcbiAgICAgICAgKGxpc3RFbGVtZW50OiBhbnkpID0+IGxpc3RFbGVtZW50W2tleV0gPT0gZWxlbWVudFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHJldHVybklkcyhsaXN0OiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbGlzdFxuICAgICAgPy5tYXAoKGVsZSkgPT4ge1xuICAgICAgICBpZiAoZWxlW2tleV0pIHtcbiAgICAgICAgICByZXR1cm4gZWxlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChlbGUpID0+IGVsZSk7XG4gIH1cblxuICBwb3B1bGF0ZVByb2dyYW1Bc3NpZ25lZUdyb3VwKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcyB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGhcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCkge1xuICAgICAgICBjb25zdCBpZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QsXG4gICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICApO1xuICAgICAgICBjb25zdCBhbGxJZHMgPSBbXG4gICAgICAgICAgLi4ubmV3IFNldChpZHMpLFxuICAgICAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHNcbiAgICAgICAgICApLFxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBhc3NpZ25lZUdyb3VwcyA9IHRoaXMuZ3JvdXBBc3NpZ25lZUxpc3Q/LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgIGFsbElkcz8uaW5jbHVkZXMoZWxlbWVudD8uZ3JvdXBfaWQpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChhc3NpZ25lZUdyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVHcm91cHMubGlzdCA9IGFzc2lnbmVlR3JvdXBzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3QgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYXNzaWduZWVHcm91cHMgPSB0aGlzLmdyb3VwQXNzaWduZWVMaXN0Py5maWx0ZXIoKGVsZW1lbnQ6IGFueSkgPT5cbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHM/LmluY2x1ZGVzKFxuICAgICAgICAgICAgZWxlbWVudD8uZ3JvdXBfaWRcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGlmIChhc3NpZ25lZUdyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVHcm91cHMubGlzdCA9IGFzc2lnbmVlR3JvdXBzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3QgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwb3B1bGF0ZVByb2dyYW1PdmVyc2Vlckdyb3VwKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzXG4gICAgICAgID8uZmFpbHVyZV9jY19lbWFpbF9ncm91cHNcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgaWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdCxcbiAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGFsbERlZmF1bHRDQ0dyb3VwSWRzID0gW1xuICAgICAgICAgIC4uLm5ldyBTZXQoaWRzKSxcbiAgICAgICAgICAuLi5uZXcgU2V0KFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHNcbiAgICAgICAgICApLFxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBvdmVyc2VlcnNDQ0dyb3VwID0gdGhpcy5ncm91cE92ZXJzZWVyTGlzdD8uZmlsdGVyKFxuICAgICAgICAgIChlbGVtZW50OiBhbnkpID0+IGFsbERlZmF1bHRDQ0dyb3VwSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5ncm91cF9pZClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgbm90aWZ5TGlzdElkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5ub3RpZnlMaXN0LFxuICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYWxsRGVmYXVsdENDRmFpbHVyZUdyb3VwSWRzID0gW1xuICAgICAgICAgIC4uLm5ldyBTZXQobm90aWZ5TGlzdElkcyksXG4gICAgICAgICAgLi4ubmV3IFNldChcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbF9ncm91cHNcbiAgICAgICAgICApLFxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBvdmVyc2VlcnNDQ0ZhaWx1cmVHcm91cCA9IHRoaXMuZ3JvdXBPdmVyc2Vlckxpc3Q/LmZpbHRlcihcbiAgICAgICAgICAoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgICAgYWxsRGVmYXVsdENDRmFpbHVyZUdyb3VwSWRzPy5pbmNsdWRlcyhlbGVtZW50Py5ncm91cF9pZClcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKG92ZXJzZWVyc0NDR3JvdXA/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5saXN0ID0gb3ZlcnNlZXJzQ0NHcm91cDtcbiAgICAgICAgICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubGlzdCA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvdmVyc2VlcnNDQ0ZhaWx1cmVHcm91cD8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzLm5vdGlmeUxpc3QgPVxuICAgICAgICAgICAgb3ZlcnNlZXJzQ0NGYWlsdXJlR3JvdXA7XG4gICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PVkVSU0VFUiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzR3JvdXBzLm5vdGlmeUxpc3QgPSBbXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJzQ0NHcm91cCA9IHRoaXMuZ3JvdXBPdmVyc2Vlckxpc3Q/LmZpbHRlcihcbiAgICAgICAgICAoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHM/LmluY2x1ZGVzKFxuICAgICAgICAgICAgICBlbGVtZW50Py5ncm91cF9pZFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBvdmVyc2VlcnNDQ0ZhaWx1cmVHcm91cCA9IHRoaXMuZ3JvdXBPdmVyc2Vlckxpc3Q/LmZpbHRlcihcbiAgICAgICAgICAoZWxlbWVudDogYW55KSA9PlxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3Vwcz8uaW5jbHVkZXMoXG4gICAgICAgICAgICAgIGVsZW1lbnQ/Lmdyb3VwX2lkXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGlmIChvdmVyc2VlcnNDQ0dyb3VwPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubGlzdCA9IG92ZXJzZWVyc0NDR3JvdXA7XG4gICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PVkVSU0VFUiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG92ZXJzZWVyc0NDRmFpbHVyZUdyb3VwLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5ub3RpZnlMaXN0ID1cbiAgICAgICAgICAgIG92ZXJzZWVyc0NDRmFpbHVyZUdyb3VwO1xuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT1ZFUlNFRVIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5saXN0ID0gW107XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHMubm90aWZ5TGlzdCA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHBvcHVsYXRlUHJvZ3JhbVJldmlld2VyR3JvdXAoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW1bMF0/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aFxuICAgICkge1xuICAgICAgY29uc3QgaWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdCxcbiAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgKTtcbiAgICAgIGNvbnN0IGFsbElkcyA9IFtcbiAgICAgICAgLi4ubmV3IFNldChpZHMpLFxuICAgICAgICAuLi5uZXcgU2V0KFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1bMF0/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzXG4gICAgICAgICksXG4gICAgICBdO1xuICAgICAgY29uc3QgcmV2aWV3ZXJzR3JvdXAgPSB0aGlzLmdyb3VwUmV2aWV3ZXJMaXN0LmZpbHRlcigoZWxlbWVudDogYW55KSA9PlxuICAgICAgICBhbGxJZHM/LmluY2x1ZGVzKGVsZW1lbnQ/Lmdyb3VwX2lkKVxuICAgICAgKTtcbiAgICAgIGlmIChcbiAgICAgICAgcmV2aWV3ZXJzR3JvdXA/Lmxlbmd0aCB8fFxuICAgICAgICAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMgJiZcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDApXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZ3JvdXBSZXZpZXdlcnMubGlzdCA9IHJldmlld2Vyc0dyb3VwO1xuICAgICAgICB0aGlzLm1vcmVPcHRpb25zLlJFVklFV0VSID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmdyb3VwUmV2aWV3ZXJzLmxpc3QgPSBbXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZ3JvdXBSZXZpZXdlcnMubGlzdCA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIHBvcHVsYXRlT3ZlcnNlZXJEYXRhKHJlczogYW55KSB7XG4gICAgbGV0IG92ZXJzZWVyVXNlckxpc3Q6IG51bWJlcltdID0gW107XG4gICAgbGV0IG92ZXJzZWVyVXNlck5vdGlmeUxpc3Q6IG51bWJlcltdID0gW107XG4gICAgbGV0IG92ZXJzZWVyRW1wbG95ZWVzTGlzdCA9IHJlcz8uY2NfbWVtYmVyX2VtYWlsXG4gICAgICA/IE9iamVjdC5rZXlzKHJlcz8uY2NfbWVtYmVyX2VtYWlsKS5tYXAoTnVtYmVyKVxuICAgICAgOiBbXTtcbiAgICBvdmVyc2VlclVzZXJMaXN0ID1cbiAgICAgIG92ZXJzZWVyRW1wbG95ZWVzTGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICByZXM/LnVzZXJHcm91cElkcz8uY2NFbWFpbEdyb3VwSWRzPy5sZW5ndGggPiAwXG4gICAgICAgID8gb3ZlcnNlZXJFbXBsb3llZXNMaXN0LmZpbHRlcigoZW1wbG95ZWVJZHM6IG51bWJlcikgPT5cbiAgICAgICAgICByZXM/LmV4aXN0aW5nVXNlcklkcz8uY2NFbWFpbE1lbWJlcklkcz8uaW5jbHVkZXMoZW1wbG95ZWVJZHMpXG4gICAgICAgIClcbiAgICAgICAgOiBbLi4ub3ZlcnNlZXJFbXBsb3llZXNMaXN0XTtcbiAgICBsZXQgb3ZlcnNlZXJFbXBsb3llZU5vdGlmeUxpc3QgPSByZXM/LmZhaWx1cmVfY2NfbWVtYmVyX2VtYWlsXG4gICAgICA/IE9iamVjdC5rZXlzKHJlcz8uZmFpbHVyZV9jY19tZW1iZXJfZW1haWwpLm1hcChOdW1iZXIpXG4gICAgICA6IFtdO1xuICAgIG92ZXJzZWVyVXNlck5vdGlmeUxpc3QgPVxuICAgICAgb3ZlcnNlZXJFbXBsb3llZU5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmZhaWx1cmVDQ0VtYWlsR3JvdXBJZHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyBvdmVyc2VlckVtcGxveWVlTm90aWZ5TGlzdC5maWx0ZXIoKGVtcGxveWVlSWRzOiBudW1iZXIpID0+XG4gICAgICAgICAgcmVzPy5leGlzdGluZ1VzZXJJZHM/LmZhaWx1cmVDQ0VtYWlsTWVtYmVySWRzPy5pbmNsdWRlcyhlbXBsb3llZUlkcylcbiAgICAgICAgKVxuICAgICAgICA6IFsuLi5vdmVyc2VlckVtcGxveWVlTm90aWZ5TGlzdF07XG5cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsnb3ZlcnNlZXJzJ10gPSB7XG4gICAgICBsaXN0OiByZXM/LmNjX21lbWJlcl9lbWFpbFxuICAgICAgICA/IHRoaXMuc2V0TGlzdCh0aGlzLm92ZXJzZWVyc0xpc3QsIG92ZXJzZWVyVXNlckxpc3QsICdlbXBsb3llZV9pZCcpXG4gICAgICAgIDogW10sXG4gICAgICBub3RpZnlMaXN0OiByZXM/LmZhaWx1cmVfY2NfbWVtYmVyX2VtYWlsXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCxcbiAgICAgICAgICBvdmVyc2VlclVzZXJOb3RpZnlMaXN0LFxuICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgKVxuICAgICAgICA6IFtdLFxuICAgIH07XG5cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsnb3ZlcnNlZXJzR3JvdXBzJ10gPSB7XG4gICAgICBsaXN0OiByZXM/LnVzZXJHcm91cElkcz8uY2NFbWFpbEdyb3VwSWRzXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMuT3JnR3JvdXAsXG4gICAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmNjRW1haWxHcm91cElkcyxcbiAgICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICAgIClcbiAgICAgICAgOiBbXSxcbiAgICAgIG5vdGlmeUxpc3Q6IHJlcz8udXNlckdyb3VwSWRzPy5mYWlsdXJlQ0NFbWFpbEdyb3VwSWRzXG4gICAgICAgID8gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMuT3JnR3JvdXAsXG4gICAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmZhaWx1cmVDQ0VtYWlsR3JvdXBJZHMsXG4gICAgICAgICAgJ2dyb3VwX2lkJ1xuICAgICAgICApXG4gICAgICAgIDogW10sXG4gICAgfTtcbiAgfVxuXG4gIHBvcHVsYXRlUmV2aWV3ZXJEYXRhKHJlczogYW55KSB7XG4gICAgY29uc3QgcmV2aWV3ZXJEZXRhaWxzID0gT2JqZWN0LmtleXMocmVzPy5yZXZpZXdlcl9hcnIpO1xuICAgIHRoaXMuaGFzUmV2aWV3ZXIgPSByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDA7XG4gICAgY29uc3QgZ3JvdXBSZXZpZXdlckRldGFpbHMgPSByZXM/LnVzZXJHcm91cElkcz8ucmV2aWV3ZXJHcm91cElkcz8ubGVuZ3RoXG4gICAgICA/IE9iamVjdC5hc3NpZ24ocmVzPy51c2VyR3JvdXBJZHM/LnJldmlld2VyR3JvdXBJZHMpXG4gICAgICA6IFtdO1xuICAgIGxldCByZXZpZXdlcl91c2VyczogYW55W10gPSBbXTtcbiAgICByZXZpZXdlcl91c2VycyA9XG4gICAgICByZXM/LnJldmlld2VyX2Fycj8ubGV2ZWwxPy5yZXZpZXdlcnM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LnJldmlld2VyR3JvdXBJZHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyByZXM/LnJldmlld2VyX2Fycj8ubGV2ZWwxPy5yZXZpZXdlcnMuZmlsdGVyKChtZW1iZXJJZDogYW55KSA9PlxuICAgICAgICAgIHJlcz8uZXhpc3RpbmdVc2VySWRzPy5yZXZpZXdlcklkcz8uaW5jbHVkZXMobWVtYmVySWQ/Lm1lbWJlcl9pZClcbiAgICAgICAgKVxuICAgICAgICA6IHJlcz8ucmV2aWV3ZXJfYXJyPy5sZXZlbDE/LnJldmlld2VycztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsncmV2aWV3ZXJzJ10gPSB7XG4gICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6XG4gICAgICAgIHJlcz8ucmV2aWV3ZXJfYXJyPy5sZXZlbDE/LnR5cGUgPT0gJ1NFUVVFTlRJQUwnID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgcmV2aWV3RnJlcXVlbmN5OiB7XG4gICAgICAgIHJldmlld0NvbXBsZXRlRGF5czpcbiAgICAgICAgICByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDAgPyByZXM/LnJldmlld19hZnRlcl9kYXlzIDogMixcbiAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czpcbiAgICAgICAgICByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDAgPyByZXM/LnJldmlld19mYWlsZWRfYWZ0ZXJfZGF5cyA6IDIsXG4gICAgICB9LFxuICAgICAgYWNjZXB0ZWREYXRhOiByZXZpZXdlckRldGFpbHM/Lmxlbmd0aCA+IDAgPyByZXZpZXdlcl91c2VycyA6IFtdLFxuICAgICAgbGlzdDpcbiAgICAgICAgcmV2aWV3ZXJEZXRhaWxzPy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0aGlzLnNldFJldmlld2VyUGF5bG9hZChcbiAgICAgICAgICAgIHJldmlld2VyX3VzZXJzLFxuICAgICAgICAgICAgJ29iamVjdCcsXG4gICAgICAgICAgICByZXM/LnJldmlld2VyX2Fycj8ubGV2ZWwxPy50eXBlXG4gICAgICAgICAgKVxuICAgICAgICAgIDogW10sXG4gICAgfTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsnZ3JvdXBSZXZpZXdlcnMnXSA9IHtcbiAgICAgIHNlcXVlbnRpYWxXb3JrZmxvdzpcbiAgICAgICAgcmVzPy5yZXZpZXdlcl9hcnI/LmxldmVsMT8udHlwZSA9PSAnU0VRVUVOVElBTCcgPyB0cnVlIDogZmFsc2UsXG4gICAgICByZXZpZXdGcmVxdWVuY3k6IHtcbiAgICAgICAgcmV2aWV3Q29tcGxldGVEYXlzOlxuICAgICAgICAgIHJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMCA/IHJlcz8ucmV2aWV3X2FmdGVyX2RheXMgOiAyLFxuICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOlxuICAgICAgICAgIHJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMCA/IHJlcz8ucmV2aWV3X2ZhaWxlZF9hZnRlcl9kYXlzIDogMixcbiAgICAgIH0sXG4gICAgICBsaXN0OlxuICAgICAgICBncm91cFJldmlld2VyRGV0YWlscz8ubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGhpcy5zZXRMaXN0KHRoaXMuT3JnR3JvdXAsIGdyb3VwUmV2aWV3ZXJEZXRhaWxzLCAnZ3JvdXBfaWQnKVxuICAgICAgICAgIDogW10sXG4gICAgfTtcbiAgfVxuXG4gIHBvcHVsYXRlQXNzaWduZWVEYXRhKHJlczogYW55KSB7XG4gICAgbGV0IEFzc2lnbmVlQW55VXNlckxpc3Q6IG51bWJlcltdID0gW107XG4gICAgbGV0IEFzc2lnbmVlQWxsVXNlckxpc3Q6IG51bWJlcltdID0gW107XG4gICAgbGV0IGFzc2lnbmVlQW55T25lTGlzdCA9XG4gICAgICByZXM/LmFzc2lnbmVkX3RvX21lbWJlcl9pZCAmJiB0aGlzLmlzRW50cnVzdFxuICAgICAgICA/IHJlcz8uYXNzaWduZWRfdG9fbWVtYmVyX2lkXG4gICAgICAgIDogW107XG4gICAgQXNzaWduZWVBbnlVc2VyTGlzdCA9XG4gICAgICByZXM/LmFzc2lnbmVkX3RvX21lbWJlcl9pZD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICByZXM/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbnlvbmVHcm91cElkcz8ubGVuZ3RoID4gMFxuICAgICAgICA/IGFzc2lnbmVlQW55T25lTGlzdC5maWx0ZXIoKGVtcGxveWVlSWRzOiBudW1iZXIpID0+XG4gICAgICAgICAgcmVzPy5leGlzdGluZ1VzZXJJZHM/LmFzc2lnbmVlQW55b25lSWRzPy5pbmNsdWRlcyhlbXBsb3llZUlkcylcbiAgICAgICAgKVxuICAgICAgICA6IFsuLi5hc3NpZ25lZUFueU9uZUxpc3RdO1xuXG4gICAgQXNzaWduZWVBbGxVc2VyTGlzdCA9XG4gICAgICByZXM/LmFzc2lnbmVlX21lbWJlcl9pZCAmJiAhdGhpcy5pc0VudHJ1c3QgPyByZXM/LmFzc2lnbmVlX21lbWJlcl9pZCA6IFtdO1xuICAgIGNvbnN0IGFzc2lnbmVkVG9Vc2VyRGV0YWlscyA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcbiAgICAgIFtOdW1iZXIocmVzPy5hc3NpZ25lZV9tZW1iZXJfaWQpXSxcbiAgICAgICdlbXBsb3llZV9pZCdcbiAgICApO1xuICAgIGlmIChhc3NpZ25lZFRvVXNlckRldGFpbHM/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgbWVtYmVyX2lkID0gYXNzaWduZWRUb1VzZXJEZXRhaWxzWzBdPy5teV9tZW1iZXJfaWQ7XG4gICAgICBpZiAocmVzPy5leGlzdGluZ1VzZXJJZHM/LmFzc2lnbmVlQWxsSWRzPy5pbmNsdWRlcyhtZW1iZXJfaWQpKSB7XG4gICAgICAgIEFzc2lnbmVlQWxsVXNlckxpc3QgPSByZXM/LmFzc2lnbmVlX21lbWJlcl9pZDtcbiAgICAgICAgcmVzLnVzZXJHcm91cElkc1snYXNzaWduZWVBbGxHcm91cElkcyddID0gW107XG4gICAgICB9IGVsc2UgaWYgKHJlcz8udXNlckdyb3VwSWRzPy5hc3NpZ25lZUFsbEdyb3VwSWRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIEFzc2lnbmVlQWxsVXNlckxpc3QgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ2Fzc2lnbmVlcyddID0ge1xuICAgICAgd2hvQ2FuQ29tcGxldGU6IHJlcy5pc0dyb3VwQXNzaWduVG8gPyAnQU5ZX09ORScgOiAnQUxMJyxcbiAgICAgIGxpc3Q6XG4gICAgICAgIHJlcz8uYXNzaWduZWRfdG9fbWVtYmVyX2lkPy5sZW5ndGggPT0gMFxuICAgICAgICAgID8gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0LFxuICAgICAgICAgICAgW051bWJlcihBc3NpZ25lZUFsbFVzZXJMaXN0KV0sXG4gICAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICAgKVxuICAgICAgICAgIDogdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0LFxuICAgICAgICAgICAgQXNzaWduZWVBbnlVc2VyTGlzdCxcbiAgICAgICAgICAgICdteV9tZW1iZXJfaWQnXG4gICAgICAgICAgKSxcbiAgICB9O1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtWydhc3NpZ25lZUdyb3VwcyddID0ge1xuICAgICAgd2hvQ2FuQ29tcGxldGU6IHJlcz8uaXNHcm91cEFzc2lnblRvID8gJ0FOWV9PTkUnIDogJ0FMTCcsXG4gICAgICBsaXN0OlxuICAgICAgICByZXM/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbnlvbmVHcm91cElkcz8ubGVuZ3RoID09IDBcbiAgICAgICAgICA/IHJlcz8udXNlckdyb3VwSWRzPy5hc3NpZ25lZUFsbEdyb3VwSWRzPy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgICAgdGhpcy5PcmdHcm91cCxcbiAgICAgICAgICAgICAgcmVzPy51c2VyR3JvdXBJZHM/LmFzc2lnbmVlQWxsR3JvdXBJZHMsXG4gICAgICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogW11cbiAgICAgICAgICA6IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMuT3JnR3JvdXAsXG4gICAgICAgICAgICByZXM/LnVzZXJHcm91cElkcz8uYXNzaWduZWVBbnlvbmVHcm91cElkcyxcbiAgICAgICAgICAgICdncm91cF9pZCdcbiAgICAgICAgICApLFxuICAgIH07XG4gICAgdGhpcy5hbGxHcm91cEFzc2lnbmVlID1cbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgIXRoaXMuaXNFbnRydXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIHRoaXMgZnVuY3Rpb24gaXMgZm9yIGdldHRpbmcgdGhlIHVzZXJzIGRhdGEgYmFzZWQgb24gbWVtYmVyX2lkIG9mIHVzZXJzIG9mIHNlbGVjdGVkIFVzZXIgR3JvdXBcbiAgICogQHBhcmFtIHVzZXJsaXN0IGNvbnRhaW5zIHVzZXJzIGRhdGFcbiAgICogQHBhcmFtIHNlbGVjdGVkZ3JvdXBzIGNvbnRhaW5zIHNlbGVjdGVkIFVzZXIgR3JvdXAgZGF0YVxuICAgKiBAcmV0dXJucyB1c2VyIGRhdGEgb2YgU2VsZWN0ZWQgdXNlciBncm91cC5cbiAgICovXG4gIGdldEdyb3Vwc1VzZXJFbXBsb3llZXNJZCh1c2VyTGlzdDogYW55LCBzZWxlY3RlZEdyb3VwczogYW55KSB7XG4gICAgbGV0IGdyb3VwTWVtYmVySWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgZ3JvdXBVc2VyRW1wbG95ZWU6IGFueSA9IFtdO1xuICAgIHNlbGVjdGVkR3JvdXBzPy5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XG4gICAgICBncm91cE1lbWJlcklkcyA9IFsuLi5uZXcgU2V0KFsuLi5ncm91cE1lbWJlcklkcywgLi4uZ3JvdXA/Lm1lbWJlcl9pZHNdKV07XG4gICAgfSk7XG4gICAgdXNlckxpc3Q/LmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICBpZiAoZ3JvdXBNZW1iZXJJZHM/LmluY2x1ZGVzKGVsZT8ubXlfbWVtYmVyX2lkKSkge1xuICAgICAgICBncm91cFVzZXJFbXBsb3llZS5wdXNoKGVsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGdyb3VwVXNlckVtcGxveWVlO1xuICB9XG5cbiAgc2V0UmV2aWV3ZXJQYXlsb2FkKFxuICAgIGlkczogYW55W10sXG4gICAgdHlwZTogc3RyaW5nLFxuICAgIGFjY2VwdGVkRGF0YT86IEFycmF5PGFueT4sXG4gICAgcmV2aWV3ZXJUeXBlPzogc3RyaW5nXG4gICkge1xuICAgIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgaWRPYmpBcnJheSA9IHRoaXMucmV0dXJuSWRzKGlkcywgJ3VpZCcpO1xuICAgICAgcmV0dXJuIHRoaXMuc2V0TGlzdCh0aGlzLmFsbFVzZXJzTGlzdCwgaWRPYmpBcnJheSwgJ3VpZCcpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2xpc3QnKSB7XG4gICAgICBjb25zdCBwYXlMb2FkOiBhbnkgPSBbXTtcbiAgICAgIGNvbnN0IGlkc0xpc3QgPSB0aGlzLnJldHVybklkcyhpZHMsICd1aWQnKTtcbiAgICAgIGlkc0xpc3QuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGxldCBpbmRleCA9IC0xO1xuICAgICAgICBpZiAoKGFjY2VwdGVkRGF0YSA/PyBbXSk/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBpbmRleCA9XG4gICAgICAgICAgICBhY2NlcHRlZERhdGE/LmZpbmRJbmRleCgoZWxlKSA9PiBlbGUubWVtYmVyX2lkID09PSBlbGVtZW50KSA/PyAtMTtcbiAgICAgICAgfVxuICAgICAgXG4gICAgICAgIHBheUxvYWQucHVzaCh7IG1lbWJlcl9pZDogZWxlbWVudCB9KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHBheUxvYWQ7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKSB7XG4gICAgY29uc3QgZWRpdExvYWRlciA9XG4gICAgICB0aGlzLm1vZGUgPT09ICdFRElUJ1xuICAgICAgICA/IHRoaXMucmNMaXN0TG9hZGVkICYmXG4gICAgICAgIHRoaXMuZ3JvdXBzTGlzdExvYWRlZCAmJlxuICAgICAgICB0aGlzLmFzc2lnbm9yc0xpc3RMb2FkZWQgJiZcbiAgICAgICAgdGhpcy5hc3N1cmFuY2VDYXRlZ29yeUxpc3RMb2FkZWRcbiAgICAgICAgOiB0cnVlO1xuICAgIGlmICh0aGlzLmNhdGVnb3JpZXNMaXN0TG9hZGVkICYmIHRoaXMuYXNzaWduZWVzTGlzdExvYWRlZCAmJiBlZGl0TG9hZGVyKSB7XG4gICAgICBpZiAodGhpcy5mcmFtZXdvcmtEZXRhaWxzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuYXNzaWduRnJvbUZyYW1ld29yayh0aGlzLmZyYW1ld29ya0RldGFpbHNbMF0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcbiAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5nZXRFZGl0UmVzcG9uc2liaWxpdHlEZXRhaWxzKHRoaXMucmVzcG9uc2liaWxpdHlJZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkUHJvZ3JhbSkge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0ucHVzaCh0aGlzLnNlbGVjdGVkUHJvZ3JhbSk7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbV9zZWxlY3RlZF9pZHMucHVzaChcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtLmNhdGVnb3J5X2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uY2F0ZWdvcnlfaWQ/LnRvU3RyaW5nKCk7XG4gICAgICAgICAgaWYgKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPVxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uZGVmYXVsdF9hc3NpZ25lZV90eXBlID09ICdBTllPTkUnXG4gICAgICAgICAgICAgICAgPyAnQU5ZX09ORSdcbiAgICAgICAgICAgICAgICA6ICdBTEwnO1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvdyA9XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5kZWZhdWx0X3Jldmlld2Vyc190eXBlID09ICdTRVFVRU5USUFMJ1xuICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5ldmlkZW5jZVJlcXVpcmVkID0gdGhpc1xuICAgICAgICAgICAgICAuc2VsZWN0ZWRQcm9ncmFtPy5ldmlkZW5jZV91cGxvYWRfZmxhZ1xuICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcHJvZ3JhbUN1c3RvbVRhZ3MgPSB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uY3VzdG9tX3RhZ3NcbiAgICAgICAgICAgID8gSlNPTi5wYXJzZSh0aGlzLnNlbGVjdGVkUHJvZ3JhbS5jdXN0b21fdGFncylcbiAgICAgICAgICAgIDogW107XG4gICAgICAgICAgcHJvZ3JhbUN1c3RvbVRhZ3MuZm9yRWFjaCgodGFnOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ0RhdGEgPSBKU09OLnBhcnNlKHRhZyk7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MuZmluZEluZGV4KFxuICAgICAgICAgICAgICAodGFnRWxlbWVudDogYW55KSA9PiB0YWdFbGVtZW50LnRhZ19uYW1lID09IHRhZ0RhdGEudGFnX25hbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5wdXNoKHRhZ0RhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGNoZWNrZWRNb3JlT3B0aW9ucyA9IFtdO1xuICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuUFJPR1JBTSA9IHRydWU7XG4gICAgICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1BST0dSQU0nKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uZXZpZGVuY2VfdXBsb2FkX2ZsYWcgJiZcbiAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnRk9STUFURV9FVklERU5DRScpO1xuICAgICAgICAgICAgdGhpcy5tb3JlT3B0aW9ucy5GT1JNQVRFX0VWSURFTkNFID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5maWx0ZXJMaXN0c0FjY29yZGluZ1RvUHJvZ3JhbSh0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uX2lkKTtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoY2hlY2tlZE1vcmVPcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9XG4gIH1cblxuICBzYXZlU2VsZWN0ZWRMaXN0KHR5cGU6IHN0cmluZywgc2VsZWN0ZWRJdGVtczogYW55KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdhc3NpZ25vcnMnOlxuICAgICAgICBpZiAodGhpcy5pbnZhbGlkVHlwZSA9PT0gJ3dob20nKSB7XG4gICAgICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5saXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMuYXNzaWdub3JzTGlzdCxcbiAgICAgICAgICBbc2VsZWN0ZWRJdGVtcy5tZW1iZXJfaWRdLFxuICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICk7XG4gICAgICAgIC8vIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXNzaWduZWVzJzpcbiAgICAgICAgaWYgKHRoaXMuaW52YWxpZFR5cGUgPT09ICd3aG8nKSB7XG4gICAgICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdGhpcy5pc0VudHJ1c3QgJiZcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgIT09ICdBTllfT05FJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcbiAgICAgICAgICAgIFtzZWxlY3RlZEl0ZW1zLmVtcGxveWVlX2lkXSxcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICAgICAgICB0aGlzLnNhdmVHcm91cEFzc2lnbmVlRGF0YShzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICAgIHRoaXMuYXNzaWduZWVzTGlzdCxcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgICAgJ215X21lbWJlcl9pZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyYyc6XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCxcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICdpdGVtX2lkJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJjU2VsZWN0ZWQuZW1pdCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYz8ubGVuZ3RoID4gMCk7XG4gICAgICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYz8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVxdWlyZXNBdWRpdExpc3QgPSBbXTtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybVsnYXVkaXRfY2F0ZWdvcnlfZGV0YWlscyddWydjYXRlZ29yeV9pZCddID0gMDtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zZWxlY3RlZEdSQ09iamVjdHMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoeyByY19pZHM6ICcnIH0pO1xuICAgICAgICB0aGlzLmdldE90aGVyR1JDT2JqZWN0cyh7IHJjX2lkczogJycsIHR5cGU6IHRoaXMuc2VsZWN0ZWRHUkNUYWIgfSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjYXRlZ29yeSc6XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5ID0gc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB0YWcgPVxuICAgICAgICAgICAgZWxlbWVudC5jdXN0b21fdGFncyAhPT0gJycgJiZcbiAgICAgICAgICAgICAgZWxlbWVudC5jdXN0b21fdGFncyAhPT0gJ251bGwnICYmXG4gICAgICAgICAgICAgIGVsZW1lbnQuY3VzdG9tX3RhZ3MgIT0gJ1tdJ1xuICAgICAgICAgICAgICA/IEpTT04ucGFyc2UoZWxlbWVudC5jdXN0b21fdGFncylcbiAgICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICBpZiAodGFnPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0YWcuZm9yRWFjaCgodGFnRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgKHRhZ0VsZW1lbnQ6IGFueSkgPT4gdGFnRWxlbWVudC50YWdfbmFtZSA9PSB0YWdEYXRhLnRhZ19uYW1lXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MucHVzaCh0YWdEYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwcm9ncmFtJzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubGlua2VkUHJvZ3JhbSA9IHNlbGVjdGVkSXRlbXM/LmxpbmtlZFByb2dyYW07XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbSAmJlxuICAgICAgICAgICEoXG4gICAgICAgICAgICAodGhpcy5zZWxlY3RlZFByb2dyYW0/LnByb2dyYW1UeXBlID09PSAwICYmXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSAndW5jYXRlZ29yaXplZCcpIHx8XG4gICAgICAgICAgICAhdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb25cbiAgICAgICAgICApICYmXG4gICAgICAgICAgIXRoaXMuZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeSA9IHNlbGVjdGVkSXRlbXMuY2F0ZWdvcmllc1xuICAgICAgICAgICAgPyBzZWxlY3RlZEl0ZW1zLmNhdGVnb3JpZXNcbiAgICAgICAgICAgIDogW107XG4gICAgICAgICAgbGV0IGNhdGVnb3J5SWQgPSBzZWxlY3RlZEl0ZW1zPy5jYXRlZ29yaWVzPy50b1N0cmluZygpO1xuICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zPy5jYXRlZ29yaWVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5X2lkID1cbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWQgKyAnLCcgKyBjYXRlZ29yeUlkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkPy50b1N0cmluZygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtX3NlbGVjdGVkX2lkcyA9IFtcbiAgICAgICAgICAgIC4uLm5ldyBTZXQoc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcmllcyksXG4gICAgICAgICAgICAuLi5uZXcgU2V0KFtzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jYXRlZ29yeV9pZF0pLFxuICAgICAgICAgIF07XG4gICAgICAgICAgY29uc3QgcHJvZ3JhbUN1c3RvbVRhZ3MgPSBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jdXN0b21fdGFnc1xuICAgICAgICAgICAgPyBKU09OLnBhcnNlKHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmN1c3RvbV90YWdzKVxuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICBwcm9ncmFtQ3VzdG9tVGFncz8uZm9yRWFjaCgodGFnOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ0RhdGEgPSB0eXBlb2YgdGFnID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UodGFnKSA6IHRhZztcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnX25hbWUgPT0gdGFnRGF0YS50YWdfbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLnB1c2godGFnRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3Nlc3NtZW50KSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzZXNzbWVudCk/Lmxlbmd0aFxuICAgICAgICAgICAgICA/IHRoaXMuZ2V0UHJvZ3JhbURldGFpbHMoc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbS5faWQpXG4gICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnkgPSBzZWxlY3RlZEl0ZW1zLmNhdGVnb3JpZXNcbiAgICAgICAgICAgID8gc2VsZWN0ZWRJdGVtcy5jYXRlZ29yaWVzXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0gPSBbXTtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9ICcnO1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1fc2VsZWN0ZWRfaWRzID0gW107XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncyA9IFtdO1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0gPSBzZWxlY3RlZEl0ZW1zLnByb2dyYW1cbiAgICAgICAgICAgID8gW3NlbGVjdGVkSXRlbXMucHJvZ3JhbV1cbiAgICAgICAgICAgIDogW107XG4gICAgICAgICAgbGV0IGNhdGVnb3J5SWQgPSBzZWxlY3RlZEl0ZW1zPy5jYXRlZ29yaWVzPy50b1N0cmluZygpO1xuICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zPy5jYXRlZ29yaWVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5X2lkID1cbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uY2F0ZWdvcnlfaWQgKyAnLCcgKyBjYXRlZ29yeUlkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jYXRlZ29yeV9pZCA9XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmNhdGVnb3J5X2lkPy50b1N0cmluZygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5wcm9ncmFtX3NlbGVjdGVkX2lkcyA9IFtcbiAgICAgICAgICAgIC4uLm5ldyBTZXQoc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcmllcyksXG4gICAgICAgICAgICAuLi5uZXcgU2V0KFtzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jYXRlZ29yeV9pZF0pLFxuICAgICAgICAgIF07XG4gICAgICAgICAgY29uc3QgcHJvZ3JhbUN1c3RvbVRhZ3MgPSBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5jdXN0b21fdGFnc1xuICAgICAgICAgICAgPyBKU09OLnBhcnNlKHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmN1c3RvbV90YWdzKVxuICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICBwcm9ncmFtQ3VzdG9tVGFncz8uZm9yRWFjaCgodGFnOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ0RhdGEgPSB0eXBlb2YgdGFnID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UodGFnKSA6IHRhZztcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnX25hbWUgPT0gdGFnRGF0YS50YWdfbmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xuICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLnB1c2godGFnRGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPVxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5wcm9ncmFtPy5kZWZhdWx0X2Fzc2lnbmVlX3R5cGUgPT0gJ0FOWU9ORSdcbiAgICAgICAgICAgICAgICA/ICdBTllfT05FJ1xuICAgICAgICAgICAgICAgIDogJ0FMTCc7XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93ID1cbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uZGVmYXVsdF9yZXZpZXdlcnNfdHlwZSA9PSAnU0VRVUVOVElBTCdcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZXZpZGVuY2VSZXF1aXJlZCA9XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmV2aWRlbmNlX3VwbG9hZF9mbGFnID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXM/LnByb2dyYW0/LmV2aWRlbmNlX3VwbG9hZF9mbGFnKSB7XG4gICAgICAgICAgICAgIHRoaXMubW9yZU9wdGlvbnMuRk9STUFURV9FVklERU5DRSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LnByb2dyYW1UeXBlID09PSAwICYmXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSAndW5jYXRlZ29yaXplZCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ucHJvZ3JhbT8uX2lkICYmXG4gICAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJMaXN0c0FjY29yZGluZ1RvUHJvZ3JhbShzZWxlY3RlZEl0ZW1zLnByb2dyYW0uX2lkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVyTGlzdHNBY2NvcmRpbmdUb1Byb2dyYW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Jldmlld2VyJzpcbiAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICAgICAgdGhpcy5zYXZlR3JvdXBSZXZpZXdlckRhdGEoc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLnJldmlld2Vyc0xpc3QsXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ292ZXJzZWVyJzpcbiAgICAgICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICAgICAgdGhpcy5zYXZlT3ZlcnNlZXJEYXRhKHNlbGVjdGVkSXRlbXMsICdvdmVyc2Vlckxpc3QnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgIHRoaXMuYWxsVXNlcnNMaXN0LFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgICdlbXBsb3llZV9pZCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdmVyc2Vlck5vdGlmeSc6XG4gICAgICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgICAgIHRoaXMuc2F2ZU92ZXJzZWVyRGF0YShzZWxlY3RlZEl0ZW1zLCAnb3ZlcnNlZXJOb3RpZnlMaXN0Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub3ZlcnNlZXJzLm5vdGlmeUxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICB0aGlzLmFsbFVzZXJzTGlzdCxcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXNzdXJhbmNlJzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzdXJhbmNlTGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLmFzc3VyYW5jZUNhdGVnb3JpZXNMaXN0LFxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgICAgJ2NhdGVnb3J5X2lkJ1xuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JlcXVpcmVzX2F1ZGl0JzpcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVxdWlyZXNBdWRpdExpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5hc3N1cmFuY2VSZXF1aXJlc0F1ZGl0TGlzdCxcbiAgICAgICAgICBbc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcnlfaWRdLFxuICAgICAgICAgICdjYXRlZ29yeV9pZCdcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm1bJ2F1ZGl0X2NhdGVnb3J5X2RldGFpbHMnXVsnY2F0ZWdvcnlfaWQnXSA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uY2F0ZWdvcnlfaWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2hlY2twb2ludHMnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cyA9IHNlbGVjdGVkSXRlbXM/LmNoZWNrcG9pbnREZXRhaWxzO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50SW5zdHJ1Y3Rpb24gPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmNoZWNrcG9pbnRJbnN0cnVjdGlvbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjYWxjdWxhdGVkcmlzayc6XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJpc2tDbGFzcyA9IHNlbGVjdGVkSXRlbXM/LnJpc2tDbGFzcztcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmlza01hdHJpeCA9IHNlbGVjdGVkSXRlbXM/LnJpc2tNYXRyaXg7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZm9ybWF0ZV9ldmlkZW5jZSc6XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdFJlcXVpcmVkID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5pc0Zvcm1hdGVVcGxvYWRlZCA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZm9ybWF0RmlsZXMgPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmZpbGVzID8/IFtdO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRMaW5rcyA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ubGlua3MgPz8gW107XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWQgPVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/LmlzRXZpZGVuY2VSZXF1aXJlZCA/PyBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXZpZXdGcmVxdWVuY3knOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5ID0ge1xuICAgICAgICAgIHJldmlld0NvbXBsZXRlRGF5czogc2VsZWN0ZWRJdGVtcy5jb21wbGV0ZURheXMsXG4gICAgICAgICAgcmV2aWV3Tk90Q29tcGxldGVkRGF5czogc2VsZWN0ZWRJdGVtcy5ub3RDb21wbGV0ZWQsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnR1JDX09CSkVDVFMnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zZWxlY3RlZEdSQ09iamVjdHMgPSBzZWxlY3RlZEl0ZW1zO1xuICAgICAgICB0aGlzLnNldE90aGVyR1JDVHlwZXNGb3JtYXRlKCk7XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlRGVzZWxlY3RvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBwcm9ncmFtIGlzIHNlbGVjdGVkIGFuZCB0aGUgdXNlciBoYXMgZnVsbCBwZXJtaXNzaW9uLCByZWZyZXNoIHRoZSBsaXN0cyB3aGlsZSB0aGUgcHJvZ3JhbVxuICAgKiBpcyBzZWxlY3RlZC4gT3RoZXJ3aXNlLCByZWZyZXNoIGFsbCBsaXN0cy5cbiAgICogPC9jb2RlPlxuICAgKi9cbiAgY2FsbFJlZnJlc2hMaXN0KCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0/Lmxlbmd0aCAmJlxuICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb25cbiAgICApIHtcbiAgICAgIHRoaXMucmVmcmVzaExpc3RzV2hpbGVQcm9ncmFtU2VsZWN0ZWQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWZyZXNoQWxsTGlzdHMoKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmUodHlwZTogYW55LCBldmVudD86IGFueSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAncmMnOlxuICAgICAgICBjb25zdCByY0luZGV4ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmMuZmluZEluZGV4KFxuICAgICAgICAgIChyYzogYW55KSA9PiByYy5yY19pZCA9PSBldmVudC5yY19pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yYy5zcGxpY2UocmNJbmRleCwgMSk7XG4gICAgICAgIHRoaXMucmNTZWxlY3RlZC5lbWl0KHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjPy5sZW5ndGggPiAwKTtcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXF1aXJlc0F1ZGl0TGlzdCA9IFtdO1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtWydhdWRpdF9jYXRlZ29yeV9kZXRhaWxzJ11bJ2NhdGVnb3J5X2lkJ10gPSAwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ2V0T3RoZXJHUkNUYWJDb3VudCh7IHJjX2lkczogJycgfSk7XG4gICAgICAgIHRoaXMuZ2V0T3RoZXJHUkNPYmplY3RzKHsgcmNfaWRzOiAnJywgdHlwZTogdGhpcy5zZWxlY3RlZEdSQ1RhYiB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3NpZ25vcnMnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMubGlzdCA9IFtdO1xuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc2lnbmVlcyc6XG4gICAgICAgIGNvbnN0IGVudHJ1c3RJbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3QuZmluZEluZGV4KFxuICAgICAgICAgIChvd25lcjogYW55KSA9PiBvd25lci5lbXBsb3llZV9pZCA9PSBldmVudC5lbXBsb3llZV9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdC5zcGxpY2UoZW50cnVzdEluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2dyb3VwYXNzaWduZWVzJzpcbiAgICAgICAgY29uc3QgZ3JvdXBJbmRleCA9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0LmZpbmRJbmRleChcbiAgICAgICAgICAgIChncm91cDogYW55KSA9PiBncm91cC5ncm91cF9pZCA9PSBldmVudC5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3Quc3BsaWNlKGdyb3VwSW5kZXgsIDEpO1xuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyZXZpZXdlcic6XG4gICAgICAgIGNvbnN0IHJldmlld2VySW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMubGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgKHJldmlld2VyOiBhbnkpID0+IHJldmlld2VyLmVtcGxveWVlX2lkID09IGV2ZW50LmVtcGxveWVlX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0LnNwbGljZShyZXZpZXdlckluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5jYWxsUmVmcmVzaExpc3QoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2dyb3VwUmV2aWV3ZXInOlxuICAgICAgICBjb25zdCBncm91cFJldmlld2VySW5kZXggPVxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgICAocmV2aWV3ZXI6IGFueSkgPT4gcmV2aWV3ZXIuZ3JvdXBfaWQgPT0gZXZlbnQuZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5ncm91cFJldmlld2Vycy5saXN0LnNwbGljZShcbiAgICAgICAgICBncm91cFJldmlld2VySW5kZXgsXG4gICAgICAgICAgMVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ292ZXJzZWVyJzpcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJJbmRleCA9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgICAob3ZlcnNlZXI6IGFueSkgPT4gb3ZlcnNlZXIuZW1wbG95ZWVfaWQgPT0gZXZlbnQuZW1wbG95ZWVfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdC5zcGxpY2Uob3ZlcnNlZXJJbmRleCwgMSk7XG4gICAgICAgIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdmVyc2Vlckdyb3VwJzpcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJHcm91cEluZGV4ID1cbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0LmZpbmRJbmRleChcbiAgICAgICAgICAgIChvdmVyc2VlcjogYW55KSA9PiBvdmVyc2Vlci5ncm91cF9pZCA9PSBldmVudC5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5saXN0LnNwbGljZShcbiAgICAgICAgICBvdmVyc2Vlckdyb3VwSW5kZXgsXG4gICAgICAgICAgMVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ292ZXJzZWVyTm90aWZ5TGlzdCc6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyTm90aWZ5SW5kZXggPVxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QuZmluZEluZGV4KFxuICAgICAgICAgICAgKG92ZXJzZWVyTjogYW55KSA9PiBvdmVyc2Vlck4uZW1wbG95ZWVfaWQgPT0gZXZlbnQuZW1wbG95ZWVfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdC5zcGxpY2UoXG4gICAgICAgICAgb3ZlcnNlZXJOb3RpZnlJbmRleCxcbiAgICAgICAgICAxXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY2FsbFJlZnJlc2hMaXN0KCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvdmVyc2Vlckdyb3VwTm90aWZ5TGlzdCc6XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyR3JvdXBOb3RpZnlJbmRleCA9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgICAob3ZlcnNlZXJOOiBhbnkpID0+IG92ZXJzZWVyTi5ncm91cF9pZCA9PSBldmVudC5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwcy5ub3RpZnlMaXN0LnNwbGljZShcbiAgICAgICAgICBvdmVyc2Vlckdyb3VwTm90aWZ5SW5kZXgsXG4gICAgICAgICAgMVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNhbGxSZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NhdGVnb3J5JzpcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlJbmRleCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5LmZpbmRJbmRleChcbiAgICAgICAgICAoY2F0ZWdvcnk6IGFueSkgPT4gY2F0ZWdvcnkuY2F0ZWdvcnlfaWQgPT0gZXZlbnQuY2F0ZWdvcnlfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnkuc3BsaWNlKGNhdGVnb3J5SW5kZXgsIDEpO1xuICAgICAgICBjb25zdCB0YWcgPSBKU09OLnBhcnNlKGV2ZW50LmN1c3RvbV90YWdzKTtcbiAgICAgICAgaWYgKHRhZz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRhZy5mb3JFYWNoKCh0YWdEYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4Q1QgPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgKHRhZ0VsZW1lbnQ6IGFueSkgPT4gdGFnRWxlbWVudC50YWdfbmFtZSA9PSB0YWdEYXRhLnRhZ19uYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGluZGV4Q1QgIT0gLTEpIHtcbiAgICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY3VzdG9tVGFncy5zcGxpY2UoaW5kZXhDVCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5Py5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnkuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YWcgPSBKU09OLnBhcnNlKGVsZW1lbnQuY3VzdG9tX3RhZ3MpO1xuICAgICAgICAgICAgaWYgKHRhZz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICB0YWcuZm9yRWFjaCgodGFnRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgICh0YWdFbGVtZW50OiBhbnkpID0+IHRhZ0VsZW1lbnQudGFnX25hbWUgPT0gdGFnRGF0YS50YWdfbmFtZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jdXN0b21UYWdzLnB1c2godGFnRGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Byb2dyYW0nOlxuICAgICAgICB0aGlzLmNoZWNrRGVmYXVsdFByb2dyYW1PblJlbW92ZShldmVudCk7XG4gICAgICAgIC8vIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5ID0gW107XG4gICAgICAgIC8vIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW0gPSBbXTtcblxuICAgICAgICAvLyB0aGlzLmZpbHRlckxpc3RzQWNjb3JkaW5nVG9Qcm9ncmFtKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmVxdWlyZXNfYXVkaXQnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXF1aXJlc0F1ZGl0TGlzdCA9IFtdO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hdWRpdF9jYXRlZ29yeV9kZXRhaWxzID0ge1xuICAgICAgICAgIGNhdGVnb3J5X2lkOiAwLFxuICAgICAgICAgIHNhbXBsZTogMCxcbiAgICAgICAgICBwZXJjZW50YWdlOiAwLFxuICAgICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuOiAnJyxcbiAgICAgICAgICBmcmVxdWVuY3lfdGltZTogJycsXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXNzdXJhbmNlJzpcbiAgICAgICAgY29uc3QgYXNzdXJhbmNlSW5kZXggPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3N1cmFuY2VMaXN0LmZpbmRJbmRleChcbiAgICAgICAgICAoYXNzdXJhbmNlOiBhbnkpID0+IGFzc3VyYW5jZS5jYXRlZ29yeV9pZCA9PSBhc3N1cmFuY2UuY2F0ZWdvcnlfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzdXJhbmNlTGlzdC5zcGxpY2UoYXNzdXJhbmNlSW5kZXgsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NoZWNrcG9pbnQnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cy5zcGxpY2UoZXZlbnQsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc2Vzc21lbnQnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50ID0ge1xuICAgICAgICAgIGNhdGVnb3J5X2lkOiAnJyxcbiAgICAgICAgICBhc3Nlc3NtZW50X2lkOiAnJyxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICduZXctY2hlY2twb2ludHMnOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5uZXdfY2hlY2twb2ludHMgPSB7fTtcbiAgICAgICAgdGhpcy5jaGVja3BvaW50Q291bnQgPSAwO1xuICAgICAgICB0aGlzLmNoZWNrcG9pbnRDb3VudFVwZGF0ZWQuZW1pdCh0aGlzLmNoZWNrcG9pbnRDb3VudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnR1JDX09CSkVDVFMnOlxuICAgICAgICB0aGlzLnJlbW92ZU90aGVyR1JDT2JqZWN0cyhldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNhdmVHcm91cEFzc2lnbmVlRGF0YShzZWxlY3RlZEl0ZW1zOiBhbnkpIHtcbiAgICBsZXQgdXNlck9iajogYW55O1xuICAgIHVzZXJPYmogPSBzZWxlY3RlZEl0ZW1zPy5sZW5ndGggPyBzZWxlY3RlZEl0ZW1zIDogc2VsZWN0ZWRJdGVtcz8udXNlcnM7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLmxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICB0aGlzLmFzc2lnbmVlc0xpc3QsXG4gICAgICB1c2VyT2JqLFxuICAgICAgJ215X21lbWJlcl9pZCdcbiAgICApO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3QgPSB0aGlzLnNldExpc3QoXG4gICAgICB0aGlzLk9yZ0dyb3VwLFxuICAgICAgc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzLFxuICAgICAgJ2dyb3VwX2lkJ1xuICAgICk7XG4gIH1cblxuICBzYXZlR3JvdXBSZXZpZXdlckRhdGEoc2VsZWN0ZWRJdGVtczogYW55KSB7XG4gICAgbGV0IHVzZXJPYmo6IGFueSA9IFtdO1xuICAgIHNlbGVjdGVkSXRlbXMudXNlcnMuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcbiAgICAgIHVzZXJPYmoucHVzaChlbGUuZW1wbG95ZWVfaWQpO1xuICAgIH0pO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgdGhpcy5yZXZpZXdlcnNMaXN0LFxuICAgICAgdXNlck9iaixcbiAgICAgICdlbXBsb3llZV9pZCdcbiAgICApO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmdyb3VwUmV2aWV3ZXJzID0ge1xuICAgICAgbGlzdDogc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzPy5sZW5ndGggPiAwID8gc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzIDogW10sXG4gICAgfTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93ID1cbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMFxuICAgICAgICA/IGZhbHNlXG4gICAgICAgIDogdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvdztcbiAgfVxuXG4gIHNhdmVPdmVyc2VlckRhdGEoc2VsZWN0ZWRJdGVtczogYW55LCB0eXBlOiBhbnkpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ292ZXJzZWVyTGlzdCc6XG4gICAgICAgIGxldCBvdmVyc2VlcnNlbGVjdGVkbGlzdCA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgIHNlbGVjdGVkSXRlbXMudXNlcnMsXG4gICAgICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubGlzdCA9IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICB0aGlzLm92ZXJzZWVyc0xpc3QsXG4gICAgICAgICAgb3ZlcnNlZXJzZWxlY3RlZGxpc3QsXG4gICAgICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnNHcm91cHNbJ2xpc3QnXSA9XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzPy5sZW5ndGggPiAwID8gc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzIDogW107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3ZlcnNlZXJOb3RpZnlMaXN0JzpcbiAgICAgICAgbGV0IG92ZXJzZWVyc2VsZWN0ZWROb3RpZnlsaXN0ID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcy51c2VycyxcbiAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCxcbiAgICAgICAgICBvdmVyc2VlcnNlbGVjdGVkTm90aWZ5bGlzdCxcbiAgICAgICAgICAnZW1wbG95ZWVfaWQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVyc0dyb3Vwc1snbm90aWZ5TGlzdCddID1cbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPy5ncm91cHM/Lmxlbmd0aCA+IDAgPyBzZWxlY3RlZEl0ZW1zPy5ncm91cHMgOiBbXTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGVudHJ1c3RGcmFtZXdvcmsoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucmVzZXQoKTtcbiAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcblxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5ID0ge1xuICAgICAgbmFtZTogZXZlbnQucmVwb3J0X25hbWUsXG4gICAgICBrZXlSZXNwb25zaWJpbGl0eTogZXZlbnQua2V5X2NvbXBsaWFuY2UgPyB0cnVlIDogZmFsc2UsXG4gICAgfTtcbiAgICBjb25zdCBuZXdTdGFydERhdGUgPVxuICAgICAgZXZlbnQuc3RhcnRfZGF0ZSB8fCBldmVudC5zdGFydF9kYXRlICE9IG51bGwgfHwgZXZlbnQuc3RhcnRfZGF0ZSAhPT0gJydcbiAgICAgICAgPyBuZXcgRGF0ZShldmVudC5zdGFydF9kYXRlICogMTAwMClcbiAgICAgICAgOiBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHB2dFRlbXBsYXRlID1cbiAgICAgIGV2ZW50LmZyZXF1ZW5jeV90ZW1wbGF0ZSAmJiBldmVudC5mcmVxdWVuY3lfdGVtcGxhdGUgIT09ICcnXG4gICAgICAgID8gZXZlbnQuZnJlcXVlbmN5X3RlbXBsYXRlXG4gICAgICAgIDogZXZlbnQuZnJlcXVlbmN5O1xuICAgIGNvbnN0IGZyZXF1ZW5jeURldGFpbHNPYmplY3Q6IGFueSA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5zaG9ydEhhbmRfZnJlcUNhbChcbiAgICAgIHB2dFRlbXBsYXRlLFxuICAgICAgbmV3U3RhcnREYXRlLmdldERhdGUoKSxcbiAgICAgIG5ld1N0YXJ0RGF0ZS5nZXRNb250aCgpLFxuICAgICAgbmV3U3RhcnREYXRlLmdldEZ1bGxZZWFyKClcbiAgICApO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeV9kZXRhaWxzID0gZnJlcXVlbmN5RGV0YWlsc09iamVjdD8ucGF0dGVybjtcbiAgICBldmVudC5mcmVxdWVuY3lfZGV0YWlscyA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeV9kZXRhaWxzO1xuICAgIGV2ZW50LmZyZXF1ZW5jeV90aW1lID0gREVGQVVMVF8yNEhSO1xuICAgIGV2ZW50LnJlbWluZGVyX2JlZm9yZV9kYXlzID0gZXZlbnQucmVtaW5kX2RheXNfYmVmb3JlX2R1ZV9kYXRlXG4gICAgICA/IGV2ZW50LnJlbWluZF9kYXlzX2JlZm9yZV9kdWVfZGF0ZVxuICAgICAgOiAyO1xuICAgIGV2ZW50LmZhaWxlZF9hZnRlcl9kYXlzID0gZXZlbnQubWFya19mYWlsZWRfYWZ0ZXJcbiAgICAgID8gZXZlbnQubWFya19mYWlsZWRfYWZ0ZXJcbiAgICAgIDogMjtcbiAgICBldmVudC5saWZlY3ljbGVfZGV0YWlscyA9ICcwMDAwLTAwLTAwfn4wJztcbiAgICBldmVudC5zdGFydF9vZl9kYXlfdXRjID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmZyYW1ld29ya1N0YXJ0RGF0ZShldmVudCk7XG4gICAgZXZlbnQub25fY29tcGxldGlvbl9vZiA9IFtdO1xuICAgIGV2ZW50LmRvbV91dGMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzID1cbiAgICAgIGZyZXF1ZW5jeURldGFpbHNPYmplY3QuY29udGludW91c19mYWlsZWRfZGF5cztcblxuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3lfZGV0YWlscztcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3lfdGltZSA9IERFRkFVTFRfMjRIUjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZW1pbmRlcl9iZWZvcmVfZGF5cyA9XG4gICAgICBldmVudC5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgPyBldmVudC5yZW1pbmRfZGF5c19iZWZvcmVfZHVlX2RhdGUgOiAyO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZhaWxlZF9hZnRlcl9kYXlzID0gZXZlbnQubWFya19mYWlsZWRfYWZ0ZXJcbiAgICAgID8gZXZlbnQubWFya19mYWlsZWRfYWZ0ZXJcbiAgICAgIDogMjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5saWZlY3ljbGVEZXRhaWxzID0gJzAwMDAtMDAtMDB+fjAnO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnN0YXJ0X29mX2RheV91dGMgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2VcbiAgICAgIC5mcmFtZXdvcmtTdGFydERhdGUoZXZlbnQpXG4gICAgICAudG9GaXhlZCgpXG4gICAgICAudG9TdHJpbmcoKTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5vbl9jb21wbGV0aW9uX29mID0gW107XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZG9tX3V0YyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmRlc2NyaXB0aW9uID1cbiAgICAgIGV2ZW50LnJlbWFya3MudHJpbSgpICE9ICcnID8gZXZlbnQucmVtYXJrcyA6ICcnO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmN1c3RvbVRhZ3MgPVxuICAgICAgZXZlbnQuY3VzdG9tX3RhZ3MgJiZcbiAgICAgICAgZXZlbnQuY3VzdG9tX3RhZ3MgIT09IG51bGwgJiZcbiAgICAgICAgZXZlbnQuY3VzdG9tX3RhZ3MgIT09ICdudWxsJyAmJlxuICAgICAgICBldmVudC5jdXN0b21fdGFncyAhPT0gJydcbiAgICAgICAgPyBKU09OLnBhcnNlKGV2ZW50LmN1c3RvbV90YWdzKVxuICAgICAgICA6IFtdO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZSA9IGV2ZW50LmNvbnRyb2xfb2JqZWN0aXZlXG4gICAgICA/IGV2ZW50LmNvbnRyb2xfb2JqZWN0aXZlXG4gICAgICA6ICcnO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5ID0gdGhpcy5zZXRMaXN0KFxuICAgICAgdGhpcy5hbGxDYXRlZ29yaWVzLFxuICAgICAgW2V2ZW50LmNhdGVnb3J5X2lkXSxcbiAgICAgICdjYXRlZ29yeV9pZCdcbiAgICApOyAvL1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5yZXZpZXdGcmVxdWVuY3kucmV2aWV3Q29tcGxldGVEYXlzID0gMjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld05PdENvbXBsZXRlZERheXMgPSAyO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjID0gdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LmZpbmQoXG4gICAgICAocmM6IGFueSkgPT4gcmMucmNfaWQgPT09IGV2ZW50LmVudGl0eV9pZFxuICAgIClcbiAgICAgID8gW1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QuZmluZChcbiAgICAgICAgICAocmM6IGFueSkgPT4gcmMucmNfaWQgPT09IGV2ZW50LmVudGl0eV9pZFxuICAgICAgICApLFxuICAgICAgXVxuICAgICAgOiBbXTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yaXNrQ2xhc3MgPSB0aGlzLmlzUmlza0VuYWJsZSA/IDEgOiAyO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnByaXZhdGVfbGlicmFyeV9pZCA9IGV2ZW50LnJlcG9ydF9pZDtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPVxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5X2RldGFpbHM7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2xhc3NpZmljYXRpb24gPSB0aGlzLmlzUmlza0VuYWJsZSA/IDEgOiAyO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPVxuICAgICAgZnJlcXVlbmN5RGV0YWlsc09iamVjdC5jb250aW51b3VzX2ZhaWxlZF9kYXlzO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnN0YXJ0RGF0ZSA9XG4gICAgICB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZnJhbWV3b3JrU3RhcnREYXRlKGV2ZW50KTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZSA9IHtcbiAgICAgIGV2aWRlbmNlUmVxdWlyZWQ6IGV2ZW50LnJlcG9ydF91cGxvYWRfZmxhZyA/IHRydWUgOiBmYWxzZSxcbiAgICAgIGZvcm1hdEZpbGVzOiBldmVudC5yZXBvcnRfZm9ybWF0LFxuICAgICAgZm9ybWF0TGlua3M6XG4gICAgICAgICFldmVudC5yZXBvcnRfZm9ybWF0X2xpbmsgfHwgZXZlbnQucmVwb3J0X2Zvcm1hdF9saW5rID09ICcnXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogW2V2ZW50LnJlcG9ydF9mb3JtYXRfbGlua10sXG4gICAgICBmb3JtYXRSZXF1aXJlZDpcbiAgICAgICAgZXZlbnQucmVwb3J0X2Zvcm1hdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgICAgIChldmVudC5yZXBvcnRfZm9ybWF0X2xpbmsgJiYgZXZlbnQucmVwb3J0X2Zvcm1hdF9saW5rICE9ICcnKVxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogZmFsc2UsXG4gICAgfTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hdWRpdF9jYXRlZ29yeV9kZXRhaWxzID0ge1xuICAgICAgY2F0ZWdvcnlfaWQ6IDAsXG4gICAgICBzYW1wbGU6IDUsXG4gICAgICBwZXJjZW50YWdlOiAzMCxcbiAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuOiAnMX4wfjN+MScsXG4gICAgICBmcmVxdWVuY3lfdGltZTogREVGQVVMVF8yNEhSLFxuICAgIH07XG5cbiAgICBldmVudC5mcmVxdWVuY3lfdGltZSA9IERFRkFVTFRfVElNRTtcbiAgICBpZiAoXG4gICAgICBldmVudC5mcmVxdWVuY3lfZGV0YWlscyAhPT0gJycgJiZcbiAgICAgIGV2ZW50LmZyZXF1ZW5jeV9kZXRhaWxzICE9PSAnNX4wfjB+MCdcbiAgICApIHtcbiAgICAgIHRoaXMuZnJlcXVlbmN5UG9wdWxhdGlvbihldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSA9ICcnO1xuICAgIH1cblxuICAgIGV2ZW50LmZyZXF1ZW5jeV90aW1lID0gREVGQVVMVF8yNEhSO1xuICAgIGV2ZW50LnBsYWNlaG9sZGVyID0gdGhpcy5nZXRGcmVxdWVuY3lQbGFjZWhvbGRlcihldmVudCk7XG4gICAgY29uc3QgY2hlY2tlZE1vcmVPcHRpb25zID0gW107XG5cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlICE9PSAnJykge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ09CSkVDVElWRScpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PQkpFQ1RJVkUgPSB0cnVlO1xuICAgIH1cbiAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUklTS19DTEFTU0lGSUNBVElPTicpO1xuICAgIHRoaXMubW9yZU9wdGlvbnMuUklTS19DTEFTU0lGSUNBVElPTiA9IHRydWU7XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5Py5sZW5ndGggPiAwKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnQ0FURUdPUlknKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuQ0FURUdPUlkgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5mb3JtYXRBbmRFdmlkZW5jZT8uZXZpZGVuY2VSZXF1aXJlZCB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmZvcm1hdEFuZEV2aWRlbmNlPy5mb3JtYXRSZXF1aXJlZFxuICAgICkge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0ZPUk1BVEVfRVZJREVOQ0UnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuRk9STUFURV9FVklERU5DRSA9IHRydWU7XG4gICAgfVxuICAgIGlmIChldmVudC5lbnRpdHlfaWQgPiAwKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUkMnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkMgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMucG9wdWxhdGVPcHRpb24uZW1pdChjaGVja2VkTW9yZU9wdGlvbnMpO1xuICAgIC8vICBldmVudC5wbGFjZWhvbGRlclxuICB9XG5cbiAgYXNzaWduRnJvbUZyYW1ld29yayhmcmVxT2JqOiBhbnkpIHtcbiAgICBpZiAoZnJlcU9iai5kYXRhKSB7XG4gICAgICAvLyB0aGlzLnJlc2V0KCk7XG4gICAgICB0aGlzLmFjdGl2ZURlc2VsZWN0b3IoKTtcbiAgICAgIGNvbnN0IG5ld1N0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICAgIGNvbnN0IGZyZXF1ZW5jeURldGFpbHNPYmplY3Q6IGFueSA9XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5U2VydmljZS5zaG9ydEhhbmRfZnJlcUNhbChcbiAgICAgICAgICBmcmVxT2JqLmRhdGEuZnJlcXVlbmN5LFxuICAgICAgICAgIG5ld1N0YXJ0RGF0ZS5nZXREYXRlKCksXG4gICAgICAgICAgbmV3U3RhcnREYXRlLmdldE1vbnRoKCksXG4gICAgICAgICAgbmV3U3RhcnREYXRlLmdldEZ1bGxZZWFyKClcbiAgICAgICAgKTtcblxuICAgICAgbGV0IGV2ZW50OiBhbnkgPSB7fTtcbiAgICAgIGV2ZW50LmZyZXF1ZW5jeV9kZXRhaWxzID0gZnJlcXVlbmN5RGV0YWlsc09iamVjdD8ucGF0dGVybjtcbiAgICAgIGV2ZW50LmZyZXF1ZW5jeV90aW1lID0gREVGQVVMVF8yNEhSO1xuICAgICAgZXZlbnQucmVtaW5kZXJfYmVmb3JlX2RheXMgPSAyO1xuICAgICAgZXZlbnQuZmFpbGVkX2FmdGVyX2RheXMgPSAyO1xuICAgICAgZXZlbnQubGlmZWN5Y2xlX2RldGFpbHMgPSAnMDAwMC0wMC0wMH5+MCc7XG4gICAgICBldmVudC5zdGFydF9vZl9kYXlfdXRjID0gRGF0ZS5ub3coKSAvIDEwMDA7XG4gICAgICBldmVudC5vbl9jb21wbGV0aW9uX29mID0gW107XG4gICAgICBldmVudC5kb21fdXRjID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzID1cbiAgICAgICAgZnJlcXVlbmN5RGV0YWlsc09iamVjdC5jb250aW51b3VzX2ZhaWxlZF9kYXlzO1xuICAgICAgdGhpcy5nZXRGcmVxdWVuY3lQbGFjZWhvbGRlcihldmVudCk7XG4gICAgICBldmVudC5wbGFjZWhvbGRlciA9IHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXI7XG4gICAgICBldmVudC5mcmVxdWVuY3lfdGltZSA9IERFRkFVTFRfVElNRTtcbiAgICAgIHRoaXMuZnJlcXVlbmN5UG9wdWxhdGlvbihldmVudCk7XG5cbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Lm5hbWUgPSBmcmVxT2JqLmRhdGEubmFtZSA/PyAnJztcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZSA9IGZyZXFPYmouZGF0YS5vYmplY3RpdmVzID8/ICcnO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID0gZnJlcXVlbmN5RGV0YWlsc09iamVjdD8ucGF0dGVybiA/PyAnJztcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnN0YXJ0RGF0ZSA9IGV2ZW50LnN0YXJ0X29mX2RheV91dGM7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZW1pbmRlcl9iZWZvcmVfZGF5cyA9IGV2ZW50LnJlbWluZGVyX2JlZm9yZV9kYXlzO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY29udGludW91c19mYWlsZWRfZGF5cyA9XG4gICAgICAgIGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXM7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mYWlsZWRfYWZ0ZXJfZGF5cyA9IGV2ZW50LmZhaWxlZF9hZnRlcl9kYXlzO1xuICAgICAgdGhpcy5zZWxlY3RlZEZyYW1ld29ya1ZhbHVlcyA9IGZyZXFPYmouc2VsZWN0ZWRGcmFtZXdvcmtEYXRhID8/IHVuZGVmaW5lZDtcbiAgICAgIGlmIChmcmVxT2JqPy5kYXRhPy5kZXNjcmlwdGlvbikge1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5kZXNjcmlwdGlvbiA9IGZyZXFPYmo/LmRhdGE/LmRlc2NyaXB0aW9uO1xuICAgICAgfVxuICAgICAgaWYgKGZyZXFPYmo/LmRhdGE/Lm9iamVjdGl2ZXMpIHtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlID0gZnJlcU9iai5kYXRhLm9iamVjdGl2ZXMgPz8gJyc7XG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnMuT0JKRUNUSVZFID0gdHJ1ZTtcbiAgICAgICAgbGV0IGNoZWNrZWRNb3JlT3B0aW9ucyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLm1vcmVPcHRpb25zKSB7XG4gICAgICAgICAgaWYgKHRoaXMubW9yZU9wdGlvbnNba2V5XSkge1xuICAgICAgICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goa2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGNoZWNrZWRNb3JlT3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gbGlzdCB1c2VybGlzdCBmb3IgbGlzdGluZyB1c2Vyc1xuICAgKiBAcmV0dXJucyBhc3NpZ24gdXNlcidzIG15X21lbWJlcl9pZCAgdG8gbWVtYmVyX2lkIGRhdGFcbiAgICovXG4gIGFzc2lnblVzZXJNZW1iZXJJZChsaXN0OiBhbnkpIHtcbiAgICBjb25zdCB1c2VyT2JqID0gWy4uLmxpc3RdO1xuICAgIHVzZXJPYmo/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdXNlci5tZW1iZXJfaWQgPSB1c2VyPy5teV9tZW1iZXJfaWQ7XG4gICAgfSk7XG4gICAgbGlzdCA9IFsuLi51c2VyT2JqXTtcbiAgICByZXR1cm4gbGlzdDtcbiAgfVxuXG4gIHJlZnJlc2hBbGxMaXN0cygpIHtcbiAgICBsZXQgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM6IGFueSA9IFtdO1xuICAgIGxldCBhbGxVc2Vyc0lkczogYW55ID0gW107XG4gICAgbGV0IGFzc2lnbmVlR3JvdXBJZHM6IGFueSA9IFtdO1xuICAgIGxldCByZXZpZXdlcnNJZHM6IGFueSA9IFtdO1xuICAgIGxldCBvdmVyc2VlcklkczogYW55ID0gW107XG4gICAgbGV0IGFzc2lnbmVlSWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgZ3JvdXBSZXZpZXdlcklkczogYW55ID0gW107XG4gICAgbGV0IGdyb3VwT3ZlcnNlZXJJZHM6IGFueSA9IFtdO1xuICAgIHRoaXMucmV2aWV3ZXJJZHMgPSBbXTtcbiAgICB0aGlzLmFzc2lnbm9ySWQgPSBbXTtcbiAgICB0aGlzLm92ZXJzZWVySWRzID0gW107XG4gICAgdGhpcy5hc3NpZ25lZUlkcyA9IFtdO1xuXG4gICAgY29uc3QgYWxsVXNlcnMgPSBjbG9uZURlZXAodGhpcy5hbGxVc2Vyc0xpc3QpO1xuICAgIGNvbnN0IGFsbEdyb3VwcyA9IGNsb25lRGVlcCh0aGlzLk9yZ0dyb3VwKTtcbiAgICBjb25zdCBiZWhhbGZVc2VycyA9IGNsb25lRGVlcCh0aGlzLmJlaGFsZk9mVXNlcnNMaXN0KTtcblxuICAgIGNvbnN0IGFzc2lnbm9ycyA9IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0KTtcbiAgICBjb25zdCBhc3NpZ25lZXMgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdCk7XG5cbiAgICBjb25zdCBhc3NpZ25lZUdyb3VwTGlzdCA9IGNsb25lRGVlcChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFxuICAgICk7XG4gICAgY29uc3QgcmV2aWV3ZXJzID0gY2xvbmVEZWVwKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5saXN0KTtcbiAgICBjb25zdCBncm91cFJldmlld2Vyc0xpc3QgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0KVxuICAgICAgOiBbXTtcbiAgICBjb25zdCBvdmVyc2Vlckxpc3QgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdCk7XG4gICAgY29uc3QgZ3JvdXBPdmVyc2Vlckxpc3QgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdClcbiAgICAgIDogW107XG4gICAgY29uc3Qgbm90aWZ5T3ZlcnNlZXJzID0gY2xvbmVEZWVwKFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFxuICAgICk7XG4gICAgY29uc3QgZ3JvdXBOb3RpZnlPdmVyc2VlcnMgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdClcbiAgICAgIDogW107XG4gICAgYXNzaWdub3JzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLnB1c2godXNlci5tZW1iZXJfaWQpO1xuICAgICAgdGhpcy5hc3NpZ25vcklkLnB1c2godXNlci5tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIGFzc2lnbmVlcz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICBhc3NpZ25lZUlkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICB0aGlzLmFzc2lnbmVlSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3Q/Lmxlbmd0aCA9PSAwKSB7XG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKHRoaXMubWVtYmVySWQpO1xuICAgICAgdGhpcy5hc3NpZ25vcklkLnB1c2godGhpcy5tZW1iZXJJZCk7XG4gICAgfVxuICAgIGFsbFVzZXJzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIGFsbFVzZXJzSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBhc3NpZ25lZUdyb3VwTGlzdD8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xuICAgICAgYXNzaWduZWVHcm91cElkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XG4gICAgfSk7XG5cbiAgICByZXZpZXdlcnM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgcmV2aWV3ZXJzSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICAgIHRoaXMucmV2aWV3ZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIGdyb3VwUmV2aWV3ZXJzTGlzdD8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xuICAgICAgZ3JvdXBSZXZpZXdlcklkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XG4gICAgfSk7XG4gICAgZ3JvdXBPdmVyc2Vlckxpc3Q/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcbiAgICAgIGdyb3VwT3ZlcnNlZXJJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xuICAgIH0pO1xuICAgIGdyb3VwTm90aWZ5T3ZlcnNlZXJzPy5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XG4gICAgICBncm91cE92ZXJzZWVySWRzLnB1c2goZ3JvdXA/Lmdyb3VwX2lkKTtcbiAgICB9KTtcbiAgICBvdmVyc2Vlckxpc3Q/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgb3ZlcnNlZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgICAgdGhpcy5vdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgfSk7XG4gICAgbm90aWZ5T3ZlcnNlZXJzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICAgIHRoaXMub3ZlcnNlZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgIH0pO1xuXG4gICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25vckFuZEFzc2lnbmVlc0lkcyldO1xuICAgIGFsbFVzZXJzSWRzID0gWy4uLm5ldyBTZXQoYWxsVXNlcnNJZHMpXTtcbiAgICBhc3NpZ25lZUlkcyA9IFsuLi5uZXcgU2V0KGFzc2lnbmVlSWRzKV07XG4gICAgcmV2aWV3ZXJzSWRzID0gWy4uLm5ldyBTZXQocmV2aWV3ZXJzSWRzKV07XG4gICAgb3ZlcnNlZXJJZHMgPSBbLi4ubmV3IFNldChvdmVyc2VlcklkcyldO1xuICAgIHRoaXMuYXNzaWdub3JJZCA9IFsuLi5uZXcgU2V0KHRoaXMuYXNzaWdub3JJZCldO1xuICAgIHRoaXMuYXNzaWduZWVJZHMgPSBbLi4ubmV3IFNldCh0aGlzLmFzc2lnbmVlSWRzKV07XG4gICAgdGhpcy5yZXZpZXdlcklkcyA9IFsuLi5uZXcgU2V0KHRoaXMucmV2aWV3ZXJJZHMpXTtcbiAgICB0aGlzLm92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQodGhpcy5vdmVyc2VlcklkcyldO1xuXG4gICAgYXNzaWduZWVHcm91cElkcyA9IFsuLi5uZXcgU2V0KGFzc2lnbmVlR3JvdXBJZHMpXTtcbiAgICBncm91cFJldmlld2VySWRzID0gWy4uLm5ldyBTZXQoZ3JvdXBSZXZpZXdlcklkcyldO1xuICAgIGdyb3VwT3ZlcnNlZXJJZHMgPSBbLi4ubmV3IFNldChncm91cE92ZXJzZWVySWRzKV07XG4gICAgdGhpcy5hc3NpZ25vcnNMaXN0ID0gYmVoYWxmVXNlcnMuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT4gIW92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyLm1lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuYXNzaWduZWVzTGlzdCA9IGFsbFVzZXJzO1xuICAgIHRoaXMucmV2aWV3ZXJzTGlzdCA9IGFsbFVzZXJzO1xuICAgIHRoaXMub3ZlcnNlZXJzTGlzdCA9IGFsbFVzZXJzO1xuXG4gICAgdGhpcy5kaXNhYmxlTGlzdChcbiAgICAgIGFsbFVzZXJzLFxuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMsXG4gICAgICBhc3NpZ25lZUlkcyxcbiAgICAgIHJldmlld2Vyc0lkcyxcbiAgICAgIG92ZXJzZWVySWRzXG4gICAgKTtcbiAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgIHRoaXMuZ3JvdXBBc3NpZ25lZUxpc3QgPSBhbGxHcm91cHMuZmlsdGVyKFxuICAgICAgICAoZ3JvdXA6IGFueSkgPT5cbiAgICAgICAgICAhKFxuICAgICAgICAgICAgZ3JvdXBSZXZpZXdlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKSB8fFxuICAgICAgICAgICAgZ3JvdXBPdmVyc2Vlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxuICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB0aGlzLnJldmlld2VyTWVtYmVySWRzTGlzdCA9IHRoaXMuYXNzaWduVXNlck1lbWJlcklkKHRoaXMuYWxsVXNlcnNMaXN0KTtcbiAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCA9IHRoaXMuYXNzaWduVXNlck1lbWJlcklkKHRoaXMuYWxsVXNlcnNMaXN0KTtcbiAgICAgIHRoaXMuZ3JvdXBSZXZpZXdlckxpc3QgPSBhbGxHcm91cHMuZmlsdGVyKFxuICAgICAgICAoZ3JvdXA6IGFueSkgPT5cbiAgICAgICAgICAhKFxuICAgICAgICAgICAgZ3JvdXBPdmVyc2Vlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKSB8fFxuICAgICAgICAgICAgYXNzaWduZWVHcm91cElkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxuICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB0aGlzLmdyb3VwT3ZlcnNlZXJMaXN0ID0gYWxsR3JvdXBzLmZpbHRlcihcbiAgICAgICAgKGdyb3VwOiBhbnkpID0+XG4gICAgICAgICAgIShcbiAgICAgICAgICAgIGFzc2lnbmVlR3JvdXBJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZCkgfHxcbiAgICAgICAgICAgIGdyb3VwUmV2aWV3ZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcbiAgICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGRpc2FibGVMaXN0KFxuICAgIGFsbFVzZXJzOiBhbnksXG4gICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM6IGFueSxcbiAgICBhc3NpZ25lZUlkczogYW55LFxuICAgIHJldmlld2Vyc0lkczogYW55LFxuICAgIG92ZXJzZWVySWRzOiBhbnlcbiAgKSB7XG4gICAgbGV0IGRpc2FibGVBc3NpZ25lZUxpc3QgPSBhbGxVc2Vycy5maWx0ZXIoXG4gICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICByZXZpZXdlcnNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcbiAgICAgICAgb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuZGlzYWJsZUFzc2lnbmVlSWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICBkaXNhYmxlQXNzaWduZWVMaXN0LFxuICAgICAgJ215X21lbWJlcl9pZCdcbiAgICApO1xuICAgIHRoaXMuZGlzYWJsZVJhZGlvQXNzaWduZWUgPSB0aGlzLnJldHVybklkcyhcbiAgICAgIGRpc2FibGVBc3NpZ25lZUxpc3QsXG4gICAgICAnZW1wbG95ZWVfaWQnXG4gICAgKTtcbiAgICBsZXQgZGlzYWJsZVJldmlld2VyTGlzdCA9IGFsbFVzZXJzLmZpbHRlcihcbiAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgIGFzc2lnbmVlSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVSZXZpZXdlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgZGlzYWJsZVJldmlld2VyTGlzdCxcbiAgICAgICdlbXBsb3llZV9pZCdcbiAgICApO1xuICAgIGxldCBkaXNhYmxlT3ZlcnNlZXJMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcbiAgICAgICAgcmV2aWV3ZXJzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVPdmVyc2VlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgZGlzYWJsZU92ZXJzZWVyTGlzdCxcbiAgICAgICdlbXBsb3llZV9pZCdcbiAgICApO1xuICAgIGlmICh0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwcykge1xuICAgICAgbGV0IGRpc2FibGVSZXZpZXdlckxpc3QgPSBhbGxVc2Vycy5maWx0ZXIoXG4gICAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgICAgb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcbiAgICAgICAgICBhc3NpZ25lZUlkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxuICAgICAgKTtcbiAgICAgIHRoaXMuZGlzYWJsZVJldmlld2VySWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgIGRpc2FibGVSZXZpZXdlckxpc3QsXG4gICAgICAgICdtZW1iZXJfaWQnXG4gICAgICApO1xuICAgICAgbGV0IGRpc2FibGVPdmVyc2VlcnNMaXN0ID0gYWxsVXNlcnMuZmlsdGVyKFxuICAgICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgICAgcmV2aWV3ZXJzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpXG4gICAgICApO1xuICAgICAgdGhpcy5kaXNhYmxlT3ZlcnNlZXJJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgICAgZGlzYWJsZU92ZXJzZWVyc0xpc3QsXG4gICAgICAgICdtZW1iZXJfaWQnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hMaXN0c1doaWxlUHJvZ3JhbVNlbGVjdGVkKCkge1xuICAgIGxldCBhc3NpZ25vckFuZEFzc2lnbmVlc0lkczogYW55ID0gW107XG4gICAgbGV0IHJldmlld2Vyc0lkczogYW55ID0gW107XG4gICAgbGV0IG92ZXJzZWVySWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgYXNzaWduZWVJZHM6IGFueSA9IFtdO1xuICAgIGxldCBhc3NpZ25lZUdyb3VwSWRzOiBhbnkgPSBbXTtcbiAgICBsZXQgZ3JvdXBSZXZpZXdlcklkczogYW55ID0gW107XG4gICAgbGV0IGdyb3VwT3ZlcnNlZXJJZHM6IGFueSA9IFtdO1xuICAgIHRoaXMucmV2aWV3ZXJJZHMgPSBbXTtcbiAgICB0aGlzLmFzc2lnbm9ySWQgPSBbXTtcbiAgICB0aGlzLm92ZXJzZWVySWRzID0gW107XG4gICAgdGhpcy5hc3NpZ25lZUlkcyA9IFtdO1xuICAgIGNvbnN0IGJlaGFsZlVzZXJzID0gY2xvbmVEZWVwKHRoaXMuYmVoYWxmT2ZVc2Vyc0xpc3QpO1xuICAgIGNvbnN0IGFsbEdyb3VwcyA9IGNsb25lRGVlcCh0aGlzLk9yZ0dyb3VwKTtcbiAgICBjb25zdCBhc3NpZ25vcnMgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3QpO1xuICAgIGNvbnN0IGFzc2lnbmVlcyA9IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0KTtcbiAgICBjb25zdCBhc3NpZ25lZUdyb3VwTGlzdCA9IHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzXG4gICAgICA/IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QpXG4gICAgICA6IFtdO1xuICAgIGNvbnN0IHJldmlld2VycyA9IGNsb25lRGVlcCh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0KTtcbiAgICBjb25zdCBncm91cFJldmlld2Vyc0xpc3QgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0KVxuICAgICAgOiBbXTtcbiAgICBjb25zdCBvdmVyc2Vlckxpc3QgPSBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdCk7XG4gICAgY29uc3QgZ3JvdXBPdmVyc2Vlckxpc3QgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdClcbiAgICAgIDogW107XG4gICAgY29uc3Qgbm90aWZ5T3ZlcnNlZXJzID0gY2xvbmVEZWVwKFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFxuICAgICk7XG4gICAgY29uc3QgZ3JvdXBOb3RpZnlPdmVyc2VlcnMgPSB0aGlzLmZlYXR1cmVGbGFnX2dyb3Vwc1xuICAgICAgPyBjbG9uZURlZXAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdClcbiAgICAgIDogW107XG4gICAgYXNzaWdub3JzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYXNzaWdub3JJZC5wdXNoKHVzZXI/Lm1lbWJlcl9pZCk7XG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKHVzZXI/Lm1lbWJlcl9pZCk7XG4gICAgfSk7XG4gICAgYXNzaWduZWVzPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICAgIGFzc2lnbmVlSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICAgIHRoaXMuYXNzaWduZWVJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPT0gMCkge1xuICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMucHVzaCh0aGlzLm1lbWJlcklkKTtcbiAgICAgIHRoaXMuYXNzaWdub3JJZC5wdXNoKHRoaXMubWVtYmVySWQpO1xuICAgIH1cblxuICAgIGFzc2lnbmVlR3JvdXBMaXN0Py5mb3JFYWNoKChncm91cDogYW55KSA9PiB7XG4gICAgICBhc3NpZ25lZUdyb3VwSWRzLnB1c2goZ3JvdXA/Lmdyb3VwX2lkKTtcbiAgICB9KTtcbiAgICByZXZpZXdlcnM/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgcmV2aWV3ZXJzSWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICAgIHRoaXMucmV2aWV3ZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIGdyb3VwUmV2aWV3ZXJzTGlzdD8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xuICAgICAgZ3JvdXBSZXZpZXdlcklkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XG4gICAgfSk7XG4gICAgb3ZlcnNlZXJMaXN0Py5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIG92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICAgIHRoaXMub3ZlcnNlZXJJZHMucHVzaCh1c2VyPy5teV9tZW1iZXJfaWQpO1xuICAgIH0pO1xuICAgIG5vdGlmeU92ZXJzZWVycz8uZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICBvdmVyc2Vlcklkcy5wdXNoKHVzZXI/Lm15X21lbWJlcl9pZCk7XG4gICAgICB0aGlzLm92ZXJzZWVySWRzLnB1c2godXNlcj8ubXlfbWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBncm91cE92ZXJzZWVyTGlzdD8uZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xuICAgICAgZ3JvdXBPdmVyc2Vlcklkcy5wdXNoKGdyb3VwPy5ncm91cF9pZCk7XG4gICAgfSk7XG4gICAgZ3JvdXBOb3RpZnlPdmVyc2VlcnM/LmZvckVhY2goKGdyb3VwOiBhbnkpID0+IHtcbiAgICAgIGdyb3VwT3ZlcnNlZXJJZHMucHVzaChncm91cD8uZ3JvdXBfaWQpO1xuICAgIH0pO1xuICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzID0gWy4uLm5ldyBTZXQoYXNzaWdub3JBbmRBc3NpZ25lZXNJZHMpXTtcbiAgICBhc3NpZ25lZUlkcyA9IFsuLi5uZXcgU2V0KGFzc2lnbmVlSWRzKV07XG4gICAgcmV2aWV3ZXJzSWRzID0gWy4uLm5ldyBTZXQocmV2aWV3ZXJzSWRzKV07XG4gICAgb3ZlcnNlZXJJZHMgPSBbLi4ubmV3IFNldChvdmVyc2VlcklkcyldO1xuICAgIGFzc2lnbmVlR3JvdXBJZHMgPSBbLi4ubmV3IFNldChhc3NpZ25lZUdyb3VwSWRzKV07XG4gICAgZ3JvdXBSZXZpZXdlcklkcyA9IFsuLi5uZXcgU2V0KGdyb3VwUmV2aWV3ZXJJZHMpXTtcbiAgICBncm91cE92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQoZ3JvdXBPdmVyc2VlcklkcyldO1xuICAgIHRoaXMuYXNzaWdub3JJZCA9IFsuLi5uZXcgU2V0KHRoaXMuYXNzaWdub3JJZCldO1xuICAgIHRoaXMuYXNzaWduZWVJZHMgPSBbLi4ubmV3IFNldCh0aGlzLmFzc2lnbmVlSWRzKV07XG4gICAgdGhpcy5yZXZpZXdlcklkcyA9IFsuLi5uZXcgU2V0KHRoaXMucmV2aWV3ZXJJZHMpXTtcbiAgICB0aGlzLm92ZXJzZWVySWRzID0gWy4uLm5ldyBTZXQodGhpcy5vdmVyc2VlcklkcyldO1xuXG4gICAgdGhpcy5hc3NpZ25vcnNMaXN0ID0gYmVoYWxmVXNlcnMuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT4gIW92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyLm1lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuYXNzaWduZWVzTGlzdCA9IHRoaXMucHJvZ3JhbVBlb3BsZUxpc3Q/LmFzc2lnbmVlc0xpc3Q7XG4gICAgdGhpcy5yZXZpZXdlcnNMaXN0ID0gdGhpcy5wcm9ncmFtUGVvcGxlTGlzdD8ucmV2aWV3ZXJzTGlzdDtcbiAgICB0aGlzLm92ZXJzZWVyc0xpc3QgPSB0aGlzLnByb2dyYW1QZW9wbGVMaXN0Py5vdmVyc2VlcnNMaXN0O1xuXG4gICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICB0aGlzLmdyb3VwQXNzaWduZWVMaXN0ID1cbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0gJiZcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uYXNzaWduZWVfZ3JvdXBfaWRzPy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0aGlzLnByb2dyYW1Hcm91cExpc3QoXG4gICAgICAgICAgICBhbGxHcm91cHMsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8uYXNzaWduZWVfZ3JvdXBfaWRzXG4gICAgICAgICAgKVxuICAgICAgICAgIDogYWxsR3JvdXBzLmZpbHRlcihcbiAgICAgICAgICAgIChncm91cDogYW55KSA9PlxuICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgIGdyb3VwUmV2aWV3ZXJJZHM/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZCkgfHxcbiAgICAgICAgICAgICAgICBncm91cE92ZXJzZWVySWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgdGhpcy5yZXZpZXdlck1lbWJlcklkc0xpc3QgPSB0aGlzLmFzc2lnblVzZXJNZW1iZXJJZChcbiAgICAgICAgdGhpcy5wcm9ncmFtUGVvcGxlTGlzdC5yZXZpZXdlcnNMaXN0XG4gICAgICApO1xuICAgICAgdGhpcy5ncm91cFJldmlld2VyTGlzdCA9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtICYmXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LnJldmlld2VyX2dyb3VwX2lkcz8ubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGhpcy5wcm9ncmFtR3JvdXBMaXN0KFxuICAgICAgICAgICAgYWxsR3JvdXBzLFxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0/LnJldmlld2VyX2dyb3VwX2lkc1xuICAgICAgICAgIClcbiAgICAgICAgICA6IGFsbEdyb3Vwcy5maWx0ZXIoXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT5cbiAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICBncm91cE92ZXJzZWVySWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpIHx8XG4gICAgICAgICAgICAgICAgYXNzaWduZWVHcm91cElkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcnNlZXJzTGlzdCA9IHRoaXMuYXNzaWduVXNlck1lbWJlcklkKFxuICAgICAgICB0aGlzLnByb2dyYW1QZW9wbGVMaXN0Lm92ZXJzZWVyc0xpc3RcbiAgICAgICk7XG4gICAgICB0aGlzLmdyb3VwT3ZlcnNlZXJMaXN0ID1cbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW0gJiZcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbT8ub3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRoaXMucHJvZ3JhbUdyb3VwTGlzdChcbiAgICAgICAgICAgIGFsbEdyb3VwcyxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtPy5vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3Vwc1xuICAgICAgICAgIClcbiAgICAgICAgICA6IGFsbEdyb3Vwcy5maWx0ZXIoXG4gICAgICAgICAgICAoZ3JvdXA6IGFueSkgPT5cbiAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICBhc3NpZ25lZUdyb3VwSWRzPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpIHx8XG4gICAgICAgICAgICAgICAgZ3JvdXBSZXZpZXdlcklkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5kaXNhYmxlUHJvZ3JhbUxpc3QoXG4gICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcyxcbiAgICAgIGFzc2lnbmVlSWRzLFxuICAgICAgcmV2aWV3ZXJzSWRzLFxuICAgICAgb3ZlcnNlZXJJZHNcbiAgICApO1xuICB9XG5cbiAgcHJvZ3JhbUdyb3VwTGlzdChhbGxHcm91cHM6IGFueSwgLi4uYXJnczogYW55W10pIHtcbiAgICAvLyBhcmdzWzBdXG4gICAgbGV0IGFzc2lnbmVlUHJvZ3JhbTogYW55ID0gW107XG4gICAgbGV0IGdyb3VwSWRzID0gYXJnc1swXTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByb2dyYW0gJiYgdGhpcy5zZWxlY3RlZFByb2dyYW0/LmFzc2lnbmVlX2dyb3VwX2lkcykge1xuICAgICAgYXNzaWduZWVQcm9ncmFtID0gYWxsR3JvdXBzLmZpbHRlcigoZ3JvdXA6IGFueSkgPT5cbiAgICAgICAgZ3JvdXBJZHMuaW5jbHVkZXMoZ3JvdXAuZ3JvdXBfaWQpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gYXNzaWduZWVQcm9ncmFtO1xuICB9XG5cbiAgZGlzYWJsZVByb2dyYW1MaXN0KFxuICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzOiBhbnksXG4gICAgYXNzaWduZWVJZHM6IGFueSxcbiAgICByZXZpZXdlcnNJZHM6IGFueSxcbiAgICBvdmVyc2VlcklkczogYW55XG4gICkge1xuICAgIGxldCBkaXNhYmxlQXNzaWduZWVMaXN0ID0gdGhpcy5wcm9ncmFtUGVvcGxlTGlzdD8uYXNzaWduZWVzTGlzdC5maWx0ZXIoXG4gICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICByZXZpZXdlcnNJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcbiAgICAgICAgb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuZGlzYWJsZUFzc2lnbmVlSWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICBkaXNhYmxlQXNzaWduZWVMaXN0LFxuICAgICAgJ215X21lbWJlcl9pZCdcbiAgICApO1xuICAgIHRoaXMuZGlzYWJsZVJhZGlvQXNzaWduZWUgPSB0aGlzLnJldHVybklkcyhcbiAgICAgIGRpc2FibGVBc3NpZ25lZUxpc3QsXG4gICAgICAnZW1wbG95ZWVfaWQnXG4gICAgKTtcbiAgICBsZXQgZGlzYWJsZVJldmlld2VyTGlzdCA9IHRoaXMucHJvZ3JhbVBlb3BsZUxpc3Q/LnJldmlld2Vyc0xpc3QuZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgb3ZlcnNlZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZCkgfHxcbiAgICAgICAgYXNzaWduZWVJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuZGlzYWJsZVJldmlld2VySWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICBkaXNhYmxlUmV2aWV3ZXJMaXN0LFxuICAgICAgJ2VtcGxveWVlX2lkJ1xuICAgICk7XG4gICAgbGV0IGRpc2FibGVPdmVyc2Vlckxpc3QgPSB0aGlzLnByb2dyYW1QZW9wbGVMaXN0Py5vdmVyc2VlcnNMaXN0LmZpbHRlcihcbiAgICAgICh1c2VyOiBhbnkpID0+XG4gICAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgIHJldmlld2Vyc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxuICAgICk7XG4gICAgdGhpcy5kaXNhYmxlT3ZlcnNlZXJJZHMgPSB0aGlzLnJldHVybklkcyhcbiAgICAgIGRpc2FibGVPdmVyc2Vlckxpc3QsXG4gICAgICAnZW1wbG95ZWVfaWQnXG4gICAgKTtcbiAgICBpZiAodGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpIHtcbiAgICAgIGxldCBkaXNhYmxlUmV2aWV3ZXJMaXN0ID0gdGhpcy5yZXZpZXdlck1lbWJlcklkc0xpc3QuZmlsdGVyKFxuICAgICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICAgIG92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5teV9tZW1iZXJfaWQpIHx8XG4gICAgICAgICAgYXNzaWduZWVJZHM/LmluY2x1ZGVzKHVzZXI/Lm15X21lbWJlcl9pZClcbiAgICAgICk7XG4gICAgICB0aGlzLmRpc2FibGVSZXZpZXdlcklkcyA9IHRoaXMucmV0dXJuSWRzKFxuICAgICAgICBkaXNhYmxlUmV2aWV3ZXJMaXN0LFxuICAgICAgICAnbWVtYmVyX2lkJ1xuICAgICAgKTtcbiAgICAgIGxldCBkaXNhYmxlT3ZlcnNlZXJMaXN0ID0gdGhpcy5vdmVyc2VlcnNMaXN0LmZpbHRlcihcbiAgICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKSB8fFxuICAgICAgICAgIHJldmlld2Vyc0lkcz8uaW5jbHVkZXModXNlcj8ubXlfbWVtYmVyX2lkKVxuICAgICAgKTtcbiAgICAgIHRoaXMuZGlzYWJsZU92ZXJzZWVySWRzID0gdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgIGRpc2FibGVPdmVyc2Vlckxpc3QsXG4gICAgICAgICdtZW1iZXJfaWQnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgZm9ybSBpcyB2YWxpZCwgdGhlbiBpZiB0aGUgbW9kZSBpcyBFRElULCB0aGVuIHNldCB0aGUgb3JnYW5pemF0aW9uSWQgYW5kIG1lbWJlcklkIHRvIHRoZVxuICAgKiBhdXRoU2VydmljZSB2YWx1ZXMsIGFuZCB0aGVuIGNhbGwgdGhlIGVudHJ1c3RSZXNwb25zaWJpbGl0eSBmdW5jdGlvbiB3aXRoIHRoZSByZXNwb25zaWJpbGl0eUZvcm0gYXNcbiAgICogYSBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIElmIHRoZSBtb2RlIGlzIG5vdCBFRElULCB0aGVuIGNhbGwgdGhlIGVudHJ1c3RSZXNwb25zaWJpbGl0eSBmdW5jdGlvbiB3aXRoIHRoZSByZXNwb25zaWJpbGl0eUZvcm1cbiAgICogYXMgYSBwYXJhbWV0ZXIuXG4gICAqIEByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZS5cbiAgICovXG4gIHN1Ym1pdFJlc3BvbnNpYmlsaXR5KCkge1xuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZVJlc3BvbnNpYmlsaXR5KCk7XG4gICAgaWYgKCF2YWxpZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09ICdFRElUJykge1xuICAgICAgdGhpcy5vcmdhbml6YXRpb25JZCA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uSWQoKTtcbiAgICAgIHRoaXMubWVtYmVySWQgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldE1lbWJlcklkKCk7XG4gICAgICB0aGlzLmVudHJ1c3RSZXNwb25zaWJpbGl0eSh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybSk7XG4gICAgICAvLyBlZGl0IGNvbmRpdGlvbnNcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbnRydXN0UmVzcG9uc2liaWxpdHkodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgcmVzcG9uc2liaWxpdHkgbmFtZSBpcyBlbXB0eSwgb3IgdGhlIGZyZXF1ZW5jeSBpcyBlbXB0eSwgb3IgdGhlIGFzc2lnbmVlcyBsaXN0IGlzIGVtcHR5LFxuICAgKiB0aGVuIHJldHVybiBmYWxzZS4gT3RoZXJ3aXNlLCByZXR1cm4gdHJ1ZS5cbiAgICovXG4gIHZhbGlkYXRlUmVzcG9uc2liaWxpdHkoKSB7XG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5lbmFibGUgJiZcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5saXN0Py5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnd2hvbSc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChcbiAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lLnRyaW0oKSA9PSAnJ1xuICAgICkge1xuICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICd3aGF0JztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgIXRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3QgfHxcbiAgICAgICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAoIXRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzIHx8XG4gICAgICAgICAgKCghdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0IHx8XG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA9PSAwKSAmJlxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpKSlcbiAgICApIHtcbiAgICAgIHRoaXMuaW52YWxpZFR5cGUgPSAnd2hvJztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgIXRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID09ICcnIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPT09ICcnIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPT09ICc1fjB+MH4wJ1xuICAgICkge1xuICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICd3aGVuJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnZhbGlkVHlwZSA9ICcnO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lIHx8XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lLnRyaW0oKSA9PSAnJyB8fFxuICAgICAgIXRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZyZXF1ZW5jeSB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID09PSAnJyB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZnJlcXVlbmN5ID09PSAnNX4wfjB+MCcgfHxcbiAgICAgICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMubGlzdD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgKCF0aGlzLmZlYXR1cmVGbGFnX2dyb3VwcyB8fFxuICAgICAgICAgICgoIXRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3QgfHxcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlR3JvdXBzLmxpc3Q/Lmxlbmd0aCA9PSAwKSAmJlxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlRmxhZ19ncm91cHMpKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgZW50cnVzdFJlc3BvbnNpYmlsaXR5KGVudHJ1c3RGb3JtOiBhbnkpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMuZW50cnVzdExvYWRlciA9IHRydWU7XG4gICAgbGV0IHN0YXJ0RGF0ZSA9IG1vbWVudChwYXJzZUludChlbnRydXN0Rm9ybS5zdGFydERhdGUpICogMTAwMCkuZm9ybWF0KFxuICAgICAgJ1lZWVktTU0tREQgSEg6bW06c3MnXG4gICAgKTtcbiAgICBzdGFydERhdGUgPSBtb21lbnQoc3RhcnREYXRlLnNwbGl0KCcgJylbMF0gKyAnIDAwOjAwOjAwJykuZm9ybWF0KFxuICAgICAgJ1lZWVktTU0tREQgSEg6bW06c3MnXG4gICAgKTtcbiAgICBjb25zdCByY0RldGFpbHMgPVxuICAgICAgZW50cnVzdEZvcm0ucmM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5yYy5tYXAoKHJjOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICAgICAgaWYgKHJjKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJjRGV0YWlsc0FyciA9IHtcbiAgICAgICAgICAgICAgICBwYXJlbnRfcmNfaWRzOiByYy5wYXJlbnRfcmNfaWRzLFxuICAgICAgICAgICAgICAgIHJjX2lkOiByYy5yY2lkLFxuICAgICAgICAgICAgICAgIGNoaWxkX3JjX2lkczogcmM/Lml0ZW1fY2hpbGRfaWRzLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gcmNEZXRhaWxzQXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIDogW107XG4gICAgY29uc3QgcmNEZXRhaWxzSWRBcnIgPVxuICAgICAgZW50cnVzdEZvcm0ucmM/Lmxlbmd0aCA+IDBcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5yYy5tYXAoKHJjOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICAgICAgaWYgKHJjKSB7XG4gICAgICAgICAgICAgIHJldHVybiByYy5yY2lkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIDogW107XG5cbiAgICBjb25zdCBtb3JlT3B0aW9ucyA9IHRoaXMubW9yZU9wdGlvbnM7XG5cbiAgICBjb25zdCBjaGVja0NvbnRpbnVvdXNGYWlsZWRWYWx1ZSA9IChkZXRhaWxzOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGZyZXF1ZW5jeVR5cGUgPSBwYXJzZUludChkZXRhaWxzLnNwbGl0KCd+JylbMF0pO1xuICAgICAgaWYgKGZyZXF1ZW5jeVR5cGUgPT09IDEgfHwgZnJlcXVlbmN5VHlwZSA9PT0gMiB8fCBmcmVxdWVuY3lUeXBlID09PSAzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBsZXQgbGlua2VkUHJvZ3JhbUlkczogYW55W10gPSBbXTtcbiAgICBsZXQgbGlua2VkQ2F0ZWdvcnlJZHM6IGFueVtdID0gW107XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmxpbmtlZFByb2dyYW0/LmZvckVhY2goKGVsZTogYW55KSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5jYXRlZ29yeV9pZCAhPT0gZWxlPy5jYXRlZ29yeV9pZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHByb2dyYW0gPSB7XG4gICAgICAgICAgcHJvZ3JhbUlkOiBlbGU/LmNhdGVnb3J5X2lkLFxuICAgICAgICAgIHByb2dyYW1PYmplY3RJZDogZWxlPy5faWQsXG4gICAgICAgICAgc3ViUHJvZ3JhbUlkczogZWxlPy5jaGlsZF9pZD8uZmlsdGVyKChlbDogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2F0ZWdvcnk/LmluY2x1ZGVzKGVsKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgICAgbGlua2VkUHJvZ3JhbUlkcz8ucHVzaChwcm9ncmFtKTtcbiAgICAgICAgbGlua2VkQ2F0ZWdvcnlJZHM/LnB1c2goZWxlPy5jYXRlZ29yeV9pZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgY2F0ZWdvcnlJZHNFeGNlcHREZWZhdWx0OiBhbnkgPSBbXTtcbiAgICBjYXRlZ29yeUlkc0V4Y2VwdERlZmF1bHQgPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uY2F0ZWdvcnk/LmZpbHRlcihcbiAgICAgIChlbDogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgZWwgIT09IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtWzBdPy5jYXRlZ29yeV9pZCAmJlxuICAgICAgICAgICF0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbVswXT8uY2hpbGRfaWQ/LmluY2x1ZGVzKGVsKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5jb21iaW5lVXNlckFuZFVzZXJHcm91cE1lbWJlcnMoXG4gICAgICB0aGlzLm1vZGUgPT09ICdFRElUJyAmJlxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID09PSAnQUxMJyAmJlxuICAgICAgdGhpcy5yYXdSZXNwb25zaWJpbGl0eT8udXNlckdyb3VwSWRzPy5hc3NpZ25lZUFsbEdyb3VwSWRzPy5sZW5ndGhcbiAgICApO1xuXG4gICAgY29uc3QgcmVtYXJrcyA9XG4gICAgICBlbnRydXN0Rm9ybS5kZXNjcmlwdGlvbi5yZXBsYWNlKC9cXCZuYnNwOy9nLCAnJykudHJpbSgpICE9PSAnJ1xuICAgICAgICA/IGVudHJ1c3RGb3JtLmRlc2NyaXB0aW9uXG4gICAgICAgIDogJyc7XG4gICAgY29uc3Qgb2JqZWN0aXZlID1cbiAgICAgIGVudHJ1c3RGb3JtLm9iamVjdGl2ZS5yZXBsYWNlKC9cXCZuYnNwOy9nLCAnJykudHJpbSgpICE9PSAnJ1xuICAgICAgICA/IGVudHJ1c3RGb3JtLm9iamVjdGl2ZVxuICAgICAgICA6ICcnO1xuICAgIGxldCBwYXlsb2FkOiBhbnkgPSB7XG4gICAgICBhcHBfYXNzb2NpYXRpb246IFtdLFxuICAgICAgYXNzaWduZWVfbWVtYmVyX2lkOiB0aGlzLnJldHVybklkcyhcbiAgICAgICAgdGhpcy5hc3NpZ25lZVVzZXJMaXN0LFxuICAgICAgICAndWlkJ1xuICAgICAgKS50b1N0cmluZygpLFxuICAgICAgcHJvZ3JhbV9jYXRfaWRzOiBtb3JlT3B0aW9ucz8uUFJPR1JBTVxuICAgICAgICA/IGVudHJ1c3RGb3JtPy5wcm9ncmFtPy5sZW5ndGhcbiAgICAgICAgICA/IFtlbnRydXN0Rm9ybT8ucHJvZ3JhbVswXT8uY2F0ZWdvcnlfaWRdXG4gICAgICAgICAgOiBbXVxuICAgICAgICA6IFtdLFxuICAgICAgbGlua2VkX3Byb2dyYW1faWRzOiBsaW5rZWRQcm9ncmFtSWRzLFxuICAgICAgbGlua2VkX2NhdGVnb3J5X2lkczogdGhpcy5nZXRVbmlxdWVJZHMoW1xuICAgICAgICAuLi5jYXRlZ29yeUlkc0V4Y2VwdERlZmF1bHQsXG4gICAgICAgIC4uLmxpbmtlZENhdGVnb3J5SWRzLFxuICAgICAgXSksXG4gICAgICAvLyBjYXRlZ29yeV9pZDogKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtX3NlbGVjdGVkX2lkcz8ubGVuZ3RoID4gMCkgPyB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uY2F0ZWdvcnlfaWQgOiAnJyxcbiAgICAgIGNhdGVnb3J5X2lkOlxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbV9zZWxlY3RlZF9pZHM/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IHRoaXMuZ2V0VW5pcXVlSWRzKFtcbiAgICAgICAgICAgIC4uLnRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5jYXRlZ29yeSxcbiAgICAgICAgICAgIC4uLmxpbmtlZENhdGVnb3J5SWRzLFxuICAgICAgICAgICAgLi4uW2VudHJ1c3RGb3JtPy5wcm9ncmFtWzBdPy5jYXRlZ29yeV9pZF0sXG4gICAgICAgICAgXSk/LnJldmVyc2UoKS50b1N0cmluZygpXG4gICAgICAgICAgOiAnJyxcbiAgICAgIGNjX21lbWJlcl9lbWFpbDogbW9yZU9wdGlvbnM/Lk9WRVJTRUVSXG4gICAgICAgID8gdGhpcy5yZXR1cm5JZHModGhpcy5vdmVyc2VlclVzZXJMaXN0LCAndWlkJykudG9TdHJpbmcoKVxuICAgICAgICA6ICcnLFxuICAgICAgY2hlY2twb2ludF9kZXNjcmlwdGlvbjogbW9yZU9wdGlvbnM/LkNIRUNLUE9JTlRTXG4gICAgICAgID8gZW50cnVzdEZvcm0uY2hlY2twb2ludEluc3RydWN0aW9uXG4gICAgICAgIDogJycsXG4gICAgICBjaGVja3BvaW50X2RldGFpbHM6IG1vcmVPcHRpb25zPy5DSEVDS1BPSU5UU1xuICAgICAgICA/IEpTT04uc3RyaW5naWZ5KHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzKVxuICAgICAgICA6ICcnLFxuICAgICAgY2hlY2twb2ludF9mbGFnOiAwLFxuICAgICAgY29sbGFib3JhdG9yX21hcmtfZG9uZTogMCxcbiAgICAgIGNvbW1lbnQ6ICcnLFxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogY2hlY2tDb250aW51b3VzRmFpbGVkVmFsdWUoZW50cnVzdEZvcm0uZnJlcXVlbmN5KVxuICAgICAgICA/IGVudHJ1c3RGb3JtLmNvbnRpbnVvdXNfZmFpbGVkX2RheXNcbiAgICAgICAgOiAwLFxuICAgICAgY29zdF9vZl9jb21wbGlhbmNlOiAnJyxcbiAgICAgIGNyZWF0ZWRfYnk6IGVudHJ1c3RGb3JtLmFzc2lnbm9ycy5saXN0Py5sZW5ndGggPCAxID8gMCA6IHRoaXMubWVtYmVySWQsXG4gICAgICBjcmVhdGlvbl93aW5kb3c6IDAsXG4gICAgICBjdXN0b21fdGFnczogSlNPTi5zdHJpbmdpZnkoZW50cnVzdEZvcm0uY3VzdG9tVGFncyksXG4gICAgICBlbnRpdHlfdHJlZTogbW9yZU9wdGlvbnM/LlJDXG4gICAgICAgID8gdGhpcy5pc1Jlc3BvbnNpYmlsaXR5UmNMaW5rRW5hYmxlZCAmJlxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID09IDFcbiAgICAgICAgICA/IFtdXG4gICAgICAgICAgOiByY0RldGFpbHNcbiAgICAgICAgOiBbXSxcbiAgICAgIGVudHJ1c3RfZnJvbV9yaXNrOiB0aGlzLm9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcgPyB0cnVlIDogZmFsc2UsXG4gICAgICBmYWlsZWRfYWZ0ZXJfZGF5czogZW50cnVzdEZvcm0uZmFpbGVkX2FmdGVyX2RheXMsXG4gICAgICBmYWlsZWRfdGltZV91dGM6IGVudHJ1c3RGb3JtLmZhaWxlZF90aW1lX3V0YyxcbiAgICAgIGZhaWx1cmVfY2NfbWVtYmVyX2VtYWlsOiBtb3JlT3B0aW9ucz8uT1ZFUlNFRVJcbiAgICAgICAgPyB0aGlzLnJldHVybklkcyh0aGlzLm92ZXJzZWVyVXNlck5vdGlmeUxpc3QsICd1aWQnKS50b1N0cmluZygpXG4gICAgICAgIDogJycsXG4gICAgICBmcmVxdWVuY3lfZGV0YWlsczogZW50cnVzdEZvcm0uZnJlcXVlbmN5LFxuICAgICAgZnJlcXVlbmN5X3RpbWU6IGVudHJ1c3RGb3JtLnRpbWVJbjI0SHIgPz8gREVGQVVMVF8yNEhSLFxuICAgICAgZ3JjX29iamVjdF9pZDogMCxcbiAgICAgIGdyY19yZWxhdGlvbnNoaXA6ICcnLFxuICAgICAgaWZfdGVzdHBsYW5fZmFpbGVkOiAwLFxuICAgICAgaW1wYWN0OiAnJyxcbiAgICAgIGlzR3JvdXBBc3NpZ25UbzpcbiAgICAgICAgZW50cnVzdEZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID09ICdBTllfT05FJyA/IDEgOiAwLFxuICAgICAgaXNfa2V5X2NvbXBsaWFuY2U6IGVudHJ1c3RGb3JtLnJlc3BvbnNpYmlsaXR5LmtleVJlc3BvbnNpYmlsaXR5ID8gMSA6IDAsXG4gICAgICBhbGxvd0VkaXREdWVEYXRlOiBlbnRydXN0Rm9ybT8uYWxsb3dFZGl0RHVlRGF0ZSA/IHRydWUgOiBmYWxzZSxcbiAgICAgIGxpYnJhcnlfcmVwb3J0X2lkOiAwLFxuICAgICAgbGlmZWN5Y2xlX2RldGFpbHM6IGVudHJ1c3RGb3JtLmxpZmVjeWNsZURldGFpbHMgPz8gJzAwMDAtMDAtMDB+fjAnLFxuICAgICAgbGlua19mb3JfZGV0YWlsczogbW9yZU9wdGlvbnM/LkZPUk1BVEVfRVZJREVOQ0VcbiAgICAgICAgPyBlbnRydXN0Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRMaW5rc1xuICAgICAgICA6IFtdLFxuICAgICAgbGlua2FnZXM6IHsgY29tcGxpYW5jZTogW10gfSxcbiAgICAgIG1lbWJlcl9pZDpcbiAgICAgICAgdGhpcy5yZXR1cm5JZHMoZW50cnVzdEZvcm0uYXNzaWdub3JzLmxpc3QsICd1aWQnKT8ubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMoZW50cnVzdEZvcm0uYXNzaWdub3JzLmxpc3QsICd1aWQnKVswXVxuICAgICAgICAgIDogdGhpcy5tZW1iZXJJZCxcbiAgICAgIG9iamVjdGl2ZTogbW9yZU9wdGlvbnM/Lk9CSkVDVElWRSA/IG9iamVjdGl2ZSA6ICcnLFxuICAgICAgb25fY29tcGxldGlvbl9vZjogZW50cnVzdEZvcm0ucmVwb3J0SWQgPyBbZW50cnVzdEZvcm0ucmVwb3J0SWRdIDogW10sXG4gICAgICBvbl9jb21wbGV0aW9uX29mX3R5cGU6IDEsXG4gICAgICBvcmdhbmlzYXRpb25faWQ6IHRoaXMub3JnYW5pemF0aW9uSWQsXG4gICAgICBvdmVycmlkZV93ZWVrbHk6IDAsXG4gICAgICBwYXJlbnRfaWQ6IDAsXG4gICAgICBwZW5hbHR5OiAnJyxcbiAgICAgIHByaXZhdGVfbGlicmFyeV9pZDogMCxcbiAgICAgIHJlbWFya3M6IHJlbWFya3MsXG4gICAgICByZW1pbmRlcl9iZWZvcmVfZGF5czogZW50cnVzdEZvcm0ucmVtaW5kZXJfYmVmb3JlX2RheXMsXG4gICAgICByZXBvcnRfZm9ybWF0OiBtb3JlT3B0aW9ucz8uRk9STUFURV9FVklERU5DRVxuICAgICAgICA/IGVudHJ1c3RGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdEZpbGVzXG4gICAgICAgIDogW10sXG4gICAgICBpc0Zvcm1hdFVwbG9hZDpcbiAgICAgICAgbW9yZU9wdGlvbnM/LkZPUk1BVEVfRVZJREVOQ0UgJiZcbiAgICAgICAgICBlbnRydXN0Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRSZXF1aXJlZFxuICAgICAgICAgID8gMVxuICAgICAgICAgIDogMCxcbiAgICAgIHJlcG9ydF9mb3JtYXRfbGluazogJycsXG4gICAgICByZXBvcnRfbmFtZTogZW50cnVzdEZvcm0ucmVzcG9uc2liaWxpdHkubmFtZSxcbiAgICAgIHJlcG9ydF91cGxvYWRfZmxhZzogZW50cnVzdEZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZXZpZGVuY2VSZXF1aXJlZFxuICAgICAgICA/IDFcbiAgICAgICAgOiAwLFxuICAgICAgcmV2aWV3X2FmdGVyX2RheXM6IG1vcmVPcHRpb25zPy5SRVZJRVdFUlxuICAgICAgICA/IGVudHJ1c3RGb3JtLnJldmlld2Vycy5yZXZpZXdGcmVxdWVuY3kucmV2aWV3Q29tcGxldGVEYXlzID09PSAnJ1xuICAgICAgICAgID8gMFxuICAgICAgICAgIDogTnVtYmVyKGVudHJ1c3RGb3JtLnJldmlld2Vycy5yZXZpZXdGcmVxdWVuY3kucmV2aWV3Q29tcGxldGVEYXlzKVxuICAgICAgICA6IDAsXG4gICAgICByZXZpZXdfZmFpbGVkX2FmdGVyX2RheXM6IG1vcmVPcHRpb25zPy5SRVZJRVdFUlxuICAgICAgICA/IGVudHJ1c3RGb3JtLnJldmlld2Vycy5yZXZpZXdGcmVxdWVuY3kucmV2aWV3Tk90Q29tcGxldGVkRGF5cyA9PT0gJydcbiAgICAgICAgICA/IDBcbiAgICAgICAgICA6IE51bWJlcihlbnRydXN0Rm9ybS5yZXZpZXdlcnMucmV2aWV3RnJlcXVlbmN5LnJldmlld05PdENvbXBsZXRlZERheXMpXG4gICAgICAgIDogMCxcbiAgICAgIHJldmlld2VyX2FycjogbW9yZU9wdGlvbnM/LlJFVklFV0VSXG4gICAgICAgID8ge1xuICAgICAgICAgIGxldmVsMToge1xuICAgICAgICAgICAgcmV2aWV3ZXJzOiB0aGlzLnNldFJldmlld2VyUGF5bG9hZChcbiAgICAgICAgICAgICAgdGhpcy5yZXZpZXdlclVzZXJMaXN0LFxuICAgICAgICAgICAgICAnbGlzdCcsXG4gICAgICAgICAgICAgIGVudHJ1c3RGb3JtLnJldmlld2Vycy5hY2NlcHRlZERhdGEsXG4gICAgICAgICAgICAgIGVudHJ1c3RGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3dcbiAgICAgICAgICAgICAgICA/ICdTRVFVRU5USUFMJ1xuICAgICAgICAgICAgICAgIDogJ0FOWU9ORSdcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0eXBlOiBlbnRydXN0Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93XG4gICAgICAgICAgICAgID8gJ1NFUVVFTlRJQUwnXG4gICAgICAgICAgICAgIDogJ0FOWU9ORScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgICA6IHt9LFxuICAgICAgdXNlckdyb3VwSWRzOiB7XG4gICAgICAgIGFzc2lnbmVlQWxsR3JvdXBJZHM6XG4gICAgICAgICAgZW50cnVzdEZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlICE9PSAnQU5ZX09ORSdcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMoZW50cnVzdEZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0LCAndWdpZCcpXG4gICAgICAgICAgICA6IFtdLFxuICAgICAgICBhc3NpZ25lZUFueW9uZUdyb3VwSWRzOlxuICAgICAgICAgIGVudHJ1c3RGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9PT0gJ0FOWV9PTkUnXG4gICAgICAgICAgICA/IHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdCwgJ3VnaWQnKVxuICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgY2NFbWFpbEdyb3VwSWRzOlxuICAgICAgICAgIHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdCxcbiAgICAgICAgICAgICd1Z2lkJ1xuICAgICAgICAgICkgPz8gW10sXG4gICAgICAgIGZhaWx1cmVDQ0VtYWlsR3JvdXBJZHM6XG4gICAgICAgICAgdGhpcy5yZXR1cm5JZHMoXG4gICAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0LFxuICAgICAgICAgICAgJ3VnaWQnXG4gICAgICAgICAgKSA/PyBbXSxcbiAgICAgICAgcmV2aWV3ZXJHcm91cElkczpcbiAgICAgICAgICB0aGlzLnJldHVybklkcyhcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdCxcbiAgICAgICAgICAgICd1Z2lkJ1xuICAgICAgICAgICkgPz8gW10sXG4gICAgICB9LFxuICAgICAgZXhpc3RpbmdVc2VySWRzOiB7XG4gICAgICAgIGFzc2lnbmVlQWxsSWRzOlxuICAgICAgICAgIGVudHJ1c3RGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSAhPT0gJ0FOWV9PTkUnXG4gICAgICAgICAgICA/IHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtPy5hc3NpZ25lZXM/Lmxpc3QsICd1aWQnKVxuICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgYXNzaWduZWVBbnlvbmVJZHM6XG4gICAgICAgICAgZW50cnVzdEZvcm0uYXNzaWduZWVzLndob0NhbkNvbXBsZXRlID09PSAnQU5ZX09ORSdcbiAgICAgICAgICAgID8gdGhpcy5yZXR1cm5JZHMoZW50cnVzdEZvcm0/LmFzc2lnbmVlcz8ubGlzdCwgJ3VpZCcpXG4gICAgICAgICAgICA6IFtdLFxuICAgICAgICBjY0VtYWlsTWVtYmVySWRzOlxuICAgICAgICAgIHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtPy5vdmVyc2VlcnM/Lmxpc3QsICd1aWQnKSA/PyBbXSxcbiAgICAgICAgZmFpbHVyZUNDRW1haWxNZW1iZXJJZHM6XG4gICAgICAgICAgdGhpcy5yZXR1cm5JZHMoZW50cnVzdEZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdCwgJ3VpZCcpID8/XG4gICAgICAgICAgW10sXG4gICAgICAgIHJldmlld2VySWRzOlxuICAgICAgICAgIHRoaXMucmV0dXJuSWRzKFxuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdCxcbiAgICAgICAgICAgICd1aWQnXG4gICAgICAgICAgKSA/PyBbXSxcbiAgICAgIH0sXG4gICAgICByZXZpZXdlcl9jaGVja3BvaW50czogW3sgY2hlY2twb2ludHM6IFtdLCBpbnN0cnVjdGlvbjogJycgfV0sXG4gICAgICByZXZpZXdlcl9pZDogMCxcbiAgICAgIHJpc2tfY2xhc3M6IHRoaXMuaXNSaXNrRW5hYmxlID8gZW50cnVzdEZvcm0ucmlza0NsYXNzIDogMixcbiAgICAgIHJpc2tfaWRzOiAnJyxcbiAgICAgIHJpc2tfbWF0cml4X2RhdGE6IG1vcmVPcHRpb25zPy5SSVNLX0NMQVNTSUZJQ0FUSU9OXG4gICAgICAgID8gZW50cnVzdEZvcm0ucmlza01hdHJpeFxuICAgICAgICA6ICcwLDAsMCwwLDAsMCcsXG4gICAgICBzYW1wbGVfc2l6ZTogMCxcbiAgICAgIHN0YXJ0X2RhdGVfdXRjOiBzdGFydERhdGUsXG4gICAgICBzdGF0dXRvcnlfZGF5OiAwLFxuICAgICAgdGVzdF9yZXF1aXJlZF9mbGFnOiBtb3JlT3B0aW9ucz8uQVNTVVJBTkNFXG4gICAgICAgID8gZW50cnVzdEZvcm0uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID4gMFxuICAgICAgICAgID8gMVxuICAgICAgICAgIDogMFxuICAgICAgICA6IDAsXG4gICAgICB0ZXN0cGxhbl9jYXRlZ29yeV9pZDogbW9yZU9wdGlvbnM/LkFTU1VSQU5DRVxuICAgICAgICA/IHRoaXMucmV0dXJuSWRzKGVudHJ1c3RGb3JtLmFzc3VyYW5jZUxpc3QsICdjYXRlZ29yeV9pZCcpXG4gICAgICAgIDogW10sXG4gICAgICB0ZXN0cGxhbl9jYXRlZ29yeV9tYW5hZ2VyOiAnJyxcbiAgICAgIGF1ZGl0X2NhdGVnb3J5X2RldGFpbHM6XG4gICAgICAgIG1vcmVPcHRpb25zPy5SRVFVSVJFU19BVURJVCAmJlxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hdWRpdF9jYXRlZ29yeV9kZXRhaWxzPy5jYXRlZ29yeV9pZFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgY2F0ZWdvcnlfaWQ6XG4gICAgICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmF1ZGl0X2NhdGVnb3J5X2RldGFpbHMuY2F0ZWdvcnlfaWQsXG4gICAgICAgICAgICBzYW1wbGU6IHRoaXMuc2VsZWN0ZWRTYW1wbGUgPT09IDAgPyB0aGlzLnNhbXBsZVZhbHVlIDogMCxcbiAgICAgICAgICAgIHBlcmNlbnRhZ2U6IHRoaXMuc2VsZWN0ZWRTYW1wbGUgPT09IDEgPyB0aGlzLnNhbXBsZVBlcmNlbnRhZ2UgOiAwLFxuICAgICAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm46IGAxfjB+JHt0aGlzLnNlbmRBdWRpdFJlbWluZGVyc1ZhbHVlfX4xYCxcbiAgICAgICAgICAgIGZyZXF1ZW5jeV90aW1lOiBtb21lbnQodGhpcy5hdWRpdFRpbWUsICdISDptbSBhJykuZm9ybWF0KFxuICAgICAgICAgICAgICAnSEg6bW06c3MnXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH1cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgIGNhdGVnb3J5X2lkOiAwLFxuICAgICAgICAgICAgc2FtcGxlOiAwLFxuICAgICAgICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuOiBgYCxcbiAgICAgICAgICAgIGZyZXF1ZW5jeV90aW1lOiAnJyxcbiAgICAgICAgICB9LFxuICAgICAgYXNzZXNzbWVudDoge1xuICAgICAgICBjYXRlZ29yeV9pZDogbW9yZU9wdGlvbnM/LkFTU0VTU01FTlRcbiAgICAgICAgICA/IGVudHJ1c3RGb3JtPy5hc3Nlc3NtZW50Py5jYXRlZ29yeV9pZFxuICAgICAgICAgIDogJycsXG4gICAgICAgIGFzc2Vzc21lbnRfaWQ6IG1vcmVPcHRpb25zPy5BU1NFU1NNRU5UXG4gICAgICAgICAgPyBlbnRydXN0Rm9ybT8uYXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LmFpZFxuICAgICAgICAgIDogJycsXG4gICAgICB9LFxuICAgICAgYXNzZXNzbWVudF9jaGVja3BvaW50OiBtb3JlT3B0aW9ucz8uQ0hFQ0tQT0lOVFNfTkVXXG4gICAgICAgID8gT2JqZWN0LmtleXMoZW50cnVzdEZvcm0/Lm5ld19jaGVja3BvaW50cyk/Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IGVudHJ1c3RGb3JtPy5uZXdfY2hlY2twb2ludHNcbiAgICAgICAgICA6IHt9XG4gICAgICAgIDoge30sXG4gICAgICBxdWVzdGlvbm5haXJlX3R5cGU6IG1vcmVPcHRpb25zPy5DSEVDS1BPSU5UU19ORVdcbiAgICAgICAgPyBPYmplY3Qua2V5cyhlbnRydXN0Rm9ybT8ubmV3X2NoZWNrcG9pbnRzKT8ubGVuZ3RoID4gMFxuICAgICAgICAgID8gJ2Fzc2Vzc21lbnRfY2hlY2twb2ludCdcbiAgICAgICAgICA6IG1vcmVPcHRpb25zPy5BU1NFU1NNRU5UICYmIGVudHJ1c3RGb3JtPy5hc3Nlc3NtZW50Py5jYXRlZ29yeV9pZFxuICAgICAgICAgICAgPyAnYXNzZXNzbWVudCdcbiAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzKSAhPSAnJyAmJlxuICAgICAgICAgICAgICBtb3JlT3B0aW9ucz8uQ0hFQ0tQT0lOVFNcbiAgICAgICAgICAgICAgPyAnY2hlY2twb2ludCdcbiAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICA6ICcnLFxuXG4gICAgICBsaW5rZWRfR1JDX2lkczogbW9yZU9wdGlvbnM/LkdSQ19PQkpFQ1RTXG4gICAgICAgID8gZW50cnVzdEZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzLm1hcCgoZ3JjOiBhbnkpID0+IGdyYy5ncmNpZClcbiAgICAgICAgOiBbXSxcbiAgICAgIGZyZXF1ZW5jeTogdGhpcy5mcmVxdWVuY3lPYmplY3QsXG4gICAgICBzZWxlY3RlZENhdGVnb3J5OiB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNcbiAgICB9O1xuXG5cblxuICAgIGlmICh0aGlzLmlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkKSB7XG4gICAgICBwYXlsb2FkWydyZXNwb25zaWJpbGl0eUNlbnRlclR5cGUnXSA9XG4gICAgICAgIHRoaXMuaXNSZXNwb25zaWJpbGl0eVJjTGlua0VuYWJsZWQgJiYgbW9yZU9wdGlvbnM/LlJDXG4gICAgICAgICAgPyB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZVxuICAgICAgICAgIDogMDtcbiAgICAgIHBheWxvYWRbJ3Jlc3BvbnNpYmlsaXR5Q2VudGVyQXJyJ10gPVxuICAgICAgICB0aGlzLmlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkICYmIG1vcmVPcHRpb25zPy5SQ1xuICAgICAgICAgID8gcmNEZXRhaWxzSWRBcnJcbiAgICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNpYmlsaXR5UGF5bG9hZCA9IHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlLmJ1aWxkUmVzcG9uc2liaWxpdHlQYXlsb2FkKHBheWxvYWQpO1xuXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQgPSBwYXlsb2FkO1xuICAgIGlmICh0aGlzLm1vZGUgPT0gJ0NSRUFURScgJiYgIXRoaXMuaXNEdXBsaWNhdGVFbnRydXN0KSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5U2VydmljZS5zdWJtaXRFbnRydXN0KHJlc3BvbnNpYmlsaXR5UGF5bG9hZCkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmVudHJ1c3RMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5RGF0YSA9IHJlcztcblxuICAgICAgICAgIGlmIChyZXMubWVzc2FnZSAmJiByZXMubWVzc2FnZS50b0xvd2VyQ2FzZSgpID09PSAnYnVsayBlbnRydXN0Jykge1xuICAgICAgICAgICAgdGhpcy5zbWlsZXlNZXNzYWdlID0gYFlvdSBoYXZlIGVudHJ1c3RlZCAke3Jlcy5jYWxjdWxhdGVfbm9fb2ZfcmVzcG9uc2liaWl0aWVzfSByZXNwb25zaWJpbGl0aWVzLiBUaGVzZSB3b3VsZCBiZSByZWZsZWN0ZWQgd2l0aGluIHlvdXIgYWNjb3VudCBpbiBzb21ldGltZS5gO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5pc05vdGlmaWNhdGlvblBlbmRpbmcgJiYgcGF5bG9hZC5jcmVhdGVkX2J5ID09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9XG4gICAgICAgICAgICAgICdUaGlzIHJlc3BvbnNpYmlsaXR5IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBub3RpZmljYXRpb24gcXVldWUuJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHBheWxvYWQuY3JlYXRlZF9ieSA+IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5hY3Rpb25CdXR0b25zWzFdLmJ1dHRvblRleHQgPSAnVmlldyBSZXNwb25zaWJpbGl0aWVzJztcbiAgICAgICAgICAgICAgdGhpcy5zbWlsZXlNZXNzYWdlID0gYFlvdSBqdXN0IGNyZWF0ZWQgYSByZXNwb25zaWJpbGl0eSBvbiBiZWhhbGYgJHtlbnRydXN0Rm9ybS5hc3NpZ25vcnMubGlzdC5maW5kKFxuICAgICAgICAgICAgICAgIChtZW1iZXI6IGFueSkgPT4gbWVtYmVyLm1lbWJlcl9pZCA9PT0gcGF5bG9hZC5tZW1iZXJfaWRcbiAgICAgICAgICAgICAgKS5tZW1iZXJfbmFtZVxuICAgICAgICAgICAgICAgIH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vdGhpcy5yZXNldCgpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5lbnRydXN0TG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coXG4gICAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcbiAgICAgICAgICAgICdhbGVydCdcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2RlID09ICdFRElUJyB8fCB0aGlzLmlzRHVwbGljYXRlRW50cnVzdCkge1xuICAgICAgdGhpcy5zbWlsZXlNZXNzYWdlID0gYFRoZSByZXNwb25zaWJpbGl0eSBoYXMgYmVlbiBtb2RpZmllZC5gO1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVNlcnZpY2VcbiAgICAgICAgLnVwZGF0ZUVudHJ1c3QocGF5bG9hZCwgdGhpcy5yZXNwb25zaWJpbGl0eUlkLCB0cnVlKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eURhdGEgPSByZXM7XG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5lbnRydXN0TG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5pc0R1cGxpY2F0ZUVudHJ1c3QgPSBmYWxzZTtcblxuICAgICAgICAgICAgLy8gdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KFxuICAgICAgICAgICAgICAnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JyxcbiAgICAgICAgICAgICAgJ2FsZXJ0J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdW5pcXVlSWRVc2VyR3JvdXBzKFxuICAgIHRvdGFsVXNlckxpc3Q6IGFueSxcbiAgICBzZWxlY3RlZEdyb3VwOiBhbnksXG4gICAgc2VsZWN0ZWRVc2VyczogYW55XG4gICkge1xuICAgIGxldCBncm91cFVzZXJMaXN0ID0gdGhpcy5nZXRHcm91cHNVc2VyRW1wbG95ZWVzSWQoXG4gICAgICB0b3RhbFVzZXJMaXN0LFxuICAgICAgc2VsZWN0ZWRHcm91cFxuICAgICk7XG4gICAgbGV0IGlkcyA9IG5ldyBTZXQoc2VsZWN0ZWRVc2Vycy5tYXAoKHVzZXI6IGFueSkgPT4gdXNlcj8ubXlfbWVtYmVyX2lkKSk7XG4gICAgbGV0IHVzZXJMaXN0ID0gW1xuICAgICAgLi4uc2VsZWN0ZWRVc2VycyxcbiAgICAgIC4uLmdyb3VwVXNlckxpc3QuZmlsdGVyKFxuICAgICAgICAoZ3JvdXBVc2VyOiBhbnkpID0+ICFpZHMuaGFzKGdyb3VwVXNlcj8ubXlfbWVtYmVyX2lkKVxuICAgICAgKSxcbiAgICBdO1xuICAgIHJldHVybiB1c2VyTGlzdDtcbiAgfVxuXG4gIGNvbWJpbmVVc2VyQW5kVXNlckdyb3VwTWVtYmVycyhpc0dyb3VwPzogYW55KSB7XG4gICAgaWYgKHRoaXMuZmVhdHVyZUZsYWdfZ3JvdXBzKSB7XG4gICAgICB0aGlzLmFzc2lnbmVlVXNlckxpc3QgPSBpc0dyb3VwXG4gICAgICAgID8gW3sgZW1wbG95ZWVfaWQ6IHRoaXMucmF3UmVzcG9uc2liaWxpdHk/LmFzc2lnbmVlX21lbWJlcl9pZCB9XVxuICAgICAgICA6IHRoaXMudW5pcXVlSWRVc2VyR3JvdXBzKFxuICAgICAgICAgIHRoaXMuYWxsVXNlcnNMaXN0LFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdCxcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0XG4gICAgICAgICk7XG4gICAgICB0aGlzLnJldmlld2VyVXNlckxpc3QgPSB0aGlzLnVuaXF1ZUlkVXNlckdyb3VwcyhcbiAgICAgICAgdGhpcy5hbGxVc2Vyc0xpc3QsXG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdCxcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFxuICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcnNlZXJVc2VyTGlzdCA9IHRoaXMudW5pcXVlSWRVc2VyR3JvdXBzKFxuICAgICAgICB0aGlzLmFsbFVzZXJzTGlzdCxcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdCxcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdFxuICAgICAgKTtcbiAgICAgIHRoaXMub3ZlcnNlZXJVc2VyTm90aWZ5TGlzdCA9IHRoaXMudW5pcXVlSWRVc2VyR3JvdXBzKFxuICAgICAgICB0aGlzLmFsbFVzZXJzTGlzdCxcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdCxcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hc3NpZ25lZVVzZXJMaXN0ID0gdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdDtcbiAgICAgIHRoaXMucmV2aWV3ZXJVc2VyTGlzdCA9IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q7XG4gICAgICB0aGlzLm92ZXJzZWVyVXNlckxpc3QgPSB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0O1xuICAgICAgdGhpcy5vdmVyc2VlclVzZXJOb3RpZnlMaXN0ID1cbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSXQgcmVzZXRzIHRoZSBmb3JtLlxuICAgKi9cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybSA9IHtcbiAgICAgIGFzc2lnbm9yczoge1xuICAgICAgICBlbmFibGU6IGZhbHNlLFxuICAgICAgICBsaXN0OiBbXSxcbiAgICAgIH0sXG4gICAgICByZXNwb25zaWJpbGl0eToge1xuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGFzc2lnbmVlR3JvdXBzOiB7XG4gICAgICAgIHdob0NhbkNvbXBsZXRlOiAnQUxMJyxcbiAgICAgICAgbGlzdDogW10sXG4gICAgICB9LFxuICAgICAgYXNzaWduZWVzOiB7XG4gICAgICAgIHdob0NhbkNvbXBsZXRlOiAnQUxMJyxcbiAgICAgICAgbGlzdDogW10sXG4gICAgICB9LFxuICAgICAgYWxsb3dFZGl0RHVlRGF0ZTogZmFsc2UsXG4gICAgICBmcmVxdWVuY3k6ICcnLFxuICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgb2JqZWN0aXZlOiAnJyxcbiAgICAgIHJjOiBbXSxcbiAgICAgIGNhdGVnb3J5OiBbXSxcbiAgICAgIGNoZWNrcG9pbnRJbnN0cnVjdGlvbjogJycsXG4gICAgICBjdXN0b21UYWdzOiBbXSxcbiAgICAgIGNoZWNrcG9pbnRzOiBbXSxcbiAgICAgIHJldmlld2Vyczoge1xuICAgICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6IHRydWUsXG4gICAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xuICAgICAgICAgIHJldmlld0NvbXBsZXRlRGF5czogMixcbiAgICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOiAyLFxuICAgICAgICB9LFxuICAgICAgICBsaXN0OiBbXSxcbiAgICAgIH0sXG4gICAgICBncm91cFJldmlld2Vyczoge1xuICAgICAgICBzZXF1ZW50aWFsV29ya2Zsb3c6IHRydWUsXG4gICAgICAgIHJldmlld0ZyZXF1ZW5jeToge1xuICAgICAgICAgIHJldmlld0NvbXBsZXRlRGF5czogMixcbiAgICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOiAyLFxuICAgICAgICB9LFxuICAgICAgICBsaXN0OiBbXSxcbiAgICAgIH0sXG4gICAgICBvdmVyc2VlcnM6IHtcbiAgICAgICAgbm90aWZ5TGlzdDogW10sXG4gICAgICAgIGxpc3Q6IFtdLFxuICAgICAgfSxcbiAgICAgIG92ZXJzZWVyc0dyb3Vwczoge1xuICAgICAgICBub3RpZnlMaXN0OiBbXSxcbiAgICAgICAgbGlzdDogW10sXG4gICAgICB9LFxuICAgICAgZm9ybWF0QW5kRXZpZGVuY2U6IHtcbiAgICAgICAgZm9ybWF0UmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXRGaWxlczogW10sXG4gICAgICAgIGZvcm1hdExpbmtzOiBbXSxcbiAgICAgICAgZXZpZGVuY2VSZXF1aXJlZDogZmFsc2UsXG4gICAgICB9LFxuICAgICAgYXNzdXJhbmNlTGlzdDogW10sXG4gICAgICByZXF1aXJlc0F1ZGl0TGlzdDogW10sXG4gICAgICByaXNrQ2xhc3M6IDEsXG4gICAgICByaXNrTWF0cml4OiAnMCwwLDAsMCwwLDAnLFxuICAgICAgcHJvZ3JhbTogW10sXG4gICAgICBwcm9ncmFtX3NlbGVjdGVkX2lkczogW10sXG4gICAgfTtcbiAgICB0aGlzLm1vcmVPcHRpb25zID0ge1xuICAgICAgT0JKRUNUSVZFOiBmYWxzZSxcbiAgICAgIFJDOiBmYWxzZSxcbiAgICAgIENBVEVHT1JZOiBmYWxzZSxcbiAgICAgIEZPUk1BVEVfRVZJREVOQ0U6IGZhbHNlLFxuICAgICAgQ0hFQ0tQT0lOVFM6IGZhbHNlLFxuICAgICAgUklTS19DTEFTU0lGSUNBVElPTjogZmFsc2UsXG4gICAgICBSRVZJRVdFUjogZmFsc2UsXG4gICAgICBPVkVSU0VFUjogZmFsc2UsXG4gICAgICBBU1NVUkFOQ0U6IGZhbHNlLFxuICAgICAgQVBQUzogZmFsc2UsXG4gICAgfTtcbiAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID0gJ0hvdyBvZnRlbiBkb2VzIHRoZSByZXNwb25zaWJpbGl0eSBvY2N1cj8nO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscyA9IHtcbiAgICAgIHBhdHRlcm46ICcnLFxuICAgICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcbiAgICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxuICAgICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXG4gICAgICBzZWxlY3RlZFJlcG9ydDogMCxcbiAgICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxuICAgICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgICB3aW5kb3c6IDAsXG4gICAgICBmYWlsZWQ6IDAsXG4gICAgICB0aW1lOiBERUZBVUxUX1RJTUUsXG4gICAgICBmYWlsZWRUaW1lOiAnJyxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXG4gICAgICBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzOiB7fSxcbiAgICB9O1xuICAgIHRoaXMuc2FtcGxlVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5zYW1wbGVQZXJjZW50YWdlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc2VsZWN0ZWRTYW1wbGUgPSAtMTtcbiAgICB0aGlzLnNlbmRBdWRpdFJlbWluZGVyc1ZhbHVlID0gMjtcbiAgICB0aGlzLmF1ZGl0VGltZSA9IERFRkFVTFRfVElNRTtcbiAgICB0aGlzLm1vZGUgPSAnQ1JFQVRFJztcbiAgICB0aGlzLmlzRW50cnVzdCA9IHRydWU7XG4gICAgdGhpcy5hc3Nlc3NtZW50RGV0YWlscyA9IG51bGw7XG4gICAgdGhpcy5yZXNldEZvcm0uZW1pdCh0cnVlKTtcbiAgfVxuICBhY3Rpb24oZXZlbnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLm9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCcpIHtcbiAgICAgIHRoaXMuY2xvc2VTbWlsZXkoJ2RzJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN3aXRjaCAoZXZlbnQpIHtcbiAgICAgIGNhc2UgJ2FkZE1vcmUnOlxuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndmlldyc6XG4gICAgICAgIHRoaXMudmlld1Jlc3BvbnNpYmlsaXRpZXMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHZpZXdSZXNwb25zaWJpbGl0aWVzKCk6IHZvaWQge1xuICAgIGxldCB1cmw6IHN0cmluZztcbiAgICBjb25zdCBpZCA9IHRoaXMucmVzcG9uc2liaWxpdHlEYXRhPy5kYXRhPy5yZXNwb25zaWJpbGl0eT8uaWQ7XG4gICAgbGV0IHVybFN1YnN0cmluZyA9ICcvY29tcGxpYW5jZS9yZXNwb25zaWJpbGl0aWVzLyc7XG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcbiAgICAgIHVybCA9ICdodHRwOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgdXJsU3Vic3RyaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwgPSAnaHR0cHM6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyB1cmxTdWJzdHJpbmc7XG4gICAgfVxuICAgIHRoaXMuaWZyYW1lU2VydmljZS5yZWRpcmVjdElmSW5JZnJhbWUodXJsLCB0aGlzLm1vZGUgIT09ICdFRElUJyk7XG5cbiAgICB0aGlzLmNsb3NlU21pbGV5KCdkcycpO1xuICAgIHRoaXMucmVzZXQoKTtcbiAgfVxuICBjbG9zZVNtaWxleShldmVudDogYW55KSB7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xuICAgIC8vIHRoaXMuY2xvc2VXb3JrZmxvdy5lbWl0KHRoaXMucmVzcG9uc2liaWxpdHlEYXRhKTtcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogdGhpcy5yZXNwb25zaWJpbGl0eURhdGEsIGNvbmZpcm06IGZhbHNlIH0pO1xuICB9XG5cbiAgZ2V0T25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyhldmVudDogYW55KSB7XG4gICAgY29uc3QgZnJlcXVlbmN5RGF0YSA9IGV2ZW50Py5wYXR0ZXJuPy5zcGxpdCgnficpO1xuICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEYXRhWzBdKSA9PSA2KSB7XG4gICAgICByZXR1cm4gZXZlbnQ/Lm9uQ29tcGxldGlvblJlcG9ydERldGFpbHM7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gZm9yIGVkaXQgcmVzcG9uc2liaWxpdHlcbiAgZnJlcXVlbmN5RGF0YVBvcHVsYXRpb24oZXZlbnQ6IGFueSkge1xuICAgIGxldCBkYXRhOiBhbnkgPSB7XG4gICAgICBwYXR0ZXJuOiBldmVudD8ucGF0dGVybixcbiAgICAgIHdpbmRvdzogZXZlbnQ/LnN0YXJ0QmVmb3JlLFxuICAgICAgZmFpbGVkQWZ0ZXI6IGV2ZW50Py5lbmRBZnRlcixcbiAgICAgIGZhaWxlZF90aW1lX3V0YzogZXZlbnQuZmFpbGVkX3RpbWVfdXRjLFxuICAgICAgbGlmZWN5Y2xlRGV0YWlsczogZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzLFxuICAgICAgc3RhcnRGcm9tOiBOdW1iZXIoZXZlbnQ/LnN0YXJ0X29mX2RheV91dGMpLFxuICAgICAgdGltZUluMjRIcjogZXZlbnQudGltZSxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGV2ZW50LmF1dG9EZWFjdGl2YXRlLFxuICAgICAgc3RhcnREYXRlOiBOdW1iZXIoZXZlbnQ/LnN0YXJ0X29mX2RheV91dGMpLFxuICAgICAvLyByZXBvcnRJZDogZXZlbnQ/Lm9uX2NvbXBsZXRpb25fb2ZbMF0gPz8gMCxcbiAgICAgIHRpbWVJbjEyaHI6IHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lSW4xMihcbiAgICAgICAgZXZlbnQudGltZVxuICAgICAgKSxcbiAgICB9O1xuICAgIHRoaXMuZnJlcXVlbmN5RGF0YShkYXRhKTtcbiAgfVxuXG4gIGZyZXF1ZW5jeVBvcHVsYXRpb24oZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5wYXR0ZXJuID0gZXZlbnQ/LmZyZXF1ZW5jeV9kZXRhaWxzO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5mYWlsZWRUaW1lID0gZXZlbnQ/LmZyZXF1ZW5jeV90aW1lO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy53aW5kb3cgPSBldmVudD8ucmVtaW5kZXJfYmVmb3JlX2RheXM7XG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmZhaWxlZCA9IGV2ZW50Py5mYWlsZWRfYWZ0ZXJfZGF5cztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMubGlmZWN5Y2xlID0gZXZlbnQ/LmxpZmVjeWNsZV9kZXRhaWxzO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5zdGFydERhdGUgPSBldmVudD8uc3RhcnRfb2ZfZGF5X3V0YztcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuc2VsZWN0ZWRSZXBvcnQgPSBldmVudD8ub25fY29tcGxldGlvbl9vZlswXSA/PyAwO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5kYXRlT2ZNb2RpZmllZCA9IGV2ZW50Py5kb21fdXRjO1xuICAgIHRoaXMuZnJlcXVlbmN5RGV0YWlscy5jb250aW51b3VzX2ZhaWxlZF9kYXlzID1cbiAgICAgIGV2ZW50Py5jb250aW51b3VzX2ZhaWxlZF9kYXlzO1xuICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSBldmVudD8ucGxhY2Vob2xkZXI7XG5cbiAgICAvLyBsZXQgb25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyA9IHRoaXMuZ2V0T25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyhldmVudCk7XG4gICAgLy8gaWYgKG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMgIT0gbnVsbCkge1xuICAgIC8vICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLm9uQ29tcGxldGlvblJlcG9ydERldGFpbHMgPVxuICAgIC8vICAgICBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzO1xuICAgIC8vIH1cbiAgfVxuXG4gIHNldFBheWxvYWQoZXZlbnQ6IGFueSk6IFJlc3BvbnNpYmlsaXR5IHwgIG51bGwge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBmcmVxdWVuY3lEYXRhKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5pbnZhbGlkVHlwZSA9PT0gJ3doZW4nKSB7XG4gICAgICB0aGlzLmludmFsaWRUeXBlID0gJyc7XG4gICAgfVxuICAgIHRoaXMuZnJlcXVlbmN5T2JqZWN0ID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnNldEZyZXF1ZW5jeU9iamVjdChldmVudCk7XG5cbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPSBldmVudC5wYXR0ZXJuO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJlbWluZGVyX2JlZm9yZV9kYXlzID1cbiAgICAgIGV2ZW50LmNhc2UgPT09ICdkYWlseScgPyAwIDogZXZlbnQud2luZG93O1xuXG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZmFpbGVkX2FmdGVyX2RheXMgPSBldmVudC5mYWlsZWRBZnRlcjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mYWlsZWRfdGltZV91dGMgPSBldmVudC5mYWlsZWRfdGltZV91dGM7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubGlmZWN5Y2xlRGV0YWlscyA9IGV2ZW50LmxpZmVjeWNsZURldGFpbHM7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVwb3J0SWQgPSBldmVudC5yZXBvcnRJZCA/PyAwO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnN0YXJ0RGF0ZSA9IGV2ZW50LnN0YXJ0RnJvbTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS50aW1lSW4yNEhyID0gZXZlbnQudGltZUluMjRIcjtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5jb250aW51b3VzX2ZhaWxlZF9kYXlzID1cbiAgICAgIGV2ZW50LmNvbnRpbnVvdXNfZmFpbGVkX2RheXM7XG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCBmYWxzZSk7XG4gICAgbGV0IHBheWxvYWQ6IGFueSA9IHtcbiAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzOiBldmVudC5wYXR0ZXJuLFxuICAgICAgZnJlcXVlbmN5X3RpbWU6IGV2ZW50LnRpbWVJbjEyaHIsXG4gICAgICByZW1pbmRlcl9iZWZvcmVfZGF5czogZXZlbnQud2luZG93LFxuICAgICAgZmFpbGVkX2FmdGVyX2RheXM6IGV2ZW50LmZhaWxlZEFmdGVyLFxuICAgICAgbGlmZWN5Y2xlX2RldGFpbHM6IGV2ZW50LmxpZmVjeWNsZURldGFpbHMsXG4gICAgICBzdGFydF9vZl9kYXlfdXRjOiBldmVudC5zdGFydEZyb20sXG4gICAgICBvbl9jb21wbGV0aW9uX29mOiBbZXZlbnQucmVwb3J0SWRdLFxuICAgICAgZG9tX3V0YzogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBldmVudC5jb250aW51b3VzX2ZhaWxlZF9kYXlzLFxuICAgICAgcGxhY2Vob2xkZXI6IGV2ZW50LnBsYWNlaG9sZGVyLFxuICAgIH07XG5cbiAgICBldmVudC5mcmVxdWVuY3lfZGV0YWlscyA9IGV2ZW50LnBhdHRlcm47XG4gICAgLy8gbGV0IG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMgPSB0aGlzLmdldE9uQ29tcGxldGlvblJlcG9ydERldGFpbHMoZXZlbnQpO1xuICAgIC8vIGlmIChvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzICE9IG51bGwpIHtcbiAgICAvLyAgIHBheWxvYWQub25Db21wbGV0aW9uUmVwb3J0RGV0YWlscyA9IG9uQ29tcGxldGlvblJlcG9ydERldGFpbHM7XG4gICAgLy8gfVxuICAgIHRoaXMuZnJlcXVlbmN5T2JqZWN0ID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnNldEZyZXF1ZW5jeU9iamVjdChldmVudCk7XG5cbiAgICB0aGlzLmZyZXF1ZW5jeVBvcHVsYXRpb24ocGF5bG9hZCk7XG4gIH1cblxuICBjaGVja0JsYW5rKGRhdGE6IHN0cmluZykge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBsZXQgdGV4dCA9IGRhdGE7XG4gICAgICByZXR1cm4gdGV4dC5yZXBsYWNlKC9cXCZuYnNwOy9nLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSXQgdGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYSBzdHJpbmcuXG4gICAqIEBwYXJhbSB7YW55fSByZXMgLSBhbnkgPSB7XG4gICAqL1xuICBnZXRGcmVxdWVuY3lQbGFjZWhvbGRlcihmcmVxdWVuY3k6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZyZXF1ZW5jeVRpbWUgPSAgIHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lSW4xMihmcmVxdWVuY3k/LnRpbWUpO1xuICAgICAgICBjb25zdCBmcmVxdWVuY3lEZXRhaWxzID0gZnJlcXVlbmN5LnBhdHRlcm4uc3BsaXQoJ34nKTtcbiAgICAgICAgc3dpdGNoIChmcmVxdWVuY3k/LnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdkYWlseSc6XG4gICAgICAgICAgICB0aGlzLmdldERhaWx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICd3ZWVrbHknOlxuICAgICAgICAgICAgdGhpcy5nZXRXZWVrbHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ21vbnRobHknOlxuICAgICAgICAgICAgdGhpcy5nZXRNb250aGx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdxdWFydGVybHknOlxuICAgICAgICAgICAgdGhpcy5nZXRRdWFydGVybHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzLCBmcmVxdWVuY3lUaW1lKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2JpYW5udWFsbHknOlxuICAgICAgICAgICAgdGhpcy5nZXRCaWFubnVhbFBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHMsIGZyZXF1ZW5jeVRpbWUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAneWVhcmx5JzpcbiAgICAgICAgICAgIHRoaXMuZ2V0WWVhcmx5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlscywgZnJlcXVlbmN5VGltZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdvbmVfdGltZSc6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC8vIGNvbnN0IGRhdGVPYmplY3QgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgLy8gICBtb21lbnQoXG4gICAgICAgICAgICAgIC8vICAgICBmcmVxdWVuY3lbMV0gK1xuICAgICAgICAgICAgICAvLyAgICAgICAnLScgK1xuICAgICAgICAgICAgICAvLyAgICAgICBmcmVxdWVuY3lbMl0gK1xuICAgICAgICAgICAgICAvLyAgICAgICAnLScgK1xuICAgICAgICAgICAgICAvLyAgICAgICBmcmVxdWVuY3lbM10gK1xuICAgICAgICAgICAgICAvLyAgICAgICAnIDAwOjAwOjAwJyxcbiAgICAgICAgICAgICAgLy8gICAgICdZWVlZLU1NLUREIEhIOm1tOnNzJ1xuICAgICAgICAgICAgICAvLyAgICkudW5peCgpICogMTAwMFxuICAgICAgICAgICAgICAvLyApO1xuICAgICAgICAgICAgICAvLyAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgICAgICAgICAvLyB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICAgLy8gICAnT25lIFRpbWUgJyArXG4gICAgICAgICAgICAgIC8vICAgZGF0ZU9iamVjdC5nZXREYXRlKCkgK1xuICAgICAgICAgICAgICAvLyAgICcgJyArXG4gICAgICAgICAgICAgIC8vICAgdGhpcy5zaG9ydE1vbnRoW2RhdGVPYmplY3QuZ2V0TW9udGgoKV0gK1xuICAgICAgICAgICAgICAvLyAgICcgJyArXG4gICAgICAgICAgICAgIC8vICAgZGF0ZU9iamVjdC5nZXRGdWxsWWVhcigpICtcbiAgICAgICAgICAgICAgLy8gICAnIGJ5ICcgK1xuICAgICAgICAgICAgICAvLyAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdyYW5kb20nOlxuICAgICAgICAgICAgdGhpcy5nZXRSYW5kb21QbGFjZWhvbGRlcihmcmVxdWVuY3ksIGZyZXF1ZW5jeVRpbWUpO1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICAgICAgJ1lvdSBoYXZlIHNlbGVjdGVkIGFuIG9uZ29pbmcgZnJlcXVlbmN5Lic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdvbl9jb21wbGV0aW9uX29mJzpcbiAgICAgICAgICAgIC8vIHRoaXMuZ2V0T25Db21wbGV0aW9uT2YoXG4gICAgICAgICAgICAvLyAgIGZyZXF1ZW5jeSxcbiAgICAgICAgICAgIC8vICAgcmVzPy5vbl9jb21wbGV0aW9uX29mWzBdLFxuICAgICAgICAgICAgLy8gICByZXMub25Db21wbGV0aW9uUmVwb3J0RGV0YWlsc1xuICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgfVxuICAgICAgXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogSXQgZ2V0cyB0aGUgZnJlcXVlbmN5IGRldGFpbHMgYW5kIHJlcG9ydCBpZCwgdGhlbiBpdCBzZXRzIHRoZSBmcmVxdWVuY3kgcGxhY2Vob2xkZXIgdG8gdGhlIGZyZXF1ZW5jeVxuICAgKiBkZXRhaWxzIGFuZCB0aGVuIGl0IGdldHMgdGhlIG9uIGNvbXBsZXRpb24gb2YgcmVzcG9uc2liaWxpdHkgYW5kIHNldHMgdGhlIGZyZXF1ZW5jeSBwbGFjZWhvbGRlciB0b1xuICAgKiB0aGUgZnJlcXVlbmN5IGRldGFpbHMgYW5kIHRoZSByZXBvcnQgbmFtZS5cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbMF0gPSZndDsgXCIxXCJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHJlcG9ydElkIC0gbnVtYmVyXG4gICAqL1xuICBnZXRPbkNvbXBsZXRpb25PZihcbiAgICBmcmVxdWVuY3lEZXRhaWxzOiBhbnksXG4gICAgcmVwb3J0SWQ6IG51bWJlcixcbiAgICBvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzOiBhbnlcbiAgKSB7XG4gICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICBmcmVxdWVuY3lEZXRhaWxzWzNdICtcbiAgICAgICcgJyArXG4gICAgICAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAxID8gJ2RheXMnIDogJ2RheScpICtcbiAgICAgICcgYWZ0ZXIgY29tcGxldGlvbiBvZiAnO1xuICAgIGlmIChvbkNvbXBsZXRpb25SZXBvcnREZXRhaWxzKSB7XG4gICAgICBpZiAocmVwb3J0SWQgPT09IG9uQ29tcGxldGlvblJlcG9ydERldGFpbHMuUmVwb3J0SWQpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgZnJlcXVlbmN5RGV0YWlsc1szXSArXG4gICAgICAgICAgJyAnICtcbiAgICAgICAgICAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAxID8gJ2RheXMnIDogJ2RheScpICtcbiAgICAgICAgICAnIGFmdGVyIGNvbXBsZXRpb24gb2YgJyArXG4gICAgICAgICAgKG9uQ29tcGxldGlvblJlcG9ydERldGFpbHNcbiAgICAgICAgICAgID8gb25Db21wbGV0aW9uUmVwb3J0RGV0YWlscy5yZXBvcnRfbmFtZVxuICAgICAgICAgICAgOiAnJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgdGhpcy51aUtpdFNlcnZpY2UuaXNMb2FkZXIgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcIklmIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzNdIGlzIDEsIHRoZW4gc2V0IHRoZSBmcmVxdWVuY3lQbGFjZWhvbGRlciB0byAnRGFpbHkgYnkgJyArIGZyZXF1ZW5jeVRpbWUsXG4gICAqIG90aGVyd2lzZSBpZiBmcmVxdWVuY3lEZXRhaWxzWzNdIGlzIGdyZWF0ZXIgdGhhbiAxLCB0aGVuIHNldCB0aGUgZnJlcXVlbmN5UGxhY2Vob2xkZXIgdG8gJ0V2ZXJ5ICcgK1xuICAgKiBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSArICcgZGF5cyBieSAnICsgZnJlcXVlbmN5VGltZS5cIlxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFswLCAwLCAwLCAxXVxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTI6MDAgQU1cIlxuICAgKi9cbiAgZ2V0RGFpbHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xuICAgICBmcmVxdWVuY3lEZXRhaWxzID0gZnJlcXVlbmN5RGV0YWlscy5tYXAoTnVtYmVyKVxuICAgICAgaWYgKGZyZXF1ZW5jeURldGFpbHM/LmRheT09PSAxKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPSAnRGFpbHkgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJ0V2ZXJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeURldGFpbHNbM10gKyAoZnJlcXVlbmN5RGV0YWlsc1szXSA+IDEgPyAnIGRheXMnIDogJyBkYXknKSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfVxuICAgIFxuICB9XG5cbiAgLyoqXG4gICAqIEl0IHRha2VzIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBudW1iZXJzIGFuZCByZXR1cm5zIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCB3b3Jkcy5cbiAgICpcbiAgICogVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCBudW1iZXJzLCBsaWtlIHRoaXM6XG4gICAqXG4gICAqIGdldFdlZWtseVBsYWNlaG9sZGVyKFtcIjFcIixcIjIsMyw0LDUsNiw3XCIsXCIxXCIsXCIxXCJdLCBcIjEwOjAwIEFNXCIpXG4gICAqXG4gICAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgc3RyaW5nIG9mIGNvbW1hIHNlcGFyYXRlZCB3b3JkcywgbGlrZSB0aGlzOlxuICAgKlxuICAgKiBcIkV2ZXJ5IE1vbmRheSxUdWVzZGF5LFdlZG5lc2RheSxUaHVyc2RheSxGcmlkYXksU2F0dXJkYXkgYnkgMTA6MDAgQU1cIjwvY29kZT5cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCIxXCIsIFwiMSwyLDMsNCw1XCIsIFwiXCIsIFwiMVwiLCBcIlwiXVxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxuICAgKi9cbiAgZ2V0V2Vla2x5UGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcbiAgICB7XG4gICAgICBjb25zdCBzZWxlY3RlZERheSA9IGZyZXF1ZW5jeURldGFpbHNbMV0uc3BsaXQoJywnKS5tYXAoKGVsZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZGF5TmFtZVtwYXJzZUludChlbGUpIC0gMV07XG4gICAgICB9KTtcblxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID09PSAxKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICdFdmVyeSAnICsgc2VsZWN0ZWREYXkuam9pbigpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzNdKSA9PT0gMikge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnRXZlcnkgYWx0ZXJuYXRlICcgKyBzZWxlY3RlZERheS5qb2luKCkgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xuICAgICAgfVxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbM10pID09PSAzKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICdFdmVyeSAzcmQgJyArIHNlbGVjdGVkRGF5LmpvaW4oKSArICcgYnkgJyArIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9XG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAzKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICdFdmVyeSAnICtcbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ3RoICcgK1xuICAgICAgICAgIHNlbGVjdGVkRGF5LmpvaW4oKSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB0YWtlcyBhIHN0cmluZyBvZiBjb21tYSBzZXBhcmF0ZWQgbnVtYmVycywgY29udmVydHMgdGhlbSB0byBtb250aCBuYW1lcywgYW5kIHRoZW4gYWRkcyB0aGVtIHRvIGFcbiAgICogc2VudGVuY2UuXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lEZXRhaWxzIC0gW1wiMVwiLCBcIjFcIiwgXCIxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMlwiXVxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5VGltZSAtIFwiMTA6MDAgQU1cIlxuICAgKi9cbiAgZ2V0TW9udGhseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XG4gICAge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRNb250aCA9IGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKS5tYXAoKGVsZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZWxlKSAtIDFdO1xuICAgICAgfSk7XG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDEpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJzFzdCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJzJuZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJzNyZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMSB8fFxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzFcbiAgICAgICkge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICduZCBvZiBldmVyeSAnICtcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIzKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAncmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID4gMykge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ3RoIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBpcyAxLCAyLCAzLCAyMSwgMjIsIDIzLCBvciBncmVhdGVyIHRoYW4gMywgdGhlbiBzZXQgdGhlXG4gICAqIGZyZXF1ZW5jeVBsYWNlaG9sZGVyIHRvIGEgc3RyaW5nIHRoYXQgaW5jbHVkZXMgdGhlIGZyZXF1ZW5jeURldGFpbHNbMV0gYW5kIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzJdXG4gICAqIGFuZCB0aGUgZnJlcXVlbmN5VGltZS5cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCIzXCIsIFwiMVwiLCBcIjEsMiwzXCJdXG4gICAqIEBwYXJhbSB7YW55fSBmcmVxdWVuY3lUaW1lIC0gXCIxMDowMCBBTVwiXG4gICAqL1xuICBnZXRRdWFydGVybHlQbGFjZWhvbGRlcihmcmVxdWVuY3lEZXRhaWxzOiBhbnksIGZyZXF1ZW5jeVRpbWU6IGFueSkge1xuICAgIHtcbiAgICAgIGNvbnN0IHF1YXJ0ZXJseSA9IFtcbiAgICAgICAgJ0phbnVhcnksIEFwcmlsLCBKdWx5LCBPY3RvYmVyJyxcbiAgICAgICAgJ0ZlYnJ1YXJ5LCBNYXksIEF1Z3VzdCwgTm92ZW1iZXInLFxuICAgICAgICAnIE1hcmNoLCBKdW5lLCBTZXB0ZW1iZXIsIERlY2VtYmVyJyxcbiAgICAgIF07XG4gICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDEpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgJzFzdCBvZiBldmVyeSAnICtcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICcybmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMSB8fFxuICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMzFcbiAgICAgICkge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIyKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAnbmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgcXVhcnRlcmx5W3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0uc3BsaXQoJywnKVswXSkgLSAxXSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICdyZCBvZiBldmVyeSAnICtcbiAgICAgICAgICBxdWFydGVybHlbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpWzBdKSAtIDFdICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID4gMykge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ3RoIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSXQgdGFrZXMgYSBzdHJpbmcgb2YgY29tbWEgc2VwYXJhdGVkIG51bWJlcnMgYW5kIHJldHVybnMgYSBzdHJpbmcgb2YgY29tbWEgc2VwYXJhdGVkIG1vbnRoIG5hbWVzLlxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFtcIjFcIiwgXCIxXCIsIFwiMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJcIl1cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEwOjAwIEFNXCJcbiAgICovXG4gIGdldEJpYW5udWFsUGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcbiAgICB7XG4gICAgICBjb25zdCBzZWxlY3RlZE1vbnRoID0gZnJlcXVlbmN5RGV0YWlsc1syXS5zcGxpdCgnLCcpLm1hcCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChlbGUpIC0gMV07XG4gICAgICB9KTtcbiAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMSkge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnMXN0IG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMikge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnMm5kIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMykge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAnM3JkIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIxIHx8XG4gICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzMVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAnc3Qgb2YgZXZlcnkgJyArXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMikge1xuICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgJ25kIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXG4gICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgfSBlbHNlIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICdyZCBvZiBldmVyeSAnICtcbiAgICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xuICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XG4gICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAndGggb2YgZXZlcnkgJyArXG4gICAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcbiAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBmcmVxdWVuY3lEZXRhaWxzWzFdIGlzIGxlc3MgdGhhbiAyLCB0aGVuIHRoZSBmcmVxdWVuY3lQbGFjZWhvbGRlciBpcyBzZXQgdG8gdGhlIDFzdCwgMm5kLFxuICAgKiAzcmQsIG9yIG50aCBvZiBldmVyeSBtb250aCBieSBmcmVxdWVuY3lUaW1lLlxuICAgKlxuICAgKiBJZiB0aGUgZnJlcXVlbmN5RGV0YWlsc1sxXSBpcyBncmVhdGVyIHRoYW4gMSwgdGhlbiB0aGUgZnJlcXVlbmN5UGxhY2Vob2xkZXIgaXMgc2V0IHRvIHRoZSAxc3QsIDJuZCxcbiAgICogM3JkLCBvciBudGggb2YgZXZlcnkgbW9udGgsIEludGVydmFsOiBldmVyeSB5ZWFyU2VxdWVuY2UgeWVhcnMgYnkgZnJlcXVlbmN5VGltZS5cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeURldGFpbHMgLSBbXCJZZWFybHlcIiwgXCIxXCIsIFwiMVwiLCBcIjFcIl1cbiAgICogQHBhcmFtIHthbnl9IGZyZXF1ZW5jeVRpbWUgLSBcIjEwOjAwIEFNXCJcbiAgICovXG4gIGdldFllYXJseVBsYWNlaG9sZGVyKGZyZXF1ZW5jeURldGFpbHM6IGFueSwgZnJlcXVlbmN5VGltZTogYW55KSB7XG4gICAge1xuICAgICAgY29uc3QgeWVhclNlcXVlbmNlID1cbiAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgPiAwID8gcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1szXSkgOiAxO1xuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pIDwgMikge1xuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDEpIHtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICcxc3Qgb2YgZXZlcnkgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICcybmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMpIHtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICczcmQgb2YgZXZlcnkgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XG4gICAgICAgICAgdGhpcy5mcmVxdWVuY3lQbGFjZWhvbGRlciA9XG4gICAgICAgICAgICBwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSArXG4gICAgICAgICAgICAndGggb2YgZXZlcnkgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMxIHx8XG4gICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIxXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMikge1xuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICAgJ25kIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMykge1xuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgK1xuICAgICAgICAgICAgJ3JkIG9mIGV2ZXJ5ICcgK1xuICAgICAgICAgICAgdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMl0pIC0gMV0gK1xuICAgICAgICAgICAgJyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID4gMSkge1xuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDEpIHtcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgJzFzdCAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDIpIHtcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgJzJuZCAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPT09IDMpIHtcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5UGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgJzNyZCAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcsIEludGVydmFsOiBldmVyeSAnICtcbiAgICAgICAgICAgIHllYXJTZXF1ZW5jZSArXG4gICAgICAgICAgICAnIHllYXJzIGJ5ICcgK1xuICAgICAgICAgICAgZnJlcXVlbmN5VGltZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1sxXSkgPiAzKSB7XG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAgICd0aCBvZiAgJyArXG4gICAgICAgICAgICB0aGlzLnNob3J0TW9udGhbcGFyc2VJbnQoZnJlcXVlbmN5RGV0YWlsc1syXSkgLSAxXSArXG4gICAgICAgICAgICAnLCBJbnRlcnZhbDogZXZlcnkgJyArXG4gICAgICAgICAgICB5ZWFyU2VxdWVuY2UgK1xuICAgICAgICAgICAgJyB5ZWFycyBieSAnICtcbiAgICAgICAgICAgIGZyZXF1ZW5jeVRpbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAzMSB8fFxuICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pID09PSAyMVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAgICdzdCBvZiBldmVyeSAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjIpIHtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAgICduZCBvZiBldmVyeSAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzFdKSA9PT0gMjMpIHtcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgIHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pICtcbiAgICAgICAgICAgICdyZCBvZiBldmVyeSAnICtcbiAgICAgICAgICAgIHRoaXMuc2hvcnRNb250aFtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdKSAtIDFdICtcbiAgICAgICAgICAgICcgYnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lUaW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEl0IHRha2VzIGEgZnJlcXVlbmN5RGV0YWlscyBhcnJheSBhbmQgYSBmcmVxdWVuY3lUaW1lIGFycmF5IGFuZCByZXR1cm5zIGEgc3RyaW5nLlxuICAgKiBAcGFyYW0ge2FueX0gZnJlcXVlbmN5RGV0YWlscyAtIFs0LDEsMSwxXVxuICAgKi9cbiAgZ2V0UmFuZG9tUGxhY2Vob2xkZXIoZnJlcXVlbmN5RGV0YWlsczogYW55LCBmcmVxdWVuY3lUaW1lOiBhbnkpIHtcbiAgICBjb25zdCBxdWFydGVybHkgPSBbXG4gICAgICAnSmFudWFyeSwgQXByaWwsIEp1bHksIE9jdG9iZXInLFxuICAgICAgJ0ZlYnJ1YXJ5LCBNYXksIEF1Z3VzdCwgTm92ZW1iZXInLFxuICAgICAgJyBNYXJjaCwgSnVuZSwgU2VwdGVtYmVyLCBEZWNlbWJlcicsXG4gICAgXTtcbiAgICB7XG4gICAgICBzd2l0Y2ggKHBhcnNlSW50KGZyZXF1ZW5jeURldGFpbHNbMV0pKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICdFdmVyeSB3ZWVrIGZvciAnICsgZnJlcXVlbmN5RGV0YWlsc1szXSArICcgcmFuZG9tIGluc3RhbmNlcyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICcgRXZlcnkgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJykubWFwKChlbGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zaG9ydE1vbnRoW3BhcnNlSW50KGVsZSkgLSAxXTtcbiAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBhbGlnblxuICAgICAgICAgICAgfSkgK1xuICAgICAgICAgICAgJyBmb3IgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzNdICtcbiAgICAgICAgICAgICcgcmFuZG9tIGluc3RhbmNlcyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICdFdmVyeSAnICtcbiAgICAgICAgICAgIHF1YXJ0ZXJseVtwYXJzZUludChmcmVxdWVuY3lEZXRhaWxzWzJdLnNwbGl0KCcsJylbMF0pIC0gMV0gK1xuICAgICAgICAgICAgJyBmb3IgJyArXG4gICAgICAgICAgICBmcmVxdWVuY3lEZXRhaWxzWzNdICtcbiAgICAgICAgICAgICcgcmFuZG9tIGluc3RhbmNlcyc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICB0aGlzLmZyZXF1ZW5jeVBsYWNlaG9sZGVyID1cbiAgICAgICAgICAgICdFdmVyeSB5ZWFyIGZvciAnICsgZnJlcXVlbmN5RGV0YWlsc1szXSArICcgcmFuZG9tIGluc3RhbmNlcyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFwiV2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIGVkaXQgYnV0dG9uLCB0aGUgZWRpdCBidXR0b24gaXMgaGlkZGVuIGFuZCB0aGUgaW5wdXQgZmllbGQgaXMgc2hvd24uXG4gICAqIFdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBpbnB1dCBmaWVsZCwgdGhlIGlucHV0IGZpZWxkIGlzIGhpZGRlbiBhbmQgdGhlIGVkaXQgYnV0dG9uIGlzIHNob3duLlwiXG4gICAqIEBwYXJhbSB7YW55fSBldmVudCAtIGFueSAtIHRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZnVuY3Rpb25cbiAgICovXG4gIG9uRWRpdFdoYXQoZXZlbnQ6IGFueSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gdGhpcyB3aWxsIG1ha2UgdGhlIGV4ZWN1dGlvbiBhZnRlciB0aGUgYWJvdmUgYm9vbGVhbiBoYXMgY2hhbmdlZFxuICAgICAgdGhpcy5pc0VkaXRXaGF0ID0gZmFsc2U7XG4gICAgICB0aGlzLndoYXRJbnB1dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggYSBwYXJhbWV0ZXIgYW5kIHJldHVybnMgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAgICogQHBhcmFtIHthbnl9IFtyZXNdIC0gaXMgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSVxuICAgKi9cbiAgZ2V0RWRpdE1vcmVPcHRpb25zKHJlcz86IGFueSkge1xuICAgIGxldCBjaGVja2VkTW9yZU9wdGlvbnMgPSBbXTtcbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlICE9PSAnJykge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ09CSkVDVElWRScpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5PQkpFQ1RJVkUgPSB0cnVlO1xuICAgIH1cbiAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUklTS19DTEFTU0lGSUNBVElPTicpO1xuICAgIHRoaXMubW9yZU9wdGlvbnMuUklTS19DTEFTU0lGSUNBVElPTiA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucHJvZ3JhbT8ubGVuZ3RoID4gMCkge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ1BST0dSQU0nKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuUFJPR1JBTSA9IHRydWU7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWQgfHxcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdFJlcXVpcmVkXG4gICAgKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnRk9STUFURV9FVklERU5DRScpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5GT1JNQVRFX0VWSURFTkNFID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjPy5sZW5ndGggPiAwKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnUkMnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuUkMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLmlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkICYmXG4gICAgICByZXM/LnJlc3BvbnNpYmlsaXR5Q2VudGVyQXJyICYmXG4gICAgICByZXM/LnJlc3BvbnNpYmlsaXR5Q2VudGVyQXJyPy5sZW5ndGhcbiAgICApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdSQycpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5SQyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGggPiAwKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnQ0hFQ0tQT0lOVFMnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zZWxlY3RlZEdSQ09iamVjdHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdHUkNfT0JKRUNUUycpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5HUkNfT0JKRUNUUyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXI/Lmxpc3Q/Lmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdSRVZJRVdFUicpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5SRVZJRVdFUiA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ09WRVJTRUVSJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0/LmFzc3VyYW5jZUxpc3Q/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdBU1NVUkFOQ0UnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuQVNTVVJBTkNFID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVxdWlyZXNBdWRpdExpc3Q/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNoZWNrZWRNb3JlT3B0aW9ucy5wdXNoKCdSRVFVSVJFU19BVURJVCcpO1xuICAgICAgdGhpcy5tb3JlT3B0aW9ucy5SRVFVSVJFU19BVURJVCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5xdWVzdGlvbm5haXJlX3R5cGUgPT09ICdhc3Nlc3NtZW50Jykge1xuICAgICAgY2hlY2tlZE1vcmVPcHRpb25zLnB1c2goJ0FTU0VTU01FTlQnKTtcbiAgICAgIHRoaXMubW9yZU9wdGlvbnMuQVNTRVNTTUVOVCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5xdWVzdGlvbm5haXJlX3R5cGUgPT09ICdhc3Nlc3NtZW50X2NoZWNrcG9pbnQnKSB7XG4gICAgICBjaGVja2VkTW9yZU9wdGlvbnMucHVzaCgnQ0hFQ0tQT0lOVFNfTkVXJyk7XG4gICAgICB0aGlzLm1vcmVPcHRpb25zLkNIRUNLUE9JTlRTX05FVyA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGNoZWNrZWRNb3JlT3B0aW9ucyk7XG4gIH1cblxuICAvLyBGb3JtYXQgJiBFdmlkZW5jZVxuICB0ZXN0RnVuY3Rpb24oKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkubmFtZS50cmltKCkgIT09ICcnICYmXG4gICAgICB0aGlzLmlzRWRpdFdoYXQgPT09IGZhbHNlXG4gICAgKSB7XG4gICAgICB0aGlzLmlzRWRpdFdoYXQgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZGVzY3JpcHRpb24gPT0gJzxicj4nKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5kZXNjcmlwdGlvbiA9ICcnO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlID09ICc8YnI+Jykge1xuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ub2JqZWN0aXZlID0gJyc7XG4gICAgfVxuICB9XG5cbiAgcmV2aWV3ZXJUeXBlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5yZXZpZXdlcnMuc2VxdWVudGlhbFdvcmtmbG93ID1cbiAgICAgIGV2ZW50ID09PSAnU0VRVUVOVElBTCcgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICBzZWxlY3RlZFNhbXBsZURhdGEoZXZlbnQ6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRTYW1wbGUgPSBldmVudDtcbiAgICB0aGlzLnRlbXBDaGVja1ZhbHVlID0gZXZlbnQ7XG4gIH1cblxuICAvKipcbiAgICogSXQgcG9wdWxhdGVzIGEgbGlzdCBvZiBhc3N1cmFuY2UgY2F0ZWdvcmllcyBiYXNlZCBvbiB0aGUgdGVzdCBwbGFuIGNhdGVnb3J5IHNlbGVjdGVkLlxuICAgKiBAcGFyYW0ge2FueX0gdGVzdFBsYW5DYXRlZ29yeSAtIGFueVxuICAgKi9cbiAgcG9wdWxhdGVBc3N1cmFuY2VMaXN0KHRlc3RQbGFuQ2F0ZWdvcnk6IGFueSkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc3VyYW5jZSA9IHRoaXMuc2V0TGlzdChcbiAgICAgIHRoaXMuYXNzdXJhbmNlQ2F0ZWdvcmllc0xpc3QsXG4gICAgICBbdGVzdFBsYW5DYXRlZ29yeT8uY2F0ZWdvcnlfaWRdLFxuICAgICAgJ2NhdGVnb3J5X2lkJ1xuICAgICk7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uYXVkaXRfY2F0ZWdvcnlfZGV0YWlscyA9IHRlc3RQbGFuQ2F0ZWdvcnk7XG4gICAgaWYgKHRlc3RQbGFuQ2F0ZWdvcnkuc2FtcGxlKSB7XG4gICAgICB0aGlzLmlzU2FtcGxlID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2FtcGxlVmFsdWUgPSB0ZXN0UGxhbkNhdGVnb3J5LnNhbXBsZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTYW1wbGUgPSAwO1xuICAgIH1cblxuICAgIGlmICh0ZXN0UGxhbkNhdGVnb3J5LnBlcmNlbnRhZ2UpIHtcbiAgICAgIHRoaXMuaXNTYW1wbGUgPSB0cnVlO1xuICAgICAgdGhpcy5zYW1wbGVQZXJjZW50YWdlID0gdGVzdFBsYW5DYXRlZ29yeS5wZXJjZW50YWdlO1xuICAgICAgdGhpcy5zZWxlY3RlZFNhbXBsZSA9IDE7XG4gICAgfVxuICAgIHRoaXMudGVtcENoZWNrVmFsdWUgPSB0aGlzLnNlbGVjdGVkU2FtcGxlO1xuICAgIHRoaXMuc2VuZEF1ZGl0UmVtaW5kZXJzVmFsdWUgPSB0ZXN0UGxhbkNhdGVnb3J5LmZyZXF1ZW5jeV9wYXR0ZXJuXG4gICAgICA/IHBhcnNlSW50KHRlc3RQbGFuQ2F0ZWdvcnkuZnJlcXVlbmN5X3BhdHRlcm4uc3BsaXQoJ34nKVsyXSlcbiAgICAgIDogMjtcbiAgICB0aGlzLmF1ZGl0VGltZSA9IG1vbWVudChcbiAgICAgIHRlc3RQbGFuQ2F0ZWdvcnk/LmZyZXF1ZW5jeV90aW1lLFxuICAgICAgJ0hIOm1tOnNzJ1xuICAgICkuZm9ybWF0KCdISDptbSBhJyk7XG4gIH1cblxuIFxuXG4gIC8vb24gc2FtcGxlIHRvZ2dsZSBvbi9vZmZcbiAgY2hlY2tJbnB1dFZhbHVlKGV2ZW50OiBhbnkpIHtcbiAgICBsZXQga2V5ID0gZXZlbnQuY2hhckNvZGU7IC8vICAgICAgICAga2V5ID0gZXZlbnQua2V5Q29kZTsgIChCb3RoIGNhbiBiZSB1c2VkKVxuICAgIHJldHVybiAoa2V5ID4gNDcgJiYga2V5IDwgNTgpIHx8IGtleSA9PSA0NTtcbiAgfVxuXG4gIHN3aXRjaEVuYWJsZShldmVudDogYm9vbGVhbikge1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFNhbXBsZSA9IHRoaXMudGVtcENoZWNrVmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTYW1wbGUgPSAtMTtcbiAgICB9XG4gIH1cblxuICAvLyBUT0RPOiAgc2VsZWN0IEFzc2Vzc21lbnQgbGlzdCBhbmQgc2V0IGlkIHRvIHBheWxvYWRcbiAgb25Bc3Nlc3NtZW50U2VsZWN0KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmlzQXNzZXNzbWVudCA9IGZhbHNlO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQgPSBldmVudDtcbiAgfVxuICAvLyBUT0RPOiBQb3B1bGF0ZSBhc3Nlc3NtZW50IGRhdGEgZnJvbSBhbHJlYWR5IHNlbGVjdGVkIGRhdGFcbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBhc3Nlc3NtZW50RGV0YWlscyA6IHNlbGVjdGVkIGFzc2Vzc21lbnQgZGV0YWlscyBsaWtlIGl0J3Mgb2JqZWN0IGlkIGFuZCBjYXRlZ29yeV9pZFxuICAgKi9cbiAgZ2V0QXNzZXNzbWVudERldGFpbHMoYXNzZXNzbWVudERldGFpbHM6IGFueSwgdHlwZT86IHN0cmluZykge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlTZXJ2aWNlXG4gICAgICAuZ2V0QXNzZXNzbWVudERldGFpbHNCeUlEKGFzc2Vzc21lbnREZXRhaWxzLmFzc2Vzc21lbnRfaWQpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNldEFzc2Vzc21lbnREYXRhKHJlcywgYXNzZXNzbWVudERldGFpbHMsIHR5cGUpO1xuICAgICAgfSk7XG4gIH1cblxuICBzZXRBc3Nlc3NtZW50RGF0YShyZXM6IGFueSwgYXNzZXNzbWVudERldGFpbHM6IGFueSwgdHlwZT86IHN0cmluZykge1xuICAgIGlmIChyZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0eXBlID09PSAnYXNzZXNzbWVudCcpIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnlEZXRhaWxzID0gcmVzWzBdLmNhdGVnb3J5LmZpbmQoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGUuX2lkID09IGFzc2Vzc21lbnREZXRhaWxzLmNhdGVnb3J5X2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnMuQVNTRVNTTUVOVCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGFzc2Vzc21lbnREYXRhID0ge1xuICAgICAgICAgIGNhdGVnb3J5X2lkOiBhc3Nlc3NtZW50RGV0YWlscy5jYXRlZ29yeV9pZCxcbiAgICAgICAgICBhc3Nlc3NtZW50X2lkOiBhc3Nlc3NtZW50RGV0YWlscy5hc3Nlc3NtZW50X2lkLFxuICAgICAgICAgIGFzc2Vzc21lbnREZXRhaWxzOiB7XG4gICAgICAgICAgICBpZDogYXNzZXNzbWVudERldGFpbHMuYXNzZXNzbWVudF9pZCxcbiAgICAgICAgICAgIGFzc2Vzc21lbnRfbmFtZTogcmVzWzBdLmFzc2Vzc21lbnRfbmFtZSxcbiAgICAgICAgICAgIHF1ZXN0aW9uczogcmVzWzBdLnF1ZXN0aW9uc0NvdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2F0ZWdvcnlfZGV0YWlsczogY2F0ZWdvcnlEZXRhaWxzLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50ID0gSlNPTi5wYXJzZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShhc3Nlc3NtZW50RGF0YSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubW9yZU9wdGlvbnMuQ0hFQ0tQT0lOVFNfTkVXID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wb3N0QXNzZXNzbWVudCh7IGFzc2Vzc21lbnREZXRhaWxzOiByZXNbMF0ucXVlc3Rpb25zIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uUmVtb3ZlQ2hlY2twb2ludHModHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5vblJlbW92aW5nQ2hlY2twb2ludC5lbWl0KHR5cGUpO1xuICB9XG5cbiAgcmVtb3ZlQ2hlY2twb2ludCgpIHtcbiAgICB0aGlzLm1vcmVPcHRpb25zLkNIRUNLUE9JTlRTID0gZmFsc2U7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgQXNzZXNzbWVudCBkZXRhaWxzXG4gICAqL1xuICBwb3N0QXNzZXNzbWVudChldmVudDogYW55KSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ubmV3X2NoZWNrcG9pbnRzID0gZXZlbnQuYXNzZXNzbWVudERldGFpbHM7XG4gICAgdGhpcy5jaGVja3BvaW50Q291bnQgPSBldmVudC5hc3Nlc3NtZW50RGV0YWlscy5lbGVtZW50cz8ubGVuZ3RoO1xuICAgIHRoaXMuY2hlY2twb2ludENvdW50VXBkYXRlZC5lbWl0KHRoaXMuY2hlY2twb2ludENvdW50KTtcbiAgICB0aGlzLnNldElzVXBsb2FkZWQoZmFsc2UpO1xuICB9XG5cbiAgc2V0SXNVcGxvYWRlZChldmVudDogYW55KSB7XG4gICAgaWYgKCFldmVudCkgdGhpcy5hY3RpdmVEZXNlbGVjdG9yKCk7XG4gICAgdGhpcy5hdXRoU2VydmljZS5wcmV2aWV3UGFuZWwubmV4dChldmVudCk7XG4gIH1cblxuICBjaGVja0RlZmF1bHRQcm9ncmFtT25SZW1vdmUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuYWxsUHJvZ2FtU2VsZWN0ZWQgPSB0aGlzLmFsbFByb2dhbVNlbGVjdGVkLmZpbHRlcihcbiAgICAgIChwcm9ncmFtOiBhbnkpID0+IHByb2dyYW0/LmlkICE9PSBldmVudD8uaWRcbiAgICApO1xuICAgIHRoaXMucmVtb3ZlUHJvZ3JhbShldmVudCk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB0YWtlcyBhbiBhcnJheSBvZiBudW1iZXJzIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHVuaXF1ZSBudW1iZXJzLlxuICAgKiBAcGFyYW0ge2FueX0gYXJyYXkgLSBUaGUgYXJyYXkgeW91IHdhbnQgdG8gZ2V0IHRoZSB1bmlxdWUgdmFsdWVzIGZyb20uXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMuXG4gICAqL1xuICBnZXRVbmlxdWVJZHMoYXJyYXk6IGFueSkge1xuICAgIGNvbnN0IHVuaXF1ZSA9IFsuLi5uZXcgU2V0KGFycmF5KV07XG4gICAgcmV0dXJuIHVuaXF1ZTtcbiAgfVxuXG4gIG9wZW5Bc3NpZ25lZUNoYW5nZUNvbmZpcm1hdGlvbihldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPSAnQU5ZX09ORSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9ICcnO1xuICAgICAgdGhpcy5hc3NpZ25lZVR5cGVDaGFuZ2UuZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIG1vZGUgaXMgRURJVCwgZW1pdCB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSB7YW55fSBldmVudCAtIGFueSAtIHRoZSBldmVudCB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSByYWRpbyBidXR0b25cbiAgICovXG4gIG9uUmV2aWV3ZXJXb3JrZmxvd0NoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnNlcXVlbnRpYWxXb3JrZmxvdyA9XG4gICAgICBldmVudCA9PT0gJ3NlcXVlbnRpYWwnID8gdHJ1ZSA6IGZhbHNlO1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJyAmJiB0aGlzLmhhc1Jldmlld2VyKSB7XG4gICAgICB0aGlzLm9uUmV2aWV3ZXJUeXBlQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGdldE90aGVyR1JDT2JqZWN0cyhldmVudD86IGFueSkge1xuICAgIGlmICh0aGlzLm90aGVyR1JDU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm90aGVyR1JDU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIGV2ZW50ID0ge1xuICAgICAgICByY19pZHM6ICcnLFxuICAgICAgICB0eXBlOiB0aGlzLnNlbGVjdGVkR1JDVGFiLFxuICAgICAgICBzdGF0ZTogMSxcbiAgICAgICAgcGFnZTogMSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChldmVudD8uc2VhcmNoU3RyaW5nICYmIHRoaXMuZ3JjU2VhcmNoU3RyaW5nICE9PSBldmVudD8uc2VhcmNoU3RyaW5nKSB7XG4gICAgICB0aGlzLmdyY1NlYXJjaFN0cmluZyA9IGV2ZW50Py5zZWFyY2hTdHJpbmc7XG4gICAgICB0aGlzLmdldE90aGVyR1JDVGFiQ291bnQoe1xuICAgICAgICByY19pZHM6ICcnLFxuICAgICAgICBzZWFyY2hTdHJpbmc6IHRoaXMuZ3JjU2VhcmNoU3RyaW5nLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuZ3JjTG9hZGVyID0gdHJ1ZTtcbiAgICBldmVudFsncmNfaWRzJ10gPSB0aGlzLmdldEFsbFJDSWRzKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjKTtcbiAgICBldmVudFsnZ3JjVHlwZSddID0gdGhpcy5zZWxlY3RlZEdSQ1RhYjtcbiAgICB0aGlzLm90aGVyR1JDU3Vic2NyaXB0aW9uID0gdGhpcy5ncmNTZXJ2aWNlXG4gICAgICAuZ2V0R1JDTGlzdChldmVudClcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmdyY0xpc3QgPSBkYXRhO1xuICAgICAgICB0aGlzLmdyY0xvYWRlciA9IGZhbHNlO1xuICAgICAgICBpZihldmVudD8ubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzID0gZGF0YT8uZGF0YT8uZmlsdGVyKChpdGVtOiBhbnkpID0+IHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cy5pbmNsdWRlcyhpdGVtLmdyY2lkKSk7XG4gICAgICAgICAgdGhpcy5zZXRPdGhlckdSQ1R5cGVzRm9ybWF0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gYGdldE90aGVyR1JDVGFiQ291bnRgIHJldHJpZXZlcyB0aGUgY291bnQgb2YgZGlmZmVyZW50IHR5cGVzIG9mIGl0ZW1zIChhc3NldHMsXG4gICAqIHByb2Nlc3NlcywgdmVuZG9ycywgaW52ZW50b3J5KSBhbmQgdXBkYXRlcyB0aGUgY29ycmVzcG9uZGluZyB0YWJzIHdpdGggdGhlIGNvdW50LlxuICAgKiBAcGFyYW0ge2FueX0gW2V2ZW50XSAtIFRoZSBcImV2ZW50XCIgcGFyYW1ldGVyIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlXG4gICAqIFwiZ2V0T3RoZXJHUkNUYWJDb3VudFwiIGZ1bmN0aW9uLiBJdCBpcyBvZiB0eXBlIFwiYW55XCIsIHdoaWNoIG1lYW5zIGl0IGNhbiBhY2NlcHQgYW55IGRhdGEgdHlwZS5cbiAgICovXG4gIGdldE90aGVyR1JDVGFiQ291bnQoZXZlbnQ/OiBhbnkpIHtcbiAgICBldmVudFsncmNfaWRzJ10gPSB0aGlzLmdldEFsbFJDSWRzKHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnJjKTtcbiAgICB0aGlzLmdyY1RhYkxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5ncmNTZXJ2aWNlLmdldEdSQ1RhYnNDb3VudChldmVudCkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIHRoaXMub3RoZXJHUkNDYXJkLmZvckVhY2goKHRhYjogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IE9CSkVDVF9MQUJFTDogYW55ID0ge1xuICAgICAgICAgIEFTU0VUOiAnQXNzZXRzJyxcbiAgICAgICAgICBQUk9DRVNTOiAnUHJvY2Vzc2VzJyxcbiAgICAgICAgICBWRU5ET1I6ICdWZW5kb3JzJyxcbiAgICAgICAgICBJTlZFTlRPUlk6ICdJbnZlbnRvcnknLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmdyY1RhYkxvYWRlciA9IGZhbHNlO1xuICAgICAgICBjb25zdCBUQUJfTkFNRSA9IE9CSkVDVF9MQUJFTFt0YWI/LnRpdGxlPy50b1VwcGVyQ2FzZSgpXTtcbiAgICAgICAgaWYgKFRBQl9OQU1FKSB7XG4gICAgICAgICAgdGFiLnRpdGxlID0gVEFCX05BTUU7XG4gICAgICAgICAgdGFiLnZhbHVlID0gaW5kZXg7XG4gICAgICAgICAgdGFiLnNlbGVjdGVkQ291bnQgPSAwO1xuICAgICAgICAgIHRhYi5rZXkgPSBUQUJfTkFNRT8udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXkgPSBgJHt0YWIua2V5fV90eXBlX2NvdW50YDtcbiAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIHRhYi5jb3VudCA9IGRhdGFba2V5XTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRBbGxSQ0lkcyhyY0lkczogYW55KSB7XG4gICAgY29uc3QgYWxsSWRzOiBudW1iZXJbXSA9IHJjSWRzLmZsYXRNYXAoKHJjOiBhbnkpID0+IFtcbiAgICAgIC4uLnJjLml0ZW1fcGFyZW50X2lkcy5tYXAoTnVtYmVyKSxcbiAgICAgIC4uLnJjLml0ZW1fY2hpbGRfaWRzLm1hcChOdW1iZXIpLFxuICAgICAgTnVtYmVyKHJjLnJjX2lkKSxcbiAgICBdKTtcblxuICAgIHJldHVybiB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RcbiAgICAgIC5maWx0ZXIoKHJjOiBhbnkpID0+IGFsbElkcy5pbmNsdWRlcyhyYz8ucmNfaWQpKVxuICAgICAgLm1hcCgoZWxlOiBhbnkpID0+IGVsZS5faWQpXG4gICAgICAuam9pbignLCcpO1xuICB9XG5cbiAgc2V0T3RoZXJHUkNUeXBlc0Zvcm1hdGUoKSB7XG4gICAgY29uc3QgZ3JjVHlwZXMgPSBHUkNfVFlQRV9BUlJBWTtcbiAgICB0aGlzLnJlc2V0R1JDRGF0YVdpdGhUeXBlcygpO1xuICAgIGlmICh0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5ncmNEYXRhV2l0aFR5cGVzW2dyY1R5cGVzW2l0ZW0/LnR5cGVdXT8ucHVzaChpdGVtKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0R1JDRGF0YVdpdGhUeXBlcygpIHtcbiAgICB0aGlzLmdyY0RhdGFXaXRoVHlwZXMgPSB7XG4gICAgICBhc3NldHM6IFtdLFxuICAgICAgcHJvY2Vzc2VzOiBbXSxcbiAgICAgIHZlbmRvcnM6IFtdLFxuICAgICAgaW52ZW50b3J5OiBbXSxcbiAgICB9O1xuICB9XG5cbiAgcmVtb3ZlT3RoZXJHUkNPYmplY3RzKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBncmNUeXBlcyA9IEdSQ19UWVBFX0FSUkFZO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLnNlbGVjdGVkR1JDT2JqZWN0cyA9XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzLmZpbHRlcihcbiAgICAgICAgKGdyYzogYW55KSA9PiBncmM/Ll9pZCAhPT0gZXZlbnQ/Ll9pZFxuICAgICAgKTtcbiAgICB0aGlzLmZpbHRlck90aGVyR1JDRGF0YShldmVudCwgZ3JjVHlwZXNbZXZlbnQ/LnR5cGVdKTtcbiAgICB0aGlzLm90aGVyR1JDQ2FyZFswXS5zZWxlY3RlZENvdW50XG4gICAgICA/ICh0aGlzLm90aGVyR1JDQ2FyZFtldmVudD8udHlwZV0uc2VsZWN0ZWRDb3VudCAtPSAxKVxuICAgICAgOiAwO1xuICB9XG5cbiAgZmlsdGVyT3RoZXJHUkNEYXRhKGV2ZW50OiBhbnksIHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuZ3JjRGF0YVdpdGhUeXBlc1t0eXBlXSA9IHRoaXMuZ3JjRGF0YVdpdGhUeXBlc1t0eXBlXT8uZmlsdGVyKFxuICAgICAgKGdyYzogYW55KSA9PiBncmM/Ll9pZCAhPT0gZXZlbnQ/Ll9pZFxuICAgICk7XG4gIH1cblxuICAvLyBOZXcgUHJvZ3JhbSBMaXN0XG4gIHByb2dyYW1zITogTGlzdEl0ZW1bXTsgLy8gQXNzaWduIG1vY2sgZGF0YVxuICBzZWxlY3RlZFByb2dyYW1zOiBhbnlbXSA9IFtdO1xuXG5cbiAgQFZpZXdDaGlsZCgnY3VzdG9tSXRlbVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgY3VzdG9tSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG5cblxuXG4gIG9uSXRlbXNTZWxlY3RlZENoYW5nZShpdGVtczogTGlzdEl0ZW1bXSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtcyA9IGl0ZW1zO1xuICAgIHRoaXMuYWxsUHJvZ2FtU2VsZWN0ZWQgPSAoW10gYXMgYW55KS5jb25jYXQoLi4uIE9iamVjdC52YWx1ZXMoaXRlbXMpKTtcbiAgfVxuXG4gIHNlbGVjdENhdGVnb3J5KCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSA9IFtdLmNvbmNhdCguLi5PYmplY3QudmFsdWVzKHRoaXMuc2VsZWN0ZWRQcm9ncmFtcykpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRVc2VySW5mbygpIHtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlckRldGFpbHMoKT8udXNlcjtcblxuICAgIHJldHVybiB7XG4gICAgICBtZW1iZXJfZW1haWw6IGN1cnJlbnRVc2VyPy5lbWFpbCxcbiAgICAgIG1lbWJlcl9pZDogY3VycmVudFVzZXIuaWQsXG4gICAgICBtZW1iZXJfbmFtZTogY3VycmVudFVzZXIubmFtZSxcbiAgICAgIG9yZ2FuaXNhdGlvbl9pZDogY3VycmVudFVzZXIub3JnYW5pc2F0aW9uX2lkLFxuICAgICAgX2lkOiB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJEZXRhaWxzKCkuX2lkLFxuICAgIH1cbiAgfVxuXG4gIHJlbW92ZVByb2dyYW0ocHJvZ3JhbTogYW55KTogdm9pZCB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRQcm9ncmFtcyk7XG4gICAga2V5cy5mb3JFYWNoKChrZXk6IGFueSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkUHJvZ3JhbXNba2V5XS5maW5kSW5kZXgoXG4gICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LmlkID09PSBwcm9ncmFtPy5pZFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1zW2tleV0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHBvcHVsYXRlUmVzcG9uc2liaWxpdHlEZXRhaWxzKCkge1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgY29uc3QgcmVzID0gdGhpcy5yZXNwb25zaWJpbGl0eURldGFpbHM7XG4gICAgY29uc3QgY3VycmVudHNVZXJJbmZvID0gdGhpcy5jdXJyZW50VXNlckluZm87XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0gPSB7XG4gICAgICBhc3NpZ25vcnM6IHtcbiAgICAgICAgZW5hYmxlOiBmYWxzZSxcbiAgICAgICAgbGlzdDpcbiAgICAgICAgICB0aGlzLnNldExpc3QodGhpcy5hc3NpZ25vcnNMaXN0LCBbcmVzLmFzc2lnbm9ySWRdLCAndWlkJylcbiAgICAgICAgICAgID8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyB0aGlzLnNldExpc3QodGhpcy5hc3NpZ25vcnNMaXN0LCBbcmVzLmFzc2lnbm9ySWRdLCAndWlkJylcbiAgICAgICAgICAgIDogW2N1cnJlbnRzVWVySW5mb10sXG4gICAgICB9LFxuICAgICAgcmVzcG9uc2liaWxpdHk6IHtcbiAgICAgICAgbmFtZTogcmVzPy50aXRsZSxcbiAgICAgICAga2V5UmVzcG9uc2liaWxpdHk6IHJlcz8ua2V5LFxuICAgICAgfSxcbiAgICAgIGFzc2lnbmVlczoge1xuICAgICAgICB3aG9DYW5Db21wbGV0ZTogcmVzLmFzc2lnbmVlLnR5cGUudG9Mb3dlckNhc2UoKSAsXG4gICAgICAgIGxpc3Q6XG4gICAgICAgICAgICB0aGlzLnNldExpc3QoXG4gICAgICAgICAgICAgICAgdGhpcy5hc3NpZ25lZXNMaXN0LFxuICAgICAgICAgICAgICAgIHJlcy5hc3NpZ25lZS51c2VySWQgLFxuICAgICAgICAgICAgICAgICd1aWQnXG4gICAgICAgICAgICAgIClcbiAgICAgIH0sXG4gICAgICBhbGxvd0VkaXREdWVEYXRlOiByZXM/LmFsbG93RWRpdER1ZURhdGUsXG4gICAgICBmcmVxdWVuY3k6IHJlcz8uZnJlcXVlbmN5X2RldGFpbHMsXG4gICAgICBkZXNjcmlwdGlvbjogcmVzPy5ub3RlcyxcbiAgICAgIG9iamVjdGl2ZTogcmVzPy5vYmplY3RpdmUsXG4gICAgICByYzogdGhpcy5zZXRMaXN0KFxuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QsXG4gICAgICAgIHJlcy5yZXNwb25zaWJpbGl0eUNlbnRlcj8uaWQsXG4gICAgICAgICdyY2lkJ1xuICAgICAgKSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZTpcbiAgICAgIHJlcy5yZXNwb25zaWJpbGl0eUNlbnRlcj8udHlwZSA9PT0gJ2FsbCcgPyAxOiAwLFxuICAgICAgY2F0ZWdvcnk6IHJlcz8ucHJvZ3JhbV9jYXRfaWRzPy5sZW5ndGhcbiAgICAgICAgPyByZXM/LmNhdGVnb3J5X2lkc19hcnJheS5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+ICFyZXMucHJvZ3JhbV9jYXRfaWRzPy5pbmNsdWRlcyhlbGUpXG4gICAgICAgICAgKVxuICAgICAgICA6IHJlcz8uY2F0ZWdvcnlfaWRzX2FycmF5LFxuICAgICAgcHJvZ3JhbV9zZWxlY3RlZF9pZHM6IHJlcz8uY2F0ZWdvcnlfaWQ/LnNwbGl0KCcsJykgPz8gW10sXG4gICAgICBjYXRlZ29yeV9pZDogcmVzPy5jYXRlZ29yeV9pZCA/PyAnJyxcblxuICAgICAgcHJvZ3JhbTogcmVzPy5wcm9ncmFtRGV0YWlscz8uY2F0ZWdvcnlfaWRcbiAgICAgICAgPyBbcmVzPy5wcm9ncmFtRGV0YWlsc11cbiAgICAgICAgOiBbXSxcbiAgICAgIGNoZWNrcG9pbnRJbnN0cnVjdGlvbjogcmVzPy5jaGVja3BvaW50X2Rlc2NyaXB0aW9uLFxuICAgICAgY3VzdG9tVGFnczogcmVzPy50YWdzICxcbiAgICAgIGNoZWNrcG9pbnRzOiByZXM/LmNoZWNrcG9pbnRfZGV0YWlsc1xuICAgICAgICA/IEpTT04ucGFyc2UocmVzPy5jaGVja3BvaW50X2RldGFpbHMpXG4gICAgICAgIDogJycsXG4gICAgICByZXZpZXdlcnM6IHtcbiAgICAgICAgc2VxdWVudGlhbFdvcmtmbG93OlxuICAgICAgICAgIHJlcz8ucmV2aWV3ZXI/LnR5cGUgPT0gJ3NlcXVlbnRpYWwnID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICByZXZpZXdGcmVxdWVuY3k6IHtcbiAgICAgICAgICByZXZpZXdDb21wbGV0ZURheXM6XG4gICAgICAgICAgICByZXM/LnJldmlld2VyPy5mcmVxdWVuY3k/LmNvbXBsZXRlQnkgPz8gMixcbiAgICAgICAgICByZXZpZXdOT3RDb21wbGV0ZWREYXlzOlxuICAgICAgICAgICAgcmVzPy5yZXZpZXdlcj8uZnJlcXVlbmN5Py5lbmRBZnRlciA/PyAyLFxuICAgICAgICB9LFxuICAgICAgICBsaXN0OiB0aGlzLnNldExpc3QoXG4gICAgICAgICAgdGhpcy5yZXZpZXdlcnNMaXN0LFxuICAgICAgICAgIHJlcz8ucmV2aWV3ZXI/LnVzZXJJZCxcbiAgICAgICAgICAndWlkJ1xuICAgICAgICApXG4gICAgICB9LFxuXG4gICAgICBvdmVyc2VlcnM6IHtcbiAgICAgICAgbGlzdDogcmVzPy5vdmVyc2VlclxuICAgICAgICAgID8gdGhpcy5zZXRMaXN0KFxuICAgICAgICAgICAgICB0aGlzLm92ZXJzZWVyc0xpc3QsXG4gICAgICAgICAgICAgIHJlcz8ub3ZlcnNlZXI/LnN1Y2Nlc3M/LnVzZXJJZCxcbiAgICAgICAgICAgICAgJ3VpZCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IFtdLFxuICAgICAgICBub3RpZnlMaXN0OiByZXM/Lm92ZXJzZWVyPy5mYWlsPy51c2VySWRcbiAgICAgICAgICA/IHRoaXMuc2V0TGlzdChcbiAgICAgICAgICAgICAgdGhpcy5vdmVyc2VlcnNMaXN0LFxuICAgICAgICAgICAgICByZXM/Lm92ZXJzZWVyPy5mYWlsPy51c2VySWQsXG4gICAgICAgICAgICAgICd1aWQnXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBbXSxcbiAgICAgIH0sXG4gICAgICBmb3JtYXRBbmRFdmlkZW5jZToge1xuICAgICAgICBmb3JtYXRSZXF1aXJlZDpcbiAgICAgICAgICByZXM/LmV2aWRlbmNlPy5mb3JtYXQ/LmRhdGE/Lmxlbmd0aCA+IDAgXG4gICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgIGZvcm1hdEZpbGVzOiByZXMuZXZpZGVuY2U/LmZvcm1hdD8udHlwZSA9PT0gJ2ZpbGUnID8gcmVzPy5ldmlkZW5jZT8uZm9ybWF0Py5kYXRhIDogW10sXG4gICAgICAgIGZvcm1hdExpbmtzOiByZXM/LmV2aWRlbmNlPy5mb3JtYXQ/LnR5cGUgPT09ICdsaW5rJyA/IHJlcz8uZXZpZGVuY2U/LmZvcm1hdD8uZGF0YSA6IFtdLFxuICAgICAgICBldmlkZW5jZVJlcXVpcmVkOiByZXM/LmV2aWRlbmNlPy5yZXF1aXJlZCA/IHRydWUgOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhc3N1cmFuY2VMaXN0OiBbXSxcbiAgICAgIHJlcXVpcmVzQXVkaXRMaXN0OiBbXSxcbiAgICAgIHJpc2tDbGFzczogcmVzPy5yaXNrQ2xhc3MsXG4gICAgICBzZWxlY3RlZEdSQ09iamVjdHM6IHJlcz8uZ3JjT2JqZWN0SWQgPz8gW10sXG4gICAgfTtcbiAgICAgaWYocmVzLmdyY09iamVjdElkPy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5zZWxlY3RlZEdSQ09iamVjdHMgPSByZXM/LmdyY09iamVjdElkO1xuICAgICAgdGhpcy5nZXRPdGhlckdSQ09iamVjdHMoe21vZGU6ICdFRElUJ30pO1xuICAgIH1cbiAgICB0aGlzLnBvcHVsYXRlRnJlcXVlbmN5RGV0YWlscyhyZXMuZnJlcXVlbmN5KTtcbiAgICB0aGlzLmdldEVkaXRNb3JlT3B0aW9ucyhyZXMpO1xuICAgXG4gIH1cblxuICBwb3B1bGF0ZUZyZXF1ZW5jeURldGFpbHMoZnJlcXVlbmN5OiBhbnkpIHtcbiAgICBjb25zdCBnZXRQYXR0ZXJuID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNyZWF0ZUZyZXF1ZW5jeVBhdHRlcm4oZnJlcXVlbmN5KTtcbiAgICBjb25zdCBsaWZlY3ljbGVEZXRhaWxzID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmdldExpZmVjeWNsZVBhdHRlcm4oZnJlcXVlbmN5KTtcbiAgICBmcmVxdWVuY3kucGF0dGVybiA9IGdldFBhdHRlcm47XG4gICAgZnJlcXVlbmN5LmxpZmVjeWNsZV9kZXRhaWxzID0gbGlmZWN5Y2xlRGV0YWlscy5wYXR0ZXJuO1xuICAgIGZyZXF1ZW5jeS5zdGFydF9vZl9kYXlfdXRjID0gbGlmZWN5Y2xlRGV0YWlscy5zdGFydEZyb207XG4gICAgdGhpcy5mcmVxdWVuY3lEYXRhUG9wdWxhdGlvbihmcmVxdWVuY3kpO1xuICAgIHRoaXMuZ2V0RnJlcXVlbmN5UGxhY2Vob2xkZXIoZnJlcXVlbmN5KTtcblxuICB9XG5cbiAgLy8gZnJlcXVlbmN5RGF0YVBvcHVsYXRpb24ocmVzOiBhbnkpIHtcbiAgLy8gICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mcmVxdWVuY3kgPSByZXM/LmZyZXF1ZW5jeV9kZXRhaWxzO1xuICAvLyB9XG4gIFxuICBcbn1cbiIsIjxkaXYgY2xhc3M9XCJ3b3JrZmx3LWNvbXBsaWFuY2VcIiAqbmdJZj1cIiFzaG93U21pbGV5XCI+XG4gIDwhLS0gQmVoYWxmIC0tPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJtb2RlICE9PSAnRURJVCdcIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25vcnMnXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25vcnMnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cIlxuICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbm9ycydcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGltZ1xuICAgICAgICBbc3JjXT1cIkFTU0VUUy5pbV9jcmVhdGluZ1wiXG4gICAgICAgIGFsdD1cImltXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8ubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbm9ycydcbiAgICAgICAgXCJcbiAgICAgIC8+XG5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25vcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbm9ycydcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgICA+SSBhbSBjcmVhdGluZyB0aGlzIHJlc3BvbnNpYmlsaXR5IG9uIGJlaGFsZiBvZiBzb21lb25lIGVsc2VcbiAgICAgICAgICA8YXBwLWNzLXN3aXRjaFxuICAgICAgICAgICAgW25nVmFsdWVdPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbm9ycy5lbmFibGVcIlxuICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25vcnMuZW5hYmxlID0gJGV2ZW50O1xuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3QgPSBbXVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9hcHAtY3Mtc3dpdGNoPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8ubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbm9ycydcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzaWdub3JzJywgdHJ1ZSlcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJXaG8gaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoaXMgcmVzcG9uc2liaWxpdHk/XCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5lbmFibGVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbm9ycydcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGJfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8uc2xpY2UoMCwgMSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25vcnMnLCBiX3VzZXIpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiYl91c2VyLm1lbWJlcl9uYW1lXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3sgYl91c2VyLm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYmVoYWxmLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgYl91c2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5zbGljZSgwLDIpXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25vcnMnLGJfdXNlcilcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tiX3VzZXIubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cImJlaGFsZi5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPitcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbm9ycz8ubGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzaWdub3JzJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzaWdub3JzJywgdHJ1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNiZWhhbGYgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgYl91c2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWdub3JzPy5saXN0IHwgc2xpY2UgOiAyO1xuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbm9ycycsIGJfdXNlcilcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGJfdXNlci5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPHBcbiAgICAgICAgICAqbmdJZj1cImludmFsaWRUeXBlID09PSAnd2hvbSdcIlxuICAgICAgICAgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgICAgICAgPlxuICAgICAgICAgIFBsZWFzZSBzZWxlY3QgdGhlIHBlcnNvbiByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhpcyByZXNwb25zaWJpbGl0eS5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gV2hhdCAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdmcmFtZXdvcmsnXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXNwb25zaWJpbGl0eU5hbWUnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cIlxuICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJlc3BvbnNpYmlsaXR5Py5uYW1lLnRyaW0oKSAhPT0gJycgJiZcbiAgICAgICAgIWZvY3VzLnJlc3BvbnNpYmlsaXR5TmFtZVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwiQVNTRVRTLndoYXRcIlxuICAgICAgICBhbHQ9XCJpbVwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXNwb25zaWJpbGl0eT8ubmFtZS50cmltKCkgPT09ICcnIHx8XG4gICAgICAgICAgZm9jdXMucmVzcG9uc2liaWxpdHlOYW1lXG4gICAgICAgIFwiXG4gICAgICAvPlxuXG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVzcG9uc2liaWxpdHk/Lm5hbWUudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICAgICFmb2N1cy5yZXNwb25zaWJpbGl0eU5hbWVcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+XG4gICAgICAgICAgV2hhdD8gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgaXNGcmFtZXdvcmtBdmFpbGFibGUgJiZcbiAgICAgICAgICAgICAgbW9kZSAhPT0gJ0VESVQnICYmXG4gICAgICAgICAgICAgIG9wZW5lZEZyb20gIT09ICdSSVNLX1RSRUFUTUVOVCcgJiZcbiAgICAgICAgICAgICAgYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfdHlwZSAhPT0gJ2NvbXBsaWFuY2VfYXVkaXQnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyYW1ld29yaycsIHRydWUpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBTZWxlY3QgRnJvbSBBIGZyYW1ld29ya1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXNwb25zaWJpbGl0eT8ua2V5UmVzcG9uc2liaWxpdHlcIlxuICAgICAgICAgIGNsYXNzPVwiaW5kaWNhdG9yXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCInVGhpcyByZXNwb25zaWJpbGl0eSBpcyBtYXJrZWQgYXMga2V5IHJlc3BvbnNpYmlsaXR5LidcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGVhNzA7PC9pPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJlc3BvbnNpYmlsaXR5Py5uYW1lLnRyaW0oKSA9PSAnJyB8fCAhaXNFZGl0V2hhdFxuICAgICAgICAgIFwiXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eS5uYW1lXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIldoYXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5P1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ3aGF0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAoZm9jdXNpbik9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXNwb25zaWJpbGl0eU5hbWUnLCB0cnVlKVwiXG4gICAgICAgICAgKGZvY3Vzb3V0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4gICAgICAgICAgKGNsaWNrT3V0c2lkZSk9XCJ0ZXN0RnVuY3Rpb24oKVwiXG4gICAgICAgICAgI3doYXRcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJlc3BvbnNpYmlsaXR5Py5uYW1lLnRyaW0oKSAhPSAnJyAmJiBpc0VkaXRXaGF0XG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPnt7XG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5yZXNwb25zaWJpbGl0eT8ubmFtZVxuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF90eXBlICE9PSAnY29tcGxpYW5jZV9hdWRpdCdcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRWRpdFdoYXQoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cFxuICAgICAgICAgICpuZ0lmPVwiaW52YWxpZFR5cGUgPT09ICd3aGF0J1wiXG4gICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcbiAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICA+XG4gICAgICAgICAgUGxlYXNlIGVudGVyIGEgbmFtZSBmb3IgdGhpcyByZXNwb25zaWJpbGl0eS5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3dpdGNoLXJvdyBhbGlnbi1yaWdodFwiPlxuICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXG4gICAgICAgICAgICBbbmdWYWx1ZV09XCJyZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHk/LmtleVJlc3BvbnNpYmlsaXR5XCJcbiAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0ucmVzcG9uc2liaWxpdHkua2V5UmVzcG9uc2liaWxpdHkgPSAkZXZlbnRcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+S2V5IFJlc3BvbnNpYmlsaXR5XG4gICAgICAgICAgPC9hcHAtY3Mtc3dpdGNoPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFdobyAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdhc3NpZ25lZXMnXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdhc3NpZ25lZXMnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cIlxuICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbmVlcydcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGltZ1xuICAgICAgICBbc3JjXT1cIkFTU0VUUy5jYXNlX2Fzc2lnbmVlc1wiXG4gICAgICAgIGFsdD1cImltXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbmVlcydcbiAgICAgICAgXCJcbiAgICAgIC8+XG5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbmVlcydcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZWRpdC1kdWUtZGF0ZVwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICAgICAgPldobz8gPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxuICAgICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImFsbG93RWRpdER1ZURhdGVGZWF0dXJlRmxhZyAmJiBmYWxzZVwiXG4gICAgICAgICAgICBjbGFzcz1cInN3aXRjaC1yb3cgYWxpZ24tcmlnaHRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoXG4gICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hbGxvd0VkaXREdWVEYXRlXCJcbiAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwicmVzcG9uc2liaWxpdHlGb3JtLmFsbG93RWRpdER1ZURhdGUgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICA+QUxMT1cgQVNTSUdORUUgVE8gRURJVCBDT01QTEVURUQgV09SSzxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAnSWYgaXTigJlzIGVuYWJsZWQsIHRoZSBhc3NpZ25lZSB3aWxsIGhhdmUgdGhlIG9wdGlvbiB0byBtb2RpZnkgYSBwcmV2aW91c2x5IGNvbXBsZXRlZCBkdWUgZGF0ZS4nXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9hcHAtY3Mtc3dpdGNoPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0IHZ4LW10LTBcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICghZmVhdHVyZUZsYWdfZ3JvdXBzIHx8XG4gICAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFnX2dyb3VwcykpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2Fzc2lnbmVlcycsIHRydWUpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hvIGlzIHJlc3BvbnNpYmxlIGZvciBjb21wbGV0aW5nIHRoZSByZXNwb25zaWJpbGl0eT9cIlxuICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzKSB8fFxuICAgICAgICAgICAgKChyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwKSAmJlxuICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGVfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8uc2xpY2UoMCwgMSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLCBlX3VzZXIpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiZV91c2VyLm1lbWJlcl9uYW1lXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3sgZV91c2VyLm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTQgZ3JlZW5iZ1wiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFzc2lnbmVlcy5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAre3sgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/LnNsaWNlKDEpLmxlbmd0aCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiICpuZ0lmPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoJ2Fzc2lnbmVlcycsIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0WzBdKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdFswXT8uZW1wbG95ZWVfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInVzZXIucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPiAwXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhYWxsR3JvdXBBc3NpZ25lZSB8fCBtb2RlICE9PSAnRURJVCdcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgJ2dyb3VwYXNzaWduZWVzJyxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFswXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0WzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3RbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGVuZ3RoPjFcIiBbY2xhc3MucGx1c109XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGVuZ3RoPjJcIiAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgZV91c2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5zbGljZSgwLDIpXCI+PGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLGVfdXNlcilcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tlX3VzZXIubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXIgKGNsaWNrKT1cImFzc2lnbmVlcy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPitcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiICpuZ0lmPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0Py5sZW5ndGggPiAwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy5saXN0WzBdKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3RbMF0/LmVtcGxveWVlX25hbWV9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInVzZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPiAre3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdD8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiYgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMFwiID4mPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGhcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiKCFhbGxHcm91cEFzc2lnbmVlIHx8IG1vZGUgIT09ICdFRElUJylcIiBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdncm91cGFzc2lnbmVlcycscmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFswXSlcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3RbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZUdyb3Vwcz8ubGlzdFswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0Py5sZW5ndGggLSAxfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc2lnbmVlcycgJiZcbiAgICAgICAgICAgICAgKCFmZWF0dXJlRmxhZ19ncm91cHMgfHxcbiAgICAgICAgICAgICAgICAoZmVhdHVyZUZsYWdfZ3JvdXBzICYmICghYWxsR3JvdXBBc3NpZ25lZSB8fCBtb2RlICE9PSAnRURJVCcpKSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzaWduZWVzJywgdHJ1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICN1c2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGVfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdCB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ2Fzc2lnbmVlcycsIGVfdXNlcilcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGVfdXNlci5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNncm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0XG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoZmVhdHVyZUZsYWdfZ3JvdXBzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICghYWxsR3JvdXBBc3NpZ25lZSB8fCBtb2RlICE9PSAnRURJVCcpKVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnZ3JvdXBhc3NpZ25lZXMnLCBncm91cClcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwLmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG5cbiAgICAgICAgPHBcbiAgICAgICAgICAqbmdJZj1cImludmFsaWRUeXBlID09PSAnd2hvJ1wiXG4gICAgICAgICAgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcbiAgICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgICA+XG4gICAgICAgICAgUGxlYXNlIHNlbGVjdCB0aGUgcGVyc29uIHJlc3BvbnNpYmxlIGZvciBjb21wbGV0aW5nIHRoaXNcbiAgICAgICAgICByZXNwb25zaWJpbGl0eS5cbiAgICAgICAgPC9wPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzR3JvdXBBc3NpZ25lZFwiPlxuICAgICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICAgICpuZ0lmPVwibW9kZSAhPT0gJ0VESVQnXCJcbiAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9ICdBTEwnXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT0gJ0FMTCdcIlxuICAgICAgICAgICAgW25hbWVdPVwiJ3doYXQnXCJcbiAgICAgICAgICAgID5BTEwgU0VMRUNURUQgUEVSU09OUyBORUVEIFRPIENPTVBMRVRFIFRISVM8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgJ0lmIHNlbGVjdGVkLCBzZXBhcmF0ZSByZXNwb25zaWJpbGl0aWVzIHdpbGwgYmUgY3JlYXRlZCBmb3IgZWFjaCBwZXJzb24uJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgICAgKm5nSWY9XCJtb2RlICE9PSAnRURJVCdcIlxuICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSA9ICdBTllfT05FJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT0gJ0FOWV9PTkUnXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIid3aGF0J1wiXG4gICAgICAgICAgICA+QU5ZIFNFTEVDVEVEIFBFUlNPTiBDQU4gQ09NUExFVEUgVEhJU1xuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdJZiBzZWxlY3RlZCwgb25seSBvbmUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBjcmVhdGVkLidcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID4mI3hlOTFmOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzd2l0Y2gtcm93IGFsaWduLXJpZ2h0XCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIG1vZGUgPT0gJ0VESVQnICYmXG4gICAgICAgICAgICAgICghZmVhdHVyZUZsYWdfZ3JvdXBzIHx8XG4gICAgICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVHcm91cHM/Lmxpc3QubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNzLXN3aXRjaFxuICAgICAgICAgICAgICAobmdWYWx1ZUNoYW5nZSk9XCJvcGVuQXNzaWduZWVDaGFuZ2VDb25maXJtYXRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cIlxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3NpZ25lZXMud2hvQ2FuQ29tcGxldGUgPT0gJ0FOWV9PTkUnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEFOWSBTRUxFQ1RFRCBQRVJTT04gQ0FOIENPTVBMRVRFIFRISVNcbiAgICAgICAgICAgIDwvYXBwLWNzLXN3aXRjaD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjYXNzaWduZWVzIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGVfdXNlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlcz8ubGlzdCB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3NpZ25lZXMnLCBlX3VzZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBlX3VzZXIubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBXaGVuPyAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdmcmVxdWVuY3knICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsZWZ0XCJcbiAgICAgIFtjbGFzcy5jaGVja2VkXT1cIlxuICAgICAgICAhcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxpbWdcbiAgICAgICAgW3NyY109XCJBU1NFVFMud2hlblwiXG4gICAgICAgIGFsdD1cImltXCJcbiAgICAgICAgKm5nSWY9XCIhcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knXCJcbiAgICAgIC8+XG5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2ZyZXF1ZW5jeScgJiZcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmZyZXF1ZW5jeSAhPSAnJyAmJlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZnJlcXVlbmN5ICE9ICc1fjB+MH4wJ1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICAgID5XaGVuPyA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsXG4gICAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmZyZXF1ZW5jeSA9PSAnJyB8fFxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgPT0gJzV+MH4wfjAnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdCBidXR0b24tc2VjXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIHRydWUpXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmcmVxdWVuY3lQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICBTZXQgQSBmcmVxdWVuY3lcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5mcmVxdWVuY3kgIT0gJycgJiZcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZnJlcXVlbmN5ICE9PSAnNX4wfjB+MCdcbiAgICAgICAgICBcIlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQgYnV0dG9uLXNlY1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwXCJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImZyZXF1ZW5jeVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgPnt7IGZyZXF1ZW5jeVBsYWNlaG9sZGVyIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdmcmVxdWVuY3knXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLCB0cnVlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPkVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwXG4gICAgICAgICAgKm5nSWY9XCJpbnZhbGlkVHlwZSA9PT0gJ3doZW4nXCJcbiAgICAgICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxuICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgID5cbiAgICAgICAgICBQbGVhc2Ugc2VsZWN0IHRoZSBmcmVxdWVuY3kgb2Ygb2NjdXJyZW5jZSBmb3IgdGhpcyByZXNwb25zaWJpbGl0eS5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gTm90ZXMgLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnbm90ZXMnXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdub3RlcycgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImxlZnRcIlxuICAgICAgW2NsYXNzLmNoZWNrZWRdPVwiXG4gICAgICAgIGNoZWNrQmxhbmsocmVzcG9uc2liaWxpdHlGb3JtPy5kZXNjcmlwdGlvbikudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICAhZm9jdXMuZGVzY3JpcHRpb25cbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGltZ1xuICAgICAgICBbc3JjXT1cIkFTU0VUUy5ub3Rlc1wiXG4gICAgICAgIGFsdD1cImltXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjaGVja0JsYW5rKHJlc3BvbnNpYmlsaXR5Rm9ybT8uZGVzY3JpcHRpb24pLnRyaW0oKSA9PT0gJycgfHxcbiAgICAgICAgICBmb2N1cy5kZXNjcmlwdGlvblxuICAgICAgICBcIlxuICAgICAgLz5cblxuICAgICAgPHN2Z1xuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgY2hlY2tCbGFuayhyZXNwb25zaWJpbGl0eUZvcm0/LmRlc2NyaXB0aW9uKS50cmltKCkgIT09ICcnICYmXG4gICAgICAgICAgIWZvY3VzLmRlc2NyaXB0aW9uXG4gICAgICAgIFwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+Tm90ZXM8L2xhYmVsPlxuICAgICAgICA8dmNvbXBseS1lZGl0b3JcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJ7XG4gICAgICAgICAgICBtb2RlOiAncHJpbWUnLFxuICAgICAgICAgICAgY29sb3JQYWxldHRlOiB0cnVlLFxuICAgICAgICAgICAgbGluazogdHJ1ZSxcbiAgICAgICAgICAgIGlkOiAnbm90ZXMnLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6XG4gICAgICAgICAgICAgICdBZGQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBjb21wbGV0aW5nIHRoZSByZXNwb25zaWJpbGl0eSdcbiAgICAgICAgICB9XCJcbiAgICAgICAgPjwvdmNvbXBseS1lZGl0b3I+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBPYmplY3RpdmUgLS0+XG4gIDxkaXZcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5PQkpFQ1RJVkVcIlxuICAgIFthdHRyLmlkXT1cIidPQkpFQ1RJVkUnXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnb2JqZWN0aXZlJ1wiXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnb2JqZWN0aXZlJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGVmdFwiXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgY2hlY2tCbGFuayhyZXNwb25zaWJpbGl0eUZvcm0/Lm9iamVjdGl2ZSkudHJpbSgpICE9PSAnJyAmJlxuICAgICAgICAhZm9jdXMub2JqZWN0aXZlXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxpbWdcbiAgICAgICAgW3NyY109XCJBU1NFVFMub2JqZWN0aXZlc1wiXG4gICAgICAgIGFsdD1cImltXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjaGVja0JsYW5rKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub2JqZWN0aXZlKS50cmltKCkgPT09ICcnIHx8XG4gICAgICAgICAgZm9jdXMub2JqZWN0aXZlXG4gICAgICAgIFwiXG4gICAgICAvPlxuXG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGNoZWNrQmxhbmsocmVzcG9uc2liaWxpdHlGb3JtPy5vYmplY3RpdmUpLnRyaW0oKSAhPT0gJycgJiZcbiAgICAgICAgICAhZm9jdXMub2JqZWN0aXZlXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPk9iamVjdGl2ZTwvbGFiZWw+XG4gICAgICAgIDx2Y29tcGx5LWVkaXRvclxuICAgICAgICAgIFsobmdNb2RlbCldPVwicmVzcG9uc2liaWxpdHlGb3JtLm9iamVjdGl2ZVwiXG4gICAgICAgICAgW2VkaXRvckNvbmZpZ109XCJ7XG4gICAgICAgICAgICBtb2RlOiAncHJpbWUnLFxuICAgICAgICAgICAgY29sb3JQYWxldHRlOiB0cnVlLFxuICAgICAgICAgICAgaWQ6ICdvYmplY3RpdmUnLFxuICAgICAgICAgICAgbGluazogdHJ1ZSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICAgICAgICAnVGhpcyBvcHRpb24gbGV0cyB5b3Ugc3BlY2lmeSBhbiBvYmplY3RpdmUgZm9yIHRoZSByZXNwb25zaWJpbGl0eS4nXG4gICAgICAgICAgfVwiXG4gICAgICAgID48L3Zjb21wbHktZWRpdG9yPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gUmVzcG9uc2liaWxpdHkgQ2VudGVyIC0tPlxuICA8ZGl2XG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uUkNcIlxuICAgIFthdHRyLmlkXT1cIidSQydcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3JjJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGVmdFwiXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ3JjJ1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwiQVNTRVRTLnJlc3BvbnNpYmlsaXR5X2NlbnRlclwiXG4gICAgICAgIGFsdD1cIlwiXG4gICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID09IDAgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdyYydcIlxuICAgICAgLz5cblxuICAgICAgPHN2Z1xuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGggPiAwICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAncmMnXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UmVzcG9uc2liaWxpdHkgQ2VudGVyIDwvbGFiZWw+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20taW5wdXRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjJywgdHJ1ZSlcIlxuICAgICAgICAgICAgYXJpYS1wbGFjZWhvbGRlcj1cIlNlbGVjdCB0aGUgcmVzcG9uc2liaWxpdHkgY2VudGVyIG9yIHRoZSByZXNwb25zaWJpbGl0eSBjZW50ZXJzIGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5LlwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwhLS0gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjJyx0cnVlKVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFJlc3BvbnNpYmlsaXR5IENlbnRlcihzKVwiIHJlYWRvbmx5PiAtLT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgW2NsYXNzLnJlYWRPbmx5XT1cIm9wZW5lZEZyb20gPT09ICdSSVNLX1RSRUFUTUVOVCdcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCByYyBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5zbGljZSgwLCAxKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyYycsIHJjKVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwib3BlbmVkRnJvbSAhPT0gJ1JJU0tfVFJFQVRNRU5UJ1wiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyYz8uaXRlbV9uYW1lXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgID57eyByYz8uaXRlbV9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJjUG9wb3Zlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/LnNsaWNlKDEpLmxlbmd0aCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGg+MVwiIFtjbGFzcy5wbHVzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/Lmxlbmd0aD4yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IHJjIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmM/LnNsaWNlKDAsMilcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmMnLHJjKVwiICpuZ0lmPVwib3BlbmVkRnJvbSAhPT0gJ1JJU0tfVFJFQVRNRU5UJ1wiPiYjeGU5MGQ7PC9pPnt7cmM/Lml0ZW1fbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudFwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJyYy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmVzcG9uc2liaWxpdHlGb3JtPy5yYz8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdyYycgJiYgb3BlbmVkRnJvbSAhPT0gJ1JJU0tfVFJFQVRNRU5UJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmMnLCB0cnVlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXBwLXBvcG92ZXIgI3JjUG9wb3ZlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCByYyBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnJjIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ3JjJywgcmMpXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7IHJjLml0ZW1fbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGlzUmVzcG9uc2liaWxpdHlSY0xpbmtFbmFibGVkICYmXG4gICAgICAgICAgICAobW9kZSAhPSAnRURJVCcgfHwgcmVzcG9uc2liaWxpdHlGb3JtPy5yYz8ubGVuZ3RoIDw9IDEpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDwhLS0gPGFwcC1jcy1yYWRpbz48ZGl2IFthcHBUb29sdGlwXT1cIidDcmVhdGUgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcyBmb3IgZWFjaCByZXNwb25zaWJpbGl0eSBjZW50ZXInXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+Q1JFQVRFIFNFUEFSQVRFIFJFU1BPTlNJQklMSVRJRVMgRk9SIEVBQ0ggUkVTUE9OU0lCSUxJVFkgQ0VO4oCmPC9kaXY+PGkgY2xhc3M9XCJpY29uc1wiIFthcHBUb29sdGlwXT1cIidJZiBzZWxlY3RlZCwgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcyB3aWxsIGJlIGNyZWF0ZWQgZm9yIGVhY2ggUmVzcG9uc2liaWxpdHkgQ2VudGVyLidcIiBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIiB0eXBlPVwid2hpdGVcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+JiN4ZTkxZjs8L2k+PC9hcHAtY3MtcmFkaW8+IC0tPlxuICAgICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgbW9kZSA9PSAnRURJVCcgJiZcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9PT0gMSAmJlxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGggPiAxXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwicmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID09PSAwXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIidmZl9yZXNwb25zaWJpbGl0eV9yY19saW5rJ1wiXG4gICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cIm9uUmNUeXBlQ2hhbmdlKDApXCJcbiAgICAgICAgICAgID48ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwicmMtcmFkaW8tdGV4dFwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdDcmVhdGUgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcyBmb3IgZWFjaCByZXNwb25zaWJpbGl0eSBjZW50ZXJzJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBDUkVBVEUgU0VQQVJBVEUgUkVTUE9OU0lCSUxJVElFUyBGT1IgRUFDSCBSRVNQT05TSUJJTElUWSBDRU7igKZcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdJZiBzZWxlY3RlZCwgc2VwYXJhdGUgcmVzcG9uc2liaWxpdGllcyB3aWxsIGJlIGNyZWF0ZWQgZm9yIGVhY2ggUmVzcG9uc2liaWxpdHkgQ2VudGVyLidcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID4mI3hlOTFmOzwvaVxuICAgICAgICAgICAgPjwvYXBwLWNzLXJhZGlvXG4gICAgICAgICAgPlxuICAgICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgbW9kZSA9PSAnRURJVCcgJiZcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLnJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9PT0gMSAmJlxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJjPy5sZW5ndGggPiAxXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwicmVzcG9uc2liaWxpdHlDZW50ZXJUeXBlID09PSAxXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIidmZl9yZXNwb25zaWJpbGl0eV9yY19saW5rJ1wiXG4gICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cIm9uUmNUeXBlQ2hhbmdlKDEpXCJcbiAgICAgICAgICAgID5ESVNQTEFZIFRIRSBTQU1FIFJFU1BPTlNJQklMSVRZIElOIEFMTCBSRVNQT05TSUJJTElUWSBDRU5URVJTPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdJZiBzZWxlY3RlZCwgdGhlIHNhbWUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBsaW5rZWQgdG8gZWFjaCBSZXNwb25zaWJpbGl0eSBDZW50ZXIuJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICA+PC9hcHAtY3MtcmFkaW9cbiAgICAgICAgICA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gUHJvZ3JhbSAtLT5cbiAgPGRpdlxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/LlBST0dSQU1cIlxuICAgIFthdHRyLmlkXT1cIidQUk9HUkFNJ1wiXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Byb2dyYW0nXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdwcm9ncmFtJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGVmdFwiXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJcbiAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtPy5sZW5ndGggPiAwICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAncHJvZ3JhbSdcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGltZ1xuICAgICAgICBbc3JjXT1cIkFTU0VUUy5jYXNlX2NhdGVnb3J5XCJcbiAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aCA9PSAwIHx8XG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdwcm9ncmFtJ1xuICAgICAgICBcIlxuICAgICAgLz5cblxuICAgICAgPHN2Z1xuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Byb2dyYW0nXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlByb2dyYW08L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0XCIgKm5nSWY9XCJzZWxlY3RlZENhdGVnb3J5Py5sZW5ndGggPT0gMFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWlucHV0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdwcm9ncmFtJywgdHJ1ZSlcIlxuICAgICAgICAgICAgYXJpYS1wbGFjZWhvbGRlcj1cIlNlbGVjdCB0aGUgUHJvZ3JhbSBvciBQcm9ncmFtIENhdGVnb3JpZXMgdGhhdCB0aGlzIHJlc3BvbnNpYmlsaXR5IHJlbGF0ZXMgdG8uXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPCEtLSA8aW5wdXQgdHlwZT1cInRleHRcIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncHJvZ3JhbScsdHJ1ZSlcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSZXNwb25zaWJpbGl0eSBwcm9ncmFtKHMpXCIgcmVhZG9ubHk+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJzZWxlY3RlZENhdGVnb3J5Py5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAhaGlkZGVuTGlzdD8uaW5jbHVkZXMoJ1BST0dSQU0nKSAmJlxuICAgICAgICAgICAgICAgICAgIXByb2dyYW0/LmlzVmlld09ubHlQcm9ncmFtXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdwcm9ncmFtJywgYWxsUHJvZ2FtU2VsZWN0ZWRbMF0pXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJhbGxQcm9nYW1TZWxlY3RlZFswXT8ubmFtZSA/PyAnLS0nXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3sgYWxsUHJvZ2FtU2VsZWN0ZWRbMF0/Lm5hbWUgPz8gXCItLVwiIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgIChjbGljayk9XCJwcm9ncmFtLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhbGxQcm9nYW1TZWxlY3RlZD8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICt7eyBhbGxQcm9nYW1TZWxlY3RlZD8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtPy5sZW5ndGg+MlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IHByb2dyYW0gb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5wcm9ncmFtXCI+PGkgY2xhc3M9XCJpY29uc1wiICpuZ0lmPVwiZmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9kZXByZWNhdGVfcHJpbWFyeV9wcm9ncmFtX2ZsYWcnKVwiIChjbGljayk9XCJyZW1vdmUoJ3Byb2dyYW0nLHByb2dyYW0pXCI+JiN4ZTkwZDs8L2k+IHt7cHJvZ3JhbT8ubmFtZT8/Jy0tJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtIC0gPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucHJvZ3JhbT8ubGVuZ3RoID4gMlwiIGNsYXNzPVwiY291bnRcIiB0eXBlPVwiYnV0dG9uXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicHJvZ3JhbS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPisge3tyZXNwb25zaWJpbGl0eUZvcm0/LnByb2dyYW0/LnNsaWNlKDIpLmxlbmd0aH19PC9idXR0b24+IC0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmxpbmtlZFByb2dyYW0/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInByb2dyYW0ucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4rIHt7cmVzcG9uc2liaWxpdHlGb3JtPy5saW5rZWRQcm9ncmFtPy5sZW5ndGggLSAxfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdwcm9ncmFtJyAmJiAhaGlkZGVuTGlzdC5pbmNsdWRlcygnUFJPR1JBTScpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Byb2dyYW0nLCB0cnVlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxhcHAtcG9wb3ZlciAjcHJvZ3JhbSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBwcm9ncmFtIG9mIGFsbFByb2dhbVNlbGVjdGVkIHwgc2xpY2U6IDE7XG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXZhdGFyLWNhcmRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJwcm9ncmFtPy5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAhaGlkZGVuTGlzdD8uaW5jbHVkZXMoJ1BST0dSQU0nKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIXByb2dyYW0/LmlzVmlld09ubHlQcm9ncmFtXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdwcm9ncmFtJywgcHJvZ3JhbSlcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IHByb2dyYW0/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmN1c3RvbVRhZ3M/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWcgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5jdXN0b21UYWdzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFnPy50YWdfbmFtZT8udHJpbSgpXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtbXQtMlwiPnt7XG4gICAgICAgICAgICAgICAgdGFnPy50YWdfbmFtZVxuICAgICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRhZy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyB0YWc/LnRhZ19uYW1lIH19XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEZvcm1hdCAmIEV2aWRlbmNlIC0tPlxuICA8ZGl2XG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uRk9STUFURV9FVklERU5DRVwiXG4gICAgW2F0dHIuaWRdPVwiJ0ZPUk1BVEVfRVZJREVOQ0UnXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnZm9ybWF0ZV9ldmlkZW5jZSdcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Zvcm1hdGVfZXZpZGVuY2UnICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIiBbY2xhc3MuY2hlY2tlZF09XCJmYWxzZVwiPlxuICAgICAgPGltZ1xuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmV2aWRlbmNlUmVxdWlyZWQgPT0gZmFsc2UgJiZcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Rm9ybS5mb3JtYXRBbmRFdmlkZW5jZS5mb3JtYXRGaWxlcy5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdExpbmtzPy5sZW5ndGggPT0gMFxuICAgICAgICBcIlxuICAgICAgICBbc3JjXT1cIkFTU0VUUy5mb3JtYXRfZXZpZGVuY2VcIlxuICAgICAgICBhbHQ9XCJpbVwiXG4gICAgICAvPlxuXG4gICAgICA8c3ZnXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uZm9ybWF0QW5kRXZpZGVuY2UuZXZpZGVuY2VSZXF1aXJlZCB8fFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdEZpbGVzLmxlbmd0aCB8fFxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlGb3JtLmZvcm1hdEFuZEV2aWRlbmNlLmZvcm1hdExpbmtzPy5sZW5ndGhcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICA+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGFwcC1mb3JtYXQtYW5kLWV2aWRlbmNlXG4gICAgICAgICh1cGRhdGVGaWxlcyk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdmb3JtYXRlX2V2aWRlbmNlJywgJGV2ZW50KVwiXG4gICAgICAgIFttb2RlXT1cIidyZXNwb25zaWJpbGl0eSdcIlxuICAgICAgICBbZm9ybWF0RXZpZGFuY2VEYXRhXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uZm9ybWF0QW5kRXZpZGVuY2VcIlxuICAgICAgPlxuICAgICAgPC9hcHAtZm9ybWF0LWFuZC1ldmlkZW5jZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBBc3Nlc3NtZW50IC0tPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uQVNTRVNTTUVOVFwiXG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgW2F0dHIuaWRdPVwiJ0FTU0VTU01FTlQnXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnaXNBc3Nlc3NtZW50J1wiXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnaXNBc3Nlc3NtZW50JyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibGVmdFwiXG4gICAgICBbY2xhc3MuY2hlY2tlZF09XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZFwiXG4gICAgPlxuICAgICAgPGltZ1xuICAgICAgICAqbmdJZj1cIiFyZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZFwiXG4gICAgICAgIFtzcmNdPVwiQVNTRVRTLmFzc2Vzc21lbnRzXCJcbiAgICAgICAgYWx0PVwiaW1cIlxuICAgICAgLz5cblxuICAgICAgPHN2Z1xuICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkXCJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICA+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkFTU0VTU01FTlRTPC9sYWJlbD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50X2lkXCJcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgYWN0aXZhdGVTZWxlY3RvcignaXNBc3Nlc3NtZW50JywgdHJ1ZSk7IGlzQXNzZXNzbWVudCA9IHRydWVcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhbiBhc3Nlc3NtZW50IGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aFwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudD8uYXNzZXNzbWVudF9pZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgKm5nSWY9XCJhc3Nlc3NtZW50RGV0YWlscz8uYXNzZXNzbWVudF90eXBlICE9PSAnY29tcGxpYW5jZV9hdWRpdCdcIlxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ2Fzc2Vzc21lbnQnLCBjYXRlZ29yeSlcIlxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnREZXRhaWxzXG4gICAgICAgICAgICAgICAgICA/LmFzc2Vzc21lbnRfbmFtZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnREZXRhaWxzXG4gICAgICAgICAgICAgICAgICA/LmFzc2Vzc21lbnRfbmFtZVxuICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cIndvcmtmbG93TGF2ZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LXBsLTEgdngtcHItMSB2eC1saC00IHZ4LW1sLTEgdngtdGV4dC1jZW50ZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyByZXNwb25zaWJpbGl0eUZvcm0uYXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LnF1ZXN0aW9ucyB9fVxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybS5hc3Nlc3NtZW50Py5hc3Nlc3NtZW50RGV0YWlscz8ucXVlc3Rpb25zID4gMVxuICAgICAgICAgICAgICAgICAgPyBcIlF1ZXN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICA6IFwiUXVlc3Rpb25cIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFzc2Vzc21lbnREZXRhaWxzPy5hc3Nlc3NtZW50X3R5cGUgIT09ICdjb21wbGlhbmNlX2F1ZGl0J1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgIGFjdGl2YXRlU2VsZWN0b3IoJ2lzQXNzZXNzbWVudCcsIHRydWUpOyBpc0Fzc2Vzc21lbnQgPSB0cnVlXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIENoZWNrcG9pbnRzIC0tPlxuICA8IS0tICpuZ0lmPVwibW9yZU9wdGlvbnMuY2hlY2twb2ludHNcIiAtLT5cbiAgPGRpdlxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/LkNIRUNLUE9JTlRTXCJcbiAgICBbYXR0ci5pZF09XCInQ0hFQ0tQT0lOVFMnXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMnXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdjaGVja3BvaW50cycgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxuICAgICAgPGltZ1xuICAgICAgICBbc3JjXT1cIkFTU0VUUy5jaGVja3BvaW50c1wiXG4gICAgICAgIGFsdD1cImltXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMnXG4gICAgICAgIFwiXG4gICAgICAvPlxuXG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uY2hlY2twb2ludHM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2NoZWNrcG9pbnRzJ1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5cbiAgICAgICAgICA8IS0tIHt7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzfGpzb259fVxuICAgICAgICAgICAgICAgIHt7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRJbnN0cnVjdGlvbn19IC0tPlxuXG4gICAgICAgICAgQ2hlY2twb2ludHNcbiAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzPy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NoZWNrcG9pbnRzJyx0cnVlKVwiPisgQWRkIENoZWNrcG9pbnRzPC9idXR0b24+IC0tPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3QgYnV0dG9uLXNlY1wiXG4gICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzPy5sZW5ndGggPT09IDBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cycsIHRydWUpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQWRkIGNoZWNrcG9pbnRzIGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5XCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cycsIHRydWUpXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEFkZCBDaGVja3BvaW50c1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGggPiAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBjaGVja3BvaW50IG9mIHJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8uc2xpY2UoMCwgMSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY2hlY2twb2ludD8ubGFiZWxcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57eyBjaGVja3BvaW50Py5sYWJlbCB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2hlY2twb2ludC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lciBjaGVja3BvaW50c1wiIFtjbGFzcy5tb3JlLW9uZV09XCJyZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGg+MlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBjaGVja3BvaW50IG9mIHJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8uc2xpY2UoMCwxKVwiPnt7Y2hlY2twb2ludD8ubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybS5jaGVja3BvaW50cz8ubGVuZ3RoID4gMVwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJjaGVja3BvaW50LnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzPy5sZW5ndGgtIDF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2NoZWNrcG9pbnRzJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMnLCB0cnVlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwidGhpcy5yZXNwb25zaWJpbGl0eUZvcm0uY2hlY2twb2ludHM/Lmxlbmd0aFwiXG4gICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0XCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBhbGVydC1pY29uXCI+JiN4ZTkzMDs8L2k+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgPllvdSBjYW4gbm93IHVzZSB0aGUgbmV3IDxzdHJvbmc+Q2hlY2twb2ludHMgPC9zdHJvbmc+b3JcbiAgICAgICAgICA8c3Ryb25nPkFzc2Vzc21lbnRzPC9zdHJvbmc+IGZlYXR1cmUgaW5zdGVhZCBvZiB0aGUgb2xkIGNoZWNrcG9pbnRzXG4gICAgICAgICAgZnVuY3Rpb25hbGl0eSB0byBjcmVhdGUgYW5hbHl0aWNhbCBxdWVzdGlvbnMuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJyZW1vdmUtYnRuXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblJlbW92ZUNoZWNrcG9pbnRzKCdjaGVja3BvaW50JylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFJlbW92ZSBDaGVja3BvaW50c1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIHRvIGNvbnRpbnVlLjwvc3BhblxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxhcHAtcG9wb3ZlciAjY2hlY2twb2ludCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrcG9pbnQgb2YgcmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAge3sgY2hlY2twb2ludD8ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gTmV3ICBDaGVja3BvaW50cyAtLT5cbiAgPCEtLSAqbmdJZj1cIm1vcmVPcHRpb25zLmNoZWNrcG9pbnRzXCIgLS0+XG4gIDxkaXZcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5DSEVDS1BPSU5UU19ORVdcIlxuICAgIFthdHRyLmlkXT1cIidDSEVDS1BPSU5UUy1ORVcnXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMtbmV3J1wiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxuICAgICAgPGltZ1xuICAgICAgICBbc3JjXT1cIkFTU0VUUy5jaGVja3BvaW50c1wiXG4gICAgICAgIGFsdD1cImltXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmNoZWNrcG9pbnRzPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMnXG4gICAgICAgIFwiXG4gICAgICAvPlxuXG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgICAqbmdJZj1cImNoZWNrcG9pbnRDb3VudCA+IDAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdjaGVja3BvaW50cydcIlxuICAgICAgPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5cbiAgICAgICAgICA8IS0tIHt7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzfGpzb259fVxuICAgICAgICAgICAgICAgIHt7cmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRJbnN0cnVjdGlvbn19IC0tPlxuXG4gICAgICAgICAgQ2hlY2twb2ludHNcbiAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiY2hlY2twb2ludC12ZXJzaW9uXCI+IFYyLjA8L3NwYW4+IC0tPlxuICAgICAgICAgIDwhLS0gPGJ1dHRvbiAgY2xhc3M9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cy1uZXcnLHRydWUpXCI+KyBBZGQgQ2hlY2twb2ludHM8L2J1dHRvbj4gLS0+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgYnV0dG9uLXNlY1wiICpuZ0lmPVwiY2hlY2twb2ludENvdW50ID09PSAwXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignY2hlY2twb2ludHMtbmV3JywgdHJ1ZSlcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJBZGQgY2hlY2twb2ludHMgZm9yIHRoaXMgcmVzcG9uc2liaWxpdHlcIlxuICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdjaGVja3BvaW50cy1uZXcnLCB0cnVlKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBBZGQgQ2hlY2twb2ludHNcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiY2hlY2twb2ludENvdW50ID4gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvblJlbW92ZUNoZWNrcG9pbnRzKCduZXctY2hlY2twb2ludHMnKVwiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICA+e3sgY2hlY2twb2ludENvdW50IH19XG4gICAgICAgICAgICAgIHt7IGNoZWNrcG9pbnRDb3VudCA+IDEgPyBcIlF1ZXN0aW9uc1wiIDogXCJRdWVzdGlvblwiIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lciBjaGVja3BvaW50c1wiIFtjbGFzcy5tb3JlLW9uZV09XCJjaGVja3BvaW50Q291bnQgPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwib25SZW1vdmVDaGVja3BvaW50cygnbmV3LWNoZWNrcG9pbnRzJylcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjaGVja3BvaW50Q291bnR9fSB7e2NoZWNrcG9pbnRDb3VudCA+IDEgPyAnUXVlc3Rpb25zJzogJ1F1ZXN0aW9uJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ2NoZWNrcG9pbnRzLW5ldydcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2NoZWNrcG9pbnRzLW5ldycsIHRydWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxhcHAtcG9wb3ZlciAjY2hlY2twb2ludCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrcG9pbnQgb2YgcmVzcG9uc2liaWxpdHlGb3JtLmNoZWNrcG9pbnRzIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAge3sgY2hlY2twb2ludD8ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gUmlzayBDbGFzc2lmaWNhdGlvbiAtLT5cbiAgPGRpdlxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/LlJJU0tfQ0xBU1NJRklDQVRJT05cIlxuICAgIFthdHRyLmlkXT1cIidSSVNLX0NMQVNTSUZJQ0FUSU9OJ1wiXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jpc2tDYWxjdWxhdG9yJ1wiXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAncmlza0NhbGN1bGF0b3InICYmXG4gICAgICBzaWRlU2VsZWN0b3JFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcilcbiAgICBcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cbiAgICAgIDxpbWcgW3NyY109XCJBU1NFVFMucmlza3NcIiBhbHQ9XCJpbVwiIC8+XG5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICA+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlxuICAgICAgICAgIFJpc2sgQ2xhc3NpZmljYXRpb25cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcigncmlza0NhbGN1bGF0b3InLCB0cnVlKVwiXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgKyBSaXNrIENhbGN1bGF0b3JcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xhc3NpZmljYXRpb25cIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwibG93XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCByaXNrIG9mIHJpc2tDbGFzc2lmaWNhdGlvblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJbcmlzay5jbGFzc11cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICBuYW1lPVwiY2xhc3NpZmljYXRpb25cIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5yaXNrQ2xhc3NcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwicmlzaz8udmFsdWVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPnt7IHJpc2s/Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBSZXZpZXdlciAtLT5cbiAgPGRpdlxuICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIlxuICAgICpuZ0lmPVwibW9yZU9wdGlvbnM/LlJFVklFV0VSXCJcbiAgICBbYXR0ci5pZF09XCInUkVWSUVXRVInXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlckZyZXF1ZW5jeScgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcidcbiAgICBcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cbiAgICAgIDxpbWdcbiAgICAgICAgW3NyY109XCJBU1NFVFMucmV2aWV3ZXJcIlxuICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXInXG4gICAgICAgIFwiXG4gICAgICAvPlxuXG4gICAgICA8c3ZnXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJ1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+UmV2aWV3ZXI8L2xhYmVsPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgICFmZWF0dXJlRmxhZ19ncm91cHMpIHx8XG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgIGZlYXR1cmVGbGFnX2dyb3VwcylcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCB0cnVlKVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSZXZpZXdlclwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIChyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzKSB8fFxuICAgICAgICAgICAgKChyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAwKSAmJlxuICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IHJldmlld2VyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5zbGljZSgwLCAxKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyZXZpZXdlcicsIHJldmlld2VyKVwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmV2aWV3ZXIubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57eyByZXZpZXdlci5tZW1iZXJfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmV2aWV3ZXIucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiAqbmdJZj1cIiFmZWF0dXJlRmxhZ19ncm91cHNcIiBbY2xhc3MubW9yZS1vbmVdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aD4xXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MucGx1c109XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoPjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiAqbmdGb3I9XCJsZXQgcmV2aWV3ZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/LnNsaWNlKDAsMilcIj48aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgncmV2aWV3ZXInLHJldmlld2VyKVwiPiYjeGU5MGQ7PC9pPiB7e3Jldmlld2VyLm1lbWJlcl9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJyZXZpZXdlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIiAqbmdJZj1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoJ3Jldmlld2VyJywgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3RbMF0pXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidXNlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdD8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdC5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAmXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgICdncm91cFJldmlld2VyJyxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFswXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0WzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3RbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiICpuZ0lmPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Lmxlbmd0aCA+IDAgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ3Jldmlld2VyJyxyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFswXSlcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIj57e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJ1c2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cImxlZnRcIj4gK3t7cmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5saXN0Lmxlbmd0aCA+IDAgJiYgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdD8ubGVuZ3RoID4gMFwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3QubGVuZ3RoID4gMCBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ2dyb3VwUmV2aWV3ZXInLHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3RbMF0pXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3RbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFswXT8uZ3JvdXBfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/Lmdyb3VwUmV2aWV3ZXJzPy5saXN0Py5sZW5ndGggLSAxfX08L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3Jldmlld2VyJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmV2aWV3ZXInLCB0cnVlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgW2NoZWNrZWRdPVwicmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3dcIlxuICAgICAgICAgIFtuYW1lXT1cIidyZXZpZXdlcidcIlxuICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwib25SZXZpZXdlcldvcmtmbG93Q2hhbmdlKCdzZXF1ZW50aWFsJylcIlxuICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDBcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgU0VRVUVOVElBTDxpXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAnVGhlIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgc2VudCBmb3IgcmV2aWV3IG9uZSBhdCBhIHRpbWUgaW4gdGhlIHNlcXVlbmNlIGRlZmluZWQgYnkgeW91LidcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxuICAgICAgICAgID5cbiAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICBbY2hlY2tlZF09XCIhcmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5zZXF1ZW50aWFsV29ya2Zsb3dcIlxuICAgICAgICAgIFtuYW1lXT1cIidyZXZpZXdlcidcIlxuICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwib25SZXZpZXdlcldvcmtmbG93Q2hhbmdlKCdhbnlSZXZpZXdlcicpXCJcbiAgICAgICAgPlxuICAgICAgICAgIEFOWSBSRVZJRVdFUiBDQU4gTUFSSyBUSElTIEFTIFJFVklFV0VEPGlcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICdUaGUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBzZW50IGZvciByZXZpZXcgdG8gYWxsIHJldmlld2VycyBhdCB0aGUgc2FtZSB0aW1lLiBJZiBhbnlvbmUgb2YgdGhlIHJldmlld2VyIHJldmlld3MgdGhlIHJlc3BvbnNpYmlsaXR5LCBpdCB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgcmV2aWV3ZWQuJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgPlxuICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNyZXZpZXdlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCByZXZpZXdlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyZXZpZXdlcicsIHJldmlld2VyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgcmV2aWV3ZXIubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjdXNlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCByZXZpZXdlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyZXZpZXdlcicsIHJldmlld2VyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgcmV2aWV3ZXIubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjZ3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5ncm91cFJldmlld2Vycz8ubGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdncm91cFJldmlld2VyJywgZ3JvdXApXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBncm91cC5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gT3ZlcnNlZXIgLS0+XG4gIDxkaXZcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5PVkVSU0VFUlwiXG4gICAgW2F0dHIuaWRdPVwiJ09WRVJTRUVSJ1wiXG4gICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXJOb3RpZnknIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXInXG4gICAgXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICBhY3RpdmVTZWxlY3RvciAmJlxuICAgICAgIVsnb3ZlcnNlZXJOb3RpZnknLCAnb3ZlcnNlZXJOb3RpZnknXS5pbmNsdWRlcyhhY3RpdmVTZWxlY3RvcikgJiZcbiAgICAgIHNpZGVTZWxlY3RvckVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZVNlbGVjdG9yKVxuICAgIFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibGVmdFwiIFtjbGFzcy5jaGVja2VkXT1cImZhbHNlXCI+XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwiQVNTRVRTLm92ZXJzaWdodFwiXG4gICAgICAgIGFsdD1cIlwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA9PSAwKSB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXJOb3RpZnknIHx8XG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcidcbiAgICAgICAgXCJcbiAgICAgIC8+XG4gICAgICA8c3ZnXG4gICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwKSAmJlxuICAgICAgICAgICEoXG4gICAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyTm90aWZ5JyB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ292ZXJzZWVyJ1xuICAgICAgICAgIClcbiAgICAgICAgXCJcbiAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgIHZpZXdCb3g9XCIwIDAgNTIgNTJcIlxuICAgICAgPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiXG4gICAgICAgIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5PdmVyc2lnaHQ8L2xhYmVsPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgICFmZWF0dXJlRmxhZ19ncm91cHMpIHx8XG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA9PSAwICYmXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICBmZWF0dXJlRmxhZ19ncm91cHMpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ292ZXJzZWVyJywgdHJ1ZSlcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJXaG8gc2hvdWxkIGhhdmUgb3ZlcnNpZ2h0IG9mIHRoZSByZXNwb25zaWJpbGl0eT9cIlxuICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgIWZlYXR1cmVGbGFnX2dyb3VwcykgfHxcbiAgICAgICAgICAgICgocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDApICYmXG4gICAgICAgICAgICAgIGZlYXR1cmVGbGFnX2dyb3VwcylcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWZlYXR1cmVGbGFnX2dyb3Vwc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/LnNsaWNlKDAsIDEpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyJywgb3ZlcnNlZXIpXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJvdmVyc2Vlci5tZW1iZXJfbmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7IG92ZXJzZWVyLm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2VlcnMucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5zbGljZSgxKS5sZW5ndGggfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiBbY2xhc3MubW9yZS1vbmVdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aD4xXCIgW2NsYXNzLnBsdXNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aD4yXCIgKm5nSWY9XCIhZmVhdHVyZUZsYWdfZ3JvdXBzXCIgPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8uc2xpY2UoMCwyKVwiPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlcicsb3ZlcnNlZXIpXCI+JiN4ZTkwZDs8L2k+IHt7b3ZlcnNlZXIubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggPiAyXCIgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVycy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIiAqbmdJZj1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoJ292ZXJzZWVyJywgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RbMF0pXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3ZlcnNlZXJVc2VyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0Py5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdC5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3Q/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPiY8L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgJ292ZXJzZWVyR3JvdXAnLFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFswXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFswXS5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0WzBdLmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3ZlcnNlZXJHcm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIiAqbmdJZj1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdC5sZW5ndGggPiAwXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicscmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3RbMF0pXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIj57e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0WzBdPy5lbXBsb3llZV9uYW1lfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3Q/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2VlclVzZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPiAre3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdD8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lmxpc3QubGVuZ3RoID4gMCAmJiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMFwiID4mPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoID4gMCBcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyR3JvdXAnLHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0WzBdKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFswXS5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIiAgPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lmxpc3RbMF0uZ3JvdXBfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5saXN0Py5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyR3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdD8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnb3ZlcnNlZXInXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvdmVyc2VlcicsIHRydWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICAhZmVhdHVyZUZsYWdfZ3JvdXBzKSB8fFxuICAgICAgICAgICAgKHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPT0gMCAmJlxuICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgZmVhdHVyZUZsYWdfZ3JvdXBzKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvdmVyc2Vlck5vdGlmeScsIHRydWUpXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2hvIHNob3VsZCBiZSBub3RpZmllZCBpZiB0aGUgcmVzcG9uc2liaWxpdHkgaXMgbm90IGNvbXBsZXQuLi5cIlxuICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAnV2hvIHNob3VsZCBiZSBub3RpZmllZCBpZiB0aGUgcmVzcG9uc2liaWxpdHkgaXMgbm90IGNvbXBsZXRlZD8nXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgIWZlYXR1cmVGbGFnX2dyb3VwcykgfHxcbiAgICAgICAgICAgICgocmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDApICYmXG4gICAgICAgICAgICAgIGZlYXR1cmVGbGFnX2dyb3VwcylcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWZlYXR1cmVGbGFnX2dyb3Vwc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3Q/LnNsaWNlKFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyTm90aWZ5TGlzdCcsIG92ZXJzZWVyKVwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwib3ZlcnNlZXIubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57eyBvdmVyc2Vlci5tZW1iZXJfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAoY2xpY2spPVwibm90aWZ5LnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8uc2xpY2UoMSkubGVuZ3RoIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCIgW2NsYXNzLm1vcmUtb25lXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGg+MVwiIFtjbGFzcy5wbHVzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGg+MlwiICpuZ0lmPVwiIWZlYXR1cmVGbGFnX2dyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICpuZ0Zvcj1cImxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8uc2xpY2UoMCwyKVwiPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlck5vdGlmeUxpc3QnLG92ZXJzZWVyKVwiPiYjeGU5MGQ7PC9pPiB7e292ZXJzZWVyLm1lbWJlcl9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMlwiIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJub3RpZnkucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgJ292ZXJzZWVyTm90aWZ5TGlzdCcsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0WzBdXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0WzBdPy5lbXBsb3llZV9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibm90aWZ5VXNlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3QubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggPiAwXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAnb3ZlcnNlZXJHcm91cE5vdGlmeUxpc3QnLFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJub3RpZnlHcm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7XG4gICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiICpuZ0lmPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZSgnb3ZlcnNlZXJOb3RpZnlMaXN0JyxyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdFswXSlcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RbMF0/LmVtcGxveWVlX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+PHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMFwiPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RbMF0/LmVtcGxveWVlX25hbWV9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm5vdGlmeVVzZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPiAre3tyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubm90aWZ5TGlzdD8ubGVuZ3RoIC0gMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5ub3RpZnlMaXN0Lmxlbmd0aCA+IDAgJiYgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDBcIiA+Jjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3Q/Lmxlbmd0aCA+IDAgXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlckdyb3VwTm90aWZ5TGlzdCcscmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3RbMF0pXCI+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0WzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPjxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDBcIiAgPnt7cmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnNHcm91cHM/Lm5vdGlmeUxpc3RbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdD8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJub3RpZnlHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e3Jlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0Py5sZW5ndGggLSAxfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnb3ZlcnNlZXJOb3RpZnknXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdvdmVyc2Vlck5vdGlmeScsIHRydWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJzIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IG92ZXJzZWVyIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzPy5saXN0XG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgbGV0IGogPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyJywgb3ZlcnNlZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJVc2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IG92ZXJzZWVycyBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVycz8ubGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2VlcicsIG92ZXJzZWVycylcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IG92ZXJzZWVycz8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiByZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlckdyb3VwJywgb3ZlcnNlZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNub3RpZnkgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyTm90aWZ5TGlzdCcsIG92ZXJzZWVyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8YXBwLXBvcG92ZXIgI25vdGlmeVVzZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5vdmVyc2VlcnM/Lm5vdGlmeUxpc3RcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDE7XG4gICAgICAgICAgICAgICAgICBsZXQgaiA9IGluZGV4XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ292ZXJzZWVyTm90aWZ5TGlzdCcsIG92ZXJzZWVyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8YXBwLXBvcG92ZXIgI25vdGlmeUdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGdyb3VwIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8ub3ZlcnNlZXJzR3JvdXBzPy5ub3RpZnlMaXN0XG4gICAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdvdmVyc2Vlckdyb3VwTm90aWZ5TGlzdCcsIGdyb3VwKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgZ3JvdXA/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBBc3N1cmFuY2UgLS0+XG4gIDxkaXZcbiAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCJcbiAgICAqbmdJZj1cIm1vcmVPcHRpb25zPy5BU1NVUkFOQ0VcIlxuICAgIFthdHRyLmlkXT1cIidBU1NVUkFOQ0UnXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXNzdXJhbmNlJ1wiXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgYWN0aXZlU2VsZWN0b3IgJiZcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzdXJhbmNlJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cbiAgICAgIDxpbWdcbiAgICAgICAgW3NyY109XCJBU1NFVFMucmV2aWV3ZXJcIlxuICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc3VyYW5jZSdcbiAgICAgICAgXCJcbiAgICAgIC8+XG5cbiAgICAgIDxzdmdcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LmFzc3VyYW5jZUxpc3Q/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ2Fzc3VyYW5jZSdcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICA+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkFzc3VyYW5jZTwvbGFiZWw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXG4gICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc3VyYW5jZUxpc3Q/Lmxlbmd0aCA9PSAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWlucHV0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdhc3N1cmFuY2UnLCB0cnVlKVwiXG4gICAgICAgICAgICBhcmlhLXBsYWNlaG9sZGVyPVwiU2VsZWN0IHRoZSB0ZXN0IHBsYW4gY2F0ZWdvcmllcyB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGFkZCB0aGlzIHJlc3BvbnNpYmlsaXR5IHRvLlwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5sZW5ndGggPiAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBhc3N1cmFuY2Ugb2YgcmVzcG9uc2liaWxpdHlGb3JtPy5hc3N1cmFuY2VMaXN0Py5zbGljZSgwLCAxKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdhc3N1cmFuY2UnLCBhc3N1cmFuY2UpXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJhc3N1cmFuY2UuY2F0ZWdvcnlfbmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7IGFzc3VyYW5jZS5jYXRlZ29yeV9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgIChjbGljayk9XCJhc3N1cmFuY2UucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdD8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICt7eyByZXNwb25zaWJpbGl0eUZvcm0/LmFzc3VyYW5jZUxpc3Q/LnNsaWNlKDEpLmxlbmd0aCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnYXNzdXJhbmNlJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignYXNzdXJhbmNlJywgdHJ1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNhc3N1cmFuY2UgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgYXNzdXJhbmNlIG9mIHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzdXJhbmNlTGlzdFxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMTtcbiAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdhc3N1cmFuY2UnLCBhc3N1cmFuY2UpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBhc3N1cmFuY2UuY2F0ZWdvcnlfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFJlcXVpcmVzIEF1ZGl0IC0tPlxuICA8ZGl2XG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uUkVRVUlSRVNfQVVESVQgJiYgcmVzcG9uc2liaWxpdHlGb3JtLnJjLmxlbmd0aCA+IDBcIlxuICAgIFthdHRyLmlkXT1cIidSRVFVSVJFU19BVURJVCdcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXF1aXJlc19hdWRpdCdcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ3JlcXVpcmVzX2F1ZGl0JyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cbiAgICAgIDxpbWdcbiAgICAgICAgW3NyY109XCJBU1NFVFMuYXVkaXRcIlxuICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3Q/Lmxlbmd0aCA9PSAwIHx8XG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgPT09ICdyZXF1aXJlc19hdWRpdCdcbiAgICAgICAgXCJcbiAgICAgIC8+XG5cbiAgICAgIDxzdmdcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUZvcm0/LnJlcXVpcmVzQXVkaXRMaXN0Py5sZW5ndGggPiAwICYmXG4gICAgICAgICAgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXF1aXJlc19hdWRpdCdcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCA1MiA1MlwiXG4gICAgICA+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPlJFUVVJUkVTIEFVRElUPzwvbGFiZWw+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdFwiXG4gICAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJlcXVpcmVzQXVkaXRMaXN0Py5sZW5ndGggPT0gMFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiSWYgeWVzLCBzZWxlY3QgYW4gQXVkaXQgQ2F0ZWdvcnkuXCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmVxdWlyZXNfYXVkaXQnLCB0cnVlKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8ucmVxdWlyZXNBdWRpdExpc3Q/Lmxlbmd0aCA+IDBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncmVxdWlyZXNfYXVkaXQnLCBvdmVyc2VlcilcIlxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXF1aXJlc0F1ZGl0TGlzdFswXT8uY2F0ZWdvcnlfbmFtZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXF1aXJlc0F1ZGl0TGlzdFswXT8uY2F0ZWdvcnlfbmFtZVxuICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JlcXVpcmVzX2F1ZGl0JywgdHJ1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBjOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwhLS0gY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIEVkaXQ8L2J1dHRvbj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXF1aXJlc0F1ZGl0TGlzdD8ubGVuZ3RoXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbCB2eC1tdC04XCI+XG4gICAgICAgICAgICBTQU1QTEUgU0laRVxuICAgICAgICAgICAgPGFwcC1jcy1zd2l0Y2hcbiAgICAgICAgICAgICAgWyhuZ1ZhbHVlKV09XCJpc1NhbXBsZVwiXG4gICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInN3aXRjaEVuYWJsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2FwcC1jcy1zd2l0Y2g+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2FtcGxlLXBhcnRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWlzU2FtcGxlXCI+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgIHZhbHVlPVwiMFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2FtcGxlLXJhZGlvXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkU2FtcGxlRGF0YSgwKVwiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkU2FtcGxlID09PSAwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj5DT1VOVDwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIi0tXCJcbiAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwiY2hlY2tJbnB1dFZhbHVlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2FtcGxlVmFsdWVcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JcIj5PUjwvZGl2PlxuICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgICAgICB2YWx1ZT1cIjFcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNhbXBsZS1yYWRpb1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZFNhbXBsZURhdGEoMSlcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFNhbXBsZSA9PT0gMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+UEVSQ0VOVEFHRTwvZGl2PlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwiY2hlY2tJbnB1dFZhbHVlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2FtcGxlUGVyY2VudGFnZVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCItLVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LW10LThcIlxuICAgICAgICAgICAgPlNFVCBBIFJFTUlOREVSIElGIFRIRSBBVURJVCBQTEFOIElTIE5PVCBDUkVBVEVELjwvbGFiZWxcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlbWluZGVyLXBhcnRcIj5cbiAgICAgICAgICAgIFNlbmQgcmVtaW5kZXIgZXZlcnlcbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCIyXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZW5kQXVkaXRSZW1pbmRlcnNWYWx1ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgRGF5IGJ5XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGltZVwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIjEyaHIgZm9ybWF0XCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImF1ZGl0VGltZVwiXG4gICAgICAgICAgICAgICAgW25neFRpbWVwaWNrZXJdPVwiZGFpbHlUaW1lXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImF1ZGl0VGltZS50b1VwcGVyQ2FzZSgpXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgW21pbl09XCJjdXJyZW50VGltZVwiXG4gICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5NTU7PC9pPlxuICAgICAgICAgICAgICA8bmd4LW1hdGVyaWFsLXRpbWVwaWNrZXIgI2RhaWx5VGltZSBbZGVmYXVsdFRpbWVdPVwiYXVkaXRUaW1lXCI+XG4gICAgICAgICAgICAgIDwvbmd4LW1hdGVyaWFsLXRpbWVwaWNrZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBMaW5rIG9mIEdSQyBvYmplY3RzIC0tPlxuICA8ZGl2XG4gICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiXG4gICAgKm5nSWY9XCJtb3JlT3B0aW9ucz8uR1JDX09CSkVDVFMgJiYgcmVzcG9uc2liaWxpdHlGb3JtLnJjLmxlbmd0aCA+IDBcIlxuICAgIFthdHRyLmlkXT1cIidHUkNfT0JKRUNUUydcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdHUkNfT0JKRUNUUydcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCJcbiAgICAgIGFjdGl2ZVNlbGVjdG9yICYmXG4gICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ0dSQ19PQkpFQ1RTJyAmJlxuICAgICAgc2lkZVNlbGVjdG9yRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlU2VsZWN0b3IpXG4gICAgXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCIgW2NsYXNzLmNoZWNrZWRdPVwiZmFsc2VcIj5cbiAgICAgIDxpbWdcbiAgICAgICAgW3NyY109XCJBU1NFVFMuYXVkaXRcIlxuICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPT0gMCB8fFxuICAgICAgICAgIGFjdGl2ZVNlbGVjdG9yID09PSAnR1JDX09CSkVDVFMnXG4gICAgICAgIFwiXG4gICAgICAvPlxuXG4gICAgICA8c3ZnXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlGb3JtPy5zZWxlY3RlZEdSQ09iamVjdHM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICBhY3RpdmVTZWxlY3RvciAhPT0gJ0dSQ19PQkpFQ1RTJ1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICB2aWV3Qm94PVwiMCAwIDUyIDUyXCJcbiAgICAgID5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XG4gICAgICAgIDxwYXRoXG4gICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+TElOSyBHUkMgT0JKRUNUKFMpPC9sYWJlbD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0XCJcbiAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uc2VsZWN0ZWRHUkNPYmplY3RzPy5sZW5ndGggPT09IDBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBHUkMgb2JqZWN0KHMpIHRvIGxpbmsgd2l0aCB0aGlzIHJlc3BvbnNpYmlsaXR5XCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignR1JDX09CSkVDVFMnLCB0cnVlKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUZvcm0/LnNlbGVjdGVkR1JDT2JqZWN0cz8ubGVuZ3RoXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlbGVjdGVkR1JDIG9mIEdSQ19UWVBFX0FSUkFZOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiZ3JjRGF0YVdpdGhUeXBlc1tzZWxlY3RlZEdSQ10/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQgdngtbWItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGdyYyBvZiBncmNEYXRhV2l0aFR5cGVzW3NlbGVjdGVkR1JDXT8uc2xpY2UoMCwgMSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnR1JDX09CSkVDVFMnLCBncmMsIDApXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid29ya2Zsb3dMYXZlbCB2eC1mcy0xMSB2eC1mdy01MDAgdngtcGwtMSB2eC1wci0xIHZ4LWxoLTQgdngtbXItMSB2eC10ZXh0LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkR1JDIHwgdGl0bGVjYXNlIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJncmM/Lm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgPnt7IGdyYz8ubmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwb3BvdmVyR1JDLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JjRGF0YVdpdGhUeXBlc1tzZWxlY3RlZEdSQ10/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICt7eyBncmNEYXRhV2l0aFR5cGVzW3NlbGVjdGVkR1JDXS5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnR1JDJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEdSQ1RhYiA9IGdyY0RhdGFXaXRoVHlwZXNbc2VsZWN0ZWRHUkNdWzBdPy50eXBlO1xuICAgICAgICAgICAgICAgICAgZ2V0T3RoZXJHUkNPYmplY3RzKCk7XG4gICAgICAgICAgICAgICAgICBhY3RpdmF0ZVNlbGVjdG9yKCdHUkNfT0JKRUNUUycsIHRydWUpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNwb3BvdmVyR1JDIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JjIG9mIGdyY0RhdGFXaXRoVHlwZXNbc2VsZWN0ZWRHUkNdIHwgc2xpY2UgOiAxO1xuICAgICAgICAgICAgICAgICAgICAgIGxldCBqID0gaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ0dSQ19PQkpFQ1RTJywgZ3JjLCBqICsgMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdyYy5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48YXBwLXVzZXJzLXJhZGlvLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2Fzc2lnbm9ycydcIlxuICBbdXNlcnNMaXN0XT1cImFzc2lnbm9yc0xpc3RcIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzaWdub3JzLmxpc3RcIlxuICBbaXRlbUVtYWlsS2V5XT1cIidtZW1iZXJfZW1haWwnXCJcbiAgW3VzZXJJZEtleV09XCInbWVtYmVyX2lkJ1wiXG4gIFtpdGVtTmFtZUtleV09XCInbWVtYmVyX25hbWUnXCJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnYXNzaWdub3JzJywgJGV2ZW50KVwiXG4gIChjbG9zZVVzZXJzTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxuICBbbG9hZGVkXT1cImFzc2lnbm9yc0xpc3RMb2FkZWRcIlxuPlxuPC9hcHAtdXNlcnMtcmFkaW8tbGlzdD5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXNzaWduZWVzJ1wiPlxuICA8YXBwLWdyb3VwLXVzZXJzLWxpc3RcbiAgICAqbmdJZj1cIlxuICAgICAgaXNFbnRydXN0IHx8IHJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzaWduZWVzPy53aG9DYW5Db21wbGV0ZSA9PT0gJ0FOWV9PTkUnXG4gICAgXCJcbiAgICBbb3BlbmVkRnJvbV09XCJvcGVuZWRGcm9tXCJcbiAgICBbdXNlcnNMaXN0XT1cImFzc2lnbmVlc0xpc3RcIlxuICAgIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ0Fzc2lnbmVlJ1wiXG4gICAgW2dyb3Vwc0xpc3RdPVwiZ3JvdXBzTGlzdFwiXG4gICAgW2Fzc2lnbmVlR3JvdXBzTGlzdF09XCJncm91cEFzc2lnbmVlTGlzdFwiXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5hc3NpZ25lZXM/Lmxpc3RcIlxuICAgIFtzZWxlY3RlZEdyb3Vwc109XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2lnbmVlR3JvdXBzPy5saXN0XCJcbiAgICBbdXNlcklkS2V5XT1cIidteV9tZW1iZXJfaWQnXCJcbiAgICBbZ3JvdXBJZEtleV09XCInZ3JvdXBfaWQnXCJcbiAgICBbbG9hZGVyXT1cInVzZXJMaXN0TG9hZGVyIHx8IGFzc2lnbm9yc0xpc3RMb2FkZXJcIlxuICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2Fzc2lnbmVlcycsICRldmVudClcIlxuICAgIChjbG9zZVVzZXJzTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxuICAgIFtncm91cHNFbmFibGVkXT1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiXG4gID5cbiAgPC9hcHAtZ3JvdXAtdXNlcnMtbGlzdD5cbiAgPGFwcC11c2Vycy1yYWRpby1saXN0XG4gICAgKm5nSWY9XCJcbiAgICAgICFpc0VudHJ1c3QgJiYgcmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy53aG9DYW5Db21wbGV0ZSAhPT0gJ0FOWV9PTkUnXG4gICAgXCJcbiAgICBbaXRlbUVtYWlsS2V5XT1cIidlbXBsb3llZV9lbWFpbCdcIlxuICAgIFt1c2Vyc0xpc3RdPVwiYXNzaWduZWVzTGlzdFwiXG4gICAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLmFzc2lnbmVlcy5saXN0XCJcbiAgICBbdXNlcklkS2V5XT1cIidlbXBsb3llZV9pZCdcIlxuICAgIFtpdGVtTmFtZUtleV09XCInZW1wbG95ZWVfbmFtZSdcIlxuICAgIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ0Fzc2lnbmVlJ1wiXG4gICAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgnYXNzaWduZWVzJywgJGV2ZW50KVwiXG4gICAgKGNsb3NlVXNlcnNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4gICAgW2xvYWRlZF09XCJhc3NpZ25lZXNMaXN0TG9hZGVkXCJcbiAgPlxuICA8L2FwcC11c2Vycy1yYWRpby1saXN0PlxuPC9uZy1jb250YWluZXI+XG5cbjxhcHAtY2hlY2twb2ludHNcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2NoZWNrcG9pbnRzJ1wiXG4gIFtjaGVja3BvaW50SW5zdHJ1Y3Rpb25dPVwicmVzcG9uc2liaWxpdHlGb3JtPy5jaGVja3BvaW50SW5zdHJ1Y3Rpb25cIlxuICBbY2hlY2twb2ludERhdGFdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5jaGVja3BvaW50c1wiXG4gIChzYXZlQ2hlY2tQb2ludCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdjaGVja3BvaW50cycsICRldmVudClcIlxuICAoY2xvc2VDaGVja1BvaW50KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4+PC9hcHAtY2hlY2twb2ludHM+XG48YXBwLWZyZXF1ZW5jeS1jb250YWluZXJcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcIlxuICBbZnJlcXVlbmN5RGV0YWlsc109XCJmcmVxdWVuY3lEZXRhaWxzXCJcbiAgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiXG4gIChzZWxlY3RlZEZyZXF1ZW5jeSk9XCJmcmVxdWVuY3lEYXRhKCRldmVudClcIlxuICBbbW9kZV09XCIncmVzcG9uc2liaWxpdHknXCJcbiAgKGNsb3NlRnJlcXVlbmN5KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4+XG48L2FwcC1mcmVxdWVuY3ktY29udGFpbmVyPlxuXG48YXBwLXJlc3BvbnNpYmlsaXR5LWNlbnRlcnMtbGlzdFxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmMnXCJcbiAgW2xvYWRlZF09XCJyY0xpc3RMb2FkZWRcIlxuICBbcmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdF09XCJyZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0XCJcbiAgW3JhZGlvU2VsZWN0aW9uXT1cIlxuICAgIG1vZGUgPT0gJ0VESVQnICYmIHJlc3BvbnNpYmlsaXR5Q2VudGVyVHlwZSA9PT0gMCA/IHRydWUgOiBmYWxzZVxuICBcIlxuICBbc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLnJjXCJcbiAgW3JjSWRLZXldPVwiJ2l0ZW1faWQnXCJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwic2F2ZVNlbGVjdGVkTGlzdCgncmMnLCAkZXZlbnQpXCJcbiAgKGNsb3NlUmNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4+XG48L2FwcC1yZXNwb25zaWJpbGl0eS1jZW50ZXJzLWxpc3Q+XG5cbjxhcHAtY2F0ZWdvcnktbXVsdGktc2VsZWN0XG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdjYXRlZ29yeSdcIlxuICBbY2F0ZWdvcnlMaXN0XT1cImNhdGVnb3JpZXNcIlxuICBbYWxsQ2F0ZWdvcmllc109XCJhbGxDYXRlZ29yaWVzXCJcbiAgW2NhdGVnb3J5SWRLZXldPVwiJ2NhdGVnb3J5X2lkJ1wiXG4gIFtzZWxlY3RlZENhdGVnb3JpZXNdPVwicmVzcG9uc2liaWxpdHlGb3JtLmNhdGVnb3J5XCJcbiAgKHNhdmVTZWxlY3RlZENhdGVnb3J5KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NhdGVnb3J5JywgJGV2ZW50KVwiXG4gIChjbG9zZUNhdGVnb3JpZXNMaXN0KT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4+XG48L2FwcC1jYXRlZ29yeS1tdWx0aS1zZWxlY3Q+XG5cbjwhLS0gUHJvZ3JhbSBMaXN0IFBvcHVwIC0tPlxuPGFwcC1saXN0LWNvbnRhaW5lclxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncHJvZ3JhbSdcIlxuICAoY2xvc2UpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbj5cbiAgPGFwcC1wcm9ncmFtLWxpc3RcbiAgICBib2R5XG4gICAgKGl0ZW1zU2VsZWN0ZWRDaGFuZ2UpPVwib25JdGVtc1NlbGVjdGVkQ2hhbmdlKCRldmVudClcIlxuICAgIFtzZWxlY3RlZEl0ZW1zXT1cInNlbGVjdGVkUHJvZ3JhbXNcIlxuICAgIFt1cmxdPVwicHJvZ3JhbUxpc3RVcmxcIlxuICA+PC9hcHAtcHJvZ3JhbS1saXN0PlxuICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtdy0xMDBcIiBmb290ZXI+XG4gICAgPGRpdiAgY2xhc3M9XCJsZWZ0LXNpZGUgdngtZnMtMTIgdngtZC1mbGV4XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsUHJvZ2FtU2VsZWN0ZWQubGVuZ3RoID4gMFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2VsZWN0ZWQtY291bnQtYm94IHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIj4ge3sgYWxsUHJvZ2FtU2VsZWN0ZWQubGVuZ3RoIH19PC9idXR0b24+IFxuICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdGVkLXRleHRcIj4gUHJvZ3JhbSB7e2FsbFByb2dhbVNlbGVjdGVkLmxlbmd0aCA+IDEgPyAnQ2F0ZWdvcmllcycgOiAnQ2F0ZWdvcnknfX0gU2VsZWN0ZWQ8L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicmlnaHQtc2lkZSB2eC1kLWZsZXhcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWxCdG5cIiAoY2xpY2spPVwiYWN0aXZlRGVzZWxlY3RvcigpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwibmV4dEJ0blwiIChjbGljayk9XCJhY3RpdmVEZXNlbGVjdG9yKCk7IHNlbGVjdENhdGVnb3J5KClcIj5cbiAgICAgICAgTmV4dCA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxZTs8L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2FwcC1saXN0LWNvbnRhaW5lcj5cblxuPGFwcC1vd25lci1saXN0XG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcicgJiYgIWZlYXR1cmVGbGFnX2dyb3Vwc1wiXG4gIFtsaXN0SGVhZGluZ109XCInU2VsZWN0IGEgUmV2aWV3ZXInXCJcbiAgW3Npbmd1bGFyVGV4dF09XCInVXNlciBzZWxlY3RlZCdcIlxuICBbcGx1cmFsVGV4dF09XCInVXNlcnMgc2VsZWN0ZWQnXCJcbiAgW3VzZXJzTGlzdF09XCJhbGxVc2Vyc0xpc3RcIlxuICBbc2hvd1dvcmtmbG93XT1cInRydWVcIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3RcIlxuICBbdXNlcklkS2V5XT1cIidlbXBsb3llZV9pZCdcIlxuICBbaXRlbUVtYWlsS2V5XT1cIidlbXBsb3llZV9lbWFpbCdcIlxuICBbaXRlbU5hbWVLZXldPVwiJ21lbWJlcl9uYW1lJ1wiXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cIlxuICAgIHNhdmVTZWxlY3RlZExpc3QoJ3Jldmlld2VyJywgJGV2ZW50KTtcbiAgICBhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlckZyZXF1ZW5jeScsIHRydWUpXG4gIFwiXG4gIChjbG9zZVVzZXJzTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxuICBbbW9kZV09XCJtb2RlXCJcbiAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInUmV2aWV3ZXInXCJcbiAgW3Jldmlld2VyV29ya2Zsb3dUeXBlXT1cIlxuICAgIHJlc3BvbnNpYmlsaXR5Rm9ybT8ucmV2aWV3ZXJzPy5zZXF1ZW50aWFsV29ya2Zsb3dcbiAgICAgID8gJ1NFUVVFTlRJQUwnXG4gICAgICA6ICdBTlkgUkVWSUVXRVIgQ0FOIE1BUksgVEhJUyBBUyBSRVZJRVdFRCdcbiAgXCJcbiAgKHJldmlld2VyV29ya2Zsb3dUeXBlQ2hhbmdlKT1cInJldmlld2VyVHlwZUNoYW5nZSgkZXZlbnQpXCJcbj5cbjwvYXBwLW93bmVyLWxpc3Q+XG48dXNlci1ncm91cC1saXN0XG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXZpZXdlcicgJiYgZmVhdHVyZUZsYWdfZ3JvdXBzXCJcbiAgW3NlbGVjdGVkUmV2aWV3ZXJdPVwidHJ1ZVwiXG4gIFt1c2VybGlzdF09XCJyZXZpZXdlck1lbWJlcklkc0xpc3RcIlxuICBbZ3JvdXBFbmFibGVkXT1cInRydWVcIlxuICBbZ3JvdXBMaXN0XT1cImdyb3VwUmV2aWV3ZXJMaXN0XCJcbiAgW3NlbGVjdGVkR3JvdXBzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uZ3JvdXBSZXZpZXdlcnM/Lmxpc3RcIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0/LnJldmlld2Vycz8ubGlzdFwiXG4gIChjYW5jZWwpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbiAgKHNhdmUpPVwiXG4gICAgc2F2ZVNlbGVjdGVkTGlzdCgncmV2aWV3ZXInLCAkZXZlbnQpO1xuICAgIGFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyRnJlcXVlbmN5JywgdHJ1ZSlcbiAgXCJcbiAgW21vZGVdPVwibW9kZVwiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ1Jldmlld2VyJ1wiXG4gIFtsb2FkaW5nXT1cInVzZXJMaXN0TG9hZGVyIHx8IGFzc2lnbm9yc0xpc3RMb2FkZXJcIlxuICAocmV2aWV3ZXJXb3JrZmxvd1R5cGVDaGFuZ2UpPVwicmV2aWV3ZXJUeXBlQ2hhbmdlKCRldmVudClcIlxuICBbcmV2aWV3ZXJXb3JrZmxvd1R5cGVdPVwiXG4gICAgcmVzcG9uc2liaWxpdHlGb3JtPy5yZXZpZXdlcnM/LnNlcXVlbnRpYWxXb3JrZmxvd1xuICAgICAgPyAnU0VRVUVOVElBTCdcbiAgICAgIDogJ0FOWSBSRVZJRVdFUiBDQU4gTUFSSyBUSElTIEFTIFJFVklFV0VEJ1xuICBcIlxuICBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZUZsYWdfZ3JvdXBzXCJcbj5cbjwvdXNlci1ncm91cC1saXN0PlxuPGFwcC1vd25lci1saXN0XG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcicgJiYgIWZlYXR1cmVGbGFnX2dyb3Vwc1wiXG4gIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCJcbiAgW3BsdXJhbFRleHRdPVwiJ1VzZXJzIHNlbGVjdGVkJ1wiXG4gIFt1c2Vyc0xpc3RdPVwiYWxsVXNlcnNMaXN0XCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0XCJcbiAgW3VzZXJJZEtleV09XCInZW1wbG95ZWVfaWQnXCJcbiAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInT3ZlcnNlZXInXCJcbiAgW2l0ZW1OYW1lS2V5XT1cIidtZW1iZXJfbmFtZSdcIlxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdvdmVyc2VlcicsICRldmVudClcIlxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbiAgW2l0ZW1FbWFpbEtleV09XCInZW1wbG95ZWVfZW1haWwnXCJcbj5cbjwvYXBwLW93bmVyLWxpc3Q+XG48dXNlci1ncm91cC1saXN0XG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2VlcicgJiYgZmVhdHVyZUZsYWdfZ3JvdXBzXCJcbiAgW2dyb3VwRW5hYmxlZF09XCJ0cnVlXCJcbiAgW2dyb3VwTGlzdF09XCJncm91cE92ZXJzZWVyTGlzdFwiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubGlzdFwiXG4gIFt1c2VybGlzdF09XCJvdmVyc2VlcnNMaXN0XCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5saXN0XCJcbiAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInT3ZlcnNlZXInXCJcbiAgW2xvYWRpbmddPVwidXNlckxpc3RMb2FkZXIgfHwgYXNzaWdub3JzTGlzdExvYWRlclwiXG4gIChzYXZlKT1cInNhdmVTZWxlY3RlZExpc3QoJ292ZXJzZWVyJywgJGV2ZW50KVwiXG4gIChjYW5jZWwpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbiAgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVGbGFnX2dyb3Vwc1wiXG4+XG48L3VzZXItZ3JvdXAtbGlzdD5cblxuPGFwcC1vd25lci1saXN0XG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdvdmVyc2Vlck5vdGlmeScgJiYgIWZlYXR1cmVGbGFnX2dyb3Vwc1wiXG4gIFtzaW5ndWxhclRleHRdPVwiJ1VzZXIgc2VsZWN0ZWQnXCJcbiAgW3BsdXJhbFRleHRdPVwiJ1VzZXJzIHNlbGVjdGVkJ1wiXG4gIFt1c2Vyc0xpc3RdPVwiYWxsVXNlcnNMaXN0XCJcbiAgW2Zyb21SZXNwb25zaWJpbGl0eV09XCInT3ZlcnNlZXInXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwicmVzcG9uc2liaWxpdHlGb3JtLm92ZXJzZWVycy5ub3RpZnlMaXN0XCJcbiAgW3VzZXJJZEtleV09XCInZW1wbG95ZWVfaWQnXCJcbiAgW2l0ZW1OYW1lS2V5XT1cIidtZW1iZXJfbmFtZSdcIlxuICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdvdmVyc2Vlck5vdGlmeScsICRldmVudClcIlxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbiAgW2l0ZW1FbWFpbEtleV09XCInZW1wbG95ZWVfZW1haWwnXCJcbj48L2FwcC1vd25lci1saXN0PlxuPHVzZXItZ3JvdXAtbGlzdFxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnb3ZlcnNlZXJOb3RpZnknICYmIGZlYXR1cmVGbGFnX2dyb3Vwc1wiXG4gIFt1c2VybGlzdF09XCJvdmVyc2VlcnNMaXN0XCJcbiAgW2dyb3VwRW5hYmxlZF09XCJ0cnVlXCJcbiAgW2dyb3VwTGlzdF09XCJncm91cE92ZXJzZWVyTGlzdFwiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJyZXNwb25zaWJpbGl0eUZvcm0/Lm92ZXJzZWVyc0dyb3Vwcz8ubm90aWZ5TGlzdFwiXG4gIFtzZWxlY3RlZFVzZXJzXT1cInJlc3BvbnNpYmlsaXR5Rm9ybS5vdmVyc2VlcnMubm90aWZ5TGlzdFwiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ092ZXJzZWVyJ1wiXG4gIFtsb2FkaW5nXT1cInVzZXJMaXN0TG9hZGVyIHx8IGFzc2lnbm9yc0xpc3RMb2FkZXJcIlxuICAoc2F2ZSk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdvdmVyc2Vlck5vdGlmeScsICRldmVudClcIlxuICAoY2FuY2VsKT1cImFjdGl2ZURlc2VsZWN0b3IoKVwiXG4gIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlRmxhZ19ncm91cHNcIlxuPlxuPC91c2VyLWdyb3VwLWxpc3Q+XG5cbjxhcHAtb3duZXItbGlzdFxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnYXNzdXJhbmNlJ1wiXG4gIFtzaW5ndWxhclRleHRdPVwiJ1Rlc3QgQ2F0ZWdvcnkgc2VsZWN0ZWQnXCJcbiAgW3BsdXJhbFRleHRdPVwiJ1Rlc3QgQ2F0ZWdvcmllcyBzZWxlY3RlZCdcIlxuICBbc2VhcmNoUGxhY2Vob2xkZXJdPVwiJ1NlYXJjaCBUZXN0IENhdGVnb3J5Li4uJ1wiXG4gIFtsaXN0SGVhZGluZ109XCInU2VsZWN0IFRlc3QgQ2F0ZWdvcmllcydcIlxuICBbdXNlcnNMaXN0XT1cImFzc3VyYW5jZUNhdGVnb3JpZXNMaXN0XCJcbiAgW25vRGF0YVRleHRdPVwiJ05vIFRlc3QgQ2F0ZWdvcmllcyBGb3VuZCdcIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJyZXNwb25zaWJpbGl0eUZvcm0uYXNzdXJhbmNlTGlzdFwiXG4gIFt1c2VySWRLZXldPVwiJ2NhdGVnb3J5X2lkJ1wiXG4gIFtpdGVtRW1haWxLZXldPVwiJ2NhdGVnb3J5X25hbWUnXCJcbiAgW2l0ZW1OYW1lS2V5XT1cIidjYXRlZ29yeV9uYW1lJ1wiXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2Fzc3VyYW5jZScsICRldmVudClcIlxuICAoY2xvc2VVc2Vyc0xpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbiAgW3NlYXJjaFBsYWNlaG9sZGVyXT1cIidTZWFyY2ggQ2F0ZWdvcnknXCJcbj5cbjwvYXBwLW93bmVyLWxpc3Q+XG5cbjxhcHAtYXVkaXQtY2F0ZWdvcnktbGlzdFxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmVxdWlyZXNfYXVkaXQnXCJcbiAgKGNsb3NlTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxuICBbYXVkaXRDYXRlZ29yeV09XCJhc3N1cmFuY2VSZXF1aXJlc0F1ZGl0TGlzdFwiXG4gIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ3JlcXVpcmVzX2F1ZGl0JywgJGV2ZW50KVwiXG4gIFtzZWxlY3RlZERhdGFdPVwicmVzcG9uc2liaWxpdHlGb3JtPy5yZXF1aXJlc0F1ZGl0TGlzdFswXVwiXG4+PC9hcHAtYXVkaXQtY2F0ZWdvcnktbGlzdD5cblxuPGFwcC1sb2FkZXItaW5saW5lXG4gICpuZ0lmPVwiKGxvYWRlciAmJiB0aGlzLm1vZGUgPT09ICdFRElUJykgfHwgZW50cnVzdExvYWRlclwiXG4+PC9hcHAtbG9hZGVyLWlubGluZT5cbjxhcHAtZnJhbWV3b3JrLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyYW1ld29yaydcIlxuICAoYXNzaWduQ29udHJvbCk9XCJhc3NpZ25Gcm9tRnJhbWV3b3JrKCRldmVudClcIlxuICBbcHJldmlvdXNTZWxlY3RlZFZhbHVlc109XCJzZWxlY3RlZEZyYW1ld29ya1ZhbHVlc1wiXG4gIChjbG9zZUZyYW1ld29yayk9XCJhY3RpdmVEZXNlbGVjdG9yKClcIlxuICAoZW50cnVzdEZyYW1ld29yayk9XCJlbnRydXN0RnJhbWV3b3JrKCRldmVudClcIlxuPjwvYXBwLWZyYW1ld29yay1saXN0PlxuXG48IS0tIHJpc2stY2FsY3VsYXRvciBoZXJlIC0tPlxuPGFwcC1yaXNrLWNsYXNzaWZpY2F0aW9uXG4gICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyaXNrQ2FsY3VsYXRvcidcIlxuICBbY3VycmVudFJpc2tWYWx1ZV09XCJyZXNwb25zaWJpbGl0eUZvcm0ucmlza0NsYXNzXCJcbiAgKHNhdmVMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ2NhbGN1bGF0ZWRyaXNrJywgJGV2ZW50KVwiXG4gIChjbG9zZUxpc3QpPVwiYWN0aXZlRGVzZWxlY3RvcigpXCJcbj5cbjwvYXBwLXJpc2stY2xhc3NpZmljYXRpb24+XG5cbjxhcHAtcmV2aWV3LWZyZXF1ZW5jeVxuICAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAncmV2aWV3ZXJGcmVxdWVuY3knXCJcbiAgW3Jldmlld0NvbXBsZXRlRGF5c109XCJcbiAgICByZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLnJldmlld0ZyZXF1ZW5jeS5yZXZpZXdDb21wbGV0ZURheXNcbiAgXCJcbiAgW3Jldmlld05PdENvbXBsZXRlZERheXNdPVwiXG4gICAgcmVzcG9uc2liaWxpdHlGb3JtLnJldmlld2Vycy5yZXZpZXdGcmVxdWVuY3kucmV2aWV3Tk90Q29tcGxldGVkRGF5c1xuICBcIlxuICAoc2F2ZVJldmlld0ZyZXF1ZW5jeSk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdyZXZpZXdGcmVxdWVuY3knLCAkZXZlbnQpXCJcbiAgKGNsb3NlUmV2aWV3RnJlcXVlbmN5KT1cIlxuICAgIGFjdGl2ZURlc2VsZWN0b3IoKTtcbiAgICBhY3RpdmF0ZVNlbGVjdG9yKCdyZXZpZXdlcicsIGZhbHNlKTtcbiAgICByZXNwb25zaWJpbGl0eUZvcm0ucmV2aWV3ZXJzLmxpc3QgPSBbXTtcbiAgICByZXNwb25zaWJpbGl0eUZvcm0uZ3JvdXBSZXZpZXdlcnMubGlzdCA9IFtdXG4gIFwiXG4gIChiYWNrVG9Vc2VyTGlzdCk9XCJhY3RpdmVEZXNlbGVjdG9yKCk7IGFjdGl2YXRlU2VsZWN0b3IoJ3Jldmlld2VyJywgdHJ1ZSlcIlxuPlxuPC9hcHAtcmV2aWV3LWZyZXF1ZW5jeT5cblxuPGFwcC1hc3Nlc3NtZW50LWxpc3RcbiAgKm5nSWY9XCJpc0Fzc2Vzc21lbnRcIlxuICBbcHJvZ3JhbV9pZHNdPVwicmVzcG9uc2liaWxpdHlGb3JtLnByb2dyYW1bMF0/Ll9pZFwiXG4gIChjYW5jZWxBc3Nlc3NtZW50KT1cIlxuICAgIGlzQXNzZXNzbWVudCA9IGZhbHNlOyBhY3RpdmF0ZVNlbGVjdG9yKCdpc0Fzc2Vzc21lbnQnLCBmYWxzZSlcbiAgXCJcbiAgW2lzRWRpdF09XCJyZXNwb25zaWJpbGl0eUZvcm0/LmFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWQgPyB0cnVlIDogZmFsc2VcIlxuICBbc2VsZWN0ZWRBc3Nlc3NtZW50XT1cInJlc3BvbnNpYmlsaXR5Rm9ybT8uYXNzZXNzbWVudFwiXG4gIChvbkFzc2Vzc21lbnRTZWxlY3QpPVwiXG4gICAgb25Bc3Nlc3NtZW50U2VsZWN0KCRldmVudCk7IGFjdGl2YXRlU2VsZWN0b3IoJ2lzQXNzZXNzbWVudCcsIGZhbHNlKVxuICBcIlxuPjwvYXBwLWFzc2Vzc21lbnQtbGlzdD5cblxuPGFwcC1zbWlsZXktZGlhbG9nLWlubGluZVxuICAqbmdJZj1cInNob3dTbWlsZXlcIlxuICBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCJcbiAgW2FjdGlvbkJ1dHRvbnNdPVwiYWN0aW9uQnV0dG9uc1wiXG4gIChhY3Rpb24pPVwiYWN0aW9uKCRldmVudClcIlxuICAoY2xvc2VTbWlsZXkpPVwiY2xvc2VTbWlsZXkoJGV2ZW50KVwiXG4+PC9hcHAtc21pbGV5LWRpYWxvZy1pbmxpbmU+XG5cbjxkaXYgY2xhc3M9XCJpbXBvcnRcIiAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yID09PSAnY2hlY2twb2ludHMtbmV3J1wiPlxuICA8YXBwLWNyZWF0ZS1hc3Nlc3NtZW50LWNvbnRhaW5lclxuICAgICNlZGl0b3JcbiAgICBbb3BlblBvcnRhbF09XCInUkVTUE9OU0lCSUxJVFlfQ0hFQ0tQT0lOVCdcIlxuICAgIChwb3N0QXNzZXNzbWVudCk9XCJwb3N0QXNzZXNzbWVudCgkZXZlbnQpXCJcbiAgICAoc2V0SXNVcGxvYWRlZCk9XCJzZXRJc1VwbG9hZGVkKCRldmVudClcIlxuICAgIFtjaGVja3BvaW50SlNPTl09XCJyZXNwb25zaWJpbGl0eUZvcm0ubmV3X2NoZWNrcG9pbnRzXCJcbiAgPlxuICA8L2FwcC1jcmVhdGUtYXNzZXNzbWVudC1jb250YWluZXI+XG48L2Rpdj5cblxuPGFwcC1ncmMtb2JqZWN0LWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciA9PT0gJ0dSQ19PQkpFQ1RTJ1wiXG4gIFtncmNPYmplY3RdPVwiZ3JjTGlzdFwiXG4gIFtzZWxlY3RlZEdSQ109XCJyZXNwb25zaWJpbGl0eUZvcm0uc2VsZWN0ZWRHUkNPYmplY3RzIHwgcmVmRGlzY29ubmVjdFwiXG4gIFtsb2FkZXJdPVwiZ3JjTG9hZGVyXCJcbiAgW3RhYmxlQ2FyZF09XCJvdGhlckdSQ0NhcmRcIlxuICBbc2VsZWN0ZWRUYWJdPVwic2VsZWN0ZWRHUkNUYWJcIlxuICBbY2FyZExvYWRlcl09XCJncmNUYWJMb2FkZXJcIlxuICAoZ2V0T3RoZXJHUkNPYmplY3RzKT1cImdldE90aGVyR1JDT2JqZWN0cygkZXZlbnQpXCJcbiAgKHNhdmVPdGhlckdSQyk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdHUkNfT0JKRUNUUycsICRldmVudClcIlxuICAoY2xvc2VPdGhlckdSQyk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdHUkNfT0JKRUNUUycsIGZhbHNlKVwiXG4+PC9hcHAtZ3JjLW9iamVjdC1saXN0PlxuIl19