@alfresco/adf-core 8.1.0-15416593341 → 8.1.0-15446587287
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.
- package/esm2022/lib/form/components/form-renderer.component.mjs +3 -3
- package/esm2022/lib/viewer/components/viewer-render/viewer-render.component.mjs +12 -20
- package/esm2022/lib/viewer/components/viewer.component.mjs +2 -2
- package/fesm2022/adf-core.mjs +13 -20
- package/fesm2022/adf-core.mjs.map +1 -1
- package/lib/viewer/components/viewer-render/viewer-render.component.d.ts +5 -9
- package/package.json +3 -3
|
@@ -365,7 +365,7 @@ export class ViewerComponent {
|
|
|
365
365
|
this.blobFile = null;
|
|
366
366
|
}
|
|
367
367
|
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 }); }
|
|
368
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.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", fileName: "fileName" }, outputs: { downloadFile: "downloadFile", navigateBefore: "navigateBefore", navigateNext: "navigateNext", showViewerChange: "showViewerChange", submitFile: "submitFile" }, host: { listeners: { "document:keyup": "handleKeyboardEvent($event)" }, 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 <div class=\"adf-viewer__display-name\"\n id=\"adf-viewer-display-name\"\n [title]=\"fileName\">\n <span>{{ displayName }}</span>\n </div>\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 <adf-toolbar-divider />\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 <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__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-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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i8.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: i8.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 }); }
|
|
368
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.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", fileName: "fileName" }, outputs: { downloadFile: "downloadFile", navigateBefore: "navigateBefore", navigateNext: "navigateNext", showViewerChange: "showViewerChange", submitFile: "submitFile" }, host: { listeners: { "document:keyup": "handleKeyboardEvent($event)" }, 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 <div class=\"adf-viewer__display-name\"\n id=\"adf-viewer-display-name\"\n [title]=\"fileName\">\n <span>{{ displayName }}</span>\n </div>\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 <adf-toolbar-divider />\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 <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__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-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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i8.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: i8.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", "isLoading", "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 }); }
|
|
369
369
|
}
|
|
370
370
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ViewerComponent, decorators: [{
|
|
371
371
|
type: Component,
|
|
@@ -474,4 +474,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
474
474
|
type: HostListener,
|
|
475
475
|
args: ['document:keyup', ['$event']]
|
|
476
476
|
}] } });
|
|
477
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdmlld2VyL2NvbXBvbmVudHMvdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdmlld2VyL2NvbXBvbmVudHMvdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUVOLFdBQVcsRUFDWCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFB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SztnQkFLTixXQUFXO3NCQURWLEtBQUs7Z0JBUU4sV0FBVztzQkFEVixLQUFLO2dCQVFOLGFBQWE7c0JBRFosS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQUtOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sb0JBQW9CO3NCQURuQixLQUFLO2dCQUtOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBU04sa0JBQWtCO3NCQURqQixLQUFLO2dCQVFOLE1BQU07c0JBREwsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBT04sMkJBQTJCO3NCQUQxQixLQUFLO2dCQU9OLDBCQUEwQjtzQkFEekIsS0FBSztnQkFPTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUtOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQTJCTixZQUFZO3NCQURYLE1BQU07Z0JBS1AsY0FBYztzQkFEYixNQUFNO2dCQUtQLFlBQVk7c0JBRFgsTUFBTTtnQkFLUCxnQkFBZ0I7c0JBRGYsTUFBTTtnQkFLUCxVQUFVO3NCQURULE1BQU07Z0JBbUJILFFBQVE7c0JBRFgsS0FBSztnQkE4R04sbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdCwgc2tpcFdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb25maWcnO1xuaW1wb3J0IHsgVG9vbGJhckNvbXBvbmVudCwgVG9vbGJhckRpdmlkZXJDb21wb25lbnQsIFRvb2xiYXJUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Rvb2xiYXInO1xuaW1wb3J0IHsgRG93bmxvYWRQcm9tcHRBY3Rpb25zIH0gZnJvbSAnLi4vbW9kZWxzL2Rvd25sb2FkLXByb21wdC5hY3Rpb25zJztcbmltcG9ydCB7IENsb3NlQnV0dG9uUG9zaXRpb24sIFRyYWNrIH0gZnJvbSAnLi4vbW9kZWxzL3ZpZXdlci5tb2RlbCc7XG5pbXBvcnQgeyBWaWV3VXRpbFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy92aWV3LXV0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBEb3dubG9hZFByb21wdERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZG93bmxvYWQtcHJvbXB0LWRpYWxvZy9kb3dubG9hZC1wcm9tcHQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3ZXJNb3JlQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vdmlld2VyLW1vcmUtYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld2VyT3BlbldpdGhDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdlci1vcGVuLXdpdGguY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdlclJlbmRlckNvbXBvbmVudCB9IGZyb20gJy4vdmlld2VyLXJlbmRlci92aWV3ZXItcmVuZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3ZXJTaWRlYmFyQ29tcG9uZW50IH0gZnJvbSAnLi92aWV3ZXItc2lkZWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld2VyVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vdmlld2VyLXRvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdlclRvb2xiYXJBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi92aWV3ZXItdG9vbGJhci1hY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3ZXJUb29sYmFyQ3VzdG9tQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vdmlld2VyLXRvb2xiYXItY3VzdG9tLWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9pY29uJztcbmltcG9ydCB7IFRodW1ibmFpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5jb25zdCBERUZBVUxUX05PTl9QUkVWSUVXX0NPTkZJRyA9IHtcbiAgICBlbmFibGVEb3dubG9hZFByb21wdDogZmFsc2UsXG4gICAgZW5hYmxlRG93bmxvYWRQcm9tcHRSZW1pbmRlcjogZmFsc2UsXG4gICAgZG93bmxvYWRQcm9tcHREZWxheTogNTAsXG4gICAgZG93bmxvYWRQcm9tcHRSZW1pbmRlckRlbGF5OiAzMFxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtdmlld2VyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlVXJsOiAnLi92aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3ZpZXdlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdhZGYtdmlld2VyJyB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBBMTF5TW9kdWxlLFxuICAgICAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgICAgICBUb29sYmFyVGl0bGVDb21wb25lbnQsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRNZW51TW9kdWxlLFxuICAgICAgICBUb29sYmFyRGl2aWRlckNvbXBvbmVudCxcbiAgICAgICAgVmlld2VyUmVuZGVyQ29tcG9uZW50LFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBWaWV3ZXJUb29sYmFyQ29tcG9uZW50LFxuICAgICAgICBWaWV3ZXJTaWRlYmFyQ29tcG9uZW50LFxuICAgICAgICBWaWV3ZXJUb29sYmFyQWN0aW9uc0NvbXBvbmVudCxcbiAgICAgICAgVmlld2VyVG9vbGJhckN1c3RvbUFjdGlvbnNDb21wb25lbnQsXG4gICAgICAgIEljb25Db21wb25lbnRcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1ZpZXdVdGlsU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgVmlld2VyQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgcHJpdmF0ZSB0aHVtYm5haWxTZXJ2aWNlID0gaW5qZWN0KFRodW1ibmFpbFNlcnZpY2UpO1xuXG4gICAgQENvbnRlbnRDaGlsZChWaWV3ZXJUb29sYmFyQ29tcG9uZW50KVxuICAgIHRvb2xiYXI6IFZpZXdlclRvb2xiYXJDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKFZpZXdlclNpZGViYXJDb21wb25lbnQpXG4gICAgc2lkZWJhcjogVmlld2VyU2lkZWJhckNvbXBvbmVudDtcblxuICAgIEBDb250ZW50Q2hpbGQoVmlld2VyT3BlbldpdGhDb21wb25lbnQpXG4gICAgbW51T3BlbldpdGg6IFZpZXdlck9wZW5XaXRoQ29tcG9uZW50O1xuXG4gICAgQENvbnRlbnRDaGlsZChWaWV3ZXJNb3JlQWN0aW9uc0NvbXBvbmVudClcbiAgICBtbnVNb3JlQWN0aW9uczogVmlld2VyTW9yZUFjdGlvbnNDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKCd2aWV3ZXJFeHRlbnNpb25zJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgdmlld2VyVGVtcGxhdGVFeHRlbnNpb25zOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZ2V0IENsb3NlQnV0dG9uUG9zaXRpb24oKSB7XG4gICAgICAgIHJldHVybiBDbG9zZUJ1dHRvblBvc2l0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIHlvdSB3YW50IHRvIGxvYWQgYW4gZXh0ZXJuYWwgZmlsZSB0aGF0IGRvZXMgbm90IGNvbWUgZnJvbSBBQ1MgeW91XG4gICAgICogY2FuIHVzZSB0aGlzIFVSTCB0byBzcGVjaWZ5IHdoZXJlIHRvIGxvYWQgdGhlIGZpbGUgZnJvbS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHVybEZpbGUgPSAnJztcblxuICAgIC8qKiBMb2FkcyBhIEJsb2IgRmlsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgYmxvYkZpbGU6IEJsb2I7XG5cbiAgICAvKiogSGlkZSBvciBzaG93IHRoZSB2aWV3ZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dWaWV3ZXIgPSB0cnVlO1xuXG4gICAgLyoqIEFsbG93cyBgYmFja2AgbmF2aWdhdGlvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dHb0JhY2sgPSB0cnVlO1xuXG4gICAgLyoqIFRvZ2dsZXMgdGhlICdGdWxsIFNjcmVlbicgZmVhdHVyZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93RnVsbFNjcmVlbiA9IHRydWU7XG5cbiAgICAvKiogSGlkZSBvciBzaG93IHRoZSB0b29sYmFyICovXG4gICAgQElucHV0KClcbiAgICBzaG93VG9vbGJhciA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBJZiBgdHJ1ZWAgdGhlbiBzaG93IHRoZSBWaWV3ZXIgYXMgYSBmdWxsIHBhZ2Ugb3ZlciB0aGUgY3VycmVudCBjb250ZW50LlxuICAgICAqIE90aGVyd2lzZSwgZml0IGluc2lkZSB0aGUgcGFyZW50IGRpdi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG92ZXJsYXlNb2RlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIGJlZm9yZS9uZXh0IG5hdmlnYXRpb24uIFlvdSBjYW4gdXNlIHRoZSBhcnJvdyBidXR0b25zIHRvIG5hdmlnYXRlXG4gICAgICogYmV0d2VlbiBkb2N1bWVudHMgaW4gdGhlIGNvbGxlY3Rpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd05hdmlnYXRlID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgXCJiZWZvcmVcIiAoXCI8XCIpIGJ1dHRvbi4gUmVxdWlyZXMgYGFsbG93TmF2aWdhdGVgIHRvIGJlIGVuYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBjYW5OYXZpZ2F0ZUJlZm9yZSA9IHRydWU7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgbmV4dCAoXCI+XCIpIGJ1dHRvbi4gUmVxdWlyZXMgYGFsbG93TmF2aWdhdGVgIHRvIGJlIGVuYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBjYW5OYXZpZ2F0ZU5leHQgPSB0cnVlO1xuXG4gICAgLyoqIEFsbG93IHRoZSBsZWZ0IHRoZSBzaWRlYmFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dMZWZ0U2lkZWJhciA9IGZhbHNlO1xuXG4gICAgLyoqIEFsbG93IHRoZSByaWdodCBzaWRlYmFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dSaWdodFNpZGViYXIgPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIHJpZ2h0IHNpZGViYXIgdmlzaWJpbGl0eS4gUmVxdWlyZXMgYGFsbG93UmlnaHRTaWRlYmFyYCB0byBiZSBzZXQgdG8gYHRydWVgLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1JpZ2h0U2lkZWJhciA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZXMgbGVmdCBzaWRlYmFyIHZpc2liaWxpdHkuIFJlcXVpcmVzIGBhbGxvd0xlZnRTaWRlYmFyYCB0byBiZSBzZXQgdG8gYHRydWVgLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0xlZnRTaWRlYmFyID0gZmFsc2U7XG5cbiAgICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgcmlnaHQgc2lkZWJhci4gVGhlIHRlbXBsYXRlIGNvbnRleHQgY29udGFpbnMgdGhlIGxvYWRlZCBub2RlIGRhdGEuICovXG4gICAgQElucHV0KClcbiAgICBzaWRlYmFyUmlnaHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG5cbiAgICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgbGVmdCBzaWRlYmFyLiBUaGUgdGVtcGxhdGUgY29udGV4dCBjb250YWlucyB0aGUgbG9hZGVkIG5vZGUgZGF0YS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNpZGViYXJMZWZ0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuXG4gICAgLyoqIEVuYWJsZSB3aGVuIHdoZXJlIGlzIHBvc3NpYmxlIHRoZSBlZGl0aW5nIGZ1bmN0aW9uYWxpdGllcyAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlYWRPbmx5ID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIENvbnRyb2xzIHdoaWNoIGFjdGlvbnMgYXJlIGVuYWJsZWQgaW4gdGhlIHZpZXdlci5cbiAgICAgKiBFeGFtcGxlOlxuICAgICAqIHsgcm90YXRlOiB0cnVlLCBjcm9wOiBmYWxzZSB9IHdpbGwgZW5hYmxlIHJvdGF0aW9uIGJ1dCBkaXNhYmxlIGNyb3BwaW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dlZEVkaXRBY3Rpb25zOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHtcbiAgICAgICAgcm90YXRlOiB0cnVlLFxuICAgICAgICBjcm9wOiB0cnVlXG4gICAgfTtcblxuICAgIC8qKiBtZWRpYSBzdWJ0aXRsZXMgZm9yIHRoZSBtZWRpYSBwbGF5ZXIqL1xuICAgIEBJbnB1dCgpXG4gICAgdHJhY2tzOiBUcmFja1tdID0gW107XG5cbiAgICAvKiogT3ZlcmxvYWQgbWltZVR5cGUqL1xuICAgIEBJbnB1dCgpXG4gICAgbWltZVR5cGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIENvbnRleHQgb2JqZWN0IGF2YWlsYWJsZSBmb3IgYmluZGluZyBieSB0aGUgbG9jYWwgc2lkZWJhclJpZ2h0VGVtcGxhdGUgd2l0aCBsZXQgZGVjbGFyYXRpb25zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2lkZWJhclJpZ2h0VGVtcGxhdGVDb250ZXh0OiBUID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENvbnRleHQgb2JqZWN0IGF2YWlsYWJsZSBmb3IgYmluZGluZyBieSB0aGUgbG9jYWwgc2lkZWJhckxlZnRUZW1wbGF0ZSB3aXRoIGxldCBkZWNsYXJhdGlvbnMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzaWRlYmFyTGVmdFRlbXBsYXRlQ29udGV4dDogVCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2UgdGhlIGNsb3NlIGJ1dHRvbiBwb3NpdGlvbiBSaWdodC9MZWZ0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VCdXR0b25Qb3NpdGlvbiA9IENsb3NlQnV0dG9uUG9zaXRpb24uTGVmdDtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSAnSW5mbyBCdXR0b24nICovXG4gICAgQElucHV0KClcbiAgICBoaWRlSW5mb0J1dHRvbiA9IGZhbHNlO1xuXG4gICAgLyoqIFRlbXBsYXRlIGNvbnRhaW5pbmcgVmlld2VyRXh0ZW5zaW9uRGlyZWN0aXZlIGluc3RhbmNlcyBwcm92aWRpbmcgZGlmZmVyZW50IHZpZXdlciBleHRlbnNpb25zIGJhc2VkIG9uIHN1cHBvcnRlZCBmaWxlIGV4dGVuc2lvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHZpZXdlckV4dGVuc2lvbnM6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogSWRlbnRpZmllciBvZiBhIG5vZGUgdGhhdCBpcyBvcGVuZWQgYnkgdGhlIHZpZXdlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5vZGVJZDogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKiBPcmlnaW5hbCBub2RlIG1pbWUgdHlwZSwgc2hvdWxkIGJlIHByb3ZpZGVkIHdoZW4gcmVuZGl0aW9uYSBtaW1lIHR5cGUgaXMgZGlmZmVyZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbm9kZU1pbWVUeXBlOiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiogQ3VzdG9tIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB2aWV3ZXIuICovXG4gICAgQElucHV0KClcbiAgICBjdXN0b21FcnJvcjogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogRW5hYmxlIGRpYWxvZyBib3ggdG8gYWxsb3cgdXNlciB0byBkb3dubG9hZCB0aGUgcHJldmlld2VkIGZpbGUsIGluIGNhc2UgdGhlIHByZXZpZXcgaXMgbm90IHJlc3BvbmRpbmcgZm9yIGEgc2V0IHBlcmlvZCBvZiB0aW1lLlxuICAgICAqL1xuICAgIGVuYWJsZURvd25sb2FkUHJvbXB0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUgcmVtaW5kZXIgZGlhbG9ncyB0byBwcm9tcHQgdXNlciB0byBkb3dubG9hZCB0aGUgZmlsZSwgaW4gY2FzZSB0aGUgcHJldmlldyBpcyBub3QgcmVzcG9uZGluZyBmb3IgYSBzZXQgcGVyaW9kIG9mIHRpbWUuXG4gICAgICovXG4gICAgZW5hYmxlRG93bmxvYWRQcm9tcHRSZW1pbmRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbCB0aW1lIGluIHNlY29uZHMgdG8gd2FpdCBiZWZvcmUgZ2l2aW5nIHRoZSBmaXJzdCBwcm9tcHQgdG8gdXNlciB0byBkb3dubG9hZCB0aGUgZmlsZVxuICAgICAqL1xuICAgIGRvd25sb2FkUHJvbXB0RGVsYXk6IG51bWJlciA9IDUwO1xuXG4gICAgLyoqXG4gICAgICogVGltZSBpbiBzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGdpdmluZyB0aGUgc2Vjb25kIGFuZCBjb25zZXF1ZW50IHJlbWluZGVycyB0byB0aGUgdXNlciB0byBkb3dubG9hZCB0aGUgZmlsZS5cbiAgICAgKi9cbiAgICBkb3dubG9hZFByb21wdFJlbWluZGVyRGVsYXk6IG51bWJlciA9IDE1O1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHVzZXIgY2xpY2tzIG9uIGRvd25sb2FkIGJ1dHRvbiBvbiBkb3dubG9hZCBwcm9tcHQgZGlhbG9nLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGRvd25sb2FkRmlsZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdXNlciBjbGlja3MgJ05hdmlnYXRlIEJlZm9yZScgKFwiPFwiKSBidXR0b24uICovXG4gICAgQE91dHB1dCgpXG4gICAgbmF2aWdhdGVCZWZvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB1c2VyIGNsaWNrcyAnTmF2aWdhdGUgTmV4dCcgKFwiPlwiKSBidXR0b24uICovXG4gICAgQE91dHB1dCgpXG4gICAgbmF2aWdhdGVOZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIHZpZXdlciBjbG9zZSAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNob3dWaWV3ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBpbWcgaXMgc3VibWl0dGVkIGluIHRoZSBpbWcgdmlld2VyLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHN1Ym1pdEZpbGUgPSBuZXcgRXZlbnRFbWl0dGVyPEJsb2I+KCk7XG5cbiAgICBwcml2YXRlIGNsb3NlVmlld2VyID0gdHJ1ZTtcbiAgICBwcml2YXRlIGtleURvd24kID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAna2V5ZG93bicpO1xuICAgIHByaXZhdGUgaXNEaWFsb2dWaXNpYmxlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfZmlsZU5hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIF9maWxlTmFtZVdpdGhvdXRFeHRlbnNpb246IHN0cmluZztcbiAgICBwcml2YXRlIF9maWxlRXh0ZW5zaW9uOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBwdWJsaWMgZG93bmxvYWRQcm9tcHRUaW1lcjogbnVtYmVyO1xuICAgIHB1YmxpYyBkb3dubG9hZFByb21wdFJlbWluZGVyVGltZXI6IG51bWJlcjtcbiAgICBwdWJsaWMgbWltZVR5cGVJY29uVXJsOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogT3ZlcnJpZGUgQ29udGVudCBmaWxlbmFtZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBmaWxlTmFtZShmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2ZpbGVOYW1lID0gZmlsZU5hbWU7XG4gICAgICAgIHRoaXMuX2ZpbGVFeHRlbnNpb24gPSB0aGlzLnZpZXdVdGlsc1NlcnZpY2UuZ2V0RmlsZUV4dGVuc2lvbih0aGlzLmZpbGVOYW1lKTtcbiAgICAgICAgdGhpcy5fZmlsZU5hbWVXaXRob3V0RXh0ZW5zaW9uID0gdGhpcy5maWxlTmFtZT8ucmVwbGFjZShuZXcgUmVnRXhwKGAke3RoaXMuZmlsZUV4dGVuc2lvbn0kYCksICcnKSB8fCAnJztcbiAgICAgICAgdGhpcy5kaXNwbGF5TmFtZSA9IHRoaXMuZ2V0RGlzcGxheUZpbGVOYW1lKCk7XG4gICAgfVxuXG4gICAgZ2V0IGZpbGVOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlTmFtZTtcbiAgICB9XG5cbiAgICBnZXQgZmlsZUV4dGVuc2lvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZUV4dGVuc2lvbjtcbiAgICB9XG5cbiAgICBnZXQgZmlsZU5hbWVXaXRob3V0RXh0ZW5zaW9uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlTmFtZVdpdGhvdXRFeHRlbnNpb247XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSB2aWV3VXRpbHNTZXJ2aWNlOiBWaWV3VXRpbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZVxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgeyBibG9iRmlsZSwgdXJsRmlsZSwgbWltZVR5cGUsIG5vZGVNaW1lVHlwZSB9ID0gY2hhbmdlcztcblxuICAgICAgICBpZiAoYmxvYkZpbGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5taW1lVHlwZSA9IGJsb2JGaWxlLmN1cnJlbnRWYWx1ZS50eXBlO1xuICAgICAgICAgICAgdGhpcy5taW1lVHlwZUljb25VcmwgPSB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKGJsb2JGaWxlLmN1cnJlbnRWYWx1ZS50eXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1cmxGaWxlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZU5hbWUgfHw9IHRoaXMudmlld1V0aWxzU2VydmljZS5nZXRGaWxlbmFtZUZyb21VcmwodXJsRmlsZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1pbWVUeXBlPy5jdXJyZW50VmFsdWUgJiYgIW5vZGVNaW1lVHlwZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm1pbWVUeXBlSWNvblVybCA9IHRoaXMudGh1bWJuYWlsU2VydmljZS5nZXRNaW1lVHlwZUljb24obWltZVR5cGUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlTWltZVR5cGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5taW1lVHlwZUljb25VcmwgPSB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKG5vZGVNaW1lVHlwZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VPdmVybGF5TWFuYWdlcigpO1xuICAgICAgICB0aGlzLmNvbmZpZ3VyZUFuZEluaXREb3dubG9hZFByb21wdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VPdmVybGF5TWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5kaWFsb2cuYWZ0ZXJPcGVuZWRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXBXaGlsZSgoKSA9PiAhdGhpcy5vdmVybGF5TW9kZSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHRoaXMuY2xvc2VWaWV3ZXIgPSBmYWxzZSkpO1xuXG4gICAgICAgIHRoaXMuZGlhbG9nLmFmdGVyQWxsQ2xvc2VkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBza2lwV2hpbGUoKCkgPT4gIXRoaXMub3ZlcmxheU1vZGUpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+ICh0aGlzLmNsb3NlVmlld2VyID0gdHJ1ZSkpO1xuXG4gICAgICAgIHRoaXMua2V5RG93biRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXBXaGlsZSgoKSA9PiAhdGhpcy5vdmVybGF5TW9kZSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChlOiBLZXlib2FyZEV2ZW50KSA9PiBlLmtleUNvZGUgPT09IDI3KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xvc2VWaWV3ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25OYXZpZ2F0ZUJlZm9yZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLnJlc2V0TG9hZGluZ1NwaW5uZXIoKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUJlZm9yZS5uZXh0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbk5hdmlnYXRlTmV4dENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLnJlc2V0TG9hZGluZ1NwaW5uZXIoKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZU5leHQubmV4dChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2xvc2UgdGhlIHZpZXdlclxuICAgICAqL1xuICAgIG9uQ2xvc2UoKSB7XG4gICAgICAgIHRoaXMuc2hvd1ZpZXdlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dWaWV3ZXJDaGFuZ2UuZW1pdCh0aGlzLnNob3dWaWV3ZXIpO1xuICAgIH1cblxuICAgIHRvZ2dsZVJpZ2h0U2lkZWJhcigpIHtcbiAgICAgICAgdGhpcy5zaG93UmlnaHRTaWRlYmFyID0gIXRoaXMuc2hvd1JpZ2h0U2lkZWJhcjtcbiAgICB9XG5cbiAgICB0b2dnbGVMZWZ0U2lkZWJhcigpIHtcbiAgICAgICAgdGhpcy5zaG93TGVmdFNpZGViYXIgPSAhdGhpcy5zaG93TGVmdFNpZGViYXI7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAnLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50Py5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0JyAmJiB0aGlzLmNhbk5hdmlnYXRlQmVmb3JlKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5vbk5hdmlnYXRlQmVmb3JlQ2xpY2soZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93UmlnaHQnICYmIHRoaXMuY2FuTmF2aWdhdGVOZXh0KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5vbk5hdmlnYXRlTmV4dENsaWNrKGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5jb2RlID09PSAnS2V5RicgJiYgZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuZW50ZXJGdWxsU2NyZWVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyBmdWxsIHNjcmVlbiBtb2RlIHdpdGggYSBtYWluIGNvbnRlbnQgYXJlYSBkaXNwbGF5ZWQuXG4gICAgICovXG4gICAgZW50ZXJGdWxsU2NyZWVuKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hbGxvd0Z1bGxTY3JlZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWRmLXZpZXdlcl9fZnVsbHNjcmVlbi1jb250YWluZXInKTtcbiAgICAgICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyLnJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5yZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGFpbmVyLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGFpbmVyLm1velJlcXVlc3RGdWxsU2NyZWVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGFpbmVyLm1zUmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLm1zUmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblN1Ym1pdEZpbGUobmV3SW1hZ2VCbG9iOiBCbG9iKSB7XG4gICAgICAgIHRoaXMuc3VibWl0RmlsZS5lbWl0KG5ld0ltYWdlQmxvYik7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2xlYXJEb3dubG9hZFByb21wdFRpbWVvdXRzKCk7XG4gICAgfVxuXG4gICAgZ2V0RGlzcGxheUZpbGVOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZ1bGxOYW1lID0gKHRoaXMuZmlsZU5hbWVXaXRob3V0RXh0ZW5zaW9uIHx8ICcnKSArICh0aGlzLmZpbGVFeHRlbnNpb24gfHwgJycpO1xuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSA1MDtcblxuICAgICAgICBpZiAoZnVsbE5hbWUubGVuZ3RoIDw9IG1heExlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bGxOYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYW1vdW50T2ZUcnVuY2F0ZURvdHMgPSA1O1xuICAgICAgICBjb25zdCBhdmFpbGFibGVTcGFjZSA9IG1heExlbmd0aCAtIGFtb3VudE9mVHJ1bmNhdGVEb3RzO1xuICAgICAgICBjb25zdCBlbmRMZW5ndGggPSA4O1xuICAgICAgICBjb25zdCBzdGFydExlbmd0aCA9IGF2YWlsYWJsZVNwYWNlIC0gZW5kTGVuZ3RoO1xuXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gZnVsbE5hbWUuc3Vic3RyaW5nKDAsIHN0YXJ0TGVuZ3RoKTtcbiAgICAgICAgY29uc3QgZW5kID0gZnVsbE5hbWUuc3Vic3RyaW5nKGZ1bGxOYW1lLmxlbmd0aCAtIGVuZExlbmd0aCk7XG4gICAgICAgIHJldHVybiBzdGFydCArICcuLi4uLicgKyBlbmQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maWd1cmVBbmRJbml0RG93bmxvYWRQcm9tcHQoKSB7XG4gICAgICAgIHRoaXMuY29uZmlndXJlRG93bmxvYWRQcm9tcHRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZURvd25sb2FkUHJvbXB0KSB7XG4gICAgICAgICAgICB0aGlzLmluaXREb3dubG9hZFByb21wdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maWd1cmVEb3dubG9hZFByb21wdFByb3BlcnRpZXMoKSB7XG4gICAgICAgIGNvbnN0IG5vblJlc3BvbnNpdmVQcmV2aWV3Q29uZmlnID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldCgndmlld2VyJywgREVGQVVMVF9OT05fUFJFVklFV19DT05GSUcpO1xuXG4gICAgICAgIHRoaXMuZW5hYmxlRG93bmxvYWRQcm9tcHQgPSBub25SZXNwb25zaXZlUHJldmlld0NvbmZpZy5lbmFibGVEb3dubG9hZFByb21wdDtcbiAgICAgICAgdGhpcy5lbmFibGVEb3dubG9hZFByb21wdFJlbWluZGVyID0gbm9uUmVzcG9uc2l2ZVByZXZpZXdDb25maWcuZW5hYmxlRG93bmxvYWRQcm9tcHRSZW1pbmRlcjtcbiAgICAgICAgdGhpcy5kb3dubG9hZFByb21wdERlbGF5ID0gbm9uUmVzcG9uc2l2ZVByZXZpZXdDb25maWcuZG93bmxvYWRQcm9tcHREZWxheTtcbiAgICAgICAgdGhpcy5kb3dubG9hZFByb21wdFJlbWluZGVyRGVsYXkgPSBub25SZXNwb25zaXZlUHJldmlld0NvbmZpZy5kb3dubG9hZFByb21wdFJlbWluZGVyRGVsYXk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RG93bmxvYWRQcm9tcHQoKSB7XG4gICAgICAgIHRoaXMuZG93bmxvYWRQcm9tcHRUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd09yQ2xlYXJEb3dubG9hZFByb21wdCgpO1xuICAgICAgICB9LCB0aGlzLmRvd25sb2FkUHJvbXB0RGVsYXkgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dPckNsZWFyRG93bmxvYWRQcm9tcHQoKSB7XG4gICAgICAgIGlmICghdGhpcy51cmxGaWxlICYmICF0aGlzLmJsb2JGaWxlKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dEb3dubG9hZFByb21wdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbGVhckRvd25sb2FkUHJvbXB0VGltZW91dHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhckRvd25sb2FkUHJvbXB0VGltZW91dHMoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvd25sb2FkUHJvbXB0VGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRvd25sb2FkUHJvbXB0VGltZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRvd25sb2FkUHJvbXB0UmVtaW5kZXJUaW1lcikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZG93bmxvYWRQcm9tcHRSZW1pbmRlclRpbWVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd0Rvd25sb2FkUHJvbXB0KCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNEaWFsb2dWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmlzRGlhbG9nVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1xuICAgICAgICAgICAgICAgIC5vcGVuKERvd25sb2FkUHJvbXB0RGlhbG9nQ29tcG9uZW50LCB7IGRpc2FibGVDbG9zZTogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IERvd25sb2FkUHJvbXB0QWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBEb3dubG9hZFByb21wdEFjdGlvbnMuRE9XTkxPQUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWRGaWxlLmVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gRG93bmxvYWRQcm9tcHRBY3Rpb25zLldBSVQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVuYWJsZURvd25sb2FkUHJvbXB0UmVtaW5kZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRG93bmxvYWRQcm9tcHRUaW1lb3V0cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWRQcm9tcHRSZW1pbmRlclRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dPckNsZWFyRG93bmxvYWRQcm9tcHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLmRvd25sb2FkUHJvbXB0UmVtaW5kZXJEZWxheSAqIDEwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0TG9hZGluZ1NwaW5uZXIoKSB7XG4gICAgICAgIHRoaXMudXJsRmlsZSA9ICcnO1xuICAgICAgICB0aGlzLmJsb2JGaWxlID0gbnVsbDtcbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2hvd1ZpZXdlclwiXG4gICAgIGNsYXNzPVwiYWRmLXZpZXdlci1jb250YWluZXJcIlxuICAgICBbY2xhc3MuYWRmLXZpZXdlci1vdmVybGF5LWNvbnRhaW5lcl09XCJvdmVybGF5TW9kZVwiXG4gICAgIFtjbGFzcy5hZGYtdmlld2VyLWlubGluZS1jb250YWluZXJdPVwiIW92ZXJsYXlNb2RlXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlci1jb250ZW50XCJcbiAgICAgICAgIFtjZGtUcmFwRm9jdXNdPVwib3ZlcmxheU1vZGVcIlxuICAgICAgICAgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmU+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi12aWV3ZXItdG9vbGJhclwiIC8+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG9vbGJhciAmJiAhdG9vbGJhclwiPlxuICAgICAgICAgICAgPGFkZi10b29sYmFyIGlkPVwiYWRmLXZpZXdlci10b29sYmFyXCIgY2xhc3M9XCJhZGYtdmlld2VyLXRvb2xiYXJcIj5cbiAgICAgICAgICAgICAgICA8YWRmLXRvb2xiYXItdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxvd0xlZnRTaWRlYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInNob3dMZWZ0U2lkZWJhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5JTkZPJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5JTkZPJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10b29sYmFyLWxlZnQtc2lkZWJhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJzaG93TGVmdFNpZGViYXIgPyAnYWNjZW50JyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTGVmdFNpZGViYXIoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5pbmZvX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhbGxvd0dvQmFjayAmJiBjbG9zZUJ1dHRvblBvc2l0aW9uID09PSBDbG9zZUJ1dHRvblBvc2l0aW9uLkxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXZpZXdlci1jbG9zZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10b29sYmFyLWxlZnQtYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkNMT1NFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLkNMT1NFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9hZGYtdG9vbGJhci10aXRsZT5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdmlld2VyX19maWxlLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhbGxvd05hdmlnYXRlICYmIGNhbk5hdmlnYXRlQmVmb3JlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1wcmVmLWZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5QUkVWX0ZJTEUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuUFJFVl9GSUxFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2aWdhdGVCZWZvcmVDbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bmF2aWdhdGVfYmVmb3JlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhZGYtdmlld2VyX19taW1laWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCInQURGX1ZJRVdFUi5BUklBLk1JTUVfVFlQRV9JQ09OJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJtaW1lVHlwZUljb25VcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1maWxlLXRodW1ibmFpbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlcl9fZGlzcGxheS1uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImFkZi12aWV3ZXItZGlzcGxheS1uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZmlsZU5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRpc3BsYXlOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFsbG93TmF2aWdhdGUgJiYgY2FuTmF2aWdhdGVOZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1uZXh0LWZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5ORVhUX0ZJTEUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuTkVYVF9GSUxFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2aWdhdGVOZXh0Q2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPm5hdmlnYXRlX25leHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi12aWV3ZXItdG9vbGJhci1hY3Rpb25zXCIgLz5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtbnVPcGVuV2l0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9J2FkZi10b29sYmFyLWN1c3RvbS1idG4nPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwiYWRmLXZpZXdlci1vcGVud2l0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtbnVPcGVuV2l0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItb3Blbi13aXRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnQURGX1ZJRVdFUi5BQ1RJT05TLk9QRU5fV0lUSCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjbW51T3BlbldpdGg9XCJtYXRNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvdmVybGFwVHJpZ2dlcl09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLXZpZXdlci1vcGVuLXdpdGhcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPGFkZi10b29sYmFyLWRpdmlkZXIgLz5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi12aWV3ZXItdG9vbGJhci1jdXN0b20tYWN0aW9uc1wiIC8+XG5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwiYWRmLXZpZXdlci1mdWxsc2NyZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWxsb3dGdWxsU2NyZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkZVTExTQ1JFRU4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5GVUxMU0NSRUVOJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1mdWxsc2NyZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlbnRlckZ1bGxTY3JlZW4oKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZnVsbHNjcmVlbjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dSaWdodFNpZGViYXIgJiYgIWhpZGVJbmZvQnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhZGYtdG9vbGJhci1kaXZpZGVyIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInNob3dSaWdodFNpZGViYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5JTkZPJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLklORk8nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1zaWRlYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwic2hvd1JpZ2h0U2lkZWJhciA/ICdhY2NlbnQnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJpZ2h0U2lkZWJhcigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+aW5mb19vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtbnVNb3JlQWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwiYWRmLXZpZXdlci1tb3JlYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1udU1vcmVBY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuTU9SRV9BQ1RJT05TJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLk1PUkVfQUNUSU9OUycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10b29sYmFyLW1vcmUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI21udU1vcmVBY3Rpb25zPVwibWF0TWVudVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3ZlcmxhcFRyaWdnZXJdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi12aWV3ZXItbW9yZS1hY3Rpb25zXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxvd0dvQmFjayAmJiBjbG9zZUJ1dHRvblBvc2l0aW9uID09PSBDbG9zZUJ1dHRvblBvc2l0aW9uLlJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxhZGYtdG9vbGJhci1kaXZpZGVyIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkZi12aWV3ZXItY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1yaWdodC1iYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPC9hZGYtdG9vbGJhcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi12aWV3ZXItc2lkZWJhcnNcIj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93UmlnaHRTaWRlYmFyICYmIHNob3dSaWdodFNpZGViYXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlcl9fc2lkZWJhciBhZGYtdmlld2VyX19zaWRlYmFyX19yaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICBpZD1cImFkZi1yaWdodC1zaWRlYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaWRlYmFyUmlnaHRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGViYXJSaWdodFRlbXBsYXRlO2NvbnRleHQ6c2lkZWJhclJpZ2h0VGVtcGxhdGVDb250ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIXNpZGViYXJSaWdodFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0PVwiYWRmLXZpZXdlci1zaWRlYmFyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dMZWZ0U2lkZWJhciAmJiBzaG93TGVmdFNpZGViYXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlcl9fc2lkZWJhciBhZGYtdmlld2VyX19zaWRlYmFyX19sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWRmLWxlZnQtc2lkZWJhclwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2lkZWJhckxlZnRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGViYXJMZWZ0VGVtcGxhdGU7Y29udGV4dDpzaWRlYmFyTGVmdFRlbXBsYXRlQ29udGV4dFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCAqbmdJZj1cIiFzaWRlYmFyTGVmdFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0PVwiYWRmLXZpZXdlci1zaWRlYmFyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8YWRmLXZpZXdlci1yZW5kZXIgKGNsb3NlKT1cIm9uQ2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbWVUeXBlXT1cIm1pbWVUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsZU5hbWVdPVwiZmlsZU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtibG9iRmlsZV09XCJibG9iRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3VibWl0RmlsZSk9XCJvblN1Ym1pdEZpbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbG93ZWRFZGl0QWN0aW9uc109XCJhbGxvd2VkRWRpdEFjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxGaWxlXT1cInVybEZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc1NhdmluZyk9XCJhbGxvd05hdmlnYXRlID0gISRldmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYWNrc109XCJ0cmFja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aWV3ZXJUZW1wbGF0ZUV4dGVuc2lvbnNdPVwidmlld2VyRXh0ZW5zaW9ucyA/PyB2aWV3ZXJUZW1wbGF0ZUV4dGVuc2lvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub2RlSWRdPVwibm9kZUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tRXJyb3JdPVwiY3VzdG9tRXJyb3JcIiAvPlxuXG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
477
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdmlld2VyL2NvbXBvbmVudHMvdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvdmlld2VyL2NvbXBvbmVudHMvdmlld2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUVOLFdBQVcsRUFDWCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFB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SztnQkFLTixXQUFXO3NCQURWLEtBQUs7Z0JBUU4sV0FBVztzQkFEVixLQUFLO2dCQVFOLGFBQWE7c0JBRFosS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQUtOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sb0JBQW9CO3NCQURuQixLQUFLO2dCQUtOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBU04sa0JBQWtCO3NCQURqQixLQUFLO2dCQVFOLE1BQU07c0JBREwsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBT04sMkJBQTJCO3NCQUQxQixLQUFLO2dCQU9OLDBCQUEwQjtzQkFEekIsS0FBSztnQkFPTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQUtOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQTJCTixZQUFZO3NCQURYLE1BQU07Z0JBS1AsY0FBYztzQkFEYixNQUFNO2dCQUtQLFlBQVk7c0JBRFgsTUFBTTtnQkFLUCxnQkFBZ0I7c0JBRGYsTUFBTTtnQkFLUCxVQUFVO3NCQURULE1BQU07Z0JBbUJILFFBQVE7c0JBRFgsS0FBSztnQkE4R04sbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdCwgc2tpcFdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL2FwcC1jb25maWcnO1xuaW1wb3J0IHsgVG9vbGJhckNvbXBvbmVudCwgVG9vbGJhckRpdmlkZXJDb21wb25lbnQsIFRvb2xiYXJUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Rvb2xiYXInO1xuaW1wb3J0IHsgRG93bmxvYWRQcm9tcHRBY3Rpb25zIH0gZnJvbSAnLi4vbW9kZWxzL2Rvd25sb2FkLXByb21wdC5hY3Rpb25zJztcbmltcG9ydCB7IENsb3NlQnV0dG9uUG9zaXRpb24sIFRyYWNrIH0gZnJvbSAnLi4vbW9kZWxzL3ZpZXdlci5tb2RlbCc7XG5pbXBvcnQgeyBWaWV3VXRpbFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy92aWV3LXV0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBEb3dubG9hZFByb21wdERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZG93bmxvYWQtcHJvbXB0LWRpYWxvZy9kb3dubG9hZC1wcm9tcHQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3ZXJNb3JlQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vdmlld2VyLW1vcmUtYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld2VyT3BlbldpdGhDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdlci1vcGVuLXdpdGguY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdlclJlbmRlckNvbXBvbmVudCB9IGZyb20gJy4vdmlld2VyLXJlbmRlci92aWV3ZXItcmVuZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3ZXJTaWRlYmFyQ29tcG9uZW50IH0gZnJvbSAnLi92aWV3ZXItc2lkZWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld2VyVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vdmlld2VyLXRvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IFZpZXdlclRvb2xiYXJBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi92aWV3ZXItdG9vbGJhci1hY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3ZXJUb29sYmFyQ3VzdG9tQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vdmlld2VyLXRvb2xiYXItY3VzdG9tLWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9pY29uJztcbmltcG9ydCB7IFRodW1ibmFpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5jb25zdCBERUZBVUxUX05PTl9QUkVWSUVXX0NPTkZJRyA9IHtcbiAgICBlbmFibGVEb3dubG9hZFByb21wdDogZmFsc2UsXG4gICAgZW5hYmxlRG93bmxvYWRQcm9tcHRSZW1pbmRlcjogZmFsc2UsXG4gICAgZG93bmxvYWRQcm9tcHREZWxheTogNTAsXG4gICAgZG93bmxvYWRQcm9tcHRSZW1pbmRlckRlbGF5OiAzMFxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtdmlld2VyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlVXJsOiAnLi92aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3ZpZXdlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdhZGYtdmlld2VyJyB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBBMTF5TW9kdWxlLFxuICAgICAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgICAgICBUb29sYmFyVGl0bGVDb21wb25lbnQsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBNYXRNZW51TW9kdWxlLFxuICAgICAgICBUb29sYmFyRGl2aWRlckNvbXBvbmVudCxcbiAgICAgICAgVmlld2VyUmVuZGVyQ29tcG9uZW50LFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBWaWV3ZXJUb29sYmFyQ29tcG9uZW50LFxuICAgICAgICBWaWV3ZXJTaWRlYmFyQ29tcG9uZW50LFxuICAgICAgICBWaWV3ZXJUb29sYmFyQWN0aW9uc0NvbXBvbmVudCxcbiAgICAgICAgVmlld2VyVG9vbGJhckN1c3RvbUFjdGlvbnNDb21wb25lbnQsXG4gICAgICAgIEljb25Db21wb25lbnRcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1ZpZXdVdGlsU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgVmlld2VyQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgcHJpdmF0ZSB0aHVtYm5haWxTZXJ2aWNlID0gaW5qZWN0KFRodW1ibmFpbFNlcnZpY2UpO1xuXG4gICAgQENvbnRlbnRDaGlsZChWaWV3ZXJUb29sYmFyQ29tcG9uZW50KVxuICAgIHRvb2xiYXI6IFZpZXdlclRvb2xiYXJDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKFZpZXdlclNpZGViYXJDb21wb25lbnQpXG4gICAgc2lkZWJhcjogVmlld2VyU2lkZWJhckNvbXBvbmVudDtcblxuICAgIEBDb250ZW50Q2hpbGQoVmlld2VyT3BlbldpdGhDb21wb25lbnQpXG4gICAgbW51T3BlbldpdGg6IFZpZXdlck9wZW5XaXRoQ29tcG9uZW50O1xuXG4gICAgQENvbnRlbnRDaGlsZChWaWV3ZXJNb3JlQWN0aW9uc0NvbXBvbmVudClcbiAgICBtbnVNb3JlQWN0aW9uczogVmlld2VyTW9yZUFjdGlvbnNDb21wb25lbnQ7XG5cbiAgICBAQ29udGVudENoaWxkKCd2aWV3ZXJFeHRlbnNpb25zJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgdmlld2VyVGVtcGxhdGVFeHRlbnNpb25zOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgZ2V0IENsb3NlQnV0dG9uUG9zaXRpb24oKSB7XG4gICAgICAgIHJldHVybiBDbG9zZUJ1dHRvblBvc2l0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIHlvdSB3YW50IHRvIGxvYWQgYW4gZXh0ZXJuYWwgZmlsZSB0aGF0IGRvZXMgbm90IGNvbWUgZnJvbSBBQ1MgeW91XG4gICAgICogY2FuIHVzZSB0aGlzIFVSTCB0byBzcGVjaWZ5IHdoZXJlIHRvIGxvYWQgdGhlIGZpbGUgZnJvbS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHVybEZpbGUgPSAnJztcblxuICAgIC8qKiBMb2FkcyBhIEJsb2IgRmlsZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgYmxvYkZpbGU6IEJsb2I7XG5cbiAgICAvKiogSGlkZSBvciBzaG93IHRoZSB2aWV3ZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dWaWV3ZXIgPSB0cnVlO1xuXG4gICAgLyoqIEFsbG93cyBgYmFja2AgbmF2aWdhdGlvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dHb0JhY2sgPSB0cnVlO1xuXG4gICAgLyoqIFRvZ2dsZXMgdGhlICdGdWxsIFNjcmVlbicgZmVhdHVyZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93RnVsbFNjcmVlbiA9IHRydWU7XG5cbiAgICAvKiogSGlkZSBvciBzaG93IHRoZSB0b29sYmFyICovXG4gICAgQElucHV0KClcbiAgICBzaG93VG9vbGJhciA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBJZiBgdHJ1ZWAgdGhlbiBzaG93IHRoZSBWaWV3ZXIgYXMgYSBmdWxsIHBhZ2Ugb3ZlciB0aGUgY3VycmVudCBjb250ZW50LlxuICAgICAqIE90aGVyd2lzZSwgZml0IGluc2lkZSB0aGUgcGFyZW50IGRpdi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG92ZXJsYXlNb2RlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIGJlZm9yZS9uZXh0IG5hdmlnYXRpb24uIFlvdSBjYW4gdXNlIHRoZSBhcnJvdyBidXR0b25zIHRvIG5hdmlnYXRlXG4gICAgICogYmV0d2VlbiBkb2N1bWVudHMgaW4gdGhlIGNvbGxlY3Rpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd05hdmlnYXRlID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgXCJiZWZvcmVcIiAoXCI8XCIpIGJ1dHRvbi4gUmVxdWlyZXMgYGFsbG93TmF2aWdhdGVgIHRvIGJlIGVuYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBjYW5OYXZpZ2F0ZUJlZm9yZSA9IHRydWU7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgbmV4dCAoXCI+XCIpIGJ1dHRvbi4gUmVxdWlyZXMgYGFsbG93TmF2aWdhdGVgIHRvIGJlIGVuYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBjYW5OYXZpZ2F0ZU5leHQgPSB0cnVlO1xuXG4gICAgLyoqIEFsbG93IHRoZSBsZWZ0IHRoZSBzaWRlYmFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dMZWZ0U2lkZWJhciA9IGZhbHNlO1xuXG4gICAgLyoqIEFsbG93IHRoZSByaWdodCBzaWRlYmFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dSaWdodFNpZGViYXIgPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIHJpZ2h0IHNpZGViYXIgdmlzaWJpbGl0eS4gUmVxdWlyZXMgYGFsbG93UmlnaHRTaWRlYmFyYCB0byBiZSBzZXQgdG8gYHRydWVgLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1JpZ2h0U2lkZWJhciA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZXMgbGVmdCBzaWRlYmFyIHZpc2liaWxpdHkuIFJlcXVpcmVzIGBhbGxvd0xlZnRTaWRlYmFyYCB0byBiZSBzZXQgdG8gYHRydWVgLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0xlZnRTaWRlYmFyID0gZmFsc2U7XG5cbiAgICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgcmlnaHQgc2lkZWJhci4gVGhlIHRlbXBsYXRlIGNvbnRleHQgY29udGFpbnMgdGhlIGxvYWRlZCBub2RlIGRhdGEuICovXG4gICAgQElucHV0KClcbiAgICBzaWRlYmFyUmlnaHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG5cbiAgICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgbGVmdCBzaWRlYmFyLiBUaGUgdGVtcGxhdGUgY29udGV4dCBjb250YWlucyB0aGUgbG9hZGVkIG5vZGUgZGF0YS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNpZGViYXJMZWZ0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuXG4gICAgLyoqIEVuYWJsZSB3aGVuIHdoZXJlIGlzIHBvc3NpYmxlIHRoZSBlZGl0aW5nIGZ1bmN0aW9uYWxpdGllcyAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlYWRPbmx5ID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIENvbnRyb2xzIHdoaWNoIGFjdGlvbnMgYXJlIGVuYWJsZWQgaW4gdGhlIHZpZXdlci5cbiAgICAgKiBFeGFtcGxlOlxuICAgICAqIHsgcm90YXRlOiB0cnVlLCBjcm9wOiBmYWxzZSB9IHdpbGwgZW5hYmxlIHJvdGF0aW9uIGJ1dCBkaXNhYmxlIGNyb3BwaW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dlZEVkaXRBY3Rpb25zOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHtcbiAgICAgICAgcm90YXRlOiB0cnVlLFxuICAgICAgICBjcm9wOiB0cnVlXG4gICAgfTtcblxuICAgIC8qKiBtZWRpYSBzdWJ0aXRsZXMgZm9yIHRoZSBtZWRpYSBwbGF5ZXIqL1xuICAgIEBJbnB1dCgpXG4gICAgdHJhY2tzOiBUcmFja1tdID0gW107XG5cbiAgICAvKiogT3ZlcmxvYWQgbWltZVR5cGUqL1xuICAgIEBJbnB1dCgpXG4gICAgbWltZVR5cGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIENvbnRleHQgb2JqZWN0IGF2YWlsYWJsZSBmb3IgYmluZGluZyBieSB0aGUgbG9jYWwgc2lkZWJhclJpZ2h0VGVtcGxhdGUgd2l0aCBsZXQgZGVjbGFyYXRpb25zLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2lkZWJhclJpZ2h0VGVtcGxhdGVDb250ZXh0OiBUID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIENvbnRleHQgb2JqZWN0IGF2YWlsYWJsZSBmb3IgYmluZGluZyBieSB0aGUgbG9jYWwgc2lkZWJhckxlZnRUZW1wbGF0ZSB3aXRoIGxldCBkZWNsYXJhdGlvbnMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzaWRlYmFyTGVmdFRlbXBsYXRlQ29udGV4dDogVCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2UgdGhlIGNsb3NlIGJ1dHRvbiBwb3NpdGlvbiBSaWdodC9MZWZ0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VCdXR0b25Qb3NpdGlvbiA9IENsb3NlQnV0dG9uUG9zaXRpb24uTGVmdDtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSAnSW5mbyBCdXR0b24nICovXG4gICAgQElucHV0KClcbiAgICBoaWRlSW5mb0J1dHRvbiA9IGZhbHNlO1xuXG4gICAgLyoqIFRlbXBsYXRlIGNvbnRhaW5pbmcgVmlld2VyRXh0ZW5zaW9uRGlyZWN0aXZlIGluc3RhbmNlcyBwcm92aWRpbmcgZGlmZmVyZW50IHZpZXdlciBleHRlbnNpb25zIGJhc2VkIG9uIHN1cHBvcnRlZCBmaWxlIGV4dGVuc2lvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHZpZXdlckV4dGVuc2lvbnM6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogSWRlbnRpZmllciBvZiBhIG5vZGUgdGhhdCBpcyBvcGVuZWQgYnkgdGhlIHZpZXdlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5vZGVJZDogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKiBPcmlnaW5hbCBub2RlIG1pbWUgdHlwZSwgc2hvdWxkIGJlIHByb3ZpZGVkIHdoZW4gcmVuZGl0aW9uYSBtaW1lIHR5cGUgaXMgZGlmZmVyZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbm9kZU1pbWVUeXBlOiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiogQ3VzdG9tIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB2aWV3ZXIuICovXG4gICAgQElucHV0KClcbiAgICBjdXN0b21FcnJvcjogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogRW5hYmxlIGRpYWxvZyBib3ggdG8gYWxsb3cgdXNlciB0byBkb3dubG9hZCB0aGUgcHJldmlld2VkIGZpbGUsIGluIGNhc2UgdGhlIHByZXZpZXcgaXMgbm90IHJlc3BvbmRpbmcgZm9yIGEgc2V0IHBlcmlvZCBvZiB0aW1lLlxuICAgICAqL1xuICAgIGVuYWJsZURvd25sb2FkUHJvbXB0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGUgcmVtaW5kZXIgZGlhbG9ncyB0byBwcm9tcHQgdXNlciB0byBkb3dubG9hZCB0aGUgZmlsZSwgaW4gY2FzZSB0aGUgcHJldmlldyBpcyBub3QgcmVzcG9uZGluZyBmb3IgYSBzZXQgcGVyaW9kIG9mIHRpbWUuXG4gICAgICovXG4gICAgZW5hYmxlRG93bmxvYWRQcm9tcHRSZW1pbmRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbCB0aW1lIGluIHNlY29uZHMgdG8gd2FpdCBiZWZvcmUgZ2l2aW5nIHRoZSBmaXJzdCBwcm9tcHQgdG8gdXNlciB0byBkb3dubG9hZCB0aGUgZmlsZVxuICAgICAqL1xuICAgIGRvd25sb2FkUHJvbXB0RGVsYXk6IG51bWJlciA9IDUwO1xuXG4gICAgLyoqXG4gICAgICogVGltZSBpbiBzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIGdpdmluZyB0aGUgc2Vjb25kIGFuZCBjb25zZXF1ZW50IHJlbWluZGVycyB0byB0aGUgdXNlciB0byBkb3dubG9hZCB0aGUgZmlsZS5cbiAgICAgKi9cbiAgICBkb3dubG9hZFByb21wdFJlbWluZGVyRGVsYXk6IG51bWJlciA9IDE1O1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHVzZXIgY2xpY2tzIG9uIGRvd25sb2FkIGJ1dHRvbiBvbiBkb3dubG9hZCBwcm9tcHQgZGlhbG9nLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGRvd25sb2FkRmlsZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdXNlciBjbGlja3MgJ05hdmlnYXRlIEJlZm9yZScgKFwiPFwiKSBidXR0b24uICovXG4gICAgQE91dHB1dCgpXG4gICAgbmF2aWdhdGVCZWZvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB1c2VyIGNsaWNrcyAnTmF2aWdhdGUgTmV4dCcgKFwiPlwiKSBidXR0b24uICovXG4gICAgQE91dHB1dCgpXG4gICAgbmF2aWdhdGVOZXh0ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIHZpZXdlciBjbG9zZSAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNob3dWaWV3ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBpbWcgaXMgc3VibWl0dGVkIGluIHRoZSBpbWcgdmlld2VyLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHN1Ym1pdEZpbGUgPSBuZXcgRXZlbnRFbWl0dGVyPEJsb2I+KCk7XG5cbiAgICBwcml2YXRlIGNsb3NlVmlld2VyID0gdHJ1ZTtcbiAgICBwcml2YXRlIGtleURvd24kID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAna2V5ZG93bicpO1xuICAgIHByaXZhdGUgaXNEaWFsb2dWaXNpYmxlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfZmlsZU5hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIF9maWxlTmFtZVdpdGhvdXRFeHRlbnNpb246IHN0cmluZztcbiAgICBwcml2YXRlIF9maWxlRXh0ZW5zaW9uOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBwdWJsaWMgZG93bmxvYWRQcm9tcHRUaW1lcjogbnVtYmVyO1xuICAgIHB1YmxpYyBkb3dubG9hZFByb21wdFJlbWluZGVyVGltZXI6IG51bWJlcjtcbiAgICBwdWJsaWMgbWltZVR5cGVJY29uVXJsOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogT3ZlcnJpZGUgQ29udGVudCBmaWxlbmFtZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBmaWxlTmFtZShmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2ZpbGVOYW1lID0gZmlsZU5hbWU7XG4gICAgICAgIHRoaXMuX2ZpbGVFeHRlbnNpb24gPSB0aGlzLnZpZXdVdGlsc1NlcnZpY2UuZ2V0RmlsZUV4dGVuc2lvbih0aGlzLmZpbGVOYW1lKTtcbiAgICAgICAgdGhpcy5fZmlsZU5hbWVXaXRob3V0RXh0ZW5zaW9uID0gdGhpcy5maWxlTmFtZT8ucmVwbGFjZShuZXcgUmVnRXhwKGAke3RoaXMuZmlsZUV4dGVuc2lvbn0kYCksICcnKSB8fCAnJztcbiAgICAgICAgdGhpcy5kaXNwbGF5TmFtZSA9IHRoaXMuZ2V0RGlzcGxheUZpbGVOYW1lKCk7XG4gICAgfVxuXG4gICAgZ2V0IGZpbGVOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlTmFtZTtcbiAgICB9XG5cbiAgICBnZXQgZmlsZUV4dGVuc2lvbigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZUV4dGVuc2lvbjtcbiAgICB9XG5cbiAgICBnZXQgZmlsZU5hbWVXaXRob3V0RXh0ZW5zaW9uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxlTmFtZVdpdGhvdXRFeHRlbnNpb247XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSB2aWV3VXRpbHNTZXJ2aWNlOiBWaWV3VXRpbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZVxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgeyBibG9iRmlsZSwgdXJsRmlsZSwgbWltZVR5cGUsIG5vZGVNaW1lVHlwZSB9ID0gY2hhbmdlcztcblxuICAgICAgICBpZiAoYmxvYkZpbGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5taW1lVHlwZSA9IGJsb2JGaWxlLmN1cnJlbnRWYWx1ZS50eXBlO1xuICAgICAgICAgICAgdGhpcy5taW1lVHlwZUljb25VcmwgPSB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKGJsb2JGaWxlLmN1cnJlbnRWYWx1ZS50eXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1cmxGaWxlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZU5hbWUgfHw9IHRoaXMudmlld1V0aWxzU2VydmljZS5nZXRGaWxlbmFtZUZyb21VcmwodXJsRmlsZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1pbWVUeXBlPy5jdXJyZW50VmFsdWUgJiYgIW5vZGVNaW1lVHlwZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm1pbWVUeXBlSWNvblVybCA9IHRoaXMudGh1bWJuYWlsU2VydmljZS5nZXRNaW1lVHlwZUljb24obWltZVR5cGUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlTWltZVR5cGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5taW1lVHlwZUljb25VcmwgPSB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKG5vZGVNaW1lVHlwZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xvc2VPdmVybGF5TWFuYWdlcigpO1xuICAgICAgICB0aGlzLmNvbmZpZ3VyZUFuZEluaXREb3dubG9hZFByb21wdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VPdmVybGF5TWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5kaWFsb2cuYWZ0ZXJPcGVuZWRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXBXaGlsZSgoKSA9PiAhdGhpcy5vdmVybGF5TW9kZSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHRoaXMuY2xvc2VWaWV3ZXIgPSBmYWxzZSkpO1xuXG4gICAgICAgIHRoaXMuZGlhbG9nLmFmdGVyQWxsQ2xvc2VkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBza2lwV2hpbGUoKCkgPT4gIXRoaXMub3ZlcmxheU1vZGUpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+ICh0aGlzLmNsb3NlVmlld2VyID0gdHJ1ZSkpO1xuXG4gICAgICAgIHRoaXMua2V5RG93biRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXBXaGlsZSgoKSA9PiAhdGhpcy5vdmVybGF5TW9kZSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChlOiBLZXlib2FyZEV2ZW50KSA9PiBlLmtleUNvZGUgPT09IDI3KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xvc2VWaWV3ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25OYXZpZ2F0ZUJlZm9yZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLnJlc2V0TG9hZGluZ1NwaW5uZXIoKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZUJlZm9yZS5uZXh0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbk5hdmlnYXRlTmV4dENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLnJlc2V0TG9hZGluZ1NwaW5uZXIoKTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZU5leHQubmV4dChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2xvc2UgdGhlIHZpZXdlclxuICAgICAqL1xuICAgIG9uQ2xvc2UoKSB7XG4gICAgICAgIHRoaXMuc2hvd1ZpZXdlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dWaWV3ZXJDaGFuZ2UuZW1pdCh0aGlzLnNob3dWaWV3ZXIpO1xuICAgIH1cblxuICAgIHRvZ2dsZVJpZ2h0U2lkZWJhcigpIHtcbiAgICAgICAgdGhpcy5zaG93UmlnaHRTaWRlYmFyID0gIXRoaXMuc2hvd1JpZ2h0U2lkZWJhcjtcbiAgICB9XG5cbiAgICB0b2dnbGVMZWZ0U2lkZWJhcigpIHtcbiAgICAgICAgdGhpcy5zaG93TGVmdFNpZGViYXIgPSAhdGhpcy5zaG93TGVmdFNpZGViYXI7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAnLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50Py5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0JyAmJiB0aGlzLmNhbk5hdmlnYXRlQmVmb3JlKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5vbk5hdmlnYXRlQmVmb3JlQ2xpY2soZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93UmlnaHQnICYmIHRoaXMuY2FuTmF2aWdhdGVOZXh0KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5vbk5hdmlnYXRlTmV4dENsaWNrKGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5jb2RlID09PSAnS2V5RicgJiYgZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuZW50ZXJGdWxsU2NyZWVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyBmdWxsIHNjcmVlbiBtb2RlIHdpdGggYSBtYWluIGNvbnRlbnQgYXJlYSBkaXNwbGF5ZWQuXG4gICAgICovXG4gICAgZW50ZXJGdWxsU2NyZWVuKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hbGxvd0Z1bGxTY3JlZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWRmLXZpZXdlcl9fZnVsbHNjcmVlbi1jb250YWluZXInKTtcbiAgICAgICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyLnJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5yZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGFpbmVyLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGFpbmVyLm1velJlcXVlc3RGdWxsU2NyZWVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGFpbmVyLm1zUmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLm1zUmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblN1Ym1pdEZpbGUobmV3SW1hZ2VCbG9iOiBCbG9iKSB7XG4gICAgICAgIHRoaXMuc3VibWl0RmlsZS5lbWl0KG5ld0ltYWdlQmxvYik7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2xlYXJEb3dubG9hZFByb21wdFRpbWVvdXRzKCk7XG4gICAgfVxuXG4gICAgZ2V0RGlzcGxheUZpbGVOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZ1bGxOYW1lID0gKHRoaXMuZmlsZU5hbWVXaXRob3V0RXh0ZW5zaW9uIHx8ICcnKSArICh0aGlzLmZpbGVFeHRlbnNpb24gfHwgJycpO1xuICAgICAgICBjb25zdCBtYXhMZW5ndGggPSA1MDtcblxuICAgICAgICBpZiAoZnVsbE5hbWUubGVuZ3RoIDw9IG1heExlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bGxOYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYW1vdW50T2ZUcnVuY2F0ZURvdHMgPSA1O1xuICAgICAgICBjb25zdCBhdmFpbGFibGVTcGFjZSA9IG1heExlbmd0aCAtIGFtb3VudE9mVHJ1bmNhdGVEb3RzO1xuICAgICAgICBjb25zdCBlbmRMZW5ndGggPSA4O1xuICAgICAgICBjb25zdCBzdGFydExlbmd0aCA9IGF2YWlsYWJsZVNwYWNlIC0gZW5kTGVuZ3RoO1xuXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gZnVsbE5hbWUuc3Vic3RyaW5nKDAsIHN0YXJ0TGVuZ3RoKTtcbiAgICAgICAgY29uc3QgZW5kID0gZnVsbE5hbWUuc3Vic3RyaW5nKGZ1bGxOYW1lLmxlbmd0aCAtIGVuZExlbmd0aCk7XG4gICAgICAgIHJldHVybiBzdGFydCArICcuLi4uLicgKyBlbmQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maWd1cmVBbmRJbml0RG93bmxvYWRQcm9tcHQoKSB7XG4gICAgICAgIHRoaXMuY29uZmlndXJlRG93bmxvYWRQcm9tcHRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZURvd25sb2FkUHJvbXB0KSB7XG4gICAgICAgICAgICB0aGlzLmluaXREb3dubG9hZFByb21wdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maWd1cmVEb3dubG9hZFByb21wdFByb3BlcnRpZXMoKSB7XG4gICAgICAgIGNvbnN0IG5vblJlc3BvbnNpdmVQcmV2aWV3Q29uZmlnID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldCgndmlld2VyJywgREVGQVVMVF9OT05fUFJFVklFV19DT05GSUcpO1xuXG4gICAgICAgIHRoaXMuZW5hYmxlRG93bmxvYWRQcm9tcHQgPSBub25SZXNwb25zaXZlUHJldmlld0NvbmZpZy5lbmFibGVEb3dubG9hZFByb21wdDtcbiAgICAgICAgdGhpcy5lbmFibGVEb3dubG9hZFByb21wdFJlbWluZGVyID0gbm9uUmVzcG9uc2l2ZVByZXZpZXdDb25maWcuZW5hYmxlRG93bmxvYWRQcm9tcHRSZW1pbmRlcjtcbiAgICAgICAgdGhpcy5kb3dubG9hZFByb21wdERlbGF5ID0gbm9uUmVzcG9uc2l2ZVByZXZpZXdDb25maWcuZG93bmxvYWRQcm9tcHREZWxheTtcbiAgICAgICAgdGhpcy5kb3dubG9hZFByb21wdFJlbWluZGVyRGVsYXkgPSBub25SZXNwb25zaXZlUHJldmlld0NvbmZpZy5kb3dubG9hZFByb21wdFJlbWluZGVyRGVsYXk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RG93bmxvYWRQcm9tcHQoKSB7XG4gICAgICAgIHRoaXMuZG93bmxvYWRQcm9tcHRUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd09yQ2xlYXJEb3dubG9hZFByb21wdCgpO1xuICAgICAgICB9LCB0aGlzLmRvd25sb2FkUHJvbXB0RGVsYXkgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dPckNsZWFyRG93bmxvYWRQcm9tcHQoKSB7XG4gICAgICAgIGlmICghdGhpcy51cmxGaWxlICYmICF0aGlzLmJsb2JGaWxlKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dEb3dubG9hZFByb21wdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jbGVhckRvd25sb2FkUHJvbXB0VGltZW91dHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhckRvd25sb2FkUHJvbXB0VGltZW91dHMoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvd25sb2FkUHJvbXB0VGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRvd25sb2FkUHJvbXB0VGltZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRvd25sb2FkUHJvbXB0UmVtaW5kZXJUaW1lcikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZG93bmxvYWRQcm9tcHRSZW1pbmRlclRpbWVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd0Rvd25sb2FkUHJvbXB0KCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNEaWFsb2dWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmlzRGlhbG9nVmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1xuICAgICAgICAgICAgICAgIC5vcGVuKERvd25sb2FkUHJvbXB0RGlhbG9nQ29tcG9uZW50LCB7IGRpc2FibGVDbG9zZTogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IERvd25sb2FkUHJvbXB0QWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBEb3dubG9hZFByb21wdEFjdGlvbnMuRE9XTkxPQUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWRGaWxlLmVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25DbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gRG93bmxvYWRQcm9tcHRBY3Rpb25zLldBSVQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVuYWJsZURvd25sb2FkUHJvbXB0UmVtaW5kZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRG93bmxvYWRQcm9tcHRUaW1lb3V0cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWRQcm9tcHRSZW1pbmRlclRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dPckNsZWFyRG93bmxvYWRQcm9tcHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLmRvd25sb2FkUHJvbXB0UmVtaW5kZXJEZWxheSAqIDEwMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc2V0TG9hZGluZ1NwaW5uZXIoKSB7XG4gICAgICAgIHRoaXMudXJsRmlsZSA9ICcnO1xuICAgICAgICB0aGlzLmJsb2JGaWxlID0gbnVsbDtcbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2hvd1ZpZXdlclwiXG4gICAgIGNsYXNzPVwiYWRmLXZpZXdlci1jb250YWluZXJcIlxuICAgICBbY2xhc3MuYWRmLXZpZXdlci1vdmVybGF5LWNvbnRhaW5lcl09XCJvdmVybGF5TW9kZVwiXG4gICAgIFtjbGFzcy5hZGYtdmlld2VyLWlubGluZS1jb250YWluZXJdPVwiIW92ZXJsYXlNb2RlXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlci1jb250ZW50XCJcbiAgICAgICAgIFtjZGtUcmFwRm9jdXNdPVwib3ZlcmxheU1vZGVcIlxuICAgICAgICAgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmU+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi12aWV3ZXItdG9vbGJhclwiIC8+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG9vbGJhciAmJiAhdG9vbGJhclwiPlxuICAgICAgICAgICAgPGFkZi10b29sYmFyIGlkPVwiYWRmLXZpZXdlci10b29sYmFyXCIgY2xhc3M9XCJhZGYtdmlld2VyLXRvb2xiYXJcIj5cbiAgICAgICAgICAgICAgICA8YWRmLXRvb2xiYXItdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxvd0xlZnRTaWRlYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInNob3dMZWZ0U2lkZWJhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5JTkZPJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5JTkZPJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10b29sYmFyLWxlZnQtc2lkZWJhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJzaG93TGVmdFNpZGViYXIgPyAnYWNjZW50JyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTGVmdFNpZGViYXIoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5pbmZvX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhbGxvd0dvQmFjayAmJiBjbG9zZUJ1dHRvblBvc2l0aW9uID09PSBDbG9zZUJ1dHRvblBvc2l0aW9uLkxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLXZpZXdlci1jbG9zZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10b29sYmFyLWxlZnQtYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkNMT1NFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLkNMT1NFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9hZGYtdG9vbGJhci10aXRsZT5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdmlld2VyX19maWxlLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhbGxvd05hdmlnYXRlICYmIGNhbk5hdmlnYXRlQmVmb3JlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1wcmVmLWZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5QUkVWX0ZJTEUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuUFJFVl9GSUxFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2aWdhdGVCZWZvcmVDbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+bmF2aWdhdGVfYmVmb3JlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhZGYtdmlld2VyX19taW1laWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCInQURGX1ZJRVdFUi5BUklBLk1JTUVfVFlQRV9JQ09OJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJtaW1lVHlwZUljb25VcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1maWxlLXRodW1ibmFpbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlcl9fZGlzcGxheS1uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImFkZi12aWV3ZXItZGlzcGxheS1uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZmlsZU5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRpc3BsYXlOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFsbG93TmF2aWdhdGUgJiYgY2FuTmF2aWdhdGVOZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1uZXh0LWZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5ORVhUX0ZJTEUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuTkVYVF9GSUxFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTmF2aWdhdGVOZXh0Q2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPm5hdmlnYXRlX25leHQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi12aWV3ZXItdG9vbGJhci1hY3Rpb25zXCIgLz5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtbnVPcGVuV2l0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9J2FkZi10b29sYmFyLWN1c3RvbS1idG4nPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwiYWRmLXZpZXdlci1vcGVud2l0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtbnVPcGVuV2l0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItb3Blbi13aXRoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnQURGX1ZJRVdFUi5BQ1RJT05TLk9QRU5fV0lUSCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjbW51T3BlbldpdGg9XCJtYXRNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvdmVybGFwVHJpZ2dlcl09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLXZpZXdlci1vcGVuLXdpdGhcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPGFkZi10b29sYmFyLWRpdmlkZXIgLz5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi12aWV3ZXItdG9vbGJhci1jdXN0b20tYWN0aW9uc1wiIC8+XG5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwiYWRmLXZpZXdlci1mdWxsc2NyZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWxsb3dGdWxsU2NyZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkZVTExTQ1JFRU4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5GVUxMU0NSRUVOJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1mdWxsc2NyZWVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJlbnRlckZ1bGxTY3JlZW4oKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZnVsbHNjcmVlbjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dSaWdodFNpZGViYXIgJiYgIWhpZGVJbmZvQnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhZGYtdG9vbGJhci1kaXZpZGVyIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInNob3dSaWdodFNpZGViYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5JTkZPJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLklORk8nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1zaWRlYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwic2hvd1JpZ2h0U2lkZWJhciA/ICdhY2NlbnQnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJpZ2h0U2lkZWJhcigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+aW5mb19vdXRsaW5lPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtbnVNb3JlQWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPVwiYWRmLXZpZXdlci1tb3JlYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1udU1vcmVBY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuTU9SRV9BQ1RJT05TJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLk1PUkVfQUNUSU9OUycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10b29sYmFyLW1vcmUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI21udU1vcmVBY3Rpb25zPVwibWF0TWVudVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3ZlcmxhcFRyaWdnZXJdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi12aWV3ZXItbW9yZS1hY3Rpb25zXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxvd0dvQmFjayAmJiBjbG9zZUJ1dHRvblBvc2l0aW9uID09PSBDbG9zZUJ1dHRvblBvc2l0aW9uLlJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxhZGYtdG9vbGJhci1kaXZpZGVyIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImFkZi12aWV3ZXItY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1yaWdodC1iYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPC9hZGYtdG9vbGJhcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi12aWV3ZXItc2lkZWJhcnNcIj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFsbG93UmlnaHRTaWRlYmFyICYmIHNob3dSaWdodFNpZGViYXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlcl9fc2lkZWJhciBhZGYtdmlld2VyX19zaWRlYmFyX19yaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICBpZD1cImFkZi1yaWdodC1zaWRlYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaWRlYmFyUmlnaHRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGViYXJSaWdodFRlbXBsYXRlO2NvbnRleHQ6c2lkZWJhclJpZ2h0VGVtcGxhdGVDb250ZXh0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIXNpZGViYXJSaWdodFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0PVwiYWRmLXZpZXdlci1zaWRlYmFyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsb3dMZWZ0U2lkZWJhciAmJiBzaG93TGVmdFNpZGViYXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXZpZXdlcl9fc2lkZWJhciBhZGYtdmlld2VyX19zaWRlYmFyX19sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWRmLWxlZnQtc2lkZWJhclwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2lkZWJhckxlZnRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGViYXJMZWZ0VGVtcGxhdGU7Y29udGV4dDpzaWRlYmFyTGVmdFRlbXBsYXRlQ29udGV4dFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCAqbmdJZj1cIiFzaWRlYmFyTGVmdFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0PVwiYWRmLXZpZXdlci1zaWRlYmFyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8YWRmLXZpZXdlci1yZW5kZXIgKGNsb3NlKT1cIm9uQ2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbWVUeXBlXT1cIm1pbWVUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsZU5hbWVdPVwiZmlsZU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtibG9iRmlsZV09XCJibG9iRmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3VibWl0RmlsZSk9XCJvblN1Ym1pdEZpbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbG93ZWRFZGl0QWN0aW9uc109XCJhbGxvd2VkRWRpdEFjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxGaWxlXT1cInVybEZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc1NhdmluZyk9XCJhbGxvd05hdmlnYXRlID0gISRldmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RyYWNrc109XCJ0cmFja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aWV3ZXJUZW1wbGF0ZUV4dGVuc2lvbnNdPVwidmlld2VyRXh0ZW5zaW9ucyA/PyB2aWV3ZXJUZW1wbGF0ZUV4dGVuc2lvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub2RlSWRdPVwibm9kZUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tRXJyb3JdPVwiY3VzdG9tRXJyb3JcIiAvPlxuXG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|