@ieeesa-npm/presentation 0.27.4 → 0.27.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/assets/constants.json +2 -2
- package/esm2022/lib/components/file-download/file-download.component.mjs +4 -2
- package/esm2022/lib/components/file-upload/file-upload.component.mjs +40 -21
- package/esm2022/lib/components/tabs/tabs.component.mjs +13 -13
- package/esm2022/lib/directives/dynamic-form-field/dynamic-form-field.directive.mjs +4 -2
- package/esm2022/lib/models/align-browsed-files.model.mjs +7 -0
- package/esm2022/lib/models/custom-properties.model.mjs +13 -0
- package/esm2022/lib/models/field-config.model.mjs +1 -1
- package/esm2022/lib/models/file-info.model.mjs +2 -0
- package/esm2022/lib/models/file-upload-status.model.mjs +1 -1
- package/esm2022/lib/services/file-upload.service.mjs +3 -3
- package/esm2022/public-api.mjs +7 -6
- package/fesm2022/ieeesa-npm-presentation.mjs +90 -67
- package/fesm2022/ieeesa-npm-presentation.mjs.map +1 -1
- package/lib/components/chips/chips.component.d.ts +1 -1
- package/lib/components/dynamic-form/dynamic-form.component.d.ts +1 -1
- package/lib/components/file-download/file-download.component.d.ts +12 -2
- package/lib/components/file-upload/file-upload.component.d.ts +41 -15
- package/lib/components/tabs/tabs.component.d.ts +3 -3
- package/lib/directives/dynamic-form-field/dynamic-form-field.directive.d.ts +1 -1
- package/lib/directives/file-upload/file-upload.directive.d.ts +1 -1
- package/lib/models/{view-files-format.model.d.ts → align-browsed-files.model.d.ts} +1 -1
- package/lib/models/{dynamic-properties.model.d.ts → custom-properties.model.d.ts} +1 -1
- package/lib/models/field-config.model.d.ts +3 -3
- package/lib/models/{delete-file.model.d.ts → file-info.model.d.ts} +2 -2
- package/lib/models/file-upload-status.model.d.ts +1 -1
- package/lib/services/file-upload.service.d.ts +18 -3
- package/package.json +1 -1
- package/public-api.d.ts +6 -5
- package/src/lib/assets/constants.json +2 -2
- package/esm2022/lib/models/delete-file.model.mjs +0 -2
- package/esm2022/lib/models/dynamic-properties.model.mjs +0 -13
- package/esm2022/lib/models/view-files-format.model.mjs +0 -7
|
@@ -11,7 +11,7 @@ import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
|
11
11
|
import { FileUploadDirective } from '../../directives/file-upload/file-upload.directive';
|
|
12
12
|
import { FormControlType } from '../../models/form-control-types.model';
|
|
13
13
|
import { IconButtonComponent } from '../icon-button/icon-button.component';
|
|
14
|
-
import {
|
|
14
|
+
import { AlignBrowsedFiles } from '../../models/align-browsed-files.model';
|
|
15
15
|
import { AlignType } from '../../models/align-type.model';
|
|
16
16
|
import { FileDownloadComponent } from '../file-download/file-download.component';
|
|
17
17
|
import * as i0 from "@angular/core";
|
|
@@ -82,13 +82,13 @@ export class FileUploadComponent {
|
|
|
82
82
|
this.isMultiFileUpload = false;
|
|
83
83
|
this.isUploadInProgress = false;
|
|
84
84
|
this.isAllowAnyFileType = false;
|
|
85
|
-
this.
|
|
85
|
+
this.alignBrowsedFiles = AlignBrowsedFiles.DEFAULT;
|
|
86
86
|
this.isUploadButtonNeeded = false;
|
|
87
87
|
// Default maximum allowed upload file size is 2mb.
|
|
88
88
|
this.maxUploadFileSize = 2;
|
|
89
89
|
this.uploadedSizeValue = 0;
|
|
90
90
|
this.alignFileUploadErrorMessageTo = AlignType.BOTTOM;
|
|
91
|
-
this.
|
|
91
|
+
this.maxFilesUploadedOnce = this.constants?.fileUpload?.limit?.maxFilesUploadedOnce;
|
|
92
92
|
this.maxFilesUploadLimitErrorMessage = '';
|
|
93
93
|
this.uploadSelectedFiles = new EventEmitter();
|
|
94
94
|
this.downloadSelectedFile = new EventEmitter();
|
|
@@ -115,7 +115,8 @@ export class FileUploadComponent {
|
|
|
115
115
|
this.config?.allowedFileTypes ?? this.allowedFileTypes;
|
|
116
116
|
this.isAllowAnyFileType =
|
|
117
117
|
this.config?.isAllowAnyFileType ?? this.isAllowAnyFileType;
|
|
118
|
-
this.
|
|
118
|
+
this.alignBrowsedFiles =
|
|
119
|
+
this.config?.alignBrowsedFiles ?? this.alignBrowsedFiles;
|
|
119
120
|
this.isUploadButtonNeeded =
|
|
120
121
|
this.config?.isUploadButtonNeeded ?? this.isUploadButtonNeeded;
|
|
121
122
|
this.actionButtonAlign =
|
|
@@ -134,8 +135,8 @@ export class FileUploadComponent {
|
|
|
134
135
|
this.config.maxFileSizeErrorMessage =
|
|
135
136
|
this.config?.maxFileSizeErrorMessage ?? this.maxFileSizeErrorMessage;
|
|
136
137
|
this.isFileSelected = this.config?.isFileSelected ?? this.isFileSelected;
|
|
137
|
-
this.
|
|
138
|
-
this.config?.
|
|
138
|
+
this.maxFilesUploadedOnce =
|
|
139
|
+
this.config?.maxFilesUploadedOnce ?? this.maxFilesUploadedOnce;
|
|
139
140
|
this.maxFilesUploadLimitErrorMessage =
|
|
140
141
|
this.config?.maxFilesUploadLimitErrorMessage ??
|
|
141
142
|
this.maxFilesUploadLimitErrorMessage;
|
|
@@ -164,7 +165,7 @@ export class FileUploadComponent {
|
|
|
164
165
|
this.selectedFiles = [];
|
|
165
166
|
this.fileUploadStatus.alreadyExistsFiles = [];
|
|
166
167
|
this.fileUploadStatus.filesNamesUploadFailed = [];
|
|
167
|
-
this.fileUploadStatus.
|
|
168
|
+
this.fileUploadStatus.noOfFilesUploadedSuccessfully = 0;
|
|
168
169
|
const fileUploadFormControl = this.group?.get(this.config?.controlName ?? 'fileUpload');
|
|
169
170
|
if (fileUploadFormControl) {
|
|
170
171
|
fileUploadFormControl.markAsDirty();
|
|
@@ -226,7 +227,7 @@ export class FileUploadComponent {
|
|
|
226
227
|
if (this.isMultiFileUpload) {
|
|
227
228
|
this.isValidMaxFileUploadLimit =
|
|
228
229
|
Object.values(file).length <=
|
|
229
|
-
this.constants?.fileUpload?.limit?.
|
|
230
|
+
this.constants?.fileUpload?.limit?.maxFilesUploadedOnce;
|
|
230
231
|
if (!this.isValidMaxFileUploadLimit) {
|
|
231
232
|
this.group?.get(this.config?.controlName)?.setErrors({
|
|
232
233
|
maxFilesUploadLimitReached: true,
|
|
@@ -308,15 +309,15 @@ export class FileUploadComponent {
|
|
|
308
309
|
return index;
|
|
309
310
|
}
|
|
310
311
|
/**
|
|
311
|
-
* Triggers
|
|
312
|
+
* Triggers and opens the file browse window when the Browse button is clicked.
|
|
312
313
|
* @memberof FileUploadComponent
|
|
313
314
|
*/
|
|
314
315
|
fileClick() {
|
|
315
316
|
this.fileField.nativeElement.click();
|
|
316
317
|
}
|
|
317
318
|
/**
|
|
318
|
-
*
|
|
319
|
-
* @param {string[]}
|
|
319
|
+
* Returns the failed file names with comma separation.
|
|
320
|
+
* @param {string[]} fileNames
|
|
320
321
|
* @return {*} {string}
|
|
321
322
|
* @memberof FileUploadComponent
|
|
322
323
|
*/
|
|
@@ -324,7 +325,7 @@ export class FileUploadComponent {
|
|
|
324
325
|
return fileNames && fileNames.length ? fileNames.join(',') : '';
|
|
325
326
|
}
|
|
326
327
|
/**
|
|
327
|
-
* Removes file from
|
|
328
|
+
* Removes the unselected file from the browsed or selected files and emits uploadSelectedFiles event with the selected files.
|
|
328
329
|
* @param {number} index
|
|
329
330
|
* @memberof FileUploadComponent
|
|
330
331
|
*/
|
|
@@ -336,21 +337,29 @@ export class FileUploadComponent {
|
|
|
336
337
|
this.uploadSelectedFiles.emit(this.selectedFiles);
|
|
337
338
|
if (this.selectedFiles.length === 0) {
|
|
338
339
|
this.resetUpload();
|
|
339
|
-
this.fileUploadStatus.
|
|
340
|
+
this.fileUploadStatus.noOfFilesUploadedSuccessfully = 0;
|
|
340
341
|
this.fileUploadStatus.filesNamesUploadFailed = [];
|
|
341
342
|
this.fileUploadStatus.alreadyExistsFiles = [];
|
|
342
|
-
this.
|
|
343
|
+
this.canEnableUploadButton(true);
|
|
343
344
|
}
|
|
344
345
|
}
|
|
345
346
|
/**
|
|
346
|
-
*
|
|
347
|
+
* Disables the file upload button.
|
|
347
348
|
* @memberof FileUploadComponent
|
|
348
349
|
*/
|
|
349
350
|
disableUploadButton() {
|
|
350
351
|
if (!this.isUploadButtonDisabled) {
|
|
351
|
-
this.
|
|
352
|
+
this.canEnableUploadButton(true);
|
|
352
353
|
}
|
|
353
354
|
}
|
|
355
|
+
/**
|
|
356
|
+
* Enables or disables the file upload button.
|
|
357
|
+
* @param {boolean} enable
|
|
358
|
+
* @memberof FileUploadComponent
|
|
359
|
+
*/
|
|
360
|
+
canEnableUploadButton(enable) {
|
|
361
|
+
this.isUploadButtonDisabled = enable;
|
|
362
|
+
}
|
|
354
363
|
/**
|
|
355
364
|
* Based on isMultiFileUpload flag return files to download.
|
|
356
365
|
* @memberof FileUploadComponent
|
|
@@ -361,8 +370,18 @@ export class FileUploadComponent {
|
|
|
361
370
|
}
|
|
362
371
|
return this.uploadedFiles;
|
|
363
372
|
}
|
|
373
|
+
/**
|
|
374
|
+
* TrackByFunction is called for each file in the collection and return a unique identifier for that file.
|
|
375
|
+
* @param {number} index
|
|
376
|
+
* @param {File} file
|
|
377
|
+
* @return {File}
|
|
378
|
+
* @memberof FileUploadComponent
|
|
379
|
+
*/
|
|
380
|
+
trackByFunc(index, file) {
|
|
381
|
+
return file;
|
|
382
|
+
}
|
|
364
383
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileUploadComponent, deps: [{ token: i1.FormUtilityService }, { token: i2.FileUploadService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
365
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FileUploadComponent, isStandalone: true, selector: "ieeesa-file-upload", inputs: { maxFileSizeErrorMessage: "maxFileSizeErrorMessage", actionButtonAlign: "actionButtonAlign", formControlName: "formControlName", isFileSelected: "isFileSelected", supportMessage: "supportMessage", allowedFileTypes: "allowedFileTypes", isMultiFileUpload: "isMultiFileUpload", isUploadInProgress: "isUploadInProgress", fileUploadHeading: "fileUploadHeading", isAllowAnyFileType: "isAllowAnyFileType", viewFilesFormat: "viewFilesFormat", isUploadButtonNeeded: "isUploadButtonNeeded", maxUploadFileSize: "maxUploadFileSize", alignFileUploadErrorMessageTo: "alignFileUploadErrorMessageTo", maxFilesUploadLimit: "maxFilesUploadLimit", maxFilesUploadLimitErrorMessage: "maxFilesUploadLimitErrorMessage", fileUploadStatus: "fileUploadStatus", uploadedSize: "uploadedSize", fileDownloadConfig: "fileDownloadConfig" }, outputs: { uploadSelectedFiles: "uploadSelectedFiles", downloadSelectedFile: "downloadSelectedFile" }, viewQueries: [{ propertyName: "fileField", first: true, predicate: ["fileField"], descendants: true }], ngImport: i0, template: "<div\r\n [formGroup]=\"group\"\r\n class=\"ieeesa-file-upload\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-file-upload__label-left'\r\n : 'ieeesa-file-upload__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-body-sm-14 ieeesa-file-upload__label\">{{\r\n config.label\r\n }}</mat-label>\r\n <ieeesa-file-download\r\n [fileDownloadConfig]=\"fileDownloadConfig\"\r\n [apiBaseUrl]=\"apiBaseUrl\"\r\n [downloadFiles]=\"getFilesToDownload()\"\r\n (downloadSelectedFile)=\"downloadFile($event)\"\r\n ></ieeesa-file-download>\r\n <div\r\n class=\"ieeesa-file-upload__upload p-4\"\r\n ieeesaFileUpload\r\n (fileDropped)=\"getFile($event)\"\r\n >\r\n <p class=\"ieeesa-file-upload__upload__heading m-0 ieeesa-label-lg-bold-16\">\r\n {{ fileUploadHeading }}\r\n </p>\r\n <div class=\"ieeesa-file-upload__upload__browse-files\">\r\n <button\r\n mat-button\r\n (click)=\"fileClick()\"\r\n class=\"ieeesa-file-upload__browse-btn mat-tertiary-button\"\r\n [attr.aria-label]=\"fileUploadAriaLabel.browseFiles\"\r\n type=\"button\"\r\n [disabled]=\"fileUploadStatus?.isUploadingStart\"\r\n >\r\n {{ fileUploadLabel.browseFiles }}\r\n </button>\r\n <ng-container *ngIf=\"isMultiFileUpload\">\r\n <input\r\n type=\"file\"\r\n #fileField\r\n (change)=\"getFile($any($event).target.files)\"\r\n hidden\r\n [accept]=\"allowedFileTypes\"\r\n [multiple]=\"true\"\r\n [disabled]=\"fileUploadStatus?.isUploadingStart\"\r\n />\r\n </ng-container>\r\n <ng-container *ngIf=\"!isMultiFileUpload\">\r\n <input\r\n type=\"file\"\r\n #fileField\r\n (change)=\"getFile($any($event).target.files)\"\r\n hidden\r\n [accept]=\"allowedFileTypes\"\r\n [disabled]=\"fileUploadStatus?.isUploadingStart\"\r\n />\r\n </ng-container>\r\n\r\n <p\r\n class=\"ieeesa-file-upload__allowed-file-text m-0 ieeesa-label-md-14\"\r\n [attr.aria-label]=\"allowedFileTypesAndSizeText\"\r\n >\r\n {{ allowedFileTypesAndSizeText }}\r\n </p>\r\n </div>\r\n <div\r\n class=\"ieeesa-file-upload__upload-wrapper d-flex\"\r\n *ngIf=\"isFileSelected\"\r\n >\r\n <ng-container [ngSwitch]=\"viewFilesFormat\">\r\n <ng-container *ngSwitchCase=\"'default'\">\r\n <mat-form-field>\r\n <input\r\n class=\"ieeesa-file-upload__upload-wrapper__input-field ieeesa-body-lg-16\"\r\n type=\"text\"\r\n value=\"selectedFileNames\"\r\n [placeholder]=\"config.placeholder ?? ''\"\r\n [formControlName]=\"config.controlName\"\r\n [name]=\"config.controlName\"\r\n [attr.aria-label]=\"\r\n config.ariaLabel ?? fileUploadAriaLabel.fileUploadInput\r\n \"\r\n [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n autocomplete=\"off\"\r\n (keydown)=\"onKeyDown($event)\"\r\n matInput\r\n />\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-file-upload__upload-wrapper--clear-icon-btn\"\r\n matSuffix\r\n mat-icon-button\r\n [attr.aria-label]=\"fileUploadAriaLabel.removeFileIcon\"\r\n (click)=\"resetUpload()\"\r\n >\r\n <i\r\n class=\"fa-regular fa-circle-xmark ieeesa-input-field-upload__icon--clear\"\r\n ></i>\r\n </button>\r\n </mat-form-field>\r\n <ieeesa-icon-button\r\n class=\"ieeesa-file-upload__upload-wrapper--upload-btn d-flex align-items-center\"\r\n [iconButton]=\"fileUploadBtn\"\r\n [isLabelNeeded]=\"false\"\r\n (iconButtonClick)=\"onUpload()\"\r\n *ngIf=\"!isFormField\"\r\n >\r\n </ieeesa-icon-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'bottom'\">\r\n <div class=\"ieeesa-view-files-bottom-format\">\r\n <p\r\n class=\"ieeesa-file-upload__progress__text\"\r\n *ngIf=\"fileUploadStatus.filesUploadedSuccessfullyCount\"\r\n >\r\n {{\r\n fileUploadStatus.filesUploadedSuccessfullyCount +\r\n \" \" +\r\n fileUploadLabel?.of +\r\n \" \" +\r\n selectedFiles.length +\r\n \" \" +\r\n fileUploadLabel?.filesUploaded\r\n }}\r\n </p>\r\n <ng-container *ngIf=\"!fileUploadStatus?.isUploadingStart\">\r\n <p\r\n class=\"d-flex pt-1 m-0 ieeesa-label-md-14 align-items-center\"\r\n *ngFor=\"let file of selectedFiles; let i = index\"\r\n >\r\n {{ file?.name }}\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-file-upload__upload-wrapper--clear-icon-btn\"\r\n matSuffix\r\n mat-icon-button\r\n [attr.aria-label]=\"fileUploadAriaLabel.removeFileIcon\"\r\n (click)=\"removeFile(i)\"\r\n >\r\n <i\r\n class=\"fa-regular fa-circle-xmark ieeesa-input-field-upload__icon--clear\"\r\n ></i>\r\n </button>\r\n </p>\r\n </ng-container>\r\n <p\r\n *ngIf=\"\r\n fileUploadStatus.filesNamesUploadFailed &&\r\n fileUploadStatus.filesNamesUploadFailed.length\r\n \"\r\n class=\"ieeesa-file-upload__error__text\"\r\n >\r\n {{ disableUploadButton() }}\r\n {{\r\n fileUploadLabel?.uploadFor +\r\n \" \" +\r\n displayFileNames(fileUploadStatus.filesNamesUploadFailed) +\r\n \" \" +\r\n fileUploadLabel?.uploadErrorMsg\r\n }}\r\n </p>\r\n <p\r\n *ngIf=\"\r\n fileUploadStatus.alreadyExistsFiles &&\r\n fileUploadStatus.alreadyExistsFiles.length &&\r\n isMultiFileUpload\r\n \"\r\n class=\"ieeesa-file-upload__error__text\"\r\n >\r\n {{ disableUploadButton() }}\r\n {{\r\n displayFileNames(fileUploadStatus.alreadyExistsFiles) +\r\n \" \" +\r\n fileUploadLabel?.fileAlreadyExists\r\n }}\r\n </p>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"!isFormField\">\r\n <div class=\"ieeesa-file-upload__progress\" *ngIf=\"isUploadInProgress\">\r\n <p class=\"ieeesa-file-upload__progress__text\">\r\n {{ fileUploadLabel?.uploadProgress }}\r\n </p>\r\n <mat-progress-bar\r\n class=\"ieeesa-file-upload__progress--bar\"\r\n mode=\"determinate\"\r\n [value]=\"uploadedSize\"\r\n ></mat-progress-bar>\r\n </div>\r\n </ng-container>\r\n <ieeesa-form-error\r\n [hidden]=\"alignFileUploadErrorMessageTo !== alignmentType.MIDDLE\"\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n ></ieeesa-form-error>\r\n <div class=\"row\" *ngIf=\"isUploadButtonNeeded && isFileSelected\">\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"{\r\n 'justify-content-end': actionButtonAlign === alignmentType.LEFT,\r\n 'justify-content-center': actionButtonAlign === alignmentType.MIDDLE,\r\n 'justify-content-start': actionButtonAlign === alignmentType.RIGHT,\r\n }\"\r\n >\r\n <button\r\n type=\"submit\"\r\n [disabled]=\"isUploadButtonDisabled\"\r\n mat-button\r\n class=\"mat-primary-button ieeesa-dynamic-form__actions--right-btn\"\r\n [disabled]=\"!isFileSelected || fileUploadStatus?.isUploadingStart\"\r\n >\r\n {{ fileUploadLabel?.upload }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ieeesa-form-error\r\n [hidden]=\"alignFileUploadErrorMessageTo !== alignmentType.BOTTOM\"\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n></ieeesa-form-error>\r\n<ieeesa-form-support-text\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n></ieeesa-form-support-text>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-file-upload__label-left{display:flex}.ieeesa-file-upload__label-top{display:block}.ieeesa-file-upload__list{margin-bottom:.75em}.ieeesa-file-upload__list__item{background-color:#b0d6ec;padding:0 .66em}.ieeesa-file-upload__list__name{background-color:#b0d6ec;font-family:Calibri Bold;margin-right:.625em;text-decoration:underline;color:#00629b!important}.ieeesa-file-upload__list__delete-btn{background-color:#b0d6ec}.ieeesa-file-upload__list__delete-btn__icon{height:18px;width:18px}.ieeesa-file-upload__upload{border:2px dashed #b0d6ec;background-color:#f8fcff;border-radius:6px}.ieeesa-file-upload__upload__heading{font-size:.875rem!important;color:#49454f!important;padding-bottom:.75em}.ieeesa-file-upload__upload__browse-files{display:flex;column-gap:.375em;padding-bottom:.75em;align-items:center}.ieeesa-file-upload__upload-wrapper{margin-bottom:.75em}.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field{width:60%}.ieeesa-file-upload__upload-wrapper .mat-mdc-text-field-wrapper{background-color:#fff!important;border:1px solid #49454f;height:40px;border-radius:4px;padding-left:10px!important}.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field-subscript-wrapper{height:0!important}.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field-infix{min-height:40px;width:100%!important;padding-top:7px!important;padding-bottom:7px!important}.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field .mat-mdc-button-base{height:24px!important;width:24px!important;padding:0;margin-right:8px}.ieeesa-file-upload__upload-wrapper .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border:unset}.ieeesa-file-upload__upload-wrapper .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border:unset}.ieeesa-file-upload__upload-wrapper .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#1c1b1f!important}.ieeesa-file-upload__upload-wrapper__input-field.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#1c1b1f;letter-spacing:0}.ieeesa-file-upload__upload-wrapper--clear-icon-btn{padding:0!important;height:2em!important;width:2em!important}.ieeesa-file-upload__upload-wrapper--upload-btn .ieeesa-icon-button__1{padding:0!important;border-radius:4px!important;background-color:#00629b!important;box-shadow:0 1px 4px #00000040,0 4px #00b5e2 inset;height:40px!important;width:40px!important;margin-left:2px}.ieeesa-file-upload__upload-wrapper--upload-btn .ieeesa-icon-button__1[disabled]{background-color:#d9d9d6!important;box-shadow:0 1px 4px #00000040,0 4px #00b5e2 inset!important}.ieeesa-file-upload__upload-wrapper--upload-btn .ieeesa-icon-button__svg{height:1.5em;width:1.5em}.ieeesa-file-upload__error__text{margin-top:.75em;font-family:Calibri Regular;color:#ba0c2f;font-size:.75rem;font-style:normal;font-weight:400;line-height:16px}.ieeesa-file-upload__progress{margin-bottom:.75em}.ieeesa-file-upload__progress__text{margin-bottom:6px}.ieeesa-file-upload__progress--bar{width:60%!important}.ieeesa-file-upload__progress--bar .mdc-linear-progress__bar-inner{border-color:#00629b!important}.ieeesa-file-upload__allowed-file-text{font-size:.75rem!important;font-style:italic!important;color:#63666a!important}.ieeesa-file-upload__browse-btn{height:2em!important;min-height:1.75em!important;min-width:4.25em!important;font-size:.875rem!important;padding:.625em .75!important}.ieeesa-file-upload .ieeesa-view-files-bottom-format ul li{list-style:none}.ieeesa-file-upload .ieeesa-view-files-bottom-format{padding-top:.75em}.ieeesa-file-upload .ieeesa-view-files-bottom-format .mat-mdc-icon-button.mat-mdc-button-base{height:-moz-fit-content!important;height:fit-content!important;color:#49454f!important}@media (max-width: 767px){.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field{width:100%}.ieeesa-file-upload__upload-wrapper .mat-mdc-text-field-wrapper{width:100%!important}.ieeesa-file-upload__upload__browse-files{display:flex;flex-direction:column;row-gap:.375em;padding-bottom:.75em;align-items:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormErrorComponent, selector: "ieeesa-form-error", inputs: ["formGroup", "config", "submitResponse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: FormSupportTextComponent, selector: "ieeesa-form-support-text", inputs: ["formGroup", "config"], outputs: ["supportTextLinkClick"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i8.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: FileUploadDirective, selector: "[ieeesaFileUpload]", inputs: ["allowedFileTypes", "isMultiFileUpload"], outputs: ["fileDropped"] }, { kind: "component", type: IconButtonComponent, selector: "ieeesa-icon-button", inputs: ["iconButton", "isLabelNeeded"], outputs: ["iconButtonClick"] }, { kind: "component", type: FileDownloadComponent, selector: "ieeesa-file-download", inputs: ["downloadFiles", "fileDownloadConfig", "isPublicAPI", "domainUrl", "apiBaseUrl"], outputs: ["downloadSelectedFile", "deleteSelectedFile"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
384
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FileUploadComponent, isStandalone: true, selector: "ieeesa-file-upload", inputs: { maxFileSizeErrorMessage: "maxFileSizeErrorMessage", actionButtonAlign: "actionButtonAlign", formControlName: "formControlName", isFileSelected: "isFileSelected", supportMessage: "supportMessage", allowedFileTypes: "allowedFileTypes", isMultiFileUpload: "isMultiFileUpload", isUploadInProgress: "isUploadInProgress", fileUploadHeading: "fileUploadHeading", isAllowAnyFileType: "isAllowAnyFileType", alignBrowsedFiles: "alignBrowsedFiles", isUploadButtonNeeded: "isUploadButtonNeeded", maxUploadFileSize: "maxUploadFileSize", alignFileUploadErrorMessageTo: "alignFileUploadErrorMessageTo", maxFilesUploadedOnce: "maxFilesUploadedOnce", maxFilesUploadLimitErrorMessage: "maxFilesUploadLimitErrorMessage", fileUploadStatus: "fileUploadStatus", uploadedSize: "uploadedSize", fileDownloadConfig: "fileDownloadConfig" }, outputs: { uploadSelectedFiles: "uploadSelectedFiles", downloadSelectedFile: "downloadSelectedFile" }, viewQueries: [{ propertyName: "fileField", first: true, predicate: ["fileField"], descendants: true }], ngImport: i0, template: "<div\r\n [formGroup]=\"group\"\r\n class=\"ieeesa-file-upload\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-file-upload__label-left'\r\n : 'ieeesa-file-upload__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-body-sm-14 ieeesa-file-upload__label\">{{\r\n config.label\r\n }}</mat-label>\r\n <ieeesa-file-download\r\n [fileDownloadConfig]=\"fileDownloadConfig\"\r\n [apiBaseUrl]=\"apiBaseUrl\"\r\n [downloadFiles]=\"getFilesToDownload()\"\r\n (downloadSelectedFile)=\"downloadFile($event)\"\r\n ></ieeesa-file-download>\r\n <div\r\n class=\"ieeesa-file-upload__upload p-4\"\r\n ieeesaFileUpload\r\n (fileDropped)=\"getFile($event)\"\r\n >\r\n <p class=\"ieeesa-file-upload__upload__heading m-0 ieeesa-label-lg-bold-16\">\r\n {{ fileUploadHeading }}\r\n </p>\r\n <div class=\"ieeesa-file-upload__upload__browse-files\">\r\n <button\r\n mat-button\r\n (click)=\"fileClick()\"\r\n class=\"ieeesa-file-upload__browse-btn mat-tertiary-button\"\r\n [attr.aria-label]=\"fileUploadAriaLabel.browseFiles\"\r\n type=\"button\"\r\n [disabled]=\"fileUploadStatus?.isUploadingStart\"\r\n >\r\n {{ fileUploadLabel.browseFiles }}\r\n </button>\r\n <ng-container *ngIf=\"isMultiFileUpload\">\r\n <input\r\n type=\"file\"\r\n #fileField\r\n (change)=\"getFile($any($event).target.files)\"\r\n hidden\r\n [accept]=\"allowedFileTypes\"\r\n [multiple]=\"true\"\r\n [disabled]=\"fileUploadStatus?.isUploadingStart\"\r\n />\r\n </ng-container>\r\n <ng-container *ngIf=\"!isMultiFileUpload\">\r\n <input\r\n type=\"file\"\r\n #fileField\r\n (change)=\"getFile($any($event).target.files)\"\r\n hidden\r\n [accept]=\"allowedFileTypes\"\r\n [disabled]=\"fileUploadStatus?.isUploadingStart\"\r\n />\r\n </ng-container>\r\n\r\n <p\r\n class=\"ieeesa-file-upload__allowed-file-text m-0 ieeesa-label-md-14\"\r\n [attr.aria-label]=\"allowedFileTypesAndSizeText\"\r\n >\r\n {{ allowedFileTypesAndSizeText }}\r\n </p>\r\n </div>\r\n <div\r\n class=\"ieeesa-file-upload__upload-wrapper d-flex\"\r\n *ngIf=\"isFileSelected\"\r\n >\r\n <ng-container [ngSwitch]=\"alignBrowsedFiles\">\r\n <ng-container *ngSwitchCase=\"'default'\">\r\n <mat-form-field>\r\n <input\r\n class=\"ieeesa-file-upload__upload-wrapper__input-field ieeesa-body-lg-16\"\r\n type=\"text\"\r\n value=\"selectedFileNames\"\r\n [placeholder]=\"config.placeholder ?? ''\"\r\n [formControlName]=\"config.controlName\"\r\n [name]=\"config.controlName\"\r\n [attr.aria-label]=\"\r\n config.ariaLabel ?? fileUploadAriaLabel.fileUploadInput\r\n \"\r\n [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n autocomplete=\"off\"\r\n (keydown)=\"onKeyDown($event)\"\r\n matInput\r\n />\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-file-upload__upload-wrapper--clear-icon-btn\"\r\n matSuffix\r\n mat-icon-button\r\n [attr.aria-label]=\"fileUploadAriaLabel.removeFileIcon\"\r\n (click)=\"resetUpload()\"\r\n >\r\n <i\r\n class=\"fa-regular fa-circle-xmark ieeesa-input-field-upload__icon--clear\"\r\n ></i>\r\n </button>\r\n </mat-form-field>\r\n <ieeesa-icon-button\r\n class=\"ieeesa-file-upload__upload-wrapper--upload-btn d-flex align-items-center\"\r\n [iconButton]=\"fileUploadBtn\"\r\n [isLabelNeeded]=\"false\"\r\n (iconButtonClick)=\"onUpload()\"\r\n *ngIf=\"!isFormField\"\r\n >\r\n </ieeesa-icon-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'bottom'\">\r\n <div class=\"ieeesa-display-browsed-files-bottom\">\r\n <p\r\n class=\"ieeesa-file-upload__progress__text\"\r\n *ngIf=\"fileUploadStatus.noOfFilesUploadedSuccessfully\"\r\n >\r\n {{\r\n fileUploadStatus.noOfFilesUploadedSuccessfully +\r\n \" \" +\r\n fileUploadLabel?.of +\r\n \" \" +\r\n selectedFiles.length +\r\n \" \" +\r\n fileUploadLabel?.filesUploaded\r\n }}\r\n </p>\r\n <ng-container *ngIf=\"!fileUploadStatus?.isUploadingStart\">\r\n <p\r\n class=\"d-flex pt-1 m-0 ieeesa-label-md-14 align-items-center\"\r\n *ngFor=\"\r\n let file of selectedFiles;\r\n let i = index;\r\n trackBy: trackByFunc\r\n \"\r\n >\r\n {{ file?.name }}\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-file-upload__upload-wrapper--clear-icon-btn\"\r\n matSuffix\r\n mat-icon-button\r\n [attr.aria-label]=\"fileUploadAriaLabel.removeFileIcon\"\r\n (click)=\"removeFile(i)\"\r\n >\r\n <i\r\n class=\"fa-regular fa-circle-xmark ieeesa-input-field-upload__icon--clear\"\r\n ></i>\r\n </button>\r\n </p>\r\n </ng-container>\r\n <p\r\n *ngIf=\"fileUploadStatus?.filesNamesUploadFailed?.length\"\r\n class=\"ieeesa-file-upload__error__text\"\r\n >\r\n {{ disableUploadButton() }}\r\n {{\r\n fileUploadLabel?.uploadFor +\r\n \" \" +\r\n displayFileNames(fileUploadStatus.filesNamesUploadFailed) +\r\n \" \" +\r\n fileUploadLabel?.uploadErrorMsg\r\n }}\r\n </p>\r\n <p\r\n *ngIf=\"fileUploadStatus?.alreadyExistsFiles?.length\"\r\n class=\"ieeesa-file-upload__error__text\"\r\n >\r\n {{ disableUploadButton() }}\r\n {{\r\n displayFileNames(fileUploadStatus.alreadyExistsFiles) +\r\n \" \" +\r\n fileUploadLabel?.fileAlreadyExists\r\n }}\r\n </p>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"!isFormField\">\r\n <div class=\"ieeesa-file-upload__progress\" *ngIf=\"isUploadInProgress\">\r\n <p class=\"ieeesa-file-upload__progress__text\">\r\n {{ fileUploadLabel?.uploadProgress }}\r\n </p>\r\n <mat-progress-bar\r\n class=\"ieeesa-file-upload__progress--bar\"\r\n mode=\"determinate\"\r\n [value]=\"uploadedSize\"\r\n ></mat-progress-bar>\r\n </div>\r\n </ng-container>\r\n <ieeesa-form-error\r\n *ngIf=\"alignFileUploadErrorMessageTo === alignmentType.MIDDLE\"\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n ></ieeesa-form-error>\r\n <div\r\n *ngIf=\"isUploadButtonNeeded && isFileSelected\"\r\n [ngClass]=\"{\r\n 'justify-content-end': actionButtonAlign === alignmentType.LEFT,\r\n 'justify-content-center': actionButtonAlign === alignmentType.MIDDLE,\r\n 'justify-content-start': actionButtonAlign === alignmentType.RIGHT,\r\n }\"\r\n >\r\n <button\r\n type=\"submit\"\r\n mat-button\r\n class=\"mat-primary-button ieeesa-dynamic-form__actions--right-btn\"\r\n [disabled]=\"\r\n isUploadButtonDisabled ||\r\n !isFileSelected ||\r\n fileUploadStatus?.isUploadingStart\r\n \"\r\n >\r\n {{ fileUploadLabel?.upload }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n<ieeesa-form-error\r\n *ngIf=\"alignFileUploadErrorMessageTo === alignmentType.BOTTOM\"\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n></ieeesa-form-error>\r\n<ieeesa-form-support-text\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n></ieeesa-form-support-text>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-file-upload__label-left{display:flex}.ieeesa-file-upload__label-top{display:block}.ieeesa-file-upload__list{margin-bottom:.75em}.ieeesa-file-upload__list__item{background-color:#b0d6ec;padding:0 .66em}.ieeesa-file-upload__list__name{background-color:#b0d6ec;font-family:Calibri Bold;margin-right:.625em;text-decoration:underline;color:#00629b!important}.ieeesa-file-upload__list__delete-btn{background-color:#b0d6ec}.ieeesa-file-upload__list__delete-btn__icon{height:18px;width:18px}.ieeesa-file-upload__upload{border:2px dashed #b0d6ec;background-color:#f8fcff;border-radius:6px}.ieeesa-file-upload__upload__heading{font-size:.875rem!important;color:#49454f!important;padding-bottom:.75em}.ieeesa-file-upload__upload__browse-files{display:flex;column-gap:.375em;padding-bottom:.75em;align-items:center}.ieeesa-file-upload__upload-wrapper{margin-bottom:.75em}.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field{width:60%}.ieeesa-file-upload__upload-wrapper .mat-mdc-text-field-wrapper{background-color:#fff!important;border:1px solid #49454f;height:40px;border-radius:4px;padding-left:10px!important}.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field-subscript-wrapper{height:0!important}.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field-infix{min-height:40px;width:100%!important;padding-top:7px!important;padding-bottom:7px!important}.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field .mat-mdc-button-base{height:24px!important;width:24px!important;padding:0;margin-right:8px}.ieeesa-file-upload__upload-wrapper .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border:unset}.ieeesa-file-upload__upload-wrapper .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border:unset}.ieeesa-file-upload__upload-wrapper .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#1c1b1f!important}.ieeesa-file-upload__upload-wrapper__input-field.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#1c1b1f;letter-spacing:0}.ieeesa-file-upload__upload-wrapper--clear-icon-btn{padding:0!important;height:2em!important;width:2em!important}.ieeesa-file-upload__upload-wrapper--upload-btn .ieeesa-icon-button__1{padding:0!important;border-radius:4px!important;background-color:#00629b!important;box-shadow:0 1px 4px #00000040,0 4px #00b5e2 inset;height:40px!important;width:40px!important;margin-left:2px}.ieeesa-file-upload__upload-wrapper--upload-btn .ieeesa-icon-button__1[disabled]{background-color:#d9d9d6!important;box-shadow:0 1px 4px #00000040,0 4px #00b5e2 inset!important}.ieeesa-file-upload__upload-wrapper--upload-btn .ieeesa-icon-button__svg{height:1.5em;width:1.5em}.ieeesa-file-upload__error__text{margin-top:.75em;font-family:Calibri Regular;color:#ba0c2f;font-size:.75rem;font-style:normal;font-weight:400;line-height:16px}.ieeesa-file-upload__progress{margin-bottom:.75em}.ieeesa-file-upload__progress__text{margin-bottom:6px}.ieeesa-file-upload__progress--bar{width:60%!important}.ieeesa-file-upload__progress--bar .mdc-linear-progress__bar-inner{border-color:#00629b!important}.ieeesa-file-upload__allowed-file-text{font-size:.75rem!important;font-style:italic!important;color:#63666a!important}.ieeesa-file-upload__browse-btn{height:2em!important;min-height:1.75em!important;min-width:4.25em!important;font-size:.875rem!important;padding:.625em .75!important}.ieeesa-file-upload .ieeesa-display-browsed-files-bottom{padding-top:.75em}.ieeesa-file-upload .ieeesa-display-browsed-files-bottom .mat-mdc-icon-button.mat-mdc-button-base{height:-moz-fit-content!important;height:fit-content!important;color:#49454f!important}.ieeesa-file-upload .ieeesa-display-browsed-files-bottom ul li{list-style:none}@media (max-width: 767px){.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field{width:100%}.ieeesa-file-upload__upload-wrapper .mat-mdc-text-field-wrapper{width:100%!important}.ieeesa-file-upload__upload__browse-files{display:flex;flex-direction:column;row-gap:.375em;padding-bottom:.75em;align-items:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormErrorComponent, selector: "ieeesa-form-error", inputs: ["formGroup", "config", "submitResponse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: FormSupportTextComponent, selector: "ieeesa-form-support-text", inputs: ["formGroup", "config"], outputs: ["supportTextLinkClick"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i8.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: FileUploadDirective, selector: "[ieeesaFileUpload]", inputs: ["allowedFileTypes", "isMultiFileUpload"], outputs: ["fileDropped"] }, { kind: "component", type: IconButtonComponent, selector: "ieeesa-icon-button", inputs: ["iconButton", "isLabelNeeded"], outputs: ["iconButtonClick"] }, { kind: "component", type: FileDownloadComponent, selector: "ieeesa-file-download", inputs: ["downloadFiles", "fileDownloadConfig", "isPublicAPI", "domainUrl", "apiBaseUrl"], outputs: ["downloadSelectedFile", "deleteSelectedFile"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
366
385
|
}
|
|
367
386
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileUploadComponent, decorators: [{
|
|
368
387
|
type: Component,
|
|
@@ -378,7 +397,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
378
397
|
FileUploadDirective,
|
|
379
398
|
IconButtonComponent,
|
|
380
399
|
FileDownloadComponent,
|
|
381
|
-
], encapsulation: ViewEncapsulation.None, template: "<div\r\n [formGroup]=\"group\"\r\n class=\"ieeesa-file-upload\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-file-upload__label-left'\r\n : 'ieeesa-file-upload__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-body-sm-14 ieeesa-file-upload__label\">{{\r\n config.label\r\n }}</mat-label>\r\n <ieeesa-file-download\r\n [fileDownloadConfig]=\"fileDownloadConfig\"\r\n [apiBaseUrl]=\"apiBaseUrl\"\r\n [downloadFiles]=\"getFilesToDownload()\"\r\n (downloadSelectedFile)=\"downloadFile($event)\"\r\n ></ieeesa-file-download>\r\n <div\r\n class=\"ieeesa-file-upload__upload p-4\"\r\n ieeesaFileUpload\r\n (fileDropped)=\"getFile($event)\"\r\n >\r\n <p class=\"ieeesa-file-upload__upload__heading m-0 ieeesa-label-lg-bold-16\">\r\n {{ fileUploadHeading }}\r\n </p>\r\n <div class=\"ieeesa-file-upload__upload__browse-files\">\r\n <button\r\n mat-button\r\n (click)=\"fileClick()\"\r\n class=\"ieeesa-file-upload__browse-btn mat-tertiary-button\"\r\n [attr.aria-label]=\"fileUploadAriaLabel.browseFiles\"\r\n type=\"button\"\r\n [disabled]=\"fileUploadStatus?.isUploadingStart\"\r\n >\r\n {{ fileUploadLabel.browseFiles }}\r\n </button>\r\n <ng-container *ngIf=\"isMultiFileUpload\">\r\n <input\r\n type=\"file\"\r\n #fileField\r\n (change)=\"getFile($any($event).target.files)\"\r\n hidden\r\n [accept]=\"allowedFileTypes\"\r\n [multiple]=\"true\"\r\n [disabled]=\"fileUploadStatus?.isUploadingStart\"\r\n />\r\n </ng-container>\r\n <ng-container *ngIf=\"!isMultiFileUpload\">\r\n <input\r\n type=\"file\"\r\n #fileField\r\n (change)=\"getFile($any($event).target.files)\"\r\n hidden\r\n [accept]=\"allowedFileTypes\"\r\n [disabled]=\"fileUploadStatus?.isUploadingStart\"\r\n />\r\n </ng-container>\r\n\r\n <p\r\n class=\"ieeesa-file-upload__allowed-file-text m-0 ieeesa-label-md-14\"\r\n [attr.aria-label]=\"allowedFileTypesAndSizeText\"\r\n >\r\n {{ allowedFileTypesAndSizeText }}\r\n </p>\r\n </div>\r\n <div\r\n class=\"ieeesa-file-upload__upload-wrapper d-flex\"\r\n *ngIf=\"isFileSelected\"\r\n >\r\n <ng-container [ngSwitch]=\"viewFilesFormat\">\r\n <ng-container *ngSwitchCase=\"'default'\">\r\n <mat-form-field>\r\n <input\r\n class=\"ieeesa-file-upload__upload-wrapper__input-field ieeesa-body-lg-16\"\r\n type=\"text\"\r\n value=\"selectedFileNames\"\r\n [placeholder]=\"config.placeholder ?? ''\"\r\n [formControlName]=\"config.controlName\"\r\n [name]=\"config.controlName\"\r\n [attr.aria-label]=\"\r\n config.ariaLabel ?? fileUploadAriaLabel.fileUploadInput\r\n \"\r\n [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n autocomplete=\"off\"\r\n (keydown)=\"onKeyDown($event)\"\r\n matInput\r\n />\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-file-upload__upload-wrapper--clear-icon-btn\"\r\n matSuffix\r\n mat-icon-button\r\n [attr.aria-label]=\"fileUploadAriaLabel.removeFileIcon\"\r\n (click)=\"resetUpload()\"\r\n >\r\n <i\r\n class=\"fa-regular fa-circle-xmark ieeesa-input-field-upload__icon--clear\"\r\n ></i>\r\n </button>\r\n </mat-form-field>\r\n <ieeesa-icon-button\r\n class=\"ieeesa-file-upload__upload-wrapper--upload-btn d-flex align-items-center\"\r\n [iconButton]=\"fileUploadBtn\"\r\n [isLabelNeeded]=\"false\"\r\n (iconButtonClick)=\"onUpload()\"\r\n *ngIf=\"!isFormField\"\r\n >\r\n </ieeesa-icon-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'bottom'\">\r\n <div class=\"ieeesa-view-files-bottom-format\">\r\n <p\r\n class=\"ieeesa-file-upload__progress__text\"\r\n *ngIf=\"fileUploadStatus.filesUploadedSuccessfullyCount\"\r\n >\r\n {{\r\n fileUploadStatus.filesUploadedSuccessfullyCount +\r\n \" \" +\r\n fileUploadLabel?.of +\r\n \" \" +\r\n selectedFiles.length +\r\n \" \" +\r\n fileUploadLabel?.filesUploaded\r\n }}\r\n </p>\r\n <ng-container *ngIf=\"!fileUploadStatus?.isUploadingStart\">\r\n <p\r\n class=\"d-flex pt-1 m-0 ieeesa-label-md-14 align-items-center\"\r\n *ngFor=\"let file of selectedFiles; let i = index\"\r\n >\r\n {{ file?.name }}\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-file-upload__upload-wrapper--clear-icon-btn\"\r\n matSuffix\r\n mat-icon-button\r\n [attr.aria-label]=\"fileUploadAriaLabel.removeFileIcon\"\r\n (click)=\"removeFile(i)\"\r\n >\r\n <i\r\n class=\"fa-regular fa-circle-xmark ieeesa-input-field-upload__icon--clear\"\r\n ></i>\r\n </button>\r\n </p>\r\n </ng-container>\r\n <p\r\n *ngIf=\"\r\n fileUploadStatus.filesNamesUploadFailed &&\r\n fileUploadStatus.filesNamesUploadFailed.length\r\n \"\r\n class=\"ieeesa-file-upload__error__text\"\r\n >\r\n {{ disableUploadButton() }}\r\n {{\r\n fileUploadLabel?.uploadFor +\r\n \" \" +\r\n displayFileNames(fileUploadStatus.filesNamesUploadFailed) +\r\n \" \" +\r\n fileUploadLabel?.uploadErrorMsg\r\n }}\r\n </p>\r\n <p\r\n *ngIf=\"\r\n fileUploadStatus.alreadyExistsFiles &&\r\n fileUploadStatus.alreadyExistsFiles.length &&\r\n isMultiFileUpload\r\n \"\r\n class=\"ieeesa-file-upload__error__text\"\r\n >\r\n {{ disableUploadButton() }}\r\n {{\r\n displayFileNames(fileUploadStatus.alreadyExistsFiles) +\r\n \" \" +\r\n fileUploadLabel?.fileAlreadyExists\r\n }}\r\n </p>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"!isFormField\">\r\n <div class=\"ieeesa-file-upload__progress\" *ngIf=\"isUploadInProgress\">\r\n <p class=\"ieeesa-file-upload__progress__text\">\r\n {{ fileUploadLabel?.uploadProgress }}\r\n </p>\r\n <mat-progress-bar\r\n class=\"ieeesa-file-upload__progress--bar\"\r\n mode=\"determinate\"\r\n [value]=\"uploadedSize\"\r\n ></mat-progress-bar>\r\n </div>\r\n </ng-container>\r\n <ieeesa-form-error\r\n [hidden]=\"alignFileUploadErrorMessageTo !== alignmentType.MIDDLE\"\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n ></ieeesa-form-error>\r\n <div class=\"row\" *ngIf=\"isUploadButtonNeeded && isFileSelected\">\r\n <div\r\n class=\"col-12\"\r\n [ngClass]=\"{\r\n 'justify-content-end': actionButtonAlign === alignmentType.LEFT,\r\n 'justify-content-center': actionButtonAlign === alignmentType.MIDDLE,\r\n 'justify-content-start': actionButtonAlign === alignmentType.RIGHT,\r\n }\"\r\n >\r\n <button\r\n type=\"submit\"\r\n [disabled]=\"isUploadButtonDisabled\"\r\n mat-button\r\n class=\"mat-primary-button ieeesa-dynamic-form__actions--right-btn\"\r\n [disabled]=\"!isFileSelected || fileUploadStatus?.isUploadingStart\"\r\n >\r\n {{ fileUploadLabel?.upload }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ieeesa-form-error\r\n [hidden]=\"alignFileUploadErrorMessageTo !== alignmentType.BOTTOM\"\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n></ieeesa-form-error>\r\n<ieeesa-form-support-text\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n></ieeesa-form-support-text>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-file-upload__label-left{display:flex}.ieeesa-file-upload__label-top{display:block}.ieeesa-file-upload__list{margin-bottom:.75em}.ieeesa-file-upload__list__item{background-color:#b0d6ec;padding:0 .66em}.ieeesa-file-upload__list__name{background-color:#b0d6ec;font-family:Calibri Bold;margin-right:.625em;text-decoration:underline;color:#00629b!important}.ieeesa-file-upload__list__delete-btn{background-color:#b0d6ec}.ieeesa-file-upload__list__delete-btn__icon{height:18px;width:18px}.ieeesa-file-upload__upload{border:2px dashed #b0d6ec;background-color:#f8fcff;border-radius:6px}.ieeesa-file-upload__upload__heading{font-size:.875rem!important;color:#49454f!important;padding-bottom:.75em}.ieeesa-file-upload__upload__browse-files{display:flex;column-gap:.375em;padding-bottom:.75em;align-items:center}.ieeesa-file-upload__upload-wrapper{margin-bottom:.75em}.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field{width:60%}.ieeesa-file-upload__upload-wrapper .mat-mdc-text-field-wrapper{background-color:#fff!important;border:1px solid #49454f;height:40px;border-radius:4px;padding-left:10px!important}.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field-subscript-wrapper{height:0!important}.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field-infix{min-height:40px;width:100%!important;padding-top:7px!important;padding-bottom:7px!important}.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field .mat-mdc-button-base{height:24px!important;width:24px!important;padding:0;margin-right:8px}.ieeesa-file-upload__upload-wrapper .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border:unset}.ieeesa-file-upload__upload-wrapper .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border:unset}.ieeesa-file-upload__upload-wrapper .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#1c1b1f!important}.ieeesa-file-upload__upload-wrapper__input-field.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#1c1b1f;letter-spacing:0}.ieeesa-file-upload__upload-wrapper--clear-icon-btn{padding:0!important;height:2em!important;width:2em!important}.ieeesa-file-upload__upload-wrapper--upload-btn .ieeesa-icon-button__1{padding:0!important;border-radius:4px!important;background-color:#00629b!important;box-shadow:0 1px 4px #00000040,0 4px #00b5e2 inset;height:40px!important;width:40px!important;margin-left:2px}.ieeesa-file-upload__upload-wrapper--upload-btn .ieeesa-icon-button__1[disabled]{background-color:#d9d9d6!important;box-shadow:0 1px 4px #00000040,0 4px #00b5e2 inset!important}.ieeesa-file-upload__upload-wrapper--upload-btn .ieeesa-icon-button__svg{height:1.5em;width:1.5em}.ieeesa-file-upload__error__text{margin-top:.75em;font-family:Calibri Regular;color:#ba0c2f;font-size:.75rem;font-style:normal;font-weight:400;line-height:16px}.ieeesa-file-upload__progress{margin-bottom:.75em}.ieeesa-file-upload__progress__text{margin-bottom:6px}.ieeesa-file-upload__progress--bar{width:60%!important}.ieeesa-file-upload__progress--bar .mdc-linear-progress__bar-inner{border-color:#00629b!important}.ieeesa-file-upload__allowed-file-text{font-size:.75rem!important;font-style:italic!important;color:#63666a!important}.ieeesa-file-upload__browse-btn{height:2em!important;min-height:1.75em!important;min-width:4.25em!important;font-size:.875rem!important;padding:.625em .75!important}.ieeesa-file-upload .ieeesa-view-files-bottom-format ul li{list-style:none}.ieeesa-file-upload .ieeesa-view-files-bottom-format{padding-top:.75em}.ieeesa-file-upload .ieeesa-view-files-bottom-format .mat-mdc-icon-button.mat-mdc-button-base{height:-moz-fit-content!important;height:fit-content!important;color:#49454f!important}@media (max-width: 767px){.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field{width:100%}.ieeesa-file-upload__upload-wrapper .mat-mdc-text-field-wrapper{width:100%!important}.ieeesa-file-upload__upload__browse-files{display:flex;flex-direction:column;row-gap:.375em;padding-bottom:.75em;align-items:flex-start}}\n"] }]
|
|
400
|
+
], encapsulation: ViewEncapsulation.None, template: "<div\r\n [formGroup]=\"group\"\r\n class=\"ieeesa-file-upload\"\r\n [ngClass]=\"\r\n config.isLabelAlignedLeft\r\n ? 'ieeesa-file-upload__label-left'\r\n : 'ieeesa-file-upload__label-top'\r\n \"\r\n>\r\n <mat-label class=\"ieeesa-body-sm-14 ieeesa-file-upload__label\">{{\r\n config.label\r\n }}</mat-label>\r\n <ieeesa-file-download\r\n [fileDownloadConfig]=\"fileDownloadConfig\"\r\n [apiBaseUrl]=\"apiBaseUrl\"\r\n [downloadFiles]=\"getFilesToDownload()\"\r\n (downloadSelectedFile)=\"downloadFile($event)\"\r\n ></ieeesa-file-download>\r\n <div\r\n class=\"ieeesa-file-upload__upload p-4\"\r\n ieeesaFileUpload\r\n (fileDropped)=\"getFile($event)\"\r\n >\r\n <p class=\"ieeesa-file-upload__upload__heading m-0 ieeesa-label-lg-bold-16\">\r\n {{ fileUploadHeading }}\r\n </p>\r\n <div class=\"ieeesa-file-upload__upload__browse-files\">\r\n <button\r\n mat-button\r\n (click)=\"fileClick()\"\r\n class=\"ieeesa-file-upload__browse-btn mat-tertiary-button\"\r\n [attr.aria-label]=\"fileUploadAriaLabel.browseFiles\"\r\n type=\"button\"\r\n [disabled]=\"fileUploadStatus?.isUploadingStart\"\r\n >\r\n {{ fileUploadLabel.browseFiles }}\r\n </button>\r\n <ng-container *ngIf=\"isMultiFileUpload\">\r\n <input\r\n type=\"file\"\r\n #fileField\r\n (change)=\"getFile($any($event).target.files)\"\r\n hidden\r\n [accept]=\"allowedFileTypes\"\r\n [multiple]=\"true\"\r\n [disabled]=\"fileUploadStatus?.isUploadingStart\"\r\n />\r\n </ng-container>\r\n <ng-container *ngIf=\"!isMultiFileUpload\">\r\n <input\r\n type=\"file\"\r\n #fileField\r\n (change)=\"getFile($any($event).target.files)\"\r\n hidden\r\n [accept]=\"allowedFileTypes\"\r\n [disabled]=\"fileUploadStatus?.isUploadingStart\"\r\n />\r\n </ng-container>\r\n\r\n <p\r\n class=\"ieeesa-file-upload__allowed-file-text m-0 ieeesa-label-md-14\"\r\n [attr.aria-label]=\"allowedFileTypesAndSizeText\"\r\n >\r\n {{ allowedFileTypesAndSizeText }}\r\n </p>\r\n </div>\r\n <div\r\n class=\"ieeesa-file-upload__upload-wrapper d-flex\"\r\n *ngIf=\"isFileSelected\"\r\n >\r\n <ng-container [ngSwitch]=\"alignBrowsedFiles\">\r\n <ng-container *ngSwitchCase=\"'default'\">\r\n <mat-form-field>\r\n <input\r\n class=\"ieeesa-file-upload__upload-wrapper__input-field ieeesa-body-lg-16\"\r\n type=\"text\"\r\n value=\"selectedFileNames\"\r\n [placeholder]=\"config.placeholder ?? ''\"\r\n [formControlName]=\"config.controlName\"\r\n [name]=\"config.controlName\"\r\n [attr.aria-label]=\"\r\n config.ariaLabel ?? fileUploadAriaLabel.fileUploadInput\r\n \"\r\n [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n autocomplete=\"off\"\r\n (keydown)=\"onKeyDown($event)\"\r\n matInput\r\n />\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-file-upload__upload-wrapper--clear-icon-btn\"\r\n matSuffix\r\n mat-icon-button\r\n [attr.aria-label]=\"fileUploadAriaLabel.removeFileIcon\"\r\n (click)=\"resetUpload()\"\r\n >\r\n <i\r\n class=\"fa-regular fa-circle-xmark ieeesa-input-field-upload__icon--clear\"\r\n ></i>\r\n </button>\r\n </mat-form-field>\r\n <ieeesa-icon-button\r\n class=\"ieeesa-file-upload__upload-wrapper--upload-btn d-flex align-items-center\"\r\n [iconButton]=\"fileUploadBtn\"\r\n [isLabelNeeded]=\"false\"\r\n (iconButtonClick)=\"onUpload()\"\r\n *ngIf=\"!isFormField\"\r\n >\r\n </ieeesa-icon-button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'bottom'\">\r\n <div class=\"ieeesa-display-browsed-files-bottom\">\r\n <p\r\n class=\"ieeesa-file-upload__progress__text\"\r\n *ngIf=\"fileUploadStatus.noOfFilesUploadedSuccessfully\"\r\n >\r\n {{\r\n fileUploadStatus.noOfFilesUploadedSuccessfully +\r\n \" \" +\r\n fileUploadLabel?.of +\r\n \" \" +\r\n selectedFiles.length +\r\n \" \" +\r\n fileUploadLabel?.filesUploaded\r\n }}\r\n </p>\r\n <ng-container *ngIf=\"!fileUploadStatus?.isUploadingStart\">\r\n <p\r\n class=\"d-flex pt-1 m-0 ieeesa-label-md-14 align-items-center\"\r\n *ngFor=\"\r\n let file of selectedFiles;\r\n let i = index;\r\n trackBy: trackByFunc\r\n \"\r\n >\r\n {{ file?.name }}\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-file-upload__upload-wrapper--clear-icon-btn\"\r\n matSuffix\r\n mat-icon-button\r\n [attr.aria-label]=\"fileUploadAriaLabel.removeFileIcon\"\r\n (click)=\"removeFile(i)\"\r\n >\r\n <i\r\n class=\"fa-regular fa-circle-xmark ieeesa-input-field-upload__icon--clear\"\r\n ></i>\r\n </button>\r\n </p>\r\n </ng-container>\r\n <p\r\n *ngIf=\"fileUploadStatus?.filesNamesUploadFailed?.length\"\r\n class=\"ieeesa-file-upload__error__text\"\r\n >\r\n {{ disableUploadButton() }}\r\n {{\r\n fileUploadLabel?.uploadFor +\r\n \" \" +\r\n displayFileNames(fileUploadStatus.filesNamesUploadFailed) +\r\n \" \" +\r\n fileUploadLabel?.uploadErrorMsg\r\n }}\r\n </p>\r\n <p\r\n *ngIf=\"fileUploadStatus?.alreadyExistsFiles?.length\"\r\n class=\"ieeesa-file-upload__error__text\"\r\n >\r\n {{ disableUploadButton() }}\r\n {{\r\n displayFileNames(fileUploadStatus.alreadyExistsFiles) +\r\n \" \" +\r\n fileUploadLabel?.fileAlreadyExists\r\n }}\r\n </p>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"!isFormField\">\r\n <div class=\"ieeesa-file-upload__progress\" *ngIf=\"isUploadInProgress\">\r\n <p class=\"ieeesa-file-upload__progress__text\">\r\n {{ fileUploadLabel?.uploadProgress }}\r\n </p>\r\n <mat-progress-bar\r\n class=\"ieeesa-file-upload__progress--bar\"\r\n mode=\"determinate\"\r\n [value]=\"uploadedSize\"\r\n ></mat-progress-bar>\r\n </div>\r\n </ng-container>\r\n <ieeesa-form-error\r\n *ngIf=\"alignFileUploadErrorMessageTo === alignmentType.MIDDLE\"\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n ></ieeesa-form-error>\r\n <div\r\n *ngIf=\"isUploadButtonNeeded && isFileSelected\"\r\n [ngClass]=\"{\r\n 'justify-content-end': actionButtonAlign === alignmentType.LEFT,\r\n 'justify-content-center': actionButtonAlign === alignmentType.MIDDLE,\r\n 'justify-content-start': actionButtonAlign === alignmentType.RIGHT,\r\n }\"\r\n >\r\n <button\r\n type=\"submit\"\r\n mat-button\r\n class=\"mat-primary-button ieeesa-dynamic-form__actions--right-btn\"\r\n [disabled]=\"\r\n isUploadButtonDisabled ||\r\n !isFileSelected ||\r\n fileUploadStatus?.isUploadingStart\r\n \"\r\n >\r\n {{ fileUploadLabel?.upload }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n<ieeesa-form-error\r\n *ngIf=\"alignFileUploadErrorMessageTo === alignmentType.BOTTOM\"\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n></ieeesa-form-error>\r\n<ieeesa-form-support-text\r\n [formGroup]=\"group\"\r\n [config]=\"config\"\r\n></ieeesa-form-support-text>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-file-upload__label-left{display:flex}.ieeesa-file-upload__label-top{display:block}.ieeesa-file-upload__list{margin-bottom:.75em}.ieeesa-file-upload__list__item{background-color:#b0d6ec;padding:0 .66em}.ieeesa-file-upload__list__name{background-color:#b0d6ec;font-family:Calibri Bold;margin-right:.625em;text-decoration:underline;color:#00629b!important}.ieeesa-file-upload__list__delete-btn{background-color:#b0d6ec}.ieeesa-file-upload__list__delete-btn__icon{height:18px;width:18px}.ieeesa-file-upload__upload{border:2px dashed #b0d6ec;background-color:#f8fcff;border-radius:6px}.ieeesa-file-upload__upload__heading{font-size:.875rem!important;color:#49454f!important;padding-bottom:.75em}.ieeesa-file-upload__upload__browse-files{display:flex;column-gap:.375em;padding-bottom:.75em;align-items:center}.ieeesa-file-upload__upload-wrapper{margin-bottom:.75em}.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field{width:60%}.ieeesa-file-upload__upload-wrapper .mat-mdc-text-field-wrapper{background-color:#fff!important;border:1px solid #49454f;height:40px;border-radius:4px;padding-left:10px!important}.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field-subscript-wrapper{height:0!important}.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field-infix{min-height:40px;width:100%!important;padding-top:7px!important;padding-bottom:7px!important}.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field .mat-mdc-button-base{height:24px!important;width:24px!important;padding:0;margin-right:8px}.ieeesa-file-upload__upload-wrapper .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border:unset}.ieeesa-file-upload__upload-wrapper .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border:unset}.ieeesa-file-upload__upload-wrapper .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#1c1b1f!important}.ieeesa-file-upload__upload-wrapper__input-field.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#1c1b1f;letter-spacing:0}.ieeesa-file-upload__upload-wrapper--clear-icon-btn{padding:0!important;height:2em!important;width:2em!important}.ieeesa-file-upload__upload-wrapper--upload-btn .ieeesa-icon-button__1{padding:0!important;border-radius:4px!important;background-color:#00629b!important;box-shadow:0 1px 4px #00000040,0 4px #00b5e2 inset;height:40px!important;width:40px!important;margin-left:2px}.ieeesa-file-upload__upload-wrapper--upload-btn .ieeesa-icon-button__1[disabled]{background-color:#d9d9d6!important;box-shadow:0 1px 4px #00000040,0 4px #00b5e2 inset!important}.ieeesa-file-upload__upload-wrapper--upload-btn .ieeesa-icon-button__svg{height:1.5em;width:1.5em}.ieeesa-file-upload__error__text{margin-top:.75em;font-family:Calibri Regular;color:#ba0c2f;font-size:.75rem;font-style:normal;font-weight:400;line-height:16px}.ieeesa-file-upload__progress{margin-bottom:.75em}.ieeesa-file-upload__progress__text{margin-bottom:6px}.ieeesa-file-upload__progress--bar{width:60%!important}.ieeesa-file-upload__progress--bar .mdc-linear-progress__bar-inner{border-color:#00629b!important}.ieeesa-file-upload__allowed-file-text{font-size:.75rem!important;font-style:italic!important;color:#63666a!important}.ieeesa-file-upload__browse-btn{height:2em!important;min-height:1.75em!important;min-width:4.25em!important;font-size:.875rem!important;padding:.625em .75!important}.ieeesa-file-upload .ieeesa-display-browsed-files-bottom{padding-top:.75em}.ieeesa-file-upload .ieeesa-display-browsed-files-bottom .mat-mdc-icon-button.mat-mdc-button-base{height:-moz-fit-content!important;height:fit-content!important;color:#49454f!important}.ieeesa-file-upload .ieeesa-display-browsed-files-bottom ul li{list-style:none}@media (max-width: 767px){.ieeesa-file-upload__upload-wrapper .mat-mdc-form-field{width:100%}.ieeesa-file-upload__upload-wrapper .mat-mdc-text-field-wrapper{width:100%!important}.ieeesa-file-upload__upload__browse-files{display:flex;flex-direction:column;row-gap:.375em;padding-bottom:.75em;align-items:flex-start}}\n"] }]
|
|
382
401
|
}], ctorParameters: function () { return [{ type: i1.FormUtilityService }, { type: i2.FileUploadService }]; }, propDecorators: { fileField: [{
|
|
383
402
|
type: ViewChild,
|
|
384
403
|
args: ['fileField']
|
|
@@ -402,7 +421,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
402
421
|
type: Input
|
|
403
422
|
}], isAllowAnyFileType: [{
|
|
404
423
|
type: Input
|
|
405
|
-
}],
|
|
424
|
+
}], alignBrowsedFiles: [{
|
|
406
425
|
type: Input
|
|
407
426
|
}], isUploadButtonNeeded: [{
|
|
408
427
|
type: Input
|
|
@@ -410,7 +429,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
410
429
|
type: Input
|
|
411
430
|
}], alignFileUploadErrorMessageTo: [{
|
|
412
431
|
type: Input
|
|
413
|
-
}],
|
|
432
|
+
}], maxFilesUploadedOnce: [{
|
|
414
433
|
type: Input
|
|
415
434
|
}], maxFilesUploadLimitErrorMessage: [{
|
|
416
435
|
type: Input
|
|
@@ -425,4 +444,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
425
444
|
}], downloadSelectedFile: [{
|
|
426
445
|
type: Output
|
|
427
446
|
}] } });
|
|
428
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc2VudGF0aW9uL3NyYy9saWIvY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxLQUFLLFNBQVMsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUd4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFB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c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLDZCQUE2QjtzQkFBckMsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcsK0JBQStCO3NCQUF2QyxLQUFLO2dCQUdPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkFRRixZQUFZO3NCQURmLEtBQUs7Z0JBVUYsa0JBQWtCO3NCQURyQixLQUFLO2dCQU9JLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRm9ybUVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgRm9ybVN1cHBvcnRUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1zdXBwb3J0LXRleHQvZm9ybS1zdXBwb3J0LXRleHQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybVV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS11dGlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpZWxkLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLWNvbnRyb2wtdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBBbGxvd2VkRmlsZVR5cGVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FsbG93ZWQtZmlsZS10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmlsZS11cGxvYWQuc2VydmljZSc7XHJcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBWaWV3RmlsZXNGb3JtYXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvdmlldy1maWxlcy1mb3JtYXQubW9kZWwnO1xyXG5pbXBvcnQgeyBBbGlnblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWxpZ24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRTdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsZS11cGxvYWQtc3RhdHVzLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsZURvd25sb2FkQ29tcG9uZW50IH0gZnJvbSAnLi4vZmlsZS1kb3dubG9hZC9maWxlLWRvd25sb2FkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbGVEb3dubG9hZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9maWxlLWRvd25sb2FkLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IERvd25sb2FkRmlsZSB9IGZyb20gJy4uLy4uL21vZGVscy9kb3dubG9hZC1maWxlLm1vZGVsJztcclxuLyoqXHJcbiAqIFByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIHVwbG9hZGluZyBmaWxlcyB0byBhd3MgczMgYnVja2V0LlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2llZWVzYS1maWxlLXVwbG9hZCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybUVycm9yQ29tcG9uZW50LFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBGb3JtU3VwcG9ydFRleHRDb21wb25lbnQsXHJcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcclxuICAgIEZpbGVVcGxvYWREaXJlY3RpdmUsXHJcbiAgICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgRmlsZURvd25sb2FkQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdmaWxlRmllbGQnKSBmaWxlRmllbGQhOiBFbGVtZW50UmVmO1xyXG4gIGNvbnN0YW50cyA9IGNvbnN0YW50cztcclxuICBmaWxlVXBsb2FkTGFiZWwgPSB0aGlzLmNvbnN0YW50cz8uZmlsZVVwbG9hZD8ubGFiZWw7XHJcbiAgZmlsZVVwbG9hZEFyaWFMYWJlbCA9IHRoaXMuY29uc3RhbnRzPy5maWxlVXBsb2FkPy5hcmlhTGFiZWw7XHJcbiAgZmlsZVVwbG9hZEljb25VcmwgPSB0aGlzLmNvbnN0YW50cz8uZmlsZVVwbG9hZD8uaWNvblVybDtcclxuICBmaWxlVXBsb2FkQnRuID0gdGhpcy5jb25zdGFudHM/LmZpbGVVcGxvYWQ/LmJ1dHRvbnNbMF07XHJcbiAgYWxsb3dlZEZpbGVUeXBlRXJyb3JNZXNzYWdlID1cclxuICAgIHRoaXMuY29uc3RhbnRzPy5maWxlVXBsb2FkPy5tZXNzYWdlPy5lcnJvcj8uaW52YWxpZEZpbGVGb3JtYXQ7XHJcbiAgQElucHV0KCkgbWF4RmlsZVNpemVFcnJvck1lc3NhZ2UgPVxyXG4gICAgdGhpcy5jb25zdGFudHM/LmZpbGVVcGxvYWQ/Lm1lc3NhZ2U/LmVycm9yPy5pbnZhbGlkRmlsZVNpemU7XHJcbiAgYWxsb3dlZEZpbGVUeXBlc0FuZFNpemVUZXh0ID0gJyc7XHJcbiAgY29uZmlnITogRmllbGRDb25maWc7XHJcbiAgZ3JvdXAhOiBGb3JtR3JvdXA7XHJcbiAgaXNWYWxpZEZpbGVUeXBlID0gZmFsc2U7XHJcbiAgaXNWYWxpZEZpbGVTaXplID0gZmFsc2U7XHJcbiAgaXNWYWxpZE1heEZpbGVVcGxvYWRMaW1pdCA9IGZhbHNlO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgc2VsZWN0ZWRGaWxlczogRmlsZUxpc3QgfCBGaWxlIHwgYW55ID0gW107XHJcbiAgc2VsZWN0ZWRGaWxlTmFtZXMgPSAnJztcclxuICBpc0Zvcm1GaWVsZCA9IGZhbHNlO1xyXG4gIHRvdGFsU2l6ZSA9IDA7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICB1cGxvYWRlZEZpbGVzOiBGaWxlTGlzdCB8IEZpbGUgfCBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBhY3Rpb25CdXR0b25BbGlnbiE6IEFsaWduVHlwZTtcclxuICBhbGlnbm1lbnRUeXBlID0gQWxpZ25UeXBlO1xyXG4gIGlzVXBsb2FkQnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWUgPSAnZmlsZVVwbG9hZCc7XHJcbiAgQElucHV0KCkgaXNGaWxlU2VsZWN0ZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzdXBwb3J0TWVzc2FnZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBhbGxvd2VkRmlsZVR5cGVzOiBBbGxvd2VkRmlsZVR5cGVzW10gPSBbXTtcclxuICBASW5wdXQoKSBpc011bHRpRmlsZVVwbG9hZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzVXBsb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZpbGVVcGxvYWRIZWFkaW5nITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlzQWxsb3dBbnlGaWxlVHlwZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHZpZXdGaWxlc0Zvcm1hdCA9IFZpZXdGaWxlc0Zvcm1hdC5ERUZBVUxUO1xyXG4gIEBJbnB1dCgpIGlzVXBsb2FkQnV0dG9uTmVlZGVkID0gZmFsc2U7XHJcbiAgLy8gRGVmYXVsdCBtYXhpbXVtIGFsbG93ZWQgdXBsb2FkIGZpbGUgc2l6ZSBpcyAybWIuXHJcbiAgQElucHV0KCkgbWF4VXBsb2FkRmlsZVNpemUgPSAyO1xyXG4gIHByaXZhdGUgdXBsb2FkZWRTaXplVmFsdWUgPSAwO1xyXG4gIEBJbnB1dCgpIGFsaWduRmlsZVVwbG9hZEVycm9yTWVzc2FnZVRvID0gQWxpZ25UeXBlLkJPVFRPTTtcclxuICBASW5wdXQoKSBtYXhGaWxlc1VwbG9hZExpbWl0OiBudW1iZXIgPVxyXG4gICAgdGhpcy5jb25zdGFudHM/LmZpbGVVcGxvYWQ/LmxpbWl0Py5tYXhGaWxlVXBsb2FkO1xyXG4gIEBJbnB1dCgpIG1heEZpbGVzVXBsb2FkTGltaXRFcnJvck1lc3NhZ2UgPSAnJztcclxuICBwcml2YXRlIF9maWxlVXBsb2FkU3RhdHVzITogRmlsZVVwbG9hZFN0YXR1cztcclxuXHJcbiAgQElucHV0KCkgZ2V0IGZpbGVVcGxvYWRTdGF0dXMoKTogRmlsZVVwbG9hZFN0YXR1cyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsZVVwbG9hZFN0YXR1cztcclxuICB9XHJcbiAgc2V0IGZpbGVVcGxvYWRTdGF0dXModmFsdWU6IEZpbGVVcGxvYWRTdGF0dXMpIHtcclxuICAgIHRoaXMuX2ZpbGVVcGxvYWRTdGF0dXMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHVwbG9hZGVkU2l6ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudXBsb2FkZWRTaXplVmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdXBsb2FkZWRTaXplKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMudXBsb2FkZWRTaXplVmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcbiAgX2ZpbGVEb3dubG9hZENvbmZpZyE6IEZpbGVEb3dubG9hZENvbmZpZztcclxuICBASW5wdXQoKVxyXG4gIHNldCBmaWxlRG93bmxvYWRDb25maWcodmFsdWU6IEZpbGVEb3dubG9hZENvbmZpZykge1xyXG4gICAgdGhpcy5fZmlsZURvd25sb2FkQ29uZmlnID0gdmFsdWU7XHJcbiAgfVxyXG4gIGdldCBmaWxlRG93bmxvYWRDb25maWcoKTogRmlsZURvd25sb2FkQ29uZmlnIHtcclxuICAgIHJldHVybiB0aGlzLl9maWxlRG93bmxvYWRDb25maWc7XHJcbiAgfVxyXG4gIEBPdXRwdXQoKSB1cGxvYWRTZWxlY3RlZEZpbGVzID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlIHwgRmlsZUxpc3Q+KCk7XHJcbiAgQE91dHB1dCgpIGRvd25sb2FkU2VsZWN0ZWRGaWxlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlIHwgRG93bmxvYWRGaWxlPigpO1xyXG4gIGFwaUJhc2VVcmwhOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZm9ybVV0aWxpdHlTZXJ2aWNlOiBGb3JtVXRpbGl0eVNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBmaWxlVXBsb2FkU2VydmljZTogRmlsZVVwbG9hZFNlcnZpY2UgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgKSB7fVxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIGNvbXBvbmVudCBwcm9wZXJ0aWVzIGFuZCByZXRyaWV2ZXMgY29uZmlndXJhdGlvbi5cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Zvcm1GaWVsZCA9ICEhdGhpcy5jb25maWc7XHJcbiAgICB0aGlzLmFwaUJhc2VVcmwgPSB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLmdldEFwaUJhc2VVcmwoKTtcclxuICAgIHRoaXMuY29uZmlnID1cclxuICAgICAgdGhpcy5jb25maWcgPz9cclxuICAgICAgdGhpcy5mb3JtVXRpbGl0eVNlcnZpY2UuZ2V0Rm9ybUZpZWxkQ29uZmlnKFxyXG4gICAgICAgICdmaWxlVXBsb2FkJyxcclxuICAgICAgICBGb3JtQ29udHJvbFR5cGUuRklMRV9VUExPQURcclxuICAgICAgKTtcclxuICAgIHRoaXMuZ3JvdXAgPVxyXG4gICAgICB0aGlzLmdyb3VwID8/IHRoaXMuZm9ybVV0aWxpdHlTZXJ2aWNlLmdldEZvcm1Hcm91cCgnZmlsZVVwbG9hZCcpO1xyXG4gICAgdGhpcy5jb25maWcuc3VwcG9ydE1lc3NhZ2UgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uc3VwcG9ydE1lc3NhZ2UgPz8gdGhpcy5zdXBwb3J0TWVzc2FnZTtcclxuICAgIHRoaXMuaXNNdWx0aUZpbGVVcGxvYWQgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uaXNNdWx0aUZpbGVVcGxvYWQgPz8gdGhpcy5pc011bHRpRmlsZVVwbG9hZDtcclxuICAgIHRoaXMubWF4VXBsb2FkRmlsZVNpemUgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8ubWF4VXBsb2FkRmlsZVNpemUgPz8gdGhpcy5tYXhVcGxvYWRGaWxlU2l6ZTtcclxuICAgIHRoaXMuYWxsb3dlZEZpbGVUeXBlcyA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5hbGxvd2VkRmlsZVR5cGVzID8/IHRoaXMuYWxsb3dlZEZpbGVUeXBlcztcclxuICAgIHRoaXMuaXNBbGxvd0FueUZpbGVUeXBlID1cclxuICAgICAgdGhpcy5jb25maWc/LmlzQWxsb3dBbnlGaWxlVHlwZSA/PyB0aGlzLmlzQWxsb3dBbnlGaWxlVHlwZTtcclxuICAgIHRoaXMudmlld0ZpbGVzRm9ybWF0ID0gdGhpcy5jb25maWc/LnZpZXdGaWxlc0Zvcm1hdCA/PyB0aGlzLnZpZXdGaWxlc0Zvcm1hdDtcclxuICAgIHRoaXMuaXNVcGxvYWRCdXR0b25OZWVkZWQgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uaXNVcGxvYWRCdXR0b25OZWVkZWQgPz8gdGhpcy5pc1VwbG9hZEJ1dHRvbk5lZWRlZDtcclxuICAgIHRoaXMuYWN0aW9uQnV0dG9uQWxpZ24gPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uYWN0aW9uQnV0dG9uQWxpZ24gPz8gdGhpcy5hY3Rpb25CdXR0b25BbGlnbjtcclxuICAgIHRoaXMuYWxpZ25GaWxlVXBsb2FkRXJyb3JNZXNzYWdlVG8gPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uYWxpZ25GaWxlVXBsb2FkRXJyb3JNZXNzYWdlVG8gPz9cclxuICAgICAgdGhpcy5hbGlnbkZpbGVVcGxvYWRFcnJvck1lc3NhZ2VUbztcclxuICAgIHRoaXMuZ2V0QWxsb3dlZEZpbGVGb3JtYXRTaXplTWVzc2FnZSgpO1xyXG4gICAgdGhpcy5maWxlVXBsb2FkSGVhZGluZyA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5maWxlVXBsb2FkSGVhZGluZyA/P1xyXG4gICAgICB0aGlzLmZpbGVVcGxvYWRIZWFkaW5nID8/XHJcbiAgICAgIHRoaXMuZmlsZVVwbG9hZExhYmVsLmZpbGVVcGxvYWQ7XHJcbiAgICB0aGlzLmNvbmZpZy5hbGxvd2VkRmlsZVR5cGVFcnJvck1lc3NhZ2UgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uYWxsb3dlZEZpbGVUeXBlRXJyb3JNZXNzYWdlID8/XHJcbiAgICAgIHRoaXMuYWxsb3dlZEZpbGVUeXBlRXJyb3JNZXNzYWdlO1xyXG4gICAgdGhpcy5jb25maWcubWF4RmlsZVNpemVFcnJvck1lc3NhZ2UgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8ubWF4RmlsZVNpemVFcnJvck1lc3NhZ2UgPz8gdGhpcy5tYXhGaWxlU2l6ZUVycm9yTWVzc2FnZTtcclxuICAgIHRoaXMuaXNGaWxlU2VsZWN0ZWQgPSB0aGlzLmNvbmZpZz8uaXNGaWxlU2VsZWN0ZWQgPz8gdGhpcy5pc0ZpbGVTZWxlY3RlZDtcclxuICAgIHRoaXMubWF4RmlsZXNVcGxvYWRMaW1pdCA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5tYXhGaWxlc1VwbG9hZExpbWl0ID8/IHRoaXMubWF4RmlsZXNVcGxvYWRMaW1pdDtcclxuICAgIHRoaXMubWF4RmlsZXNVcGxvYWRMaW1pdEVycm9yTWVzc2FnZSA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5tYXhGaWxlc1VwbG9hZExpbWl0RXJyb3JNZXNzYWdlID8/XHJcbiAgICAgIHRoaXMubWF4RmlsZXNVcGxvYWRMaW1pdEVycm9yTWVzc2FnZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRm9ybWF0cyBhbGxvd2VkIGZpbGUgZm9ybWF0IGFuZCBzaXplIG1lc3NhZ2UgaW4gcmVxdWlyZWQgZm9ybWF0LlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0QWxsb3dlZEZpbGVGb3JtYXRTaXplTWVzc2FnZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN1cHBvcnRlZEZpbGVGb3JtYXRUZXh0ID0gdGhpcy5hbGxvd2VkRmlsZVR5cGVzLmpvaW4oJywgJyk7XHJcbiAgICB0aGlzLmFsbG93ZWRGaWxlVHlwZXNBbmRTaXplVGV4dCA9IGAke3RoaXMuZmlsZVVwbG9hZExhYmVsPy5hbGxvd2VkRmlsZVNpemUxfVxyXG4gICAgJHt0aGlzLm1heFVwbG9hZEZpbGVTaXplfWA7XHJcbiAgICBpZiAodGhpcy5pc011bHRpRmlsZVVwbG9hZCkge1xyXG4gICAgICB0aGlzLmFsbG93ZWRGaWxlVHlwZXNBbmRTaXplVGV4dCArPSBgICR7dGhpcy5jb25zdGFudHM/LmZpbGVVcGxvYWQ/LmxhYmVsPy5tYn1gO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmlzQWxsb3dBbnlGaWxlVHlwZSkge1xyXG4gICAgICB0aGlzLmFsbG93ZWRGaWxlVHlwZXNBbmRTaXplVGV4dCArPSBgJHt0aGlzLmZpbGVVcGxvYWRMYWJlbD8uYWxsb3dlZEZpbGVTaXplMn0gJHt0aGlzLmZpbGVVcGxvYWRMYWJlbD8uYWxsb3dlZEZpbGVGb3JtYXR9ICR7c3VwcG9ydGVkRmlsZUZvcm1hdFRleHR9LmA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIHNlbGVjdGVkIGZpbGUocykgYW5kIGVtaXRzIEZpbGVVcGxvYWQgZXZlbnQgZW1pdHRlciBmb3IgdXBsb2FkaW5nIHRoZSBmaWxlKHMpLlxyXG4gICAqIEBwYXJhbSB7KEZpbGUgfCBGaWxlTGlzdCl9IGZpbGVcclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEZpbGUoZmlsZTogRmlsZSB8IEZpbGVMaXN0KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsZXMgPSBbXTtcclxuICAgIHRoaXMuZmlsZVVwbG9hZFN0YXR1cy5hbHJlYWR5RXhpc3RzRmlsZXMgPSBbXTtcclxuICAgIHRoaXMuZmlsZVVwbG9hZFN0YXR1cy5maWxlc05hbWVzVXBsb2FkRmFpbGVkID0gW107XHJcbiAgICB0aGlzLmZpbGVVcGxvYWRTdGF0dXMuZmlsZXNVcGxvYWRlZFN1Y2Nlc3NmdWxseUNvdW50ID0gMDtcclxuICAgIGNvbnN0IGZpbGVVcGxvYWRGb3JtQ29udHJvbCA9IHRoaXMuZ3JvdXA/LmdldChcclxuICAgICAgdGhpcy5jb25maWc/LmNvbnRyb2xOYW1lID8/ICdmaWxlVXBsb2FkJ1xyXG4gICAgKTtcclxuICAgIGlmIChmaWxlVXBsb2FkRm9ybUNvbnRyb2wpIHtcclxuICAgICAgZmlsZVVwbG9hZEZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc011bHRpRmlsZVVwbG9hZCkge1xyXG4gICAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy52YWxpZGF0ZUZpbGUoZmlsZSk7XHJcbiAgICAgIHRoaXMuaXNGaWxlU2VsZWN0ZWQgPSBpc1ZhbGlkO1xyXG4gICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgIGlmIChmaWxlKSB7XHJcbiAgICAgICAgICBPYmplY3QudmFsdWVzKGZpbGUpLmZvckVhY2goKGZpbGVJdGVtOiBGaWxlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlcz8ucHVzaChmaWxlSXRlbSk7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxTaXplICs9IGZpbGVJdGVtLnNpemU7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRmlsZXNOYW1lczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlcz8uZm9yRWFjaCgoZmlsZTogRmlsZSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgc2VsZWN0ZWRGaWxlc05hbWVzLnB1c2goZmlsZS5uYW1lKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZU5hbWVzID0gc2VsZWN0ZWRGaWxlc05hbWVzPy5qb2luKCcsICcpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5ncm91cFxyXG4gICAgICAgICAgLmdldCh0aGlzLmNvbmZpZz8uY29udHJvbE5hbWUpXHJcbiAgICAgICAgICA/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRGaWxlTmFtZXMpO1xyXG4gICAgICAgIHRoaXMuZmlsZVVwbG9hZEJ0bi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmlzRm9ybUZpZWxkKVxyXG4gICAgICAgICAgdGhpcy51cGxvYWRTZWxlY3RlZEZpbGVzPy5lbWl0KHRoaXMuc2VsZWN0ZWRGaWxlcyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGZpbGVJdGVtID0gT2JqZWN0LnZhbHVlcyhmaWxlKVswXTtcclxuICAgICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGVGaWxlKGZpbGVJdGVtKTtcclxuICAgICAgaWYgKGlzVmFsaWQpIHtcclxuICAgICAgICB0aGlzLmlzRmlsZVNlbGVjdGVkID0gaXNWYWxpZDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZU5hbWVzID0gZmlsZUl0ZW0ubmFtZTtcclxuICAgICAgICB0aGlzLnRvdGFsU2l6ZSA9IGZpbGVJdGVtLnNpemU7XHJcbiAgICAgICAgdGhpcy5maWxlVXBsb2FkU2VydmljZT8uY29udmVydEZpbGVUb0J5dGVBcnJheShmaWxlSXRlbSk7XHJcbiAgICAgICAgdGhpcy5ncm91cFxyXG4gICAgICAgICAgLmdldCh0aGlzLmNvbmZpZy5jb250cm9sTmFtZSlcclxuICAgICAgICAgID8uc2V0VmFsdWUodGhpcy5zZWxlY3RlZEZpbGVOYW1lcyk7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNGb3JtRmllbGQpIHRoaXMudXBsb2FkU2VsZWN0ZWRGaWxlcy5lbWl0KGZpbGVJdGVtKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZXMgPSBmaWxlO1xyXG4gICAgICAgIHRoaXMuZmlsZVVwbG9hZEJ0bi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRlcyB0aGUgc2VsZWN0ZWQgZmlsZShzKSBmb3JtYXQgYW5kIHNpemUuXHJcbiAgICogQHBhcmFtIHsoRmlsZSB8IEZpbGVMaXN0KX0gZmlsZVxyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICB2YWxpZGF0ZUZpbGUoZmlsZTogRmlsZSB8IEZpbGVMaXN0KTogYm9vbGVhbiB7XHJcbiAgICB0aGlzLmlzVmFsaWRGaWxlVHlwZSA9ICF0aGlzLmlzQWxsb3dBbnlGaWxlVHlwZVxyXG4gICAgICA/IHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UudmFsaWRhdGVGaWxlVHlwZXMoXHJcbiAgICAgICAgICBmaWxlLFxyXG4gICAgICAgICAgdGhpcy5hbGxvd2VkRmlsZVR5cGVzLFxyXG4gICAgICAgICAgdGhpcy5pc011bHRpRmlsZVVwbG9hZFxyXG4gICAgICAgIClcclxuICAgICAgOiB0cnVlO1xyXG4gICAgaWYgKHRoaXMuaXNNdWx0aUZpbGVVcGxvYWQpIHtcclxuICAgICAgdGhpcy5pc1ZhbGlkTWF4RmlsZVVwbG9hZExpbWl0ID1cclxuICAgICAgICBPYmplY3QudmFsdWVzKGZpbGUpLmxlbmd0aCA8PVxyXG4gICAgICAgIHRoaXMuY29uc3RhbnRzPy5maWxlVXBsb2FkPy5saW1pdD8ubWF4RmlsZVVwbG9hZDtcclxuICAgICAgaWYgKCF0aGlzLmlzVmFsaWRNYXhGaWxlVXBsb2FkTGltaXQpIHtcclxuICAgICAgICB0aGlzLmdyb3VwPy5nZXQodGhpcy5jb25maWc/LmNvbnRyb2xOYW1lKT8uc2V0RXJyb3JzKHtcclxuICAgICAgICAgIG1heEZpbGVzVXBsb2FkTGltaXRSZWFjaGVkOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmlzVmFsaWRGaWxlVHlwZSkge1xyXG4gICAgICB0aGlzLmdyb3VwPy5nZXQodGhpcy5jb25maWc/LmNvbnRyb2xOYW1lKT8uc2V0RXJyb3JzKHtcclxuICAgICAgICBpbnZhbGlkRmlsZVR5cGU6IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzVmFsaWRGaWxlU2l6ZSA9IHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UudmFsaWRhdGVGaWxlU2l6ZShcclxuICAgICAgZmlsZSxcclxuICAgICAgdGhpcy5tYXhVcGxvYWRGaWxlU2l6ZSxcclxuICAgICAgdGhpcy5pc011bHRpRmlsZVVwbG9hZFxyXG4gICAgKTtcclxuICAgIGlmICghdGhpcy5pc1ZhbGlkRmlsZVNpemUpIHtcclxuICAgICAgdGhpcy5ncm91cD8uZ2V0KHRoaXMuY29uZmlnPy5jb250cm9sTmFtZSk/LnNldEVycm9ycyh7XHJcbiAgICAgICAgbWF4RmlsZVNpemU6IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSW5pdGlhdGVzIHRoZSBmaWxlIHVwbG9hZCBwcm9jZXNzIGZvciBpbmRlcGVuZGVudCBmaWxlIHVwbG9hZCBjb21wb25lbnQuXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBvblVwbG9hZCgpOiB2b2lkIHtcclxuICAgIHRoaXMudXBsb2FkU2VsZWN0ZWRGaWxlcy5lbWl0KHRoaXMuc2VsZWN0ZWRGaWxlcyk7XHJcbiAgICBpZiAodGhpcy5maWxlVXBsb2FkU2VydmljZT8uZ2V0RmlsZVVwbG9hZFN0YXR1cygpKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IHRoaXMuc2VsZWN0ZWRGaWxlcztcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ2xlYXJzIHRoZSBmb3JtIGdyb3VwIGNvbnRyb2wgdmFsdWUgb2YgdHlwZSBpbnB1dCBhbmQgcmVzZXRzIG90aGVyIGZpbGUgdXBsb2FkIHByb3BlcnRpZXMuXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICByZXNldFVwbG9hZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UuY2xlYXJGaWxlQnl0ZUFycmF5KCk7XHJcbiAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbXTtcclxuICAgIHRoaXMuaXNVcGxvYWRJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsZU5hbWVzID0gJyc7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsZXMgPSBbXTtcclxuICAgIHRoaXMuaXNGaWxlU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMuY29uZmlnPy5jb250cm9sTmFtZSk/LnNldFZhbHVlKCcnKTtcclxuICAgIHRoaXMuZmlsZVVwbG9hZEJ0bi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgdGhlIHNlbGVjdGVkIGZpbGUgZnJvbSB0aGUgdXBsb2FkZWQgZmlsZXMgbGlzdC5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRGVsZXRlRmlsZShmaWxlOiBGaWxlLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvdGFsU2l6ZSA9IDA7XHJcbiAgICB0aGlzLnVwbG9hZGVkRmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRm9yIHRhYiBrZXkga2V5ZG93biBldmVudCBpdCBwYXNzZXMgZXZlbnQgYW5kIHJlc3RyaWN0cyBvdGhlciBrZXlzIGZyb20ga2V5Ym9hcmQuXHJcbiAgICogQHBhcmFtIHtLZXlib2FyZEV2ZW50fSBldmVudCAtS2V5ZG93biBldmVudCBvYmplY3QuXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5rZXkgIT09ICdUYWInKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBFbWl0cyBmaWxlIGRvd25sb2FkIGV2ZW50IGVtaXR0ZXIuXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBkb3dubG9hZEZpbGUoZmlsZTogRmlsZSB8IERvd25sb2FkRmlsZSk6IHZvaWQge1xyXG4gICAgdGhpcy5kb3dubG9hZFNlbGVjdGVkRmlsZS5lbWl0KGZpbGUpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZmlsZSBsaXN0LlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxyXG4gICAqIEByZXR1cm4geyhudW1iZXIgfCBzdHJpbmcpfVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIpOiBudW1iZXIgfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGluZGV4O1xyXG4gIH1cclxuICAvKipcclxuICAgKiBUcmlnZ2VycyBvbiBicm93c2UgZWxlbWVudCBjbGlja2VkXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBmaWxlQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVGaWVsZC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXkgY29tbWEgc2VwYXJhdGVkIGZhaWxlZCBmaWxlIG5hbWVzXHJcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gZmlsZXNOYW1lc1VwbG9hZEZhaWxlZFxyXG4gICAqIEByZXR1cm4geyp9ICB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZGlzcGxheUZpbGVOYW1lcyhmaWxlTmFtZXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBmaWxlTmFtZXMgJiYgZmlsZU5hbWVzLmxlbmd0aCA/IGZpbGVOYW1lcy5qb2luKCcsJykgOiAnJztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlcyBmaWxlIGZyb20gcmVzcGVjdGl2ZSBwcm9wZXJ0aWVzIHVzZWQuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICByZW1vdmVGaWxlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgY29uc3QgZmlsZU5hbWVzOiBzdHJpbmdbXSA9IHRoaXMuc2VsZWN0ZWRGaWxlTmFtZXMuc3BsaXQoJywnKTtcclxuICAgIGZpbGVOYW1lcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbGVOYW1lcyA9IGZpbGVOYW1lcy5qb2luKCcsJyk7XHJcbiAgICB0aGlzLnVwbG9hZFNlbGVjdGVkRmlsZXMuZW1pdCh0aGlzLnNlbGVjdGVkRmlsZXMpO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5yZXNldFVwbG9hZCgpO1xyXG4gICAgICB0aGlzLmZpbGVVcGxvYWRTdGF0dXMuZmlsZXNVcGxvYWRlZFN1Y2Nlc3NmdWxseUNvdW50ID0gMDtcclxuICAgICAgdGhpcy5maWxlVXBsb2FkU3RhdHVzLmZpbGVzTmFtZXNVcGxvYWRGYWlsZWQgPSBbXTtcclxuICAgICAgdGhpcy5maWxlVXBsb2FkU3RhdHVzLmFscmVhZHlFeGlzdHNGaWxlcyA9IFtdO1xyXG4gICAgICB0aGlzLmlzVXBsb2FkQnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBEaXNhYmxlZCBmaWxlIHVwbG9hZCBidXR0b25cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGRpc2FibGVVcGxvYWRCdXR0b24oKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNVcGxvYWRCdXR0b25EaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmlzVXBsb2FkQnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBCYXNlZCBvbiBpc011bHRpRmlsZVVwbG9hZCBmbGFnIHJldHVybiBmaWxlcyB0byBkb3dubG9hZC5cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEZpbGVzVG9Eb3dubG9hZCgpOiBEb3dubG9hZEZpbGVbXSB7XHJcbiAgICBpZiAodGhpcy5pc011bHRpRmlsZVVwbG9hZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5maWxlVXBsb2FkU3RhdHVzLnVwbG9hZGVkRmlsZXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgW2Zvcm1Hcm91cF09XCJncm91cFwiXHJcbiAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRcIlxyXG4gIFtuZ0NsYXNzXT1cIlxyXG4gICAgY29uZmlnLmlzTGFiZWxBbGlnbmVkTGVmdFxyXG4gICAgICA/ICdpZWVlc2EtZmlsZS11cGxvYWRfX2xhYmVsLWxlZnQnXHJcbiAgICAgIDogJ2llZWVzYS1maWxlLXVwbG9hZF9fbGFiZWwtdG9wJ1xyXG4gIFwiXHJcbj5cclxuICA8bWF0LWxhYmVsIGNsYXNzPVwiaWVlZXNhLWJvZHktc20tMTQgaWVlZXNhLWZpbGUtdXBsb2FkX19sYWJlbFwiPnt7XHJcbiAgICBjb25maWcubGFiZWxcclxuICB9fTwvbWF0LWxhYmVsPlxyXG4gIDxpZWVlc2EtZmlsZS1kb3dubG9hZFxyXG4gICAgW2ZpbGVEb3dubG9hZENvbmZpZ109XCJmaWxlRG93bmxvYWRDb25maWdcIlxyXG4gICAgW2FwaUJhc2VVcmxdPVwiYXBpQmFzZVVybFwiXHJcbiAgICBbZG93bmxvYWRGaWxlc109XCJnZXRGaWxlc1RvRG93bmxvYWQoKVwiXHJcbiAgICAoZG93bmxvYWRTZWxlY3RlZEZpbGUpPVwiZG93bmxvYWRGaWxlKCRldmVudClcIlxyXG4gID48L2llZWVzYS1maWxlLWRvd25sb2FkPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX191cGxvYWQgcC00XCJcclxuICAgIGllZWVzYUZpbGVVcGxvYWRcclxuICAgIChmaWxlRHJvcHBlZCk9XCJnZXRGaWxlKCRldmVudClcIlxyXG4gID5cclxuICAgIDxwIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX191cGxvYWRfX2hlYWRpbmcgbS0wIGllZWVzYS1sYWJlbC1sZy1ib2xkLTE2XCI+XHJcbiAgICAgIHt7IGZpbGVVcGxvYWRIZWFkaW5nIH19XHJcbiAgICA8L3A+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX191cGxvYWRfX2Jyb3dzZS1maWxlc1wiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgIChjbGljayk9XCJmaWxlQ2xpY2soKVwiXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX2Jyb3dzZS1idG4gbWF0LXRlcnRpYXJ5LWJ1dHRvblwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmaWxlVXBsb2FkQXJpYUxhYmVsLmJyb3dzZUZpbGVzXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZmlsZVVwbG9hZFN0YXR1cz8uaXNVcGxvYWRpbmdTdGFydFwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBmaWxlVXBsb2FkTGFiZWwuYnJvd3NlRmlsZXMgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc011bHRpRmlsZVVwbG9hZFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxyXG4gICAgICAgICAgI2ZpbGVGaWVsZFxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJnZXRGaWxlKCRhbnkoJGV2ZW50KS50YXJnZXQuZmlsZXMpXCJcclxuICAgICAgICAgIGhpZGRlblxyXG4gICAgICAgICAgW2FjY2VwdF09XCJhbGxvd2VkRmlsZVR5cGVzXCJcclxuICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWxlVXBsb2FkU3RhdHVzPy5pc1VwbG9hZGluZ1N0YXJ0XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc011bHRpRmlsZVVwbG9hZFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxyXG4gICAgICAgICAgI2ZpbGVGaWVsZFxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJnZXRGaWxlKCRhbnkoJGV2ZW50KS50YXJnZXQuZmlsZXMpXCJcclxuICAgICAgICAgIGhpZGRlblxyXG4gICAgICAgICAgW2FjY2VwdF09XCJhbGxvd2VkRmlsZVR5cGVzXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWxlVXBsb2FkU3RhdHVzPy5pc1VwbG9hZGluZ1N0YXJ0XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxwXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX2FsbG93ZWQtZmlsZS10ZXh0IG0tMCBpZWVlc2EtbGFiZWwtbWQtMTRcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWxsb3dlZEZpbGVUeXBlc0FuZFNpemVUZXh0XCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IGFsbG93ZWRGaWxlVHlwZXNBbmRTaXplVGV4dCB9fVxyXG4gICAgICA8L3A+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3VwbG9hZC13cmFwcGVyIGQtZmxleFwiXHJcbiAgICAgICpuZ0lmPVwiaXNGaWxlU2VsZWN0ZWRcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ2aWV3RmlsZXNGb3JtYXRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGVmYXVsdCdcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3VwbG9hZC13cmFwcGVyX19pbnB1dC1maWVsZCBpZWVlc2EtYm9keS1sZy0xNlwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0ZWRGaWxlTmFtZXNcIlxyXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb25maWcucGxhY2Vob2xkZXIgPz8gJydcIlxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29uZmlnLmNvbnRyb2xOYW1lXCJcclxuICAgICAgICAgICAgICBbbmFtZV09XCJjb25maWcuY29udHJvbE5hbWVcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXHJcbiAgICAgICAgICAgICAgICBjb25maWcuYXJpYUxhYmVsID8/IGZpbGVVcGxvYWRBcmlhTGFiZWwuZmlsZVVwbG9hZElucHV0XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbYXJpYS1kZXNjcmliZWRieV09XCJjb25maWcuYXJpYURlc2NyaWJlZEJ5SWQgPz8gJydcIlxyXG4gICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fdXBsb2FkLXdyYXBwZXItLWNsZWFyLWljb24tYnRuXCJcclxuICAgICAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZpbGVVcGxvYWRBcmlhTGFiZWwucmVtb3ZlRmlsZUljb25cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZXNldFVwbG9hZCgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtY2lyY2xlLXhtYXJrIGllZWVzYS1pbnB1dC1maWVsZC11cGxvYWRfX2ljb24tLWNsZWFyXCJcclxuICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX191cGxvYWQtd3JhcHBlci0tdXBsb2FkLWJ0biBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgW2ljb25CdXR0b25dPVwiZmlsZVVwbG9hZEJ0blwiXHJcbiAgICAgICAgICAgIFtpc0xhYmVsTmVlZGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvblVwbG9hZCgpXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhaXNGb3JtRmllbGRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2JvdHRvbSdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpZWVlc2Etdmlldy1maWxlcy1ib3R0b20tZm9ybWF0XCI+XHJcbiAgICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3Byb2dyZXNzX190ZXh0XCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImZpbGVVcGxvYWRTdGF0dXMuZmlsZXNVcGxvYWRlZFN1Y2Nlc3NmdWxseUNvdW50XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICBmaWxlVXBsb2FkU3RhdHVzLmZpbGVzVXBsb2FkZWRTdWNjZXNzZnVsbHlDb3VudCArXHJcbiAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgZmlsZVVwbG9hZExhYmVsPy5vZiArXHJcbiAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRGaWxlcy5sZW5ndGggK1xyXG4gICAgICAgICAgICAgICAgICBcIiBcIiArXHJcbiAgICAgICAgICAgICAgICAgIGZpbGVVcGxvYWRMYWJlbD8uZmlsZXNVcGxvYWRlZFxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWxlVXBsb2FkU3RhdHVzPy5pc1VwbG9hZGluZ1N0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHB0LTEgbS0wIGllZWVzYS1sYWJlbC1tZC0xNCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpbGUgb2Ygc2VsZWN0ZWRGaWxlczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgZmlsZT8ubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3VwbG9hZC13cmFwcGVyLS1jbGVhci1pY29uLWJ0blwiXHJcbiAgICAgICAgICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmaWxlVXBsb2FkQXJpYUxhYmVsLnJlbW92ZUZpbGVJY29uXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUZpbGUoaSlcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEtcmVndWxhciBmYS1jaXJjbGUteG1hcmsgaWVlZXNhLWlucHV0LWZpZWxkLXVwbG9hZF9faWNvbi0tY2xlYXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgZmlsZVVwbG9hZFN0YXR1cy5maWxlc05hbWVzVXBsb2FkRmFpbGVkICYmXHJcbiAgICAgICAgICAgICAgICBmaWxlVXBsb2FkU3RhdHVzLmZpbGVzTmFtZXNVcGxvYWRGYWlsZWQubGVuZ3RoXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fZXJyb3JfX3RleHRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgZGlzYWJsZVVwbG9hZEJ1dHRvbigpIH19XHJcbiAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgIGZpbGVVcGxvYWRMYWJlbD8udXBsb2FkRm9yICtcclxuICAgICAgICAgICAgICAgICAgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5RmlsZU5hbWVzKGZpbGVVcGxvYWRTdGF0dXMuZmlsZXNOYW1lc1VwbG9hZEZhaWxlZCkgK1xyXG4gICAgICAgICAgICAgICAgICBcIiBcIiArXHJcbiAgICAgICAgICAgICAgICAgIGZpbGVVcGxvYWRMYWJlbD8udXBsb2FkRXJyb3JNc2dcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIGZpbGVVcGxvYWRTdGF0dXMuYWxyZWFkeUV4aXN0c0ZpbGVzICYmXHJcbiAgICAgICAgICAgICAgICBmaWxlVXBsb2FkU3RhdHVzLmFscmVhZHlFeGlzdHNGaWxlcy5sZW5ndGggJiZcclxuICAgICAgICAgICAgICAgIGlzTXVsdGlGaWxlVXBsb2FkXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fZXJyb3JfX3RleHRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgZGlzYWJsZVVwbG9hZEJ1dHRvbigpIH19XHJcbiAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWxlTmFtZXMoZmlsZVVwbG9hZFN0YXR1cy5hbHJlYWR5RXhpc3RzRmlsZXMpICtcclxuICAgICAgICAgICAgICAgICAgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgICBmaWxlVXBsb2FkTGFiZWw/LmZpbGVBbHJlYWR5RXhpc3RzXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRm9ybUZpZWxkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3Byb2dyZXNzXCIgKm5nSWY9XCJpc1VwbG9hZEluUHJvZ3Jlc3NcIj5cclxuICAgICAgICA8cCBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fcHJvZ3Jlc3NfX3RleHRcIj5cclxuICAgICAgICAgIHt7IGZpbGVVcGxvYWRMYWJlbD8udXBsb2FkUHJvZ3Jlc3MgfX1cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX19wcm9ncmVzcy0tYmFyXCJcclxuICAgICAgICAgIG1vZGU9XCJkZXRlcm1pbmF0ZVwiXHJcbiAgICAgICAgICBbdmFsdWVdPVwidXBsb2FkZWRTaXplXCJcclxuICAgICAgICA+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPGllZWVzYS1mb3JtLWVycm9yXHJcbiAgICAgIFtoaWRkZW5dPVwiYWxpZ25GaWxlVXBsb2FkRXJyb3JNZXNzYWdlVG8gIT09IGFsaWdubWVudFR5cGUuTUlERExFXCJcclxuICAgICAgW2Zvcm1Hcm91cF09XCJncm91cFwiXHJcbiAgICAgIFtjb25maWddPVwiY29uZmlnXCJcclxuICAgID48L2llZWVzYS1mb3JtLWVycm9yPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiaXNVcGxvYWRCdXR0b25OZWVkZWQgJiYgaXNGaWxlU2VsZWN0ZWRcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiY29sLTEyXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAnanVzdGlmeS1jb250ZW50LWVuZCc6IGFjdGlvbkJ1dHRvbkFsaWduID09PSBhbGlnbm1lbnRUeXBlLkxFRlQsXHJcbiAgICAgICAgICAnanVzdGlmeS1jb250ZW50LWNlbnRlcic6IGFjdGlvbkJ1dHRvbkFsaWduID09PSBhbGlnbm1lbnRUeXBlLk1JRERMRSxcclxuICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQtc3RhcnQnOiBhY3Rpb25CdXR0b25BbGlnbiA9PT0gYWxpZ25tZW50VHlwZS5SSUdIVCxcclxuICAgICAgICB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzVXBsb2FkQnV0dG9uRGlzYWJsZWRcIlxyXG4gICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9XCJtYXQtcHJpbWFyeS1idXR0b24gaWVlZXNhLWR5bmFtaWMtZm9ybV9fYWN0aW9ucy0tcmlnaHQtYnRuXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNGaWxlU2VsZWN0ZWQgfHwgZmlsZVVwbG9hZFN0YXR1cz8uaXNVcGxvYWRpbmdTdGFydFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgZmlsZVVwbG9hZExhYmVsPy51cGxvYWQgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxpZWVlc2EtZm9ybS1lcnJvclxyXG4gIFtoaWRkZW5dPVwiYWxpZ25GaWxlVXBsb2FkRXJyb3JNZXNzYWdlVG8gIT09IGFsaWdubWVudFR5cGUuQk9UVE9NXCJcclxuICBbZm9ybUdyb3VwXT1cImdyb3VwXCJcclxuICBbY29uZmlnXT1cImNvbmZpZ1wiXHJcbj48L2llZWVzYS1mb3JtLWVycm9yPlxyXG48aWVlZXNhLWZvcm0tc3VwcG9ydC10ZXh0XHJcbiAgW2Zvcm1Hcm91cF09XCJncm91cFwiXHJcbiAgW2NvbmZpZ109XCJjb25maWdcIlxyXG4+PC9pZWVlc2EtZm9ybS1zdXBwb3J0LXRleHQ+XHJcbiJdfQ==
|
|
447
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc2VudGF0aW9uL3NyYy9saWIvY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxLQUFLLFNBQVMsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUd4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFB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QUF3Qjt3QkFDeEIsb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIscUJBQXFCO3FCQUN0QixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJO3lJQUdiLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFRYix1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBZUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsNkJBQTZCO3NCQUFyQyxLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFRywrQkFBK0I7c0JBQXZDLEtBQUs7Z0JBR08sZ0JBQWdCO3NCQUE1QixLQUFLO2dCQVFGLFlBQVk7c0JBRGYsS0FBSztnQkFVRixrQkFBa0I7c0JBRHJCLEtBQUs7Z0JBT0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgKiBhcyBjb25zdGFudHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGb3JtRXJyb3JDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBGb3JtU3VwcG9ydFRleHRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLXN1cHBvcnQtdGV4dC9mb3JtLXN1cHBvcnQtdGV4dC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGb3JtVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtLXV0aWxpdHkuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmllbGQtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tY29udHJvbC10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEFsbG93ZWRGaWxlVHlwZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWxsb3dlZC1maWxlLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWxlLXVwbG9hZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSWNvbkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24tYnV0dG9uL2ljb24tYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFsaWduQnJvd3NlZEZpbGVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FsaWduLWJyb3dzZWQtZmlsZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBBbGlnblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWxpZ24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRTdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsZS11cGxvYWQtc3RhdHVzLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsZURvd25sb2FkQ29tcG9uZW50IH0gZnJvbSAnLi4vZmlsZS1kb3dubG9hZC9maWxlLWRvd25sb2FkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbGVEb3dubG9hZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9maWxlLWRvd25sb2FkLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IERvd25sb2FkRmlsZSB9IGZyb20gJy4uLy4uL21vZGVscy9kb3dubG9hZC1maWxlLm1vZGVsJztcclxuLyoqXHJcbiAqIFByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIHVwbG9hZGluZyBmaWxlcyB0byBhd3MgczMgYnVja2V0LlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2llZWVzYS1maWxlLXVwbG9hZCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybUVycm9yQ29tcG9uZW50LFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBGb3JtU3VwcG9ydFRleHRDb21wb25lbnQsXHJcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcclxuICAgIEZpbGVVcGxvYWREaXJlY3RpdmUsXHJcbiAgICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgRmlsZURvd25sb2FkQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdmaWxlRmllbGQnKSBmaWxlRmllbGQhOiBFbGVtZW50UmVmO1xyXG4gIGNvbnN0YW50cyA9IGNvbnN0YW50cztcclxuICBmaWxlVXBsb2FkTGFiZWwgPSB0aGlzLmNvbnN0YW50cz8uZmlsZVVwbG9hZD8ubGFiZWw7XHJcbiAgZmlsZVVwbG9hZEFyaWFMYWJlbCA9IHRoaXMuY29uc3RhbnRzPy5maWxlVXBsb2FkPy5hcmlhTGFiZWw7XHJcbiAgZmlsZVVwbG9hZEljb25VcmwgPSB0aGlzLmNvbnN0YW50cz8uZmlsZVVwbG9hZD8uaWNvblVybDtcclxuICBmaWxlVXBsb2FkQnRuID0gdGhpcy5jb25zdGFudHM/LmZpbGVVcGxvYWQ/LmJ1dHRvbnNbMF07XHJcbiAgYWxsb3dlZEZpbGVUeXBlRXJyb3JNZXNzYWdlID1cclxuICAgIHRoaXMuY29uc3RhbnRzPy5maWxlVXBsb2FkPy5tZXNzYWdlPy5lcnJvcj8uaW52YWxpZEZpbGVGb3JtYXQ7XHJcbiAgQElucHV0KCkgbWF4RmlsZVNpemVFcnJvck1lc3NhZ2UgPVxyXG4gICAgdGhpcy5jb25zdGFudHM/LmZpbGVVcGxvYWQ/Lm1lc3NhZ2U/LmVycm9yPy5pbnZhbGlkRmlsZVNpemU7XHJcbiAgYWxsb3dlZEZpbGVUeXBlc0FuZFNpemVUZXh0ID0gJyc7XHJcbiAgY29uZmlnITogRmllbGRDb25maWc7XHJcbiAgZ3JvdXAhOiBGb3JtR3JvdXA7XHJcbiAgaXNWYWxpZEZpbGVUeXBlID0gZmFsc2U7XHJcbiAgaXNWYWxpZEZpbGVTaXplID0gZmFsc2U7XHJcbiAgaXNWYWxpZE1heEZpbGVVcGxvYWRMaW1pdCA9IGZhbHNlO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgc2VsZWN0ZWRGaWxlczogRmlsZUxpc3QgfCBGaWxlIHwgYW55ID0gW107XHJcbiAgc2VsZWN0ZWRGaWxlTmFtZXMgPSAnJztcclxuICBpc0Zvcm1GaWVsZCA9IGZhbHNlO1xyXG4gIHRvdGFsU2l6ZSA9IDA7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICB1cGxvYWRlZEZpbGVzOiBGaWxlTGlzdCB8IEZpbGUgfCBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBhY3Rpb25CdXR0b25BbGlnbiE6IEFsaWduVHlwZTtcclxuICBhbGlnbm1lbnRUeXBlID0gQWxpZ25UeXBlO1xyXG4gIGlzVXBsb2FkQnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWUgPSAnZmlsZVVwbG9hZCc7XHJcbiAgQElucHV0KCkgaXNGaWxlU2VsZWN0ZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzdXBwb3J0TWVzc2FnZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBhbGxvd2VkRmlsZVR5cGVzOiBBbGxvd2VkRmlsZVR5cGVzW10gPSBbXTtcclxuICBASW5wdXQoKSBpc011bHRpRmlsZVVwbG9hZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzVXBsb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZpbGVVcGxvYWRIZWFkaW5nITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlzQWxsb3dBbnlGaWxlVHlwZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFsaWduQnJvd3NlZEZpbGVzID0gQWxpZ25Ccm93c2VkRmlsZXMuREVGQVVMVDtcclxuICBASW5wdXQoKSBpc1VwbG9hZEJ1dHRvbk5lZWRlZCA9IGZhbHNlO1xyXG4gIC8vIERlZmF1bHQgbWF4aW11bSBhbGxvd2VkIHVwbG9hZCBmaWxlIHNpemUgaXMgMm1iLlxyXG4gIEBJbnB1dCgpIG1heFVwbG9hZEZpbGVTaXplID0gMjtcclxuICBwcml2YXRlIHVwbG9hZGVkU2l6ZVZhbHVlID0gMDtcclxuICBASW5wdXQoKSBhbGlnbkZpbGVVcGxvYWRFcnJvck1lc3NhZ2VUbyA9IEFsaWduVHlwZS5CT1RUT007XHJcbiAgQElucHV0KCkgbWF4RmlsZXNVcGxvYWRlZE9uY2U6IG51bWJlciA9XHJcbiAgICB0aGlzLmNvbnN0YW50cz8uZmlsZVVwbG9hZD8ubGltaXQ/Lm1heEZpbGVzVXBsb2FkZWRPbmNlO1xyXG4gIEBJbnB1dCgpIG1heEZpbGVzVXBsb2FkTGltaXRFcnJvck1lc3NhZ2UgPSAnJztcclxuICBwcml2YXRlIF9maWxlVXBsb2FkU3RhdHVzITogRmlsZVVwbG9hZFN0YXR1cztcclxuXHJcbiAgQElucHV0KCkgZ2V0IGZpbGVVcGxvYWRTdGF0dXMoKTogRmlsZVVwbG9hZFN0YXR1cyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsZVVwbG9hZFN0YXR1cztcclxuICB9XHJcbiAgc2V0IGZpbGVVcGxvYWRTdGF0dXModmFsdWU6IEZpbGVVcGxvYWRTdGF0dXMpIHtcclxuICAgIHRoaXMuX2ZpbGVVcGxvYWRTdGF0dXMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHVwbG9hZGVkU2l6ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudXBsb2FkZWRTaXplVmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgdXBsb2FkZWRTaXplKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMudXBsb2FkZWRTaXplVmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcbiAgX2ZpbGVEb3dubG9hZENvbmZpZyE6IEZpbGVEb3dubG9hZENvbmZpZztcclxuICBASW5wdXQoKVxyXG4gIHNldCBmaWxlRG93bmxvYWRDb25maWcodmFsdWU6IEZpbGVEb3dubG9hZENvbmZpZykge1xyXG4gICAgdGhpcy5fZmlsZURvd25sb2FkQ29uZmlnID0gdmFsdWU7XHJcbiAgfVxyXG4gIGdldCBmaWxlRG93bmxvYWRDb25maWcoKTogRmlsZURvd25sb2FkQ29uZmlnIHtcclxuICAgIHJldHVybiB0aGlzLl9maWxlRG93bmxvYWRDb25maWc7XHJcbiAgfVxyXG4gIEBPdXRwdXQoKSB1cGxvYWRTZWxlY3RlZEZpbGVzID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlIHwgRmlsZUxpc3Q+KCk7XHJcbiAgQE91dHB1dCgpIGRvd25sb2FkU2VsZWN0ZWRGaWxlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlIHwgRG93bmxvYWRGaWxlPigpO1xyXG4gIGFwaUJhc2VVcmwhOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZm9ybVV0aWxpdHlTZXJ2aWNlOiBGb3JtVXRpbGl0eVNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBmaWxlVXBsb2FkU2VydmljZTogRmlsZVVwbG9hZFNlcnZpY2UgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgKSB7fVxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIGNvbXBvbmVudCBwcm9wZXJ0aWVzIGFuZCByZXRyaWV2ZXMgY29uZmlndXJhdGlvbi5cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Zvcm1GaWVsZCA9ICEhdGhpcy5jb25maWc7XHJcbiAgICB0aGlzLmFwaUJhc2VVcmwgPSB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLmdldEFwaUJhc2VVcmwoKTtcclxuICAgIHRoaXMuY29uZmlnID1cclxuICAgICAgdGhpcy5jb25maWcgPz9cclxuICAgICAgdGhpcy5mb3JtVXRpbGl0eVNlcnZpY2UuZ2V0Rm9ybUZpZWxkQ29uZmlnKFxyXG4gICAgICAgICdmaWxlVXBsb2FkJyxcclxuICAgICAgICBGb3JtQ29udHJvbFR5cGUuRklMRV9VUExPQURcclxuICAgICAgKTtcclxuICAgIHRoaXMuZ3JvdXAgPVxyXG4gICAgICB0aGlzLmdyb3VwID8/IHRoaXMuZm9ybVV0aWxpdHlTZXJ2aWNlLmdldEZvcm1Hcm91cCgnZmlsZVVwbG9hZCcpO1xyXG4gICAgdGhpcy5jb25maWcuc3VwcG9ydE1lc3NhZ2UgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uc3VwcG9ydE1lc3NhZ2UgPz8gdGhpcy5zdXBwb3J0TWVzc2FnZTtcclxuICAgIHRoaXMuaXNNdWx0aUZpbGVVcGxvYWQgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uaXNNdWx0aUZpbGVVcGxvYWQgPz8gdGhpcy5pc011bHRpRmlsZVVwbG9hZDtcclxuICAgIHRoaXMubWF4VXBsb2FkRmlsZVNpemUgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8ubWF4VXBsb2FkRmlsZVNpemUgPz8gdGhpcy5tYXhVcGxvYWRGaWxlU2l6ZTtcclxuICAgIHRoaXMuYWxsb3dlZEZpbGVUeXBlcyA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5hbGxvd2VkRmlsZVR5cGVzID8/IHRoaXMuYWxsb3dlZEZpbGVUeXBlcztcclxuICAgIHRoaXMuaXNBbGxvd0FueUZpbGVUeXBlID1cclxuICAgICAgdGhpcy5jb25maWc/LmlzQWxsb3dBbnlGaWxlVHlwZSA/PyB0aGlzLmlzQWxsb3dBbnlGaWxlVHlwZTtcclxuICAgIHRoaXMuYWxpZ25Ccm93c2VkRmlsZXMgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uYWxpZ25Ccm93c2VkRmlsZXMgPz8gdGhpcy5hbGlnbkJyb3dzZWRGaWxlcztcclxuICAgIHRoaXMuaXNVcGxvYWRCdXR0b25OZWVkZWQgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uaXNVcGxvYWRCdXR0b25OZWVkZWQgPz8gdGhpcy5pc1VwbG9hZEJ1dHRvbk5lZWRlZDtcclxuICAgIHRoaXMuYWN0aW9uQnV0dG9uQWxpZ24gPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uYWN0aW9uQnV0dG9uQWxpZ24gPz8gdGhpcy5hY3Rpb25CdXR0b25BbGlnbjtcclxuICAgIHRoaXMuYWxpZ25GaWxlVXBsb2FkRXJyb3JNZXNzYWdlVG8gPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uYWxpZ25GaWxlVXBsb2FkRXJyb3JNZXNzYWdlVG8gPz9cclxuICAgICAgdGhpcy5hbGlnbkZpbGVVcGxvYWRFcnJvck1lc3NhZ2VUbztcclxuICAgIHRoaXMuZ2V0QWxsb3dlZEZpbGVGb3JtYXRTaXplTWVzc2FnZSgpO1xyXG4gICAgdGhpcy5maWxlVXBsb2FkSGVhZGluZyA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5maWxlVXBsb2FkSGVhZGluZyA/P1xyXG4gICAgICB0aGlzLmZpbGVVcGxvYWRIZWFkaW5nID8/XHJcbiAgICAgIHRoaXMuZmlsZVVwbG9hZExhYmVsLmZpbGVVcGxvYWQ7XHJcbiAgICB0aGlzLmNvbmZpZy5hbGxvd2VkRmlsZVR5cGVFcnJvck1lc3NhZ2UgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uYWxsb3dlZEZpbGVUeXBlRXJyb3JNZXNzYWdlID8/XHJcbiAgICAgIHRoaXMuYWxsb3dlZEZpbGVUeXBlRXJyb3JNZXNzYWdlO1xyXG4gICAgdGhpcy5jb25maWcubWF4RmlsZVNpemVFcnJvck1lc3NhZ2UgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8ubWF4RmlsZVNpemVFcnJvck1lc3NhZ2UgPz8gdGhpcy5tYXhGaWxlU2l6ZUVycm9yTWVzc2FnZTtcclxuICAgIHRoaXMuaXNGaWxlU2VsZWN0ZWQgPSB0aGlzLmNvbmZpZz8uaXNGaWxlU2VsZWN0ZWQgPz8gdGhpcy5pc0ZpbGVTZWxlY3RlZDtcclxuICAgIHRoaXMubWF4RmlsZXNVcGxvYWRlZE9uY2UgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8ubWF4RmlsZXNVcGxvYWRlZE9uY2UgPz8gdGhpcy5tYXhGaWxlc1VwbG9hZGVkT25jZTtcclxuICAgIHRoaXMubWF4RmlsZXNVcGxvYWRMaW1pdEVycm9yTWVzc2FnZSA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5tYXhGaWxlc1VwbG9hZExpbWl0RXJyb3JNZXNzYWdlID8/XHJcbiAgICAgIHRoaXMubWF4RmlsZXNVcGxvYWRMaW1pdEVycm9yTWVzc2FnZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRm9ybWF0cyBhbGxvd2VkIGZpbGUgZm9ybWF0IGFuZCBzaXplIG1lc3NhZ2UgaW4gcmVxdWlyZWQgZm9ybWF0LlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0QWxsb3dlZEZpbGVGb3JtYXRTaXplTWVzc2FnZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN1cHBvcnRlZEZpbGVGb3JtYXRUZXh0ID0gdGhpcy5hbGxvd2VkRmlsZVR5cGVzLmpvaW4oJywgJyk7XHJcbiAgICB0aGlzLmFsbG93ZWRGaWxlVHlwZXNBbmRTaXplVGV4dCA9IGAke3RoaXMuZmlsZVVwbG9hZExhYmVsPy5hbGxvd2VkRmlsZVNpemUxfVxyXG4gICAgJHt0aGlzLm1heFVwbG9hZEZpbGVTaXplfWA7XHJcbiAgICBpZiAodGhpcy5pc011bHRpRmlsZVVwbG9hZCkge1xyXG4gICAgICB0aGlzLmFsbG93ZWRGaWxlVHlwZXNBbmRTaXplVGV4dCArPSBgICR7dGhpcy5jb25zdGFudHM/LmZpbGVVcGxvYWQ/LmxhYmVsPy5tYn1gO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmlzQWxsb3dBbnlGaWxlVHlwZSkge1xyXG4gICAgICB0aGlzLmFsbG93ZWRGaWxlVHlwZXNBbmRTaXplVGV4dCArPSBgJHt0aGlzLmZpbGVVcGxvYWRMYWJlbD8uYWxsb3dlZEZpbGVTaXplMn0gJHt0aGlzLmZpbGVVcGxvYWRMYWJlbD8uYWxsb3dlZEZpbGVGb3JtYXR9ICR7c3VwcG9ydGVkRmlsZUZvcm1hdFRleHR9LmA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIHNlbGVjdGVkIGZpbGUocykgYW5kIGVtaXRzIEZpbGVVcGxvYWQgZXZlbnQgZW1pdHRlciBmb3IgdXBsb2FkaW5nIHRoZSBmaWxlKHMpLlxyXG4gICAqIEBwYXJhbSB7KEZpbGUgfCBGaWxlTGlzdCl9IGZpbGVcclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEZpbGUoZmlsZTogRmlsZSB8IEZpbGVMaXN0KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsZXMgPSBbXTtcclxuICAgIHRoaXMuZmlsZVVwbG9hZFN0YXR1cy5hbHJlYWR5RXhpc3RzRmlsZXMgPSBbXTtcclxuICAgIHRoaXMuZmlsZVVwbG9hZFN0YXR1cy5maWxlc05hbWVzVXBsb2FkRmFpbGVkID0gW107XHJcbiAgICB0aGlzLmZpbGVVcGxvYWRTdGF0dXMubm9PZkZpbGVzVXBsb2FkZWRTdWNjZXNzZnVsbHkgPSAwO1xyXG4gICAgY29uc3QgZmlsZVVwbG9hZEZvcm1Db250cm9sID0gdGhpcy5ncm91cD8uZ2V0KFxyXG4gICAgICB0aGlzLmNvbmZpZz8uY29udHJvbE5hbWUgPz8gJ2ZpbGVVcGxvYWQnXHJcbiAgICApO1xyXG4gICAgaWYgKGZpbGVVcGxvYWRGb3JtQ29udHJvbCkge1xyXG4gICAgICBmaWxlVXBsb2FkRm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzTXVsdGlGaWxlVXBsb2FkKSB7XHJcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLnZhbGlkYXRlRmlsZShmaWxlKTtcclxuICAgICAgdGhpcy5pc0ZpbGVTZWxlY3RlZCA9IGlzVmFsaWQ7XHJcbiAgICAgIGlmIChpc1ZhbGlkKSB7XHJcbiAgICAgICAgaWYgKGZpbGUpIHtcclxuICAgICAgICAgIE9iamVjdC52YWx1ZXMoZmlsZSkuZm9yRWFjaCgoZmlsZUl0ZW06IEZpbGUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGVzPy5wdXNoKGZpbGVJdGVtKTtcclxuICAgICAgICAgICAgdGhpcy50b3RhbFNpemUgKz0gZmlsZUl0ZW0uc2l6ZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRGaWxlc05hbWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGVzPy5mb3JFYWNoKChmaWxlOiBGaWxlLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICBzZWxlY3RlZEZpbGVzTmFtZXMucHVzaChmaWxlLm5hbWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlTmFtZXMgPSBzZWxlY3RlZEZpbGVzTmFtZXM/LmpvaW4oJywgJykudG9TdHJpbmcoKTtcclxuICAgICAgICB0aGlzLmdyb3VwXHJcbiAgICAgICAgICAuZ2V0KHRoaXMuY29uZmlnPy5jb250cm9sTmFtZSlcclxuICAgICAgICAgID8uc2V0VmFsdWUodGhpcy5zZWxlY3RlZEZpbGVOYW1lcyk7XHJcbiAgICAgICAgdGhpcy5maWxlVXBsb2FkQnRuLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNGb3JtRmllbGQpXHJcbiAgICAgICAgICB0aGlzLnVwbG9hZFNlbGVjdGVkRmlsZXM/LmVtaXQodGhpcy5zZWxlY3RlZEZpbGVzKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZmlsZUl0ZW0gPSBPYmplY3QudmFsdWVzKGZpbGUpWzBdO1xyXG4gICAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy52YWxpZGF0ZUZpbGUoZmlsZUl0ZW0pO1xyXG4gICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgIHRoaXMuaXNGaWxlU2VsZWN0ZWQgPSBpc1ZhbGlkO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlTmFtZXMgPSBmaWxlSXRlbS5uYW1lO1xyXG4gICAgICAgIHRoaXMudG90YWxTaXplID0gZmlsZUl0ZW0uc2l6ZTtcclxuICAgICAgICB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlPy5jb252ZXJ0RmlsZVRvQnl0ZUFycmF5KGZpbGVJdGVtKTtcclxuICAgICAgICB0aGlzLmdyb3VwXHJcbiAgICAgICAgICAuZ2V0KHRoaXMuY29uZmlnLmNvbnRyb2xOYW1lKVxyXG4gICAgICAgICAgPy5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkRmlsZU5hbWVzKTtcclxuICAgICAgICBpZiAodGhpcy5pc0Zvcm1GaWVsZCkgdGhpcy51cGxvYWRTZWxlY3RlZEZpbGVzLmVtaXQoZmlsZUl0ZW0pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlcyA9IGZpbGU7XHJcbiAgICAgICAgdGhpcy5maWxlVXBsb2FkQnRuLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHRoZSBzZWxlY3RlZCBmaWxlKHMpIGZvcm1hdCBhbmQgc2l6ZS5cclxuICAgKiBAcGFyYW0geyhGaWxlIHwgRmlsZUxpc3QpfSBmaWxlXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHZhbGlkYXRlRmlsZShmaWxlOiBGaWxlIHwgRmlsZUxpc3QpOiBib29sZWFuIHtcclxuICAgIHRoaXMuaXNWYWxpZEZpbGVUeXBlID0gIXRoaXMuaXNBbGxvd0FueUZpbGVUeXBlXHJcbiAgICAgID8gdGhpcy5maWxlVXBsb2FkU2VydmljZS52YWxpZGF0ZUZpbGVUeXBlcyhcclxuICAgICAgICAgIGZpbGUsXHJcbiAgICAgICAgICB0aGlzLmFsbG93ZWRGaWxlVHlwZXMsXHJcbiAgICAgICAgICB0aGlzLmlzTXVsdGlGaWxlVXBsb2FkXHJcbiAgICAgICAgKVxyXG4gICAgICA6IHRydWU7XHJcbiAgICBpZiAodGhpcy5pc011bHRpRmlsZVVwbG9hZCkge1xyXG4gICAgICB0aGlzLmlzVmFsaWRNYXhGaWxlVXBsb2FkTGltaXQgPVxyXG4gICAgICAgIE9iamVjdC52YWx1ZXMoZmlsZSkubGVuZ3RoIDw9XHJcbiAgICAgICAgdGhpcy5jb25zdGFudHM/LmZpbGVVcGxvYWQ/LmxpbWl0Py5tYXhGaWxlc1VwbG9hZGVkT25jZTtcclxuICAgICAgaWYgKCF0aGlzLmlzVmFsaWRNYXhGaWxlVXBsb2FkTGltaXQpIHtcclxuICAgICAgICB0aGlzLmdyb3VwPy5nZXQodGhpcy5jb25maWc/LmNvbnRyb2xOYW1lKT8uc2V0RXJyb3JzKHtcclxuICAgICAgICAgIG1heEZpbGVzVXBsb2FkTGltaXRSZWFjaGVkOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmlzVmFsaWRGaWxlVHlwZSkge1xyXG4gICAgICB0aGlzLmdyb3VwPy5nZXQodGhpcy5jb25maWc/LmNvbnRyb2xOYW1lKT8uc2V0RXJyb3JzKHtcclxuICAgICAgICBpbnZhbGlkRmlsZVR5cGU6IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzVmFsaWRGaWxlU2l6ZSA9IHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UudmFsaWRhdGVGaWxlU2l6ZShcclxuICAgICAgZmlsZSxcclxuICAgICAgdGhpcy5tYXhVcGxvYWRGaWxlU2l6ZSxcclxuICAgICAgdGhpcy5pc011bHRpRmlsZVVwbG9hZFxyXG4gICAgKTtcclxuICAgIGlmICghdGhpcy5pc1ZhbGlkRmlsZVNpemUpIHtcclxuICAgICAgdGhpcy5ncm91cD8uZ2V0KHRoaXMuY29uZmlnPy5jb250cm9sTmFtZSk/LnNldEVycm9ycyh7XHJcbiAgICAgICAgbWF4RmlsZVNpemU6IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSW5pdGlhdGVzIHRoZSBmaWxlIHVwbG9hZCBwcm9jZXNzIGZvciBpbmRlcGVuZGVudCBmaWxlIHVwbG9hZCBjb21wb25lbnQuXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBvblVwbG9hZCgpOiB2b2lkIHtcclxuICAgIHRoaXMudXBsb2FkU2VsZWN0ZWRGaWxlcy5lbWl0KHRoaXMuc2VsZWN0ZWRGaWxlcyk7XHJcbiAgICBpZiAodGhpcy5maWxlVXBsb2FkU2VydmljZT8uZ2V0RmlsZVVwbG9hZFN0YXR1cygpKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IHRoaXMuc2VsZWN0ZWRGaWxlcztcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ2xlYXJzIHRoZSBmb3JtIGdyb3VwIGNvbnRyb2wgdmFsdWUgb2YgdHlwZSBpbnB1dCBhbmQgcmVzZXRzIG90aGVyIGZpbGUgdXBsb2FkIHByb3BlcnRpZXMuXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICByZXNldFVwbG9hZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UuY2xlYXJGaWxlQnl0ZUFycmF5KCk7XHJcbiAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSBbXTtcclxuICAgIHRoaXMuaXNVcGxvYWRJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsZU5hbWVzID0gJyc7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsZXMgPSBbXTtcclxuICAgIHRoaXMuaXNGaWxlU2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuZ3JvdXAuZ2V0KHRoaXMuY29uZmlnPy5jb250cm9sTmFtZSk/LnNldFZhbHVlKCcnKTtcclxuICAgIHRoaXMuZmlsZVVwbG9hZEJ0bi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgdGhlIHNlbGVjdGVkIGZpbGUgZnJvbSB0aGUgdXBsb2FkZWQgZmlsZXMgbGlzdC5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRGVsZXRlRmlsZShmaWxlOiBGaWxlLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvdGFsU2l6ZSA9IDA7XHJcbiAgICB0aGlzLnVwbG9hZGVkRmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRm9yIHRhYiBrZXkga2V5ZG93biBldmVudCBpdCBwYXNzZXMgZXZlbnQgYW5kIHJlc3RyaWN0cyBvdGhlciBrZXlzIGZyb20ga2V5Ym9hcmQuXHJcbiAgICogQHBhcmFtIHtLZXlib2FyZEV2ZW50fSBldmVudCAtS2V5ZG93biBldmVudCBvYmplY3QuXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5rZXkgIT09ICdUYWInKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBFbWl0cyBmaWxlIGRvd25sb2FkIGV2ZW50IGVtaXR0ZXIuXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBkb3dubG9hZEZpbGUoZmlsZTogRmlsZSB8IERvd25sb2FkRmlsZSk6IHZvaWQge1xyXG4gICAgdGhpcy5kb3dubG9hZFNlbGVjdGVkRmlsZS5lbWl0KGZpbGUpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZmlsZSBsaXN0LlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxyXG4gICAqIEByZXR1cm4geyhudW1iZXIgfCBzdHJpbmcpfVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIpOiBudW1iZXIgfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGluZGV4O1xyXG4gIH1cclxuICAvKipcclxuICAgKiBUcmlnZ2VycyBhbmQgb3BlbnMgdGhlIGZpbGUgYnJvd3NlIHdpbmRvdyB3aGVuIHRoZSBCcm93c2UgYnV0dG9uIGlzIGNsaWNrZWQuXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBmaWxlQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVGaWVsZC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGZhaWxlZCBmaWxlIG5hbWVzIHdpdGggY29tbWEgc2VwYXJhdGlvbi5cclxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBmaWxlTmFtZXNcclxuICAgKiBAcmV0dXJuIHsqfSAge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGRpc3BsYXlGaWxlTmFtZXMoZmlsZU5hbWVzOiBzdHJpbmdbXSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZmlsZU5hbWVzICYmIGZpbGVOYW1lcy5sZW5ndGggPyBmaWxlTmFtZXMuam9pbignLCcpIDogJyc7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgdGhlIHVuc2VsZWN0ZWQgZmlsZSBmcm9tIHRoZSBicm93c2VkIG9yIHNlbGVjdGVkIGZpbGVzIGFuZCBlbWl0cyB1cGxvYWRTZWxlY3RlZEZpbGVzIGV2ZW50IHdpdGggdGhlIHNlbGVjdGVkIGZpbGVzLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcmVtb3ZlRmlsZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGNvbnN0IGZpbGVOYW1lczogc3RyaW5nW10gPSB0aGlzLnNlbGVjdGVkRmlsZU5hbWVzLnNwbGl0KCcsJyk7XHJcbiAgICBmaWxlTmFtZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWxlTmFtZXMgPSBmaWxlTmFtZXMuam9pbignLCcpO1xyXG4gICAgdGhpcy51cGxvYWRTZWxlY3RlZEZpbGVzLmVtaXQodGhpcy5zZWxlY3RlZEZpbGVzKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMucmVzZXRVcGxvYWQoKTtcclxuICAgICAgdGhpcy5maWxlVXBsb2FkU3RhdHVzLm5vT2ZGaWxlc1VwbG9hZGVkU3VjY2Vzc2Z1bGx5ID0gMDtcclxuICAgICAgdGhpcy5maWxlVXBsb2FkU3RhdHVzLmZpbGVzTmFtZXNVcGxvYWRGYWlsZWQgPSBbXTtcclxuICAgICAgdGhpcy5maWxlVXBsb2FkU3RhdHVzLmFscmVhZHlFeGlzdHNGaWxlcyA9IFtdO1xyXG4gICAgICB0aGlzLmNhbkVuYWJsZVVwbG9hZEJ1dHRvbih0cnVlKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogRGlzYWJsZXMgdGhlIGZpbGUgdXBsb2FkIGJ1dHRvbi5cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGRpc2FibGVVcGxvYWRCdXR0b24oKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNVcGxvYWRCdXR0b25EaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmNhbkVuYWJsZVVwbG9hZEJ1dHRvbih0cnVlKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgZmlsZSB1cGxvYWQgYnV0dG9uLlxyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBjYW5FbmFibGVVcGxvYWRCdXR0b24oZW5hYmxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzVXBsb2FkQnV0dG9uRGlzYWJsZWQgPSBlbmFibGU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEJhc2VkIG9uIGlzTXVsdGlGaWxlVXBsb2FkIGZsYWcgcmV0dXJuIGZpbGVzIHRvIGRvd25sb2FkLlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0RmlsZXNUb0Rvd25sb2FkKCk6IERvd25sb2FkRmlsZVtdIHtcclxuICAgIGlmICh0aGlzLmlzTXVsdGlGaWxlVXBsb2FkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpbGVVcGxvYWRTdGF0dXMudXBsb2FkZWRGaWxlcztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFRyYWNrQnlGdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2ggZmlsZSBpbiB0aGUgY29sbGVjdGlvbiBhbmQgcmV0dXJuIGEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoYXQgZmlsZS5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcclxuICAgKiBAcGFyYW0ge0ZpbGV9IGZpbGVcclxuICAgKiBAcmV0dXJuIHtGaWxlfVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdHJhY2tCeUZ1bmMoaW5kZXg6IG51bWJlciwgZmlsZTogRmlsZSk6IEZpbGUge1xyXG4gICAgcmV0dXJuIGZpbGU7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBbZm9ybUdyb3VwXT1cImdyb3VwXCJcclxuICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZFwiXHJcbiAgW25nQ2xhc3NdPVwiXHJcbiAgICBjb25maWcuaXNMYWJlbEFsaWduZWRMZWZ0XHJcbiAgICAgID8gJ2llZWVzYS1maWxlLXVwbG9hZF9fbGFiZWwtbGVmdCdcclxuICAgICAgOiAnaWVlZXNhLWZpbGUtdXBsb2FkX19sYWJlbC10b3AnXHJcbiAgXCJcclxuPlxyXG4gIDxtYXQtbGFiZWwgY2xhc3M9XCJpZWVlc2EtYm9keS1zbS0xNCBpZWVlc2EtZmlsZS11cGxvYWRfX2xhYmVsXCI+e3tcclxuICAgIGNvbmZpZy5sYWJlbFxyXG4gIH19PC9tYXQtbGFiZWw+XHJcbiAgPGllZWVzYS1maWxlLWRvd25sb2FkXHJcbiAgICBbZmlsZURvd25sb2FkQ29uZmlnXT1cImZpbGVEb3dubG9hZENvbmZpZ1wiXHJcbiAgICBbYXBpQmFzZVVybF09XCJhcGlCYXNlVXJsXCJcclxuICAgIFtkb3dubG9hZEZpbGVzXT1cImdldEZpbGVzVG9Eb3dubG9hZCgpXCJcclxuICAgIChkb3dubG9hZFNlbGVjdGVkRmlsZSk9XCJkb3dubG9hZEZpbGUoJGV2ZW50KVwiXHJcbiAgPjwvaWVlZXNhLWZpbGUtZG93bmxvYWQ+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3VwbG9hZCBwLTRcIlxyXG4gICAgaWVlZXNhRmlsZVVwbG9hZFxyXG4gICAgKGZpbGVEcm9wcGVkKT1cImdldEZpbGUoJGV2ZW50KVwiXHJcbiAgPlxyXG4gICAgPHAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3VwbG9hZF9faGVhZGluZyBtLTAgaWVlZXNhLWxhYmVsLWxnLWJvbGQtMTZcIj5cclxuICAgICAge3sgZmlsZVVwbG9hZEhlYWRpbmcgfX1cclxuICAgIDwvcD5cclxuICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3VwbG9hZF9fYnJvd3NlLWZpbGVzXCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgKGNsaWNrKT1cImZpbGVDbGljaygpXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fYnJvd3NlLWJ0biBtYXQtdGVydGlhcnktYnV0dG9uXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZpbGVVcGxvYWRBcmlhTGFiZWwuYnJvd3NlRmlsZXNcIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJmaWxlVXBsb2FkU3RhdHVzPy5pc1VwbG9hZGluZ1N0YXJ0XCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IGZpbGVVcGxvYWRMYWJlbC5icm93c2VGaWxlcyB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTXVsdGlGaWxlVXBsb2FkXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgICAjZmlsZUZpZWxkXHJcbiAgICAgICAgICAoY2hhbmdlKT1cImdldEZpbGUoJGFueSgkZXZlbnQpLnRhcmdldC5maWxlcylcIlxyXG4gICAgICAgICAgaGlkZGVuXHJcbiAgICAgICAgICBbYWNjZXB0XT1cImFsbG93ZWRGaWxlVHlwZXNcIlxyXG4gICAgICAgICAgW211bHRpcGxlXT1cInRydWVcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZpbGVVcGxvYWRTdGF0dXM/LmlzVXBsb2FkaW5nU3RhcnRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTXVsdGlGaWxlVXBsb2FkXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgICAjZmlsZUZpZWxkXHJcbiAgICAgICAgICAoY2hhbmdlKT1cImdldEZpbGUoJGFueSgkZXZlbnQpLnRhcmdldC5maWxlcylcIlxyXG4gICAgICAgICAgaGlkZGVuXHJcbiAgICAgICAgICBbYWNjZXB0XT1cImFsbG93ZWRGaWxlVHlwZXNcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZpbGVVcGxvYWRTdGF0dXM/LmlzVXBsb2FkaW5nU3RhcnRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPHBcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fYWxsb3dlZC1maWxlLXRleHQgbS0wIGllZWVzYS1sYWJlbC1tZC0xNFwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhbGxvd2VkRmlsZVR5cGVzQW5kU2l6ZVRleHRcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgYWxsb3dlZEZpbGVUeXBlc0FuZFNpemVUZXh0IH19XHJcbiAgICAgIDwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fdXBsb2FkLXdyYXBwZXIgZC1mbGV4XCJcclxuICAgICAgKm5nSWY9XCJpc0ZpbGVTZWxlY3RlZFwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImFsaWduQnJvd3NlZEZpbGVzXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RlZmF1bHQnXCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX191cGxvYWQtd3JhcHBlcl9faW5wdXQtZmllbGQgaWVlZXNhLWJvZHktbGctMTZcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cInNlbGVjdGVkRmlsZU5hbWVzXCJcclxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29uZmlnLnBsYWNlaG9sZGVyID8/ICcnXCJcclxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbmZpZy5jb250cm9sTmFtZVwiXHJcbiAgICAgICAgICAgICAgW25hbWVdPVwiY29uZmlnLmNvbnRyb2xOYW1lXCJcclxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxyXG4gICAgICAgICAgICAgICAgY29uZmlnLmFyaWFMYWJlbCA/PyBmaWxlVXBsb2FkQXJpYUxhYmVsLmZpbGVVcGxvYWRJbnB1dFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW2FyaWEtZGVzY3JpYmVkYnldPVwiY29uZmlnLmFyaWFEZXNjcmliZWRCeUlkID8/ICcnXCJcclxuICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3VwbG9hZC13cmFwcGVyLS1jbGVhci1pY29uLWJ0blwiXHJcbiAgICAgICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmaWxlVXBsb2FkQXJpYUxhYmVsLnJlbW92ZUZpbGVJY29uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVzZXRVcGxvYWQoKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLWNpcmNsZS14bWFyayBpZWVlc2EtaW5wdXQtZmllbGQtdXBsb2FkX19pY29uLS1jbGVhclwiXHJcbiAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fdXBsb2FkLXdyYXBwZXItLXVwbG9hZC1idG4gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgIFtpY29uQnV0dG9uXT1cImZpbGVVcGxvYWRCdG5cIlxyXG4gICAgICAgICAgICBbaXNMYWJlbE5lZWRlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwib25VcGxvYWQoKVwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzRm9ybUZpZWxkXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidib3R0b20nXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLWRpc3BsYXktYnJvd3NlZC1maWxlcy1ib3R0b21cIj5cclxuICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fcHJvZ3Jlc3NfX3RleHRcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZmlsZVVwbG9hZFN0YXR1cy5ub09mRmlsZXNVcGxvYWRlZFN1Y2Nlc3NmdWxseVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgZmlsZVVwbG9hZFN0YXR1cy5ub09mRmlsZXNVcGxvYWRlZFN1Y2Nlc3NmdWxseSArXHJcbiAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgZmlsZVVwbG9hZExhYmVsPy5vZiArXHJcbiAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRGaWxlcy5sZW5ndGggK1xyXG4gICAgICAgICAgICAgICAgICBcIiBcIiArXHJcbiAgICAgICAgICAgICAgICAgIGZpbGVVcGxvYWRMYWJlbD8uZmlsZXNVcGxvYWRlZFxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaWxlVXBsb2FkU3RhdHVzPy5pc1VwbG9hZGluZ1N0YXJ0XCI+XHJcbiAgICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHB0LTEgbS0wIGllZWVzYS1sYWJlbC1tZC0xNCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBmaWxlIG9mIHNlbGVjdGVkRmlsZXM7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGdW5jXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IGZpbGU/Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX191cGxvYWQtd3JhcHBlci0tY2xlYXItaWNvbi1idG5cIlxyXG4gICAgICAgICAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmlsZVVwbG9hZEFyaWFMYWJlbC5yZW1vdmVGaWxlSWNvblwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGaWxlKGkpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtY2lyY2xlLXhtYXJrIGllZWVzYS1pbnB1dC1maWVsZC11cGxvYWRfX2ljb24tLWNsZWFyXCJcclxuICAgICAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJmaWxlVXBsb2FkU3RhdHVzPy5maWxlc05hbWVzVXBsb2FkRmFpbGVkPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX19lcnJvcl9fdGV4dFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7eyBkaXNhYmxlVXBsb2FkQnV0dG9uKCkgfX1cclxuICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgZmlsZVVwbG9hZExhYmVsPy51cGxvYWRGb3IgK1xyXG4gICAgICAgICAgICAgICAgICBcIiBcIiArXHJcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXlGaWxlTmFtZXMoZmlsZVVwbG9hZFN0YXR1cy5maWxlc05hbWVzVXBsb2FkRmFpbGVkKSArXHJcbiAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgZmlsZVVwbG9hZExhYmVsPy51cGxvYWRFcnJvck1zZ1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAqbmdJZj1cImZpbGVVcGxvYWRTdGF0dXM/LmFscmVhZHlFeGlzdHNGaWxlcz8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fZXJyb3JfX3RleHRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgZGlzYWJsZVVwbG9hZEJ1dHRvbigpIH19XHJcbiAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWxlTmFtZXMoZmlsZVVwbG9hZFN0YXR1cy5hbHJlYWR5RXhpc3RzRmlsZXMpICtcclxuICAgICAgICAgICAgICAgICAgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgICBmaWxlVXBsb2FkTGFiZWw/LmZpbGVBbHJlYWR5RXhpc3RzXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRm9ybUZpZWxkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3Byb2dyZXNzXCIgKm5nSWY9XCJpc1VwbG9hZEluUHJvZ3Jlc3NcIj5cclxuICAgICAgICA8cCBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fcHJvZ3Jlc3NfX3RleHRcIj5cclxuICAgICAgICAgIHt7IGZpbGVVcGxvYWRMYWJlbD8udXBsb2FkUHJvZ3Jlc3MgfX1cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX19wcm9ncmVzcy0tYmFyXCJcclxuICAgICAgICAgIG1vZGU9XCJkZXRlcm1pbmF0ZVwiXHJcbiAgICAgICAgICBbdmFsdWVdPVwidXBsb2FkZWRTaXplXCJcclxuICAgICAgICA+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPGllZWVzYS1mb3JtLWVycm9yXHJcbiAgICAgICpuZ0lmPVwiYWxpZ25GaWxlVXBsb2FkRXJyb3JNZXNzYWdlVG8gPT09IGFsaWdubWVudFR5cGUuTUlERExFXCJcclxuICAgICAgW2Zvcm1Hcm91cF09XCJncm91cFwiXHJcbiAgICAgIFtjb25maWddPVwiY29uZmlnXCJcclxuICAgID48L2llZWVzYS1mb3JtLWVycm9yPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cImlzVXBsb2FkQnV0dG9uTmVlZGVkICYmIGlzRmlsZVNlbGVjdGVkXCJcclxuICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgJ2p1c3RpZnktY29udGVudC1lbmQnOiBhY3Rpb25CdXR0b25BbGlnbiA9PT0gYWxpZ25tZW50VHlwZS5MRUZULFxyXG4gICAgICAgICAgJ2p1c3RpZnktY29udGVudC1jZW50ZXInOiBhY3Rpb25CdXR0b25BbGlnbiA9PT0gYWxpZ25tZW50VHlwZS5NSURETEUsXHJcbiAgICAgICAgICAnanVzdGlmeS1jb250ZW50LXN0YXJ0JzogYWN0aW9uQnV0dG9uQWxpZ24gPT09IGFsaWdubWVudFR5cGUuUklHSFQsXHJcbiAgICAgICAgfVwiXHJcbiAgICA+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJtYXQtcHJpbWFyeS1idXR0b24gaWVlZXNhLWR5bmFtaWMtZm9ybV9fYWN0aW9ucy0tcmlnaHQtYnRuXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICBpc1VwbG9hZEJ1dHRvbkRpc2FibGVkIHx8XHJcbiAgICAgICAgICAhaXNGaWxlU2VsZWN0ZWQgfHxcclxuICAgICAgICAgIGZpbGVVcGxvYWRTdGF0dXM/LmlzVXBsb2FkaW5nU3RhcnRcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgZmlsZVVwbG9hZExhYmVsPy51cGxvYWQgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxpZWVlc2EtZm9ybS1lcnJvclxyXG4gICpuZ0lmPVwiYWxpZ25GaWxlVXBsb2FkRXJyb3JNZXNzYWdlVG8gPT09IGFsaWdubWVudFR5cGUuQk9UVE9NXCJcclxuICBbZm9ybUdyb3VwXT1cImdyb3VwXCJcclxuICBbY29uZmlnXT1cImNvbmZpZ1wiXHJcbj48L2llZWVzYS1mb3JtLWVycm9yPlxyXG48aWVlZXNhLWZvcm0tc3VwcG9ydC10ZXh0XHJcbiAgW2Zvcm1Hcm91cF09XCJncm91cFwiXHJcbiAgW2NvbmZpZ109XCJjb25maWdcIlxyXG4+PC9pZWVlc2EtZm9ybS1zdXBwb3J0LXRleHQ+XHJcbiJdfQ==
|