@lenne.tech/ng-base 16.1.0 → 17.0.0
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/base-prototype/pages/register/register.component.d.ts +3 -2
- package/esm2022/base-cms/base-cms-routing.module.mjs +6 -7
- package/esm2022/base-cms/base-cms.module.mjs +6 -7
- package/esm2022/base-cms/pages/base-cms/base-cms.component.mjs +7 -8
- package/esm2022/base-components/base-components.module.mjs +6 -7
- package/esm2022/base-components/components/breadcrumb/breadcrumb.component.mjs +6 -7
- package/esm2022/base-components/components/change-password/change-password.component.mjs +7 -8
- package/esm2022/base-components/components/checkbox/checkbox.component.mjs +5 -6
- package/esm2022/base-components/components/delete-account/delete-account.component.mjs +6 -7
- package/esm2022/base-components/components/fab-button/fab-button.component.mjs +5 -6
- package/esm2022/base-components/components/input/input.component.mjs +5 -6
- package/esm2022/base-components/components/loading-bar/loading-bar.component.mjs +6 -7
- package/esm2022/base-components/components/model-form/model-form-base.component.mjs +6 -7
- package/esm2022/base-components/components/model-form/model-form.component.mjs +6 -7
- package/esm2022/base-components/components/model-form-sub/model-form-sub.component.mjs +6 -7
- package/esm2022/base-components/components/model-table/model-table.component.mjs +6 -7
- package/esm2022/base-components/components/refence-input/refence-input.component.mjs +6 -7
- package/esm2022/base-components/components/select/select.component.mjs +5 -6
- package/esm2022/base-components/components/skeleton-loader/skeleton-loader.component.mjs +5 -6
- package/esm2022/base-components/components/tags/tags.component.mjs +5 -6
- package/esm2022/base-components/components/textarea/textarea.component.mjs +5 -6
- package/esm2022/base-components/components/toast/toast.component.mjs +6 -7
- package/esm2022/base-components/components/upload-image/upload-image.component.mjs +6 -7
- package/esm2022/base-components/directives/back-button.directive.mjs +6 -7
- package/esm2022/base-components/directives/context-menu.directive.mjs +6 -7
- package/esm2022/base-components/directives/sort.directive.mjs +7 -8
- package/esm2022/base-components/directives/stop-propagation.directive.mjs +5 -6
- package/esm2022/base-components/pipes/ellipses.pipe.mjs +5 -6
- package/esm2022/base-prototype/base-prototype.module.mjs +6 -7
- package/esm2022/base-prototype/pages/email-verification/email-verification.component.mjs +6 -7
- package/esm2022/base-prototype/pages/forgot-password/forgot-password.component.mjs +6 -7
- package/esm2022/base-prototype/pages/login/login.component.mjs +6 -7
- package/esm2022/base-prototype/pages/profile/profile.component.mjs +6 -7
- package/esm2022/base-prototype/pages/register/register.component.mjs +14 -13
- package/esm2022/base-prototype/pages/set-password/set-password.component.mjs +7 -8
- package/esm2022/shared/interfaces/register-config.interface.mjs +2 -0
- package/esm2022/shared/public-api.mjs +2 -1
- package/esm2022/shared/services/auth.service.mjs +6 -7
- package/esm2022/shared/services/breadcrumb.service.mjs +6 -7
- package/esm2022/shared/services/cms.service.mjs +6 -7
- package/esm2022/shared/services/file.service.mjs +6 -7
- package/esm2022/shared/services/forms.service.mjs +7 -8
- package/esm2022/shared/services/graphql-meta.service.mjs +6 -7
- package/esm2022/shared/services/graphql-plus.service.mjs +7 -8
- package/esm2022/shared/services/graphql.service.mjs +7 -8
- package/esm2022/shared/services/image.service.mjs +5 -6
- package/esm2022/shared/services/loader.service.mjs +5 -6
- package/esm2022/shared/services/navigation.service.mjs +6 -7
- package/esm2022/shared/services/scroll.service.mjs +7 -8
- package/esm2022/shared/services/storage.service.mjs +7 -8
- package/esm2022/shared/services/toast.service.mjs +5 -6
- package/esm2022/shared/services/user.service.mjs +7 -8
- package/esm2022/shared/services/ws.service.mjs +5 -6
- package/esm2022/shared/validators/email.validator.mjs +1 -1
- package/esm2022/shared/validators/secure-password.validator.mjs +1 -1
- package/esm2022/src/base.module.mjs +6 -7
- package/esm2022/src/directives/lazy-load.directive.mjs +6 -7
- package/esm2022/src/directives/match-height.directive.mjs +7 -8
- package/esm2022/src/directives/resizable.directive.mjs +6 -7
- package/esm2022/src/factories/apollo-options.factory.mjs +1 -1
- package/esm2022/src/guards/auth.guard.mjs +7 -8
- package/esm2022/src/guards/can-deactivate.guard.mjs +5 -6
- package/esm2022/src/guards/logout.guard.mjs +6 -7
- package/esm2022/src/pipes/date-ago.pipe.mjs +5 -6
- package/esm2022/src/pipes/safe-html.pipe.mjs +6 -7
- package/esm2022/src/services/fullscreen.service.mjs +6 -7
- package/esm2022/src/services/seo.service.mjs +6 -7
- package/esm2022/src/services/theme.service.mjs +6 -7
- package/fesm2022/lenne.tech-ng-base-base-cms.mjs +13 -13
- package/fesm2022/lenne.tech-ng-base-base-cms.mjs.map +1 -1
- package/fesm2022/lenne.tech-ng-base-base-components.mjs +90 -90
- package/fesm2022/lenne.tech-ng-base-base-components.mjs.map +1 -1
- package/fesm2022/lenne.tech-ng-base-base-prototype.mjs +36 -34
- package/fesm2022/lenne.tech-ng-base-base-prototype.mjs.map +1 -1
- package/fesm2022/lenne.tech-ng-base-shared.mjs +66 -66
- package/fesm2022/lenne.tech-ng-base-shared.mjs.map +1 -1
- package/fesm2022/lenne.tech-ng-base.mjs +49 -49
- package/fesm2022/lenne.tech-ng-base.mjs.map +1 -1
- package/package.json +7 -7
- package/shared/interfaces/register-config.interface.d.ts +4 -0
- package/shared/public-api.d.ts +1 -0
- package/shared/services/forms.service.d.ts +2 -2
- package/shared/validators/email.validator.d.ts +1 -2
- package/shared/validators/secure-password.validator.d.ts +1 -2
|
@@ -6,7 +6,7 @@ import * as i2 from "@lenne.tech/ng-base/shared";
|
|
|
6
6
|
import * as i3 from "@angular/common";
|
|
7
7
|
import * as i4 from "ngx-image-cropper";
|
|
8
8
|
import * as i5 from "../../directives/stop-propagation.directive";
|
|
9
|
-
class UploadImageComponent {
|
|
9
|
+
export class UploadImageComponent {
|
|
10
10
|
httpClient;
|
|
11
11
|
authService;
|
|
12
12
|
fileService;
|
|
@@ -277,14 +277,13 @@ class UploadImageComponent {
|
|
|
277
277
|
description: 'Es ist ein Fehler aufgetreten. Bitte probieren Sie es später erneut oder wenden Sie sich an den Support.',
|
|
278
278
|
}, 3500);
|
|
279
279
|
}
|
|
280
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
281
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
280
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: UploadImageComponent, deps: [{ token: i1.HttpClient }, { token: i2.AuthService }, { token: i2.FileService }, { token: i2.ToastService }], target: i0.ɵɵFactoryTarget.Component });
|
|
281
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: UploadImageComponent, selector: "base-upload-image", inputs: { id: "id", name: "name", infoText: "infoText", label: "label", supportText: "supportText", required: "required", defaultDragText: "defaultDragText", defaultReleaseText: "defaultReleaseText", preButtonText: "preButtonText", buttonText: "buttonText", validExtensions: "validExtensions", control: "control", url: "url", uploadPath: "uploadPath", deletePath: "deletePath", path: "path", compressOptions: "compressOptions", maxSize: "maxSize", uploadDirectly: "uploadDirectly", croppingImage: "croppingImage", croppingOptions: "croppingOptions", objectPath: "objectPath", mode: "mode" }, outputs: { imageUploaded: "imageUploaded", imageDeleted: "imageDeleted", fileChanged: "fileChanged" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div class=\"form-group mt-3\" [ngClass]=\"{ 'is-invalid': control?.invalid && control?.touched }\">\n <div class=\"d-flex justify-content-between align-items-center\">\n <label [for]=\"id\" class=\"form-label\" [ngClass]=\"{ required: required }\" *ngIf=\"label\">{{ label }}</label>\n <i class=\"bi bi-info-circle\" [ngbTooltip]=\"infoText\" placement=\"start\" *ngIf=\"infoText\"></i>\n </div>\n\n <div\n [id]=\"objectPath ? objectPath + '.' + id : id\"\n class=\"drag-area\"\n (dragover)=\"dragOver($event)\"\n (dragleave)=\"dragLeave($event)\"\n (drop)=\"drop($event)\"\n [ngClass]=\"{ active: dragActive, pointer: !loading, 'is-invalid': control?.invalid && control?.touched }\"\n (click)=\"!croppedInProgress && !loading && fileInput.click()\"\n >\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\n <div class=\"spinner-border text-primary\" role=\"status\">\n <span class=\"visually-hidden\">Loading...</span>\n </div>\n </div>\n\n <ng-container *ngIf=\"selectedFile && !fileEvent && !croppedInProgress && !loading\">\n <img [src]=\"fileUrl\" *ngIf=\"selectedFile\" />\n <button class=\"btn btn-danger\" type=\"button\" (click)=\"deleteFile()\" baseStopPropagation>L\u00F6schen</button>\n </ng-container>\n\n <ng-container *ngIf=\"control?.value && !fileEvent && !selectedFile && !loading && !croppedInProgress\">\n <img [src]=\"control?.value.startsWith('data:') ? control?.value : url + path + control?.value\" />\n <button class=\"btn btn-danger\" type=\"button\" (click)=\"deleteFile(control?.value)\" baseStopPropagation>\n L\u00F6schen\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"!selectedFile && !control?.value && !loading && !fileEvent\">\n <div class=\"icon\">\n <i class=\"bi bi-images\"></i>\n </div>\n\n <span class=\"header\">{{ dragText }}</span>\n <span class=\"header\"\n >{{ preButtonText }}\n <span class=\"button\" (click)=\"fileInput.click()\" baseStopPropagation>{{ buttonText }}</span></span\n >\n <span class=\"support\" [innerText]=\"supportText\"></span>\n </ng-container>\n\n <input type=\"file\" (change)=\"selectFile($event)\" [attr.accept]=\"validExtensions?.join(',')\" hidden #fileInput />\n\n <ng-container *ngIf=\"croppedInProgress && fileEvent\">\n <image-cropper\n [imageChangedEvent]=\"fileEvent\"\n [maintainAspectRatio]=\"cOptions.maintainAspectRatio\"\n [aspectRatio]=\"cOptions.aspectRatio\"\n [alignImage]=\"cOptions.alignImage\"\n [resizeToWidth]=\"cOptions.resizeToWidth\"\n [resizeToHeight]=\"cOptions.resizeToHeight\"\n [autoCrop]=\"cOptions.autoCrop\"\n [imageQuality]=\"cOptions.imageQuality\"\n [onlyScaleDown]=\"cOptions.onlyScaleDown\"\n [format]=\"cOptions.format\"\n (imageCropped)=\"imageCropped($event, fileEvent)\"\n (loadImageFailed)=\"loadImageFailed()\"\n ></image-cropper>\n <button class=\"btn btn-primary mt-2\" type=\"button\" (click)=\"finishedCropping()\" baseStopPropagation>\n Zuschneiden\n </button>\n </ng-container>\n </div>\n\n <div class=\"invalid-feedback m-2\" *ngIf=\"control?.invalid && (control?.dirty || control?.touched)\">\n <div *ngIf=\"control?.errors?.['required']\">Dieses Feld ist ein Pflichtfeld.</div>\n </div>\n</div>\n", styles: [":host{--base-upload-image-area-bg: #ffffff;--base-upload-image-area-border-color: #e1e1e1;--base-upload-image-area-height: 400px}.is-invalid .drag-area{border-color:var(--bs-danger)}.is-invalid .invalid-feedback{display:block}.required:after{content:\" *\"}.drag-area{height:var(--base-upload-image-area-height);border:2px dashed var(--base-upload-image-area-border-color);background-color:var(--base-upload-image-area-bg);display:flex;flex-direction:column;justify-content:center;align-items:center;margin:10px auto;padding:20px}.drag-area img{height:100%;max-height:280px;max-width:100%;object-fit:scale-down}.drag-area .btn-danger{margin-top:auto}.drag-area .icon{font-size:50px;color:var(--bs-primary)}.drag-area .header{font-size:20px;font-weight:500}.drag-area .support{font-size:12px;color:#e1e1e1;margin:10px 0 15px}.drag-area .button{font-size:20px;font-weight:500;color:var(--bs-primary);cursor:pointer}.active{border:2px solid var(--bs-primary)}.pointer{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "format", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "cropper", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange"] }, { kind: "directive", type: i5.StopPropagationDirective, selector: "[baseStopPropagation]" }] });
|
|
282
282
|
}
|
|
283
|
-
|
|
284
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: UploadImageComponent, decorators: [{
|
|
283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: UploadImageComponent, decorators: [{
|
|
285
284
|
type: Component,
|
|
286
285
|
args: [{ selector: 'base-upload-image', template: "<div class=\"form-group mt-3\" [ngClass]=\"{ 'is-invalid': control?.invalid && control?.touched }\">\n <div class=\"d-flex justify-content-between align-items-center\">\n <label [for]=\"id\" class=\"form-label\" [ngClass]=\"{ required: required }\" *ngIf=\"label\">{{ label }}</label>\n <i class=\"bi bi-info-circle\" [ngbTooltip]=\"infoText\" placement=\"start\" *ngIf=\"infoText\"></i>\n </div>\n\n <div\n [id]=\"objectPath ? objectPath + '.' + id : id\"\n class=\"drag-area\"\n (dragover)=\"dragOver($event)\"\n (dragleave)=\"dragLeave($event)\"\n (drop)=\"drop($event)\"\n [ngClass]=\"{ active: dragActive, pointer: !loading, 'is-invalid': control?.invalid && control?.touched }\"\n (click)=\"!croppedInProgress && !loading && fileInput.click()\"\n >\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\n <div class=\"spinner-border text-primary\" role=\"status\">\n <span class=\"visually-hidden\">Loading...</span>\n </div>\n </div>\n\n <ng-container *ngIf=\"selectedFile && !fileEvent && !croppedInProgress && !loading\">\n <img [src]=\"fileUrl\" *ngIf=\"selectedFile\" />\n <button class=\"btn btn-danger\" type=\"button\" (click)=\"deleteFile()\" baseStopPropagation>L\u00F6schen</button>\n </ng-container>\n\n <ng-container *ngIf=\"control?.value && !fileEvent && !selectedFile && !loading && !croppedInProgress\">\n <img [src]=\"control?.value.startsWith('data:') ? control?.value : url + path + control?.value\" />\n <button class=\"btn btn-danger\" type=\"button\" (click)=\"deleteFile(control?.value)\" baseStopPropagation>\n L\u00F6schen\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"!selectedFile && !control?.value && !loading && !fileEvent\">\n <div class=\"icon\">\n <i class=\"bi bi-images\"></i>\n </div>\n\n <span class=\"header\">{{ dragText }}</span>\n <span class=\"header\"\n >{{ preButtonText }}\n <span class=\"button\" (click)=\"fileInput.click()\" baseStopPropagation>{{ buttonText }}</span></span\n >\n <span class=\"support\" [innerText]=\"supportText\"></span>\n </ng-container>\n\n <input type=\"file\" (change)=\"selectFile($event)\" [attr.accept]=\"validExtensions?.join(',')\" hidden #fileInput />\n\n <ng-container *ngIf=\"croppedInProgress && fileEvent\">\n <image-cropper\n [imageChangedEvent]=\"fileEvent\"\n [maintainAspectRatio]=\"cOptions.maintainAspectRatio\"\n [aspectRatio]=\"cOptions.aspectRatio\"\n [alignImage]=\"cOptions.alignImage\"\n [resizeToWidth]=\"cOptions.resizeToWidth\"\n [resizeToHeight]=\"cOptions.resizeToHeight\"\n [autoCrop]=\"cOptions.autoCrop\"\n [imageQuality]=\"cOptions.imageQuality\"\n [onlyScaleDown]=\"cOptions.onlyScaleDown\"\n [format]=\"cOptions.format\"\n (imageCropped)=\"imageCropped($event, fileEvent)\"\n (loadImageFailed)=\"loadImageFailed()\"\n ></image-cropper>\n <button class=\"btn btn-primary mt-2\" type=\"button\" (click)=\"finishedCropping()\" baseStopPropagation>\n Zuschneiden\n </button>\n </ng-container>\n </div>\n\n <div class=\"invalid-feedback m-2\" *ngIf=\"control?.invalid && (control?.dirty || control?.touched)\">\n <div *ngIf=\"control?.errors?.['required']\">Dieses Feld ist ein Pflichtfeld.</div>\n </div>\n</div>\n", styles: [":host{--base-upload-image-area-bg: #ffffff;--base-upload-image-area-border-color: #e1e1e1;--base-upload-image-area-height: 400px}.is-invalid .drag-area{border-color:var(--bs-danger)}.is-invalid .invalid-feedback{display:block}.required:after{content:\" *\"}.drag-area{height:var(--base-upload-image-area-height);border:2px dashed var(--base-upload-image-area-border-color);background-color:var(--base-upload-image-area-bg);display:flex;flex-direction:column;justify-content:center;align-items:center;margin:10px auto;padding:20px}.drag-area img{height:100%;max-height:280px;max-width:100%;object-fit:scale-down}.drag-area .btn-danger{margin-top:auto}.drag-area .icon{font-size:50px;color:var(--bs-primary)}.drag-area .header{font-size:20px;font-weight:500}.drag-area .support{font-size:12px;color:#e1e1e1;margin:10px 0 15px}.drag-area .button{font-size:20px;font-weight:500;color:var(--bs-primary);cursor:pointer}.active{border:2px solid var(--bs-primary)}.pointer{cursor:pointer}\n"] }]
|
|
287
|
-
}], ctorParameters:
|
|
286
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i2.FileService }, { type: i2.ToastService }], propDecorators: { fileInput: [{
|
|
288
287
|
type: ViewChild,
|
|
289
288
|
args: ['fileInput']
|
|
290
289
|
}], id: [{
|
|
@@ -340,4 +339,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
340
339
|
}], fileChanged: [{
|
|
341
340
|
type: Output
|
|
342
341
|
}] } });
|
|
343
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWltYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2UvYmFzZS1jb21wb25lbnRzL2NvbXBvbmVudHMvdXBsb2FkLWltYWdlL3VwbG9hZC1pbWFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY29tcG9uZW50cy9jb21wb25lbnRzL3VwbG9hZC1pbWFnZS91cGxvYWQtaW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEcsT0FBTyxFQU1MLFNBQVMsR0FDVixNQUFNLDRCQUE0QixDQUFDOzs7Ozs7O0FBR3BDLE1BS2Esb0JBQW9CO0lBMENyQjtJQUNBO0lBQ0E7SUFDQTtJQTVDYyxTQUFTLENBQWE7SUFFckMsRUFBRSxDQUFTO0lBQ1gsSUFBSSxDQUFTO0lBQ2IsUUFBUSxDQUFTO0lBQ2pCLEtBQUssQ0FBVTtJQUNmLFdBQVcsR0FBRywwQkFBMEIsQ0FBQztJQUN6QyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLGVBQWUsR0FBRyxhQUFhLENBQUM7SUFDaEMsa0JBQWtCLEdBQUcsbUJBQW1CLENBQUM7SUFDekMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUNyQixVQUFVLEdBQUcsUUFBUSxDQUFDO0lBQ3RCLGVBQWUsR0FBRyxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3pFLE9BQU8sQ0FBTTtJQUNiLEdBQUcsR0FBRyx1QkFBdUIsQ0FBQztJQUM5QixVQUFVLEdBQUcsZUFBZSxDQUFDO0lBQzdCLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDdkIsSUFBSSxHQUFHLFNBQVMsQ0FB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LE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBBdXRoU2VydmljZSxcbiAgQ29tcHJlc3NPcHRpb25zLFxuICBDcm9wcGluZ09wdGlvbnMsXG4gIEZpbGVTZXJ2aWNlLFxuICBUb2FzdFNlcnZpY2UsXG4gIFRvYXN0VHlwZSxcbn0gZnJvbSAnQGxlbm5lLnRlY2gvbmctYmFzZS9zaGFyZWQnO1xuaW1wb3J0IHsgSW1hZ2VDcm9wcGVkRXZlbnQgfSBmcm9tICduZ3gtaW1hZ2UtY3JvcHBlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Jhc2UtdXBsb2FkLWltYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VwbG9hZC1pbWFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3VwbG9hZC1pbWFnZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBVcGxvYWRJbWFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dDogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGluZm9UZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBzdXBwb3J0VGV4dCA9ICdTdXBwb3J0czogSlBFRywgSlBHLCBQTkcnO1xuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBkZWZhdWx0RHJhZ1RleHQgPSAnRHJhZyAmIERyb3AnO1xuICBASW5wdXQoKSBkZWZhdWx0UmVsZWFzZVRleHQgPSAnUmVsZWFzZSB0byBVcGxvYWQnO1xuICBASW5wdXQoKSBwcmVCdXR0b25UZXh0ID0gJ29yJztcbiAgQElucHV0KCkgYnV0dG9uVGV4dCA9ICdicm93c2UnO1xuICBASW5wdXQoKSB2YWxpZEV4dGVuc2lvbnMgPSBbJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvanBnJywgJ2ltYWdlL3BuZycsICdpbWFnZS93ZWJwJ107XG4gIEBJbnB1dCgpIGNvbnRyb2w6IGFueTtcbiAgQElucHV0KCkgdXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCc7XG4gIEBJbnB1dCgpIHVwbG9hZFBhdGggPSAnL2ZpbGVzL3VwbG9hZCc7XG4gIEBJbnB1dCgpIGRlbGV0ZVBhdGggPSAnL2ZpbGVzLyc7XG4gIEBJbnB1dCgpIHBhdGggPSAnL2ZpbGVzLyc7XG4gIEBJbnB1dCgpIGNvbXByZXNzT3B0aW9uczogQ29tcHJlc3NPcHRpb25zO1xuICBASW5wdXQoKSBtYXhTaXplOiBudW1iZXI7XG4gIEBJbnB1dCgpIHVwbG9hZERpcmVjdGx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNyb3BwaW5nSW1hZ2UgPSBmYWxzZTtcbiAgQElucHV0KCkgY3JvcHBpbmdPcHRpb25zOiBDcm9wcGluZ09wdGlvbnM7XG4gIEBJbnB1dCgpIG9iamVjdFBhdGg6IHN0cmluZztcbiAgQElucHV0KCkgbW9kZTogJ2ZpbGUnIHwgJ2Jhc2U2NCcgPSAnZmlsZSc7XG5cbiAgQE91dHB1dCgpIGltYWdlVXBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBpbWFnZURlbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBmaWxlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWVsZDogc3RyaW5nOyBmaWxlOiBGaWxlIHwgbnVsbDsgYmFzZTY0OiBzdHJpbmcgfCBudWxsIH0+KCk7XG5cbiAgZHJhZ0FjdGl2ZSA9IGZhbHNlO1xuICBkcmFnVGV4dCA9ICdEcmFnICYgRHJvcCc7XG4gIHNlbGVjdGVkRmlsZTogRmlsZTtcbiAgY3JvcHBlZEZpbGU6IEZpbGU7XG4gIGZpbGVVcmw6IHN0cmluZztcbiAgbG9hZGluZyA9IGZhbHNlO1xuICBjcm9wcGVkSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICBmaWxlRXZlbnQ6IGFueTtcbiAgY09wdGlvbnM6IENyb3BwaW5nT3B0aW9ucztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmaWxlU2VydmljZTogRmlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gU2V0IGRlZmF1bHQgb3B0aW9ucyBmb3IgY3JvcHBpbmdcbiAgICB0aGlzLmNPcHRpb25zID0ge1xuICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogdHJ1ZSxcbiAgICAgIGFzcGVjdFJhdGlvOiA0IC8gMyxcbiAgICAgIG9ubHlTY2FsZURvd246IGZhbHNlLFxuICAgICAgaW1hZ2VRdWFsaXR5OiA5MixcbiAgICAgIGF1dG9Dcm9wOiB0cnVlLFxuICAgICAgYWxpZ25JbWFnZTogJ2NlbnRlcicsXG4gICAgICBmb3JtYXQ6ICdqcGVnJyxcbiAgICAgIC4uLnRoaXMuY3JvcHBpbmdPcHRpb25zLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRyYWdPdmVyIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGRyYWdzIGEgZmlsZSBvdmVyIHRoZSBkcm9wem9uZS4gSXQgcHJldmVudHMgdGhlIGRlZmF1bHQgYWN0aW9uIG9mIHRoZVxuICAgKiBldmVudCwgYW5kIHNldHMgdGhlIGRyYWdUZXh0IHRvICdSZWxlYXNlIHRvIFVwbG9hZCcgYW5kIHRoZSBkcmFnQWN0aXZlIHRvIHRydWVcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50IC0gYW55IC0gVGhpcyBpcyB0aGUgZXZlbnQgdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBkcmFncyBhIGZpbGUgb3ZlciB0aGUgZHJvcHpvbmUuXG4gICAqL1xuICBkcmFnT3ZlcihldmVudDogYW55KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmRyYWdUZXh0ID0gdGhpcy5kZWZhdWx0UmVsZWFzZVRleHQ7XG4gICAgdGhpcy5kcmFnQWN0aXZlID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHRoZSB1c2VyIGRyYWdzIGEgZmlsZSBvdmVyIHRoZSBkcm9wIHpvbmUsIHRoZSBkcmFnQWN0aXZlIHZhcmlhYmxlIGlzIHNldCB0byB0cnVlLCB3aGljaCB3aWxsIGNoYW5nZSB0aGUgY29sb3Igb2ZcbiAgICogdGhlIGRyb3Agem9uZSB0byBncmVlblxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgZXZlbnQgb2JqZWN0IHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBkcmFnTGVhdmUgZXZlbnQuXG4gICAqL1xuICBkcmFnTGVhdmUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZHJhZ1RleHQgPSB0aGlzLmRlZmF1bHREcmFnVGV4dDtcbiAgICB0aGlzLmRyYWdBY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdGFrZXMgYW4gZXZlbnQgYXMgYSBwYXJhbWV0ZXIsIHByZXZlbnRzIHRoZSBkZWZhdWx0IGFjdGlvbiBvZiB0aGUgZXZlbnQsIHNldHMgdGhlIFVSTCBvZiB0aGUgaW1hZ2UgdG8gdGhlXG4gICAqIGZpbGUgdGhhdCB3YXMgZHJhZ2dlZCBhbmQgZHJvcHBlZCwgc2V0cyB0aGUgdGV4dCBvZiB0aGUgZHJhZyBhbmQgZHJvcCBhcmVhIHRvIHRoZSBkZWZhdWx0IHRleHQsIGFuZCBzZXRzIHRoZVxuICAgKiBkcmFnQWN0aXZlIHZhcmlhYmxlIHRvIGZhbHNlXG4gICAqXG4gICAqIEBwYXJhbSBldmVudCAtIGFueSAtIFRoaXMgaXMgdGhlIGV2ZW50IHRoYXQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgZHJhZ3MgYW5kIGRyb3BzIGEgZmlsZS5cbiAgICovXG4gIGRyb3AoZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5maWxlcyA9IGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcztcbiAgICBjb25zdCBlID0gbmV3IEV2ZW50KCdjaGFuZ2UnKTtcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQoZSk7XG5cbiAgICB0aGlzLmRyYWdUZXh0ID0gJ0RyYWcgJiBEcm9wJztcbiAgICB0aGlzLmRyYWdBY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCB0YWtlcyBhIGZpbGUgYXMgYW4gYXJndW1lbnQsIGNoZWNrcyBpZiB0aGUgZmlsZSB0eXBlIGlzIHZhbGlkLCBhbmQgaWYgaXQgaXMsIGl0IGNyZWF0ZXMgYSBuZXcgRmlsZVJlYWRlciBvYmplY3QsXG4gICAqIHNldHMgdGhlIG9ubG9hZCBmdW5jdGlvbiB0byBzZXQgdGhlIGZpbGVVcmwgdG8gdGhlIHJlc3VsdCBvZiB0aGUgZmlsZVJlYWRlciwgc2V0cyB0aGUgc2VsZWN0ZWRGaWxlIHRvIHRoZSBmaWxlLCBhbmRcbiAgICogY2FsbHMgdGhlIHVwbG9hZCBmdW5jdGlvblxuICAgKlxuICAgKiBAcGFyYW0gZmlsZSAtIGFueSAtIHRoaXMgaXMgdGhlIGZpbGUgdGhhdCBpcyBzZWxlY3RlZCBieSB0aGUgdXNlci5cbiAgICovXG4gIHNldFVybChmaWxlOiBGaWxlKSB7XG4gICAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgZmlsZVJlYWRlci5vbmxvYWQgPSAocmVzdWx0KSA9PiB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5maWxlVXJsID0gZmlsZVJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xuICAgICAgdGhpcy5zZWxlY3RlZEZpbGUgPSBmaWxlO1xuICAgICAgdGhpcy51cGxvYWQoKTtcbiAgICB9O1xuICAgIGZpbGVSZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgfVxuXG4gIGNoZWNrRmlsZShmaWxlOiBGaWxlKSB7XG4gICAgaWYgKHRoaXMubWF4U2l6ZSAmJiBmaWxlLnNpemUgPiB0aGlzLm1heFNpemUpIHtcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ2ltYWdlLWludmFsaWQtc2l6ZScsXG4gICAgICAgICAgdHlwZTogVG9hc3RUeXBlLkVSUk9SLFxuICAgICAgICAgIHRpdGxlOiAnRmVobGdlc2NobGFnZW4nLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ0RpZSBEYXRlaSBpc3QgenUgZ3Jvw58uIERpZSBEYXRlaSBkYXJmIG5pY2h0IGdyw7bDn2VyIGFscyAnICtcbiAgICAgICAgICAgICh0aGlzLm1heFNpemUgLyAoMTAyNCAqIDEwMjQpKS50b0ZpeGVkKDIpICtcbiAgICAgICAgICAgICdNQiBzZWluLicsXG4gICAgICAgIH0sXG4gICAgICAgIDM1MDBcbiAgICAgICk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnZhbGlkRXh0ZW5zaW9ucy5pbmNsdWRlcyhmaWxlPy50eXBlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdpbWFnZS1pbnZhbGlkLWZvcm1hdCcsXG4gICAgICAgICAgICB0eXBlOiBUb2FzdFR5cGUuRVJST1IsXG4gICAgICAgICAgICB0aXRsZTogJ0ZlaGxnZXNjaGxhZ2VuJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRGFzIEZvcm1hdCBkZXIgRGF0ZWkgd2lyZCBuaWNodCB1bnRlcnN0w7x0enQuJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIDM1MDBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdGFrZXMgYW4gZXZlbnQgYXMgYW4gYXJndW1lbnQsIGFuZCB0aGVuIHNldHMgdGhlIHVybCBvZiB0aGUgZmlsZSB0byB0aGUgZmlyc3QgZmlsZSBpbiB0aGUgZXZlbnQnc1xuICAgKiB0YXJnZXQncyBmaWxlcyBhcnJheVxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBhbnkgLSBUaGUgZXZlbnQgdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGEgZmlsZS5cbiAgICovXG4gIHNlbGVjdEZpbGUoZXZlbnQ6IGFueSkge1xuICAgIGlmICghdGhpcy5jaGVja0ZpbGUoZXZlbnQudGFyZ2V0LmZpbGVzWzBdKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNyb3BwaW5nSW1hZ2UpIHtcbiAgICAgIHRoaXMuY3JvcHBlZEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgdGhpcy5maWxlRXZlbnQgPSBldmVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRVcmwoZXZlbnQudGFyZ2V0LmZpbGVzWzBdKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2UgY3JlYXRlIGEgbmV3IEZvcm1EYXRhIG9iamVjdCwgYXBwZW5kIHRoZSBzZWxlY3RlZCBmaWxlIHRvIGl0LCBhbmQgdGhlbiBzZW5kIGl0IHRvIHRoZSBzZXJ2ZXJcbiAgICovXG4gIGFzeW5jIHVwbG9hZCgpIHtcbiAgICAvLyBQcmVwYXJlIGZpbGUgZGF0YVxuICAgIGxldCBmaWxlID0gdGhpcy5zZWxlY3RlZEZpbGU7XG4gICAgaWYgKHRoaXMuY29tcHJlc3NPcHRpb25zKSB7XG4gICAgICBmaWxlID0gYXdhaXQgdGhpcy5maWxlU2VydmljZS5jb21wcmVzcyhmaWxlLCB0aGlzLmNvbXByZXNzT3B0aW9ucyk7XG4gICAgfVxuICAgIGNvbnN0IGZpbGVEYXRhID0ge1xuICAgICAgZmllbGQ6IHRoaXMub2JqZWN0UGF0aCA/IHRoaXMub2JqZWN0UGF0aCArICcuJyArIHRoaXMuaWQgOiB0aGlzLmlkLFxuICAgICAgZmlsZSxcbiAgICAgIGJhc2U2NDogYXdhaXQgdGhpcy5nZXRCYXNlNjQoZmlsZSksXG4gICAgfTtcblxuICAgIC8vIEVtaXQgZmlsZSBkYXRhXG4gICAgdGhpcy5maWxlQ2hhbmdlZC5lbWl0KGZpbGVEYXRhKTtcblxuICAgIC8vIFNldCBjb250cm9sIHZhbHVlIGFuZCB1cGxvYWQgZGlyZWN0bHkgaWYgcmVxdWlyZWRcbiAgICBpZiAodGhpcy51cGxvYWREaXJlY3RseSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5maWxlU2VydmljZS51cGxvYWQodGhpcy51cmwsIHRoaXMudXBsb2FkUGF0aCwgdGhpcy5zZWxlY3RlZEZpbGUpO1xuICAgICAgaWYgKHJlc3VsdD8uaWQpIHtcbiAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHJlc3VsdC5pZCk7XG4gICAgICAgIHRoaXMuaW1hZ2VVcGxvYWRlZC5lbWl0KHJlc3VsdC5pZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh0aGlzLm1vZGUgPT09ICdiYXNlNjQnID8gZmlsZURhdGEuYmFzZTY0IDogdGhpcy5zZWxlY3RlZEZpbGUpO1xuICAgIH1cblxuICAgIC8vIEZpbmFsIHByb2Nlc3Nlc1xuICAgIHRoaXMuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSXQgZGVsZXRlcyB0aGUgZmlsZSBmcm9tIHRoZSBzZXJ2ZXIgYW5kIHNldHMgdGhlIHNlbGVjdGVkRmlsZSBhbmQgZmlsZVVybCB0byBudWxsXG4gICAqXG4gICAqIEBwYXJhbSBbaWRdIC0gVGhlIGlkIG9mIHRoZSBmaWxlIHRvIGRlbGV0ZS5cbiAgICovXG4gIGFzeW5jIGRlbGV0ZUZpbGUoaWQ/OiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMudXBsb2FkRGlyZWN0bHkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlID0gbnVsbDtcbiAgICAgIHRoaXMuZmlsZVVybCA9IG51bGw7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgICAgdGhpcy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIHRoaXMuZmlsZUNoYW5nZWQuZW1pdCh7XG4gICAgICAgIGZpZWxkOiB0aGlzLm9iamVjdFBhdGggPyB0aGlzLm9iamVjdFBhdGggKyAnLicgKyB0aGlzLmlkIDogdGhpcy5pZCxcbiAgICAgICAgZmlsZTogbnVsbCxcbiAgICAgICAgYmFzZTY0OiBudWxsLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IG51bGw7XG4gICAgdGhpcy5maWxlVXJsID0gbnVsbDtcblxuICAgIGlmIChpZCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5maWxlU2VydmljZS5kZWxldGUodGhpcy51cmwsIHRoaXMuZGVsZXRlUGF0aCwgaWQpO1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IG51bGw7XG4gICAgICAgIHRoaXMuZmlsZVVybCA9IG51bGw7XG4gICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIHRoaXMuaW1hZ2VEZWxldGVkLmVtaXQoKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBmaWxlIGludG8gYSBCQVNFNjQgZW5jb2RlZCBzdHJpbmdcbiAgICovXG4gIHByb3RlY3RlZCBnZXRCYXNlNjQoZmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCFmaWxlKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKG51bGwpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgaWYgKCFyZWFkZXIucmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoJ0NvbnZlcnNpb24gZmFpbGVkJykpO1xuICAgICAgICB9XG4gICAgICAgIHJlc29sdmUocmVhZGVyLnJlc3VsdC50b1N0cmluZygpKTtcbiAgICAgIH07XG4gICAgICByZWFkZXIub25lcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGJhc2U2NFRvRmlsZShiYXNlNjQ6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZywgZmlsZVR5cGU6IHN0cmluZyk6IFByb21pc2U8RmlsZT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxGaWxlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBmZXRjaChiYXNlNjQpXG4gICAgICAgIC50aGVuKChyZXMpID0+IHJlcy5ibG9iKCkpXG4gICAgICAgIC50aGVuKFxuICAgICAgICAgIChibG9iKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBGaWxlKFtibG9iXSwgZmlsZU5hbWUsIHsgdHlwZTogZmlsZVR5cGUgfSkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycikgPT4ge1xuICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgaW1hZ2VDcm9wcGVkKCRldmVudDogSW1hZ2VDcm9wcGVkRXZlbnQsIGZpbGVFdmVudDogYW55KSB7XG4gICAgY29uc3QgZmlsZSA9IGZpbGVFdmVudC50YXJnZXQuZmlsZXNbMF07XG4gICAgdGhpcy5jcm9wcGVkRmlsZSA9IGF3YWl0IHRoaXMuYmFzZTY0VG9GaWxlKCRldmVudC5iYXNlNjQsIGZpbGUubmFtZSwgZmlsZS50eXBlKTtcbiAgfVxuXG4gIGZpbmlzaGVkQ3JvcHBpbmcoKSB7XG4gICAgdGhpcy5maWxlRXZlbnQgPSBudWxsO1xuICAgIHRoaXMuc2V0VXJsKHRoaXMuY3JvcHBlZEZpbGUpO1xuICAgIHRoaXMuY3JvcHBlZEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICB0aGlzLmNyb3BwZWRGaWxlID0gbnVsbDtcbiAgfVxuXG4gIGxvYWRJbWFnZUZhaWxlZCgpIHtcbiAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KFxuICAgICAge1xuICAgICAgICBpZDogJ2ltYWdlLWludmFsaWQtY3JvcHBlZCcsXG4gICAgICAgIHR5cGU6IFRvYXN0VHlwZS5FUlJPUixcbiAgICAgICAgdGl0bGU6ICdGZWhsZ2VzY2hsYWdlbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICdFcyBpc3QgZWluIEZlaGxlciBhdWZnZXRyZXRlbi4gQml0dGUgcHJvYmllcmVuIFNpZSBlcyBzcMOkdGVyIGVybmV1dCBvZGVyIHdlbmRlbiBTaWUgc2ljaCBhbiBkZW4gU3VwcG9ydC4nLFxuICAgICAgfSxcbiAgICAgIDM1MDBcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtdC0zXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IGNvbnRyb2w/LmludmFsaWQgJiYgY29udHJvbD8udG91Y2hlZCB9XCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgPGxhYmVsIFtmb3JdPVwiaWRcIiBjbGFzcz1cImZvcm0tbGFiZWxcIiBbbmdDbGFzc109XCJ7IHJlcXVpcmVkOiByZXF1aXJlZCB9XCIgKm5nSWY9XCJsYWJlbFwiPnt7IGxhYmVsIH19PC9sYWJlbD5cbiAgICA8aSBjbGFzcz1cImJpIGJpLWluZm8tY2lyY2xlXCIgW25nYlRvb2x0aXBdPVwiaW5mb1RleHRcIiBwbGFjZW1lbnQ9XCJzdGFydFwiICpuZ0lmPVwiaW5mb1RleHRcIj48L2k+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBbaWRdPVwib2JqZWN0UGF0aCA/IG9iamVjdFBhdGggKyAnLicgKyBpZCA6IGlkXCJcbiAgICBjbGFzcz1cImRyYWctYXJlYVwiXG4gICAgKGRyYWdvdmVyKT1cImRyYWdPdmVyKCRldmVudClcIlxuICAgIChkcmFnbGVhdmUpPVwiZHJhZ0xlYXZlKCRldmVudClcIlxuICAgIChkcm9wKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGRyYWdBY3RpdmUsIHBvaW50ZXI6ICFsb2FkaW5nLCAnaXMtaW52YWxpZCc6IGNvbnRyb2w/LmludmFsaWQgJiYgY29udHJvbD8udG91Y2hlZCB9XCJcbiAgICAoY2xpY2spPVwiIWNyb3BwZWRJblByb2dyZXNzICYmICFsb2FkaW5nICYmIGZpbGVJbnB1dC5jbGljaygpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHRleHQtcHJpbWFyeVwiIHJvbGU9XCJzdGF0dXNcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRGaWxlICYmICFmaWxlRXZlbnQgJiYgIWNyb3BwZWRJblByb2dyZXNzICYmICFsb2FkaW5nXCI+XG4gICAgICA8aW1nIFtzcmNdPVwiZmlsZVVybFwiICpuZ0lmPVwic2VsZWN0ZWRGaWxlXCIgLz5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZGVsZXRlRmlsZSgpXCIgYmFzZVN0b3BQcm9wYWdhdGlvbj5Mw7ZzY2hlbjwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2w/LnZhbHVlICYmICFmaWxlRXZlbnQgJiYgIXNlbGVjdGVkRmlsZSAmJiAhbG9hZGluZyAmJiAhY3JvcHBlZEluUHJvZ3Jlc3NcIj5cbiAgICAgIDxpbWcgW3NyY109XCJjb250cm9sPy52YWx1ZS5zdGFydHNXaXRoKCdkYXRhOicpID8gY29udHJvbD8udmFsdWUgOiB1cmwgKyBwYXRoICsgY29udHJvbD8udmFsdWVcIiAvPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkZWxldGVGaWxlKGNvbnRyb2w/LnZhbHVlKVwiIGJhc2VTdG9wUHJvcGFnYXRpb24+XG4gICAgICAgIEzDtnNjaGVuXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VsZWN0ZWRGaWxlICYmICFjb250cm9sPy52YWx1ZSAmJiAhbG9hZGluZyAmJiAhZmlsZUV2ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxuICAgICAgICA8aSBjbGFzcz1cImJpIGJpLWltYWdlc1wiPjwvaT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8c3BhbiBjbGFzcz1cImhlYWRlclwiPnt7IGRyYWdUZXh0IH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXJcIlxuICAgICAgICA+e3sgcHJlQnV0dG9uVGV4dCB9fVxuICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiIGJhc2VTdG9wUHJvcGFnYXRpb24+e3sgYnV0dG9uVGV4dCB9fTwvc3Bhbj48L3NwYW5cbiAgICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3VwcG9ydFwiIFtpbm5lclRleHRdPVwic3VwcG9ydFRleHRcIj48L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAoY2hhbmdlKT1cInNlbGVjdEZpbGUoJGV2ZW50KVwiIFthdHRyLmFjY2VwdF09XCJ2YWxpZEV4dGVuc2lvbnM/LmpvaW4oJywnKVwiIGhpZGRlbiAjZmlsZUlucHV0IC8+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3JvcHBlZEluUHJvZ3Jlc3MgJiYgZmlsZUV2ZW50XCI+XG4gICAgICA8aW1hZ2UtY3JvcHBlclxuICAgICAgICBbaW1hZ2VDaGFuZ2VkRXZlbnRdPVwiZmlsZUV2ZW50XCJcbiAgICAgICAgW21haW50YWluQXNwZWN0UmF0aW9dPVwiY09wdGlvbnMubWFpbnRhaW5Bc3BlY3RSYXRpb1wiXG4gICAgICAgIFthc3BlY3RSYXRpb109XCJjT3B0aW9ucy5hc3BlY3RSYXRpb1wiXG4gICAgICAgIFthbGlnbkltYWdlXT1cImNPcHRpb25zLmFsaWduSW1hZ2VcIlxuICAgICAgICBbcmVzaXplVG9XaWR0aF09XCJjT3B0aW9ucy5yZXNpemVUb1dpZHRoXCJcbiAgICAgICAgW3Jlc2l6ZVRvSGVpZ2h0XT1cImNPcHRpb25zLnJlc2l6ZVRvSGVpZ2h0XCJcbiAgICAgICAgW2F1dG9Dcm9wXT1cImNPcHRpb25zLmF1dG9Dcm9wXCJcbiAgICAgICAgW2ltYWdlUXVhbGl0eV09XCJjT3B0aW9ucy5pbWFnZVF1YWxpdHlcIlxuICAgICAgICBbb25seVNjYWxlRG93bl09XCJjT3B0aW9ucy5vbmx5U2NhbGVEb3duXCJcbiAgICAgICAgW2Zvcm1hdF09XCJjT3B0aW9ucy5mb3JtYXRcIlxuICAgICAgICAoaW1hZ2VDcm9wcGVkKT1cImltYWdlQ3JvcHBlZCgkZXZlbnQsIGZpbGVFdmVudClcIlxuICAgICAgICAobG9hZEltYWdlRmFpbGVkKT1cImxvYWRJbWFnZUZhaWxlZCgpXCJcbiAgICAgID48L2ltYWdlLWNyb3BwZXI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG10LTJcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImZpbmlzaGVkQ3JvcHBpbmcoKVwiIGJhc2VTdG9wUHJvcGFnYXRpb24+XG4gICAgICAgIFp1c2NobmVpZGVuXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbS0yXCIgKm5nSWY9XCJjb250cm9sPy5pbnZhbGlkICYmIChjb250cm9sPy5kaXJ0eSB8fCBjb250cm9sPy50b3VjaGVkKVwiPlxuICAgIDxkaXYgKm5nSWY9XCJjb250cm9sPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPkRpZXNlcyBGZWxkIGlzdCBlaW4gUGZsaWNodGZlbGQuPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
342
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWltYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2UvYmFzZS1jb21wb25lbnRzL2NvbXBvbmVudHMvdXBsb2FkLWltYWdlL3VwbG9hZC1pbWFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY29tcG9uZW50cy9jb21wb25lbnRzL3VwbG9hZC1pbWFnZS91cGxvYWQtaW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEcsT0FBTyxFQU1MLFNBQVMsR0FDVixNQUFNLDRCQUE0QixDQUFDOzs7Ozs7O0FBUXBDLE1BQU0sT0FBTyxvQkFBb0I7SUEwQ3JCO0lBQ0E7SUFDQTtJQUNBO0lBNUNjLFNBQVMsQ0FBYTtJQUVyQyxFQUFFLENBQVM7SUFDWCxJQUFJLENBQVM7SUFDYixRQUFRLENBQVM7SUFDakIsS0FBSyxDQUFVO0lBQ2YsV0FBVyxHQUFHLDBCQUEwQixDQUFDO0lBQ3pDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsZUFBZSxHQUFHLGFBQWEsQ0FBQztJQUNoQyxrQkFBa0IsR0FBRyxtQkFBbUIsQ0FBQztJQUN6QyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLFVBQVUsR0FBRyxRQUFRLENBQUM7SUFDdEIsZUFBZSxHQUFHLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDekUsT0FBTyxDQUFNO0lBQ2IsR0FBRyxHQUFHLHVCQUF1QixDQUFDO0lBQzlCLFVBQVUsR0FBRyxlQUFlLENBQUM7SUFDN0IsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUN2QixJQUFJLEdBQUcsU0FB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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgQXV0aFNlcnZpY2UsXG4gIENvbXByZXNzT3B0aW9ucyxcbiAgQ3JvcHBpbmdPcHRpb25zLFxuICBGaWxlU2VydmljZSxcbiAgVG9hc3RTZXJ2aWNlLFxuICBUb2FzdFR5cGUsXG59IGZyb20gJ0BsZW5uZS50ZWNoL25nLWJhc2Uvc2hhcmVkJztcbmltcG9ydCB7IEltYWdlQ3JvcHBlZEV2ZW50IH0gZnJvbSAnbmd4LWltYWdlLWNyb3BwZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdiYXNlLXVwbG9hZC1pbWFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi91cGxvYWQtaW1hZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi91cGxvYWQtaW1hZ2UuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkSW1hZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBpbmZvVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgc3VwcG9ydFRleHQgPSAnU3VwcG9ydHM6IEpQRUcsIEpQRywgUE5HJztcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZGVmYXVsdERyYWdUZXh0ID0gJ0RyYWcgJiBEcm9wJztcbiAgQElucHV0KCkgZGVmYXVsdFJlbGVhc2VUZXh0ID0gJ1JlbGVhc2UgdG8gVXBsb2FkJztcbiAgQElucHV0KCkgcHJlQnV0dG9uVGV4dCA9ICdvcic7XG4gIEBJbnB1dCgpIGJ1dHRvblRleHQgPSAnYnJvd3NlJztcbiAgQElucHV0KCkgdmFsaWRFeHRlbnNpb25zID0gWydpbWFnZS9qcGVnJywgJ2ltYWdlL2pwZycsICdpbWFnZS9wbmcnLCAnaW1hZ2Uvd2VicCddO1xuICBASW5wdXQoKSBjb250cm9sOiBhbnk7XG4gIEBJbnB1dCgpIHVybCA9ICdodHRwOi8vbG9jYWxob3N0OjMwMDAnO1xuICBASW5wdXQoKSB1cGxvYWRQYXRoID0gJy9maWxlcy91cGxvYWQnO1xuICBASW5wdXQoKSBkZWxldGVQYXRoID0gJy9maWxlcy8nO1xuICBASW5wdXQoKSBwYXRoID0gJy9maWxlcy8nO1xuICBASW5wdXQoKSBjb21wcmVzc09wdGlvbnM6IENvbXByZXNzT3B0aW9ucztcbiAgQElucHV0KCkgbWF4U2l6ZTogbnVtYmVyO1xuICBASW5wdXQoKSB1cGxvYWREaXJlY3RseSA9IGZhbHNlO1xuICBASW5wdXQoKSBjcm9wcGluZ0ltYWdlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNyb3BwaW5nT3B0aW9uczogQ3JvcHBpbmdPcHRpb25zO1xuICBASW5wdXQoKSBvYmplY3RQYXRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG1vZGU6ICdmaWxlJyB8ICdiYXNlNjQnID0gJ2ZpbGUnO1xuXG4gIEBPdXRwdXQoKSBpbWFnZVVwbG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaW1hZ2VEZWxldGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZmlsZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmllbGQ6IHN0cmluZzsgZmlsZTogRmlsZSB8IG51bGw7IGJhc2U2NDogc3RyaW5nIHwgbnVsbCB9PigpO1xuXG4gIGRyYWdBY3RpdmUgPSBmYWxzZTtcbiAgZHJhZ1RleHQgPSAnRHJhZyAmIERyb3AnO1xuICBzZWxlY3RlZEZpbGU6IEZpbGU7XG4gIGNyb3BwZWRGaWxlOiBGaWxlO1xuICBmaWxlVXJsOiBzdHJpbmc7XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgY3JvcHBlZEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgZmlsZUV2ZW50OiBhbnk7XG4gIGNPcHRpb25zOiBDcm9wcGluZ09wdGlvbnM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmlsZVNlcnZpY2U6IEZpbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIFNldCBkZWZhdWx0IG9wdGlvbnMgZm9yIGNyb3BwaW5nXG4gICAgdGhpcy5jT3B0aW9ucyA9IHtcbiAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IHRydWUsXG4gICAgICBhc3BlY3RSYXRpbzogNCAvIDMsXG4gICAgICBvbmx5U2NhbGVEb3duOiBmYWxzZSxcbiAgICAgIGltYWdlUXVhbGl0eTogOTIsXG4gICAgICBhdXRvQ3JvcDogdHJ1ZSxcbiAgICAgIGFsaWduSW1hZ2U6ICdjZW50ZXInLFxuICAgICAgZm9ybWF0OiAnanBlZycsXG4gICAgICAuLi50aGlzLmNyb3BwaW5nT3B0aW9ucyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBkcmFnT3ZlciBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciBkcmFncyBhIGZpbGUgb3ZlciB0aGUgZHJvcHpvbmUuIEl0IHByZXZlbnRzIHRoZSBkZWZhdWx0IGFjdGlvbiBvZiB0aGVcbiAgICogZXZlbnQsIGFuZCBzZXRzIHRoZSBkcmFnVGV4dCB0byAnUmVsZWFzZSB0byBVcGxvYWQnIGFuZCB0aGUgZHJhZ0FjdGl2ZSB0byB0cnVlXG4gICAqXG4gICAqIEBwYXJhbSBldmVudCAtIGFueSAtIFRoaXMgaXMgdGhlIGV2ZW50IHRoYXQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgZHJhZ3MgYSBmaWxlIG92ZXIgdGhlIGRyb3B6b25lLlxuICAgKi9cbiAgZHJhZ092ZXIoZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5kcmFnVGV4dCA9IHRoaXMuZGVmYXVsdFJlbGVhc2VUZXh0O1xuICAgIHRoaXMuZHJhZ0FjdGl2ZSA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiB0aGUgdXNlciBkcmFncyBhIGZpbGUgb3ZlciB0aGUgZHJvcCB6b25lLCB0aGUgZHJhZ0FjdGl2ZSB2YXJpYWJsZSBpcyBzZXQgdG8gdHJ1ZSwgd2hpY2ggd2lsbCBjaGFuZ2UgdGhlIGNvbG9yIG9mXG4gICAqIHRoZSBkcm9wIHpvbmUgdG8gZ3JlZW5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGV2ZW50IG9iamVjdCB0aGF0IGlzIHBhc3NlZCB0byB0aGUgZHJhZ0xlYXZlIGV2ZW50LlxuICAgKi9cbiAgZHJhZ0xlYXZlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmRyYWdUZXh0ID0gdGhpcy5kZWZhdWx0RHJhZ1RleHQ7XG4gICAgdGhpcy5kcmFnQWN0aXZlID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRha2VzIGFuIGV2ZW50IGFzIGEgcGFyYW1ldGVyLCBwcmV2ZW50cyB0aGUgZGVmYXVsdCBhY3Rpb24gb2YgdGhlIGV2ZW50LCBzZXRzIHRoZSBVUkwgb2YgdGhlIGltYWdlIHRvIHRoZVxuICAgKiBmaWxlIHRoYXQgd2FzIGRyYWdnZWQgYW5kIGRyb3BwZWQsIHNldHMgdGhlIHRleHQgb2YgdGhlIGRyYWcgYW5kIGRyb3AgYXJlYSB0byB0aGUgZGVmYXVsdCB0ZXh0LCBhbmQgc2V0cyB0aGVcbiAgICogZHJhZ0FjdGl2ZSB2YXJpYWJsZSB0byBmYWxzZVxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgLSBhbnkgLSBUaGlzIGlzIHRoZSBldmVudCB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGRyYWdzIGFuZCBkcm9wcyBhIGZpbGUuXG4gICAqL1xuICBkcm9wKGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZmlsZXMgPSBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXM7XG4gICAgY29uc3QgZSA9IG5ldyBFdmVudCgnY2hhbmdlJyk7XG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KGUpO1xuXG4gICAgdGhpcy5kcmFnVGV4dCA9ICdEcmFnICYgRHJvcCc7XG4gICAgdGhpcy5kcmFnQWN0aXZlID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSXQgdGFrZXMgYSBmaWxlIGFzIGFuIGFyZ3VtZW50LCBjaGVja3MgaWYgdGhlIGZpbGUgdHlwZSBpcyB2YWxpZCwgYW5kIGlmIGl0IGlzLCBpdCBjcmVhdGVzIGEgbmV3IEZpbGVSZWFkZXIgb2JqZWN0LFxuICAgKiBzZXRzIHRoZSBvbmxvYWQgZnVuY3Rpb24gdG8gc2V0IHRoZSBmaWxlVXJsIHRvIHRoZSByZXN1bHQgb2YgdGhlIGZpbGVSZWFkZXIsIHNldHMgdGhlIHNlbGVjdGVkRmlsZSB0byB0aGUgZmlsZSwgYW5kXG4gICAqIGNhbGxzIHRoZSB1cGxvYWQgZnVuY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIGZpbGUgLSBhbnkgLSB0aGlzIGlzIHRoZSBmaWxlIHRoYXQgaXMgc2VsZWN0ZWQgYnkgdGhlIHVzZXIuXG4gICAqL1xuICBzZXRVcmwoZmlsZTogRmlsZSkge1xuICAgIGNvbnN0IGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIGZpbGVSZWFkZXIub25sb2FkID0gKHJlc3VsdCkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZmlsZVVybCA9IGZpbGVSZWFkZXIucmVzdWx0IGFzIHN0cmluZztcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlID0gZmlsZTtcbiAgICAgIHRoaXMudXBsb2FkKCk7XG4gICAgfTtcbiAgICBmaWxlUmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gIH1cblxuICBjaGVja0ZpbGUoZmlsZTogRmlsZSkge1xuICAgIGlmICh0aGlzLm1heFNpemUgJiYgZmlsZS5zaXplID4gdGhpcy5tYXhTaXplKSB7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdpbWFnZS1pbnZhbGlkLXNpemUnLFxuICAgICAgICAgIHR5cGU6IFRvYXN0VHlwZS5FUlJPUixcbiAgICAgICAgICB0aXRsZTogJ0ZlaGxnZXNjaGxhZ2VuJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdEaWUgRGF0ZWkgaXN0IHp1IGdyb8OfLiBEaWUgRGF0ZWkgZGFyZiBuaWNodCBncsO2w59lciBhbHMgJyArXG4gICAgICAgICAgICAodGhpcy5tYXhTaXplIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgyKSArXG4gICAgICAgICAgICAnTUIgc2Vpbi4nLFxuICAgICAgICB9LFxuICAgICAgICAzNTAwXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy52YWxpZEV4dGVuc2lvbnMuaW5jbHVkZXMoZmlsZT8udHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnaW1hZ2UtaW52YWxpZC1mb3JtYXQnLFxuICAgICAgICAgICAgdHlwZTogVG9hc3RUeXBlLkVSUk9SLFxuICAgICAgICAgICAgdGl0bGU6ICdGZWhsZ2VzY2hsYWdlbicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0RhcyBGb3JtYXQgZGVyIERhdGVpIHdpcmQgbmljaHQgdW50ZXJzdMO8dHp0LicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAzNTAwXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRha2VzIGFuIGV2ZW50IGFzIGFuIGFyZ3VtZW50LCBhbmQgdGhlbiBzZXRzIHRoZSB1cmwgb2YgdGhlIGZpbGUgdG8gdGhlIGZpcnN0IGZpbGUgaW4gdGhlIGV2ZW50J3NcbiAgICogdGFyZ2V0J3MgZmlsZXMgYXJyYXlcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50IC0gYW55IC0gVGhlIGV2ZW50IHRoYXQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIGZpbGUuXG4gICAqL1xuICBzZWxlY3RGaWxlKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuY2hlY2tGaWxlKGV2ZW50LnRhcmdldC5maWxlc1swXSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jcm9wcGluZ0ltYWdlKSB7XG4gICAgICB0aGlzLmNyb3BwZWRJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgIHRoaXMuZmlsZUV2ZW50ID0gZXZlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0VXJsKGV2ZW50LnRhcmdldC5maWxlc1swXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdlIGNyZWF0ZSBhIG5ldyBGb3JtRGF0YSBvYmplY3QsIGFwcGVuZCB0aGUgc2VsZWN0ZWQgZmlsZSB0byBpdCwgYW5kIHRoZW4gc2VuZCBpdCB0byB0aGUgc2VydmVyXG4gICAqL1xuICBhc3luYyB1cGxvYWQoKSB7XG4gICAgLy8gUHJlcGFyZSBmaWxlIGRhdGFcbiAgICBsZXQgZmlsZSA9IHRoaXMuc2VsZWN0ZWRGaWxlO1xuICAgIGlmICh0aGlzLmNvbXByZXNzT3B0aW9ucykge1xuICAgICAgZmlsZSA9IGF3YWl0IHRoaXMuZmlsZVNlcnZpY2UuY29tcHJlc3MoZmlsZSwgdGhpcy5jb21wcmVzc09wdGlvbnMpO1xuICAgIH1cbiAgICBjb25zdCBmaWxlRGF0YSA9IHtcbiAgICAgIGZpZWxkOiB0aGlzLm9iamVjdFBhdGggPyB0aGlzLm9iamVjdFBhdGggKyAnLicgKyB0aGlzLmlkIDogdGhpcy5pZCxcbiAgICAgIGZpbGUsXG4gICAgICBiYXNlNjQ6IGF3YWl0IHRoaXMuZ2V0QmFzZTY0KGZpbGUpLFxuICAgIH07XG5cbiAgICAvLyBFbWl0IGZpbGUgZGF0YVxuICAgIHRoaXMuZmlsZUNoYW5nZWQuZW1pdChmaWxlRGF0YSk7XG5cbiAgICAvLyBTZXQgY29udHJvbCB2YWx1ZSBhbmQgdXBsb2FkIGRpcmVjdGx5IGlmIHJlcXVpcmVkXG4gICAgaWYgKHRoaXMudXBsb2FkRGlyZWN0bHkpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZmlsZVNlcnZpY2UudXBsb2FkKHRoaXMudXJsLCB0aGlzLnVwbG9hZFBhdGgsIHRoaXMuc2VsZWN0ZWRGaWxlKTtcbiAgICAgIGlmIChyZXN1bHQ/LmlkKSB7XG4gICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShyZXN1bHQuaWQpO1xuICAgICAgICB0aGlzLmltYWdlVXBsb2FkZWQuZW1pdChyZXN1bHQuaWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodGhpcy5tb2RlID09PSAnYmFzZTY0JyA/IGZpbGVEYXRhLmJhc2U2NCA6IHRoaXMuc2VsZWN0ZWRGaWxlKTtcbiAgICB9XG5cbiAgICAvLyBGaW5hbCBwcm9jZXNzZXNcbiAgICB0aGlzLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IGRlbGV0ZXMgdGhlIGZpbGUgZnJvbSB0aGUgc2VydmVyIGFuZCBzZXRzIHRoZSBzZWxlY3RlZEZpbGUgYW5kIGZpbGVVcmwgdG8gbnVsbFxuICAgKlxuICAgKiBAcGFyYW0gW2lkXSAtIFRoZSBpZCBvZiB0aGUgZmlsZSB0byBkZWxldGUuXG4gICAqL1xuICBhc3luYyBkZWxldGVGaWxlKGlkPzogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnVwbG9hZERpcmVjdGx5KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IG51bGw7XG4gICAgICB0aGlzLmZpbGVVcmwgPSBudWxsO1xuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgIHRoaXMuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB0aGlzLmZpbGVDaGFuZ2VkLmVtaXQoe1xuICAgICAgICBmaWVsZDogdGhpcy5vYmplY3RQYXRoID8gdGhpcy5vYmplY3RQYXRoICsgJy4nICsgdGhpcy5pZCA6IHRoaXMuaWQsXG4gICAgICAgIGZpbGU6IG51bGwsXG4gICAgICAgIGJhc2U2NDogbnVsbCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGUgPSBudWxsO1xuICAgIHRoaXMuZmlsZVVybCA9IG51bGw7XG5cbiAgICBpZiAoaWQpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZmlsZVNlcnZpY2UuZGVsZXRlKHRoaXMudXJsLCB0aGlzLmRlbGV0ZVBhdGgsIGlkKTtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGUgPSBudWxsO1xuICAgICAgICB0aGlzLmZpbGVVcmwgPSBudWxsO1xuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgICAgICB0aGlzLmltYWdlRGVsZXRlZC5lbWl0KCk7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgZmlsZSBpbnRvIGEgQkFTRTY0IGVuY29kZWQgc3RyaW5nXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0QmFzZTY0KGZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghZmlsZSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZShudWxsKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGlmICghcmVhZGVyLnJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKCdDb252ZXJzaW9uIGZhaWxlZCcpKTtcbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQudG9TdHJpbmcoKSk7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBiYXNlNjRUb0ZpbGUoYmFzZTY0OiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcsIGZpbGVUeXBlOiBzdHJpbmcpOiBQcm9taXNlPEZpbGU+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8RmlsZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgZmV0Y2goYmFzZTY0KVxuICAgICAgICAudGhlbigocmVzKSA9PiByZXMuYmxvYigpKVxuICAgICAgICAudGhlbihcbiAgICAgICAgICAoYmxvYikgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShuZXcgRmlsZShbYmxvYl0sIGZpbGVOYW1lLCB7IHR5cGU6IGZpbGVUeXBlIH0pKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGltYWdlQ3JvcHBlZCgkZXZlbnQ6IEltYWdlQ3JvcHBlZEV2ZW50LCBmaWxlRXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGZpbGUgPSBmaWxlRXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xuICAgIHRoaXMuY3JvcHBlZEZpbGUgPSBhd2FpdCB0aGlzLmJhc2U2NFRvRmlsZSgkZXZlbnQuYmFzZTY0LCBmaWxlLm5hbWUsIGZpbGUudHlwZSk7XG4gIH1cblxuICBmaW5pc2hlZENyb3BwaW5nKCkge1xuICAgIHRoaXMuZmlsZUV2ZW50ID0gbnVsbDtcbiAgICB0aGlzLnNldFVybCh0aGlzLmNyb3BwZWRGaWxlKTtcbiAgICB0aGlzLmNyb3BwZWRJblByb2dyZXNzID0gZmFsc2U7XG4gICAgdGhpcy5jcm9wcGVkRmlsZSA9IG51bGw7XG4gIH1cblxuICBsb2FkSW1hZ2VGYWlsZWQoKSB7XG4gICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyhcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdpbWFnZS1pbnZhbGlkLWNyb3BwZWQnLFxuICAgICAgICB0eXBlOiBUb2FzdFR5cGUuRVJST1IsXG4gICAgICAgIHRpdGxlOiAnRmVobGdlc2NobGFnZW4nLFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAnRXMgaXN0IGVpbiBGZWhsZXIgYXVmZ2V0cmV0ZW4uIEJpdHRlIHByb2JpZXJlbiBTaWUgZXMgc3DDpHRlciBlcm5ldXQgb2RlciB3ZW5kZW4gU2llIHNpY2ggYW4gZGVuIFN1cHBvcnQuJyxcbiAgICAgIH0sXG4gICAgICAzNTAwXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbXQtM1wiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBjb250cm9sPy5pbnZhbGlkICYmIGNvbnRyb2w/LnRvdWNoZWQgfVwiPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgIDxsYWJlbCBbZm9yXT1cImlkXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCIgW25nQ2xhc3NdPVwieyByZXF1aXJlZDogcmVxdWlyZWQgfVwiICpuZ0lmPVwibGFiZWxcIj57eyBsYWJlbCB9fTwvbGFiZWw+XG4gICAgPGkgY2xhc3M9XCJiaSBiaS1pbmZvLWNpcmNsZVwiIFtuZ2JUb29sdGlwXT1cImluZm9UZXh0XCIgcGxhY2VtZW50PVwic3RhcnRcIiAqbmdJZj1cImluZm9UZXh0XCI+PC9pPlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgW2lkXT1cIm9iamVjdFBhdGggPyBvYmplY3RQYXRoICsgJy4nICsgaWQgOiBpZFwiXG4gICAgY2xhc3M9XCJkcmFnLWFyZWFcIlxuICAgIChkcmFnb3Zlcik9XCJkcmFnT3ZlcigkZXZlbnQpXCJcbiAgICAoZHJhZ2xlYXZlKT1cImRyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAoZHJvcCk9XCJkcm9wKCRldmVudClcIlxuICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBkcmFnQWN0aXZlLCBwb2ludGVyOiAhbG9hZGluZywgJ2lzLWludmFsaWQnOiBjb250cm9sPy5pbnZhbGlkICYmIGNvbnRyb2w/LnRvdWNoZWQgfVwiXG4gICAgKGNsaWNrKT1cIiFjcm9wcGVkSW5Qcm9ncmVzcyAmJiAhbG9hZGluZyAmJiBmaWxlSW5wdXQuY2xpY2soKVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXByaW1hcnlcIiByb2xlPVwic3RhdHVzXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkRmlsZSAmJiAhZmlsZUV2ZW50ICYmICFjcm9wcGVkSW5Qcm9ncmVzcyAmJiAhbG9hZGluZ1wiPlxuICAgICAgPGltZyBbc3JjXT1cImZpbGVVcmxcIiAqbmdJZj1cInNlbGVjdGVkRmlsZVwiIC8+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImRlbGV0ZUZpbGUoKVwiIGJhc2VTdG9wUHJvcGFnYXRpb24+TMO2c2NoZW48L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sPy52YWx1ZSAmJiAhZmlsZUV2ZW50ICYmICFzZWxlY3RlZEZpbGUgJiYgIWxvYWRpbmcgJiYgIWNyb3BwZWRJblByb2dyZXNzXCI+XG4gICAgICA8aW1nIFtzcmNdPVwiY29udHJvbD8udmFsdWUuc3RhcnRzV2l0aCgnZGF0YTonKSA/IGNvbnRyb2w/LnZhbHVlIDogdXJsICsgcGF0aCArIGNvbnRyb2w/LnZhbHVlXCIgLz5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZGVsZXRlRmlsZShjb250cm9sPy52YWx1ZSlcIiBiYXNlU3RvcFByb3BhZ2F0aW9uPlxuICAgICAgICBMw7ZzY2hlblxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlbGVjdGVkRmlsZSAmJiAhY29udHJvbD8udmFsdWUgJiYgIWxvYWRpbmcgJiYgIWZpbGVFdmVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImljb25cIj5cbiAgICAgICAgPGkgY2xhc3M9XCJiaSBiaS1pbWFnZXNcIj48L2k+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXJcIj57eyBkcmFnVGV4dCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyXCJcbiAgICAgICAgPnt7IHByZUJ1dHRvblRleHQgfX1cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiBiYXNlU3RvcFByb3BhZ2F0aW9uPnt7IGJ1dHRvblRleHQgfX08L3NwYW4+PC9zcGFuXG4gICAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cInN1cHBvcnRcIiBbaW5uZXJUZXh0XT1cInN1cHBvcnRUZXh0XCI+PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgKGNoYW5nZSk9XCJzZWxlY3RGaWxlKCRldmVudClcIiBbYXR0ci5hY2NlcHRdPVwidmFsaWRFeHRlbnNpb25zPy5qb2luKCcsJylcIiBoaWRkZW4gI2ZpbGVJbnB1dCAvPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNyb3BwZWRJblByb2dyZXNzICYmIGZpbGVFdmVudFwiPlxuICAgICAgPGltYWdlLWNyb3BwZXJcbiAgICAgICAgW2ltYWdlQ2hhbmdlZEV2ZW50XT1cImZpbGVFdmVudFwiXG4gICAgICAgIFttYWludGFpbkFzcGVjdFJhdGlvXT1cImNPcHRpb25zLm1haW50YWluQXNwZWN0UmF0aW9cIlxuICAgICAgICBbYXNwZWN0UmF0aW9dPVwiY09wdGlvbnMuYXNwZWN0UmF0aW9cIlxuICAgICAgICBbYWxpZ25JbWFnZV09XCJjT3B0aW9ucy5hbGlnbkltYWdlXCJcbiAgICAgICAgW3Jlc2l6ZVRvV2lkdGhdPVwiY09wdGlvbnMucmVzaXplVG9XaWR0aFwiXG4gICAgICAgIFtyZXNpemVUb0hlaWdodF09XCJjT3B0aW9ucy5yZXNpemVUb0hlaWdodFwiXG4gICAgICAgIFthdXRvQ3JvcF09XCJjT3B0aW9ucy5hdXRvQ3JvcFwiXG4gICAgICAgIFtpbWFnZVF1YWxpdHldPVwiY09wdGlvbnMuaW1hZ2VRdWFsaXR5XCJcbiAgICAgICAgW29ubHlTY2FsZURvd25dPVwiY09wdGlvbnMub25seVNjYWxlRG93blwiXG4gICAgICAgIFtmb3JtYXRdPVwiY09wdGlvbnMuZm9ybWF0XCJcbiAgICAgICAgKGltYWdlQ3JvcHBlZCk9XCJpbWFnZUNyb3BwZWQoJGV2ZW50LCBmaWxlRXZlbnQpXCJcbiAgICAgICAgKGxvYWRJbWFnZUZhaWxlZCk9XCJsb2FkSW1hZ2VGYWlsZWQoKVwiXG4gICAgICA+PC9pbWFnZS1jcm9wcGVyPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtdC0yXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJmaW5pc2hlZENyb3BwaW5nKClcIiBiYXNlU3RvcFByb3BhZ2F0aW9uPlxuICAgICAgICBadXNjaG5laWRlblxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG0tMlwiICpuZ0lmPVwiY29udHJvbD8uaW52YWxpZCAmJiAoY29udHJvbD8uZGlydHkgfHwgY29udHJvbD8udG91Y2hlZClcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiY29udHJvbD8uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5EaWVzZXMgRmVsZCBpc3QgZWluIFBmbGljaHRmZWxkLjwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Directive, HostListener } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@lenne.tech/ng-base/shared";
|
|
4
|
-
class BackButtonDirective {
|
|
4
|
+
export class BackButtonDirective {
|
|
5
5
|
navigation;
|
|
6
6
|
constructor(navigation) {
|
|
7
7
|
this.navigation = navigation;
|
|
@@ -9,17 +9,16 @@ class BackButtonDirective {
|
|
|
9
9
|
onClick() {
|
|
10
10
|
this.navigation.back();
|
|
11
11
|
}
|
|
12
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
13
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
12
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: BackButtonDirective, deps: [{ token: i1.NavigationService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
13
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: BackButtonDirective, selector: "[baseBackButton]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
|
|
14
14
|
}
|
|
15
|
-
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: BackButtonDirective, decorators: [{
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: BackButtonDirective, decorators: [{
|
|
17
16
|
type: Directive,
|
|
18
17
|
args: [{
|
|
19
18
|
selector: '[baseBackButton]',
|
|
20
19
|
}]
|
|
21
|
-
}], ctorParameters:
|
|
20
|
+
}], ctorParameters: () => [{ type: i1.NavigationService }], propDecorators: { onClick: [{
|
|
22
21
|
type: HostListener,
|
|
23
22
|
args: ['click']
|
|
24
23
|
}] } });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFjay1idXR0b24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLWNvbXBvbmVudHMvZGlyZWN0aXZlcy9iYWNrLWJ1dHRvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU14RCxNQUFNLE9BQU8sbUJBQW1CO0lBQ1Y7SUFBcEIsWUFBb0IsVUFBNkI7UUFBN0IsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7SUFBRyxDQUFDO0lBR3JELE9BQU87UUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7dUdBTlUsbUJBQW1COzJGQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtpQkFDN0I7c0ZBS0MsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICdAbGVubmUudGVjaC9uZy1iYXNlL3NoYXJlZCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tiYXNlQmFja0J1dHRvbl0nLFxufSlcbmV4cG9ydCBjbGFzcyBCYWNrQnV0dG9uRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uU2VydmljZSkge31cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5uYXZpZ2F0aW9uLmJhY2soKTtcbiAgfVxufVxuIl19
|
|
@@ -4,7 +4,7 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
* Directive vor context menu
|
|
5
5
|
* See https://stackblitz.com/edit/angular-custom-context-menu
|
|
6
6
|
*/
|
|
7
|
-
class ContextMenuDirective {
|
|
7
|
+
export class ContextMenuDirective {
|
|
8
8
|
el;
|
|
9
9
|
contextMenuData;
|
|
10
10
|
ltContextMenu;
|
|
@@ -84,17 +84,16 @@ class ContextMenuDirective {
|
|
|
84
84
|
cm.style['pointer-events'] = 'none';
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
88
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
87
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: ContextMenuDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
88
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: ContextMenuDirective, selector: "[ltContextMenu]", inputs: { contextMenuData: "contextMenuData", ltContextMenu: "ltContextMenu", xGap: "xGap", yGap: "yGap", overflowSpace: "overflowSpace", selectors: "selectors" }, outputs: { clickedElement: "clickedElement" }, exportAs: ["contextMenuData"], ngImport: i0 });
|
|
89
89
|
}
|
|
90
|
-
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ContextMenuDirective, decorators: [{
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: ContextMenuDirective, decorators: [{
|
|
92
91
|
type: Directive,
|
|
93
92
|
args: [{
|
|
94
93
|
selector: '[ltContextMenu]',
|
|
95
94
|
exportAs: 'contextMenuData',
|
|
96
95
|
}]
|
|
97
|
-
}], ctorParameters:
|
|
96
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { contextMenuData: [{
|
|
98
97
|
type: Input
|
|
99
98
|
}], ltContextMenu: [{
|
|
100
99
|
type: Input
|
|
@@ -109,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
109
108
|
}], clickedElement: [{
|
|
110
109
|
type: Output
|
|
111
110
|
}] } });
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2UvYmFzZS1jb21wb25lbnRzL2RpcmVjdGl2ZXMvY29udGV4dC1tZW51LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTdFOzs7R0FHRztBQUtILE1BQU0sT0FBTyxvQkFBb0I7SUFVWDtJQVRYLGVBQWUsQ0FBTztJQUN0QixhQUFhLENBQWM7SUFDM0IsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNULElBQUksR0FBRyxDQUFDLENBQUM7SUFDVCxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ25CLFNBQVMsR0FBRyxHQUFHLENBQUM7SUFDZixjQUFjLEdBQVksSUFBSSxDQUFDO0lBQ3pDLHFCQUFxQixHQUFXLElBQUksQ0FBQztJQUVyQyxZQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtJQUFHLENBQUM7SUFFdEMsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQy9EO1FBRUQsc0NBQXNDO1FBQ3RDLHNEQUFzRDtRQUN0RCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUVILDRDQUE0QztRQUM1QyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFD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R0F6RlUsb0JBQW9COzJGQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBSmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUI7K0VBRVUsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB2b3IgY29udGV4dCBtZW51XG4gKiBTZWUgaHR0cHM6Ly9zdGFja2JsaXR6LmNvbS9lZGl0L2FuZ3VsYXItY3VzdG9tLWNvbnRleHQtbWVudVxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbHRDb250ZXh0TWVudV0nLFxuICBleHBvcnRBczogJ2NvbnRleHRNZW51RGF0YScsXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRNZW51RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgY29udGV4dE1lbnVEYXRhPzogYW55O1xuICBASW5wdXQoKSBsdENvbnRleHRNZW51OiBIVE1MRWxlbWVudDtcbiAgQElucHV0KCkgeEdhcCA9IDA7XG4gIEBJbnB1dCgpIHlHYXAgPSAwO1xuICBASW5wdXQoKSBvdmVyZmxvd1NwYWNlID0gMTA7XG4gIEBJbnB1dCgpIHNlbGVjdG9ycyA9ICcqJztcbiAgQE91dHB1dCgpIGNsaWNrZWRFbGVtZW50OiBFbGVtZW50ID0gbnVsbDtcbiAgcHJldmlvdXNEaXNwbGF5U3RhdHVzOiBzdHJpbmcgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMubHRDb250ZXh0TWVudSkge1xuICAgICAgdGhpcy5wcmV2aW91c0Rpc3BsYXlTdGF0dXMgPSB0aGlzLmx0Q29udGV4dE1lbnUuc3R5bGUuZGlzcGxheTtcbiAgICB9XG5cbiAgICAvLyBBZGQgYSBjbGljayBsaXN0ZW5lciB0byB0aGUgd2luZG93LFxuICAgIC8vIHNvIHRoYXQgd2UgY2FuIGNsb3NlIHRoZSBjb250ZXh0IG1lbnUgb24gbGVmdCBjbGlja1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHRoaXMuc2hvd0NvbnRleHRNZW51KG51bGwsIGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIENsb3NlIGNvbnRleHQgbWVudSB3aGVuIGVzY2FwZSBpcyBwcmVzc2VkXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZSkgPT4ge1xuICAgICAgaWYgKGUuY29kZSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgdGhpcy5zaG93Q29udGV4dE1lbnUobnVsbCwgZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gQWRkIGFuIGV2ZW50IGxpc3RlbmVyIHRvIGxpc3RlbiB0byB0aGUgJ2NvbnRleHRtZW51JyBldmVudFxuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIChlKSA9PiB7XG4gICAgICAvLyBQcmV2ZW50IHRoZSBkZWZhdWx0IGNvbnRleHQgbWVudSB0byBwb3B1cFxuICAgICAgaWYgKGUucHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgICAgLy8gU2hvd3Mgb3VyIG93biBjb250ZXh0IG1lbnVcbiAgICAgIHRoaXMuc2hvd0NvbnRleHRNZW51KGUsIHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gU2hvd3Mgb3IgaGlkZXMgb3VyIGN1c3RvbSBjb250ZXh0IG1lbnUsIHdoaWNoIGlzIHNwZWNpZmllZCBhcyBhIGlucHV0XG4gIHNob3dDb250ZXh0TWVudShldmVudCwgc2hvdzogYm9vbGVhbikge1xuICAgIGNvbnN0IGNtID0gdGhpcy5sdENvbnRleHRNZW51O1xuICAgIGlmIChjbSkge1xuICAgICAgLy8gVHJ5IHRvIG9wZW4gY29udGV4dCBtZW51XG4gICAgICBpZiAoc2hvdyAmJiBldmVudCAmJiBldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpIHtcbiAgICAgICAgLy8gR2V0IHZhbGlkIGNsaWNrZWQgc3RydWN0dXJlRWxlbWVudFxuICAgICAgICBjb25zdCBjbGlja2VkRWxlbWVudCA9IChldmVudD8udGFyZ2V0IGFzIEhUTUxFbGVtZW50KT8uY2xvc2VzdCh0aGlzLnNlbGVjdG9ycyk7XG4gICAgICAgIGlmIChjbGlja2VkRWxlbWVudCkge1xuICAgICAgICAgIHRoaXMuY2xpY2tlZEVsZW1lbnQgPSBjbGlja2VkRWxlbWVudDtcblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLy8gU2V0IGRpc3BsYXkgc3RhdHVzXG4gICAgICAgICAgICBjbS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRvcCBwb3NpdGlvblxuICAgICAgICAgICAgbGV0IHRvcCA9IGV2ZW50LnkgKyB0aGlzLnlHYXA7XG4gICAgICAgICAgICBpZiAodG9wICsgY20ub2Zmc2V0SGVpZ2h0ICsgMTAgPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSB7XG4gICAgICAgICAgICAgIHRvcCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgLSBjbS5vZmZzZXRIZWlnaHQgLSB0aGlzLm92ZXJmbG93U3BhY2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBsZWZ0IHBvc2l0aW9uXG4gICAgICAgICAgICBsZXQgbGVmdCA9IGV2ZW50LnggKyB0aGlzLnhHYXA7XG4gICAgICAgICAgICBpZiAobGVmdCArIGNtLm9mZnNldFdpZHRoICsgMTAgPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpIHtcbiAgICAgICAgICAgICAgbGVmdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCAtIGNtLm9mZnNldFdpZHRoIC0gdGhpcy5vdmVyZmxvd1NwYWNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTZXQgcG9zaXRpb25cbiAgICAgICAgICAgIGNtLnN0eWxlLnRvcCA9IHRvcCArICdweCc7XG4gICAgICAgICAgICBjbS5zdHlsZS5sZWZ0ID0gbGVmdCArICdweCc7XG5cbiAgICAgICAgICAgIC8vIFNob3dcbiAgICAgICAgICAgIGNtLnN0eWxlLm9wYWNpdHkgPSAnMS4wJztcbiAgICAgICAgICAgIGNtLnN0eWxlWydwb2ludGVyLWV2ZW50cyddID0gJ2F1dG8nO1xuICAgICAgICAgIH0sIDEpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENsb3NlIGNvbnRleHQgbWVudVxuICAgICAgdGhpcy5jbGlja2VkRWxlbWVudCA9IG51bGw7XG4gICAgICBpZiAodGhpcy5wcmV2aW91c0Rpc3BsYXlTdGF0dXMpIHtcbiAgICAgICAgY20uc3R5bGUuZGlzcGxheSA9IHRoaXMucHJldmlvdXNEaXNwbGF5U3RhdHVzO1xuICAgICAgfVxuICAgICAgY20uc3R5bGUub3BhY2l0eSA9ICcwLjAxJztcbiAgICAgIGNtLnN0eWxlWydwb2ludGVyLWV2ZW50cyddID0gJ25vbmUnO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -2,7 +2,7 @@ import { Directive, EventEmitter, HostListener, Inject, Input, Output } from '@a
|
|
|
2
2
|
import { DOCUMENT } from '@angular/common';
|
|
3
3
|
import { Sort } from '@lenne.tech/ng-base/shared';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
class SortDirective {
|
|
5
|
+
export class SortDirective {
|
|
6
6
|
renderer;
|
|
7
7
|
targetElem;
|
|
8
8
|
baseSort;
|
|
@@ -38,19 +38,18 @@ class SortDirective {
|
|
|
38
38
|
elem.classList.add('desc');
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
42
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
41
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SortDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });
|
|
42
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: SortDirective, selector: "[baseSort]", inputs: { baseSort: "baseSort" }, outputs: { baseSorted: "baseSorted" }, host: { listeners: { "click": "sortColumn()" } }, ngImport: i0 });
|
|
43
43
|
}
|
|
44
|
-
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SortDirective, decorators: [{
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SortDirective, decorators: [{
|
|
46
45
|
type: Directive,
|
|
47
46
|
args: [{
|
|
48
47
|
selector: '[baseSort]',
|
|
49
48
|
}]
|
|
50
|
-
}], ctorParameters:
|
|
49
|
+
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: Document, decorators: [{
|
|
51
50
|
type: Inject,
|
|
52
51
|
args: [DOCUMENT]
|
|
53
|
-
}] }]
|
|
52
|
+
}] }], propDecorators: { baseSort: [{
|
|
54
53
|
type: Input
|
|
55
54
|
}], baseSorted: [{
|
|
56
55
|
type: Output
|
|
@@ -58,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
58
57
|
type: HostListener,
|
|
59
58
|
args: ['click']
|
|
60
59
|
}] } });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY29tcG9uZW50cy9kaXJlY3RpdmVzL3NvcnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUtsRCxNQUFNLE9BQU8sYUFBYTtJQUdKO0lBQTZCO0lBRnhDLFFBQVEsQ0FBYTtJQUNwQixVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQUN0RCxZQUFvQixRQUFtQixFQUFVLFVBQXNCLEVBQW9CLFFBQWtCO1FBQXpGLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQXlDLENBQUM7SUFFakg7O09BRUc7SUFFSCxVQUFVO1FBQ1IsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ25DO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUV4QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUUzQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTlDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFNUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxJQUFJLEtBQUssS0FBSyxNQUFNLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7dUdBcENVLGFBQWEscUVBR3lELFFBQVE7MkZBSDlFLGFBQWE7OzJGQUFiLGFBQWE7a0JBSHpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7aUJBQ3ZCOzswQkFJMkUsTUFBTTsyQkFBQyxRQUFRO3lDQUZoRixRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU07Z0JBT1AsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPdXRwdXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU29ydCB9IGZyb20gJ0BsZW5uZS50ZWNoL25nLWJhc2Uvc2hhcmVkJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Jhc2VTb3J0XScsXG59KVxuZXhwb3J0IGNsYXNzIFNvcnREaXJlY3RpdmUge1xuICBASW5wdXQoKSBiYXNlU29ydDogQXJyYXk8YW55PjtcbiAgQE91dHB1dCgpIGJhc2VTb3J0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PGFueT4+KCk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSB0YXJnZXRFbGVtOiBFbGVtZW50UmVmLCBASW5qZWN0KERPQ1VNRU5UKSBkb2N1bWVudDogRG9jdW1lbnQpIHt9XG5cbiAgLyoqXG4gICAqIFNvcnRzIGNvbHVtbnMgb24gY2xpY2tcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgc29ydENvbHVtbigpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0aCcpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGl0ZW1zW2ldLmNsYXNzTGlzdC5yZW1vdmUoJ2FzYycpO1xuICAgICAgaXRlbXNbaV0uY2xhc3NMaXN0LnJlbW92ZSgnZGVzYycpO1xuICAgIH1cblxuICAgIGNvbnN0IHNvcnQgPSBuZXcgU29ydCgpO1xuXG4gICAgY29uc3QgZWxlbSA9IHRoaXMudGFyZ2V0RWxlbS5uYXRpdmVFbGVtZW50O1xuXG4gICAgY29uc3Qgb3JkZXIgPSBlbGVtLmdldEF0dHJpYnV0ZSgnZGF0YS1vcmRlcicpO1xuXG4gICAgY29uc3QgdHlwZSA9IGVsZW0uZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKTtcblxuICAgIGNvbnN0IHByb3BlcnR5ID0gZWxlbS5nZXRBdHRyaWJ1dGUoJ2RhdGEtbmFtZScpO1xuICAgIGlmIChvcmRlciA9PT0gJ2Rlc2MnKSB7XG4gICAgICB0aGlzLmJhc2VTb3J0ZWQuZW1pdChbLi4udGhpcy5iYXNlU29ydF0uc29ydChzb3J0LnN0YXJ0U29ydChwcm9wZXJ0eSwgb3JkZXIsIHR5cGUpKSk7XG4gICAgICBlbGVtLnNldEF0dHJpYnV0ZSgnZGF0YS1vcmRlcicsICdhc2MnKTtcbiAgICAgIGVsZW0uY2xhc3NMaXN0LnJlbW92ZSgnZGVzYycpO1xuICAgICAgZWxlbS5jbGFzc0xpc3QuYWRkKCdhc2MnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iYXNlU29ydGVkLmVtaXQoWy4uLnRoaXMuYmFzZVNvcnRdLnNvcnQoc29ydC5zdGFydFNvcnQocHJvcGVydHksIG9yZGVyLCB0eXBlKSkpO1xuICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoJ2RhdGEtb3JkZXInLCAnZGVzYycpO1xuICAgICAgZWxlbS5jbGFzc0xpc3QucmVtb3ZlKCdhc2MnKTtcbiAgICAgIGVsZW0uY2xhc3NMaXN0LmFkZCgnZGVzYycpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -4,15 +4,14 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
* Stops propagation of click events
|
|
5
5
|
* Inspired by https://stackoverflow.com/a/41001184
|
|
6
6
|
*/
|
|
7
|
-
class StopPropagationDirective {
|
|
7
|
+
export class StopPropagationDirective {
|
|
8
8
|
onClick(event) {
|
|
9
9
|
event.stopPropagation();
|
|
10
10
|
}
|
|
11
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
11
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: StopPropagationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
12
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: StopPropagationDirective, selector: "[baseStopPropagation]", host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 });
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: StopPropagationDirective, decorators: [{
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: StopPropagationDirective, decorators: [{
|
|
16
15
|
type: Directive,
|
|
17
16
|
args: [{
|
|
18
17
|
selector: '[baseStopPropagation]',
|
|
@@ -21,4 +20,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
21
20
|
type: HostListener,
|
|
22
21
|
args: ['click', ['$event']]
|
|
23
22
|
}] } });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcC1wcm9wYWdhdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY29tcG9uZW50cy9kaXJlY3RpdmVzL3N0b3AtcHJvcGFnYXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV4RDs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sd0JBQXdCO0lBRTVCLE9BQU8sQ0FBQyxLQUFVO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDO3VHQUpVLHdCQUF3QjsyRkFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7aUJBQ2xDOzhCQUdRLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFN0b3BzIHByb3BhZ2F0aW9uIG9mIGNsaWNrIGV2ZW50c1xuICogSW5zcGlyZWQgYnkgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQxMDAxMTg0XG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tiYXNlU3RvcFByb3BhZ2F0aW9uXScsXG59KVxuZXhwb3J0IGNsYXNzIFN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSB7XG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG59XG4iXX0=
|
|
@@ -3,21 +3,20 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
/**
|
|
4
4
|
* Truncate string with ellipses
|
|
5
5
|
*/
|
|
6
|
-
class EllipsesPipe {
|
|
6
|
+
export class EllipsesPipe {
|
|
7
7
|
transform(value, limit) {
|
|
8
8
|
if (!value) {
|
|
9
9
|
return null;
|
|
10
10
|
}
|
|
11
11
|
return value.length > limit ? value.substring(0, limit) + '...' : value;
|
|
12
12
|
}
|
|
13
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
14
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
13
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: EllipsesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
14
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.4", ngImport: i0, type: EllipsesPipe, name: "baseEllipses" });
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: EllipsesPipe, decorators: [{
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: EllipsesPipe, decorators: [{
|
|
18
17
|
type: Pipe,
|
|
19
18
|
args: [{
|
|
20
19
|
name: 'baseEllipses',
|
|
21
20
|
}]
|
|
22
21
|
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzZXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2UvYmFzZS1jb21wb25lbnRzL3BpcGVzL2VsbGlwc2VzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBRXBEOztHQUVHO0FBSUgsTUFBTSxPQUFPLFlBQVk7SUFDdkIsU0FBUyxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDMUUsQ0FBQzt1R0FQVSxZQUFZO3FHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBSHhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGNBQWM7aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFRydW5jYXRlIHN0cmluZyB3aXRoIGVsbGlwc2VzXG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogJ2Jhc2VFbGxpcHNlcycsXG59KVxuZXhwb3J0IGNsYXNzIEVsbGlwc2VzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgbGltaXQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IGxpbWl0ID8gdmFsdWUuc3Vic3RyaW5nKDAsIGxpbWl0KSArICcuLi4nIDogdmFsdWU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -23,9 +23,9 @@ const elements = [
|
|
|
23
23
|
SetPasswordComponent,
|
|
24
24
|
EmailVerificationComponent,
|
|
25
25
|
];
|
|
26
|
-
class BasePrototypeModule {
|
|
27
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
28
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
26
|
+
export class BasePrototypeModule {
|
|
27
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: BasePrototypeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
28
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.4", ngImport: i0, type: BasePrototypeModule, declarations: [
|
|
29
29
|
// Components
|
|
30
30
|
LoginComponent,
|
|
31
31
|
RegisterComponent,
|
|
@@ -40,10 +40,9 @@ class BasePrototypeModule {
|
|
|
40
40
|
ProfileComponent,
|
|
41
41
|
SetPasswordComponent,
|
|
42
42
|
EmailVerificationComponent] });
|
|
43
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
43
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: BasePrototypeModule, imports: [imports] });
|
|
44
44
|
}
|
|
45
|
-
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: BasePrototypeModule, decorators: [{
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: BasePrototypeModule, decorators: [{
|
|
47
46
|
type: NgModule,
|
|
48
47
|
args: [{
|
|
49
48
|
declarations: elements,
|
|
@@ -51,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
|
|
|
51
50
|
exports: elements,
|
|
52
51
|
}]
|
|
53
52
|
}] });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcm90b3R5cGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLXByb3RvdHlwZS9iYXNlLXByb3RvdHlwZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDOztBQUVyRyxVQUFVO0FBQ1YsTUFBTSxPQUFPLEdBQUcsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztBQUVqSCxpQ0FBaUM7QUFDakMsTUFBTSxRQUFRLEdBQUc7SUFDZixhQUFhO0lBQ2IsY0FBYztJQUNkLGlCQUFpQjtJQUNqQix1QkFBdUI7SUFDdkIsZ0JBQWdCO0lBQ2hCLG9CQUFvQjtJQUNwQiwwQkFBMEI7Q0FDM0IsQ0FBQztBQU9GLE1BQU0sT0FBTyxtQkFBbUI7dUdBQW5CLG1CQUFtQjt3R0FBbkIsbUJBQW1CO1lBZDlCLGFBQWE7WUFDYixjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLHVCQUF1QjtZQUN2QixnQkFBZ0I7WUFDaEIsb0JBQW9CO1lBQ3BCLDBCQUEwQixhQVZYLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxvQkFBb0I7WUFJN0csYUFBYTtZQUNiLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsdUJBQXVCO1lBQ3ZCLGdCQUFnQjtZQUNoQixvQkFBb0I7WUFDcEIsMEJBQTBCO3dHQVFmLG1CQUFtQixZQUg5QixPQUFPOzsyRkFHSSxtQkFBbUI7a0JBTC9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLFFBQVE7b0JBQ3RCLE9BQU87b0JBQ1AsT0FBTyxFQUFFLFFBQVE7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEJhc2VNb2R1bGUgfSBmcm9tICdAbGVubmUudGVjaC9uZy1iYXNlJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnRzTW9kdWxlIH0gZnJvbSAnQGxlbm5lLnRlY2gvbmctYmFzZS9iYXNlLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBMb2dpbkNvbXBvbmVudCB9IGZyb20gJy4vcGFnZXMvbG9naW4vbG9naW4uY29tcG9uZW50JztcbmltcG9ydCB7IFJlZ2lzdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdlcy9yZWdpc3Rlci9yZWdpc3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9yZ290UGFzc3dvcmRDb21wb25lbnQgfSBmcm9tICcuL3BhZ2VzL2ZvcmdvdC1wYXNzd29yZC9mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFByb2ZpbGVDb21wb25lbnQgfSBmcm9tICcuL3BhZ2VzL3Byb2ZpbGUvcHJvZmlsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2V0UGFzc3dvcmRDb21wb25lbnQgfSBmcm9tICcuL3BhZ2VzL3NldC1wYXNzd29yZC9zZXQtcGFzc3dvcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEVtYWlsVmVyaWZpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdlcy9lbWFpbC12ZXJpZmljYXRpb24vZW1haWwtdmVyaWZpY2F0aW9uLmNvbXBvbmVudCc7XG5cbi8vIE1vZHVsZXNcbmNvbnN0IGltcG9ydHMgPSBbQmFzZU1vZHVsZSwgRm9ybXNNb2R1bGUsIFJvdXRlck1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgQ29tbW9uTW9kdWxlLCBCYXNlQ29tcG9uZW50c01vZHVsZV07XG5cbi8vIEltcG9ydGVkIGFuZCBleHBvcnRlZCBlbGVtZW50c1xuY29uc3QgZWxlbWVudHMgPSBbXG4gIC8vIENvbXBvbmVudHNcbiAgTG9naW5Db21wb25lbnQsXG4gIFJlZ2lzdGVyQ29tcG9uZW50LFxuICBGb3Jnb3RQYXNzd29yZENvbXBvbmVudCxcbiAgUHJvZmlsZUNvbXBvbmVudCxcbiAgU2V0UGFzc3dvcmRDb21wb25lbnQsXG4gIEVtYWlsVmVyaWZpY2F0aW9uQ29tcG9uZW50LFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBlbGVtZW50cyxcbiAgaW1wb3J0cyxcbiAgZXhwb3J0czogZWxlbWVudHMsXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VQcm90b3R5cGVNb2R1bGUge31cbiJdfQ==
|
|
@@ -4,7 +4,7 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
import * as i1 from "@angular/router";
|
|
5
5
|
import * as i2 from "@lenne.tech/ng-base/shared";
|
|
6
6
|
import * as i3 from "@angular/common";
|
|
7
|
-
class EmailVerificationComponent {
|
|
7
|
+
export class EmailVerificationComponent {
|
|
8
8
|
route;
|
|
9
9
|
userService;
|
|
10
10
|
toastService;
|
|
@@ -51,12 +51,11 @@ class EmailVerificationComponent {
|
|
|
51
51
|
},
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
55
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
54
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: EmailVerificationComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.UserService }, { token: i2.ToastService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: EmailVerificationComponent, selector: "base-email-verification", ngImport: i0, template: "<div class=\"d-flex justify-content-center align-items-center h-100 py-5\">\n <div class=\"d-flex flex-column verification-container\">\n <div class=\"container text-center\">\n <h2 class=\"mb-4\">E-Mail best\u00E4tigen</h2>\n\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"mode === 'ERROR'\">\n Etwas ist schiefgelaufen und wir konnten Deine E-Mail leider nicht verifizieren. Bitte probiere es sp\u00E4ter erneut\n oder wende dich an den Support.\n </div>\n\n <div class=\"alert alert-success\" role=\"alert\" *ngIf=\"mode === 'SUCCESS'\">\n Deine E-Mail wurde erfolgreich verifiziert. Du wirst nun weitergeleitet.\n </div>\n\n <div class=\"d-flex justify-content-center align-items-center\" *ngIf=\"loading\">\n <div class=\"spinner-border text-secondary\" role=\"status\">\n <span class=\"visually-hidden\">Loading...</span>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".verification-container{width:100%;padding:20px 0}@media (min-width: 768px){.verification-container{max-width:500px}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
56
56
|
}
|
|
57
|
-
|
|
58
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: EmailVerificationComponent, decorators: [{
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: EmailVerificationComponent, decorators: [{
|
|
59
58
|
type: Component,
|
|
60
59
|
args: [{ selector: 'base-email-verification', template: "<div class=\"d-flex justify-content-center align-items-center h-100 py-5\">\n <div class=\"d-flex flex-column verification-container\">\n <div class=\"container text-center\">\n <h2 class=\"mb-4\">E-Mail best\u00E4tigen</h2>\n\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"mode === 'ERROR'\">\n Etwas ist schiefgelaufen und wir konnten Deine E-Mail leider nicht verifizieren. Bitte probiere es sp\u00E4ter erneut\n oder wende dich an den Support.\n </div>\n\n <div class=\"alert alert-success\" role=\"alert\" *ngIf=\"mode === 'SUCCESS'\">\n Deine E-Mail wurde erfolgreich verifiziert. Du wirst nun weitergeleitet.\n </div>\n\n <div class=\"d-flex justify-content-center align-items-center\" *ngIf=\"loading\">\n <div class=\"spinner-border text-secondary\" role=\"status\">\n <span class=\"visually-hidden\">Loading...</span>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".verification-container{width:100%;padding:20px 0}@media (min-width: 768px){.verification-container{max-width:500px}}\n"] }]
|
|
61
|
-
}], ctorParameters:
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.UserService }, { type: i2.ToastService }, { type: i1.Router }] });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtdmVyaWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2UvYmFzZS1wcm90b3R5cGUvcGFnZXMvZW1haWwtdmVyaWZpY2F0aW9uL2VtYWlsLXZlcmlmaWNhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtcHJvdG90eXBlL3BhZ2VzL2VtYWlsLXZlcmlmaWNhdGlvbi9lbWFpbC12ZXJpZmljYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQWdCLFNBQVMsRUFBZSxNQUFNLDRCQUE0QixDQUFDOzs7OztBQU9sRixNQUFNLE9BQU8sMEJBQTBCO0lBTTNCO0lBQ0E7SUFDQTtJQUNBO0lBUlYsS0FBSyxDQUFTO0lBQ2QsSUFBSSxDQUFzQjtJQUMxQixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBRWhCLFlBQ1UsS0FBcUIsRUFDckIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsTUFBYztRQUhkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7UUFFL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztZQUNwQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2hELElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLFFBQVEsRUFBRTtvQkFDWixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQzt3QkFDckIsRUFBRSxFQUFFLDRCQUE0Qjt3QkFDaEMsS0FBSyxFQUFFLGFBQWE7d0JBQ3BCLFdBQVcsRUFBRSwrQ0FBK0M7d0JBQzVELElBQUksRUFBRSxTQUFTLENBQUMsT0FBTztxQkFDeEIsQ0FBQyxDQUFDO29CQUVILElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO29CQUV0QixVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDOUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUNWO3FCQUFNO29CQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO2lCQUNyQjtnQkFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUN2QixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztZQUN0QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0FqRFUsMEJBQTBCOzJGQUExQiwwQkFBMEIsK0RDVHZDLDg4QkFzQkE7OzJGRGJhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UsIFRvYXN0VHlwZSwgVXNlclNlcnZpY2UgfSBmcm9tICdAbGVubmUudGVjaC9uZy1iYXNlL3NoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Jhc2UtZW1haWwtdmVyaWZpY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VtYWlsLXZlcmlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VtYWlsLXZlcmlmaWNhdGlvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBFbWFpbFZlcmlmaWNhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHRva2VuOiBzdHJpbmc7XG4gIG1vZGU6ICdFUlJPUicgfCAnU1VDQ0VTUyc7XG4gIGxvYWRpbmcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudG9rZW4gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcz8udG9rZW47XG5cbiAgICBpZiAoIXRoaXMudG9rZW4pIHtcbiAgICAgIHRoaXMubW9kZSA9ICdFUlJPUic7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy52ZXJpZnlVc2VyKCk7XG4gIH1cblxuICB2ZXJpZnlVc2VyKCkge1xuICAgIHRoaXMudXNlclNlcnZpY2UudmVyaWZ5VXNlcih0aGlzLnRva2VuKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coe1xuICAgICAgICAgICAgaWQ6ICdlbWFpbC12ZXJpZmljYXRpb24tc3VjY2VzcycsXG4gICAgICAgICAgICB0aXRsZTogJ0VyZm9sZ3JlaWNoJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRHUgaGFzdCBkZWluZSBFLU1haWwgZXJmb2xncmVpY2ggdmVyaWZpemllcnQuJyxcbiAgICAgICAgICAgIHR5cGU6IFRvYXN0VHlwZS5TVUNDRVNTLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy5tb2RlID0gJ1NVQ0NFU1MnO1xuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XG4gICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tb2RlID0gJ0VSUk9SJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMubW9kZSA9ICdFUlJPUic7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGgtMTAwIHB5LTVcIj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiB2ZXJpZmljYXRpb24tY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lciB0ZXh0LWNlbnRlclwiPlxuICAgICAgPGgyIGNsYXNzPVwibWItNFwiPkUtTWFpbCBiZXN0w6R0aWdlbjwvaDI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXJcIiByb2xlPVwiYWxlcnRcIiAqbmdJZj1cIm1vZGUgPT09ICdFUlJPUidcIj5cbiAgICAgICAgRXR3YXMgaXN0IHNjaGllZmdlbGF1ZmVuIHVuZCB3aXIga29ubnRlbiBEZWluZSBFLU1haWwgbGVpZGVyIG5pY2h0IHZlcmlmaXppZXJlbi4gQml0dGUgcHJvYmllcmUgZXMgc3DDpHRlciBlcm5ldXRcbiAgICAgICAgb2RlciB3ZW5kZSBkaWNoIGFuIGRlbiBTdXBwb3J0LlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1zdWNjZXNzXCIgcm9sZT1cImFsZXJ0XCIgKm5nSWY9XCJtb2RlID09PSAnU1VDQ0VTUydcIj5cbiAgICAgICAgRGVpbmUgRS1NYWlsIHd1cmRlIGVyZm9sZ3JlaWNoIHZlcmlmaXppZXJ0LiBEdSB3aXJzdCBudW4gd2VpdGVyZ2VsZWl0ZXQuXG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgdGV4dC1zZWNvbmRhcnlcIiByb2xlPVwic3RhdHVzXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|