@koobiq/components 18.23.0 → 18.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/badge/_badge-theme.scss +8 -0
- package/badge/badge-tokens.scss +15 -2
- package/badge/badge.component.d.ts +2 -1
- package/code-block/code-block-highlight.d.ts +1 -1
- package/code-block/code-block.d.ts +2 -2
- package/core/common-behaviors/color.d.ts +4 -1
- package/core/formatters/date/formatter.d.ts +4 -3
- package/core/styles/theming/_scrollbar-theme.scss +8 -10
- package/dropdown/dropdown.scss +1 -0
- package/esm2022/badge/badge.component.mjs +4 -3
- package/esm2022/button/button.component.mjs +3 -2
- package/esm2022/code-block/code-block-highlight.mjs +7 -6
- package/esm2022/code-block/code-block.mjs +7 -7
- package/esm2022/core/common-behaviors/color.mjs +7 -2
- package/esm2022/core/formatters/date/formatter.mjs +5 -10
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/dropdown/dropdown.component.mjs +3 -3
- package/esm2022/file-upload/file-drop.mjs +5 -1
- package/esm2022/file-upload/file-upload.mjs +12 -2
- package/esm2022/file-upload/multiple-file-upload.component.mjs +29 -21
- package/esm2022/file-upload/single-file-upload.component.mjs +23 -16
- package/esm2022/filter-bar/pipe-add.mjs +5 -4
- package/esm2022/filter-bar/pipes/base-pipe.mjs +9 -4
- package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +3 -3
- package/esm2022/filter-bar/pipes/pipe-select.mjs +3 -3
- package/esm2022/filter-bar/pipes/pipe-text.mjs +6 -1
- package/esm2022/icon/icon-button.component.mjs +2 -2
- package/esm2022/markdown/markdown.component.mjs +2 -2
- package/esm2022/modal/modal.service.mjs +8 -4
- package/esm2022/tags/tag-list.component.mjs +2 -2
- package/esm2022/tags/tag.component.mjs +2 -1
- package/esm2022/toggle/toggle.component.mjs +3 -3
- package/fesm2022/koobiq-components-badge.mjs +3 -2
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +2 -1
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +12 -11
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +10 -10
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +2 -2
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +65 -36
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +21 -11
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +2 -2
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +2 -2
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +7 -3
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +3 -2
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +2 -2
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/file-upload/file-drop.d.ts +5 -0
- package/file-upload/file-upload.d.ts +11 -1
- package/file-upload/multiple-file-upload.component.d.ts +24 -4
- package/file-upload/single-file-upload.component.d.ts +16 -2
- package/filter-bar/pipes/base-pipe.d.ts +3 -1
- package/filter-bar/pipes/pipe-text.d.ts +2 -0
- package/icon/icon-button.scss +4 -0
- package/markdown/markdown.scss +1 -1
- package/package.json +4 -4
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/schematics/ng-add/index.js +2 -2
- package/tags/tag-list.scss +6 -1
- package/toggle/_toggle-theme.scss +24 -20
- package/toggle/toggle-tokens.scss +0 -1
- package/toggle/toggle.scss +7 -8
|
@@ -22,9 +22,9 @@ export class KbqMultipleFileUploadComponent extends KbqFileUploadBase {
|
|
|
22
22
|
set files(currentFileList) {
|
|
23
23
|
this._files = currentFileList;
|
|
24
24
|
this.cvaOnChange(this._files);
|
|
25
|
-
this.fileQueueChanged.emit(this._files);
|
|
26
25
|
this.cdr.markForCheck();
|
|
27
26
|
}
|
|
27
|
+
/** @docs-private */
|
|
28
28
|
get acceptedFiles() {
|
|
29
29
|
return this.accept?.join(',') || '*/*';
|
|
30
30
|
}
|
|
@@ -34,12 +34,14 @@ export class KbqMultipleFileUploadComponent extends KbqFileUploadBase {
|
|
|
34
34
|
get hasErrors() {
|
|
35
35
|
return this.errors && !!this.errors.length;
|
|
36
36
|
}
|
|
37
|
+
/** @docs-private */
|
|
37
38
|
get hasHint() {
|
|
38
39
|
return this.hint.length > 0;
|
|
39
40
|
}
|
|
40
41
|
/**
|
|
41
42
|
* Indicates an invalid state based on `errorState`,
|
|
42
43
|
* applying a CSS class in HTML for visual feedback.
|
|
44
|
+
* @docs-private
|
|
43
45
|
*/
|
|
44
46
|
get invalid() {
|
|
45
47
|
return this.errorState;
|
|
@@ -60,15 +62,20 @@ export class KbqMultipleFileUploadComponent extends KbqFileUploadBase {
|
|
|
60
62
|
*/
|
|
61
63
|
this.inputId = `kbq-multiple-file-upload-${nextMultipleFileUploadUniqueId++}`;
|
|
62
64
|
this._files = [];
|
|
63
|
-
|
|
65
|
+
/** Emits an event containing updated file list.
|
|
66
|
+
* public output will be renamed to filesChange in next major release (#DS-3700) */
|
|
67
|
+
this.filesChange = new EventEmitter();
|
|
64
68
|
/**
|
|
65
69
|
* Emits an event containing a chunk of files added to the file list.
|
|
70
|
+
* Useful when handling added files, skipping filtering file list.
|
|
66
71
|
*/
|
|
67
72
|
this.filesAdded = new EventEmitter();
|
|
68
73
|
/**
|
|
69
|
-
* Emits an event containing a file and file's index when removed from the file list.
|
|
74
|
+
* Emits an event containing a tuple of file and file's index when removed from the file list.
|
|
75
|
+
* Useful when handle removed files, skipping filtering file list.
|
|
70
76
|
*/
|
|
71
77
|
this.fileRemoved = new EventEmitter();
|
|
78
|
+
/** @docs-private */
|
|
72
79
|
this.hasFocus = false;
|
|
73
80
|
/** cvaOnChange function registered via registerOnChange (ControlValueAccessor).
|
|
74
81
|
* @docs-private
|
|
@@ -77,6 +84,7 @@ export class KbqMultipleFileUploadComponent extends KbqFileUploadBase {
|
|
|
77
84
|
/** onTouch function registered via registerOnTouch (ControlValueAccessor).
|
|
78
85
|
* @docs-private */
|
|
79
86
|
this.onTouched = () => { };
|
|
87
|
+
/** @docs-private */
|
|
80
88
|
this.configuration = inject(KBQ_FILE_UPLOAD_CONFIGURATION, {
|
|
81
89
|
optional: true
|
|
82
90
|
});
|
|
@@ -119,12 +127,8 @@ export class KbqMultipleFileUploadComponent extends KbqFileUploadBase {
|
|
|
119
127
|
/** Implemented as part of ControlValueAccessor.
|
|
120
128
|
* @docs-private */
|
|
121
129
|
writeValue(files) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
this.files = files;
|
|
127
|
-
}
|
|
130
|
+
this.files = files instanceof FileList || !files ? this.mapToFileItem(files) : files;
|
|
131
|
+
this.filesChange.emit(this.files);
|
|
128
132
|
}
|
|
129
133
|
/** Implemented as part of ControlValueAccessor.
|
|
130
134
|
* @docs-private */
|
|
@@ -145,21 +149,24 @@ export class KbqMultipleFileUploadComponent extends KbqFileUploadBase {
|
|
|
145
149
|
this.disabled = isDisabled;
|
|
146
150
|
this.cdr.markForCheck();
|
|
147
151
|
}
|
|
152
|
+
/** @docs-private */
|
|
148
153
|
onFileSelectedViaClick({ target }) {
|
|
149
154
|
if (this.disabled) {
|
|
150
155
|
return;
|
|
151
156
|
}
|
|
152
157
|
const filesToAdd = this.mapToFileItem(target.files);
|
|
158
|
+
/* even if the user selects the same file,
|
|
159
|
+
the onchange event will be triggered every time user clicks on the control.*/
|
|
160
|
+
this.renderer.setProperty(this.input.nativeElement, 'value', null);
|
|
153
161
|
this.files = [
|
|
154
162
|
...this.files,
|
|
155
163
|
...filesToAdd
|
|
156
164
|
];
|
|
157
165
|
this.filesAdded.emit(filesToAdd);
|
|
166
|
+
this.filesChange.emit(this.files);
|
|
158
167
|
this.onTouched();
|
|
159
|
-
/* even if the user selects the same file,
|
|
160
|
-
the onchange event will be triggered every time user clicks on the control.*/
|
|
161
|
-
this.renderer.setProperty(this.input.nativeElement, 'value', null);
|
|
162
168
|
}
|
|
169
|
+
/** @docs-private */
|
|
163
170
|
onFileDropped(files) {
|
|
164
171
|
if (this.disabled) {
|
|
165
172
|
return;
|
|
@@ -170,21 +177,21 @@ export class KbqMultipleFileUploadComponent extends KbqFileUploadBase {
|
|
|
170
177
|
...filesToAdd
|
|
171
178
|
];
|
|
172
179
|
this.filesAdded.emit(filesToAdd);
|
|
180
|
+
this.filesChange.emit(this.files);
|
|
173
181
|
this.onTouched();
|
|
174
182
|
}
|
|
183
|
+
/** @docs-private */
|
|
175
184
|
deleteFile(index, event) {
|
|
176
185
|
if (this.disabled) {
|
|
177
186
|
return;
|
|
178
187
|
}
|
|
179
188
|
event?.stopPropagation();
|
|
180
|
-
this.
|
|
181
|
-
this.files.splice(index, 1);
|
|
189
|
+
const removedFile = this.files.splice(index, 1)[0];
|
|
182
190
|
this.files = [...this.files];
|
|
191
|
+
this.fileRemoved.emit([removedFile, index]);
|
|
192
|
+
this.filesChange.emit(this.files);
|
|
183
193
|
this.onTouched();
|
|
184
194
|
}
|
|
185
|
-
onFileListChange() {
|
|
186
|
-
this.fileQueueChanged.emit(this.files);
|
|
187
|
-
}
|
|
188
195
|
mapToFileItem(files) {
|
|
189
196
|
if (!files) {
|
|
190
197
|
return [];
|
|
@@ -229,7 +236,7 @@ export class KbqMultipleFileUploadComponent extends KbqFileUploadBase {
|
|
|
229
236
|
this.separatedCaptionTextForCompactSize = this.config.captionTextForCompactSize.split('{{ browseLink }}');
|
|
230
237
|
}
|
|
231
238
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqMultipleFileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
232
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: KbqMultipleFileUploadComponent, selector: "kbq-multiple-file-upload,kbq-file-upload[multiple]", inputs: { progressMode: "progressMode", accept: "accept", disabled: "disabled", errors: "errors", size: "size", inputId: "inputId", customValidation: "customValidation", errorStateMatcher: "errorStateMatcher", files: "files" }, outputs: { fileQueueChanged: "fileQueueChanged", filesAdded: "filesAdded", fileRemoved: "fileRemoved" }, host: { classAttribute: "kbq-multiple-file-upload" }, queries: [{ propertyName: "customFileIcon", first: true, predicate: ["kbqFileIcon"], descendants: true, read: TemplateRef }, { propertyName: "hint", predicate: KbqHint }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n kbqFileDrop\n class=\"kbq-file-upload\"\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"invalid\"\n [class.selected]=\"files?.length\"\n [ngClass]=\"size\"\n (filesDropped)=\"onFileDropped($event)\"\n>\n @if (!files.length) {\n <div class=\"dropzone\">\n @if (size === 'default') {\n <i color=\"contrast-fade\" kbq-icon=\"kbq-cloud-arrow-up-o_32\"></i>\n <div class=\"dropzone__text\">\n <span class=\"multiple__header\">{{ config.title }}</span>\n <div>\n <!-- prettier-ignore -->\n <span class=\"multiple__caption\">{{ separatedCaptionText[0] }}<label kbq-link pseudo [disabled]=\"disabled\" [tabIndex]=\"-1\" [for]=\"inputId\">{{ config.browseLink }}<ng-container *ngTemplateOutlet=\"inputTemplate\" /></label>{{ separatedCaptionText[1] }}</span>\n </div>\n </div>\n } @else {\n <i color=\"contrast-fade\" kbq-icon=\"kbq-cloud-arrow-up-o_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ separatedCaptionTextForCompactSize[0] }}\n <label kbq-link pseudo [disabled]=\"disabled\" [for]=\"inputId\" [tabIndex]=\"-1\">\n {{ config.browseLink }}\n <ng-container *ngTemplateOutlet=\"inputTemplate\" />\n </label>\n {{ separatedCaptionTextForCompactSize[1] }}\n </span>\n }\n </div>\n } @else {\n <div class=\"file-upload__dropzone\">\n <div class=\"kbq-file-upload__grid\">\n <div class=\"kbq-file-multiple-uploaded__header\">\n <div class=\"kbq-file-multiple-uploaded__header-inner\">\n @for (column of columnDefs; track column) {\n <div [class]=\"'kbq-file-upload__' + column.cssClass\">\n {{ column.header }}\n </div>\n }\n </div>\n </div>\n <kbq-list-selection [autoSelect]=\"false\" [disabled]=\"disabled\">\n @for (file of files; track file; let index = $index) {\n <kbq-list-option\n class=\"multiple__uploaded-item\"\n [value]=\"file.file.name\"\n (keydown.backspace)=\"deleteFile(index)\"\n (keydown.delete)=\"deleteFile(index)\"\n >\n <div class=\"kbq-file-upload__row\" [class.error]=\"file.hasError\">\n <div class=\"kbq-file-upload__file\">\n @if (\n { loading: file.loading | async, progress: file.progress | async };\n as asyncData\n ) {\n @if (!asyncData.loading) {\n <ng-container\n [ngTemplateOutlet]=\"$any(customFileIcon)\"\n [ngTemplateOutletContext]=\"{ $implicit: file }\"\n />\n }\n @if (asyncData.loading) {\n <kbq-progress-spinner\n class=\"kbq-file-upload-name-cell__icon\"\n [mode]=\"progressMode\"\n [value]=\"asyncData.progress || 0\"\n />\n }\n }\n <span\n class=\"file-item__text\"\n [kbqEllipsisCenter]=\"file.file.name\"\n [minVisibleLength]=\"10\"\n ></span>\n </div>\n <div class=\"kbq-file-upload__size\">{{ file.file.size | kbqDataSize }}</div>\n <div class=\"kbq-file-upload__action\">\n <i kbq-icon-button=\"kbq-xmark-circle_16\" (click)=\"deleteFile(index, $event)\"></i>\n </div>\n </div>\n </kbq-list-option>\n }\n </kbq-list-selection>\n </div>\n <div class=\"btn-upload\">\n <div class=\"dropzone\">\n <i kbq-icon=\"kbq-cloud-arrow-up-o_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ separatedCaptionTextWhenSelected[0] }}\n <label kbq-link pseudo [disabled]=\"disabled\" [for]=\"inputId\" [tabIndex]=\"-1\">\n {{ config.browseLink }}\n <ng-container *ngTemplateOutlet=\"inputTemplate\" />\n </label>\n {{ separatedCaptionTextWhenSelected[1] }}\n </span>\n </div>\n </div>\n </div>\n }\n</div>\n\n@if (hasHint) {\n <div class=\"kbq-file-upload__hint\">\n <ng-content select=\"kbq-hint\" />\n </div>\n}\n\n<ng-template #inputTemplate>\n <input\n #input\n multiple\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n (change)=\"onFileSelectedViaClick($event)\"\n />\n</ng-template>\n", styles: [".kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}.kbq-file-upload__hint .kbq-hint{margin-top:var(--kbq-size-xxs)}.kbq-file-upload .kbq-focused,.kbq-file-upload .kbq-link.kbq-focused{border:2px solid var(--kbq-file-upload-single-states-focused-focus-outline-color)}.kbq-single-file-upload .kbq-file-upload{background-color:var(--kbq-file-upload-single-default-container-background);border-color:var(--kbq-file-upload-single-default-container-border)!important}.kbq-single-file-upload .kbq-file-upload.dragover{background-color:var(--kbq-file-upload-single-states-on-drag-container-background);border-color:var(--kbq-file-upload-single-states-on-drag-container-border)!important}.kbq-single-file-upload .kbq-file-upload.kbq-error:not(.kbq-disabled):not(.dragover){background-color:var(--kbq-file-upload-single-states-error-container-background);border-color:var(--kbq-file-upload-single-states-error-container-border)!important}.kbq-single-file-upload .kbq-file-upload.kbq-error:not(.kbq-disabled) :not(.kbq-link),.kbq-single-file-upload .kbq-file-upload.kbq-error:not(.kbq-disabled) .kbq-icon{color:var(--kbq-file-upload-single-states-error-text-block-color)}.kbq-single-file-upload .kbq-file-upload.kbq-disabled{background-color:var(--kbq-file-upload-single-states-disabled-container-background);border-color:var(--kbq-file-upload-single-states-disabled-container-border)!important}.kbq-single-file-upload .kbq-file-upload.kbq-disabled,.kbq-single-file-upload .kbq-file-upload.kbq-disabled .kbq-icon,.kbq-single-file-upload .kbq-file-upload.kbq-disabled .kbq-link{color:var(--kbq-file-upload-single-states-disabled-container-border)}.kbq-multiple-file-upload .kbq-file-upload{background-color:var(--kbq-file-upload-multiple-default-container-background);border-color:var(--kbq-file-upload-multiple-default-container-border)!important}.kbq-multiple-file-upload .kbq-file-upload .btn-upload{border-top-color:var(--kbq-file-upload-multiple-default-container-border)}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-multiple-uploaded__header{border-bottom-color:var(--kbq-file-upload-multiple-default-grid-divider-color)}.kbq-multiple-file-upload .kbq-file-upload.dragover{background-color:var(--kbq-file-upload-multiple-states-on-drag-container-background);border-color:var(--kbq-file-upload-multiple-states-on-drag-container-border)!important}.kbq-multiple-file-upload .kbq-file-upload.dragover .kbq-file-multiple-uploaded__header{border-bottom-color:var(--kbq-file-upload-multiple-states-on-drag-container-background)!important}.kbq-multiple-file-upload .kbq-file-upload.dragover.selected .dropzone{border-top-color:var(--kbq-file-upload-multiple-states-on-drag-container-border)}.kbq-multiple-file-upload .kbq-file-upload.kbq-disabled{background-color:var(--kbq-file-upload-multiple-states-disabled-container-background);border-color:var(--kbq-file-upload-multiple-states-disabled-container-border)!important}.kbq-multiple-file-upload .kbq-file-upload.kbq-disabled,.kbq-multiple-file-upload .kbq-file-upload.kbq-disabled .kbq-icon,.kbq-multiple-file-upload .kbq-file-upload.kbq-disabled .kbq-link{color:var(--kbq-file-upload-multiple-states-disabled-container-border)}.kbq-multiple-file-upload .kbq-file-upload.kbq-disabled.selected .dropzone{border-top-color:var(--kbq-file-upload-multiple-states-disabled-container-border)}.kbq-multiple-file-upload .kbq-file-upload:not(.kbq-disabled).kbq-error{background-color:var(--kbq-background-error-less);border-color:var(--kbq-line-error)!important}.kbq-multiple-file-upload .kbq-file-upload:not(.kbq-disabled).kbq-error :not(.kbq-link),.kbq-multiple-file-upload .kbq-file-upload:not(.kbq-disabled).kbq-error .kbq-icon{color:var(--kbq-foreground-error)}.kbq-multiple-file-upload .kbq-file-upload:not(.kbq-disabled) .multiple__uploaded-item:has(.kbq-file-upload__row.error){background-color:var(--kbq-background-error-less)}.kbq-multiple-file-upload .kbq-file-upload:not(.kbq-disabled) .multiple__uploaded-item:has(.kbq-file-upload__row.error) :not(.kbq-link),.kbq-multiple-file-upload .kbq-file-upload:not(.kbq-disabled) .multiple__uploaded-item:has(.kbq-file-upload__row.error) .kbq-icon{color:var(--kbq-foreground-error)}.kbq-multiple-file-upload .kbq-file-upload .multiple__uploaded-item .kbq-file-upload__file .kbq-icon{color:var(--kbq-file-upload-multiple-default-left-icon-color)}.kbq-multiple-file-upload .kbq-file-upload .multiple__uploaded-item .kbq-file-upload__action .kbq-icon{color:var(--kbq-file-upload-multiple-default-icon-button-color)}.kbq-file-upload__hint .kbq-hint{color:var(--kbq-foreground-contrast-secondary)}.kbq-single-file-upload .file-item__text-wrapper,.kbq-single-file-upload .dropzone__text{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-multiple-file-upload .multiple__header{font-size:var(--kbq-typography-subheading-font-size);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-multiple-file-upload .multiple__caption,.kbq-multiple-file-upload .multiple__caption .kbq-link,.kbq-multiple-file-upload .kbq-file-multiple-uploaded__header,.kbq-multiple-file-upload .multiple__uploaded-item,.kbq-multiple-file-upload .kbq-file-upload .kbq-list-item,.kbq-multiple-file-upload .kbq-file-upload .kbq-list-option{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-file-upload__hint .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-compact-font-size);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}\n", ".kbq-file-upload{--kbq-file-upload-size-single-container-border-radius: var(--kbq-size-s);--kbq-file-upload-size-single-container-border-width: 1px;--kbq-file-upload-size-single-container-content-gap-horizontal: var(--kbq-size-s);--kbq-file-upload-size-single-container-padding-vertical: var(--kbq-size-m);--kbq-file-upload-size-single-container-padding-horizontal: var(--kbq-size-m);--kbq-file-upload-size-single-text-block-padding-vertical: var(--kbq-size-3xs);--kbq-file-upload-size-single-text-block-content-gap-horizontal: var(--kbq-size-xxs);--kbq-file-upload-size-multiple-big-container-min-height: 160px;--kbq-file-upload-size-multiple-big-container-min-width: 320px;--kbq-file-upload-size-multiple-big-container-border-radius: var(--kbq-size-s);--kbq-file-upload-size-multiple-big-container-border-width: 1px;--kbq-file-upload-size-multiple-big-container-content-gap-horizontal: var(--kbq-size-m);--kbq-file-upload-size-multiple-big-container-padding-vertical: var(--kbq-size-xxl);--kbq-file-upload-size-multiple-big-container-padding-horizontal: var(--kbq-size-xxl);--kbq-file-upload-size-multiple-big-text-block-content-gap-vertical: 0px;--kbq-file-upload-size-multiple-big-text-block-content-gap-horizontal: var(--kbq-size-xxs);--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal: var(--kbq-size-s);--kbq-file-upload-size-multiple-big-grid-cell-padding-vertical: var(--kbq-size-s);--kbq-file-upload-size-multiple-big-grid-cell-content-gap-horizontal: var(--kbq-size-xxs);--kbq-file-upload-single-default-container-border: var(--kbq-line-contrast-fade);--kbq-file-upload-single-default-container-background: var(--kbq-background-bg);--kbq-file-upload-single-default-upload-icon-color: var(--kbq-icon-contrast-fade);--kbq-file-upload-single-default-left-icon-color: var(--kbq-icon-contrast-fade);--kbq-file-upload-single-default-text-block-color: var(--kbq-foreground-contrast);--kbq-file-upload-single-default-icon-button-color: var(--kbq-icon-contrast);--kbq-file-upload-single-states-on-drag-container-border: var(--kbq-line-theme-fade);--kbq-file-upload-single-states-on-drag-container-background: var(--kbq-background-theme-fade);--kbq-file-upload-single-states-on-drag-upload-icon-color: var(--kbq-icon-contrast-fade);--kbq-file-upload-single-states-on-drag-left-icon-color: var(--kbq-icon-contrast-fade);--kbq-file-upload-single-states-on-drag-text-block-color: var(--kbq-foreground-contrast);--kbq-file-upload-single-states-error-container-border: var(--kbq-line-error);--kbq-file-upload-single-states-error-container-background: var(--kbq-background-error-less);--kbq-file-upload-single-states-error-left-icon-color: var(--kbq-icon-error);--kbq-file-upload-single-states-error-text-block-color: var(--kbq-foreground-error);--kbq-file-upload-single-states-disabled-container-border: var(--kbq-states-line-disabled);--kbq-file-upload-single-states-disabled-container-background: var(--kbq-states-background-disabled);--kbq-file-upload-single-states-disabled-upload-icon-color: var(--kbq-states-icon-disabled);--kbq-file-upload-single-states-disabled-left-icon-color: var(--kbq-states-icon-disabled);--kbq-file-upload-single-states-disabled-text-block-color: var(--kbq-states-foreground-disabled);--kbq-file-upload-single-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-file-upload-multiple-default-container-border: var(--kbq-line-contrast-fade);--kbq-file-upload-multiple-default-container-background: var(--kbq-background-bg);--kbq-file-upload-multiple-default-upload-icon-color: var(--kbq-icon-contrast-fade);--kbq-file-upload-multiple-default-left-icon-color: var(--kbq-icon-contrast-fade);--kbq-file-upload-multiple-default-text-block-color: var(--kbq-foreground-contrast);--kbq-file-upload-multiple-default-icon-button-color: var(--kbq-icon-contrast);--kbq-file-upload-multiple-default-grid-divider-color: var(--kbq-line-contrast-less);--kbq-file-upload-multiple-states-on-drag-container-border: var(--kbq-line-theme-fade);--kbq-file-upload-multiple-states-on-drag-container-background: var(--kbq-background-theme-fade);--kbq-file-upload-multiple-states-on-drag-upload-icon-color: var(--kbq-icon-contrast-fade);--kbq-file-upload-multiple-states-on-drag-left-icon-color: var(--kbq-icon-contrast-fade);--kbq-file-upload-multiple-states-on-drag-icon-button-color: var(--kbq-icon-contrast);--kbq-file-upload-multiple-states-on-drag-text-block-color: var(--kbq-foreground-contrast);--kbq-file-upload-multiple-states-on-drag-grid-divider-color: var(--kbq-line-contrast-less);--kbq-file-upload-multiple-states-error-grid-cell-background: var(--kbq-background-error-less);--kbq-file-upload-multiple-states-error-left-icon-color: var(--kbq-icon-error);--kbq-file-upload-multiple-states-error-text-block-color: var(--kbq-foreground-error);--kbq-file-upload-multiple-states-error-icon-button-color: var(--kbq-icon-error);--kbq-file-upload-multiple-states-disabled-container-border: var(--kbq-states-line-disabled);--kbq-file-upload-multiple-states-disabled-container-background: var(--kbq-states-background-disabled);--kbq-file-upload-multiple-states-disabled-upload-icon-color: var(--kbq-states-icon-disabled);--kbq-file-upload-multiple-states-disabled-left-icon-color: var(--kbq-states-icon-disabled);--kbq-file-upload-multiple-states-disabled-text-block-color: var(--kbq-states-foreground-disabled);--kbq-file-upload-multiple-states-disabled-grid-divider-color: var(--kbq-states-line-disabled);--kbq-form-field-hint-text: var(--kbq-foreground-contrast-secondary)}\n", ".kbq-multiple-file-upload .kbq-file-upload{border-radius:var(--kbq-file-upload-size-multiple-big-container-border-radius);border-width:var(--kbq-file-upload-size-multiple-big-container-border-width);border-style:dashed}.kbq-multiple-file-upload .kbq-file-upload.default:not(.selected){justify-content:center;padding:var(--kbq-file-upload-size-multiple-big-container-padding-vertical) var(--kbq-file-upload-size-multiple-big-container-padding-vertical);min-height:var(--kbq-file-upload-size-multiple-big-container-min-height);min-width:var(--kbq-file-upload-size-multiple-big-container-min-width)}.kbq-multiple-file-upload .kbq-file-upload.default:not(.selected) .dropzone{gap:var(--kbq-file-upload-size-multiple-big-container-content-gap-horizontal)}.kbq-multiple-file-upload .kbq-file-upload.default:not(.selected) .dropzone__text .multiple__header{display:block}.kbq-multiple-file-upload .kbq-file-upload.default:not(.selected) .dropzone__text .multiple__caption{display:block;padding-top:var(--kbq-file-upload-size-multiple-big-text-block-content-gap-vertical);gap:var(--kbq-file-upload-size-multiple-big-text-block-content-gap-horizontal)}.kbq-multiple-file-upload .kbq-file-upload.compact:not(.selected){padding:var(--kbq-file-upload-size-single-container-padding-vertical) var(--kbq-file-upload-size-single-container-padding-horizontal)}.kbq-multiple-file-upload .kbq-file-upload.compact:not(.selected) .dropzone{gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal)}.kbq-multiple-file-upload .kbq-file-upload.compact:not(.selected) .dropzone .dropzone__text.multiple__caption{padding-top:var(--kbq-file-upload-size-single-text-block-padding-vertical);padding-bottom:var(--kbq-file-upload-size-single-text-block-padding-vertical);gap:var(--kbq-file-upload-size-single-text-block-content-gap-horizontal)}.kbq-multiple-file-upload .kbq-file-upload .kbq-list-option.multiple__uploaded-item{padding:0}.kbq-multiple-file-upload .kbq-file-upload .kbq-list-option.multiple__uploaded-item .kbq-list-text{padding:calc(var(--kbq-file-upload-size-multiple-big-grid-cell-padding-vertical) - var(--kbq-list-size-container-focus-outline-width, var(--kbq-size-3xs))) calc(var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal) - var(--kbq-list-size-container-focus-outline-width, var(--kbq-size-3xs)))}.kbq-multiple-file-upload .kbq-file-upload .kbq-list-option.multiple__uploaded-item .kbq-icon{margin-right:0}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-upload__grid{min-height:144px}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-multiple-uploaded__header-inner,.kbq-multiple-file-upload .kbq-file-upload .kbq-file-upload__row{display:flex;align-items:center}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__file,.kbq-multiple-file-upload .kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file{width:65%;max-width:65%;gap:var(--kbq-file-upload-size-multiple-big-grid-cell-content-gap-horizontal)}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__size,.kbq-multiple-file-upload .kbq-file-upload .kbq-file-upload__row .kbq-file-upload__size{width:var(--kbq-size-7xl);min-width:var(--kbq-size-7xl);text-align:left;flex-grow:1}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file{display:flex;align-items:center}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file .file-item__text{margin-left:0;width:90%}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-multiple-uploaded__header{border-bottom-width:1px;border-bottom-style:solid}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-multiple-uploaded__header .kbq-file-multiple-uploaded__header-inner{padding:calc(var(--kbq-file-upload-size-multiple-big-grid-cell-padding-vertical) + 2px) calc(var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal) + 2px)}.kbq-multiple-file-upload .kbq-file-upload .btn-upload{padding:calc(var(--kbq-file-upload-size-single-container-padding-vertical) - var(--kbq-file-upload-size-single-container-border-width)) calc(var(--kbq-file-upload-size-single-container-padding-horizontal) - var(--kbq-file-upload-size-single-container-border-width));border-top-left-radius:var(--kbq-file-upload-size-single-container-border-radius);border-top-right-radius:var(--kbq-file-upload-size-single-container-border-radius);border-top-width:var(--kbq-file-upload-size-single-container-border-width);border-top-style:dashed}.kbq-multiple-file-upload .kbq-file-upload .btn-upload .dropzone{gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal)}.kbq-multiple-file-upload .kbq-file-upload .btn-upload .dropzone .dropzone__text.multiple__caption{padding-top:var(--kbq-file-upload-size-single-text-block-padding-vertical);padding-bottom:var(--kbq-file-upload-size-single-text-block-padding-vertical);gap:var(--kbq-file-upload-size-single-text-block-content-gap-horizontal)}.kbq-multiple-file-upload .kbq-file-upload .file-upload__dropzone{width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: i1.KbqProgressSpinner, selector: "kbq-progress-spinner", inputs: ["id", "value", "mode", "size"] }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "component", type: i2.KbqIconButton, selector: "[kbq-icon-button]", inputs: ["small", "kbq-icon-button", "tabindex", "disabled"] }, { kind: "component", type: i3.KbqListSelection, selector: "kbq-list-selection", inputs: ["autoSelect", "noUnselectLast", "horizontal", "tabIndex", "disabled", "compareWith"], outputs: ["onSelectAll", "onCopy", "selectionChange"], exportAs: ["kbqListSelection"] }, { kind: "component", type: i3.KbqListOption, selector: "kbq-list-option", inputs: ["checkboxPosition", "value", "disabled", "showCheckbox", "selected"], exportAs: ["kbqListOption"] }, { kind: "directive", type: i4.KbqEllipsisCenterDirective, selector: "[kbqEllipsisCenter]", inputs: ["kbqEllipsisCenter", "minVisibleLength", "charWidth"] }, { kind: "directive", type: i5.KbqLink, selector: "[kbq-link]", inputs: ["disabled", "tabIndex", "pseudo", "noUnderline", "big", "compact", "useVisited", "print"], exportAs: ["kbqLink"] }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.KbqFileDropDirective, selector: "[kbqFileDrop]", outputs: ["filesDropped"], exportAs: ["kbqFileDrop"] }, { kind: "pipe", type: i8.KbqDataSizePipe, name: "kbqDataSize" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
239
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: KbqMultipleFileUploadComponent, selector: "kbq-multiple-file-upload,kbq-file-upload[multiple]", inputs: { progressMode: "progressMode", accept: "accept", disabled: "disabled", errors: "errors", size: "size", inputId: "inputId", customValidation: "customValidation", errorStateMatcher: "errorStateMatcher", files: "files" }, outputs: { filesChange: "fileQueueChanged", filesAdded: "filesAdded", fileRemoved: "fileRemoved" }, host: { classAttribute: "kbq-multiple-file-upload" }, queries: [{ propertyName: "customFileIcon", first: true, predicate: ["kbqFileIcon"], descendants: true, read: TemplateRef }, { propertyName: "hint", predicate: KbqHint }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n kbqFileDrop\n class=\"kbq-file-upload\"\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"invalid\"\n [class.selected]=\"files?.length\"\n [ngClass]=\"size\"\n (filesDropped)=\"onFileDropped($event)\"\n>\n @if (!files.length) {\n <div class=\"dropzone\">\n @if (size === 'default') {\n <i color=\"contrast-fade\" kbq-icon=\"kbq-cloud-arrow-up-o_32\"></i>\n <div class=\"dropzone__text\">\n <span class=\"multiple__header\">{{ config.title }}</span>\n <div>\n <!-- prettier-ignore -->\n <span class=\"multiple__caption\">{{ separatedCaptionText[0] }}<label kbq-link pseudo [disabled]=\"disabled\" [tabIndex]=\"-1\" [for]=\"inputId\">{{ config.browseLink }}<ng-container *ngTemplateOutlet=\"inputTemplate\" /></label>{{ separatedCaptionText[1] }}</span>\n </div>\n </div>\n } @else {\n <i color=\"contrast-fade\" kbq-icon=\"kbq-cloud-arrow-up-o_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ separatedCaptionTextForCompactSize[0] }}\n <label kbq-link pseudo [disabled]=\"disabled\" [for]=\"inputId\" [tabIndex]=\"-1\">\n {{ config.browseLink }}\n <ng-container *ngTemplateOutlet=\"inputTemplate\" />\n </label>\n {{ separatedCaptionTextForCompactSize[1] }}\n </span>\n }\n </div>\n } @else {\n <div class=\"file-upload__dropzone\">\n <div class=\"kbq-file-upload__grid\">\n <div class=\"kbq-file-multiple-uploaded__header\">\n <div class=\"kbq-file-multiple-uploaded__header-inner\">\n @for (column of columnDefs; track column) {\n <div [class]=\"'kbq-file-upload__' + column.cssClass\">\n {{ column.header }}\n </div>\n }\n </div>\n </div>\n <kbq-list-selection [autoSelect]=\"false\" [disabled]=\"disabled\">\n @for (file of files; track file; let index = $index) {\n <kbq-list-option\n class=\"multiple__uploaded-item\"\n [value]=\"file.file.name\"\n (keydown.backspace)=\"deleteFile(index)\"\n (keydown.delete)=\"deleteFile(index)\"\n >\n <div class=\"kbq-file-upload__row\" [class.error]=\"file.hasError\">\n <div class=\"kbq-file-upload__file\">\n @if (\n { loading: file.loading | async, progress: file.progress | async };\n as asyncData\n ) {\n @if (!asyncData.loading) {\n <ng-container\n [ngTemplateOutlet]=\"$any(customFileIcon)\"\n [ngTemplateOutletContext]=\"{ $implicit: file }\"\n />\n }\n @if (asyncData.loading) {\n <kbq-progress-spinner\n class=\"kbq-file-upload-name-cell__icon\"\n [mode]=\"progressMode\"\n [value]=\"asyncData.progress || 0\"\n />\n }\n }\n <span\n class=\"file-item__text\"\n [kbqEllipsisCenter]=\"file.file.name\"\n [minVisibleLength]=\"10\"\n ></span>\n </div>\n <div class=\"kbq-file-upload__size\">{{ file.file.size | kbqDataSize }}</div>\n <div class=\"kbq-file-upload__action\">\n <i kbq-icon-button=\"kbq-xmark-circle_16\" (click)=\"deleteFile(index, $event)\"></i>\n </div>\n </div>\n </kbq-list-option>\n }\n </kbq-list-selection>\n </div>\n <div class=\"btn-upload\">\n <div class=\"dropzone\">\n <i kbq-icon=\"kbq-cloud-arrow-up-o_24\"></i>\n <span class=\"dropzone__text multiple__caption\">\n {{ separatedCaptionTextWhenSelected[0] }}\n <label kbq-link pseudo [disabled]=\"disabled\" [for]=\"inputId\" [tabIndex]=\"-1\">\n {{ config.browseLink }}\n <ng-container *ngTemplateOutlet=\"inputTemplate\" />\n </label>\n {{ separatedCaptionTextWhenSelected[1] }}\n </span>\n </div>\n </div>\n </div>\n }\n</div>\n\n@if (hasHint) {\n <div class=\"kbq-file-upload__hint\">\n <ng-content select=\"kbq-hint\" />\n </div>\n}\n\n<ng-template #inputTemplate>\n <input\n #input\n multiple\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n (change)=\"onFileSelectedViaClick($event)\"\n />\n</ng-template>\n", styles: [".kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}.kbq-file-upload__hint .kbq-hint{margin-top:var(--kbq-size-xxs)}.kbq-file-upload .kbq-focused,.kbq-file-upload .kbq-link.kbq-focused{border:2px solid var(--kbq-file-upload-single-states-focused-focus-outline-color)}.kbq-single-file-upload .kbq-file-upload{background-color:var(--kbq-file-upload-single-default-container-background);border-color:var(--kbq-file-upload-single-default-container-border)!important}.kbq-single-file-upload .kbq-file-upload.dragover{background-color:var(--kbq-file-upload-single-states-on-drag-container-background);border-color:var(--kbq-file-upload-single-states-on-drag-container-border)!important}.kbq-single-file-upload .kbq-file-upload.kbq-error:not(.kbq-disabled):not(.dragover){background-color:var(--kbq-file-upload-single-states-error-container-background);border-color:var(--kbq-file-upload-single-states-error-container-border)!important}.kbq-single-file-upload .kbq-file-upload.kbq-error:not(.kbq-disabled) :not(.kbq-link),.kbq-single-file-upload .kbq-file-upload.kbq-error:not(.kbq-disabled) .kbq-icon{color:var(--kbq-file-upload-single-states-error-text-block-color)}.kbq-single-file-upload .kbq-file-upload.kbq-disabled{background-color:var(--kbq-file-upload-single-states-disabled-container-background);border-color:var(--kbq-file-upload-single-states-disabled-container-border)!important}.kbq-single-file-upload .kbq-file-upload.kbq-disabled,.kbq-single-file-upload .kbq-file-upload.kbq-disabled .kbq-icon,.kbq-single-file-upload .kbq-file-upload.kbq-disabled .kbq-link{color:var(--kbq-file-upload-single-states-disabled-container-border)}.kbq-multiple-file-upload .kbq-file-upload{background-color:var(--kbq-file-upload-multiple-default-container-background);border-color:var(--kbq-file-upload-multiple-default-container-border)!important}.kbq-multiple-file-upload .kbq-file-upload .btn-upload{border-top-color:var(--kbq-file-upload-multiple-default-container-border)}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-multiple-uploaded__header{border-bottom-color:var(--kbq-file-upload-multiple-default-grid-divider-color)}.kbq-multiple-file-upload .kbq-file-upload.dragover{background-color:var(--kbq-file-upload-multiple-states-on-drag-container-background);border-color:var(--kbq-file-upload-multiple-states-on-drag-container-border)!important}.kbq-multiple-file-upload .kbq-file-upload.dragover .kbq-file-multiple-uploaded__header{border-bottom-color:var(--kbq-file-upload-multiple-states-on-drag-container-background)!important}.kbq-multiple-file-upload .kbq-file-upload.dragover.selected .dropzone{border-top-color:var(--kbq-file-upload-multiple-states-on-drag-container-border)}.kbq-multiple-file-upload .kbq-file-upload.kbq-disabled{background-color:var(--kbq-file-upload-multiple-states-disabled-container-background);border-color:var(--kbq-file-upload-multiple-states-disabled-container-border)!important}.kbq-multiple-file-upload .kbq-file-upload.kbq-disabled,.kbq-multiple-file-upload .kbq-file-upload.kbq-disabled .kbq-icon,.kbq-multiple-file-upload .kbq-file-upload.kbq-disabled .kbq-link{color:var(--kbq-file-upload-multiple-states-disabled-container-border)}.kbq-multiple-file-upload .kbq-file-upload.kbq-disabled.selected .dropzone{border-top-color:var(--kbq-file-upload-multiple-states-disabled-container-border)}.kbq-multiple-file-upload .kbq-file-upload:not(.kbq-disabled).kbq-error{background-color:var(--kbq-background-error-less);border-color:var(--kbq-line-error)!important}.kbq-multiple-file-upload .kbq-file-upload:not(.kbq-disabled).kbq-error :not(.kbq-link),.kbq-multiple-file-upload .kbq-file-upload:not(.kbq-disabled).kbq-error .kbq-icon{color:var(--kbq-foreground-error)}.kbq-multiple-file-upload .kbq-file-upload:not(.kbq-disabled) .multiple__uploaded-item:has(.kbq-file-upload__row.error){background-color:var(--kbq-background-error-less)}.kbq-multiple-file-upload .kbq-file-upload:not(.kbq-disabled) .multiple__uploaded-item:has(.kbq-file-upload__row.error) :not(.kbq-link),.kbq-multiple-file-upload .kbq-file-upload:not(.kbq-disabled) .multiple__uploaded-item:has(.kbq-file-upload__row.error) .kbq-icon{color:var(--kbq-foreground-error)}.kbq-multiple-file-upload .kbq-file-upload .multiple__uploaded-item .kbq-file-upload__file .kbq-icon{color:var(--kbq-file-upload-multiple-default-left-icon-color)}.kbq-multiple-file-upload .kbq-file-upload .multiple__uploaded-item .kbq-file-upload__action .kbq-icon{color:var(--kbq-file-upload-multiple-default-icon-button-color)}.kbq-file-upload__hint .kbq-hint{color:var(--kbq-foreground-contrast-secondary)}.kbq-single-file-upload .file-item__text-wrapper,.kbq-single-file-upload .dropzone__text{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-multiple-file-upload .multiple__header{font-size:var(--kbq-typography-subheading-font-size);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-multiple-file-upload .multiple__caption,.kbq-multiple-file-upload .multiple__caption .kbq-link,.kbq-multiple-file-upload .kbq-file-multiple-uploaded__header,.kbq-multiple-file-upload .multiple__uploaded-item,.kbq-multiple-file-upload .kbq-file-upload .kbq-list-item,.kbq-multiple-file-upload .kbq-file-upload .kbq-list-option{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-file-upload__hint .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-compact-font-size);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}\n", ".kbq-file-upload{--kbq-file-upload-size-single-container-border-radius: var(--kbq-size-s);--kbq-file-upload-size-single-container-border-width: 1px;--kbq-file-upload-size-single-container-content-gap-horizontal: var(--kbq-size-s);--kbq-file-upload-size-single-container-padding-vertical: var(--kbq-size-m);--kbq-file-upload-size-single-container-padding-horizontal: var(--kbq-size-m);--kbq-file-upload-size-single-text-block-padding-vertical: var(--kbq-size-3xs);--kbq-file-upload-size-single-text-block-content-gap-horizontal: var(--kbq-size-xxs);--kbq-file-upload-size-multiple-big-container-min-height: 160px;--kbq-file-upload-size-multiple-big-container-min-width: 320px;--kbq-file-upload-size-multiple-big-container-border-radius: var(--kbq-size-s);--kbq-file-upload-size-multiple-big-container-border-width: 1px;--kbq-file-upload-size-multiple-big-container-content-gap-horizontal: var(--kbq-size-m);--kbq-file-upload-size-multiple-big-container-padding-vertical: var(--kbq-size-xxl);--kbq-file-upload-size-multiple-big-container-padding-horizontal: var(--kbq-size-xxl);--kbq-file-upload-size-multiple-big-text-block-content-gap-vertical: 0px;--kbq-file-upload-size-multiple-big-text-block-content-gap-horizontal: var(--kbq-size-xxs);--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal: var(--kbq-size-s);--kbq-file-upload-size-multiple-big-grid-cell-padding-vertical: var(--kbq-size-s);--kbq-file-upload-size-multiple-big-grid-cell-content-gap-horizontal: var(--kbq-size-xxs);--kbq-file-upload-single-default-container-border: var(--kbq-line-contrast-fade);--kbq-file-upload-single-default-container-background: var(--kbq-background-bg);--kbq-file-upload-single-default-upload-icon-color: var(--kbq-icon-contrast-fade);--kbq-file-upload-single-default-left-icon-color: var(--kbq-icon-contrast-fade);--kbq-file-upload-single-default-text-block-color: var(--kbq-foreground-contrast);--kbq-file-upload-single-default-icon-button-color: var(--kbq-icon-contrast);--kbq-file-upload-single-states-on-drag-container-border: var(--kbq-line-theme-fade);--kbq-file-upload-single-states-on-drag-container-background: var(--kbq-background-theme-fade);--kbq-file-upload-single-states-on-drag-upload-icon-color: var(--kbq-icon-contrast-fade);--kbq-file-upload-single-states-on-drag-left-icon-color: var(--kbq-icon-contrast-fade);--kbq-file-upload-single-states-on-drag-text-block-color: var(--kbq-foreground-contrast);--kbq-file-upload-single-states-error-container-border: var(--kbq-line-error);--kbq-file-upload-single-states-error-container-background: var(--kbq-background-error-less);--kbq-file-upload-single-states-error-left-icon-color: var(--kbq-icon-error);--kbq-file-upload-single-states-error-text-block-color: var(--kbq-foreground-error);--kbq-file-upload-single-states-disabled-container-border: var(--kbq-states-line-disabled);--kbq-file-upload-single-states-disabled-container-background: var(--kbq-states-background-disabled);--kbq-file-upload-single-states-disabled-upload-icon-color: var(--kbq-states-icon-disabled);--kbq-file-upload-single-states-disabled-left-icon-color: var(--kbq-states-icon-disabled);--kbq-file-upload-single-states-disabled-text-block-color: var(--kbq-states-foreground-disabled);--kbq-file-upload-single-states-focused-focus-outline-color: var(--kbq-states-line-focus-theme);--kbq-file-upload-multiple-default-container-border: var(--kbq-line-contrast-fade);--kbq-file-upload-multiple-default-container-background: var(--kbq-background-bg);--kbq-file-upload-multiple-default-upload-icon-color: var(--kbq-icon-contrast-fade);--kbq-file-upload-multiple-default-left-icon-color: var(--kbq-icon-contrast-fade);--kbq-file-upload-multiple-default-text-block-color: var(--kbq-foreground-contrast);--kbq-file-upload-multiple-default-icon-button-color: var(--kbq-icon-contrast);--kbq-file-upload-multiple-default-grid-divider-color: var(--kbq-line-contrast-less);--kbq-file-upload-multiple-states-on-drag-container-border: var(--kbq-line-theme-fade);--kbq-file-upload-multiple-states-on-drag-container-background: var(--kbq-background-theme-fade);--kbq-file-upload-multiple-states-on-drag-upload-icon-color: var(--kbq-icon-contrast-fade);--kbq-file-upload-multiple-states-on-drag-left-icon-color: var(--kbq-icon-contrast-fade);--kbq-file-upload-multiple-states-on-drag-icon-button-color: var(--kbq-icon-contrast);--kbq-file-upload-multiple-states-on-drag-text-block-color: var(--kbq-foreground-contrast);--kbq-file-upload-multiple-states-on-drag-grid-divider-color: var(--kbq-line-contrast-less);--kbq-file-upload-multiple-states-error-grid-cell-background: var(--kbq-background-error-less);--kbq-file-upload-multiple-states-error-left-icon-color: var(--kbq-icon-error);--kbq-file-upload-multiple-states-error-text-block-color: var(--kbq-foreground-error);--kbq-file-upload-multiple-states-error-icon-button-color: var(--kbq-icon-error);--kbq-file-upload-multiple-states-disabled-container-border: var(--kbq-states-line-disabled);--kbq-file-upload-multiple-states-disabled-container-background: var(--kbq-states-background-disabled);--kbq-file-upload-multiple-states-disabled-upload-icon-color: var(--kbq-states-icon-disabled);--kbq-file-upload-multiple-states-disabled-left-icon-color: var(--kbq-states-icon-disabled);--kbq-file-upload-multiple-states-disabled-text-block-color: var(--kbq-states-foreground-disabled);--kbq-file-upload-multiple-states-disabled-grid-divider-color: var(--kbq-states-line-disabled);--kbq-form-field-hint-text: var(--kbq-foreground-contrast-secondary)}\n", ".kbq-multiple-file-upload .kbq-file-upload{border-radius:var(--kbq-file-upload-size-multiple-big-container-border-radius);border-width:var(--kbq-file-upload-size-multiple-big-container-border-width);border-style:dashed}.kbq-multiple-file-upload .kbq-file-upload.default:not(.selected){justify-content:center;padding:var(--kbq-file-upload-size-multiple-big-container-padding-vertical) var(--kbq-file-upload-size-multiple-big-container-padding-vertical);min-height:var(--kbq-file-upload-size-multiple-big-container-min-height);min-width:var(--kbq-file-upload-size-multiple-big-container-min-width)}.kbq-multiple-file-upload .kbq-file-upload.default:not(.selected) .dropzone{gap:var(--kbq-file-upload-size-multiple-big-container-content-gap-horizontal)}.kbq-multiple-file-upload .kbq-file-upload.default:not(.selected) .dropzone__text .multiple__header{display:block}.kbq-multiple-file-upload .kbq-file-upload.default:not(.selected) .dropzone__text .multiple__caption{display:block;padding-top:var(--kbq-file-upload-size-multiple-big-text-block-content-gap-vertical);gap:var(--kbq-file-upload-size-multiple-big-text-block-content-gap-horizontal)}.kbq-multiple-file-upload .kbq-file-upload.compact:not(.selected){padding:var(--kbq-file-upload-size-single-container-padding-vertical) var(--kbq-file-upload-size-single-container-padding-horizontal)}.kbq-multiple-file-upload .kbq-file-upload.compact:not(.selected) .dropzone{gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal)}.kbq-multiple-file-upload .kbq-file-upload.compact:not(.selected) .dropzone .dropzone__text.multiple__caption{padding-top:var(--kbq-file-upload-size-single-text-block-padding-vertical);padding-bottom:var(--kbq-file-upload-size-single-text-block-padding-vertical);gap:var(--kbq-file-upload-size-single-text-block-content-gap-horizontal)}.kbq-multiple-file-upload .kbq-file-upload .kbq-list-option.multiple__uploaded-item{padding:0}.kbq-multiple-file-upload .kbq-file-upload .kbq-list-option.multiple__uploaded-item .kbq-list-text{padding:calc(var(--kbq-file-upload-size-multiple-big-grid-cell-padding-vertical) - var(--kbq-list-size-container-focus-outline-width, var(--kbq-size-3xs))) calc(var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal) - var(--kbq-list-size-container-focus-outline-width, var(--kbq-size-3xs)))}.kbq-multiple-file-upload .kbq-file-upload .kbq-list-option.multiple__uploaded-item .kbq-icon{margin-right:0}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-upload__grid{min-height:144px}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-multiple-uploaded__header-inner,.kbq-multiple-file-upload .kbq-file-upload .kbq-file-upload__row{display:flex;align-items:center}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__file,.kbq-multiple-file-upload .kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file{width:65%;max-width:65%;gap:var(--kbq-file-upload-size-multiple-big-grid-cell-content-gap-horizontal)}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-multiple-uploaded__header-inner .kbq-file-upload__size,.kbq-multiple-file-upload .kbq-file-upload .kbq-file-upload__row .kbq-file-upload__size{width:var(--kbq-size-7xl);min-width:var(--kbq-size-7xl);text-align:left;flex-grow:1}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file{display:flex;align-items:center}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-upload__row .kbq-file-upload__file .file-item__text{margin-left:0;width:90%}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-multiple-uploaded__header{border-bottom-width:1px;border-bottom-style:solid}.kbq-multiple-file-upload .kbq-file-upload .kbq-file-multiple-uploaded__header .kbq-file-multiple-uploaded__header-inner{padding:calc(var(--kbq-file-upload-size-multiple-big-grid-cell-padding-vertical) + 2px) calc(var(--kbq-file-upload-size-multiple-big-grid-cell-padding-horizontal) + 2px)}.kbq-multiple-file-upload .kbq-file-upload .btn-upload{padding:calc(var(--kbq-file-upload-size-single-container-padding-vertical) - var(--kbq-file-upload-size-single-container-border-width)) calc(var(--kbq-file-upload-size-single-container-padding-horizontal) - var(--kbq-file-upload-size-single-container-border-width));border-top-left-radius:var(--kbq-file-upload-size-single-container-border-radius);border-top-right-radius:var(--kbq-file-upload-size-single-container-border-radius);border-top-width:var(--kbq-file-upload-size-single-container-border-width);border-top-style:dashed}.kbq-multiple-file-upload .kbq-file-upload .btn-upload .dropzone{gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal)}.kbq-multiple-file-upload .kbq-file-upload .btn-upload .dropzone .dropzone__text.multiple__caption{padding-top:var(--kbq-file-upload-size-single-text-block-padding-vertical);padding-bottom:var(--kbq-file-upload-size-single-text-block-padding-vertical);gap:var(--kbq-file-upload-size-single-text-block-content-gap-horizontal)}.kbq-multiple-file-upload .kbq-file-upload .file-upload__dropzone{width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: i1.KbqProgressSpinner, selector: "kbq-progress-spinner", inputs: ["id", "value", "mode", "size"] }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "component", type: i2.KbqIconButton, selector: "[kbq-icon-button]", inputs: ["small", "kbq-icon-button", "tabindex", "disabled"] }, { kind: "component", type: i3.KbqListSelection, selector: "kbq-list-selection", inputs: ["autoSelect", "noUnselectLast", "horizontal", "tabIndex", "disabled", "compareWith"], outputs: ["onSelectAll", "onCopy", "selectionChange"], exportAs: ["kbqListSelection"] }, { kind: "component", type: i3.KbqListOption, selector: "kbq-list-option", inputs: ["checkboxPosition", "value", "disabled", "showCheckbox", "selected"], exportAs: ["kbqListOption"] }, { kind: "directive", type: i4.KbqEllipsisCenterDirective, selector: "[kbqEllipsisCenter]", inputs: ["kbqEllipsisCenter", "minVisibleLength", "charWidth"] }, { kind: "directive", type: i5.KbqLink, selector: "[kbq-link]", inputs: ["disabled", "tabIndex", "pseudo", "noUnderline", "big", "compact", "useVisited", "print"], exportAs: ["kbqLink"] }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.KbqFileDropDirective, selector: "[kbqFileDrop]", outputs: ["filesDropped"], exportAs: ["kbqFileDrop"] }, { kind: "pipe", type: i8.KbqDataSizePipe, name: "kbqDataSize" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
233
240
|
}
|
|
234
241
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqMultipleFileUploadComponent, decorators: [{
|
|
235
242
|
type: Component,
|
|
@@ -254,8 +261,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
254
261
|
type: Input
|
|
255
262
|
}], files: [{
|
|
256
263
|
type: Input
|
|
257
|
-
}],
|
|
258
|
-
type: Output
|
|
264
|
+
}], filesChange: [{
|
|
265
|
+
type: Output,
|
|
266
|
+
args: ['fileQueueChanged']
|
|
259
267
|
}], filesAdded: [{
|
|
260
268
|
type: Output
|
|
261
269
|
}], fileRemoved: [{
|
|
@@ -270,4 +278,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
270
278
|
type: ContentChildren,
|
|
271
279
|
args: [KbqHint]
|
|
272
280
|
}] } });
|
|
273
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9maWxlLXVwbG9hZC9tdWx0aXBsZS1maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL211bHRpcGxlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBRWYsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsNkJBQTZCLEVBRzdCLGlCQUFpQixFQUlwQixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQUV2QixJQUFJLDhCQUE4QixHQUFHLENBQUMsQ0FBQztBQWF2QyxNQUFNLENBQUMsTUFBTSw4Q0FBOEMsR0FDdkQsY0FBYyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7QUFZdkMsTUFBTSxPQUFPLDhCQUNULFNBQVEsaUJBQWlCO0lBNEJ6QixJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQ0ksS0FB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QyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERvQ2hlY2ssXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciwgcnVSVUxvY2FsZURhdGEgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBLYnFIaW50IH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyTW9kZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBpc0NvcnJlY3RFeHRlbnNpb24sXG4gICAgS0JRX0ZJTEVfVVBMT0FEX0NPTkZJR1VSQVRJT04sXG4gICAgS2JxRmlsZSxcbiAgICBLYnFGaWxlSXRlbSxcbiAgICBLYnFGaWxlVXBsb2FkQmFzZSxcbiAgICBLYnFGaWxlVmFsaWRhdG9yRm4sXG4gICAgS2JxSW5wdXRGaWxlLFxuICAgIEticUlucHV0RmlsZUxhYmVsXG59IGZyb20gJy4vZmlsZS11cGxvYWQnO1xuXG5sZXQgbmV4dE11bHRpcGxlRmlsZVVwbG9hZFVuaXF1ZUlkID0gMDtcblxuZXhwb3J0IGludGVyZmFjZSBLYnFJbnB1dEZpbGVNdWx0aXBsZUxhYmVsIGV4dGVuZHMgS2JxSW5wdXRGaWxlTGFiZWwge1xuICAgIGNhcHRpb25UZXh0V2hlblNlbGVjdGVkOiBzdHJpbmc7XG4gICAgY2FwdGlvblRleHRGb3JDb21wYWN0U2l6ZTogc3RyaW5nO1xuICAgIGdyaWRIZWFkZXJzOiB7XG4gICAgICAgIGZpbGU6IHN0cmluZztcbiAgICAgICAgc2l6ZTogc3RyaW5nO1xuICAgIH07XG5cbiAgICBbazogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGNvbnN0IEtCUV9NVUxUSVBMRV9GSUxFX1VQTE9BRF9ERUZBVUxUX0NPTkZJR1VSQVRJT046IEticUlucHV0RmlsZU11bHRpcGxlTGFiZWwgPVxuICAgIHJ1UlVMb2NhbGVEYXRhLmZpbGVVcGxvYWQubXVsdGlwbGU7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2JxLW11bHRpcGxlLWZpbGUtdXBsb2FkLGticS1maWxlLXVwbG9hZFttdWx0aXBsZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tdWx0aXBsZS1maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsZS11cGxvYWQuc2NzcycsICcuL2ZpbGUtdXBsb2FkLXRva2Vucy5zY3NzJywgJy4vbXVsdGlwbGUtZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtbXVsdGlwbGUtZmlsZS11cGxvYWQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFNdWx0aXBsZUZpbGVVcGxvYWRDb21wb25lbnRcbiAgICBleHRlbmRzIEticUZpbGVVcGxvYWRCYXNlXG4gICAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBLYnFJbnB1dEZpbGUsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEb0NoZWNrXG57XG4gICAgLyoqXG4gICAgICogQSB2YWx1ZSByZXNwb25zaWJsZSBmb3IgcHJvZ3Jlc3Mgc3Bpbm5lciB0eXBlLlxuICAgICAqIExvYWRpbmcgbG9naWMgZGVwZW5kcyBvbiBzZWxlY3RlZCBtb2RlICovXG4gICAgQElucHV0KCkgcHJvZ3Jlc3NNb2RlOiBQcm9ncmVzc1NwaW5uZXJNb2RlID0gJ2RldGVybWluYXRlJztcbiAgICBASW5wdXQoKSBhY2NlcHQ/OiBzdHJpbmdbXTtcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYEZvcm1Db250cm9sLmVycm9yc2BcbiAgICAgKi9cbiAgICBASW5wdXQoKSBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgQElucHV0KCkgc2l6ZTogJ2NvbXBhY3QnIHwgJ2RlZmF1bHQnID0gJ2RlZmF1bHQnO1xuICAgIC8qKlxuICAgICAqIGN1c3RvbSBJRCBmb3IgdGhlIGZpbGUgaW5wdXQgZWxlbWVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmcgPSBga2JxLW11bHRpcGxlLWZpbGUtdXBsb2FkLSR7bmV4dE11bHRpcGxlRmlsZVVwbG9hZFVuaXF1ZUlkKyt9YDtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgRm9ybUNvbnRyb2wgZm9yIHZhbGlkYXRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKSBjdXN0b21WYWxpZGF0aW9uPzogS2JxRmlsZVZhbGlkYXRvckZuW107XG5cbiAgICAvKiogQW4gb2JqZWN0IHVzZWQgdG8gY29udHJvbCB0aGUgZXJyb3Igc3RhdGUgb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKSBlcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXI7XG5cbiAgICBwcml2YXRlIF9maWxlczogS2JxRmlsZUl0ZW1bXSA9IFtdO1xuXG4gICAgZ2V0IGZpbGVzKCk6IEticUZpbGVJdGVtW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZXM7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZmlsZXMoY3VycmVudEZpbGVMaXN0OiBLYnFGaWxlSXRlbVtdKSB7XG4gICAgICAgIHRoaXMuX2ZpbGVzID0gY3VycmVudEZpbGVMaXN0O1xuICAgICAgICB0aGlzLmN2YU9uQ2hhbmdlKHRoaXMuX2ZpbGVzKTtcbiAgICAgICAgdGhpcy5maWxlUXVldWVDaGFuZ2VkLmVtaXQodGhpcy5fZmlsZXMpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgZmlsZVF1ZXVlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEticUZpbGVJdGVtW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFGaWxlSXRlbVtdPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYW4gZXZlbnQgY29udGFpbmluZyBhIGNodW5rIG9mIGZpbGVzIGFkZGVkIHRvIHRoZSBmaWxlIGxpc3QuXG4gICAgICovXG4gICAgQE91dHB1dCgpIGZpbGVzQWRkZWQ6IEV2ZW50RW1pdHRlcjxLYnFGaWxlSXRlbVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxRmlsZUl0ZW1bXT4oKTtcbiAgICAvKipcbiAgICAgKiBFbWl0cyBhbiBldmVudCBjb250YWluaW5nIGEgZmlsZSBhbmQgZmlsZSdzIGluZGV4IHdoZW4gcmVtb3ZlZCBmcm9tIHRoZSBmaWxlIGxpc3QuXG4gICAgICovXG4gICAgQE91dHB1dCgpIGZpbGVSZW1vdmVkOiBFdmVudEVtaXR0ZXI8W0ticUZpbGVJdGVtLCBudW1iZXJdPiA9IG5ldyBFdmVudEVtaXR0ZXI8W0ticUZpbGVJdGVtLCBudW1iZXJdPigpO1xuXG4gICAgQENvbnRlbnRDaGlsZCgna2JxRmlsZUljb24nLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pIGN1c3RvbUZpbGVJY29uOiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihLYnFIaW50KSBwcm90ZWN0ZWQgcmVhZG9ubHkgaGludDogUXVlcnlMaXN0PFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgaGFzRm9jdXMgPSBmYWxzZTtcbiAgICBjb2x1bW5EZWZzOiB7IGhlYWRlcjogc3RyaW5nOyBjc3NDbGFzczogc3RyaW5nIH1bXTtcblxuICAgIGNvbmZpZzogS2JxSW5wdXRGaWxlTXVsdGlwbGVMYWJlbDtcblxuICAgIHNlcGFyYXRlZENhcHRpb25UZXh0OiBzdHJpbmdbXTtcbiAgICBzZXBhcmF0ZWRDYXB0aW9uVGV4dFdoZW5TZWxlY3RlZDogc3RyaW5nW107XG4gICAgc2VwYXJhdGVkQ2FwdGlvblRleHRGb3JDb21wYWN0U2l6ZTogc3RyaW5nW107XG5cbiAgICAvKiogY3ZhT25DaGFuZ2UgZnVuY3Rpb24gcmVnaXN0ZXJlZCB2aWEgcmVnaXN0ZXJPbkNoYW5nZSAoQ29udHJvbFZhbHVlQWNjZXNzb3IpLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBjdmFPbkNoYW5nZSA9IChfOiBLYnFGaWxlSXRlbVtdKSA9PiB7fTtcblxuICAgIC8qKiBvblRvdWNoIGZ1bmN0aW9uIHJlZ2lzdGVyZWQgdmlhIHJlZ2lzdGVyT25Ub3VjaCAoQ29udHJvbFZhbHVlQWNjZXNzb3IpLlxuICAgICAqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICAgIGdldCBhY2NlcHRlZEZpbGVzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjY2VwdD8uam9pbignLCcpIHx8ICcqLyonO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBgRm9ybUNvbnRyb2wuZXJyb3JzYFxuICAgICAqL1xuICAgIGdldCBoYXNFcnJvcnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVycm9ycyAmJiAhIXRoaXMuZXJyb3JzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBnZXQgaGFzSGludCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGludC5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyBhbiBpbnZhbGlkIHN0YXRlIGJhc2VkIG9uIGBlcnJvclN0YXRlYCxcbiAgICAgKiBhcHBseWluZyBhIENTUyBjbGFzcyBpbiBIVE1MIGZvciB2aXN1YWwgZmVlZGJhY2suXG4gICAgICovXG4gICAgZ2V0IGludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yU3RhdGU7XG4gICAgfVxuXG4gICAgcmVhZG9ubHkgY29uZmlndXJhdGlvbiA9IGluamVjdDxLYnFJbnB1dEZpbGVNdWx0aXBsZUxhYmVsPihLQlFfRklMRV9VUExPQURfQ09ORklHVVJBVElPTiwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubG9jYWxlU2VydmljZT8uY2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUodGhpcy51cGRhdGVMb2NhbGVQYXJhbXMpO1xuXG4gICAgICAgIGlmICghdGhpcy5sb2NhbGVTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLmluaXREZWZhdWx0UGFyYW1zKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIC8vIE5vdGU6IHdlIHByb3ZpZGUgdGhlIHZhbHVlIGFjY2Vzc29yIHRocm91Z2ggaGVyZSwgaW5zdGVhZCBvZlxuICAgICAgICAgICAgLy8gdGhlIGBwcm92aWRlcnNgIHRvIGF2b2lkIHJ1bm5pbmcgaW50byBhIGNpcmN1bGFyIGltcG9ydC5cbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICAvLyBGb3JtQ29udHJvbCBzcGVjaWZpYyBlcnJvcnMgdXBkYXRlXG4gICAgICAgIHRoaXMubmdDb250cm9sPy5zdGF0dXNDaGFuZ2VzPy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lcnJvcnMgPSBPYmplY3QudmFsdWVzKHRoaXMubmdDb250cm9sPy5lcnJvcnMgfHwge30pO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKSk7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhpcyBvbiBldmVyeSBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLCBiZWNhdXNlIHRoZXJlIGFyZSBzb21lXG4gICAgICAgICAgICAvLyBlcnJvciB0cmlnZ2VycyB0aGF0IHdlIGNhbid0IHN1YnNjcmliZSB0byAoZS5nLiBwYXJlbnQgZm9ybSBzdWJtaXNzaW9ucykuIFRoaXMgbWVhbnNcbiAgICAgICAgICAgIC8vIHRoYXQgd2hhdGV2ZXIgbG9naWMgaXMgaW4gaGVyZSBoYXMgdG8gYmUgc3VwZXIgbGVhbiBvciB3ZSByaXNrIGRlc3Ryb3lpbmcgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAgICAgdGhpcy51cGRhdGVFcnJvclN0YXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICAgKiBAZG9jcy1wcml2YXRlICovXG4gICAgd3JpdGVWYWx1ZShmaWxlczogRmlsZUxpc3QgfCBLYnFGaWxlSXRlbVtdIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoZmlsZXMgaW5zdGFuY2VvZiBGaWxlTGlzdCB8fCAhZmlsZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSB0aGlzLm1hcFRvRmlsZUl0ZW0oZmlsZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWxlcyA9IGZpbGVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgICogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmN2YU9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgICogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29udHJvbC4gSW1wbGVtZW50ZWQgYXMgYSBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgICAqIEBwYXJhbSBpc0Rpc2FibGVkIFdoZXRoZXIgdGhlIGNvbnRyb2wgc2hvdWxkIGJlIGRpc2FibGVkLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uRmlsZVNlbGVjdGVkVmlhQ2xpY2soeyB0YXJnZXQgfTogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVzVG9BZGQgPSB0aGlzLm1hcFRvRmlsZUl0ZW0oKHRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcyk7XG5cbiAgICAgICAgdGhpcy5maWxlcyA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMuZmlsZXMsXG4gICAgICAgICAgICAuLi5maWxlc1RvQWRkXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuZmlsZXNBZGRlZC5lbWl0KGZpbGVzVG9BZGQpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICAvKiBldmVuIGlmIHRoZSB1c2VyIHNlbGVjdHMgdGhlIHNhbWUgZmlsZSxcbiAgICAgICAgICAgICAgICAgdGhlIG9uY2hhbmdlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGV2ZXJ5IHRpbWUgdXNlciBjbGlja3Mgb24gdGhlIGNvbnRyb2wuKi9cbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIG51bGwpO1xuICAgIH1cblxuICAgIG9uRmlsZURyb3BwZWQoZmlsZXM6IEZpbGVMaXN0IHwgS2JxRmlsZVtdKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlc1RvQWRkID0gdGhpcy5tYXBUb0ZpbGVJdGVtKGZpbGVzKTtcblxuICAgICAgICB0aGlzLmZpbGVzID0gW1xuICAgICAgICAgICAgLi4udGhpcy5maWxlcyxcbiAgICAgICAgICAgIC4uLmZpbGVzVG9BZGRcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5maWxlc0FkZGVkLmVtaXQoZmlsZXNUb0FkZCk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfVxuXG4gICAgZGVsZXRlRmlsZShpbmRleDogbnVtYmVyLCBldmVudD86IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5maWxlUmVtb3ZlZC5lbWl0KFt0aGlzLmZpbGVzW2luZGV4XSwgaW5kZXhdKTtcbiAgICAgICAgdGhpcy5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB0aGlzLmZpbGVzID0gWy4uLnRoaXMuZmlsZXNdO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIG9uRmlsZUxpc3RDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsZVF1ZXVlQ2hhbmdlZC5lbWl0KHRoaXMuZmlsZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9jYWxlUGFyYW1zID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuY29uZmlndXJhdGlvbiB8fCB0aGlzLmxvY2FsZVNlcnZpY2U/LmdldFBhcmFtcygnZmlsZVVwbG9hZCcpLm11bHRpcGxlO1xuXG4gICAgICAgIHRoaXMuY29sdW1uRGVmcyA9IFtcbiAgICAgICAgICAgIHsgaGVhZGVyOiB0aGlzLmNvbmZpZy5ncmlkSGVhZGVycy5maWxlLCBjc3NDbGFzczogJ2ZpbGUnIH0sXG4gICAgICAgICAgICB7IGhlYWRlcjogdGhpcy5jb25maWcuZ3JpZEhlYWRlcnMuc2l6ZSwgY3NzQ2xhc3M6ICdzaXplJyB9LFxuICAgICAgICAgICAgeyBoZWFkZXI6ICcnLCBjc3NDbGFzczogJ2FjdGlvbicgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ2V0Q2FwdGlvblRleHQoKTtcblxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBtYXBUb0ZpbGVJdGVtKGZpbGVzOiBGaWxlTGlzdCB8IEticUZpbGVbXSB8IG51bGwpOiBLYnFGaWxlSXRlbVtdIHtcbiAgICAgICAgaWYgKCFmaWxlcykge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZmlsZXMpXG4gICAgICAgICAgICAuZmlsdGVyKChmaWxlKSA9PiBpc0NvcnJlY3RFeHRlbnNpb24oZmlsZSwgdGhpcy5hY2NlcHQpKVxuICAgICAgICAgICAgLm1hcCgoZmlsZTogRmlsZSkgPT4gKHtcbiAgICAgICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgICAgIGhhc0Vycm9yOiB0aGlzLnZhbGlkYXRlRmlsZShmaWxlKSxcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKSxcbiAgICAgICAgICAgICAgICBwcm9ncmVzczogbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApXG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUZpbGUoZmlsZTogRmlsZSk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRoaXMuY3VzdG9tVmFsaWRhdGlvbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlcnJvcnNQZXJGaWxlID0gdGhpcy5jdXN0b21WYWxpZGF0aW9uXG4gICAgICAgICAgICAucmVkdWNlKChlcnJvcnM6IChzdHJpbmcgfCBudWxsKVtdLCB2YWxpZGF0b3JGbjogS2JxRmlsZVZhbGlkYXRvckZuKSA9PiB7XG4gICAgICAgICAgICAgICAgZXJyb3JzLnB1c2godmFsaWRhdG9yRm4oZmlsZSkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICAgICAgICAgIH0sIFtdKVxuICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBzdHJpbmdbXTtcblxuICAgICAgICB0aGlzLmVycm9ycyA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMuZXJyb3JzLFxuICAgICAgICAgICAgLi4uZXJyb3JzUGVyRmlsZVxuICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiAhIWVycm9yc1BlckZpbGUubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdERlZmF1bHRQYXJhbXMoKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gS0JRX01VTFRJUExFX0ZJTEVfVVBMT0FEX0RFRkFVTFRfQ09ORklHVVJBVElPTjtcblxuICAgICAgICB0aGlzLmNvbHVtbkRlZnMgPSBbXG4gICAgICAgICAgICB7IGhlYWRlcjogdGhpcy5jb25maWcuZ3JpZEhlYWRlcnMuZmlsZSwgY3NzQ2xhc3M6ICdmaWxlJyB9LFxuICAgICAgICAgICAgeyBoZWFkZXI6IHRoaXMuY29uZmlnLmdyaWRIZWFkZXJzLnNpemUsIGNzc0NsYXNzOiAnc2l6ZScgfSxcbiAgICAgICAgICAgIHsgaGVhZGVyOiAnJywgY3NzQ2xhc3M6ICdhY3Rpb24nIH1cbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmdldENhcHRpb25UZXh0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDYXB0aW9uVGV4dCgpIHtcbiAgICAgICAgdGhpcy5zZXBhcmF0ZWRDYXB0aW9uVGV4dCA9IHRoaXMuY29uZmlnLmNhcHRpb25UZXh0LnNwbGl0KCd7eyBicm93c2VMaW5rIH19Jyk7XG4gICAgICAgIHRoaXMuc2VwYXJhdGVkQ2FwdGlvblRleHRXaGVuU2VsZWN0ZWQgPSB0aGlzLmNvbmZpZy5jYXB0aW9uVGV4dFdoZW5TZWxlY3RlZC5zcGxpdCgne3sgYnJvd3NlTGluayB9fScpO1xuICAgICAgICB0aGlzLnNlcGFyYXRlZENhcHRpb25UZXh0Rm9yQ29tcGFjdFNpemUgPSB0aGlzLmNvbmZpZy5jYXB0aW9uVGV4dEZvckNvbXBhY3RTaXplLnNwbGl0KCd7eyBicm93c2VMaW5rIH19Jyk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGticUZpbGVEcm9wXG4gICAgY2xhc3M9XCJrYnEtZmlsZS11cGxvYWRcIlxuICAgIFtjbGFzcy5rYnEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtjbGFzcy5rYnEtZXJyb3JdPVwiaW52YWxpZFwiXG4gICAgW2NsYXNzLnNlbGVjdGVkXT1cImZpbGVzPy5sZW5ndGhcIlxuICAgIFtuZ0NsYXNzXT1cInNpemVcIlxuICAgIChmaWxlc0Ryb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCJcbj5cbiAgICBAaWYgKCFmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3B6b25lXCI+XG4gICAgICAgICAgICBAaWYgKHNpemUgPT09ICdkZWZhdWx0Jykge1xuICAgICAgICAgICAgICAgIDxpIGNvbG9yPVwiY29udHJhc3QtZmFkZVwiIGticS1pY29uPVwia2JxLWNsb3VkLWFycm93LXVwLW9fMzJcIj48L2k+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3B6b25lX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXVsdGlwbGVfX2hlYWRlclwiPnt7IGNvbmZpZy50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gcHJldHRpZXItaWdub3JlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdWx0aXBsZV9fY2FwdGlvblwiPnt7IHNlcGFyYXRlZENhcHRpb25UZXh0WzBdIH19PGxhYmVsIGticS1saW5rIHBzZXVkbyBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbdGFiSW5kZXhdPVwiLTFcIiBbZm9yXT1cImlucHV0SWRcIj57eyBjb25maWcuYnJvd3NlTGluayB9fTxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFRlbXBsYXRlXCIgLz48L2xhYmVsPnt7IHNlcGFyYXRlZENhcHRpb25UZXh0WzFdIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxpIGNvbG9yPVwiY29udHJhc3QtZmFkZVwiIGticS1pY29uPVwia2JxLWNsb3VkLWFycm93LXVwLW9fMjRcIj48L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wem9uZV9fdGV4dCBtdWx0aXBsZV9fY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBzZXBhcmF0ZWRDYXB0aW9uVGV4dEZvckNvbXBhY3RTaXplWzBdIH19XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBrYnEtbGluayBwc2V1ZG8gW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW2Zvcl09XCJpbnB1dElkXCIgW3RhYkluZGV4XT1cIi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb25maWcuYnJvd3NlTGluayB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICB7eyBzZXBhcmF0ZWRDYXB0aW9uVGV4dEZvckNvbXBhY3RTaXplWzFdIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtdXBsb2FkX19kcm9wem9uZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1maWxlLXVwbG9hZF9fZ3JpZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtZmlsZS1tdWx0aXBsZS11cGxvYWRlZF9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtZmlsZS1tdWx0aXBsZS11cGxvYWRlZF9faGVhZGVyLWlubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uRGVmczsgdHJhY2sgY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ2ticS1maWxlLXVwbG9hZF9fJyArIGNvbHVtbi5jc3NDbGFzc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2x1bW4uaGVhZGVyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxrYnEtbGlzdC1zZWxlY3Rpb24gW2F1dG9TZWxlY3RdPVwiZmFsc2VcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoZmlsZSBvZiBmaWxlczsgdHJhY2sgZmlsZTsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8a2JxLWxpc3Qtb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXBsZV9fdXBsb2FkZWQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImZpbGUuZmlsZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5iYWNrc3BhY2UpPVwiZGVsZXRlRmlsZShpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmRlbGV0ZSk9XCJkZWxldGVGaWxlKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1maWxlLXVwbG9hZF9fcm93XCIgW2NsYXNzLmVycm9yXT1cImZpbGUuaGFzRXJyb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1maWxlLXVwbG9hZF9fZmlsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxvYWRpbmc6IGZpbGUubG9hZGluZyB8IGFzeW5jLCBwcm9ncmVzczogZmlsZS5wcm9ncmVzcyB8IGFzeW5jIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgYXN5bmNEYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFhc3luY0RhdGEubG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGN1c3RvbUZpbGVJY29uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGZpbGUgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYXN5bmNEYXRhLmxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGticS1wcm9ncmVzcy1zcGlubmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImticS1maWxlLXVwbG9hZC1uYW1lLWNlbGxfX2ljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwicHJvZ3Jlc3NNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhc3luY0RhdGEucHJvZ3Jlc3MgfHwgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpbGUtaXRlbV9fdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ticUVsbGlwc2lzQ2VudGVyXT1cImZpbGUuZmlsZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluVmlzaWJsZUxlbmd0aF09XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1maWxlLXVwbG9hZF9fc2l6ZVwiPnt7IGZpbGUuZmlsZS5zaXplIHwga2JxRGF0YVNpemUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1maWxlLXVwbG9hZF9fYWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBrYnEtaWNvbi1idXR0b249XCJrYnEteG1hcmstY2lyY2xlXzE2XCIgKGNsaWNrKT1cImRlbGV0ZUZpbGUoaW5kZXgsICRldmVudClcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9rYnEtbGlzdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2ticS1saXN0LXNlbGVjdGlvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi11cGxvYWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcHpvbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtY2xvdWQtYXJyb3ctdXAtb18yNFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wem9uZV9fdGV4dCBtdWx0aXBsZV9fY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc2VwYXJhdGVkQ2FwdGlvblRleHRXaGVuU2VsZWN0ZWRbMF0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBrYnEtbGluayBwc2V1ZG8gW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW2Zvcl09XCJpbnB1dElkXCIgW3RhYkluZGV4XT1cIi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29uZmlnLmJyb3dzZUxpbmsgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRUZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc2VwYXJhdGVkQ2FwdGlvblRleHRXaGVuU2VsZWN0ZWRbMV0gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZGl2PlxuXG5AaWYgKGhhc0hpbnQpIHtcbiAgICA8ZGl2IGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkX19oaW50XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImticS1oaW50XCIgLz5cbiAgICA8L2Rpdj5cbn1cblxuPG5nLXRlbXBsYXRlICNpbnB1dFRlbXBsYXRlPlxuICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICBjbGFzcz1cImNkay12aXN1YWxseS1oaWRkZW5cIlxuICAgICAgICBbYWNjZXB0XT1cImFjY2VwdGVkRmlsZXNcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWRWaWFDbGljaygkZXZlbnQpXCJcbiAgICAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
281
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9maWxlLXVwbG9hZC9tdWx0aXBsZS1maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL211bHRpcGxlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBRWYsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsNkJBQTZCLEVBRzdCLGlCQUFpQixFQUlwQixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQUV2QixJQUFJLDhCQUE4QixHQUFHLENBQUMsQ0FBQztBQWF2QyxNQUFNLENBQUMsTUFBTSw4Q0FBOEMsR0FDdkQsY0FBYyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7QUFZdkMsTUFBTSxPQUFPLDhCQUNULFNBQVEsaUJBQWlCO0lBNkJ6QixJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQ0ksS0FB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S0csV0FBVztzQkFBcEIsTUFBTTtnQkFHNEQsY0FBYztzQkFBaEYsWUFBWTt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzdDLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFHMkIsSUFBSTtzQkFBaEQsZUFBZTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERvQ2hlY2ssXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciwgcnVSVUxvY2FsZURhdGEgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBLYnFIaW50IH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyTW9kZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBpc0NvcnJlY3RFeHRlbnNpb24sXG4gICAgS0JRX0ZJTEVfVVBMT0FEX0NPTkZJR1VSQVRJT04sXG4gICAgS2JxRmlsZSxcbiAgICBLYnFGaWxlSXRlbSxcbiAgICBLYnFGaWxlVXBsb2FkQmFzZSxcbiAgICBLYnFGaWxlVmFsaWRhdG9yRm4sXG4gICAgS2JxSW5wdXRGaWxlLFxuICAgIEticUlucHV0RmlsZUxhYmVsXG59IGZyb20gJy4vZmlsZS11cGxvYWQnO1xuXG5sZXQgbmV4dE11bHRpcGxlRmlsZVVwbG9hZFVuaXF1ZUlkID0gMDtcblxuZXhwb3J0IGludGVyZmFjZSBLYnFJbnB1dEZpbGVNdWx0aXBsZUxhYmVsIGV4dGVuZHMgS2JxSW5wdXRGaWxlTGFiZWwge1xuICAgIGNhcHRpb25UZXh0V2hlblNlbGVjdGVkOiBzdHJpbmc7XG4gICAgY2FwdGlvblRleHRGb3JDb21wYWN0U2l6ZTogc3RyaW5nO1xuICAgIGdyaWRIZWFkZXJzOiB7XG4gICAgICAgIGZpbGU6IHN0cmluZztcbiAgICAgICAgc2l6ZTogc3RyaW5nO1xuICAgIH07XG5cbiAgICBbazogc3RyaW5nIHwgbnVtYmVyIHwgc3ltYm9sXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGNvbnN0IEtCUV9NVUxUSVBMRV9GSUxFX1VQTE9BRF9ERUZBVUxUX0NPTkZJR1VSQVRJT046IEticUlucHV0RmlsZU11bHRpcGxlTGFiZWwgPVxuICAgIHJ1UlVMb2NhbGVEYXRhLmZpbGVVcGxvYWQubXVsdGlwbGU7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2JxLW11bHRpcGxlLWZpbGUtdXBsb2FkLGticS1maWxlLXVwbG9hZFttdWx0aXBsZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tdWx0aXBsZS1maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsZS11cGxvYWQuc2NzcycsICcuL2ZpbGUtdXBsb2FkLXRva2Vucy5zY3NzJywgJy4vbXVsdGlwbGUtZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtbXVsdGlwbGUtZmlsZS11cGxvYWQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFNdWx0aXBsZUZpbGVVcGxvYWRDb21wb25lbnRcbiAgICBleHRlbmRzIEticUZpbGVVcGxvYWRCYXNlXG4gICAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBLYnFJbnB1dEZpbGUsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEb0NoZWNrXG57XG4gICAgLyoqXG4gICAgICogQSB2YWx1ZSByZXNwb25zaWJsZSBmb3IgcHJvZ3Jlc3Mgc3Bpbm5lciB0eXBlLlxuICAgICAqIExvYWRpbmcgbG9naWMgZGVwZW5kcyBvbiBzZWxlY3RlZCBtb2RlICovXG4gICAgQElucHV0KCkgcHJvZ3Jlc3NNb2RlOiBQcm9ncmVzc1NwaW5uZXJNb2RlID0gJ2RldGVybWluYXRlJztcbiAgICAvKiogQXJyYXkgb2YgZmlsZSB0eXBlIHNwZWNpZmllcnMgKi9cbiAgICBASW5wdXQoKSBhY2NlcHQ/OiBzdHJpbmdbXTtcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYEZvcm1Db250cm9sLmVycm9yc2BcbiAgICAgKi9cbiAgICBASW5wdXQoKSBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgQElucHV0KCkgc2l6ZTogJ2NvbXBhY3QnIHwgJ2RlZmF1bHQnID0gJ2RlZmF1bHQnO1xuICAgIC8qKlxuICAgICAqIGN1c3RvbSBJRCBmb3IgdGhlIGZpbGUgaW5wdXQgZWxlbWVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmcgPSBga2JxLW11bHRpcGxlLWZpbGUtdXBsb2FkLSR7bmV4dE11bHRpcGxlRmlsZVVwbG9hZFVuaXF1ZUlkKyt9YDtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgRm9ybUNvbnRyb2wgZm9yIHZhbGlkYXRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKSBjdXN0b21WYWxpZGF0aW9uPzogS2JxRmlsZVZhbGlkYXRvckZuW107XG5cbiAgICAvKiogQW4gb2JqZWN0IHVzZWQgdG8gY29udHJvbCB0aGUgZXJyb3Igc3RhdGUgb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKSBlcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXI7XG5cbiAgICBwcml2YXRlIF9maWxlczogS2JxRmlsZUl0ZW1bXSA9IFtdO1xuXG4gICAgZ2V0IGZpbGVzKCk6IEticUZpbGVJdGVtW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZXM7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgZmlsZXMoY3VycmVudEZpbGVMaXN0OiBLYnFGaWxlSXRlbVtdKSB7XG4gICAgICAgIHRoaXMuX2ZpbGVzID0gY3VycmVudEZpbGVMaXN0O1xuICAgICAgICB0aGlzLmN2YU9uQ2hhbmdlKHRoaXMuX2ZpbGVzKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEVtaXRzIGFuIGV2ZW50IGNvbnRhaW5pbmcgdXBkYXRlZCBmaWxlIGxpc3QuXG4gICAgICogcHVibGljIG91dHB1dCB3aWxsIGJlIHJlbmFtZWQgdG8gZmlsZXNDaGFuZ2UgaW4gbmV4dCBtYWpvciByZWxlYXNlICgjRFMtMzcwMCkgKi9cbiAgICBAT3V0cHV0KCdmaWxlUXVldWVDaGFuZ2VkJykgZmlsZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxLYnFGaWxlSXRlbVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxRmlsZUl0ZW1bXT4oKTtcbiAgICAvKipcbiAgICAgKiBFbWl0cyBhbiBldmVudCBjb250YWluaW5nIGEgY2h1bmsgb2YgZmlsZXMgYWRkZWQgdG8gdGhlIGZpbGUgbGlzdC5cbiAgICAgKiBVc2VmdWwgd2hlbiBoYW5kbGluZyBhZGRlZCBmaWxlcywgc2tpcHBpbmcgZmlsdGVyaW5nIGZpbGUgbGlzdC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZmlsZXNBZGRlZDogRXZlbnRFbWl0dGVyPEticUZpbGVJdGVtW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFGaWxlSXRlbVtdPigpO1xuICAgIC8qKlxuICAgICAqIEVtaXRzIGFuIGV2ZW50IGNvbnRhaW5pbmcgYSB0dXBsZSBvZiBmaWxlIGFuZCBmaWxlJ3MgaW5kZXggd2hlbiByZW1vdmVkIGZyb20gdGhlIGZpbGUgbGlzdC5cbiAgICAgKiBVc2VmdWwgd2hlbiBoYW5kbGUgcmVtb3ZlZCBmaWxlcywgc2tpcHBpbmcgZmlsdGVyaW5nIGZpbGUgbGlzdC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgZmlsZVJlbW92ZWQ6IEV2ZW50RW1pdHRlcjxbS2JxRmlsZUl0ZW0sIG51bWJlcl0+ID0gbmV3IEV2ZW50RW1pdHRlcjxbS2JxRmlsZUl0ZW0sIG51bWJlcl0+KCk7XG5cbiAgICAvKiogRmlsZSBJY29uIFRlbXBsYXRlICovXG4gICAgQENvbnRlbnRDaGlsZCgna2JxRmlsZUljb24nLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pIGN1c3RvbUZpbGVJY29uOiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0JykgaW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oS2JxSGludCkgcHJvdGVjdGVkIHJlYWRvbmx5IGhpbnQ6IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgaGFzRm9jdXMgPSBmYWxzZTtcbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGNvbHVtbkRlZnM6IHsgaGVhZGVyOiBzdHJpbmc7IGNzc0NsYXNzOiBzdHJpbmcgfVtdO1xuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgY29uZmlnOiBLYnFJbnB1dEZpbGVNdWx0aXBsZUxhYmVsO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBzZXBhcmF0ZWRDYXB0aW9uVGV4dDogc3RyaW5nW107XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBzZXBhcmF0ZWRDYXB0aW9uVGV4dFdoZW5TZWxlY3RlZDogc3RyaW5nW107XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBzZXBhcmF0ZWRDYXB0aW9uVGV4dEZvckNvbXBhY3RTaXplOiBzdHJpbmdbXTtcblxuICAgIC8qKiBjdmFPbkNoYW5nZSBmdW5jdGlvbiByZWdpc3RlcmVkIHZpYSByZWdpc3Rlck9uQ2hhbmdlIChDb250cm9sVmFsdWVBY2Nlc3NvcikuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIGN2YU9uQ2hhbmdlID0gKF86IEticUZpbGVJdGVtW10pID0+IHt9O1xuXG4gICAgLyoqIG9uVG91Y2ggZnVuY3Rpb24gcmVnaXN0ZXJlZCB2aWEgcmVnaXN0ZXJPblRvdWNoIChDb250cm9sVmFsdWVBY2Nlc3NvcikuXG4gICAgICogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBnZXQgYWNjZXB0ZWRGaWxlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hY2NlcHQ/LmpvaW4oJywnKSB8fCAnKi8qJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYEZvcm1Db250cm9sLmVycm9yc2BcbiAgICAgKi9cbiAgICBnZXQgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lcnJvcnMgJiYgISF0aGlzLmVycm9ycy5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBnZXQgaGFzSGludCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGludC5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyBhbiBpbnZhbGlkIHN0YXRlIGJhc2VkIG9uIGBlcnJvclN0YXRlYCxcbiAgICAgKiBhcHBseWluZyBhIENTUyBjbGFzcyBpbiBIVE1MIGZvciB2aXN1YWwgZmVlZGJhY2suXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lcnJvclN0YXRlO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcmVhZG9ubHkgY29uZmlndXJhdGlvbiA9IGluamVjdDxLYnFJbnB1dEZpbGVNdWx0aXBsZUxhYmVsPihLQlFfRklMRV9VUExPQURfQ09ORklHVVJBVElPTiwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubG9jYWxlU2VydmljZT8uY2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUodGhpcy51cGRhdGVMb2NhbGVQYXJhbXMpO1xuXG4gICAgICAgIGlmICghdGhpcy5sb2NhbGVTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLmluaXREZWZhdWx0UGFyYW1zKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIC8vIE5vdGU6IHdlIHByb3ZpZGUgdGhlIHZhbHVlIGFjY2Vzc29yIHRocm91Z2ggaGVyZSwgaW5zdGVhZCBvZlxuICAgICAgICAgICAgLy8gdGhlIGBwcm92aWRlcnNgIHRvIGF2b2lkIHJ1bm5pbmcgaW50byBhIGNpcmN1bGFyIGltcG9ydC5cbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICAvLyBGb3JtQ29udHJvbCBzcGVjaWZpYyBlcnJvcnMgdXBkYXRlXG4gICAgICAgIHRoaXMubmdDb250cm9sPy5zdGF0dXNDaGFuZ2VzPy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lcnJvcnMgPSBPYmplY3QudmFsdWVzKHRoaXMubmdDb250cm9sPy5lcnJvcnMgfHwge30pO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKSk7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhpcyBvbiBldmVyeSBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLCBiZWNhdXNlIHRoZXJlIGFyZSBzb21lXG4gICAgICAgICAgICAvLyBlcnJvciB0cmlnZ2VycyB0aGF0IHdlIGNhbid0IHN1YnNjcmliZSB0byAoZS5nLiBwYXJlbnQgZm9ybSBzdWJtaXNzaW9ucykuIFRoaXMgbWVhbnNcbiAgICAgICAgICAgIC8vIHRoYXQgd2hhdGV2ZXIgbG9naWMgaXMgaW4gaGVyZSBoYXMgdG8gYmUgc3VwZXIgbGVhbiBvciB3ZSByaXNrIGRlc3Ryb3lpbmcgdGhlIHBlcmZvcm1hbmNlLlxuICAgICAgICAgICAgdGhpcy51cGRhdGVFcnJvclN0YXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICAgKiBAZG9jcy1wcml2YXRlICovXG4gICAgd3JpdGVWYWx1ZShmaWxlczogRmlsZUxpc3QgfCBLYnFGaWxlSXRlbVtdIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbGVzID0gZmlsZXMgaW5zdGFuY2VvZiBGaWxlTGlzdCB8fCAhZmlsZXMgPyB0aGlzLm1hcFRvRmlsZUl0ZW0oZmlsZXMpIDogZmlsZXM7XG4gICAgICAgIHRoaXMuZmlsZXNDaGFuZ2UuZW1pdCh0aGlzLmZpbGVzKTtcbiAgICB9XG5cbiAgICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICAgKiBAZG9jcy1wcml2YXRlICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3ZhT25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICAgKiBAZG9jcy1wcml2YXRlICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29udHJvbC4gSW1wbGVtZW50ZWQgYXMgYSBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgICAqIEBwYXJhbSBpc0Rpc2FibGVkIFdoZXRoZXIgdGhlIGNvbnRyb2wgc2hvdWxkIGJlIGRpc2FibGVkLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25GaWxlU2VsZWN0ZWRWaWFDbGljayh7IHRhcmdldCB9OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZXNUb0FkZCA9IHRoaXMubWFwVG9GaWxlSXRlbSgodGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzKTtcblxuICAgICAgICAvKiBldmVuIGlmIHRoZSB1c2VyIHNlbGVjdHMgdGhlIHNhbWUgZmlsZSxcbiAgICAgICAgICAgICAgICAgdGhlIG9uY2hhbmdlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGV2ZXJ5IHRpbWUgdXNlciBjbGlja3Mgb24gdGhlIGNvbnRyb2wuKi9cbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIG51bGwpO1xuXG4gICAgICAgIHRoaXMuZmlsZXMgPSBbXG4gICAgICAgICAgICAuLi50aGlzLmZpbGVzLFxuICAgICAgICAgICAgLi4uZmlsZXNUb0FkZFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmZpbGVzQWRkZWQuZW1pdChmaWxlc1RvQWRkKTtcbiAgICAgICAgdGhpcy5maWxlc0NoYW5nZS5lbWl0KHRoaXMuZmlsZXMpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgb25GaWxlRHJvcHBlZChmaWxlczogRmlsZUxpc3QgfCBLYnFGaWxlW10pIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVzVG9BZGQgPSB0aGlzLm1hcFRvRmlsZUl0ZW0oZmlsZXMpO1xuXG4gICAgICAgIHRoaXMuZmlsZXMgPSBbXG4gICAgICAgICAgICAuLi50aGlzLmZpbGVzLFxuICAgICAgICAgICAgLi4uZmlsZXNUb0FkZFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmZpbGVzQWRkZWQuZW1pdChmaWxlc1RvQWRkKTtcbiAgICAgICAgdGhpcy5maWxlc0NoYW5nZS5lbWl0KHRoaXMuZmlsZXMpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgZGVsZXRlRmlsZShpbmRleDogbnVtYmVyLCBldmVudD86IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29uc3QgcmVtb3ZlZEZpbGUgPSB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSlbMF07XG5cbiAgICAgICAgdGhpcy5maWxlcyA9IFsuLi50aGlzLmZpbGVzXTtcbiAgICAgICAgdGhpcy5maWxlUmVtb3ZlZC5lbWl0KFtyZW1vdmVkRmlsZSwgaW5kZXhdKTtcbiAgICAgICAgdGhpcy5maWxlc0NoYW5nZS5lbWl0KHRoaXMuZmlsZXMpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9jYWxlUGFyYW1zID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuY29uZmlndXJhdGlvbiB8fCB0aGlzLmxvY2FsZVNlcnZpY2U/LmdldFBhcmFtcygnZmlsZVVwbG9hZCcpLm11bHRpcGxlO1xuXG4gICAgICAgIHRoaXMuY29sdW1uRGVmcyA9IFtcbiAgICAgICAgICAgIHsgaGVhZGVyOiB0aGlzLmNvbmZpZy5ncmlkSGVhZGVycy5maWxlLCBjc3NDbGFzczogJ2ZpbGUnIH0sXG4gICAgICAgICAgICB7IGhlYWRlcjogdGhpcy5jb25maWcuZ3JpZEhlYWRlcnMuc2l6ZSwgY3NzQ2xhc3M6ICdzaXplJyB9LFxuICAgICAgICAgICAgeyBoZWFkZXI6ICcnLCBjc3NDbGFzczogJ2FjdGlvbicgfVxuICAgICAgICBdO1xuXG4gICAgICAgIHRoaXMuZ2V0Q2FwdGlvblRleHQoKTtcblxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBtYXBUb0ZpbGVJdGVtKGZpbGVzOiBGaWxlTGlzdCB8IEticUZpbGVbXSB8IG51bGwpOiBLYnFGaWxlSXRlbVtdIHtcbiAgICAgICAgaWYgKCFmaWxlcykge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZmlsZXMpXG4gICAgICAgICAgICAuZmlsdGVyKChmaWxlKSA9PiBpc0NvcnJlY3RFeHRlbnNpb24oZmlsZSwgdGhpcy5hY2NlcHQpKVxuICAgICAgICAgICAgLm1hcCgoZmlsZTogRmlsZSkgPT4gKHtcbiAgICAgICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgICAgIGhhc0Vycm9yOiB0aGlzLnZhbGlkYXRlRmlsZShmaWxlKSxcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKSxcbiAgICAgICAgICAgICAgICBwcm9ncmVzczogbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApXG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUZpbGUoZmlsZTogRmlsZSk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRoaXMuY3VzdG9tVmFsaWRhdGlvbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlcnJvcnNQZXJGaWxlID0gdGhpcy5jdXN0b21WYWxpZGF0aW9uXG4gICAgICAgICAgICAucmVkdWNlKChlcnJvcnM6IChzdHJpbmcgfCBudWxsKVtdLCB2YWxpZGF0b3JGbjogS2JxRmlsZVZhbGlkYXRvckZuKSA9PiB7XG4gICAgICAgICAgICAgICAgZXJyb3JzLnB1c2godmFsaWRhdG9yRm4oZmlsZSkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICAgICAgICAgIH0sIFtdKVxuICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKSBhcyBzdHJpbmdbXTtcblxuICAgICAgICB0aGlzLmVycm9ycyA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMuZXJyb3JzLFxuICAgICAgICAgICAgLi4uZXJyb3JzUGVyRmlsZVxuICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiAhIWVycm9yc1BlckZpbGUubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdERlZmF1bHRQYXJhbXMoKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gS0JRX01VTFRJUExFX0ZJTEVfVVBMT0FEX0RFRkFVTFRfQ09ORklHVVJBVElPTjtcblxuICAgICAgICB0aGlzLmNvbHVtbkRlZnMgPSBbXG4gICAgICAgICAgICB7IGhlYWRlcjogdGhpcy5jb25maWcuZ3JpZEhlYWRlcnMuZmlsZSwgY3NzQ2xhc3M6ICdmaWxlJyB9LFxuICAgICAgICAgICAgeyBoZWFkZXI6IHRoaXMuY29uZmlnLmdyaWRIZWFkZXJzLnNpemUsIGNzc0NsYXNzOiAnc2l6ZScgfSxcbiAgICAgICAgICAgIHsgaGVhZGVyOiAnJywgY3NzQ2xhc3M6ICdhY3Rpb24nIH1cbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmdldENhcHRpb25UZXh0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDYXB0aW9uVGV4dCgpIHtcbiAgICAgICAgdGhpcy5zZXBhcmF0ZWRDYXB0aW9uVGV4dCA9IHRoaXMuY29uZmlnLmNhcHRpb25UZXh0LnNwbGl0KCd7eyBicm93c2VMaW5rIH19Jyk7XG4gICAgICAgIHRoaXMuc2VwYXJhdGVkQ2FwdGlvblRleHRXaGVuU2VsZWN0ZWQgPSB0aGlzLmNvbmZpZy5jYXB0aW9uVGV4dFdoZW5TZWxlY3RlZC5zcGxpdCgne3sgYnJvd3NlTGluayB9fScpO1xuICAgICAgICB0aGlzLnNlcGFyYXRlZENhcHRpb25UZXh0Rm9yQ29tcGFjdFNpemUgPSB0aGlzLmNvbmZpZy5jYXB0aW9uVGV4dEZvckNvbXBhY3RTaXplLnNwbGl0KCd7eyBicm93c2VMaW5rIH19Jyk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGticUZpbGVEcm9wXG4gICAgY2xhc3M9XCJrYnEtZmlsZS11cGxvYWRcIlxuICAgIFtjbGFzcy5rYnEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtjbGFzcy5rYnEtZXJyb3JdPVwiaW52YWxpZFwiXG4gICAgW2NsYXNzLnNlbGVjdGVkXT1cImZpbGVzPy5sZW5ndGhcIlxuICAgIFtuZ0NsYXNzXT1cInNpemVcIlxuICAgIChmaWxlc0Ryb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCJcbj5cbiAgICBAaWYgKCFmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3B6b25lXCI+XG4gICAgICAgICAgICBAaWYgKHNpemUgPT09ICdkZWZhdWx0Jykge1xuICAgICAgICAgICAgICAgIDxpIGNvbG9yPVwiY29udHJhc3QtZmFkZVwiIGticS1pY29uPVwia2JxLWNsb3VkLWFycm93LXVwLW9fMzJcIj48L2k+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3B6b25lX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXVsdGlwbGVfX2hlYWRlclwiPnt7IGNvbmZpZy50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gcHJldHRpZXItaWdub3JlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdWx0aXBsZV9fY2FwdGlvblwiPnt7IHNlcGFyYXRlZENhcHRpb25UZXh0WzBdIH19PGxhYmVsIGticS1saW5rIHBzZXVkbyBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbdGFiSW5kZXhdPVwiLTFcIiBbZm9yXT1cImlucHV0SWRcIj57eyBjb25maWcuYnJvd3NlTGluayB9fTxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFRlbXBsYXRlXCIgLz48L2xhYmVsPnt7IHNlcGFyYXRlZENhcHRpb25UZXh0WzFdIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxpIGNvbG9yPVwiY29udHJhc3QtZmFkZVwiIGticS1pY29uPVwia2JxLWNsb3VkLWFycm93LXVwLW9fMjRcIj48L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wem9uZV9fdGV4dCBtdWx0aXBsZV9fY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBzZXBhcmF0ZWRDYXB0aW9uVGV4dEZvckNvbXBhY3RTaXplWzBdIH19XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBrYnEtbGluayBwc2V1ZG8gW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW2Zvcl09XCJpbnB1dElkXCIgW3RhYkluZGV4XT1cIi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb25maWcuYnJvd3NlTGluayB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICB7eyBzZXBhcmF0ZWRDYXB0aW9uVGV4dEZvckNvbXBhY3RTaXplWzFdIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtdXBsb2FkX19kcm9wem9uZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1maWxlLXVwbG9hZF9fZ3JpZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtZmlsZS1tdWx0aXBsZS11cGxvYWRlZF9faGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtZmlsZS1tdWx0aXBsZS11cGxvYWRlZF9faGVhZGVyLWlubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uRGVmczsgdHJhY2sgY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ2ticS1maWxlLXVwbG9hZF9fJyArIGNvbHVtbi5jc3NDbGFzc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2x1bW4uaGVhZGVyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxrYnEtbGlzdC1zZWxlY3Rpb24gW2F1dG9TZWxlY3RdPVwiZmFsc2VcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoZmlsZSBvZiBmaWxlczsgdHJhY2sgZmlsZTsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8a2JxLWxpc3Qtb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXBsZV9fdXBsb2FkZWQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImZpbGUuZmlsZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5iYWNrc3BhY2UpPVwiZGVsZXRlRmlsZShpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmRlbGV0ZSk9XCJkZWxldGVGaWxlKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1maWxlLXVwbG9hZF9fcm93XCIgW2NsYXNzLmVycm9yXT1cImZpbGUuaGFzRXJyb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1maWxlLXVwbG9hZF9fZmlsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxvYWRpbmc6IGZpbGUubG9hZGluZyB8IGFzeW5jLCBwcm9ncmVzczogZmlsZS5wcm9ncmVzcyB8IGFzeW5jIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgYXN5bmNEYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFhc3luY0RhdGEubG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGN1c3RvbUZpbGVJY29uKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGZpbGUgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYXN5bmNEYXRhLmxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGticS1wcm9ncmVzcy1zcGlubmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImticS1maWxlLXVwbG9hZC1uYW1lLWNlbGxfX2ljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwicHJvZ3Jlc3NNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhc3luY0RhdGEucHJvZ3Jlc3MgfHwgMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpbGUtaXRlbV9fdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ticUVsbGlwc2lzQ2VudGVyXT1cImZpbGUuZmlsZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluVmlzaWJsZUxlbmd0aF09XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1maWxlLXVwbG9hZF9fc2l6ZVwiPnt7IGZpbGUuZmlsZS5zaXplIHwga2JxRGF0YVNpemUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImticS1maWxlLXVwbG9hZF9fYWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBrYnEtaWNvbi1idXR0b249XCJrYnEteG1hcmstY2lyY2xlXzE2XCIgKGNsaWNrKT1cImRlbGV0ZUZpbGUoaW5kZXgsICRldmVudClcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9rYnEtbGlzdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2ticS1saXN0LXNlbGVjdGlvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi11cGxvYWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcHpvbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkga2JxLWljb249XCJrYnEtY2xvdWQtYXJyb3ctdXAtb18yNFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wem9uZV9fdGV4dCBtdWx0aXBsZV9fY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc2VwYXJhdGVkQ2FwdGlvblRleHRXaGVuU2VsZWN0ZWRbMF0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBrYnEtbGluayBwc2V1ZG8gW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW2Zvcl09XCJpbnB1dElkXCIgW3RhYkluZGV4XT1cIi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29uZmlnLmJyb3dzZUxpbmsgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRUZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgc2VwYXJhdGVkQ2FwdGlvblRleHRXaGVuU2VsZWN0ZWRbMV0gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZGl2PlxuXG5AaWYgKGhhc0hpbnQpIHtcbiAgICA8ZGl2IGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkX19oaW50XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImticS1oaW50XCIgLz5cbiAgICA8L2Rpdj5cbn1cblxuPG5nLXRlbXBsYXRlICNpbnB1dFRlbXBsYXRlPlxuICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICBjbGFzcz1cImNkay12aXN1YWxseS1oaWRkZW5cIlxuICAgICAgICBbYWNjZXB0XT1cImFjY2VwdGVkRmlsZXNcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWRWaWFDbGljaygkZXZlbnQpXCJcbiAgICAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|