@rlucan/ui 14.2.5 → 14.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2020 → esm2022}/lib/action-button/action-button.component.mjs +99 -99
- package/esm2022/lib/action-icon/action-icon.component.mjs +37 -0
- package/esm2022/lib/autocomplete/autocomplete.component.mjs +391 -0
- package/esm2022/lib/avatar/avatar.component.mjs +34 -0
- package/esm2022/lib/button/button.component.mjs +57 -0
- package/esm2022/lib/checkbox/checkbox.component.mjs +39 -0
- package/{esm2020 → esm2022}/lib/checkbox-group/checkbox-group.component.mjs +91 -91
- package/esm2022/lib/currency/currency.component.mjs +151 -0
- package/esm2022/lib/date/date.component.mjs +68 -0
- package/{esm2020 → esm2022}/lib/dialog/dialog.component.mjs +37 -37
- package/esm2022/lib/directives/force-visibility/force-visibility.directive.mjs +104 -0
- package/esm2022/lib/editor/editor.component.mjs +119 -0
- package/{esm2020 → esm2022}/lib/elements/burger/burger.component.mjs +21 -21
- package/{esm2020 → esm2022}/lib/elements/expander/expander.component.mjs +28 -28
- package/{esm2020 → esm2022}/lib/elements/validation-message/validation-message.component.mjs +47 -47
- package/esm2022/lib/file/file.component.mjs +145 -0
- package/esm2022/lib/file-uploader/ui-file-uploader.component.mjs +405 -0
- package/esm2022/lib/input/input.component.mjs +265 -0
- package/esm2022/lib/input-autocomplete/input-autocomplete.component.mjs +277 -0
- package/esm2022/lib/layouts/base/ui-base-layout.component.mjs +22 -0
- package/esm2022/lib/layouts/base/ui-base.component.mjs +74 -0
- package/esm2022/lib/layouts/simple/ui-simple-layout.component.mjs +18 -0
- package/esm2022/lib/layouts/simple/ui-simple.component.mjs +166 -0
- package/{esm2020 → esm2022}/lib/radio/radio.component.mjs +21 -21
- package/esm2022/lib/radio-group/radio-group.component.mjs +53 -0
- package/esm2022/lib/select/select.component.mjs +115 -0
- package/{esm2020 → esm2022}/lib/services/message-box.service.mjs +112 -112
- package/{esm2020 → esm2022}/lib/services/toast.service.mjs +23 -23
- package/{esm2020 → esm2022}/lib/services/ui-file.service.mjs +71 -71
- package/{esm2020 → esm2022}/lib/services/ui-translate.service.mjs +32 -32
- package/{esm2020 → esm2022}/lib/submit-button/submit-button.component.mjs +72 -72
- package/esm2022/lib/table/table.component.mjs +97 -0
- package/esm2022/lib/text-area/text-area.component.mjs +46 -0
- package/{esm2020 → esm2022}/lib/ui.model.mjs +1 -1
- package/esm2022/lib/ui.module.mjs +269 -0
- package/esm2022/public-api.mjs +35 -0
- package/{esm2020 → esm2022}/rlucan-ui.mjs +4 -4
- package/fesm2022/rlucan-ui.mjs +3442 -0
- package/fesm2022/rlucan-ui.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/action-button/action-button.component.d.ts +32 -32
- package/lib/action-icon/action-icon.component.d.ts +15 -15
- package/lib/autocomplete/autocomplete.component.d.ts +57 -57
- package/lib/avatar/avatar.component.d.ts +14 -14
- package/lib/button/button.component.d.ts +18 -18
- package/lib/checkbox/checkbox.component.d.ts +15 -15
- package/lib/checkbox-group/checkbox-group.component.d.ts +18 -18
- package/lib/currency/currency.component.d.ts +31 -30
- package/lib/date/date.component.d.ts +24 -24
- package/lib/dialog/dialog.component.d.ts +13 -13
- package/lib/directives/force-visibility/force-visibility.directive.d.ts +22 -20
- package/lib/editor/editor.component.d.ts +24 -0
- package/lib/elements/burger/burger.component.d.ts +9 -9
- package/lib/elements/expander/expander.component.d.ts +10 -10
- package/lib/elements/validation-message/validation-message.component.d.ts +12 -12
- package/lib/file/file.component.d.ts +35 -35
- package/lib/file-uploader/ui-file-uploader.component.d.ts +102 -102
- package/lib/input/input.component.d.ts +42 -41
- package/lib/input-autocomplete/input-autocomplete.component.d.ts +44 -0
- package/lib/{base → layouts/base}/ui-base-layout.component.d.ts +8 -8
- package/lib/{base → layouts/base}/ui-base.component.d.ts +23 -23
- package/lib/{simple → layouts/simple}/ui-simple-layout.component.d.ts +8 -7
- package/lib/{simple → layouts/simple}/ui-simple.component.d.ts +40 -39
- package/lib/radio/radio.component.d.ts +8 -8
- package/lib/radio-group/radio-group.component.d.ts +18 -18
- package/lib/select/select.component.d.ts +35 -33
- package/lib/services/message-box.service.d.ts +58 -58
- package/lib/services/toast.service.d.ts +13 -13
- package/lib/services/ui-file.service.d.ts +33 -33
- package/lib/services/ui-translate.service.d.ts +11 -11
- package/lib/submit-button/submit-button.component.d.ts +21 -21
- package/lib/table/table.component.d.ts +36 -36
- package/lib/text-area/text-area.component.d.ts +18 -18
- package/lib/ui.model.d.ts +2 -2
- package/lib/ui.module.d.ts +59 -56
- package/package.json +22 -24
- package/public-api.d.ts +29 -27
- package/scss/ui-defaults.scss +1 -1
- package/src/js/editorjs.mjs +9634 -0
- package/ui.scss +41 -14
- package/esm2020/lib/action-icon/action-icon.component.mjs +0 -37
- package/esm2020/lib/autocomplete/autocomplete.component.mjs +0 -391
- package/esm2020/lib/avatar/avatar.component.mjs +0 -34
- package/esm2020/lib/base/ui-base-layout.component.mjs +0 -22
- package/esm2020/lib/base/ui-base.component.mjs +0 -74
- package/esm2020/lib/button/button.component.mjs +0 -57
- package/esm2020/lib/checkbox/checkbox.component.mjs +0 -39
- package/esm2020/lib/currency/currency.component.mjs +0 -148
- package/esm2020/lib/date/date.component.mjs +0 -68
- package/esm2020/lib/directives/force-visibility/force-visibility.directive.mjs +0 -96
- package/esm2020/lib/file/file.component.mjs +0 -145
- package/esm2020/lib/file-uploader/ui-file-uploader.component.mjs +0 -394
- package/esm2020/lib/input/input.component.mjs +0 -258
- package/esm2020/lib/radio-group/radio-group.component.mjs +0 -53
- package/esm2020/lib/select/select.component.mjs +0 -91
- package/esm2020/lib/simple/ui-simple-layout.component.mjs +0 -15
- package/esm2020/lib/simple/ui-simple.component.mjs +0 -154
- package/esm2020/lib/table/table.component.mjs +0 -97
- package/esm2020/lib/text-area/text-area.component.mjs +0 -46
- package/esm2020/lib/ui.module.mjs +0 -255
- package/esm2020/public-api.mjs +0 -33
- package/fesm2015/rlucan-ui.mjs +0 -3017
- package/fesm2015/rlucan-ui.mjs.map +0 -1
- package/fesm2020/rlucan-ui.mjs +0 -2982
- package/fesm2020/rlucan-ui.mjs.map +0 -1
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import { Component, HostBinding, Inject, Input, Optional } from '@angular/core';
|
|
2
|
-
import { UI_FILESERVICE } from '../services/ui-file.service';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/platform-browser";
|
|
5
|
-
import * as i2 from "../services/ui-file.service";
|
|
6
|
-
import * as i3 from "@angular/common";
|
|
7
|
-
import * as i4 from "@angular/material/progress-spinner";
|
|
8
|
-
export class FileComponent {
|
|
9
|
-
constructor(fileServiceConfig, domSanitizer, fileService) {
|
|
10
|
-
this.fileServiceConfig = fileServiceConfig;
|
|
11
|
-
this.domSanitizer = domSanitizer;
|
|
12
|
-
this.fileService = fileService;
|
|
13
|
-
this.fileSize = 'default';
|
|
14
|
-
this.visible = false;
|
|
15
|
-
this.nativeFileSizeRatio = -1;
|
|
16
|
-
}
|
|
17
|
-
get fitImageFileSize() {
|
|
18
|
-
if (!this.fileServiceConfig.imageSizes[this.fileSize]) {
|
|
19
|
-
console.error('Missing filesize for ' + this.fileSize);
|
|
20
|
-
}
|
|
21
|
-
return this.fileServiceConfig.imageSizes[this.fileSize][0] < 0 || this.fileServiceConfig.imageSizes[this.fileSize][1] < 0;
|
|
22
|
-
}
|
|
23
|
-
get width() {
|
|
24
|
-
if (this.fitImageFileSize) {
|
|
25
|
-
if (this.nativeFileSizeRatio === -1) {
|
|
26
|
-
return '100%';
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
return this.nativeFileWidth + 'px';
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
return this.fileServiceConfig.imageSizes[this.fileSize] ? this.fileServiceConfig.imageSizes[this.fileSize][0] + 'px' : undefined;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
get maxWidth() {
|
|
37
|
-
if (this.fileServiceConfig.imageSizes[this.fileSize][0] < 0) {
|
|
38
|
-
return this.width;
|
|
39
|
-
}
|
|
40
|
-
return this.fileServiceConfig.imageSizes[this.fileSize] ? this.fileServiceConfig.imageSizes[this.fileSize][0] + 'px' : undefined;
|
|
41
|
-
}
|
|
42
|
-
get height() {
|
|
43
|
-
if (this.fitImageFileSize) {
|
|
44
|
-
if (this.nativeFileSizeRatio === -1) {
|
|
45
|
-
return '100%';
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
return this.nativeFileHeight + 'px';
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
return this.fileServiceConfig.imageSizes[this.fileSize] ? this.fileServiceConfig.imageSizes[this.fileSize][1] + 'px' : undefined;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
get maxHeight() {
|
|
56
|
-
if (this.fileServiceConfig.imageSizes[this.fileSize][1] < 0) {
|
|
57
|
-
return this.height;
|
|
58
|
-
}
|
|
59
|
-
return this.fileServiceConfig.imageSizes[this.fileSize] ? this.fileServiceConfig.imageSizes[this.fileSize][1] + 'px' : undefined;
|
|
60
|
-
}
|
|
61
|
-
get isVideo() {
|
|
62
|
-
return this.mime.startsWith('video/');
|
|
63
|
-
}
|
|
64
|
-
get mime() {
|
|
65
|
-
if (this.srcUrlMimeType) {
|
|
66
|
-
return this.srcUrlMimeType;
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
if (this.srcData.nativeFile) {
|
|
70
|
-
return this.srcData.nativeFile.type;
|
|
71
|
-
}
|
|
72
|
-
return this.fileServiceConfig.getMimeType(this.srcData);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
get useRetinaSrc() {
|
|
76
|
-
return this.fileServiceConfig.useRetinaSrc;
|
|
77
|
-
}
|
|
78
|
-
ngOnInit() {
|
|
79
|
-
}
|
|
80
|
-
ngOnChanges(changes) {
|
|
81
|
-
if (changes.srcData) {
|
|
82
|
-
this.nativeFileSizeRatio = -1;
|
|
83
|
-
if (changes.srcData.currentValue.nativeFile) {
|
|
84
|
-
this.src = this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(changes.srcData.currentValue.nativeFile));
|
|
85
|
-
const img = new Image();
|
|
86
|
-
img.onload = () => {
|
|
87
|
-
if (this.fitImageFileSize) {
|
|
88
|
-
this.nativeFileSizeRatio = Math.max(img.width / this.fileServiceConfig.imageSizes[this.fileSize][0], img.height / this.fileServiceConfig.imageSizes[this.fileSize][1], 1);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
this.nativeFileSizeRatio = 1;
|
|
92
|
-
}
|
|
93
|
-
this.nativeFileWidth = img.width / this.nativeFileSizeRatio;
|
|
94
|
-
this.nativeFileHeight = img.height / this.nativeFileSizeRatio;
|
|
95
|
-
URL.revokeObjectURL(img.src);
|
|
96
|
-
};
|
|
97
|
-
img.src = URL.createObjectURL(changes.srcData.currentValue.nativeFile);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
this.src = this.fileServiceConfig.getMediaSrc(this.fileSize, changes.srcData.currentValue, this.srcOptions);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
if (changes.srcUrl) {
|
|
104
|
-
this.src = changes.srcUrl.currentValue?.src;
|
|
105
|
-
if (this.src) {
|
|
106
|
-
this.srcUrlMimeType = changes.srcUrl.currentValue?.mimeType || 'image/png';
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
this.srcUrlMimeType = undefined;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
FileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: FileComponent, deps: [{ token: UI_FILESERVICE, optional: true }, { token: i1.DomSanitizer }, { token: i2.UiFileService }], target: i0.ɵɵFactoryTarget.Component });
|
|
115
|
-
FileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: FileComponent, selector: "ui-file", inputs: { fileSize: "fileSize", srcOptions: "srcOptions", srcData: "srcData", srcUrl: "srcUrl" }, host: { properties: { "style.width": "this.width", "style.maxWidth": "this.maxWidth", "style.height": "this.height", "style.maxHeight": "this.maxHeight" } }, usesOnChanges: true, ngImport: i0, template: "<mat-spinner *ngIf=\"visible\"></mat-spinner>\r\n<img *ngIf=\"!isVideo && useRetinaSrc\" [src]=\"src\" [srcset]=\"src + ' 2x'\"/>\r\n<img *ngIf=\"!isVideo && !useRetinaSrc\" [src]=\"src\"/>\r\n<video *ngIf=\"isVideo\" muted controls [src]=\"src\"></video>\r\n\r\n", styles: [":host{display:flex;align-items:center;justify-content:center;position:relative}:host img,:host video{max-width:100%;max-height:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
|
|
116
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: FileComponent, decorators: [{
|
|
117
|
-
type: Component,
|
|
118
|
-
args: [{ selector: 'ui-file', template: "<mat-spinner *ngIf=\"visible\"></mat-spinner>\r\n<img *ngIf=\"!isVideo && useRetinaSrc\" [src]=\"src\" [srcset]=\"src + ' 2x'\"/>\r\n<img *ngIf=\"!isVideo && !useRetinaSrc\" [src]=\"src\"/>\r\n<video *ngIf=\"isVideo\" muted controls [src]=\"src\"></video>\r\n\r\n", styles: [":host{display:flex;align-items:center;justify-content:center;position:relative}:host img,:host video{max-width:100%;max-height:100%}\n"] }]
|
|
119
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
120
|
-
type: Optional
|
|
121
|
-
}, {
|
|
122
|
-
type: Inject,
|
|
123
|
-
args: [UI_FILESERVICE]
|
|
124
|
-
}] }, { type: i1.DomSanitizer }, { type: i2.UiFileService }]; }, propDecorators: { fileSize: [{
|
|
125
|
-
type: Input
|
|
126
|
-
}], srcOptions: [{
|
|
127
|
-
type: Input
|
|
128
|
-
}], srcData: [{
|
|
129
|
-
type: Input
|
|
130
|
-
}], srcUrl: [{
|
|
131
|
-
type: Input
|
|
132
|
-
}], width: [{
|
|
133
|
-
type: HostBinding,
|
|
134
|
-
args: ['style.width']
|
|
135
|
-
}], maxWidth: [{
|
|
136
|
-
type: HostBinding,
|
|
137
|
-
args: ['style.maxWidth']
|
|
138
|
-
}], height: [{
|
|
139
|
-
type: HostBinding,
|
|
140
|
-
args: ['style.height']
|
|
141
|
-
}], maxHeight: [{
|
|
142
|
-
type: HostBinding,
|
|
143
|
-
args: ['style.maxHeight']
|
|
144
|
-
}] } });
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2ZpbGUvZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2ZpbGUvZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBa0IsY0FBYyxFQUFpQixNQUFNLDZCQUE2QixDQUFDOzs7Ozs7QUFRNUYsTUFBTSxPQUFPLGFBQWE7SUFpRnhCLFlBQXdELGlCQUFpQyxFQUNyRSxZQUEwQixFQUMxQixXQUEwQjtRQUZVLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZ0I7UUFDckUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUFqRnJDLGFBQVEsR0FBRyxTQUFTLENBQUM7UUFXOUIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUdoQix3QkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FBQztJQW1FeUIsQ0FBQztJQTdFbkQsSUFBSSxnQkFBZ0I7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3JELE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENB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QUFDLGdCQUFnQjtnQkFTekIsTUFBTTtzQkFEVCxXQUFXO3VCQUFDLGNBQWM7Z0JBY3ZCLFNBQVM7c0JBRFosV0FBVzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3B0aW9uYWwsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSVVpRmlsZVNlcnZpY2UsIFVJX0ZJTEVTRVJWSUNFLCBVaUZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdWktZmlsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VpLWZpbGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWxlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBJbnB1dCgpIGZpbGVTaXplID0gJ2RlZmF1bHQnO1xyXG4gIEBJbnB1dCgpIHNyY09wdGlvbnM7XHJcbiAgQElucHV0KCkgc3JjRGF0YTogYW55O1xyXG4gIEBJbnB1dCgpIHNyY1VybDogeyBzcmM6IHN0cmluZywgbWltZVR5cGU/OiBzdHJpbmcgfTtcclxuICBnZXQgZml0SW1hZ2VGaWxlU2l6ZSgpIHtcclxuICAgIGlmICghdGhpcy5maWxlU2VydmljZUNvbmZpZy5pbWFnZVNpemVzW3RoaXMuZmlsZVNpemVdKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ01pc3NpbmcgZmlsZXNpemUgZm9yICcgKyB0aGlzLmZpbGVTaXplKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmZpbGVTZXJ2aWNlQ29uZmlnLmltYWdlU2l6ZXNbdGhpcy5maWxlU2l6ZV1bMF0gPCAwIHx8IHRoaXMuZmlsZVNlcnZpY2VDb25maWcuaW1hZ2VTaXplc1t0aGlzLmZpbGVTaXplXVsxXSA8IDBcclxuICB9XHJcblxyXG4gIHZpc2libGUgPSBmYWxzZTtcclxuICBzcmM7XHJcbiAgc3JjVXJsTWltZVR5cGU7XHJcbiAgbmF0aXZlRmlsZVNpemVSYXRpbyA9IC0xO1xyXG4gIG5hdGl2ZUZpbGVXaWR0aDtcclxuICBuYXRpdmVGaWxlSGVpZ2h0O1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoJylcclxuICBnZXQgd2lkdGgoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmZpdEltYWdlRmlsZVNpemUpIHtcclxuICAgICAgaWYgKHRoaXMubmF0aXZlRmlsZVNpemVSYXRpbyA9PT0gLTEpIHtcclxuICAgICAgICByZXR1cm4gJzEwMCUnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUZpbGVXaWR0aCArICdweCdcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmlsZVNlcnZpY2VDb25maWcuaW1hZ2VTaXplc1t0aGlzLmZpbGVTaXplXSA/IHRoaXMuZmlsZVNlcnZpY2VDb25maWcuaW1hZ2VTaXplc1t0aGlzLmZpbGVTaXplXVswXSArICdweCcgOiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1heFdpZHRoJylcclxuICBnZXQgbWF4V2lkdGgoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmZpbGVTZXJ2aWNlQ29uZmlnLmltYWdlU2l6ZXNbdGhpcy5maWxlU2l6ZV1bMF0gPCAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLndpZHRoO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZmlsZVNlcnZpY2VDb25maWcuaW1hZ2VTaXplc1t0aGlzLmZpbGVTaXplXSA/IHRoaXMuZmlsZVNlcnZpY2VDb25maWcuaW1hZ2VTaXplc1t0aGlzLmZpbGVTaXplXVswXSArICdweCcgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodCcpXHJcbiAgZ2V0IGhlaWdodCgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuZml0SW1hZ2VGaWxlU2l6ZSkge1xyXG4gICAgICBpZiAodGhpcy5uYXRpdmVGaWxlU2l6ZVJhdGlvID09PSAtMSkge1xyXG4gICAgICAgIHJldHVybiAnMTAwJSc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlRmlsZUhlaWdodCArICdweCc7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpbGVTZXJ2aWNlQ29uZmlnLmltYWdlU2l6ZXNbdGhpcy5maWxlU2l6ZV0gPyB0aGlzLmZpbGVTZXJ2aWNlQ29uZmlnLmltYWdlU2l6ZXNbdGhpcy5maWxlU2l6ZV1bMV0gKyAncHgnIDogdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXhIZWlnaHQnKVxyXG4gIGdldCBtYXhIZWlnaHQoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmZpbGVTZXJ2aWNlQ29uZmlnLmltYWdlU2l6ZXNbdGhpcy5maWxlU2l6ZV1bMV0gPCAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmhlaWdodDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmZpbGVTZXJ2aWNlQ29uZmlnLmltYWdlU2l6ZXNbdGhpcy5maWxlU2l6ZV0gPyB0aGlzLmZpbGVTZXJ2aWNlQ29uZmlnLmltYWdlU2l6ZXNbdGhpcy5maWxlU2l6ZV1bMV0gKyAncHgnIDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzVmlkZW8oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5taW1lLnN0YXJ0c1dpdGgoJ3ZpZGVvLycpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1pbWUoKSB7XHJcbiAgICBpZiAodGhpcy5zcmNVcmxNaW1lVHlwZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zcmNVcmxNaW1lVHlwZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuc3JjRGF0YS5uYXRpdmVGaWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3JjRGF0YS5uYXRpdmVGaWxlLnR5cGU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuZmlsZVNlcnZpY2VDb25maWcuZ2V0TWltZVR5cGUodGhpcy5zcmNEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB1c2VSZXRpbmFTcmMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWxlU2VydmljZUNvbmZpZy51c2VSZXRpbmFTcmNcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoVUlfRklMRVNFUlZJQ0UpIHByaXZhdGUgZmlsZVNlcnZpY2VDb25maWc6IElVaUZpbGVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBmaWxlU2VydmljZTogVWlGaWxlU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMuc3JjRGF0YSkge1xyXG4gICAgICB0aGlzLm5hdGl2ZUZpbGVTaXplUmF0aW8gPSAtMTtcclxuICAgICAgaWYgKGNoYW5nZXMuc3JjRGF0YS5jdXJyZW50VmFsdWUubmF0aXZlRmlsZSkge1xyXG4gICAgICAgIHRoaXMuc3JjID0gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChVUkwuY3JlYXRlT2JqZWN0VVJMKGNoYW5nZXMuc3JjRGF0YS5jdXJyZW50VmFsdWUubmF0aXZlRmlsZSkpO1xyXG5cclxuICAgICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuXHJcbiAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmZpdEltYWdlRmlsZVNpemUpIHtcclxuICAgICAgICAgICAgdGhpcy5uYXRpdmVGaWxlU2l6ZVJhdGlvID0gTWF0aC5tYXgoaW1nLndpZHRoIC8gdGhpcy5maWxlU2VydmljZUNvbmZpZy5pbWFnZVNpemVzW3RoaXMuZmlsZVNpemVdWzBdLFxyXG4gICAgICAgICAgICAgICAgaW1nLmhlaWdodCAvIHRoaXMuZmlsZVNlcnZpY2VDb25maWcuaW1hZ2VTaXplc1t0aGlzLmZpbGVTaXplXVsxXSwgMSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUZpbGVTaXplUmF0aW8gPSAxO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5uYXRpdmVGaWxlV2lkdGggPSBpbWcud2lkdGggLyB0aGlzLm5hdGl2ZUZpbGVTaXplUmF0aW87XHJcbiAgICAgICAgICB0aGlzLm5hdGl2ZUZpbGVIZWlnaHQgPSBpbWcuaGVpZ2h0IC8gdGhpcy5uYXRpdmVGaWxlU2l6ZVJhdGlvO1xyXG4gICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChpbWcuc3JjKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpbWcuc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChjaGFuZ2VzLnNyY0RhdGEuY3VycmVudFZhbHVlLm5hdGl2ZUZpbGUpO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNyYyA9IHRoaXMuZmlsZVNlcnZpY2VDb25maWcuZ2V0TWVkaWFTcmModGhpcy5maWxlU2l6ZSwgY2hhbmdlcy5zcmNEYXRhLmN1cnJlbnRWYWx1ZSwgdGhpcy5zcmNPcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXMuc3JjVXJsKSB7XHJcbiAgICAgIHRoaXMuc3JjID0gY2hhbmdlcy5zcmNVcmwuY3VycmVudFZhbHVlPy5zcmM7XHJcbiAgICAgIGlmICh0aGlzLnNyYykge1xyXG4gICAgICAgIHRoaXMuc3JjVXJsTWltZVR5cGUgPSBjaGFuZ2VzLnNyY1VybC5jdXJyZW50VmFsdWU/Lm1pbWVUeXBlIHx8ICdpbWFnZS9wbmcnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3JjVXJsTWltZVR5cGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG1hdC1zcGlubmVyICpuZ0lmPVwidmlzaWJsZVwiPjwvbWF0LXNwaW5uZXI+XHJcbjxpbWcgKm5nSWY9XCIhaXNWaWRlbyAmJiB1c2VSZXRpbmFTcmNcIiBbc3JjXT1cInNyY1wiIFtzcmNzZXRdPVwic3JjICsgJyAyeCdcIi8+XHJcbjxpbWcgKm5nSWY9XCIhaXNWaWRlbyAmJiAhdXNlUmV0aW5hU3JjXCIgW3NyY109XCJzcmNcIi8+XHJcbjx2aWRlbyAqbmdJZj1cImlzVmlkZW9cIiBtdXRlZCBjb250cm9scyBbc3JjXT1cInNyY1wiPjwvdmlkZW8+XHJcblxyXG4iXX0=
|