@skyux/forms 11.30.1 → 12.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/documentation.json +1931 -1913
  2. package/fesm2022/skyux-forms.mjs +180 -179
  3. package/fesm2022/skyux-forms.mjs.map +1 -1
  4. package/package.json +15 -19
  5. package/esm2022/index.mjs +0 -44
  6. package/esm2022/lib/modules/character-counter/character-counter-indicator.component.mjs +0 -38
  7. package/esm2022/lib/modules/character-counter/character-counter-screen-reader.pipe.mjs +0 -46
  8. package/esm2022/lib/modules/character-counter/character-counter.directive.mjs +0 -96
  9. package/esm2022/lib/modules/character-counter/character-counter.module.mjs +0 -43
  10. package/esm2022/lib/modules/checkbox/checkbox-change.mjs +0 -2
  11. package/esm2022/lib/modules/checkbox/checkbox-group-heading-level.mjs +0 -2
  12. package/esm2022/lib/modules/checkbox/checkbox-group-heading-style.mjs +0 -2
  13. package/esm2022/lib/modules/checkbox/checkbox-group.component.mjs +0 -156
  14. package/esm2022/lib/modules/checkbox/checkbox-label-text-label.component.mjs +0 -29
  15. package/esm2022/lib/modules/checkbox/checkbox-label.component.mjs +0 -18
  16. package/esm2022/lib/modules/checkbox/checkbox.component.mjs +0 -397
  17. package/esm2022/lib/modules/checkbox/checkbox.module.mjs +0 -75
  18. package/esm2022/lib/modules/field-group/field-group-heading-level.mjs +0 -2
  19. package/esm2022/lib/modules/field-group/field-group-heading-style.mjs +0 -2
  20. package/esm2022/lib/modules/field-group/field-group.component.mjs +0 -75
  21. package/esm2022/lib/modules/field-group/field-group.module.mjs +0 -16
  22. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment-change.mjs +0 -2
  23. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment-click.mjs +0 -2
  24. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment-join-ids.pipe.mjs +0 -22
  25. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment-label.component.mjs +0 -31
  26. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment.component.mjs +0 -486
  27. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment.module.mjs +0 -24
  28. package/esm2022/lib/modules/file-attachment/file-attachment/file-attachment.service.mjs +0 -103
  29. package/esm2022/lib/modules/file-attachment/file-attachments.module.mjs +0 -20
  30. package/esm2022/lib/modules/file-attachment/file-drop/file-drop-change.mjs +0 -2
  31. package/esm2022/lib/modules/file-attachment/file-drop/file-drop.component.mjs +0 -338
  32. package/esm2022/lib/modules/file-attachment/file-drop/file-drop.module.mjs +0 -18
  33. package/esm2022/lib/modules/file-attachment/file-drop/file-item.component.mjs +0 -156
  34. package/esm2022/lib/modules/file-attachment/file-drop/file-link.mjs +0 -2
  35. package/esm2022/lib/modules/file-attachment/shared/file-item-error-type.mjs +0 -2
  36. package/esm2022/lib/modules/file-attachment/shared/file-item.mjs +0 -2
  37. package/esm2022/lib/modules/file-attachment/shared/file-item.service.mjs +0 -71
  38. package/esm2022/lib/modules/file-attachment/shared/file-size.pipe.mjs +0 -61
  39. package/esm2022/lib/modules/file-attachment/shared/file-validate-function.mjs +0 -2
  40. package/esm2022/lib/modules/form-error/form-error.component.mjs +0 -56
  41. package/esm2022/lib/modules/form-error/form-error.module.mjs +0 -16
  42. package/esm2022/lib/modules/form-error/form-errors-enabled-token.mjs +0 -6
  43. package/esm2022/lib/modules/form-error/form-errors.component.mjs +0 -50
  44. package/esm2022/lib/modules/form-error/form-errors.module.mjs +0 -20
  45. package/esm2022/lib/modules/input-box/input-box-adapter.service.mjs +0 -63
  46. package/esm2022/lib/modules/input-box/input-box-control.directive.mjs +0 -33
  47. package/esm2022/lib/modules/input-box/input-box-hint-text.pipe.mjs +0 -23
  48. package/esm2022/lib/modules/input-box/input-box-host.service.mjs +0 -72
  49. package/esm2022/lib/modules/input-box/input-box-populate-args.mjs +0 -2
  50. package/esm2022/lib/modules/input-box/input-box.component.mjs +0 -276
  51. package/esm2022/lib/modules/input-box/input-box.module.mjs +0 -58
  52. package/esm2022/lib/modules/radio/radio-group-id.service.mjs +0 -50
  53. package/esm2022/lib/modules/radio/radio-group.component.mjs +0 -390
  54. package/esm2022/lib/modules/radio/radio-label.component.mjs +0 -34
  55. package/esm2022/lib/modules/radio/radio.component.mjs +0 -357
  56. package/esm2022/lib/modules/radio/radio.module.mjs +0 -71
  57. package/esm2022/lib/modules/radio/types/radio-change.mjs +0 -2
  58. package/esm2022/lib/modules/radio/types/radio-group-heading-level.mjs +0 -2
  59. package/esm2022/lib/modules/radio/types/radio-group-heading-style.mjs +0 -2
  60. package/esm2022/lib/modules/radio/types/radio-type.mjs +0 -2
  61. package/esm2022/lib/modules/required-state/required-state.directive.mjs +0 -34
  62. package/esm2022/lib/modules/selection-box/selection-box-adapter.service.mjs +0 -128
  63. package/esm2022/lib/modules/selection-box/selection-box-description.component.mjs +0 -14
  64. package/esm2022/lib/modules/selection-box/selection-box-grid.component.mjs +0 -141
  65. package/esm2022/lib/modules/selection-box/selection-box-header.component.mjs +0 -14
  66. package/esm2022/lib/modules/selection-box/selection-box.component.mjs +0 -132
  67. package/esm2022/lib/modules/selection-box/selection-box.module.mjs +0 -40
  68. package/esm2022/lib/modules/selection-box/types/selection-box-grid-align-items-type.mjs +0 -2
  69. package/esm2022/lib/modules/selection-box/types/selection-box-grid-align-items.mjs +0 -2
  70. package/esm2022/lib/modules/shared/sky-forms-resources.module.mjs +0 -142
  71. package/esm2022/lib/modules/toggle-switch/toggle-switch-label.component.mjs +0 -25
  72. package/esm2022/lib/modules/toggle-switch/toggle-switch.component.mjs +0 -202
  73. package/esm2022/lib/modules/toggle-switch/toggle-switch.module.mjs +0 -36
  74. package/esm2022/lib/modules/toggle-switch/types/toggle-switch-change.mjs +0 -2
  75. package/esm2022/skyux-forms.mjs +0 -5
  76. package/esm2022/testing/legacy/checkbox-fixture.mjs +0 -92
  77. package/esm2022/testing/legacy/radio-fixture.mjs +0 -85
  78. package/esm2022/testing/modules/character-counter/character-counter-indicator-harness-filters.mjs +0 -2
  79. package/esm2022/testing/modules/character-counter/character-counter-indicator-harness.mjs +0 -53
  80. package/esm2022/testing/modules/checkbox/checkbox-group-harness-filters.mjs +0 -2
  81. package/esm2022/testing/modules/checkbox/checkbox-group-harness.mjs +0 -158
  82. package/esm2022/testing/modules/checkbox/checkbox-harness-filters.mjs +0 -2
  83. package/esm2022/testing/modules/checkbox/checkbox-harness.mjs +0 -196
  84. package/esm2022/testing/modules/checkbox/checkbox-label-harness.mjs +0 -19
  85. package/esm2022/testing/modules/checkbox/checkbox-label-text-label.harness.mjs +0 -19
  86. package/esm2022/testing/modules/field-group/field-group-harness-filters.mjs +0 -2
  87. package/esm2022/testing/modules/field-group/field-group-harness.mjs +0 -92
  88. package/esm2022/testing/modules/file-attachment/file-attachment/file-attachment-harness-filters.mjs +0 -2
  89. package/esm2022/testing/modules/file-attachment/file-attachment/file-attachment-harness.mjs +0 -193
  90. package/esm2022/testing/modules/file-attachment/file-drop/file-drop-harness-filters.mjs +0 -2
  91. package/esm2022/testing/modules/file-attachment/file-drop/file-drop-harness.mjs +0 -39
  92. package/esm2022/testing/modules/file-attachment/shared/provide-file-attachment-testing.mjs +0 -14
  93. package/esm2022/testing/modules/form-error/form-error-harness.filters.mjs +0 -2
  94. package/esm2022/testing/modules/form-error/form-error-harness.mjs +0 -21
  95. package/esm2022/testing/modules/form-error/form-errors-harness.filters.mjs +0 -2
  96. package/esm2022/testing/modules/form-error/form-errors-harness.mjs +0 -34
  97. package/esm2022/testing/modules/input-box/input-box-harness-filters.mjs +0 -2
  98. package/esm2022/testing/modules/input-box/input-box-harness.mjs +0 -188
  99. package/esm2022/testing/modules/radio/radio-group-harness-filters.mjs +0 -2
  100. package/esm2022/testing/modules/radio/radio-group-harness.mjs +0 -156
  101. package/esm2022/testing/modules/radio/radio-harness-filters.mjs +0 -2
  102. package/esm2022/testing/modules/radio/radio-harness.mjs +0 -147
  103. package/esm2022/testing/modules/radio/radio-label-harness.mjs +0 -19
  104. package/esm2022/testing/public-api.mjs +0 -17
  105. package/esm2022/testing/skyux-forms-testing.mjs +0 -5
@@ -1,338 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, HostBinding, Input, Output, ViewChild, booleanAttribute, inject, } from '@angular/core';
3
- import { FormsModule } from '@angular/forms';
4
- import { SkyIdModule, SkyLiveAnnouncerService } from '@skyux/core';
5
- import { SkyIdService } from '@skyux/core';
6
- import { SkyHelpInlineModule } from '@skyux/help-inline';
7
- import { SkyLibResourcesService } from '@skyux/i18n';
8
- import { SkyIconModule } from '@skyux/icon';
9
- import { SkyThemeModule } from '@skyux/theme';
10
- import { take } from 'rxjs/operators';
11
- import { SkyFormErrorComponent } from '../../form-error/form-error.component';
12
- import { SKY_FORM_ERRORS_ENABLED } from '../../form-error/form-errors-enabled-token';
13
- import { SkyFormErrorsComponent } from '../../form-error/form-errors.component';
14
- import { SkyInputBoxModule } from '../../input-box/input-box.module';
15
- import { SkyFormsResourcesModule } from '../../shared/sky-forms-resources.module';
16
- import { SkyFileAttachmentService } from '../file-attachment/file-attachment.service';
17
- import { SkyFileSizePipe } from '../shared/file-size.pipe';
18
- import * as i0 from "@angular/core";
19
- import * as i1 from "@angular/common";
20
- import * as i2 from "@angular/forms";
21
- import * as i3 from "@skyux/i18n";
22
- import * as i4 from "@skyux/help-inline";
23
- import * as i5 from "@skyux/icon";
24
- import * as i6 from "@skyux/core";
25
- import * as i7 from "../../input-box/input-box.component";
26
- import * as i8 from "../../input-box/input-box-control.directive";
27
- import * as i9 from "@skyux/theme";
28
- const MAX_FILE_SIZE_DEFAULT = 500000;
29
- const MIN_FILE_SIZE_DEFAULT = 0;
30
- /**
31
- * Provides an element to attach multiple files where users can browse or drag and drop local files
32
- * or provide hyperlinks to external files. You can leave the contents of the component
33
- * blank to display the drop zone's default UI, or you can specify custom content to
34
- * display instead. When the module initializes, it disables the ability to drag and
35
- * drop files for the entire window to prevent the browser from opening files that are
36
- * accidentally dropped outside the target zone. If you implement your own file drop functionality
37
- * outside of the file drop component, you can place the `sky-file-drop-target` CSS class
38
- * on the element that receives drop events to exempt it from the drop exclusion rule.
39
- */
40
- export class SkyFileDropComponent {
41
- constructor() {
42
- /**
43
- * Fires when users add or remove files.
44
- */
45
- this.filesChanged = new EventEmitter();
46
- /**
47
- * Fires when the link input box triggers a blur event.
48
- */
49
- this.linkInputBlur = new EventEmitter();
50
- /**
51
- * Fires when users add or remove links.
52
- */
53
- this.linkChanged = new EventEmitter();
54
- /**
55
- * Whether users can drag and drop multiple files at the same time.
56
- */
57
- this.multiple = true;
58
- /**
59
- * Whether to disable the option to browse for files to attach.
60
- */
61
- this.noClick = false;
62
- /**
63
- * Whether to display the option to attach files from URLs rather than from local devices.
64
- */
65
- this.allowLinks = false;
66
- /**
67
- * Whether to hide `labelText` from view.
68
- */
69
- this.labelHidden = false;
70
- /**
71
- * Whether uploading a file or link is required.
72
- * When you set this property to `true`, the component adds `aria-required` and `required`
73
- * attributes to the input elements so that screen readers announce an invalid state until the input element
74
- * is complete.
75
- * For more information about the `aria-required` attribute, see the [WAI-ARIA definition](https://www.w3.org/TR/wai-aria/#aria-required).
76
- */
77
- this.required = false;
78
- /**
79
- * Whether the file attachment is stacked on another form component. When specified, the appropriate
80
- * vertical spacing is automatically added to the file attachment.
81
- */
82
- this.stacked = false;
83
- this.rejectedOver = false;
84
- this.acceptedOver = false;
85
- this.#_maxFileSize = MAX_FILE_SIZE_DEFAULT;
86
- this.#_minFileSize = MIN_FILE_SIZE_DEFAULT;
87
- this.#fileAttachmentService = inject(SkyFileAttachmentService);
88
- this.#liveAnnouncerSvc = inject(SkyLiveAnnouncerService);
89
- this.#resourcesSvc = inject(SkyLibResourcesService);
90
- this.#idSvc = inject(SkyIdService);
91
- this.errorId = this.#idSvc.generateId();
92
- this.rejectedFiles = [];
93
- }
94
- /**
95
- * The minimum size in bytes for valid files.
96
- * @default 0
97
- */
98
- set minFileSize(value) {
99
- this.#_minFileSize = value ?? MIN_FILE_SIZE_DEFAULT;
100
- }
101
- get minFileSize() {
102
- return this.#_minFileSize;
103
- }
104
- /**
105
- * The maximum size in bytes for valid files.
106
- * @default 500000
107
- */
108
- set maxFileSize(value) {
109
- this.#_maxFileSize = value ?? MAX_FILE_SIZE_DEFAULT;
110
- }
111
- get maxFileSize() {
112
- return this.#_maxFileSize;
113
- }
114
- #enterEventTarget;
115
- #_maxFileSize;
116
- #_minFileSize;
117
- #fileAttachmentService;
118
- #liveAnnouncerSvc;
119
- #resourcesSvc;
120
- #idSvc;
121
- ngOnDestroy() {
122
- this.filesChanged.complete();
123
- this.linkChanged.complete();
124
- this.linkInputBlur.complete();
125
- }
126
- dropClicked() {
127
- if (!this.noClick && this.inputEl) {
128
- this.inputEl.nativeElement.click();
129
- }
130
- }
131
- fileChangeEvent(fileChangeEvent) {
132
- this.#handleFiles(fileChangeEvent.target?.files);
133
- }
134
- fileDragEnter(dragEnterEvent) {
135
- // Save this target to know when the drag event leaves
136
- this.#enterEventTarget = dragEnterEvent.target;
137
- dragEnterEvent.stopPropagation();
138
- dragEnterEvent.preventDefault();
139
- }
140
- fileDragOver(dragOverEvent) {
141
- const transfer = dragOverEvent.dataTransfer;
142
- dragOverEvent.stopPropagation();
143
- dragOverEvent.preventDefault();
144
- if (transfer) {
145
- if (transfer.items) {
146
- const files = Array.from(transfer.items);
147
- for (const file of files) {
148
- if (file.type &&
149
- this.#fileAttachmentService.fileTypeRejected(file.type, this.acceptedTypes)) {
150
- this.rejectedOver = true;
151
- this.acceptedOver = false;
152
- return;
153
- }
154
- }
155
- if (files.length > 0 && !this.acceptedOver) {
156
- this.rejectedOver = false;
157
- this.acceptedOver = true;
158
- }
159
- } /* istanbul ignore next: untestable */
160
- else if (transfer.files) {
161
- // If the browser does not support DataTransfer.items,
162
- // defer file-type checking to drop handler.
163
- // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items#Browser_compatibility
164
- this.rejectedOver = false;
165
- this.acceptedOver = true;
166
- }
167
- }
168
- }
169
- fileDrop(dropEvent) {
170
- dropEvent.stopPropagation();
171
- dropEvent.preventDefault();
172
- this.#enterEventTarget = undefined;
173
- this.rejectedOver = false;
174
- this.acceptedOver = false;
175
- if (dropEvent.dataTransfer && dropEvent.dataTransfer.files) {
176
- const hasDirectory = this.#fileAttachmentService.hasDirectory(dropEvent.dataTransfer.files);
177
- const invalidNumberOfFiles = !this.multiple && dropEvent.dataTransfer.files.length > 1;
178
- if (hasDirectory || invalidNumberOfFiles) {
179
- return;
180
- }
181
- this.#handleFiles(dropEvent.dataTransfer.files);
182
- }
183
- }
184
- fileDragLeave(dragLeaveEvent) {
185
- if (this.#enterEventTarget === dragLeaveEvent.target) {
186
- this.rejectedOver = false;
187
- this.acceptedOver = false;
188
- }
189
- }
190
- addLinkEnter(event) {
191
- if (event.which === 13) {
192
- this.addLink(event);
193
- }
194
- }
195
- addLink(event) {
196
- event.preventDefault();
197
- this.linkChanged.emit({ url: this.linkUrl });
198
- this.#announceState('skyux_file_attachment_file_upload_link_added', this.linkUrl);
199
- this.linkUrl = undefined;
200
- }
201
- onLinkBlur() {
202
- this.linkInputBlur.emit();
203
- }
204
- #announceState(resourceString, ...args) {
205
- this.#resourcesSvc
206
- .getString(resourceString, ...args)
207
- .pipe(take(1))
208
- .subscribe((internationalizedString) => {
209
- this.#liveAnnouncerSvc.announce(internationalizedString);
210
- });
211
- }
212
- #emitFileChangeEvent(totalFiles, rejectedFileArray, validFileArray) {
213
- if (totalFiles === rejectedFileArray.length + validFileArray.length) {
214
- this.filesChanged.emit({
215
- files: validFileArray,
216
- rejectedFiles: rejectedFileArray,
217
- });
218
- if (this.inputEl) {
219
- this.inputEl.nativeElement.value = '';
220
- }
221
- }
222
- }
223
- #filesRejected(file, validFileArray, rejectedFileArray, totalFiles) {
224
- rejectedFileArray.push(file);
225
- this.#emitFileChangeEvent(totalFiles, rejectedFileArray, validFileArray);
226
- }
227
- #loadFile(fileDrop, file, validFileArray, rejectedFileArray, totalFiles) {
228
- const reader = new FileReader();
229
- reader.addEventListener('load', (event) => {
230
- file.url = event.target.result;
231
- validFileArray.push(file);
232
- fileDrop.#emitFileChangeEvent(totalFiles, rejectedFileArray, validFileArray);
233
- this.#announceState('skyux_file_attachment_file_upload_file_added', file.file.name);
234
- });
235
- reader.addEventListener('error', () => {
236
- fileDrop.#filesRejected(file, validFileArray, rejectedFileArray, totalFiles);
237
- });
238
- reader.addEventListener('abort', () => {
239
- fileDrop.#filesRejected(file, validFileArray, rejectedFileArray, totalFiles);
240
- });
241
- reader.readAsDataURL(file.file);
242
- }
243
- #handleFiles(files) {
244
- if (files) {
245
- const validFileArray = [];
246
- const rejectedFileArray = [];
247
- const totalFiles = files.length;
248
- const processedFiles = this.#fileAttachmentService.checkFiles(files, this.minFileSize, this.maxFileSize, this.acceptedTypes, this.validateFn);
249
- for (const file of processedFiles) {
250
- if (file.errorType) {
251
- this.#filesRejected(file, validFileArray, rejectedFileArray, totalFiles);
252
- }
253
- else {
254
- this.#loadFile(this, file, validFileArray, rejectedFileArray, totalFiles);
255
- }
256
- }
257
- this.rejectedFiles = rejectedFileArray;
258
- }
259
- }
260
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyFileDropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
261
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SkyFileDropComponent, isStandalone: true, selector: "sky-file-drop", inputs: { fileUploadAriaLabel: "fileUploadAriaLabel", linkUploadAriaLabel: "linkUploadAriaLabel", linkUploadHintText: "linkUploadHintText", minFileSize: "minFileSize", maxFileSize: "maxFileSize", multiple: "multiple", validateFn: "validateFn", acceptedTypes: "acceptedTypes", acceptedTypesErrorMessage: "acceptedTypesErrorMessage", noClick: "noClick", allowLinks: "allowLinks", labelText: "labelText", labelHidden: ["labelHidden", "labelHidden", booleanAttribute], hintText: "hintText", required: ["required", "required", booleanAttribute], helpPopoverContent: "helpPopoverContent", helpPopoverTitle: "helpPopoverTitle", stacked: ["stacked", "stacked", booleanAttribute], helpKey: "helpKey" }, outputs: { filesChanged: "filesChanged", linkInputBlur: "linkInputBlur", linkChanged: "linkChanged" }, host: { properties: { "class.sky-form-field-stacked": "this.stacked" } }, providers: [
262
- SkyFileAttachmentService,
263
- { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
264
- ], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<fieldset class=\"sky-file-drop-wrapper\">\n @if (labelText) {\n <legend\n class=\"sky-control-label sky-font-body-default\"\n [ngClass]=\"{\n 'sky-screen-reader-only': labelHidden\n }\"\n >\n <span\n class=\"sky-file-drop-label-text\"\n [ngClass]=\"{\n 'sky-control-label-required': required\n }\"\n >{{ labelText }}</span\n >\n @if (required) {\n <span class=\"sky-screen-reader-only\">{{\n 'skyux_file_attachment_required' | skyLibResources\n }}</span>\n }\n @if (helpPopoverContent || helpKey) {\n <span class=\"sky-control-help-container\">\n <sky-help-inline\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n </span>\n }\n </legend>\n }\n <div\n class=\"sky-file-drop-row\"\n [ngClass]=\"{ 'sky-file-drop-allow-links': allowLinks }\"\n >\n <div\n class=\"sky-file-drop-col\"\n [ngClass]=\"{\n 'sky-file-drop-accept': acceptedOver,\n 'sky-file-drop-reject': rejectedOver\n }\"\n >\n <button\n class=\"sky-file-drop sky-file-drop-target\"\n type=\"button\"\n [attr.aria-label]=\"\n fileUploadAriaLabel ||\n ('skyux_file_attachment_file_upload_drag_or_click' | skyLibResources)\n \"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [attr.aria-invalid]=\"!!rejectedFiles.length\"\n [attr.aria-errormessage]=\"\n labelText && rejectedFiles.length ? errorId : undefined\n \"\n (click)=\"dropClicked()\"\n (dragover)=\"fileDragOver($event)\"\n (dragenter)=\"fileDragEnter($event)\"\n (dragleave)=\"fileDragLeave($event)\"\n (drop)=\"fileDrop($event)\"\n ></button>\n\n <input\n #fileInput\n tabindex=\"-1\"\n aria-hidden=\"true\"\n type=\"file\"\n class=\"sky-file-input-hidden\"\n [attr.multiple]=\"multiple ? multiple : null\"\n [attr.accept]=\"acceptedTypes ? acceptedTypes : null\"\n (change)=\"fileChangeEvent($event)\"\n />\n\n @if (customEl.children.length === 0) {\n <div class=\"sky-file-drop-contents sky-file-drop-upload-contents\">\n <div class=\"sky-file-drop-contents-not-over\">\n <div\n class=\"sky-file-drop-text-header\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'default'\n }\"\n >\n {{\n 'skyux_file_attachment_file_upload_drag_file_here'\n | skyLibResources\n }}\n </div>\n <div class=\"sky-file-drop-text\">\n {{\n 'skyux_file_attachment_file_upload_or_click_to_browse'\n | skyLibResources\n }}\n </div>\n <sky-icon icon=\"cloud-upload\" class=\"sky-file-upload-icon\" />\n </div>\n\n <!-- This will appear when file is dragged over and is valid -->\n <div class=\"sky-file-drop-contents-accept\">\n <div\n class=\"sky-file-drop-text-header\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'default'\n }\"\n >\n {{\n 'skyux_file_attachment_file_upload_drop_files_here'\n | skyLibResources\n }}\n </div>\n <sky-icon icon=\"bullseye\" class=\"sky-file-upload-icon\" />\n </div>\n\n <!-- This will appear when file is dragged over and is invalid -->\n <div class=\"sky-file-drop-contents-reject\">\n <div\n class=\"sky-file-drop-text-header\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'default'\n }\"\n >\n {{\n 'skyux_file_attachment_file_upload_invalid_file'\n | skyLibResources\n }}\n </div>\n <sky-icon icon=\"times-circle\" class=\"sky-file-upload-icon\" />\n </div>\n </div>\n }\n\n <div #customEl class=\"sky-file-drop-contents-custom\">\n <ng-content />\n </div>\n </div>\n @if (allowLinks) {\n <div class=\"sky-file-drop-col\">\n <div class=\"sky-file-drop-contents\">\n <div class=\"sky-file-drop-link\">\n <div class=\"sky-file-drop-link-header\">\n <div\n class=\"sky-file-drop-text-header\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'default'\n }\"\n >\n {{\n 'skyux_file_attachment_file_upload_link_label'\n | skyLibResources\n }}\n </div>\n </div>\n <sky-input-box [hintText]=\"linkUploadHintText\">\n <input\n type=\"text\"\n [attr.aria-label]=\"\n linkUploadAriaLabel ||\n ('skyux_file_attachment_file_upload_link_label'\n | skyLibResources)\n \"\n [attr.aria-invalid]=\"!!rejectedFiles.length\"\n [attr.aria-errormessage]=\"\n labelText && rejectedFiles.length ? errorId : undefined\n \"\n [(ngModel)]=\"linkUrl\"\n (blur)=\"onLinkBlur()\"\n (keyup)=\"addLinkEnter($event)\"\n />\n </sky-input-box>\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-primary\"\n [disabled]=\"!linkUrl\"\n (click)=\"addLink($event)\"\n >\n {{\n 'skyux_file_attachment_file_upload_link_done' | skyLibResources\n }}\n </button>\n </div>\n </div>\n </div>\n }\n </div>\n <div #hintTextEl=\"skyId\" skyId>\n @if (hintText) {\n <div\n class=\"sky-font-deemphasized sky-file-drop-hint-text\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'default',\n 'sky-font-hint-text-s': 'modern'\n }\"\n >\n {{ hintText }}\n </div>\n }\n </div>\n</fieldset>\n<sky-form-errors\n [id]=\"errorId\"\n [labelText]=\"labelText\"\n [touched]=\"rejectedFiles.length > 0\"\n>\n @for (rejectedFile of rejectedFiles; track rejectedFile) {\n <div>\n @if (rejectedFile.errorType === 'fileType') {\n <sky-form-error\n errorName=\"fileType\"\n [errorText]=\"\n 'skyux_file_attachment_file_type_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : rejectedFile.errorParam\n \"\n />\n } @else if (rejectedFile.errorType === 'maxFileSize') {\n <sky-form-error\n errorName=\"maxFileSize\"\n [errorText]=\"\n acceptedTypesErrorMessage ??\n 'skyux_file_attachment_max_file_size_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : (rejectedFile.errorParam | skyFileSize)\n \"\n />\n } @else if (rejectedFile.errorType === 'minFileSize') {\n <sky-form-error\n errorName=\"minFileSize\"\n [errorText]=\"\n 'skyux_file_attachment_min_file_size_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : (rejectedFile.errorParam | skyFileSize)\n \"\n />\n } @else if (\n rejectedFile.errorType === 'validate' && rejectedFile.errorParam\n ) {\n <sky-form-error\n errorName=\"validate\"\n [errorText]=\"rejectedFile.file.name + ': ' + rejectedFile.errorParam\"\n />\n }\n </div>\n }\n</sky-form-errors>\n", styles: [".sky-file-drop-wrapper:not(.sky-theme-modern *){--sky-override-file-drop-accept-border-color: #72bf44;--sky-override-file-drop-col-padding: 0 5px;--sky-override-file-drop-col-responsive-margin-bottom: 10px;--sky-override-file-drop-col-responsive-margin-right: 0;--sky-override-file-drop-contents-background-color: #eeeeef;--sky-override-file-drop-contents-border-color: #cdcfd2;--sky-override-file-drop-contents-border-radius: 0;--sky-override-file-drop-contents-border-width: 1px;--sky-override-file-drop-contents-padding: 10px;--sky-override-file-drop-drag-border-width: 1px;--sky-override-file-drop-hint-text-margin-top: var(--sky-margin-stacked-xs);--sky-override-file-drop-icon-font-size: 40px;--sky-override-file-drop-label-color: #212327;--sky-override-file-drop-label-font-size: 15px;--sky-override-file-drop-link-header-margin-bottom: 5px;--sky-override-file-drop-link-input-background-color: transparent;--sky-override-file-drop-link-input-margin-bottom: 10px;--sky-override-file-drop-non-stacked-with-item-margin-bottom: 0;--sky-override-file-drop-outline-focus: auto;--sky-override-file-drop-reject-border-color: #ef4044;--sky-override-file-drop-text-font-size: 15px;--sky-override-file-drop-text-font-weight: 400;--sky-override-file-drop-text-header-font-size: 22px;--sky-override-file-drop-text-header-font-weight: 600;--sky-override-file-drop-text-header-line-height: 1.1;--sky-override-file-drop-text-line-height: 1.1;--sky-override-file-drop-text-margin-bottom: 20px;--sky-override-file-drop-text-margin-top: 5px;--sky-override-file-drop-upload-contents-active-border: #cdcfd2 solid 1px;--sky-override-file-drop-upload-contents-focus-border: #cdcfd2 solid 1px;--sky-override-file-drop-upload-contents-focus-box-shadow: none;--sky-override-file-drop-upload-contents-hover-border: #cdcfd2 solid 1px;--sky-override-file-upload-icon-color: #686c73;--sky-override-file-drop-upload-icon-margin-top: 10px}:host-context(.sky-theme-modern:not(.sky-theme-brand-blackbaud)) .sky-file-drop-wrapper{--sky-override-file-drop-col-padding: 0 var(--modern-space-xs);--sky-override-file-drop-col-responsive-margin-right: 0;--sky-override-file-drop-contents-border-color: var(--modern-color-gray-20);--sky-override-file-drop-contents-border-radius: var( --modern-border-radius-0 );--sky-override-file-drop-contents-padding: var(--modern-size-10);--sky-override-file-drop-icon-font-size: var(--modern-size-40);--sky-override-file-drop-label-font-size: 13px;--sky-override-file-drop-link-input-background-color: var( --modern-color-white );--sky-override-file-drop-link-input-margin-bottom: var( --sky-space-gap-form-l );--sky-override-file-drop-non-stacked-with-item-margin-bottom: 0;--sky-override-file-drop-outline-focus: auto;--sky-override-file-drop-reject-border-color: #ef4044;--sky-override-file-drop-text-header-font-size: var( --sky-font-size-display-3 );--sky-override-file-drop-text-header-font-weight: var( --sky-font-weight-display-3 );--sky-override-file-drop-text-font-size: 15px;--sky-override-file-drop-text-font-weight: var(--sky-font-weight-body-m);--sky-override-file-drop-text-header-line-height: var( --modern-line_height-110 );--sky-override-file-drop-text-line-height: var(--modern-line_height-110);--sky-override-file-drop-text-margin-bottom: var(--modern-size-20);--sky-override-file-drop-upload-contents-active-border: var( --modern-color-gray-20 ) solid var(--modern-size-1);--sky-override-file-drop-upload-contents-focus-border: var( --modern-color-gray-20 ) solid var(--modern-size-1);--sky-override-file-drop-upload-contents-focus-box-shadow: var( --modern-shadow-size-0 );--sky-override-file-drop-upload-contents-hover-border: var( --modern-color-gray-20 ) solid var(--modern-size-1);--sky-override-file-drop-upload-icon-margin-top: var(--modern-size-10)}:host.sky-form-field-stacked{display:block}:host-context(:has(+ sky-file-item):not(.sky-form-field-stacked)) .sky-file-drop-wrapper{margin-bottom:var(--sky-override-file-drop-non-stacked-with-item-margin-bottom, var(--sky-space-gap-form-l))}.sky-file-drop-col{padding:var(--sky-override-file-drop-col-padding, 0);position:relative}:host .sky-file-drop-row{display:block}:host .sky-file-drop-col{flex-basis:auto}:host .sky-file-drop-col:not(:last-of-type){margin-bottom:var(--sky-override-file-drop-col-responsive-margin-bottom, var(--sky-space-gap-form-s))}:host .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:auto}:host-context(.sky-responsive-container-xs) .sky-file-drop-row,:host-context(.sky-responsive-container-sm) .sky-file-drop-row,:host-context(.sky-responsive-container-md) .sky-file-drop-row,:host-context(.sky-responsive-container-lg) .sky-file-drop-row{display:block}:host-context(.sky-responsive-container-xs) .sky-file-drop-col,:host-context(.sky-responsive-container-sm) .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-col{flex-basis:auto}:host-context(.sky-responsive-container-xs) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-file-drop-col:not(:last-of-type){margin-bottom:var(--sky-override-file-drop-col-responsive-margin-bottom, var(--sky-space-gap-form-s))}:host-context(.sky-responsive-container-xs) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-sm) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:auto}@media (min-width: 768px){:host .sky-file-drop-row{display:flex}:host .sky-file-drop-col{flex-basis:100%}:host .sky-file-drop-col:not(:last-of-type){margin-right:var(--sky-override-file-drop-col-responsive-margin-right, var(--sky-space-gap-action_group-m));margin-bottom:0}:host .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:50%}}:host-context(.sky-responsive-container-sm) .sky-file-drop-row,:host-context(.sky-responsive-container-md) .sky-file-drop-row,:host-context(.sky-responsive-container-lg) .sky-file-drop-row{display:flex}:host-context(.sky-responsive-container-sm) .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-col{flex-basis:100%}:host-context(.sky-responsive-container-sm) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-file-drop-col:not(:last-of-type){margin-right:var(--sky-override-file-drop-col-responsive-margin-right, var(--sky-space-gap-action_group-m));margin-bottom:0}:host-context(.sky-responsive-container-sm) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:50%}button.sky-file-drop{height:100%;position:absolute;inset:0;z-index:1}button.sky-file-drop:hover{cursor:pointer}.sky-file-drop-contents{border:var(--sky-override-file-drop-contents-border-width, var(--sky-border-width-input-base)) solid var(--sky-override-file-drop-contents-border-color, var(--sky-color-border-input-base));background-color:var(--sky-override-file-drop-contents-background-color, var(--sky-color-background-file_drop));border-radius:var(--sky-override-file-drop-contents-border-radius, var(--sky-border-radius-s));padding:var(--sky-override-file-drop-contents-padding, var(--sky-space-inset-balanced-s));cursor:pointer;width:100%;text-align:center;height:100%}.sky-file-drop-contents .sky-file-drop-link-header{margin-bottom:var(--sky-override-file-drop-link-header-margin-bottom, var(--sky-space-gap-stacked_supplemental-s))}.sky-file-drop:active~.sky-file-drop-contents{border:var(--sky-override-file-drop-upload-contents-active-border, var(--sky-border-width-input-active) solid var(--sky-color-border-input-active))}.sky-file-drop:focus-visible:not(:active){outline:var(--sky-override-file-drop-outline-focus, none)}.sky-file-drop:focus-visible:not(:active)~.sky-file-drop-contents{border:var(--sky-override-file-drop-upload-contents-focus-border, var(--sky-border-width-input-focus) solid var(--sky-color-border-input-focus));box-shadow:var(--sky-override-file-drop-upload-contents-focus-box-shadow, var(--sky-elevation-focus))}.sky-file-drop:hover:not(:active)~.sky-file-drop-contents{border:var(--sky-override-file-drop-upload-contents-hover-border, var(--sky-border-width-input-hover) solid var(--sky-color-border-input-hover))}.sky-file-drop-hint-text{text-align:left;margin-top:var(--sky-override-file-drop-hint-text-margin-top, var(--sky-space-gap-stacked_supplemental-s))}.sky-file-drop-accept .sky-file-drop-contents,.sky-file-drop-reject .sky-file-drop-contents{border-style:dashed;border-width:var(--sky-override-file-drop-drag-border-width, var(--sky-border-width-input-hover))}.sky-file-drop-accept .sky-file-drop-contents-not-over,.sky-file-drop-reject .sky-file-drop-contents-not-over{display:none}.sky-file-drop-accept .sky-file-drop-contents{border-color:var(--sky-override-file-drop-accept-border-color, var(--sky-color-border-success))}.sky-file-drop-accept .sky-file-drop-contents-accept{display:block}.sky-file-drop-reject .sky-file-drop-contents{border-color:var(--sky-override-file-drop-reject-border-color, var(--sky-color-border-danger))}.sky-file-drop-reject .sky-file-drop-contents-reject{display:block}.sky-file-drop-contents-accept,.sky-file-drop-contents-reject{display:none}.sky-file-upload-icon{display:block;font-size:var(--sky-override-file-drop-icon-font-size, var(--sky-size-icon-xl));max-height:var(--sky-override-file-drop-icon-font-size, auto);color:var(--sky-override-file-upload-icon-color, var(--sky-color-icon-deemphasized));margin-top:var(--sky-override-file-drop-upload-icon-margin-top, var(--sky-space-gap-stacked_supplemental-l))}.sky-file-drop-link{cursor:default}.sky-file-drop-link sky-input-box{--sky-background-color-input-box-group: var( --sky-override-file-drop-link-input-background-color, var(--bb-color-white) );--sky-background-color-input-box-group-focused: var( --sky-override-file-drop-link-input-background-color, var(--bb-color-white) );margin-bottom:var(--sky-override-file-drop-link-input-margin-bottom, var(--sky-space-gap-form-s))}.sky-file-drop-text-header{margin:0;font-size:var(--sky-override-file-drop-text-header-font-size, var(--sky-font-size-body-m));font-style:var(--sky-font-style-body-m);font-weight:var(--sky-override-file-drop-text-header-font-weight, var(--sky-font-weight-body-m));line-height:var(--sky-override-file-drop-text-header-line-height, var(--sky-font-line_height-body-m))}.sky-file-drop-text{margin-top:var(--sky-override-file-drop-text-margin-top, var(--sky-space-gap-stacked_supplemental-s));margin-bottom:var(--sky-override-file-drop-text-margin-bottom, 0);font-size:var(--sky-override-file-drop-text-font-size, var(--sky-font-size-body-s));font-style:var(--sky-font-style-body-s);font-weight:var(--sky-override-file-drop-text-font-weight, var(--sky-font-weight-body-s));line-height:var(--sky-override-file-drop-text-line-height, var(--sky-font-line_height-body-s))}.sky-file-drop-text,.sky-file-drop-text-header{display:block}.sky-file-drop{background-color:transparent;border:none;display:block;-webkit-appearance:none;width:100%;padding:0}.sky-file-input-hidden{display:none}.sky-control-label{color:var(--sky-override-file-drop-label-color, var(--sky-color-text-deemphasized));font-size:var(--sky-override-file-drop-label-font-size, var(--sky-font-size-input-label));font-style:var(--sky-font-style-input-label);font-weight:var(--sky-font-weight-input-label);letter-spacing:var(--sky-font-letter_spacing-input-label);line-height:var(--sky-font-line_height-input-label)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: SkyFileSizePipe, name: "skyFileSize" }, { kind: "component", type: SkyFormErrorComponent, selector: "sky-form-error", inputs: ["errorName", "errorText"] }, { kind: "component", type: SkyFormErrorsComponent, selector: "sky-form-errors", inputs: ["errors", "labelText", "touched", "dirty"] }, { kind: "ngmodule", type: SkyFormsResourcesModule }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "ngmodule", type: SkyHelpInlineModule }, { kind: "component", type: i4.λ1, selector: "sky-help-inline", inputs: ["ariaControls", "ariaExpanded", "ariaLabel", "helpKey", "labelledBy", "labelText", "popoverContent", "popoverTitle"], outputs: ["actionClick"] }, { kind: "ngmodule", type: SkyIconModule }, { kind: "component", type: i5.λ1, selector: "sky-icon", inputs: ["icon", "iconName", "iconType", "size", "fixedWidth", "variant"] }, { kind: "ngmodule", type: SkyIdModule }, { kind: "directive", type: i6.λ2, selector: "[skyId]", exportAs: ["skyId"] }, { kind: "ngmodule", type: SkyInputBoxModule }, { kind: "component", type: i7.SkyInputBoxComponent, selector: "sky-input-box", inputs: ["hasErrors", "disabled", "labelText", "characterLimit", "stacked", "helpPopoverTitle", "helpPopoverContent", "helpKey", "hintText"] }, { kind: "directive", type: i8.SkyInputBoxControlDirective, selector: "input:not([skyId]):not(.sky-form-control),select:not([skyId]):not(.sky-form-control),textarea:not([skyId]):not(.sky-form-control)", inputs: ["autocomplete"] }, { kind: "ngmodule", type: SkyThemeModule }, { kind: "directive", type: i9.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }] }); }
265
- }
266
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyFileDropComponent, decorators: [{
267
- type: Component,
268
- args: [{ selector: 'sky-file-drop', providers: [
269
- SkyFileAttachmentService,
270
- { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
271
- ], standalone: true, imports: [
272
- CommonModule,
273
- FormsModule,
274
- SkyFileSizePipe,
275
- SkyFormErrorComponent,
276
- SkyFormErrorsComponent,
277
- SkyFormsResourcesModule,
278
- SkyHelpInlineModule,
279
- SkyIconModule,
280
- SkyIdModule,
281
- SkyInputBoxModule,
282
- SkyThemeModule,
283
- ], template: "<fieldset class=\"sky-file-drop-wrapper\">\n @if (labelText) {\n <legend\n class=\"sky-control-label sky-font-body-default\"\n [ngClass]=\"{\n 'sky-screen-reader-only': labelHidden\n }\"\n >\n <span\n class=\"sky-file-drop-label-text\"\n [ngClass]=\"{\n 'sky-control-label-required': required\n }\"\n >{{ labelText }}</span\n >\n @if (required) {\n <span class=\"sky-screen-reader-only\">{{\n 'skyux_file_attachment_required' | skyLibResources\n }}</span>\n }\n @if (helpPopoverContent || helpKey) {\n <span class=\"sky-control-help-container\">\n <sky-help-inline\n [helpKey]=\"helpKey\"\n [labelText]=\"labelText\"\n [popoverTitle]=\"helpPopoverTitle\"\n [popoverContent]=\"helpPopoverContent\"\n />\n </span>\n }\n </legend>\n }\n <div\n class=\"sky-file-drop-row\"\n [ngClass]=\"{ 'sky-file-drop-allow-links': allowLinks }\"\n >\n <div\n class=\"sky-file-drop-col\"\n [ngClass]=\"{\n 'sky-file-drop-accept': acceptedOver,\n 'sky-file-drop-reject': rejectedOver\n }\"\n >\n <button\n class=\"sky-file-drop sky-file-drop-target\"\n type=\"button\"\n [attr.aria-label]=\"\n fileUploadAriaLabel ||\n ('skyux_file_attachment_file_upload_drag_or_click' | skyLibResources)\n \"\n [attr.aria-describedby]=\"hintText ? hintTextEl.id : undefined\"\n [attr.aria-invalid]=\"!!rejectedFiles.length\"\n [attr.aria-errormessage]=\"\n labelText && rejectedFiles.length ? errorId : undefined\n \"\n (click)=\"dropClicked()\"\n (dragover)=\"fileDragOver($event)\"\n (dragenter)=\"fileDragEnter($event)\"\n (dragleave)=\"fileDragLeave($event)\"\n (drop)=\"fileDrop($event)\"\n ></button>\n\n <input\n #fileInput\n tabindex=\"-1\"\n aria-hidden=\"true\"\n type=\"file\"\n class=\"sky-file-input-hidden\"\n [attr.multiple]=\"multiple ? multiple : null\"\n [attr.accept]=\"acceptedTypes ? acceptedTypes : null\"\n (change)=\"fileChangeEvent($event)\"\n />\n\n @if (customEl.children.length === 0) {\n <div class=\"sky-file-drop-contents sky-file-drop-upload-contents\">\n <div class=\"sky-file-drop-contents-not-over\">\n <div\n class=\"sky-file-drop-text-header\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'default'\n }\"\n >\n {{\n 'skyux_file_attachment_file_upload_drag_file_here'\n | skyLibResources\n }}\n </div>\n <div class=\"sky-file-drop-text\">\n {{\n 'skyux_file_attachment_file_upload_or_click_to_browse'\n | skyLibResources\n }}\n </div>\n <sky-icon icon=\"cloud-upload\" class=\"sky-file-upload-icon\" />\n </div>\n\n <!-- This will appear when file is dragged over and is valid -->\n <div class=\"sky-file-drop-contents-accept\">\n <div\n class=\"sky-file-drop-text-header\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'default'\n }\"\n >\n {{\n 'skyux_file_attachment_file_upload_drop_files_here'\n | skyLibResources\n }}\n </div>\n <sky-icon icon=\"bullseye\" class=\"sky-file-upload-icon\" />\n </div>\n\n <!-- This will appear when file is dragged over and is invalid -->\n <div class=\"sky-file-drop-contents-reject\">\n <div\n class=\"sky-file-drop-text-header\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'default'\n }\"\n >\n {{\n 'skyux_file_attachment_file_upload_invalid_file'\n | skyLibResources\n }}\n </div>\n <sky-icon icon=\"times-circle\" class=\"sky-file-upload-icon\" />\n </div>\n </div>\n }\n\n <div #customEl class=\"sky-file-drop-contents-custom\">\n <ng-content />\n </div>\n </div>\n @if (allowLinks) {\n <div class=\"sky-file-drop-col\">\n <div class=\"sky-file-drop-contents\">\n <div class=\"sky-file-drop-link\">\n <div class=\"sky-file-drop-link-header\">\n <div\n class=\"sky-file-drop-text-header\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'default'\n }\"\n >\n {{\n 'skyux_file_attachment_file_upload_link_label'\n | skyLibResources\n }}\n </div>\n </div>\n <sky-input-box [hintText]=\"linkUploadHintText\">\n <input\n type=\"text\"\n [attr.aria-label]=\"\n linkUploadAriaLabel ||\n ('skyux_file_attachment_file_upload_link_label'\n | skyLibResources)\n \"\n [attr.aria-invalid]=\"!!rejectedFiles.length\"\n [attr.aria-errormessage]=\"\n labelText && rejectedFiles.length ? errorId : undefined\n \"\n [(ngModel)]=\"linkUrl\"\n (blur)=\"onLinkBlur()\"\n (keyup)=\"addLinkEnter($event)\"\n />\n </sky-input-box>\n <button\n type=\"button\"\n class=\"sky-btn sky-btn-primary\"\n [disabled]=\"!linkUrl\"\n (click)=\"addLink($event)\"\n >\n {{\n 'skyux_file_attachment_file_upload_link_done' | skyLibResources\n }}\n </button>\n </div>\n </div>\n </div>\n }\n </div>\n <div #hintTextEl=\"skyId\" skyId>\n @if (hintText) {\n <div\n class=\"sky-font-deemphasized sky-file-drop-hint-text\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'default',\n 'sky-font-hint-text-s': 'modern'\n }\"\n >\n {{ hintText }}\n </div>\n }\n </div>\n</fieldset>\n<sky-form-errors\n [id]=\"errorId\"\n [labelText]=\"labelText\"\n [touched]=\"rejectedFiles.length > 0\"\n>\n @for (rejectedFile of rejectedFiles; track rejectedFile) {\n <div>\n @if (rejectedFile.errorType === 'fileType') {\n <sky-form-error\n errorName=\"fileType\"\n [errorText]=\"\n 'skyux_file_attachment_file_type_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : rejectedFile.errorParam\n \"\n />\n } @else if (rejectedFile.errorType === 'maxFileSize') {\n <sky-form-error\n errorName=\"maxFileSize\"\n [errorText]=\"\n acceptedTypesErrorMessage ??\n 'skyux_file_attachment_max_file_size_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : (rejectedFile.errorParam | skyFileSize)\n \"\n />\n } @else if (rejectedFile.errorType === 'minFileSize') {\n <sky-form-error\n errorName=\"minFileSize\"\n [errorText]=\"\n 'skyux_file_attachment_min_file_size_error_label_text_with_name'\n | skyLibResources\n : rejectedFile.file.name\n : (rejectedFile.errorParam | skyFileSize)\n \"\n />\n } @else if (\n rejectedFile.errorType === 'validate' && rejectedFile.errorParam\n ) {\n <sky-form-error\n errorName=\"validate\"\n [errorText]=\"rejectedFile.file.name + ': ' + rejectedFile.errorParam\"\n />\n }\n </div>\n }\n</sky-form-errors>\n", styles: [".sky-file-drop-wrapper:not(.sky-theme-modern *){--sky-override-file-drop-accept-border-color: #72bf44;--sky-override-file-drop-col-padding: 0 5px;--sky-override-file-drop-col-responsive-margin-bottom: 10px;--sky-override-file-drop-col-responsive-margin-right: 0;--sky-override-file-drop-contents-background-color: #eeeeef;--sky-override-file-drop-contents-border-color: #cdcfd2;--sky-override-file-drop-contents-border-radius: 0;--sky-override-file-drop-contents-border-width: 1px;--sky-override-file-drop-contents-padding: 10px;--sky-override-file-drop-drag-border-width: 1px;--sky-override-file-drop-hint-text-margin-top: var(--sky-margin-stacked-xs);--sky-override-file-drop-icon-font-size: 40px;--sky-override-file-drop-label-color: #212327;--sky-override-file-drop-label-font-size: 15px;--sky-override-file-drop-link-header-margin-bottom: 5px;--sky-override-file-drop-link-input-background-color: transparent;--sky-override-file-drop-link-input-margin-bottom: 10px;--sky-override-file-drop-non-stacked-with-item-margin-bottom: 0;--sky-override-file-drop-outline-focus: auto;--sky-override-file-drop-reject-border-color: #ef4044;--sky-override-file-drop-text-font-size: 15px;--sky-override-file-drop-text-font-weight: 400;--sky-override-file-drop-text-header-font-size: 22px;--sky-override-file-drop-text-header-font-weight: 600;--sky-override-file-drop-text-header-line-height: 1.1;--sky-override-file-drop-text-line-height: 1.1;--sky-override-file-drop-text-margin-bottom: 20px;--sky-override-file-drop-text-margin-top: 5px;--sky-override-file-drop-upload-contents-active-border: #cdcfd2 solid 1px;--sky-override-file-drop-upload-contents-focus-border: #cdcfd2 solid 1px;--sky-override-file-drop-upload-contents-focus-box-shadow: none;--sky-override-file-drop-upload-contents-hover-border: #cdcfd2 solid 1px;--sky-override-file-upload-icon-color: #686c73;--sky-override-file-drop-upload-icon-margin-top: 10px}:host-context(.sky-theme-modern:not(.sky-theme-brand-blackbaud)) .sky-file-drop-wrapper{--sky-override-file-drop-col-padding: 0 var(--modern-space-xs);--sky-override-file-drop-col-responsive-margin-right: 0;--sky-override-file-drop-contents-border-color: var(--modern-color-gray-20);--sky-override-file-drop-contents-border-radius: var( --modern-border-radius-0 );--sky-override-file-drop-contents-padding: var(--modern-size-10);--sky-override-file-drop-icon-font-size: var(--modern-size-40);--sky-override-file-drop-label-font-size: 13px;--sky-override-file-drop-link-input-background-color: var( --modern-color-white );--sky-override-file-drop-link-input-margin-bottom: var( --sky-space-gap-form-l );--sky-override-file-drop-non-stacked-with-item-margin-bottom: 0;--sky-override-file-drop-outline-focus: auto;--sky-override-file-drop-reject-border-color: #ef4044;--sky-override-file-drop-text-header-font-size: var( --sky-font-size-display-3 );--sky-override-file-drop-text-header-font-weight: var( --sky-font-weight-display-3 );--sky-override-file-drop-text-font-size: 15px;--sky-override-file-drop-text-font-weight: var(--sky-font-weight-body-m);--sky-override-file-drop-text-header-line-height: var( --modern-line_height-110 );--sky-override-file-drop-text-line-height: var(--modern-line_height-110);--sky-override-file-drop-text-margin-bottom: var(--modern-size-20);--sky-override-file-drop-upload-contents-active-border: var( --modern-color-gray-20 ) solid var(--modern-size-1);--sky-override-file-drop-upload-contents-focus-border: var( --modern-color-gray-20 ) solid var(--modern-size-1);--sky-override-file-drop-upload-contents-focus-box-shadow: var( --modern-shadow-size-0 );--sky-override-file-drop-upload-contents-hover-border: var( --modern-color-gray-20 ) solid var(--modern-size-1);--sky-override-file-drop-upload-icon-margin-top: var(--modern-size-10)}:host.sky-form-field-stacked{display:block}:host-context(:has(+ sky-file-item):not(.sky-form-field-stacked)) .sky-file-drop-wrapper{margin-bottom:var(--sky-override-file-drop-non-stacked-with-item-margin-bottom, var(--sky-space-gap-form-l))}.sky-file-drop-col{padding:var(--sky-override-file-drop-col-padding, 0);position:relative}:host .sky-file-drop-row{display:block}:host .sky-file-drop-col{flex-basis:auto}:host .sky-file-drop-col:not(:last-of-type){margin-bottom:var(--sky-override-file-drop-col-responsive-margin-bottom, var(--sky-space-gap-form-s))}:host .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:auto}:host-context(.sky-responsive-container-xs) .sky-file-drop-row,:host-context(.sky-responsive-container-sm) .sky-file-drop-row,:host-context(.sky-responsive-container-md) .sky-file-drop-row,:host-context(.sky-responsive-container-lg) .sky-file-drop-row{display:block}:host-context(.sky-responsive-container-xs) .sky-file-drop-col,:host-context(.sky-responsive-container-sm) .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-col{flex-basis:auto}:host-context(.sky-responsive-container-xs) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-sm) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-file-drop-col:not(:last-of-type){margin-bottom:var(--sky-override-file-drop-col-responsive-margin-bottom, var(--sky-space-gap-form-s))}:host-context(.sky-responsive-container-xs) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-sm) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:auto}@media (min-width: 768px){:host .sky-file-drop-row{display:flex}:host .sky-file-drop-col{flex-basis:100%}:host .sky-file-drop-col:not(:last-of-type){margin-right:var(--sky-override-file-drop-col-responsive-margin-right, var(--sky-space-gap-action_group-m));margin-bottom:0}:host .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:50%}}:host-context(.sky-responsive-container-sm) .sky-file-drop-row,:host-context(.sky-responsive-container-md) .sky-file-drop-row,:host-context(.sky-responsive-container-lg) .sky-file-drop-row{display:flex}:host-context(.sky-responsive-container-sm) .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-col{flex-basis:100%}:host-context(.sky-responsive-container-sm) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-md) .sky-file-drop-col:not(:last-of-type),:host-context(.sky-responsive-container-lg) .sky-file-drop-col:not(:last-of-type){margin-right:var(--sky-override-file-drop-col-responsive-margin-right, var(--sky-space-gap-action_group-m));margin-bottom:0}:host-context(.sky-responsive-container-sm) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-md) .sky-file-drop-allow-links .sky-file-drop-col,:host-context(.sky-responsive-container-lg) .sky-file-drop-allow-links .sky-file-drop-col{flex-basis:50%}button.sky-file-drop{height:100%;position:absolute;inset:0;z-index:1}button.sky-file-drop:hover{cursor:pointer}.sky-file-drop-contents{border:var(--sky-override-file-drop-contents-border-width, var(--sky-border-width-input-base)) solid var(--sky-override-file-drop-contents-border-color, var(--sky-color-border-input-base));background-color:var(--sky-override-file-drop-contents-background-color, var(--sky-color-background-file_drop));border-radius:var(--sky-override-file-drop-contents-border-radius, var(--sky-border-radius-s));padding:var(--sky-override-file-drop-contents-padding, var(--sky-space-inset-balanced-s));cursor:pointer;width:100%;text-align:center;height:100%}.sky-file-drop-contents .sky-file-drop-link-header{margin-bottom:var(--sky-override-file-drop-link-header-margin-bottom, var(--sky-space-gap-stacked_supplemental-s))}.sky-file-drop:active~.sky-file-drop-contents{border:var(--sky-override-file-drop-upload-contents-active-border, var(--sky-border-width-input-active) solid var(--sky-color-border-input-active))}.sky-file-drop:focus-visible:not(:active){outline:var(--sky-override-file-drop-outline-focus, none)}.sky-file-drop:focus-visible:not(:active)~.sky-file-drop-contents{border:var(--sky-override-file-drop-upload-contents-focus-border, var(--sky-border-width-input-focus) solid var(--sky-color-border-input-focus));box-shadow:var(--sky-override-file-drop-upload-contents-focus-box-shadow, var(--sky-elevation-focus))}.sky-file-drop:hover:not(:active)~.sky-file-drop-contents{border:var(--sky-override-file-drop-upload-contents-hover-border, var(--sky-border-width-input-hover) solid var(--sky-color-border-input-hover))}.sky-file-drop-hint-text{text-align:left;margin-top:var(--sky-override-file-drop-hint-text-margin-top, var(--sky-space-gap-stacked_supplemental-s))}.sky-file-drop-accept .sky-file-drop-contents,.sky-file-drop-reject .sky-file-drop-contents{border-style:dashed;border-width:var(--sky-override-file-drop-drag-border-width, var(--sky-border-width-input-hover))}.sky-file-drop-accept .sky-file-drop-contents-not-over,.sky-file-drop-reject .sky-file-drop-contents-not-over{display:none}.sky-file-drop-accept .sky-file-drop-contents{border-color:var(--sky-override-file-drop-accept-border-color, var(--sky-color-border-success))}.sky-file-drop-accept .sky-file-drop-contents-accept{display:block}.sky-file-drop-reject .sky-file-drop-contents{border-color:var(--sky-override-file-drop-reject-border-color, var(--sky-color-border-danger))}.sky-file-drop-reject .sky-file-drop-contents-reject{display:block}.sky-file-drop-contents-accept,.sky-file-drop-contents-reject{display:none}.sky-file-upload-icon{display:block;font-size:var(--sky-override-file-drop-icon-font-size, var(--sky-size-icon-xl));max-height:var(--sky-override-file-drop-icon-font-size, auto);color:var(--sky-override-file-upload-icon-color, var(--sky-color-icon-deemphasized));margin-top:var(--sky-override-file-drop-upload-icon-margin-top, var(--sky-space-gap-stacked_supplemental-l))}.sky-file-drop-link{cursor:default}.sky-file-drop-link sky-input-box{--sky-background-color-input-box-group: var( --sky-override-file-drop-link-input-background-color, var(--bb-color-white) );--sky-background-color-input-box-group-focused: var( --sky-override-file-drop-link-input-background-color, var(--bb-color-white) );margin-bottom:var(--sky-override-file-drop-link-input-margin-bottom, var(--sky-space-gap-form-s))}.sky-file-drop-text-header{margin:0;font-size:var(--sky-override-file-drop-text-header-font-size, var(--sky-font-size-body-m));font-style:var(--sky-font-style-body-m);font-weight:var(--sky-override-file-drop-text-header-font-weight, var(--sky-font-weight-body-m));line-height:var(--sky-override-file-drop-text-header-line-height, var(--sky-font-line_height-body-m))}.sky-file-drop-text{margin-top:var(--sky-override-file-drop-text-margin-top, var(--sky-space-gap-stacked_supplemental-s));margin-bottom:var(--sky-override-file-drop-text-margin-bottom, 0);font-size:var(--sky-override-file-drop-text-font-size, var(--sky-font-size-body-s));font-style:var(--sky-font-style-body-s);font-weight:var(--sky-override-file-drop-text-font-weight, var(--sky-font-weight-body-s));line-height:var(--sky-override-file-drop-text-line-height, var(--sky-font-line_height-body-s))}.sky-file-drop-text,.sky-file-drop-text-header{display:block}.sky-file-drop{background-color:transparent;border:none;display:block;-webkit-appearance:none;width:100%;padding:0}.sky-file-input-hidden{display:none}.sky-control-label{color:var(--sky-override-file-drop-label-color, var(--sky-color-text-deemphasized));font-size:var(--sky-override-file-drop-label-font-size, var(--sky-font-size-input-label));font-style:var(--sky-font-style-input-label);font-weight:var(--sky-font-weight-input-label);letter-spacing:var(--sky-font-letter_spacing-input-label);line-height:var(--sky-font-line_height-input-label)}\n"] }]
284
- }], propDecorators: { filesChanged: [{
285
- type: Output
286
- }], linkInputBlur: [{
287
- type: Output
288
- }], linkChanged: [{
289
- type: Output
290
- }], fileUploadAriaLabel: [{
291
- type: Input
292
- }], linkUploadAriaLabel: [{
293
- type: Input
294
- }], linkUploadHintText: [{
295
- type: Input
296
- }], minFileSize: [{
297
- type: Input
298
- }], maxFileSize: [{
299
- type: Input
300
- }], multiple: [{
301
- type: Input
302
- }], validateFn: [{
303
- type: Input
304
- }], acceptedTypes: [{
305
- type: Input
306
- }], acceptedTypesErrorMessage: [{
307
- type: Input
308
- }], noClick: [{
309
- type: Input
310
- }], allowLinks: [{
311
- type: Input
312
- }], labelText: [{
313
- type: Input
314
- }], labelHidden: [{
315
- type: Input,
316
- args: [{ transform: booleanAttribute }]
317
- }], hintText: [{
318
- type: Input
319
- }], required: [{
320
- type: Input,
321
- args: [{ transform: booleanAttribute }]
322
- }], helpPopoverContent: [{
323
- type: Input
324
- }], helpPopoverTitle: [{
325
- type: Input
326
- }], stacked: [{
327
- type: Input,
328
- args: [{ transform: booleanAttribute }]
329
- }, {
330
- type: HostBinding,
331
- args: ['class.sky-form-field-stacked']
332
- }], helpKey: [{
333
- type: Input
334
- }], inputEl: [{
335
- type: ViewChild,
336
- args: ['fileInput']
337
- }] } });
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvZmlsZS1hdHRhY2htZW50L2ZpbGUtZHJvcC9maWxlLWRyb3AuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9maWxlLWF0dGFjaG1lbnQvZmlsZS1kcm9wL2ZpbGUtZHJvcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUJB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O2dCQVFDLHlCQUF5QjtzQkFEL0IsS0FBSztnQkFPQyxPQUFPO3NCQURiLEtBQUs7Z0JBT0MsVUFBVTtzQkFEaEIsS0FBSztnQkFPQyxTQUFTO3NCQURmLEtBQUs7Z0JBT0MsV0FBVztzQkFEakIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFRL0IsUUFBUTtzQkFEZCxLQUFLO2dCQVdDLFFBQVE7c0JBRGQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFTL0Isa0JBQWtCO3NCQUR4QixLQUFLO2dCQVFDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFTQyxPQUFPO3NCQUZiLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7O3NCQUNyQyxXQUFXO3VCQUFDLDhCQUE4QjtnQkFTcEMsT0FBTztzQkFEYixLQUFLO2dCQUlDLE9BQU87c0JBRGIsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lJZE1vZHVsZSwgU2t5TGl2ZUFubm91bmNlclNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lJZFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lIZWxwSW5saW5lTW9kdWxlIH0gZnJvbSAnQHNreXV4L2hlbHAtaW5saW5lJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2ljb24nO1xuaW1wb3J0IHsgU2t5VGhlbWVNb2R1bGUgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lGb3JtRXJyb3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3IuY29tcG9uZW50JztcbmltcG9ydCB7IFNLWV9GT1JNX0VSUk9SU19FTkFCTEVEIH0gZnJvbSAnLi4vLi4vZm9ybS1lcnJvci9mb3JtLWVycm9ycy1lbmFibGVkLXRva2VuJztcbmltcG9ydCB7IFNreUZvcm1FcnJvcnNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3JzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveE1vZHVsZSB9IGZyb20gJy4uLy4uL2lucHV0LWJveC9pbnB1dC1ib3gubW9kdWxlJztcbmltcG9ydCB7IFNreUZvcm1zUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3NreS1mb3Jtcy1yZXNvdXJjZXMubW9kdWxlJztcbmltcG9ydCB7IFNreUZpbGVBdHRhY2htZW50U2VydmljZSB9IGZyb20gJy4uL2ZpbGUtYXR0YWNobWVudC9maWxlLWF0dGFjaG1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lGaWxlSXRlbSB9IGZyb20gJy4uL3NoYXJlZC9maWxlLWl0ZW0nO1xuaW1wb3J0IHsgU2t5RmlsZVNpemVQaXBlIH0gZnJvbSAnLi4vc2hhcmVkL2ZpbGUtc2l6ZS5waXBlJztcbmltcG9ydCB7IFNreUZpbGVWYWxpZGF0ZUZuIH0gZnJvbSAnLi4vc2hhcmVkL2ZpbGUtdmFsaWRhdGUtZnVuY3Rpb24nO1xuXG5pbXBvcnQgeyBTa3lGaWxlRHJvcENoYW5nZSB9IGZyb20gJy4vZmlsZS1kcm9wLWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lGaWxlTGluayB9IGZyb20gJy4vZmlsZS1saW5rJztcblxuY29uc3QgTUFYX0ZJTEVfU0laRV9ERUZBVUxUID0gNTAwMDAwO1xuY29uc3QgTUlOX0ZJTEVfU0laRV9ERUZBVUxUID0gMDtcblxuLyoqXG4gKiBQcm92aWRlcyBhbiBlbGVtZW50IHRvIGF0dGFjaCBtdWx0aXBsZSBmaWxlcyB3aGVyZSB1c2VycyBjYW4gYnJvd3NlIG9yIGRyYWcgYW5kIGRyb3AgbG9jYWwgZmlsZXNcbiAqIG9yIHByb3ZpZGUgaHlwZXJsaW5rcyB0byBleHRlcm5hbCBmaWxlcy4gWW91IGNhbiBsZWF2ZSB0aGUgY29udGVudHMgb2YgdGhlIGNvbXBvbmVudFxuICogYmxhbmsgdG8gZGlzcGxheSB0aGUgZHJvcCB6b25lJ3MgZGVmYXVsdCBVSSwgb3IgeW91IGNhbiBzcGVjaWZ5IGN1c3RvbSBjb250ZW50IHRvXG4gKiBkaXNwbGF5IGluc3RlYWQuIFdoZW4gdGhlIG1vZHVsZSBpbml0aWFsaXplcywgaXQgZGlzYWJsZXMgdGhlIGFiaWxpdHkgdG8gZHJhZyBhbmRcbiAqIGRyb3AgZmlsZXMgZm9yIHRoZSBlbnRpcmUgd2luZG93IHRvIHByZXZlbnQgdGhlIGJyb3dzZXIgZnJvbSBvcGVuaW5nIGZpbGVzIHRoYXQgYXJlXG4gKiBhY2NpZGVudGFsbHkgZHJvcHBlZCBvdXRzaWRlIHRoZSB0YXJnZXQgem9uZS4gSWYgeW91IGltcGxlbWVudCB5b3VyIG93biBmaWxlIGRyb3AgZnVuY3Rpb25hbGl0eVxuICogb3V0c2lkZSBvZiB0aGUgZmlsZSBkcm9wIGNvbXBvbmVudCwgeW91IGNhbiBwbGFjZSB0aGUgYHNreS1maWxlLWRyb3AtdGFyZ2V0YCBDU1MgY2xhc3NcbiAqIG9uIHRoZSBlbGVtZW50IHRoYXQgcmVjZWl2ZXMgZHJvcCBldmVudHMgdG8gZXhlbXB0IGl0IGZyb20gdGhlIGRyb3AgZXhjbHVzaW9uIHJ1bGUuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1maWxlLWRyb3AnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1kcm9wLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS1kcm9wLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIFNreUZpbGVBdHRhY2htZW50U2VydmljZSxcbiAgICB7IHByb3ZpZGU6IFNLWV9GT1JNX0VSUk9SU19FTkFCTEVELCB1c2VWYWx1ZTogdHJ1ZSB9LFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFNreUZpbGVTaXplUGlwZSxcbiAgICBTa3lGb3JtRXJyb3JDb21wb25lbnQsXG4gICAgU2t5Rm9ybUVycm9yc0NvbXBvbmVudCxcbiAgICBTa3lGb3Jtc1Jlc291cmNlc01vZHVsZSxcbiAgICBTa3lIZWxwSW5saW5lTW9kdWxlLFxuICAgIFNreUljb25Nb2R1bGUsXG4gICAgU2t5SWRNb2R1bGUsXG4gICAgU2t5SW5wdXRCb3hNb2R1bGUsXG4gICAgU2t5VGhlbWVNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreUZpbGVEcm9wQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgYWRkIG9yIHJlbW92ZSBmaWxlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZmlsZXNDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lGaWxlRHJvcENoYW5nZT4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgbGluayBpbnB1dCBib3ggdHJpZ2dlcnMgYSBibHVyIGV2ZW50LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBsaW5rSW5wdXRCbHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGFkZCBvciByZW1vdmUgbGlua3MuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGxpbmtDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lGaWxlTGluaz4oKTtcblxuICAvKipcbiAgICogVGhlIEFSSUEgbGFiZWwgZm9yIHRoZSBmaWxlIHVwbG9hZCBidXR0b24uIFRoaXMgcHJvdmlkZXMgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yXG4gICAqIHNjcmVlbiByZWFkZXJzIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKiBAZGVmYXVsdCBcIkRyYWcgYSBmaWxlIGhlcmUgb3IgY2xpY2sgdG8gYnJvd3NlXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmaWxlVXBsb2FkQXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgbGluayB1cGxvYWQgaW5wdXQuIFRoaXMgc2V0cyB0aGUgYnV0dG9uJ3MgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvclxuICAgKiBzY3JlZW4gcmVhZGVycyBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsKS5cbiAgICogQGRlZmF1bHQgXCJMaW5rIHRvIGEgZmlsZVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbGlua1VwbG9hZEFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaGludCB0ZXh0IGZvciB0aGUgbGluayB1cGxvYWQgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbGlua1VwbG9hZEhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIHNpemUgaW4gYnl0ZXMgZm9yIHZhbGlkIGZpbGVzLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1pbkZpbGVTaXplKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbWluRmlsZVNpemUgPSB2YWx1ZSA/PyBNSU5fRklMRV9TSVpFX0RFRkFVTFQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1pbkZpbGVTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19taW5GaWxlU2l6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBzaXplIGluIGJ5dGVzIGZvciB2YWxpZCBmaWxlcy5cbiAgICogQGRlZmF1bHQgNTAwMDAwXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG1heEZpbGVTaXplKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbWF4RmlsZVNpemUgPSB2YWx1ZSA/PyBNQVhfRklMRV9TSVpFX0RFRkFVTFQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1heEZpbGVTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI19tYXhGaWxlU2l6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHVzZXJzIGNhbiBkcmFnIGFuZCBkcm9wIG11bHRpcGxlIGZpbGVzIGF0IHRoZSBzYW1lIHRpbWUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tIHZhbGlkYXRpb24gZnVuY3Rpb24uIFRoaXMgdmFsaWRhdGlvbiBydW5zIGFsb25nc2lkZSB0aGUgaW50ZXJuYWxcbiAgICogZmlsZSB2YWxpZGF0aW9uLiBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgYFNreUZpbGVJdGVtYCBvYmplY3QgYXMgYSBwYXJhbWV0ZXIuXG4gICAqIFRoZSBzdHJpbmcgcmV0dXJuZWQgaXMgdXNlZCBhcyB0aGUgZXJyb3IgbWVzc2FnZSBpbiBtdWx0aS1maWxlIGF0dGFjaG1lbnQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdmFsaWRhdGVGbjogU2t5RmlsZVZhbGlkYXRlRm4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjb21tYS1kZWxpbWl0ZWQgc3RyaW5nIGxpdGVyYWwgb2YgTUlNRSB0eXBlcyB0aGF0IHVzZXJzIGNhbiBhdHRhY2guXG4gICAqIEJ5IGRlZmF1bHQsIGFsbCBmaWxlIHR5cGVzIGFyZSBhbGxvd2VkLlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY2NlcHRlZFR5cGVzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEEgY3VzdG9tIGVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheSB3aGVuIGEgZmlsZSBkb2Vzbid0IG1hdGNoIHRoZSBhY2NlcHRlZCB0eXBlcy5cbiAgICogVGhpcyByZXBsYWNlcyBhIGRlZmF1bHQgZXJyb3IgbWVzc2FnZSB0aGF0IGxpc3RzIGFsbCBhY2NlcHRlZCB0eXBlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY2NlcHRlZFR5cGVzRXJyb3JNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgb3B0aW9uIHRvIGJyb3dzZSBmb3IgZmlsZXMgdG8gYXR0YWNoLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG5vQ2xpY2s6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNwbGF5IHRoZSBvcHRpb24gdG8gYXR0YWNoIGZpbGVzIGZyb20gVVJMcyByYXRoZXIgdGhhbiBmcm9tIGxvY2FsIGRldmljZXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWxsb3dMaW5rczogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFzIHRoZSBmaWxlIGF0dGFjaG1lbnQncyBsYWJlbC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBoaWRlIGBsYWJlbFRleHRgIGZyb20gdmlldy5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgbGFiZWxIaWRkZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdXBsb2FkaW5nIGEgZmlsZSBvciBsaW5rIGlzIHJlcXVpcmVkLlxuICAgKiBXaGVuIHlvdSBzZXQgdGhpcyBwcm9wZXJ0eSB0byBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgYWRkcyBgYXJpYS1yZXF1aXJlZGAgYW5kIGByZXF1aXJlZGBcbiAgICogYXR0cmlidXRlcyB0byB0aGUgaW5wdXQgZWxlbWVudHMgc28gdGhhdCBzY3JlZW4gcmVhZGVycyBhbm5vdW5jZSBhbiBpbnZhbGlkIHN0YXRlIHVudGlsIHRoZSBpbnB1dCBlbGVtZW50XG4gICAqIGlzIGNvbXBsZXRlLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtcmVxdWlyZWRgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLXJlcXVpcmVkKS5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGhlbHAgcG9wb3Zlci4gV2hlbiBzcGVjaWZpZWQgYWxvbmcgd2l0aCBgbGFiZWxUZXh0YCwgYSBbaGVscCBpbmxpbmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9oZWxwLWlubGluZSlcbiAgICogYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSBmaWxlIGF0dGFjaG1lbnQgbGFiZWwuIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBsYWJlbFRleHRgIGlzIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyQ29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZmlsZSBhdHRhY2htZW50IGlzIHN0YWNrZWQgb24gYW5vdGhlciBmb3JtIGNvbXBvbmVudC4gV2hlbiBzcGVjaWZpZWQsIHRoZSBhcHByb3ByaWF0ZVxuICAgKiB2ZXJ0aWNhbCBzcGFjaW5nIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIGZpbGUgYXR0YWNobWVudC5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNreS1mb3JtLWZpZWxkLXN0YWNrZWQnKVxuICBwdWJsaWMgc3RhY2tlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIGhlbHAga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgZ2xvYmFsIGhlbHAgY29udGVudCB0byBkaXNwbGF5LiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBsYWJlbFRleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgcGxhY2VkIGJlc2lkZSB0aGUgZmlsZSBhdHRhY2htZW50IGxhYmVsLiBDbGlja2luZyB0aGUgYnV0dG9uIGludm9rZXMgW2dsb2JhbCBoZWxwXShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2RldmVsb3AvZ2xvYmFsLWhlbHApXG4gICAqIGFzIGNvbmZpZ3VyZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBsYWJlbFRleHRgIGlzIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKVxuICBwdWJsaWMgaW5wdXRFbDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgcmVqZWN0ZWRPdmVyID0gZmFsc2U7XG4gIHB1YmxpYyBhY2NlcHRlZE92ZXIgPSBmYWxzZTtcbiAgcHVibGljIGxpbmtVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjZW50ZXJFdmVudFRhcmdldDogYW55O1xuXG4gICNfbWF4RmlsZVNpemUgPSBNQVhfRklMRV9TSVpFX0RFRkFVTFQ7XG5cbiAgI19taW5GaWxlU2l6ZSA9IE1JTl9GSUxFX1NJWkVfREVGQVVMVDtcblxuICByZWFkb25seSAjZmlsZUF0dGFjaG1lbnRTZXJ2aWNlID0gaW5qZWN0KFNreUZpbGVBdHRhY2htZW50U2VydmljZSk7XG4gIHJlYWRvbmx5ICNsaXZlQW5ub3VuY2VyU3ZjID0gaW5qZWN0KFNreUxpdmVBbm5vdW5jZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI3Jlc291cmNlc1N2YyA9IGluamVjdChTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2lkU3ZjID0gaW5qZWN0KFNreUlkU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIGVycm9ySWQgPSB0aGlzLiNpZFN2Yy5nZW5lcmF0ZUlkKCk7XG4gIHByb3RlY3RlZCByZWplY3RlZEZpbGVzOiBTa3lGaWxlSXRlbVtdID0gW107XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZmlsZXNDaGFuZ2VkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5saW5rQ2hhbmdlZC5jb21wbGV0ZSgpO1xuICAgIHRoaXMubGlua0lucHV0Qmx1ci5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGRyb3BDbGlja2VkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5ub0NsaWNrICYmIHRoaXMuaW5wdXRFbCkge1xuICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsZUNoYW5nZUV2ZW50KGZpbGVDaGFuZ2VFdmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLiNoYW5kbGVGaWxlcyhcbiAgICAgIChmaWxlQ2hhbmdlRXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQgfCB1bmRlZmluZWQpPy5maWxlcyxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGZpbGVEcmFnRW50ZXIoZHJhZ0VudGVyRXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIC8vIFNhdmUgdGhpcyB0YXJnZXQgdG8ga25vdyB3aGVuIHRoZSBkcmFnIGV2ZW50IGxlYXZlc1xuICAgIHRoaXMuI2VudGVyRXZlbnRUYXJnZXQgPSBkcmFnRW50ZXJFdmVudC50YXJnZXQ7XG4gICAgZHJhZ0VudGVyRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZHJhZ0VudGVyRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBmaWxlRHJhZ092ZXIoZHJhZ092ZXJFdmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdHJhbnNmZXIgPSBkcmFnT3ZlckV2ZW50LmRhdGFUcmFuc2ZlcjtcblxuICAgIGRyYWdPdmVyRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZHJhZ092ZXJFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgaWYgKHRyYW5zZmVyKSB7XG4gICAgICBpZiAodHJhbnNmZXIuaXRlbXMpIHtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBBcnJheS5mcm9tKHRyYW5zZmVyLml0ZW1zKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBmaWxlLnR5cGUgJiZcbiAgICAgICAgICAgIHRoaXMuI2ZpbGVBdHRhY2htZW50U2VydmljZS5maWxlVHlwZVJlamVjdGVkKFxuICAgICAgICAgICAgICBmaWxlLnR5cGUsXG4gICAgICAgICAgICAgIHRoaXMuYWNjZXB0ZWRUeXBlcyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMucmVqZWN0ZWRPdmVyID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuYWNjZXB0ZWRPdmVyID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCA+IDAgJiYgIXRoaXMuYWNjZXB0ZWRPdmVyKSB7XG4gICAgICAgICAgdGhpcy5yZWplY3RlZE92ZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmFjY2VwdGVkT3ZlciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IHVudGVzdGFibGUgKi8gZWxzZSBpZiAodHJhbnNmZXIuZmlsZXMpIHtcbiAgICAgICAgLy8gSWYgdGhlIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBEYXRhVHJhbnNmZXIuaXRlbXMsXG4gICAgICAgIC8vIGRlZmVyIGZpbGUtdHlwZSBjaGVja2luZyB0byBkcm9wIGhhbmRsZXIuXG4gICAgICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9EYXRhVHJhbnNmZXIvaXRlbXMjQnJvd3Nlcl9jb21wYXRpYmlsaXR5XG4gICAgICAgIHRoaXMucmVqZWN0ZWRPdmVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYWNjZXB0ZWRPdmVyID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsZURyb3AoZHJvcEV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBkcm9wRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZHJvcEV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICB0aGlzLiNlbnRlckV2ZW50VGFyZ2V0ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmVqZWN0ZWRPdmVyID0gZmFsc2U7XG4gICAgdGhpcy5hY2NlcHRlZE92ZXIgPSBmYWxzZTtcblxuICAgIGlmIChkcm9wRXZlbnQuZGF0YVRyYW5zZmVyICYmIGRyb3BFdmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpIHtcbiAgICAgIGNvbnN0IGhhc0RpcmVjdG9yeSA9IHRoaXMuI2ZpbGVBdHRhY2htZW50U2VydmljZS5oYXNEaXJlY3RvcnkoXG4gICAgICAgIGRyb3BFdmVudC5kYXRhVHJhbnNmZXIuZmlsZXMsXG4gICAgICApO1xuICAgICAgY29uc3QgaW52YWxpZE51bWJlck9mRmlsZXMgPVxuICAgICAgICAhdGhpcy5tdWx0aXBsZSAmJiBkcm9wRXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzLmxlbmd0aCA+IDE7XG5cbiAgICAgIGlmIChoYXNEaXJlY3RvcnkgfHwgaW52YWxpZE51bWJlck9mRmlsZXMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiNoYW5kbGVGaWxlcyhkcm9wRXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsZURyYWdMZWF2ZShkcmFnTGVhdmVFdmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2VudGVyRXZlbnRUYXJnZXQgPT09IGRyYWdMZWF2ZUV2ZW50LnRhcmdldCkge1xuICAgICAgdGhpcy5yZWplY3RlZE92ZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMuYWNjZXB0ZWRPdmVyID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZExpbmtFbnRlcihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC53aGljaCA9PT0gMTMpIHtcbiAgICAgIHRoaXMuYWRkTGluayhldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZExpbmsoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmxpbmtDaGFuZ2VkLmVtaXQoeyB1cmw6IHRoaXMubGlua1VybCB9IGFzIFNreUZpbGVMaW5rKTtcbiAgICB0aGlzLiNhbm5vdW5jZVN0YXRlKFxuICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9saW5rX2FkZGVkJyxcbiAgICAgIHRoaXMubGlua1VybCxcbiAgICApO1xuICAgIHRoaXMubGlua1VybCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBvbkxpbmtCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMubGlua0lucHV0Qmx1ci5lbWl0KCk7XG4gIH1cblxuICAjYW5ub3VuY2VTdGF0ZShyZXNvdXJjZVN0cmluZzogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMuI3Jlc291cmNlc1N2Y1xuICAgICAgLmdldFN0cmluZyhyZXNvdXJjZVN0cmluZywgLi4uYXJncylcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChpbnRlcm5hdGlvbmFsaXplZFN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLiNsaXZlQW5ub3VuY2VyU3ZjLmFubm91bmNlKGludGVybmF0aW9uYWxpemVkU3RyaW5nKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgI2VtaXRGaWxlQ2hhbmdlRXZlbnQoXG4gICAgdG90YWxGaWxlczogbnVtYmVyLFxuICAgIHJlamVjdGVkRmlsZUFycmF5OiBTa3lGaWxlSXRlbVtdLFxuICAgIHZhbGlkRmlsZUFycmF5OiBTa3lGaWxlSXRlbVtdLFxuICApOiB2b2lkIHtcbiAgICBpZiAodG90YWxGaWxlcyA9PT0gcmVqZWN0ZWRGaWxlQXJyYXkubGVuZ3RoICsgdmFsaWRGaWxlQXJyYXkubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbGVzQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgZmlsZXM6IHZhbGlkRmlsZUFycmF5LFxuICAgICAgICByZWplY3RlZEZpbGVzOiByZWplY3RlZEZpbGVBcnJheSxcbiAgICAgIH0gYXMgU2t5RmlsZURyb3BDaGFuZ2UpO1xuXG4gICAgICBpZiAodGhpcy5pbnB1dEVsKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI2ZpbGVzUmVqZWN0ZWQoXG4gICAgZmlsZTogU2t5RmlsZUl0ZW0sXG4gICAgdmFsaWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10sXG4gICAgcmVqZWN0ZWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10sXG4gICAgdG90YWxGaWxlczogbnVtYmVyLFxuICApOiB2b2lkIHtcbiAgICByZWplY3RlZEZpbGVBcnJheS5wdXNoKGZpbGUpO1xuICAgIHRoaXMuI2VtaXRGaWxlQ2hhbmdlRXZlbnQodG90YWxGaWxlcywgcmVqZWN0ZWRGaWxlQXJyYXksIHZhbGlkRmlsZUFycmF5KTtcbiAgfVxuXG4gICNsb2FkRmlsZShcbiAgICBmaWxlRHJvcDogU2t5RmlsZURyb3BDb21wb25lbnQsXG4gICAgZmlsZTogU2t5RmlsZUl0ZW0sXG4gICAgdmFsaWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10sXG4gICAgcmVqZWN0ZWRGaWxlQXJyYXk6IFNreUZpbGVJdGVtW10sXG4gICAgdG90YWxGaWxlczogbnVtYmVyLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgZmlsZS51cmwgPSBldmVudC50YXJnZXQucmVzdWx0O1xuICAgICAgdmFsaWRGaWxlQXJyYXkucHVzaChmaWxlKTtcbiAgICAgIGZpbGVEcm9wLiNlbWl0RmlsZUNoYW5nZUV2ZW50KFxuICAgICAgICB0b3RhbEZpbGVzLFxuICAgICAgICByZWplY3RlZEZpbGVBcnJheSxcbiAgICAgICAgdmFsaWRGaWxlQXJyYXksXG4gICAgICApO1xuICAgICAgdGhpcy4jYW5ub3VuY2VTdGF0ZShcbiAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9maWxlX2FkZGVkJyxcbiAgICAgICAgZmlsZS5maWxlLm5hbWUsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgKCkgPT4ge1xuICAgICAgZmlsZURyb3AuI2ZpbGVzUmVqZWN0ZWQoXG4gICAgICAgIGZpbGUsXG4gICAgICAgIHZhbGlkRmlsZUFycmF5LFxuICAgICAgICByZWplY3RlZEZpbGVBcnJheSxcbiAgICAgICAgdG90YWxGaWxlcyxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCAoKSA9PiB7XG4gICAgICBmaWxlRHJvcC4jZmlsZXNSZWplY3RlZChcbiAgICAgICAgZmlsZSxcbiAgICAgICAgdmFsaWRGaWxlQXJyYXksXG4gICAgICAgIHJlamVjdGVkRmlsZUFycmF5LFxuICAgICAgICB0b3RhbEZpbGVzLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUuZmlsZSk7XG4gIH1cblxuICAjaGFuZGxlRmlsZXMoZmlsZXM/OiBGaWxlTGlzdCB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoZmlsZXMpIHtcbiAgICAgIGNvbnN0IHZhbGlkRmlsZUFycmF5OiBTa3lGaWxlSXRlbVtdID0gW107XG4gICAgICBjb25zdCByZWplY3RlZEZpbGVBcnJheTogU2t5RmlsZUl0ZW1bXSA9IFtdO1xuICAgICAgY29uc3QgdG90YWxGaWxlcyA9IGZpbGVzLmxlbmd0aDtcblxuICAgICAgY29uc3QgcHJvY2Vzc2VkRmlsZXMgPSB0aGlzLiNmaWxlQXR0YWNobWVudFNlcnZpY2UuY2hlY2tGaWxlcyhcbiAgICAgICAgZmlsZXMsXG4gICAgICAgIHRoaXMubWluRmlsZVNpemUsXG4gICAgICAgIHRoaXMubWF4RmlsZVNpemUsXG4gICAgICAgIHRoaXMuYWNjZXB0ZWRUeXBlcyxcbiAgICAgICAgdGhpcy52YWxpZGF0ZUZuLFxuICAgICAgKTtcblxuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIHByb2Nlc3NlZEZpbGVzKSB7XG4gICAgICAgIGlmIChmaWxlLmVycm9yVHlwZSkge1xuICAgICAgICAgIHRoaXMuI2ZpbGVzUmVqZWN0ZWQoXG4gICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgdmFsaWRGaWxlQXJyYXksXG4gICAgICAgICAgICByZWplY3RlZEZpbGVBcnJheSxcbiAgICAgICAgICAgIHRvdGFsRmlsZXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLiNsb2FkRmlsZShcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgdmFsaWRGaWxlQXJyYXksXG4gICAgICAgICAgICByZWplY3RlZEZpbGVBcnJheSxcbiAgICAgICAgICAgIHRvdGFsRmlsZXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLnJlamVjdGVkRmlsZXMgPSByZWplY3RlZEZpbGVBcnJheTtcbiAgICB9XG4gIH1cbn1cbiIsIjxmaWVsZHNldCBjbGFzcz1cInNreS1maWxlLWRyb3Atd3JhcHBlclwiPlxuICBAaWYgKGxhYmVsVGV4dCkge1xuICAgIDxsZWdlbmRcbiAgICAgIGNsYXNzPVwic2t5LWNvbnRyb2wtbGFiZWwgc2t5LWZvbnQtYm9keS1kZWZhdWx0XCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NreS1zY3JlZW4tcmVhZGVyLW9ubHknOiBsYWJlbEhpZGRlblxuICAgICAgfVwiXG4gICAgPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWxhYmVsLXRleHRcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1jb250cm9sLWxhYmVsLXJlcXVpcmVkJzogcmVxdWlyZWRcbiAgICAgICAgfVwiXG4gICAgICAgID57eyBsYWJlbFRleHQgfX08L3NwYW5cbiAgICAgID5cbiAgICAgIEBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJza3ktc2NyZWVuLXJlYWRlci1vbmx5XCI+e3tcbiAgICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X3JlcXVpcmVkJyB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoaGVscFBvcG92ZXJDb250ZW50IHx8IGhlbHBLZXkpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJza3ktY29udHJvbC1oZWxwLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxza3ktaGVscC1pbmxpbmVcbiAgICAgICAgICAgIFtoZWxwS2V5XT1cImhlbHBLZXlcIlxuICAgICAgICAgICAgW2xhYmVsVGV4dF09XCJsYWJlbFRleHRcIlxuICAgICAgICAgICAgW3BvcG92ZXJUaXRsZV09XCJoZWxwUG9wb3ZlclRpdGxlXCJcbiAgICAgICAgICAgIFtwb3BvdmVyQ29udGVudF09XCJoZWxwUG9wb3ZlckNvbnRlbnRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2xlZ2VuZD5cbiAgfVxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktZmlsZS1kcm9wLXJvd1wiXG4gICAgW25nQ2xhc3NdPVwieyAnc2t5LWZpbGUtZHJvcC1hbGxvdy1saW5rcyc6IGFsbG93TGlua3MgfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNreS1maWxlLWRyb3AtY29sXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3NreS1maWxlLWRyb3AtYWNjZXB0JzogYWNjZXB0ZWRPdmVyLFxuICAgICAgICAnc2t5LWZpbGUtZHJvcC1yZWplY3QnOiByZWplY3RlZE92ZXJcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJza3ktZmlsZS1kcm9wIHNreS1maWxlLWRyb3AtdGFyZ2V0XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgZmlsZVVwbG9hZEFyaWFMYWJlbCB8fFxuICAgICAgICAgICgnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2RyYWdfb3JfY2xpY2snIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImhpbnRUZXh0ID8gaGludFRleHRFbC5pZCA6IHVuZGVmaW5lZFwiXG4gICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCIhIXJlamVjdGVkRmlsZXMubGVuZ3RoXCJcbiAgICAgICAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiXG4gICAgICAgICAgbGFiZWxUZXh0ICYmIHJlamVjdGVkRmlsZXMubGVuZ3RoID8gZXJyb3JJZCA6IHVuZGVmaW5lZFxuICAgICAgICBcIlxuICAgICAgICAoY2xpY2spPVwiZHJvcENsaWNrZWQoKVwiXG4gICAgICAgIChkcmFnb3Zlcik9XCJmaWxlRHJhZ092ZXIoJGV2ZW50KVwiXG4gICAgICAgIChkcmFnZW50ZXIpPVwiZmlsZURyYWdFbnRlcigkZXZlbnQpXCJcbiAgICAgICAgKGRyYWdsZWF2ZSk9XCJmaWxlRHJhZ0xlYXZlKCRldmVudClcIlxuICAgICAgICAoZHJvcCk9XCJmaWxlRHJvcCgkZXZlbnQpXCJcbiAgICAgID48L2J1dHRvbj5cblxuICAgICAgPGlucHV0XG4gICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgY2xhc3M9XCJza3ktZmlsZS1pbnB1dC1oaWRkZW5cIlxuICAgICAgICBbYXR0ci5tdWx0aXBsZV09XCJtdWx0aXBsZSA/IG11bHRpcGxlIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFjY2VwdF09XCJhY2NlcHRlZFR5cGVzID8gYWNjZXB0ZWRUeXBlcyA6IG51bGxcIlxuICAgICAgICAoY2hhbmdlKT1cImZpbGVDaGFuZ2VFdmVudCgkZXZlbnQpXCJcbiAgICAgIC8+XG5cbiAgICAgIEBpZiAoY3VzdG9tRWwuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbnRlbnRzIHNreS1maWxlLWRyb3AtdXBsb2FkLWNvbnRlbnRzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtY29udGVudHMtbm90LW92ZXJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktZmlsZS1kcm9wLXRleHQtaGVhZGVyXCJcbiAgICAgICAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdza3ktZm9udC1kaXNwbGF5LTMnOiAnZGVmYXVsdCdcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9kcmFnX2ZpbGVfaGVyZSdcbiAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLXRleHRcIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX29yX2NsaWNrX3RvX2Jyb3dzZSdcbiAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxza3ktaWNvbiBpY29uPVwiY2xvdWQtdXBsb2FkXCIgY2xhc3M9XCJza3ktZmlsZS11cGxvYWQtaWNvblwiIC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIFRoaXMgd2lsbCBhcHBlYXIgd2hlbiBmaWxlIGlzIGRyYWdnZWQgb3ZlciBhbmQgaXMgdmFsaWQgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtY29udGVudHMtYWNjZXB0XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZpbGUtZHJvcC10ZXh0LWhlYWRlclwiXG4gICAgICAgICAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnc2t5LWZvbnQtZGlzcGxheS0zJzogJ2RlZmF1bHQnXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfZHJvcF9maWxlc19oZXJlJ1xuICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNreS1pY29uIGljb249XCJidWxsc2V5ZVwiIGNsYXNzPVwic2t5LWZpbGUtdXBsb2FkLWljb25cIiAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBUaGlzIHdpbGwgYXBwZWFyIHdoZW4gZmlsZSBpcyBkcmFnZ2VkIG92ZXIgYW5kIGlzIGludmFsaWQgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtY29udGVudHMtcmVqZWN0XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZpbGUtZHJvcC10ZXh0LWhlYWRlclwiXG4gICAgICAgICAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnc2t5LWZvbnQtZGlzcGxheS0zJzogJ2RlZmF1bHQnXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfaW52YWxpZF9maWxlJ1xuICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNreS1pY29uIGljb249XCJ0aW1lcy1jaXJjbGVcIiBjbGFzcz1cInNreS1maWxlLXVwbG9hZC1pY29uXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgI2N1c3RvbUVsIGNsYXNzPVwic2t5LWZpbGUtZHJvcC1jb250ZW50cy1jdXN0b21cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIEBpZiAoYWxsb3dMaW5rcykge1xuICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza3ktZmlsZS1kcm9wLWNvbnRlbnRzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtbGlua1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNreS1maWxlLWRyb3AtbGluay1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2t5LWZpbGUtZHJvcC10ZXh0LWhlYWRlclwiXG4gICAgICAgICAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ3NreS1mb250LWRpc3BsYXktMyc6ICdkZWZhdWx0J1xuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfZmlsZV91cGxvYWRfbGlua19sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNreS1pbnB1dC1ib3ggW2hpbnRUZXh0XT1cImxpbmtVcGxvYWRIaW50VGV4dFwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgIGxpbmtVcGxvYWRBcmlhTGFiZWwgfHxcbiAgICAgICAgICAgICAgICAgICgnc2t5dXhfZmlsZV9hdHRhY2htZW50X2ZpbGVfdXBsb2FkX2xpbmtfbGFiZWwnXG4gICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cIiEhcmVqZWN0ZWRGaWxlcy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cIlxuICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0ICYmIHJlamVjdGVkRmlsZXMubGVuZ3RoID8gZXJyb3JJZCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJsaW5rVXJsXCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkxpbmtCbHVyKClcIlxuICAgICAgICAgICAgICAgIChrZXl1cCk9XCJhZGRMaW5rRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3NreS1pbnB1dC1ib3g+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFsaW5rVXJsXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZExpbmsoJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3VwbG9hZF9saW5rX2RvbmUnIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICA8ZGl2ICNoaW50VGV4dEVsPVwic2t5SWRcIiBza3lJZD5cbiAgICBAaWYgKGhpbnRUZXh0KSB7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2t5LWZvbnQtZGVlbXBoYXNpemVkIHNreS1maWxlLWRyb3AtaGludC10ZXh0XCJcbiAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICdza3ktZm9udC1kZWVtcGhhc2l6ZWQnOiAnZGVmYXVsdCcsXG4gICAgICAgICAgJ3NreS1mb250LWhpbnQtdGV4dC1zJzogJ21vZGVybidcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIHt7IGhpbnRUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuPC9maWVsZHNldD5cbjxza3ktZm9ybS1lcnJvcnNcbiAgW2lkXT1cImVycm9ySWRcIlxuICBbbGFiZWxUZXh0XT1cImxhYmVsVGV4dFwiXG4gIFt0b3VjaGVkXT1cInJlamVjdGVkRmlsZXMubGVuZ3RoID4gMFwiXG4+XG4gIEBmb3IgKHJlamVjdGVkRmlsZSBvZiByZWplY3RlZEZpbGVzOyB0cmFjayByZWplY3RlZEZpbGUpIHtcbiAgICA8ZGl2PlxuICAgICAgQGlmIChyZWplY3RlZEZpbGUuZXJyb3JUeXBlID09PSAnZmlsZVR5cGUnKSB7XG4gICAgICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgICAgIGVycm9yTmFtZT1cImZpbGVUeXBlXCJcbiAgICAgICAgICBbZXJyb3JUZXh0XT1cIlxuICAgICAgICAgICAgJ3NreXV4X2ZpbGVfYXR0YWNobWVudF9maWxlX3R5cGVfZXJyb3JfbGFiZWxfdGV4dF93aXRoX25hbWUnXG4gICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgOiByZWplY3RlZEZpbGUuZmlsZS5uYW1lXG4gICAgICAgICAgICAgICAgOiByZWplY3RlZEZpbGUuZXJyb3JQYXJhbVxuICAgICAgICAgIFwiXG4gICAgICAgIC8+XG4gICAgICB9IEBlbHNlIGlmIChyZWplY3RlZEZpbGUuZXJyb3JUeXBlID09PSAnbWF4RmlsZVNpemUnKSB7XG4gICAgICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgICAgIGVycm9yTmFtZT1cIm1heEZpbGVTaXplXCJcbiAgICAgICAgICBbZXJyb3JUZXh0XT1cIlxuICAgICAgICAgICAgYWNjZXB0ZWRUeXBlc0Vycm9yTWVzc2FnZSA/P1xuICAgICAgICAgICAgICAnc2t5dXhfZmlsZV9hdHRhY2htZW50X21heF9maWxlX3NpemVfZXJyb3JfbGFiZWxfdGV4dF93aXRoX25hbWUnXG4gICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgOiByZWplY3RlZEZpbGUuZmlsZS5uYW1lXG4gICAgICAgICAgICAgICAgOiAocmVqZWN0ZWRGaWxlLmVycm9yUGFyYW0gfCBza3lGaWxlU2l6ZSlcbiAgICAgICAgICBcIlxuICAgICAgICAvPlxuICAgICAgfSBAZWxzZSBpZiAocmVqZWN0ZWRGaWxlLmVycm9yVHlwZSA9PT0gJ21pbkZpbGVTaXplJykge1xuICAgICAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICAgICBlcnJvck5hbWU9XCJtaW5GaWxlU2l6ZVwiXG4gICAgICAgICAgW2Vycm9yVGV4dF09XCJcbiAgICAgICAgICAgICdza3l1eF9maWxlX2F0dGFjaG1lbnRfbWluX2ZpbGVfc2l6ZV9lcnJvcl9sYWJlbF90ZXh0X3dpdGhfbmFtZSdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgICA6IHJlamVjdGVkRmlsZS5maWxlLm5hbWVcbiAgICAgICAgICAgICAgICA6IChyZWplY3RlZEZpbGUuZXJyb3JQYXJhbSB8IHNreUZpbGVTaXplKVxuICAgICAgICAgIFwiXG4gICAgICAgIC8+XG4gICAgICB9IEBlbHNlIGlmIChcbiAgICAgICAgcmVqZWN0ZWRGaWxlLmVycm9yVHlwZSA9PT0gJ3ZhbGlkYXRlJyAmJiByZWplY3RlZEZpbGUuZXJyb3JQYXJhbVxuICAgICAgKSB7XG4gICAgICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgICAgIGVycm9yTmFtZT1cInZhbGlkYXRlXCJcbiAgICAgICAgICBbZXJyb3JUZXh0XT1cInJlamVjdGVkRmlsZS5maWxlLm5hbWUgKyAnOiAnICsgcmVqZWN0ZWRGaWxlLmVycm9yUGFyYW1cIlxuICAgICAgICAvPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG48L3NreS1mb3JtLWVycm9ycz5cbiJdfQ==
@@ -1,18 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { SkyFormErrorModule } from '../../form-error/form-error.module';
3
- import { SkyFileDropComponent } from './file-drop.component';
4
- import { SkyFileItemComponent } from './file-item.component';
5
- import * as i0 from "@angular/core";
6
- export class SkyFileDropModule {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyFileDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SkyFileDropModule, imports: [SkyFileDropComponent, SkyFileItemComponent], exports: [SkyFileDropComponent, SkyFileItemComponent, SkyFormErrorModule] }); }
9
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyFileDropModule, imports: [SkyFileDropComponent, SkyFileItemComponent, SkyFormErrorModule] }); }
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyFileDropModule, decorators: [{
12
- type: NgModule,
13
- args: [{
14
- exports: [SkyFileDropComponent, SkyFileItemComponent, SkyFormErrorModule],
15
- imports: [SkyFileDropComponent, SkyFileItemComponent],
16
- }]
17
- }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9mb3Jtcy9zcmMvbGliL21vZHVsZXMvZmlsZS1hdHRhY2htZW50L2ZpbGUtZHJvcC9maWxlLWRyb3AubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBTTdELE1BQU0sT0FBTyxpQkFBaUI7K0dBQWpCLGlCQUFpQjtnSEFBakIsaUJBQWlCLFlBRmxCLG9CQUFvQixFQUFFLG9CQUFvQixhQUQxQyxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0I7Z0hBRzdELGlCQUFpQixZQUZsQixvQkFBb0IsRUFBRSxvQkFBb0IsRUFERSxrQkFBa0I7OzRGQUc3RCxpQkFBaUI7a0JBSjdCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLENBQUM7b0JBQ3pFLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixFQUFFLG9CQUFvQixDQUFDO2lCQUN0RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreUZvcm1FcnJvck1vZHVsZSB9IGZyb20gJy4uLy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lGaWxlRHJvcENvbXBvbmVudCB9IGZyb20gJy4vZmlsZS1kcm9wLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lGaWxlSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZmlsZS1pdGVtLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtTa3lGaWxlRHJvcENvbXBvbmVudCwgU2t5RmlsZUl0ZW1Db21wb25lbnQsIFNreUZvcm1FcnJvck1vZHVsZV0sXG4gIGltcG9ydHM6IFtTa3lGaWxlRHJvcENvbXBvbmVudCwgU2t5RmlsZUl0ZW1Db21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lGaWxlRHJvcE1vZHVsZSB7fVxuIl19