@seniorsistemas/angular-components 17.8.3 → 17.8.5
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/bundles/seniorsistemas-angular-components.umd.js +2269 -2188
- package/bundles/seniorsistemas-angular-components.umd.js.map +1 -1
- package/bundles/seniorsistemas-angular-components.umd.min.js +2 -2
- package/bundles/seniorsistemas-angular-components.umd.min.js.map +1 -1
- package/components/dynamic-form/components/fields/profile-picture/profile-picture-field.component.d.ts +6 -0
- package/components/dynamic-form/components/fields/profile-picture/profile-picture-field.module.d.ts +2 -0
- package/components/dynamic-form/configurations/field-type.d.ts +2 -1
- package/components/dynamic-form/configurations/fields/profile-picture.d.ts +36 -0
- package/components/profile-picture-picker/models/index.d.ts +3 -2
- package/components/profile-picture-picker/models/profile-picture-picker-data.d.ts +4 -0
- package/components/profile-picture-picker/profile-picture-picker.component.d.ts +14 -7
- package/esm2015/components/dynamic-form/components/fields/profile-picture/profile-picture-field.component.js +17 -0
- package/esm2015/components/dynamic-form/components/fields/profile-picture/profile-picture-field.module.js +22 -0
- package/esm2015/components/dynamic-form/configurations/field-type.js +2 -1
- package/esm2015/components/dynamic-form/configurations/fields/profile-picture.js +21 -0
- package/esm2015/components/dynamic-form/configurations/form-field.js +4 -1
- package/esm2015/components/dynamic-form/dynamic-form.js +4 -1
- package/esm2015/components/dynamic-form/dynamic-form.module.js +3 -1
- package/esm2015/components/profile-picture-picker/models/index.js +1 -1
- package/esm2015/components/profile-picture-picker/models/profile-picture-picker-data.js +1 -0
- package/esm2015/components/profile-picture-picker/profile-picture-picker.component.js +27 -13
- package/esm2015/components/profile-picture-picker/profile-picture-picker.module.js +6 -4
- package/esm2015/components/table/table-column/table-columns.component.js +2 -2
- package/esm2015/seniorsistemas-angular-components.js +61 -59
- package/esm5/components/dynamic-form/components/fields/profile-picture/profile-picture-field.component.js +20 -0
- package/esm5/components/dynamic-form/components/fields/profile-picture/profile-picture-field.module.js +25 -0
- package/esm5/components/dynamic-form/configurations/field-type.js +2 -1
- package/esm5/components/dynamic-form/configurations/fields/profile-picture.js +26 -0
- package/esm5/components/dynamic-form/configurations/form-field.js +4 -1
- package/esm5/components/dynamic-form/dynamic-form.js +4 -1
- package/esm5/components/dynamic-form/dynamic-form.module.js +3 -1
- package/esm5/components/profile-picture-picker/models/index.js +1 -1
- package/esm5/components/profile-picture-picker/models/profile-picture-picker-data.js +1 -0
- package/esm5/components/profile-picture-picker/profile-picture-picker.component.js +27 -12
- package/esm5/components/profile-picture-picker/profile-picture-picker.module.js +6 -4
- package/esm5/components/table/table-column/table-columns.component.js +2 -2
- package/esm5/seniorsistemas-angular-components.js +61 -59
- package/fesm2015/seniorsistemas-angular-components.js +3316 -3247
- package/fesm2015/seniorsistemas-angular-components.js.map +1 -1
- package/fesm5/seniorsistemas-angular-components.js +2206 -2127
- package/fesm5/seniorsistemas-angular-components.js.map +1 -1
- package/package.json +1 -1
- package/seniorsistemas-angular-components.d.ts +60 -58
- package/seniorsistemas-angular-components.metadata.json +1 -1
|
@@ -1,19 +1,17 @@
|
|
|
1
|
+
var ProfilePicturePickerComponent_1;
|
|
1
2
|
import { __decorate } from "tslib";
|
|
2
|
-
import { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, } from "@angular/core";
|
|
3
|
+
import { Component, ElementRef, EventEmitter, forwardRef, HostListener, Input, Output, ViewChild, } from "@angular/core";
|
|
4
|
+
import { NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
5
|
+
import { TranslateService } from "@ngx-translate/core";
|
|
3
6
|
import { ConfirmationService } from "primeng/api";
|
|
4
|
-
import { FileValidation } from "./models/index";
|
|
5
7
|
import { ImageCropperService } from "../image-cropper/image-cropper.service";
|
|
6
|
-
import {
|
|
7
|
-
let ProfilePicturePickerComponent = class ProfilePicturePickerComponent {
|
|
8
|
+
import { FileValidation } from "./models/index";
|
|
9
|
+
let ProfilePicturePickerComponent = ProfilePicturePickerComponent_1 = class ProfilePicturePickerComponent {
|
|
8
10
|
constructor(imageCropperService, confirmationService, translateService) {
|
|
9
11
|
this.imageCropperService = imageCropperService;
|
|
10
12
|
this.confirmationService = confirmationService;
|
|
11
13
|
this.translateService = translateService;
|
|
12
|
-
this.simpleTitle = this.translateService.instant("platform.angular_components.drag_your_photo_or"); // Arraste sua foto ou
|
|
13
|
-
this.actionTitle = this.translateService.instant("platform.angular_components.select_a_file"); // Selecione um arquivo
|
|
14
14
|
this.aspectRatio = 1;
|
|
15
|
-
this.removeButtonLabel = this.translateService.instant("platform.angular_components.remover");
|
|
16
|
-
this.changeButtonLabel = this.translateService.instant("platform.angular_components.change_photo"); // Alterar foto
|
|
17
15
|
this.confirmationTexts = {
|
|
18
16
|
removalHeader: this.translateService.instant("platform.angular_components.remove_image"),
|
|
19
17
|
removalMessage: this.translateService.instant("platform.angular_components.confirmation_remove_image"),
|
|
@@ -25,6 +23,15 @@ let ProfilePicturePickerComponent = class ProfilePicturePickerComponent {
|
|
|
25
23
|
this.removedImage = new EventEmitter();
|
|
26
24
|
this.invalidFile = new EventEmitter();
|
|
27
25
|
}
|
|
26
|
+
writeValue(value) {
|
|
27
|
+
this._value = value;
|
|
28
|
+
}
|
|
29
|
+
registerOnChange(onChange) {
|
|
30
|
+
this._onChange = onChange;
|
|
31
|
+
}
|
|
32
|
+
registerOnTouched(onTouched) {
|
|
33
|
+
this._onTouched = onTouched;
|
|
34
|
+
}
|
|
28
35
|
ngOnInit() {
|
|
29
36
|
this._normalizeSuportedExtensions();
|
|
30
37
|
}
|
|
@@ -93,12 +100,14 @@ let ProfilePicturePickerComponent = class ProfilePicturePickerComponent {
|
|
|
93
100
|
this.imageCropperService.show(Object.assign({ imageSource: fileEvent.target.result, croppedImage: image => {
|
|
94
101
|
this.image = image;
|
|
95
102
|
this.changedImage.emit(image);
|
|
103
|
+
this._value = { sourceFile: file, base64: image };
|
|
104
|
+
this._onChange(this._value);
|
|
96
105
|
}, changeImage: () => this.selectPhoto(), allowSelectAnother: false, aspectRatio: this.aspectRatio }, this.cropperLabelsConfig));
|
|
97
106
|
};
|
|
98
107
|
}
|
|
99
108
|
_normalizeSuportedExtensions() {
|
|
100
|
-
|
|
101
|
-
|
|
109
|
+
var _a;
|
|
110
|
+
this.supportedExtensions = (_a = this.supportedExtensions) === null || _a === void 0 ? void 0 : _a.map(extension => extension.replace(".", "").toLocaleLowerCase());
|
|
102
111
|
}
|
|
103
112
|
_validateData(files) {
|
|
104
113
|
if (!files.length) {
|
|
@@ -216,12 +225,17 @@ __decorate([
|
|
|
216
225
|
__decorate([
|
|
217
226
|
HostListener("window:resize")
|
|
218
227
|
], ProfilePicturePickerComponent.prototype, "onResize", null);
|
|
219
|
-
ProfilePicturePickerComponent = __decorate([
|
|
228
|
+
ProfilePicturePickerComponent = ProfilePicturePickerComponent_1 = __decorate([
|
|
220
229
|
Component({
|
|
221
230
|
selector: "s-profile-picture-picker",
|
|
222
|
-
template: "<p-confirmDialog></p-confirmDialog>\n\n<input #fileInput [accept]=\"accept\" class=\"file-input\" type=\"file\" (change)=\"photoSelected($event)\">\n<div #uploadPicture class=\"upload-picture\">\n <s-thumbnail\n #thumbnail\n iconClass=\"far fa-user\"\n [imageSource]=\"image\"\n [hasAction]=\"!image\"\n (click)=\"selectPhoto()\">\n </s-thumbnail>\n <div #info class=\"info\">\n <ng-container *ngIf=\"image; then withImage; else noImage\"></ng-container>\n <p class=\"subtitle\">{{ subtitle }}</p>\n </div>\n</div>\n\n<ng-template #withImage>\n <div class=\"buttons\">\n <s-button\n [label]=\"changeButtonLabel\"\n priority=\"primary\"\n (onClick)=\"selectPhoto()\">\n </s-button>\n <s-button\n [label]=\"removeButtonLabel\"\n priority=\"secondary\"\n (onClick)=\"removePhoto()\">\n </s-button>\n </div>\n</ng-template>\n\n<ng-template #noImage>\n <p class=\"title\">\n {{ simpleTitle }}\n <span\n class=\"action-title\"\n (click)=\"selectPhoto()\">\n {{ actionTitle }}\n </span>\n </p>\n</ng-template>",
|
|
231
|
+
template: "<p-confirmDialog></p-confirmDialog>\n\n<input #fileInput [accept]=\"accept\" class=\"file-input\" type=\"file\" (change)=\"photoSelected($event)\">\n<div #uploadPicture class=\"upload-picture\">\n <s-thumbnail\n #thumbnail\n iconClass=\"far fa-user\"\n [imageSource]=\"image\"\n [hasAction]=\"!image\"\n (click)=\"selectPhoto()\">\n </s-thumbnail>\n <div #info class=\"info\">\n <ng-container *ngIf=\"image; then withImage; else noImage\"></ng-container>\n <p class=\"subtitle\">{{ subtitle }}</p>\n </div>\n</div>\n\n<ng-template #withImage>\n <div class=\"buttons\">\n <s-button\n [label]=\"changeButtonLabel || 'platform.angular_components.change_photo' | translate\"\n priority=\"primary\"\n (onClick)=\"selectPhoto()\">\n </s-button>\n <s-button\n [label]=\"removeButtonLabel || 'platform.angular_components.remove' | translate\"\n priority=\"secondary\"\n (onClick)=\"removePhoto()\">\n </s-button>\n </div>\n</ng-template>\n\n<ng-template #noImage>\n <p class=\"title\">\n {{ simpleTitle || 'platform.angular_components.drag_your_photo_or' | translate }}\n <span\n class=\"action-title\"\n (click)=\"selectPhoto()\">\n {{ actionTitle || 'platform.angular_components.select_a_file' | translate }}\n </span>\n </p>\n</ng-template>",
|
|
232
|
+
providers: [{
|
|
233
|
+
provide: NG_VALUE_ACCESSOR,
|
|
234
|
+
useExisting: forwardRef(() => ProfilePicturePickerComponent_1),
|
|
235
|
+
multi: true,
|
|
236
|
+
}],
|
|
223
237
|
styles: [".file-input{display:none}.upload-picture{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.upload-picture .info{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:12px 20px;-ms-flex-align:start;align-items:flex-start}.upload-picture .info .title{font-family:\"Open Sans\",sans-serif;font-weight:700;font-size:.875rem;line-height:150%;color:#333}.upload-picture .info .title .action-title{cursor:pointer;color:#428bca}.upload-picture .info .buttons{display:-ms-flexbox;display:flex;gap:8px}.upload-picture .info .buttons s-button{margin:0}.upload-picture .info .subtitle{padding:6px 0;font-family:\"Open Sans\",sans-serif;font-weight:400;font-size:.75rem;line-height:150%;color:#697882;text-align:center}.upload-picture--small .info{-ms-flex-align:center;align-items:center}.upload-picture--small .info .subtitle,.upload-picture--small .info .title{text-align:center}.upload-picture--small .info .buttons{-ms-flex-pack:center;justify-content:center;-ms-flex-wrap:wrap;flex-wrap:wrap}"]
|
|
224
238
|
})
|
|
225
239
|
], ProfilePicturePickerComponent);
|
|
226
240
|
export { ProfilePicturePickerComponent };
|
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1waWN0dXJlLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9wcm9maWxlLXBpY3R1cmUtcGlja2VyL3Byb2ZpbGUtcGljdHVyZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0osU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsRCxPQUFPLEVBQTZDLGNBQWMsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQU92RCxJQUFhLDZCQUE2QixHQUExQyxNQUFhLDZCQUE2QjtJQStEdkMsWUFDb0IsbUJBQXdDLEVBQ3hDLG1CQUF3QyxFQUN4QyxnQkFBa0M7UUFGbEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFoRS9DLGdCQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDLENBQUMsc0JBQXNCO1FBR3JILGdCQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCO1FBTWpILGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBTWhCLHNCQUFpQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FB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O0FBSUQ7SUFEQyxZQUFZLENBQUMsZUFBZSxDQUFDOzZEQWE3QjtBQWxIUyw2QkFBNkI7SUFMekMsU0FBUyxDQUFDO1FBQ1IsUUFBUSxFQUFFLDBCQUEwQjtRQUNwQyxvcENBQW9EOztLQUV0RCxDQUFDO0dBQ1csNkJBQTZCLENBMk56QztTQTNOWSw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgQ29tcG9uZW50LFxuICAgRWxlbWVudFJlZixcbiAgIEV2ZW50RW1pdHRlcixcbiAgIEhvc3RMaXN0ZW5lcixcbiAgIElucHV0LFxuICAgT25Jbml0LFxuICAgT3V0cHV0LFxuICAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSBcInByaW1lbmcvYXBpXCI7XG5cbmltcG9ydCB7IENyb3BwZXJMYWJlbHNDb25maWcsIEZpbGVWYWxpZGF0aW9uRXJyb3JzLCBGaWxlVmFsaWRhdGlvbiwgQ29uZmlybWF0aW9uVGV4dHMgfSBmcm9tIFwiLi9tb2RlbHMvaW5kZXhcIjtcbmltcG9ydCB7IEltYWdlQ3JvcHBlclNlcnZpY2UgfSBmcm9tIFwiLi4vaW1hZ2UtY3JvcHBlci9pbWFnZS1jcm9wcGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgIHNlbGVjdG9yOiBcInMtcHJvZmlsZS1waWN0dXJlLXBpY2tlclwiLFxuICAgdGVtcGxhdGVVcmw6IFwicHJvZmlsZS1waWN0dXJlLXBpY2tlci5jb21wb25lbnQuaHRtbFwiLFxuICAgc3R5bGVVcmxzOiBbXCJwcm9maWxlLXBpY3R1cmUtcGlja2VyLmNvbXBvbmVudC5zY3NzXCJdLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlUGljdHVyZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICBASW5wdXQoKVxuICAgcHVibGljIHNpbXBsZVRpdGxlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuZHJhZ195b3VyX3Bob3RvX29yXCIpOyAvLyBBcnJhc3RlIHN1YSBmb3RvIG91XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgYWN0aW9uVGl0bGUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcInBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5zZWxlY3RfYV9maWxlXCIpOyAvLyBTZWxlY2lvbmUgdW0gYXJxdWl2b1xuXG4gICBASW5wdXQoKVxuICAgcHVibGljIHN1YnRpdGxlOiBzdHJpbmc7XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgYXNwZWN0UmF0aW8gPSAxO1xuXG4gICBASW5wdXQoKVxuICAgcHVibGljIGNyb3BwZXJMYWJlbHNDb25maWc6IENyb3BwZXJMYWJlbHNDb25maWc7XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgcmVtb3ZlQnV0dG9uTGFiZWwgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcInBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5yZW1vdmVyXCIpO1xuXG4gICBASW5wdXQoKVxuICAgcHVibGljIGNoYW5nZUJ1dHRvbkxhYmVsID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuY2hhbmdlX3Bob3RvXCIpOyAvLyBBbHRlcmFyIGZvdG9cblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBjb25maXJtYXRpb25UZXh0czogQ29uZmlybWF0aW9uVGV4dHMgPSB7XG4gICAgICByZW1vdmFsSGVhZGVyOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcInBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5yZW1vdmVfaW1hZ2VcIiksIC8vIFJlbW92ZXIgaW1hZ2VtXG4gICAgICByZW1vdmFsTWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuY29uZmlybWF0aW9uX3JlbW92ZV9pbWFnZVwiKSwgLy8gRGVzZWphIHJlbW92ZXIgYSBpbWFnZW0/IE7Do28gcG9kZSBzZXIgcmV2ZXJ0aWRhLlxuICAgICAgcmVtb3ZhbEFjY2VwdExhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcInBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5yZW1vdmVcIiksXG4gICAgICByZW1vdmFsUmVqZWN0TGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwicGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmNhbmNlbFwiKSxcbiAgIH07XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgbWF4RmlsZVNpemU6IG51bWJlcjtcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBhY2NlcHQ6IHN0cmluZztcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBzdXBwb3J0ZWRFeHRlbnNpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICBASW5wdXQoKVxuICAgcHVibGljIGltYWdlOiBzdHJpbmc7XG5cbiAgIEBWaWV3Q2hpbGQoXCJ1cGxvYWRQaWN0dXJlXCIpXG4gICBwdWJsaWMgdXBsb2FkUGljdHVyZTogRWxlbWVudFJlZjtcblxuICAgQFZpZXdDaGlsZChcImluZm9cIilcbiAgIHB1YmxpYyBpbmZvOiBFbGVtZW50UmVmO1xuXG4gICBAVmlld0NoaWxkKFwidGh1bWJuYWlsXCIsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgcHVibGljIHRodW1ibmFpbDogRWxlbWVudFJlZjtcblxuICAgQFZpZXdDaGlsZChcImZpbGVJbnB1dFwiLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgIHB1YmxpYyBmaWxlSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgIEBPdXRwdXQoKVxuICAgcHVibGljIGNoYW5nZWRJbWFnZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgIEBPdXRwdXQoKVxuICAgcHVibGljIHJlbW92ZWRJbWFnZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgQE91dHB1dCgpXG4gICBwdWJsaWMgaW52YWxpZEZpbGU6IEV2ZW50RW1pdHRlcjxGaWxlVmFsaWRhdGlvbkVycm9ycz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBpbWFnZUNyb3BwZXJTZXJ2aWNlOiBJbWFnZUNyb3BwZXJTZXJ2aWNlLFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLFxuICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgKSB7IH1cblxuICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgdGhpcy5fbm9ybWFsaXplU3Vwb3J0ZWRFeHRlbnNpb25zKCk7XG4gICB9XG5cbiAgIEBIb3N0TGlzdGVuZXIoXCJkcmFnb3ZlclwiLCBbXCIkZXZlbnRcIl0pXG4gICBwdWJsaWMgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICB9XG5cbiAgIEBIb3N0TGlzdGVuZXIoXCJkcmFnbGVhdmVcIiwgW1wiJGV2ZW50XCJdKVxuICAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgIH1cblxuICAgQEhvc3RMaXN0ZW5lcihcImRyb3BcIiwgW1wiJGV2ZW50XCJdKVxuICAgcHVibGljIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgIGNvbnN0IGZpbGVzOiBGaWxlW10gPSBbXTtcbiAgICAgIGNvbnN0IGRhdGFUcmFuc2ZlckZpbGVzID0gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFUcmFuc2ZlckZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICBmaWxlcy5wdXNoKGRhdGFUcmFuc2ZlckZpbGVzLml0ZW0oaSkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9zaG93SW1hZ2VDcm9wcGVyKGZpbGVzKTtcbiAgIH1cblxuICAgLy8gVmVyaWZpY2FuZG8gbyByZWRpbWVuc2lvbmFtZW50byBwYXJhIGFqdXN0YXIgbyBkZXNpZ24gcGFyYSBmaWNhciByZXNwb25zaXZvLlxuICAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIilcbiAgIHB1YmxpYyBvblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLnVwbG9hZFBpY3R1cmUgJiYgdGhpcy5pbmZvICYmIHRoaXMudGh1bWJuYWlsKSB7XG4gICAgICAgICBjb25zdCB1cGxvYWRQaWN0dXJlV2lkdGggPSB0aGlzLl9nZXRXaWR0aEVsZW1lbnQodGhpcy51cGxvYWRQaWN0dXJlKTtcbiAgICAgICAgIGNvbnN0IGluZm9XaWR0aCA9IHRoaXMuX2dldFdpZHRoRWxlbWVudCh0aGlzLmluZm8pO1xuICAgICAgICAgY29uc3QgdGh1bWJuYWlsV2lkdGggPSB0aGlzLl9nZXRXaWR0aEVsZW1lbnQodGhpcy50aHVtYm5haWwpO1xuXG4gICAgICAgICBpZiAodGh1bWJuYWlsV2lkdGggKyBpbmZvV2lkdGggPiB1cGxvYWRQaWN0dXJlV2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkUGljdHVyZS5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJ1cGxvYWQtcGljdHVyZS0tc21hbGxcIik7XG4gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRQaWN0dXJlLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcInVwbG9hZC1waWN0dXJlLS1zbWFsbFwiKTtcbiAgICAgICAgIH1cbiAgICAgIH1cbiAgIH1cblxuICAgcHVibGljIHNlbGVjdFBob3RvKCk6IHZvaWQge1xuICAgICAgY29uc3QgZmlsZUlucHV0RWxlbWVudCA9IHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBmaWxlSW5wdXRFbGVtZW50LnZhbHVlID0gXCJcIjtcbiAgICAgIGZpbGVJbnB1dEVsZW1lbnQuY2xpY2soKTtcbiAgIH1cblxuICAgcHVibGljIHJlbW92ZVBob3RvKCk6IHZvaWQge1xuICAgICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgbWVzc2FnZTogdGhpcy5jb25maXJtYXRpb25UZXh0cy5yZW1vdmFsTWVzc2FnZSxcbiAgICAgICAgIGFjY2VwdExhYmVsOiB0aGlzLmNvbmZpcm1hdGlvblRleHRzLnJlbW92YWxBY2NlcHRMYWJlbCxcbiAgICAgICAgIHJlamVjdExhYmVsOiB0aGlzLmNvbmZpcm1hdGlvblRleHRzLnJlbW92YWxSZWplY3RMYWJlbCxcbiAgICAgICAgIGhlYWRlcjogdGhpcy5jb25maXJtYXRpb25UZXh0cy5yZW1vdmFsSGVhZGVyLFxuICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlSW5wdXRFbGVtZW50ID0gdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGZpbGVJbnB1dEVsZW1lbnQudmFsdWUgPSBcIlwiO1xuICAgICAgICAgICAgdGhpcy5pbWFnZSA9IFwiXCI7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZWRJbWFnZS5lbWl0KCk7XG4gICAgICAgICB9LFxuICAgICAgfSk7XG4gICB9XG5cbiAgIHB1YmxpYyBwaG90b1NlbGVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgIHRoaXMuX3Nob3dJbWFnZUNyb3BwZXIoZXZlbnQuc3JjRWxlbWVudC5maWxlcyk7XG4gICB9XG5cbiAgIHByaXZhdGUgX3Nob3dJbWFnZUNyb3BwZXIoZmlsZXM6IEZpbGVbXSk6IHZvaWQge1xuICAgICAgaWYgKCF0aGlzLl92YWxpZGF0ZURhdGEoZmlsZXMpKSB7XG4gICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc1swXTtcblxuICAgICAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICBmaWxlUmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICBmaWxlUmVhZGVyLm9ubG9hZGVuZCA9IChmaWxlRXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgdGhpcy5pbWFnZUNyb3BwZXJTZXJ2aWNlLnNob3coe1xuICAgICAgICAgICAgaW1hZ2VTb3VyY2U6IGZpbGVFdmVudC50YXJnZXQucmVzdWx0LFxuICAgICAgICAgICAgY3JvcHBlZEltYWdlOiBpbWFnZSA9PiB7XG4gICAgICAgICAgICAgICB0aGlzLmltYWdlID0gaW1hZ2U7XG4gICAgICAgICAgICAgICB0aGlzLmNoYW5nZWRJbWFnZS5lbWl0KGltYWdlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGFuZ2VJbWFnZTogKCkgPT4gdGhpcy5zZWxlY3RQaG90bygpLFxuICAgICAgICAgICAgYWxsb3dTZWxlY3RBbm90aGVyOiBmYWxzZSxcbiAgICAgICAgICAgIGFzcGVjdFJhdGlvOiB0aGlzLmFzcGVjdFJhdGlvLFxuICAgICAgICAgICAgLi4udGhpcy5jcm9wcGVyTGFiZWxzQ29uZmlnLFxuICAgICAgICAgfSk7XG4gICAgICB9O1xuICAgfVxuXG4gICBwcml2YXRlIF9ub3JtYWxpemVTdXBvcnRlZEV4dGVuc2lvbnMoKTogdm9pZCB7XG4gICAgICB0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnMgPSB0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnNcbiAgICAgICAgIC5tYXAoZXh0ZW5zaW9uID0+IGV4dGVuc2lvbi5yZXBsYWNlKFwiLlwiLCBcIlwiKS50b0xvY2FsZUxvd2VyQ2FzZSgpKTtcbiAgIH1cblxuICAgcHJpdmF0ZSBfdmFsaWRhdGVEYXRhKGZpbGVzOiBGaWxlW10pOiBib29sZWFuIHtcbiAgICAgIGlmICghZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWxlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICB0aGlzLmludmFsaWRGaWxlLmVtaXQoeyBmaWxlOiBudWxsLCB2YWxpZGF0aW9uOiBGaWxlVmFsaWRhdGlvbi5NYXhGaWxlTGltaXQgfSk7XG4gICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc1swXTtcblxuICAgICAgaWYgKCFmaWxlLnR5cGUuaW5jbHVkZXMoXCJpbWFnZVwiKSkge1xuICAgICAgICAgdGhpcy5pbnZhbGlkRmlsZS5lbWl0KHsgZmlsZSwgdmFsaWRhdGlvbjogRmlsZVZhbGlkYXRpb24uVHlwZUludmFsaWQgfSk7XG4gICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5fdmFsaWRhdGVGaWxlRXh0ZW5zaW9uKGZpbGUpKSB7XG4gICAgICAgICB0aGlzLmludmFsaWRGaWxlLmVtaXQoeyBmaWxlLCB2YWxpZGF0aW9uOiBGaWxlVmFsaWRhdGlvbi5VbnN1cHBvcnRlZEV4dGVuc2lvbiB9KTtcbiAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLl92YWxpZGF0ZUZpbGVTaXplKGZpbGUpKSB7XG4gICAgICAgICB0aGlzLmludmFsaWRGaWxlLmVtaXQoeyBmaWxlLCB2YWxpZGF0aW9uOiBGaWxlVmFsaWRhdGlvbi5NYXhGaWxlU2l6ZSB9KTtcbiAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICB9XG5cbiAgIHByaXZhdGUgX3ZhbGlkYXRlRmlsZUV4dGVuc2lvbihmaWxlOiBGaWxlKTogYm9vbGVhbiB7XG4gICAgICBpZiAodGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGUubmFtZS5zcGxpdChcIi5cIikucG9wKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgIHJldHVybiB0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnMuaW5jbHVkZXMoZXh0ZW5zaW9uKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgfVxuXG4gICBwcml2YXRlIF92YWxpZGF0ZUZpbGVTaXplKGZpbGU6IEZpbGUpOiBib29sZWFuIHtcbiAgICAgIGlmICh0aGlzLm1heEZpbGVTaXplKSB7XG4gICAgICAgICByZXR1cm4gZmlsZS5zaXplID4gdGhpcy5tYXhGaWxlU2l6ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgfVxuXG4gICBwcml2YXRlIF9nZXRXaWR0aEVsZW1lbnQoZWxlbWVudDogRWxlbWVudFJlZik6IG51bWJlciB7XG4gICAgICBjb25zdCB7IGxlZnQsIHJpZ2h0IH0gPSBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICByZXR1cm4gcmlnaHQgLSBsZWZ0O1xuICAgfVxufVxuIl19
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1waWN0dXJlLXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9wcm9maWxlLXBpY3R1cmUtcGlja2VyL3Byb2ZpbGUtcGljdHVyZS1waWNrZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNKLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RSxPQUFPLEVBQTBDLGNBQWMsRUFBa0QsTUFBTSxnQkFBZ0IsQ0FBQztBQVl4SSxJQUFhLDZCQUE2QixxQ0FBMUMsTUFBYSw2QkFBNkI7SUFtRXZDLFlBQ29CLG1CQUF3QyxFQUN4QyxtQkFBd0MsRUFDeEMsZ0JBQWtDO1FBRmxDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBM0QvQyxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQVloQixzQkFBaUIsR0FBc0I7WUFDM0MsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsMENBQTBDLENBQUM7WUFDeEYsY0FBYyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsdURBQXVELENB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QUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dFQUlyQztBQUdEO0lBREMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzJEQWFoQztBQUlEO0lBREMsWUFBWSxDQUFDLGVBQWUsQ0FBQzs2REFhN0I7QUFsSVMsNkJBQTZCO0lBVnpDLFNBQVMsQ0FBQztRQUNSLFFBQVEsRUFBRSwwQkFBMEI7UUFDcEMsNjNDQUFvRDtRQUVwRCxTQUFTLEVBQUUsQ0FBQztnQkFDVCxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLCtCQUE2QixDQUFDO2dCQUM1RCxLQUFLLEVBQUUsSUFBSTthQUNiLENBQUM7O0tBQ0osQ0FBQztHQUNXLDZCQUE2QixDQTZPekM7U0E3T1ksNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgIENvbXBvbmVudCxcbiAgIEVsZW1lbnRSZWYsXG4gICBFdmVudEVtaXR0ZXIsXG4gICBmb3J3YXJkUmVmLFxuICAgSG9zdExpc3RlbmVyLFxuICAgSW5wdXQsXG4gICBPbkluaXQsXG4gICBPdXRwdXQsXG4gICBWaWV3Q2hpbGQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSBcInByaW1lbmcvYXBpXCI7XG5cbmltcG9ydCB7IEltYWdlQ3JvcHBlclNlcnZpY2UgfSBmcm9tIFwiLi4vaW1hZ2UtY3JvcHBlci9pbWFnZS1jcm9wcGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7IENvbmZpcm1hdGlvblRleHRzLCBDcm9wcGVyTGFiZWxzQ29uZmlnLCBGaWxlVmFsaWRhdGlvbiwgRmlsZVZhbGlkYXRpb25FcnJvcnMsIFByb2ZpbGVQaWN0dXJlUGlja2VyRGF0YSB9IGZyb20gXCIuL21vZGVscy9pbmRleFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgIHNlbGVjdG9yOiBcInMtcHJvZmlsZS1waWN0dXJlLXBpY2tlclwiLFxuICAgdGVtcGxhdGVVcmw6IFwicHJvZmlsZS1waWN0dXJlLXBpY2tlci5jb21wb25lbnQuaHRtbFwiLFxuICAgc3R5bGVVcmxzOiBbXCJwcm9maWxlLXBpY3R1cmUtcGlja2VyLmNvbXBvbmVudC5zY3NzXCJdLFxuICAgcHJvdmlkZXJzOiBbe1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQcm9maWxlUGljdHVyZVBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlUGljdHVyZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgQElucHV0KClcbiAgIHB1YmxpYyBzaW1wbGVUaXRsZTogc3RyaW5nO1xuXG4gICBASW5wdXQoKVxuICAgcHVibGljIGFjdGlvblRpdGxlOiBzdHJpbmc7XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgc3VidGl0bGU6IHN0cmluZztcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBhc3BlY3RSYXRpbyA9IDE7XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgY3JvcHBlckxhYmVsc0NvbmZpZzogQ3JvcHBlckxhYmVsc0NvbmZpZztcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyByZW1vdmVCdXR0b25MYWJlbDogc3RyaW5nO1xuXG4gICBASW5wdXQoKVxuICAgcHVibGljIGNoYW5nZUJ1dHRvbkxhYmVsOiBzdHJpbmc7XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgY29uZmlybWF0aW9uVGV4dHM6IENvbmZpcm1hdGlvblRleHRzID0ge1xuICAgICAgcmVtb3ZhbEhlYWRlcjogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMucmVtb3ZlX2ltYWdlXCIpLFxuICAgICAgcmVtb3ZhbE1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwicGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmNvbmZpcm1hdGlvbl9yZW1vdmVfaW1hZ2VcIiksXG4gICAgICByZW1vdmFsQWNjZXB0TGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwicGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnJlbW92ZVwiKSxcbiAgICAgIHJlbW92YWxSZWplY3RMYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuY2FuY2VsXCIpLFxuICAgfTtcblxuICAgQElucHV0KClcbiAgIHB1YmxpYyBtYXhGaWxlU2l6ZTogbnVtYmVyO1xuXG4gICBASW5wdXQoKVxuICAgcHVibGljIGFjY2VwdDogc3RyaW5nO1xuXG4gICBASW5wdXQoKVxuICAgcHVibGljIHN1cHBvcnRlZEV4dGVuc2lvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgIEBJbnB1dCgpXG4gICBwdWJsaWMgaW1hZ2U6IHN0cmluZztcblxuICAgQFZpZXdDaGlsZChcInVwbG9hZFBpY3R1cmVcIilcbiAgIHB1YmxpYyB1cGxvYWRQaWN0dXJlOiBFbGVtZW50UmVmO1xuXG4gICBAVmlld0NoaWxkKFwiaW5mb1wiKVxuICAgcHVibGljIGluZm86IEVsZW1lbnRSZWY7XG5cbiAgIEBWaWV3Q2hpbGQoXCJ0aHVtYm5haWxcIiwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICBwdWJsaWMgdGh1bWJuYWlsOiBFbGVtZW50UmVmO1xuXG4gICBAVmlld0NoaWxkKFwiZmlsZUlucHV0XCIsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgcHVibGljIGZpbGVJbnB1dDogRWxlbWVudFJlZjtcblxuICAgQE91dHB1dCgpXG4gICBwdWJsaWMgY2hhbmdlZEltYWdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgQE91dHB1dCgpXG4gICBwdWJsaWMgcmVtb3ZlZEltYWdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICBAT3V0cHV0KClcbiAgIHB1YmxpYyBpbnZhbGlkRmlsZTogRXZlbnRFbWl0dGVyPEZpbGVWYWxpZGF0aW9uRXJyb3JzPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgcHJpdmF0ZSBfdmFsdWU6IFByb2ZpbGVQaWN0dXJlUGlja2VyRGF0YTtcbiAgIHByaXZhdGUgX29uQ2hhbmdlOiAodmFsdWU6IFByb2ZpbGVQaWN0dXJlUGlja2VyRGF0YSkgPT4gdm9pZDtcbiAgIHByaXZhdGUgX29uVG91Y2hlZDogKHZhbHVlOiBQcm9maWxlUGljdHVyZVBpY2tlckRhdGEpID0+IHZvaWQ7XG5cbiAgIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBpbWFnZUNyb3BwZXJTZXJ2aWNlOiBJbWFnZUNyb3BwZXJTZXJ2aWNlLFxuICAgICAgcHJpdmF0ZSByZWFkb25seSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLFxuICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgKSB7IH1cblxuICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgIH1cblxuICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICB0aGlzLl9vbkNoYW5nZSA9IG9uQ2hhbmdlO1xuICAgfVxuXG4gICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgdGhpcy5fb25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICAgfVxuXG4gICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICB0aGlzLl9ub3JtYWxpemVTdXBvcnRlZEV4dGVuc2lvbnMoKTtcbiAgIH1cblxuICAgQEhvc3RMaXN0ZW5lcihcImRyYWdvdmVyXCIsIFtcIiRldmVudFwiXSlcbiAgIHB1YmxpYyBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgIH1cblxuICAgQEhvc3RMaXN0ZW5lcihcImRyYWdsZWF2ZVwiLCBbXCIkZXZlbnRcIl0pXG4gICBwdWJsaWMgb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgfVxuXG4gICBASG9zdExpc3RlbmVyKFwiZHJvcFwiLCBbXCIkZXZlbnRcIl0pXG4gICBwdWJsaWMgb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgY29uc3QgZmlsZXM6IEZpbGVbXSA9IFtdO1xuICAgICAgY29uc3QgZGF0YVRyYW5zZmVyRmlsZXMgPSBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXM7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YVRyYW5zZmVyRmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgIGZpbGVzLnB1c2goZGF0YVRyYW5zZmVyRmlsZXMuaXRlbShpKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3Nob3dJbWFnZUNyb3BwZXIoZmlsZXMpO1xuICAgfVxuXG4gICAvLyBWZXJpZmljYW5kbyBvIHJlZGltZW5zaW9uYW1lbnRvIHBhcmEgYWp1c3RhciBvIGRlc2lnbiBwYXJhIGZpY2FyIHJlc3BvbnNpdm8uXG4gICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxuICAgcHVibGljIG9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMudXBsb2FkUGljdHVyZSAmJiB0aGlzLmluZm8gJiYgdGhpcy50aHVtYm5haWwpIHtcbiAgICAgICAgIGNvbnN0IHVwbG9hZFBpY3R1cmVXaWR0aCA9IHRoaXMuX2dldFdpZHRoRWxlbWVudCh0aGlzLnVwbG9hZFBpY3R1cmUpO1xuICAgICAgICAgY29uc3QgaW5mb1dpZHRoID0gdGhpcy5fZ2V0V2lkdGhFbGVtZW50KHRoaXMuaW5mbyk7XG4gICAgICAgICBjb25zdCB0aHVtYm5haWxXaWR0aCA9IHRoaXMuX2dldFdpZHRoRWxlbWVudCh0aGlzLnRodW1ibmFpbCk7XG5cbiAgICAgICAgIGlmICh0aHVtYm5haWxXaWR0aCArIGluZm9XaWR0aCA+IHVwbG9hZFBpY3R1cmVXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRQaWN0dXJlLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChcInVwbG9hZC1waWN0dXJlLS1zbWFsbFwiKTtcbiAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFBpY3R1cmUubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwidXBsb2FkLXBpY3R1cmUtLXNtYWxsXCIpO1xuICAgICAgICAgfVxuICAgICAgfVxuICAgfVxuXG4gICBwdWJsaWMgc2VsZWN0UGhvdG8oKTogdm9pZCB7XG4gICAgICBjb25zdCBmaWxlSW5wdXRFbGVtZW50ID0gdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudDtcbiAgICAgIGZpbGVJbnB1dEVsZW1lbnQudmFsdWUgPSBcIlwiO1xuICAgICAgZmlsZUlucHV0RWxlbWVudC5jbGljaygpO1xuICAgfVxuXG4gICBwdWJsaWMgcmVtb3ZlUGhvdG8oKTogdm9pZCB7XG4gICAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XG4gICAgICAgICBtZXNzYWdlOiB0aGlzLmNvbmZpcm1hdGlvblRleHRzLnJlbW92YWxNZXNzYWdlLFxuICAgICAgICAgYWNjZXB0TGFiZWw6IHRoaXMuY29uZmlybWF0aW9uVGV4dHMucmVtb3ZhbEFjY2VwdExhYmVsLFxuICAgICAgICAgcmVqZWN0TGFiZWw6IHRoaXMuY29uZmlybWF0aW9uVGV4dHMucmVtb3ZhbFJlamVjdExhYmVsLFxuICAgICAgICAgaGVhZGVyOiB0aGlzLmNvbmZpcm1hdGlvblRleHRzLnJlbW92YWxIZWFkZXIsXG4gICAgICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVJbnB1dEVsZW1lbnQgPSB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgZmlsZUlucHV0RWxlbWVudC52YWx1ZSA9IFwiXCI7XG4gICAgICAgICAgICB0aGlzLmltYWdlID0gXCJcIjtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlZEltYWdlLmVtaXQoKTtcbiAgICAgICAgIH0sXG4gICAgICB9KTtcbiAgIH1cblxuICAgcHVibGljIHBob3RvU2VsZWN0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgdGhpcy5fc2hvd0ltYWdlQ3JvcHBlcihldmVudC5zcmNFbGVtZW50LmZpbGVzKTtcbiAgIH1cblxuICAgcHJpdmF0ZSBfc2hvd0ltYWdlQ3JvcHBlcihmaWxlczogRmlsZVtdKTogdm9pZCB7XG4gICAgICBpZiAoIXRoaXMuX3ZhbGlkYXRlRGF0YShmaWxlcykpIHtcbiAgICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsZSA9IGZpbGVzWzBdO1xuXG4gICAgICBjb25zdCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIGZpbGVSZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgIGZpbGVSZWFkZXIub25sb2FkZW5kID0gKGZpbGVFdmVudDogYW55KSA9PiB7XG4gICAgICAgICB0aGlzLmltYWdlQ3JvcHBlclNlcnZpY2Uuc2hvdyh7XG4gICAgICAgICAgICBpbWFnZVNvdXJjZTogZmlsZUV2ZW50LnRhcmdldC5yZXN1bHQsXG4gICAgICAgICAgICBjcm9wcGVkSW1hZ2U6IGltYWdlID0+IHtcbiAgICAgICAgICAgICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTtcbiAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlZEltYWdlLmVtaXQoaW1hZ2UpO1xuICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB7IHNvdXJjZUZpbGU6IGZpbGUsIGJhc2U2NDogaW1hZ2UgfTtcbiAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjaGFuZ2VJbWFnZTogKCkgPT4gdGhpcy5zZWxlY3RQaG90bygpLFxuICAgICAgICAgICAgYWxsb3dTZWxlY3RBbm90aGVyOiBmYWxzZSxcbiAgICAgICAgICAgIGFzcGVjdFJhdGlvOiB0aGlzLmFzcGVjdFJhdGlvLFxuICAgICAgICAgICAgLi4udGhpcy5jcm9wcGVyTGFiZWxzQ29uZmlnLFxuICAgICAgICAgfSk7XG4gICAgICB9O1xuICAgfVxuXG4gICBwcml2YXRlIF9ub3JtYWxpemVTdXBvcnRlZEV4dGVuc2lvbnMoKTogdm9pZCB7XG4gICAgICB0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnMgPSB0aGlzLnN1cHBvcnRlZEV4dGVuc2lvbnNcbiAgICAgICAgID8ubWFwKGV4dGVuc2lvbiA9PiBleHRlbnNpb24ucmVwbGFjZShcIi5cIiwgXCJcIikudG9Mb2NhbGVMb3dlckNhc2UoKSk7XG4gICB9XG5cbiAgIHByaXZhdGUgX3ZhbGlkYXRlRGF0YShmaWxlczogRmlsZVtdKTogYm9vbGVhbiB7XG4gICAgICBpZiAoIWZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmlsZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgdGhpcy5pbnZhbGlkRmlsZS5lbWl0KHsgZmlsZTogbnVsbCwgdmFsaWRhdGlvbjogRmlsZVZhbGlkYXRpb24uTWF4RmlsZUxpbWl0IH0pO1xuICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWxlID0gZmlsZXNbMF07XG5cbiAgICAgIGlmICghZmlsZS50eXBlLmluY2x1ZGVzKFwiaW1hZ2VcIikpIHtcbiAgICAgICAgIHRoaXMuaW52YWxpZEZpbGUuZW1pdCh7IGZpbGUsIHZhbGlkYXRpb246IEZpbGVWYWxpZGF0aW9uLlR5cGVJbnZhbGlkIH0pO1xuICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuX3ZhbGlkYXRlRmlsZUV4dGVuc2lvbihmaWxlKSkge1xuICAgICAgICAgdGhpcy5pbnZhbGlkRmlsZS5lbWl0KHsgZmlsZSwgdmFsaWRhdGlvbjogRmlsZVZhbGlkYXRpb24uVW5zdXBwb3J0ZWRFeHRlbnNpb24gfSk7XG4gICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5fdmFsaWRhdGVGaWxlU2l6ZShmaWxlKSkge1xuICAgICAgICAgdGhpcy5pbnZhbGlkRmlsZS5lbWl0KHsgZmlsZSwgdmFsaWRhdGlvbjogRmlsZVZhbGlkYXRpb24uTWF4RmlsZVNpemUgfSk7XG4gICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgfVxuXG4gICBwcml2YXRlIF92YWxpZGF0ZUZpbGVFeHRlbnNpb24oZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICAgICAgaWYgKHRoaXMuc3VwcG9ydGVkRXh0ZW5zaW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlLm5hbWUuc3BsaXQoXCIuXCIpLnBvcCgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICByZXR1cm4gdGhpcy5zdXBwb3J0ZWRFeHRlbnNpb25zLmluY2x1ZGVzKGV4dGVuc2lvbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgIH1cblxuICAgcHJpdmF0ZSBfdmFsaWRhdGVGaWxlU2l6ZShmaWxlOiBGaWxlKTogYm9vbGVhbiB7XG4gICAgICBpZiAodGhpcy5tYXhGaWxlU2l6ZSkge1xuICAgICAgICAgcmV0dXJuIGZpbGUuc2l6ZSA+IHRoaXMubWF4RmlsZVNpemU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgIH1cblxuICAgcHJpdmF0ZSBfZ2V0V2lkdGhFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnRSZWYpOiBudW1iZXIge1xuICAgICAgY29uc3QgeyBsZWZ0LCByaWdodCB9ID0gZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgcmV0dXJuIHJpZ2h0IC0gbGVmdDtcbiAgIH1cbn1cbiJdfQ==
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { NgModule } from "@angular/core";
|
|
3
2
|
import { CommonModule } from "@angular/common";
|
|
4
|
-
import {
|
|
3
|
+
import { NgModule } from "@angular/core";
|
|
4
|
+
import { TranslateModule } from "@ngx-translate/core";
|
|
5
5
|
import { ConfirmationService } from "primeng/api";
|
|
6
|
+
import { ConfirmDialogModule } from "primeng/confirmdialog";
|
|
6
7
|
import { ButtonModule } from '../button/button.module';
|
|
7
|
-
import { ThumbnailModule } from '../thumbnail/thumbnail.module';
|
|
8
8
|
import { ImageCropperModule } from '../image-cropper/image-cropper.module';
|
|
9
9
|
import { ImageCropperService } from '../image-cropper/image-cropper.service';
|
|
10
|
+
import { ThumbnailModule } from '../thumbnail/thumbnail.module';
|
|
10
11
|
import { ProfilePicturePickerComponent } from "./profile-picture-picker.component";
|
|
11
12
|
let ProfilePicturePickerModule = class ProfilePicturePickerModule {
|
|
12
13
|
};
|
|
@@ -14,6 +15,7 @@ ProfilePicturePickerModule = __decorate([
|
|
|
14
15
|
NgModule({
|
|
15
16
|
imports: [
|
|
16
17
|
CommonModule,
|
|
18
|
+
TranslateModule,
|
|
17
19
|
ButtonModule,
|
|
18
20
|
ThumbnailModule,
|
|
19
21
|
ImageCropperModule,
|
|
@@ -28,4 +30,4 @@ ProfilePicturePickerModule = __decorate([
|
|
|
28
30
|
})
|
|
29
31
|
], ProfilePicturePickerModule);
|
|
30
32
|
export { ProfilePicturePickerModule };
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1waWN0dXJlLXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9wcm9maWxlLXBpY3R1cmUtcGlja2VyL3Byb2ZpbGUtcGljdHVyZS1waWNrZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFrQm5GLElBQWEsMEJBQTBCLEdBQXZDLE1BQWEsMEJBQTBCO0NBQUksQ0FBQTtBQUE5QiwwQkFBMEI7SUFoQnRDLFFBQVEsQ0FBQztRQUNQLE9BQU8sRUFBRTtZQUNOLFlBQVk7WUFDWixlQUFlO1lBQ2YsWUFBWTtZQUNaLGVBQWU7WUFDZixrQkFBa0I7WUFDbEIsbUJBQW1CO1NBQ3JCO1FBQ0QsWUFBWSxFQUFFLENBQUMsNkJBQTZCLENBQUM7UUFDN0MsT0FBTyxFQUFFLENBQUMsNkJBQTZCLENBQUM7UUFDeEMsU0FBUyxFQUFFO1lBQ1IsbUJBQW1CO1lBQ25CLG1CQUFtQjtTQUNyQjtLQUNILENBQUM7R0FDVywwQkFBMEIsQ0FBSTtTQUE5QiwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSBcInByaW1lbmcvYXBpXCI7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nTW9kdWxlIH0gZnJvbSBcInByaW1lbmcvY29uZmlybWRpYWxvZ1wiO1xuXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLm1vZHVsZSc7XG5pbXBvcnQgeyBJbWFnZUNyb3BwZXJNb2R1bGUgfSBmcm9tICcuLi9pbWFnZS1jcm9wcGVyL2ltYWdlLWNyb3BwZXIubW9kdWxlJztcbmltcG9ydCB7IEltYWdlQ3JvcHBlclNlcnZpY2UgfSBmcm9tICcuLi9pbWFnZS1jcm9wcGVyL2ltYWdlLWNyb3BwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBUaHVtYm5haWxNb2R1bGUgfSBmcm9tICcuLi90aHVtYm5haWwvdGh1bWJuYWlsLm1vZHVsZSc7XG5pbXBvcnQgeyBQcm9maWxlUGljdHVyZVBpY2tlckNvbXBvbmVudCB9IGZyb20gXCIuL3Byb2ZpbGUtcGljdHVyZS1waWNrZXIuY29tcG9uZW50XCI7XG5cbkBOZ01vZHVsZSh7XG4gICBpbXBvcnRzOiBbXG4gICAgICBDb21tb25Nb2R1bGUsXG4gICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICBCdXR0b25Nb2R1bGUsXG4gICAgICBUaHVtYm5haWxNb2R1bGUsXG4gICAgICBJbWFnZUNyb3BwZXJNb2R1bGUsXG4gICAgICBDb25maXJtRGlhbG9nTW9kdWxlLFxuICAgXSxcbiAgIGRlY2xhcmF0aW9uczogW1Byb2ZpbGVQaWN0dXJlUGlja2VyQ29tcG9uZW50XSxcbiAgIGV4cG9ydHM6IFtQcm9maWxlUGljdHVyZVBpY2tlckNvbXBvbmVudF0sXG4gICBwcm92aWRlcnM6IFtcbiAgICAgIEltYWdlQ3JvcHBlclNlcnZpY2UsXG4gICAgICBDb25maXJtYXRpb25TZXJ2aWNlLFxuICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZmlsZVBpY3R1cmVQaWNrZXJNb2R1bGUgeyB9Il19
|
|
@@ -68,7 +68,7 @@ let TableColumnsComponent = class TableColumnsComponent {
|
|
|
68
68
|
return column.prefix ? column.prefix : `${this.hostProjectConfigs.domain}.${this.hostProjectConfigs.service}.`;
|
|
69
69
|
}
|
|
70
70
|
isAttributeValueInvalid(attributeValue) {
|
|
71
|
-
return attributeValue
|
|
71
|
+
return !attributeValue || (this.isArray(attributeValue) && !attributeValue.length);
|
|
72
72
|
}
|
|
73
73
|
getFormattedColumnValue(column, columnValue, unifiedColumnValues, uninformedText, uninformedNumber) {
|
|
74
74
|
if (uninformedNumber === column.attributes.length) {
|
|
@@ -248,4 +248,4 @@ TableColumnsComponent = __decorate([
|
|
|
248
248
|
__param(2, Inject(HostProjectConfigsInjectionToken))
|
|
249
249
|
], TableColumnsComponent);
|
|
250
250
|
export { TableColumnsComponent };
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90YWJsZS90YWJsZS1jb2x1bW4vdGFibGUtY29sdW1ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0gsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFjLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUNyQyxPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQztBQUVsQyxPQUFPLEVBRUgsZ0NBQWdDLEVBQ25DLE1BQU0sb0NBQW9DLENBQUM7QUFFNUMsT0FBTyxFQUdILG1CQUFtQixFQUV0QixNQUFNLFVBQVUsQ0FBQztBQUVsQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7QUFPdkIsSUFBYSxxQkFBcUIsR0FBbEMsTUFBYSxxQkFBcUI7SUFlOUIsWUFDcUIsZ0JBQWtDLEVBQ2xDLFNBQTJCLEVBQ2Usa0JBQXNDO1FBRmhGLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDZSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBTDlGLHFCQUFnQixHQUFtQixFQUFFLENBQUM7SUFNMUMsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLENBQUMsMkJBQTJCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFMUMsSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FB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LEtBQUssS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNwRixDQUFDO0lBRU8sa0JBQWtCLENBQUMsTUFBYTtRQUNwQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxLQUFLLE1BQUssSUFBSSxJQUFJLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLEtBQUssTUFBSyxTQUFTLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNoSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsT0FBaUI7UUFDM0MsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0QsQ0FBQztDQUNKLENBQUE7O1lBdFEwQyxnQkFBZ0I7WUFDdkIsZ0JBQWdCOzRDQUMzQyxNQUFNLFNBQUMsZ0NBQWdDOztBQWhCSTtJQUEvQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7OERBQW1DO0FBR2xGO0lBREMsS0FBSyxFQUFFO3NEQUNrQjtBQUcxQjtJQURDLEtBQUssRUFBRTt1REFDYztBQUd0QjtJQURDLEtBQUssRUFBRTtxREFDaUM7QUFYaEMscUJBQXFCO0lBTGpDLFNBQVMsQ0FBQztRQUNQLCsxRUFBNkM7UUFFN0MsUUFBUSxFQUFFLGlCQUFpQjs7S0FDOUIsQ0FBQztJQW1CTyxXQUFBLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFBO0dBbEJwQyxxQkFBcUIsQ0FzUmpDO1NBdFJZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBNYXNrQ29uZmlnLCBhcHBseU1hc2sgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL25nMi1jdXJyZW5jeS1tYXNrXCI7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gXCJiaWdudW1iZXIuanNcIjtcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSBcIm1vbWVudFwiO1xuXG5pbXBvcnQge1xuICAgIEhvc3RQcm9qZWN0Q29uZmlncyxcbiAgICBIb3N0UHJvamVjdENvbmZpZ3NJbmplY3Rpb25Ub2tlblxufSBmcm9tIFwiLi4vLi4vLi4vYW5ndWxhci1jb21wb25lbnRzLm1vZHVsZVwiO1xuaW1wb3J0IHsgSVRva2VuIH0gZnJvbSBcIi4uLy4uL3Rva2VuLWxpc3RcIjtcbmltcG9ydCB7XG4gICAgQ29sdW1uLFxuICAgIENvbHVtblZhbHVlcyxcbiAgICBFbnVtQ29sdW1uRmllbGRUeXBlLFxuICAgIFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9uc1xufSBmcm9tIFwiLi9tb2RlbHNcIjtcblxuY29uc3QgbW9tZW50ID0gbW9tZW50XztcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6IFwiLi90YWJsZS1jb2x1bW5zLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL3RhYmxlLWNvbHVtbnMuY29tcG9uZW50LnNjc3NcIl0sXG4gICAgc2VsZWN0b3I6IFwicy10YWJsZS1jb2x1bW5zXCIsXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29sdW1uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgICBAVmlld0NoaWxkKFwiY29sdW1uc1RlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pIGNvbHVtbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbHVtbnMhOiBDb2x1bW5bXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJvd1ZhbHVlITogYW55O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9jYWxlITogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zO1xuXG4gICAgcHVibGljIGZvcm1hdHRlZENvbHVtbnM6IENvbHVtblZhbHVlc1tdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgQEluamVjdChIb3N0UHJvamVjdENvbmZpZ3NJbmplY3Rpb25Ub2tlbikgcHJpdmF0ZSByZWFkb25seSBob3N0UHJvamVjdENvbmZpZ3M6IEhvc3RQcm9qZWN0Q29uZmlnc1xuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUNvbXBvbmVudEF0dHJpYnV0ZXMoY2hhbmdlcyk7XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuY29sdW1ucyAmJiBjaGFuZ2VzLmNvbHVtbnMuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmNvbHVtbnMucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5zb3J0Q29sdW1uc0J5U2VxdWVuY2UoY2hhbmdlcy5jb2x1bW5zLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNyZWF0ZUNvbHVtbnNUZW1wbGF0ZShjaGFuZ2VzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNBcnJheSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3BsaXR0ZWRTdHJpbmcoY29sdW1uOiBDb2x1bW5WYWx1ZXMpOiB7IHZhbHVlOiBzdHJpbmcsIGlzVW5pbmZvcm1lZDogYm9vbGVhbiwgc2VwYXJhdG9yOiBzdHJpbmcgfVtdIHtcbiAgICAgICAgY29uc3QgeyBjb2x1bW5WYWx1ZSwgc2VwYXJhdG9yLCB1bmluZm9ybWVkIH0gPSBjb2x1bW47XG4gICAgICAgIGlmICh0eXBlb2YgY29sdW1uVmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHNwbGl0dGVkU3RyaW5nID0gY29sdW1uVmFsdWUuc3BsaXQoc2VwYXJhdG9yKTtcbiAgICAgICAgICAgIHJldHVybiBzcGxpdHRlZFN0cmluZy5tYXAoKHN0cmluZywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0xhc3RJbmRleCA9IHNwbGl0dGVkU3RyaW5nLmxlbmd0aCAtIDEgPT09IGluZGV4O1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgIGlzVW5pbmZvcm1lZDogc3RyaW5nID09PSB1bmluZm9ybWVkLFxuICAgICAgICAgICAgICAgICAgICBzZXBhcmF0b3I6ICFpc0xhc3RJbmRleCA/IHNlcGFyYXRvciA6IFwiXCJcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlQ29tcG9uZW50QXR0cmlidXRlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb2x1bW5zICYmICFjaGFuZ2VzLmNvbHVtbnM/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlICdjb2x1bW5zJyBhdHRyaWJ1dGUgbXVzdCBiZSBpbmZvcm1lZCFcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnJvd1ZhbHVlICYmICFjaGFuZ2VzLnJvd1ZhbHVlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSAncm93VmFsdWUnIGF0dHJpYnV0ZSBtdXN0IGJlIGluZm9ybWVkIVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMubG9jYWxlICYmICFjaGFuZ2VzLmxvY2FsZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgJ2xvY2FsZScgYXR0cmlidXRlIG11c3QgYmUgaW5mb3JtZWQhXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDb2x1bW5zVGVtcGxhdGUoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcblxuICAgICAgICBjb25zdCBjb2x1bW5zOiBDb2x1bW5bXSA9IGNoYW5nZXMuY29sdW1ucz8uY3VycmVudFZhbHVlIHx8IHRoaXMuY29sdW1ucztcbiAgICAgICAgY29uc3Qgcm93VmFsdWU6IG9iamVjdCA9IGNoYW5nZXMucm93VmFsdWU/LmN1cnJlbnRWYWx1ZSB8fCB0aGlzLnJvd1ZhbHVlO1xuICAgICAgICBjb25zdCBsb2NhbGU6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucyA9IGNoYW5nZXMubG9jYWxlPy5jdXJyZW50VmFsdWUgfHwgdGhpcy5sb2NhbGU7XG5cbiAgICAgICAgdGhpcy5mb3JtYXR0ZWRDb2x1bW5zID0gW107XG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB0aGlzLmZvcm1hdHRlZENvbHVtbnMucHVzaCh0aGlzLmdldENvbHVtblZhbHVlKGNvbHVtbiwgcm93VmFsdWUsIGxvY2FsZSkpKTtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmNvbHVtbnNUZW1wbGF0ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5TZXBhcmF0b3IoY29sdW1uOiBDb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5zZXBhcmF0b3IgPyBjb2x1bW4uc2VwYXJhdG9yIDogXCIgLSBcIjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRyYW5zbGF0aW9uUHJlZml4KGNvbHVtbjogQ29sdW1uKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4ucHJlZml4ID8gY29sdW1uLnByZWZpeCA6IGAke3RoaXMuaG9zdFByb2plY3RDb25maWdzLmRvbWFpbn0uJHt0aGlzLmhvc3RQcm9qZWN0Q29uZmlncy5zZXJ2aWNlfS5gO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBdHRyaWJ1dGVWYWx1ZUludmFsaWQoYXR0cmlidXRlVmFsdWU6IGFueSkge1xuICAgICAgICByZXR1cm4gYXR0cmlidXRlVmFsdWUgPT09IG51bGwgfHwgYXR0cmlidXRlVmFsdWUgPT09IHVuZGVmaW5lZCB8fCAodGhpcy5pc0FycmF5KGF0dHJpYnV0ZVZhbHVlKSAmJiAhYXR0cmlidXRlVmFsdWUubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZvcm1hdHRlZENvbHVtblZhbHVlKGNvbHVtbjogQ29sdW1uLCBjb2x1bW5WYWx1ZTogYW55W10sIHVuaWZpZWRDb2x1bW5WYWx1ZXM6IHN0cmluZyxcbiAgICAgICAgdW5pbmZvcm1lZFRleHQ6IHN0cmluZywgdW5pbmZvcm1lZE51bWJlcjogbnVtYmVyKSB7XG5cbiAgICAgICAgaWYgKHVuaW5mb3JtZWROdW1iZXIgPT09IGNvbHVtbi5hdHRyaWJ1dGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuaW5mb3JtZWRUZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbHVtbi50eXBlID09PSBFbnVtQ29sdW1uRmllbGRUeXBlLlRPS0VOUykge1xuICAgICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdC5hcHBseShbXSwgY29sdW1uVmFsdWUuZmlsdGVyKHZhbHVlcyA9PiB2YWx1ZXMgIT09IHVuaW5mb3JtZWRUZXh0KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5pZmllZENvbHVtblZhbHVlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZTogc3RyaW5nLCByb3dWYWx1ZTogb2JqZWN0KSB7XG4gICAgICAgIGxldCBhdHRyaWJ1dGVWYWx1ZSE6IGFueTtcblxuICAgICAgICBhdHRyaWJ1dGVcbiAgICAgICAgICAgIC5zcGxpdChcIi9cIilcbiAgICAgICAgICAgIC5mb3JFYWNoKCh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGVWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goKHZhbDogc3RyaW5nLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyb3dWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSByb3dWYWx1ZVt2YWxdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZVt2YWxdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gYXR0cmlidXRlVmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXROdW1iZXJDb25maWdzKGNvbHVtbjogQ29sdW1uLCBsb2NhbGU6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucyk6IE1hc2tDb25maWcge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ubG9jYWxlLm51bWJlcixcbiAgICAgICAgICAgIHNjYWxlOiBjb2x1bW4uc2NhbGUgIT09IG51bGwgJiYgY29sdW1uLnNjYWxlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0Q29sdW1uU2NhbGUoY29sdW1uLnNjYWxlKVxuICAgICAgICAgICAgICAgIDogbG9jYWxlLm51bWJlci5zY2FsZSxcbiAgICAgICAgICAgIHByZWZpeDogYCR7bG9jYWxlLm51bWJlci5jdXJyZW5jeVN5bWJvbH0gYFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF0ZUZvcm1hdChjb2x1bW46IENvbHVtbiwgbG9jYWxlOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5kYXRlRm9ybWF0ID8gY29sdW1uLmRhdGVGb3JtYXQgOiBsb2NhbGUuY2FsZW5kYXIuZGF0ZUZvcm1hdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtblZhbHVlKGNvbHVtbjogQ29sdW1uLCByb3dWYWx1ZTogb2JqZWN0LCBsb2NhbGU6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucyk6IENvbHVtblZhbHVlcyB7XG4gICAgICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuZ2V0VHJhbnNsYXRpb25QcmVmaXgoY29sdW1uKTtcbiAgICAgICAgY29uc3Qgc2VwYXJhdG9yID0gdGhpcy5nZXRDb2x1bW5TZXBhcmF0b3IoY29sdW1uKTtcbiAgICAgICAgY29uc3QgdW5pbmZvcm1lZCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQocHJlZml4ICsgXCJlbXB0eV9sYWJlbFwiKTtcbiAgICAgICAgY29uc3Qgc3R5bGUgPSBjb2x1bW4uc3R5bGU7XG5cbiAgICAgICAgY29uc3QgY29sdW1uVmFsdWUgPSBjb2x1bW4uYXR0cmlidXRlc1xuICAgICAgICAgICAgLm1hcCgoYXR0cmlidXRlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVWYWx1ZSA9IHRoaXMuZ2V0QXR0cmlidXRlVmFsdWUoYXR0cmlidXRlLCByb3dWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0F0dHJpYnV0ZVZhbHVlSW52YWxpZChhdHRyaWJ1dGVWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuaW5mb3JtZWQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgbnVtYmVyQ29uZmlncyA9IHRoaXMuZ2V0TnVtYmVyQ29uZmlncyhjb2x1bW4sIGxvY2FsZSk7XG5cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbHVtbi50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5FTlVNOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoY29sdW1uLmVudW1QcmVmaXggKyBhdHRyaWJ1dGVWYWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5DVVJSRU5DWTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcHBseU1hc2soYXR0cmlidXRlVmFsdWUsIG51bWJlckNvbmZpZ3MsIHRoaXMuaXNOdW1iZXIoYXR0cmlidXRlVmFsdWUpKTtcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuREFURTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVGb3JtYXQgPSB0aGlzLmdldERhdGVGb3JtYXQoY29sdW1uLCBsb2NhbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vbWVudChhdHRyaWJ1dGVWYWx1ZSkuZm9ybWF0KGRhdGVGb3JtYXQpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5CT09MRUFOOlxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZSA/IFwieWVzXCIgOiBcIm5vXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChwcmVmaXggKyB2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBFbnVtQ29sdW1uRmllbGRUeXBlLk5VTUJFUjpcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckNvbmZpZ3MucHJlZml4ID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcHBseU1hc2soYXR0cmlidXRlVmFsdWUsIG51bWJlckNvbmZpZ3MsIHRoaXMuaXNOdW1iZXIoYXR0cmlidXRlVmFsdWUpKTtcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuVE9LRU5TOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5zKGF0dHJpYnV0ZVZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZVZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHVuaWZpZWRDb2x1bW5WYWx1ZXMgPSBjb2x1bW5WYWx1ZS5qb2luKHNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IHVuaW5mb3JtZWROdW1iZXIgPSB1bmlmaWVkQ29sdW1uVmFsdWVzXG4gICAgICAgICAgICAuc3BsaXQoc2VwYXJhdG9yKVxuICAgICAgICAgICAgLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSA9PT0gdW5pbmZvcm1lZCkubGVuZ3RoO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRDb2x1bW5WYWx1ZSA9IHRoaXMuZ2V0Rm9ybWF0dGVkQ29sdW1uVmFsdWUoY29sdW1uLCBjb2x1bW5WYWx1ZSwgdW5pZmllZENvbHVtblZhbHVlcywgdW5pbmZvcm1lZCwgdW5pbmZvcm1lZE51bWJlcik7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0eWxlLFxuICAgICAgICAgICAgY29sdW1uVmFsdWU6IGZvcm1hdHRlZENvbHVtblZhbHVlLFxuICAgICAgICAgICAgc2VwYXJhdG9yLFxuICAgICAgICAgICAgdW5pbmZvcm1lZCxcbiAgICAgICAgICAgIGJhZGdlQ29uZmlnczogY29sdW1uPy5iYWRnZUNvbmZpZ3M/LmZpbmQoXG4gICAgICAgICAgICAgICAgKGJhZGdlQ29uZmlnKSA9PiBiYWRnZUNvbmZpZy5lbnVtVmFsdWUgPT09IHJvd1ZhbHVlW2NvbHVtbi5hdHRyaWJ1dGVzWzBdID8/IGNvbHVtbi5maWVsZF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0eXBlOiBjb2x1bW4udHlwZSxcbiAgICAgICAgICAgIHRvb2x0aXA6IHRoaXMuZ2V0Q29sdW1uVG9vbHRpcChjb2x1bW4udG9vbHRpcCksXG4gICAgICAgICAgICBpbmZvU2lnbjogdGhpcy5nZXRDb2x1bW5JbmZvU2lnbihjb2x1bW4uaW5mb1NpZ24pLFxuICAgICAgICAgICAgb25MaW5rQ2xpY2s6IGNvbHVtbi5vbkxpbmtDbGljayxcbiAgICAgICAgICAgIG9uQ29sdW1uQ2xpY2s6IGNvbHVtbi5vbkNvbHVtbkNsaWNrXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5TY2FsZShzY2FsZTogbnVtYmVyIHwgKChyb3dWYWx1ZTogYW55KSA9PiBudW1iZXIpKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzY2FsZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICByZXR1cm4gc2NhbGUodGhpcy5yb3dWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNjYWxlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uSW5mb1NpZ24oaW5mb1NpZ246IHN0cmluZyB8ICgocm93VmFsdWU6IGFueSkgPT4gc3RyaW5nKSk6IHN0cmluZyB7XG4gICAgICAgIGlmIChpbmZvU2lnbiAhPT0gdW5kZWZpbmVkICYmIGluZm9TaWduICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGluZm9TaWduID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5mb1NpZ24odGhpcy5yb3dWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaW5mb1NpZ247XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5Ub29sdGlwKHRvb2x0aXA6IHN0cmluZyB8ICgocm93VmFsdWU6IGFueSkgPT4gc3RyaW5nKSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0b29sdGlwICE9PSB1bmRlZmluZWQgJiYgdG9vbHRpcCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0b29sdGlwID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9vbHRpcCh0aGlzLnJvd1ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0b29sdGlwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNOdW1iZXIodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIShuZXcgQmlnTnVtYmVyKHZhbHVlKS5pc05hTigpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFRva2Vucyh2YWx1ZXM6IGFueSk6IElUb2tlbltdIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQXJyYXkodmFsdWVzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVG8gdXNlIHRva2VucyBhbiBhcnJheSBtdXN0IGJlIGluZm9ybWVkXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWRUb2tlbkFycmF5KHZhbHVlcykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCBhIHZhbGlkIHRva2VuIGFycmF5LiBNdXN0IGJlIGEgcHJpbWl0aXZlIHZhbHVlcyBhcnJheSBvciBhbiBvYmplY3RzIHdpdGggbGFiZWwgYXR0cmlidXRlIGFycmF5XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNMYWJlbE9iamVjdEFycmF5KHZhbHVlcykpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWVzXG4gICAgICAgICAgICAuZmlsdGVyKCh2YWx1ZTogYW55KSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKVxuICAgICAgICAgICAgLm1hcCgodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gdHlwZW9mIHZhbHVlID09PSBcInN5bWJvbFwiID8gdmFsdWUudG9TdHJpbmcoKSA6IGAke3ZhbHVlfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ZhbGlkVG9rZW5BcnJheSh2YWx1ZXM6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzUHJpbWl0aXZlVmFsdWVzQXJyYXkodmFsdWVzKSB8fCB0aGlzLmlzTGFiZWxPYmplY3RBcnJheSh2YWx1ZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNQcmltaXRpdmVWYWx1ZXNBcnJheSh2YWx1ZXM6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKHZhbHVlID0+IHZhbHVlICE9PSBPYmplY3QodmFsdWUpKS5sZW5ndGggPT09IHZhbHVlcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0xhYmVsT2JqZWN0QXJyYXkodmFsdWVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZT8ubGFiZWwgIT09IG51bGwgJiYgdmFsdWU/LmxhYmVsICE9PSB1bmRlZmluZWQpLmxlbmd0aCA9PT0gdmFsdWVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRDb2x1bW5zQnlTZXF1ZW5jZShjb2x1bW5zOiBDb2x1bW5bXSk6IENvbHVtbltdIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbnMuc29ydCgoYSwgYikgPT4gYS5zZXF1ZW5jZSAtIGIuc2VxdWVuY2UpO1xuICAgIH1cbn1cbiJdfQ==
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy90YWJsZS90YWJsZS1jb2x1bW4vdGFibGUtY29sdW1ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0gsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFjLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUNyQyxPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQztBQUVsQyxPQUFPLEVBRUgsZ0NBQWdDLEVBQ25DLE1BQU0sb0NBQW9DLENBQUM7QUFFNUMsT0FBTyxFQUdILG1CQUFtQixFQUV0QixNQUFNLFVBQVUsQ0FBQztBQUVsQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7QUFPdkIsSUFBYSxxQkFBcUIsR0FBbEMsTUFBYSxxQkFBcUI7SUFlOUIsWUFDcUIsZ0JBQWtDLEVBQ2xDLFNBQTJCLEVBQ2Usa0JBQXNDO1FBRmhGLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDZSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBTDlGLHFCQUFnQixHQUFtQixFQUFFLENBQUM7SUFNMUMsQ0FBQztJQUVKLFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLENBQUMsMkJBQTJCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFMUMsSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FB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LENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3BGLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxNQUFhO1FBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLEtBQUssTUFBSyxJQUFJLElBQUksQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsS0FBSyxNQUFLLFNBQVMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2hILENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxPQUFpQjtRQUMzQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzRCxDQUFDO0NBQ0osQ0FBQTs7WUF0UTBDLGdCQUFnQjtZQUN2QixnQkFBZ0I7NENBQzNDLE1BQU0sU0FBQyxnQ0FBZ0M7O0FBaEJJO0lBQS9DLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzs4REFBbUM7QUFHbEY7SUFEQyxLQUFLLEVBQUU7c0RBQ2tCO0FBRzFCO0lBREMsS0FBSyxFQUFFO3VEQUNjO0FBR3RCO0lBREMsS0FBSyxFQUFFO3FEQUNpQztBQVhoQyxxQkFBcUI7SUFMakMsU0FBUyxDQUFDO1FBQ1AsKzFFQUE2QztRQUU3QyxRQUFRLEVBQUUsaUJBQWlCOztLQUM5QixDQUFDO0lBbUJPLFdBQUEsTUFBTSxDQUFDLGdDQUFnQyxDQUFDLENBQUE7R0FsQnBDLHFCQUFxQixDQXNSakM7U0F0UlkscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IE1hc2tDb25maWcsIGFwcGx5TWFzayB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvbmcyLWN1cnJlbmN5LW1hc2tcIjtcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSBcImJpZ251bWJlci5qc1wiO1xuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tIFwibW9tZW50XCI7XG5cbmltcG9ydCB7XG4gICAgSG9zdFByb2plY3RDb25maWdzLFxuICAgIEhvc3RQcm9qZWN0Q29uZmlnc0luamVjdGlvblRva2VuXG59IGZyb20gXCIuLi8uLi8uLi9hbmd1bGFyLWNvbXBvbmVudHMubW9kdWxlXCI7XG5pbXBvcnQgeyBJVG9rZW4gfSBmcm9tIFwiLi4vLi4vdG9rZW4tbGlzdFwiO1xuaW1wb3J0IHtcbiAgICBDb2x1bW4sXG4gICAgQ29sdW1uVmFsdWVzLFxuICAgIEVudW1Db2x1bW5GaWVsZFR5cGUsXG4gICAgVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zXG59IGZyb20gXCIuL21vZGVsc1wiO1xuXG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3RhYmxlLWNvbHVtbnMuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vdGFibGUtY29sdW1ucy5jb21wb25lbnQuc2Nzc1wiXSxcbiAgICBzZWxlY3RvcjogXCJzLXRhYmxlLWNvbHVtbnNcIixcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb2x1bW5zQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuICAgIEBWaWV3Q2hpbGQoXCJjb2x1bW5zVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSkgY29sdW1uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sdW1ucyE6IENvbHVtbltdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcm93VmFsdWUhOiBhbnk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb2NhbGUhOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnM7XG5cbiAgICBwdWJsaWMgZm9ybWF0dGVkQ29sdW1uczogQ29sdW1uVmFsdWVzW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEhvc3RQcm9qZWN0Q29uZmlnc0luamVjdGlvblRva2VuKSBwcml2YXRlIHJlYWRvbmx5IGhvc3RQcm9qZWN0Q29uZmlnczogSG9zdFByb2plY3RDb25maWdzXG4gICAgKSB7fVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbGlkYXRlQ29tcG9uZW50QXR0cmlidXRlcyhjaGFuZ2VzKTtcblxuICAgICAgICBpZiAoY2hhbmdlcy5jb2x1bW5zICYmIGNoYW5nZXMuY29sdW1ucy5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXMuY29sdW1ucy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLnNvcnRDb2x1bW5zQnlTZXF1ZW5jZShjaGFuZ2VzLmNvbHVtbnMuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3JlYXRlQ29sdW1uc1RlbXBsYXRlKGNoYW5nZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0FycmF5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTcGxpdHRlZFN0cmluZyhjb2x1bW46IENvbHVtblZhbHVlcyk6IHsgdmFsdWU6IHN0cmluZywgaXNVbmluZm9ybWVkOiBib29sZWFuLCBzZXBhcmF0b3I6IHN0cmluZyB9W10ge1xuICAgICAgICBjb25zdCB7IGNvbHVtblZhbHVlLCBzZXBhcmF0b3IsIHVuaW5mb3JtZWQgfSA9IGNvbHVtbjtcbiAgICAgICAgaWYgKHR5cGVvZiBjb2x1bW5WYWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3Qgc3BsaXR0ZWRTdHJpbmcgPSBjb2x1bW5WYWx1ZS5zcGxpdChzZXBhcmF0b3IpO1xuICAgICAgICAgICAgcmV0dXJuIHNwbGl0dGVkU3RyaW5nLm1hcCgoc3RyaW5nLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzTGFzdEluZGV4ID0gc3BsaXR0ZWRTdHJpbmcubGVuZ3RoIC0gMSA9PT0gaW5kZXg7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgaXNVbmluZm9ybWVkOiBzdHJpbmcgPT09IHVuaW5mb3JtZWQsXG4gICAgICAgICAgICAgICAgICAgIHNlcGFyYXRvcjogIWlzTGFzdEluZGV4ID8gc2VwYXJhdG9yIDogXCJcIlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVDb21wb25lbnRBdHRyaWJ1dGVzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbHVtbnMgJiYgIWNoYW5nZXMuY29sdW1ucz8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgJ2NvbHVtbnMnIGF0dHJpYnV0ZSBtdXN0IGJlIGluZm9ybWVkIVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMucm93VmFsdWUgJiYgIWNoYW5nZXMucm93VmFsdWU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlICdyb3dWYWx1ZScgYXR0cmlidXRlIG11c3QgYmUgaW5mb3JtZWQhXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5sb2NhbGUgJiYgIWNoYW5nZXMubG9jYWxlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSAnbG9jYWxlJyBhdHRyaWJ1dGUgbXVzdCBiZSBpbmZvcm1lZCFcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNvbHVtbnNUZW1wbGF0ZShjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtbnM6IENvbHVtbltdID0gY2hhbmdlcy5jb2x1bW5zPy5jdXJyZW50VmFsdWUgfHwgdGhpcy5jb2x1bW5zO1xuICAgICAgICBjb25zdCByb3dWYWx1ZTogb2JqZWN0ID0gY2hhbmdlcy5yb3dWYWx1ZT8uY3VycmVudFZhbHVlIHx8IHRoaXMucm93VmFsdWU7XG4gICAgICAgIGNvbnN0IGxvY2FsZTogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zID0gY2hhbmdlcy5sb2NhbGU/LmN1cnJlbnRWYWx1ZSB8fCB0aGlzLmxvY2FsZTtcblxuICAgICAgICB0aGlzLmZvcm1hdHRlZENvbHVtbnMgPSBbXTtcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHRoaXMuZm9ybWF0dGVkQ29sdW1ucy5wdXNoKHRoaXMuZ2V0Q29sdW1uVmFsdWUoY29sdW1uLCByb3dWYWx1ZSwgbG9jYWxlKSkpO1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuY29sdW1uc1RlbXBsYXRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtblNlcGFyYXRvcihjb2x1bW46IENvbHVtbikge1xuICAgICAgICByZXR1cm4gY29sdW1uLnNlcGFyYXRvciA/IGNvbHVtbi5zZXBhcmF0b3IgOiBcIiAtIFwiO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VHJhbnNsYXRpb25QcmVmaXgoY29sdW1uOiBDb2x1bW4pIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5wcmVmaXggPyBjb2x1bW4ucHJlZml4IDogYCR7dGhpcy5ob3N0UHJvamVjdENvbmZpZ3MuZG9tYWlufS4ke3RoaXMuaG9zdFByb2plY3RDb25maWdzLnNlcnZpY2V9LmA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0F0dHJpYnV0ZVZhbHVlSW52YWxpZChhdHRyaWJ1dGVWYWx1ZTogYW55KSB7XG4gICAgICAgIHJldHVybiAhYXR0cmlidXRlVmFsdWUgfHwgKHRoaXMuaXNBcnJheShhdHRyaWJ1dGVWYWx1ZSkgJiYgIWF0dHJpYnV0ZVZhbHVlLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGb3JtYXR0ZWRDb2x1bW5WYWx1ZShjb2x1bW46IENvbHVtbiwgY29sdW1uVmFsdWU6IGFueVtdLCB1bmlmaWVkQ29sdW1uVmFsdWVzOiBzdHJpbmcsXG4gICAgICAgIHVuaW5mb3JtZWRUZXh0OiBzdHJpbmcsIHVuaW5mb3JtZWROdW1iZXI6IG51bWJlcikge1xuXG4gICAgICAgIGlmICh1bmluZm9ybWVkTnVtYmVyID09PSBjb2x1bW4uYXR0cmlidXRlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmluZm9ybWVkVGV4dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gRW51bUNvbHVtbkZpZWxkVHlwZS5UT0tFTlMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQuYXBwbHkoW10sIGNvbHVtblZhbHVlLmZpbHRlcih2YWx1ZXMgPT4gdmFsdWVzICE9PSB1bmluZm9ybWVkVGV4dCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuaWZpZWRDb2x1bW5WYWx1ZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGU6IHN0cmluZywgcm93VmFsdWU6IG9iamVjdCkge1xuICAgICAgICBsZXQgYXR0cmlidXRlVmFsdWUhOiBhbnk7XG5cbiAgICAgICAgYXR0cmlidXRlXG4gICAgICAgICAgICAuc3BsaXQoXCIvXCIpXG4gICAgICAgICAgICAuZm9yRWFjaCgodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghYXR0cmlidXRlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdChcIi5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKCh2YWw6IHN0cmluZywgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcm93VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gcm93VmFsdWVbdmFsXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gYXR0cmlidXRlVmFsdWVbdmFsXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZVZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TnVtYmVyQ29uZmlncyhjb2x1bW46IENvbHVtbiwgbG9jYWxlOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnMpOiBNYXNrQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmxvY2FsZS5udW1iZXIsXG4gICAgICAgICAgICBzY2FsZTogY29sdW1uLnNjYWxlICE9PSBudWxsICYmIGNvbHVtbi5zY2FsZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldENvbHVtblNjYWxlKGNvbHVtbi5zY2FsZSlcbiAgICAgICAgICAgICAgICA6IGxvY2FsZS5udW1iZXIuc2NhbGUsXG4gICAgICAgICAgICBwcmVmaXg6IGAke2xvY2FsZS5udW1iZXIuY3VycmVuY3lTeW1ib2x9IGBcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERhdGVGb3JtYXQoY29sdW1uOiBDb2x1bW4sIGxvY2FsZTogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4uZGF0ZUZvcm1hdCA/IGNvbHVtbi5kYXRlRm9ybWF0IDogbG9jYWxlLmNhbGVuZGFyLmRhdGVGb3JtYXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5WYWx1ZShjb2x1bW46IENvbHVtbiwgcm93VmFsdWU6IG9iamVjdCwgbG9jYWxlOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnMpOiBDb2x1bW5WYWx1ZXMge1xuICAgICAgICBjb25zdCBwcmVmaXggPSB0aGlzLmdldFRyYW5zbGF0aW9uUHJlZml4KGNvbHVtbik7XG4gICAgICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuZ2V0Q29sdW1uU2VwYXJhdG9yKGNvbHVtbik7XG4gICAgICAgIGNvbnN0IHVuaW5mb3JtZWQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHByZWZpeCArIFwiZW1wdHlfbGFiZWxcIik7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gY29sdW1uLnN0eWxlO1xuXG4gICAgICAgIGNvbnN0IGNvbHVtblZhbHVlID0gY29sdW1uLmF0dHJpYnV0ZXNcbiAgICAgICAgICAgIC5tYXAoKGF0dHJpYnV0ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlVmFsdWUgPSB0aGlzLmdldEF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZSwgcm93VmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBdHRyaWJ1dGVWYWx1ZUludmFsaWQoYXR0cmlidXRlVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmluZm9ybWVkO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IG51bWJlckNvbmZpZ3MgPSB0aGlzLmdldE51bWJlckNvbmZpZ3MoY29sdW1uLCBsb2NhbGUpO1xuXG4gICAgICAgICAgICAgICAgc3dpdGNoIChjb2x1bW4udHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuRU5VTTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGNvbHVtbi5lbnVtUHJlZml4ICsgYXR0cmlidXRlVmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKTtcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuQ1VSUkVOQ1k6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBwbHlNYXNrKGF0dHJpYnV0ZVZhbHVlLCBudW1iZXJDb25maWdzLCB0aGlzLmlzTnVtYmVyKGF0dHJpYnV0ZVZhbHVlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBFbnVtQ29sdW1uRmllbGRUeXBlLkRBVEU6XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRlRm9ybWF0ID0gdGhpcy5nZXREYXRlRm9ybWF0KGNvbHVtbiwgbG9jYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtb21lbnQoYXR0cmlidXRlVmFsdWUpLmZvcm1hdChkYXRlRm9ybWF0KTtcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIEVudW1Db2x1bW5GaWVsZFR5cGUuQk9PTEVBTjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gYXR0cmlidXRlVmFsdWUgPyBcInllc1wiIDogXCJub1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQocHJlZml4ICsgdmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRW51bUNvbHVtbkZpZWxkVHlwZS5OVU1CRVI6XG4gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJDb25maWdzLnByZWZpeCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBwbHlNYXNrKGF0dHJpYnV0ZVZhbHVlLCBudW1iZXJDb25maWdzLCB0aGlzLmlzTnVtYmVyKGF0dHJpYnV0ZVZhbHVlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBFbnVtQ29sdW1uRmllbGRUeXBlLlRPS0VOUzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFRva2VucyhhdHRyaWJ1dGVWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB1bmlmaWVkQ29sdW1uVmFsdWVzID0gY29sdW1uVmFsdWUuam9pbihzZXBhcmF0b3IpO1xuICAgICAgICBjb25zdCB1bmluZm9ybWVkTnVtYmVyID0gdW5pZmllZENvbHVtblZhbHVlc1xuICAgICAgICAgICAgLnNwbGl0KHNlcGFyYXRvcilcbiAgICAgICAgICAgIC5maWx0ZXIodmFsdWUgPT4gdmFsdWUgPT09IHVuaW5mb3JtZWQpLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkQ29sdW1uVmFsdWUgPSB0aGlzLmdldEZvcm1hdHRlZENvbHVtblZhbHVlKGNvbHVtbiwgY29sdW1uVmFsdWUsIHVuaWZpZWRDb2x1bW5WYWx1ZXMsIHVuaW5mb3JtZWQsIHVuaW5mb3JtZWROdW1iZXIpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdHlsZSxcbiAgICAgICAgICAgIGNvbHVtblZhbHVlOiBmb3JtYXR0ZWRDb2x1bW5WYWx1ZSxcbiAgICAgICAgICAgIHNlcGFyYXRvcixcbiAgICAgICAgICAgIHVuaW5mb3JtZWQsXG4gICAgICAgICAgICBiYWRnZUNvbmZpZ3M6IGNvbHVtbj8uYmFkZ2VDb25maWdzPy5maW5kKFxuICAgICAgICAgICAgICAgIChiYWRnZUNvbmZpZykgPT4gYmFkZ2VDb25maWcuZW51bVZhbHVlID09PSByb3dWYWx1ZVtjb2x1bW4uYXR0cmlidXRlc1swXSA/PyBjb2x1bW4uZmllbGRdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHlwZTogY29sdW1uLnR5cGUsXG4gICAgICAgICAgICB0b29sdGlwOiB0aGlzLmdldENvbHVtblRvb2x0aXAoY29sdW1uLnRvb2x0aXApLFxuICAgICAgICAgICAgaW5mb1NpZ246IHRoaXMuZ2V0Q29sdW1uSW5mb1NpZ24oY29sdW1uLmluZm9TaWduKSxcbiAgICAgICAgICAgIG9uTGlua0NsaWNrOiBjb2x1bW4ub25MaW5rQ2xpY2ssXG4gICAgICAgICAgICBvbkNvbHVtbkNsaWNrOiBjb2x1bW4ub25Db2x1bW5DbGlja1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uU2NhbGUoc2NhbGU6IG51bWJlciB8ICgocm93VmFsdWU6IGFueSkgPT4gbnVtYmVyKSk6IG51bWJlciB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2NhbGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIHNjYWxlKHRoaXMucm93VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2FsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtbkluZm9TaWduKGluZm9TaWduOiBzdHJpbmcgfCAoKHJvd1ZhbHVlOiBhbnkpID0+IHN0cmluZykpOiBzdHJpbmcge1xuICAgICAgICBpZiAoaW5mb1NpZ24gIT09IHVuZGVmaW5lZCAmJiBpbmZvU2lnbiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbmZvU2lnbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluZm9TaWduKHRoaXMucm93VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGluZm9TaWduO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uVG9vbHRpcCh0b29sdGlwOiBzdHJpbmcgfCAoKHJvd1ZhbHVlOiBhbnkpID0+IHN0cmluZykpOiBzdHJpbmcge1xuICAgICAgICBpZiAodG9vbHRpcCAhPT0gdW5kZWZpbmVkICYmIHRvb2x0aXAgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdG9vbHRpcCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvb2x0aXAodGhpcy5yb3dWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdG9vbHRpcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTnVtYmVyKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEobmV3IEJpZ051bWJlcih2YWx1ZSkuaXNOYU4oKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUb2tlbnModmFsdWVzOiBhbnkpOiBJVG9rZW5bXSB7XG4gICAgICAgIGlmICghdGhpcy5pc0FycmF5KHZhbHVlcykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRvIHVzZSB0b2tlbnMgYW4gYXJyYXkgbXVzdCBiZSBpbmZvcm1lZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkVG9rZW5BcnJheSh2YWx1ZXMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgYSB2YWxpZCB0b2tlbiBhcnJheS4gTXVzdCBiZSBhIHByaW1pdGl2ZSB2YWx1ZXMgYXJyYXkgb3IgYW4gb2JqZWN0cyB3aXRoIGxhYmVsIGF0dHJpYnV0ZSBhcnJheVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzTGFiZWxPYmplY3RBcnJheSh2YWx1ZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlc1xuICAgICAgICAgICAgLmZpbHRlcigodmFsdWU6IGFueSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbClcbiAgICAgICAgICAgIC5tYXAoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzeW1ib2xcIiA/IHZhbHVlLnRvU3RyaW5nKCkgOiBgJHt2YWx1ZX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZFRva2VuQXJyYXkodmFsdWVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ByaW1pdGl2ZVZhbHVlc0FycmF5KHZhbHVlcykgfHwgdGhpcy5pc0xhYmVsT2JqZWN0QXJyYXkodmFsdWVzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUHJpbWl0aXZlVmFsdWVzQXJyYXkodmFsdWVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdmFsdWVzLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSAhPT0gT2JqZWN0KHZhbHVlKSkubGVuZ3RoID09PSB2YWx1ZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNMYWJlbE9iamVjdEFycmF5KHZhbHVlczogYW55W10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5maWx0ZXIodmFsdWUgPT4gdmFsdWU/LmxhYmVsICE9PSBudWxsICYmIHZhbHVlPy5sYWJlbCAhPT0gdW5kZWZpbmVkKS5sZW5ndGggPT09IHZhbHVlcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0Q29sdW1uc0J5U2VxdWVuY2UoY29sdW1uczogQ29sdW1uW10pOiBDb2x1bW5bXSB7XG4gICAgICAgIHJldHVybiBjb2x1bW5zLnNvcnQoKGEsIGIpID0+IGEuc2VxdWVuY2UgLSBiLnNlcXVlbmNlKTtcbiAgICB9XG59XG4iXX0=
|