@ti-tecnologico-de-monterrey-oficial/ds-ng 1.5.1317-c → 1.5.1317-e

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.
Files changed (68) hide show
  1. package/assets/i18n/en.json +33 -1
  2. package/assets/i18n/es.json +34 -2
  3. package/assets/styles/main.min.css +1 -1
  4. package/assets/styles/main.min.css.map +1 -1
  5. package/assets/styles/micro.min.css +1 -0
  6. package/assets/styles/micro.min.css.map +1 -0
  7. package/esm2022/assets/i18n/en.json +33 -1
  8. package/esm2022/assets/i18n/es.json +34 -2
  9. package/esm2022/lib/components/bmb-account-statement/bmb-account-statement.component.mjs +2 -2
  10. package/esm2022/lib/components/bmb-calendar/bmb-calendar.component.mjs +9 -4
  11. package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-mobile/bmb-calendar-template-mobile.component.mjs +13 -8
  12. package/esm2022/lib/components/bmb-check-external-link-button/bmb-check-external-link-button.component.mjs +3 -3
  13. package/esm2022/lib/components/bmb-checkbox/bmb-checkbox.component.mjs +1 -1
  14. package/esm2022/lib/components/bmb-datepicker/bmb-datepicker.component.mjs +2 -2
  15. package/esm2022/lib/components/bmb-digital-id/bmb-digital-id.component.mjs +2 -2
  16. package/esm2022/lib/components/bmb-dropdown/bmb-dropdown.component.mjs +4 -2
  17. package/esm2022/lib/components/bmb-dropzone/bmb-dropzone.component.mjs +177 -91
  18. package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.component.mjs +2 -2
  19. package/esm2022/lib/components/bmb-input/bmb-input-validator/bmb-input-validator.component.mjs +3 -2
  20. package/esm2022/lib/components/bmb-input/bmb-input.component.mjs +2 -2
  21. package/esm2022/lib/components/bmb-input-phone-number/bmb-input-phone-number.component.mjs +2 -2
  22. package/esm2022/lib/components/bmb-input-tags/bmb-input-tags.component.mjs +2 -2
  23. package/esm2022/lib/components/bmb-portal/bmb-projected-content/bmb-projected-content.component.mjs +2 -2
  24. package/esm2022/lib/components/bmb-progress-bar/bmb-progress-bar.component.mjs +30 -9
  25. package/esm2022/lib/components/bmb-radial/bmb-radial.component.mjs +1 -1
  26. package/esm2022/lib/components/bmb-search-input/bmb-search-input.component.mjs +1 -1
  27. package/esm2022/lib/components/bmb-switch/bmb-switch.component.mjs +5 -7
  28. package/esm2022/lib/components/bmb-tables/bmb-tables.component.mjs +66 -8
  29. package/esm2022/lib/components/bmb-text-editor/bmb-text-editor-prompt/bmb-text-editor-prompt.component.mjs +51 -0
  30. package/esm2022/lib/components/bmb-text-editor/bmb-text-editor.component.mjs +66 -24
  31. package/esm2022/lib/components/bmb-text-link/bmb-text-link.component.mjs +11 -17
  32. package/esm2022/lib/components/bmb-value-counter/bmb-value-counter.component.mjs +33 -15
  33. package/esm2022/lib/components/utils/bmb-dropdown-content/bmb-dropdown-content.component.mjs +9 -3
  34. package/esm2022/lib/directives/bmb-layout/bmb-layout-item.directive.mjs +2 -2
  35. package/esm2022/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive.mjs +6 -3
  36. package/esm2022/lib/services/projection/projection.service.mjs +1 -1
  37. package/esm2022/lib/utils/formControl.mjs +6 -4
  38. package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +712 -387
  39. package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs.map +1 -1
  40. package/lib/components/bmb-dropdown/bmb-dropdown.component.d.ts +3 -2
  41. package/lib/components/bmb-dropzone/bmb-dropzone.component.d.ts +39 -20
  42. package/lib/components/bmb-input/bmb-input-validator/bmb-input-validator.component.d.ts +3 -2
  43. package/lib/components/bmb-progress-bar/bmb-progress-bar.component.d.ts +8 -2
  44. package/lib/components/bmb-tables/bmb-tables.component.d.ts +8 -1
  45. package/lib/components/bmb-text-editor/bmb-text-editor-prompt/bmb-text-editor-prompt.component.d.ts +13 -0
  46. package/lib/components/bmb-text-editor/bmb-text-editor.component.d.ts +10 -4
  47. package/lib/components/bmb-text-link/bmb-text-link.component.d.ts +1 -2
  48. package/lib/components/bmb-value-counter/bmb-value-counter.component.d.ts +10 -4
  49. package/lib/components/utils/bmb-dropdown-content/bmb-dropdown-content.component.d.ts +2 -1
  50. package/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive.d.ts +2 -1
  51. package/lib/utils/formControl.d.ts +2 -2
  52. package/package.json +4 -4
  53. package/esm2022/lib/services/calendar.service.mjs +0 -51
  54. package/esm2022/lib/services/index.mjs +0 -3
  55. package/esm2022/lib/services/native-modal.service.mjs +0 -60
  56. package/esm2022/lib/services/notification.service.mjs +0 -84
  57. package/esm2022/lib/services/projection.service.mjs +0 -49
  58. package/esm2022/lib/services/tabs.service.mjs +0 -30
  59. package/esm2022/lib/services/theme.service.mjs +0 -30
  60. package/esm2022/lib/services/toast.service.mjs +0 -24
  61. package/lib/services/calendar.service.d.ts +0 -15
  62. package/lib/services/index.d.ts +0 -2
  63. package/lib/services/native-modal.service.d.ts +0 -18
  64. package/lib/services/notification.service.d.ts +0 -20
  65. package/lib/services/projection.service.d.ts +0 -31
  66. package/lib/services/tabs.service.d.ts +0 -13
  67. package/lib/services/theme.service.d.ts +0 -11
  68. package/lib/services/toast.service.d.ts +0 -9
@@ -1,24 +1,29 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, input, output, ViewEncapsulation, } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, input, model, output, ViewEncapsulation, } from '@angular/core';
3
3
  import { BmbIconComponent } from '../bmb-icon/bmb-icon.component';
4
4
  import { BmbTextLinkComponent } from '../bmb-text-link/bmb-text-link.component';
5
- import { BmbCardComponent, BmbCardContentComponent, } from '../bmb-card/bmb-card.component';
6
5
  import { BmbProgressBarComponent } from '../bmb-progress-bar/bmb-progress-bar.component';
7
6
  import { getUUID } from '../../utils/utils';
8
7
  import { TranslatePipe } from '../../pipes/translations';
8
+ import { BmbVerticalLayoutDirective } from '../../directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout.directive';
9
+ import { BmbVerticalLayoutItemDirective } from '../../directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive';
10
+ import { FormsModule, ReactiveFormsModule, } from '@angular/forms';
11
+ import { assignNewFormControl, handleValidity, newFormControlByType, } from '../../utils/formControl';
12
+ import { BmbInputValidatorComponent } from '../bmb-input/bmb-input-validator/bmb-input-validator.component';
9
13
  import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/common";
14
+ import * as i1 from "../../services/translations/translations.service";
15
+ import * as i2 from "@angular/common";
11
16
  export class BmbDropzoneComponent {
12
- constructor(cdr) {
17
+ constructor(cdr, translationService) {
13
18
  this.cdr = cdr;
19
+ this.translationService = translationService;
14
20
  this.appearanceContrast = input('default');
15
21
  this.acceptedExtensions = input.required();
16
22
  this.dropInstruction = input();
17
23
  this.dropLabel = input();
18
- this.errorMessage = input();
24
+ this.errorMessage = input(); //Deprecated
19
25
  this.errorMessageFormat = input();
20
26
  this.errorMessageSize = input();
21
- this.fileDataList = [];
22
27
  this.fileSize = input(2);
23
28
  this.formatFilesLabel = input();
24
29
  this.linkFilesSupported = input('');
@@ -27,9 +32,19 @@ export class BmbDropzoneComponent {
27
32
  this.multiple = input(false);
28
33
  this.name = input(getUUID());
29
34
  this.progress = input({});
35
+ this.inputId = input(this.name());
36
+ this.customValidation = input();
37
+ this.control = model(newFormControlByType('file', this.multiple()));
30
38
  this.newFile = output();
31
39
  this.fileRemoved = output();
32
- this.validFile = true;
40
+ this.fileDataList = [];
41
+ this.isControlNull = false;
42
+ }
43
+ ngOnInit() {
44
+ if (!this.control()) {
45
+ this.control.set(assignNewFormControl(this.name(), this.control(), 'file', this.multiple()));
46
+ this.isControlNull = true;
47
+ }
33
48
  }
34
49
  ngOnChanges(changes) {
35
50
  if (changes['progress'] ||
@@ -38,53 +53,86 @@ export class BmbDropzoneComponent {
38
53
  this.cdr.detectChanges();
39
54
  }
40
55
  }
41
- onFileSelected(event) {
42
- this.input = event.target;
43
- if (this.input.files?.[0]) {
44
- const files = this.input.files;
45
- if (files && files.length > 0) {
46
- this.getFileAndValidate(this.multiple() ? Array.from(files) : files[0]);
47
- }
56
+ getDropZoneClass() {
57
+ const classList = [];
58
+ if (this.isErrorFiles()) {
59
+ classList.push('bmb_drop-zone-container-error');
48
60
  }
49
- }
50
- isValidFileType(fileType, fileName) {
51
- if (this.acceptedExtensions().some((element) => element.includes('/'))) {
52
- const types = this.acceptedExtensions().filter((element) => element.endsWith('/*'));
53
- if (!!types.length &&
54
- types.some((element) => element.substring(0, element.length - 2) ===
55
- fileType.substring(0, element.length - 2))) {
56
- return true;
61
+ else {
62
+ if (!!this.fileDataList.length &&
63
+ this.fileDataList?.some((file) => this.isUploadInProgress(file))) {
64
+ classList.push('bmb_drop-zone-container-uploading-file');
57
65
  }
58
- else {
59
- if (this.acceptedExtensions().includes(fileType))
60
- return true;
66
+ if (this.appearanceContrast() === 'primary') {
67
+ classList.push('bmb-drop-zone-container-primary');
68
+ }
69
+ if (this.appearanceContrast() === 'alternative') {
70
+ classList.push('bmb-drop-zone-container-alternative');
61
71
  }
62
72
  }
63
- if (this.acceptedExtensions().includes(fileName.substring(fileName.lastIndexOf('.') + 1)))
64
- return true;
65
- return false;
73
+ return classList;
74
+ }
75
+ get errorMessageLabel() {
76
+ return `${this.isFormatErrorFiles()
77
+ ? (this.errorMessageFormat() ||
78
+ this.translationService.translate('dropzone.error_message_format')).concat('* ')
79
+ : ''}${this.isFormatErrorFiles()
80
+ ? (this.errorMessageSize() ||
81
+ this.translationService.translate('dropzone.error_message_size')).concat('MB*')
82
+ : ''}`;
83
+ }
84
+ getAvatarIcon(file) {
85
+ if (this.getProgress(file) === 100)
86
+ return 'upload_file';
87
+ if (file.error)
88
+ return 'task';
89
+ return 'progress_activity';
90
+ }
91
+ getFileName(file) {
92
+ return this.isFormatError(file) ? file.name.concat('*') : file.name;
93
+ }
94
+ getFormatProgress(value, total) {
95
+ return `${value}%/${total}%`;
96
+ }
97
+ getFormatSize(_, total) {
98
+ return `${Intl.NumberFormat('en-US', {
99
+ minimumFractionDigits: 2,
100
+ }).format(Number(total))}MB`;
101
+ }
102
+ getFormatSizeError(_, total) {
103
+ return `${Intl.NumberFormat('en-US', {
104
+ minimumFractionDigits: 2,
105
+ }).format(Number(total))}MB*`;
66
106
  }
67
107
  getFileSizeInMB(fileSize) {
68
108
  return fileSize / 1048576;
69
109
  }
70
- isValidFileSize(fileSize) {
71
- return this.getFileSizeInMB(fileSize) <= this.fileSize();
110
+ getProgress(file) {
111
+ const progress = this.progress();
112
+ if (file.error)
113
+ return 0;
114
+ if (typeof progress === 'number')
115
+ return progress;
116
+ return progress?.[file.name] ?? 0;
72
117
  }
73
- isFileDuplicate(fileName) {
74
- return this.fileDataList.some((existing) => existing.name === fileName);
118
+ get organizedFiles() {
119
+ if (this.fileDataList.some((file) => file.error)) {
120
+ return this.fileDataList.sort((file1, file2) => (Number(file1.error) - Number(file2.error)) * -1);
121
+ }
122
+ return this.fileDataList;
75
123
  }
76
124
  getFileAndValidate(file) {
77
- const filesArray = Array.isArray(file) ? file : [file];
125
+ const fileList = Array.isArray(file) ? file : [file];
78
126
  const validFiles = [];
79
127
  if (!this.multiple()) {
80
128
  this.fileDataList = [];
81
129
  }
82
- for (const singleFile of filesArray) {
130
+ for (const singleFile of fileList) {
83
131
  if (this.isFileDuplicate(singleFile.name)) {
84
132
  continue;
85
133
  }
86
134
  const fileValidation = {
87
- isValidFormat: this.isValidFileType(singleFile.type, singleFile.name),
135
+ isValidFormat: this.isValidFileFormat(singleFile.type, singleFile.name),
88
136
  isValidSize: this.isValidFileSize(singleFile.size),
89
137
  };
90
138
  const fileData = {
@@ -98,95 +146,133 @@ export class BmbDropzoneComponent {
98
146
  validFiles.push(singleFile);
99
147
  }
100
148
  if (!!validFiles.length) {
101
- this.newFile.emit(this.multiple() ? validFiles : validFiles[0]);
102
- }
103
- else {
104
- this.onErrorFile();
149
+ if (this.multiple()) {
150
+ this.control().patchValue(validFiles.map((_file) => _file.name));
151
+ this.control().updateValueAndValidity();
152
+ this.newFile.emit(validFiles);
153
+ }
154
+ else {
155
+ const _file = validFiles[0];
156
+ this.control().patchValue(_file.name);
157
+ this.control().updateValueAndValidity();
158
+ this.newFile.emit(_file);
159
+ }
105
160
  }
106
161
  }
107
- removeFile(fileName) {
108
- this.fileDataList = this.fileDataList.filter((file) => file.name !== fileName);
109
- const hasFormatErrorsOnly = this.fileDataList.some((file) => file.error && file.errorType === 'format');
110
- this.validFile = this.fileDataList.length > 0 && !hasFormatErrorsOnly;
111
- if (this.fileDataList.length === 0 && this.input) {
112
- this.input.value = '';
162
+ isValidFileFormat(fileType, fileName) {
163
+ if (this.acceptedExtensions().some((element) => element.includes('/'))) {
164
+ const types = this.acceptedExtensions().filter((element) => element.endsWith('/*'));
165
+ if (!!types.length &&
166
+ types.some((element) => element.substring(0, element.length - 2) ===
167
+ fileType.substring(0, element.length - 2))) {
168
+ return true;
169
+ }
170
+ else {
171
+ if (this.acceptedExtensions().includes(fileType))
172
+ return true;
173
+ }
113
174
  }
114
- this.fileRemoved.emit(fileName);
175
+ if (this.acceptedExtensions().includes(fileName.substring(fileName.lastIndexOf('.') + 1)))
176
+ return true;
177
+ return false;
178
+ }
179
+ isValidFileSize(fileSize) {
180
+ return this.getFileSizeInMB(fileSize) <= this.fileSize();
181
+ }
182
+ isFileDuplicate(fileName) {
183
+ return this.fileDataList.some((existing) => existing.name === fileName);
184
+ }
185
+ isUploadInProgress(file) {
186
+ return !file.error && this.getProgress(file) < 100;
187
+ }
188
+ isUploadCompleted(file) {
189
+ return !file.error && this.getProgress(file) === 100;
190
+ }
191
+ isErrorFiles() {
192
+ return this.fileDataList.some((file) => file.error);
193
+ }
194
+ isFormatError(file) {
195
+ return (file.error && file.errorType === 'format') || false;
115
196
  }
116
- onErrorFile() {
117
- this.input && (this.input.value = '');
118
- this.validFile = false;
197
+ isFormatErrorFiles() {
198
+ return this.fileDataList.some((file) => this.isFormatError(file));
119
199
  }
120
- onDragOver(event) {
121
- this.validFile = true;
200
+ isSizeError(file) {
201
+ return (file.error && file.errorType === 'size') || false;
202
+ }
203
+ isSizeErrorFiles() {
204
+ return this.fileDataList.some((file) => this.isSizeError(file));
205
+ }
206
+ handleDragOver(event) {
122
207
  event.preventDefault();
123
208
  event.stopPropagation();
124
209
  const dropzoneElement = event.currentTarget;
125
- dropzoneElement.classList.add('bmb-drop-zone-drag-over');
210
+ dropzoneElement.classList.add('bmb_drop-zone-container-uploading-file');
126
211
  }
127
- onDragLeave(event) {
212
+ handleDragLeave(event) {
128
213
  event.preventDefault();
129
214
  event.stopPropagation();
130
215
  const dropzoneElement = event.currentTarget;
131
- dropzoneElement.classList.remove('bmb-drop-zone-drag-over');
216
+ dropzoneElement.classList.remove('bmb_drop-zone-container-uploading-file');
132
217
  }
133
- onDrop(event) {
218
+ handleDrop(event) {
134
219
  event.preventDefault();
135
220
  event.stopPropagation();
136
221
  const dropzoneElement = event.currentTarget;
137
222
  dropzoneElement.classList.add('bmb-drop-zone');
138
- dropzoneElement.classList.remove('bmb-drop-zone-drag-over');
223
+ dropzoneElement.classList.remove('bmb_drop-zone-container-uploading-file');
139
224
  const files = event.dataTransfer?.files;
140
- if (files && files.length > 0) {
225
+ if (files && !!files.length) {
141
226
  this.getFileAndValidate(this.multiple() ? Array.from(files) : files[0]);
142
227
  }
143
228
  }
144
- getProgress(fileName) {
145
- const progress = this.progress();
146
- if (typeof progress === 'number')
147
- return progress;
148
- return progress?.[fileName] ?? 0;
229
+ handleFileSelected(event) {
230
+ const _input = event.target;
231
+ if (_input.files?.[0]) {
232
+ const files = _input.files;
233
+ if (files && !!files.length) {
234
+ this.getFileAndValidate(this.multiple() ? Array.from(files) : files[0]);
235
+ }
236
+ }
149
237
  }
150
- isInvalidFileOnly() {
151
- return this.fileDataList.some((file) => file.error && file.errorType === 'format');
238
+ handleRemoveFile(fileName) {
239
+ this.fileDataList = this.fileDataList.filter((file) => file.name !== fileName);
240
+ if (this.multiple()) {
241
+ const _fileNames = this.control().value;
242
+ this.control().patchValue(Array.from(_fileNames).filter((_fileName) => _fileName !== fileName));
243
+ this.control().updateValueAndValidity();
244
+ }
245
+ else {
246
+ const _fileName = this.control().value;
247
+ this.control().patchValue(_fileName === fileName ? null : _fileName);
248
+ this.control().updateValueAndValidity();
249
+ }
250
+ this.fileRemoved.emit(fileName);
251
+ }
252
+ handleValidity() {
253
+ handleValidity(this.control());
152
254
  }
153
255
  reset() {
154
256
  this.fileDataList = [];
155
- this.validFile = true;
156
- if (this.input) {
157
- this.input.value = '';
158
- }
257
+ this.control().patchValue(this.multiple() ? [null] : null);
159
258
  this.cdr.detectChanges();
160
259
  }
161
- getDropZoneClass() {
162
- const classList = [];
163
- if (this.isInvalidFileOnly()) {
164
- classList.push('bmb-drop-zone-error');
165
- }
166
- if (this.fileDataList.length > 0 && !!this.fileDataList[0].name) {
167
- classList.push('bmb-drop-zone-drag-over');
168
- }
169
- if (this.appearanceContrast() === 'primary') {
170
- classList.push('bmb-drop-zone-container-primary');
171
- }
172
- if (this.appearanceContrast() === 'alternative') {
173
- classList.push('bmb-drop-zone-container-alternative');
174
- }
175
- return classList;
176
- }
177
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbDropzoneComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
178
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BmbDropzoneComponent, isStandalone: true, selector: "bmb-dropzone", inputs: { appearanceContrast: { classPropertyName: "appearanceContrast", publicName: "appearanceContrast", isSignal: true, isRequired: false, transformFunction: null }, acceptedExtensions: { classPropertyName: "acceptedExtensions", publicName: "acceptedExtensions", isSignal: true, isRequired: true, transformFunction: null }, dropInstruction: { classPropertyName: "dropInstruction", publicName: "dropInstruction", isSignal: true, isRequired: false, transformFunction: null }, dropLabel: { classPropertyName: "dropLabel", publicName: "dropLabel", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, errorMessageFormat: { classPropertyName: "errorMessageFormat", publicName: "errorMessageFormat", isSignal: true, isRequired: false, transformFunction: null }, errorMessageSize: { classPropertyName: "errorMessageSize", publicName: "errorMessageSize", isSignal: true, isRequired: false, transformFunction: null }, fileSize: { classPropertyName: "fileSize", publicName: "fileSize", isSignal: true, isRequired: false, transformFunction: null }, formatFilesLabel: { classPropertyName: "formatFilesLabel", publicName: "formatFilesLabel", isSignal: true, isRequired: false, transformFunction: null }, linkFilesSupported: { classPropertyName: "linkFilesSupported", publicName: "linkFilesSupported", isSignal: true, isRequired: false, transformFunction: null }, linkLabel: { classPropertyName: "linkLabel", publicName: "linkLabel", isSignal: true, isRequired: false, transformFunction: null }, mainIcon: { classPropertyName: "mainIcon", publicName: "mainIcon", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, progress: { classPropertyName: "progress", publicName: "progress", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { newFile: "newFile", fileRemoved: "fileRemoved" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"bmb-drop-zone\">\n <section\n class=\"bmb-drop-zone-container\"\n [ngClass]=\"getDropZoneClass()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <div\n class=\"bmb-drop-zone-icon\"\n [ngClass]=\"{\n 'bmb-drop-zone-icon-valid':\n validFile && fileDataList.length > 0 && !!fileDataList[0].name,\n 'bmb-drop-zone-icon-error': isInvalidFileOnly()\n }\"\n >\n <bmb-icon [icon]=\"mainIcon()\" [size]=\"48\" alt=\"Drop zone icon\" />\n </div>\n <p class=\"bmb-drop-zone-label-format\">\n {{ formatFilesLabel() || ('dropzone.format_files_label' | translate) }}\n </p>\n <p class=\"bmb-drop-zone-label-format-instruction\">\n {{ dropInstruction() || ('dropzone.drop_instructions' | translate) }}\n <label class=\"bmb-drop-zone-link\" [htmlFor]=\"name()\">\n {{ dropLabel() || ('dropzone.drop_label' | translate) }}\n </label>\n </p>\n @if (isInvalidFileOnly()) {\n <p class=\"bmb-drop-zone-label-format-error bmb-drop-zone-label-format\">\n {{ errorMessage() || ('dropzone.error_message' | translate) }}\n </p>\n @if (linkFilesSupported()) {\n <bmb-text-link\n textLinkStyle=\"underlined\"\n [link]=\"linkFilesSupported()\"\n [textLink]=\"linkLabel() || ('dropzone.link_label' | translate)\"\n />\n }\n }\n <input\n type=\"file\"\n [id]=\"name()\"\n [name]=\"name()\"\n [accept]=\"acceptedExtensions().toString()\"\n (change)=\"onFileSelected($event)\"\n [multiple]=\"multiple()\"\n style=\"display: none\"\n />\n </section>\n @if (fileDataList.length > 0) {\n @for (file of fileDataList; track file.name) {\n <bmb-card margin=\"none\" type=\"transparent\">\n <bmb-card-content>\n <div\n class=\"bmb-drop-zone-list-files\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-files-loading':\n !file.error && getProgress(file.name) < 100,\n 'bmb-drop-zone-list-files-error': file.error,\n 'bmb-drop-zone-list-files-valid': getProgress(file.name) === 100\n }\"\n >\n <span\n class=\"bmb-drop-zone-list-files-icon\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-files-icon-spin':\n !file.error && getProgress(file.name) < 100\n }\"\n >\n @if (!validFile) {\n <bmb-icon icon=\"upload_file\" [size]=\"24\" />\n } @else if (getProgress(file.name) < 100) {\n <bmb-icon icon=\"progress_activity\" [size]=\"24\" class=\"spin\" />\n } @else if (validFile) {\n <bmb-icon icon=\"task\" [size]=\"24\" />\n }\n </span>\n\n <div class=\"bmb-drop-zone-list-name\">\n <span>{{ file.name }}</span>\n\n <div\n class=\"bmb-drop-zone-list-status\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-status-success':\n getProgress(file.name) === 100\n }\"\n >\n @if (validFile && getProgress(file.name) < 100) {\n <span>{{ getProgress(file.name) }}% / 100%</span>\n }\n\n @if (getProgress(file.name) === 100) {\n {{ file.size.toFixed(2) }} MB\n <bmb-icon\n icon=\"check_circle\"\n [size]=\"24\"\n class=\"success-icon\"\n />\n <ng-container\n *ngTemplateOutlet=\"\n removeButton;\n context: { fileName: file.name }\n \"\n ></ng-container>\n }\n\n @if (file.error) {\n <span>\n @if (file.errorType === 'format') {\n {{\n errorMessageFormat() ||\n ('dropzone.error_message_format' | translate)\n }}\n } @else if (file.errorType === 'size') {\n {{\n errorMessageSize() ||\n ('dropzone.error_message_size' | translate)\n }}\n ({{ file.size.toFixed(2) }} MB)\n }\n </span>\n <ng-container\n *ngTemplateOutlet=\"\n removeButton;\n context: { fileName: file.name }\n \"\n ></ng-container>\n }\n </div>\n\n <ng-template #removeButton let-fileName=\"fileName\">\n <button\n class=\"bmb-drop-zone-list-remove\"\n (click)=\"removeFile(fileName)\"\n type=\"button\"\n >\n <bmb-icon icon=\"delete\" [size]=\"24\" class=\"delete-icon\" />\n </button>\n </ng-template>\n </div>\n\n @if (validFile && getProgress(file.name) < 100) {\n <span class=\"bmb-drop-zone-list-upload\">\n <bmb-progress-bar\n type=\"simple\"\n [counter]=\"getProgress(file.name)\"\n [totalCount]=\"100\"\n />\n </span>\n }\n </div>\n </bmb-card-content>\n </bmb-card>\n }\n }\n</div>\n", styles: ["@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb-drop-zone{color:RGBA(var(--color-charade-500));display:flex;flex-direction:column;gap:var(--bmb-spacing-m);font-family:Poppins-Regular,sans-serif;font-size:.875rem}.bmb-drop-zone-container{align-items:center;border:.125rem dashed var(--general_contrasts-container-outline);border-radius:var(--bmb-radius-s);box-sizing:border-box;display:flex;flex-direction:column;gap:var(--bmb-spacing-m);justify-content:center;padding:var(--bmb-spacing-m) var(--bmb-spacing-l)}.bmb-drop-zone-container-primary{background-color:var(--containers-background)}.bmb-drop-zone-container-alternative{background-color:var(--containers-main)}.bmb-drop-zone-drag-over{background-color:var(--menu_select-on-surface-hovered-w-checkbox);border-color:var(--general_contrasts-main-selection)}.bmb-drop-zone-error{border-color:var(--red-primary);background-color:transparent}.bmb-drop-zone-label-format{margin:0;color:var(--general_contrasts-50)}.bmb-drop-zone-label-format-instruction{color:var(--general_contrasts-100)}.bmb-drop-zone-link{font-family:Poppins-Regular,sans-serif;font-size:.875rem;color:var(--general_contrasts-main-selection);cursor:pointer;text-decoration-line:underline}.bmb-drop-zone-label-format-error{color:var(--red-primary)}.bmb-drop-zone-icon-valid{color:var(--general_contrasts-main-selection)}.bmb-drop-zone-icon-error{color:var(--red-primary)}.bmb-drop-zone-list-files{align-items:center;display:grid;gap:.5rem;grid-template-areas:\"icon name\" \"icon progress\";grid-template-columns:1.5rem 1fr;margin:0}.bmb-drop-zone-list-files-error{color:var(--red-primary);grid-template-areas:\"icon name\"}.bmb-drop-zone-list-files-loading .bmb-drop-zone-list-files-icon{color:var(--general_contrasts-main-selection)}.bmb-drop-zone-list-files-valid{grid-template-areas:\"icon name\"}.bmb-drop-zone-list-files-icon{grid-area:icon;height:1.5rem;width:1.5rem}.bmb-drop-zone-list-files-icon-spin{animation:spin 1s linear infinite}.bmb-drop-zone-list-upload{flex:1;grid-area:progress}.bmb-drop-zone-list-name{align-items:center;display:flex;grid-area:name;justify-content:space-between}.bmb-drop-zone-list-status{align-items:center;display:flex;gap:.5rem}.bmb-drop-zone-list-status-success .success-icon{color:var(--red-primary)}.bmb-drop-zone-list-status .delete-icon{color:var(--general_contrasts-50)}.bmb-drop-zone-list-remove{padding:0;margin:0;height:1.5rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BmbIconComponent, selector: "bmb-icon", inputs: ["icon", "materialIcon", "styleIcon", "isFill", "fontWeight", "size", "alt", "dotNotification"] }, { kind: "component", type: BmbTextLinkComponent, selector: "bmb-text-link", inputs: ["textLink", "textLinkStyle", "target", "icon", "iconPosition", "link", "disabled"] }, { kind: "component", type: BmbCardComponent, selector: "bmb-card", inputs: ["borderRadius", "margin", "type", "state", "boxShadowStyle", "borderColor", "alternative"] }, { kind: "component", type: BmbCardContentComponent, selector: "bmb-card-content", inputs: ["padding", "colorBackground", "setBorderRadius"] }, { kind: "component", type: BmbProgressBarComponent, selector: "bmb-progress-bar", inputs: ["type", "totalCount", "counter", "title", "appearance", "textLink", "href", "target", "textFormat"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
260
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbDropzoneComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.BmbTranslationsService }], target: i0.ɵɵFactoryTarget.Component }); }
261
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BmbDropzoneComponent, isStandalone: true, selector: "bmb-dropzone", inputs: { appearanceContrast: { classPropertyName: "appearanceContrast", publicName: "appearanceContrast", isSignal: true, isRequired: false, transformFunction: null }, acceptedExtensions: { classPropertyName: "acceptedExtensions", publicName: "acceptedExtensions", isSignal: true, isRequired: true, transformFunction: null }, dropInstruction: { classPropertyName: "dropInstruction", publicName: "dropInstruction", isSignal: true, isRequired: false, transformFunction: null }, dropLabel: { classPropertyName: "dropLabel", publicName: "dropLabel", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, errorMessageFormat: { classPropertyName: "errorMessageFormat", publicName: "errorMessageFormat", isSignal: true, isRequired: false, transformFunction: null }, errorMessageSize: { classPropertyName: "errorMessageSize", publicName: "errorMessageSize", isSignal: true, isRequired: false, transformFunction: null }, fileSize: { classPropertyName: "fileSize", publicName: "fileSize", isSignal: true, isRequired: false, transformFunction: null }, formatFilesLabel: { classPropertyName: "formatFilesLabel", publicName: "formatFilesLabel", isSignal: true, isRequired: false, transformFunction: null }, linkFilesSupported: { classPropertyName: "linkFilesSupported", publicName: "linkFilesSupported", isSignal: true, isRequired: false, transformFunction: null }, linkLabel: { classPropertyName: "linkLabel", publicName: "linkLabel", isSignal: true, isRequired: false, transformFunction: null }, mainIcon: { classPropertyName: "mainIcon", publicName: "mainIcon", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, progress: { classPropertyName: "progress", publicName: "progress", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, customValidation: { classPropertyName: "customValidation", publicName: "customValidation", isSignal: true, isRequired: false, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { control: "controlChange", newFile: "newFile", fileRemoved: "fileRemoved" }, usesOnChanges: true, ngImport: i0, template: "<bmb-input-validator\n type=\"file\"\n [name]=\"name()\"\n [control]=\"control()\"\n [inputId]=\"inputId()\"\n [isMultipleFile]=\"multiple()\"\n [customValidation]=\"customValidation()\"\n>\n <section class=\"bmb_drop-zone\" bmbVerticalLayout gapSize=\"l\">\n <section\n class=\"bmb_drop-zone-container\"\n [ngClass]=\"getDropZoneClass()\"\n (dragover)=\"handleDragOver($event)\"\n (dragleave)=\"handleDragLeave($event)\"\n (drop)=\"handleDrop($event)\"\n bmbVerticalLayoutItem\n bmbVerticalLayout\n gapSize=\"m\"\n justify=\"center\"\n alignItems=\"center\"\n >\n <bmb-icon\n class=\"bmb_drop-zone-icon\"\n [ngClass]=\"{\n 'bmb_drop-zone-icon-valid': isErrorFiles(),\n 'bmb_drop-zone-icon-error': isErrorFiles()\n }\"\n [icon]=\"mainIcon()\"\n [size]=\"48\"\n alt=\"Drop zone icon\"\n bmbVerticalLayoutItem\n [isFullWidth]=\"false\"\n />\n\n <p\n class=\"bmb_drop-zone-label\"\n bmbVerticalLayoutItem\n [isFullWidth]=\"false\"\n >\n {{ formatFilesLabel() || ('dropzone.format_files_label' | translate) }}\n </p>\n <p\n class=\"bmb_drop-zone-label-instruction\"\n bmbVerticalLayoutItem\n [isFullWidth]=\"false\"\n >\n {{ dropInstruction() || ('dropzone.drop_instructions' | translate) }}\n <label\n class=\"bmb_drop-zone-input bmb_drop-zone-input-underlined\"\n [for]=\"inputId()\"\n bmbVerticalLayoutItem\n [isFullWidth]=\"false\"\n >\n {{ dropLabel() || ('dropzone.drop_label' | translate) }}\n <input\n hidden\n type=\"file\"\n [id]=\"inputId()\"\n [name]=\"name()\"\n [accept]=\"acceptedExtensions().toString()\"\n [attr.multiple]=\"multiple() || null\"\n [tabindex]=\"-1\"\n (change)=\"handleFileSelected($event)\"\n />\n </label>\n </p>\n @if (isErrorFiles()) {\n <p\n class=\"bmb_drop-zone-label-error\"\n bmbVerticalLayoutItem\n [isFullWidth]=\"false\"\n >\n {{ errorMessageLabel }}\n </p>\n @if (!!linkFilesSupported() && !!linkLabel()) {\n <bmb-text-link\n textLinkStyle=\"underlined\"\n [link]=\"linkFilesSupported()\"\n [textLink]=\"linkLabel() || ('dropzone.link_label' | translate)\"\n bmbVerticalLayoutItem\n [isFullWidth]=\"false\"\n />\n }\n }\n </section>\n @if (!!fileDataList.length) {\n @for (file of organizedFiles; track file.name) {\n <bmb-progress-bar\n class=\"bmb-drop-zone-file\"\n [ngClass]=\"{\n 'bmb_drop-zone-icon-animated': isUploadInProgress(file)\n }\"\n type=\"container\"\n [totalCount]=\"\n isUploadInProgress(file) ? 100 : getFileSizeInMB(file.size)\n \"\n [textFormat]=\"\n file.error || isUploadCompleted(file)\n ? !isValidFileSize(file.size)\n ? getFormatSizeError\n : getFormatSize\n : getFormatProgress\n \"\n [textFormatSeparator]=\"isUploadInProgress(file) ? '' : '/'\"\n [counter]=\"\n isUploadInProgress(file)\n ? getProgress(file)\n : getFileSizeInMB(file.size)\n \"\n [title]=\"getFileName(file)\"\n [appearance]=\"file.error ? 'error' : 'info'\"\n [isContainer]=\"true\"\n [avatarIcon]=\"getAvatarIcon(file)\"\n [actionIcon]=\"file.error ? 'close' : 'delete'\"\n [showStatusIcon]=\"isUploadCompleted(file)\"\n (actionClick)=\"handleRemoveFile(file.name)\"\n bmbVerticalLayoutItem\n />\n }\n }\n </section>\n</bmb-input-validator>\n", styles: ["@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_drop-zone{color:var(--general_contrasts-80);font-family:Poppins-Regular,sans-serif;font-size:.875rem;width:100%}.bmb_drop-zone-container{border:.125rem dashed var(--general_contrasts-container-outline);border-radius:.75rem;box-sizing:border-box;padding:var(--bmb-spacing-m) var(--bmb-spacing-m)}.bmb_drop-zone-container-primary{background-color:var(--containers-background)}.bmb_drop-zone-container-alternative{background-color:var(--containers-main)}.bmb_drop-zone-container-error{border-color:var(--buttons-destructive);background-color:transparent}.bmb_drop-zone-container-uploading-file{background-color:var(--menu_select-on-surface-hovered-w-checkbox);border-color:var(--general_contrasts-primary)}.bmb_drop-zone-container>p{margin:0}.bmb_drop-zone-label-instruction{color:var(--general_contrasts-100)}.bmb_drop-zone-label-error{color:var(--buttons-destructive)}.bmb_drop-zone-icon-valid{color:var(--general_contrasts-primary)}.bmb_drop-zone-icon-animated .bmb_progress-bar-icon{animation:spin 1.5s ease infinite}.bmb_drop-zone-icon-error{color:var(--buttons-destructive)}.bmb_drop-zone-input{font-family:Poppins-Regular,sans-serif;font-size:.875rem;color:var(--buttons-text-link);line-height:2}.bmb_drop-zone-input-underlined{text-decoration:underline}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: BmbInputValidatorComponent, selector: "bmb-input-validator", inputs: ["inputId", "type", "appearance", "label", "labelPosition", "name", "value", "checked", "isRequired", "isDisabled", "max", "min", "maxLength", "minLength", "pattern", "jsonFormat", "tooltip", "rows", "tooltipPosition", "showMaxTextLength", "helperMessage", "errorMessage", "customValidation", "isMultipleFile", "showError", "control"], outputs: ["showErrorChange", "controlChange"] }, { kind: "directive", type: BmbVerticalLayoutDirective, selector: "[bmbVerticalLayout]", inputs: ["gapSize", "justify", "alignItems", "layoutHeight"] }, { kind: "directive", type: BmbVerticalLayoutItemDirective, selector: "[bmbVerticalLayoutItem]", inputs: ["rowGrow", "isFullWidth"] }, { kind: "component", type: BmbIconComponent, selector: "bmb-icon", inputs: ["icon", "materialIcon", "styleIcon", "isFill", "fontWeight", "size", "alt", "dotNotification"] }, { kind: "component", type: BmbTextLinkComponent, selector: "bmb-text-link", inputs: ["textLink", "textLinkStyle", "target", "icon", "iconPosition", "link", "disabled"] }, { kind: "component", type: BmbProgressBarComponent, selector: "bmb-progress-bar", inputs: ["type", "totalCount", "counter", "title", "appearance", "textLink", "href", "target", "textFormat", "isContainer", "avatarIcon", "actionIcon", "textFormatSeparator", "showStatusIcon"], outputs: ["actionClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
179
262
  }
180
263
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbDropzoneComponent, decorators: [{
181
264
  type: Component,
182
265
  args: [{ selector: 'bmb-dropzone', standalone: true, imports: [
183
266
  CommonModule,
267
+ FormsModule,
268
+ ReactiveFormsModule,
269
+ BmbInputValidatorComponent,
270
+ BmbVerticalLayoutDirective,
271
+ BmbVerticalLayoutItemDirective,
184
272
  BmbIconComponent,
185
273
  BmbTextLinkComponent,
186
- BmbCardComponent,
187
- BmbCardContentComponent,
188
274
  BmbProgressBarComponent,
189
275
  TranslatePipe,
190
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"bmb-drop-zone\">\n <section\n class=\"bmb-drop-zone-container\"\n [ngClass]=\"getDropZoneClass()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <div\n class=\"bmb-drop-zone-icon\"\n [ngClass]=\"{\n 'bmb-drop-zone-icon-valid':\n validFile && fileDataList.length > 0 && !!fileDataList[0].name,\n 'bmb-drop-zone-icon-error': isInvalidFileOnly()\n }\"\n >\n <bmb-icon [icon]=\"mainIcon()\" [size]=\"48\" alt=\"Drop zone icon\" />\n </div>\n <p class=\"bmb-drop-zone-label-format\">\n {{ formatFilesLabel() || ('dropzone.format_files_label' | translate) }}\n </p>\n <p class=\"bmb-drop-zone-label-format-instruction\">\n {{ dropInstruction() || ('dropzone.drop_instructions' | translate) }}\n <label class=\"bmb-drop-zone-link\" [htmlFor]=\"name()\">\n {{ dropLabel() || ('dropzone.drop_label' | translate) }}\n </label>\n </p>\n @if (isInvalidFileOnly()) {\n <p class=\"bmb-drop-zone-label-format-error bmb-drop-zone-label-format\">\n {{ errorMessage() || ('dropzone.error_message' | translate) }}\n </p>\n @if (linkFilesSupported()) {\n <bmb-text-link\n textLinkStyle=\"underlined\"\n [link]=\"linkFilesSupported()\"\n [textLink]=\"linkLabel() || ('dropzone.link_label' | translate)\"\n />\n }\n }\n <input\n type=\"file\"\n [id]=\"name()\"\n [name]=\"name()\"\n [accept]=\"acceptedExtensions().toString()\"\n (change)=\"onFileSelected($event)\"\n [multiple]=\"multiple()\"\n style=\"display: none\"\n />\n </section>\n @if (fileDataList.length > 0) {\n @for (file of fileDataList; track file.name) {\n <bmb-card margin=\"none\" type=\"transparent\">\n <bmb-card-content>\n <div\n class=\"bmb-drop-zone-list-files\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-files-loading':\n !file.error && getProgress(file.name) < 100,\n 'bmb-drop-zone-list-files-error': file.error,\n 'bmb-drop-zone-list-files-valid': getProgress(file.name) === 100\n }\"\n >\n <span\n class=\"bmb-drop-zone-list-files-icon\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-files-icon-spin':\n !file.error && getProgress(file.name) < 100\n }\"\n >\n @if (!validFile) {\n <bmb-icon icon=\"upload_file\" [size]=\"24\" />\n } @else if (getProgress(file.name) < 100) {\n <bmb-icon icon=\"progress_activity\" [size]=\"24\" class=\"spin\" />\n } @else if (validFile) {\n <bmb-icon icon=\"task\" [size]=\"24\" />\n }\n </span>\n\n <div class=\"bmb-drop-zone-list-name\">\n <span>{{ file.name }}</span>\n\n <div\n class=\"bmb-drop-zone-list-status\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-status-success':\n getProgress(file.name) === 100\n }\"\n >\n @if (validFile && getProgress(file.name) < 100) {\n <span>{{ getProgress(file.name) }}% / 100%</span>\n }\n\n @if (getProgress(file.name) === 100) {\n {{ file.size.toFixed(2) }} MB\n <bmb-icon\n icon=\"check_circle\"\n [size]=\"24\"\n class=\"success-icon\"\n />\n <ng-container\n *ngTemplateOutlet=\"\n removeButton;\n context: { fileName: file.name }\n \"\n ></ng-container>\n }\n\n @if (file.error) {\n <span>\n @if (file.errorType === 'format') {\n {{\n errorMessageFormat() ||\n ('dropzone.error_message_format' | translate)\n }}\n } @else if (file.errorType === 'size') {\n {{\n errorMessageSize() ||\n ('dropzone.error_message_size' | translate)\n }}\n ({{ file.size.toFixed(2) }} MB)\n }\n </span>\n <ng-container\n *ngTemplateOutlet=\"\n removeButton;\n context: { fileName: file.name }\n \"\n ></ng-container>\n }\n </div>\n\n <ng-template #removeButton let-fileName=\"fileName\">\n <button\n class=\"bmb-drop-zone-list-remove\"\n (click)=\"removeFile(fileName)\"\n type=\"button\"\n >\n <bmb-icon icon=\"delete\" [size]=\"24\" class=\"delete-icon\" />\n </button>\n </ng-template>\n </div>\n\n @if (validFile && getProgress(file.name) < 100) {\n <span class=\"bmb-drop-zone-list-upload\">\n <bmb-progress-bar\n type=\"simple\"\n [counter]=\"getProgress(file.name)\"\n [totalCount]=\"100\"\n />\n </span>\n }\n </div>\n </bmb-card-content>\n </bmb-card>\n }\n }\n</div>\n", styles: ["@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb-drop-zone{color:RGBA(var(--color-charade-500));display:flex;flex-direction:column;gap:var(--bmb-spacing-m);font-family:Poppins-Regular,sans-serif;font-size:.875rem}.bmb-drop-zone-container{align-items:center;border:.125rem dashed var(--general_contrasts-container-outline);border-radius:var(--bmb-radius-s);box-sizing:border-box;display:flex;flex-direction:column;gap:var(--bmb-spacing-m);justify-content:center;padding:var(--bmb-spacing-m) var(--bmb-spacing-l)}.bmb-drop-zone-container-primary{background-color:var(--containers-background)}.bmb-drop-zone-container-alternative{background-color:var(--containers-main)}.bmb-drop-zone-drag-over{background-color:var(--menu_select-on-surface-hovered-w-checkbox);border-color:var(--general_contrasts-main-selection)}.bmb-drop-zone-error{border-color:var(--red-primary);background-color:transparent}.bmb-drop-zone-label-format{margin:0;color:var(--general_contrasts-50)}.bmb-drop-zone-label-format-instruction{color:var(--general_contrasts-100)}.bmb-drop-zone-link{font-family:Poppins-Regular,sans-serif;font-size:.875rem;color:var(--general_contrasts-main-selection);cursor:pointer;text-decoration-line:underline}.bmb-drop-zone-label-format-error{color:var(--red-primary)}.bmb-drop-zone-icon-valid{color:var(--general_contrasts-main-selection)}.bmb-drop-zone-icon-error{color:var(--red-primary)}.bmb-drop-zone-list-files{align-items:center;display:grid;gap:.5rem;grid-template-areas:\"icon name\" \"icon progress\";grid-template-columns:1.5rem 1fr;margin:0}.bmb-drop-zone-list-files-error{color:var(--red-primary);grid-template-areas:\"icon name\"}.bmb-drop-zone-list-files-loading .bmb-drop-zone-list-files-icon{color:var(--general_contrasts-main-selection)}.bmb-drop-zone-list-files-valid{grid-template-areas:\"icon name\"}.bmb-drop-zone-list-files-icon{grid-area:icon;height:1.5rem;width:1.5rem}.bmb-drop-zone-list-files-icon-spin{animation:spin 1s linear infinite}.bmb-drop-zone-list-upload{flex:1;grid-area:progress}.bmb-drop-zone-list-name{align-items:center;display:flex;grid-area:name;justify-content:space-between}.bmb-drop-zone-list-status{align-items:center;display:flex;gap:.5rem}.bmb-drop-zone-list-status-success .success-icon{color:var(--red-primary)}.bmb-drop-zone-list-status .delete-icon{color:var(--general_contrasts-50)}.bmb-drop-zone-list-remove{padding:0;margin:0;height:1.5rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}\n"] }]
191
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWRyb3B6b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcHpvbmUvYm1iLWRyb3B6b25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcHpvbmUvYm1iLWRyb3B6b25lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUVOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHVCQUF1QixHQUN4QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQStCekQsTUFBTSxPQUFPLG9CQUFvQjtJQXdCL0IsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF2QjFDLHVCQUFrQixHQUFHLEtBQUssQ0FBZSxTQUFTLENBQUMsQ0FBQztRQUNwRCx1QkFBa0IsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFZLENBQUM7UUFDaEQsb0JBQWUsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNsQyxjQUFTLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDNUIsaUJBQVksR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUMvQix1QkFBa0IsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNyQyxxQkFBZ0IsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNuQyxpQkFBWSxHQUFlLEVBQUUsQ0FBQztRQUM5QixhQUFRLEdBQUcsS0FBSyxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzVCLHFCQUFnQixHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ25DLHVCQUFrQixHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUN2QyxjQUFTLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDNUIsYUFBUSxHQUFHLEtBQUssQ0FBUyxPQUFPLENBQUMsQ0FBQztRQUNsQyxhQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLFNBQUksR0FBRyxLQUFLLENBQVMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNoQyxhQUFRLEdBQUcsS0FBSyxDQUFrQyxFQUFFLENBQUMsQ0FBQztRQUV0RCxZQUFPLEdBQUcsTUFBTSxFQUFpQixDQUFDO1FBQ2xDLGdCQUFXLEdBQUcsTUFBTSxFQUFVLENBQUM7UUFFL0IsY0FBUyxHQUFZLElBQUksQ0FBQztJQUdtQixDQUFDO0lBRTlDLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUNFLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDbkIsT0FBTyxDQUFDLG9CQUFvQixDQUFDO1lBQzdCLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFDbkI7WUFDQSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVNLGNBQWMsQ0FBQyxLQUFZO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQy9CLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUM3QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN6RTtTQUNGO0lBQ0gsQ0FBQztJQUVPLGVBQWUsQ0FBQyxRQUFnQixFQUFFLFFBQWdCO1FBQ3hELElBQ0UsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQzFFO1lBQ0EsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FDakUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FDdkIsQ0FBQztZQUNGLElBQ0UsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNO2dCQUNkLEtBQUssQ0FBQyxJQUFJLENBQ1IsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUNsQixPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztvQkFDeEMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FDNUMsRUFDRDtnQkFDQSxPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNO2dCQUNMLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztvQkFBRSxPQUFPLElBQUksQ0FBQzthQUMvRDtTQUNGO1FBRUQsSUFDRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQ2hDLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDbEQ7WUFFRCxPQUFPLElBQUksQ0FBQztRQUVkLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGVBQWUsQ0FBQyxRQUFnQjtRQUN0QyxPQUFPLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVPLGVBQWUsQ0FBQyxRQUFnQjtRQUN0QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNELENBQUM7SUFFTyxlQUFlLENBQUMsUUFBZ0I7UUFDdEMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU8sa0JBQWtCLENBQUMsSUFBbUI7UUFDNUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sVUFBVSxHQUFXLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1NBQ3hCO1FBRUQsS0FBSyxNQUFNLFVBQVUsSUFBSSxVQUFVLEVBQUU7WUFDbkMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekMsU0FBUzthQUNWO1lBRUQsTUFBTSxjQUFjLEdBQXVCO2dCQUN6QyxhQUFhLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JFLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7YUFDbkQsQ0FBQztZQUNGLE1BQU0sUUFBUSxHQUFhO2dCQUN6QixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7Z0JBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQzNDLEtBQUssRUFBRSxDQUFDLGNBQWMsQ0FBQyxhQUFhLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVztnQkFDbkUsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNO2FBQzdELENBQUM7WUFFRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxJQUFJLGNBQWMsQ0FBQyxhQUFhLElBQUksY0FBYyxDQUFDLFdBQVc7Z0JBQzVELFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDL0I7UUFFRCxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqRTthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVNLFVBQVUsQ0FBQyxRQUFnQjtRQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUMxQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQ2pDLENBQUM7UUFFRixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNoRCxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FDcEQsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFFdEUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDdkI7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFnQjtRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxhQUE0QixDQUFDO1FBQzNELGVBQWUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFnQjtRQUMxQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxhQUE0QixDQUFDO1FBQzNELGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFnQjtRQUNyQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxhQUE0QixDQUFDO1FBQzNELGVBQWUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9DLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFNUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUM7UUFDeEMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekU7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWdCO1FBQzFCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVE7WUFBRSxPQUFPLFFBQVEsQ0FBQztRQUNsRCxPQUFPLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDM0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQ3BELENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztTQUN2QjtRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVyQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO1lBQzVCLFNBQVMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUN2QztRQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTtZQUMvRCxTQUFTLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDM0M7UUFFRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLFNBQVMsRUFBRTtZQUMzQyxTQUFTLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7U0FDbkQ7UUFFRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLGFBQWEsRUFBRTtZQUMvQyxTQUFTLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7U0FDdkQ7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDOytHQXpOVSxvQkFBb0I7bUdBQXBCLG9CQUFvQix1dkVDbERqQyxtakxBNkpBLGt4UUR4SEksWUFBWSxvU0FDWixnQkFBZ0IsOEpBQ2hCLG9CQUFvQix1SkFDcEIsZ0JBQWdCLDBKQUNoQix1QkFBdUIsd0hBQ3ZCLHVCQUF1QixzS0FDdkIsYUFBYTs7NEZBT0osb0JBQW9CO2tCQWpCaEMsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLGFBQWE7cUJBQ2QsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJtYkljb25Db21wb25lbnQgfSBmcm9tICcuLi9ibWItaWNvbi9ibWItaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iVGV4dExpbmtDb21wb25lbnQgfSBmcm9tICcuLi9ibWItdGV4dC1saW5rL2JtYi10ZXh0LWxpbmsuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEJtYkNhcmRDb21wb25lbnQsXG4gIEJtYkNhcmRDb250ZW50Q29tcG9uZW50LFxufSBmcm9tICcuLi9ibWItY2FyZC9ibWItY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iUHJvZ3Jlc3NCYXJDb21wb25lbnQgfSBmcm9tICcuLi9ibWItcHJvZ3Jlc3MtYmFyL2JtYi1wcm9ncmVzcy1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IGdldFVVSUQgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XG5pbXBvcnQgeyBJQm1iQ29udHJhc3QgfSBmcm9tICcuLi8uLi90eXBlcy9jb2xvcnMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0aW9ucyc7XG5pbnRlcmZhY2UgRmlsZURhdGEge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNpemU6IG51bWJlcjtcbiAgYmFzZTY0Pzogc3RyaW5nO1xuICBlcnJvcj86IGJvb2xlYW47XG4gIGVycm9yVHlwZT86ICdmb3JtYXQnIHwgJ3NpemUnIHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIElCbWJGaWxlVmFsaWRhdGlvbiB7XG4gIGlzVmFsaWRGb3JtYXQ6IGJvb2xlYW47XG4gIGlzVmFsaWRTaXplOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdibWItZHJvcHpvbmUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJtYkljb25Db21wb25lbnQsXG4gICAgQm1iVGV4dExpbmtDb21wb25lbnQsXG4gICAgQm1iQ2FyZENvbXBvbmVudCxcbiAgICBCbWJDYXJkQ29udGVudENvbXBvbmVudCxcbiAgICBCbWJQcm9ncmVzc0JhckNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYm1iLWRyb3B6b25lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2JtYi1kcm9wem9uZS5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBCbWJEcm9wem9uZUNvbXBvbmVudCB7XG4gIGFwcGVhcmFuY2VDb250cmFzdCA9IGlucHV0PElCbWJDb250cmFzdD4oJ2RlZmF1bHQnKTtcbiAgYWNjZXB0ZWRFeHRlbnNpb25zID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nW10+KCk7XG4gIGRyb3BJbnN0cnVjdGlvbiA9IGlucHV0PHN0cmluZz4oKTtcbiAgZHJvcExhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBlcnJvck1lc3NhZ2UgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGVycm9yTWVzc2FnZUZvcm1hdCA9IGlucHV0PHN0cmluZz4oKTtcbiAgZXJyb3JNZXNzYWdlU2l6ZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgZmlsZURhdGFMaXN0OiBGaWxlRGF0YVtdID0gW107XG4gIGZpbGVTaXplID0gaW5wdXQ8bnVtYmVyPigyKTtcbiAgZm9ybWF0RmlsZXNMYWJlbCA9IGlucHV0PHN0cmluZz4oKTtcbiAgbGlua0ZpbGVzU3VwcG9ydGVkID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIGxpbmtMYWJlbCA9IGlucHV0PHN0cmluZz4oKTtcbiAgbWFpbkljb24gPSBpbnB1dDxzdHJpbmc+KCdpbWFnZScpO1xuICBtdWx0aXBsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgbmFtZSA9IGlucHV0PHN0cmluZz4oZ2V0VVVJRCgpKTtcbiAgcHJvZ3Jlc3MgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+IHwgbnVtYmVyPih7fSk7XG5cbiAgbmV3RmlsZSA9IG91dHB1dDxGaWxlIHwgRmlsZVtdPigpO1xuICBmaWxlUmVtb3ZlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgdmFsaWRGaWxlOiBib29sZWFuID0gdHJ1ZTtcbiAgaW5wdXQ/OiBIVE1MSW5wdXRFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKFxuICAgICAgY2hhbmdlc1sncHJvZ3Jlc3MnXSB8fFxuICAgICAgY2hhbmdlc1snYWNjZXB0ZWRFeHRlbnNpb25zJ10gfHxcbiAgICAgIGNoYW5nZXNbJ2ZpbGVTaXplJ11cbiAgICApIHtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5pbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlmICh0aGlzLmlucHV0LmZpbGVzPy5bMF0pIHtcbiAgICAgIGNvbnN0IGZpbGVzID0gdGhpcy5pbnB1dC5maWxlcztcbiAgICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuZ2V0RmlsZUFuZFZhbGlkYXRlKHRoaXMubXVsdGlwbGUoKSA/IEFycmF5LmZyb20oZmlsZXMpIDogZmlsZXNbMF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNWYWxpZEZpbGVUeXBlKGZpbGVUeXBlOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmFjY2VwdGVkRXh0ZW5zaW9ucygpLnNvbWUoKGVsZW1lbnQ6IHN0cmluZykgPT4gZWxlbWVudC5pbmNsdWRlcygnLycpKVxuICAgICkge1xuICAgICAgY29uc3QgdHlwZXMgPSB0aGlzLmFjY2VwdGVkRXh0ZW5zaW9ucygpLmZpbHRlcigoZWxlbWVudDogc3RyaW5nKSA9PlxuICAgICAgICBlbGVtZW50LmVuZHNXaXRoKCcvKicpLFxuICAgICAgKTtcbiAgICAgIGlmIChcbiAgICAgICAgISF0eXBlcy5sZW5ndGggJiZcbiAgICAgICAgdHlwZXMuc29tZShcbiAgICAgICAgICAoZWxlbWVudDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgZWxlbWVudC5zdWJzdHJpbmcoMCwgZWxlbWVudC5sZW5ndGggLSAyKSA9PT1cbiAgICAgICAgICAgIGZpbGVUeXBlLnN1YnN0cmluZygwLCBlbGVtZW50Lmxlbmd0aCAtIDIpLFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5hY2NlcHRlZEV4dGVuc2lvbnMoKS5pbmNsdWRlcyhmaWxlVHlwZSkpIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuYWNjZXB0ZWRFeHRlbnNpb25zKCkuaW5jbHVkZXMoXG4gICAgICAgIGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpICsgMSksXG4gICAgICApXG4gICAgKVxuICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbGVTaXplSW5NQihmaWxlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZmlsZVNpemUgLyAxMDQ4NTc2O1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkRmlsZVNpemUoZmlsZVNpemU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldEZpbGVTaXplSW5NQihmaWxlU2l6ZSkgPD0gdGhpcy5maWxlU2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0ZpbGVEdXBsaWNhdGUoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbGVEYXRhTGlzdC5zb21lKChleGlzdGluZykgPT4gZXhpc3RpbmcubmFtZSA9PT0gZmlsZU5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWxlQW5kVmFsaWRhdGUoZmlsZTogRmlsZSB8IEZpbGVbXSk6IHZvaWQge1xuICAgIGNvbnN0IGZpbGVzQXJyYXkgPSBBcnJheS5pc0FycmF5KGZpbGUpID8gZmlsZSA6IFtmaWxlXTtcbiAgICBjb25zdCB2YWxpZEZpbGVzOiBGaWxlW10gPSBbXTtcblxuICAgIGlmICghdGhpcy5tdWx0aXBsZSgpKSB7XG4gICAgICB0aGlzLmZpbGVEYXRhTGlzdCA9IFtdO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc2luZ2xlRmlsZSBvZiBmaWxlc0FycmF5KSB7XG4gICAgICBpZiAodGhpcy5pc0ZpbGVEdXBsaWNhdGUoc2luZ2xlRmlsZS5uYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsZVZhbGlkYXRpb246IElCbWJGaWxlVmFsaWRhdGlvbiA9IHtcbiAgICAgICAgaXNWYWxpZEZvcm1hdDogdGhpcy5pc1ZhbGlkRmlsZVR5cGUoc2luZ2xlRmlsZS50eXBlLCBzaW5nbGVGaWxlLm5hbWUpLFxuICAgICAgICBpc1ZhbGlkU2l6ZTogdGhpcy5pc1ZhbGlkRmlsZVNpemUoc2luZ2xlRmlsZS5zaXplKSxcbiAgICAgIH07XG4gICAgICBjb25zdCBmaWxlRGF0YTogRmlsZURhdGEgPSB7XG4gICAgICAgIG5hbWU6IHNpbmdsZUZpbGUubmFtZSxcbiAgICAgICAgc2l6ZTogdGhpcy5nZXRGaWxlU2l6ZUluTUIoc2luZ2xlRmlsZS5zaXplKSxcbiAgICAgICAgZXJyb3I6ICFmaWxlVmFsaWRhdGlvbi5pc1ZhbGlkRm9ybWF0IHx8ICFmaWxlVmFsaWRhdGlvbi5pc1ZhbGlkU2l6ZSxcbiAgICAgICAgZXJyb3JUeXBlOiAhZmlsZVZhbGlkYXRpb24uaXNWYWxpZEZvcm1hdCA/ICdmb3JtYXQnIDogJ3NpemUnLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5maWxlRGF0YUxpc3QucHVzaChmaWxlRGF0YSk7XG4gICAgICBpZiAoZmlsZVZhbGlkYXRpb24uaXNWYWxpZEZvcm1hdCAmJiBmaWxlVmFsaWRhdGlvbi5pc1ZhbGlkU2l6ZSlcbiAgICAgICAgdmFsaWRGaWxlcy5wdXNoKHNpbmdsZUZpbGUpO1xuICAgIH1cblxuICAgIGlmICghIXZhbGlkRmlsZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm5ld0ZpbGUuZW1pdCh0aGlzLm11bHRpcGxlKCkgPyB2YWxpZEZpbGVzIDogdmFsaWRGaWxlc1swXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25FcnJvckZpbGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRmlsZShmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5maWxlRGF0YUxpc3QgPSB0aGlzLmZpbGVEYXRhTGlzdC5maWx0ZXIoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5uYW1lICE9PSBmaWxlTmFtZSxcbiAgICApO1xuXG4gICAgY29uc3QgaGFzRm9ybWF0RXJyb3JzT25seSA9IHRoaXMuZmlsZURhdGFMaXN0LnNvbWUoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5lcnJvciAmJiBmaWxlLmVycm9yVHlwZSA9PT0gJ2Zvcm1hdCcsXG4gICAgKTtcblxuICAgIHRoaXMudmFsaWRGaWxlID0gdGhpcy5maWxlRGF0YUxpc3QubGVuZ3RoID4gMCAmJiAhaGFzRm9ybWF0RXJyb3JzT25seTtcblxuICAgIGlmICh0aGlzLmZpbGVEYXRhTGlzdC5sZW5ndGggPT09IDAgJiYgdGhpcy5pbnB1dCkge1xuICAgICAgdGhpcy5pbnB1dC52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHRoaXMuZmlsZVJlbW92ZWQuZW1pdChmaWxlTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIG9uRXJyb3JGaWxlKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXQgJiYgKHRoaXMuaW5wdXQudmFsdWUgPSAnJyk7XG4gICAgdGhpcy52YWxpZEZpbGUgPSBmYWxzZTtcbiAgfVxuXG4gIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIHRoaXMudmFsaWRGaWxlID0gdHJ1ZTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGRyb3B6b25lRWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgZHJvcHpvbmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2JtYi1kcm9wLXpvbmUtZHJhZy1vdmVyJyk7XG4gIH1cblxuICBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBkcm9wem9uZUVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGRyb3B6b25lRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdibWItZHJvcC16b25lLWRyYWctb3ZlcicpO1xuICB9XG5cbiAgb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGRyb3B6b25lRWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgZHJvcHpvbmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2JtYi1kcm9wLXpvbmUnKTtcbiAgICBkcm9wem9uZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnYm1iLWRyb3Atem9uZS1kcmFnLW92ZXInKTtcblxuICAgIGNvbnN0IGZpbGVzID0gZXZlbnQuZGF0YVRyYW5zZmVyPy5maWxlcztcbiAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5nZXRGaWxlQW5kVmFsaWRhdGUodGhpcy5tdWx0aXBsZSgpID8gQXJyYXkuZnJvbShmaWxlcykgOiBmaWxlc1swXSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJvZ3Jlc3MoZmlsZU5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgcHJvZ3Jlc3MgPSB0aGlzLnByb2dyZXNzKCk7XG4gICAgaWYgKHR5cGVvZiBwcm9ncmVzcyA9PT0gJ251bWJlcicpIHJldHVybiBwcm9ncmVzcztcbiAgICByZXR1cm4gcHJvZ3Jlc3M/LltmaWxlTmFtZV0gPz8gMDtcbiAgfVxuXG4gIGlzSW52YWxpZEZpbGVPbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbGVEYXRhTGlzdC5zb21lKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZXJyb3IgJiYgZmlsZS5lcnJvclR5cGUgPT09ICdmb3JtYXQnLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5maWxlRGF0YUxpc3QgPSBbXTtcbiAgICB0aGlzLnZhbGlkRmlsZSA9IHRydWU7XG4gICAgaWYgKHRoaXMuaW5wdXQpIHtcbiAgICAgIHRoaXMuaW5wdXQudmFsdWUgPSAnJztcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0RHJvcFpvbmVDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgY2xhc3NMaXN0ID0gW107XG5cbiAgICBpZiAodGhpcy5pc0ludmFsaWRGaWxlT25seSgpKSB7XG4gICAgICBjbGFzc0xpc3QucHVzaCgnYm1iLWRyb3Atem9uZS1lcnJvcicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZpbGVEYXRhTGlzdC5sZW5ndGggPiAwICYmICEhdGhpcy5maWxlRGF0YUxpc3RbMF0ubmFtZSkge1xuICAgICAgY2xhc3NMaXN0LnB1c2goJ2JtYi1kcm9wLXpvbmUtZHJhZy1vdmVyJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXBwZWFyYW5jZUNvbnRyYXN0KCkgPT09ICdwcmltYXJ5Jykge1xuICAgICAgY2xhc3NMaXN0LnB1c2goJ2JtYi1kcm9wLXpvbmUtY29udGFpbmVyLXByaW1hcnknKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcHBlYXJhbmNlQ29udHJhc3QoKSA9PT0gJ2FsdGVybmF0aXZlJykge1xuICAgICAgY2xhc3NMaXN0LnB1c2goJ2JtYi1kcm9wLXpvbmUtY29udGFpbmVyLWFsdGVybmF0aXZlJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzTGlzdDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJtYi1kcm9wLXpvbmVcIj5cbiAgPHNlY3Rpb25cbiAgICBjbGFzcz1cImJtYi1kcm9wLXpvbmUtY29udGFpbmVyXCJcbiAgICBbbmdDbGFzc109XCJnZXREcm9wWm9uZUNsYXNzKClcIlxuICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxuICAgIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiXG4gICAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJibWItZHJvcC16b25lLWljb25cIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnYm1iLWRyb3Atem9uZS1pY29uLXZhbGlkJzpcbiAgICAgICAgICB2YWxpZEZpbGUgJiYgZmlsZURhdGFMaXN0Lmxlbmd0aCA+IDAgJiYgISFmaWxlRGF0YUxpc3RbMF0ubmFtZSxcbiAgICAgICAgJ2JtYi1kcm9wLXpvbmUtaWNvbi1lcnJvcic6IGlzSW52YWxpZEZpbGVPbmx5KClcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxibWItaWNvbiBbaWNvbl09XCJtYWluSWNvbigpXCIgW3NpemVdPVwiNDhcIiBhbHQ9XCJEcm9wIHpvbmUgaWNvblwiIC8+XG4gICAgPC9kaXY+XG4gICAgPHAgY2xhc3M9XCJibWItZHJvcC16b25lLWxhYmVsLWZvcm1hdFwiPlxuICAgICAge3sgZm9ybWF0RmlsZXNMYWJlbCgpIHx8ICgnZHJvcHpvbmUuZm9ybWF0X2ZpbGVzX2xhYmVsJyB8IHRyYW5zbGF0ZSkgfX1cbiAgICA8L3A+XG4gICAgPHAgY2xhc3M9XCJibWItZHJvcC16b25lLWxhYmVsLWZvcm1hdC1pbnN0cnVjdGlvblwiPlxuICAgICAge3sgZHJvcEluc3RydWN0aW9uKCkgfHwgKCdkcm9wem9uZS5kcm9wX2luc3RydWN0aW9ucycgfCB0cmFuc2xhdGUpIH19XG4gICAgICA8bGFiZWwgY2xhc3M9XCJibWItZHJvcC16b25lLWxpbmtcIiBbaHRtbEZvcl09XCJuYW1lKClcIj5cbiAgICAgICAge3sgZHJvcExhYmVsKCkgfHwgKCdkcm9wem9uZS5kcm9wX2xhYmVsJyB8IHRyYW5zbGF0ZSkgfX1cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9wPlxuICAgIEBpZiAoaXNJbnZhbGlkRmlsZU9ubHkoKSkge1xuICAgICAgPHAgY2xhc3M9XCJibWItZHJvcC16b25lLWxhYmVsLWZvcm1hdC1lcnJvciBibWItZHJvcC16b25lLWxhYmVsLWZvcm1hdFwiPlxuICAgICAgICB7eyBlcnJvck1lc3NhZ2UoKSB8fCAoJ2Ryb3B6b25lLmVycm9yX21lc3NhZ2UnIHwgdHJhbnNsYXRlKSB9fVxuICAgICAgPC9wPlxuICAgICAgQGlmIChsaW5rRmlsZXNTdXBwb3J0ZWQoKSkge1xuICAgICAgICA8Ym1iLXRleHQtbGlua1xuICAgICAgICAgIHRleHRMaW5rU3R5bGU9XCJ1bmRlcmxpbmVkXCJcbiAgICAgICAgICBbbGlua109XCJsaW5rRmlsZXNTdXBwb3J0ZWQoKVwiXG4gICAgICAgICAgW3RleHRMaW5rXT1cImxpbmtMYWJlbCgpIHx8ICgnZHJvcHpvbmUubGlua19sYWJlbCcgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICB9XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICBbaWRdPVwibmFtZSgpXCJcbiAgICAgIFtuYW1lXT1cIm5hbWUoKVwiXG4gICAgICBbYWNjZXB0XT1cImFjY2VwdGVkRXh0ZW5zaW9ucygpLnRvU3RyaW5nKClcIlxuICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZSgpXCJcbiAgICAgIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiXG4gICAgLz5cbiAgPC9zZWN0aW9uPlxuICBAaWYgKGZpbGVEYXRhTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgQGZvciAoZmlsZSBvZiBmaWxlRGF0YUxpc3Q7IHRyYWNrIGZpbGUubmFtZSkge1xuICAgICAgPGJtYi1jYXJkIG1hcmdpbj1cIm5vbmVcIiB0eXBlPVwidHJhbnNwYXJlbnRcIj5cbiAgICAgICAgPGJtYi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJibWItZHJvcC16b25lLWxpc3QtZmlsZXNcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnYm1iLWRyb3Atem9uZS1saXN0LWZpbGVzLWxvYWRpbmcnOlxuICAgICAgICAgICAgICAgICFmaWxlLmVycm9yICYmIGdldFByb2dyZXNzKGZpbGUubmFtZSkgPCAxMDAsXG4gICAgICAgICAgICAgICdibWItZHJvcC16b25lLWxpc3QtZmlsZXMtZXJyb3InOiBmaWxlLmVycm9yLFxuICAgICAgICAgICAgICAnYm1iLWRyb3Atem9uZS1saXN0LWZpbGVzLXZhbGlkJzogZ2V0UHJvZ3Jlc3MoZmlsZS5uYW1lKSA9PT0gMTAwXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImJtYi1kcm9wLXpvbmUtbGlzdC1maWxlcy1pY29uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdibWItZHJvcC16b25lLWxpc3QtZmlsZXMtaWNvbi1zcGluJzpcbiAgICAgICAgICAgICAgICAgICFmaWxlLmVycm9yICYmIGdldFByb2dyZXNzKGZpbGUubmFtZSkgPCAxMDBcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEBpZiAoIXZhbGlkRmlsZSkge1xuICAgICAgICAgICAgICAgIDxibWItaWNvbiBpY29uPVwidXBsb2FkX2ZpbGVcIiBbc2l6ZV09XCIyNFwiIC8+XG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGdldFByb2dyZXNzKGZpbGUubmFtZSkgPCAxMDApIHtcbiAgICAgICAgICAgICAgICA8Ym1iLWljb24gaWNvbj1cInByb2dyZXNzX2FjdGl2aXR5XCIgW3NpemVdPVwiMjRcIiBjbGFzcz1cInNwaW5cIiAvPlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmICh2YWxpZEZpbGUpIHtcbiAgICAgICAgICAgICAgICA8Ym1iLWljb24gaWNvbj1cInRhc2tcIiBbc2l6ZV09XCIyNFwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJtYi1kcm9wLXpvbmUtbGlzdC1uYW1lXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGZpbGUubmFtZSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJibWItZHJvcC16b25lLWxpc3Qtc3RhdHVzXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnYm1iLWRyb3Atem9uZS1saXN0LXN0YXR1cy1zdWNjZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgZ2V0UHJvZ3Jlc3MoZmlsZS5uYW1lKSA9PT0gMTAwXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKHZhbGlkRmlsZSAmJiBnZXRQcm9ncmVzcyhmaWxlLm5hbWUpIDwgMTAwKSB7XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBnZXRQcm9ncmVzcyhmaWxlLm5hbWUpIH19JSAvIDEwMCU8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGlmIChnZXRQcm9ncmVzcyhmaWxlLm5hbWUpID09PSAxMDApIHtcbiAgICAgICAgICAgICAgICAgIHt7IGZpbGUuc2l6ZS50b0ZpeGVkKDIpIH19IE1CXG4gICAgICAgICAgICAgICAgICA8Ym1iLWljb25cbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImNoZWNrX2NpcmNsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdWNjZXNzLWljb25cIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICByZW1vdmVCdXR0b247XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyBmaWxlTmFtZTogZmlsZS5uYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBAaWYgKGZpbGUuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGZpbGUuZXJyb3JUeXBlID09PSAnZm9ybWF0Jykge1xuICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VGb3JtYXQoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2Ryb3B6b25lLmVycm9yX21lc3NhZ2VfZm9ybWF0JyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChmaWxlLmVycm9yVHlwZSA9PT0gJ3NpemUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZVNpemUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2Ryb3B6b25lLmVycm9yX21lc3NhZ2Vfc2l6ZScgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAoe3sgZmlsZS5zaXplLnRvRml4ZWQoMikgfX0gTUIpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICByZW1vdmVCdXR0b247XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyBmaWxlTmFtZTogZmlsZS5uYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVtb3ZlQnV0dG9uIGxldC1maWxlTmFtZT1cImZpbGVOYW1lXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJibWItZHJvcC16b25lLWxpc3QtcmVtb3ZlXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGaWxlKGZpbGVOYW1lKVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8Ym1iLWljb24gaWNvbj1cImRlbGV0ZVwiIFtzaXplXT1cIjI0XCIgY2xhc3M9XCJkZWxldGUtaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgQGlmICh2YWxpZEZpbGUgJiYgZ2V0UHJvZ3Jlc3MoZmlsZS5uYW1lKSA8IDEwMCkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJtYi1kcm9wLXpvbmUtbGlzdC11cGxvYWRcIj5cbiAgICAgICAgICAgICAgICA8Ym1iLXByb2dyZXNzLWJhclxuICAgICAgICAgICAgICAgICAgdHlwZT1cInNpbXBsZVwiXG4gICAgICAgICAgICAgICAgICBbY291bnRlcl09XCJnZXRQcm9ncmVzcyhmaWxlLm5hbWUpXCJcbiAgICAgICAgICAgICAgICAgIFt0b3RhbENvdW50XT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2JtYi1jYXJkLWNvbnRlbnQ+XG4gICAgICA8L2JtYi1jYXJkPlxuICAgIH1cbiAgfVxuPC9kaXY+XG4iXX0=
276
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<bmb-input-validator\n type=\"file\"\n [name]=\"name()\"\n [control]=\"control()\"\n [inputId]=\"inputId()\"\n [isMultipleFile]=\"multiple()\"\n [customValidation]=\"customValidation()\"\n>\n <section class=\"bmb_drop-zone\" bmbVerticalLayout gapSize=\"l\">\n <section\n class=\"bmb_drop-zone-container\"\n [ngClass]=\"getDropZoneClass()\"\n (dragover)=\"handleDragOver($event)\"\n (dragleave)=\"handleDragLeave($event)\"\n (drop)=\"handleDrop($event)\"\n bmbVerticalLayoutItem\n bmbVerticalLayout\n gapSize=\"m\"\n justify=\"center\"\n alignItems=\"center\"\n >\n <bmb-icon\n class=\"bmb_drop-zone-icon\"\n [ngClass]=\"{\n 'bmb_drop-zone-icon-valid': isErrorFiles(),\n 'bmb_drop-zone-icon-error': isErrorFiles()\n }\"\n [icon]=\"mainIcon()\"\n [size]=\"48\"\n alt=\"Drop zone icon\"\n bmbVerticalLayoutItem\n [isFullWidth]=\"false\"\n />\n\n <p\n class=\"bmb_drop-zone-label\"\n bmbVerticalLayoutItem\n [isFullWidth]=\"false\"\n >\n {{ formatFilesLabel() || ('dropzone.format_files_label' | translate) }}\n </p>\n <p\n class=\"bmb_drop-zone-label-instruction\"\n bmbVerticalLayoutItem\n [isFullWidth]=\"false\"\n >\n {{ dropInstruction() || ('dropzone.drop_instructions' | translate) }}\n <label\n class=\"bmb_drop-zone-input bmb_drop-zone-input-underlined\"\n [for]=\"inputId()\"\n bmbVerticalLayoutItem\n [isFullWidth]=\"false\"\n >\n {{ dropLabel() || ('dropzone.drop_label' | translate) }}\n <input\n hidden\n type=\"file\"\n [id]=\"inputId()\"\n [name]=\"name()\"\n [accept]=\"acceptedExtensions().toString()\"\n [attr.multiple]=\"multiple() || null\"\n [tabindex]=\"-1\"\n (change)=\"handleFileSelected($event)\"\n />\n </label>\n </p>\n @if (isErrorFiles()) {\n <p\n class=\"bmb_drop-zone-label-error\"\n bmbVerticalLayoutItem\n [isFullWidth]=\"false\"\n >\n {{ errorMessageLabel }}\n </p>\n @if (!!linkFilesSupported() && !!linkLabel()) {\n <bmb-text-link\n textLinkStyle=\"underlined\"\n [link]=\"linkFilesSupported()\"\n [textLink]=\"linkLabel() || ('dropzone.link_label' | translate)\"\n bmbVerticalLayoutItem\n [isFullWidth]=\"false\"\n />\n }\n }\n </section>\n @if (!!fileDataList.length) {\n @for (file of organizedFiles; track file.name) {\n <bmb-progress-bar\n class=\"bmb-drop-zone-file\"\n [ngClass]=\"{\n 'bmb_drop-zone-icon-animated': isUploadInProgress(file)\n }\"\n type=\"container\"\n [totalCount]=\"\n isUploadInProgress(file) ? 100 : getFileSizeInMB(file.size)\n \"\n [textFormat]=\"\n file.error || isUploadCompleted(file)\n ? !isValidFileSize(file.size)\n ? getFormatSizeError\n : getFormatSize\n : getFormatProgress\n \"\n [textFormatSeparator]=\"isUploadInProgress(file) ? '' : '/'\"\n [counter]=\"\n isUploadInProgress(file)\n ? getProgress(file)\n : getFileSizeInMB(file.size)\n \"\n [title]=\"getFileName(file)\"\n [appearance]=\"file.error ? 'error' : 'info'\"\n [isContainer]=\"true\"\n [avatarIcon]=\"getAvatarIcon(file)\"\n [actionIcon]=\"file.error ? 'close' : 'delete'\"\n [showStatusIcon]=\"isUploadCompleted(file)\"\n (actionClick)=\"handleRemoveFile(file.name)\"\n bmbVerticalLayoutItem\n />\n }\n }\n </section>\n</bmb-input-validator>\n", styles: ["@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_drop-zone{color:var(--general_contrasts-80);font-family:Poppins-Regular,sans-serif;font-size:.875rem;width:100%}.bmb_drop-zone-container{border:.125rem dashed var(--general_contrasts-container-outline);border-radius:.75rem;box-sizing:border-box;padding:var(--bmb-spacing-m) var(--bmb-spacing-m)}.bmb_drop-zone-container-primary{background-color:var(--containers-background)}.bmb_drop-zone-container-alternative{background-color:var(--containers-main)}.bmb_drop-zone-container-error{border-color:var(--buttons-destructive);background-color:transparent}.bmb_drop-zone-container-uploading-file{background-color:var(--menu_select-on-surface-hovered-w-checkbox);border-color:var(--general_contrasts-primary)}.bmb_drop-zone-container>p{margin:0}.bmb_drop-zone-label-instruction{color:var(--general_contrasts-100)}.bmb_drop-zone-label-error{color:var(--buttons-destructive)}.bmb_drop-zone-icon-valid{color:var(--general_contrasts-primary)}.bmb_drop-zone-icon-animated .bmb_progress-bar-icon{animation:spin 1.5s ease infinite}.bmb_drop-zone-icon-error{color:var(--buttons-destructive)}.bmb_drop-zone-input{font-family:Poppins-Regular,sans-serif;font-size:.875rem;color:var(--buttons-text-link);line-height:2}.bmb_drop-zone-input-underlined{text-decoration:underline}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}\n"] }]
277
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.BmbTranslationsService }] });
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWRyb3B6b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcHpvbmUvYm1iLWRyb3B6b25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcHpvbmUvYm1iLWRyb3B6b25lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsS0FBSyxFQUdMLE1BQU0sRUFFTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQztBQUMzSCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxvRkFBb0YsQ0FBQztBQUVwSSxPQUFPLEVBRUwsV0FBVyxFQUNYLG1CQUFtQixHQUVwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLG9CQUFvQixHQUNyQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdFQUFn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Q2xDLENBQUM7SUFFRCxjQUFjO1FBQ1osY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQzsrR0F6VVUsb0JBQW9CO21HQUFwQixvQkFBb0Isc3FGQ3BFakMsczRIQTBIQSxrdE9EdEVJLFlBQVksNEhBQ1osV0FBVyw4QkFDWCxtQkFBbUIsK0JBQ25CLDBCQUEwQix1Y0FDMUIsMEJBQTBCLDhIQUMxQiw4QkFBOEIsd0dBQzlCLGdCQUFnQiw4SkFDaEIsb0JBQW9CLHVKQUNwQix1QkFBdUIsb1JBQ3ZCLGFBQWE7OzRGQU9KLG9CQUFvQjtrQkFwQmhDLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQiwwQkFBMEI7d0JBQzFCLDBCQUEwQjt3QkFDMUIsOEJBQThCO3dCQUM5QixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2QixhQUFhO3FCQUNkLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBvdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJtYkljb25Db21wb25lbnQgfSBmcm9tICcuLi9ibWItaWNvbi9ibWItaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iVGV4dExpbmtDb21wb25lbnQgfSBmcm9tICcuLi9ibWItdGV4dC1saW5rL2JtYi10ZXh0LWxpbmsuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYlByb2dyZXNzQmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLXByb2dyZXNzLWJhci9ibWItcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBnZXRVVUlEIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgSUJtYkNvbnRyYXN0IH0gZnJvbSAnLi4vLi4vdHlwZXMvY29sb3JzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHsgQm1iVmVydGljYWxMYXlvdXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2JtYi1sYXlvdXQvYm1iLXZlcnRpY2FsLWxheW91dC9ibWItdmVydGljYWwtbGF5b3V0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCbWJWZXJ0aWNhbExheW91dEl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2JtYi1sYXlvdXQvYm1iLXZlcnRpY2FsLWxheW91dC9ibWItdmVydGljYWwtbGF5b3V0LWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IEJtYlRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1zTW9kdWxlLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0b3JGbixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgYXNzaWduTmV3Rm9ybUNvbnRyb2wsXG4gIGhhbmRsZVZhbGlkaXR5LFxuICBuZXdGb3JtQ29udHJvbEJ5VHlwZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvZm9ybUNvbnRyb2wnO1xuaW1wb3J0IHsgQm1iSW5wdXRWYWxpZGF0b3JDb21wb25lbnQgfSBmcm9tICcuLi9ibWItaW5wdXQvYm1iLWlucHV0LXZhbGlkYXRvci9ibWItaW5wdXQtdmFsaWRhdG9yLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBGaWxlRGF0YSB7XG4gIG5hbWU6IHN0cmluZztcbiAgc2l6ZTogbnVtYmVyO1xuICBiYXNlNjQ/OiBzdHJpbmc7XG4gIGVycm9yPzogYm9vbGVhbjtcbiAgZXJyb3JUeXBlPzogJ2Zvcm1hdCcgfCAnc2l6ZScgfCBudWxsO1xufVxuXG5pbnRlcmZhY2UgSUJtYkZpbGVWYWxpZGF0aW9uIHtcbiAgaXNWYWxpZEZvcm1hdDogYm9vbGVhbjtcbiAgaXNWYWxpZFNpemU6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JtYi1kcm9wem9uZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCbWJJbnB1dFZhbGlkYXRvckNvbXBvbmVudCxcbiAgICBCbWJWZXJ0aWNhbExheW91dERpcmVjdGl2ZSxcbiAgICBCbWJWZXJ0aWNhbExheW91dEl0ZW1EaXJlY3RpdmUsXG4gICAgQm1iSWNvbkNvbXBvbmVudCxcbiAgICBCbWJUZXh0TGlua0NvbXBvbmVudCxcbiAgICBCbWJQcm9ncmVzc0JhckNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYm1iLWRyb3B6b25lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2JtYi1kcm9wem9uZS5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBCbWJEcm9wem9uZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgYXBwZWFyYW5jZUNvbnRyYXN0ID0gaW5wdXQ8SUJtYkNvbnRyYXN0PignZGVmYXVsdCcpO1xuICBhY2NlcHRlZEV4dGVuc2lvbnMgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmdbXT4oKTtcbiAgZHJvcEluc3RydWN0aW9uID0gaW5wdXQ8c3RyaW5nPigpO1xuICBkcm9wTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGVycm9yTWVzc2FnZSA9IGlucHV0PHN0cmluZz4oKTsgLy9EZXByZWNhdGVkXG4gIGVycm9yTWVzc2FnZUZvcm1hdCA9IGlucHV0PHN0cmluZz4oKTtcbiAgZXJyb3JNZXNzYWdlU2l6ZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgZmlsZVNpemUgPSBpbnB1dDxudW1iZXI+KDIpO1xuICBmb3JtYXRGaWxlc0xhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBsaW5rRmlsZXNTdXBwb3J0ZWQgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgbGlua0xhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBtYWluSWNvbiA9IGlucHV0PHN0cmluZz4oJ2ltYWdlJyk7XG4gIG11bHRpcGxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBuYW1lID0gaW5wdXQ8c3RyaW5nPihnZXRVVUlEKCkpO1xuICBwcm9ncmVzcyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIG51bWJlcj4gfCBudW1iZXI+KHt9KTtcbiAgaW5wdXRJZCA9IGlucHV0PHN0cmluZz4odGhpcy5uYW1lKCkpO1xuICBjdXN0b21WYWxpZGF0aW9uID0gaW5wdXQ8VmFsaWRhdG9yRm4+KCk7XG5cbiAgY29udHJvbCA9IG1vZGVsPEZvcm1Db250cm9sPihuZXdGb3JtQ29udHJvbEJ5VHlwZSgnZmlsZScsIHRoaXMubXVsdGlwbGUoKSkpO1xuXG4gIG5ld0ZpbGUgPSBvdXRwdXQ8RmlsZSB8IEZpbGVbXT4oKTtcbiAgZmlsZVJlbW92ZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gIGZpbGVEYXRhTGlzdDogRmlsZURhdGFbXSA9IFtdO1xuICBpc0NvbnRyb2xOdWxsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBCbWJUcmFuc2xhdGlvbnNTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2woKSkge1xuICAgICAgdGhpcy5jb250cm9sLnNldChcbiAgICAgICAgYXNzaWduTmV3Rm9ybUNvbnRyb2woXG4gICAgICAgICAgdGhpcy5uYW1lKCksXG4gICAgICAgICAgdGhpcy5jb250cm9sKCksXG4gICAgICAgICAgJ2ZpbGUnLFxuICAgICAgICAgIHRoaXMubXVsdGlwbGUoKSxcbiAgICAgICAgKSEsXG4gICAgICApO1xuICAgICAgdGhpcy5pc0NvbnRyb2xOdWxsID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKFxuICAgICAgY2hhbmdlc1sncHJvZ3Jlc3MnXSB8fFxuICAgICAgY2hhbmdlc1snYWNjZXB0ZWRFeHRlbnNpb25zJ10gfHxcbiAgICAgIGNoYW5nZXNbJ2ZpbGVTaXplJ11cbiAgICApIHtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RHJvcFpvbmVDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgY2xhc3NMaXN0ID0gW107XG5cbiAgICBpZiAodGhpcy5pc0Vycm9yRmlsZXMoKSkge1xuICAgICAgY2xhc3NMaXN0LnB1c2goJ2JtYl9kcm9wLXpvbmUtY29udGFpbmVyLWVycm9yJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChcbiAgICAgICAgISF0aGlzLmZpbGVEYXRhTGlzdC5sZW5ndGggJiZcbiAgICAgICAgdGhpcy5maWxlRGF0YUxpc3Q/LnNvbWUoKGZpbGU6IEZpbGVEYXRhKSA9PlxuICAgICAgICAgIHRoaXMuaXNVcGxvYWRJblByb2dyZXNzKGZpbGUpLFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgY2xhc3NMaXN0LnB1c2goJ2JtYl9kcm9wLXpvbmUtY29udGFpbmVyLXVwbG9hZGluZy1maWxlJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmFwcGVhcmFuY2VDb250cmFzdCgpID09PSAncHJpbWFyeScpIHtcbiAgICAgICAgY2xhc3NMaXN0LnB1c2goJ2JtYi1kcm9wLXpvbmUtY29udGFpbmVyLXByaW1hcnknKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYXBwZWFyYW5jZUNvbnRyYXN0KCkgPT09ICdhbHRlcm5hdGl2ZScpIHtcbiAgICAgICAgY2xhc3NMaXN0LnB1c2goJ2JtYi1kcm9wLXpvbmUtY29udGFpbmVyLWFsdGVybmF0aXZlJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzTGlzdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZXJyb3JNZXNzYWdlTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7XG4gICAgICB0aGlzLmlzRm9ybWF0RXJyb3JGaWxlcygpXG4gICAgICAgID8gKFxuICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VGb3JtYXQoKSEgfHxcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZSgnZHJvcHpvbmUuZXJyb3JfbWVzc2FnZV9mb3JtYXQnKVxuICAgICAgICAgICkuY29uY2F0KCcqICcpXG4gICAgICAgIDogJydcbiAgICB9JHtcbiAgICAgIHRoaXMuaXNGb3JtYXRFcnJvckZpbGVzKClcbiAgICAgICAgPyAoXG4gICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZVNpemUoKSB8fFxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlKCdkcm9wem9uZS5lcnJvcl9tZXNzYWdlX3NpemUnKVxuICAgICAgICAgICkuY29uY2F0KCdNQionKVxuICAgICAgICA6ICcnXG4gICAgfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0QXZhdGFySWNvbihmaWxlOiBGaWxlRGF0YSk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZ2V0UHJvZ3Jlc3MoZmlsZSkgPT09IDEwMCkgcmV0dXJuICd1cGxvYWRfZmlsZSc7XG4gICAgaWYgKGZpbGUuZXJyb3IpIHJldHVybiAndGFzayc7XG5cbiAgICByZXR1cm4gJ3Byb2dyZXNzX2FjdGl2aXR5JztcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaWxlTmFtZShmaWxlOiBGaWxlRGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNGb3JtYXRFcnJvcihmaWxlKSA/IGZpbGUubmFtZS5jb25jYXQoJyonKSA6IGZpbGUubmFtZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGb3JtYXRQcm9ncmVzcyh2YWx1ZTogc3RyaW5nLCB0b3RhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dmFsdWV9JS8ke3RvdGFsfSVgO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZvcm1hdFNpemUoXzogYW55LCB0b3RhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7SW50bC5OdW1iZXJGb3JtYXQoJ2VuLVVTJywge1xuICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIH0pLmZvcm1hdChOdW1iZXIodG90YWwpKX1NQmA7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Rm9ybWF0U2l6ZUVycm9yKF86IGFueSwgdG90YWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke0ludGwuTnVtYmVyRm9ybWF0KCdlbi1VUycsIHtcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICB9KS5mb3JtYXQoTnVtYmVyKHRvdGFsKSl9TUIqYDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaWxlU2l6ZUluTUIoZmlsZVNpemU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGZpbGVTaXplIC8gMTA0ODU3NjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRQcm9ncmVzcyhmaWxlOiBGaWxlRGF0YSk6IG51bWJlciB7XG4gICAgY29uc3QgcHJvZ3Jlc3MgPSB0aGlzLnByb2dyZXNzKCk7XG5cbiAgICBpZiAoZmlsZS5lcnJvcikgcmV0dXJuIDA7XG4gICAgaWYgKHR5cGVvZiBwcm9ncmVzcyA9PT0gJ251bWJlcicpIHJldHVybiBwcm9ncmVzcztcbiAgICByZXR1cm4gcHJvZ3Jlc3M/LltmaWxlLm5hbWVdID8/IDA7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IG9yZ2FuaXplZEZpbGVzKCk6IEZpbGVEYXRhW10ge1xuICAgIGlmICh0aGlzLmZpbGVEYXRhTGlzdC5zb21lKChmaWxlOiBGaWxlRGF0YSkgPT4gZmlsZS5lcnJvcikpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbGVEYXRhTGlzdC5zb3J0KFxuICAgICAgICAoZmlsZTE6IEZpbGVEYXRhLCBmaWxlMjogRmlsZURhdGEpID0+XG4gICAgICAgICAgKE51bWJlcihmaWxlMS5lcnJvcikgLSBOdW1iZXIoZmlsZTIuZXJyb3IpKSAqIC0xLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5maWxlRGF0YUxpc3Q7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbGVBbmRWYWxpZGF0ZShmaWxlOiBGaWxlIHwgRmlsZVtdKTogdm9pZCB7XG4gICAgY29uc3QgZmlsZUxpc3QgPSBBcnJheS5pc0FycmF5KGZpbGUpID8gZmlsZSA6IFtmaWxlXTtcbiAgICBjb25zdCB2YWxpZEZpbGVzOiBGaWxlW10gPSBbXTtcblxuICAgIGlmICghdGhpcy5tdWx0aXBsZSgpKSB7XG4gICAgICB0aGlzLmZpbGVEYXRhTGlzdCA9IFtdO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc2luZ2xlRmlsZSBvZiBmaWxlTGlzdCkge1xuICAgICAgaWYgKHRoaXMuaXNGaWxlRHVwbGljYXRlKHNpbmdsZUZpbGUubmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbGVWYWxpZGF0aW9uOiBJQm1iRmlsZVZhbGlkYXRpb24gPSB7XG4gICAgICAgIGlzVmFsaWRGb3JtYXQ6IHRoaXMuaXNWYWxpZEZpbGVGb3JtYXQoc2luZ2xlRmlsZS50eXBlLCBzaW5nbGVGaWxlLm5hbWUpLFxuICAgICAgICBpc1ZhbGlkU2l6ZTogdGhpcy5pc1ZhbGlkRmlsZVNpemUoc2luZ2xlRmlsZS5zaXplKSxcbiAgICAgIH07XG4gICAgICBjb25zdCBmaWxlRGF0YTogRmlsZURhdGEgPSB7XG4gICAgICAgIG5hbWU6IHNpbmdsZUZpbGUubmFtZSxcbiAgICAgICAgc2l6ZTogdGhpcy5nZXRGaWxlU2l6ZUluTUIoc2luZ2xlRmlsZS5zaXplKSxcbiAgICAgICAgZXJyb3I6ICFmaWxlVmFsaWRhdGlvbi5pc1ZhbGlkRm9ybWF0IHx8ICFmaWxlVmFsaWRhdGlvbi5pc1ZhbGlkU2l6ZSxcbiAgICAgICAgZXJyb3JUeXBlOiAhZmlsZVZhbGlkYXRpb24uaXNWYWxpZEZvcm1hdCA/ICdmb3JtYXQnIDogJ3NpemUnLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5maWxlRGF0YUxpc3QucHVzaChmaWxlRGF0YSk7XG4gICAgICBpZiAoZmlsZVZhbGlkYXRpb24uaXNWYWxpZEZvcm1hdCAmJiBmaWxlVmFsaWRhdGlvbi5pc1ZhbGlkU2l6ZSlcbiAgICAgICAgdmFsaWRGaWxlcy5wdXNoKHNpbmdsZUZpbGUpO1xuICAgIH1cblxuICAgIGlmICghIXZhbGlkRmlsZXMubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSgpKSB7XG4gICAgICAgIHRoaXMuY29udHJvbCgpLnBhdGNoVmFsdWUodmFsaWRGaWxlcy5tYXAoKF9maWxlOiBhbnkpID0+IF9maWxlLm5hbWUpKTtcbiAgICAgICAgdGhpcy5jb250cm9sKCkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuXG4gICAgICAgIHRoaXMubmV3RmlsZS5lbWl0KHZhbGlkRmlsZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgX2ZpbGUgPSB2YWxpZEZpbGVzWzBdO1xuICAgICAgICB0aGlzLmNvbnRyb2woKS5wYXRjaFZhbHVlKF9maWxlLm5hbWUpO1xuICAgICAgICB0aGlzLmNvbnRyb2woKS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG5cbiAgICAgICAgdGhpcy5uZXdGaWxlLmVtaXQoX2ZpbGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNWYWxpZEZpbGVGb3JtYXQoZmlsZVR5cGU6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIHRoaXMuYWNjZXB0ZWRFeHRlbnNpb25zKCkuc29tZSgoZWxlbWVudDogc3RyaW5nKSA9PiBlbGVtZW50LmluY2x1ZGVzKCcvJykpXG4gICAgKSB7XG4gICAgICBjb25zdCB0eXBlcyA9IHRoaXMuYWNjZXB0ZWRFeHRlbnNpb25zKCkuZmlsdGVyKChlbGVtZW50OiBzdHJpbmcpID0+XG4gICAgICAgIGVsZW1lbnQuZW5kc1dpdGgoJy8qJyksXG4gICAgICApO1xuICAgICAgaWYgKFxuICAgICAgICAhIXR5cGVzLmxlbmd0aCAmJlxuICAgICAgICB0eXBlcy5zb21lKFxuICAgICAgICAgIChlbGVtZW50OiBzdHJpbmcpID0+XG4gICAgICAgICAgICBlbGVtZW50LnN1YnN0cmluZygwLCBlbGVtZW50Lmxlbmd0aCAtIDIpID09PVxuICAgICAgICAgICAgZmlsZVR5cGUuc3Vic3RyaW5nKDAsIGVsZW1lbnQubGVuZ3RoIC0gMiksXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmFjY2VwdGVkRXh0ZW5zaW9ucygpLmluY2x1ZGVzKGZpbGVUeXBlKSkgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5hY2NlcHRlZEV4dGVuc2lvbnMoKS5pbmNsdWRlcyhcbiAgICAgICAgZmlsZU5hbWUuc3Vic3RyaW5nKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxKSxcbiAgICAgIClcbiAgICApXG4gICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc1ZhbGlkRmlsZVNpemUoZmlsZVNpemU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldEZpbGVTaXplSW5NQihmaWxlU2l6ZSkgPD0gdGhpcy5maWxlU2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0ZpbGVEdXBsaWNhdGUoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbGVEYXRhTGlzdC5zb21lKChleGlzdGluZykgPT4gZXhpc3RpbmcubmFtZSA9PT0gZmlsZU5hbWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzVXBsb2FkSW5Qcm9ncmVzcyhmaWxlOiBGaWxlRGF0YSkge1xuICAgIHJldHVybiAhZmlsZS5lcnJvciAmJiB0aGlzLmdldFByb2dyZXNzKGZpbGUpIDwgMTAwO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzVXBsb2FkQ29tcGxldGVkKGZpbGU6IEZpbGVEYXRhKSB7XG4gICAgcmV0dXJuICFmaWxlLmVycm9yICYmIHRoaXMuZ2V0UHJvZ3Jlc3MoZmlsZSkgPT09IDEwMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0Vycm9yRmlsZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZURhdGFMaXN0LnNvbWUoKGZpbGUpID0+IGZpbGUuZXJyb3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0Zvcm1hdEVycm9yKGZpbGU6IEZpbGVEYXRhKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChmaWxlLmVycm9yICYmIGZpbGUuZXJyb3JUeXBlID09PSAnZm9ybWF0JykgfHwgZmFsc2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNGb3JtYXRFcnJvckZpbGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbGVEYXRhTGlzdC5zb21lKChmaWxlKSA9PiB0aGlzLmlzRm9ybWF0RXJyb3IoZmlsZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1NpemVFcnJvcihmaWxlOiBGaWxlRGF0YSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoZmlsZS5lcnJvciAmJiBmaWxlLmVycm9yVHlwZSA9PT0gJ3NpemUnKSB8fCBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc1NpemVFcnJvckZpbGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbGVEYXRhTGlzdC5zb21lKChmaWxlKSA9PiB0aGlzLmlzU2l6ZUVycm9yKGZpbGUpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVEcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBkcm9wem9uZUVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGRyb3B6b25lRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdibWJfZHJvcC16b25lLWNvbnRhaW5lci11cGxvYWRpbmctZmlsZScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZURyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBkcm9wem9uZUVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGRyb3B6b25lRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdibWJfZHJvcC16b25lLWNvbnRhaW5lci11cGxvYWRpbmctZmlsZScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZURyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgZHJvcHpvbmVFbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBkcm9wem9uZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYm1iLWRyb3Atem9uZScpO1xuICAgIGRyb3B6b25lRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdibWJfZHJvcC16b25lLWNvbnRhaW5lci11cGxvYWRpbmctZmlsZScpO1xuXG4gICAgY29uc3QgZmlsZXMgPSBldmVudC5kYXRhVHJhbnNmZXI/LmZpbGVzO1xuICAgIGlmIChmaWxlcyAmJiAhIWZpbGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5nZXRGaWxlQW5kVmFsaWRhdGUodGhpcy5tdWx0aXBsZSgpID8gQXJyYXkuZnJvbShmaWxlcykgOiBmaWxlc1swXSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBfaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgIGlmIChfaW5wdXQuZmlsZXM/LlswXSkge1xuICAgICAgY29uc3QgZmlsZXMgPSBfaW5wdXQuZmlsZXM7XG4gICAgICBpZiAoZmlsZXMgJiYgISFmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5nZXRGaWxlQW5kVmFsaWRhdGUodGhpcy5tdWx0aXBsZSgpID8gQXJyYXkuZnJvbShmaWxlcykgOiBmaWxlc1swXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVJlbW92ZUZpbGUoZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZmlsZURhdGFMaXN0ID0gdGhpcy5maWxlRGF0YUxpc3QuZmlsdGVyKFxuICAgICAgKGZpbGUpID0+IGZpbGUubmFtZSAhPT0gZmlsZU5hbWUsXG4gICAgKTtcblxuICAgIGlmICh0aGlzLm11bHRpcGxlKCkpIHtcbiAgICAgIGNvbnN0IF9maWxlTmFtZXMgPSB0aGlzLmNvbnRyb2woKS52YWx1ZTtcbiAgICAgIHRoaXMuY29udHJvbCgpLnBhdGNoVmFsdWUoXG4gICAgICAgIEFycmF5LmZyb20oX2ZpbGVOYW1lcykuZmlsdGVyKChfZmlsZU5hbWUpID0+IF9maWxlTmFtZSAhPT0gZmlsZU5hbWUpLFxuICAgICAgKTtcbiAgICAgIHRoaXMuY29udHJvbCgpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgX2ZpbGVOYW1lID0gdGhpcy5jb250cm9sKCkudmFsdWU7XG4gICAgICB0aGlzLmNvbnRyb2woKS5wYXRjaFZhbHVlKF9maWxlTmFtZSA9PT0gZmlsZU5hbWUgPyBudWxsIDogX2ZpbGVOYW1lKTtcbiAgICAgIHRoaXMuY29udHJvbCgpLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbGVSZW1vdmVkLmVtaXQoZmlsZU5hbWUpO1xuICB9XG5cbiAgaGFuZGxlVmFsaWRpdHkoKTogdm9pZCB7XG4gICAgaGFuZGxlVmFsaWRpdHkodGhpcy5jb250cm9sKCkpO1xuICB9XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5maWxlRGF0YUxpc3QgPSBbXTtcbiAgICB0aGlzLmNvbnRyb2woKS5wYXRjaFZhbHVlKHRoaXMubXVsdGlwbGUoKSA/IFtudWxsXSA6IG51bGwpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIiwiPGJtYi1pbnB1dC12YWxpZGF0b3JcbiAgdHlwZT1cImZpbGVcIlxuICBbbmFtZV09XCJuYW1lKClcIlxuICBbY29udHJvbF09XCJjb250cm9sKClcIlxuICBbaW5wdXRJZF09XCJpbnB1dElkKClcIlxuICBbaXNNdWx0aXBsZUZpbGVdPVwibXVsdGlwbGUoKVwiXG4gIFtjdXN0b21WYWxpZGF0aW9uXT1cImN1c3RvbVZhbGlkYXRpb24oKVwiXG4+XG4gIDxzZWN0aW9uIGNsYXNzPVwiYm1iX2Ryb3Atem9uZVwiIGJtYlZlcnRpY2FsTGF5b3V0IGdhcFNpemU9XCJsXCI+XG4gICAgPHNlY3Rpb25cbiAgICAgIGNsYXNzPVwiYm1iX2Ryb3Atem9uZS1jb250YWluZXJcIlxuICAgICAgW25nQ2xhc3NdPVwiZ2V0RHJvcFpvbmVDbGFzcygpXCJcbiAgICAgIChkcmFnb3Zlcik9XCJoYW5kbGVEcmFnT3ZlcigkZXZlbnQpXCJcbiAgICAgIChkcmFnbGVhdmUpPVwiaGFuZGxlRHJhZ0xlYXZlKCRldmVudClcIlxuICAgICAgKGRyb3ApPVwiaGFuZGxlRHJvcCgkZXZlbnQpXCJcbiAgICAgIGJtYlZlcnRpY2FsTGF5b3V0SXRlbVxuICAgICAgYm1iVmVydGljYWxMYXlvdXRcbiAgICAgIGdhcFNpemU9XCJtXCJcbiAgICAgIGp1c3RpZnk9XCJjZW50ZXJcIlxuICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgPlxuICAgICAgPGJtYi1pY29uXG4gICAgICAgIGNsYXNzPVwiYm1iX2Ryb3Atem9uZS1pY29uXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdibWJfZHJvcC16b25lLWljb24tdmFsaWQnOiBpc0Vycm9yRmlsZXMoKSxcbiAgICAgICAgICAnYm1iX2Ryb3Atem9uZS1pY29uLWVycm9yJzogaXNFcnJvckZpbGVzKClcbiAgICAgICAgfVwiXG4gICAgICAgIFtpY29uXT1cIm1haW5JY29uKClcIlxuICAgICAgICBbc2l6ZV09XCI0OFwiXG4gICAgICAgIGFsdD1cIkRyb3Agem9uZSBpY29uXCJcbiAgICAgICAgYm1iVmVydGljYWxMYXlvdXRJdGVtXG4gICAgICAgIFtpc0Z1bGxXaWR0aF09XCJmYWxzZVwiXG4gICAgICAvPlxuXG4gICAgICA8cFxuICAgICAgICBjbGFzcz1cImJtYl9kcm9wLXpvbmUtbGFiZWxcIlxuICAgICAgICBibWJWZXJ0aWNhbExheW91dEl0ZW1cbiAgICAgICAgW2lzRnVsbFdpZHRoXT1cImZhbHNlXCJcbiAgICAgID5cbiAgICAgICAge3sgZm9ybWF0RmlsZXNMYWJlbCgpIHx8ICgnZHJvcHpvbmUuZm9ybWF0X2ZpbGVzX2xhYmVsJyB8IHRyYW5zbGF0ZSkgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxwXG4gICAgICAgIGNsYXNzPVwiYm1iX2Ryb3Atem9uZS1sYWJlbC1pbnN0cnVjdGlvblwiXG4gICAgICAgIGJtYlZlcnRpY2FsTGF5b3V0SXRlbVxuICAgICAgICBbaXNGdWxsV2lkdGhdPVwiZmFsc2VcIlxuICAgICAgPlxuICAgICAgICB7eyBkcm9wSW5zdHJ1Y3Rpb24oKSB8fCAoJ2Ryb3B6b25lLmRyb3BfaW5zdHJ1Y3Rpb25zJyB8IHRyYW5zbGF0ZSkgfX1cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgY2xhc3M9XCJibWJfZHJvcC16b25lLWlucHV0IGJtYl9kcm9wLXpvbmUtaW5wdXQtdW5kZXJsaW5lZFwiXG4gICAgICAgICAgW2Zvcl09XCJpbnB1dElkKClcIlxuICAgICAgICAgIGJtYlZlcnRpY2FsTGF5b3V0SXRlbVxuICAgICAgICAgIFtpc0Z1bGxXaWR0aF09XCJmYWxzZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBkcm9wTGFiZWwoKSB8fCAoJ2Ryb3B6b25lLmRyb3BfbGFiZWwnIHwgdHJhbnNsYXRlKSB9fVxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaGlkZGVuXG4gICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICBbaWRdPVwiaW5wdXRJZCgpXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWUoKVwiXG4gICAgICAgICAgICBbYWNjZXB0XT1cImFjY2VwdGVkRXh0ZW5zaW9ucygpLnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgW2F0dHIubXVsdGlwbGVdPVwibXVsdGlwbGUoKSB8fCBudWxsXCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCItMVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9wPlxuICAgICAgQGlmIChpc0Vycm9yRmlsZXMoKSkge1xuICAgICAgICA8cFxuICAgICAgICAgIGNsYXNzPVwiYm1iX2Ryb3Atem9uZS1sYWJlbC1lcnJvclwiXG4gICAgICAgICAgYm1iVmVydGljYWxMYXlvdXRJdGVtXG4gICAgICAgICAgW2lzRnVsbFdpZHRoXT1cImZhbHNlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGVycm9yTWVzc2FnZUxhYmVsIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgQGlmICghIWxpbmtGaWxlc1N1cHBvcnRlZCgpICYmICEhbGlua0xhYmVsKCkpIHtcbiAgICAgICAgICA8Ym1iLXRleHQtbGlua1xuICAgICAgICAgICAgdGV4dExpbmtTdHlsZT1cInVuZGVybGluZWRcIlxuICAgICAgICAgICAgW2xpbmtdPVwibGlua0ZpbGVzU3VwcG9ydGVkKClcIlxuICAgICAgICAgICAgW3RleHRMaW5rXT1cImxpbmtMYWJlbCgpIHx8ICgnZHJvcHpvbmUubGlua19sYWJlbCcgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgIGJtYlZlcnRpY2FsTGF5b3V0SXRlbVxuICAgICAgICAgICAgW2lzRnVsbFdpZHRoXT1cImZhbHNlXCJcbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9zZWN0aW9uPlxuICAgIEBpZiAoISFmaWxlRGF0YUxpc3QubGVuZ3RoKSB7XG4gICAgICBAZm9yIChmaWxlIG9mIG9yZ2FuaXplZEZpbGVzOyB0cmFjayBmaWxlLm5hbWUpIHtcbiAgICAgICAgPGJtYi1wcm9ncmVzcy1iYXJcbiAgICAgICAgICBjbGFzcz1cImJtYi1kcm9wLXpvbmUtZmlsZVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2JtYl9kcm9wLXpvbmUtaWNvbi1hbmltYXRlZCc6IGlzVXBsb2FkSW5Qcm9ncmVzcyhmaWxlKVxuICAgICAgICAgIH1cIlxuICAgICAgICAgIHR5cGU9XCJjb250YWluZXJcIlxuICAgICAgICAgIFt0b3RhbENvdW50XT1cIlxuICAgICAgICAgICAgaXNVcGxvYWRJblByb2dyZXNzKGZpbGUpID8gMTAwIDogZ2V0RmlsZVNpemVJbk1CKGZpbGUuc2l6ZSlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFt0ZXh0Rm9ybWF0XT1cIlxuICAgICAgICAgICAgZmlsZS5lcnJvciB8fCBpc1VwbG9hZENvbXBsZXRlZChmaWxlKVxuICAgICAgICAgICAgICA/ICFpc1ZhbGlkRmlsZVNpemUoZmlsZS5zaXplKVxuICAgICAgICAgICAgICAgID8gZ2V0Rm9ybWF0U2l6ZUVycm9yXG4gICAgICAgICAgICAgICAgOiBnZXRGb3JtYXRTaXplXG4gICAgICAgICAgICAgIDogZ2V0Rm9ybWF0UHJvZ3Jlc3NcbiAgICAgICAgICBcIlxuICAgICAgICAgIFt0ZXh0Rm9ybWF0U2VwYXJhdG9yXT1cImlzVXBsb2FkSW5Qcm9ncmVzcyhmaWxlKSA/ICcnIDogJy8nXCJcbiAgICAgICAgICBbY291bnRlcl09XCJcbiAgICAgICAgICAgIGlzVXBsb2FkSW5Qcm9ncmVzcyhmaWxlKVxuICAgICAgICAgICAgICA/IGdldFByb2dyZXNzKGZpbGUpXG4gICAgICAgICAgICAgIDogZ2V0RmlsZVNpemVJbk1CKGZpbGUuc2l6ZSlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFt0aXRsZV09XCJnZXRGaWxlTmFtZShmaWxlKVwiXG4gICAgICAgICAgW2FwcGVhcmFuY2VdPVwiZmlsZS5lcnJvciA/ICdlcnJvcicgOiAnaW5mbydcIlxuICAgICAgICAgIFtpc0NvbnRhaW5lcl09XCJ0cnVlXCJcbiAgICAgICAgICBbYXZhdGFySWNvbl09XCJnZXRBdmF0YXJJY29uKGZpbGUpXCJcbiAgICAgICAgICBbYWN0aW9uSWNvbl09XCJmaWxlLmVycm9yID8gJ2Nsb3NlJyA6ICdkZWxldGUnXCJcbiAgICAgICAgICBbc2hvd1N0YXR1c0ljb25dPVwiaXNVcGxvYWRDb21wbGV0ZWQoZmlsZSlcIlxuICAgICAgICAgIChhY3Rpb25DbGljayk9XCJoYW5kbGVSZW1vdmVGaWxlKGZpbGUubmFtZSlcIlxuICAgICAgICAgIGJtYlZlcnRpY2FsTGF5b3V0SXRlbVxuICAgICAgICAvPlxuICAgICAgfVxuICAgIH1cbiAgPC9zZWN0aW9uPlxuPC9ibWItaW5wdXQtdmFsaWRhdG9yPlxuIl19