@ieeesa-npm/presentation 0.27.3 → 0.27.4

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.
@@ -135,7 +135,7 @@ export class ListComponent {
135
135
  });
136
136
  }
137
137
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
138
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ListComponent, isStandalone: true, selector: "ieeesa-list", inputs: { listDataItems: "listDataItems", listHeaderConfig: "listHeaderConfig", indentation: "indentation", addListButtonConfig: "addListButtonConfig", fileDownloadConfig: "fileDownloadConfig" }, outputs: { selectedItemAndAction: "selectedItemAndAction", reorderedList: "reorderedList", hyperLinkAndButtonClick: "hyperLinkAndButtonClick", downloadSelectedFile: "downloadSelectedFile", domChangeEvent: "domChangeEvent" }, ngImport: i0, template: "<div class=\"ieeesa-list-container\">\r\n <div class=\"d-flex\">\r\n <div>\r\n <p *ngIf=\"listHeader?.title\" class=\"ieeesa-title-lg-24 mb-0\">\r\n {{ listHeader.title }}\r\n </p>\r\n <p\r\n *ngIf=\"listHeader?.description\"\r\n class=\"ieeesa-body-md-14 ieeesa-list-description\"\r\n [innerHTML]=\"listHeader.description | safe : safeType\"\r\n ieeesaObserveDomChange\r\n (domChange)=\"onDomChange($event)\"\r\n ></p>\r\n </div>\r\n <ieeesa-icon-button\r\n class=\"ieeesa-add-icon-button\"\r\n *ngIf=\"listHeader?.canShowAddList\"\r\n [iconButton]=\"addListButton\"\r\n (iconButtonClick)=\"onClickAddItem()\"\r\n [ngClass]=\"\r\n addListButton?.disabled\r\n ? 'ieeesa-list-container__actions--disabled'\r\n : ''\r\n \"\r\n ></ieeesa-icon-button>\r\n </div>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n recursiveList;\r\n context: { $implicit: listItems, itemLevel: 0 }\r\n \"\r\n >\r\n </ng-container>\r\n</div>\r\n<ng-template #recursiveList let-items let-itemLevel=\"itemLevel\">\r\n <mat-list class=\"ieeesa-list-item\">\r\n <ng-container\r\n *ngFor=\"let item of items; let index = index; trackBy: trackByFn\"\r\n >\r\n <div\r\n class=\"ieeesa-list-item-container d-flex\"\r\n [style.marginLeft.px]=\"itemLevel * indentation\"\r\n >\r\n <mat-list-item\r\n [ngClass]=\"{\r\n 'ieeesa-list-item__root-level-item': itemLevel === 0,\r\n 'ieeesa-list-item__subitem': itemLevel > 0\r\n }\"\r\n >\r\n <span class=\"ieeesa-list-item__item d-flex\">\r\n <span class=\"list-number\">\r\n {{ item?.position }}\r\n </span>\r\n <span>\r\n <span class=\"item-name d-block\">{{ item?.title }}</span>\r\n <span\r\n class=\"ieeesa-list-item__desc d-block\"\r\n *ngIf=\"item?.description\"\r\n >\r\n {{ item?.description }}\r\n </span>\r\n <ieeesa-file-download\r\n [fileDownloadConfig]=\"fileDownloadConfig\"\r\n [downloadFiles]=\"item?.attachments\"\r\n (downloadSelectedFile)=\"downloadFile($event)\"\r\n ></ieeesa-file-download>\r\n </span>\r\n </span>\r\n <span class=\"ieeesa-menu__action\">\r\n <ieeesa-menu\r\n *ngIf=\"item?.actionMenus\"\r\n class=\"ieeesa-menu__icon\"\r\n [button]=\"item?.actionIcon\"\r\n [menuItems]=\"item?.actionMenus\"\r\n (menuItemClick)=\"selectedMenuAction($event, item)\"\r\n ></ieeesa-menu>\r\n </span>\r\n </mat-list-item>\r\n </div>\r\n <ng-container *ngIf=\"item?.subItems\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n recursiveList;\r\n context: {\r\n $implicit: item.subItems,\r\n itemLevel: itemLevel + 1\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </mat-list>\r\n</ng-template>\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-list-container .ieeesa-add-icon-button{margin-left:auto;align-self:center}.ieeesa-list-container .ieeesa-add-icon-button .ieeesa-icon-button{padding:0}.ieeesa-list-container .ieeesa-list-description{color:#49454f!important}.ieeesa-list-container .ieeesa-list-description a{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#00629b!important;letter-spacing:.03125em}.ieeesa-list-container .ieeesa-list-description a.disable-link{pointer-events:none;color:#63666a!important}.ieeesa-list-container__actions--disabled .ieeesa-icon-button__svg{fill:#c9c5ca!important}.ieeesa-list-container .ieeesa-list-item{background-color:#f4f5f7;padding:1px 0 0}.ieeesa-list-container .ieeesa-list-item .ieeesa-list-item-container{box-sizing:border-box;border-radius:.25em;background-color:#fff;border-left:.125rem solid #b2b7be;margin-bottom:.0625em;box-shadow:0 1px 2px #0003;min-height:2em;height:auto}.ieeesa-list-container .ieeesa-list-item .ieeesa-list-item-container:has(.ieeesa-list-item__root-level-item){border-left:.125rem solid #00b5e2}.ieeesa-list-container .ieeesa-list-item .mdc-list-item{padding:0;margin-left:.375em}.ieeesa-list-container .ieeesa-list-item .mdc-list-item__content{padding:0}.ieeesa-list-container .ieeesa-list-item .mdc-list-item__content:has(.ieeesa-list-item__desc){margin:.4375em 0}.ieeesa-list-container .ieeesa-list-item .mdc-list-item__content .ieeesa-menu__icon .mdc-icon-button{height:1.5em;width:1.5em;margin-right:.3em}.ieeesa-list-container .ieeesa-list-item .mdc-list-item__content .ieeesa-menu__button{position:relative;left:2px;bottom:2px}.ieeesa-list-container .ieeesa-list-item .mdc-list-item__primary-text:has(.ieeesa-list-item__desc){align-items:flex-start!important}.ieeesa-list-container .ieeesa-list-item__root-level-item .list-number,.ieeesa-list-container .ieeesa-list-item__root-level-item .item-name{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1d1e!important;letter-spacing:.03125em;text-align:left;text-wrap:wrap}.ieeesa-list-container .ieeesa-list-item__subitem .list-number,.ieeesa-list-container .ieeesa-list-item__subitem .item-name{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#1c1d1e!important;letter-spacing:.03125em;text-align:left;text-wrap:wrap}.ieeesa-list-container .ieeesa-list-item__desc{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#63666a!important;letter-spacing:.03125em;text-align:left;text-wrap:wrap!important;word-break:break-word}.ieeesa-list-container .ieeesa-list-item .list-number{margin-right:.5em}.ieeesa-list-container .ieeesa-list-item .item-name{word-break:break-word}.ieeesa-list-container .ieeesa-list-item .mdc-list-item.mdc-list-item--with-one-line,.ieeesa-list-container .ieeesa-list-item .mdc-list-item.mdc-list-item--with-two-lines,.ieeesa-list-container .ieeesa-list-item .mdc-list-item.mdc-list-item--with-three-lines{height:auto}.ieeesa-list-container .ieeesa-list-item .mdc-list-item__secondary-text:before,.ieeesa-list-container .ieeesa-list-item .mdc-list-item--with-two-lines .mdc-list-item__primary-text:before,.ieeesa-list-container .ieeesa-list-item .mdc-list-item--with-three-lines .mdc-list-item__primary-text:before{display:none}.ieeesa-list-container .ieeesa-list-item .mdc-list-item__primary-text{display:flex}.ieeesa-menu__action{margin-left:auto}.ieeesa-menu__icon{float:right}.ieeesa-menu__item:not(:last-of-type){margin-bottom:0!important}@media (max-width: 767px){.ieeesa-list-container .ieeesa-menu__button{top:5px}}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatListModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i2.MatList; }), selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i0.forwardRef(function () { return i2.MatListItem; }), selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatButtonModule; }) }, { kind: "component", type: i0.forwardRef(function () { return MenuComponent; }), selector: "ieeesa-menu", inputs: ["menuItems", "button", "defaultIconSize", "isMarginBottomZero"], outputs: ["menuToggleButtonElement", "menuItemClick"] }, { kind: "component", type: i0.forwardRef(function () { return IconButtonComponent; }), selector: "ieeesa-icon-button", inputs: ["iconButton", "isLabelNeeded"], outputs: ["iconButtonClick"] }, { kind: "component", type: i0.forwardRef(function () { return FileDownloadComponent; }), selector: "ieeesa-file-download", inputs: ["downloadFiles", "fileDownloadConfig", "isPublicAPI", "domainUrl"], outputs: ["downloadSelectedFile", "deleteSelectedFile"] }, { kind: "pipe", type: i0.forwardRef(function () { return SafePipe; }), name: "safe" }, { kind: "directive", type: i0.forwardRef(function () { return ObserveDomChangeDirective; }), selector: "[ieeesaObserveDomChange]", inputs: ["isSubTreeAttributeNeeded", "observedElementClassName"], outputs: ["domChange", "domNodesChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
138
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ListComponent, isStandalone: true, selector: "ieeesa-list", inputs: { listDataItems: "listDataItems", listHeaderConfig: "listHeaderConfig", indentation: "indentation", addListButtonConfig: "addListButtonConfig", fileDownloadConfig: "fileDownloadConfig" }, outputs: { selectedItemAndAction: "selectedItemAndAction", reorderedList: "reorderedList", hyperLinkAndButtonClick: "hyperLinkAndButtonClick", downloadSelectedFile: "downloadSelectedFile", domChangeEvent: "domChangeEvent" }, ngImport: i0, template: "<div class=\"ieeesa-list-container\">\r\n <div class=\"d-flex\">\r\n <div>\r\n <p *ngIf=\"listHeader?.title\" class=\"ieeesa-title-lg-24 mb-0\">\r\n {{ listHeader.title }}\r\n </p>\r\n <p\r\n *ngIf=\"listHeader?.description\"\r\n class=\"ieeesa-body-md-14 ieeesa-list-description\"\r\n [innerHTML]=\"listHeader.description | safe : safeType\"\r\n ieeesaObserveDomChange\r\n (domChange)=\"onDomChange($event)\"\r\n ></p>\r\n </div>\r\n <ieeesa-icon-button\r\n class=\"ieeesa-add-icon-button\"\r\n *ngIf=\"listHeader?.canShowAddList\"\r\n [iconButton]=\"addListButton\"\r\n (iconButtonClick)=\"onClickAddItem()\"\r\n [ngClass]=\"\r\n addListButton?.disabled\r\n ? 'ieeesa-list-container__actions--disabled'\r\n : ''\r\n \"\r\n ></ieeesa-icon-button>\r\n </div>\r\n\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n recursiveList;\r\n context: { $implicit: listItems, itemLevel: 0 }\r\n \"\r\n >\r\n </ng-container>\r\n</div>\r\n<ng-template #recursiveList let-items let-itemLevel=\"itemLevel\">\r\n <mat-list class=\"ieeesa-list-item\">\r\n <ng-container\r\n *ngFor=\"let item of items; let index = index; trackBy: trackByFn\"\r\n >\r\n <div\r\n class=\"ieeesa-list-item-container d-flex\"\r\n [style.marginLeft.px]=\"itemLevel * indentation\"\r\n >\r\n <mat-list-item\r\n [ngClass]=\"{\r\n 'ieeesa-list-item__root-level-item': itemLevel === 0,\r\n 'ieeesa-list-item__subitem': itemLevel > 0\r\n }\"\r\n >\r\n <span class=\"ieeesa-list-item__item d-flex\">\r\n <span class=\"list-number\">\r\n {{ item?.position }}\r\n </span>\r\n <span>\r\n <span class=\"item-name d-block\">{{ item?.title }}</span>\r\n <span\r\n class=\"ieeesa-list-item__desc d-block\"\r\n *ngIf=\"item?.description\"\r\n >\r\n {{ item?.description }}\r\n </span>\r\n <ieeesa-file-download\r\n [fileDownloadConfig]=\"fileDownloadConfig\"\r\n [downloadFiles]=\"item?.attachments\"\r\n (downloadSelectedFile)=\"downloadFile($event)\"\r\n ></ieeesa-file-download>\r\n </span>\r\n </span>\r\n <span class=\"ieeesa-menu__action\">\r\n <ieeesa-menu\r\n *ngIf=\"item?.actionMenus\"\r\n class=\"ieeesa-menu__icon\"\r\n [button]=\"item?.actionIcon\"\r\n [menuItems]=\"item?.actionMenus\"\r\n (menuItemClick)=\"selectedMenuAction($event, item)\"\r\n ></ieeesa-menu>\r\n </span>\r\n </mat-list-item>\r\n </div>\r\n <ng-container *ngIf=\"item?.subItems\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n recursiveList;\r\n context: {\r\n $implicit: item.subItems,\r\n itemLevel: itemLevel + 1\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </mat-list>\r\n</ng-template>\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-list-container .ieeesa-add-icon-button{margin-left:auto;align-self:center}.ieeesa-list-container .ieeesa-add-icon-button .ieeesa-icon-button{padding:0}.ieeesa-list-container .ieeesa-list-description{color:#49454f!important}.ieeesa-list-container .ieeesa-list-description a{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#00629b!important;letter-spacing:.03125em}.ieeesa-list-container .ieeesa-list-description a.disable-link{pointer-events:none;color:#63666a!important}.ieeesa-list-container__actions--disabled .ieeesa-icon-button__svg{fill:#c9c5ca!important}.ieeesa-list-container .ieeesa-list-item{background-color:#f4f5f7;padding:1px 0 0}.ieeesa-list-container .ieeesa-list-item .ieeesa-list-item-container{box-sizing:border-box;border-radius:.25em;background-color:#fff;border-left:.125rem solid #b2b7be;margin-bottom:.0625em;box-shadow:0 1px 2px #0003;min-height:2em;height:auto}.ieeesa-list-container .ieeesa-list-item .ieeesa-list-item-container:has(.ieeesa-list-item__root-level-item){border-left:.125rem solid #00b5e2}.ieeesa-list-container .ieeesa-list-item .mdc-list-item{padding:0;margin-left:.375em}.ieeesa-list-container .ieeesa-list-item .mdc-list-item__content{padding:0}.ieeesa-list-container .ieeesa-list-item .mdc-list-item__content:has(.ieeesa-list-item__desc){margin:.4375em 0}.ieeesa-list-container .ieeesa-list-item .mdc-list-item__content .ieeesa-menu__icon .mdc-icon-button{height:1.5em;width:1.5em;margin-right:.3em}.ieeesa-list-container .ieeesa-list-item .mdc-list-item__content .ieeesa-menu__button{position:relative;left:2px;bottom:2px}.ieeesa-list-container .ieeesa-list-item .mdc-list-item__primary-text:has(.ieeesa-list-item__desc){align-items:flex-start!important}.ieeesa-list-container .ieeesa-list-item__root-level-item .list-number,.ieeesa-list-container .ieeesa-list-item__root-level-item .item-name{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1d1e!important;letter-spacing:.03125em;text-align:left;text-wrap:wrap}.ieeesa-list-container .ieeesa-list-item__subitem .list-number,.ieeesa-list-container .ieeesa-list-item__subitem .item-name{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#1c1d1e!important;letter-spacing:.03125em;text-align:left;text-wrap:wrap}.ieeesa-list-container .ieeesa-list-item__desc{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#63666a!important;letter-spacing:.03125em;text-align:left;text-wrap:wrap!important;word-break:break-word}.ieeesa-list-container .ieeesa-list-item .list-number{margin-right:.5em}.ieeesa-list-container .ieeesa-list-item .item-name{word-break:break-word}.ieeesa-list-container .ieeesa-list-item .mdc-list-item.mdc-list-item--with-one-line,.ieeesa-list-container .ieeesa-list-item .mdc-list-item.mdc-list-item--with-two-lines,.ieeesa-list-container .ieeesa-list-item .mdc-list-item.mdc-list-item--with-three-lines{height:auto}.ieeesa-list-container .ieeesa-list-item .mdc-list-item__secondary-text:before,.ieeesa-list-container .ieeesa-list-item .mdc-list-item--with-two-lines .mdc-list-item__primary-text:before,.ieeesa-list-container .ieeesa-list-item .mdc-list-item--with-three-lines .mdc-list-item__primary-text:before{display:none}.ieeesa-list-container .ieeesa-list-item .mdc-list-item__primary-text{display:flex}.ieeesa-menu__action{margin-left:auto}.ieeesa-menu__icon{float:right}.ieeesa-menu__item:not(:last-of-type){margin-bottom:0!important}@media (max-width: 767px){.ieeesa-list-container .ieeesa-menu__button{top:5px}}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i1.NgTemplateOutlet; }), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatListModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i2.MatList; }), selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i0.forwardRef(function () { return i2.MatListItem; }), selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatButtonModule; }) }, { kind: "component", type: i0.forwardRef(function () { return MenuComponent; }), selector: "ieeesa-menu", inputs: ["menuItems", "button", "defaultIconSize", "isMarginBottomZero"], outputs: ["menuToggleButtonElement", "menuItemClick"] }, { kind: "component", type: i0.forwardRef(function () { return IconButtonComponent; }), selector: "ieeesa-icon-button", inputs: ["iconButton", "isLabelNeeded"], outputs: ["iconButtonClick"] }, { kind: "component", type: i0.forwardRef(function () { return FileDownloadComponent; }), selector: "ieeesa-file-download", inputs: ["downloadFiles", "fileDownloadConfig", "isPublicAPI", "domainUrl", "apiBaseUrl"], outputs: ["downloadSelectedFile", "deleteSelectedFile"] }, { kind: "pipe", type: i0.forwardRef(function () { return SafePipe; }), name: "safe" }, { kind: "directive", type: i0.forwardRef(function () { return ObserveDomChangeDirective; }), selector: "[ieeesaObserveDomChange]", inputs: ["isSubTreeAttributeNeeded", "observedElementClassName"], outputs: ["domChange", "domNodesChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
139
139
  }
140
140
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListComponent, decorators: [{
141
141
  type: Component,
@@ -170,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
170
170
  }], fileDownloadConfig: [{
171
171
  type: Input
172
172
  }] } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2xpc3QvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2xpc3QvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLGlCQUFpQixFQUNqQixVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sS0FBSyxTQUFTLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUU3RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7OztBQW1CakYsTUFBTSxPQUFPLGFBQWE7SUFReEIsSUFDSSxhQUFhLENBQUMsUUFBb0I7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENB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WCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQzt3QkFDMUIseUJBQXlCO3FCQUMxQixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJO2lHQUszQixxQkFBcUI7c0JBQTlCLE1BQU07Z0JBSUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFFSCxhQUFhO3NCQURoQixLQUFLO2dCQVNGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFPSSx1QkFBdUI7c0JBQWhDLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUdFLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUYsbUJBQW1CO3NCQUR0QixLQUFLO2dCQU9JLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0gsa0JBQWtCO3NCQURyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE91dHB1dCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBmb3J3YXJkUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IExpc3RIZWFkZXIsIExpc3RJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xpc3QtaXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9tZW51L21lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWVudSB9IGZyb20gJy4uLy4uL21vZGVscy9tZW51Lm1vZGVsJztcclxuaW1wb3J0IHsgSWNvbkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24tYnV0dG9uL2ljb24tYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCAqIGFzIGNvbnN0YW50cyBmcm9tICcuLi8uLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBTYWZlUGlwZSwgU2FmZVR5cGUgfSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHsgSWNvbkJ1dHRvbiB9IGZyb20gJy4uLy4uL21vZGVscy9pY29uLWJ1dHRvbi5tb2RlbCc7XHJcbmltcG9ydCB7IE9ic2VydmVEb21DaGFuZ2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL29ic2VydmUtZG9tLWNoYW5nZS9vYnNlcnZlLWRvbS1jaGFuZ2UuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRmlsZURvd25sb2FkQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbGUtZG93bmxvYWQtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsZURvd25sb2FkQ29tcG9uZW50IH0gZnJvbSAnLi4vZmlsZS1kb3dubG9hZC9maWxlLWRvd25sb2FkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERvd25sb2FkRmlsZSB9IGZyb20gJy4uLy4uL21vZGVscy9kb3dubG9hZC1maWxlLm1vZGVsJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtbGlzdCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRMaXN0TW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWVudUNvbXBvbmVudCxcclxuICAgIEljb25CdXR0b25Db21wb25lbnQsXHJcbiAgICBGaWxlRG93bmxvYWRDb21wb25lbnQsXHJcbiAgICBmb3J3YXJkUmVmKCgpID0+IFNhZmVQaXBlKSxcclxuICAgIE9ic2VydmVEb21DaGFuZ2VEaXJlY3RpdmUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBsaXN0SXRlbXMhOiBMaXN0SXRlbVtdO1xyXG4gIGxpc3RIZWFkZXIhOiBMaXN0SGVhZGVyO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1BbmRBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIHNlbGVjdGVkTWVudTogTWVudTtcclxuICAgIHNlbGVjdGVkSXRlbTogTGlzdEl0ZW07XHJcbiAgfT4oKTtcclxuICBAT3V0cHV0KCkgcmVvcmRlcmVkTGlzdCA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdEl0ZW1bXT4oKTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBsaXN0RGF0YUl0ZW1zKGxpc3RJdGVtOiBMaXN0SXRlbVtdKSB7XHJcbiAgICB0aGlzLmxpc3RJdGVtcyA9IGxpc3RJdGVtO1xyXG4gICAgdGhpcy5nZXRMaXN0SXRlbXNQb3NpdGlvbkFuZExldmVsKHRoaXMubGlzdEl0ZW1zLCAwKTtcclxuICB9XHJcbiAgZ2V0IGxpc3REYXRhSXRlbXMoKTogTGlzdEl0ZW1bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5saXN0SXRlbXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGxpc3RIZWFkZXJDb25maWcobGlzdEhlYWRlckRldGFpbDogTGlzdEhlYWRlcikge1xyXG4gICAgdGhpcy5saXN0SGVhZGVyID0gbGlzdEhlYWRlckRldGFpbDtcclxuICB9XHJcbiAgZ2V0IGxpc3RIZWFkZXJDb25maWcoKTogTGlzdEhlYWRlciB7XHJcbiAgICByZXR1cm4gdGhpcy5saXN0SGVhZGVyO1xyXG4gIH1cclxuICBAT3V0cHV0KCkgaHlwZXJMaW5rQW5kQnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBkb3dubG9hZFNlbGVjdGVkRmlsZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZSB8IERvd25sb2FkRmlsZT4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gY29uc3RhbnRzO1xyXG4gIEBJbnB1dCgpIGluZGVudGF0aW9uID0gdGhpcy5jb25zdGFudHM/Lmxpc3Q/LmRlZmF1bHRJbmRlbnRhdGlvbjtcclxuICBhZGRMaXN0QnV0dG9uITogSWNvbkJ1dHRvbjtcclxuICBzYWZlVHlwZTogc3RyaW5nID0gU2FmZVR5cGUuSFRNTDtcclxuICBASW5wdXQoKVxyXG4gIHNldCBhZGRMaXN0QnV0dG9uQ29uZmlnKGFkZExpc3RCdXR0b246IEljb25CdXR0b24pIHtcclxuICAgIHRoaXMuYWRkTGlzdEJ1dHRvbiA9IGFkZExpc3RCdXR0b247XHJcbiAgfVxyXG4gIGdldCBhZGRMaXN0QnV0dG9uQ29uZmlnKCk6IEljb25CdXR0b24ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkTGlzdEJ1dHRvbjtcclxuICB9XHJcbiAgQE91dHB1dCgpIGRvbUNoYW5nZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxNdXRhdGlvblJlY29yZD4oKTtcclxuICBfZmlsZURvd25sb2FkQ29uZmlnITogRmlsZURvd25sb2FkQ29uZmlnO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGZpbGVEb3dubG9hZENvbmZpZyh2YWx1ZTogRmlsZURvd25sb2FkQ29uZmlnKSB7XHJcbiAgICB0aGlzLl9maWxlRG93bmxvYWRDb25maWcgPSB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0IGZpbGVEb3dubG9hZENvbmZpZygpOiBGaWxlRG93bmxvYWRDb25maWcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVEb3dubG9hZENvbmZpZztcclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBuby1lbXB0eS1mdW5jdGlvblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGh5cGVyTGlua0FuZEJ1dHRvbkNsaWNrIGV2ZW50IG9uIGNsaWNrIG9mIGh5cGVyIGxpbmsuXHJcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnRcclxuICAgKiBAbWVtYmVyb2YgTGlzdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQW5jaG9yRWxlbWVudENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuaHlwZXJMaW5rQW5kQnV0dG9uQ2xpY2suZW1pdChldmVudCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgdGhlIGluZGV4IHBvc2l0aW9uL251bWJlciBhbmQgaXRlbUxldmVsIGZvciBlYWNoIGxpc3QgaXRlbS5cclxuICAgKiBAcGFyYW0ge0xpc3RJdGVtW119IGl0ZW1zXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGl0ZW1MZXZlbFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGFyZW50SW5kZXhdXHJcbiAgICogQG1lbWJlcm9mIExpc3RDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRMaXN0SXRlbXNQb3NpdGlvbkFuZExldmVsKFxyXG4gICAgaXRlbXM6IExpc3RJdGVtW10sXHJcbiAgICBpdGVtTGV2ZWw6IG51bWJlcixcclxuICAgIHBhcmVudEluZGV4Pzogc3RyaW5nXHJcbiAgKTogdm9pZCB7XHJcbiAgICBpdGVtcz8uZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgY29uc3QgcG9zaXRpb24gPSBwYXJlbnRJbmRleFxyXG4gICAgICAgID8gcGFyZW50SW5kZXggKyAocGFyZW50SW5kZXgubGVuZ3RoID09PSAyID8gJycgOiAnLicpICsgKGluZGV4ICsgMSlcclxuICAgICAgICA6IGluZGV4ICsgMSArICcuJztcclxuICAgICAgaXRlbS5wb3NpdGlvbiA9IHBvc2l0aW9uO1xyXG4gICAgICBpdGVtLml0ZW1MZXZlbCA9IGl0ZW1MZXZlbDtcclxuICAgICAgaWYgKGl0ZW0uc3ViSXRlbXMpXHJcbiAgICAgICAgdGhpcy5nZXRMaXN0SXRlbXNQb3NpdGlvbkFuZExldmVsKFxyXG4gICAgICAgICAgaXRlbS5zdWJJdGVtcyxcclxuICAgICAgICAgIGl0ZW1MZXZlbCArIDEsXHJcbiAgICAgICAgICBwb3NpdGlvblxyXG4gICAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGhlIHNlbGVjdGVkIG1lbnUgYWN0aW9uIGFuZCB0aGUgaXRlbS5cclxuICAgKiBAcGFyYW0ge01lbnV9IGV2ZW50XHJcbiAgICogQHBhcmFtIHtMaXN0SXRlbX0gaXRlbVxyXG4gICAqIEBtZW1iZXJvZiBMaXN0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgc2VsZWN0ZWRNZW51QWN0aW9uKGV2ZW50OiBNZW51LCBpdGVtOiBMaXN0SXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1BbmRBY3Rpb24uZW1pdCh7XHJcbiAgICAgIHNlbGVjdGVkTWVudTogZXZlbnQsXHJcbiAgICAgIHNlbGVjdGVkSXRlbTogaXRlbSxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgbGlzdC5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcclxuICAgKiBAcGFyYW0ge0xpc3RJdGVtfSBpdGVtXHJcbiAgICogQHJldHVybiB7KG51bWJlciB8IHN0cmluZyl9XHJcbiAgICogQG1lbWJlcm9mIExpc3RDb21wb25lbnRcclxuICAgKi9cclxuICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogTGlzdEl0ZW0pOiBudW1iZXIgfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGh5cGVyTGlua0FuZEJ1dHRvbkNsaWNrIGV2ZW50IG9uIGNsaWNrIG9mIGJ1dHRvbi5cclxuICAgKiBAbWVtYmVyb2YgTGlzdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQ2xpY2tBZGRJdGVtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5oeXBlckxpbmtBbmRCdXR0b25DbGljay5lbWl0KCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEFkZHMgY2xpY2sgZXZlbnQgdG8gdGhlIGFuY2hvciB0YWdzIHdoZW5ldmVyIGRvbSBjaGFuZ2VzLlxyXG4gICAqIEBtZW1iZXJvZiBMaXN0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Eb21DaGFuZ2UoZXZlbnQ6IE11dGF0aW9uUmVjb3JkKSB7XHJcbiAgICBjb25zdCBhbmNob3JUYWdzID0gdGhpcy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5xdWVyeVNlbGVjdG9yQWxsKCdhJyk7XHJcbiAgICBhbmNob3JUYWdzPy5mb3JFYWNoKChhbmNob3I6IEhUTUxBbmNob3JFbGVtZW50KSA9PiB7XHJcbiAgICAgIGFuY2hvci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub25BbmNob3JFbGVtZW50Q2xpY2suYmluZCh0aGlzKSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZG9tQ2hhbmdlRXZlbnQuZW1pdChldmVudCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGZpbGUgZG93bmxvYWQgZXZlbnQgZW1pdHRlci5cclxuICAgKiBAbWVtYmVyb2YgTGlzdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGRvd25sb2FkRmlsZShmaWxlOiBGaWxlIHwgRG93bmxvYWRGaWxlKTogdm9pZCB7XHJcbiAgICB0aGlzLmRvd25sb2FkU2VsZWN0ZWRGaWxlLmVtaXQoZmlsZSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJlbW92aW5nIHRoZSBldmVudCBsaXN0ZW5lcnMgb24gZGVzdHJveS5cclxuICAgKiBAbWVtYmVyb2YgTGlzdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgY29uc3QgYW5jaG9yVGFncyA9IHRoaXMuZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvckFsbCgnYScpO1xyXG4gICAgYW5jaG9yVGFncz8uZm9yRWFjaCgoYW5jaG9yOiBIVE1MQW5jaG9yRWxlbWVudCkgPT4ge1xyXG4gICAgICBhbmNob3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLm9uQW5jaG9yRWxlbWVudENsaWNrKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaWVlZXNhLWxpc3QtY29udGFpbmVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgPGRpdj5cclxuICAgICAgPHAgKm5nSWY9XCJsaXN0SGVhZGVyPy50aXRsZVwiIGNsYXNzPVwiaWVlZXNhLXRpdGxlLWxnLTI0IG1iLTBcIj5cclxuICAgICAgICB7eyBsaXN0SGVhZGVyLnRpdGxlIH19XHJcbiAgICAgIDwvcD5cclxuICAgICAgPHBcclxuICAgICAgICAqbmdJZj1cImxpc3RIZWFkZXI/LmRlc2NyaXB0aW9uXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1ib2R5LW1kLTE0IGllZWVzYS1saXN0LWRlc2NyaXB0aW9uXCJcclxuICAgICAgICBbaW5uZXJIVE1MXT1cImxpc3RIZWFkZXIuZGVzY3JpcHRpb24gfCBzYWZlIDogc2FmZVR5cGVcIlxyXG4gICAgICAgIGllZWVzYU9ic2VydmVEb21DaGFuZ2VcclxuICAgICAgICAoZG9tQ2hhbmdlKT1cIm9uRG9tQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICA+PC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWFkZC1pY29uLWJ1dHRvblwiXHJcbiAgICAgICpuZ0lmPVwibGlzdEhlYWRlcj8uY2FuU2hvd0FkZExpc3RcIlxyXG4gICAgICBbaWNvbkJ1dHRvbl09XCJhZGRMaXN0QnV0dG9uXCJcclxuICAgICAgKGljb25CdXR0b25DbGljayk9XCJvbkNsaWNrQWRkSXRlbSgpXCJcclxuICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgYWRkTGlzdEJ1dHRvbj8uZGlzYWJsZWRcclxuICAgICAgICAgID8gJ2llZWVzYS1saXN0LWNvbnRhaW5lcl9fYWN0aW9ucy0tZGlzYWJsZWQnXHJcbiAgICAgICAgICA6ICcnXHJcbiAgICAgIFwiXHJcbiAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxuZy1jb250YWluZXJcclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgIHJlY3Vyc2l2ZUxpc3Q7XHJcbiAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBsaXN0SXRlbXMsIGl0ZW1MZXZlbDogMCB9XHJcbiAgICBcIlxyXG4gID5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZSAjcmVjdXJzaXZlTGlzdCBsZXQtaXRlbXMgbGV0LWl0ZW1MZXZlbD1cIml0ZW1MZXZlbFwiPlxyXG4gIDxtYXQtbGlzdCBjbGFzcz1cImllZWVzYS1saXN0LWl0ZW1cIj5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtbGlzdC1pdGVtLWNvbnRhaW5lciBkLWZsZXhcIlxyXG4gICAgICAgIFtzdHlsZS5tYXJnaW5MZWZ0LnB4XT1cIml0ZW1MZXZlbCAqIGluZGVudGF0aW9uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtbGlzdC1pdGVtXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICdpZWVlc2EtbGlzdC1pdGVtX19yb290LWxldmVsLWl0ZW0nOiBpdGVtTGV2ZWwgPT09IDAsXHJcbiAgICAgICAgICAgICdpZWVlc2EtbGlzdC1pdGVtX19zdWJpdGVtJzogaXRlbUxldmVsID4gMFxyXG4gICAgICAgICAgfVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpZWVlc2EtbGlzdC1pdGVtX19pdGVtIGQtZmxleFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpc3QtbnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAge3sgaXRlbT8ucG9zaXRpb24gfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tbmFtZSBkLWJsb2NrXCI+e3sgaXRlbT8udGl0bGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWxpc3QtaXRlbV9fZGVzYyBkLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IGl0ZW0/LmRlc2NyaXB0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxpZWVlc2EtZmlsZS1kb3dubG9hZFxyXG4gICAgICAgICAgICAgICAgW2ZpbGVEb3dubG9hZENvbmZpZ109XCJmaWxlRG93bmxvYWRDb25maWdcIlxyXG4gICAgICAgICAgICAgICAgW2Rvd25sb2FkRmlsZXNdPVwiaXRlbT8uYXR0YWNobWVudHNcIlxyXG4gICAgICAgICAgICAgICAgKGRvd25sb2FkU2VsZWN0ZWRGaWxlKT1cImRvd25sb2FkRmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICA+PC9pZWVlc2EtZmlsZS1kb3dubG9hZD5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpZWVlc2EtbWVudV9fYWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDxpZWVlc2EtbWVudVxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uYWN0aW9uTWVudXNcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLW1lbnVfX2ljb25cIlxyXG4gICAgICAgICAgICAgIFtidXR0b25dPVwiaXRlbT8uYWN0aW9uSWNvblwiXHJcbiAgICAgICAgICAgICAgW21lbnVJdGVtc109XCJpdGVtPy5hY3Rpb25NZW51c1wiXHJcbiAgICAgICAgICAgICAgKG1lbnVJdGVtQ2xpY2spPVwic2VsZWN0ZWRNZW51QWN0aW9uKCRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICA+PC9pZWVlc2EtbWVudT5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbT8uc3ViSXRlbXNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICByZWN1cnNpdmVMaXN0O1xyXG4gICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiBpdGVtLnN1Ykl0ZW1zLFxyXG4gICAgICAgICAgICAgIGl0ZW1MZXZlbDogaXRlbUxldmVsICsgMVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L21hdC1saXN0PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2xpc3QvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2xpc3QvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLGlCQUFpQixFQUNqQixVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sS0FBSyxTQUFTLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUU3RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7OztBQW1CakYsTUFBTSxPQUFPLGFBQWE7SUFReEIsSUFDSSxhQUFhLENBQUMsUUFBb0I7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENB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WCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQzt3QkFDMUIseUJBQXlCO3FCQUMxQixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJO2lHQUszQixxQkFBcUI7c0JBQTlCLE1BQU07Z0JBSUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFFSCxhQUFhO3NCQURoQixLQUFLO2dCQVNGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFPSSx1QkFBdUI7c0JBQWhDLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUdFLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUYsbUJBQW1CO3NCQUR0QixLQUFLO2dCQU9JLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0gsa0JBQWtCO3NCQURyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE91dHB1dCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBmb3J3YXJkUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IExpc3RIZWFkZXIsIExpc3RJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xpc3QtaXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9tZW51L21lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWVudSB9IGZyb20gJy4uLy4uL21vZGVscy9tZW51Lm1vZGVsJztcclxuaW1wb3J0IHsgSWNvbkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24tYnV0dG9uL2ljb24tYnV0dG9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCAqIGFzIGNvbnN0YW50cyBmcm9tICcuLi8uLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBTYWZlUGlwZSwgU2FmZVR5cGUgfSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHsgSWNvbkJ1dHRvbiB9IGZyb20gJy4uLy4uL21vZGVscy9pY29uLWJ1dHRvbi5tb2RlbCc7XHJcbmltcG9ydCB7IE9ic2VydmVEb21DaGFuZ2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL29ic2VydmUtZG9tLWNoYW5nZS9vYnNlcnZlLWRvbS1jaGFuZ2UuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRmlsZURvd25sb2FkQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbGUtZG93bmxvYWQtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsZURvd25sb2FkQ29tcG9uZW50IH0gZnJvbSAnLi4vZmlsZS1kb3dubG9hZC9maWxlLWRvd25sb2FkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERvd25sb2FkRmlsZSB9IGZyb20gJy4uLy4uL21vZGVscy9kb3dubG9hZC1maWxlLm1vZGVsJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtbGlzdCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRMaXN0TW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWVudUNvbXBvbmVudCxcclxuICAgIEljb25CdXR0b25Db21wb25lbnQsXHJcbiAgICBGaWxlRG93bmxvYWRDb21wb25lbnQsXHJcbiAgICBmb3J3YXJkUmVmKCgpID0+IFNhZmVQaXBlKSxcclxuICAgIE9ic2VydmVEb21DaGFuZ2VEaXJlY3RpdmUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBsaXN0SXRlbXMhOiBMaXN0SXRlbVtdO1xyXG4gIGxpc3RIZWFkZXIhOiBMaXN0SGVhZGVyO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1BbmRBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgIHNlbGVjdGVkTWVudTogTWVudTtcclxuICAgIHNlbGVjdGVkSXRlbTogTGlzdEl0ZW07XHJcbiAgfT4oKTtcclxuICBAT3V0cHV0KCkgcmVvcmRlcmVkTGlzdCA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdEl0ZW1bXT4oKTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBsaXN0RGF0YUl0ZW1zKGxpc3RJdGVtOiBMaXN0SXRlbVtdKSB7XHJcbiAgICB0aGlzLmxpc3RJdGVtcyA9IGxpc3RJdGVtO1xyXG4gICAgdGhpcy5nZXRMaXN0SXRlbXNQb3NpdGlvbkFuZExldmVsKHRoaXMubGlzdEl0ZW1zLCAwKTtcclxuICB9XHJcbiAgZ2V0IGxpc3REYXRhSXRlbXMoKTogTGlzdEl0ZW1bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5saXN0SXRlbXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGxpc3RIZWFkZXJDb25maWcobGlzdEhlYWRlckRldGFpbDogTGlzdEhlYWRlcikge1xyXG4gICAgdGhpcy5saXN0SGVhZGVyID0gbGlzdEhlYWRlckRldGFpbDtcclxuICB9XHJcbiAgZ2V0IGxpc3RIZWFkZXJDb25maWcoKTogTGlzdEhlYWRlciB7XHJcbiAgICByZXR1cm4gdGhpcy5saXN0SGVhZGVyO1xyXG4gIH1cclxuICBAT3V0cHV0KCkgaHlwZXJMaW5rQW5kQnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBkb3dubG9hZFNlbGVjdGVkRmlsZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZSB8IERvd25sb2FkRmlsZT4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gY29uc3RhbnRzO1xyXG4gIEBJbnB1dCgpIGluZGVudGF0aW9uID0gdGhpcy5jb25zdGFudHM/Lmxpc3Q/LmRlZmF1bHRJbmRlbnRhdGlvbjtcclxuICBhZGRMaXN0QnV0dG9uITogSWNvbkJ1dHRvbjtcclxuICBzYWZlVHlwZTogc3RyaW5nID0gU2FmZVR5cGUuSFRNTDtcclxuICBASW5wdXQoKVxyXG4gIHNldCBhZGRMaXN0QnV0dG9uQ29uZmlnKGFkZExpc3RCdXR0b246IEljb25CdXR0b24pIHtcclxuICAgIHRoaXMuYWRkTGlzdEJ1dHRvbiA9IGFkZExpc3RCdXR0b247XHJcbiAgfVxyXG4gIGdldCBhZGRMaXN0QnV0dG9uQ29uZmlnKCk6IEljb25CdXR0b24ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkTGlzdEJ1dHRvbjtcclxuICB9XHJcbiAgQE91dHB1dCgpIGRvbUNoYW5nZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxNdXRhdGlvblJlY29yZD4oKTtcclxuICBfZmlsZURvd25sb2FkQ29uZmlnITogRmlsZURvd25sb2FkQ29uZmlnO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGZpbGVEb3dubG9hZENvbmZpZyh2YWx1ZTogRmlsZURvd25sb2FkQ29uZmlnKSB7XHJcbiAgICB0aGlzLl9maWxlRG93bmxvYWRDb25maWcgPSB2YWx1ZTtcclxuICB9XHJcbiAgZ2V0IGZpbGVEb3dubG9hZENvbmZpZygpOiBGaWxlRG93bmxvYWRDb25maWcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVEb3dubG9hZENvbmZpZztcclxuICB9XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBuby1lbXB0eS1mdW5jdGlvblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGh5cGVyTGlua0FuZEJ1dHRvbkNsaWNrIGV2ZW50IG9uIGNsaWNrIG9mIGh5cGVyIGxpbmsuXHJcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnRcclxuICAgKiBAbWVtYmVyb2YgTGlzdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQW5jaG9yRWxlbWVudENsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuaHlwZXJMaW5rQW5kQnV0dG9uQ2xpY2suZW1pdChldmVudCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgdGhlIGluZGV4IHBvc2l0aW9uL251bWJlciBhbmQgaXRlbUxldmVsIGZvciBlYWNoIGxpc3QgaXRlbS5cclxuICAgKiBAcGFyYW0ge0xpc3RJdGVtW119IGl0ZW1zXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGl0ZW1MZXZlbFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGFyZW50SW5kZXhdXHJcbiAgICogQG1lbWJlcm9mIExpc3RDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRMaXN0SXRlbXNQb3NpdGlvbkFuZExldmVsKFxyXG4gICAgaXRlbXM6IExpc3RJdGVtW10sXHJcbiAgICBpdGVtTGV2ZWw6IG51bWJlcixcclxuICAgIHBhcmVudEluZGV4Pzogc3RyaW5nXHJcbiAgKTogdm9pZCB7XHJcbiAgICBpdGVtcz8uZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgY29uc3QgcG9zaXRpb24gPSBwYXJlbnRJbmRleFxyXG4gICAgICAgID8gcGFyZW50SW5kZXggKyAocGFyZW50SW5kZXgubGVuZ3RoID09PSAyID8gJycgOiAnLicpICsgKGluZGV4ICsgMSlcclxuICAgICAgICA6IGluZGV4ICsgMSArICcuJztcclxuICAgICAgaXRlbS5wb3NpdGlvbiA9IHBvc2l0aW9uO1xyXG4gICAgICBpdGVtLml0ZW1MZXZlbCA9IGl0ZW1MZXZlbDtcclxuICAgICAgaWYgKGl0ZW0uc3ViSXRlbXMpXHJcbiAgICAgICAgdGhpcy5nZXRMaXN0SXRlbXNQb3NpdGlvbkFuZExldmVsKFxyXG4gICAgICAgICAgaXRlbS5zdWJJdGVtcyxcclxuICAgICAgICAgIGl0ZW1MZXZlbCArIDEsXHJcbiAgICAgICAgICBwb3NpdGlvblxyXG4gICAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGhlIHNlbGVjdGVkIG1lbnUgYWN0aW9uIGFuZCB0aGUgaXRlbS5cclxuICAgKiBAcGFyYW0ge01lbnV9IGV2ZW50XHJcbiAgICogQHBhcmFtIHtMaXN0SXRlbX0gaXRlbVxyXG4gICAqIEBtZW1iZXJvZiBMaXN0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgc2VsZWN0ZWRNZW51QWN0aW9uKGV2ZW50OiBNZW51LCBpdGVtOiBMaXN0SXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1BbmRBY3Rpb24uZW1pdCh7XHJcbiAgICAgIHNlbGVjdGVkTWVudTogZXZlbnQsXHJcbiAgICAgIHNlbGVjdGVkSXRlbTogaXRlbSxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgbGlzdC5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcclxuICAgKiBAcGFyYW0ge0xpc3RJdGVtfSBpdGVtXHJcbiAgICogQHJldHVybiB7KG51bWJlciB8IHN0cmluZyl9XHJcbiAgICogQG1lbWJlcm9mIExpc3RDb21wb25lbnRcclxuICAgKi9cclxuICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogTGlzdEl0ZW0pOiBudW1iZXIgfCBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGh5cGVyTGlua0FuZEJ1dHRvbkNsaWNrIGV2ZW50IG9uIGNsaWNrIG9mIGJ1dHRvbi5cclxuICAgKiBAbWVtYmVyb2YgTGlzdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQ2xpY2tBZGRJdGVtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5oeXBlckxpbmtBbmRCdXR0b25DbGljay5lbWl0KCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEFkZHMgY2xpY2sgZXZlbnQgdG8gdGhlIGFuY2hvciB0YWdzIHdoZW5ldmVyIGRvbSBjaGFuZ2VzLlxyXG4gICAqIEBtZW1iZXJvZiBMaXN0Q29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Eb21DaGFuZ2UoZXZlbnQ6IE11dGF0aW9uUmVjb3JkKSB7XHJcbiAgICBjb25zdCBhbmNob3JUYWdzID0gdGhpcy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5xdWVyeVNlbGVjdG9yQWxsKCdhJyk7XHJcbiAgICBhbmNob3JUYWdzPy5mb3JFYWNoKChhbmNob3I6IEhUTUxBbmNob3JFbGVtZW50KSA9PiB7XHJcbiAgICAgIGFuY2hvci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub25BbmNob3JFbGVtZW50Q2xpY2suYmluZCh0aGlzKSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZG9tQ2hhbmdlRXZlbnQuZW1pdChldmVudCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEVtaXRzIGZpbGUgZG93bmxvYWQgZXZlbnQgZW1pdHRlci5cclxuICAgKiBAbWVtYmVyb2YgTGlzdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGRvd25sb2FkRmlsZShmaWxlOiBGaWxlIHwgRG93bmxvYWRGaWxlKTogdm9pZCB7XHJcbiAgICB0aGlzLmRvd25sb2FkU2VsZWN0ZWRGaWxlLmVtaXQoZmlsZSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJlbW92aW5nIHRoZSBldmVudCBsaXN0ZW5lcnMgb24gZGVzdHJveS5cclxuICAgKiBAbWVtYmVyb2YgTGlzdENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgY29uc3QgYW5jaG9yVGFncyA9IHRoaXMuZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvckFsbCgnYScpO1xyXG4gICAgYW5jaG9yVGFncz8uZm9yRWFjaCgoYW5jaG9yOiBIVE1MQW5jaG9yRWxlbWVudCkgPT4ge1xyXG4gICAgICBhbmNob3IucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLm9uQW5jaG9yRWxlbWVudENsaWNrKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaWVlZXNhLWxpc3QtY29udGFpbmVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgPGRpdj5cclxuICAgICAgPHAgKm5nSWY9XCJsaXN0SGVhZGVyPy50aXRsZVwiIGNsYXNzPVwiaWVlZXNhLXRpdGxlLWxnLTI0IG1iLTBcIj5cclxuICAgICAgICB7eyBsaXN0SGVhZGVyLnRpdGxlIH19XHJcbiAgICAgIDwvcD5cclxuICAgICAgPHBcclxuICAgICAgICAqbmdJZj1cImxpc3RIZWFkZXI/LmRlc2NyaXB0aW9uXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1ib2R5LW1kLTE0IGllZWVzYS1saXN0LWRlc2NyaXB0aW9uXCJcclxuICAgICAgICBbaW5uZXJIVE1MXT1cImxpc3RIZWFkZXIuZGVzY3JpcHRpb24gfCBzYWZlIDogc2FmZVR5cGVcIlxyXG4gICAgICAgIGllZWVzYU9ic2VydmVEb21DaGFuZ2VcclxuICAgICAgICAoZG9tQ2hhbmdlKT1cIm9uRG9tQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICA+PC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWFkZC1pY29uLWJ1dHRvblwiXHJcbiAgICAgICpuZ0lmPVwibGlzdEhlYWRlcj8uY2FuU2hvd0FkZExpc3RcIlxyXG4gICAgICBbaWNvbkJ1dHRvbl09XCJhZGRMaXN0QnV0dG9uXCJcclxuICAgICAgKGljb25CdXR0b25DbGljayk9XCJvbkNsaWNrQWRkSXRlbSgpXCJcclxuICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgYWRkTGlzdEJ1dHRvbj8uZGlzYWJsZWRcclxuICAgICAgICAgID8gJ2llZWVzYS1saXN0LWNvbnRhaW5lcl9fYWN0aW9ucy0tZGlzYWJsZWQnXHJcbiAgICAgICAgICA6ICcnXHJcbiAgICAgIFwiXHJcbiAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxuZy1jb250YWluZXJcclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgIHJlY3Vyc2l2ZUxpc3Q7XHJcbiAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBsaXN0SXRlbXMsIGl0ZW1MZXZlbDogMCB9XHJcbiAgICBcIlxyXG4gID5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbjxuZy10ZW1wbGF0ZSAjcmVjdXJzaXZlTGlzdCBsZXQtaXRlbXMgbGV0LWl0ZW1MZXZlbD1cIml0ZW1MZXZlbFwiPlxyXG4gIDxtYXQtbGlzdCBjbGFzcz1cImllZWVzYS1saXN0LWl0ZW1cIj5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtbGlzdC1pdGVtLWNvbnRhaW5lciBkLWZsZXhcIlxyXG4gICAgICAgIFtzdHlsZS5tYXJnaW5MZWZ0LnB4XT1cIml0ZW1MZXZlbCAqIGluZGVudGF0aW9uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtbGlzdC1pdGVtXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICdpZWVlc2EtbGlzdC1pdGVtX19yb290LWxldmVsLWl0ZW0nOiBpdGVtTGV2ZWwgPT09IDAsXHJcbiAgICAgICAgICAgICdpZWVlc2EtbGlzdC1pdGVtX19zdWJpdGVtJzogaXRlbUxldmVsID4gMFxyXG4gICAgICAgICAgfVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpZWVlc2EtbGlzdC1pdGVtX19pdGVtIGQtZmxleFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpc3QtbnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAge3sgaXRlbT8ucG9zaXRpb24gfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tbmFtZSBkLWJsb2NrXCI+e3sgaXRlbT8udGl0bGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLWxpc3QtaXRlbV9fZGVzYyBkLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IGl0ZW0/LmRlc2NyaXB0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxpZWVlc2EtZmlsZS1kb3dubG9hZFxyXG4gICAgICAgICAgICAgICAgW2ZpbGVEb3dubG9hZENvbmZpZ109XCJmaWxlRG93bmxvYWRDb25maWdcIlxyXG4gICAgICAgICAgICAgICAgW2Rvd25sb2FkRmlsZXNdPVwiaXRlbT8uYXR0YWNobWVudHNcIlxyXG4gICAgICAgICAgICAgICAgKGRvd25sb2FkU2VsZWN0ZWRGaWxlKT1cImRvd25sb2FkRmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICA+PC9pZWVlc2EtZmlsZS1kb3dubG9hZD5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpZWVlc2EtbWVudV9fYWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDxpZWVlc2EtbWVudVxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uYWN0aW9uTWVudXNcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLW1lbnVfX2ljb25cIlxyXG4gICAgICAgICAgICAgIFtidXR0b25dPVwiaXRlbT8uYWN0aW9uSWNvblwiXHJcbiAgICAgICAgICAgICAgW21lbnVJdGVtc109XCJpdGVtPy5hY3Rpb25NZW51c1wiXHJcbiAgICAgICAgICAgICAgKG1lbnVJdGVtQ2xpY2spPVwic2VsZWN0ZWRNZW51QWN0aW9uKCRldmVudCwgaXRlbSlcIlxyXG4gICAgICAgICAgICA+PC9pZWVlc2EtbWVudT5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbT8uc3ViSXRlbXNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICByZWN1cnNpdmVMaXN0O1xyXG4gICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiBpdGVtLnN1Ykl0ZW1zLFxyXG4gICAgICAgICAgICAgIGl0ZW1MZXZlbDogaXRlbUxldmVsICsgMVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L21hdC1saXN0PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -4,5 +4,6 @@ export var AlignType;
4
4
  AlignType["LEFT"] = "Left";
5
5
  AlignType["MIDDLE"] = "Middle";
6
6
  AlignType["RIGHT"] = "Right";
7
+ AlignType["BOTTOM"] = "Bottom";
7
8
  })(AlignType || (AlignType = {}));
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZ24tdHlwZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXNlbnRhdGlvbi9zcmMvbGliL21vZGVscy9hbGlnbi10eXBlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1DQUFtQztBQUNuQyxNQUFNLENBQU4sSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ25CLDBCQUFhLENBQUE7SUFDYiw4QkFBaUIsQ0FBQTtJQUNqQiw0QkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxTQUFTLEtBQVQsU0FBUyxRQUlwQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXHJcbmV4cG9ydCBlbnVtIEFsaWduVHlwZSB7XHJcbiAgTEVGVCA9IFwiTGVmdFwiLFxyXG4gIE1JRERMRSA9IFwiTWlkZGxlXCIsXHJcbiAgUklHSFQgPSBcIlJpZ2h0XCIsXHJcbn0iXX0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZ24tdHlwZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXNlbnRhdGlvbi9zcmMvbGliL21vZGVscy9hbGlnbi10eXBlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1DQUFtQztBQUNuQyxNQUFNLENBQU4sSUFBWSxTQUtYO0FBTEQsV0FBWSxTQUFTO0lBQ25CLDBCQUFhLENBQUE7SUFDYiw4QkFBaUIsQ0FBQTtJQUNqQiw0QkFBZSxDQUFBO0lBQ2YsOEJBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUxXLFNBQVMsS0FBVCxTQUFTLFFBS3BCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cclxuZXhwb3J0IGVudW0gQWxpZ25UeXBlIHtcclxuICBMRUZUID0gJ0xlZnQnLFxyXG4gIE1JRERMRSA9ICdNaWRkbGUnLFxyXG4gIFJJR0hUID0gJ1JpZ2h0JyxcclxuICBCT1RUT00gPSAnQm90dG9tJyxcclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQtZmlsZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXNlbnRhdGlvbi9zcmMvbGliL21vZGVscy9kb3dubG9hZC1maWxlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIERvd25sb2FkRmlsZSB7XHJcbiAgYXR0YWNobWVudElkPzogc3RyaW5nO1xyXG4gIGZpbGVOYW1lOiBzdHJpbmc7XHJcbn1cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQtZmlsZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXNlbnRhdGlvbi9zcmMvbGliL21vZGVscy9kb3dubG9hZC1maWxlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIERvd25sb2FkRmlsZSB7XHJcbiAgYXR0YWNobWVudElkOiBzdHJpbmc7XHJcbiAgZmlsZU5hbWU6IHN0cmluZztcclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc2VudGF0aW9uL3NyYy9saWIvbW9kZWxzL2ZpZWxkLWNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENoZWNrYm94T3B0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NoZWNrYm94LW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXIgfSBmcm9tICcuLi9tb2RlbHMvZGF0ZS1waWNrZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBSYWRpb09wdGlvbiB9IGZyb20gJy4uL21vZGVscy9yYWRpby1vcHRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZWFyY2hUeXBlIH0gZnJvbSAnLi4vbW9kZWxzL3NlYXJjaC5tb2RlbCc7XHJcbmltcG9ydCB7IFNlbGVjdE9wdGlvbiB9IGZyb20gJy4uL21vZGVscy9zZWxlY3Qtb3B0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgQXV0b0NvbXBsZXRlT3B0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2F1dG9jb21wbGV0ZS1vcHRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBMaW5rVHlwZSB9IGZyb20gJy4vbGluay10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgU2xpZGVUb2dnbGVPcHRpb24gfSBmcm9tICcuL3NsaWRlLXRvZ2dsZS1vcHRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgQ29sb3JGb3JtYXQsIENvbG9yc0FuaW1hdGlvbiB9IGZyb20gJy4vY29sb3ItZm9ybWF0Lm1vZGVsJztcclxuaW1wb3J0IHsgQWxsb3dlZEZpbGVUeXBlcyB9IGZyb20gJy4vYWxsb3dlZC1maWxlLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHsgRWRpdG9yQ29uZmlnIH0gZnJvbSAnbmd4LXNpbXBsZS10ZXh0LWVkaXRvcic7XHJcbmltcG9ydCB7IFZpZXdGaWxlc0Zvcm1hdCB9IGZyb20gJy4vdmlldy1maWxlcy1mb3JtYXQubW9kZWwnO1xyXG5pbXBvcnQgeyBBbGlnblR5cGUgfSBmcm9tICcuL2FsaWduLXR5cGUubW9kZWwnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWVsZENvbmZpZyB7XHJcbiAgaXNTb3J0TmVlZGVkPzogYm9vbGVhbjtcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgbGFiZWw/OiBzdHJpbmc7XHJcbiAgY29udHJvbE5hbWU6IHN0cmluZztcclxuICBkcm9wZG93bk9wdGlvbnM/OiBTZWxlY3RPcHRpb25bXTtcclxuICBjaGVja2JveE9wdGlvbnM/OiBDaGVja2JveE9wdGlvbltdO1xyXG4gIGF1dG9Db21wbGV0ZU9wdGlvbnM/OiBBdXRvQ29tcGxldGVPcHRpb25bXTtcclxuICByYWRpb09wdGlvbnM/OiBSYWRpb09wdGlvbltdO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIHR5cGU6IHN0cmluZztcclxuICByZXF1aXJlZEVycm9yTWVzc2FnZT86IHN0cmluZztcclxuICBwYXR0ZXJuRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIGludmFsaWRFbWFpbEVycm9yTWVzc2FnZT86IHN0cmluZztcclxuICBtaW5FcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgbWF4RXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHN1cHBvcnRNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHZhbGlkYXRpb24/OiBWYWxpZGF0b3JGbltdO1xyXG4gIGlzTXVsdGlTZWxlY3Q/OiBib29sZWFuO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgdmFsdWU/OiBhbnk7XHJcbiAgaXNOdW1iZXI/OiBib29sZWFuO1xyXG4gIGlzRW1haWw/OiBib29sZWFuO1xyXG4gIG1pbj86IG51bWJlcjtcclxuICBtYXg/OiBudW1iZXI7XHJcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG4gIG1pbkxlbmd0aD86IG51bWJlcjtcclxuICBpc0ludGVnZXI/OiBib29sZWFuO1xyXG4gIGlzUmVzaXplPzogYm9vbGVhbjtcclxuICBpc1JlYWRvbmx5PzogYm9vbGVhbjtcclxuICBpc0xhYmVsQWxpZ25lZExlZnQ/OiBib29sZWFuO1xyXG4gIGRhdGVQaWNrZXI/OiBEYXRlUGlja2VyO1xyXG4gIHNlYXJjaFR5cGU/OiBTZWFyY2hUeXBlO1xyXG4gIGRhdGVSYW5nZUNvbnRyb2xzPzogeyBzdGFydERhdGU6IHN0cmluZzsgZW5kRGF0ZTogc3RyaW5nIH07XHJcbiAgY2xlYXI/OiBib29sZWFuO1xyXG4gIGFyaWFMYWJlbD86IHN0cmluZztcclxuICBhcmlhRGVzY3JpYmVkQnlJZD86IHN0cmluZztcclxuICBhcmlhTXVsdGlsaW5lPzogYm9vbGVhbjtcclxuICBtaW5TZWxlY3Rpb25SZXF1aXJlZD86IG51bWJlcjtcclxuICBtYXhDaGFyQ291bnQ/OiBudW1iZXI7XHJcbiAgcmVtYWluaW5nQ2hhcnNMZWZ0TWVzc2FnZT86IHN0cmluZztcclxuICBuYW1lPzogc3RyaW5nO1xyXG4gIG1heFJhbmdlTGltaXQ/OiBudW1iZXI7XHJcbiAgaG91cjI0PzogbnVtYmVyO1xyXG4gIGhvdXIxMj86IG51bWJlcjtcclxuICBpc1NlYXJjaD86IGJvb2xlYW47XHJcbiAgaW52YWxpZERhdGVUaW1lRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIGlzMjRIb3Vyc1RpbWVGb3JtYXQ/OiBib29sZWFuO1xyXG4gIGxpbmtUeXBlPzogTGlua1R5cGU7XHJcbiAgc2xpZGVUb2dnbGVPcHRpb24/OiBTbGlkZVRvZ2dsZU9wdGlvbjtcclxuICBpc011bHRpRmlsZVVwbG9hZD86IGJvb2xlYW47XHJcbiAgbWF4VXBsb2FkRmlsZVNpemU/OiBudW1iZXI7XHJcbiAgYWxsb3dlZEZpbGVUeXBlcz86IEFsbG93ZWRGaWxlVHlwZXNbXTtcclxuICBtYXhGaWxlU2l6ZUVycm9yTWVzc2FnZT86IHN0cmluZztcclxuICBpc0ZpbGVTZWxlY3RlZD86IGJvb2xlYW47XHJcbiAgYWxsb3dlZEZpbGVUeXBlRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIGludmFsaWREYXRlUmFuZ2VFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgaW52YWxpZENvbG9yRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHBhbGV0dGU/OiBzdHJpbmdbXTtcclxuICBmaWxlVXBsb2FkSGVhZGluZz86IHN0cmluZztcclxuICBkZWZhdWx0Q29sb3I/OiBzdHJpbmc7XHJcbiAgY29sb3JGb3JtYXQ/OiBDb2xvckZvcm1hdDtcclxuICBvdmVybGF5Q2xhc3NOYW1lPzogc3RyaW5nO1xyXG4gIGNvbG9yQW5pbWF0aW9uPzogQ29sb3JzQW5pbWF0aW9uO1xyXG4gIHBhbGV0dGVTZWxlY3RMYWJlbD86IHN0cmluZztcclxuICBwYWxldHRlQ2FuY2VsTGFiZWw/OiBzdHJpbmc7XHJcbiAgaXNDb2xvckNvZGVMYWJlbE5lZWRlZD86IGJvb2xlYW47XHJcbiAgaXNBcnJvd0ljb25OZWVkZWQ/OiBib29sZWFuO1xyXG4gIGNhbkhpZGVDb2xvclBpY2tlcj86IGJvb2xlYW47XHJcbiAgY2FuSGlkZVRleHRJbnB1dD86IGJvb2xlYW47XHJcbiAgbXVsdGlTZWxlY3RBdXRvQ29tcGxldGVPcHRpb25zPzogQXV0b0NvbXBsZXRlT3B0aW9uW107XHJcbiAgZWRpdG9yQ29uZmlnPzogRWRpdG9yQ29uZmlnO1xyXG4gIGlzQWxsb3dBbnlGaWxlVHlwZT86IGJvb2xlYW47XHJcbiAgdmlld0ZpbGVzRm9ybWF0PzogVmlld0ZpbGVzRm9ybWF0O1xyXG4gIGlzVXBsb2FkQnV0dG9uTmVlZGVkPzogYm9vbGVhbjtcclxuICBhY3Rpb25CdXR0b25BbGlnbj86IEFsaWduVHlwZTtcclxuICBmaWxlVXBsb2FkRXJyb3JQb3NpdGlvbj86IHN0cmluZztcclxuICBtYXhGaWxlc1VwbG9hZExpbWl0PzogbnVtYmVyO1xyXG4gIG1heEZpbGVzVXBsb2FkTGltaXRFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbn1cclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc2VudGF0aW9uL3NyYy9saWIvbW9kZWxzL2ZpZWxkLWNvbmZpZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENoZWNrYm94T3B0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NoZWNrYm94LW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXIgfSBmcm9tICcuLi9tb2RlbHMvZGF0ZS1waWNrZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBSYWRpb09wdGlvbiB9IGZyb20gJy4uL21vZGVscy9yYWRpby1vcHRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZWFyY2hUeXBlIH0gZnJvbSAnLi4vbW9kZWxzL3NlYXJjaC5tb2RlbCc7XHJcbmltcG9ydCB7IFNlbGVjdE9wdGlvbiB9IGZyb20gJy4uL21vZGVscy9zZWxlY3Qtb3B0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgQXV0b0NvbXBsZXRlT3B0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2F1dG9jb21wbGV0ZS1vcHRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBMaW5rVHlwZSB9IGZyb20gJy4vbGluay10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgU2xpZGVUb2dnbGVPcHRpb24gfSBmcm9tICcuL3NsaWRlLXRvZ2dsZS1vcHRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgQ29sb3JGb3JtYXQsIENvbG9yc0FuaW1hdGlvbiB9IGZyb20gJy4vY29sb3ItZm9ybWF0Lm1vZGVsJztcclxuaW1wb3J0IHsgQWxsb3dlZEZpbGVUeXBlcyB9IGZyb20gJy4vYWxsb3dlZC1maWxlLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHsgRWRpdG9yQ29uZmlnIH0gZnJvbSAnbmd4LXNpbXBsZS10ZXh0LWVkaXRvcic7XHJcbmltcG9ydCB7IFZpZXdGaWxlc0Zvcm1hdCB9IGZyb20gJy4vdmlldy1maWxlcy1mb3JtYXQubW9kZWwnO1xyXG5pbXBvcnQgeyBBbGlnblR5cGUgfSBmcm9tICcuL2FsaWduLXR5cGUubW9kZWwnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWVsZENvbmZpZyB7XHJcbiAgaXNTb3J0TmVlZGVkPzogYm9vbGVhbjtcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgbGFiZWw/OiBzdHJpbmc7XHJcbiAgY29udHJvbE5hbWU6IHN0cmluZztcclxuICBkcm9wZG93bk9wdGlvbnM/OiBTZWxlY3RPcHRpb25bXTtcclxuICBjaGVja2JveE9wdGlvbnM/OiBDaGVja2JveE9wdGlvbltdO1xyXG4gIGF1dG9Db21wbGV0ZU9wdGlvbnM/OiBBdXRvQ29tcGxldGVPcHRpb25bXTtcclxuICByYWRpb09wdGlvbnM/OiBSYWRpb09wdGlvbltdO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIHR5cGU6IHN0cmluZztcclxuICByZXF1aXJlZEVycm9yTWVzc2FnZT86IHN0cmluZztcclxuICBwYXR0ZXJuRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIGludmFsaWRFbWFpbEVycm9yTWVzc2FnZT86IHN0cmluZztcclxuICBtaW5FcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgbWF4RXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHN1cHBvcnRNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHZhbGlkYXRpb24/OiBWYWxpZGF0b3JGbltdO1xyXG4gIGlzTXVsdGlTZWxlY3Q/OiBib29sZWFuO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgdmFsdWU/OiBhbnk7XHJcbiAgaXNOdW1iZXI/OiBib29sZWFuO1xyXG4gIGlzRW1haWw/OiBib29sZWFuO1xyXG4gIG1pbj86IG51bWJlcjtcclxuICBtYXg/OiBudW1iZXI7XHJcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG4gIG1pbkxlbmd0aD86IG51bWJlcjtcclxuICBpc0ludGVnZXI/OiBib29sZWFuO1xyXG4gIGlzUmVzaXplPzogYm9vbGVhbjtcclxuICBpc1JlYWRvbmx5PzogYm9vbGVhbjtcclxuICBpc0xhYmVsQWxpZ25lZExlZnQ/OiBib29sZWFuO1xyXG4gIGRhdGVQaWNrZXI/OiBEYXRlUGlja2VyO1xyXG4gIHNlYXJjaFR5cGU/OiBTZWFyY2hUeXBlO1xyXG4gIGRhdGVSYW5nZUNvbnRyb2xzPzogeyBzdGFydERhdGU6IHN0cmluZzsgZW5kRGF0ZTogc3RyaW5nIH07XHJcbiAgY2xlYXI/OiBib29sZWFuO1xyXG4gIGFyaWFMYWJlbD86IHN0cmluZztcclxuICBhcmlhRGVzY3JpYmVkQnlJZD86IHN0cmluZztcclxuICBhcmlhTXVsdGlsaW5lPzogYm9vbGVhbjtcclxuICBtaW5TZWxlY3Rpb25SZXF1aXJlZD86IG51bWJlcjtcclxuICBtYXhDaGFyQ291bnQ/OiBudW1iZXI7XHJcbiAgcmVtYWluaW5nQ2hhcnNMZWZ0TWVzc2FnZT86IHN0cmluZztcclxuICBuYW1lPzogc3RyaW5nO1xyXG4gIG1heFJhbmdlTGltaXQ/OiBudW1iZXI7XHJcbiAgaG91cjI0PzogbnVtYmVyO1xyXG4gIGhvdXIxMj86IG51bWJlcjtcclxuICBpc1NlYXJjaD86IGJvb2xlYW47XHJcbiAgaW52YWxpZERhdGVUaW1lRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIGlzMjRIb3Vyc1RpbWVGb3JtYXQ/OiBib29sZWFuO1xyXG4gIGxpbmtUeXBlPzogTGlua1R5cGU7XHJcbiAgc2xpZGVUb2dnbGVPcHRpb24/OiBTbGlkZVRvZ2dsZU9wdGlvbjtcclxuICBpc011bHRpRmlsZVVwbG9hZD86IGJvb2xlYW47XHJcbiAgbWF4VXBsb2FkRmlsZVNpemU/OiBudW1iZXI7XHJcbiAgYWxsb3dlZEZpbGVUeXBlcz86IEFsbG93ZWRGaWxlVHlwZXNbXTtcclxuICBtYXhGaWxlU2l6ZUVycm9yTWVzc2FnZT86IHN0cmluZztcclxuICBpc0ZpbGVTZWxlY3RlZD86IGJvb2xlYW47XHJcbiAgYWxsb3dlZEZpbGVUeXBlRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIGludmFsaWREYXRlUmFuZ2VFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgaW52YWxpZENvbG9yRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xyXG4gIHBhbGV0dGU/OiBzdHJpbmdbXTtcclxuICBmaWxlVXBsb2FkSGVhZGluZz86IHN0cmluZztcclxuICBkZWZhdWx0Q29sb3I/OiBzdHJpbmc7XHJcbiAgY29sb3JGb3JtYXQ/OiBDb2xvckZvcm1hdDtcclxuICBvdmVybGF5Q2xhc3NOYW1lPzogc3RyaW5nO1xyXG4gIGNvbG9yQW5pbWF0aW9uPzogQ29sb3JzQW5pbWF0aW9uO1xyXG4gIHBhbGV0dGVTZWxlY3RMYWJlbD86IHN0cmluZztcclxuICBwYWxldHRlQ2FuY2VsTGFiZWw/OiBzdHJpbmc7XHJcbiAgaXNDb2xvckNvZGVMYWJlbE5lZWRlZD86IGJvb2xlYW47XHJcbiAgaXNBcnJvd0ljb25OZWVkZWQ/OiBib29sZWFuO1xyXG4gIGNhbkhpZGVDb2xvclBpY2tlcj86IGJvb2xlYW47XHJcbiAgY2FuSGlkZVRleHRJbnB1dD86IGJvb2xlYW47XHJcbiAgbXVsdGlTZWxlY3RBdXRvQ29tcGxldGVPcHRpb25zPzogQXV0b0NvbXBsZXRlT3B0aW9uW107XHJcbiAgZWRpdG9yQ29uZmlnPzogRWRpdG9yQ29uZmlnO1xyXG4gIGlzQWxsb3dBbnlGaWxlVHlwZT86IGJvb2xlYW47XHJcbiAgdmlld0ZpbGVzRm9ybWF0PzogVmlld0ZpbGVzRm9ybWF0O1xyXG4gIGlzVXBsb2FkQnV0dG9uTmVlZGVkPzogYm9vbGVhbjtcclxuICBhY3Rpb25CdXR0b25BbGlnbj86IEFsaWduVHlwZTtcclxuICBhbGlnbkZpbGVVcGxvYWRFcnJvck1lc3NhZ2VUbz86IEFsaWduVHlwZTtcclxuICBtYXhGaWxlc1VwbG9hZExpbWl0PzogbnVtYmVyO1xyXG4gIG1heEZpbGVzVXBsb2FkTGltaXRFcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1hdHRhY2htZW50Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc2VudGF0aW9uL3NyYy9saWIvbW9kZWxzL2ZpbGUtYXR0YWNobWVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGaWxlQXR0YWNobWVudCB7XHJcbiAgYWdlbmRhSXRlbUlkOiBzdHJpbmc7XHJcbiAgYWdlbmRhSWQ6IHN0cmluZztcclxuICBzM0ZpbGVQYXRoOiBzdHJpbmc7XHJcbiAgZmlsZU5hbWU6IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVBdHRhY2htZW50UGF5bG9hZCB7XHJcbiAgcGF5bG9hZDogRmlsZUF0dGFjaG1lbnRbXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVBdHRhY2htZW50UmVzcG9uc2Uge1xyXG4gIHN0YXR1czogYm9vbGVhbjtcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgYm9keToge1xyXG4gICAgaWQ6IHN0cmluZyB8IG51bGw7XHJcbiAgICBuYW1lOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgbWVzc2FnZTogc3RyaW5nO1xyXG4gICAgdG90YWxSZWNvcmRzOiBudW1iZXI7XHJcbiAgfTtcclxufVxyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1hdHRhY2htZW50Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc2VudGF0aW9uL3NyYy9saWIvbW9kZWxzL2ZpbGUtYXR0YWNobWVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGaWxlQXR0YWNobWVudCB7XHJcbiAgYWdlbmRhSXRlbUlkOiBzdHJpbmc7XHJcbiAgYWdlbmRhSWQ6IHN0cmluZztcclxuICBzM0ZpbGVQYXRoOiBzdHJpbmc7XHJcbiAgZmlsZU5hbWU6IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVBdHRhY2htZW50UGF5bG9hZCB7XHJcbiAgcGF5bG9hZDogRmlsZUF0dGFjaG1lbnRbXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEFnZW5kYUl0ZW1BdHRhY2htZW50IHtcclxuICBmaWxlTmFtZTogc3RyaW5nO1xyXG4gIGFnZW5kYUl0ZW1BdHRhY2htZW50SWQ6IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVBdHRhY2htZW50UmVzcG9uc2Uge1xyXG4gIHN0YXR1czogYm9vbGVhbjtcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgYm9keToge1xyXG4gICAgdG90YWxSZWNvcmRzOiBudW1iZXI7XHJcbiAgICBhZ2VuZGFJdGVtQXR0YWNobWVudExpc3Q6IEFnZW5kYUl0ZW1BdHRhY2htZW50W107XHJcbiAgfTtcclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kb3dubG9hZC1jb25maWcubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9tb2RlbHMvZmlsZS1kb3dubG9hZC1jb25maWcubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRmlsZURvd25sb2FkQ29uZmlnIHtcclxuICBpc0ZpbGVEb3dubG9hZE5vdE5lZWRlZD86IGJvb2xlYW47XHJcbiAgaXNEZWxldGVOZWVkZWQ/OiBib29sZWFuO1xyXG4gIGlzQWxpZ25lZFZlcnRpY2FsPzogYm9vbGVhbjtcclxuICBkb3dubG9hZFVyaT86IHN0cmluZztcclxuICBpc05vdERvd25sb2FkRmlsZUludGVybmFsbHk/OiBib29sZWFuO1xyXG4gIGlzTm90RGVsZXRlRmlsZUludGVybmFsbHk/OiBib29sZWFuO1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kb3dubG9hZC1jb25maWcubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9tb2RlbHMvZmlsZS1kb3dubG9hZC1jb25maWcubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRmlsZURvd25sb2FkQ29uZmlnIHtcclxuICBpc0ZpbGVEb3dubG9hZE5vdE5lZWRlZD86IGJvb2xlYW47XHJcbiAgaXNEZWxldGVOZWVkZWQ/OiBib29sZWFuO1xyXG4gIGlzQWxpZ25lZFZlcnRpY2FsPzogYm9vbGVhbjtcclxuICBkb3dubG9hZFVyaT86IHN0cmluZztcclxuICBkZWxldGVVcmk/OiBzdHJpbmc7XHJcbiAgaXNOb3REb3dubG9hZEZpbGVJbnRlcm5hbGx5PzogYm9vbGVhbjtcclxuICBpc05vdERlbGV0ZUZpbGVJbnRlcm5hbGx5PzogYm9vbGVhbjtcclxufVxyXG4iXX0=
@@ -36,6 +36,14 @@ export class FileUploadService {
36
36
  setApiBaseUrl(apiBaseUrl) {
37
37
  this.apiBaseUrl = apiBaseUrl;
38
38
  }
39
+ /**
40
+ * Gets API base URL for API requests.
41
+ * @return {*} {string}
42
+ * @memberof FileUploadService
43
+ */
44
+ getApiBaseUrl() {
45
+ return this.apiBaseUrl;
46
+ }
39
47
  /**
40
48
  * Retrieves presigned URL for uploading files to Amazon S3 bucket.
41
49
  * @param {(File | FileList)} file
@@ -94,7 +102,7 @@ export class FileUploadService {
94
102
  if (isMultipleFileUpload) {
95
103
  Object.values(files).forEach((file) => {
96
104
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
97
- const indexForPreSignedUrl = preSignedUrl.findIndex((x) => x.fileName === file.name && x.errorMessage == null);
105
+ const indexForPreSignedUrl = preSignedUrl.findIndex((x) => x.fileName === file.name && x.errorMessage === null);
98
106
  if (indexForPreSignedUrl > -1) {
99
107
  filesArray.push({
100
108
  preSignedUrl: preSignedUrl[indexForPreSignedUrl]?.preSignedUrl,
@@ -157,7 +165,6 @@ export class FileUploadService {
157
165
  */
158
166
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
159
167
  getEventMessage(event, file) {
160
- console.log('Event from file upload to AWS', event);
161
168
  let fileName = '';
162
169
  let fileSize = 0;
163
170
  fileName = file.name;
@@ -178,10 +185,8 @@ export class FileUploadService {
178
185
  this.uploadedFileName = fileName;
179
186
  return true;
180
187
  }
181
- else {
182
- this.filesNamesUploadFailed.push(fileName);
183
- return false;
184
- }
188
+ this.filesNamesUploadFailed.push(fileName);
189
+ return false;
185
190
  default:
186
191
  return `File "${fileName}" surprising upload event: ${event.type}.`;
187
192
  }
@@ -348,8 +353,8 @@ export class FileUploadService {
348
353
  deleteFile(deleteFileApiPath) {
349
354
  const deleteFilePayload = {
350
355
  // Assign data here if needed to send any payload in body
351
- // example below
352
- // fileId: arguments[0],
356
+ // Example below
357
+ // FileId: arguments[0],
353
358
  };
354
359
  return this.httpService
355
360
  .putData(`${this.apiBaseUrl}/${deleteFileApiPath}`, Object.keys(deleteFilePayload).length ? deleteFilePayload : {})
@@ -376,4 +381,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
376
381
  providedIn: 'root',
377
382
  }]
378
383
  }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.HttpBackend }, { type: i1.AlertsService }, { type: i1.LoaderNotificationService }]; } });
379
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXNlbnRhdGlvbi9zcmMvbGliL3NlcnZpY2VzL2ZpbGUtdXBsb2FkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFVBQVUsRUFFVixhQUFhLEVBQ2IsV0FBVyxHQUNaLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBRUwsU0FBUyxHQUdWLE1BQU0scUJBQXFCLENBQUM7QUFRN0IsT0FBTyxFQUNMLFVBQVUsRUFDVixTQUFTLEVBQ1QsSUFBSSxFQUNKLElBQUksRUFDSixHQUFHLEVBRUgsT0FBTyxFQUNQLElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxLQUFLLFNBQVMsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQVl0RDs7O0dBR0c7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBVzVCO0lBQ0UsMENBQTBDO0lBQ25DLFdBQXdCLEVBQy9CLE9BQW9CO0lBQ3BCLDBDQUEwQztJQUNuQyxZQUEyQjtJQUNsQywwQ0FBMEM7SUFDbkMseUJBQW9EO1FBTHBELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBR3hCLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBRTNCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFqQjdELGFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUNwRCxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBSXRCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXhCLG1DQUE4QixHQUFHLENBQUMsQ0FBQztRQUNuQyxxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFXcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGFBQWEsQ0FBQyxVQUFrQjtRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx5QkFBeUIsQ0FDdkIsSUFBcUIsRUFDckIsS0FBYTtRQUViLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTTtZQUFFLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzs7WUFDbEUsUUFBUSxHQUFJLElBQWEsQ0FBQyxJQUFJLENBQUM7UUFDcEMsTUFBTSw2QkFBNkIsR0FBcUM7WUFDdEUsT0FBTyxFQUFFO2dCQUNQLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixXQUFXLEVBQUUsS0FBZTthQUM3QjtTQUNGLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxXQUFXO2FBQ3BCLFFBQVEsQ0FDUCxHQUFHLElBQUksQ0FBQyxVQUFVLGtDQUFrQyxFQUNwRCw2QkFBNkIsQ0FDOUI7YUFDQSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDZixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN0QixNQUFNLFFBQVEsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxlQUFlLENBQ2IsaUJBQW9DLEVBQ3BDLGlCQUFpQixHQUFHLEVBQUU7UUFFdEIsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLGlCQUFpQixFQUFFLEVBQUUsaUJBQWlCLENBQUM7YUFDdEUsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2YsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDdEIsTUFBTSxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsY0FBYyxDQUNaLFlBQStDLEVBQy9DLEtBQXNCLEVBQ3RCLG9CQUFvQixHQUFHLEtBQUs7SUFDNUIsOERBQThEOztRQUU5RCxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEMsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLG9CQUFvQixFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3BDLDhEQUE4RDtnQkFDOUQsTUFBTSxvQkFBb0IsR0FBSSxZQUFtQixDQUFDLFNBQVMsQ0FDekQsQ0FBQyxDQUF5QixFQUFFLEVBQUUsQ0FDNUIsQ0FBQyxDQUFDLFFBQVEsS0FBTSxJQUFhLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUMvRCxDQUFDO2dCQUNGLElBQUksb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQzdCLFVBQVUsQ0FBQyxJQUFJLENBQUM7d0JBQ2QsWUFBWSxFQUNWLFlBQVksQ0FBQyxvQkFBb0IsQ0FDbEMsRUFBRSxZQUFZO3dCQUNmLE9BQU8sRUFBRSxJQUFZO3dCQUNyQixRQUFRLEVBQUcsSUFBYSxDQUFDLElBQUk7d0JBQzdCLFFBQVEsRUFBRyxJQUFhLENBQUMsSUFBSTtxQkFDOUIsQ0FBQyxDQUFDO2lCQUNKO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDZCxZQUFZLEVBQUUsWUFBc0I7Z0JBQ3BDLE9BQU8sRUFBRSxLQUFhO2dCQUN0QixRQUFRLEVBQUcsS0FBYyxDQUFDLElBQUk7Z0JBQzlCLFFBQVEsRUFBRyxLQUFjLENBQUMsSUFBSTthQUMvQixDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDMUIsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDakIsSUFBSSxDQUFDLGFBQWEsQ0FDaEIsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxRQUFRLENBQ2QsQ0FDRixFQUNELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQ3hCLENBQUM7SUFDSixDQUFDO0lBQ0Q7Ozs7Ozs7O09BUUc7SUFDSCxhQUFhLENBQ1gsWUFBb0IsRUFDcEIsSUFBVSxFQUNWLFFBQWdCLEVBQ2hCLFFBQWdCO0lBQ2hCLDhEQUE4RDs7UUFFOUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXRELE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUU7WUFDdkIsY0FBYyxFQUFFLElBQUk7WUFDcEIsT0FBTyxFQUFFLFFBQVE7WUFDakIsT0FBTyxFQUFFLE9BQU87U0FDakIsQ0FBQzthQUNELElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN4QixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQ2pELEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUM1QyxJQUFJLEVBQUUsRUFDTixVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEMsTUFBTSxRQUFRLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsMEtBQTBLO0lBQzFLLFlBQVksQ0FBQyxPQUFZLElBQUcsQ0FBQztJQUU3Qjs7Ozs7O09BTUc7SUFDSCw4REFBOEQ7SUFDOUQsZUFBZSxDQUFDLEtBQXFCLEVBQUUsSUFBVTtRQUMvQyxPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BELElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLFFBQVEsR0FBb0IsQ0FBQyxDQUFDO1FBQ2xDLFFBQVEsR0FBSSxJQUFhLENBQUMsSUFBSSxDQUFDO1FBQy9CLFFBQVEsR0FBSSxJQUFhLENBQUMsSUFBSSxDQUFDO1FBQy9CLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNsQixLQUFLLGFBQWEsQ0FBQyxJQUFJO2dCQUNyQixPQUFPLG1CQUFtQixRQUFRLGFBQWEsUUFBUSxHQUFHLENBQUM7WUFDN0QsS0FBSyxhQUFhLENBQUMsY0FBYztnQkFDL0IsZ0RBQWdEO2dCQUNoRCxNQUFNLFdBQVcsR0FBRyxLQUFLLEVBQUUsS0FBSztvQkFDOUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7b0JBQ2hELENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ04sT0FBTyxTQUFTLFFBQVEsUUFBUSxXQUFXLGFBQWEsQ0FBQztZQUMzRCxLQUFLLGFBQWEsQ0FBQyxRQUFRO2dCQUN6QixJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3RDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO29CQUN0QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO29CQUNqQyxPQUFPLElBQUksQ0FBQztpQkFDYjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUMzQyxPQUFPLEtBQUssQ0FBQztpQkFDZDtZQUNIO2dCQUNFLE9BQU8sU0FBUyxRQUFRLDhCQUE4QixLQUFLLENBQUMsSUFBSSxHQUFHLENBQUM7U0FDdkU7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHNCQUFzQixDQUFDLElBQVU7UUFDL0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRTtZQUN0QixNQUFNLFdBQVcsR0FBRyxNQUFNLEVBQUUsTUFBcUIsQ0FBQztZQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQztRQUNGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO2dCQUM3QixNQUFNLEVBQUUsUUFBUTtnQkFDaEIsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCO2dCQUNyRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUs7Z0JBQzNCLGFBQWEsRUFBRSxJQUFJO2FBQ3BCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUNGLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CLENBQUMsTUFBZTtRQUNqQyxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsNEJBQTRCLENBQzFCLElBQTZDLEVBQzdDLFdBQXFCLEVBQ3JCLFNBQWtCLEVBQ2xCLFdBQW9CO1FBRXBCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7WUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDO2FBQ3pDLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNO1lBQUUsUUFBUSxHQUFHLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7O1lBQzdFLFFBQVEsR0FBSSxJQUFhLENBQUMsSUFBSSxDQUFDO1FBQ3BDLElBQUksV0FFSCxDQUFDO1FBQ0YsSUFBSSxXQUFXLEVBQUU7WUFDZixNQUFNLCtCQUErQixHQUNuQztnQkFDRSxPQUFPLEVBQUU7b0JBQ1AsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLE1BQU0sRUFBRSxTQUFtQjtpQkFDNUI7YUFDRixDQUFDO1lBQ0osV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUNyQyxHQUFHLElBQUksQ0FBQyxVQUFVLHdDQUF3QyxFQUMxRCwrQkFBK0IsQ0FDaEMsQ0FBQztTQUNIO2FBQU0sSUFBSSxXQUFXLEVBQUU7WUFDdEIsTUFBTSw2Q0FBNkMsR0FDakQ7Z0JBQ0UsT0FBTyxFQUFFO29CQUNQLFlBQVksRUFBRyxJQUFxQixDQUFDLFlBQVk7b0JBQ2pELGlCQUFpQixFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLGlCQUFpQjtpQkFDbkU7YUFDRixDQUFDO1lBQ0osV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUNyQyxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxFQUFFLEVBQ2xDLDZDQUE2QyxDQUM5QyxDQUFDO1NBQ0g7YUFBTTtZQUNMLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FDcEMsR0FBRyxJQUFJLENBQUMsVUFBVSxzQ0FBc0MsUUFBUSxFQUFFLENBQ25FLENBQUM7U0FDSDtRQUNELE9BQU8sV0FBVyxDQUFDLElBQUksQ0FDckIsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDZixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN0QixNQUFNLFFBQVEsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw4REFBOEQ7SUFDOUQsWUFBWSxDQUFDLHdCQUFnQztRQUMzQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUMsSUFBSSxDQUN2RCxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNmLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3RCLE1BQU0sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILGdCQUFnQixDQUNkLEtBQXNCLEVBQ3RCLFdBQW1CLEVBQ25CLGlCQUEwQjtRQUUxQixJQUFJLGlCQUFpQixFQUFFO1lBQ3JCLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNsQixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVUsRUFBRSxFQUFFO2dCQUMxQyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sU0FBUyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQztTQUNqRDtRQUNELE9BQVEsS0FBYyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxpQkFBaUIsQ0FDZixLQUFzQixFQUN0QixnQkFBMEIsRUFDMUIsaUJBQTBCO1FBRTFCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxJQUFVLEVBQVcsRUFBRTtZQUNqRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQztRQUNGLElBQUksaUJBQWlCLEVBQUU7WUFDckIsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLDhEQUE4RDtZQUM5RCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUM5QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ2pDLGFBQWEsR0FBRyxLQUFLLENBQUM7aUJBQ3ZCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLGFBQWEsQ0FBQztTQUN0QjtRQUNELE9BQU8sa0JBQWtCLENBQUMsS0FBYSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLGdCQUFnQixDQUFDLFFBQWdCO1FBQ3ZDLG9FQUFvRTtRQUNwRSxPQUFPLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLGlCQUF5QjtRQUNsQyxNQUFNLGlCQUFpQixHQUFzQjtRQUMzQyx5REFBeUQ7UUFDekQsZ0JBQWdCO1FBQ2hCLHdCQUF3QjtTQUN6QixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixPQUFPLENBQ04sR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLGlCQUFpQixFQUFFLEVBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQy9EO2FBQ0EsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2YsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7K0dBaGNVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEh0dHBCYWNrZW5kLFxyXG4gIEh0dHBDbGllbnQsXHJcbiAgSHR0cEV2ZW50LFxyXG4gIEh0dHBFdmVudFR5cGUsXHJcbiAgSHR0cEhlYWRlcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBbGVydHNTZXJ2aWNlLFxyXG4gIEFsZXJ0VHlwZSxcclxuICBIdHRwU2VydmljZSxcclxuICBMb2FkZXJOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQge1xyXG4gIEZpbGVVcGxvYWRQcmVzaWduZWRVcmwsXHJcbiAgR2V0RmlsZURvd25sb2FkUHJlc2lnbmVkVXJsQnlBdHRhY2htZW50SWRQYXlsb2FkLFxyXG4gIEdldEZpbGVEb3dubG9hZFByZXNpZ25lZFVybEJ5QXR0YWNobWVudElkUmVzcG9uc2UsXHJcbiAgR2V0RmlsZURvd25sb2FkUHJlc2lnbmVkVXJsUGF5bG9hZCxcclxuICBHZXRGaWxlVXBsb2FkUHJlc2lnbmVkVXJsUGF5bG9hZCxcclxufSBmcm9tICcuLi9tb2RlbHMvZmlsZS11cGxvYWQtcHJlc2lnbmVkLXVybC1yZXMubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIGNhdGNoRXJyb3IsXHJcbiAgY29uY2F0TWFwLFxyXG4gIGZyb20sXHJcbiAgbGFzdCxcclxuICBtYXAsXHJcbiAgT2JzZXJ2YWJsZSxcclxuICBTdWJqZWN0LFxyXG4gIHRha2UsXHJcbiAgdGFrZVVudGlsLFxyXG4gIHRhcCxcclxufSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRQYXlsb2FkIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbGUtdXBsb2FkLXBheWxvYWQtbW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEZpbGVVcGxvYWRCb2R5UmVzcG9uc2UsXHJcbiAgRmlsZVVwbG9hZFJlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy9maWxlLXVwbG9hZC1yZXNwb25zZS5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgRGVsZXRlRmlsZVBheWxvYWQsXHJcbiAgRGVsZXRlRmlsZVJlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy9kZWxldGUtZmlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IERvd25sb2FkRmlsZSB9IGZyb20gJy4uL21vZGVscy9kb3dubG9hZC1maWxlLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBUaGlzIHNlcnZpY2UgaW50ZXJhY3RzIHdpdGggdGhlIHNlcnZlciB0byBvYnRhaW4gcHJlLXNpZ25lZCBVUkxzIGZvciBmaWxlIHVwbG9hZCBhbmQgdXBsb2FkcyBmaWxlcyB0byBBbWF6b24gUzMuXHJcbiAqIEBjbGFzcyBGaWxlVXBsb2FkU2VydmljZVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgY29uc3RhbnRzID0gY29uc3RhbnRzO1xyXG4gIGFwaUJhc2VVcmwhOiBzdHJpbmc7XHJcbiAgZmlsZUJ5dGVBcnJheTogVWludDhBcnJheSB8IHVuZGVmaW5lZDtcclxuICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xyXG4gIGlzRmlsZVVwbG9hZGluZyA9IGZhbHNlO1xyXG4gIGZpbGVzTmFtZXNVcGxvYWRGYWlsZWQhOiBzdHJpbmdbXTtcclxuICBmaWxlc1VwbG9hZGVkU3VjY2Vzc2Z1bGx5Q291bnQgPSAwO1xyXG4gIHVwbG9hZGVkRmlsZU5hbWUgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBodHRwU2VydmljZTogSHR0cFNlcnZpY2UsXHJcbiAgICBoYW5kbGVyOiBIdHRwQmFja2VuZCxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGFsZXJ0U2VydmljZTogQWxlcnRzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGxvYWRlck5vdGlmaWNhdGlvblNlcnZpY2U6IExvYWRlck5vdGlmaWNhdGlvblNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuaHR0cENsaWVudCA9IG5ldyBIdHRwQ2xpZW50KGhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgYmFzZSBVUkwgZm9yIEFQSSByZXF1ZXN0cy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBpQmFzZVVybCAtQVBJIGJhc2UgVVJMLlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkU2VydmljZVxyXG4gICAqL1xyXG4gIHNldEFwaUJhc2VVcmwoYXBpQmFzZVVybDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmFwaUJhc2VVcmwgPSBhcGlCYXNlVXJsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHByZXNpZ25lZCBVUkwgZm9yIHVwbG9hZGluZyBmaWxlcyB0byBBbWF6b24gUzMgYnVja2V0LlxyXG4gICAqIEBwYXJhbSB7KEZpbGUgfCBGaWxlTGlzdCl9IGZpbGVcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPEZpbGVVcGxvYWRQcmVzaWduZWRVcmw+fVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEZpbGVVcGxvYWRQcmVzaWduZWRVcmwoXHJcbiAgICBmaWxlOiBGaWxlIHwgRmlsZUxpc3QsXHJcbiAgICBhcHBJZDogc3RyaW5nXHJcbiAgKTogT2JzZXJ2YWJsZTxGaWxlVXBsb2FkUHJlc2lnbmVkVXJsPiB7XHJcbiAgICBsZXQgZmlsZU5hbWUgPSAnJztcclxuICAgIGlmIChPYmplY3QudmFsdWVzKGZpbGUpLmxlbmd0aCkgZmlsZU5hbWUgPSBPYmplY3QudmFsdWVzKGZpbGUpWzBdLm5hbWU7XHJcbiAgICBlbHNlIGZpbGVOYW1lID0gKGZpbGUgYXMgRmlsZSkubmFtZTtcclxuICAgIGNvbnN0IGZpbGVVcGxvYWRQcmVzaWduZWRVcmxQYXlsb2FkOiBHZXRGaWxlVXBsb2FkUHJlc2lnbmVkVXJsUGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGZpbGVOYW1lOiBmaWxlTmFtZSxcclxuICAgICAgICB0ZW5hbnRBcHBJZDogYXBwSWQgYXMgc3RyaW5nLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShcclxuICAgICAgICBgJHt0aGlzLmFwaUJhc2VVcmx9L2NvbmZpZ3VyYXRpb25zL3MzL3VwbG9hZEZpbGVVcmxgLFxyXG4gICAgICAgIGZpbGVVcGxvYWRQcmVzaWduZWRVcmxQYXlsb2FkXHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvclJlcztcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBwcmUtc2lnbmVkIFVSTCBmb3IgdGhlIGZpbGVzIHRvIGJlIHVwbG9hZGVkIGluIFMzIGJ1Y2tldFxyXG4gICAqIEBwYXJhbSBmaWxlVXBsb2FkUGF5bG9hZFxyXG4gICAqIEBwYXJhbSBmaWxlVXBsb2FkQVBJUGF0aFxyXG4gICAqL1xyXG4gIGdldFByZVNpZ25lZFVSTChcclxuICAgIGZpbGVVcGxvYWRQYXlsb2FkOiBGaWxlVXBsb2FkUGF5bG9hZCxcclxuICAgIGZpbGVVcGxvYWRBUElQYXRoID0gJydcclxuICApOiBPYnNlcnZhYmxlPEZpbGVVcGxvYWRSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2VcclxuICAgICAgLnBvc3REYXRhKGAke3RoaXMuYXBpQmFzZVVybH0vJHtmaWxlVXBsb2FkQVBJUGF0aH1gLCBmaWxlVXBsb2FkUGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvclJlcztcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBsb2FkcyBmaWxlIHRvIEFXUyBTMyB1c2luZyBhIHByZS1zaWduZWQgVVJMLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcmVTaWduZWRVcmxcclxuICAgKiBAcGFyYW0gZmlsZXNcclxuICAgKiBAcGFyYW0gaXNNdWx0aXBsZUZpbGVVcGxvYWRcclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPGFueT59IC1SZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgcmVzcG9uc2UgYWZ0ZXIgdXBsb2FkaW5nIHRoZSBmaWxlIHRvIFMzLlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkU2VydmljZVxyXG4gICAqL1xyXG4gIHVwbG9hZEZpbGVUb1MzKFxyXG4gICAgcHJlU2lnbmVkVXJsOiBGaWxlVXBsb2FkQm9keVJlc3BvbnNlW10gfCBzdHJpbmcsXHJcbiAgICBmaWxlczogRmlsZSB8IEZpbGVMaXN0LFxyXG4gICAgaXNNdWx0aXBsZUZpbGVVcGxvYWQgPSBmYWxzZVxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5sb2FkZXJOb3RpZmljYXRpb25TZXJ2aWNlLnNob3coKTtcclxuICAgIGNvbnN0IGZpbGVzQXJyYXkgPSBbXTtcclxuICAgIHRoaXMuZmlsZXNOYW1lc1VwbG9hZEZhaWxlZCA9IFtdO1xyXG4gICAgdGhpcy51cGxvYWRlZEZpbGVOYW1lID0gJyc7XHJcbiAgICBpZiAoaXNNdWx0aXBsZUZpbGVVcGxvYWQpIHtcclxuICAgICAgT2JqZWN0LnZhbHVlcyhmaWxlcykuZm9yRWFjaCgoZmlsZSkgPT4ge1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY29uc3QgaW5kZXhGb3JQcmVTaWduZWRVcmwgPSAocHJlU2lnbmVkVXJsIGFzIFtdKS5maW5kSW5kZXgoXHJcbiAgICAgICAgICAoeDogRmlsZVVwbG9hZEJvZHlSZXNwb25zZSkgPT5cclxuICAgICAgICAgICAgeC5maWxlTmFtZSA9PT0gKGZpbGUgYXMgRmlsZSkubmFtZSAmJiB4LmVycm9yTWVzc2FnZSA9PSBudWxsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoaW5kZXhGb3JQcmVTaWduZWRVcmwgPiAtMSkge1xyXG4gICAgICAgICAgZmlsZXNBcnJheS5wdXNoKHtcclxuICAgICAgICAgICAgcHJlU2lnbmVkVXJsOiAoXHJcbiAgICAgICAgICAgICAgcHJlU2lnbmVkVXJsW2luZGV4Rm9yUHJlU2lnbmVkVXJsXSBhcyBGaWxlVXBsb2FkQm9keVJlc3BvbnNlXHJcbiAgICAgICAgICAgICk/LnByZVNpZ25lZFVybCxcclxuICAgICAgICAgICAgZmlsZU9iajogZmlsZSBhcyBGaWxlLFxyXG4gICAgICAgICAgICBmaWxlVHlwZTogKGZpbGUgYXMgRmlsZSkudHlwZSxcclxuICAgICAgICAgICAgZmlsZVNpemU6IChmaWxlIGFzIEZpbGUpLnNpemUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmlsZXNBcnJheS5wdXNoKHtcclxuICAgICAgICBwcmVTaWduZWRVcmw6IHByZVNpZ25lZFVybCBhcyBzdHJpbmcsXHJcbiAgICAgICAgZmlsZU9iajogZmlsZXMgYXMgRmlsZSxcclxuICAgICAgICBmaWxlVHlwZTogKGZpbGVzIGFzIEZpbGUpLnR5cGUsXHJcbiAgICAgICAgZmlsZVNpemU6IChmaWxlcyBhcyBGaWxlKS5zaXplLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmcm9tKGZpbGVzQXJyYXkpLnBpcGUoXHJcbiAgICAgIGNvbmNhdE1hcCgoZmlsZSkgPT5cclxuICAgICAgICB0aGlzLmh0dHBDYWxsVG9BV1MoXHJcbiAgICAgICAgICBmaWxlLnByZVNpZ25lZFVybCxcclxuICAgICAgICAgIGZpbGUuZmlsZU9iaixcclxuICAgICAgICAgIGZpbGUuZmlsZVR5cGUsXHJcbiAgICAgICAgICBmaWxlLmZpbGVTaXplXHJcbiAgICAgICAgKVxyXG4gICAgICApLFxyXG4gICAgICB0YWtlKGZpbGVzQXJyYXkubGVuZ3RoKVxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTWFrZXMgaHR0cCBjYWxsIHRvIEFXUyB0byB1cGxvYWQgZmlsZSBpbiBTMyBidWNrZXRcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlU2lnbmVkVXJsXHJcbiAgICogQHBhcmFtIHtGaWxlfSBmaWxlXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVUeXBlXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGZpbGVTaXplXHJcbiAgICogQHJldHVybiB7Kn0gIHtPYnNlcnZhYmxlPGFueT59XHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRTZXJ2aWNlXHJcbiAgICovXHJcbiAgaHR0cENhbGxUb0FXUyhcclxuICAgIHByZVNpZ25lZFVybDogc3RyaW5nLFxyXG4gICAgZmlsZTogRmlsZSxcclxuICAgIGZpbGVUeXBlOiBzdHJpbmcsXHJcbiAgICBmaWxlU2l6ZTogbnVtYmVyXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICBoZWFkZXJzLmFwcGVuZCgnQ29udGVudC1UeXBlJywgZmlsZVR5cGUudG9TdHJpbmcoKSk7XHJcbiAgICBoZWFkZXJzLmFwcGVuZCgnQ29udGVudC1MZW5ndGgnLCBmaWxlU2l6ZS50b1N0cmluZygpKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgIC5wdXQocHJlU2lnbmVkVXJsLCBmaWxlLCB7XHJcbiAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXHJcbiAgICAgICAgb2JzZXJ2ZTogJ2V2ZW50cycsXHJcbiAgICAgICAgaGVhZGVyczogaGVhZGVycyxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICAgIG1hcCgoZXZlbnQpID0+IHRoaXMuZ2V0RXZlbnRNZXNzYWdlKGV2ZW50LCBmaWxlKSksXHJcbiAgICAgICAgdGFwKChtZXNzYWdlKSA9PiB0aGlzLnNob3dQcm9ncmVzcyhtZXNzYWdlKSksXHJcbiAgICAgICAgbGFzdCgpLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlck5vdGlmaWNhdGlvblNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3JSZXM7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgZmlsZSB1cGxvYWQgcHJvZ3Jlc3MuXHJcbiAgICogQHBhcmFtIHsqfSBtZXNzYWdlXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRTZXJ2aWNlXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnksIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgbm8tdW51c2VkLXZhcnMsIG5vLWVtcHR5LWZ1bmN0aW9uLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cclxuICBzaG93UHJvZ3Jlc3MobWVzc2FnZTogYW55KSB7fVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gZGlzdGluY3QgbWVzc2FnZSBmb3Igc2VudCwgdXBsb2FkIHByb2dyZXNzLCAmIHJlc3BvbnNlIGV2ZW50cy5cclxuICAgKiBAcGFyYW0ge0h0dHBFdmVudDxhbnk+fSBldmVudFxyXG4gICAqIEBwYXJhbSB7KEZpbGUgfCBGaWxlTGlzdCl9IGZpbGVcclxuICAgKiBAcmV0dXJuIHsqfVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkU2VydmljZVxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZ2V0RXZlbnRNZXNzYWdlKGV2ZW50OiBIdHRwRXZlbnQ8YW55PiwgZmlsZTogRmlsZSkge1xyXG4gICAgY29uc29sZS5sb2coJ0V2ZW50IGZyb20gZmlsZSB1cGxvYWQgdG8gQVdTJywgZXZlbnQpO1xyXG4gICAgbGV0IGZpbGVOYW1lID0gJyc7XHJcbiAgICBsZXQgZmlsZVNpemU6IG51bWJlciB8IHN0cmluZyA9IDA7XHJcbiAgICBmaWxlTmFtZSA9IChmaWxlIGFzIEZpbGUpLm5hbWU7XHJcbiAgICBmaWxlU2l6ZSA9IChmaWxlIGFzIEZpbGUpLnNpemU7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlNlbnQ6XHJcbiAgICAgICAgcmV0dXJuIGBVcGxvYWRpbmcgZmlsZSBcIiR7ZmlsZU5hbWV9XCIgb2Ygc2l6ZSAke2ZpbGVTaXplfS5gO1xyXG4gICAgICBjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6XHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNhc2UtZGVjbGFyYXRpb25zXHJcbiAgICAgICAgY29uc3QgcGVyY2VudERvbmUgPSBldmVudD8udG90YWxcclxuICAgICAgICAgID8gTWF0aC5yb3VuZCgoMTAwICogZXZlbnQubG9hZGVkKSAvIGV2ZW50LnRvdGFsKVxyXG4gICAgICAgICAgOiAwO1xyXG4gICAgICAgIHJldHVybiBgRmlsZSBcIiR7ZmlsZU5hbWV9XCIgaXMgJHtwZXJjZW50RG9uZX0lIHVwbG9hZGVkLmA7XHJcbiAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZTpcclxuICAgICAgICB0aGlzLmxvYWRlck5vdGlmaWNhdGlvblNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIGlmIChldmVudC5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgdGhpcy5maWxlc1VwbG9hZGVkU3VjY2Vzc2Z1bGx5Q291bnQrKztcclxuICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlTmFtZSA9IGZpbGVOYW1lO1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZmlsZXNOYW1lc1VwbG9hZEZhaWxlZC5wdXNoKGZpbGVOYW1lKTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGBGaWxlIFwiJHtmaWxlTmFtZX1cIiBzdXJwcmlzaW5nIHVwbG9hZCBldmVudDogJHtldmVudC50eXBlfS5gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydHMgZmlsZSB0byBieXRlIGFycmF5LlxyXG4gICAqIEBwYXJhbSB7RmlsZX0gZmlsZVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkU2VydmljZVxyXG4gICAqL1xyXG4gIGNvbnZlcnRGaWxlVG9CeXRlQXJyYXkoZmlsZTogRmlsZSk6IHZvaWQge1xyXG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gcmVhZGVyPy5yZXN1bHQgYXMgQXJyYXlCdWZmZXI7XHJcbiAgICAgIHRoaXMuZmlsZUJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKTtcclxuICAgIH07XHJcbiAgICByZWFkZXIub25lcnJvciA9ICgpID0+IHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2U/LnNob3dNZXNzYWdlKHtcclxuICAgICAgICBzdGF0dXM6ICdjdXN0b20nLFxyXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMuY29uc3RhbnRzPy5maWxlVXBsb2FkPy5tZXNzYWdlPy5lcnJvcj8uZXJyb3JSZWFkaW5nRmlsZSxcclxuICAgICAgICBhbGVydFR5cGU6IEFsZXJ0VHlwZT8uRVJST1IsXHJcbiAgICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXRzIGZpbGUgYnl0ZSBhcnJheSBmb3JtYXQgdG8gdW5kZWZpbmVkLlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkU2VydmljZVxyXG4gICAqL1xyXG4gIGNsZWFyRmlsZUJ5dGVBcnJheSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsZUJ5dGVBcnJheSA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgZmlsZSB1cGxvYWQgc3RhdHVzLlxyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhdHVzXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2V0RmlsZVVwbG9hZFN0YXR1cyhzdGF0dXM6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNGaWxlVXBsb2FkaW5nID0gc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBmaWxlIHVwbG9hZCBzdGF0dXMuXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZFNlcnZpY2VcclxuICAgKi9cclxuICBnZXRGaWxlVXBsb2FkU3RhdHVzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNGaWxlVXBsb2FkaW5nO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHByZXNpZ25lZCBVUkwgZm9yIGRvd25sb2FkaW5nIGZpbGVzIHRvIEFtYXpvbiBTMyBidWNrZXQuXHJcbiAgICogQHBhcmFtIHsoRmlsZSB8IEZpbGVMaXN0KX0gZmlsZVxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8c3RyaW5nPn1cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZFNlcnZpY2VcclxuICAgKi9cclxuICBnZXRGaWxlRG93bmxvYWRQcmVzaWduZWRVcmxzKFxyXG4gICAgZmlsZTogRmlsZSB8IEZpbGVMaXN0IHwgc3RyaW5nIHwgRG93bmxvYWRGaWxlLFxyXG4gICAgaXNQdWJsaWNBUEk/OiBib29sZWFuLFxyXG4gICAgZG9tYWluVXJsPzogc3RyaW5nLFxyXG4gICAgZG93bmxvYWRVcmk/OiBzdHJpbmdcclxuICApOiBPYnNlcnZhYmxlPHN0cmluZyB8IEdldEZpbGVEb3dubG9hZFByZXNpZ25lZFVybEJ5QXR0YWNobWVudElkUmVzcG9uc2U+IHtcclxuICAgIGxldCBmaWxlTmFtZSA9ICcnO1xyXG4gICAgaWYgKHR5cGVvZiBmaWxlID09PSAnc3RyaW5nJykgZmlsZU5hbWUgPSBmaWxlO1xyXG4gICAgZWxzZSBpZiAoT2JqZWN0Py52YWx1ZXMoZmlsZSk/Lmxlbmd0aCkgZmlsZU5hbWUgPSBPYmplY3Q/LnZhbHVlcyhmaWxlKT8uWzBdPy5uYW1lO1xyXG4gICAgZWxzZSBmaWxlTmFtZSA9IChmaWxlIGFzIEZpbGUpLm5hbWU7XHJcbiAgICBsZXQgaHR0cFJlcXVlc3QhOiBPYnNlcnZhYmxlPFxyXG4gICAgICBzdHJpbmcgfCBHZXRGaWxlRG93bmxvYWRQcmVzaWduZWRVcmxCeUF0dGFjaG1lbnRJZFJlc3BvbnNlXHJcbiAgICA+O1xyXG4gICAgaWYgKGlzUHVibGljQVBJKSB7XHJcbiAgICAgIGNvbnN0IGZpbGVEb3dubG9hZFByZXNpZ25lZFVybFBheWxvYWQ6IEdldEZpbGVEb3dubG9hZFByZXNpZ25lZFVybFBheWxvYWQgPVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICAgICAgZmlsZU5hbWU6IGZpbGVOYW1lLFxyXG4gICAgICAgICAgICBkb21haW46IGRvbWFpblVybCBhcyBzdHJpbmcsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH07XHJcbiAgICAgIGh0dHBSZXF1ZXN0ID0gdGhpcy5odHRwU2VydmljZS5wb3N0RGF0YShcclxuICAgICAgICBgJHt0aGlzLmFwaUJhc2VVcmx9L2NvbmZpZ3VyYXRpb25zL3B1YmxpYy9kb3dubG9hZEZpbGVVcmxgLFxyXG4gICAgICAgIGZpbGVEb3dubG9hZFByZXNpZ25lZFVybFBheWxvYWRcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAoZG93bmxvYWRVcmkpIHtcclxuICAgICAgY29uc3QgZmlsZURvd25sb2FkUHJlc2lnbmVkVXJsQnlBdHRhY2htZW50SWRQYXlsb2FkOiBHZXRGaWxlRG93bmxvYWRQcmVzaWduZWRVcmxCeUF0dGFjaG1lbnRJZFBheWxvYWQgPVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICAgICAgYXR0YWNobWVudElkOiAoZmlsZSBhcyBEb3dubG9hZEZpbGUpLmF0dGFjaG1lbnRJZCxcclxuICAgICAgICAgICAgcHJlU2lnbmVkRHVyYXRpb246IHRoaXMuY29uc3RhbnRzPy5maWxlRG93bmxvYWQ/LnByZVNpZ25lZER1cmF0aW9uLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICBodHRwUmVxdWVzdCA9IHRoaXMuaHR0cFNlcnZpY2UucG9zdERhdGEoXHJcbiAgICAgICAgYCR7dGhpcy5hcGlCYXNlVXJsfSR7ZG93bmxvYWRVcml9YCxcclxuICAgICAgICBmaWxlRG93bmxvYWRQcmVzaWduZWRVcmxCeUF0dGFjaG1lbnRJZFBheWxvYWRcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGh0dHBSZXF1ZXN0ID0gdGhpcy5odHRwU2VydmljZS5nZXREYXRhKFxyXG4gICAgICAgIGAke3RoaXMuYXBpQmFzZVVybH0vY29uZmlndXJhdGlvbnMvczMvZG93bmxvYWRGaWxlVXJsLyR7ZmlsZU5hbWV9YFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGh0dHBSZXF1ZXN0LnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvclJlcykgPT4ge1xyXG4gICAgICAgIHRocm93IGVycm9yUmVzO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERvd25sb2FkcyBmaWxlIHRvIEFXUyBTMyB1c2luZyBhIHByZXNpZ25lZCBVUkwuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxhbnk+fVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkU2VydmljZVxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZG93bmxvYWRGaWxlKGZpbGVEb3dubG9hZFByZXNpZ25lZFVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGZpbGVEb3dubG9hZFByZXNpZ25lZFVybCkucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgdGhyb3cgZXJyb3JSZXM7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBmaWxlcyB1cGxvYWRlZC5cclxuICAgKiBAcGFyYW0geyhGaWxlIHwgRmlsZUxpc3QpfSBmaWxlcyAtVGhlIGZpbGVzIHRvIGJlIHZhbGlkYXRlZC5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gbWF4RmlsZVNpemVcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzTXVsdGlGaWxlVXBsb2FkXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gLVJldHVybnMgdHJ1ZSBpZiB0aGUgdG90YWwgc2l6ZSBvZiBmaWxlcyBpcyB3aXRoaW4gdGhlIHNwZWNpZmllZCBsaW1pdCwgb3RoZXJ3aXNlIGZhbHNlLlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkU2VydmljZVxyXG4gICAqL1xyXG4gIHZhbGlkYXRlRmlsZVNpemUoXHJcbiAgICBmaWxlczogRmlsZSB8IEZpbGVMaXN0LFxyXG4gICAgbWF4RmlsZVNpemU6IG51bWJlcixcclxuICAgIGlzTXVsdGlGaWxlVXBsb2FkOiBib29sZWFuXHJcbiAgKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoaXNNdWx0aUZpbGVVcGxvYWQpIHtcclxuICAgICAgbGV0IHRvdGFsU2l6ZSA9IDA7XHJcbiAgICAgIE9iamVjdC52YWx1ZXMoZmlsZXMpLmZvckVhY2goKGZpbGU6IEZpbGUpID0+IHtcclxuICAgICAgICB0b3RhbFNpemUgKz0gZmlsZS5zaXplO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHRvdGFsU2l6ZSAvICgxMDI0ICogMTAyNCkgPD0gbWF4RmlsZVNpemU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKGZpbGVzIGFzIEZpbGUpLnNpemUgLyAoMTAyNCAqIDEwMjQpIDw9IG1heEZpbGVTaXplO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHRoZSBmaWxlIHR5cGVzIG9mIHRoZSB1cGxvYWRlZCBmaWxlcy5cclxuICAgKiBAcGFyYW0geyhGaWxlIHwgRmlsZUxpc3QpfSBmaWxlc1xyXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGFsbG93ZWRGaWxlVHlwZXNcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzTXVsdGlGaWxlVXBsb2FkXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gLVJldHVybnMgdHJ1ZSBpZiBhbGwgZmlsZXMgaGF2ZSB2YWxpZCBleHRlbnNpb25zLCBvdGhlcndpc2UgZmFsc2UuXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRTZXJ2aWNlXHJcbiAgICovXHJcbiAgdmFsaWRhdGVGaWxlVHlwZXMoXHJcbiAgICBmaWxlczogRmlsZSB8IEZpbGVMaXN0LFxyXG4gICAgYWxsb3dlZEZpbGVUeXBlczogc3RyaW5nW10sXHJcbiAgICBpc011bHRpRmlsZVVwbG9hZDogYm9vbGVhblxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdmFsaWRhdGVTaW5nbGVGaWxlID0gKGZpbGU6IEZpbGUpOiBib29sZWFuID0+IHtcclxuICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IHRoaXMuZ2V0RmlsZUV4dGVuc2lvbihmaWxlLm5hbWUpO1xyXG4gICAgICByZXR1cm4gYWxsb3dlZEZpbGVUeXBlcz8uaW5jbHVkZXMoZmlsZUV4dGVuc2lvbik7XHJcbiAgICB9O1xyXG4gICAgaWYgKGlzTXVsdGlGaWxlVXBsb2FkKSB7XHJcbiAgICAgIGxldCBhbGxGaWxlc1ZhbGlkID0gdHJ1ZTtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgT2JqZWN0LnZhbHVlcyhmaWxlcyk/LmZvckVhY2goKGZpbGVJdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIXZhbGlkYXRlU2luZ2xlRmlsZShmaWxlSXRlbSkpIHtcclxuICAgICAgICAgIGFsbEZpbGVzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gYWxsRmlsZXNWYWxpZDtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWxpZGF0ZVNpbmdsZUZpbGUoZmlsZXMgYXMgRmlsZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeHRyYWN0cyBhbmQgcmV0dXJucyB0aGUgZXh0ZW5zaW9uIG9mIGEgZmlsZSBmcm9tIGl0cyBuYW1lLlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVOYW1lXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSAtVGhlIGZpbGUgZXh0ZW5zaW9uIGluIGxvd2VyY2FzZS5cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZFNlcnZpY2VcclxuICAgKi9cclxuICBwcml2YXRlIGdldEZpbGVFeHRlbnNpb24oZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgcmV0dXJuIGZpbGVOYW1lPy5zcGxpdCgnLicpLnBvcCgpIS50b0xvd2VyQ2FzZSgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBEZWxldGVzIGZpbGUgYnkgZ2l2ZW4gZmlsZUlkXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVJZFxyXG4gICAqIEByZXR1cm4geyp9ICB7T2JzZXJ2YWJsZTxEZWxldGVGaWxlUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkU2VydmljZVxyXG4gICAqL1xyXG4gIGRlbGV0ZUZpbGUoZGVsZXRlRmlsZUFwaVBhdGg6IHN0cmluZyk6IE9ic2VydmFibGU8RGVsZXRlRmlsZVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBkZWxldGVGaWxlUGF5bG9hZDogRGVsZXRlRmlsZVBheWxvYWQgPSB7XHJcbiAgICAgIC8vIEFzc2lnbiBkYXRhIGhlcmUgaWYgbmVlZGVkIHRvIHNlbmQgYW55IHBheWxvYWQgaW4gYm9keVxyXG4gICAgICAvLyBleGFtcGxlIGJlbG93XHJcbiAgICAgIC8vIGZpbGVJZDogYXJndW1lbnRzWzBdLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wdXREYXRhKFxyXG4gICAgICAgIGAke3RoaXMuYXBpQmFzZVVybH0vJHtkZWxldGVGaWxlQXBpUGF0aH1gLFxyXG4gICAgICAgIE9iamVjdC5rZXlzKGRlbGV0ZUZpbGVQYXlsb2FkKS5sZW5ndGggPyBkZWxldGVGaWxlUGF5bG9hZCA6IHt9XHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW1wbGVtZW50YXRpb24gb2YgbmdPbkRlc3Ryb3kgbGlmZWN5Y2xlIGhvb2sgbWV0aG9kIHRvIHVuc3Vic2NyaWJlIHRoZSBvcGVuIG9ic2VydmFibGUgc3Vic2NyaXB0aW9ucy5cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZFNlcnZpY2VcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIl19
384
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXNlbnRhdGlvbi9zcmMvbGliL3NlcnZpY2VzL2ZpbGUtdXBsb2FkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFVBQVUsRUFFVixhQUFhLEVBQ2IsV0FBVyxHQUNaLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBRUwsU0FBUyxHQUdWLE1BQU0scUJBQXFCLENBQUM7QUFRN0IsT0FBTyxFQUNMLFVBQVUsRUFDVixTQUFTLEVBQ1QsSUFBSSxFQUNKLElBQUksRUFDSixHQUFHLEVBRUgsT0FBTyxFQUNQLElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxLQUFLLFNBQVMsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQVl0RDs7O0dBR0c7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBVzVCO0lBQ0UsMENBQTBDO0lBQ25DLFdBQXdCLEVBQy9CLE9BQW9CO0lBQ3BCLDBDQUEwQztJQUNuQyxZQUEyQjtJQUNsQywwQ0FBMEM7SUFDbkMseUJBQW9EO1FBTHBELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBR3hCLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBRTNCLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFqQjdELGFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUNwRCxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBSXRCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXhCLG1DQUE4QixHQUFHLENBQUMsQ0FBQztRQUNuQyxxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFXcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJ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O0lBQ0gsVUFBVSxDQUFDLGlCQUF5QjtRQUNsQyxNQUFNLGlCQUFpQixHQUFzQjtRQUMzQyx5REFBeUQ7UUFDekQsZ0JBQWdCO1FBQ2hCLHdCQUF3QjtTQUN6QixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixPQUFPLENBQ04sR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLGlCQUFpQixFQUFFLEVBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQy9EO2FBQ0EsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2YsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7K0dBdmNVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEh0dHBCYWNrZW5kLFxyXG4gIEh0dHBDbGllbnQsXHJcbiAgSHR0cEV2ZW50LFxyXG4gIEh0dHBFdmVudFR5cGUsXHJcbiAgSHR0cEhlYWRlcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBbGVydHNTZXJ2aWNlLFxyXG4gIEFsZXJ0VHlwZSxcclxuICBIdHRwU2VydmljZSxcclxuICBMb2FkZXJOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQge1xyXG4gIEZpbGVVcGxvYWRQcmVzaWduZWRVcmwsXHJcbiAgR2V0RmlsZURvd25sb2FkUHJlc2lnbmVkVXJsQnlBdHRhY2htZW50SWRQYXlsb2FkLFxyXG4gIEdldEZpbGVEb3dubG9hZFByZXNpZ25lZFVybEJ5QXR0YWNobWVudElkUmVzcG9uc2UsXHJcbiAgR2V0RmlsZURvd25sb2FkUHJlc2lnbmVkVXJsUGF5bG9hZCxcclxuICBHZXRGaWxlVXBsb2FkUHJlc2lnbmVkVXJsUGF5bG9hZCxcclxufSBmcm9tICcuLi9tb2RlbHMvZmlsZS11cGxvYWQtcHJlc2lnbmVkLXVybC1yZXMubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIGNhdGNoRXJyb3IsXHJcbiAgY29uY2F0TWFwLFxyXG4gIGZyb20sXHJcbiAgbGFzdCxcclxuICBtYXAsXHJcbiAgT2JzZXJ2YWJsZSxcclxuICBTdWJqZWN0LFxyXG4gIHRha2UsXHJcbiAgdGFrZVVudGlsLFxyXG4gIHRhcCxcclxufSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRQYXlsb2FkIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbGUtdXBsb2FkLXBheWxvYWQtbW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEZpbGVVcGxvYWRCb2R5UmVzcG9uc2UsXHJcbiAgRmlsZVVwbG9hZFJlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy9maWxlLXVwbG9hZC1yZXNwb25zZS5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgRGVsZXRlRmlsZVBheWxvYWQsXHJcbiAgRGVsZXRlRmlsZVJlc3BvbnNlLFxyXG59IGZyb20gJy4uL21vZGVscy9kZWxldGUtZmlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IERvd25sb2FkRmlsZSB9IGZyb20gJy4uL21vZGVscy9kb3dubG9hZC1maWxlLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBUaGlzIHNlcnZpY2UgaW50ZXJhY3RzIHdpdGggdGhlIHNlcnZlciB0byBvYnRhaW4gcHJlLXNpZ25lZCBVUkxzIGZvciBmaWxlIHVwbG9hZCBhbmQgdXBsb2FkcyBmaWxlcyB0byBBbWF6b24gUzMuXHJcbiAqIEBjbGFzcyBGaWxlVXBsb2FkU2VydmljZVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgY29uc3RhbnRzID0gY29uc3RhbnRzO1xyXG4gIGFwaUJhc2VVcmwhOiBzdHJpbmc7XHJcbiAgZmlsZUJ5dGVBcnJheTogVWludDhBcnJheSB8IHVuZGVmaW5lZDtcclxuICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xyXG4gIGlzRmlsZVVwbG9hZGluZyA9IGZhbHNlO1xyXG4gIGZpbGVzTmFtZXNVcGxvYWRGYWlsZWQhOiBzdHJpbmdbXTtcclxuICBmaWxlc1VwbG9hZGVkU3VjY2Vzc2Z1bGx5Q291bnQgPSAwO1xyXG4gIHVwbG9hZGVkRmlsZU5hbWUgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBodHRwU2VydmljZTogSHR0cFNlcnZpY2UsXHJcbiAgICBoYW5kbGVyOiBIdHRwQmFja2VuZCxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGFsZXJ0U2VydmljZTogQWxlcnRzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGxvYWRlck5vdGlmaWNhdGlvblNlcnZpY2U6IExvYWRlck5vdGlmaWNhdGlvblNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuaHR0cENsaWVudCA9IG5ldyBIdHRwQ2xpZW50KGhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgYmFzZSBVUkwgZm9yIEFQSSByZXF1ZXN0cy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBpQmFzZVVybCAtQVBJIGJhc2UgVVJMLlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkU2VydmljZVxyXG4gICAqL1xyXG4gIHNldEFwaUJhc2VVcmwoYXBpQmFzZVVybDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmFwaUJhc2VVcmwgPSBhcGlCYXNlVXJsO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIEFQSSBiYXNlIFVSTCBmb3IgQVBJIHJlcXVlc3RzLlxyXG4gICAqIEByZXR1cm4geyp9ICB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkU2VydmljZVxyXG4gICAqL1xyXG4gIGdldEFwaUJhc2VVcmwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmFwaUJhc2VVcmw7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBwcmVzaWduZWQgVVJMIGZvciB1cGxvYWRpbmcgZmlsZXMgdG8gQW1hem9uIFMzIGJ1Y2tldC5cclxuICAgKiBAcGFyYW0geyhGaWxlIHwgRmlsZUxpc3QpfSBmaWxlXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxGaWxlVXBsb2FkUHJlc2lnbmVkVXJsPn1cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZFNlcnZpY2VcclxuICAgKi9cclxuICBnZXRGaWxlVXBsb2FkUHJlc2lnbmVkVXJsKFxyXG4gICAgZmlsZTogRmlsZSB8IEZpbGVMaXN0LFxyXG4gICAgYXBwSWQ6IHN0cmluZ1xyXG4gICk6IE9ic2VydmFibGU8RmlsZVVwbG9hZFByZXNpZ25lZFVybD4ge1xyXG4gICAgbGV0IGZpbGVOYW1lID0gJyc7XHJcbiAgICBpZiAoT2JqZWN0LnZhbHVlcyhmaWxlKS5sZW5ndGgpIGZpbGVOYW1lID0gT2JqZWN0LnZhbHVlcyhmaWxlKVswXS5uYW1lO1xyXG4gICAgZWxzZSBmaWxlTmFtZSA9IChmaWxlIGFzIEZpbGUpLm5hbWU7XHJcbiAgICBjb25zdCBmaWxlVXBsb2FkUHJlc2lnbmVkVXJsUGF5bG9hZDogR2V0RmlsZVVwbG9hZFByZXNpZ25lZFVybFBheWxvYWQgPSB7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBmaWxlTmFtZTogZmlsZU5hbWUsXHJcbiAgICAgICAgdGVuYW50QXBwSWQ6IGFwcElkIGFzIHN0cmluZyxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxyXG4gICAgICAucG9zdERhdGEoXHJcbiAgICAgICAgYCR7dGhpcy5hcGlCYXNlVXJsfS9jb25maWd1cmF0aW9ucy9zMy91cGxvYWRGaWxlVXJsYCxcclxuICAgICAgICBmaWxlVXBsb2FkUHJlc2lnbmVkVXJsUGF5bG9hZFxyXG4gICAgICApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlcykgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3JSZXM7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgcHJlLXNpZ25lZCBVUkwgZm9yIHRoZSBmaWxlcyB0byBiZSB1cGxvYWRlZCBpbiBTMyBidWNrZXRcclxuICAgKiBAcGFyYW0gZmlsZVVwbG9hZFBheWxvYWRcclxuICAgKiBAcGFyYW0gZmlsZVVwbG9hZEFQSVBhdGhcclxuICAgKi9cclxuICBnZXRQcmVTaWduZWRVUkwoXHJcbiAgICBmaWxlVXBsb2FkUGF5bG9hZDogRmlsZVVwbG9hZFBheWxvYWQsXHJcbiAgICBmaWxlVXBsb2FkQVBJUGF0aCA9ICcnXHJcbiAgKTogT2JzZXJ2YWJsZTxGaWxlVXBsb2FkUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wb3N0RGF0YShgJHt0aGlzLmFwaUJhc2VVcmx9LyR7ZmlsZVVwbG9hZEFQSVBhdGh9YCwgZmlsZVVwbG9hZFBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvclJlcykgPT4ge1xyXG4gICAgICAgICAgdGhyb3cgZXJyb3JSZXM7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwbG9hZHMgZmlsZSB0byBBV1MgUzMgdXNpbmcgYSBwcmUtc2lnbmVkIFVSTC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlU2lnbmVkVXJsXHJcbiAgICogQHBhcmFtIGZpbGVzXHJcbiAgICogQHBhcmFtIGlzTXVsdGlwbGVGaWxlVXBsb2FkXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxhbnk+fSAtUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3BvbnNlIGFmdGVyIHVwbG9hZGluZyB0aGUgZmlsZSB0byBTMy5cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZFNlcnZpY2VcclxuICAgKi9cclxuICB1cGxvYWRGaWxlVG9TMyhcclxuICAgIHByZVNpZ25lZFVybDogRmlsZVVwbG9hZEJvZHlSZXNwb25zZVtdIHwgc3RyaW5nLFxyXG4gICAgZmlsZXM6IEZpbGUgfCBGaWxlTGlzdCxcclxuICAgIGlzTXVsdGlwbGVGaWxlVXBsb2FkID0gZmFsc2VcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMubG9hZGVyTm90aWZpY2F0aW9uU2VydmljZS5zaG93KCk7XHJcbiAgICBjb25zdCBmaWxlc0FycmF5ID0gW107XHJcbiAgICB0aGlzLmZpbGVzTmFtZXNVcGxvYWRGYWlsZWQgPSBbXTtcclxuICAgIHRoaXMudXBsb2FkZWRGaWxlTmFtZSA9ICcnO1xyXG4gICAgaWYgKGlzTXVsdGlwbGVGaWxlVXBsb2FkKSB7XHJcbiAgICAgIE9iamVjdC52YWx1ZXMoZmlsZXMpLmZvckVhY2goKGZpbGUpID0+IHtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNvbnN0IGluZGV4Rm9yUHJlU2lnbmVkVXJsID0gKHByZVNpZ25lZFVybCBhcyBbXSkuZmluZEluZGV4KFxyXG4gICAgICAgICAgKHg6IEZpbGVVcGxvYWRCb2R5UmVzcG9uc2UpID0+XHJcbiAgICAgICAgICAgIHguZmlsZU5hbWUgPT09IChmaWxlIGFzIEZpbGUpLm5hbWUgJiYgeC5lcnJvck1lc3NhZ2UgPT09IG51bGxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChpbmRleEZvclByZVNpZ25lZFVybCA+IC0xKSB7XHJcbiAgICAgICAgICBmaWxlc0FycmF5LnB1c2goe1xyXG4gICAgICAgICAgICBwcmVTaWduZWRVcmw6IChcclxuICAgICAgICAgICAgICBwcmVTaWduZWRVcmxbaW5kZXhGb3JQcmVTaWduZWRVcmxdIGFzIEZpbGVVcGxvYWRCb2R5UmVzcG9uc2VcclxuICAgICAgICAgICAgKT8ucHJlU2lnbmVkVXJsLFxyXG4gICAgICAgICAgICBmaWxlT2JqOiBmaWxlIGFzIEZpbGUsXHJcbiAgICAgICAgICAgIGZpbGVUeXBlOiAoZmlsZSBhcyBGaWxlKS50eXBlLFxyXG4gICAgICAgICAgICBmaWxlU2l6ZTogKGZpbGUgYXMgRmlsZSkuc2l6ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaWxlc0FycmF5LnB1c2goe1xyXG4gICAgICAgIHByZVNpZ25lZFVybDogcHJlU2lnbmVkVXJsIGFzIHN0cmluZyxcclxuICAgICAgICBmaWxlT2JqOiBmaWxlcyBhcyBGaWxlLFxyXG4gICAgICAgIGZpbGVUeXBlOiAoZmlsZXMgYXMgRmlsZSkudHlwZSxcclxuICAgICAgICBmaWxlU2l6ZTogKGZpbGVzIGFzIEZpbGUpLnNpemUsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZyb20oZmlsZXNBcnJheSkucGlwZShcclxuICAgICAgY29uY2F0TWFwKChmaWxlKSA9PlxyXG4gICAgICAgIHRoaXMuaHR0cENhbGxUb0FXUyhcclxuICAgICAgICAgIGZpbGUucHJlU2lnbmVkVXJsLFxyXG4gICAgICAgICAgZmlsZS5maWxlT2JqLFxyXG4gICAgICAgICAgZmlsZS5maWxlVHlwZSxcclxuICAgICAgICAgIGZpbGUuZmlsZVNpemVcclxuICAgICAgICApXHJcbiAgICAgICksXHJcbiAgICAgIHRha2UoZmlsZXNBcnJheS5sZW5ndGgpXHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBNYWtlcyBodHRwIGNhbGwgdG8gQVdTIHRvIHVwbG9hZCBmaWxlIGluIFMzIGJ1Y2tldFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcmVTaWduZWRVcmxcclxuICAgKiBAcGFyYW0ge0ZpbGV9IGZpbGVcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZVR5cGVcclxuICAgKiBAcGFyYW0ge251bWJlcn0gZmlsZVNpemVcclxuICAgKiBAcmV0dXJuIHsqfSAge09ic2VydmFibGU8YW55Pn1cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZFNlcnZpY2VcclxuICAgKi9cclxuICBodHRwQ2FsbFRvQVdTKFxyXG4gICAgcHJlU2lnbmVkVXJsOiBzdHJpbmcsXHJcbiAgICBmaWxlOiBGaWxlLFxyXG4gICAgZmlsZVR5cGU6IHN0cmluZyxcclxuICAgIGZpbGVTaXplOiBudW1iZXJcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgIGhlYWRlcnMuYXBwZW5kKCdDb250ZW50LVR5cGUnLCBmaWxlVHlwZS50b1N0cmluZygpKTtcclxuICAgIGhlYWRlcnMuYXBwZW5kKCdDb250ZW50LUxlbmd0aCcsIGZpbGVTaXplLnRvU3RyaW5nKCkpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcclxuICAgICAgLnB1dChwcmVTaWduZWRVcmwsIGZpbGUsIHtcclxuICAgICAgICByZXBvcnRQcm9ncmVzczogdHJ1ZSxcclxuICAgICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcclxuICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgICAgbWFwKChldmVudCkgPT4gdGhpcy5nZXRFdmVudE1lc3NhZ2UoZXZlbnQsIGZpbGUpKSxcclxuICAgICAgICB0YXAoKG1lc3NhZ2UpID0+IHRoaXMuc2hvd1Byb2dyZXNzKG1lc3NhZ2UpKSxcclxuICAgICAgICBsYXN0KCksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGVyTm90aWZpY2F0aW9uU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvclJlcztcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBmaWxlIHVwbG9hZCBwcm9ncmVzcy5cclxuICAgKiBAcGFyYW0geyp9IG1lc3NhZ2VcclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZFNlcnZpY2VcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBuby11bnVzZWQtdmFycywgbm8tZW1wdHktZnVuY3Rpb24sIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxyXG4gIHNob3dQcm9ncmVzcyhtZXNzYWdlOiBhbnkpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBkaXN0aW5jdCBtZXNzYWdlIGZvciBzZW50LCB1cGxvYWQgcHJvZ3Jlc3MsICYgcmVzcG9uc2UgZXZlbnRzLlxyXG4gICAqIEBwYXJhbSB7SHR0cEV2ZW50PGFueT59IGV2ZW50XHJcbiAgICogQHBhcmFtIHsoRmlsZSB8IEZpbGVMaXN0KX0gZmlsZVxyXG4gICAqIEByZXR1cm4geyp9XHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRTZXJ2aWNlXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBnZXRFdmVudE1lc3NhZ2UoZXZlbnQ6IEh0dHBFdmVudDxhbnk+LCBmaWxlOiBGaWxlKSB7XHJcbiAgICBsZXQgZmlsZU5hbWUgPSAnJztcclxuICAgIGxldCBmaWxlU2l6ZTogbnVtYmVyIHwgc3RyaW5nID0gMDtcclxuICAgIGZpbGVOYW1lID0gKGZpbGUgYXMgRmlsZSkubmFtZTtcclxuICAgIGZpbGVTaXplID0gKGZpbGUgYXMgRmlsZSkuc2l6ZTtcclxuICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xyXG4gICAgICBjYXNlIEh0dHBFdmVudFR5cGUuU2VudDpcclxuICAgICAgICByZXR1cm4gYFVwbG9hZGluZyBmaWxlIFwiJHtmaWxlTmFtZX1cIiBvZiBzaXplICR7ZmlsZVNpemV9LmA7XHJcbiAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzczpcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY2FzZS1kZWNsYXJhdGlvbnNcclxuICAgICAgICBjb25zdCBwZXJjZW50RG9uZSA9IGV2ZW50Py50b3RhbFxyXG4gICAgICAgICAgPyBNYXRoLnJvdW5kKCgxMDAgKiBldmVudC5sb2FkZWQpIC8gZXZlbnQudG90YWwpXHJcbiAgICAgICAgICA6IDA7XHJcbiAgICAgICAgcmV0dXJuIGBGaWxlIFwiJHtmaWxlTmFtZX1cIiBpcyAke3BlcmNlbnREb25lfSUgdXBsb2FkZWQuYDtcclxuICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxyXG4gICAgICAgIHRoaXMubG9hZGVyTm90aWZpY2F0aW9uU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgaWYgKGV2ZW50LnN0YXR1cyA9PT0gMjAwKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVzVXBsb2FkZWRTdWNjZXNzZnVsbHlDb3VudCsrO1xyXG4gICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVOYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWxlc05hbWVzVXBsb2FkRmFpbGVkLnB1c2goZmlsZU5hbWUpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGBGaWxlIFwiJHtmaWxlTmFtZX1cIiBzdXJwcmlzaW5nIHVwbG9hZCBldmVudDogJHtldmVudC50eXBlfS5gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydHMgZmlsZSB0byBieXRlIGFycmF5LlxyXG4gICAqIEBwYXJhbSB7RmlsZX0gZmlsZVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkU2VydmljZVxyXG4gICAqL1xyXG4gIGNvbnZlcnRGaWxlVG9CeXRlQXJyYXkoZmlsZTogRmlsZSk6IHZvaWQge1xyXG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gcmVhZGVyPy5yZXN1bHQgYXMgQXJyYXlCdWZmZXI7XHJcbiAgICAgIHRoaXMuZmlsZUJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKTtcclxuICAgIH07XHJcbiAgICByZWFkZXIub25lcnJvciA9ICgpID0+IHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2U/LnNob3dNZXNzYWdlKHtcclxuICAgICAgICBzdGF0dXM6ICdjdXN0b20nLFxyXG4gICAgICAgIG1lc3NhZ2U6IHRoaXMuY29uc3RhbnRzPy5maWxlVXBsb2FkPy5tZXNzYWdlPy5lcnJvcj8uZXJyb3JSZWFkaW5nRmlsZSxcclxuICAgICAgICBhbGVydFR5cGU6IEFsZXJ0VHlwZT8uRVJST1IsXHJcbiAgICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXRzIGZpbGUgYnl0ZSBhcnJheSBmb3JtYXQgdG8gdW5kZWZpbmVkLlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkU2VydmljZVxyXG4gICAqL1xyXG4gIGNsZWFyRmlsZUJ5dGVBcnJheSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsZUJ5dGVBcnJheSA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgZmlsZSB1cGxvYWQgc3RhdHVzLlxyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhdHVzXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRTZXJ2aWNlXHJcbiAgICovXHJcbiAgc2V0RmlsZVVwbG9hZFN0YXR1cyhzdGF0dXM6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNGaWxlVXBsb2FkaW5nID0gc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBmaWxlIHVwbG9hZCBzdGF0dXMuXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZFNlcnZpY2VcclxuICAgKi9cclxuICBnZXRGaWxlVXBsb2FkU3RhdHVzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNGaWxlVXBsb2FkaW5nO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHByZXNpZ25lZCBVUkwgZm9yIGRvd25sb2FkaW5nIGZpbGVzIHRvIEFtYXpvbiBTMyBidWNrZXQuXHJcbiAgICogQHBhcmFtIHsoRmlsZSB8IEZpbGVMaXN0KX0gZmlsZVxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8c3RyaW5nPn1cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZFNlcnZpY2VcclxuICAgKi9cclxuICBnZXRGaWxlRG93bmxvYWRQcmVzaWduZWRVcmxzKFxyXG4gICAgZmlsZTogRmlsZSB8IEZpbGVMaXN0IHwgc3RyaW5nIHwgRG93bmxvYWRGaWxlLFxyXG4gICAgaXNQdWJsaWNBUEk/OiBib29sZWFuLFxyXG4gICAgZG9tYWluVXJsPzogc3RyaW5nLFxyXG4gICAgZG93bmxvYWRVcmk/OiBzdHJpbmdcclxuICApOiBPYnNlcnZhYmxlPHN0cmluZyB8IEdldEZpbGVEb3dubG9hZFByZXNpZ25lZFVybEJ5QXR0YWNobWVudElkUmVzcG9uc2U+IHtcclxuICAgIGxldCBmaWxlTmFtZSA9ICcnO1xyXG4gICAgaWYgKHR5cGVvZiBmaWxlID09PSAnc3RyaW5nJykgZmlsZU5hbWUgPSBmaWxlO1xyXG4gICAgZWxzZSBpZiAoT2JqZWN0Py52YWx1ZXMoZmlsZSk/Lmxlbmd0aClcclxuICAgICAgZmlsZU5hbWUgPSBPYmplY3Q/LnZhbHVlcyhmaWxlKT8uWzBdPy5uYW1lO1xyXG4gICAgZWxzZSBmaWxlTmFtZSA9IChmaWxlIGFzIEZpbGUpLm5hbWU7XHJcbiAgICBsZXQgaHR0cFJlcXVlc3QhOiBPYnNlcnZhYmxlPFxyXG4gICAgICBzdHJpbmcgfCBHZXRGaWxlRG93bmxvYWRQcmVzaWduZWRVcmxCeUF0dGFjaG1lbnRJZFJlc3BvbnNlXHJcbiAgICA+O1xyXG4gICAgaWYgKGlzUHVibGljQVBJKSB7XHJcbiAgICAgIGNvbnN0IGZpbGVEb3dubG9hZFByZXNpZ25lZFVybFBheWxvYWQ6IEdldEZpbGVEb3dubG9hZFByZXNpZ25lZFVybFBheWxvYWQgPVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICAgICAgZmlsZU5hbWU6IGZpbGVOYW1lLFxyXG4gICAgICAgICAgICBkb21haW46IGRvbWFpblVybCBhcyBzdHJpbmcsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH07XHJcbiAgICAgIGh0dHBSZXF1ZXN0ID0gdGhpcy5odHRwU2VydmljZS5wb3N0RGF0YShcclxuICAgICAgICBgJHt0aGlzLmFwaUJhc2VVcmx9L2NvbmZpZ3VyYXRpb25zL3B1YmxpYy9kb3dubG9hZEZpbGVVcmxgLFxyXG4gICAgICAgIGZpbGVEb3dubG9hZFByZXNpZ25lZFVybFBheWxvYWRcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAoZG93bmxvYWRVcmkpIHtcclxuICAgICAgY29uc3QgZmlsZURvd25sb2FkUHJlc2lnbmVkVXJsQnlBdHRhY2htZW50SWRQYXlsb2FkOiBHZXRGaWxlRG93bmxvYWRQcmVzaWduZWRVcmxCeUF0dGFjaG1lbnRJZFBheWxvYWQgPVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICAgICAgYXR0YWNobWVudElkOiAoZmlsZSBhcyBEb3dubG9hZEZpbGUpLmF0dGFjaG1lbnRJZCxcclxuICAgICAgICAgICAgcHJlU2lnbmVkRHVyYXRpb246IHRoaXMuY29uc3RhbnRzPy5maWxlRG93bmxvYWQ/LnByZVNpZ25lZER1cmF0aW9uLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICBodHRwUmVxdWVzdCA9IHRoaXMuaHR0cFNlcnZpY2UucG9zdERhdGEoXHJcbiAgICAgICAgYCR7dGhpcy5hcGlCYXNlVXJsfSR7ZG93bmxvYWRVcml9YCxcclxuICAgICAgICBmaWxlRG93bmxvYWRQcmVzaWduZWRVcmxCeUF0dGFjaG1lbnRJZFBheWxvYWRcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGh0dHBSZXF1ZXN0ID0gdGhpcy5odHRwU2VydmljZS5nZXREYXRhKFxyXG4gICAgICAgIGAke3RoaXMuYXBpQmFzZVVybH0vY29uZmlndXJhdGlvbnMvczMvZG93bmxvYWRGaWxlVXJsLyR7ZmlsZU5hbWV9YFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGh0dHBSZXF1ZXN0LnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvclJlcykgPT4ge1xyXG4gICAgICAgIHRocm93IGVycm9yUmVzO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERvd25sb2FkcyBmaWxlIHRvIEFXUyBTMyB1c2luZyBhIHByZXNpZ25lZCBVUkwuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxhbnk+fVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkU2VydmljZVxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZG93bmxvYWRGaWxlKGZpbGVEb3dubG9hZFByZXNpZ25lZFVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGZpbGVEb3dubG9hZFByZXNpZ25lZFVybCkucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yUmVzKSA9PiB7XHJcbiAgICAgICAgdGhyb3cgZXJyb3JSZXM7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBmaWxlcyB1cGxvYWRlZC5cclxuICAgKiBAcGFyYW0geyhGaWxlIHwgRmlsZUxpc3QpfSBmaWxlcyAtVGhlIGZpbGVzIHRvIGJlIHZhbGlkYXRlZC5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gbWF4RmlsZVNpemVcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzTXVsdGlGaWxlVXBsb2FkXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gLVJldHVybnMgdHJ1ZSBpZiB0aGUgdG90YWwgc2l6ZSBvZiBmaWxlcyBpcyB3aXRoaW4gdGhlIHNwZWNpZmllZCBsaW1pdCwgb3RoZXJ3aXNlIGZhbHNlLlxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkU2VydmljZVxyXG4gICAqL1xyXG4gIHZhbGlkYXRlRmlsZVNpemUoXHJcbiAgICBmaWxlczogRmlsZSB8IEZpbGVMaXN0LFxyXG4gICAgbWF4RmlsZVNpemU6IG51bWJlcixcclxuICAgIGlzTXVsdGlGaWxlVXBsb2FkOiBib29sZWFuXHJcbiAgKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoaXNNdWx0aUZpbGVVcGxvYWQpIHtcclxuICAgICAgbGV0IHRvdGFsU2l6ZSA9IDA7XHJcbiAgICAgIE9iamVjdC52YWx1ZXMoZmlsZXMpLmZvckVhY2goKGZpbGU6IEZpbGUpID0+IHtcclxuICAgICAgICB0b3RhbFNpemUgKz0gZmlsZS5zaXplO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHRvdGFsU2l6ZSAvICgxMDI0ICogMTAyNCkgPD0gbWF4RmlsZVNpemU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKGZpbGVzIGFzIEZpbGUpLnNpemUgLyAoMTAyNCAqIDEwMjQpIDw9IG1heEZpbGVTaXplO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHRoZSBmaWxlIHR5cGVzIG9mIHRoZSB1cGxvYWRlZCBmaWxlcy5cclxuICAgKiBAcGFyYW0geyhGaWxlIHwgRmlsZUxpc3QpfSBmaWxlc1xyXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGFsbG93ZWRGaWxlVHlwZXNcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzTXVsdGlGaWxlVXBsb2FkXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gLVJldHVybnMgdHJ1ZSBpZiBhbGwgZmlsZXMgaGF2ZSB2YWxpZCBleHRlbnNpb25zLCBvdGhlcndpc2UgZmFsc2UuXHJcbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRTZXJ2aWNlXHJcbiAgICovXHJcbiAgdmFsaWRhdGVGaWxlVHlwZXMoXHJcbiAgICBmaWxlczogRmlsZSB8IEZpbGVMaXN0LFxyXG4gICAgYWxsb3dlZEZpbGVUeXBlczogc3RyaW5nW10sXHJcbiAgICBpc011bHRpRmlsZVVwbG9hZDogYm9vbGVhblxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdmFsaWRhdGVTaW5nbGVGaWxlID0gKGZpbGU6IEZpbGUpOiBib29sZWFuID0+IHtcclxuICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IHRoaXMuZ2V0RmlsZUV4dGVuc2lvbihmaWxlLm5hbWUpO1xyXG4gICAgICByZXR1cm4gYWxsb3dlZEZpbGVUeXBlcz8uaW5jbHVkZXMoZmlsZUV4dGVuc2lvbik7XHJcbiAgICB9O1xyXG4gICAgaWYgKGlzTXVsdGlGaWxlVXBsb2FkKSB7XHJcbiAgICAgIGxldCBhbGxGaWxlc1ZhbGlkID0gdHJ1ZTtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgT2JqZWN0LnZhbHVlcyhmaWxlcyk/LmZvckVhY2goKGZpbGVJdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIXZhbGlkYXRlU2luZ2xlRmlsZShmaWxlSXRlbSkpIHtcclxuICAgICAgICAgIGFsbEZpbGVzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gYWxsRmlsZXNWYWxpZDtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWxpZGF0ZVNpbmdsZUZpbGUoZmlsZXMgYXMgRmlsZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeHRyYWN0cyBhbmQgcmV0dXJucyB0aGUgZXh0ZW5zaW9uIG9mIGEgZmlsZSBmcm9tIGl0cyBuYW1lLlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVOYW1lXHJcbiAgICogQHJldHVybiB7c3RyaW5nfSAtVGhlIGZpbGUgZXh0ZW5zaW9uIGluIGxvd2VyY2FzZS5cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZFNlcnZpY2VcclxuICAgKi9cclxuICBwcml2YXRlIGdldEZpbGVFeHRlbnNpb24oZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgcmV0dXJuIGZpbGVOYW1lPy5zcGxpdCgnLicpLnBvcCgpIS50b0xvd2VyQ2FzZSgpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBEZWxldGVzIGZpbGUgYnkgZ2l2ZW4gZmlsZUlkXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVJZFxyXG4gICAqIEByZXR1cm4geyp9ICB7T2JzZXJ2YWJsZTxEZWxldGVGaWxlUmVzcG9uc2U+fVxyXG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkU2VydmljZVxyXG4gICAqL1xyXG4gIGRlbGV0ZUZpbGUoZGVsZXRlRmlsZUFwaVBhdGg6IHN0cmluZyk6IE9ic2VydmFibGU8RGVsZXRlRmlsZVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBkZWxldGVGaWxlUGF5bG9hZDogRGVsZXRlRmlsZVBheWxvYWQgPSB7XHJcbiAgICAgIC8vIEFzc2lnbiBkYXRhIGhlcmUgaWYgbmVlZGVkIHRvIHNlbmQgYW55IHBheWxvYWQgaW4gYm9keVxyXG4gICAgICAvLyBFeGFtcGxlIGJlbG93XHJcbiAgICAgIC8vIEZpbGVJZDogYXJndW1lbnRzWzBdLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlXHJcbiAgICAgIC5wdXREYXRhKFxyXG4gICAgICAgIGAke3RoaXMuYXBpQmFzZVVybH0vJHtkZWxldGVGaWxlQXBpUGF0aH1gLFxyXG4gICAgICAgIE9iamVjdC5rZXlzKGRlbGV0ZUZpbGVQYXlsb2FkKS5sZW5ndGggPyBkZWxldGVGaWxlUGF5bG9hZCA6IHt9XHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW1wbGVtZW50YXRpb24gb2YgbmdPbkRlc3Ryb3kgbGlmZWN5Y2xlIGhvb2sgbWV0aG9kIHRvIHVuc3Vic2NyaWJlIHRoZSBvcGVuIG9ic2VydmFibGUgc3Vic2NyaXB0aW9ucy5cclxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZFNlcnZpY2VcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIl19