@quadrel-enterprise-ui/framework 18.32.0-beta.94.1 → 18.32.1

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.
@@ -243,23 +243,32 @@ export class QdPageObjectHeaderComponent {
243
243
  }))));
244
244
  }
245
245
  updateCustomActions() {
246
- if (this.config.pageType === 'inspect') {
247
- const operationMode = this.config.pageTypeConfig?.operationMode;
248
- if (operationMode)
249
- this.pageStoreService.toggleViewonly(operationMode === 'view');
250
- this._customActionsSub?.unsubscribe();
251
- this._customActionsSub = this.pageStoreService.isViewonly$
252
- .pipe(takeUntil(this._destroyed$))
253
- .subscribe(isViewonly => {
254
- if (this.config.pageTypeConfig) {
255
- this.config.pageTypeConfig.operationMode = isViewonly ? 'view' : 'edit';
256
- }
257
- const customActions = this.config.pageTypeConfig?.customActions ?? [];
258
- this._customActionsSubject.next(this.getCustomActionsByMode(customActions, isViewonly ? 'view' : 'edit'));
259
- });
246
+ // 1. Handle non-inspect pages early
247
+ if (this.config.pageType !== 'inspect') {
248
+ const actions = this.config.pageTypeConfig?.customActions ?? [];
249
+ this._customActionsSubject.next({ actions });
250
+ return;
251
+ }
252
+ // 2. Setup Inspect-specific logic
253
+ const config = this.config.pageTypeConfig;
254
+ if (config?.operationMode) {
255
+ this.pageStoreService.toggleViewonly(config.operationMode === 'view');
260
256
  }
261
- if (this.config.pageType !== 'inspect')
262
- this._customActionsSubject.next({ actions: this.config.pageTypeConfig?.customActions ?? [] });
257
+ this.subscribeToViewOnlyMode();
258
+ }
259
+ subscribeToViewOnlyMode() {
260
+ this._customActionsSub?.unsubscribe();
261
+ this._customActionsSub = this.pageStoreService.isViewonly$
262
+ .pipe(takeUntil(this._destroyed$))
263
+ .subscribe(isViewonly => {
264
+ const mode = isViewonly ? 'view' : 'edit';
265
+ const config = this.config.pageTypeConfig;
266
+ if (config) {
267
+ config.operationMode = mode;
268
+ }
269
+ const actions = config?.customActions ?? [];
270
+ this._customActionsSubject.next(this.getCustomActionsByMode(actions, mode));
271
+ });
263
272
  }
264
273
  getCustomActionsByMode(customActions, mode) {
265
274
  const actions = customActions
@@ -317,4 +326,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
317
326
  type: HostListener,
318
327
  args: ['click']
319
328
  }] } });
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFjLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUYsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFnQmxJLE9BQU8sRUFBRSw2QkFBNkIsRUFBd0IsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FB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QkFnSmhCLDZCQUE2QjsyRkFoSnhDLDJCQUEyQix5VUMvQ3hDLGloTUErSkE7OzJGRGhIYSwyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUU7OzBCQWtKbEQsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkI7OzBCQUNoRCxRQUFROzswQkFDUixRQUFROzhLQWhKWCxNQUFNO3NCQURMLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUl6QixhQUFhO3NCQURaLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUdGLE1BQU07c0JBQTVCLEtBQUs7dUJBQUMsY0FBYztnQkFHakIsVUFBVTtzQkFEYixXQUFXO3VCQUFDLGlCQUFpQjtnQkFNOUIsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBRZE1lbnVCdXR0b25BY3Rpb25Db25maWcsIFFkTWVudUJ1dHRvbkNvbmZpZyB9IGZyb20gJy4uLy4uL2J1dHRvbi9tb2RlbC9idXR0b24tY29uZmlnJztcbmltcG9ydCB7IFFkRGlhbG9nQ29tcG9uZW50LCBRZERpYWxvZ1NlcnZpY2UsIFFkRGlhbG9nU2l6ZSB9IGZyb20gJy4uLy4uL2RpYWxvZy9kaWFsb2cubW9kdWxlJztcbmltcG9ydCB7IFFkUGFnZUNhbmNlbENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NhbmNlbC1jb25maXJtYXRpb24tZGlhbG9nL3BhZ2UtY2FuY2VsLWNvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIFFkSW5zcGVjdE9wZXJhdGlvbk1vZGUsXG4gIFFkUGFnZUNvbmZpZyxcbiAgUWRQYWdlQ29uZmlnQ3JlYXRlLFxuICBRZFBhZ2VDb25maWdDdXN0b20sXG4gIFFkUGFnZUNvbmZpZ0luc3BlY3QsXG4gIFFkUGFnZUNvbnRleHRDb25maWcsXG4gIFFkUGFnZVNlbGVjdGVkQ29udGV4dCxcbiAgUWRQYWdlVHlwZUluc3BlY3RDb25maWdcbn0gZnJvbSAnLi4vbW9kZWwvcGFnZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIFFkRmFjZXRPcHRpb25NdWx0aVNlbGVjdCxcbiAgUWRGYWNldE9wdGlvblNpbmdsZVNlbGVjdCxcbiAgUWRQYWdlSGVhZGVyRmFjZXRDb25maWdcbn0gZnJvbSAnLi4vbW9kZWwvcGFnZS1oZWFkZXItZmFjZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFFEX1BBR0VfT0JKRUNUX1JFU09MVkVSX1RPS0VOLCBRZFBhZ2VPYmplY3RSZXNvbHZlciB9IGZyb20gJy4uL21vZGVsL3BhZ2Utb2JqZWN0LXJlc29sdmVyJztcbmltcG9ydCB7IFFkQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFFkRm9ybUdyb3VwTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvZm9ybS1ncm91cC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRQYWdlU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3NlcnZpY2VzL3BhZ2Utc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBRZFJlc29sdmVyVHJpZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvcmVzb2x2ZXItdHJpZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkQ29udGV4dFNlbGVjdERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29udGV4dC1zZWxlY3QtZGlhbG9nL2NvbnRleHQtc2VsZWN0LWRpYWxvZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1wYWdlLW9iamVjdC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7ICdbc3R5bGUuYm9yZGVyQm90dG9tXSc6ICdib3JkZXJCb3R0b21TdHlsZScgfVxufSlcbmV4cG9ydCBjbGFzcyBRZFBhZ2VPYmplY3RIZWFkZXJDb21wb25lbnQ8VCBleHRlbmRzIG9iamVjdD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgY29uZmlnITogUWRQYWdlQ29uZmlnPFQ+O1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGhhc05hdmlnYXRpb24gPSBmYWxzZTtcblxuICBASW5wdXQoJ2RhdGEtdGVzdC1pZCcpIHRlc3RJZCA9ICdwYWdlLW9iamVjdC1oZWFkZXInO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaW4tZGlhbG9nJylcbiAgZ2V0IGlzSW5EaWFsb2coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5kaWFsb2dDb21wb25lbnQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHRvZ2dsZUZhY2V0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWRhcHRpdmVNb2RlIHx8ICh0aGlzLmhlYWRlckZhY2V0cz8ubGVuZ3RoID8/IDApID49IDIpIHJldHVybjtcblxuICAgIHRoaXMuZmFjZXRzQ29sbGFwc2VkID0gIXRoaXMuZmFjZXRzQ29sbGFwc2VkO1xuICB9XG5cbiAgZ2V0IGFkYXB0aXZlTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnIGFzIFFkUGFnZUNvbmZpZ0luc3BlY3QgfCBRZFBhZ2VDb25maWdDdXN0b20pLmFkYXB0aXZlTW9kZTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhZ2VPYmplY3REYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VD4oe30gYXMgVCk7XG4gIHByaXZhdGUgX2lzTG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBfY3VzdG9tQWN0aW9uc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFFkTWVudUJ1dHRvbkNvbmZpZz4oeyBhY3Rpb25zOiBbXSB9KTtcbiAgcHJpdmF0ZSBfY3VzdG9tQWN0aW9uc1N1Yj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcGFnZU9iamVjdERhdGEkOiBPYnNlcnZhYmxlPFQ+ID0gdGhpcy5fcGFnZU9iamVjdERhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBpc0xvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5faXNMb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRlYm91bmNlVGltZSg0MDApKTtcbiAgY3VzdG9tQWN0aW9ucyQ6IE9ic2VydmFibGU8UWRNZW51QnV0dG9uQ29uZmlnPiA9IHRoaXMuX2N1c3RvbUFjdGlvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGZhY2V0c0NvbGxhcHNlZCA9IHRydWU7XG5cbiAgY29udGV4dHMkITogT2JzZXJ2YWJsZTxcbiAgICB7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgdmFsdWU6IFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdO1xuICAgICAgY29udGV4dDogUWRQYWdlQ29udGV4dENvbmZpZztcbiAgICAgIHNlbGVjdGlvbjogUWRQYWdlU2VsZWN0ZWRDb250ZXh0IHwgUWRQYWdlU2VsZWN0ZWRDb250ZXh0W107XG4gICAgfVtdXG4gID47XG5cbiAgZ2V0IGJvcmRlckJvdHRvbVN0eWxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFnZVR5cGUgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZTtcblxuICAgIHJldHVybiBwYWdlVHlwZSA9PT0gJ2NyZWF0ZScgfHxcbiAgICAgIChwYWdlVHlwZSA9PT0gJ2luc3BlY3QnICYmIHRoaXMuaGFzTmF2aWdhdGlvbikgfHxcbiAgICAgIChwYWdlVHlwZSA9PT0gJ2N1c3RvbScgJiYgdGhpcy5oYXNOYXZpZ2F0aW9uKSB8fFxuICAgICAgKHBhZ2VUeXBlID09PSAnb3ZlcnZpZXcnICYmIHRoaXMuaGFzTmF2aWdhdGlvbilcbiAgICAgID8gJ25vbmUgIWltcG9ydGFudCdcbiAgICAgIDogJyc7XG4gIH1cblxuICBnZXQgc2hvd0VkaXQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5zcGVjdEFuZFZpZXdNb2RlJC5waXBlKG1hcCh2ID0+IHYgJiYgIXRoaXMuaGlkZUVkaXQpKTtcbiAgfVxuXG4gIGdldCBzaG93RGVsZXRlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0luc3BlY3RBbmRWaWV3TW9kZSQucGlwZShtYXAodiA9PiB2ICYmICEhdGhpcy5kZWxldGVCdXR0b24pKTtcbiAgfVxuXG4gIGdldCBzaG93QXJjaGl2ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gdiAmJiAhIXRoaXMuYXJjaGl2ZUJ1dHRvbikpO1xuICB9XG5cbiAgZ2V0IHNob3dDYW5jZWwkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5zcGVjdEFuZFZpZXdNb2RlJC5waXBlKG1hcCh2ID0+ICF2ICYmICEhdGhpcy5jYW5jZWxCdXR0b24gJiYgIXRoaXMuaXNDcmVhdGUpKTtcbiAgfVxuXG4gIGdldCBzaG93U2F2ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gIXYgJiYgISF0aGlzLnNhdmVCdXR0b24pKTtcbiAgfVxuXG4gIGdldCBoZWFkZXJGYWNldHMoKTogUWRQYWdlSGVhZGVyRmFjZXRDb25maWc8VD5bXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuaGFzSGVhZGVyRmFjZXRzKHRoaXMuY29uZmlnKSkgcmV0dXJuIHRoaXMuY29uZmlnLmhlYWRlckZhY2V0cztcbiAgfVxuXG4gIGdldCBpc0luc3BlY3RBbmRWaWV3TW9kZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucGFnZVN0b3JlU2VydmljZS5pc1ZpZXdvbmx5JC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpLFxuICAgICAgbWFwKGlzVmlldyA9PiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2luc3BlY3QnICYmIGlzVmlldylcbiAgICApO1xuICB9XG5cbiAgZ2V0IGlzQ3JlYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2NyZWF0ZSc7XG4gIH1cblxuICBnZXQgaXNPdmVydmlldygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdvdmVydmlldyc7XG4gIH1cblxuICBnZXQgaXNDb250ZXh0U2VsZWN0YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdvdmVydmlldycgfHwgdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdjdXN0b20nO1xuICB9XG5cbiAgZ2V0IGVkaXRCdXR0b24oKTogUWRQYWdlVHlwZUluc3BlY3RDb25maWdbJ2VkaXQnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmVkaXQ7XG4gIH1cblxuICBnZXQgZGVsZXRlQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydkZWxldGUnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmRlbGV0ZTtcbiAgfVxuXG4gIGdldCBhcmNoaXZlQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydhcmNoaXZlJ10ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5hcmNoaXZlO1xuICB9XG5cbiAgZ2V0IGNhbmNlbEJ1dHRvbigpOiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1snY2FuY2VsJ10ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5jYW5jZWw7XG4gIH1cblxuICBnZXQgc2F2ZUJ1dHRvbigpOiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1snc2F2ZSddIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uc2F2ZTtcbiAgfVxuXG4gIGdldCBoaWRlRWRpdCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyB8IHVuZGVmaW5lZDtcblxuICAgIGlmICghY29uZmlnKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGNvbmZpZy5vcGVyYXRpb25Nb2RlICE9PSAnZWRpdCcpIHJldHVybiBjb25maWcuaGlkZUVkaXQgPT09IHRydWU7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgaGFzVmFsdWVzQ2hhbmdlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuJGhhc1ZhbHVlc0NoYW5nZWQoKTtcbiAgfVxuXG4gIGdldCAkY2FuU2F2ZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uc2F2ZT8uaGFzVmFsaWRhdGlvbiA9PT0gZmFsc2UpXG4gICAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS4kaGFzVmFsdWVzQ2hhbmdlZCgpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS4kYXJlRm9ybUdyb3Vwc1ZhbGlkKCksXG4gICAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLiRoYXNWYWx1ZXNDaGFuZ2VkKClcbiAgICBdKS5waXBlKG1hcCgoW2lzVmFsaWQsIGhhc0NoYW5nZXNdKSA9PiBpc1ZhbGlkICYmIGhhc0NoYW5nZXMpKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUURfUEFHRV9PQkpFQ1RfUkVTT0xWRVJfVE9LRU4pIHByaXZhdGUgcGFnZU9iamVjdFJlc29sdmVyOiBRZFBhZ2VPYmplY3RSZXNvbHZlcjxUPixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlOiBRZEZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGlhbG9nQ29tcG9uZW50OiBRZERpYWxvZ0NvbXBvbmVudCxcbiAgICBwcml2YXRlIGRpYWxvZzogUWREaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IFFkQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXNvbHZlclRyaWdnZXJTZXJ2aWNlOiBRZFJlc29sdmVyVHJpZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYWdlU3RvcmVTZXJ2aWNlOiBRZFBhZ2VTdG9yZVNlcnZpY2U8VD5cbiAgKSB7XG4gICAgaWYgKHBhZ2VPYmplY3RSZXNvbHZlcikge1xuICAgICAgY29uc3Qgb3JpZ2luYWxVcGRhdGVNZXRhZGF0YSA9IHRoaXMucGFnZU9iamVjdFJlc29sdmVyLnVwZGF0ZU1ldGFkYXRhPy5iaW5kKHRoaXMucGFnZU9iamVjdFJlc29sdmVyKTtcbiAgICAgIHRoaXMucGFnZU9iamVjdFJlc29sdmVyLnVwZGF0ZU1ldGFkYXRhID0gKHByb3BzOiBQYXJ0aWFsPFQ+KTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlTWV0YWRhdGEocHJvcHMpO1xuICAgICAgICBpZiAob3JpZ2luYWxVcGRhdGVNZXRhZGF0YSkgb3JpZ2luYWxVcGRhdGVNZXRhZGF0YShwcm9wcyk7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNldHVwUmVzb2x2ZXJUcmlnZ2VyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0Q29udGV4dHMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2VPYmplY3RSZXNvbHZlcikgdGhpcy5zZXR1cFJlc29sdmVyVHJpZ2dlcigpO1xuXG4gICAgdGhpcy51cGRhdGVDdXN0b21BY3Rpb25zKCk7XG4gICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS50YWtlRm9ybUdyb3Vwc1NuYXBzaG90KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddICYmICFjaGFuZ2VzWydjb25maWcnXS5maXJzdENoYW5nZSkgdGhpcy51cGRhdGVDdXN0b21BY3Rpb25zKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkoZmFsc2UpO1xuXG4gICAgdGhpcy5fZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgdXBkYXRlTWV0YWRhdGEobWV0YWRhdGE6IFBhcnRpYWw8VD4pOiB2b2lkIHtcbiAgICBjb25zdCB1cGRhdGVkTWV0YWRhdGEgPSB7IC4uLnRoaXMuX3BhZ2VPYmplY3REYXRhU3ViamVjdC52YWx1ZSwgLi4ubWV0YWRhdGEgfTtcbiAgICB0aGlzLl9wYWdlT2JqZWN0RGF0YVN1YmplY3QubmV4dCh1cGRhdGVkTWV0YWRhdGEpO1xuICB9XG5cbiAgaGFuZGxlQWN0aW9uKGZhY2V0OiBRZEZhY2V0T3B0aW9uU2luZ2xlU2VsZWN0IHwgUWRGYWNldE9wdGlvbk11bHRpU2VsZWN0KTogdm9pZCB7XG4gICAgZmFjZXQ/LmFjdGlvbj8uaGFuZGxlcigpO1xuICB9XG5cbiAgaGFzSGVhZGVyRmFjZXRzKFxuICAgIGNvbmZpZzogUWRQYWdlQ29uZmlnPFQ+XG4gICk6IGNvbmZpZyBpcyBRZFBhZ2VDb25maWdDcmVhdGU8VD4gfCBRZFBhZ2VDb25maWdJbnNwZWN0PFQ+IHwgUWRQYWdlQ29uZmlnQ3VzdG9tPFQ+IHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnIGFzIHsgaGVhZGVyRmFjZXRzOiBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZzxUPltdIH0pLmhlYWRlckZhY2V0cyAhPSBudWxsO1xuICB9XG5cbiAgZWRpdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLnRha2VGb3JtR3JvdXBzU25hcHNob3QoKTtcbiAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkoZmFsc2UpO1xuICAgIGlmICh0aGlzLmVkaXRCdXR0b24/LmhhbmRsZXIpIHRoaXMuZWRpdEJ1dHRvbi5oYW5kbGVyKCk7XG4gIH1cblxuICBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZVxuICAgICAgLiRoYXNWYWx1ZXNDaGFuZ2VkKClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKGhhc0NoYW5nZWQgPT4ge1xuICAgICAgICBpZiAoaGFzQ2hhbmdlZCkge1xuICAgICAgICAgIHRoaXMub3BlbkNhbmNlbERpYWxvZygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuY2FuY2VsUGVuZGluZ0FzeW5jVmFsaWRhdGlvbigpO1xuICAgICAgICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBzYXZlKCk6IHZvaWQge1xuICAgIGNvbnN0IGhhbmRsZVN1Y2Nlc3MgPSAoKTogdm9pZCA9PiB7XG4gICAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLmNhbmNlbFBlbmRpbmdBc3luY1ZhbGlkYXRpb24oKTtcbiAgICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seSh0cnVlKTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UudGFrZUZvcm1Hcm91cHNTbmFwc2hvdCgpO1xuICAgIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNhdmVCdXR0b24/LmhhbmRsZXI/Lih0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLmdldEFsbFZhbHVlcygpKTtcblxuICAgIGlzT2JzZXJ2YWJsZShyZXN1bHQpID8gcmVzdWx0LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChvazogYm9vbGVhbikgPT4gb2sgJiYgaGFuZGxlU3VjY2VzcygpKSA6IGhhbmRsZVN1Y2Nlc3MoKTtcbiAgfVxuXG4gIGNoYW5nZUNvbnRleHQoXG4gICAgY29udGV4dDogUWRQYWdlQ29udGV4dENvbmZpZyxcbiAgICBzZWxlY3Rpb246IFFkUGFnZVNlbGVjdGVkQ29udGV4dCB8IFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdLFxuICAgIGV2ZW50OiBNb3VzZUV2ZW50XG4gICk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKGNvbnRleHQudHlwZSA9PT0gJ2N1c3RvbScpIHtcbiAgICAgIGNvbnRleHQub3BlbigpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihRZENvbnRleHRTZWxlY3REaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHsgY29uZmlnOiBjb250ZXh0LCBzZWxlY3Rpb24gfSxcbiAgICAgIGRpYWxvZ1NpemU6IFFkRGlhbG9nU2l6ZS5TbWFsbCxcbiAgICAgIHRpdGxlOiBjb250ZXh0LnRpdGxlXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuY2xvc2VkLnN1YnNjcmliZSgoZGF0YTogeyBzZWxlY3RlZDogUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10gfSkgPT4ge1xuICAgICAgaWYgKGRhdGEpIHRoaXMuY29udGV4dFNlcnZpY2Uuc2V0VmFsdWUoY29udGV4dC5pZCwgZGF0YS5zZWxlY3RlZCk7XG4gICAgfSk7XG4gIH1cblxuICBjbGVhckNvbnRleHQoY29udGV4dDogUWRQYWdlQ29udGV4dENvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2UuY2xlYXIoY29udGV4dC5pZCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwUmVzb2x2ZXJUcmlnZ2VyKCk6IHZvaWQge1xuICAgIHRoaXMucmVzb2x2ZXJUcmlnZ2VyU2VydmljZVxuICAgICAgLnNob3VsZFRyaWdnZXJSZXNvbHZlcih0aGlzLnBhZ2VPYmplY3RSZXNvbHZlci5jb25maWc/LnRyaWdnZXJPbiA/PyAncGF0aFBhcmFtc0NoYW5nZScpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpLFxuICAgICAgICBmaWx0ZXIoc2hvdWxkVHJpZ2dlciA9PiBzaG91bGRUcmlnZ2VyKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX2lzTG9hZGluZ1N1YmplY3QubmV4dCh0cnVlKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnBhZ2VPYmplY3RSZXNvbHZlci5yZXNvbHZlKCkpLFxuICAgICAgICB0YXAob2JqZWN0RGF0YSA9PiB0aGlzLl9wYWdlT2JqZWN0RGF0YVN1YmplY3QubmV4dChvYmplY3REYXRhKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9pc0xvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UudGFrZUZvcm1Hcm91cHNTbmFwc2hvdCgpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q29udGV4dHMoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0cyQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmNvbnRleHRzJC5waXBlKFxuICAgICAgbWFwKGNvbnRleHRzID0+IGNvbnRleHRzLmZpbHRlcihjb250ZXh0ID0+IGNvbnRleHQuc2VsZWN0aW9uIHx8IHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnb3ZlcnZpZXcnKSksXG4gICAgICBtYXAoY29udGV4dHMgPT5cbiAgICAgICAgY29udGV4dHM/Lm1hcCgoeyBzZWxlY3Rpb24sIGNvbnRleHQgfSkgPT4gKHtcbiAgICAgICAgICBsYWJlbDogY29udGV4dC5sYWJlbC5pMThuLFxuICAgICAgICAgIHZhbHVlOiBBcnJheS5pc0FycmF5KHNlbGVjdGlvbj8udmFsdWUpXG4gICAgICAgICAgICA/IHNlbGVjdGlvbj8udmFsdWUuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gbnVsbCAmJiBpdGVtICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICA6IHNlbGVjdGlvbj8udmFsdWUgIT09IG51bGwgJiYgc2VsZWN0aW9uPy52YWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IFtzZWxlY3Rpb24/LnZhbHVlXVxuICAgICAgICAgICAgOiAoW10gYXMgUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10pLFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgc2VsZWN0aW9uOiBzZWxlY3Rpb24/LnZhbHVlID8/IFtdXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUN1c3RvbUFjdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnaW5zcGVjdCcpIHtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbk1vZGUgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZz8ub3BlcmF0aW9uTW9kZTtcblxuICAgICAgaWYgKG9wZXJhdGlvbk1vZGUpIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seShvcGVyYXRpb25Nb2RlID09PSAndmlldycpO1xuXG4gICAgICB0aGlzLl9jdXN0b21BY3Rpb25zU3ViPy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5fY3VzdG9tQWN0aW9uc1N1YiA9IHRoaXMucGFnZVN0b3JlU2VydmljZS5pc1ZpZXdvbmx5JFxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoaXNWaWV3b25seSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnKSB7XG4gICAgICAgICAgICAodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpLm9wZXJhdGlvbk1vZGUgPSBpc1ZpZXdvbmx5ID8gJ3ZpZXcnIDogJ2VkaXQnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGN1c3RvbUFjdGlvbnMgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZz8uY3VzdG9tQWN0aW9ucyA/PyBbXTtcbiAgICAgICAgICB0aGlzLl9jdXN0b21BY3Rpb25zU3ViamVjdC5uZXh0KHRoaXMuZ2V0Q3VzdG9tQWN0aW9uc0J5TW9kZShjdXN0b21BY3Rpb25zLCBpc1ZpZXdvbmx5ID8gJ3ZpZXcnIDogJ2VkaXQnKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdlVHlwZSAhPT0gJ2luc3BlY3QnKVxuICAgICAgdGhpcy5fY3VzdG9tQWN0aW9uc1N1YmplY3QubmV4dCh7IGFjdGlvbnM6IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnPy5jdXN0b21BY3Rpb25zID8/IFtdIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXN0b21BY3Rpb25zQnlNb2RlKFxuICAgIGN1c3RvbUFjdGlvbnM6IChRZE1lbnVCdXR0b25BY3Rpb25Db25maWcgJiB7IG9wZXJhdGlvbk1vZGU/OiBRZEluc3BlY3RPcGVyYXRpb25Nb2RlIH0pW10sXG4gICAgbW9kZTogUWRJbnNwZWN0T3BlcmF0aW9uTW9kZVxuICApOiBRZE1lbnVCdXR0b25Db25maWcge1xuICAgIGNvbnN0IGFjdGlvbnMgPSBjdXN0b21BY3Rpb25zXG4gICAgICAuZmlsdGVyKGFjdGlvbiA9PiAhYWN0aW9uLm9wZXJhdGlvbk1vZGUgfHwgYWN0aW9uLm9wZXJhdGlvbk1vZGUgPT09IG1vZGUpXG4gICAgICAubWFwKGFjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IG1lbnVCdXR0b25BY3Rpb24gPSB7IC4uLmFjdGlvbiB9O1xuICAgICAgICBkZWxldGUgbWVudUJ1dHRvbkFjdGlvbi5vcGVyYXRpb25Nb2RlO1xuICAgICAgICByZXR1cm4gbWVudUJ1dHRvbkFjdGlvbjtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgYWN0aW9ucyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ2FuY2VsRGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nXG4gICAgICAub3BlbihRZFBhZ2VDYW5jZWxDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgdGl0bGU6IHsgaTE4bjogJ2kxOG4ucWQucGFnZS5jYW5jZWwuY29uZmlybWF0aW9uLmRpYWxvZy50aXRsZScgfSxcbiAgICAgICAgZGlhbG9nU2l6ZTogUWREaWFsb2dTaXplLlNtYWxsLFxuICAgICAgICBkYXRhOiB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZ1xuICAgICAgfSlcbiAgICAgIC5jbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKGNvbmZpcm0gPT4ge1xuICAgICAgICBpZiAoY29uZmlybSkge1xuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UucmVzdG9yZUZvcm1Hcm91cHNGcm9tU25hcHNob3QoKTtcbiAgICAgICAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibG9hZGluZy1vdmVybGF5XCIgKm5nSWY9XCJpc0xvYWRpbmckIHwgYXN5bmNcIj48cWQtc3Bpbm5lcj48L3FkLXNwaW5uZXI+PC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJvYmplY3QtaGVhZGVyLXRvcFwiPlxuICA8aGVhZGVyIGNsYXNzPVwib2JqZWN0LWhlYWRlci10aXRsZVwiPnt7IGNvbmZpZy50aXRsZS5pMThuIHwgdHJhbnNsYXRlIH19PC9oZWFkZXI+XG4gIDxkaXYgY2xhc3M9XCJvYmplY3QtaGVhZGVyLXRvb2xiYXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLWljb25cIiBkYXRhLXRlc3QtaWQ9XCJhcmNoaXZlLWJ1dHRvblwiPlxuICAgICAgPHFkLWljb25cbiAgICAgICAgKm5nSWY9XCJzaG93QXJjaGl2ZSQgfCBhc3luY1wiXG4gICAgICAgIChjbGljayk9XCJhcmNoaXZlQnV0dG9uPy5oYW5kbGVyKClcIlxuICAgICAgICBjbGFzcz1cImhlYWRlci1hY3Rpb24taWNvblwiXG4gICAgICAgIFtpY29uXT1cIidyZXN1bHROZXcnXCJcbiAgICAgID48L3FkLWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLWljb25cIiBkYXRhLXRlc3QtaWQ9XCJkZWxldGUtYnV0dG9uXCI+XG4gICAgICA8cWQtaWNvblxuICAgICAgICBjbGFzcz1cImhlYWRlci1hY3Rpb24taWNvblwiXG4gICAgICAgICpuZ0lmPVwic2hvd0RlbGV0ZSQgfCBhc3luY1wiXG4gICAgICAgIChjbGljayk9XCJkZWxldGVCdXR0b24/LmhhbmRsZXIoKVwiXG4gICAgICAgIFtpY29uXT1cIid0cmFzaCdcIlxuICAgICAgPjwvcWQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93RWRpdCQgfCBhc3luY1wiIHFkQnV0dG9uIChjbGljayk9XCJlZGl0KClcIiBkYXRhLXRlc3QtaWQ9XCJlZGl0LWJ1dHRvblwiPlxuICAgICAge3sgZWRpdEJ1dHRvbj8ubGFiZWw/LmkxOG4gfHwgXCJpMThuLnFkLnBhZ2UuaGVhZGVyLmVkaXRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInNob3dDYW5jZWwkIHwgYXN5bmNcIiBxZEJ1dHRvbiBxZEJ1dHRvbkdob3N0IChjbGljayk9XCJjYW5jZWwoKVwiIGRhdGEtdGVzdC1pZD1cImNhbmNlbC1idXR0b25cIj5cbiAgICAgIHt7IGNhbmNlbEJ1dHRvbi5sYWJlbD8uaTE4biB8fCBcImkxOG4ucWQucGFnZS5oZWFkZXIuY2FuY2VsXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwic2hvd1NhdmUkIHwgYXN5bmNcIlxuICAgICAgcWRCdXR0b25cbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgICAgZGF0YS10ZXN0LWlkPVwic2F2ZS1idXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cIigkY2FuU2F2ZSB8IGFzeW5jKSA9PT0gZmFsc2VcIlxuICAgID5cbiAgICAgIHt7IHNhdmVCdXR0b24ubGFiZWw/LmkxOG4gfHwgXCJpMThuLnFkLnBhZ2UuaGVhZGVyLnNhdmVcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUFjdGlvbnMkIHwgYXN5bmMgYXMgY3VzdG9tQWN0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhZGFwdGl2ZU1vZGU7IGVsc2UgYWRhcHRpdmVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIFtxZE1lbnVCdXR0b25dPVwiY3VzdG9tQWN0aW9uc1wiXG4gICAgICAgICAgW2F1dG9TaXplXT1cImZhbHNlXCJcbiAgICAgICAgICBbZGF0YS10ZXN0LWlkXT1cIidwYWdlLSdcIlxuICAgICAgICAgICpuZ0lmPVwiY3VzdG9tQWN0aW9ucy5hY3Rpb25zLmxlbmd0aCA+IDE7IGVsc2Ugc2luZ2xlQnV0dG9uXCJcbiAgICAgICAgICBkYXRhLXRlc3QtaWQ9XCJjdXN0b20tYnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNvbmZpZz8uY3VzdG9tQWN0aW9uc0xhYmVsPy5pMThuIHx8IFwiaTE4bi5xZC5wYWdlLmhlYWRlci5hY3Rpb25zXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVCdXR0b24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihjdXN0b21BY3Rpb25zJCB8IGFzeW5jKS5hY3Rpb25zWzBdIGFzIHNpbmdsZUFjdGlvblwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBxZEJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cInNpbmdsZUFjdGlvbi5oYW5kbGVyICYmICFzaW5nbGVBY3Rpb24uaXNIaWRkZW5cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2luZ2xlQWN0aW9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2luZ2xlQWN0aW9uLmhhbmRsZXIoKVwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdC1pZD1cImN1c3RvbS1idXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBzaW5nbGVBY3Rpb24ubGFiZWw/LmkxOG4gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjYWRhcHRpdmU+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cIihjdXN0b21BY3Rpb25zJCB8IGFzeW5jKT8uYWN0aW9ucy5sZW5ndGggPj0gMVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJhZGFwdGl2ZS1tZW51LWJ1dHRvblwiXG4gICAgICAgICAgW3FkUG9wb3Zlck9uQ2xpY2tdPVwibWVudVwiXG4gICAgICAgICAgW3FkUG9wb3ZlckNsb3NlU3RyYXRlZ3ldPVwiJ29uRXZlcnlDbGljaydcIlxuICAgICAgICAgIFtxZFBvcG92ZXJTdG9wUHJvcGFnYXRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgW3FkUG9wb3Zlck1pbldpZHRoXT1cIjE2MFwiXG4gICAgICAgID5cbiAgICAgICAgICA8cWQtaWNvbiBpY29uPVwib3ZlcmZsb3dNZW51VmVydGljYWxcIj48L3FkLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbWVudT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGN1c3RvbUFjdGlvbnMuYWN0aW9uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICBjbGFzcz1cImFkYXB0aXZlLW1lbnUtZW50cnlcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5oYW5kbGVyKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGFjdGlvbi5sYWJlbC5pMThuIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldHNcIiBbbmdDbGFzc109XCJ7IGFtb25nVGhlbXNlbHZlczogYWRhcHRpdmVNb2RlICYmICFmYWNldHNDb2xsYXBzZWQgfVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZU9iamVjdERhdGEkIHwgYXN5bmMgYXMgZGF0YVwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldFwiXG4gICAgICAqbmdGb3I9XCJsZXQgZmFjZXQgb2YgaGVhZGVyRmFjZXRzIHwgc2xpY2UgOiAwIDogKGFkYXB0aXZlTW9kZSAmJiBmYWNldHNDb2xsYXBzZWQgPyAyIDogaGVhZGVyRmFjZXRzPy5sZW5ndGggPz8gMClcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctZmFjZXQtJyArIGZhY2V0Lm5hbWVcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmYWNldC1sYWJlbFwiPnt7IGZhY2V0LmxhYmVsLmkxOG4gfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgIDxxZC1keW5hbWljLWZhY2V0IGNsYXNzPVwiZHluYW1pYy1mYWNldFwiIFtmYWNldF09XCJmYWNldFwiIFtkYXRhXT1cImRhdGFcIj48L3FkLWR5bmFtaWMtZmFjZXQ+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29uZmlnLmhpZGVDb250ZXh0cyAmJiBjb250ZXh0cyQgfCBhc3luYyBhcyBjb250ZXh0c1wiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldFwiXG4gICAgICAqbmdGb3I9XCJcbiAgICAgICAgbGV0IGNvbnRleHQgb2YgY29udGV4dHNcbiAgICAgICAgICB8IHNsaWNlIDogMCA6IChhZGFwdGl2ZU1vZGUgJiYgZmFjZXRzQ29sbGFwc2VkID8gMiAtIChoZWFkZXJGYWNldHM/Lmxlbmd0aCA/PyAwKSA6IGNvbnRleHRzLmxlbmd0aCk7XG4gICAgICAgIGxldCBpbmRleCA9IGluZGV4O1xuICAgICAgICBsZXQgZmlyc3QgPSBmaXJzdFxuICAgICAgXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgaGFzRGl2aWRlcjogaGVhZGVyRmFjZXRzICYmIGZpcnN0IH1cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmYWNldC1sYWJlbFwiPnt7IGNvbnRleHQubGFiZWwgfCB0cmFuc2xhdGUgfX08L2Rpdj5cblxuICAgICAgPHNwYW4gKm5nSWY9XCJjb250ZXh0LnZhbHVlLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwibm8tc2VsZWN0ZWQtY29udGV4dFwiPnt7XG4gICAgICAgIFwiaTE4bi5xZC5wYWdlLmNvbnRleHQubm9TZWxlY3Rpb25QbGFjZWhvbGRlclwiIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvc3Bhbj5cblxuICAgICAgPHNwYW4gKm5nSWY9XCJjb250ZXh0LnZhbHVlLmxlbmd0aCAhPT0gMFwiPlxuICAgICAgICA8cWQtY2hpcCBzdGF0ZT1cIm5vbmVcIiBbY2xvc2VdPVwiaXNDb250ZXh0U2VsZWN0YWJsZVwiIChjbG9zZUNsaWNrRW1pdHRlcik9XCJjbGVhckNvbnRleHQoY29udGV4dC5jb250ZXh0KVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbCBvZiBjb250ZXh0LnZhbHVlOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgIHt7IHZhbC5sYWJlbC5pMThuIHwgdHJhbnNsYXRlIH19PHNwYW4gKm5nSWY9XCIhbGFzdFwiPiwgPC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3FkLWNoaXA+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXNDb250ZXh0U2VsZWN0YWJsZSAmJiAoIWZhY2V0c0NvbGxhcHNlZCB8fCAhYWRhcHRpdmVNb2RlKVwiIGNsYXNzPVwic2VsZWN0LWJ1dHRvblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgcWRCdXR0b25cbiAgICAgICAgICBxZEJ1dHRvbkxpbmtcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlQ29udGV4dChjb250ZXh0LmNvbnRleHQsIGNvbnRleHQuc2VsZWN0aW9uLCAkZXZlbnQpXCJcbiAgICAgICAgICBbZGF0YS10ZXN0LWlkXT1cIidvYmplY3QtaGVhZGVyLXNlbGVjdC1jb250ZXh0LScgKyBjb250ZXh0LmNvbnRleHQuaWRcIlxuICAgICAgICA+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIGNvbnRleHQudmFsdWUubGVuZ3RoICE9PSAwXG4gICAgICAgICAgICAgID8gKFwiaTE4bi5xZC5wYWdlLmNvbnRleHQuYnV0dG9uLmNoYW5nZVwiIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICA6IChcImkxOG4ucWQucGFnZS5jb250ZXh0LmJ1dHRvbi5zZWxlY3RcIiB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPHNwYW4gY2xhc3M9XCJmYWNldHMtdG9nZ2xlclwiICpuZ0lmPVwiYWRhcHRpdmVNb2RlICYmIGhlYWRlckZhY2V0cy5sZW5ndGggKyAoY29udGV4dHMkIHwgYXN5bmMpLmxlbmd0aCA+IDJcIj5cbiAgICA8c3BhbiAqbmdJZj1cImZhY2V0c0NvbGxhcHNlZFwiPit7eyBoZWFkZXJGYWNldHMubGVuZ3RoICsgKGNvbnRleHRzJCB8IGFzeW5jKS5sZW5ndGggLSAyIH19PC9zcGFuPlxuICAgIDxidXR0b24gcWRJY29uQnV0dG9uPlxuICAgICAgPHFkLWljb24gW2ljb25dPVwiZmFjZXRzQ29sbGFwc2VkID8gJ2N0cmxEb3duJyA6ICdjdHJsVG9wJ1wiPjwvcWQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG4iXX0=
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFjLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUYsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFnQmxJLE9BQU8sRUFBRSw2QkFBNkIsRUFBd0IsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FB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LElBQUksQ0FBQyxDQUFDO1lBQzdDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7dUdBbldVLDJCQUEyQixrQkFnSmhCLDZCQUE2QjsyRkFoSnhDLDJCQUEyQix5VUMvQ3hDLGloTUErSkE7OzJGRGhIYSwyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUU7OzBCQWtKbEQsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkI7OzBCQUNoRCxRQUFROzswQkFDUixRQUFROzhLQWhKWCxNQUFNO3NCQURMLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUl6QixhQUFhO3NCQURaLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUdGLE1BQU07c0JBQTVCLEtBQUs7dUJBQUMsY0FBYztnQkFHakIsVUFBVTtzQkFEYixXQUFXO3VCQUFDLGlCQUFpQjtnQkFNOUIsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBRZE1lbnVCdXR0b25BY3Rpb25Db25maWcsIFFkTWVudUJ1dHRvbkNvbmZpZyB9IGZyb20gJy4uLy4uL2J1dHRvbi9tb2RlbC9idXR0b24tY29uZmlnJztcbmltcG9ydCB7IFFkRGlhbG9nQ29tcG9uZW50LCBRZERpYWxvZ1NlcnZpY2UsIFFkRGlhbG9nU2l6ZSB9IGZyb20gJy4uLy4uL2RpYWxvZy9kaWFsb2cubW9kdWxlJztcbmltcG9ydCB7IFFkUGFnZUNhbmNlbENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NhbmNlbC1jb25maXJtYXRpb24tZGlhbG9nL3BhZ2UtY2FuY2VsLWNvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIFFkSW5zcGVjdE9wZXJhdGlvbk1vZGUsXG4gIFFkUGFnZUNvbmZpZyxcbiAgUWRQYWdlQ29uZmlnQ3JlYXRlLFxuICBRZFBhZ2VDb25maWdDdXN0b20sXG4gIFFkUGFnZUNvbmZpZ0luc3BlY3QsXG4gIFFkUGFnZUNvbnRleHRDb25maWcsXG4gIFFkUGFnZVNlbGVjdGVkQ29udGV4dCxcbiAgUWRQYWdlVHlwZUluc3BlY3RDb25maWdcbn0gZnJvbSAnLi4vbW9kZWwvcGFnZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIFFkRmFjZXRPcHRpb25NdWx0aVNlbGVjdCxcbiAgUWRGYWNldE9wdGlvblNpbmdsZVNlbGVjdCxcbiAgUWRQYWdlSGVhZGVyRmFjZXRDb25maWdcbn0gZnJvbSAnLi4vbW9kZWwvcGFnZS1oZWFkZXItZmFjZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFFEX1BBR0VfT0JKRUNUX1JFU09MVkVSX1RPS0VOLCBRZFBhZ2VPYmplY3RSZXNvbHZlciB9IGZyb20gJy4uL21vZGVsL3BhZ2Utb2JqZWN0LXJlc29sdmVyJztcbmltcG9ydCB7IFFkQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFFkRm9ybUdyb3VwTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvZm9ybS1ncm91cC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRQYWdlU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3NlcnZpY2VzL3BhZ2Utc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBRZFJlc29sdmVyVHJpZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvcmVzb2x2ZXItdHJpZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkQ29udGV4dFNlbGVjdERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29udGV4dC1zZWxlY3QtZGlhbG9nL2NvbnRleHQtc2VsZWN0LWRpYWxvZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1wYWdlLW9iamVjdC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7ICdbc3R5bGUuYm9yZGVyQm90dG9tXSc6ICdib3JkZXJCb3R0b21TdHlsZScgfVxufSlcbmV4cG9ydCBjbGFzcyBRZFBhZ2VPYmplY3RIZWFkZXJDb21wb25lbnQ8VCBleHRlbmRzIG9iamVjdD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgY29uZmlnITogUWRQYWdlQ29uZmlnPFQ+O1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGhhc05hdmlnYXRpb24gPSBmYWxzZTtcblxuICBASW5wdXQoJ2RhdGEtdGVzdC1pZCcpIHRlc3RJZCA9ICdwYWdlLW9iamVjdC1oZWFkZXInO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaW4tZGlhbG9nJylcbiAgZ2V0IGlzSW5EaWFsb2coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5kaWFsb2dDb21wb25lbnQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHRvZ2dsZUZhY2V0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWRhcHRpdmVNb2RlIHx8ICh0aGlzLmhlYWRlckZhY2V0cz8ubGVuZ3RoID8/IDApID49IDIpIHJldHVybjtcblxuICAgIHRoaXMuZmFjZXRzQ29sbGFwc2VkID0gIXRoaXMuZmFjZXRzQ29sbGFwc2VkO1xuICB9XG5cbiAgZ2V0IGFkYXB0aXZlTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnIGFzIFFkUGFnZUNvbmZpZ0luc3BlY3QgfCBRZFBhZ2VDb25maWdDdXN0b20pLmFkYXB0aXZlTW9kZTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhZ2VPYmplY3REYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VD4oe30gYXMgVCk7XG4gIHByaXZhdGUgX2lzTG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBfY3VzdG9tQWN0aW9uc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFFkTWVudUJ1dHRvbkNvbmZpZz4oeyBhY3Rpb25zOiBbXSB9KTtcbiAgcHJpdmF0ZSBfY3VzdG9tQWN0aW9uc1N1Yj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBfZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcGFnZU9iamVjdERhdGEkOiBPYnNlcnZhYmxlPFQ+ID0gdGhpcy5fcGFnZU9iamVjdERhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBpc0xvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5faXNMb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRlYm91bmNlVGltZSg0MDApKTtcbiAgY3VzdG9tQWN0aW9ucyQ6IE9ic2VydmFibGU8UWRNZW51QnV0dG9uQ29uZmlnPiA9IHRoaXMuX2N1c3RvbUFjdGlvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGZhY2V0c0NvbGxhcHNlZCA9IHRydWU7XG5cbiAgY29udGV4dHMkITogT2JzZXJ2YWJsZTxcbiAgICB7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgdmFsdWU6IFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdO1xuICAgICAgY29udGV4dDogUWRQYWdlQ29udGV4dENvbmZpZztcbiAgICAgIHNlbGVjdGlvbjogUWRQYWdlU2VsZWN0ZWRDb250ZXh0IHwgUWRQYWdlU2VsZWN0ZWRDb250ZXh0W107XG4gICAgfVtdXG4gID47XG5cbiAgZ2V0IGJvcmRlckJvdHRvbVN0eWxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFnZVR5cGUgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZTtcblxuICAgIHJldHVybiBwYWdlVHlwZSA9PT0gJ2NyZWF0ZScgfHxcbiAgICAgIChwYWdlVHlwZSA9PT0gJ2luc3BlY3QnICYmIHRoaXMuaGFzTmF2aWdhdGlvbikgfHxcbiAgICAgIChwYWdlVHlwZSA9PT0gJ2N1c3RvbScgJiYgdGhpcy5oYXNOYXZpZ2F0aW9uKSB8fFxuICAgICAgKHBhZ2VUeXBlID09PSAnb3ZlcnZpZXcnICYmIHRoaXMuaGFzTmF2aWdhdGlvbilcbiAgICAgID8gJ25vbmUgIWltcG9ydGFudCdcbiAgICAgIDogJyc7XG4gIH1cblxuICBnZXQgc2hvd0VkaXQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5zcGVjdEFuZFZpZXdNb2RlJC5waXBlKG1hcCh2ID0+IHYgJiYgIXRoaXMuaGlkZUVkaXQpKTtcbiAgfVxuXG4gIGdldCBzaG93RGVsZXRlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0luc3BlY3RBbmRWaWV3TW9kZSQucGlwZShtYXAodiA9PiB2ICYmICEhdGhpcy5kZWxldGVCdXR0b24pKTtcbiAgfVxuXG4gIGdldCBzaG93QXJjaGl2ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gdiAmJiAhIXRoaXMuYXJjaGl2ZUJ1dHRvbikpO1xuICB9XG5cbiAgZ2V0IHNob3dDYW5jZWwkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5zcGVjdEFuZFZpZXdNb2RlJC5waXBlKG1hcCh2ID0+ICF2ICYmICEhdGhpcy5jYW5jZWxCdXR0b24gJiYgIXRoaXMuaXNDcmVhdGUpKTtcbiAgfVxuXG4gIGdldCBzaG93U2F2ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gIXYgJiYgISF0aGlzLnNhdmVCdXR0b24pKTtcbiAgfVxuXG4gIGdldCBoZWFkZXJGYWNldHMoKTogUWRQYWdlSGVhZGVyRmFjZXRDb25maWc8VD5bXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuaGFzSGVhZGVyRmFjZXRzKHRoaXMuY29uZmlnKSkgcmV0dXJuIHRoaXMuY29uZmlnLmhlYWRlckZhY2V0cztcbiAgfVxuXG4gIGdldCBpc0luc3BlY3RBbmRWaWV3TW9kZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucGFnZVN0b3JlU2VydmljZS5pc1ZpZXdvbmx5JC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpLFxuICAgICAgbWFwKGlzVmlldyA9PiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2luc3BlY3QnICYmIGlzVmlldylcbiAgICApO1xuICB9XG5cbiAgZ2V0IGlzQ3JlYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2NyZWF0ZSc7XG4gIH1cblxuICBnZXQgaXNPdmVydmlldygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdvdmVydmlldyc7XG4gIH1cblxuICBnZXQgaXNDb250ZXh0U2VsZWN0YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdvdmVydmlldycgfHwgdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdjdXN0b20nO1xuICB9XG5cbiAgZ2V0IGVkaXRCdXR0b24oKTogUWRQYWdlVHlwZUluc3BlY3RDb25maWdbJ2VkaXQnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmVkaXQ7XG4gIH1cblxuICBnZXQgZGVsZXRlQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydkZWxldGUnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmRlbGV0ZTtcbiAgfVxuXG4gIGdldCBhcmNoaXZlQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydhcmNoaXZlJ10ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5hcmNoaXZlO1xuICB9XG5cbiAgZ2V0IGNhbmNlbEJ1dHRvbigpOiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1snY2FuY2VsJ10ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5jYW5jZWw7XG4gIH1cblxuICBnZXQgc2F2ZUJ1dHRvbigpOiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1snc2F2ZSddIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uc2F2ZTtcbiAgfVxuXG4gIGdldCBoaWRlRWRpdCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyB8IHVuZGVmaW5lZDtcblxuICAgIGlmICghY29uZmlnKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGNvbmZpZy5vcGVyYXRpb25Nb2RlICE9PSAnZWRpdCcpIHJldHVybiBjb25maWcuaGlkZUVkaXQgPT09IHRydWU7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXQgaGFzVmFsdWVzQ2hhbmdlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuJGhhc1ZhbHVlc0NoYW5nZWQoKTtcbiAgfVxuXG4gIGdldCAkY2FuU2F2ZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uc2F2ZT8uaGFzVmFsaWRhdGlvbiA9PT0gZmFsc2UpXG4gICAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS4kaGFzVmFsdWVzQ2hhbmdlZCgpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS4kYXJlRm9ybUdyb3Vwc1ZhbGlkKCksXG4gICAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLiRoYXNWYWx1ZXNDaGFuZ2VkKClcbiAgICBdKS5waXBlKG1hcCgoW2lzVmFsaWQsIGhhc0NoYW5nZXNdKSA9PiBpc1ZhbGlkICYmIGhhc0NoYW5nZXMpKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUURfUEFHRV9PQkpFQ1RfUkVTT0xWRVJfVE9LRU4pIHByaXZhdGUgcGFnZU9iamVjdFJlc29sdmVyOiBRZFBhZ2VPYmplY3RSZXNvbHZlcjxUPixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlOiBRZEZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGlhbG9nQ29tcG9uZW50OiBRZERpYWxvZ0NvbXBvbmVudCxcbiAgICBwcml2YXRlIGRpYWxvZzogUWREaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IFFkQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXNvbHZlclRyaWdnZXJTZXJ2aWNlOiBRZFJlc29sdmVyVHJpZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYWdlU3RvcmVTZXJ2aWNlOiBRZFBhZ2VTdG9yZVNlcnZpY2U8VD5cbiAgKSB7XG4gICAgaWYgKHBhZ2VPYmplY3RSZXNvbHZlcikge1xuICAgICAgY29uc3Qgb3JpZ2luYWxVcGRhdGVNZXRhZGF0YSA9IHRoaXMucGFnZU9iamVjdFJlc29sdmVyLnVwZGF0ZU1ldGFkYXRhPy5iaW5kKHRoaXMucGFnZU9iamVjdFJlc29sdmVyKTtcbiAgICAgIHRoaXMucGFnZU9iamVjdFJlc29sdmVyLnVwZGF0ZU1ldGFkYXRhID0gKHByb3BzOiBQYXJ0aWFsPFQ+KTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlTWV0YWRhdGEocHJvcHMpO1xuICAgICAgICBpZiAob3JpZ2luYWxVcGRhdGVNZXRhZGF0YSkgb3JpZ2luYWxVcGRhdGVNZXRhZGF0YShwcm9wcyk7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNldHVwUmVzb2x2ZXJUcmlnZ2VyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0Q29udGV4dHMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2VPYmplY3RSZXNvbHZlcikgdGhpcy5zZXR1cFJlc29sdmVyVHJpZ2dlcigpO1xuXG4gICAgdGhpcy51cGRhdGVDdXN0b21BY3Rpb25zKCk7XG4gICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS50YWtlRm9ybUdyb3Vwc1NuYXBzaG90KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddICYmICFjaGFuZ2VzWydjb25maWcnXS5maXJzdENoYW5nZSkgdGhpcy51cGRhdGVDdXN0b21BY3Rpb25zKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkoZmFsc2UpO1xuXG4gICAgdGhpcy5fZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgdXBkYXRlTWV0YWRhdGEobWV0YWRhdGE6IFBhcnRpYWw8VD4pOiB2b2lkIHtcbiAgICBjb25zdCB1cGRhdGVkTWV0YWRhdGEgPSB7IC4uLnRoaXMuX3BhZ2VPYmplY3REYXRhU3ViamVjdC52YWx1ZSwgLi4ubWV0YWRhdGEgfTtcbiAgICB0aGlzLl9wYWdlT2JqZWN0RGF0YVN1YmplY3QubmV4dCh1cGRhdGVkTWV0YWRhdGEpO1xuICB9XG5cbiAgaGFuZGxlQWN0aW9uKGZhY2V0OiBRZEZhY2V0T3B0aW9uU2luZ2xlU2VsZWN0IHwgUWRGYWNldE9wdGlvbk11bHRpU2VsZWN0KTogdm9pZCB7XG4gICAgZmFjZXQ/LmFjdGlvbj8uaGFuZGxlcigpO1xuICB9XG5cbiAgaGFzSGVhZGVyRmFjZXRzKFxuICAgIGNvbmZpZzogUWRQYWdlQ29uZmlnPFQ+XG4gICk6IGNvbmZpZyBpcyBRZFBhZ2VDb25maWdDcmVhdGU8VD4gfCBRZFBhZ2VDb25maWdJbnNwZWN0PFQ+IHwgUWRQYWdlQ29uZmlnQ3VzdG9tPFQ+IHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnIGFzIHsgaGVhZGVyRmFjZXRzOiBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZzxUPltdIH0pLmhlYWRlckZhY2V0cyAhPSBudWxsO1xuICB9XG5cbiAgZWRpdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLnRha2VGb3JtR3JvdXBzU25hcHNob3QoKTtcbiAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkoZmFsc2UpO1xuICAgIGlmICh0aGlzLmVkaXRCdXR0b24/LmhhbmRsZXIpIHRoaXMuZWRpdEJ1dHRvbi5oYW5kbGVyKCk7XG4gIH1cblxuICBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZVxuICAgICAgLiRoYXNWYWx1ZXNDaGFuZ2VkKClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKGhhc0NoYW5nZWQgPT4ge1xuICAgICAgICBpZiAoaGFzQ2hhbmdlZCkge1xuICAgICAgICAgIHRoaXMub3BlbkNhbmNlbERpYWxvZygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuY2FuY2VsUGVuZGluZ0FzeW5jVmFsaWRhdGlvbigpO1xuICAgICAgICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBzYXZlKCk6IHZvaWQge1xuICAgIGNvbnN0IGhhbmRsZVN1Y2Nlc3MgPSAoKTogdm9pZCA9PiB7XG4gICAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLmNhbmNlbFBlbmRpbmdBc3luY1ZhbGlkYXRpb24oKTtcbiAgICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seSh0cnVlKTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UudGFrZUZvcm1Hcm91cHNTbmFwc2hvdCgpO1xuICAgIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNhdmVCdXR0b24/LmhhbmRsZXI/Lih0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLmdldEFsbFZhbHVlcygpKTtcblxuICAgIGlzT2JzZXJ2YWJsZShyZXN1bHQpID8gcmVzdWx0LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChvazogYm9vbGVhbikgPT4gb2sgJiYgaGFuZGxlU3VjY2VzcygpKSA6IGhhbmRsZVN1Y2Nlc3MoKTtcbiAgfVxuXG4gIGNoYW5nZUNvbnRleHQoXG4gICAgY29udGV4dDogUWRQYWdlQ29udGV4dENvbmZpZyxcbiAgICBzZWxlY3Rpb246IFFkUGFnZVNlbGVjdGVkQ29udGV4dCB8IFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdLFxuICAgIGV2ZW50OiBNb3VzZUV2ZW50XG4gICk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKGNvbnRleHQudHlwZSA9PT0gJ2N1c3RvbScpIHtcbiAgICAgIGNvbnRleHQub3BlbigpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihRZENvbnRleHRTZWxlY3REaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHsgY29uZmlnOiBjb250ZXh0LCBzZWxlY3Rpb24gfSxcbiAgICAgIGRpYWxvZ1NpemU6IFFkRGlhbG9nU2l6ZS5TbWFsbCxcbiAgICAgIHRpdGxlOiBjb250ZXh0LnRpdGxlXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuY2xvc2VkLnN1YnNjcmliZSgoZGF0YTogeyBzZWxlY3RlZDogUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10gfSkgPT4ge1xuICAgICAgaWYgKGRhdGEpIHRoaXMuY29udGV4dFNlcnZpY2Uuc2V0VmFsdWUoY29udGV4dC5pZCwgZGF0YS5zZWxlY3RlZCk7XG4gICAgfSk7XG4gIH1cblxuICBjbGVhckNvbnRleHQoY29udGV4dDogUWRQYWdlQ29udGV4dENvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2UuY2xlYXIoY29udGV4dC5pZCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwUmVzb2x2ZXJUcmlnZ2VyKCk6IHZvaWQge1xuICAgIHRoaXMucmVzb2x2ZXJUcmlnZ2VyU2VydmljZVxuICAgICAgLnNob3VsZFRyaWdnZXJSZXNvbHZlcih0aGlzLnBhZ2VPYmplY3RSZXNvbHZlci5jb25maWc/LnRyaWdnZXJPbiA/PyAncGF0aFBhcmFtc0NoYW5nZScpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpLFxuICAgICAgICBmaWx0ZXIoc2hvdWxkVHJpZ2dlciA9PiBzaG91bGRUcmlnZ2VyKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX2lzTG9hZGluZ1N1YmplY3QubmV4dCh0cnVlKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnBhZ2VPYmplY3RSZXNvbHZlci5yZXNvbHZlKCkpLFxuICAgICAgICB0YXAob2JqZWN0RGF0YSA9PiB0aGlzLl9wYWdlT2JqZWN0RGF0YVN1YmplY3QubmV4dChvYmplY3REYXRhKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9pc0xvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UudGFrZUZvcm1Hcm91cHNTbmFwc2hvdCgpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q29udGV4dHMoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0cyQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmNvbnRleHRzJC5waXBlKFxuICAgICAgbWFwKGNvbnRleHRzID0+IGNvbnRleHRzLmZpbHRlcihjb250ZXh0ID0+IGNvbnRleHQuc2VsZWN0aW9uIHx8IHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnb3ZlcnZpZXcnKSksXG4gICAgICBtYXAoY29udGV4dHMgPT5cbiAgICAgICAgY29udGV4dHM/Lm1hcCgoeyBzZWxlY3Rpb24sIGNvbnRleHQgfSkgPT4gKHtcbiAgICAgICAgICBsYWJlbDogY29udGV4dC5sYWJlbC5pMThuLFxuICAgICAgICAgIHZhbHVlOiBBcnJheS5pc0FycmF5KHNlbGVjdGlvbj8udmFsdWUpXG4gICAgICAgICAgICA/IHNlbGVjdGlvbj8udmFsdWUuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gbnVsbCAmJiBpdGVtICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICA6IHNlbGVjdGlvbj8udmFsdWUgIT09IG51bGwgJiYgc2VsZWN0aW9uPy52YWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IFtzZWxlY3Rpb24/LnZhbHVlXVxuICAgICAgICAgICAgOiAoW10gYXMgUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10pLFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgc2VsZWN0aW9uOiBzZWxlY3Rpb24/LnZhbHVlID8/IFtdXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUN1c3RvbUFjdGlvbnMoKTogdm9pZCB7XG4gICAgLy8gMS4gSGFuZGxlIG5vbi1pbnNwZWN0IHBhZ2VzIGVhcmx5XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2VUeXBlICE9PSAnaW5zcGVjdCcpIHtcbiAgICAgIGNvbnN0IGFjdGlvbnMgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZz8uY3VzdG9tQWN0aW9ucyA/PyBbXTtcbiAgICAgIHRoaXMuX2N1c3RvbUFjdGlvbnNTdWJqZWN0Lm5leHQoeyBhY3Rpb25zIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIDIuIFNldHVwIEluc3BlY3Qtc3BlY2lmaWMgbG9naWNcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZztcbiAgICBpZiAoY29uZmlnPy5vcGVyYXRpb25Nb2RlKSB7XG4gICAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkoY29uZmlnLm9wZXJhdGlvbk1vZGUgPT09ICd2aWV3Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5zdWJzY3JpYmVUb1ZpZXdPbmx5TW9kZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1ZpZXdPbmx5TW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jdXN0b21BY3Rpb25zU3ViPy51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fY3VzdG9tQWN0aW9uc1N1YiA9IHRoaXMucGFnZVN0b3JlU2VydmljZS5pc1ZpZXdvbmx5JFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZShpc1ZpZXdvbmx5ID0+IHtcbiAgICAgICAgY29uc3QgbW9kZSA9IGlzVmlld29ubHkgPyAndmlldycgOiAnZWRpdCc7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnO1xuXG4gICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICAoY29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKS5vcGVyYXRpb25Nb2RlID0gbW9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdGlvbnMgPSBjb25maWc/LmN1c3RvbUFjdGlvbnMgPz8gW107XG4gICAgICAgIHRoaXMuX2N1c3RvbUFjdGlvbnNTdWJqZWN0Lm5leHQodGhpcy5nZXRDdXN0b21BY3Rpb25zQnlNb2RlKGFjdGlvbnMsIG1vZGUpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXN0b21BY3Rpb25zQnlNb2RlKFxuICAgIGN1c3RvbUFjdGlvbnM6IChRZE1lbnVCdXR0b25BY3Rpb25Db25maWcgJiB7IG9wZXJhdGlvbk1vZGU/OiBRZEluc3BlY3RPcGVyYXRpb25Nb2RlIH0pW10sXG4gICAgbW9kZTogUWRJbnNwZWN0T3BlcmF0aW9uTW9kZVxuICApOiBRZE1lbnVCdXR0b25Db25maWcge1xuICAgIGNvbnN0IGFjdGlvbnMgPSBjdXN0b21BY3Rpb25zXG4gICAgICAuZmlsdGVyKGFjdGlvbiA9PiAhYWN0aW9uLm9wZXJhdGlvbk1vZGUgfHwgYWN0aW9uLm9wZXJhdGlvbk1vZGUgPT09IG1vZGUpXG4gICAgICAubWFwKGFjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IG1lbnVCdXR0b25BY3Rpb24gPSB7IC4uLmFjdGlvbiB9O1xuICAgICAgICBkZWxldGUgbWVudUJ1dHRvbkFjdGlvbi5vcGVyYXRpb25Nb2RlO1xuICAgICAgICByZXR1cm4gbWVudUJ1dHRvbkFjdGlvbjtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgYWN0aW9ucyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ2FuY2VsRGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nXG4gICAgICAub3BlbihRZFBhZ2VDYW5jZWxDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgdGl0bGU6IHsgaTE4bjogJ2kxOG4ucWQucGFnZS5jYW5jZWwuY29uZmlybWF0aW9uLmRpYWxvZy50aXRsZScgfSxcbiAgICAgICAgZGlhbG9nU2l6ZTogUWREaWFsb2dTaXplLlNtYWxsLFxuICAgICAgICBkYXRhOiB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZ1xuICAgICAgfSlcbiAgICAgIC5jbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKGNvbmZpcm0gPT4ge1xuICAgICAgICBpZiAoY29uZmlybSkge1xuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UucmVzdG9yZUZvcm1Hcm91cHNGcm9tU25hcHNob3QoKTtcbiAgICAgICAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibG9hZGluZy1vdmVybGF5XCIgKm5nSWY9XCJpc0xvYWRpbmckIHwgYXN5bmNcIj48cWQtc3Bpbm5lcj48L3FkLXNwaW5uZXI+PC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJvYmplY3QtaGVhZGVyLXRvcFwiPlxuICA8aGVhZGVyIGNsYXNzPVwib2JqZWN0LWhlYWRlci10aXRsZVwiPnt7IGNvbmZpZy50aXRsZS5pMThuIHwgdHJhbnNsYXRlIH19PC9oZWFkZXI+XG4gIDxkaXYgY2xhc3M9XCJvYmplY3QtaGVhZGVyLXRvb2xiYXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLWljb25cIiBkYXRhLXRlc3QtaWQ9XCJhcmNoaXZlLWJ1dHRvblwiPlxuICAgICAgPHFkLWljb25cbiAgICAgICAgKm5nSWY9XCJzaG93QXJjaGl2ZSQgfCBhc3luY1wiXG4gICAgICAgIChjbGljayk9XCJhcmNoaXZlQnV0dG9uPy5oYW5kbGVyKClcIlxuICAgICAgICBjbGFzcz1cImhlYWRlci1hY3Rpb24taWNvblwiXG4gICAgICAgIFtpY29uXT1cIidyZXN1bHROZXcnXCJcbiAgICAgID48L3FkLWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLWljb25cIiBkYXRhLXRlc3QtaWQ9XCJkZWxldGUtYnV0dG9uXCI+XG4gICAgICA8cWQtaWNvblxuICAgICAgICBjbGFzcz1cImhlYWRlci1hY3Rpb24taWNvblwiXG4gICAgICAgICpuZ0lmPVwic2hvd0RlbGV0ZSQgfCBhc3luY1wiXG4gICAgICAgIChjbGljayk9XCJkZWxldGVCdXR0b24/LmhhbmRsZXIoKVwiXG4gICAgICAgIFtpY29uXT1cIid0cmFzaCdcIlxuICAgICAgPjwvcWQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93RWRpdCQgfCBhc3luY1wiIHFkQnV0dG9uIChjbGljayk9XCJlZGl0KClcIiBkYXRhLXRlc3QtaWQ9XCJlZGl0LWJ1dHRvblwiPlxuICAgICAge3sgZWRpdEJ1dHRvbj8ubGFiZWw/LmkxOG4gfHwgXCJpMThuLnFkLnBhZ2UuaGVhZGVyLmVkaXRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInNob3dDYW5jZWwkIHwgYXN5bmNcIiBxZEJ1dHRvbiBxZEJ1dHRvbkdob3N0IChjbGljayk9XCJjYW5jZWwoKVwiIGRhdGEtdGVzdC1pZD1cImNhbmNlbC1idXR0b25cIj5cbiAgICAgIHt7IGNhbmNlbEJ1dHRvbi5sYWJlbD8uaTE4biB8fCBcImkxOG4ucWQucGFnZS5oZWFkZXIuY2FuY2VsXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwic2hvd1NhdmUkIHwgYXN5bmNcIlxuICAgICAgcWRCdXR0b25cbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgICAgZGF0YS10ZXN0LWlkPVwic2F2ZS1idXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cIigkY2FuU2F2ZSB8IGFzeW5jKSA9PT0gZmFsc2VcIlxuICAgID5cbiAgICAgIHt7IHNhdmVCdXR0b24ubGFiZWw/LmkxOG4gfHwgXCJpMThuLnFkLnBhZ2UuaGVhZGVyLnNhdmVcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUFjdGlvbnMkIHwgYXN5bmMgYXMgY3VzdG9tQWN0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhZGFwdGl2ZU1vZGU7IGVsc2UgYWRhcHRpdmVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIFtxZE1lbnVCdXR0b25dPVwiY3VzdG9tQWN0aW9uc1wiXG4gICAgICAgICAgW2F1dG9TaXplXT1cImZhbHNlXCJcbiAgICAgICAgICBbZGF0YS10ZXN0LWlkXT1cIidwYWdlLSdcIlxuICAgICAgICAgICpuZ0lmPVwiY3VzdG9tQWN0aW9ucy5hY3Rpb25zLmxlbmd0aCA+IDE7IGVsc2Ugc2luZ2xlQnV0dG9uXCJcbiAgICAgICAgICBkYXRhLXRlc3QtaWQ9XCJjdXN0b20tYnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNvbmZpZz8uY3VzdG9tQWN0aW9uc0xhYmVsPy5pMThuIHx8IFwiaTE4bi5xZC5wYWdlLmhlYWRlci5hY3Rpb25zXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVCdXR0b24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihjdXN0b21BY3Rpb25zJCB8IGFzeW5jKS5hY3Rpb25zWzBdIGFzIHNpbmdsZUFjdGlvblwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBxZEJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cInNpbmdsZUFjdGlvbi5oYW5kbGVyICYmICFzaW5nbGVBY3Rpb24uaXNIaWRkZW5cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2luZ2xlQWN0aW9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2luZ2xlQWN0aW9uLmhhbmRsZXIoKVwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdC1pZD1cImN1c3RvbS1idXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBzaW5nbGVBY3Rpb24ubGFiZWw/LmkxOG4gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjYWRhcHRpdmU+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cIihjdXN0b21BY3Rpb25zJCB8IGFzeW5jKT8uYWN0aW9ucy5sZW5ndGggPj0gMVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJhZGFwdGl2ZS1tZW51LWJ1dHRvblwiXG4gICAgICAgICAgW3FkUG9wb3Zlck9uQ2xpY2tdPVwibWVudVwiXG4gICAgICAgICAgW3FkUG9wb3ZlckNsb3NlU3RyYXRlZ3ldPVwiJ29uRXZlcnlDbGljaydcIlxuICAgICAgICAgIFtxZFBvcG92ZXJTdG9wUHJvcGFnYXRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgW3FkUG9wb3Zlck1pbldpZHRoXT1cIjE2MFwiXG4gICAgICAgID5cbiAgICAgICAgICA8cWQtaWNvbiBpY29uPVwib3ZlcmZsb3dNZW51VmVydGljYWxcIj48L3FkLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbWVudT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGN1c3RvbUFjdGlvbnMuYWN0aW9uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICBjbGFzcz1cImFkYXB0aXZlLW1lbnUtZW50cnlcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5oYW5kbGVyKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGFjdGlvbi5sYWJlbC5pMThuIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldHNcIiBbbmdDbGFzc109XCJ7IGFtb25nVGhlbXNlbHZlczogYWRhcHRpdmVNb2RlICYmICFmYWNldHNDb2xsYXBzZWQgfVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZU9iamVjdERhdGEkIHwgYXN5bmMgYXMgZGF0YVwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldFwiXG4gICAgICAqbmdGb3I9XCJsZXQgZmFjZXQgb2YgaGVhZGVyRmFjZXRzIHwgc2xpY2UgOiAwIDogKGFkYXB0aXZlTW9kZSAmJiBmYWNldHNDb2xsYXBzZWQgPyAyIDogaGVhZGVyRmFjZXRzPy5sZW5ndGggPz8gMClcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctZmFjZXQtJyArIGZhY2V0Lm5hbWVcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmYWNldC1sYWJlbFwiPnt7IGZhY2V0LmxhYmVsLmkxOG4gfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgIDxxZC1keW5hbWljLWZhY2V0IGNsYXNzPVwiZHluYW1pYy1mYWNldFwiIFtmYWNldF09XCJmYWNldFwiIFtkYXRhXT1cImRhdGFcIj48L3FkLWR5bmFtaWMtZmFjZXQ+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29uZmlnLmhpZGVDb250ZXh0cyAmJiBjb250ZXh0cyQgfCBhc3luYyBhcyBjb250ZXh0c1wiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldFwiXG4gICAgICAqbmdGb3I9XCJcbiAgICAgICAgbGV0IGNvbnRleHQgb2YgY29udGV4dHNcbiAgICAgICAgICB8IHNsaWNlIDogMCA6IChhZGFwdGl2ZU1vZGUgJiYgZmFjZXRzQ29sbGFwc2VkID8gMiAtIChoZWFkZXJGYWNldHM/Lmxlbmd0aCA/PyAwKSA6IGNvbnRleHRzLmxlbmd0aCk7XG4gICAgICAgIGxldCBpbmRleCA9IGluZGV4O1xuICAgICAgICBsZXQgZmlyc3QgPSBmaXJzdFxuICAgICAgXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgaGFzRGl2aWRlcjogaGVhZGVyRmFjZXRzICYmIGZpcnN0IH1cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmYWNldC1sYWJlbFwiPnt7IGNvbnRleHQubGFiZWwgfCB0cmFuc2xhdGUgfX08L2Rpdj5cblxuICAgICAgPHNwYW4gKm5nSWY9XCJjb250ZXh0LnZhbHVlLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwibm8tc2VsZWN0ZWQtY29udGV4dFwiPnt7XG4gICAgICAgIFwiaTE4bi5xZC5wYWdlLmNvbnRleHQubm9TZWxlY3Rpb25QbGFjZWhvbGRlclwiIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvc3Bhbj5cblxuICAgICAgPHNwYW4gKm5nSWY9XCJjb250ZXh0LnZhbHVlLmxlbmd0aCAhPT0gMFwiPlxuICAgICAgICA8cWQtY2hpcCBzdGF0ZT1cIm5vbmVcIiBbY2xvc2VdPVwiaXNDb250ZXh0U2VsZWN0YWJsZVwiIChjbG9zZUNsaWNrRW1pdHRlcik9XCJjbGVhckNvbnRleHQoY29udGV4dC5jb250ZXh0KVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbCBvZiBjb250ZXh0LnZhbHVlOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgIHt7IHZhbC5sYWJlbC5pMThuIHwgdHJhbnNsYXRlIH19PHNwYW4gKm5nSWY9XCIhbGFzdFwiPiwgPC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3FkLWNoaXA+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXNDb250ZXh0U2VsZWN0YWJsZSAmJiAoIWZhY2V0c0NvbGxhcHNlZCB8fCAhYWRhcHRpdmVNb2RlKVwiIGNsYXNzPVwic2VsZWN0LWJ1dHRvblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgcWRCdXR0b25cbiAgICAgICAgICBxZEJ1dHRvbkxpbmtcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlQ29udGV4dChjb250ZXh0LmNvbnRleHQsIGNvbnRleHQuc2VsZWN0aW9uLCAkZXZlbnQpXCJcbiAgICAgICAgICBbZGF0YS10ZXN0LWlkXT1cIidvYmplY3QtaGVhZGVyLXNlbGVjdC1jb250ZXh0LScgKyBjb250ZXh0LmNvbnRleHQuaWRcIlxuICAgICAgICA+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIGNvbnRleHQudmFsdWUubGVuZ3RoICE9PSAwXG4gICAgICAgICAgICAgID8gKFwiaTE4bi5xZC5wYWdlLmNvbnRleHQuYnV0dG9uLmNoYW5nZVwiIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICA6IChcImkxOG4ucWQucGFnZS5jb250ZXh0LmJ1dHRvbi5zZWxlY3RcIiB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPHNwYW4gY2xhc3M9XCJmYWNldHMtdG9nZ2xlclwiICpuZ0lmPVwiYWRhcHRpdmVNb2RlICYmIGhlYWRlckZhY2V0cy5sZW5ndGggKyAoY29udGV4dHMkIHwgYXN5bmMpLmxlbmd0aCA+IDJcIj5cbiAgICA8c3BhbiAqbmdJZj1cImZhY2V0c0NvbGxhcHNlZFwiPit7eyBoZWFkZXJGYWNldHMubGVuZ3RoICsgKGNvbnRleHRzJCB8IGFzeW5jKS5sZW5ndGggLSAyIH19PC9zcGFuPlxuICAgIDxidXR0b24gcWRJY29uQnV0dG9uPlxuICAgICAgPHFkLWljb24gW2ljb25dPVwiZmFjZXRzQ29sbGFwc2VkID8gJ2N0cmxEb3duJyA6ICdjdHJsVG9wJ1wiPjwvcWQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG4iXX0=
@@ -33740,23 +33740,32 @@ class QdPageObjectHeaderComponent {
33740
33740
  }))));
33741
33741
  }
33742
33742
  updateCustomActions() {
33743
- if (this.config.pageType === 'inspect') {
33744
- const operationMode = this.config.pageTypeConfig?.operationMode;
33745
- if (operationMode)
33746
- this.pageStoreService.toggleViewonly(operationMode === 'view');
33747
- this._customActionsSub?.unsubscribe();
33748
- this._customActionsSub = this.pageStoreService.isViewonly$
33749
- .pipe(takeUntil(this._destroyed$))
33750
- .subscribe(isViewonly => {
33751
- if (this.config.pageTypeConfig) {
33752
- this.config.pageTypeConfig.operationMode = isViewonly ? 'view' : 'edit';
33753
- }
33754
- const customActions = this.config.pageTypeConfig?.customActions ?? [];
33755
- this._customActionsSubject.next(this.getCustomActionsByMode(customActions, isViewonly ? 'view' : 'edit'));
33756
- });
33743
+ // 1. Handle non-inspect pages early
33744
+ if (this.config.pageType !== 'inspect') {
33745
+ const actions = this.config.pageTypeConfig?.customActions ?? [];
33746
+ this._customActionsSubject.next({ actions });
33747
+ return;
33757
33748
  }
33758
- if (this.config.pageType !== 'inspect')
33759
- this._customActionsSubject.next({ actions: this.config.pageTypeConfig?.customActions ?? [] });
33749
+ // 2. Setup Inspect-specific logic
33750
+ const config = this.config.pageTypeConfig;
33751
+ if (config?.operationMode) {
33752
+ this.pageStoreService.toggleViewonly(config.operationMode === 'view');
33753
+ }
33754
+ this.subscribeToViewOnlyMode();
33755
+ }
33756
+ subscribeToViewOnlyMode() {
33757
+ this._customActionsSub?.unsubscribe();
33758
+ this._customActionsSub = this.pageStoreService.isViewonly$
33759
+ .pipe(takeUntil(this._destroyed$))
33760
+ .subscribe(isViewonly => {
33761
+ const mode = isViewonly ? 'view' : 'edit';
33762
+ const config = this.config.pageTypeConfig;
33763
+ if (config) {
33764
+ config.operationMode = mode;
33765
+ }
33766
+ const actions = config?.customActions ?? [];
33767
+ this._customActionsSubject.next(this.getCustomActionsByMode(actions, mode));
33768
+ });
33760
33769
  }
33761
33770
  getCustomActionsByMode(customActions, mode) {
33762
33771
  const actions = customActions