@fundamental-ngx/core 0.36.0-rc.21 → 0.36.0-rc.22
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/action-bar/package.json +1 -1
- package/action-sheet/package.json +1 -1
- package/alert/package.json +1 -1
- package/avatar/package.json +1 -1
- package/avatar-group/package.json +1 -1
- package/bar/package.json +1 -1
- package/breadcrumb/breadcrumb.component.d.ts +6 -3
- package/breadcrumb/esm2020/breadcrumb.component.mjs +13 -5
- package/breadcrumb/fesm2015/fundamental-ngx-core-breadcrumb.mjs +14 -6
- package/breadcrumb/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/breadcrumb/fesm2020/fundamental-ngx-core-breadcrumb.mjs +14 -6
- package/breadcrumb/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/breadcrumb/package.json +1 -1
- package/busy-indicator/package.json +1 -1
- package/button/package.json +1 -1
- package/calendar/package.json +1 -1
- package/card/package.json +1 -1
- package/carousel/package.json +1 -1
- package/checkbox/package.json +1 -1
- package/combobox/package.json +1 -1
- package/content-density/package.json +2 -2
- package/date-picker/package.json +1 -1
- package/datetime/package.json +1 -1
- package/datetime-picker/package.json +1 -1
- package/dialog/package.json +1 -1
- package/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.d.ts +7 -1
- package/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.d.ts +3 -1
- package/dynamic-page/dynamic-page.service.d.ts +2 -0
- package/dynamic-page/esm2020/dynamic-page-header/actions/dynamic-page-global-actions.component.mjs +6 -3
- package/dynamic-page/esm2020/dynamic-page-header/actions/dynamic-page-layout-actions.component.mjs +19 -5
- package/dynamic-page/esm2020/dynamic-page-header/header/dynamic-page-header.component.mjs +8 -4
- package/dynamic-page/esm2020/dynamic-page-header/subheader/dynamic-page-subheader.component.mjs +3 -3
- package/dynamic-page/esm2020/dynamic-page.service.mjs +3 -1
- package/dynamic-page/fesm2015/fundamental-ngx-core-dynamic-page.mjs +50 -30
- package/dynamic-page/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/dynamic-page/fesm2020/fundamental-ngx-core-dynamic-page.mjs +50 -30
- package/dynamic-page/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/dynamic-page/package.json +1 -1
- package/dynamic-side-content/package.json +1 -1
- package/esm2020/breadcrumb/breadcrumb.component.mjs +13 -5
- package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-global-actions.component.mjs +6 -3
- package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.mjs +19 -5
- package/esm2020/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +8 -4
- package/esm2020/dynamic-page/dynamic-page-header/subheader/dynamic-page-subheader.component.mjs +3 -3
- package/esm2020/dynamic-page/dynamic-page.service.mjs +3 -1
- package/esm2020/flexible-column-layout/flexible-column-layout.component.mjs +9 -3
- package/facets/package.json +1 -1
- package/feed-input/package.json +1 -1
- package/feed-list-item/package.json +1 -1
- package/fesm2015/fundamental-ngx-core-breadcrumb.mjs +14 -6
- package/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +50 -30
- package/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-flexible-column-layout.mjs +8 -2
- package/fesm2015/fundamental-ngx-core-flexible-column-layout.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-breadcrumb.mjs +14 -6
- package/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +50 -30
- package/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-flexible-column-layout.mjs +8 -2
- package/fesm2020/fundamental-ngx-core-flexible-column-layout.mjs.map +1 -1
- package/file-uploader/package.json +1 -1
- package/fixed-card-layout/package.json +1 -1
- package/flexible-column-layout/esm2020/flexible-column-layout.component.mjs +9 -3
- package/flexible-column-layout/fesm2015/fundamental-ngx-core-flexible-column-layout.mjs +8 -2
- package/flexible-column-layout/fesm2015/fundamental-ngx-core-flexible-column-layout.mjs.map +1 -1
- package/flexible-column-layout/fesm2020/fundamental-ngx-core-flexible-column-layout.mjs +8 -2
- package/flexible-column-layout/fesm2020/fundamental-ngx-core-flexible-column-layout.mjs.map +1 -1
- package/flexible-column-layout/flexible-column-layout.component.d.ts +7 -1
- package/flexible-column-layout/package.json +1 -1
- package/form/package.json +1 -1
- package/formatted-text/package.json +1 -1
- package/grid-list/package.json +1 -1
- package/icon/package.json +1 -1
- package/illustrated-message/package.json +1 -1
- package/infinite-scroll/package.json +1 -1
- package/info-label/package.json +1 -1
- package/inline-help/package.json +1 -1
- package/input-group/package.json +1 -1
- package/layout-grid/package.json +1 -1
- package/layout-panel/package.json +1 -1
- package/link/package.json +1 -1
- package/list/package.json +1 -1
- package/menu/package.json +1 -1
- package/message-box/package.json +1 -1
- package/message-strip/package.json +1 -1
- package/message-toast/package.json +1 -1
- package/micro-process-flow/package.json +1 -1
- package/mobile-mode/package.json +1 -1
- package/multi-input/package.json +1 -1
- package/nested-list/package.json +1 -1
- package/notification/package.json +1 -1
- package/object-identifier/package.json +1 -1
- package/object-marker/package.json +1 -1
- package/object-number/package.json +1 -1
- package/object-status/package.json +1 -1
- package/overflow-layout/package.json +4 -4
- package/package.json +2 -2
- package/pagination/package.json +1 -1
- package/panel/package.json +1 -1
- package/popover/package.json +1 -1
- package/product-switch/package.json +1 -1
- package/progress-indicator/package.json +1 -1
- package/quick-view/package.json +1 -1
- package/radio/package.json +1 -1
- package/rating-indicator/package.json +1 -1
- package/resizable-card-layout/package.json +1 -1
- package/scroll-spy/package.json +1 -1
- package/scrollbar/package.json +1 -1
- package/segmented-button/package.json +1 -1
- package/select/package.json +1 -1
- package/shared/package.json +1 -1
- package/shellbar/package.json +1 -1
- package/side-navigation/package.json +1 -1
- package/slider/package.json +1 -1
- package/split-button/package.json +1 -1
- package/splitter/package.json +1 -1
- package/status-indicator/package.json +1 -1
- package/step-input/package.json +1 -1
- package/switch/package.json +1 -1
- package/table/package.json +1 -1
- package/tabs/package.json +1 -1
- package/text/package.json +1 -1
- package/theming/package.json +1 -1
- package/tile/package.json +1 -1
- package/time/package.json +1 -1
- package/time-picker/package.json +1 -1
- package/timeline/package.json +1 -1
- package/title/package.json +1 -1
- package/token/package.json +1 -1
- package/toolbar/package.json +1 -1
- package/tree/package.json +1 -1
- package/upload-collection/package.json +1 -1
- package/utils/package.json +1 -1
- package/vertical-navigation/package.json +1 -1
- package/wizard/package.json +1 -1
|
@@ -356,10 +356,10 @@ class FlexibleColumnLayoutComponent {
|
|
|
356
356
|
}
|
|
357
357
|
}
|
|
358
358
|
FlexibleColumnLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FlexibleColumnLayoutComponent, deps: [{ token: FD_FLEXIBLE_LAYOUT_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
359
|
-
FlexibleColumnLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FlexibleColumnLayoutComponent, selector: "fd-flexible-column-layout", inputs: { backgroundDesign: "backgroundDesign", layout: "layout", layoutDefinitions: "layoutDefinitions", smBreakPoint: "smBreakPoint", lgBreakPoint: "lgBreakPoint", customOnResizeFunction: "customOnResizeFunction" }, outputs: { layoutChange: "layoutChange" }, queries: [{ propertyName: "startColumn", first: true, predicate: ["startColumn"], descendants: true }, { propertyName: "midColumn", first: true, predicate: ["midColumn"], descendants: true }, { propertyName: "endColumn", first: true, predicate: ["endColumn"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"fd-flexible-column-layout\"\n [class.fd-flexible-column-layout--translucent]=\"backgroundDesign === 'translucent'\"\n [class.fd-flexible-column-layout--transparent]=\"backgroundDesign === 'transparent'\"\n>\n <!-- Start/Left/First Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.start\"\n [style.visibility]=\"_columnLayout.start === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.start === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.start === 0\"\n >\n <ng-container *ngTemplateOutlet=\"startColumn\"></ng-container>\n </div>\n <!-- Left Separator -->\n <div
|
|
359
|
+
FlexibleColumnLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FlexibleColumnLayoutComponent, selector: "fd-flexible-column-layout", inputs: { backgroundDesign: "backgroundDesign", layout: "layout", layoutDefinitions: "layoutDefinitions", smBreakPoint: "smBreakPoint", lgBreakPoint: "lgBreakPoint", customOnResizeFunction: "customOnResizeFunction", separatorAriaLabel: "separatorAriaLabel", expandTitle: "expandTitle", collapseTitle: "collapseTitle" }, outputs: { layoutChange: "layoutChange" }, queries: [{ propertyName: "startColumn", first: true, predicate: ["startColumn"], descendants: true }, { propertyName: "midColumn", first: true, predicate: ["midColumn"], descendants: true }, { propertyName: "endColumn", first: true, predicate: ["endColumn"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"fd-flexible-column-layout\"\n [class.fd-flexible-column-layout--translucent]=\"backgroundDesign === 'translucent'\"\n [class.fd-flexible-column-layout--transparent]=\"backgroundDesign === 'transparent'\"\n>\n <!-- Start/Left/First Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.start\"\n [style.visibility]=\"_columnLayout.start === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.start === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.start === 0\"\n >\n <ng-container *ngTemplateOutlet=\"startColumn\"></ng-container>\n </div>\n <!-- Left Separator -->\n <div\n *ngIf=\"_leftColumnSeparator\"\n class=\"fd-flexible-column-layout__separator\"\n [attr.aria-label]=\"separatorAriaLabel\"\n >\n <button\n fd-button\n fdCompact\n fdType=\"transparent\"\n class=\"fd-flexible-column-layout__button\"\n [title]=\"_leftColumnSeparator === 'left' ? expandTitle : collapseTitle\"\n (click)=\"_handleLeftColumnSeparatorClick()\"\n >\n <i\n [class]=\"_leftColumnSeparator ? 'sap-icon--slim-arrow-' + _leftColumnSeparator : ''\"\n role=\"presentation\"\n ></i>\n </button>\n </div>\n <!-- Middle/Second Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.mid\"\n [style.visibility]=\"_columnLayout.mid === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.mid === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.mid === 0\"\n >\n <ng-container *ngTemplateOutlet=\"midColumn\"></ng-container>\n </div>\n <!-- Right Separator -->\n <div\n *ngIf=\"_rightColumnSeparator\"\n class=\"fd-flexible-column-layout__separator\"\n [attr.aria-label]=\"separatorAriaLabel\"\n >\n <button\n fd-button\n fdCompact\n fdType=\"transparent\"\n class=\"fd-flexible-column-layout__button\"\n [title]=\"_rightColumnSeparator === 'left' ? expandTitle : collapseTitle\"\n (click)=\"_handleRightColumnSeparatorClick()\"\n >\n <i\n [class]=\"_rightColumnSeparator ? 'sap-icon--slim-arrow-' + _rightColumnSeparator : ''\"\n role=\"presentation\"\n ></i>\n </button>\n </div>\n <!-- End/Right/Third Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.end\"\n [style.visibility]=\"_columnLayout.end === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.end === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.end === 0\"\n >\n <ng-container *ngTemplateOutlet=\"endColumn\"></ng-container>\n </div>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.4\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-flexible-column-layout{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:row;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-flexible-column-layout:after,.fd-flexible-column-layout:before{box-sizing:inherit;font-size:inherit}.fd-flexible-column-layout__separator{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:var(--fdFlexibleColumnLayout_Background_Solid);border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;min-width:1rem;padding:0;position:relative;width:1rem}.fd-flexible-column-layout__separator:after,.fd-flexible-column-layout__separator:before{-webkit-box-sizing:inherit;-webkit-transition:all .1s ease-in;-webkit-transform:translateX(-50%);box-sizing:inherit;content:\"\";display:block;font-size:inherit;height:4rem;left:50%;position:absolute;transform:translate(-50%);transition:all .1s ease-in;width:.0625rem}.fd-flexible-column-layout__separator:before{background-image:linear-gradient(to top,var(--fdFlexibleColumnLayout_Toggle_Image_Color),transparent);bottom:calc(50% + 1rem)}.fd-flexible-column-layout__separator:after{background-image:linear-gradient(to bottom,var(--fdFlexibleColumnLayout_Toggle_Image_Color),transparent);top:calc(50% + 1rem)}.fd-flexible-column-layout__separator.is-hover:after,.fd-flexible-column-layout__separator.is-hover:before,.fd-flexible-column-layout__separator:hover:after,.fd-flexible-column-layout__separator:hover:before{height:7rem}.fd-flexible-column-layout .fd-flexible-column-layout__button{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-transform:translate(-50%,-50%);height:2rem;justify-content:center;left:50%;min-width:1.5rem;padding:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:1.5rem;z-index:2}.fd-flexible-column-layout__column{-webkit-box-sizing:border-box;-webkit-transition:width .56s cubic-bezier(.1,0,.05,1),visibility .56s ease-in;border:0;border-left:var(--fdFlexibleColumnLayout_Border);border-right:var(--fdFlexibleColumnLayout_Border);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;min-width:20rem;padding:0;transition:width .56s cubic-bezier(.1,0,.05,1),visibility .56s ease-in}.fd-flexible-column-layout__column:after,.fd-flexible-column-layout__column:before{box-sizing:inherit;font-size:inherit}.fd-flexible-column-layout__column:first-child{border-left:none;margin-left:0}.fd-flexible-column-layout__column:last-child{border-right:none;margin-bottom:0;margin-right:0}.fd-flexible-column-layout__column--hidden{border:none;min-width:0}.fd-flexible-column-layout--translucent .fd-flexible-column-layout__separator{background-color:var(--fdFlexibleColumnLayout_Background_Translucent)}.fd-flexible-column-layout--transparent .fd-flexible-column-layout__separator{background-color:var(--fdFlexibleColumnLayout_Background_Transparent)}.fd-button.fd-flexible-column-layout__button{z-index:1}.fd-flexible-column-layout__column{transition:width .56s cubic-bezier(.1,0,.05,1),visibility .1s ease-in;overflow:hidden}.fd-flexible-column-layout__column{min-width:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: i3.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
360
360
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FlexibleColumnLayoutComponent, decorators: [{
|
|
361
361
|
type: Component,
|
|
362
|
-
args: [{ selector: 'fd-flexible-column-layout', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"fd-flexible-column-layout\"\n [class.fd-flexible-column-layout--translucent]=\"backgroundDesign === 'translucent'\"\n [class.fd-flexible-column-layout--transparent]=\"backgroundDesign === 'transparent'\"\n>\n <!-- Start/Left/First Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.start\"\n [style.visibility]=\"_columnLayout.start === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.start === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.start === 0\"\n >\n <ng-container *ngTemplateOutlet=\"startColumn\"></ng-container>\n </div>\n <!-- Left Separator -->\n <div
|
|
362
|
+
args: [{ selector: 'fd-flexible-column-layout', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"fd-flexible-column-layout\"\n [class.fd-flexible-column-layout--translucent]=\"backgroundDesign === 'translucent'\"\n [class.fd-flexible-column-layout--transparent]=\"backgroundDesign === 'transparent'\"\n>\n <!-- Start/Left/First Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.start\"\n [style.visibility]=\"_columnLayout.start === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.start === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.start === 0\"\n >\n <ng-container *ngTemplateOutlet=\"startColumn\"></ng-container>\n </div>\n <!-- Left Separator -->\n <div\n *ngIf=\"_leftColumnSeparator\"\n class=\"fd-flexible-column-layout__separator\"\n [attr.aria-label]=\"separatorAriaLabel\"\n >\n <button\n fd-button\n fdCompact\n fdType=\"transparent\"\n class=\"fd-flexible-column-layout__button\"\n [title]=\"_leftColumnSeparator === 'left' ? expandTitle : collapseTitle\"\n (click)=\"_handleLeftColumnSeparatorClick()\"\n >\n <i\n [class]=\"_leftColumnSeparator ? 'sap-icon--slim-arrow-' + _leftColumnSeparator : ''\"\n role=\"presentation\"\n ></i>\n </button>\n </div>\n <!-- Middle/Second Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.mid\"\n [style.visibility]=\"_columnLayout.mid === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.mid === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.mid === 0\"\n >\n <ng-container *ngTemplateOutlet=\"midColumn\"></ng-container>\n </div>\n <!-- Right Separator -->\n <div\n *ngIf=\"_rightColumnSeparator\"\n class=\"fd-flexible-column-layout__separator\"\n [attr.aria-label]=\"separatorAriaLabel\"\n >\n <button\n fd-button\n fdCompact\n fdType=\"transparent\"\n class=\"fd-flexible-column-layout__button\"\n [title]=\"_rightColumnSeparator === 'left' ? expandTitle : collapseTitle\"\n (click)=\"_handleRightColumnSeparatorClick()\"\n >\n <i\n [class]=\"_rightColumnSeparator ? 'sap-icon--slim-arrow-' + _rightColumnSeparator : ''\"\n role=\"presentation\"\n ></i>\n </button>\n </div>\n <!-- End/Right/Third Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.end\"\n [style.visibility]=\"_columnLayout.end === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.end === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.end === 0\"\n >\n <ng-container *ngTemplateOutlet=\"endColumn\"></ng-container>\n </div>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.4\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-flexible-column-layout{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:row;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-flexible-column-layout:after,.fd-flexible-column-layout:before{box-sizing:inherit;font-size:inherit}.fd-flexible-column-layout__separator{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:var(--fdFlexibleColumnLayout_Background_Solid);border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;min-width:1rem;padding:0;position:relative;width:1rem}.fd-flexible-column-layout__separator:after,.fd-flexible-column-layout__separator:before{-webkit-box-sizing:inherit;-webkit-transition:all .1s ease-in;-webkit-transform:translateX(-50%);box-sizing:inherit;content:\"\";display:block;font-size:inherit;height:4rem;left:50%;position:absolute;transform:translate(-50%);transition:all .1s ease-in;width:.0625rem}.fd-flexible-column-layout__separator:before{background-image:linear-gradient(to top,var(--fdFlexibleColumnLayout_Toggle_Image_Color),transparent);bottom:calc(50% + 1rem)}.fd-flexible-column-layout__separator:after{background-image:linear-gradient(to bottom,var(--fdFlexibleColumnLayout_Toggle_Image_Color),transparent);top:calc(50% + 1rem)}.fd-flexible-column-layout__separator.is-hover:after,.fd-flexible-column-layout__separator.is-hover:before,.fd-flexible-column-layout__separator:hover:after,.fd-flexible-column-layout__separator:hover:before{height:7rem}.fd-flexible-column-layout .fd-flexible-column-layout__button{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-transform:translate(-50%,-50%);height:2rem;justify-content:center;left:50%;min-width:1.5rem;padding:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:1.5rem;z-index:2}.fd-flexible-column-layout__column{-webkit-box-sizing:border-box;-webkit-transition:width .56s cubic-bezier(.1,0,.05,1),visibility .56s ease-in;border:0;border-left:var(--fdFlexibleColumnLayout_Border);border-right:var(--fdFlexibleColumnLayout_Border);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;min-width:20rem;padding:0;transition:width .56s cubic-bezier(.1,0,.05,1),visibility .56s ease-in}.fd-flexible-column-layout__column:after,.fd-flexible-column-layout__column:before{box-sizing:inherit;font-size:inherit}.fd-flexible-column-layout__column:first-child{border-left:none;margin-left:0}.fd-flexible-column-layout__column:last-child{border-right:none;margin-bottom:0;margin-right:0}.fd-flexible-column-layout__column--hidden{border:none;min-width:0}.fd-flexible-column-layout--translucent .fd-flexible-column-layout__separator{background-color:var(--fdFlexibleColumnLayout_Background_Translucent)}.fd-flexible-column-layout--transparent .fd-flexible-column-layout__separator{background-color:var(--fdFlexibleColumnLayout_Background_Transparent)}.fd-button.fd-flexible-column-layout__button{z-index:1}.fd-flexible-column-layout__column{transition:width .56s cubic-bezier(.1,0,.05,1),visibility .1s ease-in;overflow:hidden}.fd-flexible-column-layout__column{min-width:0}\n"] }]
|
|
363
363
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
364
364
|
type: Inject,
|
|
365
365
|
args: [FD_FLEXIBLE_LAYOUT_CONFIG]
|
|
@@ -386,6 +386,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
386
386
|
type: Input
|
|
387
387
|
}], customOnResizeFunction: [{
|
|
388
388
|
type: Input
|
|
389
|
+
}], separatorAriaLabel: [{
|
|
390
|
+
type: Input
|
|
391
|
+
}], expandTitle: [{
|
|
392
|
+
type: Input
|
|
393
|
+
}], collapseTitle: [{
|
|
394
|
+
type: Input
|
|
389
395
|
}] } });
|
|
390
396
|
|
|
391
397
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-flexible-column-layout.mjs","sources":["../../../../libs/core/src/lib/flexible-column-layout/constants.ts","../../../../libs/core/src/lib/flexible-column-layout/flexible-column-layout.component.ts","../../../../libs/core/src/lib/flexible-column-layout/flexible-column-layout.component.html","../../../../libs/core/src/lib/flexible-column-layout/flexible-column-layout.module.ts","../../../../libs/core/src/lib/flexible-column-layout/fundamental-ngx-core-flexible-column-layout.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const ONE_COLUMN_START_FULL_SCREEN = 'OneColumnStartFullScreen';\nexport const ONE_COLUMN_MID_FULL_SCREEN = 'OneColumnMidFullScreen';\nexport const ONE_COLUMN_END_FULL_SCREEN = 'OneColumnEndFullScreen';\nexport const TWO_COLUMNS_START_EXPANDED = 'TwoColumnsStartExpanded';\nexport const TWO_COLUMNS_MID_EXPANDED = 'TwoColumnsMidExpanded';\nexport const TWO_COLUMNS_END_EXPANDED = 'TwoColumnsEndExpanded';\nexport const THREE_COLUMNS_MID_EXPANDED = 'ThreeColumnsMidExpanded';\nexport const THREE_COLUMNS_END_EXPANDED = 'ThreeColumnsEndExpanded';\nexport const THREE_COLUMNS_START_MINIMIZED = 'ThreeColumnsStartMinimized';\nexport const THREE_COLUMNS_END_MINIMIZED = 'ThreeColumnsEndMinimized';\n\nexport const SM_SCREEN_SIZE = 'sm';\nexport const MD_SCREEN_SIZE = 'md';\nexport const LG_SCREEN_SIZE = 'lg';\n\nexport type ScreenSize = 'sm' | 'md' | 'lg';\n\nexport type FlexibleColumnLayout =\n | 'OneColumnStartFullScreen'\n | 'OneColumnMidFullScreen'\n | 'OneColumnEndFullScreen'\n | 'TwoColumnsStartExpanded'\n | 'TwoColumnsMidExpanded'\n | 'TwoColumnsEndExpanded'\n | 'ThreeColumnsMidExpanded'\n | 'ThreeColumnsEndExpanded'\n | 'ThreeColumnsStartMinimized'\n | 'ThreeColumnsEndMinimized';\n\nexport type ColumnSeparatorValue = 'right' | 'left' | null;\n\nexport interface FlexibleColumnSettings {\n start: number;\n mid: number;\n end: number;\n}\n\nexport type FlexibleColumnLayoutDefinition = { [key in FlexibleColumnLayout]: FlexibleColumnSettings };\n\nexport interface FlexibleLayoutConfig {\n layouts: FlexibleColumnLayoutDefinition;\n}\n\nexport const DEFAULT_FLEXIBLE_LAYOUT_CONFIG: FlexibleLayoutConfig = {\n layouts: {\n OneColumnStartFullScreen: { start: 100, mid: 0, end: 0 },\n OneColumnMidFullScreen: { start: 0, mid: 100, end: 0 },\n OneColumnEndFullScreen: { start: 0, mid: 0, end: 100 },\n TwoColumnsStartExpanded: { start: 67, mid: 33, end: 0 },\n TwoColumnsMidExpanded: { start: 33, mid: 67, end: 0 },\n TwoColumnsEndExpanded: { start: 0, mid: 33, end: 67 },\n ThreeColumnsMidExpanded: { start: 25, mid: 50, end: 25 },\n ThreeColumnsEndExpanded: { start: 25, mid: 25, end: 50 },\n ThreeColumnsStartMinimized: { start: 0, mid: 67, end: 33 },\n ThreeColumnsEndMinimized: { start: 33, mid: 67, end: 0 }\n }\n};\n\nexport const FD_FLEXIBLE_LAYOUT_CONFIG = new InjectionToken<FlexibleLayoutConfig>('FdFlexibleLayoutConfig');\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport {\n ColumnSeparatorValue,\n FD_FLEXIBLE_LAYOUT_CONFIG,\n FlexibleLayoutConfig,\n FlexibleColumnLayout,\n FlexibleColumnLayoutDefinition,\n LG_SCREEN_SIZE,\n MD_SCREEN_SIZE,\n ONE_COLUMN_END_FULL_SCREEN,\n ONE_COLUMN_MID_FULL_SCREEN,\n ONE_COLUMN_START_FULL_SCREEN,\n ScreenSize,\n SM_SCREEN_SIZE,\n THREE_COLUMNS_END_EXPANDED,\n THREE_COLUMNS_END_MINIMIZED,\n THREE_COLUMNS_MID_EXPANDED,\n THREE_COLUMNS_START_MINIMIZED,\n TWO_COLUMNS_END_EXPANDED,\n TWO_COLUMNS_MID_EXPANDED,\n TWO_COLUMNS_START_EXPANDED\n} from './constants';\n\n@Component({\n selector: 'fd-flexible-column-layout',\n templateUrl: './flexible-column-layout.component.html',\n styleUrls: ['./flexible-column-layout.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class FlexibleColumnLayoutComponent implements AfterViewInit, OnChanges, OnDestroy, OnInit {\n /**\n * The template that provides the content of the first/start/left column\n */\n @ContentChild('startColumn')\n startColumn: TemplateRef<any>;\n\n /**\n * The template that provides the content of the middle column\n */\n @ContentChild('midColumn')\n midColumn: TemplateRef<any>;\n\n /**\n * The template that provides the content of the last/end/right column\n */\n @ContentChild('endColumn')\n endColumn: TemplateRef<any>;\n\n /**\n * The background design of the component\n * Options include: 'solid' | 'translucent' | 'transparent'\n * The default is set to 'solid'\n */\n @Input()\n backgroundDesign: 'solid' | 'translucent' | 'transparent' = 'solid';\n\n /**\n * The layout of the component\n * Options include: 'OneColumnStartFullScreen' | 'OneColumnMidFullScreen' |\n * 'OneColumnEndFullScreen' | 'TwoColumnsStartExpanded' | 'TwoColumnsMidExpanded' |\n * 'TwoColumnsEndExpanded' | 'ThreeColumnsMidExpanded' | 'ThreeColumnsEndExpanded' |\n * 'ThreeColumnsStartMinimized' | 'ThreeColumnsEndMinimized'\n */\n @Input()\n layout: FlexibleColumnLayout = ONE_COLUMN_START_FULL_SCREEN;\n\n /**\n * Mapping of the layout name and the column layout in %\n */\n @Input()\n layoutDefinitions: FlexibleColumnLayoutDefinition = this._config.layouts;\n\n /**\n * The event emitted on layout value change.\n */\n @Output()\n layoutChange: EventEmitter<FlexibleColumnLayout> = new EventEmitter<FlexibleColumnLayout>();\n\n /**\n * User defined break point for SM screens\n * Default (Fiori 3) value is 960\n */\n @Input()\n smBreakPoint = 960;\n\n /**\n * User-defined break point for LG screens\n * the default (Fiori 3) value is 1280\n */\n @Input()\n lgBreakPoint = 1280;\n\n /**\n * User-defined onResize function\n */\n @Input()\n customOnResizeFunction: () => void;\n\n /**\n * @hidden\n * left column separator value (between start and middle columns)\n * that specifies the direction of the arrow and\n * if the separator is visible\n * Options include: 'left', 'right' and null\n */\n _leftColumnSeparator: ColumnSeparatorValue = null;\n\n /**\n * @hidden\n * right column separator value (between middle and end columns)\n * that specifies the direction of the arrow and\n * if the separator is visible\n * Options include: 'left', 'right' and null\n */\n _rightColumnSeparator: ColumnSeparatorValue = null;\n\n /**\n * @hidden\n * allows to keep track of the previos layout\n * so we can go back to it on window resize\n */\n private _previousLayout: FlexibleColumnLayout = this.layout;\n\n /** @hidden */\n private _screenSize: ScreenSize = LG_SCREEN_SIZE;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /**\n * @hidden\n * the column layout representing the distribution of the width\n * between the first (start), the middle and the last(end) column\n */\n _columnLayout: { start: number; mid: number; end: number } = this.layoutDefinitions[this.layout];\n\n /**\n * @hidden\n * set to 'true' if the layout is changed to fullscreen on window resize\n * this will allow the layout to switch to previous mode on SM->MD transition\n * if a layout is set by the user to fullscreen, it should persist on window resize\n */\n private _responsiveFullscreenLayout = false;\n\n constructor(@Inject(FD_FLEXIBLE_LAYOUT_CONFIG) private readonly _config: FlexibleLayoutConfig) {}\n\n /**\n * @hidden\n * function that handles the click events on the left separator\n * and updates the layout\n */\n _handleLeftColumnSeparatorClick(): void {\n switch (this.layout) {\n case TWO_COLUMNS_START_EXPANDED:\n this._updateCurrentLayout(TWO_COLUMNS_MID_EXPANDED);\n break;\n case TWO_COLUMNS_MID_EXPANDED:\n this._updateCurrentLayout(TWO_COLUMNS_START_EXPANDED);\n break;\n case THREE_COLUMNS_MID_EXPANDED:\n this._updateCurrentLayout(THREE_COLUMNS_END_MINIMIZED);\n break;\n case THREE_COLUMNS_END_MINIMIZED:\n this._updateCurrentLayout(TWO_COLUMNS_START_EXPANDED);\n break;\n case THREE_COLUMNS_START_MINIMIZED:\n this._updateCurrentLayout(THREE_COLUMNS_END_MINIMIZED);\n break;\n }\n }\n\n /**\n * @hidden\n * function that handles the click events on the right separator\n * and updates the layout\n */\n _handleRightColumnSeparatorClick(): void {\n switch (this.layout) {\n case TWO_COLUMNS_END_EXPANDED:\n this._updateCurrentLayout(THREE_COLUMNS_START_MINIMIZED);\n break;\n case THREE_COLUMNS_MID_EXPANDED:\n this._updateCurrentLayout(THREE_COLUMNS_END_EXPANDED);\n break;\n case THREE_COLUMNS_END_EXPANDED:\n this._updateCurrentLayout(THREE_COLUMNS_MID_EXPANDED);\n break;\n case THREE_COLUMNS_END_MINIMIZED:\n this._updateCurrentLayout(THREE_COLUMNS_MID_EXPANDED);\n break;\n case THREE_COLUMNS_START_MINIMIZED:\n this._updateCurrentLayout(TWO_COLUMNS_END_EXPANDED);\n break;\n }\n }\n\n /**\n * @hidden\n * function to determine the screen size in 'sm' | 'md' | 'lg' | 'xl'\n * format depending on the window size in px\n */\n private _getScreenSize(size: number): ScreenSize {\n if (size > this.lgBreakPoint) {\n return LG_SCREEN_SIZE;\n } else if (size > this.smBreakPoint && size <= this.lgBreakPoint) {\n return MD_SCREEN_SIZE;\n } else {\n return SM_SCREEN_SIZE;\n }\n }\n\n /**\n * @hidden\n * handles the change of the layouts on reaching a break point\n */\n private _responsiveLayoutChangeHandler(): void {\n this._screenSize = this._getScreenSize(window.innerWidth);\n\n switch (this.layout) {\n case ONE_COLUMN_MID_FULL_SCREEN:\n case ONE_COLUMN_END_FULL_SCREEN: {\n if (\n this._screenSize !== SM_SCREEN_SIZE &&\n this.layout !== this._previousLayout &&\n this._responsiveFullscreenLayout\n ) {\n this._responsiveFullscreenLayout = false;\n this._updateCurrentLayout(this._previousLayout);\n }\n break;\n }\n\n case TWO_COLUMNS_START_EXPANDED:\n case TWO_COLUMNS_MID_EXPANDED: {\n if (this._screenSize === SM_SCREEN_SIZE) {\n this._responsiveFullscreenLayout = true;\n this._updateCurrentLayout(ONE_COLUMN_MID_FULL_SCREEN);\n }\n break;\n }\n\n case TWO_COLUMNS_END_EXPANDED: {\n if (this._screenSize === SM_SCREEN_SIZE) {\n this._responsiveFullscreenLayout = true;\n this._updateCurrentLayout(ONE_COLUMN_END_FULL_SCREEN);\n }\n\n if (this._screenSize === LG_SCREEN_SIZE) {\n this._updateCurrentLayout(THREE_COLUMNS_END_EXPANDED);\n }\n break;\n }\n\n case THREE_COLUMNS_START_MINIMIZED: {\n if (this._screenSize === SM_SCREEN_SIZE) {\n this._responsiveFullscreenLayout = true;\n this._updateCurrentLayout(ONE_COLUMN_END_FULL_SCREEN);\n }\n\n if (this._screenSize === LG_SCREEN_SIZE) {\n this._updateCurrentLayout(THREE_COLUMNS_MID_EXPANDED);\n }\n break;\n }\n\n case THREE_COLUMNS_END_MINIMIZED: {\n if (this._screenSize === SM_SCREEN_SIZE) {\n this._responsiveFullscreenLayout = true;\n this._updateCurrentLayout(ONE_COLUMN_END_FULL_SCREEN);\n }\n\n if (this._screenSize === LG_SCREEN_SIZE) {\n this._updateCurrentLayout(THREE_COLUMNS_END_MINIMIZED);\n }\n break;\n }\n\n case THREE_COLUMNS_MID_EXPANDED: {\n if (this._screenSize === SM_SCREEN_SIZE) {\n this._responsiveFullscreenLayout = true;\n this._updateCurrentLayout(ONE_COLUMN_END_FULL_SCREEN);\n }\n\n if (this._screenSize === MD_SCREEN_SIZE) {\n this._updateCurrentLayout(THREE_COLUMNS_START_MINIMIZED);\n }\n break;\n }\n\n case THREE_COLUMNS_END_EXPANDED: {\n if (this._screenSize === SM_SCREEN_SIZE) {\n this._responsiveFullscreenLayout = true;\n this._updateCurrentLayout(ONE_COLUMN_END_FULL_SCREEN);\n }\n\n if (this._screenSize === MD_SCREEN_SIZE) {\n this._updateCurrentLayout(TWO_COLUMNS_END_EXPANDED);\n }\n break;\n }\n }\n }\n\n /**\n * @hidden\n * Listen on window resize and update the layout\n * call user defined custom function if provided\n */\n private _listenOnWindowResize(): void {\n if (this.customOnResizeFunction) {\n this.customOnResizeFunction();\n } else {\n this._subscriptions.add(\n fromEvent(window, 'resize')\n .pipe(debounceTime(100))\n .subscribe(() => this._responsiveLayoutChangeHandler())\n );\n }\n }\n\n /**\n * @hidden\n * determines if the left separator should be visible\n * and the value that will specify the direction of the arrow\n */\n private _getLeftColumnSeparatorValue(): ColumnSeparatorValue {\n switch (this.layout) {\n case TWO_COLUMNS_START_EXPANDED:\n return 'left';\n case TWO_COLUMNS_MID_EXPANDED:\n case THREE_COLUMNS_MID_EXPANDED:\n case THREE_COLUMNS_END_MINIMIZED:\n case THREE_COLUMNS_START_MINIMIZED:\n return 'right';\n default:\n return null;\n }\n }\n\n /**\n * @hidden\n * determines if the right separator should be visible\n * and the value that will specify the direction of the arrow\n */\n private _getRightColumnSeparatorValue(): ColumnSeparatorValue {\n switch (this.layout) {\n case TWO_COLUMNS_END_EXPANDED:\n case THREE_COLUMNS_END_EXPANDED:\n return 'right';\n case THREE_COLUMNS_MID_EXPANDED:\n case THREE_COLUMNS_END_MINIMIZED:\n case THREE_COLUMNS_START_MINIMIZED:\n return 'left';\n default:\n return null;\n }\n }\n\n /**\n * @hidden\n * updates the column layout based on the layout name\n * makes a call to determine the new value of the left separator\n * makes a call to determine the new value of the right separator\n */\n private _updateColumnLayoutParameters(): void {\n this._columnLayout = this.layoutDefinitions[this.layout];\n this._leftColumnSeparator = this._getLeftColumnSeparatorValue();\n this._rightColumnSeparator = this._getRightColumnSeparatorValue();\n }\n\n /**\n * @hidden\n * updates the layout\n * emits an event\n * makes a call to the helper function that will update the column layout and the separators\n */\n private _updateCurrentLayout(newLayout: FlexibleColumnLayout): void {\n this.layout = newLayout;\n this._updateColumnLayoutParameters();\n\n // setTimeout fixes \"ExpressionChangedAfterItHasBeenCheckedError\"\n setTimeout(() => {\n this.layoutChange.emit(this.layout);\n });\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._updateColumnLayoutParameters();\n this._previousLayout = this.layout;\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._screenSize = this._getScreenSize(window.innerWidth);\n this._listenOnWindowResize();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n this._updateColumnLayoutParameters();\n\n if (changes && changes.layout.previousValue) {\n this._previousLayout = changes.layout.previousValue;\n }\n\n if (changes && changes.layout) {\n this._responsiveLayoutChangeHandler();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n}\n","<div\n class=\"fd-flexible-column-layout\"\n [class.fd-flexible-column-layout--translucent]=\"backgroundDesign === 'translucent'\"\n [class.fd-flexible-column-layout--transparent]=\"backgroundDesign === 'transparent'\"\n>\n <!-- Start/Left/First Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.start\"\n [style.visibility]=\"_columnLayout.start === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.start === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.start === 0\"\n >\n <ng-container *ngTemplateOutlet=\"startColumn\"></ng-container>\n </div>\n <!-- Left Separator -->\n <div *ngIf=\"_leftColumnSeparator\" class=\"fd-flexible-column-layout__separator\">\n <button\n fd-button\n fdCompact\n fdType=\"transparent\"\n class=\"fd-flexible-column-layout__button\"\n ariaLabel=\"Expand\"\n (click)=\"_handleLeftColumnSeparatorClick()\"\n >\n <i\n [class]=\"_leftColumnSeparator ? 'sap-icon--slim-arrow-' + _leftColumnSeparator : ''\"\n role=\"presentation\"\n ></i>\n </button>\n </div>\n <!-- Middle/Second Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.mid\"\n [style.visibility]=\"_columnLayout.mid === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.mid === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.mid === 0\"\n >\n <ng-container *ngTemplateOutlet=\"midColumn\"></ng-container>\n </div>\n <!-- Right Separator -->\n <div *ngIf=\"_rightColumnSeparator\" class=\"fd-flexible-column-layout__separator\">\n <button\n fd-button\n fdCompact\n fdType=\"transparent\"\n class=\"fd-flexible-column-layout__button\"\n ariaLabel=\"Expand\"\n (click)=\"_handleRightColumnSeparatorClick()\"\n >\n <i\n [class]=\"_rightColumnSeparator ? 'sap-icon--slim-arrow-' + _rightColumnSeparator : ''\"\n role=\"presentation\"\n ></i>\n </button>\n </div>\n <!-- End/Right/Third Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.end\"\n [style.visibility]=\"_columnLayout.end === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.end === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.end === 0\"\n >\n <ng-container *ngTemplateOutlet=\"endColumn\"></ng-container>\n </div>\n</div>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { cloneDeep, merge } from 'lodash-es';\nimport { DEFAULT_FLEXIBLE_LAYOUT_CONFIG, FD_FLEXIBLE_LAYOUT_CONFIG, FlexibleLayoutConfig } from './constants';\nimport { FlexibleColumnLayoutComponent } from './flexible-column-layout.component';\n\n/**\n * Adds Flexible Column Layout functionality to your application.\n *\n * Can be imported in two ways:\n * * Plain `FlexibleColumnLayoutModule` with default configuration\n * * With `withConfig()` method which allows passing custom default configuration.\n */\n@NgModule({\n declarations: [FlexibleColumnLayoutComponent],\n imports: [CommonModule, ButtonModule],\n exports: [FlexibleColumnLayoutComponent],\n providers: [\n {\n provide: FD_FLEXIBLE_LAYOUT_CONFIG,\n useValue: DEFAULT_FLEXIBLE_LAYOUT_CONFIG\n }\n ]\n})\nexport class FlexibleColumnLayoutModule {\n /**\n * Allows configuring module on a global level with custom configuration.\n * @param config User's custom configuration.\n */\n static withConfig(config: Partial<FlexibleLayoutConfig>): ModuleWithProviders<FlexibleColumnLayoutModule> {\n config = merge(cloneDeep(DEFAULT_FLEXIBLE_LAYOUT_CONFIG), cloneDeep(config));\n return {\n ngModule: FlexibleColumnLayoutModule,\n providers: [\n {\n provide: FD_FLEXIBLE_LAYOUT_CONFIG,\n useValue: config\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-flexible-column-layout.mjs","sources":["../../../../libs/core/src/lib/flexible-column-layout/constants.ts","../../../../libs/core/src/lib/flexible-column-layout/flexible-column-layout.component.ts","../../../../libs/core/src/lib/flexible-column-layout/flexible-column-layout.component.html","../../../../libs/core/src/lib/flexible-column-layout/flexible-column-layout.module.ts","../../../../libs/core/src/lib/flexible-column-layout/fundamental-ngx-core-flexible-column-layout.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const ONE_COLUMN_START_FULL_SCREEN = 'OneColumnStartFullScreen';\nexport const ONE_COLUMN_MID_FULL_SCREEN = 'OneColumnMidFullScreen';\nexport const ONE_COLUMN_END_FULL_SCREEN = 'OneColumnEndFullScreen';\nexport const TWO_COLUMNS_START_EXPANDED = 'TwoColumnsStartExpanded';\nexport const TWO_COLUMNS_MID_EXPANDED = 'TwoColumnsMidExpanded';\nexport const TWO_COLUMNS_END_EXPANDED = 'TwoColumnsEndExpanded';\nexport const THREE_COLUMNS_MID_EXPANDED = 'ThreeColumnsMidExpanded';\nexport const THREE_COLUMNS_END_EXPANDED = 'ThreeColumnsEndExpanded';\nexport const THREE_COLUMNS_START_MINIMIZED = 'ThreeColumnsStartMinimized';\nexport const THREE_COLUMNS_END_MINIMIZED = 'ThreeColumnsEndMinimized';\n\nexport const SM_SCREEN_SIZE = 'sm';\nexport const MD_SCREEN_SIZE = 'md';\nexport const LG_SCREEN_SIZE = 'lg';\n\nexport type ScreenSize = 'sm' | 'md' | 'lg';\n\nexport type FlexibleColumnLayout =\n | 'OneColumnStartFullScreen'\n | 'OneColumnMidFullScreen'\n | 'OneColumnEndFullScreen'\n | 'TwoColumnsStartExpanded'\n | 'TwoColumnsMidExpanded'\n | 'TwoColumnsEndExpanded'\n | 'ThreeColumnsMidExpanded'\n | 'ThreeColumnsEndExpanded'\n | 'ThreeColumnsStartMinimized'\n | 'ThreeColumnsEndMinimized';\n\nexport type ColumnSeparatorValue = 'right' | 'left' | null;\n\nexport interface FlexibleColumnSettings {\n start: number;\n mid: number;\n end: number;\n}\n\nexport type FlexibleColumnLayoutDefinition = { [key in FlexibleColumnLayout]: FlexibleColumnSettings };\n\nexport interface FlexibleLayoutConfig {\n layouts: FlexibleColumnLayoutDefinition;\n}\n\nexport const DEFAULT_FLEXIBLE_LAYOUT_CONFIG: FlexibleLayoutConfig = {\n layouts: {\n OneColumnStartFullScreen: { start: 100, mid: 0, end: 0 },\n OneColumnMidFullScreen: { start: 0, mid: 100, end: 0 },\n OneColumnEndFullScreen: { start: 0, mid: 0, end: 100 },\n TwoColumnsStartExpanded: { start: 67, mid: 33, end: 0 },\n TwoColumnsMidExpanded: { start: 33, mid: 67, end: 0 },\n TwoColumnsEndExpanded: { start: 0, mid: 33, end: 67 },\n ThreeColumnsMidExpanded: { start: 25, mid: 50, end: 25 },\n ThreeColumnsEndExpanded: { start: 25, mid: 25, end: 50 },\n ThreeColumnsStartMinimized: { start: 0, mid: 67, end: 33 },\n ThreeColumnsEndMinimized: { start: 33, mid: 67, end: 0 }\n }\n};\n\nexport const FD_FLEXIBLE_LAYOUT_CONFIG = new InjectionToken<FlexibleLayoutConfig>('FdFlexibleLayoutConfig');\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport {\n ColumnSeparatorValue,\n FD_FLEXIBLE_LAYOUT_CONFIG,\n FlexibleLayoutConfig,\n FlexibleColumnLayout,\n FlexibleColumnLayoutDefinition,\n LG_SCREEN_SIZE,\n MD_SCREEN_SIZE,\n ONE_COLUMN_END_FULL_SCREEN,\n ONE_COLUMN_MID_FULL_SCREEN,\n ONE_COLUMN_START_FULL_SCREEN,\n ScreenSize,\n SM_SCREEN_SIZE,\n THREE_COLUMNS_END_EXPANDED,\n THREE_COLUMNS_END_MINIMIZED,\n THREE_COLUMNS_MID_EXPANDED,\n THREE_COLUMNS_START_MINIMIZED,\n TWO_COLUMNS_END_EXPANDED,\n TWO_COLUMNS_MID_EXPANDED,\n TWO_COLUMNS_START_EXPANDED\n} from './constants';\n\n@Component({\n selector: 'fd-flexible-column-layout',\n templateUrl: './flexible-column-layout.component.html',\n styleUrls: ['./flexible-column-layout.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class FlexibleColumnLayoutComponent implements AfterViewInit, OnChanges, OnDestroy, OnInit {\n /**\n * The template that provides the content of the first/start/left column\n */\n @ContentChild('startColumn')\n startColumn: TemplateRef<any>;\n\n /**\n * The template that provides the content of the middle column\n */\n @ContentChild('midColumn')\n midColumn: TemplateRef<any>;\n\n /**\n * The template that provides the content of the last/end/right column\n */\n @ContentChild('endColumn')\n endColumn: TemplateRef<any>;\n\n /**\n * The background design of the component\n * Options include: 'solid' | 'translucent' | 'transparent'\n * The default is set to 'solid'\n */\n @Input()\n backgroundDesign: 'solid' | 'translucent' | 'transparent' = 'solid';\n\n /**\n * The layout of the component\n * Options include: 'OneColumnStartFullScreen' | 'OneColumnMidFullScreen' |\n * 'OneColumnEndFullScreen' | 'TwoColumnsStartExpanded' | 'TwoColumnsMidExpanded' |\n * 'TwoColumnsEndExpanded' | 'ThreeColumnsMidExpanded' | 'ThreeColumnsEndExpanded' |\n * 'ThreeColumnsStartMinimized' | 'ThreeColumnsEndMinimized'\n */\n @Input()\n layout: FlexibleColumnLayout = ONE_COLUMN_START_FULL_SCREEN;\n\n /**\n * Mapping of the layout name and the column layout in %\n */\n @Input()\n layoutDefinitions: FlexibleColumnLayoutDefinition = this._config.layouts;\n\n /**\n * The event emitted on layout value change.\n */\n @Output()\n layoutChange: EventEmitter<FlexibleColumnLayout> = new EventEmitter<FlexibleColumnLayout>();\n\n /**\n * User defined break point for SM screens\n * Default (Fiori 3) value is 960\n */\n @Input()\n smBreakPoint = 960;\n\n /**\n * User-defined break point for LG screens\n * the default (Fiori 3) value is 1280\n */\n @Input()\n lgBreakPoint = 1280;\n\n /**\n * User-defined onResize function\n */\n @Input()\n customOnResizeFunction: () => void;\n\n /** aria-label for separator */\n @Input()\n separatorAriaLabel: string;\n\n /** title for expanded button */\n @Input()\n expandTitle: string;\n\n /** title for collapsed button */\n @Input()\n collapseTitle: string;\n\n /**\n * @hidden\n * left column separator value (between start and middle columns)\n * that specifies the direction of the arrow and\n * if the separator is visible\n * Options include: 'left', 'right' and null\n */\n _leftColumnSeparator: ColumnSeparatorValue = null;\n\n /**\n * @hidden\n * right column separator value (between middle and end columns)\n * that specifies the direction of the arrow and\n * if the separator is visible\n * Options include: 'left', 'right' and null\n */\n _rightColumnSeparator: ColumnSeparatorValue = null;\n\n /**\n * @hidden\n * allows to keep track of the previos layout\n * so we can go back to it on window resize\n */\n private _previousLayout: FlexibleColumnLayout = this.layout;\n\n /** @hidden */\n private _screenSize: ScreenSize = LG_SCREEN_SIZE;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /**\n * @hidden\n * the column layout representing the distribution of the width\n * between the first (start), the middle and the last(end) column\n */\n _columnLayout: { start: number; mid: number; end: number } = this.layoutDefinitions[this.layout];\n\n /**\n * @hidden\n * set to 'true' if the layout is changed to fullscreen on window resize\n * this will allow the layout to switch to previous mode on SM->MD transition\n * if a layout is set by the user to fullscreen, it should persist on window resize\n */\n private _responsiveFullscreenLayout = false;\n\n constructor(@Inject(FD_FLEXIBLE_LAYOUT_CONFIG) private readonly _config: FlexibleLayoutConfig) {}\n\n /**\n * @hidden\n * function that handles the click events on the left separator\n * and updates the layout\n */\n _handleLeftColumnSeparatorClick(): void {\n switch (this.layout) {\n case TWO_COLUMNS_START_EXPANDED:\n this._updateCurrentLayout(TWO_COLUMNS_MID_EXPANDED);\n break;\n case TWO_COLUMNS_MID_EXPANDED:\n this._updateCurrentLayout(TWO_COLUMNS_START_EXPANDED);\n break;\n case THREE_COLUMNS_MID_EXPANDED:\n this._updateCurrentLayout(THREE_COLUMNS_END_MINIMIZED);\n break;\n case THREE_COLUMNS_END_MINIMIZED:\n this._updateCurrentLayout(TWO_COLUMNS_START_EXPANDED);\n break;\n case THREE_COLUMNS_START_MINIMIZED:\n this._updateCurrentLayout(THREE_COLUMNS_END_MINIMIZED);\n break;\n }\n }\n\n /**\n * @hidden\n * function that handles the click events on the right separator\n * and updates the layout\n */\n _handleRightColumnSeparatorClick(): void {\n switch (this.layout) {\n case TWO_COLUMNS_END_EXPANDED:\n this._updateCurrentLayout(THREE_COLUMNS_START_MINIMIZED);\n break;\n case THREE_COLUMNS_MID_EXPANDED:\n this._updateCurrentLayout(THREE_COLUMNS_END_EXPANDED);\n break;\n case THREE_COLUMNS_END_EXPANDED:\n this._updateCurrentLayout(THREE_COLUMNS_MID_EXPANDED);\n break;\n case THREE_COLUMNS_END_MINIMIZED:\n this._updateCurrentLayout(THREE_COLUMNS_MID_EXPANDED);\n break;\n case THREE_COLUMNS_START_MINIMIZED:\n this._updateCurrentLayout(TWO_COLUMNS_END_EXPANDED);\n break;\n }\n }\n\n /**\n * @hidden\n * function to determine the screen size in 'sm' | 'md' | 'lg' | 'xl'\n * format depending on the window size in px\n */\n private _getScreenSize(size: number): ScreenSize {\n if (size > this.lgBreakPoint) {\n return LG_SCREEN_SIZE;\n } else if (size > this.smBreakPoint && size <= this.lgBreakPoint) {\n return MD_SCREEN_SIZE;\n } else {\n return SM_SCREEN_SIZE;\n }\n }\n\n /**\n * @hidden\n * handles the change of the layouts on reaching a break point\n */\n private _responsiveLayoutChangeHandler(): void {\n this._screenSize = this._getScreenSize(window.innerWidth);\n\n switch (this.layout) {\n case ONE_COLUMN_MID_FULL_SCREEN:\n case ONE_COLUMN_END_FULL_SCREEN: {\n if (\n this._screenSize !== SM_SCREEN_SIZE &&\n this.layout !== this._previousLayout &&\n this._responsiveFullscreenLayout\n ) {\n this._responsiveFullscreenLayout = false;\n this._updateCurrentLayout(this._previousLayout);\n }\n break;\n }\n\n case TWO_COLUMNS_START_EXPANDED:\n case TWO_COLUMNS_MID_EXPANDED: {\n if (this._screenSize === SM_SCREEN_SIZE) {\n this._responsiveFullscreenLayout = true;\n this._updateCurrentLayout(ONE_COLUMN_MID_FULL_SCREEN);\n }\n break;\n }\n\n case TWO_COLUMNS_END_EXPANDED: {\n if (this._screenSize === SM_SCREEN_SIZE) {\n this._responsiveFullscreenLayout = true;\n this._updateCurrentLayout(ONE_COLUMN_END_FULL_SCREEN);\n }\n\n if (this._screenSize === LG_SCREEN_SIZE) {\n this._updateCurrentLayout(THREE_COLUMNS_END_EXPANDED);\n }\n break;\n }\n\n case THREE_COLUMNS_START_MINIMIZED: {\n if (this._screenSize === SM_SCREEN_SIZE) {\n this._responsiveFullscreenLayout = true;\n this._updateCurrentLayout(ONE_COLUMN_END_FULL_SCREEN);\n }\n\n if (this._screenSize === LG_SCREEN_SIZE) {\n this._updateCurrentLayout(THREE_COLUMNS_MID_EXPANDED);\n }\n break;\n }\n\n case THREE_COLUMNS_END_MINIMIZED: {\n if (this._screenSize === SM_SCREEN_SIZE) {\n this._responsiveFullscreenLayout = true;\n this._updateCurrentLayout(ONE_COLUMN_END_FULL_SCREEN);\n }\n\n if (this._screenSize === LG_SCREEN_SIZE) {\n this._updateCurrentLayout(THREE_COLUMNS_END_MINIMIZED);\n }\n break;\n }\n\n case THREE_COLUMNS_MID_EXPANDED: {\n if (this._screenSize === SM_SCREEN_SIZE) {\n this._responsiveFullscreenLayout = true;\n this._updateCurrentLayout(ONE_COLUMN_END_FULL_SCREEN);\n }\n\n if (this._screenSize === MD_SCREEN_SIZE) {\n this._updateCurrentLayout(THREE_COLUMNS_START_MINIMIZED);\n }\n break;\n }\n\n case THREE_COLUMNS_END_EXPANDED: {\n if (this._screenSize === SM_SCREEN_SIZE) {\n this._responsiveFullscreenLayout = true;\n this._updateCurrentLayout(ONE_COLUMN_END_FULL_SCREEN);\n }\n\n if (this._screenSize === MD_SCREEN_SIZE) {\n this._updateCurrentLayout(TWO_COLUMNS_END_EXPANDED);\n }\n break;\n }\n }\n }\n\n /**\n * @hidden\n * Listen on window resize and update the layout\n * call user defined custom function if provided\n */\n private _listenOnWindowResize(): void {\n if (this.customOnResizeFunction) {\n this.customOnResizeFunction();\n } else {\n this._subscriptions.add(\n fromEvent(window, 'resize')\n .pipe(debounceTime(100))\n .subscribe(() => this._responsiveLayoutChangeHandler())\n );\n }\n }\n\n /**\n * @hidden\n * determines if the left separator should be visible\n * and the value that will specify the direction of the arrow\n */\n private _getLeftColumnSeparatorValue(): ColumnSeparatorValue {\n switch (this.layout) {\n case TWO_COLUMNS_START_EXPANDED:\n return 'left';\n case TWO_COLUMNS_MID_EXPANDED:\n case THREE_COLUMNS_MID_EXPANDED:\n case THREE_COLUMNS_END_MINIMIZED:\n case THREE_COLUMNS_START_MINIMIZED:\n return 'right';\n default:\n return null;\n }\n }\n\n /**\n * @hidden\n * determines if the right separator should be visible\n * and the value that will specify the direction of the arrow\n */\n private _getRightColumnSeparatorValue(): ColumnSeparatorValue {\n switch (this.layout) {\n case TWO_COLUMNS_END_EXPANDED:\n case THREE_COLUMNS_END_EXPANDED:\n return 'right';\n case THREE_COLUMNS_MID_EXPANDED:\n case THREE_COLUMNS_END_MINIMIZED:\n case THREE_COLUMNS_START_MINIMIZED:\n return 'left';\n default:\n return null;\n }\n }\n\n /**\n * @hidden\n * updates the column layout based on the layout name\n * makes a call to determine the new value of the left separator\n * makes a call to determine the new value of the right separator\n */\n private _updateColumnLayoutParameters(): void {\n this._columnLayout = this.layoutDefinitions[this.layout];\n this._leftColumnSeparator = this._getLeftColumnSeparatorValue();\n this._rightColumnSeparator = this._getRightColumnSeparatorValue();\n }\n\n /**\n * @hidden\n * updates the layout\n * emits an event\n * makes a call to the helper function that will update the column layout and the separators\n */\n private _updateCurrentLayout(newLayout: FlexibleColumnLayout): void {\n this.layout = newLayout;\n this._updateColumnLayoutParameters();\n\n // setTimeout fixes \"ExpressionChangedAfterItHasBeenCheckedError\"\n setTimeout(() => {\n this.layoutChange.emit(this.layout);\n });\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._updateColumnLayoutParameters();\n this._previousLayout = this.layout;\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._screenSize = this._getScreenSize(window.innerWidth);\n this._listenOnWindowResize();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n this._updateColumnLayoutParameters();\n\n if (changes && changes.layout.previousValue) {\n this._previousLayout = changes.layout.previousValue;\n }\n\n if (changes && changes.layout) {\n this._responsiveLayoutChangeHandler();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n}\n","<div\n class=\"fd-flexible-column-layout\"\n [class.fd-flexible-column-layout--translucent]=\"backgroundDesign === 'translucent'\"\n [class.fd-flexible-column-layout--transparent]=\"backgroundDesign === 'transparent'\"\n>\n <!-- Start/Left/First Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.start\"\n [style.visibility]=\"_columnLayout.start === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.start === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.start === 0\"\n >\n <ng-container *ngTemplateOutlet=\"startColumn\"></ng-container>\n </div>\n <!-- Left Separator -->\n <div\n *ngIf=\"_leftColumnSeparator\"\n class=\"fd-flexible-column-layout__separator\"\n [attr.aria-label]=\"separatorAriaLabel\"\n >\n <button\n fd-button\n fdCompact\n fdType=\"transparent\"\n class=\"fd-flexible-column-layout__button\"\n [title]=\"_leftColumnSeparator === 'left' ? expandTitle : collapseTitle\"\n (click)=\"_handleLeftColumnSeparatorClick()\"\n >\n <i\n [class]=\"_leftColumnSeparator ? 'sap-icon--slim-arrow-' + _leftColumnSeparator : ''\"\n role=\"presentation\"\n ></i>\n </button>\n </div>\n <!-- Middle/Second Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.mid\"\n [style.visibility]=\"_columnLayout.mid === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.mid === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.mid === 0\"\n >\n <ng-container *ngTemplateOutlet=\"midColumn\"></ng-container>\n </div>\n <!-- Right Separator -->\n <div\n *ngIf=\"_rightColumnSeparator\"\n class=\"fd-flexible-column-layout__separator\"\n [attr.aria-label]=\"separatorAriaLabel\"\n >\n <button\n fd-button\n fdCompact\n fdType=\"transparent\"\n class=\"fd-flexible-column-layout__button\"\n [title]=\"_rightColumnSeparator === 'left' ? expandTitle : collapseTitle\"\n (click)=\"_handleRightColumnSeparatorClick()\"\n >\n <i\n [class]=\"_rightColumnSeparator ? 'sap-icon--slim-arrow-' + _rightColumnSeparator : ''\"\n role=\"presentation\"\n ></i>\n </button>\n </div>\n <!-- End/Right/Third Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.end\"\n [style.visibility]=\"_columnLayout.end === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.end === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.end === 0\"\n >\n <ng-container *ngTemplateOutlet=\"endColumn\"></ng-container>\n </div>\n</div>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { cloneDeep, merge } from 'lodash-es';\nimport { DEFAULT_FLEXIBLE_LAYOUT_CONFIG, FD_FLEXIBLE_LAYOUT_CONFIG, FlexibleLayoutConfig } from './constants';\nimport { FlexibleColumnLayoutComponent } from './flexible-column-layout.component';\n\n/**\n * Adds Flexible Column Layout functionality to your application.\n *\n * Can be imported in two ways:\n * * Plain `FlexibleColumnLayoutModule` with default configuration\n * * With `withConfig()` method which allows passing custom default configuration.\n */\n@NgModule({\n declarations: [FlexibleColumnLayoutComponent],\n imports: [CommonModule, ButtonModule],\n exports: [FlexibleColumnLayoutComponent],\n providers: [\n {\n provide: FD_FLEXIBLE_LAYOUT_CONFIG,\n useValue: DEFAULT_FLEXIBLE_LAYOUT_CONFIG\n }\n ]\n})\nexport class FlexibleColumnLayoutModule {\n /**\n * Allows configuring module on a global level with custom configuration.\n * @param config User's custom configuration.\n */\n static withConfig(config: Partial<FlexibleLayoutConfig>): ModuleWithProviders<FlexibleColumnLayoutModule> {\n config = merge(cloneDeep(DEFAULT_FLEXIBLE_LAYOUT_CONFIG), cloneDeep(config));\n return {\n ngModule: FlexibleColumnLayoutModule,\n providers: [\n {\n provide: FD_FLEXIBLE_LAYOUT_CONFIG,\n useValue: config\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -324,10 +324,10 @@ export class FlexibleColumnLayoutComponent {
|
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
326
|
FlexibleColumnLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FlexibleColumnLayoutComponent, deps: [{ token: FD_FLEXIBLE_LAYOUT_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
327
|
-
FlexibleColumnLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FlexibleColumnLayoutComponent, selector: "fd-flexible-column-layout", inputs: { backgroundDesign: "backgroundDesign", layout: "layout", layoutDefinitions: "layoutDefinitions", smBreakPoint: "smBreakPoint", lgBreakPoint: "lgBreakPoint", customOnResizeFunction: "customOnResizeFunction" }, outputs: { layoutChange: "layoutChange" }, queries: [{ propertyName: "startColumn", first: true, predicate: ["startColumn"], descendants: true }, { propertyName: "midColumn", first: true, predicate: ["midColumn"], descendants: true }, { propertyName: "endColumn", first: true, predicate: ["endColumn"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"fd-flexible-column-layout\"\n [class.fd-flexible-column-layout--translucent]=\"backgroundDesign === 'translucent'\"\n [class.fd-flexible-column-layout--transparent]=\"backgroundDesign === 'transparent'\"\n>\n <!-- Start/Left/First Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.start\"\n [style.visibility]=\"_columnLayout.start === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.start === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.start === 0\"\n >\n <ng-container *ngTemplateOutlet=\"startColumn\"></ng-container>\n </div>\n <!-- Left Separator -->\n <div
|
|
327
|
+
FlexibleColumnLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FlexibleColumnLayoutComponent, selector: "fd-flexible-column-layout", inputs: { backgroundDesign: "backgroundDesign", layout: "layout", layoutDefinitions: "layoutDefinitions", smBreakPoint: "smBreakPoint", lgBreakPoint: "lgBreakPoint", customOnResizeFunction: "customOnResizeFunction", separatorAriaLabel: "separatorAriaLabel", expandTitle: "expandTitle", collapseTitle: "collapseTitle" }, outputs: { layoutChange: "layoutChange" }, queries: [{ propertyName: "startColumn", first: true, predicate: ["startColumn"], descendants: true }, { propertyName: "midColumn", first: true, predicate: ["midColumn"], descendants: true }, { propertyName: "endColumn", first: true, predicate: ["endColumn"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"fd-flexible-column-layout\"\n [class.fd-flexible-column-layout--translucent]=\"backgroundDesign === 'translucent'\"\n [class.fd-flexible-column-layout--transparent]=\"backgroundDesign === 'transparent'\"\n>\n <!-- Start/Left/First Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.start\"\n [style.visibility]=\"_columnLayout.start === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.start === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.start === 0\"\n >\n <ng-container *ngTemplateOutlet=\"startColumn\"></ng-container>\n </div>\n <!-- Left Separator -->\n <div\n *ngIf=\"_leftColumnSeparator\"\n class=\"fd-flexible-column-layout__separator\"\n [attr.aria-label]=\"separatorAriaLabel\"\n >\n <button\n fd-button\n fdCompact\n fdType=\"transparent\"\n class=\"fd-flexible-column-layout__button\"\n [title]=\"_leftColumnSeparator === 'left' ? expandTitle : collapseTitle\"\n (click)=\"_handleLeftColumnSeparatorClick()\"\n >\n <i\n [class]=\"_leftColumnSeparator ? 'sap-icon--slim-arrow-' + _leftColumnSeparator : ''\"\n role=\"presentation\"\n ></i>\n </button>\n </div>\n <!-- Middle/Second Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.mid\"\n [style.visibility]=\"_columnLayout.mid === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.mid === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.mid === 0\"\n >\n <ng-container *ngTemplateOutlet=\"midColumn\"></ng-container>\n </div>\n <!-- Right Separator -->\n <div\n *ngIf=\"_rightColumnSeparator\"\n class=\"fd-flexible-column-layout__separator\"\n [attr.aria-label]=\"separatorAriaLabel\"\n >\n <button\n fd-button\n fdCompact\n fdType=\"transparent\"\n class=\"fd-flexible-column-layout__button\"\n [title]=\"_rightColumnSeparator === 'left' ? expandTitle : collapseTitle\"\n (click)=\"_handleRightColumnSeparatorClick()\"\n >\n <i\n [class]=\"_rightColumnSeparator ? 'sap-icon--slim-arrow-' + _rightColumnSeparator : ''\"\n role=\"presentation\"\n ></i>\n </button>\n </div>\n <!-- End/Right/Third Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.end\"\n [style.visibility]=\"_columnLayout.end === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.end === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.end === 0\"\n >\n <ng-container *ngTemplateOutlet=\"endColumn\"></ng-container>\n </div>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.4\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-flexible-column-layout{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:row;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-flexible-column-layout:after,.fd-flexible-column-layout:before{box-sizing:inherit;font-size:inherit}.fd-flexible-column-layout__separator{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:var(--fdFlexibleColumnLayout_Background_Solid);border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;min-width:1rem;padding:0;position:relative;width:1rem}.fd-flexible-column-layout__separator:after,.fd-flexible-column-layout__separator:before{-webkit-box-sizing:inherit;-webkit-transition:all .1s ease-in;-webkit-transform:translateX(-50%);box-sizing:inherit;content:\"\";display:block;font-size:inherit;height:4rem;left:50%;position:absolute;transform:translate(-50%);transition:all .1s ease-in;width:.0625rem}.fd-flexible-column-layout__separator:before{background-image:linear-gradient(to top,var(--fdFlexibleColumnLayout_Toggle_Image_Color),transparent);bottom:calc(50% + 1rem)}.fd-flexible-column-layout__separator:after{background-image:linear-gradient(to bottom,var(--fdFlexibleColumnLayout_Toggle_Image_Color),transparent);top:calc(50% + 1rem)}.fd-flexible-column-layout__separator.is-hover:after,.fd-flexible-column-layout__separator.is-hover:before,.fd-flexible-column-layout__separator:hover:after,.fd-flexible-column-layout__separator:hover:before{height:7rem}.fd-flexible-column-layout .fd-flexible-column-layout__button{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-transform:translate(-50%,-50%);height:2rem;justify-content:center;left:50%;min-width:1.5rem;padding:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:1.5rem;z-index:2}.fd-flexible-column-layout__column{-webkit-box-sizing:border-box;-webkit-transition:width .56s cubic-bezier(.1,0,.05,1),visibility .56s ease-in;border:0;border-left:var(--fdFlexibleColumnLayout_Border);border-right:var(--fdFlexibleColumnLayout_Border);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;min-width:20rem;padding:0;transition:width .56s cubic-bezier(.1,0,.05,1),visibility .56s ease-in}.fd-flexible-column-layout__column:after,.fd-flexible-column-layout__column:before{box-sizing:inherit;font-size:inherit}.fd-flexible-column-layout__column:first-child{border-left:none;margin-left:0}.fd-flexible-column-layout__column:last-child{border-right:none;margin-bottom:0;margin-right:0}.fd-flexible-column-layout__column--hidden{border:none;min-width:0}.fd-flexible-column-layout--translucent .fd-flexible-column-layout__separator{background-color:var(--fdFlexibleColumnLayout_Background_Translucent)}.fd-flexible-column-layout--transparent .fd-flexible-column-layout__separator{background-color:var(--fdFlexibleColumnLayout_Background_Transparent)}.fd-button.fd-flexible-column-layout__button{z-index:1}.fd-flexible-column-layout__column{transition:width .56s cubic-bezier(.1,0,.05,1),visibility .1s ease-in;overflow:hidden}.fd-flexible-column-layout__column{min-width:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: i3.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
328
328
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FlexibleColumnLayoutComponent, decorators: [{
|
|
329
329
|
type: Component,
|
|
330
|
-
args: [{ selector: 'fd-flexible-column-layout', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"fd-flexible-column-layout\"\n [class.fd-flexible-column-layout--translucent]=\"backgroundDesign === 'translucent'\"\n [class.fd-flexible-column-layout--transparent]=\"backgroundDesign === 'transparent'\"\n>\n <!-- Start/Left/First Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.start\"\n [style.visibility]=\"_columnLayout.start === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.start === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.start === 0\"\n >\n <ng-container *ngTemplateOutlet=\"startColumn\"></ng-container>\n </div>\n <!-- Left Separator -->\n <div
|
|
330
|
+
args: [{ selector: 'fd-flexible-column-layout', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"fd-flexible-column-layout\"\n [class.fd-flexible-column-layout--translucent]=\"backgroundDesign === 'translucent'\"\n [class.fd-flexible-column-layout--transparent]=\"backgroundDesign === 'transparent'\"\n>\n <!-- Start/Left/First Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.start\"\n [style.visibility]=\"_columnLayout.start === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.start === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.start === 0\"\n >\n <ng-container *ngTemplateOutlet=\"startColumn\"></ng-container>\n </div>\n <!-- Left Separator -->\n <div\n *ngIf=\"_leftColumnSeparator\"\n class=\"fd-flexible-column-layout__separator\"\n [attr.aria-label]=\"separatorAriaLabel\"\n >\n <button\n fd-button\n fdCompact\n fdType=\"transparent\"\n class=\"fd-flexible-column-layout__button\"\n [title]=\"_leftColumnSeparator === 'left' ? expandTitle : collapseTitle\"\n (click)=\"_handleLeftColumnSeparatorClick()\"\n >\n <i\n [class]=\"_leftColumnSeparator ? 'sap-icon--slim-arrow-' + _leftColumnSeparator : ''\"\n role=\"presentation\"\n ></i>\n </button>\n </div>\n <!-- Middle/Second Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.mid\"\n [style.visibility]=\"_columnLayout.mid === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.mid === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.mid === 0\"\n >\n <ng-container *ngTemplateOutlet=\"midColumn\"></ng-container>\n </div>\n <!-- Right Separator -->\n <div\n *ngIf=\"_rightColumnSeparator\"\n class=\"fd-flexible-column-layout__separator\"\n [attr.aria-label]=\"separatorAriaLabel\"\n >\n <button\n fd-button\n fdCompact\n fdType=\"transparent\"\n class=\"fd-flexible-column-layout__button\"\n [title]=\"_rightColumnSeparator === 'left' ? expandTitle : collapseTitle\"\n (click)=\"_handleRightColumnSeparatorClick()\"\n >\n <i\n [class]=\"_rightColumnSeparator ? 'sap-icon--slim-arrow-' + _rightColumnSeparator : ''\"\n role=\"presentation\"\n ></i>\n </button>\n </div>\n <!-- End/Right/Third Column -->\n <div\n class=\"fd-flexible-column-layout__column\"\n [style.width.%]=\"_columnLayout.end\"\n [style.visibility]=\"_columnLayout.end === 0 ? 'hidden' : 'visible'\"\n [style.height]=\"_columnLayout.end === 0 ? '0' : 'auto'\"\n [attr.aria-hidden]=\"_columnLayout.end === 0\"\n >\n <ng-container *ngTemplateOutlet=\"endColumn\"></ng-container>\n </div>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.4\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-flexible-column-layout{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:row;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-flexible-column-layout:after,.fd-flexible-column-layout:before{box-sizing:inherit;font-size:inherit}.fd-flexible-column-layout__separator{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;background-color:var(--fdFlexibleColumnLayout_Background_Solid);border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;min-width:1rem;padding:0;position:relative;width:1rem}.fd-flexible-column-layout__separator:after,.fd-flexible-column-layout__separator:before{-webkit-box-sizing:inherit;-webkit-transition:all .1s ease-in;-webkit-transform:translateX(-50%);box-sizing:inherit;content:\"\";display:block;font-size:inherit;height:4rem;left:50%;position:absolute;transform:translate(-50%);transition:all .1s ease-in;width:.0625rem}.fd-flexible-column-layout__separator:before{background-image:linear-gradient(to top,var(--fdFlexibleColumnLayout_Toggle_Image_Color),transparent);bottom:calc(50% + 1rem)}.fd-flexible-column-layout__separator:after{background-image:linear-gradient(to bottom,var(--fdFlexibleColumnLayout_Toggle_Image_Color),transparent);top:calc(50% + 1rem)}.fd-flexible-column-layout__separator.is-hover:after,.fd-flexible-column-layout__separator.is-hover:before,.fd-flexible-column-layout__separator:hover:after,.fd-flexible-column-layout__separator:hover:before{height:7rem}.fd-flexible-column-layout .fd-flexible-column-layout__button{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-transform:translate(-50%,-50%);height:2rem;justify-content:center;left:50%;min-width:1.5rem;padding:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:1.5rem;z-index:2}.fd-flexible-column-layout__column{-webkit-box-sizing:border-box;-webkit-transition:width .56s cubic-bezier(.1,0,.05,1),visibility .56s ease-in;border:0;border-left:var(--fdFlexibleColumnLayout_Border);border-right:var(--fdFlexibleColumnLayout_Border);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;min-width:20rem;padding:0;transition:width .56s cubic-bezier(.1,0,.05,1),visibility .56s ease-in}.fd-flexible-column-layout__column:after,.fd-flexible-column-layout__column:before{box-sizing:inherit;font-size:inherit}.fd-flexible-column-layout__column:first-child{border-left:none;margin-left:0}.fd-flexible-column-layout__column:last-child{border-right:none;margin-bottom:0;margin-right:0}.fd-flexible-column-layout__column--hidden{border:none;min-width:0}.fd-flexible-column-layout--translucent .fd-flexible-column-layout__separator{background-color:var(--fdFlexibleColumnLayout_Background_Translucent)}.fd-flexible-column-layout--transparent .fd-flexible-column-layout__separator{background-color:var(--fdFlexibleColumnLayout_Background_Transparent)}.fd-button.fd-flexible-column-layout__button{z-index:1}.fd-flexible-column-layout__column{transition:width .56s cubic-bezier(.1,0,.05,1),visibility .1s ease-in;overflow:hidden}.fd-flexible-column-layout__column{min-width:0}\n"] }]
|
|
331
331
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
332
332
|
type: Inject,
|
|
333
333
|
args: [FD_FLEXIBLE_LAYOUT_CONFIG]
|
|
@@ -354,5 +354,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
354
354
|
type: Input
|
|
355
355
|
}], customOnResizeFunction: [{
|
|
356
356
|
type: Input
|
|
357
|
+
}], separatorAriaLabel: [{
|
|
358
|
+
type: Input
|
|
359
|
+
}], expandTitle: [{
|
|
360
|
+
type: Input
|
|
361
|
+
}], collapseTitle: [{
|
|
362
|
+
type: Input
|
|
357
363
|
}] } });
|
|
358
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleGlibGUtY29sdW1uLWxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9mbGV4aWJsZS1jb2x1bW4tbGF5b3V0L2ZsZXhpYmxlLWNvbHVtbi1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZmxleGlibGUtY29sdW1uLWxheW91dC9mbGV4aWJsZS1jb2x1bW4tbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBRU4sV0FBVyxFQUNYLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUVILHlCQUF5QixFQUl6QixjQUFjLEVBQ2QsY0FBYyxFQUNkLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFDMUIsNEJBQTRCLEVBRTVCLGNBQWMsRUFDZCwwQkFBMEIsRUFDMUIsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMxQiw2QkFBNkIsRUFDN0Isd0JBQXdCLEVBQ3hCLHdCQUF3QixFQUN4QiwwQkFBMEIsRUFDN0IsTUFBTSxhQUFhLENBQUM7Ozs7O0FBU3JCLE1BQU0sT0FBTyw2QkFBNkI7SUFtSHRDLFlBQWdFLE9BQTZCO1FBQTdCLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBaEc3Rjs7OztXQUlHO1FBRUgscUJBQWdCLEdBQTRDLE9BQU8sQ0FBQztRQUVwRTs7Ozs7O1dBTUc7UUFFSCxXQUFNLEdBQXlCLDRCQUE0QixDQUFDO1FBRTVEOztXQUVHO1FBRUgs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LFdBQVc7UUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7OzBIQWpZUSw2QkFBNkIsa0JBbUhsQix5QkFBeUI7OEdBbkhwQyw2QkFBNkIscW5CQy9DMUMsMnJGQW9FQTsyRkRyQmEsNkJBQTZCO2tCQVB6QyxTQUFTOytCQUNJLDJCQUEyQixtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs7MEJBcUh4QixNQUFNOzJCQUFDLHlCQUF5Qjs0Q0E5RzdDLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxhQUFhO2dCQU8zQixTQUFTO3NCQURSLFlBQVk7dUJBQUMsV0FBVztnQkFPekIsU0FBUztzQkFEUixZQUFZO3VCQUFDLFdBQVc7Z0JBU3pCLGdCQUFnQjtzQkFEZixLQUFLO2dCQVdOLE1BQU07c0JBREwsS0FBSztnQkFPTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBT04sWUFBWTtzQkFEWCxNQUFNO2dCQVFQLFlBQVk7c0JBRFgsS0FBSztnQkFRTixZQUFZO3NCQURYLEtBQUs7Z0JBT04sc0JBQXNCO3NCQURyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIENvbHVtblNlcGFyYXRvclZhbHVlLFxuICAgIEZEX0ZMRVhJQkxFX0xBWU9VVF9DT05GSUcsXG4gICAgRmxleGlibGVMYXlvdXRDb25maWcsXG4gICAgRmxleGlibGVDb2x1bW5MYXlvdXQsXG4gICAgRmxleGlibGVDb2x1bW5MYXlvdXREZWZpbml0aW9uLFxuICAgIExHX1NDUkVFTl9TSVpFLFxuICAgIE1EX1NDUkVFTl9TSVpFLFxuICAgIE9ORV9DT0xVTU5fRU5EX0ZVTExfU0NSRUVOLFxuICAgIE9ORV9DT0xVTU5fTUlEX0ZVTExfU0NSRUVOLFxuICAgIE9ORV9DT0xVTU5fU1RBUlRfRlVMTF9TQ1JFRU4sXG4gICAgU2NyZWVuU2l6ZSxcbiAgICBTTV9TQ1JFRU5fU0laRSxcbiAgICBUSFJFRV9DT0xVTU5TX0VORF9FWFBBTkRFRCxcbiAgICBUSFJFRV9DT0xVTU5TX0VORF9NSU5JTUlaRUQsXG4gICAgVEhSRUVfQ09MVU1OU19NSURfRVhQQU5ERUQsXG4gICAgVEhSRUVfQ09MVU1OU19TVEFSVF9NSU5JTUlaRUQsXG4gICAgVFdPX0NPTFVNTlNfRU5EX0VYUEFOREVELFxuICAgIFRXT19DT0xVTU5TX01JRF9FWFBBTkRFRCxcbiAgICBUV09fQ09MVU1OU19TVEFSVF9FWFBBTkRFRFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtZmxleGlibGUtY29sdW1uLWxheW91dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZsZXhpYmxlLWNvbHVtbi1sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZsZXhpYmxlLWNvbHVtbi1sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEZsZXhpYmxlQ29sdW1uTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICogVGhlIHRlbXBsYXRlIHRoYXQgcHJvdmlkZXMgdGhlIGNvbnRlbnQgb2YgdGhlIGZpcnN0L3N0YXJ0L2xlZnQgY29sdW1uXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnc3RhcnRDb2x1bW4nKVxuICAgIHN0YXJ0Q29sdW1uOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRlbXBsYXRlIHRoYXQgcHJvdmlkZXMgdGhlIGNvbnRlbnQgb2YgdGhlIG1pZGRsZSBjb2x1bW5cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdtaWRDb2x1bW4nKVxuICAgIG1pZENvbHVtbjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSB0aGF0IHByb3ZpZGVzIHRoZSBjb250ZW50IG9mIHRoZSBsYXN0L2VuZC9yaWdodCBjb2x1bW5cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdlbmRDb2x1bW4nKVxuICAgIGVuZENvbHVtbjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYWNrZ3JvdW5kIGRlc2lnbiBvZiB0aGUgY29tcG9uZW50XG4gICAgICogT3B0aW9ucyBpbmNsdWRlOiAnc29saWQnIHwgJ3RyYW5zbHVjZW50JyB8ICd0cmFuc3BhcmVudCdcbiAgICAgKiBUaGUgZGVmYXVsdCBpcyBzZXQgdG8gJ3NvbGlkJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYmFja2dyb3VuZERlc2lnbjogJ3NvbGlkJyB8ICd0cmFuc2x1Y2VudCcgfCAndHJhbnNwYXJlbnQnID0gJ3NvbGlkJztcblxuICAgIC8qKlxuICAgICAqIFRoZSBsYXlvdXQgb2YgdGhlIGNvbXBvbmVudFxuICAgICAqIE9wdGlvbnMgaW5jbHVkZTogJ09uZUNvbHVtblN0YXJ0RnVsbFNjcmVlbicgfCAnT25lQ29sdW1uTWlkRnVsbFNjcmVlbicgfFxuICAgICAqICdPbmVDb2x1bW5FbmRGdWxsU2NyZWVuJyB8ICdUd29Db2x1bW5zU3RhcnRFeHBhbmRlZCcgfCAnVHdvQ29sdW1uc01pZEV4cGFuZGVkJyB8XG4gICAgICogJ1R3b0NvbHVtbnNFbmRFeHBhbmRlZCcgfCAnVGhyZWVDb2x1bW5zTWlkRXhwYW5kZWQnIHwgJ1RocmVlQ29sdW1uc0VuZEV4cGFuZGVkJyB8XG4gICAgICogJ1RocmVlQ29sdW1uc1N0YXJ0TWluaW1pemVkJyB8ICdUaHJlZUNvbHVtbnNFbmRNaW5pbWl6ZWQnXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBsYXlvdXQ6IEZsZXhpYmxlQ29sdW1uTGF5b3V0ID0gT05FX0NPTFVNTl9TVEFSVF9GVUxMX1NDUkVFTjtcblxuICAgIC8qKlxuICAgICAqIE1hcHBpbmcgb2YgdGhlIGxheW91dCBuYW1lIGFuZCB0aGUgY29sdW1uIGxheW91dCBpbiAlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBsYXlvdXREZWZpbml0aW9uczogRmxleGlibGVDb2x1bW5MYXlvdXREZWZpbml0aW9uID0gdGhpcy5fY29uZmlnLmxheW91dHM7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZXZlbnQgZW1pdHRlZCBvbiBsYXlvdXQgdmFsdWUgY2hhbmdlLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGxheW91dENoYW5nZTogRXZlbnRFbWl0dGVyPEZsZXhpYmxlQ29sdW1uTGF5b3V0PiA9IG5ldyBFdmVudEVtaXR0ZXI8RmxleGlibGVDb2x1bW5MYXlvdXQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBVc2VyIGRlZmluZWQgYnJlYWsgcG9pbnQgZm9yIFNNIHNjcmVlbnNcbiAgICAgKiBEZWZhdWx0IChGaW9yaSAzKSB2YWx1ZSBpcyA5NjBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNtQnJlYWtQb2ludCA9IDk2MDtcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCBicmVhayBwb2ludCBmb3IgTEcgc2NyZWVuc1xuICAgICAqIHRoZSBkZWZhdWx0IChGaW9yaSAzKSB2YWx1ZSBpcyAxMjgwXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBsZ0JyZWFrUG9pbnQgPSAxMjgwO1xuXG4gICAgLyoqXG4gICAgICogVXNlci1kZWZpbmVkIG9uUmVzaXplIGZ1bmN0aW9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjdXN0b21PblJlc2l6ZUZ1bmN0aW9uOiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGxlZnQgY29sdW1uIHNlcGFyYXRvciB2YWx1ZSAoYmV0d2VlbiBzdGFydCBhbmQgbWlkZGxlIGNvbHVtbnMpXG4gICAgICogdGhhdCBzcGVjaWZpZXMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgYXJyb3cgYW5kXG4gICAgICogaWYgdGhlIHNlcGFyYXRvciBpcyB2aXNpYmxlXG4gICAgICogT3B0aW9ucyBpbmNsdWRlOiAnbGVmdCcsICdyaWdodCcgYW5kIG51bGxcbiAgICAgKi9cbiAgICBfbGVmdENvbHVtblNlcGFyYXRvcjogQ29sdW1uU2VwYXJhdG9yVmFsdWUgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIHJpZ2h0IGNvbHVtbiBzZXBhcmF0b3IgdmFsdWUgKGJldHdlZW4gbWlkZGxlIGFuZCBlbmQgY29sdW1ucylcbiAgICAgKiB0aGF0IHNwZWNpZmllcyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBhcnJvdyBhbmRcbiAgICAgKiBpZiB0aGUgc2VwYXJhdG9yIGlzIHZpc2libGVcbiAgICAgKiBPcHRpb25zIGluY2x1ZGU6ICdsZWZ0JywgJ3JpZ2h0JyBhbmQgbnVsbFxuICAgICAqL1xuICAgIF9yaWdodENvbHVtblNlcGFyYXRvcjogQ29sdW1uU2VwYXJhdG9yVmFsdWUgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGFsbG93cyB0byBrZWVwIHRyYWNrIG9mIHRoZSBwcmV2aW9zIGxheW91dFxuICAgICAqIHNvIHdlIGNhbiBnbyBiYWNrIHRvIGl0IG9uIHdpbmRvdyByZXNpemVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9wcmV2aW91c0xheW91dDogRmxleGlibGVDb2x1bW5MYXlvdXQgPSB0aGlzLmxheW91dDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2NyZWVuU2l6ZTogU2NyZWVuU2l6ZSA9IExHX1NDUkVFTl9TSVpFO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIHRoZSBjb2x1bW4gbGF5b3V0IHJlcHJlc2VudGluZyB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aWR0aFxuICAgICAqIGJldHdlZW4gdGhlIGZpcnN0IChzdGFydCksIHRoZSBtaWRkbGUgYW5kIHRoZSBsYXN0KGVuZCkgY29sdW1uXG4gICAgICovXG4gICAgX2NvbHVtbkxheW91dDogeyBzdGFydDogbnVtYmVyOyBtaWQ6IG51bWJlcjsgZW5kOiBudW1iZXIgfSA9IHRoaXMubGF5b3V0RGVmaW5pdGlvbnNbdGhpcy5sYXlvdXRdO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIHNldCB0byAndHJ1ZScgaWYgdGhlIGxheW91dCBpcyBjaGFuZ2VkIHRvIGZ1bGxzY3JlZW4gb24gd2luZG93IHJlc2l6ZVxuICAgICAqIHRoaXMgd2lsbCBhbGxvdyB0aGUgbGF5b3V0IHRvIHN3aXRjaCB0byBwcmV2aW91cyBtb2RlIG9uIFNNLT5NRCB0cmFuc2l0aW9uXG4gICAgICogaWYgYSBsYXlvdXQgaXMgc2V0IGJ5IHRoZSB1c2VyIHRvIGZ1bGxzY3JlZW4sIGl0IHNob3VsZCBwZXJzaXN0IG9uIHdpbmRvdyByZXNpemVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9yZXNwb25zaXZlRnVsbHNjcmVlbkxheW91dCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChGRF9GTEVYSUJMRV9MQVlPVVRfQ09ORklHKSBwcml2YXRlIHJlYWRvbmx5IF9jb25maWc6IEZsZXhpYmxlTGF5b3V0Q29uZmlnKSB7fVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyB0aGUgY2xpY2sgZXZlbnRzIG9uIHRoZSBsZWZ0IHNlcGFyYXRvclxuICAgICAqIGFuZCB1cGRhdGVzIHRoZSBsYXlvdXRcbiAgICAgKi9cbiAgICBfaGFuZGxlTGVmdENvbHVtblNlcGFyYXRvckNsaWNrKCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKHRoaXMubGF5b3V0KSB7XG4gICAgICAgICAgICBjYXNlIFRXT19DT0xVTU5TX1NUQVJUX0VYUEFOREVEOlxuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRMYXlvdXQoVFdPX0NPTFVNTlNfTUlEX0VYUEFOREVEKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgVFdPX0NPTFVNTlNfTUlEX0VYUEFOREVEOlxuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRMYXlvdXQoVFdPX0NPTFVNTlNfU1RBUlRfRVhQQU5ERUQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUSFJFRV9DT0xVTU5TX01JRF9FWFBBTkRFRDpcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50TGF5b3V0KFRIUkVFX0NPTFVNTlNfRU5EX01JTklNSVpFRCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFRIUkVFX0NPTFVNTlNfRU5EX01JTklNSVpFRDpcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50TGF5b3V0KFRXT19DT0xVTU5TX1NUQVJUX0VYUEFOREVEKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgVEhSRUVfQ09MVU1OU19TVEFSVF9NSU5JTUlaRUQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudExheW91dChUSFJFRV9DT0xVTU5TX0VORF9NSU5JTUlaRUQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyB0aGUgY2xpY2sgZXZlbnRzIG9uIHRoZSByaWdodCBzZXBhcmF0b3JcbiAgICAgKiBhbmQgdXBkYXRlcyB0aGUgbGF5b3V0XG4gICAgICovXG4gICAgX2hhbmRsZVJpZ2h0Q29sdW1uU2VwYXJhdG9yQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5sYXlvdXQpIHtcbiAgICAgICAgICAgIGNhc2UgVFdPX0NPTFVNTlNfRU5EX0VYUEFOREVEOlxuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRMYXlvdXQoVEhSRUVfQ09MVU1OU19TVEFSVF9NSU5JTUlaRUQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUSFJFRV9DT0xVTU5TX01JRF9FWFBBTkRFRDpcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50TGF5b3V0KFRIUkVFX0NPTFVNTlNfRU5EX0VYUEFOREVEKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgVEhSRUVfQ09MVU1OU19FTkRfRVhQQU5ERUQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudExheW91dChUSFJFRV9DT0xVTU5TX01JRF9FWFBBTkRFRCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFRIUkVFX0NPTFVNTlNfRU5EX01JTklNSVpFRDpcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50TGF5b3V0KFRIUkVFX0NPTFVNTlNfTUlEX0VYUEFOREVEKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgVEhSRUVfQ09MVU1OU19TVEFSVF9NSU5JTUlaRUQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudExheW91dChUV09fQ09MVU1OU19FTkRfRVhQQU5ERUQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGZ1bmN0aW9uIHRvIGRldGVybWluZSB0aGUgc2NyZWVuIHNpemUgaW4gJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJ1xuICAgICAqIGZvcm1hdCBkZXBlbmRpbmcgb24gdGhlIHdpbmRvdyBzaXplIGluIHB4XG4gICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0U2NyZWVuU2l6ZShzaXplOiBudW1iZXIpOiBTY3JlZW5TaXplIHtcbiAgICAgICAgaWYgKHNpemUgPiB0aGlzLmxnQnJlYWtQb2ludCkge1xuICAgICAgICAgICAgcmV0dXJuIExHX1NDUkVFTl9TSVpFO1xuICAgICAgICB9IGVsc2UgaWYgKHNpemUgPiB0aGlzLnNtQnJlYWtQb2ludCAmJiBzaXplIDw9IHRoaXMubGdCcmVha1BvaW50KSB7XG4gICAgICAgICAgICByZXR1cm4gTURfU0NSRUVOX1NJWkU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gU01fU0NSRUVOX1NJWkU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogaGFuZGxlcyB0aGUgY2hhbmdlIG9mIHRoZSBsYXlvdXRzIG9uIHJlYWNoaW5nIGEgYnJlYWsgcG9pbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9yZXNwb25zaXZlTGF5b3V0Q2hhbmdlSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2NyZWVuU2l6ZSA9IHRoaXMuX2dldFNjcmVlblNpemUod2luZG93LmlubmVyV2lkdGgpO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5sYXlvdXQpIHtcbiAgICAgICAgICAgIGNhc2UgT05FX0NPTFVNTl9NSURfRlVMTF9TQ1JFRU46XG4gICAgICAgICAgICBjYXNlIE9ORV9DT0xVTU5fRU5EX0ZVTExfU0NSRUVOOiB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zY3JlZW5TaXplICE9PSBTTV9TQ1JFRU5fU0laRSAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dCAhPT0gdGhpcy5fcHJldmlvdXNMYXlvdXQgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzcG9uc2l2ZUZ1bGxzY3JlZW5MYXlvdXRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzcG9uc2l2ZUZ1bGxzY3JlZW5MYXlvdXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudExheW91dCh0aGlzLl9wcmV2aW91c0xheW91dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFRXT19DT0xVTU5TX1NUQVJUX0VYUEFOREVEOlxuICAgICAgICAgICAgY2FzZSBUV09fQ09MVU1OU19NSURfRVhQQU5ERUQ6IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fc2NyZWVuU2l6ZSA9PT0gU01fU0NSRUVOX1NJWkUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzcG9uc2l2ZUZ1bGxzY3JlZW5MYXlvdXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50TGF5b3V0KE9ORV9DT0xVTU5fTUlEX0ZVTExfU0NSRUVOKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgVFdPX0NPTFVNTlNfRU5EX0VYUEFOREVEOiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NjcmVlblNpemUgPT09IFNNX1NDUkVFTl9TSVpFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3BvbnNpdmVGdWxsc2NyZWVuTGF5b3V0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudExheW91dChPTkVfQ09MVU1OX0VORF9GVUxMX1NDUkVFTik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NjcmVlblNpemUgPT09IExHX1NDUkVFTl9TSVpFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRMYXlvdXQoVEhSRUVfQ09MVU1OU19FTkRfRVhQQU5ERUQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBUSFJFRV9DT0xVTU5TX1NUQVJUX01JTklNSVpFRDoge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zY3JlZW5TaXplID09PSBTTV9TQ1JFRU5fU0laRSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNwb25zaXZlRnVsbHNjcmVlbkxheW91dCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRMYXlvdXQoT05FX0NPTFVNTl9FTkRfRlVMTF9TQ1JFRU4pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zY3JlZW5TaXplID09PSBMR19TQ1JFRU5fU0laRSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50TGF5b3V0KFRIUkVFX0NPTFVNTlNfTUlEX0VYUEFOREVEKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgVEhSRUVfQ09MVU1OU19FTkRfTUlOSU1JWkVEOiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NjcmVlblNpemUgPT09IFNNX1NDUkVFTl9TSVpFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3BvbnNpdmVGdWxsc2NyZWVuTGF5b3V0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudExheW91dChPTkVfQ09MVU1OX0VORF9GVUxMX1NDUkVFTik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NjcmVlblNpemUgPT09IExHX1NDUkVFTl9TSVpFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRMYXlvdXQoVEhSRUVfQ09MVU1OU19FTkRfTUlOSU1JWkVEKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgVEhSRUVfQ09MVU1OU19NSURfRVhQQU5ERUQ6IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fc2NyZWVuU2l6ZSA9PT0gU01fU0NSRUVOX1NJWkUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzcG9uc2l2ZUZ1bGxzY3JlZW5MYXlvdXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50TGF5b3V0KE9ORV9DT0xVTU5fRU5EX0ZVTExfU0NSRUVOKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fc2NyZWVuU2l6ZSA9PT0gTURfU0NSRUVOX1NJWkUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudExheW91dChUSFJFRV9DT0xVTU5TX1NUQVJUX01JTklNSVpFRCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFRIUkVFX0NPTFVNTlNfRU5EX0VYUEFOREVEOiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NjcmVlblNpemUgPT09IFNNX1NDUkVFTl9TSVpFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3BvbnNpdmVGdWxsc2NyZWVuTGF5b3V0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudExheW91dChPTkVfQ09MVU1OX0VORF9GVUxMX1NDUkVFTik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NjcmVlblNpemUgPT09IE1EX1NDUkVFTl9TSVpFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRMYXlvdXQoVFdPX0NPTFVNTlNfRU5EX0VYUEFOREVEKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTGlzdGVuIG9uIHdpbmRvdyByZXNpemUgYW5kIHVwZGF0ZSB0aGUgbGF5b3V0XG4gICAgICogY2FsbCB1c2VyIGRlZmluZWQgY3VzdG9tIGZ1bmN0aW9uIGlmIHByb3ZpZGVkXG4gICAgICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25XaW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbU9uUmVzaXplRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tT25SZXNpemVGdW5jdGlvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDApKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3Jlc3BvbnNpdmVMYXlvdXRDaGFuZ2VIYW5kbGVyKCkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGRldGVybWluZXMgaWYgdGhlIGxlZnQgc2VwYXJhdG9yIHNob3VsZCBiZSB2aXNpYmxlXG4gICAgICogYW5kIHRoZSB2YWx1ZSB0aGF0IHdpbGwgc3BlY2lmeSB0aGUgZGlyZWN0aW9uIG9mIHRoZSBhcnJvd1xuICAgICAqL1xuICAgIHByaXZhdGUgX2dldExlZnRDb2x1bW5TZXBhcmF0b3JWYWx1ZSgpOiBDb2x1bW5TZXBhcmF0b3JWYWx1ZSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5sYXlvdXQpIHtcbiAgICAgICAgICAgIGNhc2UgVFdPX0NPTFVNTlNfU1RBUlRfRVhQQU5ERUQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICAgICAgICAgIGNhc2UgVFdPX0NPTFVNTlNfTUlEX0VYUEFOREVEOlxuICAgICAgICAgICAgY2FzZSBUSFJFRV9DT0xVTU5TX01JRF9FWFBBTkRFRDpcbiAgICAgICAgICAgIGNhc2UgVEhSRUVfQ09MVU1OU19FTkRfTUlOSU1JWkVEOlxuICAgICAgICAgICAgY2FzZSBUSFJFRV9DT0xVTU5TX1NUQVJUX01JTklNSVpFRDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogZGV0ZXJtaW5lcyBpZiB0aGUgcmlnaHQgc2VwYXJhdG9yIHNob3VsZCBiZSB2aXNpYmxlXG4gICAgICogYW5kIHRoZSB2YWx1ZSB0aGF0IHdpbGwgc3BlY2lmeSB0aGUgZGlyZWN0aW9uIG9mIHRoZSBhcnJvd1xuICAgICAqL1xuICAgIHByaXZhdGUgX2dldFJpZ2h0Q29sdW1uU2VwYXJhdG9yVmFsdWUoKTogQ29sdW1uU2VwYXJhdG9yVmFsdWUge1xuICAgICAgICBzd2l0Y2ggKHRoaXMubGF5b3V0KSB7XG4gICAgICAgICAgICBjYXNlIFRXT19DT0xVTU5TX0VORF9FWFBBTkRFRDpcbiAgICAgICAgICAgIGNhc2UgVEhSRUVfQ09MVU1OU19FTkRfRVhQQU5ERUQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgICAgICAgICBjYXNlIFRIUkVFX0NPTFVNTlNfTUlEX0VYUEFOREVEOlxuICAgICAgICAgICAgY2FzZSBUSFJFRV9DT0xVTU5TX0VORF9NSU5JTUlaRUQ6XG4gICAgICAgICAgICBjYXNlIFRIUkVFX0NPTFVNTlNfU1RBUlRfTUlOSU1JWkVEOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIHVwZGF0ZXMgdGhlIGNvbHVtbiBsYXlvdXQgYmFzZWQgb24gdGhlIGxheW91dCBuYW1lXG4gICAgICogbWFrZXMgYSBjYWxsIHRvIGRldGVybWluZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSBsZWZ0IHNlcGFyYXRvclxuICAgICAqIG1ha2VzIGEgY2FsbCB0byBkZXRlcm1pbmUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgcmlnaHQgc2VwYXJhdG9yXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlQ29sdW1uTGF5b3V0UGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29sdW1uTGF5b3V0ID0gdGhpcy5sYXlvdXREZWZpbml0aW9uc1t0aGlzLmxheW91dF07XG4gICAgICAgIHRoaXMuX2xlZnRDb2x1bW5TZXBhcmF0b3IgPSB0aGlzLl9nZXRMZWZ0Q29sdW1uU2VwYXJhdG9yVmFsdWUoKTtcbiAgICAgICAgdGhpcy5fcmlnaHRDb2x1bW5TZXBhcmF0b3IgPSB0aGlzLl9nZXRSaWdodENvbHVtblNlcGFyYXRvclZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIHVwZGF0ZXMgdGhlIGxheW91dFxuICAgICAqIGVtaXRzIGFuIGV2ZW50XG4gICAgICogbWFrZXMgYSBjYWxsIHRvIHRoZSBoZWxwZXIgZnVuY3Rpb24gdGhhdCB3aWxsIHVwZGF0ZSB0aGUgY29sdW1uIGxheW91dCBhbmQgdGhlIHNlcGFyYXRvcnNcbiAgICAgKi9cbiAgICBwcml2YXRlIF91cGRhdGVDdXJyZW50TGF5b3V0KG5ld0xheW91dDogRmxleGlibGVDb2x1bW5MYXlvdXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSBuZXdMYXlvdXQ7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbkxheW91dFBhcmFtZXRlcnMoKTtcblxuICAgICAgICAvLyBzZXRUaW1lb3V0IGZpeGVzIFwiRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclwiXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2UuZW1pdCh0aGlzLmxheW91dCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbkxheW91dFBhcmFtZXRlcnMoKTtcbiAgICAgICAgdGhpcy5fcHJldmlvdXNMYXlvdXQgPSB0aGlzLmxheW91dDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2NyZWVuU2l6ZSA9IHRoaXMuX2dldFNjcmVlblNpemUod2luZG93LmlubmVyV2lkdGgpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PbldpbmRvd1Jlc2l6ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICB0aGlzLl91cGRhdGVDb2x1bW5MYXlvdXRQYXJhbWV0ZXJzKCk7XG5cbiAgICAgICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlcy5sYXlvdXQucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNMYXlvdXQgPSBjaGFuZ2VzLmxheW91dC5wcmV2aW91c1ZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlcy5sYXlvdXQpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc3BvbnNpdmVMYXlvdXRDaGFuZ2VIYW5kbGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZmQtZmxleGlibGUtY29sdW1uLWxheW91dFwiXG4gICAgW2NsYXNzLmZkLWZsZXhpYmxlLWNvbHVtbi1sYXlvdXQtLXRyYW5zbHVjZW50XT1cImJhY2tncm91bmREZXNpZ24gPT09ICd0cmFuc2x1Y2VudCdcIlxuICAgIFtjbGFzcy5mZC1mbGV4aWJsZS1jb2x1bW4tbGF5b3V0LS10cmFuc3BhcmVudF09XCJiYWNrZ3JvdW5kRGVzaWduID09PSAndHJhbnNwYXJlbnQnXCJcbj5cbiAgICA8IS0tIFN0YXJ0L0xlZnQvRmlyc3QgQ29sdW1uIC0tPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmZC1mbGV4aWJsZS1jb2x1bW4tbGF5b3V0X19jb2x1bW5cIlxuICAgICAgICBbc3R5bGUud2lkdGguJV09XCJfY29sdW1uTGF5b3V0LnN0YXJ0XCJcbiAgICAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwiX2NvbHVtbkxheW91dC5zdGFydCA9PT0gMCA/ICdoaWRkZW4nIDogJ3Zpc2libGUnXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJfY29sdW1uTGF5b3V0LnN0YXJ0ID09PSAwID8gJzAnIDogJ2F1dG8nXCJcbiAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiX2NvbHVtbkxheW91dC5zdGFydCA9PT0gMFwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RhcnRDb2x1bW5cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIExlZnQgU2VwYXJhdG9yIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJfbGVmdENvbHVtblNlcGFyYXRvclwiIGNsYXNzPVwiZmQtZmxleGlibGUtY29sdW1uLWxheW91dF9fc2VwYXJhdG9yXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmRDb21wYWN0XG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLWZsZXhpYmxlLWNvbHVtbi1sYXlvdXRfX2J1dHRvblwiXG4gICAgICAgICAgICBhcmlhTGFiZWw9XCJFeHBhbmRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVMZWZ0Q29sdW1uU2VwYXJhdG9yQ2xpY2soKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cIl9sZWZ0Q29sdW1uU2VwYXJhdG9yID8gJ3NhcC1pY29uLS1zbGltLWFycm93LScgKyBfbGVmdENvbHVtblNlcGFyYXRvciA6ICcnXCJcbiAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gTWlkZGxlL1NlY29uZCBDb2x1bW4gLS0+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZkLWZsZXhpYmxlLWNvbHVtbi1sYXlvdXRfX2NvbHVtblwiXG4gICAgICAgIFtzdHlsZS53aWR0aC4lXT1cIl9jb2x1bW5MYXlvdXQubWlkXCJcbiAgICAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwiX2NvbHVtbkxheW91dC5taWQgPT09IDAgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ1wiXG4gICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiX2NvbHVtbkxheW91dC5taWQgPT09IDAgPyAnMCcgOiAnYXV0bydcIlxuICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJfY29sdW1uTGF5b3V0Lm1pZCA9PT0gMFwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWlkQ29sdW1uXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBSaWdodCBTZXBhcmF0b3IgLS0+XG4gICAgPGRpdiAqbmdJZj1cIl9yaWdodENvbHVtblNlcGFyYXRvclwiIGNsYXNzPVwiZmQtZmxleGlibGUtY29sdW1uLWxheW91dF9fc2VwYXJhdG9yXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmRDb21wYWN0XG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLWZsZXhpYmxlLWNvbHVtbi1sYXlvdXRfX2J1dHRvblwiXG4gICAgICAgICAgICBhcmlhTGFiZWw9XCJFeHBhbmRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVSaWdodENvbHVtblNlcGFyYXRvckNsaWNrKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJfcmlnaHRDb2x1bW5TZXBhcmF0b3IgPyAnc2FwLWljb24tLXNsaW0tYXJyb3ctJyArIF9yaWdodENvbHVtblNlcGFyYXRvciA6ICcnXCJcbiAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gRW5kL1JpZ2h0L1RoaXJkIENvbHVtbiAtLT5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmQtZmxleGlibGUtY29sdW1uLWxheW91dF9fY29sdW1uXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLiVdPVwiX2NvbHVtbkxheW91dC5lbmRcIlxuICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJfY29sdW1uTGF5b3V0LmVuZCA9PT0gMCA/ICdoaWRkZW4nIDogJ3Zpc2libGUnXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJfY29sdW1uTGF5b3V0LmVuZCA9PT0gMCA/ICcwJyA6ICdhdXRvJ1wiXG4gICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cIl9jb2x1bW5MYXlvdXQuZW5kID09PSAwXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbmRDb2x1bW5cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
364
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleGlibGUtY29sdW1uLWxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9mbGV4aWJsZS1jb2x1bW4tbGF5b3V0L2ZsZXhpYmxlLWNvbHVtbi1sYXlvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZmxleGlibGUtY29sdW1uLWxheW91dC9mbGV4aWJsZS1jb2x1bW4tbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEVBRU4sV0FBVyxFQUNYLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUVILHlCQUF5QixFQUl6QixjQUFjLEVBQ2QsY0FBYyxFQUNkLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFDMUIsNEJBQTRCLEVBRTVCLGNBQWMsRUFDZCwwQkFBMEIsRUFDMUIsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMxQiw2QkFBNkIsRUFDN0Isd0JBQXdCLEVBQ3hCLHdCQUF3QixFQUN4QiwwQkFBMEIsRUFDN0IsTUFBTSxhQUFhLENBQUM7Ozs7O0FBU3JCLE1BQU0sT0FBTyw2QkFBNkI7SUErSHRDLFlBQWdFLE9BQTZCO1FBQTdCLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBNUc3Rjs7OztXQUlHO1FBRUgscUJBQWdCLEdBQTRDLE9BQU8sQ0FBQztRQUVwRTs7Ozs7O1dBTUc7UUFFSCxXQUFNLEdBQXlCLDRCQUE0QixDQUFDO1FBRTVEOztXQUVHO1FBRUgs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ZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDOzswSEE3WVEsNkJBQTZCLGtCQStIbEIseUJBQXlCOzhHQS9IcEMsNkJBQTZCLDJ0QkMvQzFDLDA3RkE0RUE7MkZEN0JhLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDSSwyQkFBMkIsbUJBR3BCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7OzBCQWlJeEIsTUFBTTsyQkFBQyx5QkFBeUI7NENBMUg3QyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsYUFBYTtnQkFPM0IsU0FBUztzQkFEUixZQUFZO3VCQUFDLFdBQVc7Z0JBT3pCLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxXQUFXO2dCQVN6QixnQkFBZ0I7c0JBRGYsS0FBSztnQkFXTixNQUFNO3NCQURMLEtBQUs7Z0JBT04saUJBQWlCO3NCQURoQixLQUFLO2dCQU9OLFlBQVk7c0JBRFgsTUFBTTtnQkFRUCxZQUFZO3NCQURYLEtBQUs7Z0JBUU4sWUFBWTtzQkFEWCxLQUFLO2dCQU9OLHNCQUFzQjtzQkFEckIsS0FBSztnQkFLTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQUtOLGFBQWE7c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBDb2x1bW5TZXBhcmF0b3JWYWx1ZSxcbiAgICBGRF9GTEVYSUJMRV9MQVlPVVRfQ09ORklHLFxuICAgIEZsZXhpYmxlTGF5b3V0Q29uZmlnLFxuICAgIEZsZXhpYmxlQ29sdW1uTGF5b3V0LFxuICAgIEZsZXhpYmxlQ29sdW1uTGF5b3V0RGVmaW5pdGlvbixcbiAgICBMR19TQ1JFRU5fU0laRSxcbiAgICBNRF9TQ1JFRU5fU0laRSxcbiAgICBPTkVfQ09MVU1OX0VORF9GVUxMX1NDUkVFTixcbiAgICBPTkVfQ09MVU1OX01JRF9GVUxMX1NDUkVFTixcbiAgICBPTkVfQ09MVU1OX1NUQVJUX0ZVTExfU0NSRUVOLFxuICAgIFNjcmVlblNpemUsXG4gICAgU01fU0NSRUVOX1NJWkUsXG4gICAgVEhSRUVfQ09MVU1OU19FTkRfRVhQQU5ERUQsXG4gICAgVEhSRUVfQ09MVU1OU19FTkRfTUlOSU1JWkVELFxuICAgIFRIUkVFX0NPTFVNTlNfTUlEX0VYUEFOREVELFxuICAgIFRIUkVFX0NPTFVNTlNfU1RBUlRfTUlOSU1JWkVELFxuICAgIFRXT19DT0xVTU5TX0VORF9FWFBBTkRFRCxcbiAgICBUV09fQ09MVU1OU19NSURfRVhQQU5ERUQsXG4gICAgVFdPX0NPTFVNTlNfU1RBUlRfRVhQQU5ERURcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWZsZXhpYmxlLWNvbHVtbi1sYXlvdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mbGV4aWJsZS1jb2x1bW4tbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mbGV4aWJsZS1jb2x1bW4tbGF5b3V0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBGbGV4aWJsZUNvbHVtbkxheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQge1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSB0aGF0IHByb3ZpZGVzIHRoZSBjb250ZW50IG9mIHRoZSBmaXJzdC9zdGFydC9sZWZ0IGNvbHVtblxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3N0YXJ0Q29sdW1uJylcbiAgICBzdGFydENvbHVtbjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSB0aGF0IHByb3ZpZGVzIHRoZSBjb250ZW50IG9mIHRoZSBtaWRkbGUgY29sdW1uXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbWlkQ29sdW1uJylcbiAgICBtaWRDb2x1bW46IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdGVtcGxhdGUgdGhhdCBwcm92aWRlcyB0aGUgY29udGVudCBvZiB0aGUgbGFzdC9lbmQvcmlnaHQgY29sdW1uXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZW5kQ29sdW1uJylcbiAgICBlbmRDb2x1bW46IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFja2dyb3VuZCBkZXNpZ24gb2YgdGhlIGNvbXBvbmVudFxuICAgICAqIE9wdGlvbnMgaW5jbHVkZTogJ3NvbGlkJyB8ICd0cmFuc2x1Y2VudCcgfCAndHJhbnNwYXJlbnQnXG4gICAgICogVGhlIGRlZmF1bHQgaXMgc2V0IHRvICdzb2xpZCdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGJhY2tncm91bmREZXNpZ246ICdzb2xpZCcgfCAndHJhbnNsdWNlbnQnIHwgJ3RyYW5zcGFyZW50JyA9ICdzb2xpZCc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbGF5b3V0IG9mIHRoZSBjb21wb25lbnRcbiAgICAgKiBPcHRpb25zIGluY2x1ZGU6ICdPbmVDb2x1bW5TdGFydEZ1bGxTY3JlZW4nIHwgJ09uZUNvbHVtbk1pZEZ1bGxTY3JlZW4nIHxcbiAgICAgKiAnT25lQ29sdW1uRW5kRnVsbFNjcmVlbicgfCAnVHdvQ29sdW1uc1N0YXJ0RXhwYW5kZWQnIHwgJ1R3b0NvbHVtbnNNaWRFeHBhbmRlZCcgfFxuICAgICAqICdUd29Db2x1bW5zRW5kRXhwYW5kZWQnIHwgJ1RocmVlQ29sdW1uc01pZEV4cGFuZGVkJyB8ICdUaHJlZUNvbHVtbnNFbmRFeHBhbmRlZCcgfFxuICAgICAqICdUaHJlZUNvbHVtbnNTdGFydE1pbmltaXplZCcgfCAnVGhyZWVDb2x1bW5zRW5kTWluaW1pemVkJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGF5b3V0OiBGbGV4aWJsZUNvbHVtbkxheW91dCA9IE9ORV9DT0xVTU5fU1RBUlRfRlVMTF9TQ1JFRU47XG5cbiAgICAvKipcbiAgICAgKiBNYXBwaW5nIG9mIHRoZSBsYXlvdXQgbmFtZSBhbmQgdGhlIGNvbHVtbiBsYXlvdXQgaW4gJVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGF5b3V0RGVmaW5pdGlvbnM6IEZsZXhpYmxlQ29sdW1uTGF5b3V0RGVmaW5pdGlvbiA9IHRoaXMuX2NvbmZpZy5sYXlvdXRzO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGV2ZW50IGVtaXR0ZWQgb24gbGF5b3V0IHZhbHVlIGNoYW5nZS5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBsYXlvdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGbGV4aWJsZUNvbHVtbkxheW91dD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZsZXhpYmxlQ29sdW1uTGF5b3V0PigpO1xuXG4gICAgLyoqXG4gICAgICogVXNlciBkZWZpbmVkIGJyZWFrIHBvaW50IGZvciBTTSBzY3JlZW5zXG4gICAgICogRGVmYXVsdCAoRmlvcmkgMykgdmFsdWUgaXMgOTYwXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzbUJyZWFrUG9pbnQgPSA5NjA7XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgYnJlYWsgcG9pbnQgZm9yIExHIHNjcmVlbnNcbiAgICAgKiB0aGUgZGVmYXVsdCAoRmlvcmkgMykgdmFsdWUgaXMgMTI4MFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGdCcmVha1BvaW50ID0gMTI4MDtcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCBvblJlc2l6ZSBmdW5jdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY3VzdG9tT25SZXNpemVGdW5jdGlvbjogKCkgPT4gdm9pZDtcblxuICAgIC8qKiBhcmlhLWxhYmVsIGZvciBzZXBhcmF0b3IgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlcGFyYXRvckFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIHRpdGxlIGZvciBleHBhbmRlZCBidXR0b24gKi9cbiAgICBASW5wdXQoKVxuICAgIGV4cGFuZFRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogdGl0bGUgZm9yIGNvbGxhcHNlZCBidXR0b24gKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbGxhcHNlVGl0bGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBsZWZ0IGNvbHVtbiBzZXBhcmF0b3IgdmFsdWUgKGJldHdlZW4gc3RhcnQgYW5kIG1pZGRsZSBjb2x1bW5zKVxuICAgICAqIHRoYXQgc3BlY2lmaWVzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGFycm93IGFuZFxuICAgICAqIGlmIHRoZSBzZXBhcmF0b3IgaXMgdmlzaWJsZVxuICAgICAqIE9wdGlvbnMgaW5jbHVkZTogJ2xlZnQnLCAncmlnaHQnIGFuZCBudWxsXG4gICAgICovXG4gICAgX2xlZnRDb2x1bW5TZXBhcmF0b3I6IENvbHVtblNlcGFyYXRvclZhbHVlID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiByaWdodCBjb2x1bW4gc2VwYXJhdG9yIHZhbHVlIChiZXR3ZWVuIG1pZGRsZSBhbmQgZW5kIGNvbHVtbnMpXG4gICAgICogdGhhdCBzcGVjaWZpZXMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgYXJyb3cgYW5kXG4gICAgICogaWYgdGhlIHNlcGFyYXRvciBpcyB2aXNpYmxlXG4gICAgICogT3B0aW9ucyBpbmNsdWRlOiAnbGVmdCcsICdyaWdodCcgYW5kIG51bGxcbiAgICAgKi9cbiAgICBfcmlnaHRDb2x1bW5TZXBhcmF0b3I6IENvbHVtblNlcGFyYXRvclZhbHVlID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBhbGxvd3MgdG8ga2VlcCB0cmFjayBvZiB0aGUgcHJldmlvcyBsYXlvdXRcbiAgICAgKiBzbyB3ZSBjYW4gZ28gYmFjayB0byBpdCBvbiB3aW5kb3cgcmVzaXplXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcHJldmlvdXNMYXlvdXQ6IEZsZXhpYmxlQ29sdW1uTGF5b3V0ID0gdGhpcy5sYXlvdXQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NjcmVlblNpemU6IFNjcmVlblNpemUgPSBMR19TQ1JFRU5fU0laRTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiB0aGUgY29sdW1uIGxheW91dCByZXByZXNlbnRpbmcgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd2lkdGhcbiAgICAgKiBiZXR3ZWVuIHRoZSBmaXJzdCAoc3RhcnQpLCB0aGUgbWlkZGxlIGFuZCB0aGUgbGFzdChlbmQpIGNvbHVtblxuICAgICAqL1xuICAgIF9jb2x1bW5MYXlvdXQ6IHsgc3RhcnQ6IG51bWJlcjsgbWlkOiBudW1iZXI7IGVuZDogbnVtYmVyIH0gPSB0aGlzLmxheW91dERlZmluaXRpb25zW3RoaXMubGF5b3V0XTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBzZXQgdG8gJ3RydWUnIGlmIHRoZSBsYXlvdXQgaXMgY2hhbmdlZCB0byBmdWxsc2NyZWVuIG9uIHdpbmRvdyByZXNpemVcbiAgICAgKiB0aGlzIHdpbGwgYWxsb3cgdGhlIGxheW91dCB0byBzd2l0Y2ggdG8gcHJldmlvdXMgbW9kZSBvbiBTTS0+TUQgdHJhbnNpdGlvblxuICAgICAqIGlmIGEgbGF5b3V0IGlzIHNldCBieSB0aGUgdXNlciB0byBmdWxsc2NyZWVuLCBpdCBzaG91bGQgcGVyc2lzdCBvbiB3aW5kb3cgcmVzaXplXG4gICAgICovXG4gICAgcHJpdmF0ZSBfcmVzcG9uc2l2ZUZ1bGxzY3JlZW5MYXlvdXQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRkRfRkxFWElCTEVfTEFZT1VUX0NPTkZJRykgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnOiBGbGV4aWJsZUxheW91dENvbmZpZykge31cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgdGhlIGNsaWNrIGV2ZW50cyBvbiB0aGUgbGVmdCBzZXBhcmF0b3JcbiAgICAgKiBhbmQgdXBkYXRlcyB0aGUgbGF5b3V0XG4gICAgICovXG4gICAgX2hhbmRsZUxlZnRDb2x1bW5TZXBhcmF0b3JDbGljaygpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmxheW91dCkge1xuICAgICAgICAgICAgY2FzZSBUV09fQ09MVU1OU19TVEFSVF9FWFBBTkRFRDpcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50TGF5b3V0KFRXT19DT0xVTU5TX01JRF9FWFBBTkRFRCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFRXT19DT0xVTU5TX01JRF9FWFBBTkRFRDpcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50TGF5b3V0KFRXT19DT0xVTU5TX1NUQVJUX0VYUEFOREVEKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgVEhSRUVfQ09MVU1OU19NSURfRVhQQU5ERUQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudExheW91dChUSFJFRV9DT0xVTU5TX0VORF9NSU5JTUlaRUQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUSFJFRV9DT0xVTU5TX0VORF9NSU5JTUlaRUQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudExheW91dChUV09fQ09MVU1OU19TVEFSVF9FWFBBTkRFRCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFRIUkVFX0NPTFVNTlNfU1RBUlRfTUlOSU1JWkVEOlxuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRMYXlvdXQoVEhSRUVfQ09MVU1OU19FTkRfTUlOSU1JWkVEKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgdGhlIGNsaWNrIGV2ZW50cyBvbiB0aGUgcmlnaHQgc2VwYXJhdG9yXG4gICAgICogYW5kIHVwZGF0ZXMgdGhlIGxheW91dFxuICAgICAqL1xuICAgIF9oYW5kbGVSaWdodENvbHVtblNlcGFyYXRvckNsaWNrKCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKHRoaXMubGF5b3V0KSB7XG4gICAgICAgICAgICBjYXNlIFRXT19DT0xVTU5TX0VORF9FWFBBTkRFRDpcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50TGF5b3V0KFRIUkVFX0NPTFVNTlNfU1RBUlRfTUlOSU1JWkVEKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgVEhSRUVfQ09MVU1OU19NSURfRVhQQU5ERUQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudExheW91dChUSFJFRV9DT0xVTU5TX0VORF9FWFBBTkRFRCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFRIUkVFX0NPTFVNTlNfRU5EX0VYUEFOREVEOlxuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRMYXlvdXQoVEhSRUVfQ09MVU1OU19NSURfRVhQQU5ERUQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUSFJFRV9DT0xVTU5TX0VORF9NSU5JTUlaRUQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudExheW91dChUSFJFRV9DT0xVTU5TX01JRF9FWFBBTkRFRCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFRIUkVFX0NPTFVNTlNfU1RBUlRfTUlOSU1JWkVEOlxuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRMYXlvdXQoVFdPX0NPTFVNTlNfRU5EX0VYUEFOREVEKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBmdW5jdGlvbiB0byBkZXRlcm1pbmUgdGhlIHNjcmVlbiBzaXplIGluICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCdcbiAgICAgKiBmb3JtYXQgZGVwZW5kaW5nIG9uIHRoZSB3aW5kb3cgc2l6ZSBpbiBweFxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldFNjcmVlblNpemUoc2l6ZTogbnVtYmVyKTogU2NyZWVuU2l6ZSB7XG4gICAgICAgIGlmIChzaXplID4gdGhpcy5sZ0JyZWFrUG9pbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBMR19TQ1JFRU5fU0laRTtcbiAgICAgICAgfSBlbHNlIGlmIChzaXplID4gdGhpcy5zbUJyZWFrUG9pbnQgJiYgc2l6ZSA8PSB0aGlzLmxnQnJlYWtQb2ludCkge1xuICAgICAgICAgICAgcmV0dXJuIE1EX1NDUkVFTl9TSVpFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFNNX1NDUkVFTl9TSVpFO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGhhbmRsZXMgdGhlIGNoYW5nZSBvZiB0aGUgbGF5b3V0cyBvbiByZWFjaGluZyBhIGJyZWFrIHBvaW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBfcmVzcG9uc2l2ZUxheW91dENoYW5nZUhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NjcmVlblNpemUgPSB0aGlzLl9nZXRTY3JlZW5TaXplKHdpbmRvdy5pbm5lcldpZHRoKTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMubGF5b3V0KSB7XG4gICAgICAgICAgICBjYXNlIE9ORV9DT0xVTU5fTUlEX0ZVTExfU0NSRUVOOlxuICAgICAgICAgICAgY2FzZSBPTkVfQ09MVU1OX0VORF9GVUxMX1NDUkVFTjoge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2NyZWVuU2l6ZSAhPT0gU01fU0NSRUVOX1NJWkUgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQgIT09IHRoaXMuX3ByZXZpb3VzTGF5b3V0ICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3BvbnNpdmVGdWxsc2NyZWVuTGF5b3V0XG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3BvbnNpdmVGdWxsc2NyZWVuTGF5b3V0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRMYXlvdXQodGhpcy5fcHJldmlvdXNMYXlvdXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBUV09fQ09MVU1OU19TVEFSVF9FWFBBTkRFRDpcbiAgICAgICAgICAgIGNhc2UgVFdPX0NPTFVNTlNfTUlEX0VYUEFOREVEOiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NjcmVlblNpemUgPT09IFNNX1NDUkVFTl9TSVpFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3BvbnNpdmVGdWxsc2NyZWVuTGF5b3V0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudExheW91dChPTkVfQ09MVU1OX01JRF9GVUxMX1NDUkVFTik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFRXT19DT0xVTU5TX0VORF9FWFBBTkRFRDoge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zY3JlZW5TaXplID09PSBTTV9TQ1JFRU5fU0laRSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNwb25zaXZlRnVsbHNjcmVlbkxheW91dCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRMYXlvdXQoT05FX0NPTFVNTl9FTkRfRlVMTF9TQ1JFRU4pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zY3JlZW5TaXplID09PSBMR19TQ1JFRU5fU0laRSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50TGF5b3V0KFRIUkVFX0NPTFVNTlNfRU5EX0VYUEFOREVEKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgVEhSRUVfQ09MVU1OU19TVEFSVF9NSU5JTUlaRUQ6IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fc2NyZWVuU2l6ZSA9PT0gU01fU0NSRUVOX1NJWkUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzcG9uc2l2ZUZ1bGxzY3JlZW5MYXlvdXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50TGF5b3V0KE9ORV9DT0xVTU5fRU5EX0ZVTExfU0NSRUVOKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fc2NyZWVuU2l6ZSA9PT0gTEdfU0NSRUVOX1NJWkUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudExheW91dChUSFJFRV9DT0xVTU5TX01JRF9FWFBBTkRFRCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFRIUkVFX0NPTFVNTlNfRU5EX01JTklNSVpFRDoge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zY3JlZW5TaXplID09PSBTTV9TQ1JFRU5fU0laRSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNwb25zaXZlRnVsbHNjcmVlbkxheW91dCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRMYXlvdXQoT05FX0NPTFVNTl9FTkRfRlVMTF9TQ1JFRU4pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zY3JlZW5TaXplID09PSBMR19TQ1JFRU5fU0laRSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50TGF5b3V0KFRIUkVFX0NPTFVNTlNfRU5EX01JTklNSVpFRCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFRIUkVFX0NPTFVNTlNfTUlEX0VYUEFOREVEOiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NjcmVlblNpemUgPT09IFNNX1NDUkVFTl9TSVpFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3BvbnNpdmVGdWxsc2NyZWVuTGF5b3V0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudExheW91dChPTkVfQ09MVU1OX0VORF9GVUxMX1NDUkVFTik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NjcmVlblNpemUgPT09IE1EX1NDUkVFTl9TSVpFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRMYXlvdXQoVEhSRUVfQ09MVU1OU19TVEFSVF9NSU5JTUlaRUQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBUSFJFRV9DT0xVTU5TX0VORF9FWFBBTkRFRDoge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zY3JlZW5TaXplID09PSBTTV9TQ1JFRU5fU0laRSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNwb25zaXZlRnVsbHNjcmVlbkxheW91dCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRMYXlvdXQoT05FX0NPTFVNTl9FTkRfRlVMTF9TQ1JFRU4pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zY3JlZW5TaXplID09PSBNRF9TQ1JFRU5fU0laRSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50TGF5b3V0KFRXT19DT0xVTU5TX0VORF9FWFBBTkRFRCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExpc3RlbiBvbiB3aW5kb3cgcmVzaXplIGFuZCB1cGRhdGUgdGhlIGxheW91dFxuICAgICAqIGNhbGwgdXNlciBkZWZpbmVkIGN1c3RvbSBmdW5jdGlvbiBpZiBwcm92aWRlZFxuICAgICAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uV2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXN0b21PblJlc2l6ZUZ1bmN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbU9uUmVzaXplRnVuY3Rpb24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9yZXNwb25zaXZlTGF5b3V0Q2hhbmdlSGFuZGxlcigpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBkZXRlcm1pbmVzIGlmIHRoZSBsZWZ0IHNlcGFyYXRvciBzaG91bGQgYmUgdmlzaWJsZVxuICAgICAqIGFuZCB0aGUgdmFsdWUgdGhhdCB3aWxsIHNwZWNpZnkgdGhlIGRpcmVjdGlvbiBvZiB0aGUgYXJyb3dcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRMZWZ0Q29sdW1uU2VwYXJhdG9yVmFsdWUoKTogQ29sdW1uU2VwYXJhdG9yVmFsdWUge1xuICAgICAgICBzd2l0Y2ggKHRoaXMubGF5b3V0KSB7XG4gICAgICAgICAgICBjYXNlIFRXT19DT0xVTU5TX1NUQVJUX0VYUEFOREVEOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgICAgICAgICBjYXNlIFRXT19DT0xVTU5TX01JRF9FWFBBTkRFRDpcbiAgICAgICAgICAgIGNhc2UgVEhSRUVfQ09MVU1OU19NSURfRVhQQU5ERUQ6XG4gICAgICAgICAgICBjYXNlIFRIUkVFX0NPTFVNTlNfRU5EX01JTklNSVpFRDpcbiAgICAgICAgICAgIGNhc2UgVEhSRUVfQ09MVU1OU19TVEFSVF9NSU5JTUlaRUQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGRldGVybWluZXMgaWYgdGhlIHJpZ2h0IHNlcGFyYXRvciBzaG91bGQgYmUgdmlzaWJsZVxuICAgICAqIGFuZCB0aGUgdmFsdWUgdGhhdCB3aWxsIHNwZWNpZnkgdGhlIGRpcmVjdGlvbiBvZiB0aGUgYXJyb3dcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRSaWdodENvbHVtblNlcGFyYXRvclZhbHVlKCk6IENvbHVtblNlcGFyYXRvclZhbHVlIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmxheW91dCkge1xuICAgICAgICAgICAgY2FzZSBUV09fQ09MVU1OU19FTkRfRVhQQU5ERUQ6XG4gICAgICAgICAgICBjYXNlIFRIUkVFX0NPTFVNTlNfRU5EX0VYUEFOREVEOlxuICAgICAgICAgICAgICAgIHJldHVybiAncmlnaHQnO1xuICAgICAgICAgICAgY2FzZSBUSFJFRV9DT0xVTU5TX01JRF9FWFBBTkRFRDpcbiAgICAgICAgICAgIGNhc2UgVEhSRUVfQ09MVU1OU19FTkRfTUlOSU1JWkVEOlxuICAgICAgICAgICAgY2FzZSBUSFJFRV9DT0xVTU5TX1NUQVJUX01JTklNSVpFRDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2xlZnQnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiB1cGRhdGVzIHRoZSBjb2x1bW4gbGF5b3V0IGJhc2VkIG9uIHRoZSBsYXlvdXQgbmFtZVxuICAgICAqIG1ha2VzIGEgY2FsbCB0byBkZXRlcm1pbmUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgbGVmdCBzZXBhcmF0b3JcbiAgICAgKiBtYWtlcyBhIGNhbGwgdG8gZGV0ZXJtaW5lIHRoZSBuZXcgdmFsdWUgb2YgdGhlIHJpZ2h0IHNlcGFyYXRvclxuICAgICAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZUNvbHVtbkxheW91dFBhcmFtZXRlcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbHVtbkxheW91dCA9IHRoaXMubGF5b3V0RGVmaW5pdGlvbnNbdGhpcy5sYXlvdXRdO1xuICAgICAgICB0aGlzLl9sZWZ0Q29sdW1uU2VwYXJhdG9yID0gdGhpcy5fZ2V0TGVmdENvbHVtblNlcGFyYXRvclZhbHVlKCk7XG4gICAgICAgIHRoaXMuX3JpZ2h0Q29sdW1uU2VwYXJhdG9yID0gdGhpcy5fZ2V0UmlnaHRDb2x1bW5TZXBhcmF0b3JWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiB1cGRhdGVzIHRoZSBsYXlvdXRcbiAgICAgKiBlbWl0cyBhbiBldmVudFxuICAgICAqIG1ha2VzIGEgY2FsbCB0byB0aGUgaGVscGVyIGZ1bmN0aW9uIHRoYXQgd2lsbCB1cGRhdGUgdGhlIGNvbHVtbiBsYXlvdXQgYW5kIHRoZSBzZXBhcmF0b3JzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlQ3VycmVudExheW91dChuZXdMYXlvdXQ6IEZsZXhpYmxlQ29sdW1uTGF5b3V0KTogdm9pZCB7XG4gICAgICAgIHRoaXMubGF5b3V0ID0gbmV3TGF5b3V0O1xuICAgICAgICB0aGlzLl91cGRhdGVDb2x1bW5MYXlvdXRQYXJhbWV0ZXJzKCk7XG5cbiAgICAgICAgLy8gc2V0VGltZW91dCBmaXhlcyBcIkV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcIlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0Q2hhbmdlLmVtaXQodGhpcy5sYXlvdXQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91cGRhdGVDb2x1bW5MYXlvdXRQYXJhbWV0ZXJzKCk7XG4gICAgICAgIHRoaXMuX3ByZXZpb3VzTGF5b3V0ID0gdGhpcy5sYXlvdXQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NjcmVlblNpemUgPSB0aGlzLl9nZXRTY3JlZW5TaXplKHdpbmRvdy5pbm5lcldpZHRoKTtcbiAgICAgICAgdGhpcy5fbGlzdGVuT25XaW5kb3dSZXNpemUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXBkYXRlQ29sdW1uTGF5b3V0UGFyYW1ldGVycygpO1xuXG4gICAgICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXMubGF5b3V0LnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzTGF5b3V0ID0gY2hhbmdlcy5sYXlvdXQucHJldmlvdXNWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXMubGF5b3V0KSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNwb25zaXZlTGF5b3V0Q2hhbmdlSGFuZGxlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZkLWZsZXhpYmxlLWNvbHVtbi1sYXlvdXRcIlxuICAgIFtjbGFzcy5mZC1mbGV4aWJsZS1jb2x1bW4tbGF5b3V0LS10cmFuc2x1Y2VudF09XCJiYWNrZ3JvdW5kRGVzaWduID09PSAndHJhbnNsdWNlbnQnXCJcbiAgICBbY2xhc3MuZmQtZmxleGlibGUtY29sdW1uLWxheW91dC0tdHJhbnNwYXJlbnRdPVwiYmFja2dyb3VuZERlc2lnbiA9PT0gJ3RyYW5zcGFyZW50J1wiXG4+XG4gICAgPCEtLSBTdGFydC9MZWZ0L0ZpcnN0IENvbHVtbiAtLT5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmQtZmxleGlibGUtY29sdW1uLWxheW91dF9fY29sdW1uXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLiVdPVwiX2NvbHVtbkxheW91dC5zdGFydFwiXG4gICAgICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cIl9jb2x1bW5MYXlvdXQuc3RhcnQgPT09IDAgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ1wiXG4gICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiX2NvbHVtbkxheW91dC5zdGFydCA9PT0gMCA/ICcwJyA6ICdhdXRvJ1wiXG4gICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cIl9jb2x1bW5MYXlvdXQuc3RhcnQgPT09IDBcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXJ0Q29sdW1uXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBMZWZ0IFNlcGFyYXRvciAtLT5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiX2xlZnRDb2x1bW5TZXBhcmF0b3JcIlxuICAgICAgICBjbGFzcz1cImZkLWZsZXhpYmxlLWNvbHVtbi1sYXlvdXRfX3NlcGFyYXRvclwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic2VwYXJhdG9yQXJpYUxhYmVsXCJcbiAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmRDb21wYWN0XG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLWZsZXhpYmxlLWNvbHVtbi1sYXlvdXRfX2J1dHRvblwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiX2xlZnRDb2x1bW5TZXBhcmF0b3IgPT09ICdsZWZ0JyA/IGV4cGFuZFRpdGxlIDogY29sbGFwc2VUaXRsZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiX2hhbmRsZUxlZnRDb2x1bW5TZXBhcmF0b3JDbGljaygpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiX2xlZnRDb2x1bW5TZXBhcmF0b3IgPyAnc2FwLWljb24tLXNsaW0tYXJyb3ctJyArIF9sZWZ0Q29sdW1uU2VwYXJhdG9yIDogJydcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBNaWRkbGUvU2Vjb25kIENvbHVtbiAtLT5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmQtZmxleGlibGUtY29sdW1uLWxheW91dF9fY29sdW1uXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLiVdPVwiX2NvbHVtbkxheW91dC5taWRcIlxuICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJfY29sdW1uTGF5b3V0Lm1pZCA9PT0gMCA/ICdoaWRkZW4nIDogJ3Zpc2libGUnXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJfY29sdW1uTGF5b3V0Lm1pZCA9PT0gMCA/ICcwJyA6ICdhdXRvJ1wiXG4gICAgICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cIl9jb2x1bW5MYXlvdXQubWlkID09PSAwXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtaWRDb2x1bW5cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFJpZ2h0IFNlcGFyYXRvciAtLT5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiX3JpZ2h0Q29sdW1uU2VwYXJhdG9yXCJcbiAgICAgICAgY2xhc3M9XCJmZC1mbGV4aWJsZS1jb2x1bW4tbGF5b3V0X19zZXBhcmF0b3JcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInNlcGFyYXRvckFyaWFMYWJlbFwiXG4gICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIGZkQ29tcGFjdFxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmZC1mbGV4aWJsZS1jb2x1bW4tbGF5b3V0X19idXR0b25cIlxuICAgICAgICAgICAgW3RpdGxlXT1cIl9yaWdodENvbHVtblNlcGFyYXRvciA9PT0gJ2xlZnQnID8gZXhwYW5kVGl0bGUgOiBjb2xsYXBzZVRpdGxlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlUmlnaHRDb2x1bW5TZXBhcmF0b3JDbGljaygpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiX3JpZ2h0Q29sdW1uU2VwYXJhdG9yID8gJ3NhcC1pY29uLS1zbGltLWFycm93LScgKyBfcmlnaHRDb2x1bW5TZXBhcmF0b3IgOiAnJ1wiXG4gICAgICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEVuZC9SaWdodC9UaGlyZCBDb2x1bW4gLS0+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZkLWZsZXhpYmxlLWNvbHVtbi1sYXlvdXRfX2NvbHVtblwiXG4gICAgICAgIFtzdHlsZS53aWR0aC4lXT1cIl9jb2x1bW5MYXlvdXQuZW5kXCJcbiAgICAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwiX2NvbHVtbkxheW91dC5lbmQgPT09IDAgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ1wiXG4gICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiX2NvbHVtbkxheW91dC5lbmQgPT09IDAgPyAnMCcgOiAnYXV0bydcIlxuICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCJfY29sdW1uTGF5b3V0LmVuZCA9PT0gMFwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW5kQ29sdW1uXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|