@ieeesa-npm/presentation 0.29.4 → 0.29.5
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/components/file-upload/file-upload.component.mjs +6 -7
- package/fesm2022/ieeesa-npm-presentation.mjs +5 -6
- package/fesm2022/ieeesa-npm-presentation.mjs.map +1 -1
- package/lib/components/dynamic-form/dynamic-form.component.d.ts +1 -1
- package/lib/components/file-upload/file-upload.component.d.ts +4 -4
- 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/package.json +1 -1
|
@@ -384,27 +384,26 @@ export class FileUploadComponent {
|
|
|
384
384
|
event.target.value = '';
|
|
385
385
|
}
|
|
386
386
|
/**
|
|
387
|
-
* Removes file from selectedFiles
|
|
387
|
+
* Removes the file from selectedFiles once the file uploaded successfully to AWS S3.
|
|
388
388
|
* @param {File} file
|
|
389
389
|
* @memberof FileUploadComponent
|
|
390
390
|
*/
|
|
391
391
|
removeSelectedFileInUploadedFiles(fileName) {
|
|
392
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
393
392
|
const index = this.selectedFiles.findIndex(
|
|
394
393
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
395
394
|
(selectedFile) => selectedFile.name === fileName);
|
|
396
395
|
this.selectedFiles.splice(index, 1);
|
|
397
396
|
}
|
|
398
397
|
/**
|
|
399
|
-
*
|
|
398
|
+
* Returns the count of files selected for the upload.
|
|
400
399
|
* @return {number}
|
|
401
400
|
* @memberof FileUploadComponent
|
|
402
401
|
*/
|
|
403
|
-
|
|
402
|
+
getSelectedFileCount() {
|
|
404
403
|
return this.selectedFileNames.split(', ').length;
|
|
405
404
|
}
|
|
406
405
|
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 }); }
|
|
407
|
-
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", fileDownloadAndDeleteConfig: "fileDownloadAndDeleteConfig" }, 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 [fileDownloadAndDeleteConfig]=\"fileDownloadAndDeleteConfig\"\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 (click)=\"setEmptyValue($event)\"\r\n [ngClass]=\"'ieeesa-file-input'\"\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 (click)=\"setEmptyValue($event)\"\r\n [ngClass]=\"'ieeesa-file-input'\"\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 class=\"ieeesa-file-upload__progress__text\">\r\n {{\r\n fileUploadStatus.noOfFilesUploadedSuccessfully +\r\n \" \" +\r\n fileUploadLabel?.of +\r\n \" \" +\r\n displaySelectedFileNamesLength() +\r\n \" \" +\r\n fileUploadLabel?.filesUploaded\r\n }}\r\n </p>\r\n <ng-container\r\n *ngIf=\"\r\n (fileUploadStatus?.noOfFilesUploadedSuccessfully === 0 &&\r\n !fileUploadStatus.isUploadingStart) ||\r\n fileUploadStatus.isUploadingStart ||\r\n fileUploadStatus.noOfFilesUploadedSuccessfully > 0\r\n \"\r\n >\r\n <p\r\n class=\"d-flex pt-1 m-0 ieeesa-label-md-14 align-items-center ieeesa-file-name-display\"\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?.filesNameOfUploadFailed?.length\"\r\n class=\"ieeesa-file-upload__error__text\"\r\n >\r\n {{\r\n fileUploadLabel?.uploadFor +\r\n \" \" +\r\n displayFileNames(fileUploadStatus.filesNameOfUploadFailed) +\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 {{\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 !isFileSelected ||\r\n fileUploadStatus.isUploadingStart ||\r\n fileUploadStatus.noOfFilesUploadedSuccessfully > 0\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{color:#49454f!important}.ieeesa-file-upload .ieeesa-display-browsed-files-bottom ul li{list-style:none}.ieeesa-file-upload .ieeesa-display-browsed-files-bottom .ieeesa-file-name-display{height:2em}@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", "fileDownloadAndDeleteConfig", "isPublicAPI", "domainUrl", "apiBaseUrl"], outputs: ["downloadSelectedFile", "deleteSelectedFile"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
406
|
+
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", fileDownloadAndDeleteConfig: "fileDownloadAndDeleteConfig" }, 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 [fileDownloadAndDeleteConfig]=\"fileDownloadAndDeleteConfig\"\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 (click)=\"setEmptyValue($event)\"\r\n [ngClass]=\"'ieeesa-file-input'\"\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 (click)=\"setEmptyValue($event)\"\r\n [ngClass]=\"'ieeesa-file-input'\"\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 class=\"ieeesa-file-upload__progress__text\">\r\n {{\r\n fileUploadStatus.noOfFilesUploadedSuccessfully +\r\n \" \" +\r\n fileUploadLabel?.of +\r\n \" \" +\r\n getSelectedFileCount() +\r\n \" \" +\r\n fileUploadLabel?.filesUploaded\r\n }}\r\n </p>\r\n <ng-container>\r\n <p\r\n class=\"d-flex pt-1 m-0 ieeesa-label-md-14 align-items-center ieeesa-display-selected-files\"\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?.filesNameOfUploadFailed?.length\"\r\n class=\"ieeesa-file-upload__error__text\"\r\n >\r\n {{\r\n fileUploadLabel?.uploadFor +\r\n \" \" +\r\n displayFileNames(fileUploadStatus.filesNameOfUploadFailed) +\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 {{\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 !isFileSelected ||\r\n fileUploadStatus.isUploadingStart ||\r\n fileUploadStatus.noOfFilesUploadedSuccessfully > 0\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{color:#49454f!important}.ieeesa-file-upload .ieeesa-display-browsed-files-bottom ul li{list-style:none}.ieeesa-file-upload .ieeesa-display-browsed-files-bottom .ieeesa-display-selected-files{height:2em}@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", "fileDownloadAndDeleteConfig", "isPublicAPI", "domainUrl", "apiBaseUrl"], outputs: ["downloadSelectedFile", "deleteSelectedFile"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
408
407
|
}
|
|
409
408
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileUploadComponent, decorators: [{
|
|
410
409
|
type: Component,
|
|
@@ -420,7 +419,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
420
419
|
FileUploadDirective,
|
|
421
420
|
IconButtonComponent,
|
|
422
421
|
FileDownloadComponent,
|
|
423
|
-
], 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 [fileDownloadAndDeleteConfig]=\"fileDownloadAndDeleteConfig\"\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 (click)=\"setEmptyValue($event)\"\r\n [ngClass]=\"'ieeesa-file-input'\"\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 (click)=\"setEmptyValue($event)\"\r\n [ngClass]=\"'ieeesa-file-input'\"\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 class=\"ieeesa-file-upload__progress__text\">\r\n {{\r\n fileUploadStatus.noOfFilesUploadedSuccessfully +\r\n \" \" +\r\n fileUploadLabel?.of +\r\n \" \" +\r\n displaySelectedFileNamesLength() +\r\n \" \" +\r\n fileUploadLabel?.filesUploaded\r\n }}\r\n </p>\r\n <ng-container\r\n *ngIf=\"\r\n (fileUploadStatus?.noOfFilesUploadedSuccessfully === 0 &&\r\n !fileUploadStatus.isUploadingStart) ||\r\n fileUploadStatus.isUploadingStart ||\r\n fileUploadStatus.noOfFilesUploadedSuccessfully > 0\r\n \"\r\n >\r\n <p\r\n class=\"d-flex pt-1 m-0 ieeesa-label-md-14 align-items-center ieeesa-file-name-display\"\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?.filesNameOfUploadFailed?.length\"\r\n class=\"ieeesa-file-upload__error__text\"\r\n >\r\n {{\r\n fileUploadLabel?.uploadFor +\r\n \" \" +\r\n displayFileNames(fileUploadStatus.filesNameOfUploadFailed) +\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 {{\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 !isFileSelected ||\r\n fileUploadStatus.isUploadingStart ||\r\n fileUploadStatus.noOfFilesUploadedSuccessfully > 0\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{color:#49454f!important}.ieeesa-file-upload .ieeesa-display-browsed-files-bottom ul li{list-style:none}.ieeesa-file-upload .ieeesa-display-browsed-files-bottom .ieeesa-file-name-display{height:2em}@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"] }]
|
|
422
|
+
], 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 [fileDownloadAndDeleteConfig]=\"fileDownloadAndDeleteConfig\"\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 (click)=\"setEmptyValue($event)\"\r\n [ngClass]=\"'ieeesa-file-input'\"\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 (click)=\"setEmptyValue($event)\"\r\n [ngClass]=\"'ieeesa-file-input'\"\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 class=\"ieeesa-file-upload__progress__text\">\r\n {{\r\n fileUploadStatus.noOfFilesUploadedSuccessfully +\r\n \" \" +\r\n fileUploadLabel?.of +\r\n \" \" +\r\n getSelectedFileCount() +\r\n \" \" +\r\n fileUploadLabel?.filesUploaded\r\n }}\r\n </p>\r\n <ng-container>\r\n <p\r\n class=\"d-flex pt-1 m-0 ieeesa-label-md-14 align-items-center ieeesa-display-selected-files\"\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?.filesNameOfUploadFailed?.length\"\r\n class=\"ieeesa-file-upload__error__text\"\r\n >\r\n {{\r\n fileUploadLabel?.uploadFor +\r\n \" \" +\r\n displayFileNames(fileUploadStatus.filesNameOfUploadFailed) +\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 {{\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 !isFileSelected ||\r\n fileUploadStatus.isUploadingStart ||\r\n fileUploadStatus.noOfFilesUploadedSuccessfully > 0\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{color:#49454f!important}.ieeesa-file-upload .ieeesa-display-browsed-files-bottom ul li{list-style:none}.ieeesa-file-upload .ieeesa-display-browsed-files-bottom .ieeesa-display-selected-files{height:2em}@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"] }]
|
|
424
423
|
}], ctorParameters: function () { return [{ type: i1.FormUtilityService }, { type: i2.FileUploadService }]; }, propDecorators: { fileField: [{
|
|
425
424
|
type: ViewChild,
|
|
426
425
|
args: ['fileField']
|
|
@@ -467,4 +466,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
467
466
|
}], downloadSelectedFile: [{
|
|
468
467
|
type: Output
|
|
469
468
|
}] } });
|
|
470
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc2VudGF0aW9uL3NyYy9saWIvY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxLQUFLLFNBQVMsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUd4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7Ozs7QUFHakY7Ozs7O0dBS0c7QUFxQkgsTUFBTSxPQUFPLG1CQUFtQjtJQThDOUIsSUFBYSxnQkFBZ0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksZ0JBQWdCLENBQUMsS0FBdUI7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFDSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksWUFBWSxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFDSSwyQkFBMkIsQ0FBQyxLQUFrQztRQUNoRSxJQUFJLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDO0lBQzVDLENBQUM7SUFDRCxJQUFJLDJCQUEyQjtRQUM3QixPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztJQUMzQyxDQUFDO0lBT0Q7SUFDRSwwQ0FBMEM7SUFDbkMsa0JBQXNDO0lBQzdDLDBDQUEwQztJQUNuQyxpQkFBb0MsQ0FBQyw2Q0FBNkM7O1FBRmxGLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFFdEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQTdFN0MsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN0QixvQkFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQztRQUNwRCx3QkFBbUIsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUM7UUFDNUQsc0JBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDO1FBQ3hELGtCQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELGdDQUEyQixHQUN6QixJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDO1FBQ3ZELDRCQUF1QixHQUM5QixJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FBQztRQUM5RCxnQ0FBMkIsR0FBRyxFQUFFLENBQUM7UUFHakMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsOEJBQXlCLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLDhEQUE4RDtRQUM5RCxrQkFBYSxHQUEwQixFQUFFLENBQUM7UUFDMUMsc0JBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDZCw4REFBOEQ7UUFDOUQsa0JBQWEsR0FBMEIsRUFBRSxDQUFDO1FBRTFDLGtCQUFhLEdBQUcsU0FBUyxDQUFDO1FBQzFCLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUN0QixvQkFBZSxHQUFHLFlBQVksQ0FBQztRQUMvQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUV2QixxQkFBZ0IsR0FBdUIsRUFBRSxDQUFDO1FBQzFDLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFM0IsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLHNCQUFpQixHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQztRQUM5Qyx5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDdEMsbURBQW1EO1FBQzFDLHNCQUFpQixHQUFHLENBQUMsQ0FBQztRQUN2QixzQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFDckIsa0NBQTZCLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUNqRCx5QkFBb0IsR0FDM0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixDQUFDO1FBQ2pELG9DQUErQixHQUFHLEVBQUUsQ0FBQztRQTBCcEMsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDMUQseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBRTlDLENBQUM7SUFRRCxDQUFDO0lBQ0o7OztPQUdHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLE1BQU07WUFDVCxJQUFJLENBQUMsTUFBTTtnQkFDWCxJQUFJLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQ3hDLFlBQVksRUFDWixlQUFlLENBQUMsV0FBVyxDQUM1QixDQUFDO1FBQ0osSUFBSSxDQUFDLEtBQUs7WUFDUixJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjO1lBQ3hCLElBQUksQ0FBQyxNQUFNLEVBQUUsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDckQsSUFBSSxDQUFDLGlCQUFpQjtZQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLGlCQUFpQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUMzRCxJQUFJLENBQUMsaUJBQWlCO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQzNELElBQUksQ0FBQyxnQkFBZ0I7WUFDbkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDekQsSUFBSSxDQUFDLGtCQUFrQjtZQUNyQixJQUFJLENBQUMsTUFBTSxFQUFFLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUM3RCxJQUFJLENBQUMsaUJBQWlCO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQzNELElBQUksQ0FBQyxvQkFBb0I7WUFDdkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFDakUsSUFBSSxDQUFDLGlCQUFpQjtZQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLGlCQUFpQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUMzRCxJQUFJLENBQUMsNkJBQTZCO1lBQ2hDLElBQUksQ0FBQyxNQUFNLEVBQUUsNkJBQTZCO2dCQUMxQyxJQUFJLENBQUMsNkJBQTZCLENBQUM7UUFDckMsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLGlCQUFpQjtZQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLGlCQUFpQjtnQkFDOUIsSUFBSSxDQUFDLGlCQUFpQjtnQkFDdEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQywyQkFBMkI7WUFDckMsSUFBSSxDQUFDLE1BQU0sRUFBRSwyQkFBMkI7Z0JBQ3hDLElBQUksQ0FBQywyQkFBMkIsQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QjtZQUNqQyxJQUFJLENBQUMsTUFBTSxFQUFFLHVCQUF1QixJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztRQUN2RSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDekUsSUFBSSxDQUFDLG9CQUFvQjtZQUN2QixJQUFJLENBQUMsTUFBTSxFQUFFLG9CQUFvQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUNqRSxJQUFJLENBQUMsK0JBQStCO1lBQ2xDLElBQUksQ0FBQyxNQUFNLEVBQUUsK0JBQStCO2dCQUM1QyxJQUFJLENBQUMsK0JBQStCLENBQUM7SUFDekMsQ0FBQztJQUNEOzs7T0FHRztJQUNILCtCQUErQjtRQUM3QixNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxnQkFBZ0I7TUFDMUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLDJCQUEyQixJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ2pGO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM1QixJQUFJLENBQUMsMkJBQTJCLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLGdCQUFnQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLElBQUksdUJBQXVCLEdBQUcsQ0FBQztTQUN4SjtJQUNILENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLElBQXFCO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHO1lBQ3RCLGtCQUFrQixFQUFFLEVBQUU7WUFDdEIsdUJBQXVCLEVBQUUsRUFBRTtZQUMzQiw2QkFBNkIsRUFBRSxDQUFDO1lBQ2hDLGdCQUFnQixFQUFFLEtBQUs7WUFDdkIsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLElBQUksRUFBRTtTQUMxRCxDQUFDO1FBQ0YsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FDM0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLElBQUksWUFBWSxDQUN6QyxDQUFDO1FBQ0YsSUFBSSxxQkFBcUIsRUFBRTtZQUN6QixxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNyQztRQUNELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUM7WUFDOUIsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsSUFBSSxJQUFJLEVBQUU7b0JBQ1IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFjLEVBQUUsRUFBRTt3QkFDN0MsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ25DLElBQUksQ0FBQyxTQUFTLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQztvQkFDbEMsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7YUFDRjtZQUVELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUU7Z0JBQzlCLE1BQU0sa0JBQWtCLEdBQWEsRUFBRSxDQUFDO2dCQUN4Qyw2RUFBNkU7Z0JBQzdFLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBVSxFQUFFLEtBQWEsRUFBRSxFQUFFO29CQUN4RCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNyQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNuRSxJQUFJLENBQUMsS0FBSztxQkFDUCxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUM7b0JBQzlCLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ3BDLElBQUksSUFBSSxDQUFDLFdBQVc7b0JBQ2xCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ3REO1NBQ0Y7YUFBTTtZQUNMLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QyxJQUFJLE9BQU8sRUFBRTtnQkFDWCxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQztnQkFDOUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDL0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsS0FBSztxQkFDUCxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7b0JBQzdCLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLElBQUksQ0FBQyxXQUFXO29CQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzlELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7YUFDckM7U0FDRjtJQUNILENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBQyxJQUFxQjtRQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtZQUM3QyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUN0QyxJQUFJLEVBQ0osSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQ3ZCO1lBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNULElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksQ0FBQyx5QkFBeUI7Z0JBQzVCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTTtvQkFDMUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixDQUFDO1lBQzFELElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEVBQUUsU0FBUyxDQUFDO29CQUNuRCwwQkFBMEIsRUFBRSxJQUFJO2lCQUNqQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUNGO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDekIsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsRUFBRSxTQUFTLENBQUM7Z0JBQ25ELGVBQWUsRUFBRSxJQUFJO2FBQ3RCLENBQUMsQ0FBQztZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FDNUQsSUFBSSxFQUNKLElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUN2QixDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDekIsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsRUFBRSxTQUFTLENBQUM7Z0JBQ25ELFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUMsQ0FBQztZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7O09BR0c7SUFDSCxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsRUFBRTtZQUNqRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDckMsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsSUFBVSxFQUFFLEtBQWE7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLEtBQW9CO1FBQzVCLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxLQUFLO1lBQUUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFDRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsSUFBK0I7UUFDMUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxTQUFTLENBQUMsS0FBYTtRQUNyQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsZ0JBQWdCLENBQUMsU0FBbUI7UUFDbEMsT0FBTyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2xFLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sU0FBUyxHQUFhLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyw2QkFBNkIsR0FBRyxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1NBQy9DO0lBQ0gsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxxQkFBcUIsQ0FBQyxNQUFlO1FBQ25DLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUM7SUFDdkMsQ0FBQztJQUNEOzs7T0FHRztJQUNILGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7U0FDNUM7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBQyxLQUFhLEVBQUUsSUFBVTtRQUNuQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsYUFBYSxDQUFDLEtBQVk7UUFDdkIsS0FBSyxDQUFDLE1BQTJCLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGlDQUFpQyxDQUFDLFFBQWdCO1FBQ2hELDhEQUE4RDtRQUM5RCxNQUFNLEtBQUssR0FBSSxJQUFJLENBQUMsYUFBdUMsQ0FBQyxTQUFTO1FBQ25FLDhEQUE4RDtRQUM5RCxDQUFDLFlBQWlCLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUN0RCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsOEJBQThCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbkQsQ0FBQzsrR0FsWlUsbUJBQW1CO21HQUFuQixtQkFBbUIsdW1DQzFEaEMsMHBSQXlPQSxzeFpEL0xJLFlBQVkseWhCQUNaLG1CQUFtQixvMkJBQ25CLGtCQUFrQixnSEFDbEIsa0JBQWtCLDJhQUNsQixjQUFjLDBXQUNkLGVBQWUseWFBQ2Ysd0JBQXdCLHdJQUN4QixvQkFBb0IseU5BQ3BCLG1CQUFtQiw0SUFDbkIsbUJBQW1CLHNJQUNuQixxQkFBcUI7OzRGQU1aLG1CQUFtQjtrQkFwQi9CLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLHFCQUFxQjtxQkFDdEIsaUJBR2MsaUJBQWlCLENBQUMsSUFBSTt5SUFHYixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBUWIsdUJBQXVCO3NCQUEvQixLQUFLO2dCQWVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLDZCQUE2QjtzQkFBckMsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsK0JBQStCO3NCQUF2QyxLQUFLO2dCQUdPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkFRRixZQUFZO3NCQURmLEtBQUs7Z0JBVUYsMkJBQTJCO3NCQUQ5QixLQUFLO2dCQU9JLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRm9ybUVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgRm9ybVN1cHBvcnRUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1zdXBwb3J0LXRleHQvZm9ybS1zdXBwb3J0LXRleHQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybVV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS11dGlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhcic7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpZWxkLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLWNvbnRyb2wtdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBBbGxvd2VkRmlsZVR5cGVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FsbG93ZWQtZmlsZS10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmlsZS11cGxvYWQuc2VydmljZSc7XHJcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbGlnbkJyb3dzZWRGaWxlcyB9IGZyb20gJy4uLy4uL21vZGVscy9hbGlnbi1icm93c2VkLWZpbGVzLm1vZGVsJztcclxuaW1wb3J0IHsgQWxpZ25UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FsaWduLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkU3RhdHVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbGUtdXBsb2FkLXN0YXR1cy5tb2RlbCc7XHJcbmltcG9ydCB7IEZpbGVEb3dubG9hZENvbXBvbmVudCB9IGZyb20gJy4uL2ZpbGUtZG93bmxvYWQvZmlsZS1kb3dubG9hZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWxlRG93bmxvYWRBbmREZWxldGVDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsZS1kb3dubG9hZC1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBEb3dubG9hZEF0dGFjaG1lbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZG93bmxvYWQtZmlsZS5tb2RlbCc7XHJcbi8qKlxyXG4gKiBQcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciB1cGxvYWRpbmcgZmlsZXMgdG8gYXdzIHMzIGJ1Y2tldC5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gKiBAaW1wbGVtZW50cyB7T25Jbml0fVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtZmlsZS11cGxvYWQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1FcnJvckNvbXBvbmVudCxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgRm9ybVN1cHBvcnRUZXh0Q29tcG9uZW50LFxyXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXHJcbiAgICBGaWxlVXBsb2FkRGlyZWN0aXZlLFxyXG4gICAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICAgIEZpbGVEb3dubG9hZENvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnZmlsZUZpZWxkJykgZmlsZUZpZWxkITogRWxlbWVudFJlZjtcclxuICBjb25zdGFudHMgPSBjb25zdGFudHM7XHJcbiAgZmlsZVVwbG9hZExhYmVsID0gdGhpcy5jb25zdGFudHM/LmZpbGVVcGxvYWQ/LmxhYmVsO1xyXG4gIGZpbGVVcGxvYWRBcmlhTGFiZWwgPSB0aGlzLmNvbnN0YW50cz8uZmlsZVVwbG9hZD8uYXJpYUxhYmVsO1xyXG4gIGZpbGVVcGxvYWRJY29uVXJsID0gdGhpcy5jb25zdGFudHM/LmZpbGVVcGxvYWQ/Lmljb25Vcmw7XHJcbiAgZmlsZVVwbG9hZEJ0biA9IHRoaXMuY29uc3RhbnRzPy5maWxlVXBsb2FkPy5idXR0b25zWzBdO1xyXG4gIGFsbG93ZWRGaWxlVHlwZUVycm9yTWVzc2FnZSA9XHJcbiAgICB0aGlzLmNvbnN0YW50cz8uZmlsZVVwbG9hZD8ubWVzc2FnZT8uZXJyb3I/LmludmFsaWRGaWxlRm9ybWF0O1xyXG4gIEBJbnB1dCgpIG1heEZpbGVTaXplRXJyb3JNZXNzYWdlID1cclxuICAgIHRoaXMuY29uc3RhbnRzPy5maWxlVXBsb2FkPy5tZXNzYWdlPy5lcnJvcj8uaW52YWxpZEZpbGVTaXplO1xyXG4gIGFsbG93ZWRGaWxlVHlwZXNBbmRTaXplVGV4dCA9ICcnO1xyXG4gIGNvbmZpZyE6IEZpZWxkQ29uZmlnO1xyXG4gIGdyb3VwITogRm9ybUdyb3VwO1xyXG4gIGlzVmFsaWRGaWxlVHlwZSA9IGZhbHNlO1xyXG4gIGlzVmFsaWRGaWxlU2l6ZSA9IGZhbHNlO1xyXG4gIGlzVmFsaWRNYXhGaWxlVXBsb2FkTGltaXQgPSBmYWxzZTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHNlbGVjdGVkRmlsZXM6IEZpbGVMaXN0IHwgRmlsZSB8IGFueSA9IFtdO1xyXG4gIHNlbGVjdGVkRmlsZU5hbWVzID0gJyc7XHJcbiAgaXNGb3JtRmllbGQgPSBmYWxzZTtcclxuICB0b3RhbFNpemUgPSAwO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgdXBsb2FkZWRGaWxlczogRmlsZUxpc3QgfCBGaWxlIHwgYW55ID0gW107XHJcbiAgQElucHV0KCkgYWN0aW9uQnV0dG9uQWxpZ24hOiBBbGlnblR5cGU7XHJcbiAgYWxpZ25tZW50VHlwZSA9IEFsaWduVHlwZTtcclxuICBpc1VwbG9hZEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lID0gJ2ZpbGVVcGxvYWQnO1xyXG4gIEBJbnB1dCgpIGlzRmlsZVNlbGVjdGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc3VwcG9ydE1lc3NhZ2UhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYWxsb3dlZEZpbGVUeXBlczogQWxsb3dlZEZpbGVUeXBlc1tdID0gW107XHJcbiAgQElucHV0KCkgaXNNdWx0aUZpbGVVcGxvYWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc1VwbG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICBASW5wdXQoKSBmaWxlVXBsb2FkSGVhZGluZyE6IHN0cmluZztcclxuICBASW5wdXQoKSBpc0FsbG93QW55RmlsZVR5cGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBhbGlnbkJyb3dzZWRGaWxlcyA9IEFsaWduQnJvd3NlZEZpbGVzLkRFRkFVTFQ7XHJcbiAgQElucHV0KCkgaXNVcGxvYWRCdXR0b25OZWVkZWQgPSBmYWxzZTtcclxuICAvLyBEZWZhdWx0IG1heGltdW0gYWxsb3dlZCB1cGxvYWQgZmlsZSBzaXplIGlzIDJtYi5cclxuICBASW5wdXQoKSBtYXhVcGxvYWRGaWxlU2l6ZSA9IDI7XHJcbiAgcHJpdmF0ZSB1cGxvYWRlZFNpemVWYWx1ZSA9IDA7XHJcbiAgQElucHV0KCkgYWxpZ25GaWxlVXBsb2FkRXJyb3JNZXNzYWdlVG8gPSBBbGlnblR5cGUuQk9UVE9NO1xyXG4gIEBJbnB1dCgpIG1heEZpbGVzVXBsb2FkZWRPbmNlOiBudW1iZXIgPVxyXG4gICAgdGhpcy5jb25zdGFudHM/LmZpbGVVcGxvYWQ/LmxpbWl0Py5tYXhGaWxlc1VwbG9hZGVkT25jZTtcclxuICBASW5wdXQoKSBtYXhGaWxlc1VwbG9hZExpbWl0RXJyb3JNZXNzYWdlID0gJyc7XHJcbiAgcHJpdmF0ZSBfZmlsZVVwbG9hZFN0YXR1cyE6IEZpbGVVcGxvYWRTdGF0dXM7XHJcblxyXG4gIEBJbnB1dCgpIGdldCBmaWxlVXBsb2FkU3RhdHVzKCk6IEZpbGVVcGxvYWRTdGF0dXMge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVVcGxvYWRTdGF0dXM7XHJcbiAgfVxyXG4gIHNldCBmaWxlVXBsb2FkU3RhdHVzKHZhbHVlOiBGaWxlVXBsb2FkU3RhdHVzKSB7XHJcbiAgICB0aGlzLl9maWxlVXBsb2FkU3RhdHVzID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGdldCB1cGxvYWRlZFNpemUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnVwbG9hZGVkU2l6ZVZhbHVlO1xyXG4gIH1cclxuXHJcbiAgc2V0IHVwbG9hZGVkU2l6ZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnVwbG9hZGVkU2l6ZVZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2ZpbGVEb3dubG9hZEFuZERlbGV0ZUNvbmZpZyE6IEZpbGVEb3dubG9hZEFuZERlbGV0ZUNvbmZpZztcclxuICBASW5wdXQoKVxyXG4gIHNldCBmaWxlRG93bmxvYWRBbmREZWxldGVDb25maWcodmFsdWU6IEZpbGVEb3dubG9hZEFuZERlbGV0ZUNvbmZpZykge1xyXG4gICAgdGhpcy5fZmlsZURvd25sb2FkQW5kRGVsZXRlQ29uZmlnID0gdmFsdWU7XHJcbiAgfVxyXG4gIGdldCBmaWxlRG93bmxvYWRBbmREZWxldGVDb25maWcoKTogRmlsZURvd25sb2FkQW5kRGVsZXRlQ29uZmlnIHtcclxuICAgIHJldHVybiB0aGlzLl9maWxlRG93bmxvYWRBbmREZWxldGVDb25maWc7XHJcbiAgfVxyXG4gIEBPdXRwdXQoKSB1cGxvYWRTZWxlY3RlZEZpbGVzID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlIHwgRmlsZUxpc3Q+KCk7XHJcbiAgQE91dHB1dCgpIGRvd25sb2FkU2VsZWN0ZWRGaWxlID0gbmV3IEV2ZW50RW1pdHRlcjxcclxuICAgIEZpbGUgfCBEb3dubG9hZEF0dGFjaG1lbnRcclxuICA+KCk7XHJcbiAgYXBpQmFzZVVybCE6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBmb3JtVXRpbGl0eVNlcnZpY2U6IEZvcm1VdGlsaXR5U2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGZpbGVVcGxvYWRTZXJ2aWNlOiBGaWxlVXBsb2FkU2VydmljZSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHktZnVuY3Rpb25cclxuICApIHt9XHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgY29tcG9uZW50IHByb3BlcnRpZXMgYW5kIHJldHJpZXZlcyBjb25maWd1cmF0aW9uLlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzRm9ybUZpZWxkID0gISF0aGlzLmNvbmZpZztcclxuICAgIHRoaXMuYXBpQmFzZVVybCA9IHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UuZ2V0QXBpQmFzZVVybCgpO1xyXG4gICAgdGhpcy5jb25maWcgPVxyXG4gICAgICB0aGlzLmNvbmZpZyA/P1xyXG4gICAgICB0aGlzLmZvcm1VdGlsaXR5U2VydmljZS5nZXRGb3JtRmllbGRDb25maWcoXHJcbiAgICAgICAgJ2ZpbGVVcGxvYWQnLFxyXG4gICAgICAgIEZvcm1Db250cm9sVHlwZS5GSUxFX1VQTE9BRFxyXG4gICAgICApO1xyXG4gICAgdGhpcy5ncm91cCA9XHJcbiAgICAgIHRoaXMuZ3JvdXAgPz8gdGhpcy5mb3JtVXRpbGl0eVNlcnZpY2UuZ2V0Rm9ybUdyb3VwKCdmaWxlVXBsb2FkJyk7XHJcbiAgICB0aGlzLmNvbmZpZy5zdXBwb3J0TWVzc2FnZSA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5zdXBwb3J0TWVzc2FnZSA/PyB0aGlzLnN1cHBvcnRNZXNzYWdlO1xyXG4gICAgdGhpcy5pc011bHRpRmlsZVVwbG9hZCA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5pc011bHRpRmlsZVVwbG9hZCA/PyB0aGlzLmlzTXVsdGlGaWxlVXBsb2FkO1xyXG4gICAgdGhpcy5tYXhVcGxvYWRGaWxlU2l6ZSA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5tYXhVcGxvYWRGaWxlU2l6ZSA/PyB0aGlzLm1heFVwbG9hZEZpbGVTaXplO1xyXG4gICAgdGhpcy5hbGxvd2VkRmlsZVR5cGVzID1cclxuICAgICAgdGhpcy5jb25maWc/LmFsbG93ZWRGaWxlVHlwZXMgPz8gdGhpcy5hbGxvd2VkRmlsZVR5cGVzO1xyXG4gICAgdGhpcy5pc0FsbG93QW55RmlsZVR5cGUgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uaXNBbGxvd0FueUZpbGVUeXBlID8/IHRoaXMuaXNBbGxvd0FueUZpbGVUeXBlO1xyXG4gICAgdGhpcy5hbGlnbkJyb3dzZWRGaWxlcyA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5hbGlnbkJyb3dzZWRGaWxlcyA/PyB0aGlzLmFsaWduQnJvd3NlZEZpbGVzO1xyXG4gICAgdGhpcy5pc1VwbG9hZEJ1dHRvbk5lZWRlZCA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5pc1VwbG9hZEJ1dHRvbk5lZWRlZCA/PyB0aGlzLmlzVXBsb2FkQnV0dG9uTmVlZGVkO1xyXG4gICAgdGhpcy5hY3Rpb25CdXR0b25BbGlnbiA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5hY3Rpb25CdXR0b25BbGlnbiA/PyB0aGlzLmFjdGlvbkJ1dHRvbkFsaWduO1xyXG4gICAgdGhpcy5hbGlnbkZpbGVVcGxvYWRFcnJvck1lc3NhZ2VUbyA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5hbGlnbkZpbGVVcGxvYWRFcnJvck1lc3NhZ2VUbyA/P1xyXG4gICAgICB0aGlzLmFsaWduRmlsZVVwbG9hZEVycm9yTWVzc2FnZVRvO1xyXG4gICAgdGhpcy5nZXRBbGxvd2VkRmlsZUZvcm1hdFNpemVNZXNzYWdlKCk7XHJcbiAgICB0aGlzLmZpbGVVcGxvYWRIZWFkaW5nID1cclxuICAgICAgdGhpcy5jb25maWc/LmZpbGVVcGxvYWRIZWFkaW5nID8/XHJcbiAgICAgIHRoaXMuZmlsZVVwbG9hZEhlYWRpbmcgPz9cclxuICAgICAgdGhpcy5maWxlVXBsb2FkTGFiZWwuZmlsZVVwbG9hZDtcclxuICAgIHRoaXMuY29uZmlnLmFsbG93ZWRGaWxlVHlwZUVycm9yTWVzc2FnZSA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5hbGxvd2VkRmlsZVR5cGVFcnJvck1lc3NhZ2UgPz9cclxuICAgICAgdGhpcy5hbGxvd2VkRmlsZVR5cGVFcnJvck1lc3NhZ2U7XHJcbiAgICB0aGlzLmNvbmZpZy5tYXhGaWxlU2l6ZUVycm9yTWVzc2FnZSA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5tYXhGaWxlU2l6ZUVycm9yTWVzc2FnZSA/PyB0aGlzLm1heEZpbGVTaXplRXJyb3JNZXNzYWdlO1xyXG4gICAgdGhpcy5pc0ZpbGVTZWxlY3RlZCA9IHRoaXMuY29uZmlnPy5pc0ZpbGVTZWxlY3RlZCA/PyB0aGlzLmlzRmlsZVNlbGVjdGVkO1xyXG4gICAgdGhpcy5tYXhGaWxlc1VwbG9hZGVkT25jZSA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5tYXhGaWxlc1VwbG9hZGVkT25jZSA/PyB0aGlzLm1heEZpbGVzVXBsb2FkZWRPbmNlO1xyXG4gICAgdGhpcy5tYXhGaWxlc1VwbG9hZExpbWl0RXJyb3JNZXNzYWdlID1cclxuICAgICAgdGhpcy5jb25maWc/Lm1heEZpbGVzVXBsb2FkTGltaXRFcnJvck1lc3NhZ2UgPz9cclxuICAgICAgdGhpcy5tYXhGaWxlc1VwbG9hZExpbWl0RXJyb3JNZXNzYWdlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBGb3JtYXRzIGFsbG93ZWQgZmlsZSBmb3JtYXQgYW5kIHNpemUgbWVzc2FnZSBpbiByZXF1aXJlZCBmb3JtYXQuXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRBbGxvd2VkRmlsZUZvcm1hdFNpemVNZXNzYWdlKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc3VwcG9ydGVkRmlsZUZvcm1hdFRleHQgPSB0aGlzLmFsbG93ZWRGaWxlVHlwZXMuam9pbignLCAnKTtcclxuICAgIHRoaXMuYWxsb3dlZEZpbGVUeXBlc0FuZFNpemVUZXh0ID0gYCR7dGhpcy5maWxlVXBsb2FkTGFiZWw/LmFsbG93ZWRGaWxlU2l6ZTF9XHJcbiAgICAke3RoaXMubWF4VXBsb2FkRmlsZVNpemV9YDtcclxuICAgIGlmICh0aGlzLmlzTXVsdGlGaWxlVXBsb2FkKSB7XHJcbiAgICAgIHRoaXMuYWxsb3dlZEZpbGVUeXBlc0FuZFNpemVUZXh0ICs9IGAgJHt0aGlzLmNvbnN0YW50cz8uZmlsZVVwbG9hZD8ubGFiZWw/Lm1ifWA7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuaXNBbGxvd0FueUZpbGVUeXBlKSB7XHJcbiAgICAgIHRoaXMuYWxsb3dlZEZpbGVUeXBlc0FuZFNpemVUZXh0ICs9IGAke3RoaXMuZmlsZVVwbG9hZExhYmVsPy5hbGxvd2VkRmlsZVNpemUyfSAke3RoaXMuZmlsZVVwbG9hZExhYmVsPy5hbGxvd2VkRmlsZUZvcm1hdH0gJHtzdXBwb3J0ZWRGaWxlRm9ybWF0VGV4dH0uYDtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyB0aGUgc2VsZWN0ZWQgZmlsZShzKSBhbmQgZW1pdHMgRmlsZVVwbG9hZCBldmVudCBlbWl0dGVyIGZvciB1cGxvYWRpbmcgdGhlIGZpbGUocykuXHJcbiAgICogQHBhcmFtIHsoRmlsZSB8IEZpbGVMaXN0KX0gZmlsZVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0RmlsZShmaWxlOiBGaWxlIHwgRmlsZUxpc3QpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWxlcyA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbGVOYW1lcyA9ICcnO1xyXG4gICAgdGhpcy5maWxlVXBsb2FkU3RhdHVzID0ge1xyXG4gICAgICBhbHJlYWR5RXhpc3RzRmlsZXM6IFtdLFxyXG4gICAgICBmaWxlc05hbWVPZlVwbG9hZEZhaWxlZDogW10sXHJcbiAgICAgIG5vT2ZGaWxlc1VwbG9hZGVkU3VjY2Vzc2Z1bGx5OiAwLFxyXG4gICAgICBpc1VwbG9hZGluZ1N0YXJ0OiBmYWxzZSxcclxuICAgICAgdXBsb2FkZWRGaWxlczogdGhpcy5maWxlVXBsb2FkU3RhdHVzPy51cGxvYWRlZEZpbGVzID8/IFtdLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IGZpbGVVcGxvYWRGb3JtQ29udHJvbCA9IHRoaXMuZ3JvdXA/LmdldChcclxuICAgICAgdGhpcy5jb25maWc/LmNvbnRyb2xOYW1lID8/ICdmaWxlVXBsb2FkJ1xyXG4gICAgKTtcclxuICAgIGlmIChmaWxlVXBsb2FkRm9ybUNvbnRyb2wpIHtcclxuICAgICAgZmlsZVVwbG9hZEZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc011bHRpRmlsZVVwbG9hZCkge1xyXG4gICAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy52YWxpZGF0ZUZpbGUoZmlsZSk7XHJcbiAgICAgIHRoaXMuaXNGaWxlU2VsZWN0ZWQgPSBpc1ZhbGlkO1xyXG4gICAgICBpZiAoaXNWYWxpZCkge1xyXG4gICAgICAgIGlmIChmaWxlKSB7XHJcbiAgICAgICAgICBPYmplY3QudmFsdWVzKGZpbGUpLmZvckVhY2goKGZpbGVJdGVtOiBGaWxlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlcz8ucHVzaChmaWxlSXRlbSk7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxTaXplICs9IGZpbGVJdGVtLnNpemU7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRmlsZXNOYW1lczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlcz8uZm9yRWFjaCgoZmlsZTogRmlsZSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgc2VsZWN0ZWRGaWxlc05hbWVzLnB1c2goZmlsZS5uYW1lKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZU5hbWVzID0gc2VsZWN0ZWRGaWxlc05hbWVzPy5qb2luKCcsICcpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5ncm91cFxyXG4gICAgICAgICAgLmdldCh0aGlzLmNvbmZpZz8uY29udHJvbE5hbWUpXHJcbiAgICAgICAgICA/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRGaWxlTmFtZXMpO1xyXG4gICAgICAgIHRoaXMuZmlsZVVwbG9hZEJ0bi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmlzRm9ybUZpZWxkKVxyXG4gICAgICAgICAgdGhpcy51cGxvYWRTZWxlY3RlZEZpbGVzPy5lbWl0KHRoaXMuc2VsZWN0ZWRGaWxlcyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGZpbGVJdGVtID0gT2JqZWN0LnZhbHVlcyhmaWxlKVswXTtcclxuICAgICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGVGaWxlKGZpbGVJdGVtKTtcclxuICAgICAgaWYgKGlzVmFsaWQpIHtcclxuICAgICAgICB0aGlzLmlzRmlsZVNlbGVjdGVkID0gaXNWYWxpZDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZU5hbWVzID0gZmlsZUl0ZW0ubmFtZTtcclxuICAgICAgICB0aGlzLnRvdGFsU2l6ZSA9IGZpbGVJdGVtLnNpemU7XHJcbiAgICAgICAgdGhpcy5maWxlVXBsb2FkU2VydmljZT8uY29udmVydEZpbGVUb0J5dGVBcnJheShmaWxlSXRlbSk7XHJcbiAgICAgICAgdGhpcy5ncm91cFxyXG4gICAgICAgICAgLmdldCh0aGlzLmNvbmZpZy5jb250cm9sTmFtZSlcclxuICAgICAgICAgID8uc2V0VmFsdWUodGhpcy5zZWxlY3RlZEZpbGVOYW1lcyk7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNGb3JtRmllbGQpIHRoaXMudXBsb2FkU2VsZWN0ZWRGaWxlcy5lbWl0KGZpbGVJdGVtKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZXMgPSBmaWxlO1xyXG4gICAgICAgIHRoaXMuZmlsZVVwbG9hZEJ0bi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRlcyB0aGUgc2VsZWN0ZWQgZmlsZShzKSBmb3JtYXQgYW5kIHNpemUuXHJcbiAgICogQHBhcmFtIHsoRmlsZSB8IEZpbGVMaXN0KX0gZmlsZVxyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICB2YWxpZGF0ZUZpbGUoZmlsZTogRmlsZSB8IEZpbGVMaXN0KTogYm9vbGVhbiB7XHJcbiAgICB0aGlzLmlzVmFsaWRGaWxlVHlwZSA9ICF0aGlzLmlzQWxsb3dBbnlGaWxlVHlwZVxyXG4gICAgICA/IHRoaXMuZmlsZVVwbG9hZFNlcnZpY2UudmFsaWRhdGVGaWxlVHlwZXMoXHJcbiAgICAgICAgICBmaWxlLFxyXG4gICAgICAgICAgdGhpcy5hbGxvd2VkRmlsZVR5cGVzLFxyXG4gICAgICAgICAgdGhpcy5pc011bHRpRmlsZVVwbG9hZFxyXG4gICAgICAgIClcclxuICAgICAgOiB0cnVlO1xyXG4gICAgaWYgKHRoaXMuaXNNdWx0aUZpbGVVcGxvYWQpIHtcclxuICAgICAgdGhpcy5pc1ZhbGlkTWF4RmlsZVVwbG9hZExpbWl0ID1cclxuICAgICAgICBPYmplY3QudmFsdWVzKGZpbGUpLmxlbmd0aCA8PVxyXG4gICAgICAgIHRoaXMuY29uc3RhbnRzPy5maWxlVXBsb2FkPy5saW1pdD8ubWF4RmlsZXNVcGxvYWRlZE9uY2U7XHJcbiAgICAgIGlmICghdGhpcy5pc1ZhbGlkTWF4RmlsZVVwbG9hZExpbWl0KSB7XHJcbiAgICAgICAgdGhpcy5ncm91cD8uZ2V0KHRoaXMuY29uZmlnPy5jb250cm9sTmFtZSk/LnNldEVycm9ycyh7XHJcbiAgICAgICAgICBtYXhGaWxlc1VwbG9hZExpbWl0UmVhY2hlZDogdHJ1ZSxcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdGhpcy5pc1ZhbGlkRmlsZVR5cGUpIHtcclxuICAgICAgdGhpcy5ncm91cD8uZ2V0KHRoaXMuY29uZmlnPy5jb250cm9sTmFtZSk/LnNldEVycm9ycyh7XHJcbiAgICAgICAgaW52YWxpZEZpbGVUeXBlOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc1ZhbGlkRmlsZVNpemUgPSB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLnZhbGlkYXRlRmlsZVNpemUoXHJcbiAgICAgIGZpbGUsXHJcbiAgICAgIHRoaXMubWF4VXBsb2FkRmlsZVNpemUsXHJcbiAgICAgIHRoaXMuaXNNdWx0aUZpbGVVcGxvYWRcclxuICAgICk7XHJcbiAgICBpZiAoIXRoaXMuaXNWYWxpZEZpbGVTaXplKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXA/LmdldCh0aGlzLmNvbmZpZz8uY29udHJvbE5hbWUpPy5zZXRFcnJvcnMoe1xyXG4gICAgICAgIG1heEZpbGVTaXplOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEluaXRpYXRlcyB0aGUgZmlsZSB1cGxvYWQgcHJvY2VzcyBmb3IgaW5kZXBlbmRlbnQgZmlsZSB1cGxvYWQgY29tcG9uZW50LlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25VcGxvYWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwbG9hZFNlbGVjdGVkRmlsZXMuZW1pdCh0aGlzLnNlbGVjdGVkRmlsZXMpO1xyXG4gICAgaWYgKHRoaXMuZmlsZVVwbG9hZFNlcnZpY2U/LmdldEZpbGVVcGxvYWRTdGF0dXMoKSkge1xyXG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZXMgPSB0aGlzLnNlbGVjdGVkRmlsZXM7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENsZWFycyB0aGUgZm9ybSBncm91cCBjb250cm9sIHZhbHVlIG9mIHR5cGUgaW5wdXQgYW5kIHJlc2V0cyBvdGhlciBmaWxlIHVwbG9hZCBwcm9wZXJ0aWVzLlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcmVzZXRVcGxvYWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLmNsZWFyRmlsZUJ5dGVBcnJheSgpO1xyXG4gICAgdGhpcy51cGxvYWRlZEZpbGVzID0gW107XHJcbiAgICB0aGlzLmlzVXBsb2FkSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbGVOYW1lcyA9ICcnO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbGVzID0gW107XHJcbiAgICB0aGlzLmlzRmlsZVNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmdyb3VwLmdldCh0aGlzLmNvbmZpZz8uY29udHJvbE5hbWUpPy5zZXRWYWx1ZSgnJyk7XHJcbiAgICB0aGlzLmZpbGVVcGxvYWRCdG4uZGlzYWJsZWQgPSB0cnVlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZW1vdmVzIHRoZSBzZWxlY3RlZCBmaWxlIGZyb20gdGhlIHVwbG9hZGVkIGZpbGVzIGxpc3QuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBvbkRlbGV0ZUZpbGUoZmlsZTogRmlsZSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy50b3RhbFNpemUgPSAwO1xyXG4gICAgdGhpcy51cGxvYWRlZEZpbGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEZvciB0YWIga2V5IGtleWRvd24gZXZlbnQgaXQgcGFzc2VzIGV2ZW50IGFuZCByZXN0cmljdHMgb3RoZXIga2V5cyBmcm9tIGtleWJvYXJkLlxyXG4gICAqIEBwYXJhbSB7S2V5Ym9hcmRFdmVudH0gZXZlbnQgLUtleWRvd24gZXZlbnQgb2JqZWN0LlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQua2V5ICE9PSAnVGFiJykgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRW1pdHMgZG93bmxvYWRTZWxlY3RlZEZpbGUgZXZlbnQuXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBkb3dubG9hZEZpbGUoZmlsZTogRmlsZSB8IERvd25sb2FkQXR0YWNobWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5kb3dubG9hZFNlbGVjdGVkRmlsZS5lbWl0KGZpbGUpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZmlsZSBsaXN0LlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxyXG4gICAqIEByZXR1cm4geyhudW1iZXIgfCBzdHJpbmcpfVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIpOiBudW1iZXIgfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGluZGV4O1xyXG4gIH1cclxuICAvKipcclxuICAgKiBUcmlnZ2VycyBhbmQgb3BlbnMgdGhlIGZpbGUgYnJvd3NlIHdpbmRvdyB3aGVuIHRoZSBCcm93c2UgYnV0dG9uIGlzIGNsaWNrZWQuXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBmaWxlQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVGaWVsZC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGZhaWxlZCBmaWxlIG5hbWVzIHdpdGggY29tbWEgc2VwYXJhdGlvbi5cclxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBmaWxlTmFtZXNcclxuICAgKiBAcmV0dXJuIHsqfSAge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGRpc3BsYXlGaWxlTmFtZXMoZmlsZU5hbWVzOiBzdHJpbmdbXSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZmlsZU5hbWVzICYmIGZpbGVOYW1lcy5sZW5ndGggPyBmaWxlTmFtZXMuam9pbignLCcpIDogJyc7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgdGhlIHVuc2VsZWN0ZWQgZmlsZSBmcm9tIHRoZSBicm93c2VkIG9yIHNlbGVjdGVkIGZpbGVzIGFuZCBlbWl0cyB1cGxvYWRTZWxlY3RlZEZpbGVzIGV2ZW50IHdpdGggdGhlIHNlbGVjdGVkIGZpbGVzLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcmVtb3ZlRmlsZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGNvbnN0IGZpbGVOYW1lczogc3RyaW5nW10gPSB0aGlzLnNlbGVjdGVkRmlsZU5hbWVzLnNwbGl0KCcsJyk7XHJcbiAgICBmaWxlTmFtZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWxlTmFtZXMgPSBmaWxlTmFtZXMuam9pbignLCcpO1xyXG4gICAgdGhpcy51cGxvYWRTZWxlY3RlZEZpbGVzLmVtaXQodGhpcy5zZWxlY3RlZEZpbGVzKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMucmVzZXRVcGxvYWQoKTtcclxuICAgICAgdGhpcy5maWxlVXBsb2FkU3RhdHVzLm5vT2ZGaWxlc1VwbG9hZGVkU3VjY2Vzc2Z1bGx5ID0gMDtcclxuICAgICAgdGhpcy5maWxlVXBsb2FkU3RhdHVzLmZpbGVzTmFtZU9mVXBsb2FkRmFpbGVkID0gW107XHJcbiAgICAgIHRoaXMuZmlsZVVwbG9hZFN0YXR1cy5hbHJlYWR5RXhpc3RzRmlsZXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgZmlsZSB1cGxvYWQgYnV0dG9uLlxyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBjYW5FbmFibGVVcGxvYWRCdXR0b24oZW5hYmxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzVXBsb2FkQnV0dG9uRGlzYWJsZWQgPSBlbmFibGU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEJhc2VkIG9uIGlzTXVsdGlGaWxlVXBsb2FkIGZsYWcgcmV0dXJuIGZpbGVzIHRvIGRvd25sb2FkLlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0RmlsZXNUb0Rvd25sb2FkKCk6IERvd25sb2FkQXR0YWNobWVudFtdIHtcclxuICAgIGlmICh0aGlzLmlzTXVsdGlGaWxlVXBsb2FkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpbGVVcGxvYWRTdGF0dXMudXBsb2FkZWRGaWxlcztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnVwbG9hZGVkRmlsZXM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFRyYWNrQnlGdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2ggZmlsZSBpbiB0aGUgY29sbGVjdGlvbiBhbmQgcmV0dXJuIGEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoYXQgZmlsZS5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcclxuICAgKiBAcGFyYW0ge0ZpbGV9IGZpbGVcclxuICAgKiBAcmV0dXJuIHtGaWxlfVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdHJhY2tCeUZ1bmMoaW5kZXg6IG51bWJlciwgZmlsZTogRmlsZSk6IEZpbGUge1xyXG4gICAgcmV0dXJuIGZpbGU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgZW1wdHkgdmFsdWUgdG8gZmlsZSBmb3JtIGNvbnRyb2wgb25jZSBpdCBpcyBjbGlja2VkLlxyXG4gICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50XHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBzZXRFbXB0eVZhbHVlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSA9ICcnO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGZpbGUgZnJvbSBzZWxlY3RlZEZpbGVzIGlmIHVwbG9hZGVkIHN1Y2Nlc3NmdWxseSB0byBBV1MgYW5kIG1hcHBlZCBpbiB0aGUgc2VydmVyLlxyXG4gICAqIEBwYXJhbSB7RmlsZX0gZmlsZVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcmVtb3ZlU2VsZWN0ZWRGaWxlSW5VcGxvYWRlZEZpbGVzKGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICBjb25zdCBpbmRleCA9ICh0aGlzLnNlbGVjdGVkRmlsZXMgYXMgRmlsZSB8IEZpbGVMaXN0IHwgYW55KS5maW5kSW5kZXgoXHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgIChzZWxlY3RlZEZpbGU6IGFueSkgPT4gc2VsZWN0ZWRGaWxlLm5hbWUgPT09IGZpbGVOYW1lXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXkgc2VsZWN0ZWQgZmlsZSBuYW1lcyBsZW5ndGggaW4gVUkuXHJcbiAgICogQHJldHVybiB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZGlzcGxheVNlbGVjdGVkRmlsZU5hbWVzTGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEZpbGVOYW1lcy5zcGxpdCgnLCAnKS5sZW5ndGg7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBbZm9ybUdyb3VwXT1cImdyb3VwXCJcclxuICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZFwiXHJcbiAgW25nQ2xhc3NdPVwiXHJcbiAgICBjb25maWcuaXNMYWJlbEFsaWduZWRMZWZ0XHJcbiAgICAgID8gJ2llZWVzYS1maWxlLXVwbG9hZF9fbGFiZWwtbGVmdCdcclxuICAgICAgOiAnaWVlZXNhLWZpbGUtdXBsb2FkX19sYWJlbC10b3AnXHJcbiAgXCJcclxuPlxyXG4gIDxtYXQtbGFiZWwgY2xhc3M9XCJpZWVlc2EtYm9keS1zbS0xNCBpZWVlc2EtZmlsZS11cGxvYWRfX2xhYmVsXCI+e3tcclxuICAgIGNvbmZpZy5sYWJlbFxyXG4gIH19PC9tYXQtbGFiZWw+XHJcbiAgPGllZWVzYS1maWxlLWRvd25sb2FkXHJcbiAgICBbZmlsZURvd25sb2FkQW5kRGVsZXRlQ29uZmlnXT1cImZpbGVEb3dubG9hZEFuZERlbGV0ZUNvbmZpZ1wiXHJcbiAgICBbYXBpQmFzZVVybF09XCJhcGlCYXNlVXJsXCJcclxuICAgIFtkb3dubG9hZEZpbGVzXT1cImdldEZpbGVzVG9Eb3dubG9hZCgpXCJcclxuICAgIChkb3dubG9hZFNlbGVjdGVkRmlsZSk9XCJkb3dubG9hZEZpbGUoJGV2ZW50KVwiXHJcbiAgPjwvaWVlZXNhLWZpbGUtZG93bmxvYWQ+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3VwbG9hZCBwLTRcIlxyXG4gICAgaWVlZXNhRmlsZVVwbG9hZFxyXG4gICAgKGZpbGVEcm9wcGVkKT1cImdldEZpbGUoJGV2ZW50KVwiXHJcbiAgPlxyXG4gICAgPHAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3VwbG9hZF9faGVhZGluZyBtLTAgaWVlZXNhLWxhYmVsLWxnLWJvbGQtMTZcIj5cclxuICAgICAge3sgZmlsZVVwbG9hZEhlYWRpbmcgfX1cclxuICAgIDwvcD5cclxuICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3VwbG9hZF9fYnJvd3NlLWZpbGVzXCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgKGNsaWNrKT1cImZpbGVDbGljaygpXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fYnJvd3NlLWJ0biBtYXQtdGVydGlhcnktYnV0dG9uXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZpbGVVcGxvYWRBcmlhTGFiZWwuYnJvd3NlRmlsZXNcIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJmaWxlVXBsb2FkU3RhdHVzPy5pc1VwbG9hZGluZ1N0YXJ0XCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IGZpbGVVcGxvYWRMYWJlbC5icm93c2VGaWxlcyB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTXVsdGlGaWxlVXBsb2FkXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgICAjZmlsZUZpZWxkXHJcbiAgICAgICAgICAoY2hhbmdlKT1cImdldEZpbGUoJGFueSgkZXZlbnQpLnRhcmdldC5maWxlcylcIlxyXG4gICAgICAgICAgaGlkZGVuXHJcbiAgICAgICAgICBbYWNjZXB0XT1cImFsbG93ZWRGaWxlVHlwZXNcIlxyXG4gICAgICAgICAgW211bHRpcGxlXT1cInRydWVcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZpbGVVcGxvYWRTdGF0dXM/LmlzVXBsb2FkaW5nU3RhcnRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNldEVtcHR5VmFsdWUoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCInaWVlZXNhLWZpbGUtaW5wdXQnXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc011bHRpRmlsZVVwbG9hZFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxyXG4gICAgICAgICAgI2ZpbGVGaWVsZFxyXG4gICAgICAgICAgKGNoYW5nZSk9XCJnZXRGaWxlKCRhbnkoJGV2ZW50KS50YXJnZXQuZmlsZXMpXCJcclxuICAgICAgICAgIGhpZGRlblxyXG4gICAgICAgICAgW2FjY2VwdF09XCJhbGxvd2VkRmlsZVR5cGVzXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWxlVXBsb2FkU3RhdHVzPy5pc1VwbG9hZGluZ1N0YXJ0XCJcclxuICAgICAgICAgIChjbGljayk9XCJzZXRFbXB0eVZhbHVlKCRldmVudClcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiJ2llZWVzYS1maWxlLWlucHV0J1wiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8cFxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX19hbGxvd2VkLWZpbGUtdGV4dCBtLTAgaWVlZXNhLWxhYmVsLW1kLTE0XCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFsbG93ZWRGaWxlVHlwZXNBbmRTaXplVGV4dFwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBhbGxvd2VkRmlsZVR5cGVzQW5kU2l6ZVRleHQgfX1cclxuICAgICAgPC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX191cGxvYWQtd3JhcHBlciBkLWZsZXhcIlxyXG4gICAgICAqbmdJZj1cImlzRmlsZVNlbGVjdGVkXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiYWxpZ25Ccm93c2VkRmlsZXNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGVmYXVsdCdcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3VwbG9hZC13cmFwcGVyX19pbnB1dC1maWVsZCBpZWVlc2EtYm9keS1sZy0xNlwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwic2VsZWN0ZWRGaWxlTmFtZXNcIlxyXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb25maWcucGxhY2Vob2xkZXIgPz8gJydcIlxyXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29uZmlnLmNvbnRyb2xOYW1lXCJcclxuICAgICAgICAgICAgICBbbmFtZV09XCJjb25maWcuY29udHJvbE5hbWVcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXHJcbiAgICAgICAgICAgICAgICBjb25maWcuYXJpYUxhYmVsID8/IGZpbGVVcGxvYWRBcmlhTGFiZWwuZmlsZVVwbG9hZElucHV0XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbYXJpYS1kZXNjcmliZWRieV09XCJjb25maWcuYXJpYURlc2NyaWJlZEJ5SWQgPz8gJydcIlxyXG4gICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fdXBsb2FkLXdyYXBwZXItLWNsZWFyLWljb24tYnRuXCJcclxuICAgICAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZpbGVVcGxvYWRBcmlhTGFiZWwucmVtb3ZlRmlsZUljb25cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZXNldFVwbG9hZCgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtY2lyY2xlLXhtYXJrIGllZWVzYS1pbnB1dC1maWVsZC11cGxvYWRfX2ljb24tLWNsZWFyXCJcclxuICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX191cGxvYWQtd3JhcHBlci0tdXBsb2FkLWJ0biBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgW2ljb25CdXR0b25dPVwiZmlsZVVwbG9hZEJ0blwiXHJcbiAgICAgICAgICAgIFtpc0xhYmVsTmVlZGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvblVwbG9hZCgpXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhaXNGb3JtRmllbGRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2JvdHRvbSdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtZGlzcGxheS1icm93c2VkLWZpbGVzLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fcHJvZ3Jlc3NfX3RleHRcIj5cclxuICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgZmlsZVVwbG9hZFN0YXR1cy5ub09mRmlsZXNVcGxvYWRlZFN1Y2Nlc3NmdWxseSArXHJcbiAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgZmlsZVVwbG9hZExhYmVsPy5vZiArXHJcbiAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheVNlbGVjdGVkRmlsZU5hbWVzTGVuZ3RoKCkgK1xyXG4gICAgICAgICAgICAgICAgICBcIiBcIiArXHJcbiAgICAgICAgICAgICAgICAgIGZpbGVVcGxvYWRMYWJlbD8uZmlsZXNVcGxvYWRlZFxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAoZmlsZVVwbG9hZFN0YXR1cz8ubm9PZkZpbGVzVXBsb2FkZWRTdWNjZXNzZnVsbHkgPT09IDAgJiZcclxuICAgICAgICAgICAgICAgICAgIWZpbGVVcGxvYWRTdGF0dXMuaXNVcGxvYWRpbmdTdGFydCkgfHxcclxuICAgICAgICAgICAgICAgIGZpbGVVcGxvYWRTdGF0dXMuaXNVcGxvYWRpbmdTdGFydCB8fFxyXG4gICAgICAgICAgICAgICAgZmlsZVVwbG9hZFN0YXR1cy5ub09mRmlsZXNVcGxvYWRlZFN1Y2Nlc3NmdWxseSA+IDBcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHB0LTEgbS0wIGllZWVzYS1sYWJlbC1tZC0xNCBhbGlnbi1pdGVtcy1jZW50ZXIgaWVlZXNhLWZpbGUtbmFtZS1kaXNwbGF5XCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgZmlsZSBvZiBzZWxlY3RlZEZpbGVzO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5RnVuY1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyBmaWxlPy5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fdXBsb2FkLXdyYXBwZXItLWNsZWFyLWljb24tYnRuXCJcclxuICAgICAgICAgICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZpbGVVcGxvYWRBcmlhTGFiZWwucmVtb3ZlRmlsZUljb25cIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRmlsZShpKVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLWNpcmNsZS14bWFyayBpZWVlc2EtaW5wdXQtZmllbGQtdXBsb2FkX19pY29uLS1jbGVhclwiXHJcbiAgICAgICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZmlsZVVwbG9hZFN0YXR1cz8uZmlsZXNOYW1lT2ZVcGxvYWRGYWlsZWQ/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX2Vycm9yX190ZXh0XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICBmaWxlVXBsb2FkTGFiZWw/LnVwbG9hZEZvciArXHJcbiAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheUZpbGVOYW1lcyhmaWxlVXBsb2FkU3RhdHVzLmZpbGVzTmFtZU9mVXBsb2FkRmFpbGVkKSArXHJcbiAgICAgICAgICAgICAgICAgIFwiIFwiICtcclxuICAgICAgICAgICAgICAgICAgZmlsZVVwbG9hZExhYmVsPy51cGxvYWRFcnJvck1zZ1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAqbmdJZj1cImZpbGVVcGxvYWRTdGF0dXM/LmFscmVhZHlFeGlzdHNGaWxlcz8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fZXJyb3JfX3RleHRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWxlTmFtZXMoZmlsZVVwbG9hZFN0YXR1cy5hbHJlYWR5RXhpc3RzRmlsZXMpICtcclxuICAgICAgICAgICAgICAgICAgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgICBmaWxlVXBsb2FkTGFiZWw/LmZpbGVBbHJlYWR5RXhpc3RzXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRm9ybUZpZWxkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3Byb2dyZXNzXCIgKm5nSWY9XCJpc1VwbG9hZEluUHJvZ3Jlc3NcIj5cclxuICAgICAgICA8cCBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fcHJvZ3Jlc3NfX3RleHRcIj5cclxuICAgICAgICAgIHt7IGZpbGVVcGxvYWRMYWJlbD8udXBsb2FkUHJvZ3Jlc3MgfX1cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXJcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX19wcm9ncmVzcy0tYmFyXCJcclxuICAgICAgICAgIG1vZGU9XCJkZXRlcm1pbmF0ZVwiXHJcbiAgICAgICAgICBbdmFsdWVdPVwidXBsb2FkZWRTaXplXCJcclxuICAgICAgICA+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPGllZWVzYS1mb3JtLWVycm9yXHJcbiAgICAgICpuZ0lmPVwiYWxpZ25GaWxlVXBsb2FkRXJyb3JNZXNzYWdlVG8gPT09IGFsaWdubWVudFR5cGUuTUlERExFXCJcclxuICAgICAgW2Zvcm1Hcm91cF09XCJncm91cFwiXHJcbiAgICAgIFtjb25maWddPVwiY29uZmlnXCJcclxuICAgID48L2llZWVzYS1mb3JtLWVycm9yPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cImlzVXBsb2FkQnV0dG9uTmVlZGVkICYmIGlzRmlsZVNlbGVjdGVkXCJcclxuICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgJ2p1c3RpZnktY29udGVudC1lbmQnOiBhY3Rpb25CdXR0b25BbGlnbiA9PT0gYWxpZ25tZW50VHlwZS5MRUZULFxyXG4gICAgICAgICAgJ2p1c3RpZnktY29udGVudC1jZW50ZXInOiBhY3Rpb25CdXR0b25BbGlnbiA9PT0gYWxpZ25tZW50VHlwZS5NSURETEUsXHJcbiAgICAgICAgICAnanVzdGlmeS1jb250ZW50LXN0YXJ0JzogYWN0aW9uQnV0dG9uQWxpZ24gPT09IGFsaWdubWVudFR5cGUuUklHSFQsXHJcbiAgICAgICAgfVwiXHJcbiAgICA+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJtYXQtcHJpbWFyeS1idXR0b24gaWVlZXNhLWR5bmFtaWMtZm9ybV9fYWN0aW9ucy0tcmlnaHQtYnRuXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICAhaXNGaWxlU2VsZWN0ZWQgfHxcclxuICAgICAgICAgIGZpbGVVcGxvYWRTdGF0dXMuaXNVcGxvYWRpbmdTdGFydCB8fFxyXG4gICAgICAgICAgZmlsZVVwbG9hZFN0YXR1cy5ub09mRmlsZXNVcGxvYWRlZFN1Y2Nlc3NmdWxseSA+IDBcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgZmlsZVVwbG9hZExhYmVsPy51cGxvYWQgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxpZWVlc2EtZm9ybS1lcnJvclxyXG4gICpuZ0lmPVwiYWxpZ25GaWxlVXBsb2FkRXJyb3JNZXNzYWdlVG8gPT09IGFsaWdubWVudFR5cGUuQk9UVE9NXCJcclxuICBbZm9ybUdyb3VwXT1cImdyb3VwXCJcclxuICBbY29uZmlnXT1cImNvbmZpZ1wiXHJcbj48L2llZWVzYS1mb3JtLWVycm9yPlxyXG48aWVlZXNhLWZvcm0tc3VwcG9ydC10ZXh0XHJcbiAgW2Zvcm1Hcm91cF09XCJncm91cFwiXHJcbiAgW2NvbmZpZ109XCJjb25maWdcIlxyXG4+PC9pZWVlc2EtZm9ybS1zdXBwb3J0LXRleHQ+XHJcbiJdfQ==
|
|
469
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc2VudGF0aW9uL3NyYy9saWIvY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxLQUFLLFNBQVMsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUd4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFB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O2dCQVVGLDJCQUEyQjtzQkFEOUIsS0FBSztnQkFPSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCAqIGFzIGNvbnN0YW50cyBmcm9tICcuLi8uLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZvcm1FcnJvckNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IEZvcm1TdXBwb3J0VGV4dENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tc3VwcG9ydC10ZXh0L2Zvcm0tc3VwcG9ydC10ZXh0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1VdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tdXRpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9maWVsZC1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1jb250cm9sLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHsgQWxsb3dlZEZpbGVUeXBlcyB9IGZyb20gJy4uLy4uL21vZGVscy9hbGxvd2VkLWZpbGUtdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbGUtdXBsb2FkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJY29uQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWxpZ25Ccm93c2VkRmlsZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWxpZ24tYnJvd3NlZC1maWxlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEFsaWduVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9hbGlnbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZFN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9maWxlLXVwbG9hZC1zdGF0dXMubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWxlRG93bmxvYWRDb21wb25lbnQgfSBmcm9tICcuLi9maWxlLWRvd25sb2FkL2ZpbGUtZG93bmxvYWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZURvd25sb2FkQW5kRGVsZXRlQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbGUtZG93bmxvYWQtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgRG93bmxvYWRBdHRhY2htZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Rvd25sb2FkLWZpbGUubW9kZWwnO1xyXG4vKipcclxuICogUHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3IgdXBsb2FkaW5nIGZpbGVzIHRvIGF3cyBzMyBidWNrZXQuXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICogQGltcGxlbWVudHMge09uSW5pdH1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWZpbGUtdXBsb2FkJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBGb3JtRXJyb3JDb21wb25lbnQsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIEZvcm1TdXBwb3J0VGV4dENvbXBvbmVudCxcclxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxyXG4gICAgRmlsZVVwbG9hZERpcmVjdGl2ZSxcclxuICAgIEljb25CdXR0b25Db21wb25lbnQsXHJcbiAgICBGaWxlRG93bmxvYWRDb21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVGaWVsZCcpIGZpbGVGaWVsZCE6IEVsZW1lbnRSZWY7XHJcbiAgY29uc3RhbnRzID0gY29uc3RhbnRzO1xyXG4gIGZpbGVVcGxvYWRMYWJlbCA9IHRoaXMuY29uc3RhbnRzPy5maWxlVXBsb2FkPy5sYWJlbDtcclxuICBmaWxlVXBsb2FkQXJpYUxhYmVsID0gdGhpcy5jb25zdGFudHM/LmZpbGVVcGxvYWQ/LmFyaWFMYWJlbDtcclxuICBmaWxlVXBsb2FkSWNvblVybCA9IHRoaXMuY29uc3RhbnRzPy5maWxlVXBsb2FkPy5pY29uVXJsO1xyXG4gIGZpbGVVcGxvYWRCdG4gPSB0aGlzLmNvbnN0YW50cz8uZmlsZVVwbG9hZD8uYnV0dG9uc1swXTtcclxuICBhbGxvd2VkRmlsZVR5cGVFcnJvck1lc3NhZ2UgPVxyXG4gICAgdGhpcy5jb25zdGFudHM/LmZpbGVVcGxvYWQ/Lm1lc3NhZ2U/LmVycm9yPy5pbnZhbGlkRmlsZUZvcm1hdDtcclxuICBASW5wdXQoKSBtYXhGaWxlU2l6ZUVycm9yTWVzc2FnZSA9XHJcbiAgICB0aGlzLmNvbnN0YW50cz8uZmlsZVVwbG9hZD8ubWVzc2FnZT8uZXJyb3I/LmludmFsaWRGaWxlU2l6ZTtcclxuICBhbGxvd2VkRmlsZVR5cGVzQW5kU2l6ZVRleHQgPSAnJztcclxuICBjb25maWchOiBGaWVsZENvbmZpZztcclxuICBncm91cCE6IEZvcm1Hcm91cDtcclxuICBpc1ZhbGlkRmlsZVR5cGUgPSBmYWxzZTtcclxuICBpc1ZhbGlkRmlsZVNpemUgPSBmYWxzZTtcclxuICBpc1ZhbGlkTWF4RmlsZVVwbG9hZExpbWl0ID0gZmFsc2U7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBzZWxlY3RlZEZpbGVzOiBGaWxlTGlzdCB8IEZpbGUgfCBhbnkgPSBbXTtcclxuICBzZWxlY3RlZEZpbGVOYW1lcyA9ICcnO1xyXG4gIGlzRm9ybUZpZWxkID0gZmFsc2U7XHJcbiAgdG90YWxTaXplID0gMDtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHVwbG9hZGVkRmlsZXM6IEZpbGVMaXN0IHwgRmlsZSB8IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIGFjdGlvbkJ1dHRvbkFsaWduITogQWxpZ25UeXBlO1xyXG4gIGFsaWdubWVudFR5cGUgPSBBbGlnblR5cGU7XHJcbiAgaXNVcGxvYWRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZSA9ICdmaWxlVXBsb2FkJztcclxuICBASW5wdXQoKSBpc0ZpbGVTZWxlY3RlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHN1cHBvcnRNZXNzYWdlITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFsbG93ZWRGaWxlVHlwZXM6IEFsbG93ZWRGaWxlVHlwZXNbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGlzTXVsdGlGaWxlVXBsb2FkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNVcGxvYWRJblByb2dyZXNzID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZmlsZVVwbG9hZEhlYWRpbmchOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaXNBbGxvd0FueUZpbGVUeXBlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYWxpZ25Ccm93c2VkRmlsZXMgPSBBbGlnbkJyb3dzZWRGaWxlcy5ERUZBVUxUO1xyXG4gIEBJbnB1dCgpIGlzVXBsb2FkQnV0dG9uTmVlZGVkID0gZmFsc2U7XHJcbiAgLy8gRGVmYXVsdCBtYXhpbXVtIGFsbG93ZWQgdXBsb2FkIGZpbGUgc2l6ZSBpcyAybWIuXHJcbiAgQElucHV0KCkgbWF4VXBsb2FkRmlsZVNpemUgPSAyO1xyXG4gIHByaXZhdGUgdXBsb2FkZWRTaXplVmFsdWUgPSAwO1xyXG4gIEBJbnB1dCgpIGFsaWduRmlsZVVwbG9hZEVycm9yTWVzc2FnZVRvID0gQWxpZ25UeXBlLkJPVFRPTTtcclxuICBASW5wdXQoKSBtYXhGaWxlc1VwbG9hZGVkT25jZTogbnVtYmVyID1cclxuICAgIHRoaXMuY29uc3RhbnRzPy5maWxlVXBsb2FkPy5saW1pdD8ubWF4RmlsZXNVcGxvYWRlZE9uY2U7XHJcbiAgQElucHV0KCkgbWF4RmlsZXNVcGxvYWRMaW1pdEVycm9yTWVzc2FnZSA9ICcnO1xyXG4gIHByaXZhdGUgX2ZpbGVVcGxvYWRTdGF0dXMhOiBGaWxlVXBsb2FkU3RhdHVzO1xyXG5cclxuICBASW5wdXQoKSBnZXQgZmlsZVVwbG9hZFN0YXR1cygpOiBGaWxlVXBsb2FkU3RhdHVzIHtcclxuICAgIHJldHVybiB0aGlzLl9maWxlVXBsb2FkU3RhdHVzO1xyXG4gIH1cclxuICBzZXQgZmlsZVVwbG9hZFN0YXR1cyh2YWx1ZTogRmlsZVVwbG9hZFN0YXR1cykge1xyXG4gICAgdGhpcy5fZmlsZVVwbG9hZFN0YXR1cyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgdXBsb2FkZWRTaXplKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy51cGxvYWRlZFNpemVWYWx1ZTtcclxuICB9XHJcblxyXG4gIHNldCB1cGxvYWRlZFNpemUodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy51cGxvYWRlZFNpemVWYWx1ZSA9IHZhbHVlO1xyXG4gIH1cclxuICBwcml2YXRlIF9maWxlRG93bmxvYWRBbmREZWxldGVDb25maWchOiBGaWxlRG93bmxvYWRBbmREZWxldGVDb25maWc7XHJcbiAgQElucHV0KClcclxuICBzZXQgZmlsZURvd25sb2FkQW5kRGVsZXRlQ29uZmlnKHZhbHVlOiBGaWxlRG93bmxvYWRBbmREZWxldGVDb25maWcpIHtcclxuICAgIHRoaXMuX2ZpbGVEb3dubG9hZEFuZERlbGV0ZUNvbmZpZyA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgZmlsZURvd25sb2FkQW5kRGVsZXRlQ29uZmlnKCk6IEZpbGVEb3dubG9hZEFuZERlbGV0ZUNvbmZpZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsZURvd25sb2FkQW5kRGVsZXRlQ29uZmlnO1xyXG4gIH1cclxuICBAT3V0cHV0KCkgdXBsb2FkU2VsZWN0ZWRGaWxlcyA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZSB8IEZpbGVMaXN0PigpO1xyXG4gIEBPdXRwdXQoKSBkb3dubG9hZFNlbGVjdGVkRmlsZSA9IG5ldyBFdmVudEVtaXR0ZXI8XHJcbiAgICBGaWxlIHwgRG93bmxvYWRBdHRhY2htZW50XHJcbiAgPigpO1xyXG4gIGFwaUJhc2VVcmwhOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZm9ybVV0aWxpdHlTZXJ2aWNlOiBGb3JtVXRpbGl0eVNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBmaWxlVXBsb2FkU2VydmljZTogRmlsZVVwbG9hZFNlcnZpY2UgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgKSB7fVxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIGNvbXBvbmVudCBwcm9wZXJ0aWVzIGFuZCByZXRyaWV2ZXMgY29uZmlndXJhdGlvbi5cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0Zvcm1GaWVsZCA9ICEhdGhpcy5jb25maWc7XHJcbiAgICB0aGlzLmFwaUJhc2VVcmwgPSB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLmdldEFwaUJhc2VVcmwoKTtcclxuICAgIHRoaXMuY29uZmlnID1cclxuICAgICAgdGhpcy5jb25maWcgPz9cclxuICAgICAgdGhpcy5mb3JtVXRpbGl0eVNlcnZpY2UuZ2V0Rm9ybUZpZWxkQ29uZmlnKFxyXG4gICAgICAgICdmaWxlVXBsb2FkJyxcclxuICAgICAgICBGb3JtQ29udHJvbFR5cGUuRklMRV9VUExPQURcclxuICAgICAgKTtcclxuICAgIHRoaXMuZ3JvdXAgPVxyXG4gICAgICB0aGlzLmdyb3VwID8/IHRoaXMuZm9ybVV0aWxpdHlTZXJ2aWNlLmdldEZvcm1Hcm91cCgnZmlsZVVwbG9hZCcpO1xyXG4gICAgdGhpcy5jb25maWcuc3VwcG9ydE1lc3NhZ2UgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uc3VwcG9ydE1lc3NhZ2UgPz8gdGhpcy5zdXBwb3J0TWVzc2FnZTtcclxuICAgIHRoaXMuaXNNdWx0aUZpbGVVcGxvYWQgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uaXNNdWx0aUZpbGVVcGxvYWQgPz8gdGhpcy5pc011bHRpRmlsZVVwbG9hZDtcclxuICAgIHRoaXMubWF4VXBsb2FkRmlsZVNpemUgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8ubWF4VXBsb2FkRmlsZVNpemUgPz8gdGhpcy5tYXhVcGxvYWRGaWxlU2l6ZTtcclxuICAgIHRoaXMuYWxsb3dlZEZpbGVUeXBlcyA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5hbGxvd2VkRmlsZVR5cGVzID8/IHRoaXMuYWxsb3dlZEZpbGVUeXBlcztcclxuICAgIHRoaXMuaXNBbGxvd0FueUZpbGVUeXBlID1cclxuICAgICAgdGhpcy5jb25maWc/LmlzQWxsb3dBbnlGaWxlVHlwZSA/PyB0aGlzLmlzQWxsb3dBbnlGaWxlVHlwZTtcclxuICAgIHRoaXMuYWxpZ25Ccm93c2VkRmlsZXMgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uYWxpZ25Ccm93c2VkRmlsZXMgPz8gdGhpcy5hbGlnbkJyb3dzZWRGaWxlcztcclxuICAgIHRoaXMuaXNVcGxvYWRCdXR0b25OZWVkZWQgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uaXNVcGxvYWRCdXR0b25OZWVkZWQgPz8gdGhpcy5pc1VwbG9hZEJ1dHRvbk5lZWRlZDtcclxuICAgIHRoaXMuYWN0aW9uQnV0dG9uQWxpZ24gPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uYWN0aW9uQnV0dG9uQWxpZ24gPz8gdGhpcy5hY3Rpb25CdXR0b25BbGlnbjtcclxuICAgIHRoaXMuYWxpZ25GaWxlVXBsb2FkRXJyb3JNZXNzYWdlVG8gPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uYWxpZ25GaWxlVXBsb2FkRXJyb3JNZXNzYWdlVG8gPz9cclxuICAgICAgdGhpcy5hbGlnbkZpbGVVcGxvYWRFcnJvck1lc3NhZ2VUbztcclxuICAgIHRoaXMuZ2V0QWxsb3dlZEZpbGVGb3JtYXRTaXplTWVzc2FnZSgpO1xyXG4gICAgdGhpcy5maWxlVXBsb2FkSGVhZGluZyA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5maWxlVXBsb2FkSGVhZGluZyA/P1xyXG4gICAgICB0aGlzLmZpbGVVcGxvYWRIZWFkaW5nID8/XHJcbiAgICAgIHRoaXMuZmlsZVVwbG9hZExhYmVsLmZpbGVVcGxvYWQ7XHJcbiAgICB0aGlzLmNvbmZpZy5hbGxvd2VkRmlsZVR5cGVFcnJvck1lc3NhZ2UgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8uYWxsb3dlZEZpbGVUeXBlRXJyb3JNZXNzYWdlID8/XHJcbiAgICAgIHRoaXMuYWxsb3dlZEZpbGVUeXBlRXJyb3JNZXNzYWdlO1xyXG4gICAgdGhpcy5jb25maWcubWF4RmlsZVNpemVFcnJvck1lc3NhZ2UgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8ubWF4RmlsZVNpemVFcnJvck1lc3NhZ2UgPz8gdGhpcy5tYXhGaWxlU2l6ZUVycm9yTWVzc2FnZTtcclxuICAgIHRoaXMuaXNGaWxlU2VsZWN0ZWQgPSB0aGlzLmNvbmZpZz8uaXNGaWxlU2VsZWN0ZWQgPz8gdGhpcy5pc0ZpbGVTZWxlY3RlZDtcclxuICAgIHRoaXMubWF4RmlsZXNVcGxvYWRlZE9uY2UgPVxyXG4gICAgICB0aGlzLmNvbmZpZz8ubWF4RmlsZXNVcGxvYWRlZE9uY2UgPz8gdGhpcy5tYXhGaWxlc1VwbG9hZGVkT25jZTtcclxuICAgIHRoaXMubWF4RmlsZXNVcGxvYWRMaW1pdEVycm9yTWVzc2FnZSA9XHJcbiAgICAgIHRoaXMuY29uZmlnPy5tYXhGaWxlc1VwbG9hZExpbWl0RXJyb3JNZXNzYWdlID8/XHJcbiAgICAgIHRoaXMubWF4RmlsZXNVcGxvYWRMaW1pdEVycm9yTWVzc2FnZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRm9ybWF0cyBhbGxvd2VkIGZpbGUgZm9ybWF0IGFuZCBzaXplIG1lc3NhZ2UgaW4gcmVxdWlyZWQgZm9ybWF0LlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0QWxsb3dlZEZpbGVGb3JtYXRTaXplTWVzc2FnZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN1cHBvcnRlZEZpbGVGb3JtYXRUZXh0ID0gdGhpcy5hbGxvd2VkRmlsZVR5cGVzLmpvaW4oJywgJyk7XHJcbiAgICB0aGlzLmFsbG93ZWRGaWxlVHlwZXNBbmRTaXplVGV4dCA9IGAke3RoaXMuZmlsZVVwbG9hZExhYmVsPy5hbGxvd2VkRmlsZVNpemUxfVxyXG4gICAgJHt0aGlzLm1heFVwbG9hZEZpbGVTaXplfWA7XHJcbiAgICBpZiAodGhpcy5pc011bHRpRmlsZVVwbG9hZCkge1xyXG4gICAgICB0aGlzLmFsbG93ZWRGaWxlVHlwZXNBbmRTaXplVGV4dCArPSBgICR7dGhpcy5jb25zdGFudHM/LmZpbGVVcGxvYWQ/LmxhYmVsPy5tYn1gO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmlzQWxsb3dBbnlGaWxlVHlwZSkge1xyXG4gICAgICB0aGlzLmFsbG93ZWRGaWxlVHlwZXNBbmRTaXplVGV4dCArPSBgJHt0aGlzLmZpbGVVcGxvYWRMYWJlbD8uYWxsb3dlZEZpbGVTaXplMn0gJHt0aGlzLmZpbGVVcGxvYWRMYWJlbD8uYWxsb3dlZEZpbGVGb3JtYXR9ICR7c3VwcG9ydGVkRmlsZUZvcm1hdFRleHR9LmA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIHNlbGVjdGVkIGZpbGUocykgYW5kIGVtaXRzIEZpbGVVcGxvYWQgZXZlbnQgZW1pdHRlciBmb3IgdXBsb2FkaW5nIHRoZSBmaWxlKHMpLlxyXG4gICAqIEBwYXJhbSB7KEZpbGUgfCBGaWxlTGlzdCl9IGZpbGVcclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEZpbGUoZmlsZTogRmlsZSB8IEZpbGVMaXN0KTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsZXMgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWxlTmFtZXMgPSAnJztcclxuICAgIHRoaXMuZmlsZVVwbG9hZFN0YXR1cyA9IHtcclxuICAgICAgYWxyZWFkeUV4aXN0c0ZpbGVzOiBbXSxcclxuICAgICAgZmlsZXNOYW1lT2ZVcGxvYWRGYWlsZWQ6IFtdLFxyXG4gICAgICBub09mRmlsZXNVcGxvYWRlZFN1Y2Nlc3NmdWxseTogMCxcclxuICAgICAgaXNVcGxvYWRpbmdTdGFydDogZmFsc2UsXHJcbiAgICAgIHVwbG9hZGVkRmlsZXM6IHRoaXMuZmlsZVVwbG9hZFN0YXR1cz8udXBsb2FkZWRGaWxlcyA/PyBbXSxcclxuICAgIH07XHJcbiAgICBjb25zdCBmaWxlVXBsb2FkRm9ybUNvbnRyb2wgPSB0aGlzLmdyb3VwPy5nZXQoXHJcbiAgICAgIHRoaXMuY29uZmlnPy5jb250cm9sTmFtZSA/PyAnZmlsZVVwbG9hZCdcclxuICAgICk7XHJcbiAgICBpZiAoZmlsZVVwbG9hZEZvcm1Db250cm9sKSB7XHJcbiAgICAgIGZpbGVVcGxvYWRGb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNNdWx0aUZpbGVVcGxvYWQpIHtcclxuICAgICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGVGaWxlKGZpbGUpO1xyXG4gICAgICB0aGlzLmlzRmlsZVNlbGVjdGVkID0gaXNWYWxpZDtcclxuICAgICAgaWYgKGlzVmFsaWQpIHtcclxuICAgICAgICBpZiAoZmlsZSkge1xyXG4gICAgICAgICAgT2JqZWN0LnZhbHVlcyhmaWxlKS5mb3JFYWNoKChmaWxlSXRlbTogRmlsZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZXM/LnB1c2goZmlsZUl0ZW0pO1xyXG4gICAgICAgICAgICB0aGlzLnRvdGFsU2l6ZSArPSBmaWxlSXRlbS5zaXplO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGVzPy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZEZpbGVzTmFtZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZXM/LmZvckVhY2goKGZpbGU6IEZpbGUsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIHNlbGVjdGVkRmlsZXNOYW1lcy5wdXNoKGZpbGUubmFtZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGVOYW1lcyA9IHNlbGVjdGVkRmlsZXNOYW1lcz8uam9pbignLCAnKS50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBcclxuICAgICAgICAgIC5nZXQodGhpcy5jb25maWc/LmNvbnRyb2xOYW1lKVxyXG4gICAgICAgICAgPy5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkRmlsZU5hbWVzKTtcclxuICAgICAgICB0aGlzLmZpbGVVcGxvYWRCdG4uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5pc0Zvcm1GaWVsZClcclxuICAgICAgICAgIHRoaXMudXBsb2FkU2VsZWN0ZWRGaWxlcz8uZW1pdCh0aGlzLnNlbGVjdGVkRmlsZXMpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBmaWxlSXRlbSA9IE9iamVjdC52YWx1ZXMoZmlsZSlbMF07XHJcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLnZhbGlkYXRlRmlsZShmaWxlSXRlbSk7XHJcbiAgICAgIGlmIChpc1ZhbGlkKSB7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGVTZWxlY3RlZCA9IGlzVmFsaWQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGVOYW1lcyA9IGZpbGVJdGVtLm5hbWU7XHJcbiAgICAgICAgdGhpcy50b3RhbFNpemUgPSBmaWxlSXRlbS5zaXplO1xyXG4gICAgICAgIHRoaXMuZmlsZVVwbG9hZFNlcnZpY2U/LmNvbnZlcnRGaWxlVG9CeXRlQXJyYXkoZmlsZUl0ZW0pO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBcclxuICAgICAgICAgIC5nZXQodGhpcy5jb25maWcuY29udHJvbE5hbWUpXHJcbiAgICAgICAgICA/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRGaWxlTmFtZXMpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzRm9ybUZpZWxkKSB0aGlzLnVwbG9hZFNlbGVjdGVkRmlsZXMuZW1pdChmaWxlSXRlbSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGVzID0gZmlsZTtcclxuICAgICAgICB0aGlzLmZpbGVVcGxvYWRCdG4uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBWYWxpZGF0ZXMgdGhlIHNlbGVjdGVkIGZpbGUocykgZm9ybWF0IGFuZCBzaXplLlxyXG4gICAqIEBwYXJhbSB7KEZpbGUgfCBGaWxlTGlzdCl9IGZpbGVcclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdmFsaWRhdGVGaWxlKGZpbGU6IEZpbGUgfCBGaWxlTGlzdCk6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy5pc1ZhbGlkRmlsZVR5cGUgPSAhdGhpcy5pc0FsbG93QW55RmlsZVR5cGVcclxuICAgICAgPyB0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlLnZhbGlkYXRlRmlsZVR5cGVzKFxyXG4gICAgICAgICAgZmlsZSxcclxuICAgICAgICAgIHRoaXMuYWxsb3dlZEZpbGVUeXBlcyxcclxuICAgICAgICAgIHRoaXMuaXNNdWx0aUZpbGVVcGxvYWRcclxuICAgICAgICApXHJcbiAgICAgIDogdHJ1ZTtcclxuICAgIGlmICh0aGlzLmlzTXVsdGlGaWxlVXBsb2FkKSB7XHJcbiAgICAgIHRoaXMuaXNWYWxpZE1heEZpbGVVcGxvYWRMaW1pdCA9XHJcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhmaWxlKS5sZW5ndGggPD1cclxuICAgICAgICB0aGlzLmNvbnN0YW50cz8uZmlsZVVwbG9hZD8ubGltaXQ/Lm1heEZpbGVzVXBsb2FkZWRPbmNlO1xyXG4gICAgICBpZiAoIXRoaXMuaXNWYWxpZE1heEZpbGVVcGxvYWRMaW1pdCkge1xyXG4gICAgICAgIHRoaXMuZ3JvdXA/LmdldCh0aGlzLmNvbmZpZz8uY29udHJvbE5hbWUpPy5zZXRFcnJvcnMoe1xyXG4gICAgICAgICAgbWF4RmlsZXNVcGxvYWRMaW1pdFJlYWNoZWQ6IHRydWUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuaXNWYWxpZEZpbGVUeXBlKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXA/LmdldCh0aGlzLmNvbmZpZz8uY29udHJvbE5hbWUpPy5zZXRFcnJvcnMoe1xyXG4gICAgICAgIGludmFsaWRGaWxlVHlwZTogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNWYWxpZEZpbGVTaXplID0gdGhpcy5maWxlVXBsb2FkU2VydmljZS52YWxpZGF0ZUZpbGVTaXplKFxyXG4gICAgICBmaWxlLFxyXG4gICAgICB0aGlzLm1heFVwbG9hZEZpbGVTaXplLFxyXG4gICAgICB0aGlzLmlzTXVsdGlGaWxlVXBsb2FkXHJcbiAgICApO1xyXG4gICAgaWYgKCF0aGlzLmlzVmFsaWRGaWxlU2l6ZSkge1xyXG4gICAgICB0aGlzLmdyb3VwPy5nZXQodGhpcy5jb25maWc/LmNvbnRyb2xOYW1lKT8uc2V0RXJyb3JzKHtcclxuICAgICAgICBtYXhGaWxlU2l6ZTogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJbml0aWF0ZXMgdGhlIGZpbGUgdXBsb2FkIHByb2Nlc3MgZm9yIGluZGVwZW5kZW50IGZpbGUgdXBsb2FkIGNvbXBvbmVudC5cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uVXBsb2FkKCk6IHZvaWQge1xyXG4gICAgdGhpcy51cGxvYWRTZWxlY3RlZEZpbGVzLmVtaXQodGhpcy5zZWxlY3RlZEZpbGVzKTtcclxuICAgIGlmICh0aGlzLmZpbGVVcGxvYWRTZXJ2aWNlPy5nZXRGaWxlVXBsb2FkU3RhdHVzKCkpIHtcclxuICAgICAgdGhpcy51cGxvYWRlZEZpbGVzID0gdGhpcy5zZWxlY3RlZEZpbGVzO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBDbGVhcnMgdGhlIGZvcm0gZ3JvdXAgY29udHJvbCB2YWx1ZSBvZiB0eXBlIGlucHV0IGFuZCByZXNldHMgb3RoZXIgZmlsZSB1cGxvYWQgcHJvcGVydGllcy5cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHJlc2V0VXBsb2FkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5maWxlVXBsb2FkU2VydmljZS5jbGVhckZpbGVCeXRlQXJyYXkoKTtcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlcyA9IFtdO1xyXG4gICAgdGhpcy5pc1VwbG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWxlTmFtZXMgPSAnJztcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWxlcyA9IFtdO1xyXG4gICAgdGhpcy5pc0ZpbGVTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5ncm91cC5nZXQodGhpcy5jb25maWc/LmNvbnRyb2xOYW1lKT8uc2V0VmFsdWUoJycpO1xyXG4gICAgdGhpcy5maWxlVXBsb2FkQnRuLmRpc2FibGVkID0gdHJ1ZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlcyB0aGUgc2VsZWN0ZWQgZmlsZSBmcm9tIHRoZSB1cGxvYWRlZCBmaWxlcyBsaXN0LlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25EZWxldGVGaWxlKGZpbGU6IEZpbGUsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMudG90YWxTaXplID0gMDtcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBGb3IgdGFiIGtleSBrZXlkb3duIGV2ZW50IGl0IHBhc3NlcyBldmVudCBhbmQgcmVzdHJpY3RzIG90aGVyIGtleXMgZnJvbSBrZXlib2FyZC5cclxuICAgKiBAcGFyYW0ge0tleWJvYXJkRXZlbnR9IGV2ZW50IC1LZXlkb3duIGV2ZW50IG9iamVjdC5cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ1RhYicpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGRvd25sb2FkU2VsZWN0ZWRGaWxlIGV2ZW50LlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZG93bmxvYWRGaWxlKGZpbGU6IEZpbGUgfCBEb3dubG9hZEF0dGFjaG1lbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZG93bmxvYWRTZWxlY3RlZEZpbGUuZW1pdChmaWxlKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGZpbGUgbGlzdC5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcclxuICAgKiBAcmV0dXJuIHsobnVtYmVyIHwgc3RyaW5nKX1cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKTogbnVtYmVyIHwgc3RyaW5nIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVHJpZ2dlcnMgYW5kIG9wZW5zIHRoZSBmaWxlIGJyb3dzZSB3aW5kb3cgd2hlbiB0aGUgQnJvd3NlIGJ1dHRvbiBpcyBjbGlja2VkLlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZmlsZUNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5maWxlRmllbGQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBmYWlsZWQgZmlsZSBuYW1lcyB3aXRoIGNvbW1hIHNlcGFyYXRpb24uXHJcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gZmlsZU5hbWVzXHJcbiAgICogQHJldHVybiB7Kn0gIHtzdHJpbmd9XHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcclxuICAgKi9cclxuICBkaXNwbGF5RmlsZU5hbWVzKGZpbGVOYW1lczogc3RyaW5nW10pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGZpbGVOYW1lcyAmJiBmaWxlTmFtZXMubGVuZ3RoID8gZmlsZU5hbWVzLmpvaW4oJywnKSA6ICcnO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZW1vdmVzIHRoZSB1bnNlbGVjdGVkIGZpbGUgZnJvbSB0aGUgYnJvd3NlZCBvciBzZWxlY3RlZCBmaWxlcyBhbmQgZW1pdHMgdXBsb2FkU2VsZWN0ZWRGaWxlcyBldmVudCB3aXRoIHRoZSBzZWxlY3RlZCBmaWxlcy5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHJlbW92ZUZpbGUoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICBjb25zdCBmaWxlTmFtZXM6IHN0cmluZ1tdID0gdGhpcy5zZWxlY3RlZEZpbGVOYW1lcy5zcGxpdCgnLCcpO1xyXG4gICAgZmlsZU5hbWVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsZU5hbWVzID0gZmlsZU5hbWVzLmpvaW4oJywnKTtcclxuICAgIHRoaXMudXBsb2FkU2VsZWN0ZWRGaWxlcy5lbWl0KHRoaXMuc2VsZWN0ZWRGaWxlcyk7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLnJlc2V0VXBsb2FkKCk7XHJcbiAgICAgIHRoaXMuZmlsZVVwbG9hZFN0YXR1cy5ub09mRmlsZXNVcGxvYWRlZFN1Y2Nlc3NmdWxseSA9IDA7XHJcbiAgICAgIHRoaXMuZmlsZVVwbG9hZFN0YXR1cy5maWxlc05hbWVPZlVwbG9hZEZhaWxlZCA9IFtdO1xyXG4gICAgICB0aGlzLmZpbGVVcGxvYWRTdGF0dXMuYWxyZWFkeUV4aXN0c0ZpbGVzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIGZpbGUgdXBsb2FkIGJ1dHRvbi5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgY2FuRW5hYmxlVXBsb2FkQnV0dG9uKGVuYWJsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc1VwbG9hZEJ1dHRvbkRpc2FibGVkID0gZW5hYmxlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBCYXNlZCBvbiBpc011bHRpRmlsZVVwbG9hZCBmbGFnIHJldHVybiBmaWxlcyB0byBkb3dubG9hZC5cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEZpbGVzVG9Eb3dubG9hZCgpOiBEb3dubG9hZEF0dGFjaG1lbnRbXSB7XHJcbiAgICBpZiAodGhpcy5pc011bHRpRmlsZVVwbG9hZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5maWxlVXBsb2FkU3RhdHVzLnVwbG9hZGVkRmlsZXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy51cGxvYWRlZEZpbGVzO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBUcmFja0J5RnVuY3Rpb24gaXMgY2FsbGVkIGZvciBlYWNoIGZpbGUgaW4gdGhlIGNvbGxlY3Rpb24gYW5kIHJldHVybiBhIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGF0IGZpbGUuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XHJcbiAgICogQHBhcmFtIHtGaWxlfSBmaWxlXHJcbiAgICogQHJldHVybiB7RmlsZX1cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHRyYWNrQnlGdW5jKGluZGV4OiBudW1iZXIsIGZpbGU6IEZpbGUpOiBGaWxlIHtcclxuICAgIHJldHVybiBmaWxlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIGVtcHR5IHZhbHVlIHRvIGZpbGUgZm9ybSBjb250cm9sIG9uY2UgaXQgaXMgY2xpY2tlZC5cclxuICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudFxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2V0RW1wdHlWYWx1ZShldmVudDogRXZlbnQpIHtcclxuICAgIChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUgPSAnJztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlcyB0aGUgZmlsZSBmcm9tIHNlbGVjdGVkRmlsZXMgb25jZSB0aGUgZmlsZSB1cGxvYWRlZCBzdWNjZXNzZnVsbHkgdG8gQVdTIFMzLlxyXG4gICAqIEBwYXJhbSB7RmlsZX0gZmlsZVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcmVtb3ZlU2VsZWN0ZWRGaWxlSW5VcGxvYWRlZEZpbGVzKGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEZpbGVzLmZpbmRJbmRleChcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgKHNlbGVjdGVkRmlsZTogYW55KSA9PiBzZWxlY3RlZEZpbGUubmFtZSA9PT0gZmlsZU5hbWVcclxuICAgICk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgY291bnQgb2YgZmlsZXMgc2VsZWN0ZWQgZm9yIHRoZSB1cGxvYWQuXHJcbiAgICogQHJldHVybiB7bnVtYmVyfVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0U2VsZWN0ZWRGaWxlQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRmlsZU5hbWVzLnNwbGl0KCcsICcpLmxlbmd0aDtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIlxyXG4gIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkXCJcclxuICBbbmdDbGFzc109XCJcclxuICAgIGNvbmZpZy5pc0xhYmVsQWxpZ25lZExlZnRcclxuICAgICAgPyAnaWVlZXNhLWZpbGUtdXBsb2FkX19sYWJlbC1sZWZ0J1xyXG4gICAgICA6ICdpZWVlc2EtZmlsZS11cGxvYWRfX2xhYmVsLXRvcCdcclxuICBcIlxyXG4+XHJcbiAgPG1hdC1sYWJlbCBjbGFzcz1cImllZWVzYS1ib2R5LXNtLTE0IGllZWVzYS1maWxlLXVwbG9hZF9fbGFiZWxcIj57e1xyXG4gICAgY29uZmlnLmxhYmVsXHJcbiAgfX08L21hdC1sYWJlbD5cclxuICA8aWVlZXNhLWZpbGUtZG93bmxvYWRcclxuICAgIFtmaWxlRG93bmxvYWRBbmREZWxldGVDb25maWddPVwiZmlsZURvd25sb2FkQW5kRGVsZXRlQ29uZmlnXCJcclxuICAgIFthcGlCYXNlVXJsXT1cImFwaUJhc2VVcmxcIlxyXG4gICAgW2Rvd25sb2FkRmlsZXNdPVwiZ2V0RmlsZXNUb0Rvd25sb2FkKClcIlxyXG4gICAgKGRvd25sb2FkU2VsZWN0ZWRGaWxlKT1cImRvd25sb2FkRmlsZSgkZXZlbnQpXCJcclxuICA+PC9pZWVlc2EtZmlsZS1kb3dubG9hZD5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fdXBsb2FkIHAtNFwiXHJcbiAgICBpZWVlc2FGaWxlVXBsb2FkXHJcbiAgICAoZmlsZURyb3BwZWQpPVwiZ2V0RmlsZSgkZXZlbnQpXCJcclxuICA+XHJcbiAgICA8cCBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fdXBsb2FkX19oZWFkaW5nIG0tMCBpZWVlc2EtbGFiZWwtbGctYm9sZC0xNlwiPlxyXG4gICAgICB7eyBmaWxlVXBsb2FkSGVhZGluZyB9fVxyXG4gICAgPC9wPlxyXG4gICAgPGRpdiBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fdXBsb2FkX19icm93c2UtZmlsZXNcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAoY2xpY2spPVwiZmlsZUNsaWNrKClcIlxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX19icm93c2UtYnRuIG1hdC10ZXJ0aWFyeS1idXR0b25cIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmlsZVVwbG9hZEFyaWFMYWJlbC5icm93c2VGaWxlc1wiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZpbGVVcGxvYWRTdGF0dXM/LmlzVXBsb2FkaW5nU3RhcnRcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgZmlsZVVwbG9hZExhYmVsLmJyb3dzZUZpbGVzIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNdWx0aUZpbGVVcGxvYWRcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICNmaWxlRmllbGRcclxuICAgICAgICAgIChjaGFuZ2UpPVwiZ2V0RmlsZSgkYW55KCRldmVudCkudGFyZ2V0LmZpbGVzKVwiXHJcbiAgICAgICAgICBoaWRkZW5cclxuICAgICAgICAgIFthY2NlcHRdPVwiYWxsb3dlZEZpbGVUeXBlc1wiXHJcbiAgICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZmlsZVVwbG9hZFN0YXR1cz8uaXNVcGxvYWRpbmdTdGFydFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2V0RW1wdHlWYWx1ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIidpZWVlc2EtZmlsZS1pbnB1dCdcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTXVsdGlGaWxlVXBsb2FkXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgICAjZmlsZUZpZWxkXHJcbiAgICAgICAgICAoY2hhbmdlKT1cImdldEZpbGUoJGFueSgkZXZlbnQpLnRhcmdldC5maWxlcylcIlxyXG4gICAgICAgICAgaGlkZGVuXHJcbiAgICAgICAgICBbYWNjZXB0XT1cImFsbG93ZWRGaWxlVHlwZXNcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZpbGVVcGxvYWRTdGF0dXM/LmlzVXBsb2FkaW5nU3RhcnRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNldEVtcHR5VmFsdWUoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCInaWVlZXNhLWZpbGUtaW5wdXQnXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDxwXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX2FsbG93ZWQtZmlsZS10ZXh0IG0tMCBpZWVlc2EtbGFiZWwtbWQtMTRcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWxsb3dlZEZpbGVUeXBlc0FuZFNpemVUZXh0XCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IGFsbG93ZWRGaWxlVHlwZXNBbmRTaXplVGV4dCB9fVxyXG4gICAgICA8L3A+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3VwbG9hZC13cmFwcGVyIGQtZmxleFwiXHJcbiAgICAgICpuZ0lmPVwiaXNGaWxlU2VsZWN0ZWRcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJhbGlnbkJyb3dzZWRGaWxlc1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkZWZhdWx0J1wiPlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fdXBsb2FkLXdyYXBwZXJfX2lucHV0LWZpZWxkIGllZWVzYS1ib2R5LWxnLTE2XCJcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3RlZEZpbGVOYW1lc1wiXHJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbmZpZy5wbGFjZWhvbGRlciA/PyAnJ1wiXHJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb25maWcuY29udHJvbE5hbWVcIlxyXG4gICAgICAgICAgICAgIFtuYW1lXT1cImNvbmZpZy5jb250cm9sTmFtZVwiXHJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcclxuICAgICAgICAgICAgICAgIGNvbmZpZy5hcmlhTGFiZWwgPz8gZmlsZVVwbG9hZEFyaWFMYWJlbC5maWxlVXBsb2FkSW5wdXRcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFthcmlhLWRlc2NyaWJlZGJ5XT1cImNvbmZpZy5hcmlhRGVzY3JpYmVkQnlJZCA/PyAnJ1wiXHJcbiAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX191cGxvYWQtd3JhcHBlci0tY2xlYXItaWNvbi1idG5cIlxyXG4gICAgICAgICAgICAgIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmlsZVVwbG9hZEFyaWFMYWJlbC5yZW1vdmVGaWxlSWNvblwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlc2V0VXBsb2FkKClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEtcmVndWxhciBmYS1jaXJjbGUteG1hcmsgaWVlZXNhLWlucHV0LWZpZWxkLXVwbG9hZF9faWNvbi0tY2xlYXJcIlxyXG4gICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3VwbG9hZC13cmFwcGVyLS11cGxvYWQtYnRuIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICBbaWNvbkJ1dHRvbl09XCJmaWxlVXBsb2FkQnRuXCJcclxuICAgICAgICAgICAgW2lzTGFiZWxOZWVkZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9uVXBsb2FkKClcIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiFpc0Zvcm1GaWVsZFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYm90dG9tJ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImllZWVzYS1kaXNwbGF5LWJyb3dzZWQtZmlsZXMtYm90dG9tXCI+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX19wcm9ncmVzc19fdGV4dFwiPlxyXG4gICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICBmaWxlVXBsb2FkU3RhdHVzLm5vT2ZGaWxlc1VwbG9hZGVkU3VjY2Vzc2Z1bGx5ICtcclxuICAgICAgICAgICAgICAgICAgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgICBmaWxlVXBsb2FkTGFiZWw/Lm9mICtcclxuICAgICAgICAgICAgICAgICAgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgICBnZXRTZWxlY3RlZEZpbGVDb3VudCgpICtcclxuICAgICAgICAgICAgICAgICAgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgICBmaWxlVXBsb2FkTGFiZWw/LmZpbGVzVXBsb2FkZWRcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPHBcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHB0LTEgbS0wIGllZWVzYS1sYWJlbC1tZC0xNCBhbGlnbi1pdGVtcy1jZW50ZXIgaWVlZXNhLWRpc3BsYXktc2VsZWN0ZWQtZmlsZXNcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBmaWxlIG9mIHNlbGVjdGVkRmlsZXM7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGdW5jXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IGZpbGU/Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX191cGxvYWQtd3JhcHBlci0tY2xlYXItaWNvbi1idG5cIlxyXG4gICAgICAgICAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmlsZVVwbG9hZEFyaWFMYWJlbC5yZW1vdmVGaWxlSWNvblwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGaWxlKGkpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtY2lyY2xlLXhtYXJrIGllZWVzYS1pbnB1dC1maWVsZC11cGxvYWRfX2ljb24tLWNsZWFyXCJcclxuICAgICAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJmaWxlVXBsb2FkU3RhdHVzPy5maWxlc05hbWVPZlVwbG9hZEZhaWxlZD8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fZXJyb3JfX3RleHRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgIGZpbGVVcGxvYWRMYWJlbD8udXBsb2FkRm9yICtcclxuICAgICAgICAgICAgICAgICAgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5RmlsZU5hbWVzKGZpbGVVcGxvYWRTdGF0dXMuZmlsZXNOYW1lT2ZVcGxvYWRGYWlsZWQpICtcclxuICAgICAgICAgICAgICAgICAgXCIgXCIgK1xyXG4gICAgICAgICAgICAgICAgICBmaWxlVXBsb2FkTGFiZWw/LnVwbG9hZEVycm9yTXNnXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiZmlsZVVwbG9hZFN0YXR1cz8uYWxyZWFkeUV4aXN0c0ZpbGVzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX19lcnJvcl9fdGV4dFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheUZpbGVOYW1lcyhmaWxlVXBsb2FkU3RhdHVzLmFscmVhZHlFeGlzdHNGaWxlcykgK1xyXG4gICAgICAgICAgICAgICAgICBcIiBcIiArXHJcbiAgICAgICAgICAgICAgICAgIGZpbGVVcGxvYWRMYWJlbD8uZmlsZUFscmVhZHlFeGlzdHNcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNGb3JtRmllbGRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImllZWVzYS1maWxlLXVwbG9hZF9fcHJvZ3Jlc3NcIiAqbmdJZj1cImlzVXBsb2FkSW5Qcm9ncmVzc1wiPlxyXG4gICAgICAgIDxwIGNsYXNzPVwiaWVlZXNhLWZpbGUtdXBsb2FkX19wcm9ncmVzc19fdGV4dFwiPlxyXG4gICAgICAgICAge3sgZmlsZVVwbG9hZExhYmVsPy51cGxvYWRQcm9ncmVzcyB9fVxyXG4gICAgICAgIDwvcD5cclxuICAgICAgICA8bWF0LXByb2dyZXNzLWJhclxyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtZmlsZS11cGxvYWRfX3Byb2dyZXNzLS1iYXJcIlxyXG4gICAgICAgICAgbW9kZT1cImRldGVybWluYXRlXCJcclxuICAgICAgICAgIFt2YWx1ZV09XCJ1cGxvYWRlZFNpemVcIlxyXG4gICAgICAgID48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8aWVlZXNhLWZvcm0tZXJyb3JcclxuICAgICAgKm5nSWY9XCJhbGlnbkZpbGVVcGxvYWRFcnJvck1lc3NhZ2VUbyA9PT0gYWxpZ25tZW50VHlwZS5NSURETEVcIlxyXG4gICAgICBbZm9ybUdyb3VwXT1cImdyb3VwXCJcclxuICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxyXG4gICAgPjwvaWVlZXNhLWZvcm0tZXJyb3I+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiaXNVcGxvYWRCdXR0b25OZWVkZWQgJiYgaXNGaWxlU2VsZWN0ZWRcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAnanVzdGlmeS1jb250ZW50LWVuZCc6IGFjdGlvbkJ1dHRvbkFsaWduID09PSBhbGlnbm1lbnRUeXBlLkxFRlQsXHJcbiAgICAgICAgICAnanVzdGlmeS1jb250ZW50LWNlbnRlcic6IGFjdGlvbkJ1dHRvbkFsaWduID09PSBhbGlnbm1lbnRUeXBlLk1JRERMRSxcclxuICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQtc3RhcnQnOiBhY3Rpb25CdXR0b25BbGlnbiA9PT0gYWxpZ25tZW50VHlwZS5SSUdIVCxcclxuICAgICAgICB9XCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICBjbGFzcz1cIm1hdC1wcmltYXJ5LWJ1dHRvbiBpZWVlc2EtZHluYW1pYy1mb3JtX19hY3Rpb25zLS1yaWdodC1idG5cIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJcclxuICAgICAgICAgICFpc0ZpbGVTZWxlY3RlZCB8fFxyXG4gICAgICAgICAgZmlsZVVwbG9hZFN0YXR1cy5pc1VwbG9hZGluZ1N0YXJ0IHx8XHJcbiAgICAgICAgICBmaWxlVXBsb2FkU3RhdHVzLm5vT2ZGaWxlc1VwbG9hZGVkU3VjY2Vzc2Z1bGx5ID4gMFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBmaWxlVXBsb2FkTGFiZWw/LnVwbG9hZCB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuPGllZWVzYS1mb3JtLWVycm9yXHJcbiAgKm5nSWY9XCJhbGlnbkZpbGVVcGxvYWRFcnJvck1lc3NhZ2VUbyA9PT0gYWxpZ25tZW50VHlwZS5CT1RUT01cIlxyXG4gIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIlxyXG4gIFtjb25maWddPVwiY29uZmlnXCJcclxuPjwvaWVlZXNhLWZvcm0tZXJyb3I+XHJcbjxpZWVlc2EtZm9ybS1zdXBwb3J0LXRleHRcclxuICBbZm9ybUdyb3VwXT1cImdyb3VwXCJcclxuICBbY29uZmlnXT1cImNvbmZpZ1wiXHJcbj48L2llZWVzYS1mb3JtLXN1cHBvcnQtdGV4dD5cclxuIl19
|