@alfresco/adf-core 8.1.0-16344390102 → 8.1.0-16445172226

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.
Files changed (40) hide show
  1. package/esm2022/lib/app-config/app-config.module.mjs +1 -1
  2. package/esm2022/lib/app-config/provide-app-config.mjs +44 -0
  3. package/esm2022/lib/app-config/public-api.mjs +2 -1
  4. package/esm2022/lib/card-view/components/card-view/card-view.component.mjs +3 -3
  5. package/esm2022/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.mjs +3 -3
  6. package/esm2022/lib/card-view/components/card-view-textitem/card-view-textitem.component.mjs +3 -3
  7. package/esm2022/lib/core.module.mjs +146 -164
  8. package/esm2022/lib/form/components/form-renderer.component.mjs +3 -3
  9. package/esm2022/lib/form/components/widgets/amount/amount.widget.mjs +3 -3
  10. package/esm2022/lib/form/components/widgets/base-viewer/base-viewer.widget.mjs +1 -1
  11. package/esm2022/lib/form/form-base.module.mjs +3 -18
  12. package/esm2022/lib/testing/core.testing.module.mjs +2 -1
  13. package/esm2022/lib/testing/noop-translate.module.mjs +22 -8
  14. package/esm2022/lib/translation/translate-loader.service.mjs +7 -2
  15. package/esm2022/lib/viewer/components/viewer.component.mjs +9 -9
  16. package/esm2022/shell/index.mjs +2 -1
  17. package/esm2022/shell/lib/shell.module.mjs +8 -12
  18. package/esm2022/shell/lib/shell.routes.mjs +26 -1
  19. package/fesm2022/adf-core.mjs +168 -134
  20. package/fesm2022/adf-core.mjs.map +1 -1
  21. package/fesm2022/alfresco-adf-core-shell.mjs +32 -11
  22. package/fesm2022/alfresco-adf-core-shell.mjs.map +1 -1
  23. package/lib/app-config/app-config.module.d.ts +1 -0
  24. package/lib/app-config/provide-app-config.d.ts +23 -0
  25. package/lib/app-config/public-api.d.ts +1 -0
  26. package/lib/card-view/components/card-view/card-view.component.scss +0 -9
  27. package/lib/card-view/components/card-view-selectitem/card-view-selectitem.component.scss +1 -2
  28. package/lib/card-view/components/card-view-textitem/card-view-textitem.component.scss +1 -5
  29. package/lib/core.module.d.ts +124 -128
  30. package/lib/form/components/form-renderer.component.scss +4 -5
  31. package/lib/form/components/widgets/amount/amount.widget.scss +0 -8
  32. package/lib/form/form-base.module.d.ts +1 -0
  33. package/lib/testing/core.testing.module.d.ts +1 -0
  34. package/lib/testing/noop-translate.module.d.ts +1 -2
  35. package/lib/viewer/components/viewer.component.d.ts +3 -3
  36. package/package.json +3 -3
  37. package/shell/README.md +10 -6
  38. package/shell/index.d.ts +1 -0
  39. package/shell/lib/shell.module.d.ts +4 -7
  40. package/shell/lib/shell.routes.d.ts +13 -1
@@ -61,6 +61,10 @@ export class ViewerComponent {
61
61
  get CloseButtonPosition() {
62
62
  return CloseButtonPosition;
63
63
  }
64
+ /** Override Content title. */
65
+ set title(title) {
66
+ this.displayTitle = title ? this.getDisplayTruncatedValue(title) : '';
67
+ }
64
68
  /** Override Content filename. */
65
69
  set fileName(fileName) {
66
70
  this._fileName = fileName;
@@ -69,10 +73,6 @@ export class ViewerComponent {
69
73
  const value = (this.fileNameWithoutExtension || '') + (this.fileExtension || '');
70
74
  this.displayName = this.getDisplayTruncatedValue(value);
71
75
  }
72
- /** Override Content title. */
73
- set title(title) {
74
- this.displayTitle = this.getDisplayTruncatedValue(title);
75
- }
76
76
  get fileName() {
77
77
  return this._fileName;
78
78
  }
@@ -373,7 +373,7 @@ export class ViewerComponent {
373
373
  this.blobFile = null;
374
374
  }
375
375
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ViewerComponent, deps: [{ token: i0.ElementRef }, { token: i1.MatDialog }, { token: i2.ViewUtilService }, { token: i3.AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
376
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ViewerComponent, isStandalone: true, selector: "adf-viewer", inputs: { urlFile: "urlFile", blobFile: "blobFile", showViewer: "showViewer", allowGoBack: "allowGoBack", allowFullScreen: "allowFullScreen", showToolbar: "showToolbar", overlayMode: "overlayMode", allowNavigate: "allowNavigate", canNavigateBefore: "canNavigateBefore", canNavigateNext: "canNavigateNext", allowLeftSidebar: "allowLeftSidebar", allowRightSidebar: "allowRightSidebar", showRightSidebar: "showRightSidebar", showLeftSidebar: "showLeftSidebar", sidebarRightTemplate: "sidebarRightTemplate", sidebarLeftTemplate: "sidebarLeftTemplate", readOnly: "readOnly", allowedEditActions: "allowedEditActions", tracks: "tracks", mimeType: "mimeType", sidebarRightTemplateContext: "sidebarRightTemplateContext", sidebarLeftTemplateContext: "sidebarLeftTemplateContext", closeButtonPosition: "closeButtonPosition", hideInfoButton: "hideInfoButton", viewerExtensions: "viewerExtensions", nodeId: "nodeId", nodeMimeType: "nodeMimeType", customError: "customError", showToolbarDividers: "showToolbarDividers", fileName: "fileName", title: "title" }, outputs: { downloadFile: "downloadFile", navigateBefore: "navigateBefore", navigateNext: "navigateNext", showViewerChange: "showViewerChange", submitFile: "submitFile" }, host: { listeners: { "document:keyup": "handleKeyboardEvent($event)" }, properties: { "class.adf-viewer-inline": "this.isInline" }, classAttribute: "adf-viewer" }, providers: [ViewUtilService], queries: [{ propertyName: "toolbar", first: true, predicate: ViewerToolbarComponent, descendants: true }, { propertyName: "sidebar", first: true, predicate: ViewerSidebarComponent, descendants: true }, { propertyName: "mnuOpenWith", first: true, predicate: ViewerOpenWithComponent, descendants: true }, { propertyName: "mnuMoreActions", first: true, predicate: ViewerMoreActionsComponent, descendants: true }, { propertyName: "viewerTemplateExtensions", first: true, predicate: ["viewerExtensions"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"showViewer\"\n class=\"adf-viewer-container\"\n [class.adf-viewer-overlay-container]=\"overlayMode\"\n [class.adf-viewer-inline-container]=\"!overlayMode\">\n\n <div class=\"adf-viewer-content\"\n [cdkTrapFocus]=\"overlayMode\"\n cdkTrapFocusAutoCapture>\n <ng-content select=\"adf-viewer-toolbar\" />\n <ng-container *ngIf=\"showToolbar && !toolbar\">\n <adf-toolbar id=\"adf-viewer-toolbar\" class=\"adf-viewer-toolbar\">\n <adf-toolbar-title>\n <ng-container *ngIf=\"allowLeftSidebar\">\n <button mat-icon-button\n [attr.aria-expanded]=\"showLeftSidebar\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n data-automation-id=\"adf-toolbar-left-sidebar\"\n [color]=\"showLeftSidebar ? 'accent' : null\"\n (click)=\"toggleLeftSidebar()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n </ng-container>\n\n <button *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Left\"\n class=\"adf-viewer-close-button\"\n data-automation-id=\"adf-toolbar-left-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </adf-toolbar-title>\n\n <div class=\"adf-viewer__file-title\">\n <button *ngIf=\"allowNavigate && canNavigateBefore\"\n data-automation-id=\"adf-toolbar-pref-file\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.PREV_FILE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.PREV_FILE' | translate }}\"\n (click)=\"onNavigateBeforeClick($event)\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n <img class=\"adf-viewer__mimeicon\"\n [alt]=\"'ADF_VIEWER.ARIA.MIME_TYPE_ICON' | translate\"\n [src]=\"mimeTypeIconUrl\"\n data-automation-id=\"adf-file-thumbnail\">\n @if (displayTitle) {\n <div class=\"adf-viewer__title-display-name-container\"\n id=\"adf-viewer-title-display-name\"\n [title]=\"fileName\">\n <p class=\"adf-viewer__title-value\">{{ displayTitle }}</p>\n <p class=\"adf-viewer__display-name-value\">{{ displayName }}</p>\n </div>\n } @else {\n <div class=\"adf-viewer__display-name\"\n id=\"adf-viewer-display-name\"\n [title]=\"fileName\">\n <span>{{ displayName }}</span>\n </div>\n }\n <button *ngIf=\"allowNavigate && canNavigateNext\"\n data-automation-id=\"adf-toolbar-next-file\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate }}\"\n (click)=\"onNavigateNextClick($event)\">\n <mat-icon>navigate_next</mat-icon>\n </button>\n </div>\n\n <ng-content select=\"adf-viewer-toolbar-actions\" />\n\n <ng-container *ngIf=\"mnuOpenWith\"\n data-automation-id='adf-toolbar-custom-btn'>\n <button id=\"adf-viewer-openwith\"\n mat-button\n [matMenuTriggerFor]=\"mnuOpenWith\"\n data-automation-id=\"adf-toolbar-open-with\">\n <span>{{ 'ADF_VIEWER.ACTIONS.OPEN_WITH' | translate }}</span>\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n <mat-menu #mnuOpenWith=\"matMenu\"\n [overlapTrigger]=\"false\">\n <ng-content select=\"adf-viewer-open-with\" />\n </mat-menu>\n </ng-container>\n\n @if (showToolbarDividers) {\n <adf-toolbar-divider />\n }\n\n <ng-content select=\"adf-viewer-toolbar-custom-actions\" />\n\n <button id=\"adf-viewer-fullscreen\"\n *ngIf=\"allowFullScreen\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate }}\"\n data-automation-id=\"adf-toolbar-fullscreen\"\n (click)=\"enterFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n\n <ng-container *ngIf=\"allowRightSidebar && !hideInfoButton\">\n <adf-toolbar-divider />\n\n <button mat-icon-button\n [attr.aria-expanded]=\"showRightSidebar\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n data-automation-id=\"adf-toolbar-sidebar\"\n [color]=\"showRightSidebar ? 'accent' : null\"\n (click)=\"toggleRightSidebar()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n\n </ng-container>\n\n <ng-container *ngIf=\"mnuMoreActions\">\n <button id=\"adf-viewer-moreactions\"\n mat-icon-button\n [matMenuTriggerFor]=\"mnuMoreActions\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate }}\"\n data-automation-id=\"adf-toolbar-more-actions\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #mnuMoreActions=\"matMenu\"\n [overlapTrigger]=\"false\">\n <ng-content select=\"adf-viewer-more-actions\" />\n </mat-menu>\n </ng-container>\n\n <ng-container *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Right\">\n @if (showToolbarDividers) {\n <adf-toolbar-divider />\n }\n <button class=\"adf-viewer-close-button\"\n data-automation-id=\"adf-toolbar-right-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n\n </adf-toolbar>\n </ng-container>\n\n <div class=\"adf-viewer-sidebars\">\n\n <ng-container *ngIf=\"allowRightSidebar && showRightSidebar\">\n <div class=\"adf-viewer__sidebar adf-viewer__sidebar__right\"\n id=\"adf-right-sidebar\">\n <ng-container *ngIf=\"sidebarRightTemplate\">\n <ng-container *ngTemplateOutlet=\"sidebarRightTemplate;context:sidebarRightTemplateContext\" />\n </ng-container>\n <ng-content *ngIf=\"!sidebarRightTemplate\"\n select=\"adf-viewer-sidebar\" />\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"allowLeftSidebar && showLeftSidebar\">\n <div class=\"adf-viewer__sidebar adf-viewer__sidebar__left\"\n id=\"adf-left-sidebar\">\n <ng-container *ngIf=\"sidebarLeftTemplate\">\n <ng-container *ngTemplateOutlet=\"sidebarLeftTemplate;context:sidebarLeftTemplateContext\" />\n </ng-container>\n <ng-content *ngIf=\"!sidebarLeftTemplate\"\n select=\"adf-viewer-sidebar\" />\n </div>\n </ng-container>\n\n <adf-viewer-render (close)=\"onClose()\"\n [mimeType]=\"mimeType\"\n [fileName]=\"fileName\"\n [blobFile]=\"blobFile\"\n [readOnly]=\"readOnly\"\n (submitFile)=\"onSubmitFile($event)\"\n [allowedEditActions]=\"allowedEditActions\"\n [urlFile]=\"urlFile\"\n (isSaving)=\"allowNavigate = !$event\"\n [tracks]=\"tracks\"\n [viewerTemplateExtensions]=\"viewerExtensions ?? viewerTemplateExtensions\"\n [nodeId]=\"nodeId\"\n [customError]=\"customError\" />\n\n </div>\n </div>\n</div>\n", styles: [".adf-full-screen,.adf-viewer-inline-container,.adf-viewer-container .adf-viewer-content,.adf-viewer-container .adf-viewer-layout,.adf-viewer-container .adf-viewer-layout-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-viewer{position:absolute;width:100%;height:100%}.adf-viewer .mat-toolbar{color:var(--adf-theme-foreground-text-color-054)}.adf-viewer .mat-toolbar .adf-toolbar-title{width:auto}.adf-viewer-main{width:0}.adf-viewer__mimeicon{vertical-align:middle;height:18px;width:18px;margin-left:4px;margin-right:4px}.adf-viewer-toolbar .mat-toolbar{background-color:var(--adf-theme-background-card-color-087)}.adf-viewer__file-title{text-align:center;flex:1 1 auto;position:absolute;left:50%;transform:translate(-50%);display:flex;flex-direction:row;align-items:center}@media screen and (width <= 1450px){.adf-viewer__file-title{left:30%}}.adf-viewer__title-display-name-container,.adf-viewer__display-name{font-size:var(--theme-subheading-2-font-size);line-height:1.5;vertical-align:middle;color:var(--adf-theme-foreground-text-color);white-space:nowrap}.adf-viewer__display-name-value,.adf-viewer__title-value{margin-top:0;margin-bottom:0;text-align:left}.adf-viewer__display-name-value{font-size:var(--theme-body-1-font-size)}.adf-viewer-container .adf-viewer-layout-content{position:relative;overflow:hidden;z-index:1;background-color:var(--theme-background-color);display:flex;flex-direction:row;flex-wrap:wrap;flex:1}.adf-viewer-container .adf-viewer-layout-content>div{display:flex;flex-flow:row wrap;margin:0 auto;align-items:stretch;height:100%}.adf-viewer-container .adf-viewer-layout{display:flex;flex-direction:row;overflow:hidden auto;position:relative}.adf-viewer-container .adf-viewer-content{flex:1;flex-direction:column;display:flex}.adf-viewer-container .adf-viewer-content>div{height:0}.adf-viewer-overlay-container .adf-viewer-content{position:fixed;top:0;left:0;z-index:1000}.adf-viewer-sidebars{display:flex;flex:1 1 auto}.adf-viewer-sidebars .adf-viewer__sidebar{width:350px;display:block;padding:0;background-color:var(--theme-background-color);box-shadow:0 2px 4px 0 var(--adf-theme-foreground-text-color-027);overflow:auto}.adf-viewer-sidebars .adf-viewer__sidebar__right{border-left:1px solid var(--adf-theme-foreground-text-color-007);order:4}.adf-viewer-sidebars .adf-viewer__sidebar__left{border-right:1px solid var(--adf-theme-foreground-text-color-007);order:1}.adf-viewer-sidebars adf-viewer-render{order:1;flex:1 1 auto;display:flex}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: ToolbarTitleComponent, selector: "adf-toolbar-title" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: ToolbarDividerComponent, selector: "adf-toolbar-divider" }, { kind: "component", type: ViewerRenderComponent, selector: "adf-viewer-render", inputs: ["urlFile", "blobFile", "allowFullScreen", "allowThumbnails", "thumbnailsTemplate", "mimeType", "fileName", "readOnly", "allowedEditActions", "tracks", "nodeId", "viewerTemplateExtensions", "customError"], outputs: ["extensionChange", "submitFile", "close", "isSaving"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
376
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ViewerComponent, isStandalone: true, selector: "adf-viewer", inputs: { urlFile: "urlFile", blobFile: "blobFile", showViewer: "showViewer", allowGoBack: "allowGoBack", allowFullScreen: "allowFullScreen", showToolbar: "showToolbar", overlayMode: "overlayMode", allowNavigate: "allowNavigate", canNavigateBefore: "canNavigateBefore", canNavigateNext: "canNavigateNext", allowLeftSidebar: "allowLeftSidebar", allowRightSidebar: "allowRightSidebar", showRightSidebar: "showRightSidebar", showLeftSidebar: "showLeftSidebar", sidebarRightTemplate: "sidebarRightTemplate", sidebarLeftTemplate: "sidebarLeftTemplate", readOnly: "readOnly", allowedEditActions: "allowedEditActions", tracks: "tracks", mimeType: "mimeType", sidebarRightTemplateContext: "sidebarRightTemplateContext", sidebarLeftTemplateContext: "sidebarLeftTemplateContext", closeButtonPosition: "closeButtonPosition", hideInfoButton: "hideInfoButton", viewerExtensions: "viewerExtensions", nodeId: "nodeId", nodeMimeType: "nodeMimeType", customError: "customError", showToolbarDividers: "showToolbarDividers", title: "title", fileName: "fileName" }, outputs: { downloadFile: "downloadFile", navigateBefore: "navigateBefore", navigateNext: "navigateNext", showViewerChange: "showViewerChange", submitFile: "submitFile" }, host: { listeners: { "document:keyup": "handleKeyboardEvent($event)" }, properties: { "class.adf-viewer-inline": "this.isInline" }, classAttribute: "adf-viewer" }, providers: [ViewUtilService], queries: [{ propertyName: "toolbar", first: true, predicate: ViewerToolbarComponent, descendants: true }, { propertyName: "sidebar", first: true, predicate: ViewerSidebarComponent, descendants: true }, { propertyName: "mnuOpenWith", first: true, predicate: ViewerOpenWithComponent, descendants: true }, { propertyName: "mnuMoreActions", first: true, predicate: ViewerMoreActionsComponent, descendants: true }, { propertyName: "viewerTemplateExtensions", first: true, predicate: ["viewerExtensions"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"showViewer\"\n class=\"adf-viewer-container\"\n [class.adf-viewer-overlay-container]=\"overlayMode\"\n [class.adf-viewer-inline-container]=\"!overlayMode\">\n\n <div class=\"adf-viewer-content\"\n [cdkTrapFocus]=\"overlayMode\"\n cdkTrapFocusAutoCapture>\n <ng-content select=\"adf-viewer-toolbar\" />\n <ng-container *ngIf=\"showToolbar && !toolbar\">\n <adf-toolbar id=\"adf-viewer-toolbar\" class=\"adf-viewer-toolbar\">\n <adf-toolbar-title>\n <ng-container *ngIf=\"allowLeftSidebar\">\n <button mat-icon-button\n [attr.aria-expanded]=\"showLeftSidebar\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n data-automation-id=\"adf-toolbar-left-sidebar\"\n [color]=\"showLeftSidebar ? 'accent' : null\"\n (click)=\"toggleLeftSidebar()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n </ng-container>\n\n <button *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Left\"\n class=\"adf-viewer-close-button\"\n data-automation-id=\"adf-toolbar-left-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </adf-toolbar-title>\n\n <div class=\"adf-viewer__file-title\">\n <button *ngIf=\"allowNavigate && canNavigateBefore\"\n data-automation-id=\"adf-toolbar-pref-file\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.PREV_FILE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.PREV_FILE' | translate }}\"\n (click)=\"onNavigateBeforeClick($event)\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n <img class=\"adf-viewer__mimeicon\"\n [alt]=\"'ADF_VIEWER.ARIA.MIME_TYPE_ICON' | translate\"\n [src]=\"mimeTypeIconUrl\"\n data-automation-id=\"adf-file-thumbnail\">\n @if (displayTitle) {\n <div class=\"adf-viewer__title-display-name-container\"\n id=\"adf-viewer-title-display-name\"\n [title]=\"displayTitle\">\n <p class=\"adf-viewer__title-value\">{{ displayTitle }}</p>\n <p class=\"adf-viewer__display-name-value\">{{ displayName }}</p>\n </div>\n } @else {\n <div class=\"adf-viewer__display-name\"\n id=\"adf-viewer-display-name\"\n [title]=\"fileName\">\n <span>{{ displayName }}</span>\n </div>\n }\n <button *ngIf=\"allowNavigate && canNavigateNext\"\n data-automation-id=\"adf-toolbar-next-file\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate }}\"\n (click)=\"onNavigateNextClick($event)\">\n <mat-icon>navigate_next</mat-icon>\n </button>\n </div>\n\n <ng-content select=\"adf-viewer-toolbar-actions\" />\n\n <ng-container *ngIf=\"mnuOpenWith\"\n data-automation-id='adf-toolbar-custom-btn'>\n <button id=\"adf-viewer-openwith\"\n mat-button\n [matMenuTriggerFor]=\"mnuOpenWith\"\n data-automation-id=\"adf-toolbar-open-with\">\n <span>{{ 'ADF_VIEWER.ACTIONS.OPEN_WITH' | translate }}</span>\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n <mat-menu #mnuOpenWith=\"matMenu\"\n [overlapTrigger]=\"false\">\n <ng-content select=\"adf-viewer-open-with\" />\n </mat-menu>\n </ng-container>\n\n @if (showToolbarDividers) {\n <adf-toolbar-divider />\n }\n\n <ng-content select=\"adf-viewer-toolbar-custom-actions\" />\n\n <button id=\"adf-viewer-fullscreen\"\n *ngIf=\"allowFullScreen\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate }}\"\n data-automation-id=\"adf-toolbar-fullscreen\"\n (click)=\"enterFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n\n <ng-container *ngIf=\"allowRightSidebar && !hideInfoButton\">\n <adf-toolbar-divider />\n\n <button mat-icon-button\n [attr.aria-expanded]=\"showRightSidebar\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n data-automation-id=\"adf-toolbar-sidebar\"\n [color]=\"showRightSidebar ? 'accent' : null\"\n (click)=\"toggleRightSidebar()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n\n </ng-container>\n\n <ng-container *ngIf=\"mnuMoreActions\">\n <button id=\"adf-viewer-moreactions\"\n mat-icon-button\n [matMenuTriggerFor]=\"mnuMoreActions\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate }}\"\n data-automation-id=\"adf-toolbar-more-actions\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #mnuMoreActions=\"matMenu\"\n [overlapTrigger]=\"false\">\n <ng-content select=\"adf-viewer-more-actions\" />\n </mat-menu>\n </ng-container>\n\n <ng-container *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Right\">\n @if (showToolbarDividers) {\n <adf-toolbar-divider />\n }\n <button class=\"adf-viewer-close-button\"\n data-automation-id=\"adf-toolbar-right-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n\n </adf-toolbar>\n </ng-container>\n\n <div class=\"adf-viewer-sidebars\">\n\n <ng-container *ngIf=\"allowRightSidebar && showRightSidebar\">\n <div class=\"adf-viewer__sidebar adf-viewer__sidebar__right\"\n id=\"adf-right-sidebar\">\n <ng-container *ngIf=\"sidebarRightTemplate\">\n <ng-container *ngTemplateOutlet=\"sidebarRightTemplate;context:sidebarRightTemplateContext\" />\n </ng-container>\n <ng-content *ngIf=\"!sidebarRightTemplate\"\n select=\"adf-viewer-sidebar\" />\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"allowLeftSidebar && showLeftSidebar\">\n <div class=\"adf-viewer__sidebar adf-viewer__sidebar__left\"\n id=\"adf-left-sidebar\">\n <ng-container *ngIf=\"sidebarLeftTemplate\">\n <ng-container *ngTemplateOutlet=\"sidebarLeftTemplate;context:sidebarLeftTemplateContext\" />\n </ng-container>\n <ng-content *ngIf=\"!sidebarLeftTemplate\"\n select=\"adf-viewer-sidebar\" />\n </div>\n </ng-container>\n\n <adf-viewer-render (close)=\"onClose()\"\n [mimeType]=\"mimeType\"\n [fileName]=\"fileName\"\n [blobFile]=\"blobFile\"\n [readOnly]=\"readOnly\"\n (submitFile)=\"onSubmitFile($event)\"\n [allowedEditActions]=\"allowedEditActions\"\n [urlFile]=\"urlFile\"\n (isSaving)=\"allowNavigate = !$event\"\n [tracks]=\"tracks\"\n [viewerTemplateExtensions]=\"viewerExtensions ?? viewerTemplateExtensions\"\n [nodeId]=\"nodeId\"\n [customError]=\"customError\" />\n\n </div>\n </div>\n</div>\n", styles: [".adf-full-screen,.adf-viewer-inline-container,.adf-viewer-container .adf-viewer-content,.adf-viewer-container .adf-viewer-layout,.adf-viewer-container .adf-viewer-layout-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-viewer{position:absolute;width:100%;height:100%}.adf-viewer .mat-toolbar{color:var(--adf-theme-foreground-text-color-054)}.adf-viewer .mat-toolbar .adf-toolbar-title{width:auto}.adf-viewer-main{width:0}.adf-viewer__mimeicon{vertical-align:middle;height:18px;width:18px;margin-left:4px;margin-right:4px}.adf-viewer-toolbar .mat-toolbar{background-color:var(--adf-theme-background-card-color-087)}.adf-viewer__file-title{text-align:center;flex:1 1 auto;position:absolute;left:50%;transform:translate(-50%);display:flex;flex-direction:row;align-items:center}@media screen and (width <= 1450px){.adf-viewer__file-title{left:30%}}.adf-viewer__title-display-name-container,.adf-viewer__display-name{font-size:var(--theme-subheading-2-font-size);line-height:1.5;vertical-align:middle;color:var(--adf-theme-foreground-text-color);white-space:nowrap}.adf-viewer__display-name-value,.adf-viewer__title-value{margin-top:0;margin-bottom:0;text-align:left}.adf-viewer__display-name-value{font-size:var(--theme-body-1-font-size)}.adf-viewer-container .adf-viewer-layout-content{position:relative;overflow:hidden;z-index:1;background-color:var(--theme-background-color);display:flex;flex-direction:row;flex-wrap:wrap;flex:1}.adf-viewer-container .adf-viewer-layout-content>div{display:flex;flex-flow:row wrap;margin:0 auto;align-items:stretch;height:100%}.adf-viewer-container .adf-viewer-layout{display:flex;flex-direction:row;overflow:hidden auto;position:relative}.adf-viewer-container .adf-viewer-content{flex:1;flex-direction:column;display:flex}.adf-viewer-container .adf-viewer-content>div{height:0}.adf-viewer-overlay-container .adf-viewer-content{position:fixed;top:0;left:0;z-index:1000}.adf-viewer-sidebars{display:flex;flex:1 1 auto}.adf-viewer-sidebars .adf-viewer__sidebar{width:350px;display:block;padding:0;background-color:var(--theme-background-color);box-shadow:0 2px 4px 0 var(--adf-theme-foreground-text-color-027);overflow:auto}.adf-viewer-sidebars .adf-viewer__sidebar__right{border-left:1px solid var(--adf-theme-foreground-text-color-007);order:4}.adf-viewer-sidebars .adf-viewer__sidebar__left{border-right:1px solid var(--adf-theme-foreground-text-color-007);order:1}.adf-viewer-sidebars adf-viewer-render{order:1;flex:1 1 auto;display:flex}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ToolbarComponent, selector: "adf-toolbar", inputs: ["title", "color"] }, { kind: "component", type: ToolbarTitleComponent, selector: "adf-toolbar-title" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: ToolbarDividerComponent, selector: "adf-toolbar-divider" }, { kind: "component", type: ViewerRenderComponent, selector: "adf-viewer-render", inputs: ["urlFile", "blobFile", "allowFullScreen", "allowThumbnails", "thumbnailsTemplate", "mimeType", "fileName", "readOnly", "allowedEditActions", "tracks", "nodeId", "viewerTemplateExtensions", "customError"], outputs: ["extensionChange", "submitFile", "close", "isSaving"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
377
377
  }
378
378
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ViewerComponent, decorators: [{
379
379
  type: Component,
@@ -394,7 +394,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
394
394
  ViewerToolbarActionsComponent,
395
395
  ViewerToolbarCustomActionsComponent,
396
396
  IconComponent
397
- ], providers: [ViewUtilService], template: "<div *ngIf=\"showViewer\"\n class=\"adf-viewer-container\"\n [class.adf-viewer-overlay-container]=\"overlayMode\"\n [class.adf-viewer-inline-container]=\"!overlayMode\">\n\n <div class=\"adf-viewer-content\"\n [cdkTrapFocus]=\"overlayMode\"\n cdkTrapFocusAutoCapture>\n <ng-content select=\"adf-viewer-toolbar\" />\n <ng-container *ngIf=\"showToolbar && !toolbar\">\n <adf-toolbar id=\"adf-viewer-toolbar\" class=\"adf-viewer-toolbar\">\n <adf-toolbar-title>\n <ng-container *ngIf=\"allowLeftSidebar\">\n <button mat-icon-button\n [attr.aria-expanded]=\"showLeftSidebar\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n data-automation-id=\"adf-toolbar-left-sidebar\"\n [color]=\"showLeftSidebar ? 'accent' : null\"\n (click)=\"toggleLeftSidebar()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n </ng-container>\n\n <button *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Left\"\n class=\"adf-viewer-close-button\"\n data-automation-id=\"adf-toolbar-left-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </adf-toolbar-title>\n\n <div class=\"adf-viewer__file-title\">\n <button *ngIf=\"allowNavigate && canNavigateBefore\"\n data-automation-id=\"adf-toolbar-pref-file\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.PREV_FILE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.PREV_FILE' | translate }}\"\n (click)=\"onNavigateBeforeClick($event)\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n <img class=\"adf-viewer__mimeicon\"\n [alt]=\"'ADF_VIEWER.ARIA.MIME_TYPE_ICON' | translate\"\n [src]=\"mimeTypeIconUrl\"\n data-automation-id=\"adf-file-thumbnail\">\n @if (displayTitle) {\n <div class=\"adf-viewer__title-display-name-container\"\n id=\"adf-viewer-title-display-name\"\n [title]=\"fileName\">\n <p class=\"adf-viewer__title-value\">{{ displayTitle }}</p>\n <p class=\"adf-viewer__display-name-value\">{{ displayName }}</p>\n </div>\n } @else {\n <div class=\"adf-viewer__display-name\"\n id=\"adf-viewer-display-name\"\n [title]=\"fileName\">\n <span>{{ displayName }}</span>\n </div>\n }\n <button *ngIf=\"allowNavigate && canNavigateNext\"\n data-automation-id=\"adf-toolbar-next-file\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate }}\"\n (click)=\"onNavigateNextClick($event)\">\n <mat-icon>navigate_next</mat-icon>\n </button>\n </div>\n\n <ng-content select=\"adf-viewer-toolbar-actions\" />\n\n <ng-container *ngIf=\"mnuOpenWith\"\n data-automation-id='adf-toolbar-custom-btn'>\n <button id=\"adf-viewer-openwith\"\n mat-button\n [matMenuTriggerFor]=\"mnuOpenWith\"\n data-automation-id=\"adf-toolbar-open-with\">\n <span>{{ 'ADF_VIEWER.ACTIONS.OPEN_WITH' | translate }}</span>\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n <mat-menu #mnuOpenWith=\"matMenu\"\n [overlapTrigger]=\"false\">\n <ng-content select=\"adf-viewer-open-with\" />\n </mat-menu>\n </ng-container>\n\n @if (showToolbarDividers) {\n <adf-toolbar-divider />\n }\n\n <ng-content select=\"adf-viewer-toolbar-custom-actions\" />\n\n <button id=\"adf-viewer-fullscreen\"\n *ngIf=\"allowFullScreen\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate }}\"\n data-automation-id=\"adf-toolbar-fullscreen\"\n (click)=\"enterFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n\n <ng-container *ngIf=\"allowRightSidebar && !hideInfoButton\">\n <adf-toolbar-divider />\n\n <button mat-icon-button\n [attr.aria-expanded]=\"showRightSidebar\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n data-automation-id=\"adf-toolbar-sidebar\"\n [color]=\"showRightSidebar ? 'accent' : null\"\n (click)=\"toggleRightSidebar()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n\n </ng-container>\n\n <ng-container *ngIf=\"mnuMoreActions\">\n <button id=\"adf-viewer-moreactions\"\n mat-icon-button\n [matMenuTriggerFor]=\"mnuMoreActions\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate }}\"\n data-automation-id=\"adf-toolbar-more-actions\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #mnuMoreActions=\"matMenu\"\n [overlapTrigger]=\"false\">\n <ng-content select=\"adf-viewer-more-actions\" />\n </mat-menu>\n </ng-container>\n\n <ng-container *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Right\">\n @if (showToolbarDividers) {\n <adf-toolbar-divider />\n }\n <button class=\"adf-viewer-close-button\"\n data-automation-id=\"adf-toolbar-right-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n\n </adf-toolbar>\n </ng-container>\n\n <div class=\"adf-viewer-sidebars\">\n\n <ng-container *ngIf=\"allowRightSidebar && showRightSidebar\">\n <div class=\"adf-viewer__sidebar adf-viewer__sidebar__right\"\n id=\"adf-right-sidebar\">\n <ng-container *ngIf=\"sidebarRightTemplate\">\n <ng-container *ngTemplateOutlet=\"sidebarRightTemplate;context:sidebarRightTemplateContext\" />\n </ng-container>\n <ng-content *ngIf=\"!sidebarRightTemplate\"\n select=\"adf-viewer-sidebar\" />\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"allowLeftSidebar && showLeftSidebar\">\n <div class=\"adf-viewer__sidebar adf-viewer__sidebar__left\"\n id=\"adf-left-sidebar\">\n <ng-container *ngIf=\"sidebarLeftTemplate\">\n <ng-container *ngTemplateOutlet=\"sidebarLeftTemplate;context:sidebarLeftTemplateContext\" />\n </ng-container>\n <ng-content *ngIf=\"!sidebarLeftTemplate\"\n select=\"adf-viewer-sidebar\" />\n </div>\n </ng-container>\n\n <adf-viewer-render (close)=\"onClose()\"\n [mimeType]=\"mimeType\"\n [fileName]=\"fileName\"\n [blobFile]=\"blobFile\"\n [readOnly]=\"readOnly\"\n (submitFile)=\"onSubmitFile($event)\"\n [allowedEditActions]=\"allowedEditActions\"\n [urlFile]=\"urlFile\"\n (isSaving)=\"allowNavigate = !$event\"\n [tracks]=\"tracks\"\n [viewerTemplateExtensions]=\"viewerExtensions ?? viewerTemplateExtensions\"\n [nodeId]=\"nodeId\"\n [customError]=\"customError\" />\n\n </div>\n </div>\n</div>\n", styles: [".adf-full-screen,.adf-viewer-inline-container,.adf-viewer-container .adf-viewer-content,.adf-viewer-container .adf-viewer-layout,.adf-viewer-container .adf-viewer-layout-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-viewer{position:absolute;width:100%;height:100%}.adf-viewer .mat-toolbar{color:var(--adf-theme-foreground-text-color-054)}.adf-viewer .mat-toolbar .adf-toolbar-title{width:auto}.adf-viewer-main{width:0}.adf-viewer__mimeicon{vertical-align:middle;height:18px;width:18px;margin-left:4px;margin-right:4px}.adf-viewer-toolbar .mat-toolbar{background-color:var(--adf-theme-background-card-color-087)}.adf-viewer__file-title{text-align:center;flex:1 1 auto;position:absolute;left:50%;transform:translate(-50%);display:flex;flex-direction:row;align-items:center}@media screen and (width <= 1450px){.adf-viewer__file-title{left:30%}}.adf-viewer__title-display-name-container,.adf-viewer__display-name{font-size:var(--theme-subheading-2-font-size);line-height:1.5;vertical-align:middle;color:var(--adf-theme-foreground-text-color);white-space:nowrap}.adf-viewer__display-name-value,.adf-viewer__title-value{margin-top:0;margin-bottom:0;text-align:left}.adf-viewer__display-name-value{font-size:var(--theme-body-1-font-size)}.adf-viewer-container .adf-viewer-layout-content{position:relative;overflow:hidden;z-index:1;background-color:var(--theme-background-color);display:flex;flex-direction:row;flex-wrap:wrap;flex:1}.adf-viewer-container .adf-viewer-layout-content>div{display:flex;flex-flow:row wrap;margin:0 auto;align-items:stretch;height:100%}.adf-viewer-container .adf-viewer-layout{display:flex;flex-direction:row;overflow:hidden auto;position:relative}.adf-viewer-container .adf-viewer-content{flex:1;flex-direction:column;display:flex}.adf-viewer-container .adf-viewer-content>div{height:0}.adf-viewer-overlay-container .adf-viewer-content{position:fixed;top:0;left:0;z-index:1000}.adf-viewer-sidebars{display:flex;flex:1 1 auto}.adf-viewer-sidebars .adf-viewer__sidebar{width:350px;display:block;padding:0;background-color:var(--theme-background-color);box-shadow:0 2px 4px 0 var(--adf-theme-foreground-text-color-027);overflow:auto}.adf-viewer-sidebars .adf-viewer__sidebar__right{border-left:1px solid var(--adf-theme-foreground-text-color-007);order:4}.adf-viewer-sidebars .adf-viewer__sidebar__left{border-right:1px solid var(--adf-theme-foreground-text-color-007);order:1}.adf-viewer-sidebars adf-viewer-render{order:1;flex:1 1 auto;display:flex}\n"] }]
397
+ ], providers: [ViewUtilService], template: "<div *ngIf=\"showViewer\"\n class=\"adf-viewer-container\"\n [class.adf-viewer-overlay-container]=\"overlayMode\"\n [class.adf-viewer-inline-container]=\"!overlayMode\">\n\n <div class=\"adf-viewer-content\"\n [cdkTrapFocus]=\"overlayMode\"\n cdkTrapFocusAutoCapture>\n <ng-content select=\"adf-viewer-toolbar\" />\n <ng-container *ngIf=\"showToolbar && !toolbar\">\n <adf-toolbar id=\"adf-viewer-toolbar\" class=\"adf-viewer-toolbar\">\n <adf-toolbar-title>\n <ng-container *ngIf=\"allowLeftSidebar\">\n <button mat-icon-button\n [attr.aria-expanded]=\"showLeftSidebar\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n data-automation-id=\"adf-toolbar-left-sidebar\"\n [color]=\"showLeftSidebar ? 'accent' : null\"\n (click)=\"toggleLeftSidebar()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n </ng-container>\n\n <button *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Left\"\n class=\"adf-viewer-close-button\"\n data-automation-id=\"adf-toolbar-left-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </adf-toolbar-title>\n\n <div class=\"adf-viewer__file-title\">\n <button *ngIf=\"allowNavigate && canNavigateBefore\"\n data-automation-id=\"adf-toolbar-pref-file\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.PREV_FILE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.PREV_FILE' | translate }}\"\n (click)=\"onNavigateBeforeClick($event)\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n <img class=\"adf-viewer__mimeicon\"\n [alt]=\"'ADF_VIEWER.ARIA.MIME_TYPE_ICON' | translate\"\n [src]=\"mimeTypeIconUrl\"\n data-automation-id=\"adf-file-thumbnail\">\n @if (displayTitle) {\n <div class=\"adf-viewer__title-display-name-container\"\n id=\"adf-viewer-title-display-name\"\n [title]=\"displayTitle\">\n <p class=\"adf-viewer__title-value\">{{ displayTitle }}</p>\n <p class=\"adf-viewer__display-name-value\">{{ displayName }}</p>\n </div>\n } @else {\n <div class=\"adf-viewer__display-name\"\n id=\"adf-viewer-display-name\"\n [title]=\"fileName\">\n <span>{{ displayName }}</span>\n </div>\n }\n <button *ngIf=\"allowNavigate && canNavigateNext\"\n data-automation-id=\"adf-toolbar-next-file\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.NEXT_FILE' | translate }}\"\n (click)=\"onNavigateNextClick($event)\">\n <mat-icon>navigate_next</mat-icon>\n </button>\n </div>\n\n <ng-content select=\"adf-viewer-toolbar-actions\" />\n\n <ng-container *ngIf=\"mnuOpenWith\"\n data-automation-id='adf-toolbar-custom-btn'>\n <button id=\"adf-viewer-openwith\"\n mat-button\n [matMenuTriggerFor]=\"mnuOpenWith\"\n data-automation-id=\"adf-toolbar-open-with\">\n <span>{{ 'ADF_VIEWER.ACTIONS.OPEN_WITH' | translate }}</span>\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n <mat-menu #mnuOpenWith=\"matMenu\"\n [overlapTrigger]=\"false\">\n <ng-content select=\"adf-viewer-open-with\" />\n </mat-menu>\n </ng-container>\n\n @if (showToolbarDividers) {\n <adf-toolbar-divider />\n }\n\n <ng-content select=\"adf-viewer-toolbar-custom-actions\" />\n\n <button id=\"adf-viewer-fullscreen\"\n *ngIf=\"allowFullScreen\"\n mat-icon-button\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.FULLSCREEN' | translate }}\"\n data-automation-id=\"adf-toolbar-fullscreen\"\n (click)=\"enterFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n\n <ng-container *ngIf=\"allowRightSidebar && !hideInfoButton\">\n <adf-toolbar-divider />\n\n <button mat-icon-button\n [attr.aria-expanded]=\"showRightSidebar\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.INFO' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.INFO' | translate }}\"\n data-automation-id=\"adf-toolbar-sidebar\"\n [color]=\"showRightSidebar ? 'accent' : null\"\n (click)=\"toggleRightSidebar()\">\n <mat-icon>info_outline</mat-icon>\n </button>\n\n </ng-container>\n\n <ng-container *ngIf=\"mnuMoreActions\">\n <button id=\"adf-viewer-moreactions\"\n mat-icon-button\n [matMenuTriggerFor]=\"mnuMoreActions\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate\"\n title=\"{{ 'ADF_VIEWER.ACTIONS.MORE_ACTIONS' | translate }}\"\n data-automation-id=\"adf-toolbar-more-actions\">\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #mnuMoreActions=\"matMenu\"\n [overlapTrigger]=\"false\">\n <ng-content select=\"adf-viewer-more-actions\" />\n </mat-menu>\n </ng-container>\n\n <ng-container *ngIf=\"allowGoBack && closeButtonPosition === CloseButtonPosition.Right\">\n @if (showToolbarDividers) {\n <adf-toolbar-divider />\n }\n <button class=\"adf-viewer-close-button\"\n data-automation-id=\"adf-toolbar-right-back\"\n [attr.aria-label]=\"'ADF_VIEWER.ACTIONS.CLOSE' | translate\"\n mat-icon-button\n title=\"{{ 'ADF_VIEWER.ACTIONS.CLOSE' | translate }}\"\n (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n\n </adf-toolbar>\n </ng-container>\n\n <div class=\"adf-viewer-sidebars\">\n\n <ng-container *ngIf=\"allowRightSidebar && showRightSidebar\">\n <div class=\"adf-viewer__sidebar adf-viewer__sidebar__right\"\n id=\"adf-right-sidebar\">\n <ng-container *ngIf=\"sidebarRightTemplate\">\n <ng-container *ngTemplateOutlet=\"sidebarRightTemplate;context:sidebarRightTemplateContext\" />\n </ng-container>\n <ng-content *ngIf=\"!sidebarRightTemplate\"\n select=\"adf-viewer-sidebar\" />\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"allowLeftSidebar && showLeftSidebar\">\n <div class=\"adf-viewer__sidebar adf-viewer__sidebar__left\"\n id=\"adf-left-sidebar\">\n <ng-container *ngIf=\"sidebarLeftTemplate\">\n <ng-container *ngTemplateOutlet=\"sidebarLeftTemplate;context:sidebarLeftTemplateContext\" />\n </ng-container>\n <ng-content *ngIf=\"!sidebarLeftTemplate\"\n select=\"adf-viewer-sidebar\" />\n </div>\n </ng-container>\n\n <adf-viewer-render (close)=\"onClose()\"\n [mimeType]=\"mimeType\"\n [fileName]=\"fileName\"\n [blobFile]=\"blobFile\"\n [readOnly]=\"readOnly\"\n (submitFile)=\"onSubmitFile($event)\"\n [allowedEditActions]=\"allowedEditActions\"\n [urlFile]=\"urlFile\"\n (isSaving)=\"allowNavigate = !$event\"\n [tracks]=\"tracks\"\n [viewerTemplateExtensions]=\"viewerExtensions ?? viewerTemplateExtensions\"\n [nodeId]=\"nodeId\"\n [customError]=\"customError\" />\n\n </div>\n </div>\n</div>\n", styles: [".adf-full-screen,.adf-viewer-inline-container,.adf-viewer-container .adf-viewer-content,.adf-viewer-container .adf-viewer-layout,.adf-viewer-container .adf-viewer-layout-content{width:100%;height:100%;background-color:var(--adf-theme-background-card-color)}.adf-viewer{position:absolute;width:100%;height:100%}.adf-viewer .mat-toolbar{color:var(--adf-theme-foreground-text-color-054)}.adf-viewer .mat-toolbar .adf-toolbar-title{width:auto}.adf-viewer-main{width:0}.adf-viewer__mimeicon{vertical-align:middle;height:18px;width:18px;margin-left:4px;margin-right:4px}.adf-viewer-toolbar .mat-toolbar{background-color:var(--adf-theme-background-card-color-087)}.adf-viewer__file-title{text-align:center;flex:1 1 auto;position:absolute;left:50%;transform:translate(-50%);display:flex;flex-direction:row;align-items:center}@media screen and (width <= 1450px){.adf-viewer__file-title{left:30%}}.adf-viewer__title-display-name-container,.adf-viewer__display-name{font-size:var(--theme-subheading-2-font-size);line-height:1.5;vertical-align:middle;color:var(--adf-theme-foreground-text-color);white-space:nowrap}.adf-viewer__display-name-value,.adf-viewer__title-value{margin-top:0;margin-bottom:0;text-align:left}.adf-viewer__display-name-value{font-size:var(--theme-body-1-font-size)}.adf-viewer-container .adf-viewer-layout-content{position:relative;overflow:hidden;z-index:1;background-color:var(--theme-background-color);display:flex;flex-direction:row;flex-wrap:wrap;flex:1}.adf-viewer-container .adf-viewer-layout-content>div{display:flex;flex-flow:row wrap;margin:0 auto;align-items:stretch;height:100%}.adf-viewer-container .adf-viewer-layout{display:flex;flex-direction:row;overflow:hidden auto;position:relative}.adf-viewer-container .adf-viewer-content{flex:1;flex-direction:column;display:flex}.adf-viewer-container .adf-viewer-content>div{height:0}.adf-viewer-overlay-container .adf-viewer-content{position:fixed;top:0;left:0;z-index:1000}.adf-viewer-sidebars{display:flex;flex:1 1 auto}.adf-viewer-sidebars .adf-viewer__sidebar{width:350px;display:block;padding:0;background-color:var(--theme-background-color);box-shadow:0 2px 4px 0 var(--adf-theme-foreground-text-color-027);overflow:auto}.adf-viewer-sidebars .adf-viewer__sidebar__right{border-left:1px solid var(--adf-theme-foreground-text-color-007);order:4}.adf-viewer-sidebars .adf-viewer__sidebar__left{border-right:1px solid var(--adf-theme-foreground-text-color-007);order:1}.adf-viewer-sidebars adf-viewer-render{order:1;flex:1 1 auto;display:flex}\n"] }]
398
398
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.MatDialog }, { type: i2.ViewUtilService }, { type: i3.AppConfigService }], propDecorators: { isInline: [{
399
399
  type: HostBinding,
400
400
  args: ['class.adf-viewer-inline']
@@ -481,12 +481,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
481
481
  type: Output
482
482
  }], submitFile: [{
483
483
  type: Output
484
- }], fileName: [{
485
- type: Input
486
484
  }], title: [{
487
485
  type: Input
486
+ }], fileName: [{
487
+ type: Input
488
488
  }], handleKeyboardEvent: [{
489
489
  type: HostListener,
490
490
  args: ['document:keyup', ['$event']]
491
491
  }] } });
492
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdmlld2VyL2NvbXBvbmVudHMvdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdmlld2VyL2NvbXBvbmVudHMvdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUlMLE1BQU0sRUFFTixXQUFXLEVBQ1gsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFP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QkFEWCxNQUFNO2dCQUtQLGdCQUFnQjtzQkFEZixNQUFNO2dCQUtQLFVBQVU7c0JBRFQsTUFBTTtnQkFvQkgsUUFBUTtzQkFEWCxLQUFLO2dCQVdGLEtBQUs7c0JBRFIsS0FBSztnQkEyR04sbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QsIHNraXBXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHAtY29uZmlnJztcbmltcG9ydCB7IFRvb2xiYXJDb21wb25lbnQsIFRvb2xiYXJEaXZpZGVyQ29tcG9uZW50LCBUb29sYmFyVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi90b29sYmFyJztcbmltcG9ydCB7IERvd25sb2FkUHJvbXB0QWN0aW9ucyB9IGZyb20gJy4uL21vZGVscy9kb3dubG9hZC1wcm9tcHQuYWN0aW9ucyc7XG5pbXBvcnQgeyBDbG9zZUJ1dHRvblBvc2l0aW9uLCBUcmFjayB9IGZyb20gJy4uL21vZGVscy92aWV3ZXIubW9kZWwnO1xuaW1wb3J0IHsgVmlld1V0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdmlldy11dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG93bmxvYWRQcm9tcHREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2Rvd25sb2FkLXByb21wdC1kaWFsb2cvZG93bmxvYWQtcHJvbXB0LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld2VyTW9yZUFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdlci1tb3JlLWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdlck9wZW5XaXRoQ29tcG9uZW50IH0gZnJvbSAnLi92aWV3ZXItb3Blbi13aXRoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3ZXJSZW5kZXJDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdlci1yZW5kZXIvdmlld2VyLXJlbmRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld2VyU2lkZWJhckNvbXBvbmVudCB9IGZyb20gJy4vdmlld2VyLXNpZGViYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdlclRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdlci10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3ZXJUb29sYmFyQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vdmlld2VyLXRvb2xiYXItYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld2VyVG9vbGJhckN1c3RvbUFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdlci10b29sYmFyLWN1c3RvbS1hY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaWNvbic7XG5pbXBvcnQgeyBUaHVtYm5haWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuY29uc3QgREVGQVVMVF9OT05fUFJFVklFV19DT05GSUcgPSB7XG4gICAgZW5hYmxlRG93bmxvYWRQcm9tcHQ6IGZhbHNlLFxuICAgIGVuYWJsZURvd25sb2FkUHJvbXB0UmVtaW5kZXI6IGZhbHNlLFxuICAgIGRvd25sb2FkUHJvbXB0RGVsYXk6IDUwLFxuICAgIGRvd25sb2FkUHJvbXB0UmVtaW5kZXJEZWxheTogMzBcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLXZpZXdlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi92aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBob3N0OiB7IGNsYXNzOiAnYWRmLXZpZXdlcicgfSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgQTExeU1vZHVsZSxcbiAgICAgICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICAgICAgVG9vbGJhclRpdGxlQ29tcG9uZW50LFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZVBpcGUsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgICAgIFRvb2xiYXJEaXZpZGVyQ29tcG9uZW50LFxuICAgICAgICBWaWV3ZXJSZW5kZXJDb21wb25lbnQsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIFZpZXdlclRvb2xiYXJDb21wb25lbnQsXG4gICAgICAgIFZpZXdlclNpZGViYXJDb21wb25lbnQsXG4gICAgICAgIFZpZXdlclRvb2xiYXJBY3Rpb25zQ29tcG9uZW50LFxuICAgICAgICBWaWV3ZXJUb29sYmFyQ3VzdG9tQWN0aW9uc0NvbXBvbmVudCxcbiAgICAgICAgSWNvbkNvbXBvbmVudFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbVmlld1V0aWxTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBWaWV3ZXJDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBwcml2YXRlIHRodW1ibmFpbFNlcnZpY2UgPSBpbmplY3QoVGh1bWJuYWlsU2VydmljZSk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFkZi12aWV3ZXItaW5saW5lJylcbiAgICBnZXQgaXNJbmxpbmUoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5vdmVybGF5TW9kZTtcbiAgICB9XG5cbiAgICBAQ29udGVudENoaWxkKFZpZXdlclRvb2xiYXJDb21wb25lbnQpXG4gICAgdG9vbGJhcjogVmlld2VyVG9vbGJhckNvbXBvbmVudDtcblxuICAgIEBDb250ZW50Q2hpbGQoVmlld2VyU2lkZWJhckNvbXBvbmVudClcbiAgICBzaWRlYmFyOiBWaWV3ZXJTaWRlYmFyQ29tcG9uZW50O1xuXG4gICAgQENvbnRlbnRDaGlsZChWaWV3ZXJPcGVuV2l0aENvbXBvbmVudClcbiAgICBtbnVPcGVuV2l0aDogVmlld2VyT3BlbldpdGhDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKFZpZXdlck1vcmVBY3Rpb25zQ29tcG9uZW50KVxuICAgIG1udU1vcmVBY3Rpb25zOiBWaWV3ZXJNb3JlQWN0aW9uc0NvbXBvbmVudDtcblxuICAgIEBDb250ZW50Q2hpbGQoJ3ZpZXdlckV4dGVuc2lvbnMnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICB2aWV3ZXJUZW1wbGF0ZUV4dGVuc2lvbnM6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBnZXQgQ2xvc2VCdXR0b25Qb3NpdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIENsb3NlQnV0dG9uUG9zaXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgeW91IHdhbnQgdG8gbG9hZCBhbiBleHRlcm5hbCBmaWxlIHRoYXQgZG9lcyBub3QgY29tZSBmcm9tIEFDUyB5b3VcbiAgICAgKiBjYW4gdXNlIHRoaXMgVVJMIHRvIHNwZWNpZnkgd2hlcmUgdG8gbG9hZCB0aGUgZmlsZSBmcm9tLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdXJsRmlsZSA9ICcnO1xuXG4gICAgLyoqIExvYWRzIGEgQmxvYiBGaWxlICovXG4gICAgQElucHV0KClcbiAgICBibG9iRmlsZTogQmxvYjtcblxuICAgIC8qKiBIaWRlIG9yIHNob3cgdGhlIHZpZXdlciAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1ZpZXdlciA9IHRydWU7XG5cbiAgICAvKiogQWxsb3dzIGBiYWNrYCBuYXZpZ2F0aW9uICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd0dvQmFjayA9IHRydWU7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgJ0Z1bGwgU2NyZWVuJyBmZWF0dXJlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dGdWxsU2NyZWVuID0gdHJ1ZTtcblxuICAgIC8qKiBIaWRlIG9yIHNob3cgdGhlIHRvb2xiYXIgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dUb29sYmFyID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIElmIGB0cnVlYCB0aGVuIHNob3cgdGhlIFZpZXdlciBhcyBhIGZ1bGwgcGFnZSBvdmVyIHRoZSBjdXJyZW50IGNvbnRlbnQuXG4gICAgICogT3RoZXJ3aXNlLCBmaXQgaW5zaWRlIHRoZSBwYXJlbnQgZGl2LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgb3ZlcmxheU1vZGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgYmVmb3JlL25leHQgbmF2aWdhdGlvbi4gWW91IGNhbiB1c2UgdGhlIGFycm93IGJ1dHRvbnMgdG8gbmF2aWdhdGVcbiAgICAgKiBiZXR3ZWVuIGRvY3VtZW50cyBpbiB0aGUgY29sbGVjdGlvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93TmF2aWdhdGUgPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSBcImJlZm9yZVwiIChcIjxcIikgYnV0dG9uLiBSZXF1aXJlcyBgYWxsb3dOYXZpZ2F0ZWAgdG8gYmUgZW5hYmxlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNhbk5hdmlnYXRlQmVmb3JlID0gdHJ1ZTtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSBuZXh0IChcIj5cIikgYnV0dG9uLiBSZXF1aXJlcyBgYWxsb3dOYXZpZ2F0ZWAgdG8gYmUgZW5hYmxlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGNhbk5hdmlnYXRlTmV4dCA9IHRydWU7XG5cbiAgICAvKiogQWxsb3cgdGhlIGxlZnQgdGhlIHNpZGViYXIuICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd0xlZnRTaWRlYmFyID0gZmFsc2U7XG5cbiAgICAvKiogQWxsb3cgdGhlIHJpZ2h0IHNpZGViYXIuICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd1JpZ2h0U2lkZWJhciA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZXMgcmlnaHQgc2lkZWJhciB2aXNpYmlsaXR5LiBSZXF1aXJlcyBgYWxsb3dSaWdodFNpZGViYXJgIHRvIGJlIHNldCB0byBgdHJ1ZWAuICovXG4gICAgQElucHV0KClcbiAgICBzaG93UmlnaHRTaWRlYmFyID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyBsZWZ0IHNpZGViYXIgdmlzaWJpbGl0eS4gUmVxdWlyZXMgYGFsbG93TGVmdFNpZGViYXJgIHRvIGJlIHNldCB0byBgdHJ1ZWAuICovXG4gICAgQElucHV0KClcbiAgICBzaG93TGVmdFNpZGViYXIgPSBmYWxzZTtcblxuICAgIC8qKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSByaWdodCBzaWRlYmFyLiBUaGUgdGVtcGxhdGUgY29udGV4dCBjb250YWlucyB0aGUgbG9hZGVkIG5vZGUgZGF0YS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNpZGViYXJSaWdodFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+ID0gbnVsbDtcblxuICAgIC8qKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBsZWZ0IHNpZGViYXIuIFRoZSB0ZW1wbGF0ZSBjb250ZXh0IGNvbnRhaW5zIHRoZSBsb2FkZWQgbm9kZSBkYXRhLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2lkZWJhckxlZnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG5cbiAgICAvKiogRW5hYmxlIHdoZW4gd2hlcmUgaXMgcG9zc2libGUgdGhlIGVkaXRpbmcgZnVuY3Rpb25hbGl0aWVzICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVhZE9ubHkgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQ29udHJvbHMgd2hpY2ggYWN0aW9ucyBhcmUgZW5hYmxlZCBpbiB0aGUgdmlld2VyLlxuICAgICAqIEV4YW1wbGU6XG4gICAgICogeyByb3RhdGU6IHRydWUsIGNyb3A6IGZhbHNlIH0gd2lsbCBlbmFibGUgcm90YXRpb24gYnV0IGRpc2FibGUgY3JvcHBpbmcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd2VkRWRpdEFjdGlvbnM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge1xuICAgICAgICByb3RhdGU6IHRydWUsXG4gICAgICAgIGNyb3A6IHRydWVcbiAgICB9O1xuXG4gICAgLyoqIG1lZGlhIHN1YnRpdGxlcyBmb3IgdGhlIG1lZGlhIHBsYXllciovXG4gICAgQElucHV0KClcbiAgICB0cmFja3M6IFRyYWNrW10gPSBbXTtcblxuICAgIC8qKiBPdmVybG9hZCBtaW1lVHlwZSovXG4gICAgQElucHV0KClcbiAgICBtaW1lVHlwZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQ29udGV4dCBvYmplY3QgYXZhaWxhYmxlIGZvciBiaW5kaW5nIGJ5IHRoZSBsb2NhbCBzaWRlYmFyUmlnaHRUZW1wbGF0ZSB3aXRoIGxldCBkZWNsYXJhdGlvbnMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzaWRlYmFyUmlnaHRUZW1wbGF0ZUNvbnRleHQ6IFQgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQ29udGV4dCBvYmplY3QgYXZhaWxhYmxlIGZvciBiaW5kaW5nIGJ5IHRoZSBsb2NhbCBzaWRlYmFyTGVmdFRlbXBsYXRlIHdpdGggbGV0IGRlY2xhcmF0aW9ucy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNpZGViYXJMZWZ0VGVtcGxhdGVDb250ZXh0OiBUID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENoYW5nZSB0aGUgY2xvc2UgYnV0dG9uIHBvc2l0aW9uIFJpZ2h0L0xlZnQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjbG9zZUJ1dHRvblBvc2l0aW9uID0gQ2xvc2VCdXR0b25Qb3NpdGlvbi5MZWZ0O1xuXG4gICAgLyoqIFRvZ2dsZXMgdGhlICdJbmZvIEJ1dHRvbicgKi9cbiAgICBASW5wdXQoKVxuICAgIGhpZGVJbmZvQnV0dG9uID0gZmFsc2U7XG5cbiAgICAvKiogVGVtcGxhdGUgY29udGFpbmluZyBWaWV3ZXJFeHRlbnNpb25EaXJlY3RpdmUgaW5zdGFuY2VzIHByb3ZpZGluZyBkaWZmZXJlbnQgdmlld2VyIGV4dGVuc2lvbnMgYmFzZWQgb24gc3VwcG9ydGVkIGZpbGUgZXh0ZW5zaW9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmlld2VyRXh0ZW5zaW9uczogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKiBJZGVudGlmaWVyIG9mIGEgbm9kZSB0aGF0IGlzIG9wZW5lZCBieSB0aGUgdmlld2VyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbm9kZUlkOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqIE9yaWdpbmFsIG5vZGUgbWltZSB0eXBlLCBzaG91bGQgYmUgcHJvdmlkZWQgd2hlbiByZW5kaXRpb25hIG1pbWUgdHlwZSBpcyBkaWZmZXJlbnQuICovXG4gICAgQElucHV0KClcbiAgICBub2RlTWltZVR5cGU6IHN0cmluZyA9IHVuZGVmaW5lZDtcblxuICAgIC8qKiBDdXN0b20gZXJyb3IgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHZpZXdlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGN1c3RvbUVycm9yOiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiogVG9nZ2xlcyBkaXZpZGVycyB2aXNpYmlsaXR5ICovXG4gICAgQElucHV0KClcbiAgICBzaG93VG9vbGJhckRpdmlkZXJzID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEVuYWJsZSBkaWFsb2cgYm94IHRvIGFsbG93IHVzZXIgdG8gZG93bmxvYWQgdGhlIHByZXZpZXdlZCBmaWxlLCBpbiBjYXNlIHRoZSBwcmV2aWV3IGlzIG5vdCByZXNwb25kaW5nIGZvciBhIHNldCBwZXJpb2Qgb2YgdGltZS5cbiAgICAgKi9cbiAgICBlbmFibGVEb3dubG9hZFByb21wdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRW5hYmxlIHJlbWluZGVyIGRpYWxvZ3MgdG8gcHJvbXB0IHVzZXIgdG8gZG93bmxvYWQgdGhlIGZpbGUsIGluIGNhc2UgdGhlIHByZXZpZXcgaXMgbm90IHJlc3BvbmRpbmcgZm9yIGEgc2V0IHBlcmlvZCBvZiB0aW1lLlxuICAgICAqL1xuICAgIGVuYWJsZURvd25sb2FkUHJvbXB0UmVtaW5kZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEluaXRpYWwgdGltZSBpbiBzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGdpdmluZyB0aGUgZmlyc3QgcHJvbXB0IHRvIHVzZXIgdG8gZG93bmxvYWQgdGhlIGZpbGVcbiAgICAgKi9cbiAgICBkb3dubG9hZFByb21wdERlbGF5OiBudW1iZXIgPSA1MDtcblxuICAgIC8qKlxuICAgICAqIFRpbWUgaW4gc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBnaXZpbmcgdGhlIHNlY29uZCBhbmQgY29uc2VxdWVudCByZW1pbmRlcnMgdG8gdGhlIHVzZXIgdG8gZG93bmxvYWQgdGhlIGZpbGUuXG4gICAgICovXG4gICAgZG93bmxvYWRQcm9tcHRSZW1pbmRlckRlbGF5OiBudW1iZXIgPSAxNTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiB1c2VyIGNsaWNrcyBvbiBkb3dubG9hZCBidXR0b24gb24gZG93bmxvYWQgcHJvbXB0IGRpYWxvZy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBkb3dubG9hZEZpbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHVzZXIgY2xpY2tzICdOYXZpZ2F0ZSBCZWZvcmUnIChcIjxcIikgYnV0dG9uLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG5hdmlnYXRlQmVmb3JlID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdXNlciBjbGlja3MgJ05hdmlnYXRlIE5leHQnIChcIj5cIikgYnV0dG9uLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG5hdmlnYXRlTmV4dCA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSB2aWV3ZXIgY2xvc2UgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzaG93Vmlld2VyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgaW1nIGlzIHN1Ym1pdHRlZCBpbiB0aGUgaW1nIHZpZXdlci4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzdWJtaXRGaWxlID0gbmV3IEV2ZW50RW1pdHRlcjxCbG9iPigpO1xuXG4gICAgcHJpdmF0ZSBjbG9zZVZpZXdlciA9IHRydWU7XG4gICAgcHJpdmF0ZSBrZXlEb3duJCA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKTtcbiAgICBwcml2YXRlIGlzRGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2ZpbGVOYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfZmlsZU5hbWVXaXRob3V0RXh0ZW5zaW9uOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfZmlsZUV4dGVuc2lvbjogc3RyaW5nO1xuXG4gICAgcHVibGljIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIGRpc3BsYXlUaXRsZTogc3RyaW5nO1xuICAgIHB1YmxpYyBkb3dubG9hZFByb21wdFRpbWVyOiBudW1iZXI7XG4gICAgcHVibGljIGRvd25sb2FkUHJvbXB0UmVtaW5kZXJUaW1lcjogbnVtYmVyO1xuICAgIHB1YmxpYyBtaW1lVHlwZUljb25Vcmw6IHN0cmluZztcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBPdmVycmlkZSBDb250ZW50IGZpbGVuYW1lLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZpbGVOYW1lKGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZmlsZU5hbWUgPSBmaWxlTmFtZTtcbiAgICAgICAgdGhpcy5fZmlsZUV4dGVuc2lvbiA9IHRoaXMudmlld1V0aWxzU2VydmljZS5nZXRGaWxlRXh0ZW5zaW9uKHRoaXMuZmlsZU5hbWUpO1xuICAgICAgICB0aGlzLl9maWxlTmFtZVdpdGhvdXRFeHRlbnNpb24gPSB0aGlzLmZpbGVOYW1lPy5yZXBsYWNlKG5ldyBSZWdFeHAoYCR7dGhpcy5maWxlRXh0ZW5zaW9ufSRgKSwgJycpIHx8ICcnO1xuICAgICAgICBjb25zdCB2YWx1ZSA9ICh0aGlzLmZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbiB8fCAnJykgKyAodGhpcy5maWxlRXh0ZW5zaW9uIHx8ICcnKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5TmFtZSA9IHRoaXMuZ2V0RGlzcGxheVRydW5jYXRlZFZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogT3ZlcnJpZGUgQ29udGVudCB0aXRsZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aXRsZSh0aXRsZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheVRpdGxlID0gdGhpcy5nZXREaXNwbGF5VHJ1bmNhdGVkVmFsdWUodGl0bGUpO1xuICAgIH1cblxuICAgIGdldCBmaWxlTmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZU5hbWU7XG4gICAgfVxuXG4gICAgZ2V0IGZpbGVFeHRlbnNpb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVFeHRlbnNpb247XG4gICAgfVxuXG4gICAgZ2V0IGZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZU5hbWVXaXRob3V0RXh0ZW5zaW9uO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgIHByaXZhdGUgdmlld1V0aWxzU2VydmljZTogVmlld1V0aWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2VcbiAgICApIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IHsgYmxvYkZpbGUsIHVybEZpbGUsIG1pbWVUeXBlLCBub2RlTWltZVR5cGUgfSA9IGNoYW5nZXM7XG5cbiAgICAgICAgaWYgKGJsb2JGaWxlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubWltZVR5cGUgPSBibG9iRmlsZS5jdXJyZW50VmFsdWUudHlwZTtcbiAgICAgICAgICAgIHRoaXMubWltZVR5cGVJY29uVXJsID0gdGhpcy50aHVtYm5haWxTZXJ2aWNlLmdldE1pbWVUeXBlSWNvbihibG9iRmlsZS5jdXJyZW50VmFsdWUudHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXJsRmlsZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVOYW1lIHx8PSB0aGlzLnZpZXdVdGlsc1NlcnZpY2UuZ2V0RmlsZW5hbWVGcm9tVXJsKHVybEZpbGUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtaW1lVHlwZT8uY3VycmVudFZhbHVlICYmICFub2RlTWltZVR5cGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5taW1lVHlwZUljb25VcmwgPSB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKG1pbWVUeXBlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZU1pbWVUeXBlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubWltZVR5cGVJY29uVXJsID0gdGhpcy50aHVtYm5haWxTZXJ2aWNlLmdldE1pbWVUeXBlSWNvbihub2RlTWltZVR5cGUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlT3ZlcmxheU1hbmFnZXIoKTtcbiAgICAgICAgdGhpcy5jb25maWd1cmVBbmRJbml0RG93bmxvYWRQcm9tcHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb3NlT3ZlcmxheU1hbmFnZXIoKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nLmFmdGVyT3BlbmVkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBza2lwV2hpbGUoKCkgPT4gIXRoaXMub3ZlcmxheU1vZGUpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+ICh0aGlzLmNsb3NlVmlld2VyID0gZmFsc2UpKTtcblxuICAgICAgICB0aGlzLmRpYWxvZy5hZnRlckFsbENsb3NlZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc2tpcFdoaWxlKCgpID0+ICF0aGlzLm92ZXJsYXlNb2RlKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiAodGhpcy5jbG9zZVZpZXdlciA9IHRydWUpKTtcblxuICAgICAgICB0aGlzLmtleURvd24kXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBza2lwV2hpbGUoKCkgPT4gIXRoaXMub3ZlcmxheU1vZGUpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZTogS2V5Ym9hcmRFdmVudCkgPT4gZS5rZXlDb2RlID09PSAyNyksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsb3NlVmlld2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uTmF2aWdhdGVCZWZvcmVDbGljayhldmVudDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5yZXNldExvYWRpbmdTcGlubmVyKCk7XG4gICAgICAgIHRoaXMubmF2aWdhdGVCZWZvcmUubmV4dChldmVudCk7XG4gICAgfVxuXG4gICAgb25OYXZpZ2F0ZU5leHRDbGljayhldmVudDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5yZXNldExvYWRpbmdTcGlubmVyKCk7XG4gICAgICAgIHRoaXMubmF2aWdhdGVOZXh0Lm5leHQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNsb3NlIHRoZSB2aWV3ZXJcbiAgICAgKi9cbiAgICBvbkNsb3NlKCkge1xuICAgICAgICB0aGlzLnNob3dWaWV3ZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93Vmlld2VyQ2hhbmdlLmVtaXQodGhpcy5zaG93Vmlld2VyKTtcbiAgICB9XG5cbiAgICB0b2dnbGVSaWdodFNpZGViYXIoKSB7XG4gICAgICAgIHRoaXMuc2hvd1JpZ2h0U2lkZWJhciA9ICF0aGlzLnNob3dSaWdodFNpZGViYXI7XG4gICAgfVxuXG4gICAgdG9nZ2xlTGVmdFNpZGViYXIoKSB7XG4gICAgICAgIHRoaXMuc2hvd0xlZnRTaWRlYmFyID0gIXRoaXMuc2hvd0xlZnRTaWRlYmFyO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleXVwJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudD8uZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcgJiYgdGhpcy5jYW5OYXZpZ2F0ZUJlZm9yZSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMub25OYXZpZ2F0ZUJlZm9yZUNsaWNrKGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0JyAmJiB0aGlzLmNhbk5hdmlnYXRlTmV4dCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMub25OYXZpZ2F0ZU5leHRDbGljayhldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0tleUYnICYmIGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLmVudGVyRnVsbFNjcmVlbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcnMgZnVsbCBzY3JlZW4gbW9kZSB3aXRoIGEgbWFpbiBjb250ZW50IGFyZWEgZGlzcGxheWVkLlxuICAgICAqL1xuICAgIGVudGVyRnVsbFNjcmVlbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dGdWxsU2NyZWVuKSB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFkZi12aWV3ZXJfX2Z1bGxzY3JlZW4tY29udGFpbmVyJyk7XG4gICAgICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lci5yZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIucmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRhaW5lci53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRhaW5lci5tb3pSZXF1ZXN0RnVsbFNjcmVlbikge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIubW96UmVxdWVzdEZ1bGxTY3JlZW4oKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRhaW5lci5tc1JlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5tc1JlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TdWJtaXRGaWxlKG5ld0ltYWdlQmxvYjogQmxvYikge1xuICAgICAgICB0aGlzLnN1Ym1pdEZpbGUuZW1pdChuZXdJbWFnZUJsb2IpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmNsZWFyRG93bmxvYWRQcm9tcHRUaW1lb3V0cygpO1xuICAgIH1cblxuICAgIGdldERpc3BsYXlUcnVuY2F0ZWRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbWF4TGVuZ3RoID0gNTA7XG5cbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA8PSBtYXhMZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFtb3VudE9mVHJ1bmNhdGVEb3RzID0gNTtcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlU3BhY2UgPSBtYXhMZW5ndGggLSBhbW91bnRPZlRydW5jYXRlRG90cztcbiAgICAgICAgY29uc3QgZW5kTGVuZ3RoID0gODtcbiAgICAgICAgY29uc3Qgc3RhcnRMZW5ndGggPSBhdmFpbGFibGVTcGFjZSAtIGVuZExlbmd0aDtcblxuICAgICAgICBjb25zdCBzdGFydCA9IHZhbHVlLnN1YnN0cmluZygwLCBzdGFydExlbmd0aCk7XG4gICAgICAgIGNvbnN0IGVuZCA9IHZhbHVlLnN1YnN0cmluZyh2YWx1ZS5sZW5ndGggLSBlbmRMZW5ndGgpO1xuICAgICAgICByZXR1cm4gc3RhcnQgKyAnLi4uLi4nICsgZW5kO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlndXJlQW5kSW5pdERvd25sb2FkUHJvbXB0KCkge1xuICAgICAgICB0aGlzLmNvbmZpZ3VyZURvd25sb2FkUHJvbXB0UHJvcGVydGllcygpO1xuICAgICAgICBpZiAodGhpcy5lbmFibGVEb3dubG9hZFByb21wdCkge1xuICAgICAgICAgICAgdGhpcy5pbml0RG93bmxvYWRQcm9tcHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlndXJlRG93bmxvYWRQcm9tcHRQcm9wZXJ0aWVzKCkge1xuICAgICAgICBjb25zdCBub25SZXNwb25zaXZlUHJldmlld0NvbmZpZyA9IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXQoJ3ZpZXdlcicsIERFRkFVTFRfTk9OX1BSRVZJRVdfQ09ORklHKTtcblxuICAgICAgICB0aGlzLmVuYWJsZURvd25sb2FkUHJvbXB0ID0gbm9uUmVzcG9uc2l2ZVByZXZpZXdDb25maWcuZW5hYmxlRG93bmxvYWRQcm9tcHQ7XG4gICAgICAgIHRoaXMuZW5hYmxlRG93bmxvYWRQcm9tcHRSZW1pbmRlciA9IG5vblJlc3BvbnNpdmVQcmV2aWV3Q29uZmlnLmVuYWJsZURvd25sb2FkUHJvbXB0UmVtaW5kZXI7XG4gICAgICAgIHRoaXMuZG93bmxvYWRQcm9tcHREZWxheSA9IG5vblJlc3BvbnNpdmVQcmV2aWV3Q29uZmlnLmRvd25sb2FkUHJvbXB0RGVsYXk7XG4gICAgICAgIHRoaXMuZG93bmxvYWRQcm9tcHRSZW1pbmRlckRlbGF5ID0gbm9uUmVzcG9uc2l2ZVByZXZpZXdDb25maWcuZG93bmxvYWRQcm9tcHRSZW1pbmRlckRlbGF5O1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdERvd25sb2FkUHJvbXB0KCkge1xuICAgICAgICB0aGlzLmRvd25sb2FkUHJvbXB0VGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dPckNsZWFyRG93bmxvYWRQcm9tcHQoKTtcbiAgICAgICAgfSwgdGhpcy5kb3dubG9hZFByb21wdERlbGF5ICogMTAwMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93T3JDbGVhckRvd25sb2FkUHJvbXB0KCkge1xuICAgICAgICBpZiAoIXRoaXMudXJsRmlsZSAmJiAhdGhpcy5ibG9iRmlsZSkge1xuICAgICAgICAgICAgdGhpcy5zaG93RG93bmxvYWRQcm9tcHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJEb3dubG9hZFByb21wdFRpbWVvdXRzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJEb3dubG9hZFByb21wdFRpbWVvdXRzKCkge1xuICAgICAgICBpZiAodGhpcy5kb3dubG9hZFByb21wdFRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5kb3dubG9hZFByb21wdFRpbWVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kb3dubG9hZFByb21wdFJlbWluZGVyVGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRvd25sb2FkUHJvbXB0UmVtaW5kZXJUaW1lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dEb3dubG9hZFByb21wdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRGlhbG9nVmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5pc0RpYWxvZ1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dcbiAgICAgICAgICAgICAgICAub3BlbihEb3dubG9hZFByb21wdERpYWxvZ0NvbXBvbmVudCwgeyBkaXNhYmxlQ2xvc2U6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBEb3dubG9hZFByb21wdEFjdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0RpYWxvZ1Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gRG93bmxvYWRQcm9tcHRBY3Rpb25zLkRPV05MT0FEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkRmlsZS5lbWl0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT09IERvd25sb2FkUHJvbXB0QWN0aW9ucy5XQUlUKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5lbmFibGVEb3dubG9hZFByb21wdFJlbWluZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhckRvd25sb2FkUHJvbXB0VGltZW91dHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkUHJvbXB0UmVtaW5kZXJUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93T3JDbGVhckRvd25sb2FkUHJvbXB0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5kb3dubG9hZFByb21wdFJlbWluZGVyRGVsYXkgKiAxMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldExvYWRpbmdTcGlubmVyKCkge1xuICAgICAgICB0aGlzLnVybEZpbGUgPSAnJztcbiAgICAgICAgdGhpcy5ibG9iRmlsZSA9IG51bGw7XG4gICAgfVxufVxuIiwiPGRpdiAqbmdJZj1cInNob3dWaWV3ZXJcIlxuICAgICBjbGFzcz1cImFkZi12aWV3ZXItY29udGFpbmVyXCJcbiAgICAgW2NsYXNzLmFkZi12aWV3ZXItb3ZlcmxheS1jb250YWluZXJdPVwib3ZlcmxheU1vZGVcIlxuICAgICBbY2xhc3MuYWRmLXZpZXdlci1pbmxpbmUtY29udGFpbmVyXT1cIiFvdmVybGF5TW9kZVwiPlxuXG4gICAgPGRpdiBjbGFzcz1cImFkZi12aWV3ZXItY29udGVudFwiXG4gICAgICAgICBbY2RrVHJhcEZvY3VzXT1cIm92ZXJsYXlNb2RlXCJcbiAgICAgICAgIGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtdmlld2VyLXRvb2xiYXJcIiAvPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1Rvb2xiYXIgJiYgIXRvb2xiYXJcIj5cbiAgICAgICAgICAgIDxhZGYtdG9vbGJhciBpZD1cImFkZi12aWV3ZXItdG9vbGJhclwiIGNsYXNzPVwiYWRmLXZpZXdlci10b29sYmFyXCI+XG4gICAgICAgICAgICAgICAgPGFkZi10b29sYmFyLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dMZWZ0U2lkZWJhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJzaG93TGVmdFNpZGViYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuSU5GTycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuSU5GTycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1sZWZ0LXNpZGViYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwic2hvd0xlZnRTaWRlYmFyID8gJ2FjY2VudCcgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUxlZnRTaWRlYmFyKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+aW5mb19vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWxsb3dHb0JhY2sgJiYgY2xvc2VCdXR0b25Qb3NpdGlvbiA9PT0gQ2xvc2VCdXR0b25Qb3NpdGlvbi5MZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi12aWV3ZXItY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1sZWZ0LWJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5DTE9TRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5DTE9TRScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvYWRmLXRvb2xiYXItdGl0bGU+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlcl9fZmlsZS10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWxsb3dOYXZpZ2F0ZSAmJiBjYW5OYXZpZ2F0ZUJlZm9yZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItcHJlZi1maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuUFJFVl9GSUxFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLlBSRVZfRklMRScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk5hdmlnYXRlQmVmb3JlQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPm5hdmlnYXRlX2JlZm9yZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiYWRmLXZpZXdlcl9fbWltZWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiJ0FERl9WSUVXRVIuQVJJQS5NSU1FX1RZUEVfSUNPTicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwibWltZVR5cGVJY29uVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtZmlsZS10aHVtYm5haWxcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChkaXNwbGF5VGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdmlld2VyX190aXRsZS1kaXNwbGF5LW5hbWUtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhZGYtdmlld2VyLXRpdGxlLWRpc3BsYXktbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJmaWxlTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYWRmLXZpZXdlcl9fdGl0bGUtdmFsdWVcIj57eyBkaXNwbGF5VGl0bGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhZGYtdmlld2VyX19kaXNwbGF5LW5hbWUtdmFsdWVcIj57eyBkaXNwbGF5TmFtZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdmlld2VyX19kaXNwbGF5LW5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImFkZi12aWV3ZXItZGlzcGxheS1uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImZpbGVOYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZGlzcGxheU5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWxsb3dOYXZpZ2F0ZSAmJiBjYW5OYXZpZ2F0ZU5leHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10b29sYmFyLW5leHQtZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLk5FWFRfRklMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5ORVhUX0ZJTEUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25OYXZpZ2F0ZU5leHRDbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bmF2aWdhdGVfbmV4dDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnNcIiAvPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1udU9wZW5XaXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD0nYWRmLXRvb2xiYXItY3VzdG9tLWJ0bic+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9XCJhZGYtdmlld2VyLW9wZW53aXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1udU9wZW5XaXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1vcGVuLXdpdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdBREZfVklFV0VSLkFDVElPTlMuT1BFTl9XSVRIJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtbnVPcGVuV2l0aD1cIm1hdE1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW292ZXJsYXBUcmlnZ2VyXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtdmlld2VyLW9wZW4td2l0aFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICBAaWYgKHNob3dUb29sYmFyRGl2aWRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFkZi10b29sYmFyLWRpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtdmlld2VyLXRvb2xiYXItY3VzdG9tLWFjdGlvbnNcIiAvPlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cImFkZi12aWV3ZXItZnVsbHNjcmVlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFsbG93RnVsbFNjcmVlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5GVUxMU0NSRUVOJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuRlVMTFNDUkVFTicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItZnVsbHNjcmVlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW50ZXJGdWxsU2NyZWVuKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmZ1bGxzY3JlZW48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93UmlnaHRTaWRlYmFyICYmICFoaWRlSW5mb0J1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICA8YWRmLXRvb2xiYXItZGl2aWRlciAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJzaG93UmlnaHRTaWRlYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuSU5GTycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5JTkZPJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItc2lkZWJhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInNob3dSaWdodFNpZGViYXIgPyAnYWNjZW50JyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSaWdodFNpZGViYXIoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmluZm9fb3V0bGluZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW51TW9yZUFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cImFkZi12aWV3ZXItbW9yZWFjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtbnVNb3JlQWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLk1PUkVfQUNUSU9OUycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5NT1JFX0FDVElPTlMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1tb3JlLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtbnVNb3JlQWN0aW9ucz1cIm1hdE1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW292ZXJsYXBUcmlnZ2VyXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtdmlld2VyLW1vcmUtYWN0aW9uc1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dHb0JhY2sgJiYgY2xvc2VCdXR0b25Qb3NpdGlvbiA9PT0gQ2xvc2VCdXR0b25Qb3NpdGlvbi5SaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dUb29sYmFyRGl2aWRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhZGYtdG9vbGJhci1kaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkZi12aWV3ZXItY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1yaWdodC1iYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPC9hZGYtdG9vbGJhcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi12aWV3ZXItc2lkZWJhcnNcIj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93UmlnaHRTaWRlYmFyICYmIHNob3dSaWdodFNpZGViYXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlcl9fc2lkZWJhciBhZGYtdmlld2VyX19zaWRlYmFyX19yaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICBpZD1cImFkZi1yaWdodC1zaWRlYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaWRlYmFyUmlnaHRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGViYXJSaWdodFRlbXBsYXRlO2NvbnRleHQ6c2lkZWJhclJpZ2h0VGVtcGxhdGVDb250ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIXNpZGViYXJSaWdodFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0PVwiYWRmLXZpZXdlci1zaWRlYmFyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dMZWZ0U2lkZWJhciAmJiBzaG93TGVmdFNpZGViYXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlcl9fc2lkZWJhciBhZGYtdmlld2VyX19zaWRlYmFyX19sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWRmLWxlZnQtc2lkZWJhclwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2lkZWJhckxlZnRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGViYXJMZWZ0VGVtcGxhdGU7Y29udGV4dDpzaWRlYmFyTGVmdFRlbXBsYXRlQ29udGV4dFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCAqbmdJZj1cIiFzaWRlYmFyTGVmdFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0PVwiYWRmLXZpZXdlci1zaWRlYmFyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8YWRmLXZpZXdlci1yZW5kZXIgKGNsb3NlKT1cIm9uQ2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbWVUeXBlXT1cIm1pbWVUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsZU5hbWVdPVwiZmlsZU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtibG9iRmlsZV09XCJibG9iRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3VibWl0RmlsZSk9XCJvblN1Ym1pdEZpbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbG93ZWRFZGl0QWN0aW9uc109XCJhbGxvd2VkRWRpdEFjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxGaWxlXT1cInVybEZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc1NhdmluZyk9XCJhbGxvd05hdmlnYXRlID0gISRldmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYWNrc109XCJ0cmFja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aWV3ZXJUZW1wbGF0ZUV4dGVuc2lvbnNdPVwidmlld2VyRXh0ZW5zaW9ucyA/PyB2aWV3ZXJUZW1wbGF0ZUV4dGVuc2lvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub2RlSWRdPVwibm9kZUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tRXJyb3JdPVwiY3VzdG9tRXJyb3JcIiAvPlxuXG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
492
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdmlld2VyL2NvbXBvbmVudHMvdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdmlld2VyL2NvbXBvbmVudHMvdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUlMLE1BQU0sRUFFTixXQUFXLEVBQ1gsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFP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LE1BQU07Z0JBS1AsY0FBYztzQkFEYixNQUFNO2dCQUtQLFlBQVk7c0JBRFgsTUFBTTtnQkFLUCxnQkFBZ0I7c0JBRGYsTUFBTTtnQkFLUCxVQUFVO3NCQURULE1BQU07Z0JBb0JILEtBQUs7c0JBRFIsS0FBSztnQkFPRixRQUFRO3NCQURYLEtBQUs7Z0JBK0dOLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0LCBza2lwV2hpbGUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBwLWNvbmZpZyc7XG5pbXBvcnQgeyBUb29sYmFyQ29tcG9uZW50LCBUb29sYmFyRGl2aWRlckNvbXBvbmVudCwgVG9vbGJhclRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdG9vbGJhcic7XG5pbXBvcnQgeyBEb3dubG9hZFByb21wdEFjdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvZG93bmxvYWQtcHJvbXB0LmFjdGlvbnMnO1xuaW1wb3J0IHsgQ2xvc2VCdXR0b25Qb3NpdGlvbiwgVHJhY2sgfSBmcm9tICcuLi9tb2RlbHMvdmlld2VyLm1vZGVsJztcbmltcG9ydCB7IFZpZXdVdGlsU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ZpZXctdXRpbC5zZXJ2aWNlJztcbmltcG9ydCB7IERvd25sb2FkUHJvbXB0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9kb3dubG9hZC1wcm9tcHQtZGlhbG9nL2Rvd25sb2FkLXByb21wdC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdlck1vcmVBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi92aWV3ZXItbW9yZS1hY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3ZXJPcGVuV2l0aENvbXBvbmVudCB9IGZyb20gJy4vdmlld2VyLW9wZW4td2l0aC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld2VyUmVuZGVyQ29tcG9uZW50IH0gZnJvbSAnLi92aWV3ZXItcmVuZGVyL3ZpZXdlci1yZW5kZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdlclNpZGViYXJDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdlci1zaWRlYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3ZXJUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnLi92aWV3ZXItdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld2VyVG9vbGJhckFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdlci10b29sYmFyLWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdlclRvb2xiYXJDdXN0b21BY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi92aWV3ZXItdG9vbGJhci1jdXN0b20tYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ljb24nO1xuaW1wb3J0IHsgVGh1bWJuYWlsU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmNvbnN0IERFRkFVTFRfTk9OX1BSRVZJRVdfQ09ORklHID0ge1xuICAgIGVuYWJsZURvd25sb2FkUHJvbXB0OiBmYWxzZSxcbiAgICBlbmFibGVEb3dubG9hZFByb21wdFJlbWluZGVyOiBmYWxzZSxcbiAgICBkb3dubG9hZFByb21wdERlbGF5OiA1MCxcbiAgICBkb3dubG9hZFByb21wdFJlbWluZGVyRGVsYXk6IDMwXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi12aWV3ZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3ZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgaG9zdDogeyBjbGFzczogJ2FkZi12aWV3ZXInIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nSWYsXG4gICAgICAgIEExMXlNb2R1bGUsXG4gICAgICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgICAgIFRvb2xiYXJUaXRsZUNvbXBvbmVudCxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVQaXBlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRNZW51TW9kdWxlLFxuICAgICAgICBUb29sYmFyRGl2aWRlckNvbXBvbmVudCxcbiAgICAgICAgVmlld2VyUmVuZGVyQ29tcG9uZW50LFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBWaWV3ZXJUb29sYmFyQ29tcG9uZW50LFxuICAgICAgICBWaWV3ZXJTaWRlYmFyQ29tcG9uZW50LFxuICAgICAgICBWaWV3ZXJUb29sYmFyQWN0aW9uc0NvbXBvbmVudCxcbiAgICAgICAgVmlld2VyVG9vbGJhckN1c3RvbUFjdGlvbnNDb21wb25lbnQsXG4gICAgICAgIEljb25Db21wb25lbnRcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1ZpZXdVdGlsU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgVmlld2VyQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgcHJpdmF0ZSB0aHVtYm5haWxTZXJ2aWNlID0gaW5qZWN0KFRodW1ibmFpbFNlcnZpY2UpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hZGYtdmlld2VyLWlubGluZScpXG4gICAgZ2V0IGlzSW5saW5lKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMub3ZlcmxheU1vZGU7XG4gICAgfVxuXG4gICAgQENvbnRlbnRDaGlsZChWaWV3ZXJUb29sYmFyQ29tcG9uZW50KVxuICAgIHRvb2xiYXI6IFZpZXdlclRvb2xiYXJDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKFZpZXdlclNpZGViYXJDb21wb25lbnQpXG4gICAgc2lkZWJhcjogVmlld2VyU2lkZWJhckNvbXBvbmVudDtcblxuICAgIEBDb250ZW50Q2hpbGQoVmlld2VyT3BlbldpdGhDb21wb25lbnQpXG4gICAgbW51T3BlbldpdGg6IFZpZXdlck9wZW5XaXRoQ29tcG9uZW50O1xuXG4gICAgQENvbnRlbnRDaGlsZChWaWV3ZXJNb3JlQWN0aW9uc0NvbXBvbmVudClcbiAgICBtbnVNb3JlQWN0aW9uczogVmlld2VyTW9yZUFjdGlvbnNDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKCd2aWV3ZXJFeHRlbnNpb25zJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgdmlld2VyVGVtcGxhdGVFeHRlbnNpb25zOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZ2V0IENsb3NlQnV0dG9uUG9zaXRpb24oKSB7XG4gICAgICAgIHJldHVybiBDbG9zZUJ1dHRvblBvc2l0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIHlvdSB3YW50IHRvIGxvYWQgYW4gZXh0ZXJuYWwgZmlsZSB0aGF0IGRvZXMgbm90IGNvbWUgZnJvbSBBQ1MgeW91XG4gICAgICogY2FuIHVzZSB0aGlzIFVSTCB0byBzcGVjaWZ5IHdoZXJlIHRvIGxvYWQgdGhlIGZpbGUgZnJvbS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHVybEZpbGUgPSAnJztcblxuICAgIC8qKiBMb2FkcyBhIEJsb2IgRmlsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgYmxvYkZpbGU6IEJsb2I7XG5cbiAgICAvKiogSGlkZSBvciBzaG93IHRoZSB2aWV3ZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dWaWV3ZXIgPSB0cnVlO1xuXG4gICAgLyoqIEFsbG93cyBgYmFja2AgbmF2aWdhdGlvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dHb0JhY2sgPSB0cnVlO1xuXG4gICAgLyoqIFRvZ2dsZXMgdGhlICdGdWxsIFNjcmVlbicgZmVhdHVyZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93RnVsbFNjcmVlbiA9IHRydWU7XG5cbiAgICAvKiogSGlkZSBvciBzaG93IHRoZSB0b29sYmFyICovXG4gICAgQElucHV0KClcbiAgICBzaG93VG9vbGJhciA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBJZiBgdHJ1ZWAgdGhlbiBzaG93IHRoZSBWaWV3ZXIgYXMgYSBmdWxsIHBhZ2Ugb3ZlciB0aGUgY3VycmVudCBjb250ZW50LlxuICAgICAqIE90aGVyd2lzZSwgZml0IGluc2lkZSB0aGUgcGFyZW50IGRpdi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG92ZXJsYXlNb2RlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIGJlZm9yZS9uZXh0IG5hdmlnYXRpb24uIFlvdSBjYW4gdXNlIHRoZSBhcnJvdyBidXR0b25zIHRvIG5hdmlnYXRlXG4gICAgICogYmV0d2VlbiBkb2N1bWVudHMgaW4gdGhlIGNvbGxlY3Rpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd05hdmlnYXRlID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgXCJiZWZvcmVcIiAoXCI8XCIpIGJ1dHRvbi4gUmVxdWlyZXMgYGFsbG93TmF2aWdhdGVgIHRvIGJlIGVuYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBjYW5OYXZpZ2F0ZUJlZm9yZSA9IHRydWU7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgbmV4dCAoXCI+XCIpIGJ1dHRvbi4gUmVxdWlyZXMgYGFsbG93TmF2aWdhdGVgIHRvIGJlIGVuYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBjYW5OYXZpZ2F0ZU5leHQgPSB0cnVlO1xuXG4gICAgLyoqIEFsbG93IHRoZSBsZWZ0IHRoZSBzaWRlYmFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dMZWZ0U2lkZWJhciA9IGZhbHNlO1xuXG4gICAgLyoqIEFsbG93IHRoZSByaWdodCBzaWRlYmFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dSaWdodFNpZGViYXIgPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIHJpZ2h0IHNpZGViYXIgdmlzaWJpbGl0eS4gUmVxdWlyZXMgYGFsbG93UmlnaHRTaWRlYmFyYCB0byBiZSBzZXQgdG8gYHRydWVgLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1JpZ2h0U2lkZWJhciA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZXMgbGVmdCBzaWRlYmFyIHZpc2liaWxpdHkuIFJlcXVpcmVzIGBhbGxvd0xlZnRTaWRlYmFyYCB0byBiZSBzZXQgdG8gYHRydWVgLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0xlZnRTaWRlYmFyID0gZmFsc2U7XG5cbiAgICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgcmlnaHQgc2lkZWJhci4gVGhlIHRlbXBsYXRlIGNvbnRleHQgY29udGFpbnMgdGhlIGxvYWRlZCBub2RlIGRhdGEuICovXG4gICAgQElucHV0KClcbiAgICBzaWRlYmFyUmlnaHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG5cbiAgICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgbGVmdCBzaWRlYmFyLiBUaGUgdGVtcGxhdGUgY29udGV4dCBjb250YWlucyB0aGUgbG9hZGVkIG5vZGUgZGF0YS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNpZGViYXJMZWZ0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuXG4gICAgLyoqIEVuYWJsZSB3aGVuIHdoZXJlIGlzIHBvc3NpYmxlIHRoZSBlZGl0aW5nIGZ1bmN0aW9uYWxpdGllcyAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlYWRPbmx5ID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIENvbnRyb2xzIHdoaWNoIGFjdGlvbnMgYXJlIGVuYWJsZWQgaW4gdGhlIHZpZXdlci5cbiAgICAgKiBFeGFtcGxlOlxuICAgICAqIHsgcm90YXRlOiB0cnVlLCBjcm9wOiBmYWxzZSB9IHdpbGwgZW5hYmxlIHJvdGF0aW9uIGJ1dCBkaXNhYmxlIGNyb3BwaW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dlZEVkaXRBY3Rpb25zOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHtcbiAgICAgICAgcm90YXRlOiB0cnVlLFxuICAgICAgICBjcm9wOiB0cnVlXG4gICAgfTtcblxuICAgIC8qKiBtZWRpYSBzdWJ0aXRsZXMgZm9yIHRoZSBtZWRpYSBwbGF5ZXIqL1xuICAgIEBJbnB1dCgpXG4gICAgdHJhY2tzOiBUcmFja1tdID0gW107XG5cbiAgICAvKiogT3ZlcmxvYWQgbWltZVR5cGUqL1xuICAgIEBJbnB1dCgpXG4gICAgbWltZVR5cGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIENvbnRleHQgb2JqZWN0IGF2YWlsYWJsZSBmb3IgYmluZGluZyBieSB0aGUgbG9jYWwgc2lkZWJhclJpZ2h0VGVtcGxhdGUgd2l0aCBsZXQgZGVjbGFyYXRpb25zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2lkZWJhclJpZ2h0VGVtcGxhdGVDb250ZXh0OiBUID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENvbnRleHQgb2JqZWN0IGF2YWlsYWJsZSBmb3IgYmluZGluZyBieSB0aGUgbG9jYWwgc2lkZWJhckxlZnRUZW1wbGF0ZSB3aXRoIGxldCBkZWNsYXJhdGlvbnMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzaWRlYmFyTGVmdFRlbXBsYXRlQ29udGV4dDogVCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2UgdGhlIGNsb3NlIGJ1dHRvbiBwb3NpdGlvbiBSaWdodC9MZWZ0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VCdXR0b25Qb3NpdGlvbiA9IENsb3NlQnV0dG9uUG9zaXRpb24uTGVmdDtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSAnSW5mbyBCdXR0b24nICovXG4gICAgQElucHV0KClcbiAgICBoaWRlSW5mb0J1dHRvbiA9IGZhbHNlO1xuXG4gICAgLyoqIFRlbXBsYXRlIGNvbnRhaW5pbmcgVmlld2VyRXh0ZW5zaW9uRGlyZWN0aXZlIGluc3RhbmNlcyBwcm92aWRpbmcgZGlmZmVyZW50IHZpZXdlciBleHRlbnNpb25zIGJhc2VkIG9uIHN1cHBvcnRlZCBmaWxlIGV4dGVuc2lvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHZpZXdlckV4dGVuc2lvbnM6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogSWRlbnRpZmllciBvZiBhIG5vZGUgdGhhdCBpcyBvcGVuZWQgYnkgdGhlIHZpZXdlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5vZGVJZDogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKiBPcmlnaW5hbCBub2RlIG1pbWUgdHlwZSwgc2hvdWxkIGJlIHByb3ZpZGVkIHdoZW4gcmVuZGl0aW9uYSBtaW1lIHR5cGUgaXMgZGlmZmVyZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbm9kZU1pbWVUeXBlOiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiogQ3VzdG9tIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB2aWV3ZXIuICovXG4gICAgQElucHV0KClcbiAgICBjdXN0b21FcnJvcjogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqIFRvZ2dsZXMgZGl2aWRlcnMgdmlzaWJpbGl0eSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1Rvb2xiYXJEaXZpZGVycyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUgZGlhbG9nIGJveCB0byBhbGxvdyB1c2VyIHRvIGRvd25sb2FkIHRoZSBwcmV2aWV3ZWQgZmlsZSwgaW4gY2FzZSB0aGUgcHJldmlldyBpcyBub3QgcmVzcG9uZGluZyBmb3IgYSBzZXQgcGVyaW9kIG9mIHRpbWUuXG4gICAgICovXG4gICAgZW5hYmxlRG93bmxvYWRQcm9tcHQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEVuYWJsZSByZW1pbmRlciBkaWFsb2dzIHRvIHByb21wdCB1c2VyIHRvIGRvd25sb2FkIHRoZSBmaWxlLCBpbiBjYXNlIHRoZSBwcmV2aWV3IGlzIG5vdCByZXNwb25kaW5nIGZvciBhIHNldCBwZXJpb2Qgb2YgdGltZS5cbiAgICAgKi9cbiAgICBlbmFibGVEb3dubG9hZFByb21wdFJlbWluZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsIHRpbWUgaW4gc2Vjb25kcyB0byB3YWl0IGJlZm9yZSBnaXZpbmcgdGhlIGZpcnN0IHByb21wdCB0byB1c2VyIHRvIGRvd25sb2FkIHRoZSBmaWxlXG4gICAgICovXG4gICAgZG93bmxvYWRQcm9tcHREZWxheTogbnVtYmVyID0gNTA7XG5cbiAgICAvKipcbiAgICAgKiBUaW1lIGluIHNlY29uZHMgdG8gd2FpdCBiZWZvcmUgZ2l2aW5nIHRoZSBzZWNvbmQgYW5kIGNvbnNlcXVlbnQgcmVtaW5kZXJzIHRvIHRoZSB1c2VyIHRvIGRvd25sb2FkIHRoZSBmaWxlLlxuICAgICAqL1xuICAgIGRvd25sb2FkUHJvbXB0UmVtaW5kZXJEZWxheTogbnVtYmVyID0gMTU7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdXNlciBjbGlja3Mgb24gZG93bmxvYWQgYnV0dG9uIG9uIGRvd25sb2FkIHByb21wdCBkaWFsb2cuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgZG93bmxvYWRGaWxlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB1c2VyIGNsaWNrcyAnTmF2aWdhdGUgQmVmb3JlJyAoXCI8XCIpIGJ1dHRvbi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBuYXZpZ2F0ZUJlZm9yZSA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHVzZXIgY2xpY2tzICdOYXZpZ2F0ZSBOZXh0JyAoXCI+XCIpIGJ1dHRvbi4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBuYXZpZ2F0ZU5leHQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgdmlld2VyIGNsb3NlICovXG4gICAgQE91dHB1dCgpXG4gICAgc2hvd1ZpZXdlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGltZyBpcyBzdWJtaXR0ZWQgaW4gdGhlIGltZyB2aWV3ZXIuICovXG4gICAgQE91dHB1dCgpXG4gICAgc3VibWl0RmlsZSA9IG5ldyBFdmVudEVtaXR0ZXI8QmxvYj4oKTtcblxuICAgIHByaXZhdGUgY2xvc2VWaWV3ZXIgPSB0cnVlO1xuICAgIHByaXZhdGUga2V5RG93biQgPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnQsICdrZXlkb3duJyk7XG4gICAgcHJpdmF0ZSBpc0RpYWxvZ1Zpc2libGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9maWxlTmFtZTogc3RyaW5nO1xuICAgIHByaXZhdGUgX2ZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbjogc3RyaW5nO1xuICAgIHByaXZhdGUgX2ZpbGVFeHRlbnNpb246IHN0cmluZztcblxuICAgIHB1YmxpYyBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIHB1YmxpYyBkaXNwbGF5VGl0bGU6IHN0cmluZztcbiAgICBwdWJsaWMgZG93bmxvYWRQcm9tcHRUaW1lcjogbnVtYmVyO1xuICAgIHB1YmxpYyBkb3dubG9hZFByb21wdFJlbWluZGVyVGltZXI6IG51bWJlcjtcbiAgICBwdWJsaWMgbWltZVR5cGVJY29uVXJsOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogT3ZlcnJpZGUgQ29udGVudCB0aXRsZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aXRsZSh0aXRsZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheVRpdGxlID0gdGl0bGUgPyB0aGlzLmdldERpc3BsYXlUcnVuY2F0ZWRWYWx1ZSh0aXRsZSkgOiAnJztcbiAgICB9XG5cbiAgICAvKiogT3ZlcnJpZGUgQ29udGVudCBmaWxlbmFtZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBmaWxlTmFtZShmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2ZpbGVOYW1lID0gZmlsZU5hbWU7XG4gICAgICAgIHRoaXMuX2ZpbGVFeHRlbnNpb24gPSB0aGlzLnZpZXdVdGlsc1NlcnZpY2UuZ2V0RmlsZUV4dGVuc2lvbih0aGlzLmZpbGVOYW1lKTtcbiAgICAgICAgdGhpcy5fZmlsZU5hbWVXaXRob3V0RXh0ZW5zaW9uID0gdGhpcy5maWxlTmFtZT8ucmVwbGFjZShuZXcgUmVnRXhwKGAke3RoaXMuZmlsZUV4dGVuc2lvbn0kYCksICcnKSB8fCAnJztcbiAgICAgICAgY29uc3QgdmFsdWUgPSAodGhpcy5maWxlTmFtZVdpdGhvdXRFeHRlbnNpb24gfHwgJycpICsgKHRoaXMuZmlsZUV4dGVuc2lvbiB8fCAnJyk7XG4gICAgICAgIHRoaXMuZGlzcGxheU5hbWUgPSB0aGlzLmdldERpc3BsYXlUcnVuY2F0ZWRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGZpbGVOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlTmFtZTtcbiAgICB9XG5cbiAgICBnZXQgZmlsZUV4dGVuc2lvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZUV4dGVuc2lvbjtcbiAgICB9XG5cbiAgICBnZXQgZmlsZU5hbWVXaXRob3V0RXh0ZW5zaW9uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlTmFtZVdpdGhvdXRFeHRlbnNpb247XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSB2aWV3VXRpbHNTZXJ2aWNlOiBWaWV3VXRpbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZVxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgeyBibG9iRmlsZSwgdXJsRmlsZSwgbWltZVR5cGUsIG5vZGVNaW1lVHlwZSB9ID0gY2hhbmdlcztcblxuICAgICAgICBpZiAoYmxvYkZpbGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5taW1lVHlwZSA9IGJsb2JGaWxlLmN1cnJlbnRWYWx1ZS50eXBlO1xuICAgICAgICAgICAgdGhpcy5taW1lVHlwZUljb25VcmwgPSB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKGJsb2JGaWxlLmN1cnJlbnRWYWx1ZS50eXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1cmxGaWxlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZU5hbWUgfHw9IHRoaXMudmlld1V0aWxzU2VydmljZS5nZXRGaWxlbmFtZUZyb21VcmwodXJsRmlsZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1pbWVUeXBlPy5jdXJyZW50VmFsdWUgJiYgIW5vZGVNaW1lVHlwZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm1pbWVUeXBlSWNvblVybCA9IHRoaXMudGh1bWJuYWlsU2VydmljZS5nZXRNaW1lVHlwZUljb24obWltZVR5cGUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlTWltZVR5cGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5taW1lVHlwZUljb25VcmwgPSB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKG5vZGVNaW1lVHlwZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VPdmVybGF5TWFuYWdlcigpO1xuICAgICAgICB0aGlzLmNvbmZpZ3VyZUFuZEluaXREb3dubG9hZFByb21wdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VPdmVybGF5TWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5kaWFsb2cuYWZ0ZXJPcGVuZWRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXBXaGlsZSgoKSA9PiAhdGhpcy5vdmVybGF5TW9kZSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHRoaXMuY2xvc2VWaWV3ZXIgPSBmYWxzZSkpO1xuXG4gICAgICAgIHRoaXMuZGlhbG9nLmFmdGVyQWxsQ2xvc2VkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBza2lwV2hpbGUoKCkgPT4gIXRoaXMub3ZlcmxheU1vZGUpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+ICh0aGlzLmNsb3NlVmlld2VyID0gdHJ1ZSkpO1xuXG4gICAgICAgIHRoaXMua2V5RG93biRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXBXaGlsZSgoKSA9PiAhdGhpcy5vdmVybGF5TW9kZSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChlOiBLZXlib2FyZEV2ZW50KSA9PiBlLmtleUNvZGUgPT09IDI3KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xvc2VWaWV3ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25OYXZpZ2F0ZUJlZm9yZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLnJlc2V0TG9hZGluZ1NwaW5uZXIoKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUJlZm9yZS5uZXh0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbk5hdmlnYXRlTmV4dENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLnJlc2V0TG9hZGluZ1NwaW5uZXIoKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZU5leHQubmV4dChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2xvc2UgdGhlIHZpZXdlclxuICAgICAqL1xuICAgIG9uQ2xvc2UoKSB7XG4gICAgICAgIHRoaXMuc2hvd1ZpZXdlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dWaWV3ZXJDaGFuZ2UuZW1pdCh0aGlzLnNob3dWaWV3ZXIpO1xuICAgIH1cblxuICAgIHRvZ2dsZVJpZ2h0U2lkZWJhcigpIHtcbiAgICAgICAgdGhpcy5zaG93UmlnaHRTaWRlYmFyID0gIXRoaXMuc2hvd1JpZ2h0U2lkZWJhcjtcbiAgICB9XG5cbiAgICB0b2dnbGVMZWZ0U2lkZWJhcigpIHtcbiAgICAgICAgdGhpcy5zaG93TGVmdFNpZGViYXIgPSAhdGhpcy5zaG93TGVmdFNpZGViYXI7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAnLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50Py5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0JyAmJiB0aGlzLmNhbk5hdmlnYXRlQmVmb3JlKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5vbk5hdmlnYXRlQmVmb3JlQ2xpY2soZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93UmlnaHQnICYmIHRoaXMuY2FuTmF2aWdhdGVOZXh0KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5vbk5hdmlnYXRlTmV4dENsaWNrKGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5jb2RlID09PSAnS2V5RicgJiYgZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuZW50ZXJGdWxsU2NyZWVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyBmdWxsIHNjcmVlbiBtb2RlIHdpdGggYSBtYWluIGNvbnRlbnQgYXJlYSBkaXNwbGF5ZWQuXG4gICAgICovXG4gICAgZW50ZXJGdWxsU2NyZWVuKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hbGxvd0Z1bGxTY3JlZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWRmLXZpZXdlcl9fZnVsbHNjcmVlbi1jb250YWluZXInKTtcbiAgICAgICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyLnJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5yZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGFpbmVyLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGFpbmVyLm1velJlcXVlc3RGdWxsU2NyZWVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGFpbmVyLm1zUmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLm1zUmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblN1Ym1pdEZpbGUobmV3SW1hZ2VCbG9iOiBCbG9iKSB7XG4gICAgICAgIHRoaXMuc3VibWl0RmlsZS5lbWl0KG5ld0ltYWdlQmxvYik7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2xlYXJEb3dubG9hZFByb21wdFRpbWVvdXRzKCk7XG4gICAgfVxuXG4gICAgZ2V0RGlzcGxheVRydW5jYXRlZFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSA1MDtcblxuICAgICAgICBpZiAodmFsdWUubGVuZ3RoIDw9IG1heExlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYW1vdW50T2ZUcnVuY2F0ZURvdHMgPSA1O1xuICAgICAgICBjb25zdCBhdmFpbGFibGVTcGFjZSA9IG1heExlbmd0aCAtIGFtb3VudE9mVHJ1bmNhdGVEb3RzO1xuICAgICAgICBjb25zdCBlbmRMZW5ndGggPSA4O1xuICAgICAgICBjb25zdCBzdGFydExlbmd0aCA9IGF2YWlsYWJsZVNwYWNlIC0gZW5kTGVuZ3RoO1xuXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdmFsdWUuc3Vic3RyaW5nKDAsIHN0YXJ0TGVuZ3RoKTtcbiAgICAgICAgY29uc3QgZW5kID0gdmFsdWUuc3Vic3RyaW5nKHZhbHVlLmxlbmd0aCAtIGVuZExlbmd0aCk7XG4gICAgICAgIHJldHVybiBzdGFydCArICcuLi4uLicgKyBlbmQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maWd1cmVBbmRJbml0RG93bmxvYWRQcm9tcHQoKSB7XG4gICAgICAgIHRoaXMuY29uZmlndXJlRG93bmxvYWRQcm9tcHRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZURvd25sb2FkUHJvbXB0KSB7XG4gICAgICAgICAgICB0aGlzLmluaXREb3dubG9hZFByb21wdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maWd1cmVEb3dubG9hZFByb21wdFByb3BlcnRpZXMoKSB7XG4gICAgICAgIGNvbnN0IG5vblJlc3BvbnNpdmVQcmV2aWV3Q29uZmlnID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldCgndmlld2VyJywgREVGQVVMVF9OT05fUFJFVklFV19DT05GSUcpO1xuXG4gICAgICAgIHRoaXMuZW5hYmxlRG93bmxvYWRQcm9tcHQgPSBub25SZXNwb25zaXZlUHJldmlld0NvbmZpZy5lbmFibGVEb3dubG9hZFByb21wdDtcbiAgICAgICAgdGhpcy5lbmFibGVEb3dubG9hZFByb21wdFJlbWluZGVyID0gbm9uUmVzcG9uc2l2ZVByZXZpZXdDb25maWcuZW5hYmxlRG93bmxvYWRQcm9tcHRSZW1pbmRlcjtcbiAgICAgICAgdGhpcy5kb3dubG9hZFByb21wdERlbGF5ID0gbm9uUmVzcG9uc2l2ZVByZXZpZXdDb25maWcuZG93bmxvYWRQcm9tcHREZWxheTtcbiAgICAgICAgdGhpcy5kb3dubG9hZFByb21wdFJlbWluZGVyRGVsYXkgPSBub25SZXNwb25zaXZlUHJldmlld0NvbmZpZy5kb3dubG9hZFByb21wdFJlbWluZGVyRGVsYXk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RG93bmxvYWRQcm9tcHQoKSB7XG4gICAgICAgIHRoaXMuZG93bmxvYWRQcm9tcHRUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd09yQ2xlYXJEb3dubG9hZFByb21wdCgpO1xuICAgICAgICB9LCB0aGlzLmRvd25sb2FkUHJvbXB0RGVsYXkgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dPckNsZWFyRG93bmxvYWRQcm9tcHQoKSB7XG4gICAgICAgIGlmICghdGhpcy51cmxGaWxlICYmICF0aGlzLmJsb2JGaWxlKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dEb3dubG9hZFByb21wdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbGVhckRvd25sb2FkUHJvbXB0VGltZW91dHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhckRvd25sb2FkUHJvbXB0VGltZW91dHMoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvd25sb2FkUHJvbXB0VGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRvd25sb2FkUHJvbXB0VGltZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRvd25sb2FkUHJvbXB0UmVtaW5kZXJUaW1lcikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZG93bmxvYWRQcm9tcHRSZW1pbmRlclRpbWVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd0Rvd25sb2FkUHJvbXB0KCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNEaWFsb2dWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmlzRGlhbG9nVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1xuICAgICAgICAgICAgICAgIC5vcGVuKERvd25sb2FkUHJvbXB0RGlhbG9nQ29tcG9uZW50LCB7IGRpc2FibGVDbG9zZTogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IERvd25sb2FkUHJvbXB0QWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBEb3dubG9hZFByb21wdEFjdGlvbnMuRE9XTkxPQUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWRGaWxlLmVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gRG93bmxvYWRQcm9tcHRBY3Rpb25zLldBSVQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVuYWJsZURvd25sb2FkUHJvbXB0UmVtaW5kZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRG93bmxvYWRQcm9tcHRUaW1lb3V0cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWRQcm9tcHRSZW1pbmRlclRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dPckNsZWFyRG93bmxvYWRQcm9tcHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLmRvd25sb2FkUHJvbXB0UmVtaW5kZXJEZWxheSAqIDEwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0TG9hZGluZ1NwaW5uZXIoKSB7XG4gICAgICAgIHRoaXMudXJsRmlsZSA9ICcnO1xuICAgICAgICB0aGlzLmJsb2JGaWxlID0gbnVsbDtcbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2hvd1ZpZXdlclwiXG4gICAgIGNsYXNzPVwiYWRmLXZpZXdlci1jb250YWluZXJcIlxuICAgICBbY2xhc3MuYWRmLXZpZXdlci1vdmVybGF5LWNvbnRhaW5lcl09XCJvdmVybGF5TW9kZVwiXG4gICAgIFtjbGFzcy5hZGYtdmlld2VyLWlubGluZS1jb250YWluZXJdPVwiIW92ZXJsYXlNb2RlXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlci1jb250ZW50XCJcbiAgICAgICAgIFtjZGtUcmFwRm9jdXNdPVwib3ZlcmxheU1vZGVcIlxuICAgICAgICAgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmU+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi12aWV3ZXItdG9vbGJhclwiIC8+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG9vbGJhciAmJiAhdG9vbGJhclwiPlxuICAgICAgICAgICAgPGFkZi10b29sYmFyIGlkPVwiYWRmLXZpZXdlci10b29sYmFyXCIgY2xhc3M9XCJhZGYtdmlld2VyLXRvb2xiYXJcIj5cbiAgICAgICAgICAgICAgICA8YWRmLXRvb2xiYXItdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxvd0xlZnRTaWRlYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInNob3dMZWZ0U2lkZWJhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5JTkZPJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5JTkZPJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10b29sYmFyLWxlZnQtc2lkZWJhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJzaG93TGVmdFNpZGViYXIgPyAnYWNjZW50JyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTGVmdFNpZGViYXIoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5pbmZvX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhbGxvd0dvQmFjayAmJiBjbG9zZUJ1dHRvblBvc2l0aW9uID09PSBDbG9zZUJ1dHRvblBvc2l0aW9uLkxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXZpZXdlci1jbG9zZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10b29sYmFyLWxlZnQtYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkNMT1NFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLkNMT1NFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9hZGYtdG9vbGJhci10aXRsZT5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdmlld2VyX19maWxlLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhbGxvd05hdmlnYXRlICYmIGNhbk5hdmlnYXRlQmVmb3JlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1wcmVmLWZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5QUkVWX0ZJTEUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuUFJFVl9GSUxFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2aWdhdGVCZWZvcmVDbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bmF2aWdhdGVfYmVmb3JlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhZGYtdmlld2VyX19taW1laWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCInQURGX1ZJRVdFUi5BUklBLk1JTUVfVFlQRV9JQ09OJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJtaW1lVHlwZUljb25VcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1maWxlLXRodW1ibmFpbFwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGRpc3BsYXlUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi12aWV3ZXJfX3RpdGxlLWRpc3BsYXktbmFtZS1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImFkZi12aWV3ZXItdGl0bGUtZGlzcGxheS1uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImRpc3BsYXlUaXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYWRmLXZpZXdlcl9fdGl0bGUtdmFsdWVcIj57eyBkaXNwbGF5VGl0bGUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhZGYtdmlld2VyX19kaXNwbGF5LW5hbWUtdmFsdWVcIj57eyBkaXNwbGF5TmFtZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdmlld2VyX19kaXNwbGF5LW5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImFkZi12aWV3ZXItZGlzcGxheS1uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImZpbGVOYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZGlzcGxheU5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWxsb3dOYXZpZ2F0ZSAmJiBjYW5OYXZpZ2F0ZU5leHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10b29sYmFyLW5leHQtZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLk5FWFRfRklMRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5ORVhUX0ZJTEUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25OYXZpZ2F0ZU5leHRDbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bmF2aWdhdGVfbmV4dDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLXZpZXdlci10b29sYmFyLWFjdGlvbnNcIiAvPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1udU9wZW5XaXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD0nYWRmLXRvb2xiYXItY3VzdG9tLWJ0bic+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9XCJhZGYtdmlld2VyLW9wZW53aXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1udU9wZW5XaXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1vcGVuLXdpdGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdBREZfVklFV0VSLkFDVElPTlMuT1BFTl9XSVRIJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtbnVPcGVuV2l0aD1cIm1hdE1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW292ZXJsYXBUcmlnZ2VyXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtdmlld2VyLW9wZW4td2l0aFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICBAaWYgKHNob3dUb29sYmFyRGl2aWRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFkZi10b29sYmFyLWRpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtdmlld2VyLXRvb2xiYXItY3VzdG9tLWFjdGlvbnNcIiAvPlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cImFkZi12aWV3ZXItZnVsbHNjcmVlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFsbG93RnVsbFNjcmVlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5GVUxMU0NSRUVOJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuRlVMTFNDUkVFTicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItZnVsbHNjcmVlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW50ZXJGdWxsU2NyZWVuKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmZ1bGxzY3JlZW48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93UmlnaHRTaWRlYmFyICYmICFoaWRlSW5mb0J1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICA8YWRmLXRvb2xiYXItZGl2aWRlciAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJzaG93UmlnaHRTaWRlYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuSU5GTycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5JTkZPJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItc2lkZWJhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInNob3dSaWdodFNpZGViYXIgPyAnYWNjZW50JyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSaWdodFNpZGViYXIoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmluZm9fb3V0bGluZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW51TW9yZUFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD1cImFkZi12aWV3ZXItbW9yZWFjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtbnVNb3JlQWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLk1PUkVfQUNUSU9OUycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5NT1JFX0FDVElPTlMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1tb3JlLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtbnVNb3JlQWN0aW9ucz1cIm1hdE1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW292ZXJsYXBUcmlnZ2VyXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJhZGYtdmlld2VyLW1vcmUtYWN0aW9uc1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dHb0JhY2sgJiYgY2xvc2VCdXR0b25Qb3NpdGlvbiA9PT0gQ2xvc2VCdXR0b25Qb3NpdGlvbi5SaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dUb29sYmFyRGl2aWRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhZGYtdG9vbGJhci1kaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkZi12aWV3ZXItY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1yaWdodC1iYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPC9hZGYtdG9vbGJhcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi12aWV3ZXItc2lkZWJhcnNcIj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93UmlnaHRTaWRlYmFyICYmIHNob3dSaWdodFNpZGViYXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlcl9fc2lkZWJhciBhZGYtdmlld2VyX19zaWRlYmFyX19yaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICBpZD1cImFkZi1yaWdodC1zaWRlYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaWRlYmFyUmlnaHRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGViYXJSaWdodFRlbXBsYXRlO2NvbnRleHQ6c2lkZWJhclJpZ2h0VGVtcGxhdGVDb250ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIXNpZGViYXJSaWdodFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0PVwiYWRmLXZpZXdlci1zaWRlYmFyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dMZWZ0U2lkZWJhciAmJiBzaG93TGVmdFNpZGViYXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlcl9fc2lkZWJhciBhZGYtdmlld2VyX19zaWRlYmFyX19sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWRmLWxlZnQtc2lkZWJhclwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2lkZWJhckxlZnRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGViYXJMZWZ0VGVtcGxhdGU7Y29udGV4dDpzaWRlYmFyTGVmdFRlbXBsYXRlQ29udGV4dFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCAqbmdJZj1cIiFzaWRlYmFyTGVmdFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0PVwiYWRmLXZpZXdlci1zaWRlYmFyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8YWRmLXZpZXdlci1yZW5kZXIgKGNsb3NlKT1cIm9uQ2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbWVUeXBlXT1cIm1pbWVUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsZU5hbWVdPVwiZmlsZU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtibG9iRmlsZV09XCJibG9iRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3VibWl0RmlsZSk9XCJvblN1Ym1pdEZpbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbG93ZWRFZGl0QWN0aW9uc109XCJhbGxvd2VkRWRpdEFjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxGaWxlXT1cInVybEZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc1NhdmluZyk9XCJhbGxvd05hdmlnYXRlID0gISRldmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYWNrc109XCJ0cmFja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aWV3ZXJUZW1wbGF0ZUV4dGVuc2lvbnNdPVwidmlld2VyRXh0ZW5zaW9ucyA/PyB2aWV3ZXJUZW1wbGF0ZUV4dGVuc2lvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub2RlSWRdPVwibm9kZUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tRXJyb3JdPVwiY3VzdG9tRXJyb3JcIiAvPlxuXG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -17,4 +17,5 @@
17
17
  export * from './lib/shell.module';
18
18
  export * from './lib/services/shell-app.service';
19
19
  export * from './lib/components/shell/shell.component';
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zaGVsbC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsd0NBQXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoZWxsLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9zaGVsbC1hcHAuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NoZWxsL3NoZWxsLmNvbXBvbmVudCc7XG4iXX0=
20
+ export * from './lib/shell.routes';
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvY29yZS9zaGVsbC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hlbGwubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3NoZWxsLWFwcC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2hlbGwvc2hlbGwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoZWxsLnJvdXRlcyc7XG4iXX0=
@@ -15,10 +15,10 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import { NgModule } from '@angular/core';
18
- import { provideRoutes } from '@angular/router';
18
+ import { provideRouter } from '@angular/router';
19
19
  import { SHELL_LAYOUT_ROUTE } from './shell.routes';
20
- import { ShellLayoutComponent } from './components/shell/shell.component';
21
20
  import * as i0 from "@angular/core";
21
+ /** @deprecated use `provideShellRoutes` instead */
22
22
  export class ShellModule {
23
23
  static withRoutes(routes) {
24
24
  if (Array.isArray(routes)) {
@@ -27,15 +27,11 @@ export class ShellModule {
27
27
  return getModuleForRouteConfig(routes);
28
28
  }
29
29
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ShellModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
30
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ShellModule, imports: [ShellLayoutComponent], exports: [ShellLayoutComponent] }); }
31
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ShellModule, imports: [ShellLayoutComponent] }); }
30
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ShellModule }); }
31
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ShellModule }); }
32
32
  }
33
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ShellModule, decorators: [{
34
- type: NgModule,
35
- args: [{
36
- imports: [ShellLayoutComponent],
37
- exports: [ShellLayoutComponent]
38
- }]
34
+ type: NgModule
39
35
  }] });
40
36
  /**
41
37
  * Resolve module for routes
@@ -50,7 +46,7 @@ function getModuleForRoutes(routes) {
50
46
  });
51
47
  return {
52
48
  ngModule: ShellModule,
53
- providers: provideRoutes([shellLayoutRoute])
49
+ providers: [provideRouter([shellLayoutRoute])]
54
50
  };
55
51
  }
56
52
  /**
@@ -73,7 +69,7 @@ function getModuleForRouteConfig(config) {
73
69
  }
74
70
  return {
75
71
  ngModule: ShellModule,
76
- providers: provideRoutes([rootRoute])
72
+ providers: [provideRouter([rootRoute])]
77
73
  };
78
74
  }
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc2hlbGwvc3JjL2xpYi9zaGVsbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFVLGFBQWEsRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOztBQVcxRSxNQUFNLE9BQU8sV0FBVztJQUNwQixNQUFNLENBQUMsVUFBVSxDQUFDLE1BQXFDO1FBQ25ELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELE9BQU8sdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQzsrR0FQUSxXQUFXO2dIQUFYLFdBQVcsWUFIVixvQkFBb0IsYUFDcEIsb0JBQW9CO2dIQUVyQixXQUFXLFlBSFYsb0JBQW9COzs0RkFHckIsV0FBVztrQkFKdkIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDL0IsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7aUJBQ2xDOztBQVdEOzs7OztHQUtHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FBQyxNQUFjO0lBQ3RDLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7SUFFNUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQzFCLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0gsUUFBUSxFQUFFLFdBQVc7UUFDckIsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUM7S0FDL0MsQ0FBQztBQUNOLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsdUJBQXVCLENBQUMsTUFBNEI7SUFDekQsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQztJQUU1QyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqRCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7SUFFakQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLG1CQUFtQixDQUFDLENBQUM7SUFFdkQsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUV6RSxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFCLElBQUksU0FBUyxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxTQUFTLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBRUQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsT0FBTztRQUNILFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUN4QyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlcywgcHJvdmlkZVJvdXRlcywgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU0hFTExfTEFZT1VUX1JPVVRFIH0gZnJvbSAnLi9zaGVsbC5yb3V0ZXMnO1xuaW1wb3J0IHsgU2hlbGxMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2hlbGwvc2hlbGwuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBBcHBTaGVsbFJvdXRlc0NvbmZpZyB7XG4gICAgc2hlbGxQYXJlbnRSb3V0ZT86IFJvdXRlO1xuICAgIHNoZWxsQ2hpbGRyZW46IFJvdXRlcztcbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbU2hlbGxMYXlvdXRDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtTaGVsbExheW91dENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgU2hlbGxNb2R1bGUge1xuICAgIHN0YXRpYyB3aXRoUm91dGVzKHJvdXRlczogUm91dGVzIHwgQXBwU2hlbGxSb3V0ZXNDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFNoZWxsTW9kdWxlPiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvdXRlcykpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRNb2R1bGVGb3JSb3V0ZXMocm91dGVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZXRNb2R1bGVGb3JSb3V0ZUNvbmZpZyhyb3V0ZXMpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBSZXNvbHZlIG1vZHVsZSBmb3Igcm91dGVzXG4gKlxuICogQHBhcmFtIHJvdXRlcyByb3V0ZSBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyBtb2R1bGUgd2l0aCBwcm92aWRlcnNcbiAqL1xuZnVuY3Rpb24gZ2V0TW9kdWxlRm9yUm91dGVzKHJvdXRlczogUm91dGVzKTogTW9kdWxlV2l0aFByb3ZpZGVyczxTaGVsbE1vZHVsZT4ge1xuICAgIGNvbnN0IHNoZWxsTGF5b3V0Um91dGUgPSBTSEVMTF9MQVlPVVRfUk9VVEU7XG5cbiAgICByb3V0ZXMuZm9yRWFjaCgoY2hpbGRSb3V0ZSkgPT4ge1xuICAgICAgICBzaGVsbExheW91dFJvdXRlLmNoaWxkcmVuLnB1c2goY2hpbGRSb3V0ZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBuZ01vZHVsZTogU2hlbGxNb2R1bGUsXG4gICAgICAgIHByb3ZpZGVyczogcHJvdmlkZVJvdXRlcyhbc2hlbGxMYXlvdXRSb3V0ZV0pXG4gICAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgbW9kdWxlIGZvciB0aGUgcm91dGUgY29uZmlndXJhdGlvblxuICpcbiAqIEBwYXJhbSBjb25maWcgcm91dGUgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgbW9kdWxlIHdpdGggcHJvdmlkZXJzXG4gKi9cbmZ1bmN0aW9uIGdldE1vZHVsZUZvclJvdXRlQ29uZmlnKGNvbmZpZzogQXBwU2hlbGxSb3V0ZXNDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFNoZWxsTW9kdWxlPiB7XG4gICAgY29uc3Qgc2hlbGxMYXlvdXRSb3V0ZSA9IFNIRUxMX0xBWU9VVF9ST1VURTtcblxuICAgIGNvbnN0IHNoZWxsUGFyZW50Um91dGUgPSBjb25maWcuc2hlbGxQYXJlbnRSb3V0ZTtcbiAgICBjb25zdCBzaGVsbENoaWxkcmVuUm91dGVzID0gY29uZmlnLnNoZWxsQ2hpbGRyZW47XG5cbiAgICBzaGVsbExheW91dFJvdXRlLmNoaWxkcmVuLnB1c2goLi4uc2hlbGxDaGlsZHJlblJvdXRlcyk7XG5cbiAgICBjb25zdCByb290Um91dGUgPSBzaGVsbFBhcmVudFJvdXRlID8gc2hlbGxQYXJlbnRSb3V0ZSA6IHNoZWxsTGF5b3V0Um91dGU7XG5cbiAgICBpZiAoY29uZmlnLnNoZWxsUGFyZW50Um91dGUpIHtcbiAgICAgICAgaWYgKHJvb3RSb3V0ZS5jaGlsZHJlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByb290Um91dGUuY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvb3RSb3V0ZS5jaGlsZHJlbi5wdXNoKHNoZWxsTGF5b3V0Um91dGUpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIG5nTW9kdWxlOiBTaGVsbE1vZHVsZSxcbiAgICAgICAgcHJvdmlkZXJzOiBwcm92aWRlUm91dGVzKFtyb290Um91dGVdKVxuICAgIH07XG59XG4iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc2hlbGwvc3JjL2xpYi9zaGVsbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFVLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBd0Isa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFMUUsbURBQW1EO0FBRW5ELE1BQU0sT0FBTyxXQUFXO0lBQ3BCLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBcUM7UUFDbkQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBRUQsT0FBTyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDOytHQVBRLFdBQVc7Z0hBQVgsV0FBVztnSEFBWCxXQUFXOzs0RkFBWCxXQUFXO2tCQUR2QixRQUFROztBQVdUOzs7OztHQUtHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FBQyxNQUFjO0lBQ3RDLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7SUFFNUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQzFCLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0gsUUFBUSxFQUFFLFdBQVc7UUFDckIsU0FBUyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0tBQ2pELENBQUM7QUFDTixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLHVCQUF1QixDQUFDLE1BQTRCO0lBQ3pELE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7SUFFNUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7SUFDakQsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO0lBRWpELGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDO0lBRXZELE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7SUFFekUsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMxQixJQUFJLFNBQVMsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbkMsU0FBUyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDNUIsQ0FBQztRQUVELFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU87UUFDSCxRQUFRLEVBQUUsV0FBVztRQUNyQixTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0tBQzFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVzLCBwcm92aWRlUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFwcFNoZWxsUm91dGVzQ29uZmlnLCBTSEVMTF9MQVlPVVRfUk9VVEUgfSBmcm9tICcuL3NoZWxsLnJvdXRlcyc7XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgYHByb3ZpZGVTaGVsbFJvdXRlc2AgaW5zdGVhZCAqL1xuQE5nTW9kdWxlKClcbmV4cG9ydCBjbGFzcyBTaGVsbE1vZHVsZSB7XG4gICAgc3RhdGljIHdpdGhSb3V0ZXMocm91dGVzOiBSb3V0ZXMgfCBBcHBTaGVsbFJvdXRlc0NvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8U2hlbGxNb2R1bGU+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm91dGVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGdldE1vZHVsZUZvclJvdXRlcyhyb3V0ZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldE1vZHVsZUZvclJvdXRlQ29uZmlnKHJvdXRlcyk7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlc29sdmUgbW9kdWxlIGZvciByb3V0ZXNcbiAqXG4gKiBAcGFyYW0gcm91dGVzIHJvdXRlIGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIG1vZHVsZSB3aXRoIHByb3ZpZGVyc1xuICovXG5mdW5jdGlvbiBnZXRNb2R1bGVGb3JSb3V0ZXMocm91dGVzOiBSb3V0ZXMpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFNoZWxsTW9kdWxlPiB7XG4gICAgY29uc3Qgc2hlbGxMYXlvdXRSb3V0ZSA9IFNIRUxMX0xBWU9VVF9ST1VURTtcblxuICAgIHJvdXRlcy5mb3JFYWNoKChjaGlsZFJvdXRlKSA9PiB7XG4gICAgICAgIHNoZWxsTGF5b3V0Um91dGUuY2hpbGRyZW4ucHVzaChjaGlsZFJvdXRlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIG5nTW9kdWxlOiBTaGVsbE1vZHVsZSxcbiAgICAgICAgcHJvdmlkZXJzOiBbcHJvdmlkZVJvdXRlcihbc2hlbGxMYXlvdXRSb3V0ZV0pXVxuICAgIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIG1vZHVsZSBmb3IgdGhlIHJvdXRlIGNvbmZpZ3VyYXRpb25cbiAqXG4gKiBAcGFyYW0gY29uZmlnIHJvdXRlIGNvbmZpZ3VyYXRpb25cbiAqIEByZXR1cm5zIG1vZHVsZSB3aXRoIHByb3ZpZGVyc1xuICovXG5mdW5jdGlvbiBnZXRNb2R1bGVGb3JSb3V0ZUNvbmZpZyhjb25maWc6IEFwcFNoZWxsUm91dGVzQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxTaGVsbE1vZHVsZT4ge1xuICAgIGNvbnN0IHNoZWxsTGF5b3V0Um91dGUgPSBTSEVMTF9MQVlPVVRfUk9VVEU7XG5cbiAgICBjb25zdCBzaGVsbFBhcmVudFJvdXRlID0gY29uZmlnLnNoZWxsUGFyZW50Um91dGU7XG4gICAgY29uc3Qgc2hlbGxDaGlsZHJlblJvdXRlcyA9IGNvbmZpZy5zaGVsbENoaWxkcmVuO1xuXG4gICAgc2hlbGxMYXlvdXRSb3V0ZS5jaGlsZHJlbi5wdXNoKC4uLnNoZWxsQ2hpbGRyZW5Sb3V0ZXMpO1xuXG4gICAgY29uc3Qgcm9vdFJvdXRlID0gc2hlbGxQYXJlbnRSb3V0ZSA/IHNoZWxsUGFyZW50Um91dGUgOiBzaGVsbExheW91dFJvdXRlO1xuXG4gICAgaWYgKGNvbmZpZy5zaGVsbFBhcmVudFJvdXRlKSB7XG4gICAgICAgIGlmIChyb290Um91dGUuY2hpbGRyZW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcm9vdFJvdXRlLmNoaWxkcmVuID0gW107XG4gICAgICAgIH1cblxuICAgICAgICByb290Um91dGUuY2hpbGRyZW4ucHVzaChzaGVsbExheW91dFJvdXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBuZ01vZHVsZTogU2hlbGxNb2R1bGUsXG4gICAgICAgIHByb3ZpZGVyczogW3Byb3ZpZGVSb3V0ZXIoW3Jvb3RSb3V0ZV0pXVxuICAgIH07XG59XG4iXX0=
@@ -14,6 +14,7 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
+ import { provideRouter } from '@angular/router';
17
18
  import { ShellLayoutComponent } from './components/shell/shell.component';
18
19
  import { SHELL_AUTH_TOKEN } from './services/shell-app.service';
19
20
  export const SHELL_LAYOUT_ROUTE = {
@@ -22,4 +23,28 @@ export const SHELL_LAYOUT_ROUTE = {
22
23
  canActivate: [SHELL_AUTH_TOKEN],
23
24
  children: []
24
25
  };
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc2hlbGwvc3JjL2xpYi9zaGVsbC5yb3V0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBR0gsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQVU7SUFDckMsSUFBSSxFQUFFLEVBQUU7SUFDUixTQUFTLEVBQUUsb0JBQW9CO0lBQy9CLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLFFBQVEsRUFBRSxFQUFFO0NBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU2hlbGxMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2hlbGwvc2hlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFNIRUxMX0FVVEhfVE9LRU4gfSBmcm9tICcuL3NlcnZpY2VzL3NoZWxsLWFwcC5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IFNIRUxMX0xBWU9VVF9ST1VURTogUm91dGUgPSB7XG4gICAgcGF0aDogJycsXG4gICAgY29tcG9uZW50OiBTaGVsbExheW91dENvbXBvbmVudCxcbiAgICBjYW5BY3RpdmF0ZTogW1NIRUxMX0FVVEhfVE9LRU5dLFxuICAgIGNoaWxkcmVuOiBbXVxufTtcbiJdfQ==
26
+ /**
27
+ * Provides shell routes for the application.
28
+ *
29
+ * @param routes The routes configuration for the shell.
30
+ * @returns An array of providers for the shell routes.
31
+ */
32
+ export function provideShellRoutes(routes) {
33
+ const shellLayoutRoute = SHELL_LAYOUT_ROUTE;
34
+ if (Array.isArray(routes)) {
35
+ shellLayoutRoute.children.push(...routes);
36
+ return [provideRouter([shellLayoutRoute])];
37
+ }
38
+ const shellChildrenRoutes = routes.shellChildren || [];
39
+ if (shellChildrenRoutes.length > 0) {
40
+ shellLayoutRoute.children.push(...shellChildrenRoutes);
41
+ }
42
+ const shellParentRoute = routes.shellParentRoute;
43
+ const rootRoute = shellParentRoute || shellLayoutRoute;
44
+ if (routes.shellParentRoute) {
45
+ rootRoute.children = rootRoute.children || [];
46
+ rootRoute.children.push(shellLayoutRoute);
47
+ }
48
+ return [provideRouter([rootRoute])];
49
+ }
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGliL2NvcmUvc2hlbGwvc3JjL2xpYi9zaGVsbC5yb3V0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLGFBQWEsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUdoRSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBVTtJQUNyQyxJQUFJLEVBQUUsRUFBRTtJQUNSLFNBQVMsRUFBRSxvQkFBb0I7SUFDL0IsV0FBVyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsUUFBUSxFQUFFLEVBQUU7Q0FDZixDQUFDO0FBT0Y7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsTUFBcUM7SUFDcEUsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQztJQUU1QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN4QixnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO0lBQ3ZELElBQUksbUJBQW1CLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqRCxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQztJQUV2RCxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDOUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBwcm92aWRlUm91dGVyLCBSb3V0ZSwgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNoZWxsTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NoZWxsL3NoZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTSEVMTF9BVVRIX1RPS0VOIH0gZnJvbSAnLi9zZXJ2aWNlcy9zaGVsbC1hcHAuc2VydmljZSc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgU0hFTExfTEFZT1VUX1JPVVRFOiBSb3V0ZSA9IHtcbiAgICBwYXRoOiAnJyxcbiAgICBjb21wb25lbnQ6IFNoZWxsTGF5b3V0Q29tcG9uZW50LFxuICAgIGNhbkFjdGl2YXRlOiBbU0hFTExfQVVUSF9UT0tFTl0sXG4gICAgY2hpbGRyZW46IFtdXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcFNoZWxsUm91dGVzQ29uZmlnIHtcbiAgICBzaGVsbFBhcmVudFJvdXRlPzogUm91dGU7XG4gICAgc2hlbGxDaGlsZHJlbjogUm91dGVzO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIHNoZWxsIHJvdXRlcyBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSByb3V0ZXMgVGhlIHJvdXRlcyBjb25maWd1cmF0aW9uIGZvciB0aGUgc2hlbGwuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBwcm92aWRlcnMgZm9yIHRoZSBzaGVsbCByb3V0ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlU2hlbGxSb3V0ZXMocm91dGVzOiBSb3V0ZXMgfCBBcHBTaGVsbFJvdXRlc0NvbmZpZyk6IEVudmlyb25tZW50UHJvdmlkZXJzW10ge1xuICAgIGNvbnN0IHNoZWxsTGF5b3V0Um91dGUgPSBTSEVMTF9MQVlPVVRfUk9VVEU7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyb3V0ZXMpKSB7XG4gICAgICAgIHNoZWxsTGF5b3V0Um91dGUuY2hpbGRyZW4ucHVzaCguLi5yb3V0ZXMpO1xuICAgICAgICByZXR1cm4gW3Byb3ZpZGVSb3V0ZXIoW3NoZWxsTGF5b3V0Um91dGVdKV07XG4gICAgfVxuXG4gICAgY29uc3Qgc2hlbGxDaGlsZHJlblJvdXRlcyA9IHJvdXRlcy5zaGVsbENoaWxkcmVuIHx8IFtdO1xuICAgIGlmIChzaGVsbENoaWxkcmVuUm91dGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgc2hlbGxMYXlvdXRSb3V0ZS5jaGlsZHJlbi5wdXNoKC4uLnNoZWxsQ2hpbGRyZW5Sb3V0ZXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHNoZWxsUGFyZW50Um91dGUgPSByb3V0ZXMuc2hlbGxQYXJlbnRSb3V0ZTtcbiAgICBjb25zdCByb290Um91dGUgPSBzaGVsbFBhcmVudFJvdXRlIHx8IHNoZWxsTGF5b3V0Um91dGU7XG5cbiAgICBpZiAocm91dGVzLnNoZWxsUGFyZW50Um91dGUpIHtcbiAgICAgICAgcm9vdFJvdXRlLmNoaWxkcmVuID0gcm9vdFJvdXRlLmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICByb290Um91dGUuY2hpbGRyZW4ucHVzaChzaGVsbExheW91dFJvdXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW3Byb3ZpZGVSb3V0ZXIoW3Jvb3RSb3V0ZV0pXTtcbn1cbiJdfQ==