@eui/components 15.0.0-rc.17 → 15.0.0-rc.18
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/docs/components/EuiChipComponent.html +1 -1
- package/docs/components/EuiGrowlComponent.html +1 -1
- package/docs/components/EuiPaginatorComponent.html +1 -1
- package/docs/components/EuiTabsComponent.html +1 -1
- package/docs/components/UxDynamicModalComponent.html +1 -1
- package/docs/components/UxFieldSearchComponent.html +1 -1
- package/docs/dependencies.html +3 -1
- package/docs/js/search/search_index.js +2 -2
- package/docs/miscellaneous/variables.html +29 -29
- package/esm2020/eui-button/eui-button.component.mjs +2 -2
- package/esm2020/eui-chip/eui-chip.component.mjs +3 -3
- package/esm2020/eui-growl/eui-growl.component.mjs +3 -3
- package/esm2020/eui-paginator/eui-paginator.component.mjs +3 -3
- package/esm2020/eui-tabs/eui-tabs.component.mjs +3 -3
- package/esm2020/eui-timeline/eui-timeline-item.component.mjs +2 -2
- package/esm2020/eui-timeline/eui-timeline.component.mjs +2 -2
- package/esm2020/legacy/ux-datepicker/ux-datepicker.component.mjs +2 -2
- package/esm2020/legacy/ux-dynamic-modal/ux-dynamic-modal.component.mjs +3 -3
- package/esm2020/legacy/ux-field-search/ux-field-search.component.mjs +3 -3
- package/fesm2015/eui-components-eui-button.mjs +2 -2
- package/fesm2015/eui-components-eui-button.mjs.map +1 -1
- package/fesm2015/eui-components-eui-chip.mjs +2 -2
- package/fesm2015/eui-components-eui-chip.mjs.map +1 -1
- package/fesm2015/eui-components-eui-growl.mjs +2 -2
- package/fesm2015/eui-components-eui-growl.mjs.map +1 -1
- package/fesm2015/eui-components-eui-paginator.mjs +2 -2
- package/fesm2015/eui-components-eui-paginator.mjs.map +1 -1
- package/fesm2015/eui-components-eui-tabs.mjs +2 -2
- package/fesm2015/eui-components-eui-tabs.mjs.map +1 -1
- package/fesm2015/eui-components-eui-timeline.mjs +4 -4
- package/fesm2015/eui-components-legacy-ux-datepicker.mjs +2 -2
- package/fesm2015/eui-components-legacy-ux-datepicker.mjs.map +1 -1
- package/fesm2015/eui-components-legacy-ux-dynamic-modal.mjs +2 -2
- package/fesm2015/eui-components-legacy-ux-dynamic-modal.mjs.map +1 -1
- package/fesm2015/eui-components-legacy-ux-field-search.mjs +2 -2
- package/fesm2015/eui-components-legacy-ux-field-search.mjs.map +1 -1
- package/fesm2020/eui-components-eui-button.mjs +2 -2
- package/fesm2020/eui-components-eui-button.mjs.map +1 -1
- package/fesm2020/eui-components-eui-chip.mjs +2 -2
- package/fesm2020/eui-components-eui-chip.mjs.map +1 -1
- package/fesm2020/eui-components-eui-growl.mjs +2 -2
- package/fesm2020/eui-components-eui-growl.mjs.map +1 -1
- package/fesm2020/eui-components-eui-paginator.mjs +2 -2
- package/fesm2020/eui-components-eui-paginator.mjs.map +1 -1
- package/fesm2020/eui-components-eui-tabs.mjs +2 -2
- package/fesm2020/eui-components-eui-tabs.mjs.map +1 -1
- package/fesm2020/eui-components-eui-timeline.mjs +4 -4
- package/fesm2020/eui-components-legacy-ux-datepicker.mjs +2 -2
- package/fesm2020/eui-components-legacy-ux-datepicker.mjs.map +1 -1
- package/fesm2020/eui-components-legacy-ux-dynamic-modal.mjs +2 -2
- package/fesm2020/eui-components-legacy-ux-dynamic-modal.mjs.map +1 -1
- package/fesm2020/eui-components-legacy-ux-field-search.mjs +2 -2
- package/fesm2020/eui-components-legacy-ux-field-search.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -140,10 +140,10 @@ export class UxDynamicModalComponent {
|
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
142
|
/** @nocollapse */ UxDynamicModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: UxDynamicModalComponent, deps: [{ token: DYNAMIC_COMPONENT_CONFIG }, { token: i1.UxDynamicComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
143
|
-
/** @nocollapse */ UxDynamicModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: UxDynamicModalComponent, selector: "ux-dynamic-modal", inputs: { e2eAttr: "e2eAttr" }, queries: [{ propertyName: "customFooterContent", first: true, predicate: i0.forwardRef(function () { return UxDynamicModalFooterTagDirective; }), descendants: true }, { propertyName: "customHeaderContent", first: true, predicate: i0.forwardRef(function () { return UxDynamicModalHeaderTagDirective; }), descendants: true }, { propertyName: "customMessageBoxFooterContent", first: true, predicate: i0.forwardRef(function () { return UxDynamicMessageBoxFooterTagDirective; }), descendants: true }], viewQueries: [{ propertyName: "uxModalEl", first: true, predicate: ["modal"], descendants: true }, { propertyName: "uxModalBody", first: true, predicate: ["uxmodalbody"], descendants: true }, { propertyName: "vcCloseButton", first: true, predicate: ["closeButton"], descendants: true }], ngImport: i0, template: "<div id=\"{{config.id}}\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\" #modal\n class=\"modal ux-modal {{ config.styleClass }} {{ stateClasses }} eui-u-anim\"\n role=\"dialog\"\n [class.eui-u-anim--slideInDown]=\"!config.isMessageBox\"\n [class.eui-u-anim--flipInY]=\"config.isMessageBox\"\n [class.ux-modal--full-height]=\"config.isSizeFullHeight\"\n [class.ux-modal--medium-height]=\"config.isSizeMediumHeight\"\n [class.ux-modal--draggable]=\"config.isDraggable\"\n [class.eui-u-anim--fast]=\"!config.isMessageBox\"\n [class.eui-u-anim--medium]=\"config.isMessageBox\"\n (keydown)=\"closeModalOnEscape($event)\"\n tabIndex=\"-1\"\n [style.display]=\"'block'\"\n attr.data-e2e=\"{{ e2eAttr }}\">\n\n <div class=\"modal-dialog ux-modal__dialog\" role=\"document\" [style.max-width]=\"config.customWidth\">\n <div class=\"modal-content ux-modal__content\" [class.ux-u-overflow-visible]=\"config.isOverflowVisible\" cdkDrag [cdkDragDisabled]=\"!config.isDraggable\">\n <div class=\"modal-header ux-modal__header\" cdkDragHandle>\n <ng-template [ngIf]=\"customHeaderContent\">\n <ng-content select=\"uxModalHeader\"></ng-content>\n </ng-template>\n <ng-template [ngIf]=\"!customHeaderContent\">\n <h5 class=\"modal-title ux-modal__header-title\">{{ config.titleLabel }}</h5>\n </ng-template>\n <button *ngIf=\"config.isShowCloseButton\" #closeButton\n type=\"button\"\n class=\"ux-modal__header-close\"\n data-dismiss=\"modal\"\n aria-label=\"Close\"\n (click)=\"close($event)\">\n <eui-icon-svg icon=\"eui-close-m\"></eui-icon-svg>\n </button>\n </div>\n <div #uxmodalbody class=\"modal-body ux-modal__body {{ config.bodyStyleClass }}\"\n [class.ux-modal--no-padding]=\"config.hasNoBodyPadding\"\n [class.ux-u-overflow-visible]=\"config.isOverflowVisible\">\n <span [outerHTML]=\"config.content\" *ngIf=\"!config.isMessageBox\"></span>\n\n <div class=\"ux-message-box__body\" *ngIf=\"config.isMessageBox\">\n <div class=\"ux-message-box__body-icon\"></div>\n <div class=\"ux-message-box__body-content\">\n <span [outerHTML]=\"config.content\"></span>\n </div>\n </div>\n\n </div>\n\n <div *ngIf=\"config.isFooterVisible\" class=\"modal-footer ux-modal__footer {{ config.footerStyleClass }}\"\n [class.ux-modal__footer--custom-alignment]=\"config.customFooterContent\">\n\n <uxDynamicModalFooter *ngIf=\"config.customFooterContent && !config.isMessageBox\">\n <ux-layout-horizontal>\n <uxLayoutHorizontalLeft *ngIf=\"config.customFooterContent.left\">\n <ux-button *ngFor=\"let button of config.customFooterContent.left.buttons\"\n type=\"{{ button.type }}\"\n styleClass=\"{{ button.styleClass }}\"\n typeClass=\"{{ button.typeClass }}\"\n iconClass=\"{{ button.iconClass }}\"\n [isOutline]=\"button.isOutline\"\n [isSecondary]=\"button.isSecondary\"\n [isSmall]=\"button.isSmall\"\n [isLarge]=\"button.isLarge\"\n [isBlock]=\"button.isBlock\"\n [isFlat]=\"button.isFlat\"\n [isDisabled]=\"button.isDisabled\"\n (click)=\"customFooterButtonClick(button)\">{{ button.label }}</ux-button>\n </uxLayoutHorizontalLeft>\n <uxLayoutHorizontalRight *ngIf=\"config.customFooterContent.right\">\n <ux-button *ngFor=\"let button of config.customFooterContent.right.buttons\"\n type=\"{{ button.type }}\"\n styleClass=\"{{ button.styleClass }}\"\n typeClass=\"{{ button.typeClass }}\"\n iconClass=\"{{ button.iconClass }}\"\n [isOutline]=\"button.isOutline\"\n [isSecondary]=\"button.isSecondary\"\n [isSmall]=\"button.isSmall\"\n [isLarge]=\"button.isLarge\"\n [isBlock]=\"button.isBlock\"\n [isFlat]=\"button.isFlat\"\n [isDisabled]=\"button.isDisabled\"\n (click)=\"customFooterButtonClick(button)\">{{ button.label }}</ux-button>\n </uxLayoutHorizontalRight>\n </ux-layout-horizontal>\n </uxDynamicModalFooter>\n\n <uxDynamicMessageBoxFooter *ngIf=\"config.customFooterContent && config.isMessageBox\">\n <ux-layout-horizontal>\n <uxLayoutHorizontalLeft *ngIf=\"config.customFooterContent.left\">\n <ux-button *ngFor=\"let button of config.customFooterContent.left.buttons\"\n type=\"{{ button.type }}\"\n styleClass=\"{{ button.styleClass }}\"\n typeClass=\"{{ button.typeClass }}\"\n iconClass=\"{{ button.iconClass }}\"\n [isOutline]=\"button.isOutline\"\n [isSecondary]=\"button.isSecondary\"\n [isSmall]=\"button.isSmall\"\n [isLarge]=\"button.isLarge\"\n [isBlock]=\"button.isBlock\"\n [isFlat]=\"button.isFlat\"\n [isDisabled]=\"button.isDisabled\"\n (click)=\"customFooterButtonClick(button)\">{{ button.label }}</ux-button>\n </uxLayoutHorizontalLeft>\n <uxLayoutHorizontalRight *ngIf=\"config.customFooterContent.right\">\n <ux-button *ngFor=\"let button of config.customFooterContent.right.buttons\"\n type=\"{{ button.type }}\"\n styleClass=\"{{ button.styleClass }}\"\n typeClass=\"{{ button.typeClass }}\"\n iconClass=\"{{ button.iconClass }}\"\n [isOutline]=\"button.isOutline\"\n [isSecondary]=\"button.isSecondary\"\n [isSmall]=\"button.isSmall\"\n [isLarge]=\"button.isLarge\"\n [isBlock]=\"button.isBlock\"\n [isFlat]=\"button.isFlat\"\n [isDisabled]=\"button.isDisabled\"\n (click)=\"customFooterButtonClick(button)\">{{ button.label }}</ux-button>\n </uxLayoutHorizontalRight>\n </ux-layout-horizontal>\n </uxDynamicMessageBoxFooter>\n\n <ng-template [ngIf]=\"!config.customFooterContent\">\n <ng-template [ngIf]=\"!config.isMessageBox\">\n <button type=\"button\"\n class=\"ux-button ux-button--secondary\"\n [class.ux-button--with-label]=\"config.isShowActionIcons\"\n [disabled]=\"config.dismissActionDisabled\"\n (click)=\"onDismissActionClick($event)\">\n <span *ngIf=\"config.isShowActionIcons\" class=\"ux-button__icon {{config.dismissIconClass}}\"></span>\n {{ config.dismissLabel }}\n </button>\n <button type=\"button\"\n class=\"ux-button ux-button--primary\"\n [class.ux-button--with-label]=\"config.isShowActionIcons\"\n [disabled]=\"config.acceptActionDisabled\"\n (click)=\"onAcceptActionClick($event)\">\n <span *ngIf=\"config.isShowActionIcons\" class=\"ux-button__icon {{config.acceptIconClass}}\"></span>\n {{ config.acceptLabel }}\n </button>\n </ng-template>\n\n <ng-template [ngIf]=\"config.isMessageBox\">\n <ng-template [ngIf]=\"config.messageBoxType && config.messageBoxType === 'confirmation'\">\n <button type=\"button\"\n class=\"ux-button ux-button--secondary\"\n (click)=\"onClick(false)\">\n {{ config.dismissLabel }}\n </button>\n <button type=\"button\"\n class=\"ux-button ux-button--primary\"\n (click)=\"onClick(true)\">\n {{ config.acceptLabel }}\n </button>\n </ng-template>\n <ng-template [ngIf]=\"config.messageBoxType && config.messageBoxType === 'ok'\">\n <button type=\"button\" class=\"ux-button ux-button--secondary\" (click)=\"onClick(true)\">OK</button>\n </ng-template>\n </ng-template>\n </ng-template>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-backdrop show\" [style.display]=\"'block'\" (focus)=\"close($event)\"></div>\n", styles: [".ux-modal{inset:0;outline:0;overflow:hidden;position:fixed;z-index:var(--eui-base-z-index-modal)}.ux-modal__content{background-clip:padding-box;background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-10);border-radius:var(--eui-base-border-radius);display:flex;flex-direction:column;max-height:100%;outline:0;overflow:auto;pointer-events:auto;position:relative;width:100%;box-shadow:var(--eui-base-shadow-24)}.ux-modal__dialog{display:flex;flex-direction:column;height:100vh;justify-content:center;margin:1.75rem auto;margin-bottom:0;margin-top:0;max-width:50%;pointer-events:none;position:relative;width:auto}.ux-modal__header{align-items:center;border-bottom:1px solid var(--eui-base-color-grey-10);border-top-left-radius:var(--eui-border-radius-base);border-top-right-radius:var(--eui-border-radius-base);display:flex;justify-content:space-between;min-height:calc(4 * var(--eui-base-spacing-m));padding:var(--eui-base-spacing-s) var(--eui-base-spacing-m)}.ux-modal--draggable .ux-modal__header{cursor:move}.ux-modal__header-title{font-size:var(--eui-base-font-size-xl);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;font-weight:700}.ux-modal__body{flex:1 1 auto;overflow:auto;padding:var(--eui-base-spacing-m);position:relative}.ux-modal__body.ux-modal--no-padding{padding:0}.ux-modal__footer{background-color:var(--eui-base-color-grey-5);border-top:1px solid var(--eui-base-color-grey-10);justify-content:flex-end;padding:var(--eui-base-spacing-s);align-items:center;display:flex;width:100%}.ux-modal__footer--custom-alignment{display:block}.ux-modal__footer button:not(:last-child){margin-right:var(--eui-base-spacing-xs)}.ux-modal__header-close{background-color:transparent;border:none;box-shadow:none;color:var(--eui-base-color-grey-25);font-size:var(--eui-base-font-size-2xl);margin-right:calc(-1 * var(--eui-base-spacing-s));outline:0;padding:var(--eui-base-spacing-2xs) var(--eui-base-spacing-xs)}.ux-modal__header-close:hover{color:var(--eui-base-color-text)}.ux-modal__header-close:active,.ux-modal__header-close:focus{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:-2px;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.ux-modal__header-close.disabled{display:none}uxmodalheader{display:flex;width:100%}.ux-modal--small .ux-modal__dialog{max-width:33%}.ux-modal--large .ux-modal__dialog{max-width:75%}.ux-modal--full-screen .ux-modal__content{height:98%;margin:1.5%;width:97%}.ux-modal--full-screen .ux-modal__dialog{height:100%;max-height:100%;max-width:100%;width:100%}.ux-modal--full-height{max-height:100%}.ux-modal--full-height .ux-modal__dialog{height:100%}.ux-modal--full-height .ux-modal__content{height:95%}.ux-modal--full-height .ux-modal__body{overflow-x:hidden;overflow-y:scroll}.ux-modal--medium-height{max-height:100%}.ux-modal--medium-height .ux-modal__dialog{height:100%}.ux-modal--medium-height .ux-modal__content{height:50%}.ux-modal--medium-height .ux-modal__body{overflow-x:hidden;overflow-y:scroll}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-open .cdk-overlay-container{z-index:var(--eui-base-z-index-cdk-overlay-container)}.modal-backdrop{background-color:#00000080;height:100vh;left:0;opacity:0;position:fixed;top:0;transition:opacity .5s cubic-bezier(.25,.8,.25,1);width:100vw;z-index:var(--eui-base-z-index-modal-backdrop)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--eui-base-disabled-opacity)}@media screen and (max-width: 995px){.ux-modal__dialog,.ux-modal__dialog[style],.ux-modal--small .ux-modal__dialog,.ux-modal--big .ux-modal__dialog,.ux-modal--full-screen .ux-modal__dialog{margin-left:1.5%;max-width:100%!important;width:97%!important}}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i2.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(function () { return i3.UxButtonComponent; }), selector: "ux-button", inputs: ["type", "styleClass", "typeClass", "iconClass", "isOutline", "isSecondary", "isSmall", "isLarge", "isBlock", "isFlat", "isLineWrap", "tabindex", "ariaLabel", "isDisabled", "e2eAttr"] }, { kind: "component", type: i0.forwardRef(function () { return i4.UxLayoutHorizontalComponent; }), selector: "ux-layout-horizontal", inputs: ["styleClass", "e2eAttr"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.UxLayoutHorizontalLeftTagDirective; }), selector: "uxLayoutHorizontalLeft" }, { kind: "directive", type: i0.forwardRef(function () { return i4.UxLayoutHorizontalRightTagDirective; }), selector: "uxLayoutHorizontalRight" }, { kind: "directive", type: i0.forwardRef(function () { return i5.CdkTrapFocus; }), selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i0.forwardRef(function () { return i6.CdkDrag; }), selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i0.forwardRef(function () { return i6.CdkDragHandle; }), selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i0.forwardRef(function () { return i7.EuiIconSvgComponent; }), selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "directive", type: i0.forwardRef(function () { return UxDynamicModalFooterTagDirective; }), selector: "uxDynamicModalFooter" }, { kind: "directive", type: i0.forwardRef(function () { return UxDynamicMessageBoxFooterTagDirective; }), selector: "uxDynamicMessageBoxFooter" }], encapsulation: i0.ViewEncapsulation.None });
|
|
143
|
+
/** @nocollapse */ UxDynamicModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: UxDynamicModalComponent, selector: "ux-dynamic-modal", inputs: { e2eAttr: "e2eAttr" }, queries: [{ propertyName: "customFooterContent", first: true, predicate: i0.forwardRef(function () { return UxDynamicModalFooterTagDirective; }), descendants: true }, { propertyName: "customHeaderContent", first: true, predicate: i0.forwardRef(function () { return UxDynamicModalHeaderTagDirective; }), descendants: true }, { propertyName: "customMessageBoxFooterContent", first: true, predicate: i0.forwardRef(function () { return UxDynamicMessageBoxFooterTagDirective; }), descendants: true }], viewQueries: [{ propertyName: "uxModalEl", first: true, predicate: ["modal"], descendants: true }, { propertyName: "uxModalBody", first: true, predicate: ["uxmodalbody"], descendants: true }, { propertyName: "vcCloseButton", first: true, predicate: ["closeButton"], descendants: true }], ngImport: i0, template: "<div id=\"{{config.id}}\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\" #modal\n class=\"modal ux-modal {{ config.styleClass }} {{ stateClasses }} eui-u-anim\"\n role=\"dialog\"\n [class.eui-u-anim--slideInDown]=\"!config.isMessageBox\"\n [class.eui-u-anim--flipInY]=\"config.isMessageBox\"\n [class.ux-modal--full-height]=\"config.isSizeFullHeight\"\n [class.ux-modal--medium-height]=\"config.isSizeMediumHeight\"\n [class.ux-modal--draggable]=\"config.isDraggable\"\n [class.eui-u-anim--fast]=\"!config.isMessageBox\"\n [class.eui-u-anim--medium]=\"config.isMessageBox\"\n (keydown)=\"closeModalOnEscape($event)\"\n tabIndex=\"-1\"\n [style.display]=\"'block'\"\n attr.data-e2e=\"{{ e2eAttr }}\">\n\n <div class=\"modal-dialog ux-modal__dialog\" role=\"document\" [style.max-width]=\"config.customWidth\">\n <div class=\"modal-content ux-modal__content\" [class.ux-u-overflow-visible]=\"config.isOverflowVisible\" cdkDrag [cdkDragDisabled]=\"!config.isDraggable\">\n <div class=\"modal-header ux-modal__header\" cdkDragHandle>\n <ng-template [ngIf]=\"customHeaderContent\">\n <ng-content select=\"uxModalHeader\"></ng-content>\n </ng-template>\n <ng-template [ngIf]=\"!customHeaderContent\">\n <h5 class=\"modal-title ux-modal__header-title mt-1 mb-1\">{{ config.titleLabel }}</h5>\n </ng-template>\n <button *ngIf=\"config.isShowCloseButton\" #closeButton\n type=\"button\"\n class=\"ux-modal__header-close\"\n data-dismiss=\"modal\"\n aria-label=\"Close\"\n (click)=\"close($event)\">\n <eui-icon-svg icon=\"eui-ecl-close\"></eui-icon-svg>\n </button>\n </div>\n <div #uxmodalbody class=\"modal-body ux-modal__body {{ config.bodyStyleClass }}\"\n [class.ux-modal--no-padding]=\"config.hasNoBodyPadding\"\n [class.ux-u-overflow-visible]=\"config.isOverflowVisible\">\n <span [outerHTML]=\"config.content\" *ngIf=\"!config.isMessageBox\"></span>\n\n <div class=\"ux-message-box__body\" *ngIf=\"config.isMessageBox\">\n <div class=\"ux-message-box__body-icon\"></div>\n <div class=\"ux-message-box__body-content\">\n <span [outerHTML]=\"config.content\"></span>\n </div>\n </div>\n\n </div>\n\n <div *ngIf=\"config.isFooterVisible\" class=\"modal-footer ux-modal__footer {{ config.footerStyleClass }}\"\n [class.ux-modal__footer--custom-alignment]=\"config.customFooterContent\">\n\n <uxDynamicModalFooter *ngIf=\"config.customFooterContent && !config.isMessageBox\">\n <ux-layout-horizontal>\n <uxLayoutHorizontalLeft *ngIf=\"config.customFooterContent.left\">\n <ux-button *ngFor=\"let button of config.customFooterContent.left.buttons\"\n type=\"{{ button.type }}\"\n styleClass=\"{{ button.styleClass }}\"\n typeClass=\"{{ button.typeClass }}\"\n iconClass=\"{{ button.iconClass }}\"\n [isOutline]=\"button.isOutline\"\n [isSecondary]=\"button.isSecondary\"\n [isSmall]=\"button.isSmall\"\n [isLarge]=\"button.isLarge\"\n [isBlock]=\"button.isBlock\"\n [isFlat]=\"button.isFlat\"\n [isDisabled]=\"button.isDisabled\"\n (click)=\"customFooterButtonClick(button)\">{{ button.label }}</ux-button>\n </uxLayoutHorizontalLeft>\n <uxLayoutHorizontalRight *ngIf=\"config.customFooterContent.right\">\n <ux-button *ngFor=\"let button of config.customFooterContent.right.buttons\"\n type=\"{{ button.type }}\"\n styleClass=\"{{ button.styleClass }}\"\n typeClass=\"{{ button.typeClass }}\"\n iconClass=\"{{ button.iconClass }}\"\n [isOutline]=\"button.isOutline\"\n [isSecondary]=\"button.isSecondary\"\n [isSmall]=\"button.isSmall\"\n [isLarge]=\"button.isLarge\"\n [isBlock]=\"button.isBlock\"\n [isFlat]=\"button.isFlat\"\n [isDisabled]=\"button.isDisabled\"\n (click)=\"customFooterButtonClick(button)\">{{ button.label }}</ux-button>\n </uxLayoutHorizontalRight>\n </ux-layout-horizontal>\n </uxDynamicModalFooter>\n\n <uxDynamicMessageBoxFooter *ngIf=\"config.customFooterContent && config.isMessageBox\">\n <ux-layout-horizontal>\n <uxLayoutHorizontalLeft *ngIf=\"config.customFooterContent.left\">\n <ux-button *ngFor=\"let button of config.customFooterContent.left.buttons\"\n type=\"{{ button.type }}\"\n styleClass=\"{{ button.styleClass }}\"\n typeClass=\"{{ button.typeClass }}\"\n iconClass=\"{{ button.iconClass }}\"\n [isOutline]=\"button.isOutline\"\n [isSecondary]=\"button.isSecondary\"\n [isSmall]=\"button.isSmall\"\n [isLarge]=\"button.isLarge\"\n [isBlock]=\"button.isBlock\"\n [isFlat]=\"button.isFlat\"\n [isDisabled]=\"button.isDisabled\"\n (click)=\"customFooterButtonClick(button)\">{{ button.label }}</ux-button>\n </uxLayoutHorizontalLeft>\n <uxLayoutHorizontalRight *ngIf=\"config.customFooterContent.right\">\n <ux-button *ngFor=\"let button of config.customFooterContent.right.buttons\"\n type=\"{{ button.type }}\"\n styleClass=\"{{ button.styleClass }}\"\n typeClass=\"{{ button.typeClass }}\"\n iconClass=\"{{ button.iconClass }}\"\n [isOutline]=\"button.isOutline\"\n [isSecondary]=\"button.isSecondary\"\n [isSmall]=\"button.isSmall\"\n [isLarge]=\"button.isLarge\"\n [isBlock]=\"button.isBlock\"\n [isFlat]=\"button.isFlat\"\n [isDisabled]=\"button.isDisabled\"\n (click)=\"customFooterButtonClick(button)\">{{ button.label }}</ux-button>\n </uxLayoutHorizontalRight>\n </ux-layout-horizontal>\n </uxDynamicMessageBoxFooter>\n\n <ng-template [ngIf]=\"!config.customFooterContent\">\n <ng-template [ngIf]=\"!config.isMessageBox\">\n <button type=\"button\"\n class=\"ux-button ux-button--secondary\"\n [class.ux-button--with-label]=\"config.isShowActionIcons\"\n [disabled]=\"config.dismissActionDisabled\"\n (click)=\"onDismissActionClick($event)\">\n <span *ngIf=\"config.isShowActionIcons\" class=\"ux-button__icon {{config.dismissIconClass}}\"></span>\n {{ config.dismissLabel }}\n </button>\n <button type=\"button\"\n class=\"ux-button ux-button--primary\"\n [class.ux-button--with-label]=\"config.isShowActionIcons\"\n [disabled]=\"config.acceptActionDisabled\"\n (click)=\"onAcceptActionClick($event)\">\n <span *ngIf=\"config.isShowActionIcons\" class=\"ux-button__icon {{config.acceptIconClass}}\"></span>\n {{ config.acceptLabel }}\n </button>\n </ng-template>\n\n <ng-template [ngIf]=\"config.isMessageBox\">\n <ng-template [ngIf]=\"config.messageBoxType && config.messageBoxType === 'confirmation'\">\n <button type=\"button\"\n class=\"ux-button ux-button--secondary\"\n (click)=\"onClick(false)\">\n {{ config.dismissLabel }}\n </button>\n <button type=\"button\"\n class=\"ux-button ux-button--primary\"\n (click)=\"onClick(true)\">\n {{ config.acceptLabel }}\n </button>\n </ng-template>\n <ng-template [ngIf]=\"config.messageBoxType && config.messageBoxType === 'ok'\">\n <button type=\"button\" class=\"ux-button ux-button--secondary\" (click)=\"onClick(true)\">OK</button>\n </ng-template>\n </ng-template>\n </ng-template>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-backdrop show\" [style.display]=\"'block'\" (focus)=\"close($event)\"></div>\n", styles: [".ux-modal{inset:0;outline:0;overflow:hidden;position:fixed;z-index:var(--eui-base-z-index-modal)}.ux-modal__content{background-clip:padding-box;background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-10);border-radius:var(--eui-base-border-radius);display:flex;flex-direction:column;max-height:100%;outline:0;overflow:auto;pointer-events:auto;position:relative;width:100%;box-shadow:var(--eui-base-shadow-24)}.ux-modal__dialog{display:flex;flex-direction:column;height:100vh;justify-content:center;margin:1.75rem auto;margin-bottom:0;margin-top:0;max-width:50%;pointer-events:none;position:relative;width:auto}.ux-modal__header{align-items:center;border-bottom:1px solid var(--eui-base-color-grey-10);border-top-left-radius:var(--eui-border-radius-base);border-top-right-radius:var(--eui-border-radius-base);display:flex;justify-content:space-between;min-height:calc(4 * var(--eui-base-spacing-m));padding:var(--eui-base-spacing-s) var(--eui-base-spacing-m)}.ux-modal--draggable .ux-modal__header{cursor:move}.ux-modal__header-title{font-size:var(--eui-base-font-size-xl);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;font-weight:700}.ux-modal__body{flex:1 1 auto;overflow:auto;padding:var(--eui-base-spacing-m);position:relative}.ux-modal__body.ux-modal--no-padding{padding:0}.ux-modal__footer{background-color:var(--eui-base-color-grey-5);border-top:1px solid var(--eui-base-color-grey-10);justify-content:flex-end;padding:var(--eui-base-spacing-s);align-items:center;display:flex;width:100%}.ux-modal__footer--custom-alignment{display:block}.ux-modal__footer button:not(:last-child){margin-right:var(--eui-base-spacing-xs)}.ux-modal__header-close{background-color:transparent;border:none;box-shadow:none;color:var(--eui-base-color-grey-25);font-size:var(--eui-base-font-size-2xl);margin-right:calc(-1 * var(--eui-base-spacing-s));outline:0;padding:var(--eui-base-spacing-2xs) var(--eui-base-spacing-xs)}.ux-modal__header-close:hover{color:var(--eui-base-color-text)}.ux-modal__header-close:active,.ux-modal__header-close:focus{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:-2px;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.ux-modal__header-close.disabled{display:none}uxmodalheader{display:flex;width:100%}.ux-modal--small .ux-modal__dialog{max-width:33%}.ux-modal--large .ux-modal__dialog{max-width:75%}.ux-modal--full-screen .ux-modal__content{height:98%;margin:1.5%;width:97%}.ux-modal--full-screen .ux-modal__dialog{height:100%;max-height:100%;max-width:100%;width:100%}.ux-modal--full-height{max-height:100%}.ux-modal--full-height .ux-modal__dialog{height:100%}.ux-modal--full-height .ux-modal__content{height:95%}.ux-modal--full-height .ux-modal__body{overflow-x:hidden;overflow-y:scroll}.ux-modal--medium-height{max-height:100%}.ux-modal--medium-height .ux-modal__dialog{height:100%}.ux-modal--medium-height .ux-modal__content{height:50%}.ux-modal--medium-height .ux-modal__body{overflow-x:hidden;overflow-y:scroll}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-open .cdk-overlay-container{z-index:var(--eui-base-z-index-cdk-overlay-container)}.modal-backdrop{background-color:#00000080;height:100vh;left:0;opacity:0;position:fixed;top:0;transition:opacity .5s cubic-bezier(.25,.8,.25,1);width:100vw;z-index:var(--eui-base-z-index-modal-backdrop)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--eui-base-disabled-opacity)}@media screen and (max-width: 995px){.ux-modal__dialog,.ux-modal__dialog[style],.ux-modal--small .ux-modal__dialog,.ux-modal--big .ux-modal__dialog,.ux-modal--full-screen .ux-modal__dialog{margin-left:1.5%;max-width:100%!important;width:97%!important}}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return i2.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i2.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i0.forwardRef(function () { return i3.UxButtonComponent; }), selector: "ux-button", inputs: ["type", "styleClass", "typeClass", "iconClass", "isOutline", "isSecondary", "isSmall", "isLarge", "isBlock", "isFlat", "isLineWrap", "tabindex", "ariaLabel", "isDisabled", "e2eAttr"] }, { kind: "component", type: i0.forwardRef(function () { return i4.UxLayoutHorizontalComponent; }), selector: "ux-layout-horizontal", inputs: ["styleClass", "e2eAttr"] }, { kind: "directive", type: i0.forwardRef(function () { return i4.UxLayoutHorizontalLeftTagDirective; }), selector: "uxLayoutHorizontalLeft" }, { kind: "directive", type: i0.forwardRef(function () { return i4.UxLayoutHorizontalRightTagDirective; }), selector: "uxLayoutHorizontalRight" }, { kind: "directive", type: i0.forwardRef(function () { return i5.CdkTrapFocus; }), selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i0.forwardRef(function () { return i6.CdkDrag; }), selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i0.forwardRef(function () { return i6.CdkDragHandle; }), selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i0.forwardRef(function () { return i7.EuiIconSvgComponent; }), selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "directive", type: i0.forwardRef(function () { return UxDynamicModalFooterTagDirective; }), selector: "uxDynamicModalFooter" }, { kind: "directive", type: i0.forwardRef(function () { return UxDynamicMessageBoxFooterTagDirective; }), selector: "uxDynamicMessageBoxFooter" }], encapsulation: i0.ViewEncapsulation.None });
|
|
144
144
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: UxDynamicModalComponent, decorators: [{
|
|
145
145
|
type: Component,
|
|
146
|
-
args: [{ selector: 'ux-dynamic-modal', encapsulation: ViewEncapsulation.None, template: "<div id=\"{{config.id}}\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\" #modal\n class=\"modal ux-modal {{ config.styleClass }} {{ stateClasses }} eui-u-anim\"\n role=\"dialog\"\n [class.eui-u-anim--slideInDown]=\"!config.isMessageBox\"\n [class.eui-u-anim--flipInY]=\"config.isMessageBox\"\n [class.ux-modal--full-height]=\"config.isSizeFullHeight\"\n [class.ux-modal--medium-height]=\"config.isSizeMediumHeight\"\n [class.ux-modal--draggable]=\"config.isDraggable\"\n [class.eui-u-anim--fast]=\"!config.isMessageBox\"\n [class.eui-u-anim--medium]=\"config.isMessageBox\"\n (keydown)=\"closeModalOnEscape($event)\"\n tabIndex=\"-1\"\n [style.display]=\"'block'\"\n attr.data-e2e=\"{{ e2eAttr }}\">\n\n <div class=\"modal-dialog ux-modal__dialog\" role=\"document\" [style.max-width]=\"config.customWidth\">\n <div class=\"modal-content ux-modal__content\" [class.ux-u-overflow-visible]=\"config.isOverflowVisible\" cdkDrag [cdkDragDisabled]=\"!config.isDraggable\">\n <div class=\"modal-header ux-modal__header\" cdkDragHandle>\n <ng-template [ngIf]=\"customHeaderContent\">\n <ng-content select=\"uxModalHeader\"></ng-content>\n </ng-template>\n <ng-template [ngIf]=\"!customHeaderContent\">\n <h5 class=\"modal-title ux-modal__header-title\">{{ config.titleLabel }}</h5>\n </ng-template>\n <button *ngIf=\"config.isShowCloseButton\" #closeButton\n type=\"button\"\n class=\"ux-modal__header-close\"\n data-dismiss=\"modal\"\n aria-label=\"Close\"\n (click)=\"close($event)\">\n <eui-icon-svg icon=\"eui-close-m\"></eui-icon-svg>\n </button>\n </div>\n <div #uxmodalbody class=\"modal-body ux-modal__body {{ config.bodyStyleClass }}\"\n [class.ux-modal--no-padding]=\"config.hasNoBodyPadding\"\n [class.ux-u-overflow-visible]=\"config.isOverflowVisible\">\n <span [outerHTML]=\"config.content\" *ngIf=\"!config.isMessageBox\"></span>\n\n <div class=\"ux-message-box__body\" *ngIf=\"config.isMessageBox\">\n <div class=\"ux-message-box__body-icon\"></div>\n <div class=\"ux-message-box__body-content\">\n <span [outerHTML]=\"config.content\"></span>\n </div>\n </div>\n\n </div>\n\n <div *ngIf=\"config.isFooterVisible\" class=\"modal-footer ux-modal__footer {{ config.footerStyleClass }}\"\n [class.ux-modal__footer--custom-alignment]=\"config.customFooterContent\">\n\n <uxDynamicModalFooter *ngIf=\"config.customFooterContent && !config.isMessageBox\">\n <ux-layout-horizontal>\n <uxLayoutHorizontalLeft *ngIf=\"config.customFooterContent.left\">\n <ux-button *ngFor=\"let button of config.customFooterContent.left.buttons\"\n type=\"{{ button.type }}\"\n styleClass=\"{{ button.styleClass }}\"\n typeClass=\"{{ button.typeClass }}\"\n iconClass=\"{{ button.iconClass }}\"\n [isOutline]=\"button.isOutline\"\n [isSecondary]=\"button.isSecondary\"\n [isSmall]=\"button.isSmall\"\n [isLarge]=\"button.isLarge\"\n [isBlock]=\"button.isBlock\"\n [isFlat]=\"button.isFlat\"\n [isDisabled]=\"button.isDisabled\"\n (click)=\"customFooterButtonClick(button)\">{{ button.label }}</ux-button>\n </uxLayoutHorizontalLeft>\n <uxLayoutHorizontalRight *ngIf=\"config.customFooterContent.right\">\n <ux-button *ngFor=\"let button of config.customFooterContent.right.buttons\"\n type=\"{{ button.type }}\"\n styleClass=\"{{ button.styleClass }}\"\n typeClass=\"{{ button.typeClass }}\"\n iconClass=\"{{ button.iconClass }}\"\n [isOutline]=\"button.isOutline\"\n [isSecondary]=\"button.isSecondary\"\n [isSmall]=\"button.isSmall\"\n [isLarge]=\"button.isLarge\"\n [isBlock]=\"button.isBlock\"\n [isFlat]=\"button.isFlat\"\n [isDisabled]=\"button.isDisabled\"\n (click)=\"customFooterButtonClick(button)\">{{ button.label }}</ux-button>\n </uxLayoutHorizontalRight>\n </ux-layout-horizontal>\n </uxDynamicModalFooter>\n\n <uxDynamicMessageBoxFooter *ngIf=\"config.customFooterContent && config.isMessageBox\">\n <ux-layout-horizontal>\n <uxLayoutHorizontalLeft *ngIf=\"config.customFooterContent.left\">\n <ux-button *ngFor=\"let button of config.customFooterContent.left.buttons\"\n type=\"{{ button.type }}\"\n styleClass=\"{{ button.styleClass }}\"\n typeClass=\"{{ button.typeClass }}\"\n iconClass=\"{{ button.iconClass }}\"\n [isOutline]=\"button.isOutline\"\n [isSecondary]=\"button.isSecondary\"\n [isSmall]=\"button.isSmall\"\n [isLarge]=\"button.isLarge\"\n [isBlock]=\"button.isBlock\"\n [isFlat]=\"button.isFlat\"\n [isDisabled]=\"button.isDisabled\"\n (click)=\"customFooterButtonClick(button)\">{{ button.label }}</ux-button>\n </uxLayoutHorizontalLeft>\n <uxLayoutHorizontalRight *ngIf=\"config.customFooterContent.right\">\n <ux-button *ngFor=\"let button of config.customFooterContent.right.buttons\"\n type=\"{{ button.type }}\"\n styleClass=\"{{ button.styleClass }}\"\n typeClass=\"{{ button.typeClass }}\"\n iconClass=\"{{ button.iconClass }}\"\n [isOutline]=\"button.isOutline\"\n [isSecondary]=\"button.isSecondary\"\n [isSmall]=\"button.isSmall\"\n [isLarge]=\"button.isLarge\"\n [isBlock]=\"button.isBlock\"\n [isFlat]=\"button.isFlat\"\n [isDisabled]=\"button.isDisabled\"\n (click)=\"customFooterButtonClick(button)\">{{ button.label }}</ux-button>\n </uxLayoutHorizontalRight>\n </ux-layout-horizontal>\n </uxDynamicMessageBoxFooter>\n\n <ng-template [ngIf]=\"!config.customFooterContent\">\n <ng-template [ngIf]=\"!config.isMessageBox\">\n <button type=\"button\"\n class=\"ux-button ux-button--secondary\"\n [class.ux-button--with-label]=\"config.isShowActionIcons\"\n [disabled]=\"config.dismissActionDisabled\"\n (click)=\"onDismissActionClick($event)\">\n <span *ngIf=\"config.isShowActionIcons\" class=\"ux-button__icon {{config.dismissIconClass}}\"></span>\n {{ config.dismissLabel }}\n </button>\n <button type=\"button\"\n class=\"ux-button ux-button--primary\"\n [class.ux-button--with-label]=\"config.isShowActionIcons\"\n [disabled]=\"config.acceptActionDisabled\"\n (click)=\"onAcceptActionClick($event)\">\n <span *ngIf=\"config.isShowActionIcons\" class=\"ux-button__icon {{config.acceptIconClass}}\"></span>\n {{ config.acceptLabel }}\n </button>\n </ng-template>\n\n <ng-template [ngIf]=\"config.isMessageBox\">\n <ng-template [ngIf]=\"config.messageBoxType && config.messageBoxType === 'confirmation'\">\n <button type=\"button\"\n class=\"ux-button ux-button--secondary\"\n (click)=\"onClick(false)\">\n {{ config.dismissLabel }}\n </button>\n <button type=\"button\"\n class=\"ux-button ux-button--primary\"\n (click)=\"onClick(true)\">\n {{ config.acceptLabel }}\n </button>\n </ng-template>\n <ng-template [ngIf]=\"config.messageBoxType && config.messageBoxType === 'ok'\">\n <button type=\"button\" class=\"ux-button ux-button--secondary\" (click)=\"onClick(true)\">OK</button>\n </ng-template>\n </ng-template>\n </ng-template>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-backdrop show\" [style.display]=\"'block'\" (focus)=\"close($event)\"></div>\n", styles: [".ux-modal{inset:0;outline:0;overflow:hidden;position:fixed;z-index:var(--eui-base-z-index-modal)}.ux-modal__content{background-clip:padding-box;background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-10);border-radius:var(--eui-base-border-radius);display:flex;flex-direction:column;max-height:100%;outline:0;overflow:auto;pointer-events:auto;position:relative;width:100%;box-shadow:var(--eui-base-shadow-24)}.ux-modal__dialog{display:flex;flex-direction:column;height:100vh;justify-content:center;margin:1.75rem auto;margin-bottom:0;margin-top:0;max-width:50%;pointer-events:none;position:relative;width:auto}.ux-modal__header{align-items:center;border-bottom:1px solid var(--eui-base-color-grey-10);border-top-left-radius:var(--eui-border-radius-base);border-top-right-radius:var(--eui-border-radius-base);display:flex;justify-content:space-between;min-height:calc(4 * var(--eui-base-spacing-m));padding:var(--eui-base-spacing-s) var(--eui-base-spacing-m)}.ux-modal--draggable .ux-modal__header{cursor:move}.ux-modal__header-title{font-size:var(--eui-base-font-size-xl);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;font-weight:700}.ux-modal__body{flex:1 1 auto;overflow:auto;padding:var(--eui-base-spacing-m);position:relative}.ux-modal__body.ux-modal--no-padding{padding:0}.ux-modal__footer{background-color:var(--eui-base-color-grey-5);border-top:1px solid var(--eui-base-color-grey-10);justify-content:flex-end;padding:var(--eui-base-spacing-s);align-items:center;display:flex;width:100%}.ux-modal__footer--custom-alignment{display:block}.ux-modal__footer button:not(:last-child){margin-right:var(--eui-base-spacing-xs)}.ux-modal__header-close{background-color:transparent;border:none;box-shadow:none;color:var(--eui-base-color-grey-25);font-size:var(--eui-base-font-size-2xl);margin-right:calc(-1 * var(--eui-base-spacing-s));outline:0;padding:var(--eui-base-spacing-2xs) var(--eui-base-spacing-xs)}.ux-modal__header-close:hover{color:var(--eui-base-color-text)}.ux-modal__header-close:active,.ux-modal__header-close:focus{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:-2px;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.ux-modal__header-close.disabled{display:none}uxmodalheader{display:flex;width:100%}.ux-modal--small .ux-modal__dialog{max-width:33%}.ux-modal--large .ux-modal__dialog{max-width:75%}.ux-modal--full-screen .ux-modal__content{height:98%;margin:1.5%;width:97%}.ux-modal--full-screen .ux-modal__dialog{height:100%;max-height:100%;max-width:100%;width:100%}.ux-modal--full-height{max-height:100%}.ux-modal--full-height .ux-modal__dialog{height:100%}.ux-modal--full-height .ux-modal__content{height:95%}.ux-modal--full-height .ux-modal__body{overflow-x:hidden;overflow-y:scroll}.ux-modal--medium-height{max-height:100%}.ux-modal--medium-height .ux-modal__dialog{height:100%}.ux-modal--medium-height .ux-modal__content{height:50%}.ux-modal--medium-height .ux-modal__body{overflow-x:hidden;overflow-y:scroll}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-open .cdk-overlay-container{z-index:var(--eui-base-z-index-cdk-overlay-container)}.modal-backdrop{background-color:#00000080;height:100vh;left:0;opacity:0;position:fixed;top:0;transition:opacity .5s cubic-bezier(.25,.8,.25,1);width:100vw;z-index:var(--eui-base-z-index-modal-backdrop)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--eui-base-disabled-opacity)}@media screen and (max-width: 995px){.ux-modal__dialog,.ux-modal__dialog[style],.ux-modal--small .ux-modal__dialog,.ux-modal--big .ux-modal__dialog,.ux-modal--full-screen .ux-modal__dialog{margin-left:1.5%;max-width:100%!important;width:97%!important}}\n"] }]
|
|
146
|
+
args: [{ selector: 'ux-dynamic-modal', encapsulation: ViewEncapsulation.None, template: "<div id=\"{{config.id}}\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\" #modal\n class=\"modal ux-modal {{ config.styleClass }} {{ stateClasses }} eui-u-anim\"\n role=\"dialog\"\n [class.eui-u-anim--slideInDown]=\"!config.isMessageBox\"\n [class.eui-u-anim--flipInY]=\"config.isMessageBox\"\n [class.ux-modal--full-height]=\"config.isSizeFullHeight\"\n [class.ux-modal--medium-height]=\"config.isSizeMediumHeight\"\n [class.ux-modal--draggable]=\"config.isDraggable\"\n [class.eui-u-anim--fast]=\"!config.isMessageBox\"\n [class.eui-u-anim--medium]=\"config.isMessageBox\"\n (keydown)=\"closeModalOnEscape($event)\"\n tabIndex=\"-1\"\n [style.display]=\"'block'\"\n attr.data-e2e=\"{{ e2eAttr }}\">\n\n <div class=\"modal-dialog ux-modal__dialog\" role=\"document\" [style.max-width]=\"config.customWidth\">\n <div class=\"modal-content ux-modal__content\" [class.ux-u-overflow-visible]=\"config.isOverflowVisible\" cdkDrag [cdkDragDisabled]=\"!config.isDraggable\">\n <div class=\"modal-header ux-modal__header\" cdkDragHandle>\n <ng-template [ngIf]=\"customHeaderContent\">\n <ng-content select=\"uxModalHeader\"></ng-content>\n </ng-template>\n <ng-template [ngIf]=\"!customHeaderContent\">\n <h5 class=\"modal-title ux-modal__header-title mt-1 mb-1\">{{ config.titleLabel }}</h5>\n </ng-template>\n <button *ngIf=\"config.isShowCloseButton\" #closeButton\n type=\"button\"\n class=\"ux-modal__header-close\"\n data-dismiss=\"modal\"\n aria-label=\"Close\"\n (click)=\"close($event)\">\n <eui-icon-svg icon=\"eui-ecl-close\"></eui-icon-svg>\n </button>\n </div>\n <div #uxmodalbody class=\"modal-body ux-modal__body {{ config.bodyStyleClass }}\"\n [class.ux-modal--no-padding]=\"config.hasNoBodyPadding\"\n [class.ux-u-overflow-visible]=\"config.isOverflowVisible\">\n <span [outerHTML]=\"config.content\" *ngIf=\"!config.isMessageBox\"></span>\n\n <div class=\"ux-message-box__body\" *ngIf=\"config.isMessageBox\">\n <div class=\"ux-message-box__body-icon\"></div>\n <div class=\"ux-message-box__body-content\">\n <span [outerHTML]=\"config.content\"></span>\n </div>\n </div>\n\n </div>\n\n <div *ngIf=\"config.isFooterVisible\" class=\"modal-footer ux-modal__footer {{ config.footerStyleClass }}\"\n [class.ux-modal__footer--custom-alignment]=\"config.customFooterContent\">\n\n <uxDynamicModalFooter *ngIf=\"config.customFooterContent && !config.isMessageBox\">\n <ux-layout-horizontal>\n <uxLayoutHorizontalLeft *ngIf=\"config.customFooterContent.left\">\n <ux-button *ngFor=\"let button of config.customFooterContent.left.buttons\"\n type=\"{{ button.type }}\"\n styleClass=\"{{ button.styleClass }}\"\n typeClass=\"{{ button.typeClass }}\"\n iconClass=\"{{ button.iconClass }}\"\n [isOutline]=\"button.isOutline\"\n [isSecondary]=\"button.isSecondary\"\n [isSmall]=\"button.isSmall\"\n [isLarge]=\"button.isLarge\"\n [isBlock]=\"button.isBlock\"\n [isFlat]=\"button.isFlat\"\n [isDisabled]=\"button.isDisabled\"\n (click)=\"customFooterButtonClick(button)\">{{ button.label }}</ux-button>\n </uxLayoutHorizontalLeft>\n <uxLayoutHorizontalRight *ngIf=\"config.customFooterContent.right\">\n <ux-button *ngFor=\"let button of config.customFooterContent.right.buttons\"\n type=\"{{ button.type }}\"\n styleClass=\"{{ button.styleClass }}\"\n typeClass=\"{{ button.typeClass }}\"\n iconClass=\"{{ button.iconClass }}\"\n [isOutline]=\"button.isOutline\"\n [isSecondary]=\"button.isSecondary\"\n [isSmall]=\"button.isSmall\"\n [isLarge]=\"button.isLarge\"\n [isBlock]=\"button.isBlock\"\n [isFlat]=\"button.isFlat\"\n [isDisabled]=\"button.isDisabled\"\n (click)=\"customFooterButtonClick(button)\">{{ button.label }}</ux-button>\n </uxLayoutHorizontalRight>\n </ux-layout-horizontal>\n </uxDynamicModalFooter>\n\n <uxDynamicMessageBoxFooter *ngIf=\"config.customFooterContent && config.isMessageBox\">\n <ux-layout-horizontal>\n <uxLayoutHorizontalLeft *ngIf=\"config.customFooterContent.left\">\n <ux-button *ngFor=\"let button of config.customFooterContent.left.buttons\"\n type=\"{{ button.type }}\"\n styleClass=\"{{ button.styleClass }}\"\n typeClass=\"{{ button.typeClass }}\"\n iconClass=\"{{ button.iconClass }}\"\n [isOutline]=\"button.isOutline\"\n [isSecondary]=\"button.isSecondary\"\n [isSmall]=\"button.isSmall\"\n [isLarge]=\"button.isLarge\"\n [isBlock]=\"button.isBlock\"\n [isFlat]=\"button.isFlat\"\n [isDisabled]=\"button.isDisabled\"\n (click)=\"customFooterButtonClick(button)\">{{ button.label }}</ux-button>\n </uxLayoutHorizontalLeft>\n <uxLayoutHorizontalRight *ngIf=\"config.customFooterContent.right\">\n <ux-button *ngFor=\"let button of config.customFooterContent.right.buttons\"\n type=\"{{ button.type }}\"\n styleClass=\"{{ button.styleClass }}\"\n typeClass=\"{{ button.typeClass }}\"\n iconClass=\"{{ button.iconClass }}\"\n [isOutline]=\"button.isOutline\"\n [isSecondary]=\"button.isSecondary\"\n [isSmall]=\"button.isSmall\"\n [isLarge]=\"button.isLarge\"\n [isBlock]=\"button.isBlock\"\n [isFlat]=\"button.isFlat\"\n [isDisabled]=\"button.isDisabled\"\n (click)=\"customFooterButtonClick(button)\">{{ button.label }}</ux-button>\n </uxLayoutHorizontalRight>\n </ux-layout-horizontal>\n </uxDynamicMessageBoxFooter>\n\n <ng-template [ngIf]=\"!config.customFooterContent\">\n <ng-template [ngIf]=\"!config.isMessageBox\">\n <button type=\"button\"\n class=\"ux-button ux-button--secondary\"\n [class.ux-button--with-label]=\"config.isShowActionIcons\"\n [disabled]=\"config.dismissActionDisabled\"\n (click)=\"onDismissActionClick($event)\">\n <span *ngIf=\"config.isShowActionIcons\" class=\"ux-button__icon {{config.dismissIconClass}}\"></span>\n {{ config.dismissLabel }}\n </button>\n <button type=\"button\"\n class=\"ux-button ux-button--primary\"\n [class.ux-button--with-label]=\"config.isShowActionIcons\"\n [disabled]=\"config.acceptActionDisabled\"\n (click)=\"onAcceptActionClick($event)\">\n <span *ngIf=\"config.isShowActionIcons\" class=\"ux-button__icon {{config.acceptIconClass}}\"></span>\n {{ config.acceptLabel }}\n </button>\n </ng-template>\n\n <ng-template [ngIf]=\"config.isMessageBox\">\n <ng-template [ngIf]=\"config.messageBoxType && config.messageBoxType === 'confirmation'\">\n <button type=\"button\"\n class=\"ux-button ux-button--secondary\"\n (click)=\"onClick(false)\">\n {{ config.dismissLabel }}\n </button>\n <button type=\"button\"\n class=\"ux-button ux-button--primary\"\n (click)=\"onClick(true)\">\n {{ config.acceptLabel }}\n </button>\n </ng-template>\n <ng-template [ngIf]=\"config.messageBoxType && config.messageBoxType === 'ok'\">\n <button type=\"button\" class=\"ux-button ux-button--secondary\" (click)=\"onClick(true)\">OK</button>\n </ng-template>\n </ng-template>\n </ng-template>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-backdrop show\" [style.display]=\"'block'\" (focus)=\"close($event)\"></div>\n", styles: [".ux-modal{inset:0;outline:0;overflow:hidden;position:fixed;z-index:var(--eui-base-z-index-modal)}.ux-modal__content{background-clip:padding-box;background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-10);border-radius:var(--eui-base-border-radius);display:flex;flex-direction:column;max-height:100%;outline:0;overflow:auto;pointer-events:auto;position:relative;width:100%;box-shadow:var(--eui-base-shadow-24)}.ux-modal__dialog{display:flex;flex-direction:column;height:100vh;justify-content:center;margin:1.75rem auto;margin-bottom:0;margin-top:0;max-width:50%;pointer-events:none;position:relative;width:auto}.ux-modal__header{align-items:center;border-bottom:1px solid var(--eui-base-color-grey-10);border-top-left-radius:var(--eui-border-radius-base);border-top-right-radius:var(--eui-border-radius-base);display:flex;justify-content:space-between;min-height:calc(4 * var(--eui-base-spacing-m));padding:var(--eui-base-spacing-s) var(--eui-base-spacing-m)}.ux-modal--draggable .ux-modal__header{cursor:move}.ux-modal__header-title{font-size:var(--eui-base-font-size-xl);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;font-weight:700}.ux-modal__body{flex:1 1 auto;overflow:auto;padding:var(--eui-base-spacing-m);position:relative}.ux-modal__body.ux-modal--no-padding{padding:0}.ux-modal__footer{background-color:var(--eui-base-color-grey-5);border-top:1px solid var(--eui-base-color-grey-10);justify-content:flex-end;padding:var(--eui-base-spacing-s);align-items:center;display:flex;width:100%}.ux-modal__footer--custom-alignment{display:block}.ux-modal__footer button:not(:last-child){margin-right:var(--eui-base-spacing-xs)}.ux-modal__header-close{background-color:transparent;border:none;box-shadow:none;color:var(--eui-base-color-grey-25);font-size:var(--eui-base-font-size-2xl);margin-right:calc(-1 * var(--eui-base-spacing-s));outline:0;padding:var(--eui-base-spacing-2xs) var(--eui-base-spacing-xs)}.ux-modal__header-close:hover{color:var(--eui-base-color-text)}.ux-modal__header-close:active,.ux-modal__header-close:focus{outline:2px solid var(--eui-base-color-accessible-focus);outline-offset:-2px;-moz-outline-radius:var(--eui-base-border-radius);transition:outline .15s ease-in-out,border .15s ease-in-out}.ux-modal__header-close.disabled{display:none}uxmodalheader{display:flex;width:100%}.ux-modal--small .ux-modal__dialog{max-width:33%}.ux-modal--large .ux-modal__dialog{max-width:75%}.ux-modal--full-screen .ux-modal__content{height:98%;margin:1.5%;width:97%}.ux-modal--full-screen .ux-modal__dialog{height:100%;max-height:100%;max-width:100%;width:100%}.ux-modal--full-height{max-height:100%}.ux-modal--full-height .ux-modal__dialog{height:100%}.ux-modal--full-height .ux-modal__content{height:95%}.ux-modal--full-height .ux-modal__body{overflow-x:hidden;overflow-y:scroll}.ux-modal--medium-height{max-height:100%}.ux-modal--medium-height .ux-modal__dialog{height:100%}.ux-modal--medium-height .ux-modal__content{height:50%}.ux-modal--medium-height .ux-modal__body{overflow-x:hidden;overflow-y:scroll}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-open .cdk-overlay-container{z-index:var(--eui-base-z-index-cdk-overlay-container)}.modal-backdrop{background-color:#00000080;height:100vh;left:0;opacity:0;position:fixed;top:0;transition:opacity .5s cubic-bezier(.25,.8,.25,1);width:100vw;z-index:var(--eui-base-z-index-modal-backdrop)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--eui-base-disabled-opacity)}@media screen and (max-width: 995px){.ux-modal__dialog,.ux-modal__dialog[style],.ux-modal--small .ux-modal__dialog,.ux-modal--big .ux-modal__dialog,.ux-modal--full-screen .ux-modal__dialog{margin-left:1.5%;max-width:100%!important;width:97%!important}}\n"] }]
|
|
147
147
|
}], ctorParameters: function () { return [{ type: i8.UxDynamicModalConfig, decorators: [{
|
|
148
148
|
type: Inject,
|
|
149
149
|
args: [DYNAMIC_COMPONENT_CONFIG]
|
|
@@ -254,4 +254,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
|
|
|
254
254
|
],
|
|
255
255
|
}]
|
|
256
256
|
}] });
|
|
257
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtZHluYW1pYy1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9sZWdhY3kvdXgtZHluYW1pYy1tb2RhbC91eC1keW5hbWljLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xlZ2FjeS91eC1keW5hbWljLW1vZGFsL3V4LWR5bmFtaWMtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFFVCxZQUFZLEVBQ1osU0FBUyxFQUVULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFHUixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUl4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQWtCLE1BQU0sa0NBQWtDLENBQUM7QUFDM0YsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7O0FBUXpELE1BQU0sT0FBTyx1QkFBdUI7SUF5QmhDLFlBQ3NDLHdCQUE4QyxFQUN4RSx5QkFBb0Q7UUFBcEQsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQXpCdkQsWUFBTyxHQUFXLGtCQUFrQixDQUFDO1FBRXZD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LFxuICAgIENvbXBvbmVudCxcbiAgICBDb21wb25lbnRSZWYsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIE9uRGVzdHJveSxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEWU5BTUlDX0NPTVBPTkVOVF9DT05GSUcsIFV4RHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIERvbVBvcnRhbE91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgVXhEeW5hbWljTW9kYWxDb25maWcgfSBmcm9tICcuL3V4LWR5bmFtaWMtbW9kYWwuY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IFV4QnV0dG9uQ29tcG9uZW50TW9kdWxlLCBVeEJ1dHRvbkNvbmZpZyB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9sZWdhY3kvdXgtYnV0dG9uJztcbmltcG9ydCB7IFV4TGF5b3V0SG9yaXpvbnRhbE1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9sZWdhY3kvbGF5b3V0JztcbmltcG9ydCB7IFV4RHluYW1pY01vZGFsU2VydmljZSB9IGZyb20gJy4vdXgtZHluYW1pYy1tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEV1aUljb25Nb2R1bGUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLWljb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3V4LWR5bmFtaWMtbW9kYWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91eC1keW5hbWljLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBVeER5bmFtaWNNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBlMmVBdHRyOiBzdHJpbmcgPSAndXgtZHluYW1pYy1tb2RhbCc7XG5cbiAgICBwdWJsaWMgc3RhdGVDbGFzc2VzOiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgY29uZmlnOiBVeER5bmFtaWNNb2RhbENvbmZpZztcblxuICAgIEBWaWV3Q2hpbGQoJ21vZGFsJykgdXhNb2RhbEVsOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCd1eG1vZGFsYm9keScpIHV4TW9kYWxCb2R5OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCdjbG9zZUJ1dHRvbicpIHZjQ2xvc2VCdXR0b246IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IFV4RHluYW1pY01vZGFsRm9vdGVyVGFnRGlyZWN0aXZlKSlcbiAgICBjdXN0b21Gb290ZXJDb250ZW50OiBRdWVyeUxpc3Q8VXhEeW5hbWljTW9kYWxGb290ZXJUYWdEaXJlY3RpdmU+O1xuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBVeER5bmFtaWNNb2RhbEhlYWRlclRhZ0RpcmVjdGl2ZSkpXG4gICAgY3VzdG9tSGVhZGVyQ29udGVudDogUXVlcnlMaXN0PFV4RHluYW1pY01vZGFsSGVhZGVyVGFnRGlyZWN0aXZlPjtcbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gVXhEeW5hbWljTWVzc2FnZUJveEZvb3RlclRhZ0RpcmVjdGl2ZSkpXG4gICAgY3VzdG9tTWVzc2FnZUJveEZvb3RlckNvbnRlbnQ6IFF1ZXJ5TGlzdDxVeER5bmFtaWNNZXNzYWdlQm94Rm9vdGVyVGFnRGlyZWN0aXZlPjtcblxuICAgIHByaXZhdGUgaW5qZWN0ZWRDb21wb25lbnQ6IHtcbiAgICAgICAgcG9ydGFsSG9zdDogRG9tUG9ydGFsT3V0bGV0LFxuICAgICAgICBwb3J0YWw6IENvbXBvbmVudFBvcnRhbDxhbnk+LFxuICAgICAgICBwb3J0YWxDb21wb25lbnRJbnN0YW5jZTogQ29tcG9uZW50UmVmPGFueT4sXG4gICAgfSA9IG51bGw7XG4gICAgYW5pbWF0aW9uRW5kU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChEWU5BTUlDX0NPTVBPTkVOVF9DT05GSUcpIHV4RHluYW1pY0NvbXBvbmVudENvbmZpZzogVXhEeW5hbWljTW9kYWxDb25maWcsXG4gICAgICAgIHByaXZhdGUgdXhEeW5hbWljQ29tcG9uZW50U2VydmljZTogVXhEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSB1eER5bmFtaWNDb21wb25lbnRDb25maWc7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5pc1NpemVTbWFsbCkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNsYXNzZXMgPSAndXgtbW9kYWwtLXNtYWxsJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5pc1NpemVMYXJnZSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNsYXNzZXMgPSAndXgtbW9kYWwtLWxhcmdlJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5pc1NpemVGdWxsU2NyZWVuKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2xhc3NlcyA9ICd1eC1tb2RhbC0tZnVsbC1zY3JlZW4nO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmJvZHlJbmplY3RlZENvbXBvbmVudCAmJiB0aGlzLmNvbmZpZy5ib2R5SW5qZWN0ZWRDb21wb25lbnQuY29tcG9uZW50KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcblxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5jb25maWcuYm9keUluamVjdGVkQ29tcG9uZW50LmNvbmZpZywge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRhbEhvc3RSZWY6IHRoaXMuY29uZmlnWydwb3J0YWxIb3N0UmVmJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3J0YWxSZWY6IHRoaXMuY29uZmlnWydwb3J0YWxSZWYnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRhbENvbXBvbmVudEluc3RhbmNlUmVmOiB0aGlzLmNvbmZpZ1sncG9ydGFsQ29tcG9uZW50SW5zdGFuY2VSZWYnXSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZENvbXBvbmVudCA9IHRoaXMudXhEeW5hbWljQ29tcG9uZW50U2VydmljZS5hZGQodGhpcy5jb25maWcuYm9keUluamVjdGVkQ29tcG9uZW50LmNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51eE1vZGFsQm9keSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWcuYm9keUluamVjdGVkQ29tcG9uZW50LmNvbmZpZyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmplY3RlZENvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuY29uZmlnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRhbEhvc3RSZWY6IHRoaXMuaW5qZWN0ZWRDb21wb25lbnRbJ3BvcnRhbEhvc3QnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0YWxSZWY6IHRoaXMuaW5qZWN0ZWRDb21wb25lbnRbJ3BvcnRhbCddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRhbENvbXBvbmVudEluc3RhbmNlUmVmOiB0aGlzLmluamVjdGVkQ29tcG9uZW50Wydwb3J0YWxDb21wb25lbnRJbnN0YW5jZSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy52Y0Nsb3NlQnV0dG9uKSB7XG4gICAgICAgICAgICB0aGlzLnZjQ2xvc2VCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbW9kYWxFbCA9IHRoaXMudXhNb2RhbEVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuYW5pbWF0aW9uRW5kU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KG1vZGFsRWwsICdhbmltYXRpb25lbmQnKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLm9uQW5pbWF0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcub25BbmltYXRpb25FbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmFuaW1hdGlvbkVuZFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5hbmltYXRpb25FbmRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmluamVjdGVkQ29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLnV4RHluYW1pY0NvbXBvbmVudFNlcnZpY2UucmVtb3ZlKHRoaXMuaW5qZWN0ZWRDb21wb25lbnQucG9ydGFsSG9zdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSBtb2RhbCBmdW5jdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jb25maWcub25DbG9zZSh0aGlzLmNvbmZpZ1sncG9ydGFsSG9zdFJlZiddLCB0aGlzLmNvbmZpZ1sncG9ydGFsUmVmJ10pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIG1vZGFsIG9uIGVzY2FwZShrZXkgMjcpIHByZXNzXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlTW9kYWxPbkVzY2FwZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5jb25maWcuaXNDbG9zZU1vZGFsT25Fc2NhcGUpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDI3KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZShldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyIGJ5IHRoZSBtZXNzYWdlLWJveCB3aGVuIHVzZXIgY2xpY2sgb24gT0sgYnV0dG9uXG4gICAgICovXG4gICAgcHVibGljIG9uQWNjZXB0QWN0aW9uQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5jb25maWcuaXNIYW5kbGVDbG9zZU9uQWNjZXB0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5vbkNsb3NlKHRoaXMuY29uZmlnWydwb3J0YWxIb3N0UmVmJ10sIHRoaXMuY29uZmlnWydwb3J0YWxSZWYnXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb25maWcub25BY2NlcHQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLm9uQWNjZXB0KHRoaXMuY29uZmlnWydwb3J0YWxIb3N0UmVmJ10sIHRoaXMuY29uZmlnWydwb3J0YWxSZWYnXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb25maWcub25DbGljaykge1xuICAgICAgICAgICAgdGhpcy5jb25maWcub25DbGljayh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXIgYnkgdGhlIG1lc3NhZ2UtYm94IHdoZW4gdXNlciBjbGljayBvbiBOTyBidXR0b25cbiAgICAgKi9cbiAgICBwdWJsaWMgb25EaXNtaXNzQWN0aW9uQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5jb25maWcuaXNIYW5kbGVDbG9zZU9uRGlzbWlzcykge1xuICAgICAgICAgICAgdGhpcy5jb25maWcub25DbG9zZSh0aGlzLmNvbmZpZ1sncG9ydGFsSG9zdFJlZiddLCB0aGlzLmNvbmZpZ1sncG9ydGFsUmVmJ10pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLm9uRGlzbWlzcykge1xuICAgICAgICAgICAgdGhpcy5jb25maWcub25EaXNtaXNzKHRoaXMuY29uZmlnWydwb3J0YWxIb3N0UmVmJ10sIHRoaXMuY29uZmlnWydwb3J0YWxSZWYnXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb25maWcub25DbGljaykge1xuICAgICAgICAgICAgdGhpcy5jb25maWcub25DbGljayhmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyIGJ5IHRoZSBtZXNzYWdlLWJveCB3aGVuIHVzZXIgY2xpY2sgb24gYSBjdXN0b20gYnV0dG9ucyBkZWZpbmVkIGluIHRoZSBjb25maWdcbiAgICAgKi9cbiAgICBwdWJsaWMgY3VzdG9tRm9vdGVyQnV0dG9uQ2xpY2soYnV0dG9uOiBVeEJ1dHRvbkNvbmZpZykge1xuICAgICAgICBidXR0b24ub25DbGljayh0aGlzLmNvbmZpZ1sncG9ydGFsSG9zdFJlZiddLCB0aGlzLmNvbmZpZ1sncG9ydGFsUmVmJ10sIHRoaXMuY29uZmlnWydwb3J0YWxDb21wb25lbnRJbnN0YW5jZVJlZiddKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyIGJ5IHRoZSBtZXNzYWdlLWJveCB3aGVuIHVzZXIgY2xpY2sgb24gTk8gb3IgT0sgYnV0dG9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBvbkNsaWNrKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5vbkNsaWNrKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5vbkNsaWNrKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5vbkNsb3NlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5vbkNsb3NlKHRoaXMuY29uZmlnWydwb3J0YWxIb3N0UmVmJ10sIHRoaXMuY29uZmlnWydwb3J0YWxSZWYnXSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ3V4RHluYW1pY01vZGFsQm9keSd9KVxuZXhwb3J0IGNsYXNzIFV4RHluYW1pY01vZGFsQm9keVRhZ0RpcmVjdGl2ZSB7XG59XG5cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAndXhEeW5hbWljTW9kYWxGb290ZXInfSlcbmV4cG9ydCBjbGFzcyBVeER5bmFtaWNNb2RhbEZvb3RlclRhZ0RpcmVjdGl2ZSB7XG59XG5cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAndXhEeW5hbWljTW9kYWxIZWFkZXInfSlcbmV4cG9ydCBjbGFzcyBVeER5bmFtaWNNb2RhbEhlYWRlclRhZ0RpcmVjdGl2ZSB7XG59XG5cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAndXhEeW5hbWljTWVzc2FnZUJveEZvb3Rlcid9KVxuZXhwb3J0IGNsYXNzIFV4RHluYW1pY01lc3NhZ2VCb3hGb290ZXJUYWdEaXJlY3RpdmUge1xufVxuLyogZXNsaW50LWVuYWJsZSAqL1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBVeEJ1dHRvbkNvbXBvbmVudE1vZHVsZSxcbiAgICAgICAgVXhMYXlvdXRIb3Jpem9udGFsTW9kdWxlLFxuICAgICAgICBBMTF5TW9kdWxlLFxuICAgICAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICAgICAgRXVpSWNvbk1vZHVsZSxcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgVXhEeW5hbWljTW9kYWxDb21wb25lbnQsXG4gICAgICAgIFV4RHluYW1pY01vZGFsQm9keVRhZ0RpcmVjdGl2ZSxcbiAgICAgICAgVXhEeW5hbWljTW9kYWxGb290ZXJUYWdEaXJlY3RpdmUsXG4gICAgICAgIFV4RHluYW1pY01vZGFsSGVhZGVyVGFnRGlyZWN0aXZlLFxuICAgICAgICBVeER5bmFtaWNNZXNzYWdlQm94Rm9vdGVyVGFnRGlyZWN0aXZlLFxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIFV4RHluYW1pY01vZGFsQ29tcG9uZW50LFxuICAgICAgICBVeER5bmFtaWNNb2RhbEJvZHlUYWdEaXJlY3RpdmUsXG4gICAgICAgIFV4RHluYW1pY01vZGFsRm9vdGVyVGFnRGlyZWN0aXZlLFxuICAgICAgICBVeER5bmFtaWNNb2RhbEhlYWRlclRhZ0RpcmVjdGl2ZSxcbiAgICAgICAgVXhEeW5hbWljTWVzc2FnZUJveEZvb3RlclRhZ0RpcmVjdGl2ZSxcbiAgICBdLFxuICAgIGVudHJ5Q29tcG9uZW50czogW1xuICAgICAgICBVeER5bmFtaWNNb2RhbENvbXBvbmVudCxcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBVeER5bmFtaWNNb2RhbFNlcnZpY2UsXG4gICAgICAgIFV4RHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG4gICAgXSxcbn0pXG5cbmV4cG9ydCBjbGFzcyBVeER5bmFtaWNNb2RhbENvbXBvbmVudE1vZHVsZSB7XG59XG4iLCI8ZGl2IGlkPVwie3tjb25maWcuaWR9fVwiIGNka1RyYXBGb2N1cyBbY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiICNtb2RhbFxuICAgICBjbGFzcz1cIm1vZGFsIHV4LW1vZGFsIHt7IGNvbmZpZy5zdHlsZUNsYXNzIH19IHt7IHN0YXRlQ2xhc3NlcyB9fSBldWktdS1hbmltXCJcbiAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgIFtjbGFzcy5ldWktdS1hbmltLS1zbGlkZUluRG93bl09XCIhY29uZmlnLmlzTWVzc2FnZUJveFwiXG4gICAgIFtjbGFzcy5ldWktdS1hbmltLS1mbGlwSW5ZXT1cImNvbmZpZy5pc01lc3NhZ2VCb3hcIlxuICAgICBbY2xhc3MudXgtbW9kYWwtLWZ1bGwtaGVpZ2h0XT1cImNvbmZpZy5pc1NpemVGdWxsSGVpZ2h0XCJcbiAgICAgW2NsYXNzLnV4LW1vZGFsLS1tZWRpdW0taGVpZ2h0XT1cImNvbmZpZy5pc1NpemVNZWRpdW1IZWlnaHRcIlxuICAgICBbY2xhc3MudXgtbW9kYWwtLWRyYWdnYWJsZV09XCJjb25maWcuaXNEcmFnZ2FibGVcIlxuICAgICBbY2xhc3MuZXVpLXUtYW5pbS0tZmFzdF09XCIhY29uZmlnLmlzTWVzc2FnZUJveFwiXG4gICAgIFtjbGFzcy5ldWktdS1hbmltLS1tZWRpdW1dPVwiY29uZmlnLmlzTWVzc2FnZUJveFwiXG4gICAgIChrZXlkb3duKT1cImNsb3NlTW9kYWxPbkVzY2FwZSgkZXZlbnQpXCJcbiAgICAgdGFiSW5kZXg9XCItMVwiXG4gICAgIFtzdHlsZS5kaXNwbGF5XT1cIidibG9jaydcIlxuICAgICBhdHRyLmRhdGEtZTJlPVwie3sgZTJlQXR0ciB9fVwiPlxuXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyB1eC1tb2RhbF9fZGlhbG9nXCIgcm9sZT1cImRvY3VtZW50XCIgW3N0eWxlLm1heC13aWR0aF09XCJjb25maWcuY3VzdG9tV2lkdGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnQgdXgtbW9kYWxfX2NvbnRlbnRcIiBbY2xhc3MudXgtdS1vdmVyZmxvdy12aXNpYmxlXT1cImNvbmZpZy5pc092ZXJmbG93VmlzaWJsZVwiIGNka0RyYWcgW2Nka0RyYWdEaXNhYmxlZF09XCIhY29uZmlnLmlzRHJhZ2dhYmxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHV4LW1vZGFsX19oZWFkZXJcIiBjZGtEcmFnSGFuZGxlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJjdXN0b21IZWFkZXJDb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInV4TW9kYWxIZWFkZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiIWN1c3RvbUhlYWRlckNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGUgdXgtbW9kYWxfX2hlYWRlci10aXRsZVwiPnt7IGNvbmZpZy50aXRsZUxhYmVsIH19PC9oNT5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb25maWcuaXNTaG93Q2xvc2VCdXR0b25cIiAjY2xvc2VCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1eC1tb2RhbF9faGVhZGVyLWNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJldWktY2xvc2UtbVwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICN1eG1vZGFsYm9keSBjbGFzcz1cIm1vZGFsLWJvZHkgdXgtbW9kYWxfX2JvZHkge3sgY29uZmlnLmJvZHlTdHlsZUNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgW2NsYXNzLnV4LW1vZGFsLS1uby1wYWRkaW5nXT1cImNvbmZpZy5oYXNOb0JvZHlQYWRkaW5nXCJcbiAgICAgICAgICAgICAgICAgW2NsYXNzLnV4LXUtb3ZlcmZsb3ctdmlzaWJsZV09XCJjb25maWcuaXNPdmVyZmxvd1Zpc2libGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBbb3V0ZXJIVE1MXT1cImNvbmZpZy5jb250ZW50XCIgKm5nSWY9XCIhY29uZmlnLmlzTWVzc2FnZUJveFwiPjwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1eC1tZXNzYWdlLWJveF9fYm9keVwiICpuZ0lmPVwiY29uZmlnLmlzTWVzc2FnZUJveFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXgtbWVzc2FnZS1ib3hfX2JvZHktaWNvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXgtbWVzc2FnZS1ib3hfX2JvZHktY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW291dGVySFRNTF09XCJjb25maWcuY29udGVudFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLmlzRm9vdGVyVmlzaWJsZVwiIGNsYXNzPVwibW9kYWwtZm9vdGVyIHV4LW1vZGFsX19mb290ZXIge3sgY29uZmlnLmZvb3RlclN0eWxlQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICBbY2xhc3MudXgtbW9kYWxfX2Zvb3Rlci0tY3VzdG9tLWFsaWdubWVudF09XCJjb25maWcuY3VzdG9tRm9vdGVyQ29udGVudFwiPlxuXG4gICAgICAgICAgICAgICAgPHV4RHluYW1pY01vZGFsRm9vdGVyICpuZ0lmPVwiY29uZmlnLmN1c3RvbUZvb3RlckNvbnRlbnQgJiYgIWNvbmZpZy5pc01lc3NhZ2VCb3hcIj5cbiAgICAgICAgICAgICAgICAgICAgPHV4LWxheW91dC1ob3Jpem9udGFsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHV4TGF5b3V0SG9yaXpvbnRhbExlZnQgKm5nSWY9XCJjb25maWcuY3VzdG9tRm9vdGVyQ29udGVudC5sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHV4LWJ1dHRvbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGNvbmZpZy5jdXN0b21Gb290ZXJDb250ZW50LmxlZnQuYnV0dG9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwie3sgYnV0dG9uLnR5cGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInt7IGJ1dHRvbi5zdHlsZUNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVDbGFzcz1cInt7IGJ1dHRvbi50eXBlQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkNsYXNzPVwie3sgYnV0dG9uLmljb25DbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNPdXRsaW5lXT1cImJ1dHRvbi5pc091dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzU2Vjb25kYXJ5XT1cImJ1dHRvbi5pc1NlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNTbWFsbF09XCJidXR0b24uaXNTbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNMYXJnZV09XCJidXR0b24uaXNMYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNCbG9ja109XCJidXR0b24uaXNCbG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNGbGF0XT1cImJ1dHRvbi5pc0ZsYXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiYnV0dG9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1c3RvbUZvb3RlckJ1dHRvbkNsaWNrKGJ1dHRvbilcIj57eyBidXR0b24ubGFiZWwgfX08L3V4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdXhMYXlvdXRIb3Jpem9udGFsTGVmdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx1eExheW91dEhvcml6b250YWxSaWdodCAqbmdJZj1cImNvbmZpZy5jdXN0b21Gb290ZXJDb250ZW50LnJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHV4LWJ1dHRvbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGNvbmZpZy5jdXN0b21Gb290ZXJDb250ZW50LnJpZ2h0LmJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInt7IGJ1dHRvbi50eXBlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ7eyBidXR0b24uc3R5bGVDbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlQ2xhc3M9XCJ7eyBidXR0b24udHlwZUNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25DbGFzcz1cInt7IGJ1dHRvbi5pY29uQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzT3V0bGluZV09XCJidXR0b24uaXNPdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1NlY29uZGFyeV09XCJidXR0b24uaXNTZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzU21hbGxdPVwiYnV0dG9uLmlzU21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTGFyZ2VdPVwiYnV0dG9uLmlzTGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzQmxvY2tdPVwiYnV0dG9uLmlzQmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRmxhdF09XCJidXR0b24uaXNGbGF0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImJ1dHRvbi5pc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjdXN0b21Gb290ZXJCdXR0b25DbGljayhidXR0b24pXCI+e3sgYnV0dG9uLmxhYmVsIH19PC91eC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3V4TGF5b3V0SG9yaXpvbnRhbFJpZ2h0PlxuICAgICAgICAgICAgICAgICAgICA8L3V4LWxheW91dC1ob3Jpem9udGFsPlxuICAgICAgICAgICAgICAgIDwvdXhEeW5hbWljTW9kYWxGb290ZXI+XG5cbiAgICAgICAgICAgICAgICA8dXhEeW5hbWljTWVzc2FnZUJveEZvb3RlciAqbmdJZj1cImNvbmZpZy5jdXN0b21Gb290ZXJDb250ZW50ICYmIGNvbmZpZy5pc01lc3NhZ2VCb3hcIj5cbiAgICAgICAgICAgICAgICAgICAgPHV4LWxheW91dC1ob3Jpem9udGFsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHV4TGF5b3V0SG9yaXpvbnRhbExlZnQgKm5nSWY9XCJjb25maWcuY3VzdG9tRm9vdGVyQ29udGVudC5sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHV4LWJ1dHRvbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGNvbmZpZy5jdXN0b21Gb290ZXJDb250ZW50LmxlZnQuYnV0dG9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwie3sgYnV0dG9uLnR5cGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInt7IGJ1dHRvbi5zdHlsZUNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVDbGFzcz1cInt7IGJ1dHRvbi50eXBlQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkNsYXNzPVwie3sgYnV0dG9uLmljb25DbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNPdXRsaW5lXT1cImJ1dHRvbi5pc091dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzU2Vjb25kYXJ5XT1cImJ1dHRvbi5pc1NlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNTbWFsbF09XCJidXR0b24uaXNTbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNMYXJnZV09XCJidXR0b24uaXNMYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNCbG9ja109XCJidXR0b24uaXNCbG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNGbGF0XT1cImJ1dHRvbi5pc0ZsYXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiYnV0dG9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1c3RvbUZvb3RlckJ1dHRvbkNsaWNrKGJ1dHRvbilcIj57eyBidXR0b24ubGFiZWwgfX08L3V4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdXhMYXlvdXRIb3Jpem9udGFsTGVmdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx1eExheW91dEhvcml6b250YWxSaWdodCAqbmdJZj1cImNvbmZpZy5jdXN0b21Gb290ZXJDb250ZW50LnJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHV4LWJ1dHRvbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGNvbmZpZy5jdXN0b21Gb290ZXJDb250ZW50LnJpZ2h0LmJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInt7IGJ1dHRvbi50eXBlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ7eyBidXR0b24uc3R5bGVDbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlQ2xhc3M9XCJ7eyBidXR0b24udHlwZUNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25DbGFzcz1cInt7IGJ1dHRvbi5pY29uQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzT3V0bGluZV09XCJidXR0b24uaXNPdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1NlY29uZGFyeV09XCJidXR0b24uaXNTZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzU21hbGxdPVwiYnV0dG9uLmlzU21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTGFyZ2VdPVwiYnV0dG9uLmlzTGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzQmxvY2tdPVwiYnV0dG9uLmlzQmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRmxhdF09XCJidXR0b24uaXNGbGF0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImJ1dHRvbi5pc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjdXN0b21Gb290ZXJCdXR0b25DbGljayhidXR0b24pXCI+e3sgYnV0dG9uLmxhYmVsIH19PC91eC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3V4TGF5b3V0SG9yaXpvbnRhbFJpZ2h0PlxuICAgICAgICAgICAgICAgICAgICA8L3V4LWxheW91dC1ob3Jpem9udGFsPlxuICAgICAgICAgICAgICAgIDwvdXhEeW5hbWljTWVzc2FnZUJveEZvb3Rlcj5cblxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIhY29uZmlnLmN1c3RvbUZvb3RlckNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiFjb25maWcuaXNNZXNzYWdlQm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInV4LWJ1dHRvbiB1eC1idXR0b24tLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy51eC1idXR0b24tLXdpdGgtbGFiZWxdPVwiY29uZmlnLmlzU2hvd0FjdGlvbkljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbmZpZy5kaXNtaXNzQWN0aW9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EaXNtaXNzQWN0aW9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnLmlzU2hvd0FjdGlvbkljb25zXCIgY2xhc3M9XCJ1eC1idXR0b25fX2ljb24ge3tjb25maWcuZGlzbWlzc0ljb25DbGFzc319XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbmZpZy5kaXNtaXNzTGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1eC1idXR0b24gdXgtYnV0dG9uLS1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnV4LWJ1dHRvbi0td2l0aC1sYWJlbF09XCJjb25maWcuaXNTaG93QWN0aW9uSWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlnLmFjY2VwdEFjdGlvbkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWNjZXB0QWN0aW9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnLmlzU2hvd0FjdGlvbkljb25zXCIgY2xhc3M9XCJ1eC1idXR0b25fX2ljb24ge3tjb25maWcuYWNjZXB0SWNvbkNsYXNzfX1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29uZmlnLmFjY2VwdExhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiY29uZmlnLmlzTWVzc2FnZUJveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImNvbmZpZy5tZXNzYWdlQm94VHlwZSAmJiBjb25maWcubWVzc2FnZUJveFR5cGUgPT09ICdjb25maXJtYXRpb24nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidXgtYnV0dG9uIHV4LWJ1dHRvbi0tc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrKGZhbHNlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb25maWcuZGlzbWlzc0xhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidXgtYnV0dG9uIHV4LWJ1dHRvbi0tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGljayh0cnVlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb25maWcuYWNjZXB0TGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiY29uZmlnLm1lc3NhZ2VCb3hUeXBlICYmIGNvbmZpZy5tZXNzYWdlQm94VHlwZSA9PT0gJ29rJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidXgtYnV0dG9uIHV4LWJ1dHRvbi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm9uQ2xpY2sodHJ1ZSlcIj5PSzwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtYmFja2Ryb3Agc2hvd1wiIFtzdHlsZS5kaXNwbGF5XT1cIidibG9jaydcIiAoZm9jdXMpPVwiY2xvc2UoJGV2ZW50KVwiPjwvZGl2PlxuIl19
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtZHluYW1pYy1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9sZWdhY3kvdXgtZHluYW1pYy1tb2RhbC91eC1keW5hbWljLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xlZ2FjeS91eC1keW5hbWljLW1vZGFsL3V4LWR5bmFtaWMtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFFVCxZQUFZLEVBQ1osU0FBUyxFQUVULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFHUixTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUl4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQWtCLE1BQU0sa0NBQWtDLENBQUM7QUFDM0YsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7O0FBUXpELE1BQU0sT0FBTyx1QkFBdUI7SUF5QmhDLFlBQ3NDLHdCQUE4QyxFQUN4RSx5QkFBb0Q7UUFBcEQsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQXpCdkQsWUFBTyxHQUFXLGtCQUFrQixDQUFDO1FBRXZD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LFxuICAgIENvbXBvbmVudCxcbiAgICBDb21wb25lbnRSZWYsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIE9uRGVzdHJveSxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEWU5BTUlDX0NPTVBPTkVOVF9DT05GSUcsIFV4RHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIERvbVBvcnRhbE91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgVXhEeW5hbWljTW9kYWxDb25maWcgfSBmcm9tICcuL3V4LWR5bmFtaWMtbW9kYWwuY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IFV4QnV0dG9uQ29tcG9uZW50TW9kdWxlLCBVeEJ1dHRvbkNvbmZpZyB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9sZWdhY3kvdXgtYnV0dG9uJztcbmltcG9ydCB7IFV4TGF5b3V0SG9yaXpvbnRhbE1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9sZWdhY3kvbGF5b3V0JztcbmltcG9ydCB7IFV4RHluYW1pY01vZGFsU2VydmljZSB9IGZyb20gJy4vdXgtZHluYW1pYy1tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEV1aUljb25Nb2R1bGUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLWljb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3V4LWR5bmFtaWMtbW9kYWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91eC1keW5hbWljLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBVeER5bmFtaWNNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICBASW5wdXQoKSBlMmVBdHRyOiBzdHJpbmcgPSAndXgtZHluYW1pYy1tb2RhbCc7XG5cbiAgICBwdWJsaWMgc3RhdGVDbGFzc2VzOiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgY29uZmlnOiBVeER5bmFtaWNNb2RhbENvbmZpZztcblxuICAgIEBWaWV3Q2hpbGQoJ21vZGFsJykgdXhNb2RhbEVsOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCd1eG1vZGFsYm9keScpIHV4TW9kYWxCb2R5OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCdjbG9zZUJ1dHRvbicpIHZjQ2xvc2VCdXR0b246IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IFV4RHluYW1pY01vZGFsRm9vdGVyVGFnRGlyZWN0aXZlKSlcbiAgICBjdXN0b21Gb290ZXJDb250ZW50OiBRdWVyeUxpc3Q8VXhEeW5hbWljTW9kYWxGb290ZXJUYWdEaXJlY3RpdmU+O1xuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBVeER5bmFtaWNNb2RhbEhlYWRlclRhZ0RpcmVjdGl2ZSkpXG4gICAgY3VzdG9tSGVhZGVyQ29udGVudDogUXVlcnlMaXN0PFV4RHluYW1pY01vZGFsSGVhZGVyVGFnRGlyZWN0aXZlPjtcbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gVXhEeW5hbWljTWVzc2FnZUJveEZvb3RlclRhZ0RpcmVjdGl2ZSkpXG4gICAgY3VzdG9tTWVzc2FnZUJveEZvb3RlckNvbnRlbnQ6IFF1ZXJ5TGlzdDxVeER5bmFtaWNNZXNzYWdlQm94Rm9vdGVyVGFnRGlyZWN0aXZlPjtcblxuICAgIHByaXZhdGUgaW5qZWN0ZWRDb21wb25lbnQ6IHtcbiAgICAgICAgcG9ydGFsSG9zdDogRG9tUG9ydGFsT3V0bGV0LFxuICAgICAgICBwb3J0YWw6IENvbXBvbmVudFBvcnRhbDxhbnk+LFxuICAgICAgICBwb3J0YWxDb21wb25lbnRJbnN0YW5jZTogQ29tcG9uZW50UmVmPGFueT4sXG4gICAgfSA9IG51bGw7XG4gICAgYW5pbWF0aW9uRW5kU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChEWU5BTUlDX0NPTVBPTkVOVF9DT05GSUcpIHV4RHluYW1pY0NvbXBvbmVudENvbmZpZzogVXhEeW5hbWljTW9kYWxDb25maWcsXG4gICAgICAgIHByaXZhdGUgdXhEeW5hbWljQ29tcG9uZW50U2VydmljZTogVXhEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSB1eER5bmFtaWNDb21wb25lbnRDb25maWc7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5pc1NpemVTbWFsbCkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNsYXNzZXMgPSAndXgtbW9kYWwtLXNtYWxsJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5pc1NpemVMYXJnZSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNsYXNzZXMgPSAndXgtbW9kYWwtLWxhcmdlJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5pc1NpemVGdWxsU2NyZWVuKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2xhc3NlcyA9ICd1eC1tb2RhbC0tZnVsbC1zY3JlZW4nO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmJvZHlJbmplY3RlZENvbXBvbmVudCAmJiB0aGlzLmNvbmZpZy5ib2R5SW5qZWN0ZWRDb21wb25lbnQuY29tcG9uZW50KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcblxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5jb25maWcuYm9keUluamVjdGVkQ29tcG9uZW50LmNvbmZpZywge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRhbEhvc3RSZWY6IHRoaXMuY29uZmlnWydwb3J0YWxIb3N0UmVmJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3J0YWxSZWY6IHRoaXMuY29uZmlnWydwb3J0YWxSZWYnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRhbENvbXBvbmVudEluc3RhbmNlUmVmOiB0aGlzLmNvbmZpZ1sncG9ydGFsQ29tcG9uZW50SW5zdGFuY2VSZWYnXSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZENvbXBvbmVudCA9IHRoaXMudXhEeW5hbWljQ29tcG9uZW50U2VydmljZS5hZGQodGhpcy5jb25maWcuYm9keUluamVjdGVkQ29tcG9uZW50LmNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51eE1vZGFsQm9keSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWcuYm9keUluamVjdGVkQ29tcG9uZW50LmNvbmZpZyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmplY3RlZENvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuY29uZmlnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRhbEhvc3RSZWY6IHRoaXMuaW5qZWN0ZWRDb21wb25lbnRbJ3BvcnRhbEhvc3QnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0YWxSZWY6IHRoaXMuaW5qZWN0ZWRDb21wb25lbnRbJ3BvcnRhbCddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRhbENvbXBvbmVudEluc3RhbmNlUmVmOiB0aGlzLmluamVjdGVkQ29tcG9uZW50Wydwb3J0YWxDb21wb25lbnRJbnN0YW5jZSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy52Y0Nsb3NlQnV0dG9uKSB7XG4gICAgICAgICAgICB0aGlzLnZjQ2xvc2VCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbW9kYWxFbCA9IHRoaXMudXhNb2RhbEVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuYW5pbWF0aW9uRW5kU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KG1vZGFsRWwsICdhbmltYXRpb25lbmQnKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLm9uQW5pbWF0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcub25BbmltYXRpb25FbmQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmFuaW1hdGlvbkVuZFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5hbmltYXRpb25FbmRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmluamVjdGVkQ29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLnV4RHluYW1pY0NvbXBvbmVudFNlcnZpY2UucmVtb3ZlKHRoaXMuaW5qZWN0ZWRDb21wb25lbnQucG9ydGFsSG9zdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSBtb2RhbCBmdW5jdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jb25maWcub25DbG9zZSh0aGlzLmNvbmZpZ1sncG9ydGFsSG9zdFJlZiddLCB0aGlzLmNvbmZpZ1sncG9ydGFsUmVmJ10pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIG1vZGFsIG9uIGVzY2FwZShrZXkgMjcpIHByZXNzXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlTW9kYWxPbkVzY2FwZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5jb25maWcuaXNDbG9zZU1vZGFsT25Fc2NhcGUpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDI3KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZShldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyIGJ5IHRoZSBtZXNzYWdlLWJveCB3aGVuIHVzZXIgY2xpY2sgb24gT0sgYnV0dG9uXG4gICAgICovXG4gICAgcHVibGljIG9uQWNjZXB0QWN0aW9uQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5jb25maWcuaXNIYW5kbGVDbG9zZU9uQWNjZXB0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5vbkNsb3NlKHRoaXMuY29uZmlnWydwb3J0YWxIb3N0UmVmJ10sIHRoaXMuY29uZmlnWydwb3J0YWxSZWYnXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb25maWcub25BY2NlcHQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLm9uQWNjZXB0KHRoaXMuY29uZmlnWydwb3J0YWxIb3N0UmVmJ10sIHRoaXMuY29uZmlnWydwb3J0YWxSZWYnXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb25maWcub25DbGljaykge1xuICAgICAgICAgICAgdGhpcy5jb25maWcub25DbGljayh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXIgYnkgdGhlIG1lc3NhZ2UtYm94IHdoZW4gdXNlciBjbGljayBvbiBOTyBidXR0b25cbiAgICAgKi9cbiAgICBwdWJsaWMgb25EaXNtaXNzQWN0aW9uQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5jb25maWcuaXNIYW5kbGVDbG9zZU9uRGlzbWlzcykge1xuICAgICAgICAgICAgdGhpcy5jb25maWcub25DbG9zZSh0aGlzLmNvbmZpZ1sncG9ydGFsSG9zdFJlZiddLCB0aGlzLmNvbmZpZ1sncG9ydGFsUmVmJ10pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLm9uRGlzbWlzcykge1xuICAgICAgICAgICAgdGhpcy5jb25maWcub25EaXNtaXNzKHRoaXMuY29uZmlnWydwb3J0YWxIb3N0UmVmJ10sIHRoaXMuY29uZmlnWydwb3J0YWxSZWYnXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb25maWcub25DbGljaykge1xuICAgICAgICAgICAgdGhpcy5jb25maWcub25DbGljayhmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyIGJ5IHRoZSBtZXNzYWdlLWJveCB3aGVuIHVzZXIgY2xpY2sgb24gYSBjdXN0b20gYnV0dG9ucyBkZWZpbmVkIGluIHRoZSBjb25maWdcbiAgICAgKi9cbiAgICBwdWJsaWMgY3VzdG9tRm9vdGVyQnV0dG9uQ2xpY2soYnV0dG9uOiBVeEJ1dHRvbkNvbmZpZykge1xuICAgICAgICBidXR0b24ub25DbGljayh0aGlzLmNvbmZpZ1sncG9ydGFsSG9zdFJlZiddLCB0aGlzLmNvbmZpZ1sncG9ydGFsUmVmJ10sIHRoaXMuY29uZmlnWydwb3J0YWxDb21wb25lbnRJbnN0YW5jZVJlZiddKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyIGJ5IHRoZSBtZXNzYWdlLWJveCB3aGVuIHVzZXIgY2xpY2sgb24gTk8gb3IgT0sgYnV0dG9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBvbkNsaWNrKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5vbkNsaWNrKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5vbkNsaWNrKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5vbkNsb3NlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5vbkNsb3NlKHRoaXMuY29uZmlnWydwb3J0YWxIb3N0UmVmJ10sIHRoaXMuY29uZmlnWydwb3J0YWxSZWYnXSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5ARGlyZWN0aXZlKHtzZWxlY3RvcjogJ3V4RHluYW1pY01vZGFsQm9keSd9KVxuZXhwb3J0IGNsYXNzIFV4RHluYW1pY01vZGFsQm9keVRhZ0RpcmVjdGl2ZSB7XG59XG5cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAndXhEeW5hbWljTW9kYWxGb290ZXInfSlcbmV4cG9ydCBjbGFzcyBVeER5bmFtaWNNb2RhbEZvb3RlclRhZ0RpcmVjdGl2ZSB7XG59XG5cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAndXhEeW5hbWljTW9kYWxIZWFkZXInfSlcbmV4cG9ydCBjbGFzcyBVeER5bmFtaWNNb2RhbEhlYWRlclRhZ0RpcmVjdGl2ZSB7XG59XG5cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAndXhEeW5hbWljTWVzc2FnZUJveEZvb3Rlcid9KVxuZXhwb3J0IGNsYXNzIFV4RHluYW1pY01lc3NhZ2VCb3hGb290ZXJUYWdEaXJlY3RpdmUge1xufVxuLyogZXNsaW50LWVuYWJsZSAqL1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBVeEJ1dHRvbkNvbXBvbmVudE1vZHVsZSxcbiAgICAgICAgVXhMYXlvdXRIb3Jpem9udGFsTW9kdWxlLFxuICAgICAgICBBMTF5TW9kdWxlLFxuICAgICAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICAgICAgRXVpSWNvbk1vZHVsZSxcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgVXhEeW5hbWljTW9kYWxDb21wb25lbnQsXG4gICAgICAgIFV4RHluYW1pY01vZGFsQm9keVRhZ0RpcmVjdGl2ZSxcbiAgICAgICAgVXhEeW5hbWljTW9kYWxGb290ZXJUYWdEaXJlY3RpdmUsXG4gICAgICAgIFV4RHluYW1pY01vZGFsSGVhZGVyVGFnRGlyZWN0aXZlLFxuICAgICAgICBVeER5bmFtaWNNZXNzYWdlQm94Rm9vdGVyVGFnRGlyZWN0aXZlLFxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIFV4RHluYW1pY01vZGFsQ29tcG9uZW50LFxuICAgICAgICBVeER5bmFtaWNNb2RhbEJvZHlUYWdEaXJlY3RpdmUsXG4gICAgICAgIFV4RHluYW1pY01vZGFsRm9vdGVyVGFnRGlyZWN0aXZlLFxuICAgICAgICBVeER5bmFtaWNNb2RhbEhlYWRlclRhZ0RpcmVjdGl2ZSxcbiAgICAgICAgVXhEeW5hbWljTWVzc2FnZUJveEZvb3RlclRhZ0RpcmVjdGl2ZSxcbiAgICBdLFxuICAgIGVudHJ5Q29tcG9uZW50czogW1xuICAgICAgICBVeER5bmFtaWNNb2RhbENvbXBvbmVudCxcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBVeER5bmFtaWNNb2RhbFNlcnZpY2UsXG4gICAgICAgIFV4RHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG4gICAgXSxcbn0pXG5cbmV4cG9ydCBjbGFzcyBVeER5bmFtaWNNb2RhbENvbXBvbmVudE1vZHVsZSB7XG59XG4iLCI8ZGl2IGlkPVwie3tjb25maWcuaWR9fVwiIGNka1RyYXBGb2N1cyBbY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiICNtb2RhbFxuICAgICBjbGFzcz1cIm1vZGFsIHV4LW1vZGFsIHt7IGNvbmZpZy5zdHlsZUNsYXNzIH19IHt7IHN0YXRlQ2xhc3NlcyB9fSBldWktdS1hbmltXCJcbiAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgIFtjbGFzcy5ldWktdS1hbmltLS1zbGlkZUluRG93bl09XCIhY29uZmlnLmlzTWVzc2FnZUJveFwiXG4gICAgIFtjbGFzcy5ldWktdS1hbmltLS1mbGlwSW5ZXT1cImNvbmZpZy5pc01lc3NhZ2VCb3hcIlxuICAgICBbY2xhc3MudXgtbW9kYWwtLWZ1bGwtaGVpZ2h0XT1cImNvbmZpZy5pc1NpemVGdWxsSGVpZ2h0XCJcbiAgICAgW2NsYXNzLnV4LW1vZGFsLS1tZWRpdW0taGVpZ2h0XT1cImNvbmZpZy5pc1NpemVNZWRpdW1IZWlnaHRcIlxuICAgICBbY2xhc3MudXgtbW9kYWwtLWRyYWdnYWJsZV09XCJjb25maWcuaXNEcmFnZ2FibGVcIlxuICAgICBbY2xhc3MuZXVpLXUtYW5pbS0tZmFzdF09XCIhY29uZmlnLmlzTWVzc2FnZUJveFwiXG4gICAgIFtjbGFzcy5ldWktdS1hbmltLS1tZWRpdW1dPVwiY29uZmlnLmlzTWVzc2FnZUJveFwiXG4gICAgIChrZXlkb3duKT1cImNsb3NlTW9kYWxPbkVzY2FwZSgkZXZlbnQpXCJcbiAgICAgdGFiSW5kZXg9XCItMVwiXG4gICAgIFtzdHlsZS5kaXNwbGF5XT1cIidibG9jaydcIlxuICAgICBhdHRyLmRhdGEtZTJlPVwie3sgZTJlQXR0ciB9fVwiPlxuXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyB1eC1tb2RhbF9fZGlhbG9nXCIgcm9sZT1cImRvY3VtZW50XCIgW3N0eWxlLm1heC13aWR0aF09XCJjb25maWcuY3VzdG9tV2lkdGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnQgdXgtbW9kYWxfX2NvbnRlbnRcIiBbY2xhc3MudXgtdS1vdmVyZmxvdy12aXNpYmxlXT1cImNvbmZpZy5pc092ZXJmbG93VmlzaWJsZVwiIGNka0RyYWcgW2Nka0RyYWdEaXNhYmxlZF09XCIhY29uZmlnLmlzRHJhZ2dhYmxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHV4LW1vZGFsX19oZWFkZXJcIiBjZGtEcmFnSGFuZGxlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJjdXN0b21IZWFkZXJDb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInV4TW9kYWxIZWFkZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiIWN1c3RvbUhlYWRlckNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGUgdXgtbW9kYWxfX2hlYWRlci10aXRsZSBtdC0xIG1iLTFcIj57eyBjb25maWcudGl0bGVMYWJlbCB9fTwvaDU+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29uZmlnLmlzU2hvd0Nsb3NlQnV0dG9uXCIgI2Nsb3NlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidXgtbW9kYWxfX2hlYWRlci1jbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwiZXVpLWVjbC1jbG9zZVwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICN1eG1vZGFsYm9keSBjbGFzcz1cIm1vZGFsLWJvZHkgdXgtbW9kYWxfX2JvZHkge3sgY29uZmlnLmJvZHlTdHlsZUNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgW2NsYXNzLnV4LW1vZGFsLS1uby1wYWRkaW5nXT1cImNvbmZpZy5oYXNOb0JvZHlQYWRkaW5nXCJcbiAgICAgICAgICAgICAgICAgW2NsYXNzLnV4LXUtb3ZlcmZsb3ctdmlzaWJsZV09XCJjb25maWcuaXNPdmVyZmxvd1Zpc2libGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBbb3V0ZXJIVE1MXT1cImNvbmZpZy5jb250ZW50XCIgKm5nSWY9XCIhY29uZmlnLmlzTWVzc2FnZUJveFwiPjwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1eC1tZXNzYWdlLWJveF9fYm9keVwiICpuZ0lmPVwiY29uZmlnLmlzTWVzc2FnZUJveFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXgtbWVzc2FnZS1ib3hfX2JvZHktaWNvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXgtbWVzc2FnZS1ib3hfX2JvZHktY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW291dGVySFRNTF09XCJjb25maWcuY29udGVudFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLmlzRm9vdGVyVmlzaWJsZVwiIGNsYXNzPVwibW9kYWwtZm9vdGVyIHV4LW1vZGFsX19mb290ZXIge3sgY29uZmlnLmZvb3RlclN0eWxlQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICBbY2xhc3MudXgtbW9kYWxfX2Zvb3Rlci0tY3VzdG9tLWFsaWdubWVudF09XCJjb25maWcuY3VzdG9tRm9vdGVyQ29udGVudFwiPlxuXG4gICAgICAgICAgICAgICAgPHV4RHluYW1pY01vZGFsRm9vdGVyICpuZ0lmPVwiY29uZmlnLmN1c3RvbUZvb3RlckNvbnRlbnQgJiYgIWNvbmZpZy5pc01lc3NhZ2VCb3hcIj5cbiAgICAgICAgICAgICAgICAgICAgPHV4LWxheW91dC1ob3Jpem9udGFsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHV4TGF5b3V0SG9yaXpvbnRhbExlZnQgKm5nSWY9XCJjb25maWcuY3VzdG9tRm9vdGVyQ29udGVudC5sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHV4LWJ1dHRvbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGNvbmZpZy5jdXN0b21Gb290ZXJDb250ZW50LmxlZnQuYnV0dG9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwie3sgYnV0dG9uLnR5cGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInt7IGJ1dHRvbi5zdHlsZUNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVDbGFzcz1cInt7IGJ1dHRvbi50eXBlQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkNsYXNzPVwie3sgYnV0dG9uLmljb25DbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNPdXRsaW5lXT1cImJ1dHRvbi5pc091dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzU2Vjb25kYXJ5XT1cImJ1dHRvbi5pc1NlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNTbWFsbF09XCJidXR0b24uaXNTbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNMYXJnZV09XCJidXR0b24uaXNMYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNCbG9ja109XCJidXR0b24uaXNCbG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNGbGF0XT1cImJ1dHRvbi5pc0ZsYXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiYnV0dG9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1c3RvbUZvb3RlckJ1dHRvbkNsaWNrKGJ1dHRvbilcIj57eyBidXR0b24ubGFiZWwgfX08L3V4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdXhMYXlvdXRIb3Jpem9udGFsTGVmdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx1eExheW91dEhvcml6b250YWxSaWdodCAqbmdJZj1cImNvbmZpZy5jdXN0b21Gb290ZXJDb250ZW50LnJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHV4LWJ1dHRvbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGNvbmZpZy5jdXN0b21Gb290ZXJDb250ZW50LnJpZ2h0LmJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInt7IGJ1dHRvbi50eXBlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ7eyBidXR0b24uc3R5bGVDbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlQ2xhc3M9XCJ7eyBidXR0b24udHlwZUNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25DbGFzcz1cInt7IGJ1dHRvbi5pY29uQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzT3V0bGluZV09XCJidXR0b24uaXNPdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1NlY29uZGFyeV09XCJidXR0b24uaXNTZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzU21hbGxdPVwiYnV0dG9uLmlzU21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTGFyZ2VdPVwiYnV0dG9uLmlzTGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzQmxvY2tdPVwiYnV0dG9uLmlzQmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRmxhdF09XCJidXR0b24uaXNGbGF0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImJ1dHRvbi5pc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjdXN0b21Gb290ZXJCdXR0b25DbGljayhidXR0b24pXCI+e3sgYnV0dG9uLmxhYmVsIH19PC91eC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3V4TGF5b3V0SG9yaXpvbnRhbFJpZ2h0PlxuICAgICAgICAgICAgICAgICAgICA8L3V4LWxheW91dC1ob3Jpem9udGFsPlxuICAgICAgICAgICAgICAgIDwvdXhEeW5hbWljTW9kYWxGb290ZXI+XG5cbiAgICAgICAgICAgICAgICA8dXhEeW5hbWljTWVzc2FnZUJveEZvb3RlciAqbmdJZj1cImNvbmZpZy5jdXN0b21Gb290ZXJDb250ZW50ICYmIGNvbmZpZy5pc01lc3NhZ2VCb3hcIj5cbiAgICAgICAgICAgICAgICAgICAgPHV4LWxheW91dC1ob3Jpem9udGFsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHV4TGF5b3V0SG9yaXpvbnRhbExlZnQgKm5nSWY9XCJjb25maWcuY3VzdG9tRm9vdGVyQ29udGVudC5sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHV4LWJ1dHRvbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGNvbmZpZy5jdXN0b21Gb290ZXJDb250ZW50LmxlZnQuYnV0dG9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwie3sgYnV0dG9uLnR5cGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInt7IGJ1dHRvbi5zdHlsZUNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVDbGFzcz1cInt7IGJ1dHRvbi50eXBlQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkNsYXNzPVwie3sgYnV0dG9uLmljb25DbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNPdXRsaW5lXT1cImJ1dHRvbi5pc091dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzU2Vjb25kYXJ5XT1cImJ1dHRvbi5pc1NlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNTbWFsbF09XCJidXR0b24uaXNTbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNMYXJnZV09XCJidXR0b24uaXNMYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNCbG9ja109XCJidXR0b24uaXNCbG9ja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNGbGF0XT1cImJ1dHRvbi5pc0ZsYXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiYnV0dG9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImN1c3RvbUZvb3RlckJ1dHRvbkNsaWNrKGJ1dHRvbilcIj57eyBidXR0b24ubGFiZWwgfX08L3V4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdXhMYXlvdXRIb3Jpem9udGFsTGVmdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx1eExheW91dEhvcml6b250YWxSaWdodCAqbmdJZj1cImNvbmZpZy5jdXN0b21Gb290ZXJDb250ZW50LnJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHV4LWJ1dHRvbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIGNvbmZpZy5jdXN0b21Gb290ZXJDb250ZW50LnJpZ2h0LmJ1dHRvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInt7IGJ1dHRvbi50eXBlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ7eyBidXR0b24uc3R5bGVDbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlQ2xhc3M9XCJ7eyBidXR0b24udHlwZUNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25DbGFzcz1cInt7IGJ1dHRvbi5pY29uQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzT3V0bGluZV09XCJidXR0b24uaXNPdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1NlY29uZGFyeV09XCJidXR0b24uaXNTZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzU21hbGxdPVwiYnV0dG9uLmlzU21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTGFyZ2VdPVwiYnV0dG9uLmlzTGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzQmxvY2tdPVwiYnV0dG9uLmlzQmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRmxhdF09XCJidXR0b24uaXNGbGF0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImJ1dHRvbi5pc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjdXN0b21Gb290ZXJCdXR0b25DbGljayhidXR0b24pXCI+e3sgYnV0dG9uLmxhYmVsIH19PC91eC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3V4TGF5b3V0SG9yaXpvbnRhbFJpZ2h0PlxuICAgICAgICAgICAgICAgICAgICA8L3V4LWxheW91dC1ob3Jpem9udGFsPlxuICAgICAgICAgICAgICAgIDwvdXhEeW5hbWljTWVzc2FnZUJveEZvb3Rlcj5cblxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIhY29uZmlnLmN1c3RvbUZvb3RlckNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiFjb25maWcuaXNNZXNzYWdlQm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInV4LWJ1dHRvbiB1eC1idXR0b24tLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy51eC1idXR0b24tLXdpdGgtbGFiZWxdPVwiY29uZmlnLmlzU2hvd0FjdGlvbkljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbmZpZy5kaXNtaXNzQWN0aW9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EaXNtaXNzQWN0aW9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnLmlzU2hvd0FjdGlvbkljb25zXCIgY2xhc3M9XCJ1eC1idXR0b25fX2ljb24ge3tjb25maWcuZGlzbWlzc0ljb25DbGFzc319XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbmZpZy5kaXNtaXNzTGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1eC1idXR0b24gdXgtYnV0dG9uLS1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnV4LWJ1dHRvbi0td2l0aC1sYWJlbF09XCJjb25maWcuaXNTaG93QWN0aW9uSWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlnLmFjY2VwdEFjdGlvbkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWNjZXB0QWN0aW9uQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnLmlzU2hvd0FjdGlvbkljb25zXCIgY2xhc3M9XCJ1eC1idXR0b25fX2ljb24ge3tjb25maWcuYWNjZXB0SWNvbkNsYXNzfX1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29uZmlnLmFjY2VwdExhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiY29uZmlnLmlzTWVzc2FnZUJveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImNvbmZpZy5tZXNzYWdlQm94VHlwZSAmJiBjb25maWcubWVzc2FnZUJveFR5cGUgPT09ICdjb25maXJtYXRpb24nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidXgtYnV0dG9uIHV4LWJ1dHRvbi0tc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrKGZhbHNlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb25maWcuZGlzbWlzc0xhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidXgtYnV0dG9uIHV4LWJ1dHRvbi0tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGljayh0cnVlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb25maWcuYWNjZXB0TGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiY29uZmlnLm1lc3NhZ2VCb3hUeXBlICYmIGNvbmZpZy5tZXNzYWdlQm94VHlwZSA9PT0gJ29rJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidXgtYnV0dG9uIHV4LWJ1dHRvbi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm9uQ2xpY2sodHJ1ZSlcIj5PSzwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9kYWwtYmFja2Ryb3Agc2hvd1wiIFtzdHlsZS5kaXNwbGF5XT1cIidibG9jaydcIiAoZm9jdXMpPVwiY2xvc2UoJGV2ZW50KVwiPjwvZGl2PlxuIl19
|
|
@@ -147,14 +147,14 @@ export class UxFieldSearchComponent {
|
|
|
147
147
|
provide: NG_VALUE_ACCESSOR,
|
|
148
148
|
useExisting: forwardRef((() => UxFieldSearchComponent)),
|
|
149
149
|
multi: true,
|
|
150
|
-
}], queries: [{ propertyName: "isFilterActive", first: true, predicate: i0.forwardRef(function () { return UxFieldSearchFilterContentTagDirective; }), descendants: true }], viewQueries: [{ propertyName: "uxFieldSearchInput", first: true, predicate: ["uxFieldSearchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"ux-field-search {{styleClass}}\"\n [class.ux-field-search__with-filter]=\"isDropdownFilter\"\n [class.ux-field-search__with-prepend-icon]=\"isShowPrependSearchIcon\"\n\tattr.data-e2e=\"{{ e2eAttr }}\">\n <div class=\"ux-input-group\">\n <span class=\"ux-input-group-prepend\" *ngIf=\"isShowPrependSearchIcon\">\n <span class=\"ux-input-group-text\">\n <eui-icon-svg icon=\"eui-search-
|
|
150
|
+
}], queries: [{ propertyName: "isFilterActive", first: true, predicate: i0.forwardRef(function () { return UxFieldSearchFilterContentTagDirective; }), descendants: true }], viewQueries: [{ propertyName: "uxFieldSearchInput", first: true, predicate: ["uxFieldSearchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"ux-field-search {{styleClass}}\"\n [class.ux-field-search__with-filter]=\"isDropdownFilter\"\n [class.ux-field-search__with-prepend-icon]=\"isShowPrependSearchIcon\"\n\tattr.data-e2e=\"{{ e2eAttr }}\">\n <div class=\"ux-input-group\">\n <span class=\"ux-input-group-prepend\" *ngIf=\"isShowPrependSearchIcon\">\n <span class=\"ux-input-group-text\">\n <eui-icon-svg icon=\"eui-search\" fillColor=\"grey-50\" class=\"ux-field-search__icon\"></eui-icon-svg>\n </span>\n </span>\n\n <div class=\"ux-clearable-input-wrapper\">\n <input #uxFieldSearchInput type=\"text\" matInput [matAutocomplete]=\"auto\" [formControl]=\"searchField\" class=\"eui-input-text\"\n placeholder=\"{{inputPlaceholderLabel ? inputPlaceholderLabel: ('eui.PLACEHOLDERSEARCH' | translate)}}\" (change)=\"onChange($event)\" (keyup)=\"onKeyup($event)\"\n (blur)=\"onTouched($event)\" [value]=\"defaultValue\" />\n <div class=\"ux-clearable-input-wrapper__clear\" *ngIf=\"data\" (click)=\"onClearClick()\">\n <eui-icon-svg icon=\"eui-close\" class=\"ux-clearable-input-wrapper__clear-icon\"></eui-icon-svg>\n </div>\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\" (optionSelected)=\"selected($event)\">\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option\">\n {{ option }}\n </mat-option>\n </mat-autocomplete>\n\n <div class=\"ux-form-group__input-content\">\n <span *ngIf=\"suggestionsDataLoading\" class=\"ux-form-group__loading-indicator eui-icon eui-icon-refresh eui-icon-spin ux-u-color-primary\"></span>\n </div>\n </div>\n\n <span class=\"ux-input-group-append\" *ngIf=\"isDropdownFilter\">\n <ux-dropdown-button\n [hasItems]=\"dropdownFilterHasItems\"\n [links]=\"dropdownFilterLinks\"\n [styleClass]=\"'ux-dropdown-button-search ' + dropdownFilterStyleClass\"\n label=\"{{dropdownFilterLabel ? dropdownFilterLabel: ('eui.ADVANCEDSEARCH' | translate)}}\"\n [typeClass]=\"dropdownFilterTypeClass\"\n [iconClass]=\"dropdownFilterIconClass\"\n [isSplitButtonToggle]=\"dropdownFilterIsSplitButtonToggle\"\n [isDropDownRightAligned]=\"dropdownFilterIsDropDownRightAligned\"\n [isUpdateLabelFromSelectedItem]=\"dropdownFilterIsUpdateLabelFromSelectedItem\"\n [isOutline]=\"dropdownFilterIsOutline\"\n [isDisabled]=\"dropdownFilterIsDisabled\"\n [width]=\"dropdownFilterWidth\"\n [dropdownMaxHeight]=\"dropdownFilterMaxHeight\">\n\n <!-- <ng-container *ngIf=\"customFilterContent\"> -->\n <ng-content select=\"uxFieldSearchFilterContent\"></ng-content>\n <!-- </ng-container> -->\n\n </ux-dropdown-button>\n </span>\n\n <span class=\"ux-input-group-append\">\n <button class=\"ux-button ux-button--{{searchButtonTypeClass}} ux-field-search__search-button\" type=\"button\" (click)=\"onSearch($event)\">\n <span *ngIf=\"!searchButtonAsIcon\">{{searchButtonLabel ? searchButtonLabel: ('eui.SEARCH' | translate)}}</span>\n <eui-icon-svg *ngIf=\"searchButtonAsIcon\" icon=\"eui-search\" fillColor=\"white\"></eui-icon-svg>\n </button>\n </span>\n <span *ngIf=\"customFilterContent && isFilterButtonTrigger\" class=\"ux-input-group-append\">\n <button class=\"ux-button ux-button--secondary\" type=\"button\" (click)=\"isFilterActive = !isFilterActive\">\n <eui-icon-svg *ngIf=\"isFilterActive\" icon=\"eui-close\"></eui-icon-svg>\n <eui-icon-svg *ngIf=\"!isFilterActive\" icon=\"eui-filter\"></eui-icon-svg>\n </button>\n </span>\n </div>\n</div>\n", styles: [".ux-field-search{position:relative}.ux-field-search input,.ux-field-search .ui-widget input{height:calc(var(--eui-base-spacing-2xl) + 2px);padding-right:var(--eui-base-spacing-2xl)}.ux-field-search input.form-control{border-bottom-right-radius:0;border-top-right-radius:0}.ux-field-search .ux-dropdown-button{border-bottom:1px solid var(--eui-base-color-grey-20);border-radius:0;border-top:1px solid var(--eui-base-color-grey-20);box-shadow:none;height:calc(var(--eui-base-spacing-2xl) + 2px)}.ux-field-search .ux-dropdown-button:not(.ux-button--secondary){margin-left:-1px}.ux-field-search.ux-field-search__with-filter input.form-control{border-radius:0}.ux-field-search.ux-field-search__with-prepend-icon input.form-control{border-bottom-left-radius:0;border-top-left-radius:0}.ux-field-search__search-button{border-bottom-left-radius:0;border-top-left-radius:0;box-shadow:none;height:calc(var(--eui-base-spacing-2xl) + 2px)}.ux-field-search__search-button.ux-button--secondary{border:1px solid var(--eui-base-color-grey-20)}.ux-field-search__icon{font-size:var(--eui-base-font-size-xl);padding:0 var(--eui-base-spacing-3xs)}.ux-field-search .ux-clearable-input-wrapper .ux-clearable-input-wrapper__clear{position:relative}.ux-field-search .ux-clearable-input-wrapper .ux-clearable-input-wrapper__clear-icon{color:var(--eui-base-color-grey-35);font-size:var(--eui-base-font-size-m);position:absolute;right:var(--eui-base-spacing-s);top:calc(-1 * var(--eui-base-spacing-xs))}.ux-field-search .ux-clearable-input-wrapper .ux-clearable-input-wrapper__clear-icon:hover{color:var(--eui-base-color-grey-100);cursor:pointer}.ux-dropdown-button-search a{border:1px solid var(--eui-base-color-grey-20);border-left:1px solid var(--eui-base-color-grey-20);border-radius:0;box-shadow:0 0 #000000bf;margin-left:-1px;padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-s)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.UxDropdownButtonComponent, selector: "ux-dropdown-button", inputs: ["styleClass", "label", "iconClass", "iconSvgName", "links", "activeLink", "typeClass", "dropdownMinHeight", "dropdownMaxHeight", "width", "buttonLabelAlignment", "e2eAttr", "menu", "id", "isUpdateLabelFromSelectedItem", "isDisabled", "isSmall", "isLarge", "isSplitButtonToggle", "isDropDownRightAligned", "isLinkToggle", "isOutline", "isShowDropdownToggle", "hasItems", "isSecondary", "isBlock"], outputs: ["linkSelected"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i6.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
151
151
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: UxFieldSearchComponent, decorators: [{
|
|
152
152
|
type: Component,
|
|
153
153
|
args: [{ selector: 'ux-field-search', providers: [{
|
|
154
154
|
provide: NG_VALUE_ACCESSOR,
|
|
155
155
|
useExisting: forwardRef((() => UxFieldSearchComponent)),
|
|
156
156
|
multi: true,
|
|
157
|
-
}], encapsulation: ViewEncapsulation.None, template: "<div class=\"ux-field-search {{styleClass}}\"\n [class.ux-field-search__with-filter]=\"isDropdownFilter\"\n [class.ux-field-search__with-prepend-icon]=\"isShowPrependSearchIcon\"\n\tattr.data-e2e=\"{{ e2eAttr }}\">\n <div class=\"ux-input-group\">\n <span class=\"ux-input-group-prepend\" *ngIf=\"isShowPrependSearchIcon\">\n <span class=\"ux-input-group-text\">\n <eui-icon-svg icon=\"eui-search-
|
|
157
|
+
}], encapsulation: ViewEncapsulation.None, template: "<div class=\"ux-field-search {{styleClass}}\"\n [class.ux-field-search__with-filter]=\"isDropdownFilter\"\n [class.ux-field-search__with-prepend-icon]=\"isShowPrependSearchIcon\"\n\tattr.data-e2e=\"{{ e2eAttr }}\">\n <div class=\"ux-input-group\">\n <span class=\"ux-input-group-prepend\" *ngIf=\"isShowPrependSearchIcon\">\n <span class=\"ux-input-group-text\">\n <eui-icon-svg icon=\"eui-search\" fillColor=\"grey-50\" class=\"ux-field-search__icon\"></eui-icon-svg>\n </span>\n </span>\n\n <div class=\"ux-clearable-input-wrapper\">\n <input #uxFieldSearchInput type=\"text\" matInput [matAutocomplete]=\"auto\" [formControl]=\"searchField\" class=\"eui-input-text\"\n placeholder=\"{{inputPlaceholderLabel ? inputPlaceholderLabel: ('eui.PLACEHOLDERSEARCH' | translate)}}\" (change)=\"onChange($event)\" (keyup)=\"onKeyup($event)\"\n (blur)=\"onTouched($event)\" [value]=\"defaultValue\" />\n <div class=\"ux-clearable-input-wrapper__clear\" *ngIf=\"data\" (click)=\"onClearClick()\">\n <eui-icon-svg icon=\"eui-close\" class=\"ux-clearable-input-wrapper__clear-icon\"></eui-icon-svg>\n </div>\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\" (optionSelected)=\"selected($event)\">\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option\">\n {{ option }}\n </mat-option>\n </mat-autocomplete>\n\n <div class=\"ux-form-group__input-content\">\n <span *ngIf=\"suggestionsDataLoading\" class=\"ux-form-group__loading-indicator eui-icon eui-icon-refresh eui-icon-spin ux-u-color-primary\"></span>\n </div>\n </div>\n\n <span class=\"ux-input-group-append\" *ngIf=\"isDropdownFilter\">\n <ux-dropdown-button\n [hasItems]=\"dropdownFilterHasItems\"\n [links]=\"dropdownFilterLinks\"\n [styleClass]=\"'ux-dropdown-button-search ' + dropdownFilterStyleClass\"\n label=\"{{dropdownFilterLabel ? dropdownFilterLabel: ('eui.ADVANCEDSEARCH' | translate)}}\"\n [typeClass]=\"dropdownFilterTypeClass\"\n [iconClass]=\"dropdownFilterIconClass\"\n [isSplitButtonToggle]=\"dropdownFilterIsSplitButtonToggle\"\n [isDropDownRightAligned]=\"dropdownFilterIsDropDownRightAligned\"\n [isUpdateLabelFromSelectedItem]=\"dropdownFilterIsUpdateLabelFromSelectedItem\"\n [isOutline]=\"dropdownFilterIsOutline\"\n [isDisabled]=\"dropdownFilterIsDisabled\"\n [width]=\"dropdownFilterWidth\"\n [dropdownMaxHeight]=\"dropdownFilterMaxHeight\">\n\n <!-- <ng-container *ngIf=\"customFilterContent\"> -->\n <ng-content select=\"uxFieldSearchFilterContent\"></ng-content>\n <!-- </ng-container> -->\n\n </ux-dropdown-button>\n </span>\n\n <span class=\"ux-input-group-append\">\n <button class=\"ux-button ux-button--{{searchButtonTypeClass}} ux-field-search__search-button\" type=\"button\" (click)=\"onSearch($event)\">\n <span *ngIf=\"!searchButtonAsIcon\">{{searchButtonLabel ? searchButtonLabel: ('eui.SEARCH' | translate)}}</span>\n <eui-icon-svg *ngIf=\"searchButtonAsIcon\" icon=\"eui-search\" fillColor=\"white\"></eui-icon-svg>\n </button>\n </span>\n <span *ngIf=\"customFilterContent && isFilterButtonTrigger\" class=\"ux-input-group-append\">\n <button class=\"ux-button ux-button--secondary\" type=\"button\" (click)=\"isFilterActive = !isFilterActive\">\n <eui-icon-svg *ngIf=\"isFilterActive\" icon=\"eui-close\"></eui-icon-svg>\n <eui-icon-svg *ngIf=\"!isFilterActive\" icon=\"eui-filter\"></eui-icon-svg>\n </button>\n </span>\n </div>\n</div>\n", styles: [".ux-field-search{position:relative}.ux-field-search input,.ux-field-search .ui-widget input{height:calc(var(--eui-base-spacing-2xl) + 2px);padding-right:var(--eui-base-spacing-2xl)}.ux-field-search input.form-control{border-bottom-right-radius:0;border-top-right-radius:0}.ux-field-search .ux-dropdown-button{border-bottom:1px solid var(--eui-base-color-grey-20);border-radius:0;border-top:1px solid var(--eui-base-color-grey-20);box-shadow:none;height:calc(var(--eui-base-spacing-2xl) + 2px)}.ux-field-search .ux-dropdown-button:not(.ux-button--secondary){margin-left:-1px}.ux-field-search.ux-field-search__with-filter input.form-control{border-radius:0}.ux-field-search.ux-field-search__with-prepend-icon input.form-control{border-bottom-left-radius:0;border-top-left-radius:0}.ux-field-search__search-button{border-bottom-left-radius:0;border-top-left-radius:0;box-shadow:none;height:calc(var(--eui-base-spacing-2xl) + 2px)}.ux-field-search__search-button.ux-button--secondary{border:1px solid var(--eui-base-color-grey-20)}.ux-field-search__icon{font-size:var(--eui-base-font-size-xl);padding:0 var(--eui-base-spacing-3xs)}.ux-field-search .ux-clearable-input-wrapper .ux-clearable-input-wrapper__clear{position:relative}.ux-field-search .ux-clearable-input-wrapper .ux-clearable-input-wrapper__clear-icon{color:var(--eui-base-color-grey-35);font-size:var(--eui-base-font-size-m);position:absolute;right:var(--eui-base-spacing-s);top:calc(-1 * var(--eui-base-spacing-xs))}.ux-field-search .ux-clearable-input-wrapper .ux-clearable-input-wrapper__clear-icon:hover{color:var(--eui-base-color-grey-100);cursor:pointer}.ux-dropdown-button-search a{border:1px solid var(--eui-base-color-grey-20);border-left:1px solid var(--eui-base-color-grey-20);border-radius:0;box-shadow:0 0 #000000bf;margin-left:-1px;padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-s)}\n"] }]
|
|
158
158
|
}], propDecorators: { styleClass: [{
|
|
159
159
|
type: Input
|
|
160
160
|
}], inputPlaceholderLabel: [{
|
|
@@ -279,4 +279,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
|
|
|
279
279
|
]
|
|
280
280
|
}]
|
|
281
281
|
}] });
|
|
282
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtZmllbGQtc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xlZ2FjeS91eC1maWVsZC1zZWFyY2gvdXgtZmllbGQtc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xlZ2FjeS91eC1maWVsZC1zZWFyY2gvdXgtZmllbGQtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFDTCxRQUFRLEVBSVIsTUFBTSxFQUdOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBd0IsV0FBVyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hILE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0MsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRyxPQUFPLEVBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7O0FBYXpELE1BQU0sT0FBTyxzQkFBc0I7SUFYbkM7UUFhYSwwQkFB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QUFxQjtRQUNyQiwwQkFBMEI7UUFDMUIsYUFBYTtRQUNiLGVBQWU7MkZBV1YsNEJBQTRCO2tCQXJCeEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWix5QkFBeUI7d0JBQ3pCLCtCQUErQjt3QkFDL0IsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsMEJBQTBCO3dCQUMxQixhQUFhO3dCQUNiLGVBQWU7cUJBQ2xCO29CQUNELE9BQU8sRUFBRTt3QkFDTCxzQkFBc0I7d0JBQ3RCLHNDQUFzQztxQkFDekM7b0JBQ0QsWUFBWSxFQUFFO3dCQUNWLHNCQUFzQjt3QkFDdEIsc0NBQXNDO3FCQUN6QztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUsIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBVeExpbmsgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgVXhEcm9wZG93bkNvbXBvbmVudE1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9sZWdhY3kvdXgtZHJvcGRvd24nO1xuaW1wb3J0IHsgVXhEcm9wZG93bkJ1dHRvbkNvbXBvbmVudE1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9sZWdhY3kvdXgtZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IFV4Rm9ybUdyb3VwQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2xlZ2FjeS91eC1mb3JtLWdyb3VwJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRXVpSWNvbk1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktaWNvbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndXgtZmllbGQtc2VhcmNoJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdXgtZmllbGQtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBVeEZpZWxkU2VhcmNoQ29tcG9uZW50KSxcbiAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgfV0sXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgVXhGaWVsZFNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaW5wdXRQbGFjZWhvbGRlckxhYmVsOiBzdHJpbmcgPSAnU2VhcmNoLi4uJztcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc1Nob3dQcmVwZW5kU2VhcmNoSWNvbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2lzU2hvd1ByZXBlbmRTZWFyY2hJY29uOyB9XG4gICAgc2V0IGlzU2hvd1ByZXBlbmRTZWFyY2hJY29uKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5faXNTaG93UHJlcGVuZFNlYXJjaEljb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfaXNTaG93UHJlcGVuZFNlYXJjaEljb246IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHNlYXJjaEJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBnZXQgc2VhcmNoQnV0dG9uQXNJY29uKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fc2VhcmNoQnV0dG9uQXNJY29uOyB9XG4gICAgc2V0IHNlYXJjaEJ1dHRvbkFzSWNvbih2YWx1ZTogQm9vbGVhbklucHV0KSB7IHRoaXMuX3NlYXJjaEJ1dHRvbkFzSWNvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9zZWFyY2hCdXR0b25Bc0ljb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZWFyY2hCdXR0b25UeXBlQ2xhc3M6IHN0cmluZyA9ICdwcmltYXJ5JztcbiAgICBASW5wdXQoKSBmaWx0ZXJDb250ZW50V2lkdGg6IHN0cmluZztcbiAgICBASW5wdXQoKSBmaWx0ZXJDb250ZW50SGVpZ2h0OiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNGaWx0ZXJCdXR0b25UcmlnZ2VyKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5faXNGaWx0ZXJCdXR0b25UcmlnZ2VyOyB9XG4gICAgc2V0IGlzRmlsdGVyQnV0dG9uVHJpZ2dlcih2YWx1ZTogQm9vbGVhbklucHV0KSB7IHRoaXMuX2lzRmlsdGVyQnV0dG9uVHJpZ2dlciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9pc0ZpbHRlckJ1dHRvblRyaWdnZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0Ryb3Bkb3duRmlsdGVyKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5faXNEcm9wZG93bkZpbHRlcjsgfVxuICAgIHNldCBpc0Ryb3Bkb3duRmlsdGVyKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5faXNEcm9wZG93bkZpbHRlciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9pc0Ryb3Bkb3duRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNBdXRvZm9jdXMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9pc0F1dG9mb2N1czsgfVxuICAgIHNldCBpc0F1dG9mb2N1cyh2YWx1ZTogQm9vbGVhbklucHV0KSB7IHRoaXMuX2lzQXV0b2ZvY3VzID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICAgIHByaXZhdGUgX2lzQXV0b2ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgc3VnZ2VzdGlvbnMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9zdWdnZXN0aW9uczsgfVxuICAgIHNldCBzdWdnZXN0aW9ucyh2YWx1ZTogQm9vbGVhbklucHV0KSB7IHRoaXMuX3N1Z2dlc3Rpb25zID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICAgIHByaXZhdGUgX3N1Z2dlc3Rpb25zOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgc3VnZ2VzdGlvbnNEYXRhOiBhbnlbXSA9IFtdO1xuICAgIEBJbnB1dCgpIGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHN1Z2dlc3Rpb25zRGF0YUxvYWRpbmcoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9zdWdnZXN0aW9uc0RhdGFMb2FkaW5nOyB9XG4gICAgc2V0IHN1Z2dlc3Rpb25zRGF0YUxvYWRpbmcodmFsdWU6IEJvb2xlYW5JbnB1dCkgeyB0aGlzLl9zdWdnZXN0aW9uc0RhdGFMb2FkaW5nID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICAgIHByaXZhdGUgX3N1Z2dlc3Rpb25zRGF0YUxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkcm9wZG93bkZpbHRlclN0eWxlQ2xhc3M6IHN0cmluZztcbiAgICBASW5wdXQoKSBkcm9wZG93bkZpbHRlckxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZHJvcGRvd25GaWx0ZXJJY29uQ2xhc3M6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIGdldCBkcm9wZG93bkZpbHRlcklzU3BsaXRCdXR0b25Ub2dnbGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kcm9wZG93bkZpbHRlcklzU3BsaXRCdXR0b25Ub2dnbGU7IH1cbiAgICBzZXQgZHJvcGRvd25GaWx0ZXJJc1NwbGl0QnV0dG9uVG9nZ2xlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5fZHJvcGRvd25GaWx0ZXJJc1NwbGl0QnV0dG9uVG9nZ2xlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICAgIHByaXZhdGUgX2Ryb3Bkb3duRmlsdGVySXNTcGxpdEJ1dHRvblRvZ2dsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRyb3Bkb3duRmlsdGVySXNEcm9wRG93blJpZ2h0QWxpZ25lZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Ryb3Bkb3duRmlsdGVySXNEcm9wRG93blJpZ2h0QWxpZ25lZDsgfVxuICAgIHNldCBkcm9wZG93bkZpbHRlcklzRHJvcERvd25SaWdodEFsaWduZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkgeyB0aGlzLl9kcm9wZG93bkZpbHRlcklzRHJvcERvd25SaWdodEFsaWduZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfZHJvcGRvd25GaWx0ZXJJc0Ryb3BEb3duUmlnaHRBbGlnbmVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgZHJvcGRvd25GaWx0ZXJJc1VwZGF0ZUxhYmVsRnJvbVNlbGVjdGVkSXRlbSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Ryb3Bkb3duRmlsdGVySXNVcGRhdGVMYWJlbEZyb21TZWxlY3RlZEl0ZW07IH1cbiAgICBzZXQgZHJvcGRvd25GaWx0ZXJJc1VwZGF0ZUxhYmVsRnJvbVNlbGVjdGVkSXRlbSh2YWx1ZTogQm9vbGVhbklucHV0KSB7IHRoaXMuX2Ryb3Bkb3duRmlsdGVySXNVcGRhdGVMYWJlbEZyb21TZWxlY3RlZEl0ZW0gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfZHJvcGRvd25GaWx0ZXJJc1VwZGF0ZUxhYmVsRnJvbVNlbGVjdGVkSXRlbTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRyb3Bkb3duRmlsdGVySXNPdXRsaW5lKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZHJvcGRvd25GaWx0ZXJJc091dGxpbmU7IH1cbiAgICBzZXQgZHJvcGRvd25GaWx0ZXJJc091dGxpbmUodmFsdWU6IEJvb2xlYW5JbnB1dCkgeyB0aGlzLl9kcm9wZG93bkZpbHRlcklzT3V0bGluZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9kcm9wZG93bkZpbHRlcklzT3V0bGluZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRyb3Bkb3duRmlsdGVySXNEaXNhYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Ryb3Bkb3duRmlsdGVySXNEaXNhYmxlZDsgfVxuICAgIHNldCBkcm9wZG93bkZpbHRlcklzRGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkgeyB0aGlzLl9kcm9wZG93bkZpbHRlcklzRGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfZHJvcGRvd25GaWx0ZXJJc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgZHJvcGRvd25GaWx0ZXJUeXBlQ2xhc3M6IHN0cmluZyA9ICdzZWNvbmRhcnknO1xuICAgIEBJbnB1dCgpIGRyb3Bkb3duRmlsdGVyV2lkdGg6IHN0cmluZyA9ICdhdXRvJztcbiAgICBASW5wdXQoKSBkcm9wZG93bkZpbHRlck1heEhlaWdodDogc3RyaW5nID0gJzIwMHB4JztcbiAgICBASW5wdXQoKSBkcm9wZG93bkZpbHRlckxpbmtzOiBVeExpbmtbXTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBzZWFyY2hPblNlbGVjdE9wdGlvbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3NlYXJjaE9uU2VsZWN0T3B0aW9uOyB9XG4gICAgc2V0IHNlYXJjaE9uU2VsZWN0T3B0aW9uKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5fc2VhcmNoT25TZWxlY3RPcHRpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfc2VhcmNoT25TZWxlY3RPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBlMmVBdHRyOiBzdHJpbmcgPSAndXgtZmllbGQtc2VhcmNoJztcblxuICAgIEBPdXRwdXQoKSBzZWFyY2g6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIGNsZWFyQ2xpY2s6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3V4RmllbGRTZWFyY2hJbnB1dCcpIHV4RmllbGRTZWFyY2hJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gVXhGaWVsZFNlYXJjaEZpbHRlckNvbnRlbnRUYWdEaXJlY3RpdmUpKVxuXG4gICAgaXNGaWx0ZXJBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBkYXRhOiBhbnkgPSAnJztcbiAgICBkcm9wZG93bkZpbHRlckhhc0l0ZW1zOiBib29sZWFuID0gdHJ1ZTtcbiAgICBmaWx0ZXJlZE9wdGlvbnM6IE9ic2VydmFibGU8YW55W10+O1xuICAgIHNlYXJjaEZpZWxkID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgc2VhcmNoRmllbGRTdWIgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgY3VzdG9tRmlsdGVyQ29udGVudDogUXVlcnlMaXN0PFV4RmllbGRTZWFyY2hGaWx0ZXJDb250ZW50VGFnRGlyZWN0aXZlPjtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5kcm9wZG93bkZpbHRlckxpbmtzICYmIHRoaXMuZHJvcGRvd25GaWx0ZXJMaW5rcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duRmlsdGVySGFzSXRlbXMgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hGaWVsZC5wYXRjaFZhbHVlKHRoaXMuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNBdXRvZm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMudXhGaWVsZFNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnNlYXJjaEZpZWxkU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoYzogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoYyAmJiBjLnN1Z2dlc3Rpb25zRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBvZihjLnN1Z2dlc3Rpb25zRGF0YS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGlzcGxheUZuKHZhbHVlPzogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJDbGljaygpIHtcbiAgICAgICAgdGhpcy5kYXRhID0gJyc7XG4gICAgICAgIHRoaXMuc2VhcmNoRmllbGQucGF0Y2hWYWx1ZSgnJyk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuZGF0YSk7XG4gICAgICAgIHRoaXMuY2xlYXJDbGljay5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlYXJjaEZpZWxkLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICB0aGlzLmRhdGEgPSBuZXdWYWx1ZTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5kYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25LZXl1cChldmVudCkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKGV2ZW50KTtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaC5lbWl0KGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWFyY2goZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZWFyY2guZW1pdCh0aGlzLmRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRvdWNoZWQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaE9uU2VsZWN0T3B0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaC5lbWl0KGV2ZW50Lm9wdGlvbi52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgICB9XG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVUb3VjaGVkID0gKCkgPT4ge1xuICAgIH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUgKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAndXhGaWVsZFNlYXJjaEZpbHRlckNvbnRlbnQnfSlcbmV4cG9ydCBjbGFzcyBVeEZpZWxkU2VhcmNoRmlsdGVyQ29udGVudFRhZ0RpcmVjdGl2ZSB7XG59XG5cbi8qIGVzbGludC1lbmFibGUgKi9cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgVXhEcm9wZG93bkNvbXBvbmVudE1vZHVsZSxcbiAgICAgICAgVXhEcm9wZG93bkJ1dHRvbkNvbXBvbmVudE1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICAgICAgVXhGb3JtR3JvdXBDb21wb25lbnRNb2R1bGUsXG4gICAgICAgIEV1aUljb25Nb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgVXhGaWVsZFNlYXJjaENvbXBvbmVudCxcbiAgICAgICAgVXhGaWVsZFNlYXJjaEZpbHRlckNvbnRlbnRUYWdEaXJlY3RpdmVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBVeEZpZWxkU2VhcmNoQ29tcG9uZW50LFxuICAgICAgICBVeEZpZWxkU2VhcmNoRmlsdGVyQ29udGVudFRhZ0RpcmVjdGl2ZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVXhGaWVsZFNlYXJjaENvbXBvbmVudE1vZHVsZSB7XG59XG4iLCI8ZGl2IGNsYXNzPVwidXgtZmllbGQtc2VhcmNoIHt7c3R5bGVDbGFzc319XCJcbiAgICBbY2xhc3MudXgtZmllbGQtc2VhcmNoX193aXRoLWZpbHRlcl09XCJpc0Ryb3Bkb3duRmlsdGVyXCJcbiAgICBbY2xhc3MudXgtZmllbGQtc2VhcmNoX193aXRoLXByZXBlbmQtaWNvbl09XCJpc1Nob3dQcmVwZW5kU2VhcmNoSWNvblwiXG5cdGF0dHIuZGF0YS1lMmU9XCJ7eyBlMmVBdHRyIH19XCI+XG4gICAgPGRpdiBjbGFzcz1cInV4LWlucHV0LWdyb3VwXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXgtaW5wdXQtZ3JvdXAtcHJlcGVuZFwiICpuZ0lmPVwiaXNTaG93UHJlcGVuZFNlYXJjaEljb25cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXgtaW5wdXQtZ3JvdXAtdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1zZWFyY2gtbVwiIGNsYXNzPVwidXgtZmllbGQtc2VhcmNoX19pY29uXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidXgtY2xlYXJhYmxlLWlucHV0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxpbnB1dCAjdXhGaWVsZFNlYXJjaElucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCIgW2Zvcm1Db250cm9sXT1cInNlYXJjaEZpZWxkXCIgY2xhc3M9XCJ1eC1mb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tpbnB1dFBsYWNlaG9sZGVyTGFiZWwgPyBpbnB1dFBsYWNlaG9sZGVyTGFiZWw6ICgnZXVpLlBMQUNFSE9MREVSU0VBUkNIJyB8IHRyYW5zbGF0ZSl9fVwiIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiIChrZXl1cCk9XCJvbktleXVwKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgkZXZlbnQpXCIgW3ZhbHVlXT1cImRlZmF1bHRWYWx1ZVwiIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXgtY2xlYXJhYmxlLWlucHV0LXdyYXBwZXJfX2NsZWFyXCIgKm5nSWY9XCJkYXRhXCIgKGNsaWNrKT1cIm9uQ2xlYXJDbGljaygpXCI+XG4gICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwiZXVpLWNsb3NlXCIgY2xhc3M9XCJ1eC1jbGVhcmFibGUtaW5wdXQtd3JhcHBlcl9fY2xlYXItaWNvblwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIFtkaXNwbGF5V2l0aF09XCJkaXNwbGF5Rm5cIiAob3B0aW9uU2VsZWN0ZWQpPVwic2VsZWN0ZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zIHwgYXN5bmNcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbiB9fVxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInV4LWZvcm0tZ3JvdXBfX2lucHV0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInN1Z2dlc3Rpb25zRGF0YUxvYWRpbmdcIiBjbGFzcz1cInV4LWZvcm0tZ3JvdXBfX2xvYWRpbmctaW5kaWNhdG9yIGV1aS1pY29uIGV1aS1pY29uLXJlZnJlc2ggZXVpLWljb24tc3BpbiB1eC11LWNvbG9yLXByaW1hcnlcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1eC1pbnB1dC1ncm91cC1hcHBlbmRcIiAqbmdJZj1cImlzRHJvcGRvd25GaWx0ZXJcIj5cbiAgICAgICAgICAgIDx1eC1kcm9wZG93bi1idXR0b25cbiAgICAgICAgICAgICAgICBbaGFzSXRlbXNdPVwiZHJvcGRvd25GaWx0ZXJIYXNJdGVtc1wiXG4gICAgICAgICAgICAgICAgW2xpbmtzXT1cImRyb3Bkb3duRmlsdGVyTGlua3NcIlxuICAgICAgICAgICAgICAgIFtzdHlsZUNsYXNzXT1cIid1eC1kcm9wZG93bi1idXR0b24tc2VhcmNoICcgKyBkcm9wZG93bkZpbHRlclN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3tkcm9wZG93bkZpbHRlckxhYmVsID8gZHJvcGRvd25GaWx0ZXJMYWJlbDogKCdldWkuQURWQU5DRURTRUFSQ0gnIHwgdHJhbnNsYXRlKX19XCJcbiAgICAgICAgICAgICAgICBbdHlwZUNsYXNzXT1cImRyb3Bkb3duRmlsdGVyVHlwZUNsYXNzXCJcbiAgICAgICAgICAgICAgICBbaWNvbkNsYXNzXT1cImRyb3Bkb3duRmlsdGVySWNvbkNsYXNzXCJcbiAgICAgICAgICAgICAgICBbaXNTcGxpdEJ1dHRvblRvZ2dsZV09XCJkcm9wZG93bkZpbHRlcklzU3BsaXRCdXR0b25Ub2dnbGVcIlxuICAgICAgICAgICAgICAgIFtpc0Ryb3BEb3duUmlnaHRBbGlnbmVkXT1cImRyb3Bkb3duRmlsdGVySXNEcm9wRG93blJpZ2h0QWxpZ25lZFwiXG4gICAgICAgICAgICAgICAgW2lzVXBkYXRlTGFiZWxGcm9tU2VsZWN0ZWRJdGVtXT1cImRyb3Bkb3duRmlsdGVySXNVcGRhdGVMYWJlbEZyb21TZWxlY3RlZEl0ZW1cIlxuICAgICAgICAgICAgICAgIFtpc091dGxpbmVdPVwiZHJvcGRvd25GaWx0ZXJJc091dGxpbmVcIlxuICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImRyb3Bkb3duRmlsdGVySXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cImRyb3Bkb3duRmlsdGVyV2lkdGhcIlxuICAgICAgICAgICAgICAgIFtkcm9wZG93bk1heEhlaWdodF09XCJkcm9wZG93bkZpbHRlck1heEhlaWdodFwiPlxuXG4gICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tRmlsdGVyQ29udGVudFwiPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwidXhGaWVsZFNlYXJjaEZpbHRlckNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPCEtLSA8L25nLWNvbnRhaW5lcj4gLS0+XG5cbiAgICAgICAgICAgIDwvdXgtZHJvcGRvd24tYnV0dG9uPlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1eC1pbnB1dC1ncm91cC1hcHBlbmRcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ1eC1idXR0b24gdXgtYnV0dG9uLS17e3NlYXJjaEJ1dHRvblR5cGVDbGFzc319IHV4LWZpZWxkLXNlYXJjaF9fc2VhcmNoLWJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25TZWFyY2goJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXNlYXJjaEJ1dHRvbkFzSWNvblwiPnt7c2VhcmNoQnV0dG9uTGFiZWwgPyBzZWFyY2hCdXR0b25MYWJlbDogKCdldWkuU0VBUkNIJyB8IHRyYW5zbGF0ZSl9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnICpuZ0lmPVwic2VhcmNoQnV0dG9uQXNJY29uXCIgaWNvbj1cImV1aS1zZWFyY2gtbVwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXN0b21GaWx0ZXJDb250ZW50ICYmIGlzRmlsdGVyQnV0dG9uVHJpZ2dlclwiIGNsYXNzPVwidXgtaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidXgtYnV0dG9uIHV4LWJ1dHRvbi0tc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJpc0ZpbHRlckFjdGl2ZSA9ICFpc0ZpbHRlckFjdGl2ZVwiPlxuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgKm5nSWY9XCJpc0ZpbHRlckFjdGl2ZVwiIGljb249XCJldWktdGltZXNcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnICpuZ0lmPVwiIWlzRmlsdGVyQWN0aXZlXCIgaWNvbj1cImV1aS1maWx0ZXJcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtZmllbGQtc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xlZ2FjeS91eC1maWVsZC1zZWFyY2gvdXgtZmllbGQtc2VhcmNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xlZ2FjeS91eC1maWVsZC1zZWFyY2gvdXgtZmllbGQtc2VhcmNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFDTCxRQUFRLEVBSVIsTUFBTSxFQUdOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBd0IsV0FBVyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hILE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0MsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRyxPQUFPLEVBQWMsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7O0FBYXpELE1BQU0sT0FBTyxzQkFBc0I7SUFYbkM7UUFhYSwwQkFB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QUFxQjtRQUNyQiwwQkFBMEI7UUFDMUIsYUFBYTtRQUNiLGVBQWU7MkZBV1YsNEJBQTRCO2tCQXJCeEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWix5QkFBeUI7d0JBQ3pCLCtCQUErQjt3QkFDL0IsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsMEJBQTBCO3dCQUMxQixhQUFhO3dCQUNiLGVBQWU7cUJBQ2xCO29CQUNELE9BQU8sRUFBRTt3QkFDTCxzQkFBc0I7d0JBQ3RCLHNDQUFzQztxQkFDekM7b0JBQ0QsWUFBWSxFQUFFO3dCQUNWLHNCQUFzQjt3QkFDdEIsc0NBQXNDO3FCQUN6QztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUsIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBVeExpbmsgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgVXhEcm9wZG93bkNvbXBvbmVudE1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9sZWdhY3kvdXgtZHJvcGRvd24nO1xuaW1wb3J0IHsgVXhEcm9wZG93bkJ1dHRvbkNvbXBvbmVudE1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9sZWdhY3kvdXgtZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IFV4Rm9ybUdyb3VwQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2xlZ2FjeS91eC1mb3JtLWdyb3VwJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRXVpSWNvbk1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktaWNvbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndXgtZmllbGQtc2VhcmNoJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdXgtZmllbGQtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBVeEZpZWxkU2VhcmNoQ29tcG9uZW50KSxcbiAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgfV0sXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgVXhGaWVsZFNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaW5wdXRQbGFjZWhvbGRlckxhYmVsOiBzdHJpbmcgPSAnU2VhcmNoLi4uJztcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc1Nob3dQcmVwZW5kU2VhcmNoSWNvbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2lzU2hvd1ByZXBlbmRTZWFyY2hJY29uOyB9XG4gICAgc2V0IGlzU2hvd1ByZXBlbmRTZWFyY2hJY29uKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5faXNTaG93UHJlcGVuZFNlYXJjaEljb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfaXNTaG93UHJlcGVuZFNlYXJjaEljb246IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIHNlYXJjaEJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBnZXQgc2VhcmNoQnV0dG9uQXNJY29uKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fc2VhcmNoQnV0dG9uQXNJY29uOyB9XG4gICAgc2V0IHNlYXJjaEJ1dHRvbkFzSWNvbih2YWx1ZTogQm9vbGVhbklucHV0KSB7IHRoaXMuX3NlYXJjaEJ1dHRvbkFzSWNvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9zZWFyY2hCdXR0b25Bc0ljb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZWFyY2hCdXR0b25UeXBlQ2xhc3M6IHN0cmluZyA9ICdwcmltYXJ5JztcbiAgICBASW5wdXQoKSBmaWx0ZXJDb250ZW50V2lkdGg6IHN0cmluZztcbiAgICBASW5wdXQoKSBmaWx0ZXJDb250ZW50SGVpZ2h0OiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNGaWx0ZXJCdXR0b25UcmlnZ2VyKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5faXNGaWx0ZXJCdXR0b25UcmlnZ2VyOyB9XG4gICAgc2V0IGlzRmlsdGVyQnV0dG9uVHJpZ2dlcih2YWx1ZTogQm9vbGVhbklucHV0KSB7IHRoaXMuX2lzRmlsdGVyQnV0dG9uVHJpZ2dlciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9pc0ZpbHRlckJ1dHRvblRyaWdnZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0Ryb3Bkb3duRmlsdGVyKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5faXNEcm9wZG93bkZpbHRlcjsgfVxuICAgIHNldCBpc0Ryb3Bkb3duRmlsdGVyKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5faXNEcm9wZG93bkZpbHRlciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9pc0Ryb3Bkb3duRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNBdXRvZm9jdXMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9pc0F1dG9mb2N1czsgfVxuICAgIHNldCBpc0F1dG9mb2N1cyh2YWx1ZTogQm9vbGVhbklucHV0KSB7IHRoaXMuX2lzQXV0b2ZvY3VzID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICAgIHByaXZhdGUgX2lzQXV0b2ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgc3VnZ2VzdGlvbnMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9zdWdnZXN0aW9uczsgfVxuICAgIHNldCBzdWdnZXN0aW9ucyh2YWx1ZTogQm9vbGVhbklucHV0KSB7IHRoaXMuX3N1Z2dlc3Rpb25zID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICAgIHByaXZhdGUgX3N1Z2dlc3Rpb25zOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgc3VnZ2VzdGlvbnNEYXRhOiBhbnlbXSA9IFtdO1xuICAgIEBJbnB1dCgpIGRlZmF1bHRWYWx1ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHN1Z2dlc3Rpb25zRGF0YUxvYWRpbmcoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9zdWdnZXN0aW9uc0RhdGFMb2FkaW5nOyB9XG4gICAgc2V0IHN1Z2dlc3Rpb25zRGF0YUxvYWRpbmcodmFsdWU6IEJvb2xlYW5JbnB1dCkgeyB0aGlzLl9zdWdnZXN0aW9uc0RhdGFMb2FkaW5nID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICAgIHByaXZhdGUgX3N1Z2dlc3Rpb25zRGF0YUxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkcm9wZG93bkZpbHRlclN0eWxlQ2xhc3M6IHN0cmluZztcbiAgICBASW5wdXQoKSBkcm9wZG93bkZpbHRlckxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZHJvcGRvd25GaWx0ZXJJY29uQ2xhc3M6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIGdldCBkcm9wZG93bkZpbHRlcklzU3BsaXRCdXR0b25Ub2dnbGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kcm9wZG93bkZpbHRlcklzU3BsaXRCdXR0b25Ub2dnbGU7IH1cbiAgICBzZXQgZHJvcGRvd25GaWx0ZXJJc1NwbGl0QnV0dG9uVG9nZ2xlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5fZHJvcGRvd25GaWx0ZXJJc1NwbGl0QnV0dG9uVG9nZ2xlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTsgfVxuICAgIHByaXZhdGUgX2Ryb3Bkb3duRmlsdGVySXNTcGxpdEJ1dHRvblRvZ2dsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRyb3Bkb3duRmlsdGVySXNEcm9wRG93blJpZ2h0QWxpZ25lZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Ryb3Bkb3duRmlsdGVySXNEcm9wRG93blJpZ2h0QWxpZ25lZDsgfVxuICAgIHNldCBkcm9wZG93bkZpbHRlcklzRHJvcERvd25SaWdodEFsaWduZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkgeyB0aGlzLl9kcm9wZG93bkZpbHRlcklzRHJvcERvd25SaWdodEFsaWduZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfZHJvcGRvd25GaWx0ZXJJc0Ryb3BEb3duUmlnaHRBbGlnbmVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgZHJvcGRvd25GaWx0ZXJJc1VwZGF0ZUxhYmVsRnJvbVNlbGVjdGVkSXRlbSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Ryb3Bkb3duRmlsdGVySXNVcGRhdGVMYWJlbEZyb21TZWxlY3RlZEl0ZW07IH1cbiAgICBzZXQgZHJvcGRvd25GaWx0ZXJJc1VwZGF0ZUxhYmVsRnJvbVNlbGVjdGVkSXRlbSh2YWx1ZTogQm9vbGVhbklucHV0KSB7IHRoaXMuX2Ryb3Bkb3duRmlsdGVySXNVcGRhdGVMYWJlbEZyb21TZWxlY3RlZEl0ZW0gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfZHJvcGRvd25GaWx0ZXJJc1VwZGF0ZUxhYmVsRnJvbVNlbGVjdGVkSXRlbTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRyb3Bkb3duRmlsdGVySXNPdXRsaW5lKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZHJvcGRvd25GaWx0ZXJJc091dGxpbmU7IH1cbiAgICBzZXQgZHJvcGRvd25GaWx0ZXJJc091dGxpbmUodmFsdWU6IEJvb2xlYW5JbnB1dCkgeyB0aGlzLl9kcm9wZG93bkZpbHRlcklzT3V0bGluZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7IH1cbiAgICBwcml2YXRlIF9kcm9wZG93bkZpbHRlcklzT3V0bGluZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRyb3Bkb3duRmlsdGVySXNEaXNhYmxlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2Ryb3Bkb3duRmlsdGVySXNEaXNhYmxlZDsgfVxuICAgIHNldCBkcm9wZG93bkZpbHRlcklzRGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkgeyB0aGlzLl9kcm9wZG93bkZpbHRlcklzRGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfZHJvcGRvd25GaWx0ZXJJc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgZHJvcGRvd25GaWx0ZXJUeXBlQ2xhc3M6IHN0cmluZyA9ICdzZWNvbmRhcnknO1xuICAgIEBJbnB1dCgpIGRyb3Bkb3duRmlsdGVyV2lkdGg6IHN0cmluZyA9ICdhdXRvJztcbiAgICBASW5wdXQoKSBkcm9wZG93bkZpbHRlck1heEhlaWdodDogc3RyaW5nID0gJzIwMHB4JztcbiAgICBASW5wdXQoKSBkcm9wZG93bkZpbHRlckxpbmtzOiBVeExpbmtbXTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBzZWFyY2hPblNlbGVjdE9wdGlvbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3NlYXJjaE9uU2VsZWN0T3B0aW9uOyB9XG4gICAgc2V0IHNlYXJjaE9uU2VsZWN0T3B0aW9uKHZhbHVlOiBCb29sZWFuSW5wdXQpIHsgdGhpcy5fc2VhcmNoT25TZWxlY3RPcHRpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpOyB9XG4gICAgcHJpdmF0ZSBfc2VhcmNoT25TZWxlY3RPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBlMmVBdHRyOiBzdHJpbmcgPSAndXgtZmllbGQtc2VhcmNoJztcblxuICAgIEBPdXRwdXQoKSBzZWFyY2g6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIGNsZWFyQ2xpY2s6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3V4RmllbGRTZWFyY2hJbnB1dCcpIHV4RmllbGRTZWFyY2hJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gVXhGaWVsZFNlYXJjaEZpbHRlckNvbnRlbnRUYWdEaXJlY3RpdmUpKVxuXG4gICAgaXNGaWx0ZXJBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBkYXRhOiBhbnkgPSAnJztcbiAgICBkcm9wZG93bkZpbHRlckhhc0l0ZW1zOiBib29sZWFuID0gdHJ1ZTtcbiAgICBmaWx0ZXJlZE9wdGlvbnM6IE9ic2VydmFibGU8YW55W10+O1xuICAgIHNlYXJjaEZpZWxkID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgc2VhcmNoRmllbGRTdWIgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgY3VzdG9tRmlsdGVyQ29udGVudDogUXVlcnlMaXN0PFV4RmllbGRTZWFyY2hGaWx0ZXJDb250ZW50VGFnRGlyZWN0aXZlPjtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5kcm9wZG93bkZpbHRlckxpbmtzICYmIHRoaXMuZHJvcGRvd25GaWx0ZXJMaW5rcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duRmlsdGVySGFzSXRlbXMgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hGaWVsZC5wYXRjaFZhbHVlKHRoaXMuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNBdXRvZm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMudXhGaWVsZFNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnNlYXJjaEZpZWxkU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoYzogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoYyAmJiBjLnN1Z2dlc3Rpb25zRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBvZihjLnN1Z2dlc3Rpb25zRGF0YS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGlzcGxheUZuKHZhbHVlPzogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJDbGljaygpIHtcbiAgICAgICAgdGhpcy5kYXRhID0gJyc7XG4gICAgICAgIHRoaXMuc2VhcmNoRmllbGQucGF0Y2hWYWx1ZSgnJyk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuZGF0YSk7XG4gICAgICAgIHRoaXMuY2xlYXJDbGljay5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlYXJjaEZpZWxkLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgICB0aGlzLmRhdGEgPSBuZXdWYWx1ZTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5kYXRhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25LZXl1cChldmVudCkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKGV2ZW50KTtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaC5lbWl0KGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWFyY2goZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZWFyY2guZW1pdCh0aGlzLmRhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRvdWNoZWQoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaE9uU2VsZWN0T3B0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaC5lbWl0KGV2ZW50Lm9wdGlvbi52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHtcbiAgICB9XG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVUb3VjaGVkID0gKCkgPT4ge1xuICAgIH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUgKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAndXhGaWVsZFNlYXJjaEZpbHRlckNvbnRlbnQnfSlcbmV4cG9ydCBjbGFzcyBVeEZpZWxkU2VhcmNoRmlsdGVyQ29udGVudFRhZ0RpcmVjdGl2ZSB7XG59XG5cbi8qIGVzbGludC1lbmFibGUgKi9cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgVXhEcm9wZG93bkNvbXBvbmVudE1vZHVsZSxcbiAgICAgICAgVXhEcm9wZG93bkJ1dHRvbkNvbXBvbmVudE1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICAgICAgVXhGb3JtR3JvdXBDb21wb25lbnRNb2R1bGUsXG4gICAgICAgIEV1aUljb25Nb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgVXhGaWVsZFNlYXJjaENvbXBvbmVudCxcbiAgICAgICAgVXhGaWVsZFNlYXJjaEZpbHRlckNvbnRlbnRUYWdEaXJlY3RpdmVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBVeEZpZWxkU2VhcmNoQ29tcG9uZW50LFxuICAgICAgICBVeEZpZWxkU2VhcmNoRmlsdGVyQ29udGVudFRhZ0RpcmVjdGl2ZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVXhGaWVsZFNlYXJjaENvbXBvbmVudE1vZHVsZSB7XG59XG4iLCI8ZGl2IGNsYXNzPVwidXgtZmllbGQtc2VhcmNoIHt7c3R5bGVDbGFzc319XCJcbiAgICBbY2xhc3MudXgtZmllbGQtc2VhcmNoX193aXRoLWZpbHRlcl09XCJpc0Ryb3Bkb3duRmlsdGVyXCJcbiAgICBbY2xhc3MudXgtZmllbGQtc2VhcmNoX193aXRoLXByZXBlbmQtaWNvbl09XCJpc1Nob3dQcmVwZW5kU2VhcmNoSWNvblwiXG5cdGF0dHIuZGF0YS1lMmU9XCJ7eyBlMmVBdHRyIH19XCI+XG4gICAgPGRpdiBjbGFzcz1cInV4LWlucHV0LWdyb3VwXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXgtaW5wdXQtZ3JvdXAtcHJlcGVuZFwiICpuZ0lmPVwiaXNTaG93UHJlcGVuZFNlYXJjaEljb25cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXgtaW5wdXQtZ3JvdXAtdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1zZWFyY2hcIiBmaWxsQ29sb3I9XCJncmV5LTUwXCIgY2xhc3M9XCJ1eC1maWVsZC1zZWFyY2hfX2ljb25cIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1eC1jbGVhcmFibGUtaW5wdXQtd3JhcHBlclwiPlxuICAgICAgICAgICAgPGlucHV0ICN1eEZpZWxkU2VhcmNoSW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBbZm9ybUNvbnRyb2xdPVwic2VhcmNoRmllbGRcIiBjbGFzcz1cImV1aS1pbnB1dC10ZXh0XCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7aW5wdXRQbGFjZWhvbGRlckxhYmVsID8gaW5wdXRQbGFjZWhvbGRlckxhYmVsOiAoJ2V1aS5QTEFDRUhPTERFUlNFQVJDSCcgfCB0cmFuc2xhdGUpfX1cIiAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIiAoa2V5dXApPVwib25LZXl1cCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJvblRvdWNoZWQoJGV2ZW50KVwiIFt2YWx1ZV09XCJkZWZhdWx0VmFsdWVcIiAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInV4LWNsZWFyYWJsZS1pbnB1dC13cmFwcGVyX19jbGVhclwiICpuZ0lmPVwiZGF0YVwiIChjbGljayk9XCJvbkNsZWFyQ2xpY2soKVwiPlxuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1jbG9zZVwiIGNsYXNzPVwidXgtY2xlYXJhYmxlLWlucHV0LXdyYXBwZXJfX2NsZWFyLWljb25cIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCIgKG9wdGlvblNlbGVjdGVkKT1cInNlbGVjdGVkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9ucyB8IGFzeW5jXCIgW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24gfX1cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1eC1mb3JtLWdyb3VwX19pbnB1dC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzdWdnZXN0aW9uc0RhdGFMb2FkaW5nXCIgY2xhc3M9XCJ1eC1mb3JtLWdyb3VwX19sb2FkaW5nLWluZGljYXRvciBldWktaWNvbiBldWktaWNvbi1yZWZyZXNoIGV1aS1pY29uLXNwaW4gdXgtdS1jb2xvci1wcmltYXJ5XCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXgtaW5wdXQtZ3JvdXAtYXBwZW5kXCIgKm5nSWY9XCJpc0Ryb3Bkb3duRmlsdGVyXCI+XG4gICAgICAgICAgICA8dXgtZHJvcGRvd24tYnV0dG9uXG4gICAgICAgICAgICAgICAgW2hhc0l0ZW1zXT1cImRyb3Bkb3duRmlsdGVySGFzSXRlbXNcIlxuICAgICAgICAgICAgICAgIFtsaW5rc109XCJkcm9wZG93bkZpbHRlckxpbmtzXCJcbiAgICAgICAgICAgICAgICBbc3R5bGVDbGFzc109XCIndXgtZHJvcGRvd24tYnV0dG9uLXNlYXJjaCAnICsgZHJvcGRvd25GaWx0ZXJTdHlsZUNsYXNzXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7ZHJvcGRvd25GaWx0ZXJMYWJlbCA/IGRyb3Bkb3duRmlsdGVyTGFiZWw6ICgnZXVpLkFEVkFOQ0VEU0VBUkNIJyB8IHRyYW5zbGF0ZSl9fVwiXG4gICAgICAgICAgICAgICAgW3R5cGVDbGFzc109XCJkcm9wZG93bkZpbHRlclR5cGVDbGFzc1wiXG4gICAgICAgICAgICAgICAgW2ljb25DbGFzc109XCJkcm9wZG93bkZpbHRlckljb25DbGFzc1wiXG4gICAgICAgICAgICAgICAgW2lzU3BsaXRCdXR0b25Ub2dnbGVdPVwiZHJvcGRvd25GaWx0ZXJJc1NwbGl0QnV0dG9uVG9nZ2xlXCJcbiAgICAgICAgICAgICAgICBbaXNEcm9wRG93blJpZ2h0QWxpZ25lZF09XCJkcm9wZG93bkZpbHRlcklzRHJvcERvd25SaWdodEFsaWduZWRcIlxuICAgICAgICAgICAgICAgIFtpc1VwZGF0ZUxhYmVsRnJvbVNlbGVjdGVkSXRlbV09XCJkcm9wZG93bkZpbHRlcklzVXBkYXRlTGFiZWxGcm9tU2VsZWN0ZWRJdGVtXCJcbiAgICAgICAgICAgICAgICBbaXNPdXRsaW5lXT1cImRyb3Bkb3duRmlsdGVySXNPdXRsaW5lXCJcbiAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCJkcm9wZG93bkZpbHRlcklzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCJkcm9wZG93bkZpbHRlcldpZHRoXCJcbiAgICAgICAgICAgICAgICBbZHJvcGRvd25NYXhIZWlnaHRdPVwiZHJvcGRvd25GaWx0ZXJNYXhIZWlnaHRcIj5cblxuICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUZpbHRlckNvbnRlbnRcIj4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInV4RmllbGRTZWFyY2hGaWx0ZXJDb250ZW50XCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDwhLS0gPC9uZy1jb250YWluZXI+IC0tPlxuXG4gICAgICAgICAgICA8L3V4LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXgtaW5wdXQtZ3JvdXAtYXBwZW5kXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidXgtYnV0dG9uIHV4LWJ1dHRvbi0te3tzZWFyY2hCdXR0b25UeXBlQ2xhc3N9fSB1eC1maWVsZC1zZWFyY2hfX3NlYXJjaC1idXR0b25cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uU2VhcmNoKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFzZWFyY2hCdXR0b25Bc0ljb25cIj57e3NlYXJjaEJ1dHRvbkxhYmVsID8gc2VhcmNoQnV0dG9uTGFiZWw6ICgnZXVpLlNFQVJDSCcgfCB0cmFuc2xhdGUpfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyAqbmdJZj1cInNlYXJjaEJ1dHRvbkFzSWNvblwiIGljb249XCJldWktc2VhcmNoXCIgZmlsbENvbG9yPVwid2hpdGVcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiY3VzdG9tRmlsdGVyQ29udGVudCAmJiBpc0ZpbHRlckJ1dHRvblRyaWdnZXJcIiBjbGFzcz1cInV4LWlucHV0LWdyb3VwLWFwcGVuZFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInV4LWJ1dHRvbiB1eC1idXR0b24tLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiaXNGaWx0ZXJBY3RpdmUgPSAhaXNGaWx0ZXJBY3RpdmVcIj5cbiAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnICpuZ0lmPVwiaXNGaWx0ZXJBY3RpdmVcIiBpY29uPVwiZXVpLWNsb3NlXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyAqbmdJZj1cIiFpc0ZpbHRlckFjdGl2ZVwiIGljb249XCJldWktZmlsdGVyXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|