@churchillliving/se-ui-toolkit 6.54.807 → 6.54.809
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/base/cards/card.component.mjs +3 -3
- package/esm2022/lib/components/base/form/form.component.mjs +14 -12
- package/fesm2022/churchillliving-se-ui-toolkit.mjs +15 -12
- package/fesm2022/churchillliving-se-ui-toolkit.mjs.map +1 -1
- package/lib/components/base/form/form.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -155,11 +155,11 @@ export class CardComponent {
|
|
|
155
155
|
this.selectedCard.emit(data);
|
|
156
156
|
}
|
|
157
157
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardComponent, deps: [{ token: i1.DialogService }, { token: i2.GridService }, { token: i3.ConfirmationService }, { token: i4.SystemConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
158
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CardComponent, selector: "se-card", inputs: { data: "data", width: "width", height: "height", card: "card", setCardData: "setCardData" }, outputs: { selectedCard: "selectedCard" }, usesOnChanges: true, ngImport: i0, template: "<!-- Display Files Card -->\n<p-confirmDialog key=\"handlecolumnActions\"></p-confirmDialog>\n<div\n class=\"card-main-wrapper\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n class=\"example-list\"\n (cdkDropListDropped)=\"dragAndDrop($event)\"\n>\n <div \n class=\"flex cards-wrapper\" \n [ngStyle]=\"{ width: width, height: height }\" \n *ngIf=\"data\" \n [class]=\"card && card.class ? card.class : ''\">\n <div\n cdkDrag\n class=\"example-box flex flex-column cards-wrapper\"\n [class]=\"\n card && card.width && card.width.length > 0\n ? 'col-' + card.width\n : 'col-3'\n \"\n *ngFor=\"let file of data; let i = index\"\n (click)=\"onClickEvent(file,i)\"\n [ngClass]=\"file.selectedCard ? file.selectedCard : ''\"\n >\n <!-- start cards image functionality -->\n <se-file\n [url]=\"file.blobfileurl\"\n [type]=\"file.fileextension\"\n [caption]=\"file?.filecaption\"\n [height]=\"card?.height\"\n [allowDownloadFile]=\"card?.allowDownload\"\n [allowEditableCaption]=\"card?.allowEditableCaption\"\n [allowDeleteFile]=\"card?.allowDelete\"\n [name]=\"file.blobfileurl\"\n [id]=\"file.fileextension\"\n (onDeleteEvent)=\"deleteImage($event)\"\n (onSaveEvent)=\"saveCaption($event)\"\n ></se-file>\n <!-- End cards image functionality -->\n\n <!-- start form functionality in card -->\n <se-form-util\n class=\"form-content\"\n [form]=\"file.dynamicform\"\n [hideSaveButton]=\"true\"\n [hideCancelButton]=\"true\"\n ></se-form-util>\n <!-- End form functionality in card -->\n </div>\n </div>\n\n
|
|
158
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CardComponent, selector: "se-card", inputs: { data: "data", width: "width", height: "height", card: "card", setCardData: "setCardData" }, outputs: { selectedCard: "selectedCard" }, usesOnChanges: true, ngImport: i0, template: "<!-- Display Files Card -->\n<p-confirmDialog key=\"handlecolumnActions\"></p-confirmDialog>\n<div\n class=\"card-main-wrapper\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n class=\"example-list\"\n (cdkDropListDropped)=\"dragAndDrop($event)\"\n>\n <div \n class=\"flex cards-wrapper\" \n [ngStyle]=\"{ width: width, height: height }\" \n *ngIf=\"data\" \n [class]=\"card && card.class ? card.class : ''\">\n <div\n cdkDrag\n class=\"example-box flex flex-column cards-wrapper\"\n [class]=\"\n card && card.width && card.width.length > 0\n ? 'col-' + card.width\n : 'col-3'\n \"\n *ngFor=\"let file of data; let i = index\"\n (click)=\"onClickEvent(file,i)\"\n [ngClass]=\"file.selectedCard ? file.selectedCard : ''\"\n >\n <!-- start cards image functionality -->\n <se-file\n [url]=\"file.blobfileurl\"\n [type]=\"file.fileextension\"\n [caption]=\"file?.filecaption\"\n [height]=\"card?.height\"\n [allowDownloadFile]=\"card?.allowDownload\"\n [allowEditableCaption]=\"card?.allowEditableCaption\"\n [allowDeleteFile]=\"card?.allowDelete\"\n [name]=\"file.blobfileurl\"\n [id]=\"file.fileextension\"\n (onDeleteEvent)=\"deleteImage($event)\"\n (onSaveEvent)=\"saveCaption($event)\"\n ></se-file>\n <!-- End cards image functionality -->\n\n <!-- start form functionality in card -->\n <se-form-util\n class=\"form-content\"\n [form]=\"file.dynamicform\"\n [hideSaveButton]=\"true\"\n [hideCancelButton]=\"true\"\n ></se-form-util>\n <!-- End form functionality in card -->\n </div>\n </div>\n\n</div>\n", styles: [":host ::ng-deep .card-main-wrapper{overflow:scroll}:host ::ng-deep .custom-card .action-buttons{visibility:hidden}:host ::ng-deep .custom-card .image-wrapper:hover .action-buttons{visibility:visible}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:hover .header-icons{opacity:1}.card-active{transform:scale(1.1);transition:all .2s linear;z-index:999}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i6.ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i8.FormUtilComponent, selector: "se-form-util", inputs: ["stickyActions", "form", "hideSaveButton", "hideCancelButton", "formButtons", "loading", "activeTestMode"], outputs: ["saveForm", "cancelForm", "dropDownChangeEvent", "sectionClickedEvent"] }, { kind: "component", type: i9.fileComponent, selector: "se-file", inputs: ["url", "caption", "width", "height", "id", "name", "type", "allowDownloadFile", "allowEditableCaption", "allowDeleteFile"], outputs: ["onDeleteEvent", "onSaveEvent"] }] }); }
|
|
159
159
|
}
|
|
160
160
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CardComponent, decorators: [{
|
|
161
161
|
type: Component,
|
|
162
|
-
args: [{ selector: 'se-card', template: "<!-- Display Files Card -->\n<p-confirmDialog key=\"handlecolumnActions\"></p-confirmDialog>\n<div\n class=\"card-main-wrapper\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n class=\"example-list\"\n (cdkDropListDropped)=\"dragAndDrop($event)\"\n>\n <div \n class=\"flex cards-wrapper\" \n [ngStyle]=\"{ width: width, height: height }\" \n *ngIf=\"data\" \n [class]=\"card && card.class ? card.class : ''\">\n <div\n cdkDrag\n class=\"example-box flex flex-column cards-wrapper\"\n [class]=\"\n card && card.width && card.width.length > 0\n ? 'col-' + card.width\n : 'col-3'\n \"\n *ngFor=\"let file of data; let i = index\"\n (click)=\"onClickEvent(file,i)\"\n [ngClass]=\"file.selectedCard ? file.selectedCard : ''\"\n >\n <!-- start cards image functionality -->\n <se-file\n [url]=\"file.blobfileurl\"\n [type]=\"file.fileextension\"\n [caption]=\"file?.filecaption\"\n [height]=\"card?.height\"\n [allowDownloadFile]=\"card?.allowDownload\"\n [allowEditableCaption]=\"card?.allowEditableCaption\"\n [allowDeleteFile]=\"card?.allowDelete\"\n [name]=\"file.blobfileurl\"\n [id]=\"file.fileextension\"\n (onDeleteEvent)=\"deleteImage($event)\"\n (onSaveEvent)=\"saveCaption($event)\"\n ></se-file>\n <!-- End cards image functionality -->\n\n <!-- start form functionality in card -->\n <se-form-util\n class=\"form-content\"\n [form]=\"file.dynamicform\"\n [hideSaveButton]=\"true\"\n [hideCancelButton]=\"true\"\n ></se-form-util>\n <!-- End form functionality in card -->\n </div>\n </div>\n\n
|
|
162
|
+
args: [{ selector: 'se-card', template: "<!-- Display Files Card -->\n<p-confirmDialog key=\"handlecolumnActions\"></p-confirmDialog>\n<div\n class=\"card-main-wrapper\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n class=\"example-list\"\n (cdkDropListDropped)=\"dragAndDrop($event)\"\n>\n <div \n class=\"flex cards-wrapper\" \n [ngStyle]=\"{ width: width, height: height }\" \n *ngIf=\"data\" \n [class]=\"card && card.class ? card.class : ''\">\n <div\n cdkDrag\n class=\"example-box flex flex-column cards-wrapper\"\n [class]=\"\n card && card.width && card.width.length > 0\n ? 'col-' + card.width\n : 'col-3'\n \"\n *ngFor=\"let file of data; let i = index\"\n (click)=\"onClickEvent(file,i)\"\n [ngClass]=\"file.selectedCard ? file.selectedCard : ''\"\n >\n <!-- start cards image functionality -->\n <se-file\n [url]=\"file.blobfileurl\"\n [type]=\"file.fileextension\"\n [caption]=\"file?.filecaption\"\n [height]=\"card?.height\"\n [allowDownloadFile]=\"card?.allowDownload\"\n [allowEditableCaption]=\"card?.allowEditableCaption\"\n [allowDeleteFile]=\"card?.allowDelete\"\n [name]=\"file.blobfileurl\"\n [id]=\"file.fileextension\"\n (onDeleteEvent)=\"deleteImage($event)\"\n (onSaveEvent)=\"saveCaption($event)\"\n ></se-file>\n <!-- End cards image functionality -->\n\n <!-- start form functionality in card -->\n <se-form-util\n class=\"form-content\"\n [form]=\"file.dynamicform\"\n [hideSaveButton]=\"true\"\n [hideCancelButton]=\"true\"\n ></se-form-util>\n <!-- End form functionality in card -->\n </div>\n </div>\n\n</div>\n", styles: [":host ::ng-deep .card-main-wrapper{overflow:scroll}:host ::ng-deep .custom-card .action-buttons{visibility:hidden}:host ::ng-deep .custom-card .image-wrapper:hover .action-buttons{visibility:visible}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:hover .header-icons{opacity:1}.card-active{transform:scale(1.1);transition:all .2s linear;z-index:999}\n"] }]
|
|
163
163
|
}], ctorParameters: () => [{ type: i1.DialogService }, { type: i2.GridService }, { type: i3.ConfirmationService }, { type: i4.SystemConfigService }], propDecorators: { selectedCard: [{
|
|
164
164
|
type: Output
|
|
165
165
|
}], data: [{
|
|
@@ -173,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
173
173
|
}], setCardData: [{
|
|
174
174
|
type: Input
|
|
175
175
|
}] } });
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL2NhcmRzL2NhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9jYXJkcy9jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGVBQWUsRUFBNkMsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekQsT0FBTyxLQUFLLFNBQVMsTUFBTSxxQ0FBcUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7O0FBUS9ELE1BQU0sT0FBTyxhQUFhO0lBWXhCLFlBQ1MsYUFBNEIsRUFDM0IsV0FBd0IsRUFDeEIsbUJBQXdDLEVBQ3hDLG1CQUF3QztRQUh6QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFmeEMsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvRCxrRUFBa0U7UUFDekQsU0FBSSxHQUFRLEVBQUUsQ0FBQztRQUNmLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQUk3QixjQUFTLEdBQVksS0FBSyxDQUFDO0lBUXhCLENBQUM7SUFFSixRQUFRLEtB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QUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7a0lBeEpVLGFBQWE7c0hBQWIsYUFBYSxxTkNmMUIscS9EQStEQTs7NEZEaERhLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0UsU0FBUztnTEFLVCxZQUFZO3NCQUFyQixNQUFNO2dCQUVFLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQgeyBFU2VsZWN0RmlsZVR5cGUsIElEeW5hbWljQ2FyZCwgSUR5bmFtaWNGb3JtLCBJVmlld0NhcmRQcm9wIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xuaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBHcmlkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dyaWQuc2VydmljZSc7XG5pbXBvcnQgKiBhcyB1dGlsaXRpZXMgZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEVTeXN0ZW1Db25maWcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVzcG9uc2UubW9kZWwnO1xuaW1wb3J0IHsgU3lzdGVtQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N5c3RlbS1jb25maWcuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlLWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhcmQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZENhcmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvLyBAT3V0cHV0KCkgb25EZWxldGVDYXJkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgZGF0YTogYW55ID0gW107XG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY2FyZDogYW55O1xuICBASW5wdXQoKSBzZXRDYXJkRGF0YTogYm9vbGVhbjtcbiAgZHluYW1pY0Zvcm06IElEeW5hbWljRm9ybTtcbiAgc2hvd0ZpbGVzOiBib29sZWFuID0gZmFsc2U7XG4gIGRpc3BsYXlDYXJkSW5mbzogSVZpZXdDYXJkUHJvcDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1Db25maWdTZXJ2aWNlOiBTeXN0ZW1Db25maWdTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLmNhcmQpIHtcbiAgICAgIGNvbnN0IGZpbGVDb250YWluZXJOYW1lID0gdGhpcy5jYXJkPy5jb250YWluZXJOYW1lO1xuICAgICAgY29uc3QgZmlsZVJvb3RQYXRoID0gdGhpcy5zeXN0ZW1Db25maWdTZXJ2aWNlLmdldFN5c3RlbUNvbmZpZ1ZhbHVlKEVTeXN0ZW1Db25maWcuRklMRVJPT1RQQVRIKTtcbiAgICAgIGxldCB7IGRhdGEsIGZvcm1TZWN0aW9ucywgY2FyZEluZm8gfTogYW55ID0gdGhpcy5jYXJkO1xuICAgICAgY29uc3QgZXh0ZW5zaW9uVmFsdWVzID0gT2JqZWN0LnZhbHVlcyhFU2VsZWN0RmlsZVR5cGUpO1xuICAgICAgY29uc3QgaGFyZGNvZGVFeHRlbnNpb24gPSBleHRlbnNpb25WYWx1ZXM/LnNvbWUoKGV4dCkgPT4gZXh0Py5pbmNsdWRlcyhjYXJkSW5mbz8uZXh0ZW5zaW9uPy50b0xvd2VyQ2FzZSgpKSk7XG4gICAgICBpZiAoY2FyZEluZm8gJiYgT2JqZWN0LmtleXMoY2FyZEluZm8pLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmRpc3BsYXlDYXJkSW5mbyA9IGNhcmRJbmZvO1xuICAgICAgICBkYXRhID0gdGhpcy5ncmlkU2VydmljZS5zZXREYXRhRmllbGRzKGRhdGEpO1xuICAgICAgICBjb25zdCBuZXdBcnIgPSBbXTtcbiAgICAgICAgZGF0YT8uZm9yRWFjaCgocmVjb3JkKSA9PiB7XG4gICAgICAgICAgaWYgKHJlY29yZC51cmwgJiYgcmVjb3JkLmZpbGVleHRlbnNpb24gJiYgIXJlY29yZC51cmwuaW5jbHVkZXMocmVjb3JkLmZpbGVleHRlbnNpb24pKSB7XG4gICAgICAgICAgICBpZiAocmVjb3JkLmZpbGVleHRlbnNpb24uc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgICAgICAgcmVjb3JkLnVybCA9IHJlY29yZC51cmwgKyByZWNvcmQuZmlsZWV4dGVuc2lvbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlY29yZC51cmwgPSByZWNvcmQudXJsICsgJy4nICsgcmVjb3JkLmZpbGVleHRlbnNpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghT2JqZWN0LmtleXMocmVjb3JkKT8uaW5jbHVkZXMoJ2F6dXJlY29udGFpbmVyaWQnKSkge1xuICAgICAgICAgICAgY29uc3QgdXJsID0gKGZpbGVSb290UGF0aCArICcvJyArIGZpbGVDb250YWluZXJOYW1lICsgJy8nKT8udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIG5ld0Fyci5wdXNoKHsgLi4ucmVjb3JkLCBibG9iZmlsZXVybDogdXJsICsgcmVjb3JkW2NhcmRJbmZvPy51cmw/LnRvTG93ZXJDYXNlKCldLCBmaWxlY2FwdGlvbjogcmVjb3JkW2NhcmRJbmZvPy5jYXB0aW9uPy50b0xvd2VyQ2FzZSgpXSwgZmlsZWV4dGVuc2lvbjogaGFyZGNvZGVFeHRlbnNpb24gPyBjYXJkSW5mbz8uZXh0ZW5zaW9uPy50b0xvd2VyQ2FzZSgpIDogcmVjb3JkW2NhcmRJbmZvPy5leHRlbnNpb24/LnRvTG93ZXJDYXNlKCldIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdBcnIucHVzaChyZWNvcmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGF0YSA9IG5ld0FycjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZ3JpZFNlcnZpY2Uuc2V0RGF0YUZpZWxkcyhkYXRhKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZHluYW1pY0Zvcm0gPSB7IGZvcm1TZWN0aW9ucyB9O1xuICAgICAgLy8gc2V0IHRoZSBkZWZhdWx0IHZhbHVlIG9mIGFsbG93RGVsZXRlLCBhbGxvd0VkaXRhYmxlQ2FwdGlvbiBhbmQgYWxsb3dEb3dubG9hZFxuICAgICAgdGhpcy5zZXRDYXJkUHJvcFZhbHVlKCdhbGxvd0Rvd25sb2FkJyk7XG4gICAgICB0aGlzLnNldENhcmRQcm9wVmFsdWUoJ2FsbG93RGVsZXRlJyk7XG4gICAgICB0aGlzLnNldENhcmRQcm9wVmFsdWUoJ2FsbG93RWRpdGFibGVDYXB0aW9uJyk7XG4gICAgICAvL2ZpbGVzLmFsbG93RWRpdGFibGVDYXB0aW9uID0gdGhpcy5zZXRDYXJkUHJvcFZhbHVlKGZpbGVzLmFsbG93RWRpdGFibGVDYXB0aW9uKTtcbiAgICAgIC8qKiBJbiBjYXNlIG9mIHdoZW4gd2UgYXJlIHVzaW5nIHRoaXMgY29tcG9uZW50IGZvciBzdGFuZCBhbG9uZSB0aGVuIGlmIGZvcm1TZWN0aW9uIGlzIGV4aXN0IGluXG4gICAgICAgICAgdGhlIHRoaXMuY2FyZCBhbmQgdGhlbiBhZGQgaW4gdGhlIGRhdGEgYXJyYXkuXG4gICAgICAqL1xuICAgICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaCgoeDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKCF4LmR5bmFtaWNmb3JtKSB7XG4gICAgICAgICAgICB4LmR5bmFtaWNmb3JtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmR5bmFtaWNGb3JtKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHV0aWxpdGllcy5zZXRDYXJkRmllbGRzRGF0YSh4KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gc2V0IHRoZSBkZWZhdWx0IHZhbHVlIG9mIGFsbG93RGVsZXRlLCBhbGxvd0VkaXRhYmxlQ2FwdGlvbiBhbmQgYWxsb3dEb3dubG9hZFxuICBzZXRDYXJkUHJvcFZhbHVlKHByb3A6c3RyaW5nKXtcbiAgIGlmKCF0aGlzLmNhcmRbcHJvcF0/LnRvU3RyaW5nKCk/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5jYXJkW3Byb3BdPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGRyYWdBbmREcm9wKGV2ZW50OiBhbnkpIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIGV2ZW50Lml0ZW0/LmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5jYXJkLmRhdGEgPSB0aGlzLmRhdGE7XG4gICAgdGhpcy5jYXJkWydjaGFuZ2UnXSA9IHRydWU7XG4gICAgaWYgKHRoaXMuY2FyZCAmJiB0aGlzLmNhcmQub25Tb3J0KSB7XG4gICAgICB0aGlzLmNhcmQub25Tb3J0KHRoaXMuZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlSW1hZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgIG1lc3NhZ2U6ICdBcmUgeW91IHN1cmUgdGhhdCB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBJbWFnZT8nLFxuICAgICAgaGVhZGVyOiAnRGVsZXRlIENvbmZpcm1hdGlvbicsXG4gICAgICBpY29uOiAncGkgcGktZXhjbGFtYXRpb24tdHJpYW5nbGUnLFxuICAgICAga2V5OiAnaGFuZGxlY29sdW1uQWN0aW9ucycsXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YSAmJiBldmVudCkge1xuICAgICAgICAgIGxldCBhcnIgPSBbLi4udGhpcy5kYXRhXTtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGFyci5maW5kSW5kZXgoXG4gICAgICAgICAgICAoaSkgPT4gaS5ibG9iZmlsZXVybCA9PT0gZXZlbnQuYmxvYmZpbGV1cmxcbiAgICAgICAgICApO1xuICAgICAgICAgIGxldCBvYmogPSBhcnJbaW5kZXhdO1xuICAgICAgICAgIGFyci5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIHRoaXMuZGF0YSA9IFsuLi5hcnJdO1xuXG4gICAgICAgICAgaWYgKHRoaXMuY2FyZCAmJiB0aGlzLmNhcmQub25EZWxldGUpIHtcbiAgICAgICAgICAgIG9iaiA9IHRoaXMucmVwbGFjZVByb3BOYW1lKG9iaik7XG4gICAgICAgICAgICB0aGlzLmNhcmQub25EZWxldGUob2JqKTtcbiAgICAgICAgICAgIC8vIHRoaXMub25EZWxldGVDYXJkLmVtaXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNsb3NlKCk7XG4gICAgICB9LFxuICAgICAgcmVqZWN0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jbG9zZSgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJlcGxhY2VQcm9wTmFtZShjYXJkSW5mbzphbnkpe1xuICAgIGlmKHRoaXMuZGlzcGxheUNhcmRJbmZvICYmIE9iamVjdC5rZXlzKHRoaXMuZGlzcGxheUNhcmRJbmZvKS5sZW5ndGggPiAwKXtcbiAgICAgIGNvbnN0IGNhcmRQcm9wID0gey4uLnRoaXMuZGlzcGxheUNhcmRJbmZvfTtcbiAgICAgIGNvbnN0IGV4dGVuc2lvblZhbHVlcyA9IE9iamVjdC52YWx1ZXMoRVNlbGVjdEZpbGVUeXBlKTtcbiAgICAgIGNvbnN0IGhhcmRjb2RlRXh0ZW5zaW9uID0gZXh0ZW5zaW9uVmFsdWVzPy5zb21lKChleHQpPT4gZXh0Py5pbmNsdWRlcyhjYXJkSW5mbz8uZXh0ZW5zaW9uPy50b0xvd2VyQ2FzZSgpKSk7XG4gICAgICBjb25zdCBvYmogPSB7Li4uY2FyZEluZm8sW2NhcmRQcm9wLnVybF06IGNhcmRJbmZvLmJsb2JmaWxldXJsLFtjYXJkUHJvcC5jYXB0aW9uXTogY2FyZEluZm8uZmlsZWNhcHRpb24sW2NhcmRQcm9wLmV4dGVuc2lvbl06IGhhcmRjb2RlRXh0ZW5zaW9uID8gY2FyZEluZm8/LmV4dGVuc2lvbj8udG9Mb3dlckNhc2UoKSA6IGNhcmRJbmZvPy5maWxlZXh0ZW5zaW9ufTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYXJkSW5mbztcbiAgICB9XG4gIH1cblxuICBzYXZlQ2FwdGlvbihldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuZGF0YSAmJiBldmVudCkge1xuICAgICAgbGV0IGFyciA9IFsuLi50aGlzLmRhdGFdO1xuICAgICAgY29uc3QgaW5kZXggPSBhcnIuZmluZEluZGV4KChpKSA9PiBpLmJsb2JmaWxldXJsID09PSBldmVudC5ibG9iZmlsZXVybCk7XG4gICAgICBsZXQgb2JqID0gYXJyW2luZGV4XTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgb2JqLmZpbGVjYXB0aW9uID0gZXZlbnQuY2FwdGlvbjtcbiAgICAgICAgb2JqLmNhcHRpb24gPSBldmVudC5jYXB0aW9uO1xuICAgICAgICBhcnIuc3BsaWNlKGluZGV4LCAxLCBvYmopO1xuICAgICAgICB0aGlzLmNhcmQuZGF0YSA9IGFycjtcbiAgICAgICAgdGhpcy5jYXJkWydjaGFuZ2UnXSA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jYXJkICYmIHRoaXMuY2FyZD8ub25DYXB0aW9uU2F2ZSkge1xuICAgICAgICBvYmogPSB0aGlzLnJlcGxhY2VQcm9wTmFtZShvYmopO1xuICAgICAgICB0aGlzLmNhcmQub25DYXB0aW9uU2F2ZShvYmopO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2tFdmVudChkYXRhOiBhbnksIGluZGV4OiBudW1iZXIpe1xuICAgIGRhdGFbJ2luZGV4J10gPSBpbmRleDtcbiAgICB0aGlzLnNlbGVjdGVkQ2FyZC5lbWl0KGRhdGEpO1xuICB9XG5cbn1cbiIsIjwhLS0gRGlzcGxheSBGaWxlcyBDYXJkIC0tPlxuPHAtY29uZmlybURpYWxvZyBrZXk9XCJoYW5kbGVjb2x1bW5BY3Rpb25zXCI+PC9wLWNvbmZpcm1EaWFsb2c+XG48ZGl2XG4gIGNsYXNzPVwiY2FyZC1tYWluLXdyYXBwZXJcIlxuICBjZGtEcm9wTGlzdFxuICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gIGNsYXNzPVwiZXhhbXBsZS1saXN0XCJcbiAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcmFnQW5kRHJvcCgkZXZlbnQpXCJcbj5cbiAgPGRpdiBcbiAgY2xhc3M9XCJmbGV4IGNhcmRzLXdyYXBwZXJcIiBcbiAgW25nU3R5bGVdPVwieyB3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0IH1cIiBcbiAgKm5nSWY9XCJkYXRhXCIgXG4gIFtjbGFzc109XCJjYXJkICYmIGNhcmQuY2xhc3MgPyBjYXJkLmNsYXNzIDogJydcIj5cbiAgICA8ZGl2XG4gICAgICBjZGtEcmFnXG4gICAgICBjbGFzcz1cImV4YW1wbGUtYm94IGZsZXggZmxleC1jb2x1bW4gY2FyZHMtd3JhcHBlclwiXG4gICAgICBbY2xhc3NdPVwiXG4gICAgICAgIGNhcmQgJiYgY2FyZC53aWR0aCAmJiBjYXJkLndpZHRoLmxlbmd0aCA+IDBcbiAgICAgICAgICA/ICdjb2wtJyArIGNhcmQud2lkdGhcbiAgICAgICAgICA6ICdjb2wtMydcbiAgICAgIFwiXG4gICAgICAqbmdGb3I9XCJsZXQgZmlsZSBvZiBkYXRhOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgIChjbGljayk9XCJvbkNsaWNrRXZlbnQoZmlsZSxpKVwiXG4gICAgICBbbmdDbGFzc109XCJmaWxlLnNlbGVjdGVkQ2FyZCA/IGZpbGUuc2VsZWN0ZWRDYXJkIDogJydcIlxuICAgID5cbiAgICAgIDwhLS0gc3RhcnQgY2FyZHMgaW1hZ2UgZnVuY3Rpb25hbGl0eSAtLT5cbiAgICAgIDxzZS1maWxlXG4gICAgICAgIFt1cmxdPVwiZmlsZS5ibG9iZmlsZXVybFwiXG4gICAgICAgIFt0eXBlXT1cImZpbGUuZmlsZWV4dGVuc2lvblwiXG4gICAgICAgIFtjYXB0aW9uXT1cImZpbGU/LmZpbGVjYXB0aW9uXCJcbiAgICAgICAgW2hlaWdodF09XCJjYXJkPy5oZWlnaHRcIlxuICAgICAgICBbYWxsb3dEb3dubG9hZEZpbGVdPVwiY2FyZD8uYWxsb3dEb3dubG9hZFwiXG4gICAgICAgIFthbGxvd0VkaXRhYmxlQ2FwdGlvbl09XCJjYXJkPy5hbGxvd0VkaXRhYmxlQ2FwdGlvblwiXG4gICAgICAgIFthbGxvd0RlbGV0ZUZpbGVdPVwiY2FyZD8uYWxsb3dEZWxldGVcIlxuICAgICAgICBbbmFtZV09XCJmaWxlLmJsb2JmaWxldXJsXCJcbiAgICAgICAgW2lkXT1cImZpbGUuZmlsZWV4dGVuc2lvblwiXG4gICAgICAgIChvbkRlbGV0ZUV2ZW50KT1cImRlbGV0ZUltYWdlKCRldmVudClcIlxuICAgICAgICAob25TYXZlRXZlbnQpPVwic2F2ZUNhcHRpb24oJGV2ZW50KVwiXG4gICAgICA+PC9zZS1maWxlPlxuICAgICAgPCEtLSBFbmQgY2FyZHMgaW1hZ2UgZnVuY3Rpb25hbGl0eSAtLT5cblxuICAgICAgPCEtLSBzdGFydCBmb3JtIGZ1bmN0aW9uYWxpdHkgaW4gY2FyZCAtLT5cbiAgICAgIDxzZS1mb3JtLXV0aWxcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRlbnRcIlxuICAgICAgICBbZm9ybV09XCJmaWxlLmR5bmFtaWNmb3JtXCJcbiAgICAgICAgW2hpZGVTYXZlQnV0dG9uXT1cInRydWVcIlxuICAgICAgICBbaGlkZUNhbmNlbEJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgID48L3NlLWZvcm0tdXRpbD5cbiAgICAgIDwhLS0gRW5kIGZvcm0gZnVuY3Rpb25hbGl0eSBpbiBjYXJkIC0tPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIGluIGNhc2Ugb2YgZm9ybSBhbmQgZGF0YSBpcyBlbXB0eSBvciBudWxsIC0tPlxuICA8ZGl2ICpuZ0lmPVwiZHluYW1pY0Zvcm0gJiYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoID09IDApXCI+XG4gICAgPHNlLWZvcm0tdXRpbFxuICAgICAgKm5nSWY9XCJkeW5hbWljRm9ybVwiXG4gICAgICBbZm9ybV09XCJkeW5hbWljRm9ybVwiXG4gICAgICBbaGlkZVNhdmVCdXR0b25dPVwidHJ1ZVwiXG4gICAgICBbaGlkZUNhbmNlbEJ1dHRvbl09XCJ0cnVlXCJcbiAgICA+PC9zZS1mb3JtLXV0aWw+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL2NhcmRzL2NhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9jYXJkcy9jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGVBQWUsRUFBNkMsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekQsT0FBTyxLQUFLLFNBQVMsTUFBTSxxQ0FBcUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7O0FBUS9ELE1BQU0sT0FBTyxhQUFhO0lBWXhCLFlBQ1MsYUFBNEIsRUFDM0IsV0FBd0IsRUFDeEIsbUJBQXdDLEVBQ3hDLG1CQUF3QztRQUh6QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFmeEMsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvRCxrRUFBa0U7UUFDekQsU0FBSSxHQUFRLEVBQUUsQ0FBQztRQUNmLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQUk3QixjQUFTLEdBQVksS0FBSyxDQUFDO0lBUXhCLENBQUM7SUFFSixRQUFRLEtB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QUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7a0lBeEpVLGFBQWE7c0hBQWIsYUFBYSxxTkNmMUIsK3NEQXNEQTs7NEZEdkNhLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0UsU0FBUztnTEFLVCxZQUFZO3NCQUFyQixNQUFNO2dCQUVFLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQgeyBFU2VsZWN0RmlsZVR5cGUsIElEeW5hbWljQ2FyZCwgSUR5bmFtaWNGb3JtLCBJVmlld0NhcmRQcm9wIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xuaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBHcmlkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dyaWQuc2VydmljZSc7XG5pbXBvcnQgKiBhcyB1dGlsaXRpZXMgZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEVTeXN0ZW1Db25maWcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVzcG9uc2UubW9kZWwnO1xuaW1wb3J0IHsgU3lzdGVtQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N5c3RlbS1jb25maWcuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlLWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhcmQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZENhcmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvLyBAT3V0cHV0KCkgb25EZWxldGVDYXJkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgZGF0YTogYW55ID0gW107XG4gIEBJbnB1dCgpIHdpZHRoOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaGVpZ2h0OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY2FyZDogYW55O1xuICBASW5wdXQoKSBzZXRDYXJkRGF0YTogYm9vbGVhbjtcbiAgZHluYW1pY0Zvcm06IElEeW5hbWljRm9ybTtcbiAgc2hvd0ZpbGVzOiBib29sZWFuID0gZmFsc2U7XG4gIGRpc3BsYXlDYXJkSW5mbzogSVZpZXdDYXJkUHJvcDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1Db25maWdTZXJ2aWNlOiBTeXN0ZW1Db25maWdTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLmNhcmQpIHtcbiAgICAgIGNvbnN0IGZpbGVDb250YWluZXJOYW1lID0gdGhpcy5jYXJkPy5jb250YWluZXJOYW1lO1xuICAgICAgY29uc3QgZmlsZVJvb3RQYXRoID0gdGhpcy5zeXN0ZW1Db25maWdTZXJ2aWNlLmdldFN5c3RlbUNvbmZpZ1ZhbHVlKEVTeXN0ZW1Db25maWcuRklMRVJPT1RQQVRIKTtcbiAgICAgIGxldCB7IGRhdGEsIGZvcm1TZWN0aW9ucywgY2FyZEluZm8gfTogYW55ID0gdGhpcy5jYXJkO1xuICAgICAgY29uc3QgZXh0ZW5zaW9uVmFsdWVzID0gT2JqZWN0LnZhbHVlcyhFU2VsZWN0RmlsZVR5cGUpO1xuICAgICAgY29uc3QgaGFyZGNvZGVFeHRlbnNpb24gPSBleHRlbnNpb25WYWx1ZXM/LnNvbWUoKGV4dCkgPT4gZXh0Py5pbmNsdWRlcyhjYXJkSW5mbz8uZXh0ZW5zaW9uPy50b0xvd2VyQ2FzZSgpKSk7XG4gICAgICBpZiAoY2FyZEluZm8gJiYgT2JqZWN0LmtleXMoY2FyZEluZm8pLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmRpc3BsYXlDYXJkSW5mbyA9IGNhcmRJbmZvO1xuICAgICAgICBkYXRhID0gdGhpcy5ncmlkU2VydmljZS5zZXREYXRhRmllbGRzKGRhdGEpO1xuICAgICAgICBjb25zdCBuZXdBcnIgPSBbXTtcbiAgICAgICAgZGF0YT8uZm9yRWFjaCgocmVjb3JkKSA9PiB7XG4gICAgICAgICAgaWYgKHJlY29yZC51cmwgJiYgcmVjb3JkLmZpbGVleHRlbnNpb24gJiYgIXJlY29yZC51cmwuaW5jbHVkZXMocmVjb3JkLmZpbGVleHRlbnNpb24pKSB7XG4gICAgICAgICAgICBpZiAocmVjb3JkLmZpbGVleHRlbnNpb24uc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgICAgICAgcmVjb3JkLnVybCA9IHJlY29yZC51cmwgKyByZWNvcmQuZmlsZWV4dGVuc2lvbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlY29yZC51cmwgPSByZWNvcmQudXJsICsgJy4nICsgcmVjb3JkLmZpbGVleHRlbnNpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghT2JqZWN0LmtleXMocmVjb3JkKT8uaW5jbHVkZXMoJ2F6dXJlY29udGFpbmVyaWQnKSkge1xuICAgICAgICAgICAgY29uc3QgdXJsID0gKGZpbGVSb290UGF0aCArICcvJyArIGZpbGVDb250YWluZXJOYW1lICsgJy8nKT8udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIG5ld0Fyci5wdXNoKHsgLi4ucmVjb3JkLCBibG9iZmlsZXVybDogdXJsICsgcmVjb3JkW2NhcmRJbmZvPy51cmw/LnRvTG93ZXJDYXNlKCldLCBmaWxlY2FwdGlvbjogcmVjb3JkW2NhcmRJbmZvPy5jYXB0aW9uPy50b0xvd2VyQ2FzZSgpXSwgZmlsZWV4dGVuc2lvbjogaGFyZGNvZGVFeHRlbnNpb24gPyBjYXJkSW5mbz8uZXh0ZW5zaW9uPy50b0xvd2VyQ2FzZSgpIDogcmVjb3JkW2NhcmRJbmZvPy5leHRlbnNpb24/LnRvTG93ZXJDYXNlKCldIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdBcnIucHVzaChyZWNvcmQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGF0YSA9IG5ld0FycjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZ3JpZFNlcnZpY2Uuc2V0RGF0YUZpZWxkcyhkYXRhKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZHluYW1pY0Zvcm0gPSB7IGZvcm1TZWN0aW9ucyB9O1xuICAgICAgLy8gc2V0IHRoZSBkZWZhdWx0IHZhbHVlIG9mIGFsbG93RGVsZXRlLCBhbGxvd0VkaXRhYmxlQ2FwdGlvbiBhbmQgYWxsb3dEb3dubG9hZFxuICAgICAgdGhpcy5zZXRDYXJkUHJvcFZhbHVlKCdhbGxvd0Rvd25sb2FkJyk7XG4gICAgICB0aGlzLnNldENhcmRQcm9wVmFsdWUoJ2FsbG93RGVsZXRlJyk7XG4gICAgICB0aGlzLnNldENhcmRQcm9wVmFsdWUoJ2FsbG93RWRpdGFibGVDYXB0aW9uJyk7XG4gICAgICAvL2ZpbGVzLmFsbG93RWRpdGFibGVDYXB0aW9uID0gdGhpcy5zZXRDYXJkUHJvcFZhbHVlKGZpbGVzLmFsbG93RWRpdGFibGVDYXB0aW9uKTtcbiAgICAgIC8qKiBJbiBjYXNlIG9mIHdoZW4gd2UgYXJlIHVzaW5nIHRoaXMgY29tcG9uZW50IGZvciBzdGFuZCBhbG9uZSB0aGVuIGlmIGZvcm1TZWN0aW9uIGlzIGV4aXN0IGluXG4gICAgICAgICAgdGhlIHRoaXMuY2FyZCBhbmQgdGhlbiBhZGQgaW4gdGhlIGRhdGEgYXJyYXkuXG4gICAgICAqL1xuICAgICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaCgoeDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKCF4LmR5bmFtaWNmb3JtKSB7XG4gICAgICAgICAgICB4LmR5bmFtaWNmb3JtID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmR5bmFtaWNGb3JtKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHV0aWxpdGllcy5zZXRDYXJkRmllbGRzRGF0YSh4KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gc2V0IHRoZSBkZWZhdWx0IHZhbHVlIG9mIGFsbG93RGVsZXRlLCBhbGxvd0VkaXRhYmxlQ2FwdGlvbiBhbmQgYWxsb3dEb3dubG9hZFxuICBzZXRDYXJkUHJvcFZhbHVlKHByb3A6c3RyaW5nKXtcbiAgIGlmKCF0aGlzLmNhcmRbcHJvcF0/LnRvU3RyaW5nKCk/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5jYXJkW3Byb3BdPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGRyYWdBbmREcm9wKGV2ZW50OiBhbnkpIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIGV2ZW50Lml0ZW0/LmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5jYXJkLmRhdGEgPSB0aGlzLmRhdGE7XG4gICAgdGhpcy5jYXJkWydjaGFuZ2UnXSA9IHRydWU7XG4gICAgaWYgKHRoaXMuY2FyZCAmJiB0aGlzLmNhcmQub25Tb3J0KSB7XG4gICAgICB0aGlzLmNhcmQub25Tb3J0KHRoaXMuZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlSW1hZ2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgIG1lc3NhZ2U6ICdBcmUgeW91IHN1cmUgdGhhdCB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBJbWFnZT8nLFxuICAgICAgaGVhZGVyOiAnRGVsZXRlIENvbmZpcm1hdGlvbicsXG4gICAgICBpY29uOiAncGkgcGktZXhjbGFtYXRpb24tdHJpYW5nbGUnLFxuICAgICAga2V5OiAnaGFuZGxlY29sdW1uQWN0aW9ucycsXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YSAmJiBldmVudCkge1xuICAgICAgICAgIGxldCBhcnIgPSBbLi4udGhpcy5kYXRhXTtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGFyci5maW5kSW5kZXgoXG4gICAgICAgICAgICAoaSkgPT4gaS5ibG9iZmlsZXVybCA9PT0gZXZlbnQuYmxvYmZpbGV1cmxcbiAgICAgICAgICApO1xuICAgICAgICAgIGxldCBvYmogPSBhcnJbaW5kZXhdO1xuICAgICAgICAgIGFyci5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIHRoaXMuZGF0YSA9IFsuLi5hcnJdO1xuXG4gICAgICAgICAgaWYgKHRoaXMuY2FyZCAmJiB0aGlzLmNhcmQub25EZWxldGUpIHtcbiAgICAgICAgICAgIG9iaiA9IHRoaXMucmVwbGFjZVByb3BOYW1lKG9iaik7XG4gICAgICAgICAgICB0aGlzLmNhcmQub25EZWxldGUob2JqKTtcbiAgICAgICAgICAgIC8vIHRoaXMub25EZWxldGVDYXJkLmVtaXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNsb3NlKCk7XG4gICAgICB9LFxuICAgICAgcmVqZWN0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jbG9zZSgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJlcGxhY2VQcm9wTmFtZShjYXJkSW5mbzphbnkpe1xuICAgIGlmKHRoaXMuZGlzcGxheUNhcmRJbmZvICYmIE9iamVjdC5rZXlzKHRoaXMuZGlzcGxheUNhcmRJbmZvKS5sZW5ndGggPiAwKXtcbiAgICAgIGNvbnN0IGNhcmRQcm9wID0gey4uLnRoaXMuZGlzcGxheUNhcmRJbmZvfTtcbiAgICAgIGNvbnN0IGV4dGVuc2lvblZhbHVlcyA9IE9iamVjdC52YWx1ZXMoRVNlbGVjdEZpbGVUeXBlKTtcbiAgICAgIGNvbnN0IGhhcmRjb2RlRXh0ZW5zaW9uID0gZXh0ZW5zaW9uVmFsdWVzPy5zb21lKChleHQpPT4gZXh0Py5pbmNsdWRlcyhjYXJkSW5mbz8uZXh0ZW5zaW9uPy50b0xvd2VyQ2FzZSgpKSk7XG4gICAgICBjb25zdCBvYmogPSB7Li4uY2FyZEluZm8sW2NhcmRQcm9wLnVybF06IGNhcmRJbmZvLmJsb2JmaWxldXJsLFtjYXJkUHJvcC5jYXB0aW9uXTogY2FyZEluZm8uZmlsZWNhcHRpb24sW2NhcmRQcm9wLmV4dGVuc2lvbl06IGhhcmRjb2RlRXh0ZW5zaW9uID8gY2FyZEluZm8/LmV4dGVuc2lvbj8udG9Mb3dlckNhc2UoKSA6IGNhcmRJbmZvPy5maWxlZXh0ZW5zaW9ufTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYXJkSW5mbztcbiAgICB9XG4gIH1cblxuICBzYXZlQ2FwdGlvbihldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuZGF0YSAmJiBldmVudCkge1xuICAgICAgbGV0IGFyciA9IFsuLi50aGlzLmRhdGFdO1xuICAgICAgY29uc3QgaW5kZXggPSBhcnIuZmluZEluZGV4KChpKSA9PiBpLmJsb2JmaWxldXJsID09PSBldmVudC5ibG9iZmlsZXVybCk7XG4gICAgICBsZXQgb2JqID0gYXJyW2luZGV4XTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgb2JqLmZpbGVjYXB0aW9uID0gZXZlbnQuY2FwdGlvbjtcbiAgICAgICAgb2JqLmNhcHRpb24gPSBldmVudC5jYXB0aW9uO1xuICAgICAgICBhcnIuc3BsaWNlKGluZGV4LCAxLCBvYmopO1xuICAgICAgICB0aGlzLmNhcmQuZGF0YSA9IGFycjtcbiAgICAgICAgdGhpcy5jYXJkWydjaGFuZ2UnXSA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jYXJkICYmIHRoaXMuY2FyZD8ub25DYXB0aW9uU2F2ZSkge1xuICAgICAgICBvYmogPSB0aGlzLnJlcGxhY2VQcm9wTmFtZShvYmopO1xuICAgICAgICB0aGlzLmNhcmQub25DYXB0aW9uU2F2ZShvYmopO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2tFdmVudChkYXRhOiBhbnksIGluZGV4OiBudW1iZXIpe1xuICAgIGRhdGFbJ2luZGV4J10gPSBpbmRleDtcbiAgICB0aGlzLnNlbGVjdGVkQ2FyZC5lbWl0KGRhdGEpO1xuICB9XG5cbn1cbiIsIjwhLS0gRGlzcGxheSBGaWxlcyBDYXJkIC0tPlxuPHAtY29uZmlybURpYWxvZyBrZXk9XCJoYW5kbGVjb2x1bW5BY3Rpb25zXCI+PC9wLWNvbmZpcm1EaWFsb2c+XG48ZGl2XG4gIGNsYXNzPVwiY2FyZC1tYWluLXdyYXBwZXJcIlxuICBjZGtEcm9wTGlzdFxuICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gIGNsYXNzPVwiZXhhbXBsZS1saXN0XCJcbiAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcmFnQW5kRHJvcCgkZXZlbnQpXCJcbj5cbiAgPGRpdiBcbiAgY2xhc3M9XCJmbGV4IGNhcmRzLXdyYXBwZXJcIiBcbiAgW25nU3R5bGVdPVwieyB3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0IH1cIiBcbiAgKm5nSWY9XCJkYXRhXCIgXG4gIFtjbGFzc109XCJjYXJkICYmIGNhcmQuY2xhc3MgPyBjYXJkLmNsYXNzIDogJydcIj5cbiAgICA8ZGl2XG4gICAgICBjZGtEcmFnXG4gICAgICBjbGFzcz1cImV4YW1wbGUtYm94IGZsZXggZmxleC1jb2x1bW4gY2FyZHMtd3JhcHBlclwiXG4gICAgICBbY2xhc3NdPVwiXG4gICAgICAgIGNhcmQgJiYgY2FyZC53aWR0aCAmJiBjYXJkLndpZHRoLmxlbmd0aCA+IDBcbiAgICAgICAgICA/ICdjb2wtJyArIGNhcmQud2lkdGhcbiAgICAgICAgICA6ICdjb2wtMydcbiAgICAgIFwiXG4gICAgICAqbmdGb3I9XCJsZXQgZmlsZSBvZiBkYXRhOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgIChjbGljayk9XCJvbkNsaWNrRXZlbnQoZmlsZSxpKVwiXG4gICAgICBbbmdDbGFzc109XCJmaWxlLnNlbGVjdGVkQ2FyZCA/IGZpbGUuc2VsZWN0ZWRDYXJkIDogJydcIlxuICAgID5cbiAgICAgIDwhLS0gc3RhcnQgY2FyZHMgaW1hZ2UgZnVuY3Rpb25hbGl0eSAtLT5cbiAgICAgIDxzZS1maWxlXG4gICAgICAgIFt1cmxdPVwiZmlsZS5ibG9iZmlsZXVybFwiXG4gICAgICAgIFt0eXBlXT1cImZpbGUuZmlsZWV4dGVuc2lvblwiXG4gICAgICAgIFtjYXB0aW9uXT1cImZpbGU/LmZpbGVjYXB0aW9uXCJcbiAgICAgICAgW2hlaWdodF09XCJjYXJkPy5oZWlnaHRcIlxuICAgICAgICBbYWxsb3dEb3dubG9hZEZpbGVdPVwiY2FyZD8uYWxsb3dEb3dubG9hZFwiXG4gICAgICAgIFthbGxvd0VkaXRhYmxlQ2FwdGlvbl09XCJjYXJkPy5hbGxvd0VkaXRhYmxlQ2FwdGlvblwiXG4gICAgICAgIFthbGxvd0RlbGV0ZUZpbGVdPVwiY2FyZD8uYWxsb3dEZWxldGVcIlxuICAgICAgICBbbmFtZV09XCJmaWxlLmJsb2JmaWxldXJsXCJcbiAgICAgICAgW2lkXT1cImZpbGUuZmlsZWV4dGVuc2lvblwiXG4gICAgICAgIChvbkRlbGV0ZUV2ZW50KT1cImRlbGV0ZUltYWdlKCRldmVudClcIlxuICAgICAgICAob25TYXZlRXZlbnQpPVwic2F2ZUNhcHRpb24oJGV2ZW50KVwiXG4gICAgICA+PC9zZS1maWxlPlxuICAgICAgPCEtLSBFbmQgY2FyZHMgaW1hZ2UgZnVuY3Rpb25hbGl0eSAtLT5cblxuICAgICAgPCEtLSBzdGFydCBmb3JtIGZ1bmN0aW9uYWxpdHkgaW4gY2FyZCAtLT5cbiAgICAgIDxzZS1mb3JtLXV0aWxcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRlbnRcIlxuICAgICAgICBbZm9ybV09XCJmaWxlLmR5bmFtaWNmb3JtXCJcbiAgICAgICAgW2hpZGVTYXZlQnV0dG9uXT1cInRydWVcIlxuICAgICAgICBbaGlkZUNhbmNlbEJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgID48L3NlLWZvcm0tdXRpbD5cbiAgICAgIDwhLS0gRW5kIGZvcm0gZnVuY3Rpb25hbGl0eSBpbiBjYXJkIC0tPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=
|