@alfresco/adf-content-services 6.9.0-8619683521 → 6.9.0-8630447980
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/esm2020/lib/version-manager/version-list.component.mjs +6 -6
- package/fesm2015/adf-content-services.mjs +2487 -2487
- package/fesm2015/adf-content-services.mjs.map +1 -1
- package/fesm2020/adf-content-services.mjs +2513 -2513
- package/fesm2020/adf-content-services.mjs.map +1 -1
- package/lib/version-manager/version-list.component.d.ts +1 -1
- package/lib/version-manager/version-list.component.scss +9 -4
- package/package.json +3 -3
|
@@ -18,16 +18,16 @@ import { AlfrescoApiService } from '@alfresco/adf-core';
|
|
|
18
18
|
import { Component, Input, ViewEncapsulation, EventEmitter, Output, ViewChild } from '@angular/core';
|
|
19
19
|
import { VersionsApi, Node, NodesApi, ContentApi } from '@alfresco/js-api';
|
|
20
20
|
import { MatDialog } from '@angular/material/dialog';
|
|
21
|
-
import { ConfirmDialogComponent } from '../dialogs
|
|
21
|
+
import { ConfirmDialogComponent } from '../dialogs';
|
|
22
22
|
import { ContentVersionService } from './content-version.service';
|
|
23
|
-
import { ContentService } from '../common
|
|
23
|
+
import { ContentService } from '../common';
|
|
24
24
|
import { InfiniteScrollDatasource } from '../infinite-scroll-datasource';
|
|
25
25
|
import { from, Subject } from 'rxjs';
|
|
26
26
|
import { map, take, takeUntil } from 'rxjs/operators';
|
|
27
27
|
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
|
28
28
|
import * as i0 from "@angular/core";
|
|
29
29
|
import * as i1 from "@alfresco/adf-core";
|
|
30
|
-
import * as i2 from "../common
|
|
30
|
+
import * as i2 from "../common";
|
|
31
31
|
import * as i3 from "./content-version.service";
|
|
32
32
|
import * as i4 from "@angular/material/dialog";
|
|
33
33
|
import * as i5 from "@angular/common";
|
|
@@ -171,10 +171,10 @@ export class VersionListComponent {
|
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
VersionListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: VersionListComponent, deps: [{ token: i1.AlfrescoApiService }, { token: i2.ContentService }, { token: i3.ContentVersionService }, { token: i4.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
174
|
-
VersionListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: VersionListComponent, selector: "adf-version-list", inputs: { node: "node", showComments: "showComments", allowDownload: "allowDownload", allowViewVersions: "allowViewVersions", showActions: "showActions" }, outputs: { restored: "restored", deleted: "deleted", viewVersion: "viewVersion" }, host: { classAttribute: "adf-version-list" }, viewQueries: [{ propertyName: "viewport", first: true, predicate: ["viewport"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-progress-bar *ngIf=\"isLoading\" data-automation-id=\"version-history-loading-bar\" mode=\"indeterminate\"
|
|
174
|
+
VersionListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: VersionListComponent, selector: "adf-version-list", inputs: { node: "node", showComments: "showComments", allowDownload: "allowDownload", allowViewVersions: "allowViewVersions", showActions: "showActions" }, outputs: { restored: "restored", deleted: "deleted", viewVersion: "viewVersion" }, host: { classAttribute: "adf-version-list" }, viewQueries: [{ propertyName: "viewport", first: true, predicate: ["viewport"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-progress-bar *ngIf=\"isLoading\" data-automation-id=\"version-history-loading-bar\" mode=\"indeterminate\"\n color=\"accent\"></mat-progress-bar>\n<mat-list class=\"adf-version-list adf-version-list-element\" [hidden]=\"isLoading\">\n <cdk-virtual-scroll-viewport #viewport itemSize=\"88\" class=\"adf-version-list-viewport\">\n <mat-list-item class=\"adf-version-list-item\"\n *cdkVirtualFor=\"let version of versionsDataSource; let idx = index; let latestVersion = first\">\n <mat-icon mat-list-icon>insert_drive_file</mat-icon>\n <p mat-line class=\"adf-version-list-item-line adf-version-list-item-name\"\n [id]=\"'adf-version-list-item-name-' + version.entry.id\">{{ version.entry.name }}</p>\n <p mat-line>\n <span class=\"adf-version-list-item-line adf-version-list-item-version\"\n [id]=\"'adf-version-list-item-version-' + version.entry.id\">{{ version.entry.id }}</span> -\n <span class=\"adf-version-list-item-line adf-version-list-item-date\"\n [id]=\"'adf-version-list-item-date-' + version.entry.id\">{{ version.entry.modifiedAt | date }}</span>\n </p>\n <p mat-line\n [id]=\"'adf-version-list-item-comment-' + version.entry.id\"\n class=\"adf-version-list-item-comment\"\n *ngIf=\"showComments\"\n [title]=\"version.entry.versionComment\">\n {{ version.entry.versionComment }}\n </p>\n\n <div *ngIf=\"showActions\">\n <mat-menu [id]=\"'adf-version-list-action-menu-' + version.entry.id\"\n #versionMenu=\"matMenu\"\n yPosition=\"below\"\n xPosition=\"before\">\n <ng-container *adf-acs-version=\"'7'\">\n <button *ngIf=\"allowViewVersions\"\n [id]=\"'adf-version-list-action-view-' + version.entry.id\"\n mat-menu-item\n (click)=\"onViewVersion(version.entry.id)\">\n {{ 'ADF_VERSION_LIST.ACTIONS.VIEW' | translate }}\n </button>\n </ng-container>\n <button\n [id]=\"'adf-version-list-action-restore-' + version.entry.id\"\n [disabled]=\"!canUpdate() || latestVersion\"\n mat-menu-item\n (click)=\"restore(version.entry.id)\">\n {{ 'ADF_VERSION_LIST.ACTIONS.RESTORE' | translate }}\n </button>\n <button *ngIf=\"allowDownload\"\n [id]=\"'adf-version-list-action-download-' + version.entry.id\"\n mat-menu-item\n (click)=\"downloadVersion(version.entry.id)\">\n {{ 'ADF_VERSION_LIST.ACTIONS.DOWNLOAD' | translate }}\n </button>\n <button\n [disabled]=\"!canDelete()\"\n [id]=\"'adf-version-list-action-delete-' + version.entry.id\"\n (click)=\"deleteVersion(version.entry.id)\"\n mat-menu-item>\n {{ 'ADF_VERSION_LIST.ACTIONS.DELETE' | translate }}\n </button>\n </mat-menu>\n\n <button mat-icon-button\n [matMenuTriggerFor]=\"versionMenu\"\n [id]=\"'adf-version-list-action-menu-button-' + version.entry.id\"\n title=\"{{ 'ADF_VERSION_LIST.MANAGE_VERSION_OPTIONS' | translate }}\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n </mat-list-item>\n </cdk-virtual-scroll-viewport>\n</mat-list>\n", styles: [".adf-version-list-viewport{height:100%;overflow-x:hidden;display:flex}.adf-version-list-viewport :first-child{max-width:100%}.adf-version-list-item{border-bottom:1px solid var(--adf-theme-foreground-divider-color);width:100%}.adf-version-list-item-version{font-weight:700}.adf-version-list-item-date{opacity:.6}.adf-version-list-item-comment{width:100%;opacity:.5}@media screen and (max-width: 629px){.adf-version-list-item-comment{width:97%}}.adf-version-list-item-name,.adf-version-list-item-date{white-space:normal}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatList, selector: "mat-list, mat-action-list", inputs: ["disableRipple", "disabled"], exportAs: ["matList"] }, { kind: "component", type: i8.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["disableRipple", "disabled"], exportAs: ["matListItem"] }, { kind: "directive", type: i9.MatLine, selector: "[mat-line], [matLine]" }, { kind: "directive", type: i8.MatListIconCssMatStyler, selector: "[mat-list-icon], [matListIcon]" }, { kind: "component", type: i10.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i12.VersionCompatibilityDirective, selector: "[adf-acs-version]", inputs: ["adf-acs-version"] }, { kind: "directive", type: i13.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i13.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i13.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
175
175
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: VersionListComponent, decorators: [{
|
|
176
176
|
type: Component,
|
|
177
|
-
args: [{ selector: 'adf-version-list', encapsulation: ViewEncapsulation.None, host: { class: 'adf-version-list' }, template: "<mat-progress-bar *ngIf=\"isLoading\" data-automation-id=\"version-history-loading-bar\" mode=\"indeterminate\"
|
|
177
|
+
args: [{ selector: 'adf-version-list', encapsulation: ViewEncapsulation.None, host: { class: 'adf-version-list' }, template: "<mat-progress-bar *ngIf=\"isLoading\" data-automation-id=\"version-history-loading-bar\" mode=\"indeterminate\"\n color=\"accent\"></mat-progress-bar>\n<mat-list class=\"adf-version-list adf-version-list-element\" [hidden]=\"isLoading\">\n <cdk-virtual-scroll-viewport #viewport itemSize=\"88\" class=\"adf-version-list-viewport\">\n <mat-list-item class=\"adf-version-list-item\"\n *cdkVirtualFor=\"let version of versionsDataSource; let idx = index; let latestVersion = first\">\n <mat-icon mat-list-icon>insert_drive_file</mat-icon>\n <p mat-line class=\"adf-version-list-item-line adf-version-list-item-name\"\n [id]=\"'adf-version-list-item-name-' + version.entry.id\">{{ version.entry.name }}</p>\n <p mat-line>\n <span class=\"adf-version-list-item-line adf-version-list-item-version\"\n [id]=\"'adf-version-list-item-version-' + version.entry.id\">{{ version.entry.id }}</span> -\n <span class=\"adf-version-list-item-line adf-version-list-item-date\"\n [id]=\"'adf-version-list-item-date-' + version.entry.id\">{{ version.entry.modifiedAt | date }}</span>\n </p>\n <p mat-line\n [id]=\"'adf-version-list-item-comment-' + version.entry.id\"\n class=\"adf-version-list-item-comment\"\n *ngIf=\"showComments\"\n [title]=\"version.entry.versionComment\">\n {{ version.entry.versionComment }}\n </p>\n\n <div *ngIf=\"showActions\">\n <mat-menu [id]=\"'adf-version-list-action-menu-' + version.entry.id\"\n #versionMenu=\"matMenu\"\n yPosition=\"below\"\n xPosition=\"before\">\n <ng-container *adf-acs-version=\"'7'\">\n <button *ngIf=\"allowViewVersions\"\n [id]=\"'adf-version-list-action-view-' + version.entry.id\"\n mat-menu-item\n (click)=\"onViewVersion(version.entry.id)\">\n {{ 'ADF_VERSION_LIST.ACTIONS.VIEW' | translate }}\n </button>\n </ng-container>\n <button\n [id]=\"'adf-version-list-action-restore-' + version.entry.id\"\n [disabled]=\"!canUpdate() || latestVersion\"\n mat-menu-item\n (click)=\"restore(version.entry.id)\">\n {{ 'ADF_VERSION_LIST.ACTIONS.RESTORE' | translate }}\n </button>\n <button *ngIf=\"allowDownload\"\n [id]=\"'adf-version-list-action-download-' + version.entry.id\"\n mat-menu-item\n (click)=\"downloadVersion(version.entry.id)\">\n {{ 'ADF_VERSION_LIST.ACTIONS.DOWNLOAD' | translate }}\n </button>\n <button\n [disabled]=\"!canDelete()\"\n [id]=\"'adf-version-list-action-delete-' + version.entry.id\"\n (click)=\"deleteVersion(version.entry.id)\"\n mat-menu-item>\n {{ 'ADF_VERSION_LIST.ACTIONS.DELETE' | translate }}\n </button>\n </mat-menu>\n\n <button mat-icon-button\n [matMenuTriggerFor]=\"versionMenu\"\n [id]=\"'adf-version-list-action-menu-button-' + version.entry.id\"\n title=\"{{ 'ADF_VERSION_LIST.MANAGE_VERSION_OPTIONS' | translate }}\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n </mat-list-item>\n </cdk-virtual-scroll-viewport>\n</mat-list>\n", styles: [".adf-version-list-viewport{height:100%;overflow-x:hidden;display:flex}.adf-version-list-viewport :first-child{max-width:100%}.adf-version-list-item{border-bottom:1px solid var(--adf-theme-foreground-divider-color);width:100%}.adf-version-list-item-version{font-weight:700}.adf-version-list-item-date{opacity:.6}.adf-version-list-item-comment{width:100%;opacity:.5}@media screen and (max-width: 629px){.adf-version-list-item-comment{width:97%}}.adf-version-list-item-name,.adf-version-list-item-date{white-space:normal}\n"] }]
|
|
178
178
|
}], ctorParameters: function () { return [{ type: i1.AlfrescoApiService }, { type: i2.ContentService }, { type: i3.ContentVersionService }, { type: i4.MatDialog }]; }, propDecorators: { node: [{
|
|
179
179
|
type: Input
|
|
180
180
|
}], showComments: [{
|
|
@@ -195,4 +195,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
|
|
|
195
195
|
type: ViewChild,
|
|
196
196
|
args: ['viewport']
|
|
197
197
|
}] } });
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvdmVyc2lvbi1tYW5hZ2VyL3ZlcnNpb24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3ZlcnNpb24tbWFuYWdlci92ZXJzaW9uLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFnQixRQUFRLEVBQWEsVUFBVSxFQUFzQixNQUFNLGtCQUFrQixDQUFDO0FBQ3hILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLElBQUksRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7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aUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFO2tNQTRCbkMsSUFBSTtzQkFESCxLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFLTixRQUFRO3NCQURQLE1BQU07Z0JBS1AsT0FBTztzQkFETixNQUFNO2dCQUtQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxRQUFRO3NCQURQLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjMgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQWxmcmVzY29BcGlTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24sIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWZXJzaW9uc0FwaSwgTm9kZSwgVmVyc2lvbkVudHJ5LCBOb2Rlc0FwaSwgTm9kZUVudHJ5LCBDb250ZW50QXBpLCBDb250ZW50UGFnaW5nUXVlcnkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZGlhbG9ncy9jb25maXJtLmRpYWxvZyc7XG5pbXBvcnQgeyBDb250ZW50VmVyc2lvblNlcnZpY2UgfSBmcm9tICcuL2NvbnRlbnQtdmVyc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3NlcnZpY2VzL2NvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBJbmZpbml0ZVNjcm9sbERhdGFzb3VyY2UgfSBmcm9tICcuLi9pbmZpbml0ZS1zY3JvbGwtZGF0YXNvdXJjZSc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuXG5leHBvcnQgY2xhc3MgVmVyc2lvbkxpc3REYXRhU291cmNlIGV4dGVuZHMgSW5maW5pdGVTY3JvbGxEYXRhc291cmNlPFZlcnNpb25FbnRyeT4ge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdmVyc2lvbnNBcGk6IFZlcnNpb25zQXBpLCBwcml2YXRlIG5vZGU6IE5vZGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBnZXROZXh0QmF0Y2gocGFnaW5nT3B0aW9uczogQ29udGVudFBhZ2luZ1F1ZXJ5KTogT2JzZXJ2YWJsZTxWZXJzaW9uRW50cnlbXT4ge1xuICAgICAgICByZXR1cm4gZnJvbSh0aGlzLnZlcnNpb25zQXBpLmxpc3RWZXJzaW9uSGlzdG9yeSh0aGlzLm5vZGUuaWQsIHBhZ2luZ09wdGlvbnMpKS5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIG1hcCgodmVyc2lvblBhZ2luZykgPT4gdmVyc2lvblBhZ2luZy5saXN0LmVudHJpZXMpXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi12ZXJzaW9uLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi92ZXJzaW9uLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3ZlcnNpb24tbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDogeyBjbGFzczogJ2FkZi12ZXJzaW9uLWxpc3QnIH1cbn0pXG5leHBvcnQgY2xhc3MgVmVyc2lvbkxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgX2NvbnRlbnRBcGk6IENvbnRlbnRBcGk7XG4gICAgZ2V0IGNvbnRlbnRBcGkoKTogQ29udGVudEFwaSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRBcGkgPSB0aGlzLl9jb250ZW50QXBpID8/IG5ldyBDb250ZW50QXBpKHRoaXMuYWxmcmVzY29BcGkuZ2V0SW5zdGFuY2UoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50QXBpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ZlcnNpb25zQXBpOiBWZXJzaW9uc0FwaTtcbiAgICBnZXQgdmVyc2lvbnNBcGkoKTogVmVyc2lvbnNBcGkge1xuICAgICAgICB0aGlzLl92ZXJzaW9uc0FwaSA9IHRoaXMuX3ZlcnNpb25zQXBpID8/IG5ldyBWZXJzaW9uc0FwaSh0aGlzLmFsZnJlc2NvQXBpLmdldEluc3RhbmNlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5fdmVyc2lvbnNBcGk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbm9kZXNBcGk6IE5vZGVzQXBpO1xuICAgIGdldCBub2Rlc0FwaSgpOiBOb2Rlc0FwaSB7XG4gICAgICAgIHRoaXMuX25vZGVzQXBpID0gdGhpcy5fbm9kZXNBcGkgPz8gbmV3IE5vZGVzQXBpKHRoaXMuYWxmcmVzY29BcGkuZ2V0SW5zdGFuY2UoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc0FwaTtcbiAgICB9XG5cbiAgICB2ZXJzaW9uc0RhdGFTb3VyY2U6IFZlcnNpb25MaXN0RGF0YVNvdXJjZTtcbiAgICBsYXRlc3RWZXJzaW9uOiBWZXJzaW9uRW50cnk7XG4gICAgaXNMb2FkaW5nID0gdHJ1ZTtcblxuICAgIC8qKiBUaGUgdGFyZ2V0IG5vZGUuICovXG4gICAgQElucHV0KClcbiAgICBub2RlOiBOb2RlO1xuXG4gICAgLyoqIFRvZ2dsZXMgc2hvd2luZy9oaWRpbmcgb2YgY29tbWVudHMgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dDb21tZW50cyA9IHRydWU7XG5cbiAgICAvKiogRW5hYmxlL2Rpc2FibGUgZG93bmxvYWRpbmcgYSB2ZXJzaW9uIG9mIHRoZSBjdXJyZW50IG5vZGUuICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd0Rvd25sb2FkID0gdHJ1ZTtcblxuICAgIC8qKiBFbmFibGUvZGlzYWJsZSB2aWV3aW5nIGEgdmVyc2lvbiBvZiB0aGUgY3VycmVudCBub2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWxsb3dWaWV3VmVyc2lvbnMgPSB0cnVlO1xuXG4gICAgLyoqIFRvZ2dsZXMgc2hvd2luZy9oaWRpbmcgb2YgdmVyc2lvbiBhY3Rpb25zICovXG4gICAgQElucHV0KClcbiAgICBzaG93QWN0aW9ucyA9IHRydWU7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgdmVyc2lvbiBpcyByZXN0b3JlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlc3RvcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxOb2RlPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhIHZlcnNpb24gaXMgZGVsZXRlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGRlbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5vZGU+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHZpZXdpbmcgYSB2ZXJzaW9uICovXG4gICAgQE91dHB1dCgpXG4gICAgdmlld1ZlcnNpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3ZpZXdwb3J0JylcbiAgICB2aWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWxmcmVzY29BcGk6IEFsZnJlc2NvQXBpU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50U2VydmljZTogQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29udGVudFZlcnNpb25TZXJ2aWNlOiBDb250ZW50VmVyc2lvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2dcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy52ZXJzaW9uc0RhdGFTb3VyY2UgPSBuZXcgVmVyc2lvbkxpc3REYXRhU291cmNlKHRoaXMudmVyc2lvbnNBcGksIHRoaXMubm9kZSk7XG4gICAgICAgIHRoaXMudmVyc2lvbnNEYXRhU291cmNlLmlzTG9hZGluZy5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGlzTG9hZGluZykgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBpc0xvYWRpbmc7XG4gICAgICAgICAgICB0aGlzLmxhdGVzdFZlcnNpb24gPSB0aGlzLnZlcnNpb25zRGF0YVNvdXJjZS5maXJzdEl0ZW07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBpZiAodGhpcy52ZXJzaW9uc0RhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZFZlcnNpb25IaXN0b3J5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgY2FuVXBkYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50U2VydmljZS5oYXNBbGxvd2FibGVPcGVyYXRpb25zKHRoaXMubm9kZSwgJ3VwZGF0ZScpICYmIHRoaXMudmVyc2lvbnNEYXRhU291cmNlLml0ZW1zQ291bnQgPiAxO1xuICAgIH1cblxuICAgIGNhbkRlbGV0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudFNlcnZpY2UuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucyh0aGlzLm5vZGUsICdkZWxldGUnKSAmJiB0aGlzLnZlcnNpb25zRGF0YVNvdXJjZS5pdGVtc0NvdW50ID4gMTtcbiAgICB9XG5cbiAgICByZXN0b3JlKHZlcnNpb25JZDogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmNhblVwZGF0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnZlcnNpb25zQXBpXG4gICAgICAgICAgICAgICAgLnJldmVydFZlcnNpb24odGhpcy5ub2RlLmlkLCB2ZXJzaW9uSWQsIHsgbWFqb3JWZXJzaW9uOiB0cnVlLCBjb21tZW50OiAnJyB9KVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMubm9kZXNBcGkuZ2V0Tm9kZSh0aGlzLm5vZGUuaWQsIHsgaW5jbHVkZTogWydwZXJtaXNzaW9ucycsICdwYXRoJywgJ2lzRmF2b3JpdGUnLCAnYWxsb3dhYmxlT3BlcmF0aW9ucyddIH0pKVxuICAgICAgICAgICAgICAgIC50aGVuKChub2RlKSA9PiB0aGlzLm9uVmVyc2lvblJlc3RvcmVkKG5vZGUpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVmlld1ZlcnNpb24odmVyc2lvbklkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy52aWV3VmVyc2lvbi5lbWl0KHZlcnNpb25JZCk7XG4gICAgfVxuXG4gICAgbG9hZFZlcnNpb25IaXN0b3J5KCkge1xuICAgICAgICB0aGlzLnZpZXdwb3J0LnNjcm9sbFRvSW5kZXgoMCk7XG4gICAgICAgIHRoaXMudmVyc2lvbnNEYXRhU291cmNlLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgZG93bmxvYWRWZXJzaW9uKHZlcnNpb25JZDogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmFsbG93RG93bmxvYWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFZlcnNpb25TZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldFZlcnNpb25Db250ZW50VXJsKHRoaXMubm9kZS5pZCwgdmVyc2lvbklkLCB0cnVlKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZlcnNpb25Eb3dubG9hZFVybCkgPT4gdGhpcy5kb3dubG9hZENvbnRlbnQodmVyc2lvbkRvd25sb2FkVXJsKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZWxldGVWZXJzaW9uKHZlcnNpb25JZDogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmNhblVwZGF0ZSgpKSB7XG4gICAgICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnQURGX1ZFUlNJT05fTElTVC5DT05GSVJNX0RFTEVURS5USVRMRScsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdBREZfVkVSU0lPTl9MSVNULkNPTkZJUk1fREVMRVRFLk1FU1NBR0UnLFxuICAgICAgICAgICAgICAgICAgICB5ZXNMYWJlbDogJ0FERl9WRVJTSU9OX0xJU1QuQ09ORklSTV9ERUxFVEUuWUVTX0xBQkVMJyxcbiAgICAgICAgICAgICAgICAgICAgbm9MYWJlbDogJ0FERl9WRVJTSU9OX0xJU1QuQ09ORklSTV9ERUxFVEUuTk9fTEFCRUwnXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogJzI1MHB4J1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRpYWxvZ1JlZlxuICAgICAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmVyc2lvbnNBcGkuZGVsZXRlVmVyc2lvbih0aGlzLm5vZGUuaWQsIHZlcnNpb25JZCkudGhlbigoKSA9PiB0aGlzLm9uVmVyc2lvbkRlbGV0ZWQodGhpcy5ub2RlKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVmVyc2lvbkRlbGV0ZWQobm9kZTogYW55KSB7XG4gICAgICAgIHRoaXMubG9hZFZlcnNpb25IaXN0b3J5KCk7XG4gICAgICAgIHRoaXMuZGVsZXRlZC5lbWl0KG5vZGUpO1xuICAgIH1cblxuICAgIG9uVmVyc2lvblJlc3RvcmVkKG5vZGU6IE5vZGVFbnRyeSkge1xuICAgICAgICB0aGlzLmxvYWRWZXJzaW9uSGlzdG9yeSgpO1xuICAgICAgICB0aGlzLnJlc3RvcmVkLmVtaXQobm9kZT8uZW50cnkpO1xuICAgIH1cblxuICAgIGRvd25sb2FkQ29udGVudCh1cmw6IHN0cmluZykge1xuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXG4gICAgICAgICAgICBsaW5rLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG5cbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG1hdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCJpc0xvYWRpbmdcIiBkYXRhLWF1dG9tYXRpb24taWQ9XCJ2ZXJzaW9uLWhpc3RvcnktbG9hZGluZy1iYXJcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIGNvbG9yPVwiYWNjZW50XCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuPG1hdC1saXN0IGNsYXNzPVwiYWRmLXZlcnNpb24tbGlzdCBhZGYtdmVyc2lvbi1saXN0LWVsZW1lbnRcIiBbaGlkZGVuXT1cImlzTG9hZGluZ1wiPlxuICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgI3ZpZXdwb3J0IGl0ZW1TaXplPVwiODhcIiBjbGFzcz1cImFkZi12ZXJzaW9uLWxpc3Qtdmlld3BvcnRcIj5cbiAgICAgICAgPG1hdC1saXN0LWl0ZW0gY2xhc3M9XCJhZGYtdmVyc2lvbi1saXN0LWl0ZW1cIiAqY2RrVmlydHVhbEZvcj1cImxldCB2ZXJzaW9uIG9mIHZlcnNpb25zRGF0YVNvdXJjZTsgbGV0IGlkeCA9IGluZGV4OyBsZXQgbGF0ZXN0VmVyc2lvbiA9IGZpcnN0XCI+XG4gICAgICAgICAgICA8bWF0LWljb24gbWF0LWxpc3QtaWNvbj5pbnNlcnRfZHJpdmVfZmlsZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8cCBtYXQtbGluZSBjbGFzcz1cImFkZi12ZXJzaW9uLWxpc3QtaXRlbS1saW5lIGFkZi12ZXJzaW9uLWxpc3QtaXRlbS1uYW1lXCIgW2lkXT1cIidhZGYtdmVyc2lvbi1saXN0LWl0ZW0tbmFtZS0nICsgdmVyc2lvbi5lbnRyeS5pZFwiID57e3ZlcnNpb24uZW50cnkubmFtZX19PC9wPlxuICAgICAgICAgICAgPHAgbWF0LWxpbmU+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGYtdmVyc2lvbi1saXN0LWl0ZW0tbGluZSBhZGYtdmVyc2lvbi1saXN0LWl0ZW0tdmVyc2lvblwiIFtpZF09XCInYWRmLXZlcnNpb24tbGlzdC1pdGVtLXZlcnNpb24tJyArIHZlcnNpb24uZW50cnkuaWRcIiA+e3t2ZXJzaW9uLmVudHJ5LmlkfX08L3NwYW4+IC1cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZi12ZXJzaW9uLWxpc3QtaXRlbS1saW5lIGFkZi12ZXJzaW9uLWxpc3QtaXRlbS1kYXRlXCIgW2lkXT1cIidhZGYtdmVyc2lvbi1saXN0LWl0ZW0tZGF0ZS0nICsgdmVyc2lvbi5lbnRyeS5pZFwiID57e3ZlcnNpb24uZW50cnkubW9kaWZpZWRBdCB8IGRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgbWF0LWxpbmVcbiAgICAgICAgICAgICAgICBbaWRdPVwiJ2FkZi12ZXJzaW9uLWxpc3QtaXRlbS1jb21tZW50LScgKyB2ZXJzaW9uLmVudHJ5LmlkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi12ZXJzaW9uLWxpc3QtaXRlbS1jb21tZW50XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dDb21tZW50c1wiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cInZlcnNpb24uZW50cnkudmVyc2lvbkNvbW1lbnRcIj5cbiAgICAgICAgICAgICAgICB7eyB2ZXJzaW9uLmVudHJ5LnZlcnNpb25Db21tZW50IH19XG4gICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93QWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxtYXQtbWVudSBbaWRdPVwiJ2FkZi12ZXJzaW9uLWxpc3QtYWN0aW9uLW1lbnUtJyArIHZlcnNpb24uZW50cnkuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAjdmVyc2lvbk1lbnU9XCJtYXRNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeVBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqYWRmLWFjcy12ZXJzaW9uPVwiJzcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWxsb3dWaWV3VmVyc2lvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2FkZi12ZXJzaW9uLWxpc3QtYWN0aW9uLXZpZXctJyArIHZlcnNpb24uZW50cnkuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblZpZXdWZXJzaW9uKHZlcnNpb24uZW50cnkuaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0FERl9WRVJTSU9OX0xJU1QuQUNUSU9OUy5WSUVXJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2FkZi12ZXJzaW9uLWxpc3QtYWN0aW9uLXJlc3RvcmUtJyArIHZlcnNpb24uZW50cnkuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5VcGRhdGUoKSB8fCBsYXRlc3RWZXJzaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXN0b3JlKHZlcnNpb24uZW50cnkuaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnQURGX1ZFUlNJT05fTElTVC5BQ1RJT05TLlJFU1RPUkUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWxsb3dEb3dubG9hZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidhZGYtdmVyc2lvbi1saXN0LWFjdGlvbi1kb3dubG9hZC0nICsgdmVyc2lvbi5lbnRyeS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZFZlcnNpb24odmVyc2lvbi5lbnRyeS5pZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdBREZfVkVSU0lPTl9MSVNULkFDVElPTlMuRE9XTkxPQUQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkRlbGV0ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInYWRmLXZlcnNpb24tbGlzdC1hY3Rpb24tZGVsZXRlLScgKyB2ZXJzaW9uLmVudHJ5LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVWZXJzaW9uKHZlcnNpb24uZW50cnkuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnQURGX1ZFUlNJT05fTElTVC5BQ1RJT05TLkRFTEVURScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cblxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwidmVyc2lvbk1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidhZGYtdmVyc2lvbi1saXN0LWFjdGlvbi1tZW51LWJ1dHRvbi0nICsgdmVyc2lvbi5lbnRyeS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdBREZfVkVSU0lPTl9MSVNULk1BTkFHRV9WRVJTSU9OX09QVElPTlMnIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbjwvbWF0LWxpc3Q+XG4iXX0=
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb250ZW50LXNlcnZpY2VzL3NyYy9saWIvdmVyc2lvbi1tYW5hZ2VyL3ZlcnNpb24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3ZlcnNpb24tbWFuYWdlci92ZXJzaW9uLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFnQixRQUFRLEVBQWEsVUFBVSxFQUFzQixNQUFNLGtCQUFrQixDQUFDO0FBQ3hILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsSUFBSSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7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Q0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFO2tNQTRCbkMsSUFBSTtzQkFESCxLQUFLO2dCQUtOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFLTixRQUFRO3NCQURQLE1BQU07Z0JBS1AsT0FBTztzQkFETixNQUFNO2dCQUtQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxRQUFRO3NCQURQLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjMgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQWxmcmVzY29BcGlTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24sIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBPbkluaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWZXJzaW9uc0FwaSwgTm9kZSwgVmVyc2lvbkVudHJ5LCBOb2Rlc0FwaSwgTm9kZUVudHJ5LCBDb250ZW50QXBpLCBDb250ZW50UGFnaW5nUXVlcnkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZGlhbG9ncyc7XG5pbXBvcnQgeyBDb250ZW50VmVyc2lvblNlcnZpY2UgfSBmcm9tICcuL2NvbnRlbnQtdmVyc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IEluZmluaXRlU2Nyb2xsRGF0YXNvdXJjZSB9IGZyb20gJy4uL2luZmluaXRlLXNjcm9sbC1kYXRhc291cmNlJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5cbmV4cG9ydCBjbGFzcyBWZXJzaW9uTGlzdERhdGFTb3VyY2UgZXh0ZW5kcyBJbmZpbml0ZVNjcm9sbERhdGFzb3VyY2U8VmVyc2lvbkVudHJ5PiB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB2ZXJzaW9uc0FwaTogVmVyc2lvbnNBcGksIHByaXZhdGUgbm9kZTogTm9kZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIGdldE5leHRCYXRjaChwYWdpbmdPcHRpb25zOiBDb250ZW50UGFnaW5nUXVlcnkpOiBPYnNlcnZhYmxlPFZlcnNpb25FbnRyeVtdPiB7XG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMudmVyc2lvbnNBcGkubGlzdFZlcnNpb25IaXN0b3J5KHRoaXMubm9kZS5pZCwgcGFnaW5nT3B0aW9ucykpLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgbWFwKCh2ZXJzaW9uUGFnaW5nKSA9PiB2ZXJzaW9uUGFnaW5nLmxpc3QuZW50cmllcylcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLXZlcnNpb24tbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3ZlcnNpb24tbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdmVyc2lvbi1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7IGNsYXNzOiAnYWRmLXZlcnNpb24tbGlzdCcgfVxufSlcbmV4cG9ydCBjbGFzcyBWZXJzaW9uTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBfY29udGVudEFwaTogQ29udGVudEFwaTtcbiAgICBnZXQgY29udGVudEFwaSgpOiBDb250ZW50QXBpIHtcbiAgICAgICAgdGhpcy5fY29udGVudEFwaSA9IHRoaXMuX2NvbnRlbnRBcGkgPz8gbmV3IENvbnRlbnRBcGkodGhpcy5hbGZyZXNjb0FwaS5nZXRJbnN0YW5jZSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRBcGk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdmVyc2lvbnNBcGk6IFZlcnNpb25zQXBpO1xuICAgIGdldCB2ZXJzaW9uc0FwaSgpOiBWZXJzaW9uc0FwaSB7XG4gICAgICAgIHRoaXMuX3ZlcnNpb25zQXBpID0gdGhpcy5fdmVyc2lvbnNBcGkgPz8gbmV3IFZlcnNpb25zQXBpKHRoaXMuYWxmcmVzY29BcGkuZ2V0SW5zdGFuY2UoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLl92ZXJzaW9uc0FwaTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9ub2Rlc0FwaTogTm9kZXNBcGk7XG4gICAgZ2V0IG5vZGVzQXBpKCk6IE5vZGVzQXBpIHtcbiAgICAgICAgdGhpcy5fbm9kZXNBcGkgPSB0aGlzLl9ub2Rlc0FwaSA/PyBuZXcgTm9kZXNBcGkodGhpcy5hbGZyZXNjb0FwaS5nZXRJbnN0YW5jZSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzQXBpO1xuICAgIH1cblxuICAgIHZlcnNpb25zRGF0YVNvdXJjZTogVmVyc2lvbkxpc3REYXRhU291cmNlO1xuICAgIGxhdGVzdFZlcnNpb246IFZlcnNpb25FbnRyeTtcbiAgICBpc0xvYWRpbmcgPSB0cnVlO1xuXG4gICAgLyoqIFRoZSB0YXJnZXQgbm9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5vZGU6IE5vZGU7XG5cbiAgICAvKiogVG9nZ2xlcyBzaG93aW5nL2hpZGluZyBvZiBjb21tZW50cyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0NvbW1lbnRzID0gdHJ1ZTtcblxuICAgIC8qKiBFbmFibGUvZGlzYWJsZSBkb3dubG9hZGluZyBhIHZlcnNpb24gb2YgdGhlIGN1cnJlbnQgbm9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFsbG93RG93bmxvYWQgPSB0cnVlO1xuXG4gICAgLyoqIEVuYWJsZS9kaXNhYmxlIHZpZXdpbmcgYSB2ZXJzaW9uIG9mIHRoZSBjdXJyZW50IG5vZGUuICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd1ZpZXdWZXJzaW9ucyA9IHRydWU7XG5cbiAgICAvKiogVG9nZ2xlcyBzaG93aW5nL2hpZGluZyBvZiB2ZXJzaW9uIGFjdGlvbnMgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dBY3Rpb25zID0gdHJ1ZTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSB2ZXJzaW9uIGlzIHJlc3RvcmVkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVzdG9yZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE5vZGU+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgdmVyc2lvbiBpcyBkZWxldGVkICovXG4gICAgQE91dHB1dCgpXG4gICAgZGVsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Tm9kZT4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdmlld2luZyBhIHZlcnNpb24gKi9cbiAgICBAT3V0cHV0KClcbiAgICB2aWV3VmVyc2lvbiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgQFZpZXdDaGlsZCgndmlld3BvcnQnKVxuICAgIHZpZXdwb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhbGZyZXNjb0FwaTogQWxmcmVzY29BcGlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnRlbnRTZXJ2aWNlOiBDb250ZW50U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50VmVyc2lvblNlcnZpY2U6IENvbnRlbnRWZXJzaW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZ1xuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnZlcnNpb25zRGF0YVNvdXJjZSA9IG5ldyBWZXJzaW9uTGlzdERhdGFTb3VyY2UodGhpcy52ZXJzaW9uc0FwaSwgdGhpcy5ub2RlKTtcbiAgICAgICAgdGhpcy52ZXJzaW9uc0RhdGFTb3VyY2UuaXNMb2FkaW5nLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpLnN1YnNjcmliZSgoaXNMb2FkaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGlzTG9hZGluZztcbiAgICAgICAgICAgIHRoaXMubGF0ZXN0VmVyc2lvbiA9IHRoaXMudmVyc2lvbnNEYXRhU291cmNlLmZpcnN0SXRlbTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGlmICh0aGlzLnZlcnNpb25zRGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkVmVyc2lvbkhpc3RvcnkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm9uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBjYW5VcGRhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRTZXJ2aWNlLmhhc0FsbG93YWJsZU9wZXJhdGlvbnModGhpcy5ub2RlLCAndXBkYXRlJykgJiYgdGhpcy52ZXJzaW9uc0RhdGFTb3VyY2UuaXRlbXNDb3VudCA+IDE7XG4gICAgfVxuXG4gICAgY2FuRGVsZXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50U2VydmljZS5oYXNBbGxvd2FibGVPcGVyYXRpb25zKHRoaXMubm9kZSwgJ2RlbGV0ZScpICYmIHRoaXMudmVyc2lvbnNEYXRhU291cmNlLml0ZW1zQ291bnQgPiAxO1xuICAgIH1cblxuICAgIHJlc3RvcmUodmVyc2lvbklkOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuY2FuVXBkYXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMudmVyc2lvbnNBcGlcbiAgICAgICAgICAgICAgICAucmV2ZXJ0VmVyc2lvbih0aGlzLm5vZGUuaWQsIHZlcnNpb25JZCwgeyBtYWpvclZlcnNpb246IHRydWUsIGNvbW1lbnQ6ICcnIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5ub2Rlc0FwaS5nZXROb2RlKHRoaXMubm9kZS5pZCwgeyBpbmNsdWRlOiBbJ3Blcm1pc3Npb25zJywgJ3BhdGgnLCAnaXNGYXZvcml0ZScsICdhbGxvd2FibGVPcGVyYXRpb25zJ10gfSkpXG4gICAgICAgICAgICAgICAgLnRoZW4oKG5vZGUpID0+IHRoaXMub25WZXJzaW9uUmVzdG9yZWQobm9kZSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25WaWV3VmVyc2lvbih2ZXJzaW9uSWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnZpZXdWZXJzaW9uLmVtaXQodmVyc2lvbklkKTtcbiAgICB9XG5cbiAgICBsb2FkVmVyc2lvbkhpc3RvcnkoKSB7XG4gICAgICAgIHRoaXMudmlld3BvcnQuc2Nyb2xsVG9JbmRleCgwKTtcbiAgICAgICAgdGhpcy52ZXJzaW9uc0RhdGFTb3VyY2UucmVzZXQoKTtcbiAgICB9XG5cbiAgICBkb3dubG9hZFZlcnNpb24odmVyc2lvbklkOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dEb3dubG9hZCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50VmVyc2lvblNlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0VmVyc2lvbkNvbnRlbnRVcmwodGhpcy5ub2RlLmlkLCB2ZXJzaW9uSWQsIHRydWUpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodmVyc2lvbkRvd25sb2FkVXJsKSA9PiB0aGlzLmRvd25sb2FkQ29udGVudCh2ZXJzaW9uRG93bmxvYWRVcmwpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlbGV0ZVZlcnNpb24odmVyc2lvbklkOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuY2FuVXBkYXRlKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdBREZfVkVSU0lPTl9MSVNULkNPTkZJUk1fREVMRVRFLlRJVExFJyxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ0FERl9WRVJTSU9OX0xJU1QuQ09ORklSTV9ERUxFVEUuTUVTU0FHRScsXG4gICAgICAgICAgICAgICAgICAgIHllc0xhYmVsOiAnQURGX1ZFUlNJT05fTElTVC5DT05GSVJNX0RFTEVURS5ZRVNfTEFCRUwnLFxuICAgICAgICAgICAgICAgICAgICBub0xhYmVsOiAnQURGX1ZFUlNJT05fTElTVC5DT05GSVJNX0RFTEVURS5OT19MQUJFTCdcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiAnMjUwcHgnXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZGlhbG9nUmVmXG4gICAgICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52ZXJzaW9uc0FwaS5kZWxldGVWZXJzaW9uKHRoaXMubm9kZS5pZCwgdmVyc2lvbklkKS50aGVuKCgpID0+IHRoaXMub25WZXJzaW9uRGVsZXRlZCh0aGlzLm5vZGUpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25WZXJzaW9uRGVsZXRlZChub2RlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5sb2FkVmVyc2lvbkhpc3RvcnkoKTtcbiAgICAgICAgdGhpcy5kZWxldGVkLmVtaXQobm9kZSk7XG4gICAgfVxuXG4gICAgb25WZXJzaW9uUmVzdG9yZWQobm9kZTogTm9kZUVudHJ5KSB7XG4gICAgICAgIHRoaXMubG9hZFZlcnNpb25IaXN0b3J5KCk7XG4gICAgICAgIHRoaXMucmVzdG9yZWQuZW1pdChub2RlPy5lbnRyeSk7XG4gICAgfVxuXG4gICAgZG93bmxvYWRDb250ZW50KHVybDogc3RyaW5nKSB7XG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG5cbiAgICAgICAgICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHVybDtcblxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImlzTG9hZGluZ1wiIGRhdGEtYXV0b21hdGlvbi1pZD1cInZlcnNpb24taGlzdG9yeS1sb2FkaW5nLWJhclwiIG1vZGU9XCJpbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYWNjZW50XCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuPG1hdC1saXN0IGNsYXNzPVwiYWRmLXZlcnNpb24tbGlzdCBhZGYtdmVyc2lvbi1saXN0LWVsZW1lbnRcIiBbaGlkZGVuXT1cImlzTG9hZGluZ1wiPlxuICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgI3ZpZXdwb3J0IGl0ZW1TaXplPVwiODhcIiBjbGFzcz1cImFkZi12ZXJzaW9uLWxpc3Qtdmlld3BvcnRcIj5cbiAgICAgICAgPG1hdC1saXN0LWl0ZW0gY2xhc3M9XCJhZGYtdmVyc2lvbi1saXN0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCB2ZXJzaW9uIG9mIHZlcnNpb25zRGF0YVNvdXJjZTsgbGV0IGlkeCA9IGluZGV4OyBsZXQgbGF0ZXN0VmVyc2lvbiA9IGZpcnN0XCI+XG4gICAgICAgICAgICA8bWF0LWljb24gbWF0LWxpc3QtaWNvbj5pbnNlcnRfZHJpdmVfZmlsZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8cCBtYXQtbGluZSBjbGFzcz1cImFkZi12ZXJzaW9uLWxpc3QtaXRlbS1saW5lIGFkZi12ZXJzaW9uLWxpc3QtaXRlbS1uYW1lXCJcbiAgICAgICAgICAgICAgIFtpZF09XCInYWRmLXZlcnNpb24tbGlzdC1pdGVtLW5hbWUtJyArIHZlcnNpb24uZW50cnkuaWRcIj57eyB2ZXJzaW9uLmVudHJ5Lm5hbWUgfX08L3A+XG4gICAgICAgICAgICA8cCBtYXQtbGluZT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZi12ZXJzaW9uLWxpc3QtaXRlbS1saW5lIGFkZi12ZXJzaW9uLWxpc3QtaXRlbS12ZXJzaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2FkZi12ZXJzaW9uLWxpc3QtaXRlbS12ZXJzaW9uLScgKyB2ZXJzaW9uLmVudHJ5LmlkXCI+e3sgdmVyc2lvbi5lbnRyeS5pZCB9fTwvc3Bhbj4gLVxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWRmLXZlcnNpb24tbGlzdC1pdGVtLWxpbmUgYWRmLXZlcnNpb24tbGlzdC1pdGVtLWRhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInYWRmLXZlcnNpb24tbGlzdC1pdGVtLWRhdGUtJyArIHZlcnNpb24uZW50cnkuaWRcIj57eyB2ZXJzaW9uLmVudHJ5Lm1vZGlmaWVkQXQgfCBkYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHAgbWF0LWxpbmVcbiAgICAgICAgICAgICAgIFtpZF09XCInYWRmLXZlcnNpb24tbGlzdC1pdGVtLWNvbW1lbnQtJyArIHZlcnNpb24uZW50cnkuaWRcIlxuICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtdmVyc2lvbi1saXN0LWl0ZW0tY29tbWVudFwiXG4gICAgICAgICAgICAgICAqbmdJZj1cInNob3dDb21tZW50c1wiXG4gICAgICAgICAgICAgICBbdGl0bGVdPVwidmVyc2lvbi5lbnRyeS52ZXJzaW9uQ29tbWVudFwiPlxuICAgICAgICAgICAgICAgIHt7IHZlcnNpb24uZW50cnkudmVyc2lvbkNvbW1lbnQgfX1cbiAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dBY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1tZW51IFtpZF09XCInYWRmLXZlcnNpb24tbGlzdC1hY3Rpb24tbWVudS0nICsgdmVyc2lvbi5lbnRyeS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICN2ZXJzaW9uTWVudT1cIm1hdE1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB5UG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHhQb3NpdGlvbj1cImJlZm9yZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICphZGYtYWNzLXZlcnNpb249XCInNydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhbGxvd1ZpZXdWZXJzaW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInYWRmLXZlcnNpb24tbGlzdC1hY3Rpb24tdmlldy0nICsgdmVyc2lvbi5lbnRyeS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVmlld1ZlcnNpb24odmVyc2lvbi5lbnRyeS5pZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnQURGX1ZFUlNJT05fTElTVC5BQ1RJT05TLlZJRVcnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInYWRmLXZlcnNpb24tbGlzdC1hY3Rpb24tcmVzdG9yZS0nICsgdmVyc2lvbi5lbnRyeS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNhblVwZGF0ZSgpIHx8IGxhdGVzdFZlcnNpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlc3RvcmUodmVyc2lvbi5lbnRyeS5pZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdBREZfVkVSU0lPTl9MSVNULkFDVElPTlMuUkVTVE9SRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhbGxvd0Rvd25sb2FkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2FkZi12ZXJzaW9uLWxpc3QtYWN0aW9uLWRvd25sb2FkLScgKyB2ZXJzaW9uLmVudHJ5LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkVmVyc2lvbih2ZXJzaW9uLmVudHJ5LmlkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0FERl9WRVJTSU9OX0xJU1QuQUNUSU9OUy5ET1dOTE9BRCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuRGVsZXRlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidhZGYtdmVyc2lvbi1saXN0LWFjdGlvbi1kZWxldGUtJyArIHZlcnNpb24uZW50cnkuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVZlcnNpb24odmVyc2lvbi5lbnRyeS5pZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdBREZfVkVSU0lPTl9MSVNULkFDVElPTlMuREVMRVRFJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJ2ZXJzaW9uTWVudVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2FkZi12ZXJzaW9uLWxpc3QtYWN0aW9uLW1lbnUtYnV0dG9uLScgKyB2ZXJzaW9uLmVudHJ5LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WRVJTSU9OX0xJU1QuTUFOQUdFX1ZFUlNJT05fT1BUSU9OUycgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuPC9tYXQtbGlzdD5cbiJdfQ==
|