ngx-material-entity 15.2.9 → 15.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/edit-page/edit-page.component.d.ts +3 -1
- package/components/input/array/array-table.class.d.ts +3 -1
- package/components/input/file/file-default-input/file-default-input.component.d.ts +0 -2
- package/components/input/file/file-image-input/file-image-input.component.d.ts +3 -2
- package/components/input/file/file-input/file-input.component.d.ts +3 -1
- package/components/input/input.component.d.ts +7 -3
- package/components/input/input.module.d.ts +2 -1
- package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +3 -1
- package/decorators/base/property-decorator.data.d.ts +2 -2
- package/esm2020/components/edit-page/edit-page.component.mjs +16 -13
- package/esm2020/components/input/array/array-table.class.mjs +8 -5
- package/esm2020/components/input/file/file-default-input/file-default-input.component.mjs +1 -6
- package/esm2020/components/input/file/file-image-input/file-image-input.component.mjs +14 -12
- package/esm2020/components/input/file/file-input/file-input.component.mjs +17 -14
- package/esm2020/components/input/input.component.mjs +57 -48
- package/esm2020/components/input/input.module.mjs +8 -4
- package/esm2020/components/table/edit-dialog/edit-entity-dialog.component.mjs +14 -11
- package/esm2020/decorators/base/property-decorator.data.mjs +1 -1
- package/esm2020/services/entity.service.mjs +6 -6
- package/esm2020/utilities/entity.utilities.mjs +21 -12
- package/esm2020/utilities/file.utilities.mjs +15 -11
- package/fesm2015/ngx-material-entity.mjs +169 -147
- package/fesm2015/ngx-material-entity.mjs.map +1 -1
- package/fesm2020/ngx-material-entity.mjs +169 -147
- package/fesm2020/ngx-material-entity.mjs.map +1 -1
- package/package.json +1 -1
- package/utilities/entity.utilities.d.ts +7 -3
- package/utilities/file.utilities.d.ts +6 -2
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
/* eslint-disable jsdoc/require-jsdoc */
|
|
2
2
|
import { Component } from '@angular/core';
|
|
3
|
-
import { FileUtilities } from '../../../../utilities/file.utilities';
|
|
4
3
|
import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
import * as i1 from "../file-input/file-input.component";
|
|
7
6
|
export class FileDefaultInputComponent extends NgxMatEntityBaseInputComponent {
|
|
8
|
-
constructor() {
|
|
9
|
-
super(...arguments);
|
|
10
|
-
this.FileUtilities = FileUtilities;
|
|
11
|
-
}
|
|
12
7
|
async refreshFileData(fileData) {
|
|
13
8
|
this.propertyValue = fileData;
|
|
14
9
|
this.emitChange();
|
|
@@ -20,4 +15,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImpor
|
|
|
20
15
|
type: Component,
|
|
21
16
|
args: [{ selector: 'file-default-input', template: "<div [class.file-input]=\"metadata.dragAndDrop\" [class.mat-elevation-z8]=\"metadata.dragAndDrop\">\n <file-input\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n >\n </file-input>\n</div>", styles: [".file-input{margin-top:15px;margin-bottom:15px;padding:15px;border-radius:5px}\n"] }]
|
|
22
17
|
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kZWZhdWx0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZmlsZS9maWxlLWRlZmF1bHQtaW5wdXQvZmlsZS1kZWZhdWx0LWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZmlsZS9maWxlLWRlZmF1bHQtaW5wdXQvZmlsZS1kZWZhdWx0LWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3QztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBSWxELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFRNUUsTUFBTSxPQUFPLHlCQUNULFNBQVEsOEJBQThGO0lBRXRHLEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBZ0M7UUFDbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7O3NIQU5RLHlCQUF5QjswR0FBekIseUJBQXlCLGlGQ2J0QywyYkFXTTsyRkRFTyx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBRUksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUganNkb2MvcmVxdWlyZS1qc2RvYyAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRGVjb3JhdG9yVHlwZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2Jhc2UvZGVjb3JhdG9yLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgRmlsZURhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2ZpbGUvZmlsZS1kZWNvcmF0b3IuZGF0YSc7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlCYXNlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlLWlucHV0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdmaWxlLWRlZmF1bHQtaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWxlLWRlZmF1bHQtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbGUtZGVmYXVsdC1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVEZWZhdWx0SW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50PEVudGl0eVR5cGUsIERlY29yYXRvclR5cGVzLkZJTEVfREVGQVVMVCwgRmlsZURhdGEgfCBGaWxlRGF0YVtdPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBhc3luYyByZWZyZXNoRmlsZURhdGEoZmlsZURhdGE/OiBGaWxlRGF0YSB8IEZpbGVEYXRhW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlID0gZmlsZURhdGE7XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICAgIH1cbn0iLCI8ZGl2IFtjbGFzcy5maWxlLWlucHV0XT1cIm1ldGFkYXRhLmRyYWdBbmREcm9wXCIgW2NsYXNzLm1hdC1lbGV2YXRpb24tejhdPVwibWV0YWRhdGEuZHJhZ0FuZERyb3BcIj5cbiAgICA8ZmlsZS1pbnB1dFxuICAgICAgICAoZmlsZURhdGFDaGFuZ2VFdmVudCk9XCJyZWZyZXNoRmlsZURhdGEoJGV2ZW50KVwiXG4gICAgICAgIFtwcm9wZXJ0eVZhbHVlXT1cInByb3BlcnR5VmFsdWVcIlxuICAgICAgICBbbWV0YWRhdGFdPVwibWV0YWRhdGFcIlxuICAgICAgICBbZ2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZV09XCJnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlXCJcbiAgICAgICAgW2lzUmVhZE9ubHldPVwiaXNSZWFkT25seVwiXG4gICAgICAgIFtlbnRpdHldPVwiZW50aXR5XCJcbiAgICAgICAgW2tleV09XCJrZXlcIlxuICAgID5cbiAgICA8L2ZpbGUtaW5wdXQ+XG48L2Rpdj4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/* eslint-disable jsdoc/require-jsdoc */
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
3
|
import { Component } from '@angular/core';
|
|
3
4
|
import { ReflectUtilities } from '../../../../encapsulation/reflect.utilities';
|
|
4
5
|
import { placeholder } from '../../../../mocks/placeholder-data.png';
|
|
@@ -6,13 +7,14 @@ import { EntityUtilities } from '../../../../utilities/entity.utilities';
|
|
|
6
7
|
import { FileUtilities } from '../../../../utilities/file.utilities';
|
|
7
8
|
import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/common";
|
|
10
|
-
import * as i2 from "@angular/
|
|
11
|
-
import * as i3 from "
|
|
10
|
+
import * as i1 from "@angular/common/http";
|
|
11
|
+
import * as i2 from "@angular/common";
|
|
12
|
+
import * as i3 from "@angular/material/button";
|
|
13
|
+
import * as i4 from "../file-input/file-input.component";
|
|
12
14
|
export class FileImageInputComponent extends NgxMatEntityBaseInputComponent {
|
|
13
|
-
constructor() {
|
|
14
|
-
super(
|
|
15
|
-
this.
|
|
15
|
+
constructor(http) {
|
|
16
|
+
super();
|
|
17
|
+
this.http = http;
|
|
16
18
|
this.imageIndex = 0;
|
|
17
19
|
this.placeHolder = placeholder;
|
|
18
20
|
}
|
|
@@ -30,7 +32,7 @@ export class FileImageInputComponent extends NgxMatEntityBaseInputComponent {
|
|
|
30
32
|
}
|
|
31
33
|
async setSinglePreviewImage() {
|
|
32
34
|
if (this.propertyValue) {
|
|
33
|
-
this.propertyValue = await FileUtilities.getFileData(this.propertyValue);
|
|
35
|
+
this.propertyValue = await FileUtilities.getFileData(this.propertyValue, this.http);
|
|
34
36
|
this.singlePreviewImage = await FileUtilities.getDataURLFromFile(this.propertyValue.file);
|
|
35
37
|
}
|
|
36
38
|
else {
|
|
@@ -43,7 +45,7 @@ export class FileImageInputComponent extends NgxMatEntityBaseInputComponent {
|
|
|
43
45
|
if (multiFileData?.length) {
|
|
44
46
|
for (let i = 0; i < multiFileData.length; i++) {
|
|
45
47
|
if (i === index) {
|
|
46
|
-
multiFileData[index] = await FileUtilities.getFileData(multiFileData[index]);
|
|
48
|
+
multiFileData[index] = await FileUtilities.getFileData(multiFileData[index], this.http);
|
|
47
49
|
previewImages.push(await FileUtilities.getDataURLFromFile(multiFileData[index].file));
|
|
48
50
|
}
|
|
49
51
|
else {
|
|
@@ -89,10 +91,10 @@ export class FileImageInputComponent extends NgxMatEntityBaseInputComponent {
|
|
|
89
91
|
this.imageIndex = index;
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
|
-
FileImageInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: FileImageInputComponent, deps:
|
|
93
|
-
FileImageInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: FileImageInputComponent, selector: "file-image-input", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"!metadata.dragAndDrop && !metadata.preview\">\n <file-input\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n >\n </file-input>\n</div>\n\n<div *ngIf=\"metadata.dragAndDrop || metadata.preview\" class=\"file-input mat-elevation-z8\">\n <file-input\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n >\n </file-input>\n\n <div class=\"image-preview\" *ngIf=\"metadata.preview && metadata.multiple\">\n <i (click)=\"prev()\" [class.disabled]=\"imageIndex === 0\" class=\"prev-button fa-solid fa-angle-left\"></i>\n <img *ngIf=\"multiPreviewImages?.[imageIndex]\" class=\"mat-elevation-z2\" [src]=\"multiPreviewImages?.[imageIndex]\">\n <img *ngIf=\"!multiPreviewImages?.[imageIndex]\" class=\"mat-elevation-z2\" [src]=\"metadata.previewPlaceholderUrl ?? placeHolder\">\n <i (click)=\"next()\"\n [class.disabled]=\"!multiPreviewImages || !multiPreviewImages.length || imageIndex === (multiPreviewImages.length - 1)\"\n class=\"next-button fa-solid fa-angle-right\"\n >\n </i>\n </div>\n <div class=\"preview-nav\" *ngIf=\"metadata.preview && metadata.multiple\">\n <button type=\"button\" (click)=\"setIndex(imageIndex-4)\" mat-icon-button *ngIf=\"\n this.multiPreviewImages\n && multiPreviewImages[imageIndex-4]\n && imageIndex === (this.multiPreviewImages.length - 1)\"\n >\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex - 3}}</span>\n </button>\n <!-- eslint-disable-next-line @angular-eslint/template/conditional-complexity -->\n <button type=\"button\" (click)=\"setIndex(imageIndex-3)\" mat-icon-button *ngIf=\"this.multiPreviewImages\n && multiPreviewImages[imageIndex-3]\n && (\n imageIndex === (this.multiPreviewImages.length - 2)\n || imageIndex === (this.multiPreviewImages.length - 1)\n )\"\n >\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex - 2}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex-2)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex-2]\">\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex - 1}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex-1)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex-1]\">\n <i class=\"dot\"></i>\n <span class=\"image-index\">{{imageIndex}}</span>\n </button>\n <button type=\"button\" mat-icon-button disabled>\n <i class=\"dot selected\"></i>\n <span class=\"image-index\">{{imageIndex + 1}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex+1)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex+1]\">\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex + 2}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex+2)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex+2]\">\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex + 3}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex+3)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex+3] && imageIndex <= 1\">\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex + 4}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex+4)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex+4] && imageIndex === 0\">\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex + 5}}</span>\n </button>\n </div>\n\n <div class=\"image-preview\" *ngIf=\"metadata.preview && !metadata.multiple\">\n <i class=\"prev-button disabled fa-solid fa-angle-left\"></i>\n <img class=\"mat-elevation-z2\" [src]=\"singlePreviewImage ?? metadata.previewPlaceholderUrl ?? placeHolder\">\n <i class=\"next-button disabled fa-solid fa-angle-right\"></i>\n </div>\n <div class=\"preview-nav\" *ngIf=\"metadata.preview && !metadata.multiple\">\n <button type=\"button\" disabled mat-icon-button>\n <span class=\"dot selected\"></span>\n <span class=\"image-index\">1</span>\n </button>\n </div>\n</div>", styles: [".file-input{margin-top:15px;margin-bottom:15px;padding:15px;border-radius:5px}.image-preview{height:250px;display:flex;align-items:center;padding-top:15px;padding-bottom:15px}.image-preview .prev-button{font-size:100px;margin-left:5px;color:#0000008a}.image-preview .next-button{font-size:100px;margin-right:5px;color:#0000008a}.image-preview .prev-button:hover,.image-preview .next-button:hover{cursor:pointer;color:#000000b3;transition:all .5s ease}.image-preview .prev-button.disabled,.image-preview .next-button.disabled{color:#00000042}.image-preview .prev-button.disabled:hover,.image-preview .next-button.disabled:hover{color:#00000042;transition:none;cursor:default}.image-preview img{max-width:calc(100% - 100px);max-height:100%;margin-left:auto;margin-right:auto;border-radius:3px}.preview-nav{text-align:center}.preview-nav button{display:inline-block;width:18px;height:18px;margin-left:5px;margin-right:5px}.preview-nav button .dot{height:100%;width:100%;background-color:#00000061;border-radius:50%;display:block}.preview-nav button .dot.selected{background-color:#0000008a}.preview-nav button .image-index{position:absolute;height:100%;width:100%;display:block;top:-11.5px;color:#fff}.preview-nav button:hover .dot{background-color:#0000008a;transition:all .3s ease}\n"], dependencies: [{ kind: "directive", type:
|
|
94
|
+
FileImageInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: FileImageInputComponent, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
|
|
95
|
+
FileImageInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: FileImageInputComponent, selector: "file-image-input", usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"!metadata.dragAndDrop && !metadata.preview\">\n <file-input\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n >\n </file-input>\n</div>\n\n<div *ngIf=\"metadata.dragAndDrop || metadata.preview\" class=\"file-input mat-elevation-z8\">\n <file-input\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n >\n </file-input>\n\n <div class=\"image-preview\" *ngIf=\"metadata.preview && metadata.multiple\">\n <i (click)=\"prev()\" [class.disabled]=\"imageIndex === 0\" class=\"prev-button fa-solid fa-angle-left\"></i>\n <img *ngIf=\"multiPreviewImages?.[imageIndex]\" class=\"mat-elevation-z2\" [src]=\"multiPreviewImages?.[imageIndex]\">\n <img *ngIf=\"!multiPreviewImages?.[imageIndex]\" class=\"mat-elevation-z2\" [src]=\"metadata.previewPlaceholderUrl ?? placeHolder\">\n <i (click)=\"next()\"\n [class.disabled]=\"!multiPreviewImages || !multiPreviewImages.length || imageIndex === (multiPreviewImages.length - 1)\"\n class=\"next-button fa-solid fa-angle-right\"\n >\n </i>\n </div>\n <div class=\"preview-nav\" *ngIf=\"metadata.preview && metadata.multiple\">\n <button type=\"button\" (click)=\"setIndex(imageIndex-4)\" mat-icon-button *ngIf=\"\n this.multiPreviewImages\n && multiPreviewImages[imageIndex-4]\n && imageIndex === (this.multiPreviewImages.length - 1)\"\n >\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex - 3}}</span>\n </button>\n <!-- eslint-disable-next-line @angular-eslint/template/conditional-complexity -->\n <button type=\"button\" (click)=\"setIndex(imageIndex-3)\" mat-icon-button *ngIf=\"this.multiPreviewImages\n && multiPreviewImages[imageIndex-3]\n && (\n imageIndex === (this.multiPreviewImages.length - 2)\n || imageIndex === (this.multiPreviewImages.length - 1)\n )\"\n >\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex - 2}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex-2)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex-2]\">\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex - 1}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex-1)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex-1]\">\n <i class=\"dot\"></i>\n <span class=\"image-index\">{{imageIndex}}</span>\n </button>\n <button type=\"button\" mat-icon-button disabled>\n <i class=\"dot selected\"></i>\n <span class=\"image-index\">{{imageIndex + 1}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex+1)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex+1]\">\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex + 2}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex+2)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex+2]\">\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex + 3}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex+3)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex+3] && imageIndex <= 1\">\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex + 4}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex+4)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex+4] && imageIndex === 0\">\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex + 5}}</span>\n </button>\n </div>\n\n <div class=\"image-preview\" *ngIf=\"metadata.preview && !metadata.multiple\">\n <i class=\"prev-button disabled fa-solid fa-angle-left\"></i>\n <img class=\"mat-elevation-z2\" [src]=\"singlePreviewImage ?? metadata.previewPlaceholderUrl ?? placeHolder\">\n <i class=\"next-button disabled fa-solid fa-angle-right\"></i>\n </div>\n <div class=\"preview-nav\" *ngIf=\"metadata.preview && !metadata.multiple\">\n <button type=\"button\" disabled mat-icon-button>\n <span class=\"dot selected\"></span>\n <span class=\"image-index\">1</span>\n </button>\n </div>\n</div>", styles: [".file-input{margin-top:15px;margin-bottom:15px;padding:15px;border-radius:5px}.image-preview{height:250px;display:flex;align-items:center;padding-top:15px;padding-bottom:15px}.image-preview .prev-button{font-size:100px;margin-left:5px;color:#0000008a}.image-preview .next-button{font-size:100px;margin-right:5px;color:#0000008a}.image-preview .prev-button:hover,.image-preview .next-button:hover{cursor:pointer;color:#000000b3;transition:all .5s ease}.image-preview .prev-button.disabled,.image-preview .next-button.disabled{color:#00000042}.image-preview .prev-button.disabled:hover,.image-preview .next-button.disabled:hover{color:#00000042;transition:none;cursor:default}.image-preview img{max-width:calc(100% - 100px);max-height:100%;margin-left:auto;margin-right:auto;border-radius:3px}.preview-nav{text-align:center}.preview-nav button{display:inline-block;width:18px;height:18px;margin-left:5px;margin-right:5px}.preview-nav button .dot{height:100%;width:100%;background-color:#00000061;border-radius:50%;display:block}.preview-nav button .dot.selected{background-color:#0000008a}.preview-nav button .image-index{position:absolute;height:100%;width:100%;display:block;top:-11.5px;color:#fff}.preview-nav button:hover .dot{background-color:#0000008a;transition:all .3s ease}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.FileInputComponent, selector: "file-input", inputs: ["propertyValue", "entity", "key", "metadata", "getValidationErrorMessage", "isReadOnly"], outputs: ["fileDataChangeEvent"] }] });
|
|
94
96
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: FileImageInputComponent, decorators: [{
|
|
95
97
|
type: Component,
|
|
96
98
|
args: [{ selector: 'file-image-input', template: "<div *ngIf=\"!metadata.dragAndDrop && !metadata.preview\">\n <file-input\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n >\n </file-input>\n</div>\n\n<div *ngIf=\"metadata.dragAndDrop || metadata.preview\" class=\"file-input mat-elevation-z8\">\n <file-input\n (fileDataChangeEvent)=\"refreshFileData($event)\"\n [propertyValue]=\"propertyValue\"\n [metadata]=\"metadata\"\n [getValidationErrorMessage]=\"getValidationErrorMessage\"\n [isReadOnly]=\"isReadOnly\"\n [entity]=\"entity\"\n [key]=\"key\"\n >\n </file-input>\n\n <div class=\"image-preview\" *ngIf=\"metadata.preview && metadata.multiple\">\n <i (click)=\"prev()\" [class.disabled]=\"imageIndex === 0\" class=\"prev-button fa-solid fa-angle-left\"></i>\n <img *ngIf=\"multiPreviewImages?.[imageIndex]\" class=\"mat-elevation-z2\" [src]=\"multiPreviewImages?.[imageIndex]\">\n <img *ngIf=\"!multiPreviewImages?.[imageIndex]\" class=\"mat-elevation-z2\" [src]=\"metadata.previewPlaceholderUrl ?? placeHolder\">\n <i (click)=\"next()\"\n [class.disabled]=\"!multiPreviewImages || !multiPreviewImages.length || imageIndex === (multiPreviewImages.length - 1)\"\n class=\"next-button fa-solid fa-angle-right\"\n >\n </i>\n </div>\n <div class=\"preview-nav\" *ngIf=\"metadata.preview && metadata.multiple\">\n <button type=\"button\" (click)=\"setIndex(imageIndex-4)\" mat-icon-button *ngIf=\"\n this.multiPreviewImages\n && multiPreviewImages[imageIndex-4]\n && imageIndex === (this.multiPreviewImages.length - 1)\"\n >\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex - 3}}</span>\n </button>\n <!-- eslint-disable-next-line @angular-eslint/template/conditional-complexity -->\n <button type=\"button\" (click)=\"setIndex(imageIndex-3)\" mat-icon-button *ngIf=\"this.multiPreviewImages\n && multiPreviewImages[imageIndex-3]\n && (\n imageIndex === (this.multiPreviewImages.length - 2)\n || imageIndex === (this.multiPreviewImages.length - 1)\n )\"\n >\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex - 2}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex-2)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex-2]\">\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex - 1}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex-1)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex-1]\">\n <i class=\"dot\"></i>\n <span class=\"image-index\">{{imageIndex}}</span>\n </button>\n <button type=\"button\" mat-icon-button disabled>\n <i class=\"dot selected\"></i>\n <span class=\"image-index\">{{imageIndex + 1}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex+1)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex+1]\">\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex + 2}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex+2)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex+2]\">\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex + 3}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex+3)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex+3] && imageIndex <= 1\">\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex + 4}}</span>\n </button>\n <button type=\"button\" (click)=\"setIndex(imageIndex+4)\" mat-icon-button *ngIf=\"multiPreviewImages?.[imageIndex+4] && imageIndex === 0\">\n <span class=\"dot\"></span>\n <span class=\"image-index\">{{imageIndex + 5}}</span>\n </button>\n </div>\n\n <div class=\"image-preview\" *ngIf=\"metadata.preview && !metadata.multiple\">\n <i class=\"prev-button disabled fa-solid fa-angle-left\"></i>\n <img class=\"mat-elevation-z2\" [src]=\"singlePreviewImage ?? metadata.previewPlaceholderUrl ?? placeHolder\">\n <i class=\"next-button disabled fa-solid fa-angle-right\"></i>\n </div>\n <div class=\"preview-nav\" *ngIf=\"metadata.preview && !metadata.multiple\">\n <button type=\"button\" disabled mat-icon-button>\n <span class=\"dot selected\"></span>\n <span class=\"image-index\">1</span>\n </button>\n </div>\n</div>", styles: [".file-input{margin-top:15px;margin-bottom:15px;padding:15px;border-radius:5px}.image-preview{height:250px;display:flex;align-items:center;padding-top:15px;padding-bottom:15px}.image-preview .prev-button{font-size:100px;margin-left:5px;color:#0000008a}.image-preview .next-button{font-size:100px;margin-right:5px;color:#0000008a}.image-preview .prev-button:hover,.image-preview .next-button:hover{cursor:pointer;color:#000000b3;transition:all .5s ease}.image-preview .prev-button.disabled,.image-preview .next-button.disabled{color:#00000042}.image-preview .prev-button.disabled:hover,.image-preview .next-button.disabled:hover{color:#00000042;transition:none;cursor:default}.image-preview img{max-width:calc(100% - 100px);max-height:100%;margin-left:auto;margin-right:auto;border-radius:3px}.preview-nav{text-align:center}.preview-nav button{display:inline-block;width:18px;height:18px;margin-left:5px;margin-right:5px}.preview-nav button .dot{height:100%;width:100%;background-color:#00000061;border-radius:50%;display:block}.preview-nav button .dot.selected{background-color:#0000008a}.preview-nav button .image-index{position:absolute;height:100%;width:100%;display:block;top:-11.5px;color:#fff}.preview-nav button:hover .dot{background-color:#0000008a;transition:all .3s ease}\n"] }]
|
|
97
|
-
}] });
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbWFnZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2lucHV0L2ZpbGUvZmlsZS1pbWFnZS1pbnB1dC9maWxlLWltYWdlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZmlsZS9maWxlLWltYWdlLWlucHV0L2ZpbGUtaW1hZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0NBQXdDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDckUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7O0FBUTVFLE1BQU0sT0FBTyx1QkFDVCxTQUFRLDhCQUE0RjtJQVB4Rzs7UUFTSSxrQkFBYSxHQUF5QixhQUFhLENBQUM7UUFnQnBELGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsZ0JBQVcsR0FBVyxXQUFXLENBQUM7S0FtRXJDO0lBbEZHLElBQUksa0JBQWtCO1FBQ2xCLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQXlCLENBQUM7SUFDakksQ0FBQztJQUNELElBQUks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Q0FBQztJQUN0QixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sRUFBRTtZQUNsQyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzFELE9BQU87U0FDVjtRQUNELE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQWE7UUFDeEIsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQzs7b0hBdEZRLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLCtFQ2pCcEMsNDVKQWdHTTsyRkQvRU8sdUJBQXVCO2tCQU5uQyxTQUFTOytCQUVJLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzZG9jL3JlcXVpcmUtanNkb2MgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IERlY29yYXRvclR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9iYXNlL2RlY29yYXRvci10eXBlcy5lbnVtJztcbmltcG9ydCB7IEZpbGVEYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9maWxlL2ZpbGUtZGVjb3JhdG9yLmRhdGEnO1xuaW1wb3J0IHsgUmVmbGVjdFV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uLy4uL2VuY2Fwc3VsYXRpb24vcmVmbGVjdC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgcGxhY2Vob2xkZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2Nrcy9wbGFjZWhvbGRlci1kYXRhLnBuZyc7XG5pbXBvcnQgeyBFbnRpdHlVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvZW50aXR5LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBGaWxlVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzL2ZpbGUudXRpbGl0aWVzJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUJhc2VJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtaW5wdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2ZpbGUtaW1hZ2UtaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWxlLWltYWdlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maWxlLWltYWdlLWlucHV0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsZUltYWdlSW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50PEVudGl0eVR5cGUsIERlY29yYXRvclR5cGVzLkZJTEVfSU1BR0UsIEZpbGVEYXRhIHwgRmlsZURhdGFbXT4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgRmlsZVV0aWxpdGllczogdHlwZW9mIEZpbGVVdGlsaXRpZXMgPSBGaWxlVXRpbGl0aWVzO1xuXG4gICAgZ2V0IG11bHRpUHJldmlld0ltYWdlcygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0VXRpbGl0aWVzLmdldE1ldGFkYXRhKEVudGl0eVV0aWxpdGllcy5NVUxUSV9QUkVWSUVXX0lNQUdFU19LRVksIHRoaXMuZW50aXR5LCB0aGlzLmtleSkgYXMgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHNldCBtdWx0aVByZXZpZXdJbWFnZXModmFsdWU6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIFJlZmxlY3RVdGlsaXRpZXMuZGVmaW5lTWV0YWRhdGEoRW50aXR5VXRpbGl0aWVzLk1VTFRJX1BSRVZJRVdfSU1BR0VTX0tFWSwgdmFsdWUsIHRoaXMuZW50aXR5LCB0aGlzLmtleSk7XG4gICAgfVxuXG4gICAgZ2V0IHNpbmdsZVByZXZpZXdJbWFnZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gUmVmbGVjdFV0aWxpdGllcy5nZXRNZXRhZGF0YShFbnRpdHlVdGlsaXRpZXMuU0lOR0xFX1BSRVZJRVdfSU1BR0VfS0VZLCB0aGlzLmVudGl0eSwgdGhpcy5rZXkpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgc2V0IHNpbmdsZVByZXZpZXdJbWFnZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIFJlZmxlY3RVdGlsaXRpZXMuZGVmaW5lTWV0YWRhdGEoRW50aXR5VXRpbGl0aWVzLlNJTkdMRV9QUkVWSUVXX0lNQUdFX0tFWSwgdmFsdWUsIHRoaXMuZW50aXR5LCB0aGlzLmtleSk7XG4gICAgfVxuXG4gICAgaW1hZ2VJbmRleDogbnVtYmVyID0gMDtcbiAgICBwbGFjZUhvbGRlcjogc3RyaW5nID0gcGxhY2Vob2xkZXI7XG5cbiAgICBwcml2YXRlIGFzeW5jIHNldFNpbmdsZVByZXZpZXdJbWFnZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMucHJvcGVydHlWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlID0gYXdhaXQgRmlsZVV0aWxpdGllcy5nZXRGaWxlRGF0YSh0aGlzLnByb3BlcnR5VmFsdWUgYXMgRmlsZURhdGEpO1xuICAgICAgICAgICAgdGhpcy5zaW5nbGVQcmV2aWV3SW1hZ2UgPSBhd2FpdCBGaWxlVXRpbGl0aWVzLmdldERhdGFVUkxGcm9tRmlsZSh0aGlzLnByb3BlcnR5VmFsdWUuZmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNpbmdsZVByZXZpZXdJbWFnZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2V0TXVsdGlQcmV2aWV3SW1hZ2VzKGluZGV4OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgbXVsdGlGaWxlRGF0YTogRmlsZURhdGFbXSB8IHVuZGVmaW5lZCA9IHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBwcmV2aWV3SW1hZ2VzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBpZiAobXVsdGlGaWxlRGF0YT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbXVsdGlGaWxlRGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBtdWx0aUZpbGVEYXRhW2luZGV4XSA9IGF3YWl0IEZpbGVVdGlsaXRpZXMuZ2V0RmlsZURhdGEobXVsdGlGaWxlRGF0YVtpbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICBwcmV2aWV3SW1hZ2VzLnB1c2goYXdhaXQgRmlsZVV0aWxpdGllcy5nZXREYXRhVVJMRnJvbUZpbGUobXVsdGlGaWxlRGF0YVtpbmRleF0uZmlsZSkgYXMgc3RyaW5nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpZXdJbWFnZXMucHVzaCgnZW1wdHknKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tdWx0aVByZXZpZXdJbWFnZXMgPSBwcmV2aWV3SW1hZ2VzO1xuICAgIH1cblxuICAgIGFzeW5jIHJlZnJlc2hGaWxlRGF0YShmaWxlRGF0YT86IEZpbGVEYXRhIHwgRmlsZURhdGFbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSBmaWxlRGF0YTtcbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgICAgIGlmICh0aGlzLm1ldGFkYXRhLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBmaWxlRGF0YSA9IChmaWxlRGF0YSBhcyBGaWxlRGF0YVtdIHwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIGlmICghZmlsZURhdGE/Llt0aGlzLmltYWdlSW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUluZGV4ID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0TXVsdGlQcmV2aWV3SW1hZ2VzKHRoaXMuaW1hZ2VJbmRleCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldFNpbmdsZVByZXZpZXdJbWFnZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgcHJldigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VJbmRleCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5zZXRNdWx0aVByZXZpZXdJbWFnZXModGhpcy5pbWFnZUluZGV4IC0gMSk7XG4gICAgICAgIHRoaXMuaW1hZ2VJbmRleC0tO1xuICAgIH1cblxuICAgIGFzeW5jIG5leHQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5tdWx0aVByZXZpZXdJbWFnZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmltYWdlSW5kZXggPT09ICh0aGlzLm11bHRpUHJldmlld0ltYWdlcy5sZW5ndGggLSAxKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0TXVsdGlQcmV2aWV3SW1hZ2VzKHRoaXMuaW1hZ2VJbmRleCArIDEpO1xuICAgICAgICB0aGlzLmltYWdlSW5kZXgrKztcbiAgICB9XG5cbiAgICBhc3luYyBzZXRJbmRleChpbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0TXVsdGlQcmV2aWV3SW1hZ2VzKGluZGV4KTtcbiAgICAgICAgdGhpcy5pbWFnZUluZGV4ID0gaW5kZXg7XG4gICAgfVxufSIsIjxkaXYgKm5nSWY9XCIhbWV0YWRhdGEuZHJhZ0FuZERyb3AgJiYgIW1ldGFkYXRhLnByZXZpZXdcIj5cbiAgICA8ZmlsZS1pbnB1dFxuICAgICAgICAoZmlsZURhdGFDaGFuZ2VFdmVudCk9XCJyZWZyZXNoRmlsZURhdGEoJGV2ZW50KVwiXG4gICAgICAgIFtwcm9wZXJ0eVZhbHVlXT1cInByb3BlcnR5VmFsdWVcIlxuICAgICAgICBbbWV0YWRhdGFdPVwibWV0YWRhdGFcIlxuICAgICAgICBbZ2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZV09XCJnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlXCJcbiAgICAgICAgW2lzUmVhZE9ubHldPVwiaXNSZWFkT25seVwiXG4gICAgICAgIFtlbnRpdHldPVwiZW50aXR5XCJcbiAgICAgICAgW2tleV09XCJrZXlcIlxuICAgID5cbiAgICA8L2ZpbGUtaW5wdXQ+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cIm1ldGFkYXRhLmRyYWdBbmREcm9wIHx8IG1ldGFkYXRhLnByZXZpZXdcIiBjbGFzcz1cImZpbGUtaW5wdXQgbWF0LWVsZXZhdGlvbi16OFwiPlxuICAgIDxmaWxlLWlucHV0XG4gICAgICAgIChmaWxlRGF0YUNoYW5nZUV2ZW50KT1cInJlZnJlc2hGaWxlRGF0YSgkZXZlbnQpXCJcbiAgICAgICAgW3Byb3BlcnR5VmFsdWVdPVwicHJvcGVydHlWYWx1ZVwiXG4gICAgICAgIFttZXRhZGF0YV09XCJtZXRhZGF0YVwiXG4gICAgICAgIFtnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlXT1cImdldFZhbGlkYXRpb25FcnJvck1lc3NhZ2VcIlxuICAgICAgICBbaXNSZWFkT25seV09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgW2VudGl0eV09XCJlbnRpdHlcIlxuICAgICAgICBba2V5XT1cImtleVwiXG4gICAgPlxuICAgIDwvZmlsZS1pbnB1dD5cblxuICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1wcmV2aWV3XCIgKm5nSWY9XCJtZXRhZGF0YS5wcmV2aWV3ICYmIG1ldGFkYXRhLm11bHRpcGxlXCI+XG4gICAgICAgIDxpIChjbGljayk9XCJwcmV2KClcIiBbY2xhc3MuZGlzYWJsZWRdPVwiaW1hZ2VJbmRleCA9PT0gMFwiIGNsYXNzPVwicHJldi1idXR0b24gZmEtc29saWQgZmEtYW5nbGUtbGVmdFwiPjwvaT5cbiAgICAgICAgPGltZyAqbmdJZj1cIm11bHRpUHJldmlld0ltYWdlcz8uW2ltYWdlSW5kZXhdXCIgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXoyXCIgW3NyY109XCJtdWx0aVByZXZpZXdJbWFnZXM/LltpbWFnZUluZGV4XVwiPlxuICAgICAgICA8aW1nICpuZ0lmPVwiIW11bHRpUHJldmlld0ltYWdlcz8uW2ltYWdlSW5kZXhdXCIgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXoyXCIgW3NyY109XCJtZXRhZGF0YS5wcmV2aWV3UGxhY2Vob2xkZXJVcmwgPz8gcGxhY2VIb2xkZXJcIj5cbiAgICAgICAgPGkgKGNsaWNrKT1cIm5leHQoKVwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIW11bHRpUHJldmlld0ltYWdlcyB8fCAhbXVsdGlQcmV2aWV3SW1hZ2VzLmxlbmd0aCB8fCBpbWFnZUluZGV4ID09PSAobXVsdGlQcmV2aWV3SW1hZ2VzLmxlbmd0aCAtIDEpXCJcbiAgICAgICAgICAgIGNsYXNzPVwibmV4dC1idXR0b24gZmEtc29saWQgZmEtYW5nbGUtcmlnaHRcIlxuICAgICAgICA+XG4gICAgICAgIDwvaT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1uYXZcIiAqbmdJZj1cIm1ldGFkYXRhLnByZXZpZXcgJiYgbWV0YWRhdGEubXVsdGlwbGVcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNldEluZGV4KGltYWdlSW5kZXgtNClcIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCJcbiAgICAgICAgICAgIHRoaXMubXVsdGlQcmV2aWV3SW1hZ2VzXG4gICAgICAgICAgICAmJiBtdWx0aVByZXZpZXdJbWFnZXNbaW1hZ2VJbmRleC00XVxuICAgICAgICAgICAgJiYgaW1hZ2VJbmRleCA9PT0gKHRoaXMubXVsdGlQcmV2aWV3SW1hZ2VzLmxlbmd0aCAtIDEpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltYWdlLWluZGV4XCI+e3tpbWFnZUluZGV4IC0gM319PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPCEtLSBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL2NvbmRpdGlvbmFsLWNvbXBsZXhpdHkgLS0+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzZXRJbmRleChpbWFnZUluZGV4LTMpXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwidGhpcy5tdWx0aVByZXZpZXdJbWFnZXNcbiAgICAgICAgICAgICYmIG11bHRpUHJldmlld0ltYWdlc1tpbWFnZUluZGV4LTNdXG4gICAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAgICAgaW1hZ2VJbmRleCA9PT0gKHRoaXMubXVsdGlQcmV2aWV3SW1hZ2VzLmxlbmd0aCAtIDIpXG4gICAgICAgICAgICAgICAgfHwgaW1hZ2VJbmRleCA9PT0gKHRoaXMubXVsdGlQcmV2aWV3SW1hZ2VzLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICApXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltYWdlLWluZGV4XCI+e3tpbWFnZUluZGV4IC0gMn19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNldEluZGV4KGltYWdlSW5kZXgtMilcIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCJtdWx0aVByZXZpZXdJbWFnZXM/LltpbWFnZUluZGV4LTJdXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1hZ2UtaW5kZXhcIj57e2ltYWdlSW5kZXggLSAxfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2V0SW5kZXgoaW1hZ2VJbmRleC0xKVwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIm11bHRpUHJldmlld0ltYWdlcz8uW2ltYWdlSW5kZXgtMV1cIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZG90XCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbWFnZS1pbmRleFwiPnt7aW1hZ2VJbmRleH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGRpc2FibGVkPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJkb3Qgc2VsZWN0ZWRcIj48L2k+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltYWdlLWluZGV4XCI+e3tpbWFnZUluZGV4ICsgMX19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNldEluZGV4KGltYWdlSW5kZXgrMSlcIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCJtdWx0aVByZXZpZXdJbWFnZXM/LltpbWFnZUluZGV4KzFdXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1hZ2UtaW5kZXhcIj57e2ltYWdlSW5kZXggKyAyfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2V0SW5kZXgoaW1hZ2VJbmRleCsyKVwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIm11bHRpUHJldmlld0ltYWdlcz8uW2ltYWdlSW5kZXgrMl1cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbWFnZS1pbmRleFwiPnt7aW1hZ2VJbmRleCArIDN9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzZXRJbmRleChpbWFnZUluZGV4KzMpXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwibXVsdGlQcmV2aWV3SW1hZ2VzPy5baW1hZ2VJbmRleCszXSAmJiBpbWFnZUluZGV4IDw9IDFcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbWFnZS1pbmRleFwiPnt7aW1hZ2VJbmRleCArIDR9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzZXRJbmRleChpbWFnZUluZGV4KzQpXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwibXVsdGlQcmV2aWV3SW1hZ2VzPy5baW1hZ2VJbmRleCs0XSAmJiBpbWFnZUluZGV4ID09PSAwXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1hZ2UtaW5kZXhcIj57e2ltYWdlSW5kZXggKyA1fX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImltYWdlLXByZXZpZXdcIiAqbmdJZj1cIm1ldGFkYXRhLnByZXZpZXcgJiYgIW1ldGFkYXRhLm11bHRpcGxlXCI+XG4gICAgICAgIDxpIGNsYXNzPVwicHJldi1idXR0b24gZGlzYWJsZWQgZmEtc29saWQgZmEtYW5nbGUtbGVmdFwiPjwvaT5cbiAgICAgICAgPGltZyBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejJcIiBbc3JjXT1cInNpbmdsZVByZXZpZXdJbWFnZSA/PyBtZXRhZGF0YS5wcmV2aWV3UGxhY2Vob2xkZXJVcmwgPz8gcGxhY2VIb2xkZXJcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJuZXh0LWJ1dHRvbiBkaXNhYmxlZCBmYS1zb2xpZCBmYS1hbmdsZS1yaWdodFwiPjwvaT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1uYXZcIiAqbmdJZj1cIm1ldGFkYXRhLnByZXZpZXcgJiYgIW1ldGFkYXRhLm11bHRpcGxlXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRpc2FibGVkIG1hdC1pY29uLWJ1dHRvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG90IHNlbGVjdGVkXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbWFnZS1pbmRleFwiPjE8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
|
99
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbWFnZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2lucHV0L2ZpbGUvZmlsZS1pbWFnZS1pbnB1dC9maWxlLWltYWdlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZmlsZS9maWxlLWltYWdlLWlucHV0L2ZpbGUtaW1hZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0NBQXdDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBSWxELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFRNUUsTUFBTSxPQUFPLHVCQUNULFNBQVEsOEJBQTRGO0lBbUJwRyxZQUE2QixJQUFnQjtRQUN6QyxLQUFLLEVBQUUsQ0FBQztRQURpQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBSDdDLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsZ0JBQVcsR0FBVyxXQUFXLENBQUM7SUFJbEMsQ0FBQztJQW5CRCxJQUFJLGtCQUFrQjtRQUNsQixPQUFPLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMs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Q0FBQyxFQUFFO1lBQ3RCLE9BQU87U0FDVjtRQUNELE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxFQUFFO1lBQ2xDLE9BQU87U0FDVjtRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDMUQsT0FBTztTQUNWO1FBQ0QsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBYTtRQUN4QixNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDOztvSEF4RlEsdUJBQXVCO3dHQUF2Qix1QkFBdUIsK0VDbEJwQyw0NUpBZ0dNOzJGRDlFTyx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBRUksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUganNkb2MvcmVxdWlyZS1qc2RvYyAqL1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IERlY29yYXRvclR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9iYXNlL2RlY29yYXRvci10eXBlcy5lbnVtJztcbmltcG9ydCB7IEZpbGVEYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9maWxlL2ZpbGUtZGVjb3JhdG9yLmRhdGEnO1xuaW1wb3J0IHsgUmVmbGVjdFV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uLy4uL2VuY2Fwc3VsYXRpb24vcmVmbGVjdC51dGlsaXRpZXMnO1xuaW1wb3J0IHsgcGxhY2Vob2xkZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2Nrcy9wbGFjZWhvbGRlci1kYXRhLnBuZyc7XG5pbXBvcnQgeyBFbnRpdHlVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvZW50aXR5LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBGaWxlVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzL2ZpbGUudXRpbGl0aWVzJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUJhc2VJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UtaW5wdXQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2ZpbGUtaW1hZ2UtaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWxlLWltYWdlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maWxlLWltYWdlLWlucHV0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsZUltYWdlSW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgTmd4TWF0RW50aXR5QmFzZUlucHV0Q29tcG9uZW50PEVudGl0eVR5cGUsIERlY29yYXRvclR5cGVzLkZJTEVfSU1BR0UsIEZpbGVEYXRhIHwgRmlsZURhdGFbXT4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgZ2V0IG11bHRpUHJldmlld0ltYWdlcygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0VXRpbGl0aWVzLmdldE1ldGFkYXRhKEVudGl0eVV0aWxpdGllcy5NVUxUSV9QUkVWSUVXX0lNQUdFU19LRVksIHRoaXMuZW50aXR5LCB0aGlzLmtleSkgYXMgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHNldCBtdWx0aVByZXZpZXdJbWFnZXModmFsdWU6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIFJlZmxlY3RVdGlsaXRpZXMuZGVmaW5lTWV0YWRhdGEoRW50aXR5VXRpbGl0aWVzLk1VTFRJX1BSRVZJRVdfSU1BR0VTX0tFWSwgdmFsdWUsIHRoaXMuZW50aXR5LCB0aGlzLmtleSk7XG4gICAgfVxuXG4gICAgZ2V0IHNpbmdsZVByZXZpZXdJbWFnZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gUmVmbGVjdFV0aWxpdGllcy5nZXRNZXRhZGF0YShFbnRpdHlVdGlsaXRpZXMuU0lOR0xFX1BSRVZJRVdfSU1BR0VfS0VZLCB0aGlzLmVudGl0eSwgdGhpcy5rZXkpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgc2V0IHNpbmdsZVByZXZpZXdJbWFnZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIFJlZmxlY3RVdGlsaXRpZXMuZGVmaW5lTWV0YWRhdGEoRW50aXR5VXRpbGl0aWVzLlNJTkdMRV9QUkVWSUVXX0lNQUdFX0tFWSwgdmFsdWUsIHRoaXMuZW50aXR5LCB0aGlzLmtleSk7XG4gICAgfVxuXG4gICAgaW1hZ2VJbmRleDogbnVtYmVyID0gMDtcbiAgICBwbGFjZUhvbGRlcjogc3RyaW5nID0gcGxhY2Vob2xkZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHNldFNpbmdsZVByZXZpZXdJbWFnZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMucHJvcGVydHlWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlID0gYXdhaXQgRmlsZVV0aWxpdGllcy5nZXRGaWxlRGF0YSh0aGlzLnByb3BlcnR5VmFsdWUgYXMgRmlsZURhdGEsIHRoaXMuaHR0cCk7XG4gICAgICAgICAgICB0aGlzLnNpbmdsZVByZXZpZXdJbWFnZSA9IGF3YWl0IEZpbGVVdGlsaXRpZXMuZ2V0RGF0YVVSTEZyb21GaWxlKHRoaXMucHJvcGVydHlWYWx1ZS5maWxlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2luZ2xlUHJldmlld0ltYWdlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBzZXRNdWx0aVByZXZpZXdJbWFnZXMoaW5kZXg6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBtdWx0aUZpbGVEYXRhOiBGaWxlRGF0YVtdIHwgdW5kZWZpbmVkID0gdGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10gfCB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHByZXZpZXdJbWFnZXM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGlmIChtdWx0aUZpbGVEYXRhPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBtdWx0aUZpbGVEYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIG11bHRpRmlsZURhdGFbaW5kZXhdID0gYXdhaXQgRmlsZVV0aWxpdGllcy5nZXRGaWxlRGF0YShtdWx0aUZpbGVEYXRhW2luZGV4XSwgdGhpcy5odHRwKTtcbiAgICAgICAgICAgICAgICAgICAgcHJldmlld0ltYWdlcy5wdXNoKGF3YWl0IEZpbGVVdGlsaXRpZXMuZ2V0RGF0YVVSTEZyb21GaWxlKG11bHRpRmlsZURhdGFbaW5kZXhdLmZpbGUpIGFzIHN0cmluZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwcmV2aWV3SW1hZ2VzLnB1c2goJ2VtcHR5Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubXVsdGlQcmV2aWV3SW1hZ2VzID0gcHJldmlld0ltYWdlcztcbiAgICB9XG5cbiAgICBhc3luYyByZWZyZXNoRmlsZURhdGEoZmlsZURhdGE/OiBGaWxlRGF0YSB8IEZpbGVEYXRhW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlID0gZmlsZURhdGE7XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZSgpO1xuICAgICAgICBpZiAodGhpcy5tZXRhZGF0YS5tdWx0aXBsZSkge1xuICAgICAgICAgICAgZmlsZURhdGEgPSAoZmlsZURhdGEgYXMgRmlsZURhdGFbXSB8IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBpZiAoIWZpbGVEYXRhPy5bdGhpcy5pbWFnZUluZGV4XSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VJbmRleCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldE11bHRpUHJldmlld0ltYWdlcyh0aGlzLmltYWdlSW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRTaW5nbGVQcmV2aWV3SW1hZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHByZXYoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmltYWdlSW5kZXggPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0TXVsdGlQcmV2aWV3SW1hZ2VzKHRoaXMuaW1hZ2VJbmRleCAtIDEpO1xuICAgICAgICB0aGlzLmltYWdlSW5kZXgtLTtcbiAgICB9XG5cbiAgICBhc3luYyBuZXh0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlQcmV2aWV3SW1hZ2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbWFnZUluZGV4ID09PSAodGhpcy5tdWx0aVByZXZpZXdJbWFnZXMubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnNldE11bHRpUHJldmlld0ltYWdlcyh0aGlzLmltYWdlSW5kZXggKyAxKTtcbiAgICAgICAgdGhpcy5pbWFnZUluZGV4Kys7XG4gICAgfVxuXG4gICAgYXN5bmMgc2V0SW5kZXgoaW5kZXg6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnNldE11bHRpUHJldmlld0ltYWdlcyhpbmRleCk7XG4gICAgICAgIHRoaXMuaW1hZ2VJbmRleCA9IGluZGV4O1xuICAgIH1cbn0iLCI8ZGl2ICpuZ0lmPVwiIW1ldGFkYXRhLmRyYWdBbmREcm9wICYmICFtZXRhZGF0YS5wcmV2aWV3XCI+XG4gICAgPGZpbGUtaW5wdXRcbiAgICAgICAgKGZpbGVEYXRhQ2hhbmdlRXZlbnQpPVwicmVmcmVzaEZpbGVEYXRhKCRldmVudClcIlxuICAgICAgICBbcHJvcGVydHlWYWx1ZV09XCJwcm9wZXJ0eVZhbHVlXCJcbiAgICAgICAgW21ldGFkYXRhXT1cIm1ldGFkYXRhXCJcbiAgICAgICAgW2dldFZhbGlkYXRpb25FcnJvck1lc3NhZ2VdPVwiZ2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZVwiXG4gICAgICAgIFtpc1JlYWRPbmx5XT1cImlzUmVhZE9ubHlcIlxuICAgICAgICBbZW50aXR5XT1cImVudGl0eVwiXG4gICAgICAgIFtrZXldPVwia2V5XCJcbiAgICA+XG4gICAgPC9maWxlLWlucHV0PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJtZXRhZGF0YS5kcmFnQW5kRHJvcCB8fCBtZXRhZGF0YS5wcmV2aWV3XCIgY2xhc3M9XCJmaWxlLWlucHV0IG1hdC1lbGV2YXRpb24tejhcIj5cbiAgICA8ZmlsZS1pbnB1dFxuICAgICAgICAoZmlsZURhdGFDaGFuZ2VFdmVudCk9XCJyZWZyZXNoRmlsZURhdGEoJGV2ZW50KVwiXG4gICAgICAgIFtwcm9wZXJ0eVZhbHVlXT1cInByb3BlcnR5VmFsdWVcIlxuICAgICAgICBbbWV0YWRhdGFdPVwibWV0YWRhdGFcIlxuICAgICAgICBbZ2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZV09XCJnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlXCJcbiAgICAgICAgW2lzUmVhZE9ubHldPVwiaXNSZWFkT25seVwiXG4gICAgICAgIFtlbnRpdHldPVwiZW50aXR5XCJcbiAgICAgICAgW2tleV09XCJrZXlcIlxuICAgID5cbiAgICA8L2ZpbGUtaW5wdXQ+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtcHJldmlld1wiICpuZ0lmPVwibWV0YWRhdGEucHJldmlldyAmJiBtZXRhZGF0YS5tdWx0aXBsZVwiPlxuICAgICAgICA8aSAoY2xpY2spPVwicHJldigpXCIgW2NsYXNzLmRpc2FibGVkXT1cImltYWdlSW5kZXggPT09IDBcIiBjbGFzcz1cInByZXYtYnV0dG9uIGZhLXNvbGlkIGZhLWFuZ2xlLWxlZnRcIj48L2k+XG4gICAgICAgIDxpbWcgKm5nSWY9XCJtdWx0aVByZXZpZXdJbWFnZXM/LltpbWFnZUluZGV4XVwiIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16MlwiIFtzcmNdPVwibXVsdGlQcmV2aWV3SW1hZ2VzPy5baW1hZ2VJbmRleF1cIj5cbiAgICAgICAgPGltZyAqbmdJZj1cIiFtdWx0aVByZXZpZXdJbWFnZXM/LltpbWFnZUluZGV4XVwiIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16MlwiIFtzcmNdPVwibWV0YWRhdGEucHJldmlld1BsYWNlaG9sZGVyVXJsID8/IHBsYWNlSG9sZGVyXCI+XG4gICAgICAgIDxpIChjbGljayk9XCJuZXh0KClcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFtdWx0aVByZXZpZXdJbWFnZXMgfHwgIW11bHRpUHJldmlld0ltYWdlcy5sZW5ndGggfHwgaW1hZ2VJbmRleCA9PT0gKG11bHRpUHJldmlld0ltYWdlcy5sZW5ndGggLSAxKVwiXG4gICAgICAgICAgICBjbGFzcz1cIm5leHQtYnV0dG9uIGZhLXNvbGlkIGZhLWFuZ2xlLXJpZ2h0XCJcbiAgICAgICAgPlxuICAgICAgICA8L2k+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInByZXZpZXctbmF2XCIgKm5nSWY9XCJtZXRhZGF0YS5wcmV2aWV3ICYmIG1ldGFkYXRhLm11bHRpcGxlXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzZXRJbmRleChpbWFnZUluZGV4LTQpXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiXG4gICAgICAgICAgICB0aGlzLm11bHRpUHJldmlld0ltYWdlc1xuICAgICAgICAgICAgJiYgbXVsdGlQcmV2aWV3SW1hZ2VzW2ltYWdlSW5kZXgtNF1cbiAgICAgICAgICAgICYmIGltYWdlSW5kZXggPT09ICh0aGlzLm11bHRpUHJldmlld0ltYWdlcy5sZW5ndGggLSAxKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbWFnZS1pbmRleFwiPnt7aW1hZ2VJbmRleCAtIDN9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwhLS0gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC90ZW1wbGF0ZS9jb25kaXRpb25hbC1jb21wbGV4aXR5IC0tPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2V0SW5kZXgoaW1hZ2VJbmRleC0zKVwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cInRoaXMubXVsdGlQcmV2aWV3SW1hZ2VzXG4gICAgICAgICAgICAmJiBtdWx0aVByZXZpZXdJbWFnZXNbaW1hZ2VJbmRleC0zXVxuICAgICAgICAgICAgJiYgKFxuICAgICAgICAgICAgICAgIGltYWdlSW5kZXggPT09ICh0aGlzLm11bHRpUHJldmlld0ltYWdlcy5sZW5ndGggLSAyKVxuICAgICAgICAgICAgICAgIHx8IGltYWdlSW5kZXggPT09ICh0aGlzLm11bHRpUHJldmlld0ltYWdlcy5sZW5ndGggLSAxKVxuICAgICAgICAgICAgKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbWFnZS1pbmRleFwiPnt7aW1hZ2VJbmRleCAtIDJ9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzZXRJbmRleChpbWFnZUluZGV4LTIpXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwibXVsdGlQcmV2aWV3SW1hZ2VzPy5baW1hZ2VJbmRleC0yXVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltYWdlLWluZGV4XCI+e3tpbWFnZUluZGV4IC0gMX19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNldEluZGV4KGltYWdlSW5kZXgtMSlcIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCJtdWx0aVByZXZpZXdJbWFnZXM/LltpbWFnZUluZGV4LTFdXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImRvdFwiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1hZ2UtaW5kZXhcIj57e2ltYWdlSW5kZXh9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBkaXNhYmxlZD5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZG90IHNlbGVjdGVkXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbWFnZS1pbmRleFwiPnt7aW1hZ2VJbmRleCArIDF9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzZXRJbmRleChpbWFnZUluZGV4KzEpXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwibXVsdGlQcmV2aWV3SW1hZ2VzPy5baW1hZ2VJbmRleCsxXVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltYWdlLWluZGV4XCI+e3tpbWFnZUluZGV4ICsgMn19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNldEluZGV4KGltYWdlSW5kZXgrMilcIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCJtdWx0aVByZXZpZXdJbWFnZXM/LltpbWFnZUluZGV4KzJdXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1hZ2UtaW5kZXhcIj57e2ltYWdlSW5kZXggKyAzfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2V0SW5kZXgoaW1hZ2VJbmRleCszKVwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIm11bHRpUHJldmlld0ltYWdlcz8uW2ltYWdlSW5kZXgrM10gJiYgaW1hZ2VJbmRleCA8PSAxXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1hZ2UtaW5kZXhcIj57e2ltYWdlSW5kZXggKyA0fX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2V0SW5kZXgoaW1hZ2VJbmRleCs0KVwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIm11bHRpUHJldmlld0ltYWdlcz8uW2ltYWdlSW5kZXgrNF0gJiYgaW1hZ2VJbmRleCA9PT0gMFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltYWdlLWluZGV4XCI+e3tpbWFnZUluZGV4ICsgNX19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1wcmV2aWV3XCIgKm5nSWY9XCJtZXRhZGF0YS5wcmV2aWV3ICYmICFtZXRhZGF0YS5tdWx0aXBsZVwiPlxuICAgICAgICA8aSBjbGFzcz1cInByZXYtYnV0dG9uIGRpc2FibGVkIGZhLXNvbGlkIGZhLWFuZ2xlLWxlZnRcIj48L2k+XG4gICAgICAgIDxpbWcgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXoyXCIgW3NyY109XCJzaW5nbGVQcmV2aWV3SW1hZ2UgPz8gbWV0YWRhdGEucHJldmlld1BsYWNlaG9sZGVyVXJsID8/IHBsYWNlSG9sZGVyXCI+XG4gICAgICAgIDxpIGNsYXNzPVwibmV4dC1idXR0b24gZGlzYWJsZWQgZmEtc29saWQgZmEtYW5nbGUtcmlnaHRcIj48L2k+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInByZXZpZXctbmF2XCIgKm5nSWY9XCJtZXRhZGF0YS5wcmV2aWV3ICYmICFtZXRhZGF0YS5tdWx0aXBsZVwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkaXNhYmxlZCBtYXQtaWNvbi1idXR0b24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdCBzZWxlY3RlZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1hZ2UtaW5kZXhcIj4xPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/* eslint-disable jsdoc/require-jsdoc */
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
3
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
4
|
import { MatDialog } from '@angular/material/dialog';
|
|
4
5
|
import { LodashUtilities } from '../../../../encapsulation/lodash.utilities';
|
|
@@ -8,15 +9,17 @@ import { FileUtilities } from '../../../../utilities/file.utilities';
|
|
|
8
9
|
import { NgxMatEntityConfirmDialogComponent } from '../../../confirm-dialog/confirm-dialog.component';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
11
|
import * as i1 from "@angular/material/dialog";
|
|
11
|
-
import * as i2 from "@angular/common";
|
|
12
|
-
import * as i3 from "@angular/
|
|
13
|
-
import * as i4 from "@angular/
|
|
14
|
-
import * as i5 from "@angular/
|
|
15
|
-
import * as i6 from "@angular/material/
|
|
16
|
-
import * as i7 from "
|
|
12
|
+
import * as i2 from "@angular/common/http";
|
|
13
|
+
import * as i3 from "@angular/common";
|
|
14
|
+
import * as i4 from "@angular/material/form-field";
|
|
15
|
+
import * as i5 from "@angular/forms";
|
|
16
|
+
import * as i6 from "@angular/material/chips";
|
|
17
|
+
import * as i7 from "@angular/material/button";
|
|
18
|
+
import * as i8 from "./dragDrop.directive";
|
|
17
19
|
export class FileInputComponent {
|
|
18
|
-
constructor(dialog) {
|
|
20
|
+
constructor(dialog, http) {
|
|
19
21
|
this.dialog = dialog;
|
|
22
|
+
this.http = http;
|
|
20
23
|
this.FileUtilities = FileUtilities;
|
|
21
24
|
this.fileDataChangeEvent = new EventEmitter();
|
|
22
25
|
}
|
|
@@ -145,11 +148,11 @@ export class FileInputComponent {
|
|
|
145
148
|
// the index need to be saved in a constant because we edit foundFileData
|
|
146
149
|
// => .indexOf() returns undefined.
|
|
147
150
|
const index = this.propertyValue.indexOf(foundFileData);
|
|
148
|
-
this.propertyValue[index] = await FileUtilities.getFileData(foundFileData);
|
|
151
|
+
this.propertyValue[index] = await FileUtilities.getFileData(foundFileData, this.http);
|
|
149
152
|
FileUtilities.downloadSingleFile(this.propertyValue[index]);
|
|
150
153
|
}
|
|
151
154
|
else if (this.propertyValue) {
|
|
152
|
-
this.propertyValue = await FileUtilities.getFileData(this.propertyValue);
|
|
155
|
+
this.propertyValue = await FileUtilities.getFileData(this.propertyValue, this.http);
|
|
153
156
|
FileUtilities.downloadSingleFile(this.propertyValue);
|
|
154
157
|
}
|
|
155
158
|
}
|
|
@@ -168,16 +171,16 @@ export class FileInputComponent {
|
|
|
168
171
|
async downloadAll() {
|
|
169
172
|
if (this.propertyValue.length) {
|
|
170
173
|
// eslint-disable-next-line max-len
|
|
171
|
-
void FileUtilities.downloadMultipleFiles(this.metadata.displayName, LodashUtilities.cloneDeep(this.propertyValue));
|
|
174
|
+
void FileUtilities.downloadMultipleFiles(this.metadata.displayName, LodashUtilities.cloneDeep(this.propertyValue), this.http);
|
|
172
175
|
}
|
|
173
176
|
}
|
|
174
177
|
}
|
|
175
|
-
FileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: FileInputComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
176
|
-
FileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: FileInputComponent, selector: "file-input", inputs: { propertyValue: "propertyValue", entity: "entity", key: "key", metadata: "metadata", getValidationErrorMessage: "getValidationErrorMessage", isReadOnly: "isReadOnly" }, outputs: { fileDataChangeEvent: "fileDataChangeEvent" }, ngImport: i0, template: "<input #fileInput\n type=\"file\" hidden\n [multiple]=\"metadata.multiple\"\n [accept]=\"FileUtilities.getAcceptString(metadata.allowedMimeTypes)\"\n (change)=\"setFileFromInput($event)\"\n>\n\n<mat-form-field floatLabel=\"always\">\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-chip-grid #chipGrid\n [(ngModel)]=\"filenames\" name=\"file\" #model=\"ngModel\"\n [required]=\"metadata.required(entity)\"\n >\n <mat-chip-row *ngFor=\"let name of filenames\" (removed)=\"removeFile(name)\">\n {{name}}\n <span class=\"mat-mdc-chip-remove mat-mdc-chip-trailing-icon ngx-mat-grey\" (click)=\"downloadFile(name)\">\n <i class=\"fas fa-download\"></i>\n </span>\n <button *ngIf=\"!isReadOnly\" type=\"button\" matChipRemove>\n <i class=\"{{metadata.deleteIcon}}\"></i>\n </button>\n </mat-chip-row>\n <input [matChipInputFor]=\"chipGrid\" [readonly]=\"true\" hidden>\n </mat-chip-grid>\n <button *ngIf=\"downloadAllEnabled()\" type=\"button\" class=\"ngx-mat-grey\" mat-icon-button matSuffix (click)=\"downloadAll()\">\n <i class=\"fas fa-file-zipper\"></i>\n </button>\n <button type=\"button\" class=\"ngx-mat-grey\" mat-icon-button matSuffix [disabled]=\"isReadOnly\" (click)=\"fileInput.click()\">\n <i class=\"fas fa-upload\"></i>\n </button>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>\n\n<div *ngIf=\"metadata.dragAndDrop && !isReadOnly\" class=\"drag-drop\" dragDrop (files)=\"setFile($event)\">\n <button type=\"button\" mat-icon-button [disabled]=\"isReadOnly\" (click)=\"fileInput.click()\">\n <i class=\"fas fa-file-arrow-up ngx-mat-grey\"></i>\n </button>\n</div>", styles: ["mat-form-field{width:100%}.ngx-mat-grey{opacity:1;color:#0000008a}.drag-drop{display:flex;align-items:center;justify-content:center;height:200px;border:2px dashed rgba(0,0,0,.54);border-radius:15px;margin-top:5px;margin-bottom:5px}.drag-drop i{font-size:30px}\n"], dependencies: [{ kind: "directive", type:
|
|
178
|
+
FileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: FileInputComponent, deps: [{ token: i1.MatDialog }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
|
|
179
|
+
FileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: FileInputComponent, selector: "file-input", inputs: { propertyValue: "propertyValue", entity: "entity", key: "key", metadata: "metadata", getValidationErrorMessage: "getValidationErrorMessage", isReadOnly: "isReadOnly" }, outputs: { fileDataChangeEvent: "fileDataChangeEvent" }, ngImport: i0, template: "<input #fileInput\n type=\"file\" hidden\n [multiple]=\"metadata.multiple\"\n [accept]=\"FileUtilities.getAcceptString(metadata.allowedMimeTypes)\"\n (change)=\"setFileFromInput($event)\"\n>\n\n<mat-form-field floatLabel=\"always\">\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-chip-grid #chipGrid\n [(ngModel)]=\"filenames\" name=\"file\" #model=\"ngModel\"\n [required]=\"metadata.required(entity)\"\n >\n <mat-chip-row *ngFor=\"let name of filenames\" (removed)=\"removeFile(name)\">\n {{name}}\n <span class=\"mat-mdc-chip-remove mat-mdc-chip-trailing-icon ngx-mat-grey\" (click)=\"downloadFile(name)\">\n <i class=\"fas fa-download\"></i>\n </span>\n <button *ngIf=\"!isReadOnly\" type=\"button\" matChipRemove>\n <i class=\"{{metadata.deleteIcon}}\"></i>\n </button>\n </mat-chip-row>\n <input [matChipInputFor]=\"chipGrid\" [readonly]=\"true\" hidden>\n </mat-chip-grid>\n <button *ngIf=\"downloadAllEnabled()\" type=\"button\" class=\"ngx-mat-grey\" mat-icon-button matSuffix (click)=\"downloadAll()\">\n <i class=\"fas fa-file-zipper\"></i>\n </button>\n <button type=\"button\" class=\"ngx-mat-grey\" mat-icon-button matSuffix [disabled]=\"isReadOnly\" (click)=\"fileInput.click()\">\n <i class=\"fas fa-upload\"></i>\n </button>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>\n\n<div *ngIf=\"metadata.dragAndDrop && !isReadOnly\" class=\"drag-drop\" dragDrop (files)=\"setFile($event)\">\n <button type=\"button\" mat-icon-button [disabled]=\"isReadOnly\" (click)=\"fileInput.click()\">\n <i class=\"fas fa-file-arrow-up ngx-mat-grey\"></i>\n </button>\n</div>", styles: ["mat-form-field{width:100%}.ngx-mat-grey{opacity:1;color:#0000008a}.drag-drop{display:flex;align-items:center;justify-content:center;height:200px;border:2px dashed rgba(0,0,0,.54);border-radius:15px;margin-top:5px;margin-bottom:5px}.drag-drop i{font-size:30px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i6.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i6.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i6.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i8.DragDropDirective, selector: "[dragDrop]", outputs: ["files"] }] });
|
|
177
180
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: FileInputComponent, decorators: [{
|
|
178
181
|
type: Component,
|
|
179
182
|
args: [{ selector: 'file-input', template: "<input #fileInput\n type=\"file\" hidden\n [multiple]=\"metadata.multiple\"\n [accept]=\"FileUtilities.getAcceptString(metadata.allowedMimeTypes)\"\n (change)=\"setFileFromInput($event)\"\n>\n\n<mat-form-field floatLabel=\"always\">\n <mat-label>{{metadata.displayName}}</mat-label>\n <mat-chip-grid #chipGrid\n [(ngModel)]=\"filenames\" name=\"file\" #model=\"ngModel\"\n [required]=\"metadata.required(entity)\"\n >\n <mat-chip-row *ngFor=\"let name of filenames\" (removed)=\"removeFile(name)\">\n {{name}}\n <span class=\"mat-mdc-chip-remove mat-mdc-chip-trailing-icon ngx-mat-grey\" (click)=\"downloadFile(name)\">\n <i class=\"fas fa-download\"></i>\n </span>\n <button *ngIf=\"!isReadOnly\" type=\"button\" matChipRemove>\n <i class=\"{{metadata.deleteIcon}}\"></i>\n </button>\n </mat-chip-row>\n <input [matChipInputFor]=\"chipGrid\" [readonly]=\"true\" hidden>\n </mat-chip-grid>\n <button *ngIf=\"downloadAllEnabled()\" type=\"button\" class=\"ngx-mat-grey\" mat-icon-button matSuffix (click)=\"downloadAll()\">\n <i class=\"fas fa-file-zipper\"></i>\n </button>\n <button type=\"button\" class=\"ngx-mat-grey\" mat-icon-button matSuffix [disabled]=\"isReadOnly\" (click)=\"fileInput.click()\">\n <i class=\"fas fa-upload\"></i>\n </button>\n <mat-error>{{getValidationErrorMessage(model)}}</mat-error>\n</mat-form-field>\n\n<div *ngIf=\"metadata.dragAndDrop && !isReadOnly\" class=\"drag-drop\" dragDrop (files)=\"setFile($event)\">\n <button type=\"button\" mat-icon-button [disabled]=\"isReadOnly\" (click)=\"fileInput.click()\">\n <i class=\"fas fa-file-arrow-up ngx-mat-grey\"></i>\n </button>\n</div>", styles: ["mat-form-field{width:100%}.ngx-mat-grey{opacity:1;color:#0000008a}.drag-drop{display:flex;align-items:center;justify-content:center;height:200px;border:2px dashed rgba(0,0,0,.54);border-radius:15px;margin-top:5px;margin-bottom:5px}.drag-drop i{font-size:30px}\n"] }]
|
|
180
|
-
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { propertyValue: [{
|
|
183
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.HttpClient }]; }, propDecorators: { propertyValue: [{
|
|
181
184
|
type: Input
|
|
182
185
|
}], entity: [{
|
|
183
186
|
type: Input
|
|
@@ -192,4 +195,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImpor
|
|
|
192
195
|
}], fileDataChangeEvent: [{
|
|
193
196
|
type: Output
|
|
194
197
|
}] } });
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2lucHV0L2ZpbGUvZmlsZS1pbnB1dC9maWxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZmlsZS9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0NBQXdDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSXJELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7Ozs7Ozs7QUFRdEcsTUFBTSxPQUFPLGtCQUFrQjtJQWdDM0IsWUFBNkIsTUFBaUI7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQXZCOUMsa0JBQWEsR0FBeUIsYUFBYSxDQUFDO1FBcUJwRCx3QkFBbUIsR0FBd0MsSUFBSSxZQUFZLEVBQXlCLENBQUM7SUFFbkQsQ0FBQztJQTlCbkQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxJQUFJ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LGtCQUFrQjtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtZQUN6QixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3JCLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsSUFBSyxJQUFJLENBQUMsYUFBNEIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9DLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2IsSUFBSyxJQUFJLENBQUMsYUFBNEIsQ0FBQyxNQUFNLEVBQUU7WUFDM0MsbUNBQW1DO1lBQ25DLEtBQUssYUFBYSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQTJCLENBQUMsQ0FBQyxDQUFDO1NBQ3BJO0lBQ0wsQ0FBQzs7K0dBN0xRLGtCQUFrQjttR0FBbEIsa0JBQWtCLDZSQ25CL0IsNndEQXFDTTsyRkRsQk8sa0JBQWtCO2tCQU45QixTQUFTOytCQUVJLFlBQVk7Z0dBZ0J0QixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4seUJBQXlCO3NCQUR4QixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixtQkFBbUI7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBqc2RvYy9yZXF1aXJlLWpzZG9jICovXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRGVmYXVsdEZpbGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbCwgRmlsZURhdGFXaXRoRmlsZSwgSW1hZ2VGaWxlRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgfSBmcm9tICcuLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2ZpbGUvZmlsZS1kZWNvcmF0b3ItaW50ZXJuYWwuZGF0YSc7XG5pbXBvcnQgeyBGaWxlRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvZmlsZS9maWxlLWRlY29yYXRvci5kYXRhJztcbmltcG9ydCB7IExvZGFzaFV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uLy4uL2VuY2Fwc3VsYXRpb24vbG9kYXNoLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBSZWZsZWN0VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW5jYXBzdWxhdGlvbi9yZWZsZWN0LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBFbnRpdHlVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvZW50aXR5LnV0aWxpdGllcyc7XG5pbXBvcnQgeyBGaWxlVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzL2ZpbGUudXRpbGl0aWVzJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnZmlsZS1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlSW5wdXRDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBnZXQgZmlsZW5hbWVzKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3RVdGlsaXRpZXMuZ2V0TWV0YWRhdGEoRW50aXR5VXRpbGl0aWVzLkZJTEVOQU1FU19LRVksIHRoaXMuZW50aXR5LCB0aGlzLmtleSkgYXMgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHNldCBmaWxlbmFtZXModmFsdWU6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIFJlZmxlY3RVdGlsaXRpZXMuZGVmaW5lTWV0YWRhdGEoRW50aXR5VXRpbGl0aWVzLkZJTEVOQU1FU19LRVksIHZhbHVlLCB0aGlzLmVudGl0eSwgdGhpcy5rZXkpO1xuICAgIH1cblxuICAgIEZpbGVVdGlsaXRpZXM6IHR5cGVvZiBGaWxlVXRpbGl0aWVzID0gRmlsZVV0aWxpdGllcztcblxuICAgIEBJbnB1dCgpXG4gICAgcHJvcGVydHlWYWx1ZSE6IEZpbGVEYXRhIHwgRmlsZURhdGFbXSB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpXG4gICAgZW50aXR5ITogRW50aXR5VHlwZTtcblxuICAgIEBJbnB1dCgpXG4gICAga2V5IToga2V5b2YgRW50aXR5VHlwZTtcblxuICAgIEBJbnB1dCgpXG4gICAgbWV0YWRhdGEhOiBEZWZhdWx0RmlsZURlY29yYXRvckNvbmZpZ0ludGVybmFsIHwgSW1hZ2VGaWxlRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldFZhbGlkYXRpb25FcnJvck1lc3NhZ2UhOiAobW9kZWw6IE5nTW9kZWwpID0+IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgaXNSZWFkT25seSE6IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KClcbiAgICBmaWxlRGF0YUNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8RmlsZURhdGEgfCBGaWxlRGF0YVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZURhdGEgfCBGaWxlRGF0YVtdPigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZykgeyB9XG5cbiAgICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMubWV0YWRhdGEubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdE11bHRpRmlsZSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbml0U2luZ2xlRmlsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsZURhdGFDaGFuZ2VFdmVudC5lbWl0KHRoaXMucHJvcGVydHlWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TXVsdGlGaWxlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVuYW1lcyA9ICh0aGlzLnByb3BlcnR5VmFsdWUgYXMgRmlsZURhdGFbXSkubWFwKGYgPT4gZi5uYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNpbmdsZUZpbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnByb3BlcnR5VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZW5hbWVzID0gWyh0aGlzLnByb3BlcnR5VmFsdWUgYXMgRmlsZURhdGEpLm5hbWVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgc2V0RmlsZUZyb21JbnB1dChldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZmlsZXM6IEZpbGVMaXN0IHwgW10gPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzID8/IFtdO1xuICAgICAgICBhd2FpdCB0aGlzLnNldEZpbGUoQXJyYXkuZnJvbShmaWxlcykpO1xuICAgIH1cblxuICAgIGFzeW5jIHNldEZpbGUoZmlsZXM6IEZpbGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyB2YWxpZGF0aW9uIGRvbmUgaW5saW5lXG4gICAgICAgIGlmIChmaWxlcy5maW5kKGYgPT4gIUZpbGVVdGlsaXRpZXMuaXNNaW1lVHlwZVZhbGlkKGYudHlwZSwgdGhpcy5tZXRhZGF0YS5hbGxvd2VkTWltZVR5cGVzKSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMubWV0YWRhdGEubWltZVR5cGVFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5yZXNldEZpbGVJbnB1dHMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsZXMuZmluZChmID0+IEZpbGVVdGlsaXRpZXMudHJhbnNmb3JtVG9NZWdhQnl0ZXMoZi5zaXplLCAnQicpID4gdGhpcy5tZXRhZGF0YS5tYXhTaXplKSkge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgZGF0YTogdGhpcy5tZXRhZGF0YS5tYXhTaXplRXJyb3JEaWFsb2csXG4gICAgICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucmVzZXRGaWxlSW5wdXRzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGZpbGVTaXplVG90YWw6IG51bWJlciA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICAgICAgZmlsZVNpemVUb3RhbCArPSBmaWxlLnNpemU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEZpbGVVdGlsaXRpZXMudHJhbnNmb3JtVG9NZWdhQnl0ZXMoZmlsZVNpemVUb3RhbCwgJ0InKSA+IHRoaXMubWV0YWRhdGEubWF4U2l6ZVRvdGFsKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLm1ldGFkYXRhLm1heFNpemVUb3RhbEVycm9yRGlhbG9nLFxuICAgICAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnJlc2V0RmlsZUlucHV0cygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1ldGFkYXRhLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldE11bHRpRmlsZShBcnJheS5mcm9tKGZpbGVzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNldFNpbmdsZUZpbGUoZmlsZXNbMF0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsZURhdGFDaGFuZ2VFdmVudC5lbWl0KHRoaXMucHJvcGVydHlWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldEZpbGVJbnB1dHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsZW5hbWVzID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZmlsZURhdGFDaGFuZ2VFdmVudC5lbWl0KHRoaXMucHJvcGVydHlWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBzZXRNdWx0aUZpbGUoZmlsZXM6IEZpbGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBkYXRhOiBGaWxlRGF0YVtdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICAgICAgY29uc3QgZmlsZURhdGE6IEZpbGVEYXRhID0ge1xuICAgICAgICAgICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICAgICAgICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgICAgICAgICAgICBzaXplOiBmaWxlLnNpemVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkYXRhLnB1c2goZmlsZURhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAoZGF0YSk7XG4gICAgICAgIHRoaXMuZmlsZW5hbWVzID0gdGhpcy5wcm9wZXJ0eVZhbHVlLm1hcChmID0+IGYubmFtZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBzZXRTaW5nbGVGaWxlKGZpbGU6IEZpbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlID0ge1xuICAgICAgICAgICAgZmlsZTogZmlsZSxcbiAgICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgICAgICAgIHNpemU6IGZpbGUuc2l6ZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZpbGVuYW1lcyA9IFt0aGlzLnByb3BlcnR5VmFsdWUubmFtZV07XG4gICAgfVxuXG4gICAgcmVtb3ZlRmlsZShuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNSZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1ldGFkYXRhLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVuYW1lcz8uc3BsaWNlKHRoaXMuZmlsZW5hbWVzLmluZGV4T2YobmFtZSksIDEpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmZpbGVuYW1lcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlbmFtZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBmaWxlRGF0YVRvUmVtb3ZlOiBGaWxlRGF0YSA9ICh0aGlzLnByb3BlcnR5VmFsdWUgYXMgRmlsZURhdGFbXSkuZmluZChmID0+IGYubmFtZSA9PT0gbmFtZSkgYXMgRmlsZURhdGE7XG4gICAgICAgICAgICAodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLnNwbGljZSgodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLmluZGV4T2YoZmlsZURhdGFUb1JlbW92ZSksIDEpO1xuICAgICAgICAgICAgaWYgKCEodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZW5hbWVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsZURhdGFDaGFuZ2VFdmVudC5lbWl0KHRoaXMucHJvcGVydHlWYWx1ZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZG93bmxvYWRGaWxlKG5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5tZXRhZGF0YS5tdWx0aXBsZSAmJiAodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZm91bmRGaWxlRGF0YTogRmlsZURhdGEgPSAodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLmZpbmQoZiA9PiBmLm5hbWUgPT09IG5hbWUpIGFzIEZpbGVEYXRhO1xuICAgICAgICAgICAgLy8gdGhlIGluZGV4IG5lZWQgdG8gYmUgc2F2ZWQgaW4gYSBjb25zdGFudCBiZWNhdXNlIHdlIGVkaXQgZm91bmRGaWxlRGF0YVxuICAgICAgICAgICAgLy8gPT4gLmluZGV4T2YoKSByZXR1cm5zIHVuZGVmaW5lZC5cbiAgICAgICAgICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSAodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLmluZGV4T2YoZm91bmRGaWxlRGF0YSk7XG4gICAgICAgICAgICAodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pW2luZGV4XSA9IGF3YWl0IEZpbGVVdGlsaXRpZXMuZ2V0RmlsZURhdGEoZm91bmRGaWxlRGF0YSk7XG4gICAgICAgICAgICBGaWxlVXRpbGl0aWVzLmRvd25sb2FkU2luZ2xlRmlsZSgodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pW2luZGV4XSBhcyBGaWxlRGF0YVdpdGhGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnByb3BlcnR5VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IGF3YWl0IEZpbGVVdGlsaXRpZXMuZ2V0RmlsZURhdGEodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhKTtcbiAgICAgICAgICAgIEZpbGVVdGlsaXRpZXMuZG93bmxvYWRTaW5nbGVGaWxlKHRoaXMucHJvcGVydHlWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkb3dubG9hZEFsbEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5tZXRhZGF0YS5tdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5wcm9wZXJ0eVZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0aGlzLnByb3BlcnR5VmFsdWUgYXMgRmlsZURhdGFbXSkubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGFzeW5jIGRvd25sb2FkQWxsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICAgICB2b2lkIEZpbGVVdGlsaXRpZXMuZG93bmxvYWRNdWx0aXBsZUZpbGVzKHRoaXMubWV0YWRhdGEuZGlzcGxheU5hbWUsIExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pKTtcbiAgICAgICAgfVxuICAgIH1cbn0iLCI8aW5wdXQgI2ZpbGVJbnB1dFxuICAgIHR5cGU9XCJmaWxlXCIgaGlkZGVuXG4gICAgW211bHRpcGxlXT1cIm1ldGFkYXRhLm11bHRpcGxlXCJcbiAgICBbYWNjZXB0XT1cIkZpbGVVdGlsaXRpZXMuZ2V0QWNjZXB0U3RyaW5nKG1ldGFkYXRhLmFsbG93ZWRNaW1lVHlwZXMpXCJcbiAgICAoY2hhbmdlKT1cInNldEZpbGVGcm9tSW5wdXQoJGV2ZW50KVwiXG4+XG5cbjxtYXQtZm9ybS1maWVsZCBmbG9hdExhYmVsPVwiYWx3YXlzXCI+XG4gICAgPG1hdC1sYWJlbD57e21ldGFkYXRhLmRpc3BsYXlOYW1lfX08L21hdC1sYWJlbD5cbiAgICA8bWF0LWNoaXAtZ3JpZCAjY2hpcEdyaWRcbiAgICAgICAgWyhuZ01vZGVsKV09XCJmaWxlbmFtZXNcIiBuYW1lPVwiZmlsZVwiICNtb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICBbcmVxdWlyZWRdPVwibWV0YWRhdGEucmVxdWlyZWQoZW50aXR5KVwiXG4gICAgPlxuICAgICAgICA8bWF0LWNoaXAtcm93ICpuZ0Zvcj1cImxldCBuYW1lIG9mIGZpbGVuYW1lc1wiIChyZW1vdmVkKT1cInJlbW92ZUZpbGUobmFtZSlcIj5cbiAgICAgICAgICAgIHt7bmFtZX19XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1tZGMtY2hpcC1yZW1vdmUgbWF0LW1kYy1jaGlwLXRyYWlsaW5nLWljb24gbmd4LW1hdC1ncmV5XCIgKGNsaWNrKT1cImRvd25sb2FkRmlsZShuYW1lKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWRvd25sb2FkXCI+PC9pPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFpc1JlYWRPbmx5XCIgdHlwZT1cImJ1dHRvblwiIG1hdENoaXBSZW1vdmU+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7e21ldGFkYXRhLmRlbGV0ZUljb259fVwiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L21hdC1jaGlwLXJvdz5cbiAgICAgICAgPGlucHV0IFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcEdyaWRcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIGhpZGRlbj5cbiAgICA8L21hdC1jaGlwLWdyaWQ+XG4gICAgPGJ1dHRvbiAqbmdJZj1cImRvd25sb2FkQWxsRW5hYmxlZCgpXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibmd4LW1hdC1ncmV5XCIgbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeCAoY2xpY2spPVwiZG93bmxvYWRBbGwoKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1maWxlLXppcHBlclwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm5neC1tYXQtZ3JleVwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXggW2Rpc2FibGVkXT1cImlzUmVhZE9ubHlcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdXBsb2FkXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtZXJyb3I+e3tnZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKG1vZGVsKX19PC9tYXQtZXJyb3I+XG48L21hdC1mb3JtLWZpZWxkPlxuXG48ZGl2ICpuZ0lmPVwibWV0YWRhdGEuZHJhZ0FuZERyb3AgJiYgIWlzUmVhZE9ubHlcIiBjbGFzcz1cImRyYWctZHJvcFwiIGRyYWdEcm9wIChmaWxlcyk9XCJzZXRGaWxlKCRldmVudClcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW2Rpc2FibGVkXT1cImlzUmVhZE9ubHlcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZmlsZS1hcnJvdy11cCBuZ3gtbWF0LWdyZXlcIj48L2k+XG4gICAgPC9idXR0b24+XG48L2Rpdj4iXX0=
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2lucHV0L2ZpbGUvZmlsZS1pbnB1dC9maWxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvaW5wdXQvZmlsZS9maWxlLWlucHV0L2ZpbGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0NBQXdDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7Ozs7Ozs7OztBQVF0RyxNQUFNLE9BQU8sa0JBQWtCO0lBZ0MzQixZQUE2QixNQUFpQixFQUFtQixJQUFnQjtRQUFwRCxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQW1CLFNBQUksR0FBSixJQUFJLENBQVk7UUF2QmpGLGtCQUFhLEdBQXlCLGFBQWEsQ0FBQztRQXFCcEQsd0JBQW1CLEdBQXdDLElBQUksWUFBWSxFQUF5QixDQUFDO0lB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L1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nTW9kZWwgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBEZWZhdWx0RmlsZURlY29yYXRvckNvbmZpZ0ludGVybmFsLCBGaWxlRGF0YVdpdGhGaWxlLCBJbWFnZUZpbGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbCB9IGZyb20gJy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvZmlsZS9maWxlLWRlY29yYXRvci1pbnRlcm5hbC5kYXRhJztcbmltcG9ydCB7IEZpbGVEYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9ycy9maWxlL2ZpbGUtZGVjb3JhdG9yLmRhdGEnO1xuaW1wb3J0IHsgTG9kYXNoVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW5jYXBzdWxhdGlvbi9sb2Rhc2gudXRpbGl0aWVzJztcbmltcG9ydCB7IFJlZmxlY3RVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9lbmNhcHN1bGF0aW9uL3JlZmxlY3QudXRpbGl0aWVzJztcbmltcG9ydCB7IEVudGl0eVV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9lbnRpdHkudXRpbGl0aWVzJztcbmltcG9ydCB7IEZpbGVVdGlsaXRpZXMgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvZmlsZS51dGlsaXRpZXMnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdmaWxlLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsZS1pbnB1dC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVJbnB1dENvbXBvbmVudDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIGdldCBmaWxlbmFtZXMoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gUmVmbGVjdFV0aWxpdGllcy5nZXRNZXRhZGF0YShFbnRpdHlVdGlsaXRpZXMuRklMRU5BTUVTX0tFWSwgdGhpcy5lbnRpdHksIHRoaXMua2V5KSBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgc2V0IGZpbGVuYW1lcyh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgUmVmbGVjdFV0aWxpdGllcy5kZWZpbmVNZXRhZGF0YShFbnRpdHlVdGlsaXRpZXMuRklMRU5BTUVTX0tFWSwgdmFsdWUsIHRoaXMuZW50aXR5LCB0aGlzLmtleSk7XG4gICAgfVxuXG4gICAgRmlsZVV0aWxpdGllczogdHlwZW9mIEZpbGVVdGlsaXRpZXMgPSBGaWxlVXRpbGl0aWVzO1xuXG4gICAgQElucHV0KClcbiAgICBwcm9wZXJ0eVZhbHVlITogRmlsZURhdGEgfCBGaWxlRGF0YVtdIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KClcbiAgICBlbnRpdHkhOiBFbnRpdHlUeXBlO1xuXG4gICAgQElucHV0KClcbiAgICBrZXkhOiBrZXlvZiBFbnRpdHlUeXBlO1xuXG4gICAgQElucHV0KClcbiAgICBtZXRhZGF0YSE6IERlZmF1bHRGaWxlRGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgfCBJbWFnZUZpbGVEZWNvcmF0b3JDb25maWdJbnRlcm5hbDtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZSE6IChtb2RlbDogTmdNb2RlbCkgPT4gc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBpc1JlYWRPbmx5ITogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKVxuICAgIGZpbGVEYXRhQ2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxGaWxlRGF0YSB8IEZpbGVEYXRhW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlRGF0YSB8IEZpbGVEYXRhW10+KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLCBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQpIHsgfVxuXG4gICAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm1ldGFkYXRhLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRNdWx0aUZpbGUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdFNpbmdsZUZpbGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGVEYXRhQ2hhbmdlRXZlbnQuZW1pdCh0aGlzLnByb3BlcnR5VmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdE11bHRpRmlsZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcGVydHlWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlbmFtZXMgPSAodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLm1hcChmID0+IGYubmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRTaW5nbGVGaWxlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVuYW1lcyA9IFsodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhKS5uYW1lXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHNldEZpbGVGcm9tSW5wdXQoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGZpbGVzOiBGaWxlTGlzdCB8IFtdID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcyA/PyBbXTtcbiAgICAgICAgYXdhaXQgdGhpcy5zZXRGaWxlKEFycmF5LmZyb20oZmlsZXMpKTtcbiAgICB9XG5cbiAgICBhc3luYyBzZXRGaWxlKGZpbGVzOiBGaWxlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gdmFsaWRhdGlvbiBkb25lIGlubGluZVxuICAgICAgICBpZiAoZmlsZXMuZmluZChmID0+ICFGaWxlVXRpbGl0aWVzLmlzTWltZVR5cGVWYWxpZChmLnR5cGUsIHRoaXMubWV0YWRhdGEuYWxsb3dlZE1pbWVUeXBlcykpKSB7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLm1ldGFkYXRhLm1pbWVUeXBlRXJyb3JEaWFsb2csXG4gICAgICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucmVzZXRGaWxlSW5wdXRzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbGVzLmZpbmQoZiA9PiBGaWxlVXRpbGl0aWVzLnRyYW5zZm9ybVRvTWVnYUJ5dGVzKGYuc2l6ZSwgJ0InKSA+IHRoaXMubWV0YWRhdGEubWF4U2l6ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMubWV0YWRhdGEubWF4U2l6ZUVycm9yRGlhbG9nLFxuICAgICAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnJlc2V0RmlsZUlucHV0cygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmaWxlU2l6ZVRvdGFsOiBudW1iZXIgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgICAgIGZpbGVTaXplVG90YWwgKz0gZmlsZS5zaXplO1xuICAgICAgICB9XG4gICAgICAgIGlmIChGaWxlVXRpbGl0aWVzLnRyYW5zZm9ybVRvTWVnYUJ5dGVzKGZpbGVTaXplVG90YWwsICdCJykgPiB0aGlzLm1ldGFkYXRhLm1heFNpemVUb3RhbCkge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgZGF0YTogdGhpcy5tZXRhZGF0YS5tYXhTaXplVG90YWxFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5yZXNldEZpbGVJbnB1dHMoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tZXRhZGF0YS5tdWx0aXBsZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRNdWx0aUZpbGUoQXJyYXkuZnJvbShmaWxlcykpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRTaW5nbGVGaWxlKGZpbGVzWzBdKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGVEYXRhQ2hhbmdlRXZlbnQuZW1pdCh0aGlzLnByb3BlcnR5VmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRGaWxlSW5wdXRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbGVuYW1lcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmZpbGVEYXRhQ2hhbmdlRXZlbnQuZW1pdCh0aGlzLnByb3BlcnR5VmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2V0TXVsdGlGaWxlKGZpbGVzOiBGaWxlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZGF0YTogRmlsZURhdGFbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVEYXRhOiBGaWxlRGF0YSA9IHtcbiAgICAgICAgICAgICAgICBmaWxlOiBmaWxlLFxuICAgICAgICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICAgICAgICAgICAgc2l6ZTogZmlsZS5zaXplXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZGF0YS5wdXNoKGZpbGVEYXRhKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSBMb2Rhc2hVdGlsaXRpZXMuY2xvbmVEZWVwKGRhdGEpO1xuICAgICAgICB0aGlzLmZpbGVuYW1lcyA9IHRoaXMucHJvcGVydHlWYWx1ZS5tYXAoZiA9PiBmLm5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2V0U2luZ2xlRmlsZShmaWxlOiBGaWxlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IHtcbiAgICAgICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICAgICAgICBzaXplOiBmaWxlLnNpemVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5maWxlbmFtZXMgPSBbdGhpcy5wcm9wZXJ0eVZhbHVlLm5hbWVdO1xuICAgIH1cblxuICAgIHJlbW92ZUZpbGUobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tZXRhZGF0YS5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5maWxlbmFtZXM/LnNwbGljZSh0aGlzLmZpbGVuYW1lcy5pbmRleE9mKG5hbWUpLCAxKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5maWxlbmFtZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZW5hbWVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZmlsZURhdGFUb1JlbW92ZTogRmlsZURhdGEgPSAodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLmZpbmQoZiA9PiBmLm5hbWUgPT09IG5hbWUpIGFzIEZpbGVEYXRhO1xuICAgICAgICAgICAgKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5zcGxpY2UoKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5pbmRleE9mKGZpbGVEYXRhVG9SZW1vdmUpLCAxKTtcbiAgICAgICAgICAgIGlmICghKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVuYW1lcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGVEYXRhQ2hhbmdlRXZlbnQuZW1pdCh0aGlzLnByb3BlcnR5VmFsdWUpO1xuICAgIH1cblxuICAgIGFzeW5jIGRvd25sb2FkRmlsZShuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMubWV0YWRhdGEubXVsdGlwbGUgJiYgKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kRmlsZURhdGE6IEZpbGVEYXRhID0gKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5maW5kKGYgPT4gZi5uYW1lID09PSBuYW1lKSBhcyBGaWxlRGF0YTtcbiAgICAgICAgICAgIC8vIHRoZSBpbmRleCBuZWVkIHRvIGJlIHNhdmVkIGluIGEgY29uc3RhbnQgYmVjYXVzZSB3ZSBlZGl0IGZvdW5kRmlsZURhdGFcbiAgICAgICAgICAgIC8vID0+IC5pbmRleE9mKCkgcmV0dXJucyB1bmRlZmluZWQuXG4gICAgICAgICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5pbmRleE9mKGZvdW5kRmlsZURhdGEpO1xuICAgICAgICAgICAgKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKVtpbmRleF0gPSBhd2FpdCBGaWxlVXRpbGl0aWVzLmdldEZpbGVEYXRhKGZvdW5kRmlsZURhdGEsIHRoaXMuaHR0cCk7XG4gICAgICAgICAgICBGaWxlVXRpbGl0aWVzLmRvd25sb2FkU2luZ2xlRmlsZSgodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pW2luZGV4XSBhcyBGaWxlRGF0YVdpdGhGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnByb3BlcnR5VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydHlWYWx1ZSA9IGF3YWl0IEZpbGVVdGlsaXRpZXMuZ2V0RmlsZURhdGEodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhLCB0aGlzLmh0dHApO1xuICAgICAgICAgICAgRmlsZVV0aWxpdGllcy5kb3dubG9hZFNpbmdsZUZpbGUodGhpcy5wcm9wZXJ0eVZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRvd25sb2FkQWxsRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLm1ldGFkYXRhLm11bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnByb3BlcnR5VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHRoaXMucHJvcGVydHlWYWx1ZSBhcyBGaWxlRGF0YVtdKS5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYXN5bmMgZG93bmxvYWRBbGwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICgodGhpcy5wcm9wZXJ0eVZhbHVlIGFzIEZpbGVEYXRhW10pLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgICAgIHZvaWQgRmlsZVV0aWxpdGllcy5kb3dubG9hZE11bHRpcGxlRmlsZXModGhpcy5tZXRhZGF0YS5kaXNwbGF5TmFtZSwgTG9kYXNoVXRpbGl0aWVzLmNsb25lRGVlcCh0aGlzLnByb3BlcnR5VmFsdWUgYXMgRmlsZURhdGFbXSksIHRoaXMuaHR0cCk7XG4gICAgICAgIH1cbiAgICB9XG59IiwiPGlucHV0ICNmaWxlSW5wdXRcbiAgICB0eXBlPVwiZmlsZVwiIGhpZGRlblxuICAgIFttdWx0aXBsZV09XCJtZXRhZGF0YS5tdWx0aXBsZVwiXG4gICAgW2FjY2VwdF09XCJGaWxlVXRpbGl0aWVzLmdldEFjY2VwdFN0cmluZyhtZXRhZGF0YS5hbGxvd2VkTWltZVR5cGVzKVwiXG4gICAgKGNoYW5nZSk9XCJzZXRGaWxlRnJvbUlucHV0KCRldmVudClcIlxuPlxuXG48bWF0LWZvcm0tZmllbGQgZmxvYXRMYWJlbD1cImFsd2F5c1wiPlxuICAgIDxtYXQtbGFiZWw+e3ttZXRhZGF0YS5kaXNwbGF5TmFtZX19PC9tYXQtbGFiZWw+XG4gICAgPG1hdC1jaGlwLWdyaWQgI2NoaXBHcmlkXG4gICAgICAgIFsobmdNb2RlbCldPVwiZmlsZW5hbWVzXCIgbmFtZT1cImZpbGVcIiAjbW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cIm1ldGFkYXRhLnJlcXVpcmVkKGVudGl0eSlcIlxuICAgID5cbiAgICAgICAgPG1hdC1jaGlwLXJvdyAqbmdGb3I9XCJsZXQgbmFtZSBvZiBmaWxlbmFtZXNcIiAocmVtb3ZlZCk9XCJyZW1vdmVGaWxlKG5hbWUpXCI+XG4gICAgICAgICAgICB7e25hbWV9fVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXQtbWRjLWNoaXAtcmVtb3ZlIG1hdC1tZGMtY2hpcC10cmFpbGluZy1pY29uIG5neC1tYXQtZ3JleVwiIChjbGljayk9XCJkb3dubG9hZEZpbGUobmFtZSlcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1kb3dubG9hZFwiPjwvaT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhaXNSZWFkT25seVwiIHR5cGU9XCJidXR0b25cIiBtYXRDaGlwUmVtb3ZlPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwie3ttZXRhZGF0YS5kZWxldGVJY29ufX1cIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9tYXQtY2hpcC1yb3c+XG4gICAgICAgIDxpbnB1dCBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBHcmlkXCIgW3JlYWRvbmx5XT1cInRydWVcIiBoaWRkZW4+XG4gICAgPC9tYXQtY2hpcC1ncmlkPlxuICAgIDxidXR0b24gKm5nSWY9XCJkb3dubG9hZEFsbEVuYWJsZWQoKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm5neC1tYXQtZ3JleVwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXggKGNsaWNrKT1cImRvd25sb2FkQWxsKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZmlsZS16aXBwZXJcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJuZ3gtbWF0LWdyZXlcIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5XCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXVwbG9hZFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgICA8bWF0LWVycm9yPnt7Z2V0VmFsaWRhdGlvbkVycm9yTWVzc2FnZShtb2RlbCl9fTwvbWF0LWVycm9yPlxuPC9tYXQtZm9ybS1maWVsZD5cblxuPGRpdiAqbmdJZj1cIm1ldGFkYXRhLmRyYWdBbmREcm9wICYmICFpc1JlYWRPbmx5XCIgY2xhc3M9XCJkcmFnLWRyb3BcIiBkcmFnRHJvcCAoZmlsZXMpPVwic2V0RmlsZSgkZXZlbnQpXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIFtkaXNhYmxlZF09XCJpc1JlYWRPbmx5XCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWZpbGUtYXJyb3ctdXAgbmd4LW1hdC1ncmV5XCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+Il19
|