@fundamental-ngx/core 0.46.0-rc.98 → 0.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/action-bar/action-bar.component.mjs +2 -2
- package/esm2022/action-sheet/action-sheet.component.mjs +3 -3
- package/esm2022/avatar/avatar.component.mjs +3 -3
- package/esm2022/avatar-group/avatar-group.component.mjs +3 -3
- package/esm2022/bar/bar.component.mjs +2 -2
- package/esm2022/breadcrumb/breadcrumb.component.mjs +3 -3
- package/esm2022/busy-indicator/busy-indicator.component.mjs +3 -3
- package/esm2022/button/button.component.mjs +3 -3
- package/esm2022/calendar/calendar.component.mjs +3 -3
- package/esm2022/card/card.component.mjs +3 -3
- package/esm2022/carousel/carousel.component.mjs +3 -3
- package/esm2022/checkbox/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/dialog/dialog.component.mjs +3 -3
- package/esm2022/dynamic-page/dynamic-page.component.mjs +3 -3
- package/esm2022/dynamic-side-content/dynamic-side-content.component.mjs +3 -3
- package/esm2022/facets/facet/facet.component.mjs +3 -3
- package/esm2022/feed-input/feed-input.component.mjs +2 -2
- package/esm2022/feed-list-item/components/list/feed-list.component.mjs +2 -2
- package/esm2022/file-uploader/file-uploader.component.mjs +3 -3
- package/esm2022/fixed-card-layout/fixed-card-layout.component.mjs +3 -3
- package/esm2022/flexible-column-layout/flexible-column-layout.component.mjs +3 -3
- package/esm2022/form/fieldset/fieldset.component.mjs +2 -2
- package/esm2022/form/form-control/form-control.component.mjs +3 -3
- package/esm2022/form/form-group/form-group.component.mjs +2 -2
- package/esm2022/form/form-header/form-header.component.mjs +2 -2
- package/esm2022/form/form-item/form-item.component.mjs +2 -2
- package/esm2022/form/form-label/form-label.component.mjs +3 -3
- package/esm2022/form/form-message/form-message.component.mjs +2 -2
- package/esm2022/generic-tag/generic-tag.component.mjs +3 -3
- package/esm2022/grid-list/components/grid-list/grid-list.component.mjs +2 -2
- package/esm2022/icon/icon.component.mjs +2 -2
- package/esm2022/illustrated-message/illustrated-message.component.mjs +3 -3
- package/esm2022/info-label/info-label.component.mjs +3 -3
- package/esm2022/input-group/input-group.component.mjs +3 -3
- package/esm2022/layout-grid/layout-grid.component.mjs +3 -3
- package/esm2022/layout-panel/layout-panel.component.mjs +2 -2
- package/esm2022/link/link.component.mjs +3 -3
- package/esm2022/list/list-navigation-item/list-navigation-item.component.mjs +3 -3
- package/esm2022/list/list.component.mjs +2 -2
- package/esm2022/menu/menu.component.mjs +2 -2
- package/esm2022/message-box/message-box.component.mjs +2 -2
- package/esm2022/message-page/message-page.component.mjs +3 -3
- package/esm2022/message-strip/message-strip.component.mjs +3 -3
- package/esm2022/message-toast/message-toast.component.mjs +3 -3
- package/esm2022/micro-process-flow/components/micro-process-flow/micro-process-flow.component.mjs +3 -3
- package/esm2022/multi-combobox/multi-combobox.component.mjs +3 -3
- package/esm2022/notification/notification/notification.component.mjs +2 -2
- package/esm2022/object-identifier/object-identifier.component.mjs +3 -3
- package/esm2022/object-marker/object-marker.component.mjs +3 -3
- package/esm2022/object-number/object-number.component.mjs +3 -3
- package/esm2022/object-status/object-status.component.mjs +3 -3
- package/esm2022/pagination/pagination.component.mjs +3 -3
- package/esm2022/panel/panel.component.mjs +3 -3
- package/esm2022/popover/popover-body/popover-body.component.mjs +3 -3
- package/esm2022/product-switch/product-switch-body/product-switch-body.component.mjs +3 -3
- package/esm2022/progress-indicator/progress-indicator.component.mjs +3 -3
- package/esm2022/quick-view/quick-view/quick-view.component.mjs +2 -2
- package/esm2022/radio/radio-button/radio-button.component.mjs +3 -3
- package/esm2022/rating-indicator/components/rating-indicator.component.mjs +3 -3
- package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +3 -3
- package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +2 -2
- package/esm2022/segmented-button/segmented-button.component.mjs +2 -2
- package/esm2022/select/select.component.mjs +3 -3
- package/esm2022/shellbar/shellbar.component.mjs +3 -3
- package/esm2022/side-navigation/side-navigation.component.mjs +3 -3
- package/esm2022/skeleton/components/skeleton.component.mjs +3 -3
- package/esm2022/slider/slider.component.mjs +3 -3
- package/esm2022/split-button/split-button.component.mjs +3 -3
- package/esm2022/splitter/splitter.component.mjs +2 -2
- package/esm2022/status-indicator/status-indicator.component.mjs +3 -3
- package/esm2022/step-input/step-input.component.mjs +3 -3
- package/esm2022/switch/switch.component.mjs +3 -3
- package/esm2022/table/table-wrapper.component.mjs +2 -2
- package/esm2022/table/table.component.mjs +2 -2
- package/esm2022/tabs/tab-list.component.mjs +3 -3
- package/esm2022/tabs/tab-nav/tab-nav.component.mjs +2 -2
- package/esm2022/text/text.component.mjs +3 -3
- package/esm2022/tile/tile.component.mjs +3 -3
- package/esm2022/time/time.component.mjs +3 -3
- package/esm2022/title/title.component.mjs +2 -2
- package/esm2022/token/token.component.mjs +3 -3
- package/esm2022/token/tokenizer.component.mjs +3 -3
- package/esm2022/toolbar/toolbar.component.mjs +3 -3
- package/esm2022/tree/tree.component.mjs +3 -3
- package/esm2022/upload-collection/upload-collection.component.mjs +3 -3
- package/esm2022/vertical-navigation/vertical-navigation-main-navigation.component.mjs +3 -3
- package/esm2022/vertical-navigation/vertical-navigation.component.mjs +3 -3
- package/esm2022/wizard/wizard.component.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-action-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-action-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-bar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-calendar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-card.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-checkbox.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dialog.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-facets.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-facets.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-file-uploader.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-file-uploader.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs +14 -14
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-generic-tag.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-generic-tag.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-grid-list.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-icon.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-icon.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-input-group.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-layout-grid.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-layout-grid.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-layout-panel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-list.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-box.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-page.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-toast.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-toast.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-notification.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-marker.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-marker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-panel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-progress-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-progress-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-quick-view.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-radio.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-side-navigation.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-side-navigation.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-skeleton.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-skeleton.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-slider.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-splitter.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-splitter.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-status-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-table.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-text.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tile.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-title.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-token.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tree.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-wizard.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/fundamental-ngx-core-v0.46.0.tgz +0 -0
- package/package.json +5 -5
- package/schematics/add-dependencies/index.js +8 -8
- package/fundamental-ngx-core-v0.46.0-rc.98.tgz +0 -0
|
@@ -526,11 +526,11 @@ export class ResizableCardItemComponent {
|
|
|
526
526
|
this._cd.markForCheck();
|
|
527
527
|
}
|
|
528
528
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ResizableCardItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
529
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: ResizableCardItemComponent, isStandalone: true, selector: "fd-resizable-card-item", inputs: { config: "config", itemId: "itemId", title: "title", rank: "rank", cardWidthColSpan: "cardWidthColSpan", cardHeightRowSpan: "cardHeightRowSpan", cardMiniHeaderRowSpan: "cardMiniHeaderRowSpan", cardMiniContentRowSpan: "cardMiniContentRowSpan", resizable: "resizable", left: "left", right: "right", top: "top" }, outputs: { resizing: "resizing", resized: "resized", miniHeaderReached: "miniHeaderReached", miniContentReached: "miniContentReached" }, host: { listeners: { "window:mousemove": "onMouseMove($event)", "document: mouseup": "onMouseUp($event)" }, properties: { "style.left.px": "this.left", "style.right.px": "this.right", "style.top.px": "this.top", "style.z-index": "this.zIndex", "style.position": "this.position", "class.fd-resizable-card-layout__draw-transition": "this.reDrawAnimation" } }, ngImport: i0, template: "<div\n class=\"fd-resizable-card-layout__item\"\n [class.fd-resizable-card-layout__indication-border]=\"showBorder\"\n #resizeCard\n>\n <div\n class=\"fd-resizable-card-layout__item--border-display fd-resizable-card-layout__item--resize-transition\"\n [style.width.px]=\"cardWidth\"\n [style.height.px]=\"cardHeight\"\n (mouseenter)=\"showResizeIcon()\"\n (mouseleave)=\"hideResizeIcon()\"\n >\n <div class=\"fd-resizable-card-layout__card\">\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"showingResizeIcon\">\n <div class=\"fd-resizable-card-layout__icon-wrapper\">\n <div\n class=\"fd-resizable-card-layout__icon\"\n #cornerHandle\n (mousedown)=\"onMouseDown($event, 'both')\"\n ></div>\n </div>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"resizable\">\n <ng-container *ngTemplateOutlet=\"verticalHandleTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"horizontalHandleTemplate\"></ng-container>\n </ng-container>\n </div>\n\n <div\n class=\"fd-resizable-card-layout__item--resize-transition\"\n [style.width.px]=\"resizeIndicationBorderWidth\"\n [style.height.px]=\"cardHeight\"\n ></div>\n</div>\n\n<ng-template #verticalHandleTemplate>\n <div\n #verticalHandle\n class=\"fd-resizable-card-layout__resize--vertical\"\n (mousedown)=\"onMouseDown($event, 'horizontal')\"\n ></div>\n</ng-template>\n\n<ng-template #horizontalHandleTemplate>\n <div\n #horizontalHandle\n class=\"fd-resizable-card-layout__resize--horizontal\"\n (mousedown)=\"onMouseDown($event, 'vertical')\"\n ></div>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2
|
|
529
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: ResizableCardItemComponent, isStandalone: true, selector: "fd-resizable-card-item", inputs: { config: "config", itemId: "itemId", title: "title", rank: "rank", cardWidthColSpan: "cardWidthColSpan", cardHeightRowSpan: "cardHeightRowSpan", cardMiniHeaderRowSpan: "cardMiniHeaderRowSpan", cardMiniContentRowSpan: "cardMiniContentRowSpan", resizable: "resizable", left: "left", right: "right", top: "top" }, outputs: { resizing: "resizing", resized: "resized", miniHeaderReached: "miniHeaderReached", miniContentReached: "miniContentReached" }, host: { listeners: { "window:mousemove": "onMouseMove($event)", "document: mouseup": "onMouseUp($event)" }, properties: { "style.left.px": "this.left", "style.right.px": "this.right", "style.top.px": "this.top", "style.z-index": "this.zIndex", "style.position": "this.position", "class.fd-resizable-card-layout__draw-transition": "this.reDrawAnimation" } }, ngImport: i0, template: "<div\n class=\"fd-resizable-card-layout__item\"\n [class.fd-resizable-card-layout__indication-border]=\"showBorder\"\n #resizeCard\n>\n <div\n class=\"fd-resizable-card-layout__item--border-display fd-resizable-card-layout__item--resize-transition\"\n [style.width.px]=\"cardWidth\"\n [style.height.px]=\"cardHeight\"\n (mouseenter)=\"showResizeIcon()\"\n (mouseleave)=\"hideResizeIcon()\"\n >\n <div class=\"fd-resizable-card-layout__card\">\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"showingResizeIcon\">\n <div class=\"fd-resizable-card-layout__icon-wrapper\">\n <div\n class=\"fd-resizable-card-layout__icon\"\n #cornerHandle\n (mousedown)=\"onMouseDown($event, 'both')\"\n ></div>\n </div>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"resizable\">\n <ng-container *ngTemplateOutlet=\"verticalHandleTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"horizontalHandleTemplate\"></ng-container>\n </ng-container>\n </div>\n\n <div\n class=\"fd-resizable-card-layout__item--resize-transition\"\n [style.width.px]=\"resizeIndicationBorderWidth\"\n [style.height.px]=\"cardHeight\"\n ></div>\n</div>\n\n<ng-template #verticalHandleTemplate>\n <div\n #verticalHandle\n class=\"fd-resizable-card-layout__resize--vertical\"\n (mousedown)=\"onMouseDown($event, 'horizontal')\"\n ></div>\n</ng-template>\n\n<ng-template #horizontalHandleTemplate>\n <div\n #horizontalHandle\n class=\"fd-resizable-card-layout__resize--horizontal\"\n (mousedown)=\"onMouseDown($event, 'vertical')\"\n ></div>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2\n * Copyright (c) 2023 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-resizable-card-layout{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:1rem 0 0;padding:0 .5rem;position:relative}.fd-resizable-card-layout:after,.fd-resizable-card-layout:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__item{-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;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-width:20rem;padding:0;position:relative}.fd-resizable-card-layout__item:after,.fd-resizable-card-layout__item:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__card{-webkit-box-sizing:border-box;-webkit-box-ordinal-group:2;-ms-flex-order:1;-webkit-box-flex:1;-ms-flex:1;border:0;box-sizing:border-box;color:var(--sapTextColor);flex:1;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:calc(100% - .0625rem);line-height:var(--sapContent_LineHeight);margin:0;order:1;padding:0;position:relative}.fd-resizable-card-layout__card:after,.fd-resizable-card-layout__card:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__icon-wrapper{-webkit-box-sizing:border-box;border:0;bottom:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:1rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0 .0625rem .0625rem 0;position:absolute;right:0;width:1rem;z-index:2}.fd-resizable-card-layout__icon-wrapper:after,.fd-resizable-card-layout__icon-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__icon-wrapper[dir=rtl],[dir=rtl] .fd-resizable-card-layout__icon-wrapper{left:0;padding:0 0 .0625rem .0625rem;right:auto}.fd-resizable-card-layout__icon{-webkit-box-sizing:border-box;border:0;bottom:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapButton_IconColor);cursor:nwse-resize;font-family:var(--sapFontFamily);font-family:SAP-icons;font-size:var(--sapFontSize);font-size:1rem;font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:0;position:absolute;right:.0625rem;z-index:2}.fd-resizable-card-layout__icon:after,.fd-resizable-card-layout__icon:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__icon:before{content:\"\\e24f\";font-family:SAP-icons;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-resizable-card-layout__icon[dir=rtl],[dir=rtl] .fd-resizable-card-layout__icon{-webkit-transform:rotate(90deg);cursor:nesw-resize;padding:0 .0625rem .0625rem .5rem;position:relative;transform:rotate(90deg)}.fd-resizable-card-layout__icon--vertical,.fd-resizable-card-layout__icon--vertical[dir=rtl],[dir=rtl] .fd-resizable-card-layout__icon--vertical{cursor:ns-resize}.fd-resizable-card-layout__icon--horizontal,.fd-resizable-card-layout__icon--horizontal[dir=rtl],[dir=rtl] .fd-resizable-card-layout__icon--horizontal{cursor:ew-resize}.fd-resizable-card-layout__resize--vertical{-webkit-box-ordinal-group:3;-ms-flex-order:2;cursor:ew-resize;order:2;width:.0625rem;z-index:2}.fd-resizable-card-layout__resize--vertical::content{content:\"\";position:absolute}.fd-resizable-card-layout__resize--horizontal{bottom:0;cursor:ns-resize;height:.0625rem;position:absolute;width:calc(100% - .5rem);z-index:2}.fd-resizable-card-layout__indication-border{-webkit-box-sizing:border-box;border:0;border:.125rem dashed var(--sapContent_DragAndDropActiveColor);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-resizable-card-layout__indication-border:after,.fd-resizable-card-layout__indication-border:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout--sm{padding-left:.5rem;padding-right:.5rem}.fd-resizable-card-layout--lg,.fd-resizable-card-layout--md{padding-left:1rem;padding-right:1rem}.fd-resizable-card-layout--xl{padding-left:3rem;padding-right:3rem}.fd-resizable-card-layout__item--resize-transition{transition-duration:.25s;animation-timing-function:ease-in-out}.fd-resizable-card-layout__draw-transition{transition-duration:.5s;animation-timing-function:ease-in}.fd-resizable-card-layout__item--border-display{display:flex}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
530
530
|
}
|
|
531
531
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ResizableCardItemComponent, decorators: [{
|
|
532
532
|
type: Component,
|
|
533
|
-
args: [{ selector: 'fd-resizable-card-item', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [NgIf, NgTemplateOutlet], template: "<div\n class=\"fd-resizable-card-layout__item\"\n [class.fd-resizable-card-layout__indication-border]=\"showBorder\"\n #resizeCard\n>\n <div\n class=\"fd-resizable-card-layout__item--border-display fd-resizable-card-layout__item--resize-transition\"\n [style.width.px]=\"cardWidth\"\n [style.height.px]=\"cardHeight\"\n (mouseenter)=\"showResizeIcon()\"\n (mouseleave)=\"hideResizeIcon()\"\n >\n <div class=\"fd-resizable-card-layout__card\">\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"showingResizeIcon\">\n <div class=\"fd-resizable-card-layout__icon-wrapper\">\n <div\n class=\"fd-resizable-card-layout__icon\"\n #cornerHandle\n (mousedown)=\"onMouseDown($event, 'both')\"\n ></div>\n </div>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"resizable\">\n <ng-container *ngTemplateOutlet=\"verticalHandleTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"horizontalHandleTemplate\"></ng-container>\n </ng-container>\n </div>\n\n <div\n class=\"fd-resizable-card-layout__item--resize-transition\"\n [style.width.px]=\"resizeIndicationBorderWidth\"\n [style.height.px]=\"cardHeight\"\n ></div>\n</div>\n\n<ng-template #verticalHandleTemplate>\n <div\n #verticalHandle\n class=\"fd-resizable-card-layout__resize--vertical\"\n (mousedown)=\"onMouseDown($event, 'horizontal')\"\n ></div>\n</ng-template>\n\n<ng-template #horizontalHandleTemplate>\n <div\n #horizontalHandle\n class=\"fd-resizable-card-layout__resize--horizontal\"\n (mousedown)=\"onMouseDown($event, 'vertical')\"\n ></div>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2
|
|
533
|
+
args: [{ selector: 'fd-resizable-card-item', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [NgIf, NgTemplateOutlet], template: "<div\n class=\"fd-resizable-card-layout__item\"\n [class.fd-resizable-card-layout__indication-border]=\"showBorder\"\n #resizeCard\n>\n <div\n class=\"fd-resizable-card-layout__item--border-display fd-resizable-card-layout__item--resize-transition\"\n [style.width.px]=\"cardWidth\"\n [style.height.px]=\"cardHeight\"\n (mouseenter)=\"showResizeIcon()\"\n (mouseleave)=\"hideResizeIcon()\"\n >\n <div class=\"fd-resizable-card-layout__card\">\n <ng-content></ng-content>\n\n <ng-container *ngIf=\"showingResizeIcon\">\n <div class=\"fd-resizable-card-layout__icon-wrapper\">\n <div\n class=\"fd-resizable-card-layout__icon\"\n #cornerHandle\n (mousedown)=\"onMouseDown($event, 'both')\"\n ></div>\n </div>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"resizable\">\n <ng-container *ngTemplateOutlet=\"verticalHandleTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"horizontalHandleTemplate\"></ng-container>\n </ng-container>\n </div>\n\n <div\n class=\"fd-resizable-card-layout__item--resize-transition\"\n [style.width.px]=\"resizeIndicationBorderWidth\"\n [style.height.px]=\"cardHeight\"\n ></div>\n</div>\n\n<ng-template #verticalHandleTemplate>\n <div\n #verticalHandle\n class=\"fd-resizable-card-layout__resize--vertical\"\n (mousedown)=\"onMouseDown($event, 'horizontal')\"\n ></div>\n</ng-template>\n\n<ng-template #horizontalHandleTemplate>\n <div\n #horizontalHandle\n class=\"fd-resizable-card-layout__resize--horizontal\"\n (mousedown)=\"onMouseDown($event, 'vertical')\"\n ></div>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2\n * Copyright (c) 2023 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-resizable-card-layout{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:1rem 0 0;padding:0 .5rem;position:relative}.fd-resizable-card-layout:after,.fd-resizable-card-layout:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__item{-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;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-width:20rem;padding:0;position:relative}.fd-resizable-card-layout__item:after,.fd-resizable-card-layout__item:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__card{-webkit-box-sizing:border-box;-webkit-box-ordinal-group:2;-ms-flex-order:1;-webkit-box-flex:1;-ms-flex:1;border:0;box-sizing:border-box;color:var(--sapTextColor);flex:1;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:calc(100% - .0625rem);line-height:var(--sapContent_LineHeight);margin:0;order:1;padding:0;position:relative}.fd-resizable-card-layout__card:after,.fd-resizable-card-layout__card:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__icon-wrapper{-webkit-box-sizing:border-box;border:0;bottom:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:1rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0 .0625rem .0625rem 0;position:absolute;right:0;width:1rem;z-index:2}.fd-resizable-card-layout__icon-wrapper:after,.fd-resizable-card-layout__icon-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__icon-wrapper[dir=rtl],[dir=rtl] .fd-resizable-card-layout__icon-wrapper{left:0;padding:0 0 .0625rem .0625rem;right:auto}.fd-resizable-card-layout__icon{-webkit-box-sizing:border-box;border:0;bottom:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapButton_IconColor);cursor:nwse-resize;font-family:var(--sapFontFamily);font-family:SAP-icons;font-size:var(--sapFontSize);font-size:1rem;font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:0;position:absolute;right:.0625rem;z-index:2}.fd-resizable-card-layout__icon:after,.fd-resizable-card-layout__icon:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__icon:before{content:\"\\e24f\";font-family:SAP-icons;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-resizable-card-layout__icon[dir=rtl],[dir=rtl] .fd-resizable-card-layout__icon{-webkit-transform:rotate(90deg);cursor:nesw-resize;padding:0 .0625rem .0625rem .5rem;position:relative;transform:rotate(90deg)}.fd-resizable-card-layout__icon--vertical,.fd-resizable-card-layout__icon--vertical[dir=rtl],[dir=rtl] .fd-resizable-card-layout__icon--vertical{cursor:ns-resize}.fd-resizable-card-layout__icon--horizontal,.fd-resizable-card-layout__icon--horizontal[dir=rtl],[dir=rtl] .fd-resizable-card-layout__icon--horizontal{cursor:ew-resize}.fd-resizable-card-layout__resize--vertical{-webkit-box-ordinal-group:3;-ms-flex-order:2;cursor:ew-resize;order:2;width:.0625rem;z-index:2}.fd-resizable-card-layout__resize--vertical::content{content:\"\";position:absolute}.fd-resizable-card-layout__resize--horizontal{bottom:0;cursor:ns-resize;height:.0625rem;position:absolute;width:calc(100% - .5rem);z-index:2}.fd-resizable-card-layout__indication-border{-webkit-box-sizing:border-box;border:0;border:.125rem dashed var(--sapContent_DragAndDropActiveColor);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-resizable-card-layout__indication-border:after,.fd-resizable-card-layout__indication-border:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout--sm{padding-left:.5rem;padding-right:.5rem}.fd-resizable-card-layout--lg,.fd-resizable-card-layout--md{padding-left:1rem;padding-right:1rem}.fd-resizable-card-layout--xl{padding-left:3rem;padding-right:3rem}.fd-resizable-card-layout__item--resize-transition{transition-duration:.25s;animation-timing-function:ease-in-out}.fd-resizable-card-layout__draw-transition{transition-duration:.5s;animation-timing-function:ease-in}.fd-resizable-card-layout__item--border-display{display:flex}\n"] }]
|
|
534
534
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.RtlService, decorators: [{
|
|
535
535
|
type: Optional
|
|
536
536
|
}] }]; }, propDecorators: { config: [{
|
|
@@ -616,4 +616,4 @@ export class ResizedEvent {
|
|
|
616
616
|
this.newCardHeightRowSpan = newCardHeightRowSpan;
|
|
617
617
|
}
|
|
618
618
|
}
|
|
619
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLWNhcmQtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yZXNpemFibGUtY2FyZC1sYXlvdXQvcmVzaXphYmxlLWNhcmQtbGF5b3V0L3Jlc2l6YWJsZS1jYXJkLWl0ZW0vcmVzaXphYmxlLWNhcmQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yZXNpemFibGUtY2FyZC1sYXlvdXQvcmVzaXphYmxlLWNhcmQtbGF5b3V0L3Jlc2l6YWJsZS1jYXJkLWl0ZW0vcmVzaXphYmxlLWNhcmQtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFZLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUlwQyw0REFBNEQ7QUFDNUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBRXhDLHVCQUF1QjtBQUN2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFFckMsZ0NBQWdDO0FBQ2hDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFFdEIsNENBQTRDO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUUx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LEVBQzNCLG9CQUE0QjtRQVI1QixTQUFJLEdBQUosSUFBSSxDQUE0QjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQUN6Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQVE7UUFDM0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFRO0lBQ3BDLENBQUM7Q0FDUCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzYWJsZU9wdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOdWxsYWJsZSwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBSZXNpemVEaXJlY3Rpb24gPSAndmVydGljYWwnIHwgJ2hvcml6b250YWwnIHwgJ2JvdGgnO1xuXG4vLyBDYXJkIHJlc2l6ZXMgaW4gc3RlcCBvZiBmaXhlZCB2YWx1ZXMuIHZhbHVlcyBhcmUgaW4gcGl4ZWxcbmV4cG9ydCBjb25zdCBob3Jpem9udGFsUmVzaXplU3RlcCA9IDMyMDtcblxuLy8gdmVydGljYWwgcmVzaXplIHN0ZXBcbmV4cG9ydCBjb25zdCB2ZXJ0aWNhbFJlc2l6ZVN0ZXAgPSAxNjtcblxuLy8gZ2FwIG9mIDFyZW0gYmV0d2VlbiB0aGUgY2FyZHNcbmV4cG9ydCBjb25zdCBnYXAgPSAxNjtcblxuLy8gdGhyZXNob2xkIG9mZnNldCBmb3IgaG9yaXpvbnRhbCByZXNpemluZy5cbmV4cG9ydCBjb25zdCBob3Jpem9udGFsUmVzaXplT2Zmc2V0ID0gMTYwO1xuXG4vLyB0aHJlc2hvbGQgb2Zmc2V0IGZvciB2ZXJ0aWNhbCByZXNpemluZy5cbmV4cG9ydCBjb25zdCB2ZXJ0aWNhbFJlc2l6ZU9mZnNldCA9IDg7XG5cbi8vIHN0YXRlIG9mIGNhcmQuIEluY3JlYXNpbmcgd2lkdGgsIG5vIGNoYW5nZSBvciBkZWNyZWFzaW5nIHdpZHRoLlxuZXhwb3J0IHR5cGUgQ2FyZFN0YXRlID0gMSB8IDAgfCAtMTtcblxuLy8gY2FyZCBpcyBnaXZlbiBudW1lcmljIHZhbHVlLCBvbiB3aGljaCBzb3J0aW5nIG9mIGNhcmRzIGlzIGRvbmVcbmxldCBjYXJkUmFuayA9IDE7XG5sZXQgY2FyZFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1yZXNpemFibGUtY2FyZC1pdGVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3Jlc2l6YWJsZS1jYXJkLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Jlc2l6YWJsZS1jYXJkLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIE5nVGVtcGxhdGVPdXRsZXRdXG59KVxuZXhwb3J0IGNsYXNzIFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgRm9jdXNhYmxlT3B0aW9uLCBPbkRlc3Ryb3kge1xuICAgIC8qKiBDYXJkIHByb3BlcnRpZXMgZnJvbSB0aGUgY29uZmlnICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY29uZmlnKGNvbmZpZzogUmVzaXphYmxlQ2FyZEl0ZW1Db25maWcpIHtcbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICB0aGlzLl9pbml0aWFsU2V0dXAoKTtcbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgICBnZXQgY29uZmlnKCk6IFJlc2l6YWJsZUNhcmRJdGVtQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcbiAgICB9XG5cbiAgICAvKiogc2V0IHVpbnF1ZSBpZCBmb3IgdGhlIGNhcmQgKi9cbiAgICBASW5wdXQoKVxuICAgIGl0ZW1JZCA9IGBmZC1jYXJkLWl0ZW0tJHtjYXJkVW5pcXVlSWQrK31gO1xuXG4gICAgLyoqIHNldCB0aXRsZSBvZiB0aGUgY2FyZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGl0bGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFNlcmlhbCBvcmRlciBvZiBjYXJkLlxuICAgICAqIGNhcmRzIGFyZSBzb3J0ZWQgYmFzZWQgb24gcmFua3MgYmVmb3JlIGRpc3BsYXlpbmcgbGF5b3V0LlxuICAgICAqIGNhcmQgd2l0aCBsb3dlciByYW5rIHdpbGwgYmUgZGlzcGxheWVkIGZpcnN0IGluIGxheW91dCB0aGFuIHRoZSBjYXJkIHdpdGggaGlnaGVyIHJhbmsuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgcmFuayhyYW5rVmFsdWU6IG51bWJlcikge1xuICAgICAgICAvLyBkZXRlcm1pbmUgbWF4IHZhbHVlIGJldHdlZW4gdXNlciBnaXZlbiB2YWx1ZSBhbmQgZGVmYXVsdCB2YWx1ZVxuICAgICAgICB0aGlzLl9yYW5rID0gcmFua1ZhbHVlID8gcmFua1ZhbHVlIDogY2FyZFJhbmsrKztcbiAgICAgICAgaWYgKHJhbmtWYWx1ZSA+IGNhcmRSYW5rKSB7XG4gICAgICAgICAgICBjYXJkUmFuayA9IHJhbmtWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgcmFuaygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmFuaztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOdW1iZXIgb2YgY29sdW1uIHNwYW4gY2FyZCB3aWR0aCB0YWtlcy5cbiAgICAgKiBJdCB3aWxsIGJlIGluIHN0ZXAgb2YgMjByZW0uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2FyZFdpZHRoQ29sU3Bhbihjb2xTcGFuOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fY2FyZFdpZHRoQ29sU3BhbiA9IGNvbFNwYW47XG4gICAgICAgIHRoaXMuX3NldENhcmRXaWR0aCgpO1xuICAgIH1cbiAgICBnZXQgY2FyZFdpZHRoQ29sU3BhbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FyZFdpZHRoQ29sU3BhbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOdW1iZXIgb2Ygcm93IHNwYW4sIGNhcmQgaGVpZ2h0IHRha2VzLlxuICAgICAqIEl0IHdpbGwgYmUgaW4gdGhlIHN0ZXAgb2YgMXJlbS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjYXJkSGVpZ2h0Um93U3Bhbihyb3dTcGFuOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4gPSByb3dTcGFuO1xuICAgICAgICB0aGlzLl9zZXRDYXJkSGVpZ2h0KCk7XG4gICAgfVxuICAgIGdldCBjYXJkSGVpZ2h0Um93U3BhbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FyZEhlaWdodFJvd1NwYW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTnVtYmVyIG9mIHJvdyBzcGFuIGNhcmQgbWluaSBoZWFkZXIgaGVpZ2h0IHRha2VzLlxuICAgICAqIE1pbmkgSGVhZGVyOiBUaGUgc21hbGxlc3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNhcmQgaXMgdGhlIGhlYWRlci5cbiAgICAgKiBUaGUgY2FyZCBjYW4gYmUgY29sbGFwc2VkIHRvIG9ubHkgaXRzIGhlYWRlciBoZWlnaHQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2FyZE1pbmlIZWFkZXJSb3dTcGFuKHJvd1NwYW46IG51bWJlcikge1xuICAgICAgICB0aGlzLl9jYXJkTWluaUhlYWRlclJvd1NwYW4gPSByb3dTcGFuO1xuICAgICAgICB0aGlzLl9zZXRDYXJkTWluaUhlYWRlckhlaWdodCgpO1xuICAgIH1cbiAgICBnZXQgY2FyZE1pbmlIZWFkZXJSb3dTcGFuKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYXJkTWluaUhlYWRlclJvd1NwYW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTnVtYmVyIG9mIHJvdyBzcGFuIGNhcmQgbWluaSBjb250ZW50IGhlaWdodCB0YWtlcy5cbiAgICAgKiBNaW5pIENvbnRlbnQ6IFRoZSBtaW5pbXVtIGhlaWdodCBmb3IgdGhlIGNhcmQgY29udGVudCBkZXBlbmRzIG9uIHRoZSBjYXJkIHR5cGUsXG4gICAgICogYW5kIG11c3QgYmUgYXMgaGlnaCBhcyB0aGUgc21hbGxlc3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnRlbnQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2FyZE1pbmlDb250ZW50Um93U3Bhbihyb3dTcGFuOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fY2FyZE1pbmlDb250ZW50Um93U3BhbiA9IHJvd1NwYW47XG4gICAgICAgIHRoaXMuX3NldENhcmRNaW5pQ29udGVudEhlaWdodCgpO1xuICAgIH1cbiAgICBnZXQgY2FyZE1pbmlDb250ZW50Um93U3BhbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FyZE1pbmlDb250ZW50Um93U3BhbiA/PyAwO1xuICAgIH1cblxuICAgIC8qKiBDYXJkIGNhbiBiZSBzZXQgdG8gcmVzaXphYmxlPWZhbHNlLCB0byByZXN0cmljdCBjYXJkIHJlc2l6ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVzaXphYmxlID0gdHJ1ZTtcblxuICAgIC8qKiBTZXQgbGVmdCBwb3NpdGlvbiBmb3IgdGhlIGNhcmQgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnc3R5bGUubGVmdC5weCcpXG4gICAgbGVmdDogTnVsbGFibGU8bnVtYmVyPjtcblxuICAgIC8qKiBTZXQgcmlnaHQgcG9zaXRpb24gZm9yIHRoZSBjYXJkICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnJpZ2h0LnB4JylcbiAgICByaWdodDogTnVsbGFibGU8bnVtYmVyPjtcblxuICAgIC8qKiBTZXQgdG9wIHBvc2l0aW9uIGZvciB0aGUgY2FyZCovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnRvcC5weCcpXG4gICAgdG9wID0gMDtcblxuICAgIC8qKiBAaGlkZGVuIHdoaWxlIHJlc2l6aW5nIHRoaXMgdmFsdWUgd2lsbCBjaGFuZ2UgdG8gYSBncmVhdGVyIHZhbHVlICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS56LWluZGV4JylcbiAgICB6SW5kZXggPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnBvc2l0aW9uJylcbiAgICBwb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG5cbiAgICAvKiogQGhpZGRlbiB0cmFuc2l0aW9uIGFuaW1hdGlvbiB3aGVuIGxheW91dCByZS1kcmF3cyAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0X19kcmF3LXRyYW5zaXRpb24nKVxuICAgIHJlRHJhd0FuaW1hdGlvbiA9IHRydWU7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBjYXJkIGlzIHN0aWxsIHJlc2l6aW5nICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVzaXppbmc6IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBjYXJkIHJlc2l6ZSBpcyBjb21wbGV0ZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZXNpemVkOiBFdmVudEVtaXR0ZXI8UmVzaXplZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzaXplZEV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXRzIHdoZW4gY2FyZCBoZWlnaHQgaXMgcmVkdWNlZCB0byBzaG93IG9ubHkgaGVhZGVyICovXG4gICAgQE91dHB1dCgpXG4gICAgbWluaUhlYWRlclJlYWNoZWQ6IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBtaW5pbXVtIGhlaWdodCBvZiBjYXJkIGNvbnRlbnQgYXJlYSBpcyByZWFjaGVkICovXG4gICAgQE91dHB1dCgpXG4gICAgbWluaUNvbnRlbnRSZWFjaGVkOiBFdmVudEVtaXR0ZXI8UmVzaXplZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzaXplZEV2ZW50PigpO1xuXG4gICAgLyoqIHNob3cgY29ybmVyIHJlc2l6ZSBpY29uIG9uIGhvdmVyIG92ZXIgY2FyZCAqL1xuICAgIHNob3dpbmdSZXNpemVJY29uID0gZmFsc2U7XG5cbiAgICAvKiogc2hvdyBib3JkZXIgd2hlbiBjYXJkIGlzIHJlc2l6aW5nICovXG4gICAgc2hvd0JvcmRlciA9IGZhbHNlO1xuXG4gICAgLyoqIHN0YXJ0aW5nIGNvbHVtbiBwb3NpdGlvbiBvZiBjYXJkLiBzdGFydHMgd2l0aCAwICovXG4gICAgc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbjogbnVtYmVyO1xuXG4gICAgLyoqIGNhcmQgd2lkdGggaW4gcHguIERlZmF1bHQgdmFsdWUgdG8gMjByZW0gKi9cbiAgICBjYXJkV2lkdGg6IG51bWJlciA9IGhvcml6b250YWxSZXNpemVTdGVwO1xuXG4gICAgLyoqIGNhcmQgaGVpZ2h0IGluIHB4ICovXG4gICAgY2FyZEhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIE1pbmktaGVhZGVyIGhlaWdodCBvZiBjYXJkICovXG4gICAgY2FyZE1pbmlIZWFkZXJIZWlnaHQ6IG51bWJlcjtcblxuICAgIC8qKiBNaW5pLWNvbnRlbnQgaGVpZ2h0IG9mIGNhcmQgdG8gZGlzcGxheSBtaW5pbXVtIHZhbGlkIGNvbnRlbnQgKi9cbiAgICBjYXJkTWluaUNvbnRlbnRIZWlnaHQ6IG51bWJlcjtcblxuICAgIC8qKiBPdXRlciByZXNpemUgaW5kaWNhdGlvbiBib3JkZXIgd2lkdGggZm9yIHRoZSBjYXJkICovXG4gICAgcmVzaXplSW5kaWNhdGlvbkJvcmRlcldpZHRoID0gMDtcblxuICAgIC8qKlxuICAgICAqIERlbm90ZXMgaWYgY2FyZCBpcyBjdXJyZW50bHkgZXhwYW5kaW5nIG9yIGNvbnRyYWN0aW5nIGhvcml6b250YWxseS5cbiAgICAgKiArMSBkZW5vdGVzIGluY3JlYXNpbmcsIC0xIGRlbm90ZXMgZGVjcmVhc2luZyBhbmQgMCBkZW5vdGVzIGNhcmQtc3RhdGUgaGFzIG5vdCBjaGFuZ2VkIGhvcml6b250YWxseS5cbiAgICAgKi9cbiAgICBjYXJkU3RhdGU6IENhcmRTdGF0ZSA9IDA7XG5cbiAgICAvKiogQ2hhbmdlIGluIHJhbmsgZnJvbSBwcmV2aW91cyB2YWx1ZSovXG4gICAgcHJldlJhbmsgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gRGVmYXVsdCB3aWR0aCBvZiBjYXJkIGlzIDIwcmVtIGllLiAxIGNvbHVtbiAqL1xuICAgIHByaXZhdGUgX2NhcmRXaWR0aENvbFNwYW4gPSAxO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYXJkSGVpZ2h0Um93U3BhbjogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gaGVscHMgaW4gdmVydGljYWwgc3RlcCBjaGFuZ2UgZXZlbnQgZW1pdCAqL1xuICAgIHByaXZhdGUgX3ByZXZDYXJkSGVpZ2h0Um93U3BhbjogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYXJkTWluaUhlYWRlclJvd1NwYW46IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FyZE1pbmlDb250ZW50Um93U3Bhbj86IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuIGNvbmZpZyB2YWx1ZXMgZm9yIGNhcmQgKi9cbiAgICBwcml2YXRlIF9jb25maWc6IFJlc2l6YWJsZUNhcmRJdGVtQ29uZmlnO1xuXG4gICAgLyoqIEBoaWRkZW4gcHJldmlvdXMgY3Vyc29yIHggcG9zaXRpb24gKi9cbiAgICBwcml2YXRlIF9wcmV2WDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gcHJldmlvdXMgY3Vyc29yIHkgcG9zaXRpb24gKi9cbiAgICBwcml2YXRlIF9wcmV2WTogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcmV2Q2FyZFdpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ByZXZDYXJkSGVpZ2h0OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiBmbGFnIHRvIGNvbnRyb2wgcmVzaXplICovXG4gICAgcHJpdmF0ZSBfcmVzaXplID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2l6ZURpcmVjdGlvbjogUmVzaXplRGlyZWN0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tYXhDb2x1bW46IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gc3RvcmVzIG9yaWdpbmFsIHdpZHRoIHNwYW4gb2YgY2FyZC5cbiAgICAgKiBJdCBtYXkgcmVkdWNlIG9uIHNtYWxsIHNjcmVlbiwgc28gaGF2ZSB0byByZXN0b3JlIHVzaW5nIHRoaXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfb3JpZ2luYWxDYXJkV2lkdGhTcGFuID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmFuazogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9ydGwgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMuX3J0bFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKHRoaXMuX3J0bFNlcnZpY2UucnRsLnN1YnNjcmliZSgodmFsdWUpID0+ICh0aGlzLl9ydGwgPSB2YWx1ZSkpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHJlc2l6ZSBoYW5kbGVyIGlzIHByZXNzZWQgYW5kIHJlc2l6aW5nIG1heSBzdGFydC5cbiAgICAgKiBAcGFyYW0gZXZlbnQ6IE1vdXNlRXZlbnRcbiAgICAgKiBAcGFyYW0gcmVzaXplRGlyZWN0aW9uOiB3aGljaCBoYW5kbGVyIGlzIHByZXNzZWQgdG8gcmVzaXplXG4gICAgICovXG4gICAgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQsIHJlc2l6ZURpcmVjdGlvbjogUmVzaXplRGlyZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICghdGhpcy5yZXNpemFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2hvd2luZ1Jlc2l6ZUljb24gPSB0cnVlO1xuICAgICAgICB0aGlzLl9yZXNpemUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9wcmV2WCA9IGV2ZW50LmNsaWVudFg7XG4gICAgICAgIHRoaXMuX3ByZXZZID0gZXZlbnQuY2xpZW50WTtcbiAgICAgICAgdGhpcy5fcHJldkNhcmRXaWR0aCA9IHRoaXMuY2FyZFdpZHRoO1xuICAgICAgICB0aGlzLl9wcmV2Q2FyZEhlaWdodCA9IHRoaXMuY2FyZEhlaWdodDtcbiAgICAgICAgdGhpcy5fcmVzaXplRGlyZWN0aW9uID0gcmVzaXplRGlyZWN0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gV2hlbiBtb3VzZSBtb3ZlcyB0byByZXNpemUgdGhlIGNhcmQuXG4gICAgICogdXNpbmcgd2luZG93Om1vdXNlbW92ZSBzbywgcmVzaXplIHdpbGwgaGFwcGVuIHNtb290aGx5XG4gICAgICogQHBhcmFtIGV2ZW50OiBNb3VzZUV2ZW50XG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXG4gICAgb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLnJlc2l6YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2F2ZXMgZnJvbSB1bi1uZWNlc3NhcnkgcmVzaXplXG4gICAgICAgIGlmICghdGhpcy5fcmVzaXplKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuc2hvd0JvcmRlcikge1xuICAgICAgICAgICAgdGhpcy5zaG93Qm9yZGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlc2l6aW5nIGNhcmQgd2lsbCBnbyBvdmVyIG90aGVyIGNhcmRzXG4gICAgICAgIHRoaXMuekluZGV4ID0gMTtcblxuICAgICAgICBjb25zdCB7IGNsaWVudFgsIGNsaWVudFkgfSA9IGV2ZW50O1xuICAgICAgICBzd2l0Y2ggKHRoaXMuX3Jlc2l6ZURpcmVjdGlvbikge1xuICAgICAgICAgICAgY2FzZSAnYm90aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5faG9yaXpvbnRhbFJlc2l6aW5nKGNsaWVudFgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsUmVzaXppbmcoY2xpZW50WSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdob3Jpem9udGFsJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9ob3Jpem9udGFsUmVzaXppbmcoY2xpZW50WCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2ZXJ0aWNhbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fdmVydGljYWxSZXNpemluZyhjbGllbnRZKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5faG9yaXpvbnRhbFJlc2l6aW5nKGNsaWVudFgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsUmVzaXppbmcoY2xpZW50WSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjYXJkV2lkdGhDb2xTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRXaWR0aCAvIGhvcml6b250YWxSZXNpemVTdGVwKTtcbiAgICAgICAgY29uc3QgY2FyZFdpZHRoV2l0aENvbHVtbiA9IGNhcmRXaWR0aENvbFNwYW4gKiBob3Jpem9udGFsUmVzaXplU3RlcCArIGNhcmRXaWR0aENvbFNwYW4gKiBnYXA7XG5cbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbFJlc2l6ZVRocmVzaG9sZFJlYWNoZWQgPSB0aGlzLmNhcmRXaWR0aCAtIGNhcmRXaWR0aFdpdGhDb2x1bW4gPiBob3Jpem9udGFsUmVzaXplT2Zmc2V0O1xuXG4gICAgICAgIGlmIChjbGllbnRYID4gdGhpcy5fcHJldlgpIHtcbiAgICAgICAgICAgIC8vIGluY3JlYXNpbmcgd2lkdGhcbiAgICAgICAgICAgIHRoaXMuY2FyZFN0YXRlID0gMTtcblxuICAgICAgICAgICAgaWYgKGhvcml6b250YWxSZXNpemVUaHJlc2hvbGRSZWFjaGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZnV0dXJlQ2FyZFdpZHRoID0gKGNhcmRXaWR0aENvbFNwYW4gKyAxKSAqIGhvcml6b250YWxSZXNpemVTdGVwICsgY2FyZFdpZHRoQ29sU3BhbiAqIGdhcDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUluZGljYXRpb25Cb3JkZXJXaWR0aCA9IGZ1dHVyZUNhcmRXaWR0aCAtIHRoaXMuY2FyZFdpZHRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUluZGljYXRpb25Cb3JkZXJXaWR0aCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY2xpZW50WCA8IHRoaXMuX3ByZXZYKSB7XG4gICAgICAgICAgICAvLyBkZWNyZWFzaW5nIHdpZHRoXG4gICAgICAgICAgICB0aGlzLmNhcmRTdGF0ZSA9IC0xO1xuICAgICAgICAgICAgaWYgKGhvcml6b250YWxSZXNpemVUaHJlc2hvbGRSZWFjaGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZnV0dXJlQ2FyZFdpZHRoID0gKGNhcmRXaWR0aENvbFNwYW4gKyAxKSAqIGhvcml6b250YWxSZXNpemVTdGVwICsgY2FyZFdpZHRoQ29sU3BhbiAqIGdhcDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUluZGljYXRpb25Cb3JkZXJXaWR0aCA9IGZ1dHVyZUNhcmRXaWR0aCAtIHRoaXMuY2FyZFdpZHRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUluZGljYXRpb25Cb3JkZXJXaWR0aCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wcmV2WCA9IGNsaWVudFg7XG4gICAgICAgIHRoaXMuX3ByZXZZID0gY2xpZW50WTtcbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIC8vIEVtaXRzIHJlc2l6aW5nIGV2ZW50LlxuICAgICAgICB0aGlzLnJlc2l6aW5nLmVtaXQodGhpcy5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogd2hlbiByZXNpemluZyBvZiBjYXJkIHN0b3BzXG4gICAgICogQHBhcmFtIGV2ZW50OiBNb3VzZUV2ZW50XG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6IG1vdXNldXAnLCBbJyRldmVudCddKVxuICAgIG9uTW91c2VVcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlc2l6YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmIGNhcmQgd2FzIG5vdCByZXNpemluZ1xuICAgICAgICBpZiAoIXRoaXMuX3Jlc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW5jcmVhc2UvZGVjcmVhc2Ugd2lkdGggb2YgY2FyZCBpbiBvcmRlciBvZiAyMHJlbVxuICAgICAgICBpZiAoTWF0aC5hYnModGhpcy5jYXJkV2lkdGggLSB0aGlzLl9wcmV2Q2FyZFdpZHRoKSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2hvcml6b250YWxTdGVwUmVzaXppbmcoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGluY3JlYXNlL2RlY3JlYXNlIGhlaWdodCBvZiBjYXJkIGluIG9yZGVyIG9mIDFyZW1cbiAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuY2FyZEhlaWdodCAtIHRoaXMuX3ByZXZDYXJkSGVpZ2h0KSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsU3RlcFJlc2l6aW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zdG9wUmVzaXppbmcoKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIFNldHMgZm9jdXMgb24gdGhlIGVsZW1lbnQgKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaGVhZGVyID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmZkLWNhcmRfX2hlYWRlcicpO1xuICAgICAgICBoZWFkZXI/LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIFNob3dzIHJlc2l6ZSBpY29uICovXG4gICAgc2hvd1Jlc2l6ZUljb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5yZXNpemFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dpbmdSZXNpemVJY29uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogSGlkZXMgcmVzaXplIGljb24gKi9cbiAgICBoaWRlUmVzaXplSWNvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9yZXNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd2luZ1Jlc2l6ZUljb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIG1heCB3aWR0aCBmb3IgY2FyZCwgYmFzZWQgb24gbGF5b3V0IHNpemUgcGFzc2VkICovXG4gICAgZ2V0TWF4Q29sU3BhbihsYXlvdXRTaXplOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBzd2l0Y2ggKGxheW91dFNpemUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NtJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXhDb2x1bW4gPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWQnOlxuICAgICAgICAgICAgICAgIHRoaXMuX21heENvbHVtbiA9IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZyc6XG4gICAgICAgICAgICAgICAgdGhpcy5fbWF4Q29sdW1uID0gMztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3hsJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXhDb2x1bW4gPSA0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXhDb2x1bW4gPSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhDb2x1bW47XG4gICAgfVxuXG4gICAgLyoqIFVwZGF0ZSBjYXJkIHdpZHRoIGlmIGl0IGV4Y2VlZHMgY29sdW1uIHNwYW4gYmFzZWQgb24gbGF5b3V0ICovXG4gICAgdmVyaWZ5VXBkYXRlQ2FyZFdpZHRoKGxheW91dFNpemU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCB3aWR0aENvbFNwYW4gPSB0aGlzLl9jb25maWc/LmNhcmRXaWR0aENvbFNwYW4gfHwgdGhpcy5jYXJkV2lkdGhDb2xTcGFuO1xuICAgICAgICAvLyBzdG9yaW5nIG9yaWdpbmFsIHdpZHRoIG9mIGNhcmQuXG4gICAgICAgIC8vIHVzZWQgdG8gcmVzdG9yZSB3aWR0aCBvbiB3aW5kb3cgcmVzaXplIGZyb20gc21hbGwgdG8gbGFyZ2VcbiAgICAgICAgdGhpcy5fb3JpZ2luYWxDYXJkV2lkdGhTcGFuID0gIXRoaXMuX29yaWdpbmFsQ2FyZFdpZHRoU3BhbiA/IHdpZHRoQ29sU3BhbiA6IHRoaXMuX29yaWdpbmFsQ2FyZFdpZHRoU3BhbjtcbiAgICAgICAgdGhpcy5fbWF4Q29sdW1uID0gdGhpcy5nZXRNYXhDb2xTcGFuKGxheW91dFNpemUpO1xuICAgICAgICBpZiAod2lkdGhDb2xTcGFuID4gdGhpcy5fbWF4Q29sdW1uKSB7XG4gICAgICAgICAgICB0aGlzLmNhcmRXaWR0aENvbFNwYW4gPSB0aGlzLl9tYXhDb2x1bW47XG4gICAgICAgICAgICB0aGlzLl9zZXRDYXJkV2lkdGgoKTtcbiAgICAgICAgICAgIC8vIEVtaXRzIHJlc2l6ZWQgZXZlbnQuXG4gICAgICAgICAgICB0aGlzLnJlc2l6ZWQuZW1pdCh0aGlzLmdldFJlc2l6ZWRFdmVudE9iamVjdCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGtlZXAgY2FyZCB3aWR0aCBtaW5pbXVtLCBzbyBpdCBjYW4gZml0IGluIHNjcmVlbi5cbiAgICAgICAgICAgIHRoaXMuY2FyZFdpZHRoQ29sU3BhbiA9IE1hdGgubWluKHRoaXMuX21heENvbHVtbiwgdGhpcy5fb3JpZ2luYWxDYXJkV2lkdGhTcGFuKTtcbiAgICAgICAgICAgIHRoaXMuX3NldENhcmRXaWR0aCgpO1xuICAgICAgICAgICAgLy8gRW1pdHMgcmVzaXplZCBldmVudC5cbiAgICAgICAgICAgIHRoaXMucmVzaXplZC5lbWl0KHRoaXMuZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJldHVybnMgUmVzaXplZEV2ZW50IG9iamVjdCB0byBlbWl0LiAqL1xuICAgIGdldFJlc2l6ZWRFdmVudE9iamVjdCgpOiBSZXNpemVkRXZlbnQge1xuICAgICAgICBjb25zdCBuZXdDYXJkSGVpZ2h0Um93U3BhbiA9IE1hdGguZmxvb3IodGhpcy5jYXJkSGVpZ2h0IC8gdmVydGljYWxSZXNpemVTdGVwKTtcbiAgICAgICAgY29uc3QgbmV3Q2FyZFdpZHRoQ29sU3BhbiA9IE1hdGguZmxvb3IodGhpcy5jYXJkV2lkdGggLyBob3Jpem9udGFsUmVzaXplU3RlcCk7XG4gICAgICAgIGNvbnN0IG5ld0NhcmRXaWR0aCA9IG5ld0NhcmRXaWR0aENvbFNwYW4gKiBob3Jpem9udGFsUmVzaXplU3RlcCArIG5ld0NhcmRXaWR0aENvbFNwYW4gKiBnYXA7XG5cbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbFJlc2l6ZVRocmVzaG9sZFJlYWNoZWQgPSB0aGlzLmNhcmRXaWR0aCAtIG5ld0NhcmRXaWR0aCA+IGhvcml6b250YWxSZXNpemVPZmZzZXQ7XG4gICAgICAgIGNvbnN0IG5ld0NhcmRDb2xTcGFuID0gaG9yaXpvbnRhbFJlc2l6ZVRocmVzaG9sZFJlYWNoZWQgPyBuZXdDYXJkV2lkdGhDb2xTcGFuICsgMSA6IG5ld0NhcmRXaWR0aENvbFNwYW47XG4gICAgICAgIHJldHVybiBuZXcgUmVzaXplZEV2ZW50KFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIHRoaXMuX3ByZXZDYXJkV2lkdGgsXG4gICAgICAgICAgICB0aGlzLl9wcmV2Q2FyZEhlaWdodCxcbiAgICAgICAgICAgIHRoaXMuY2FyZFdpZHRoLFxuICAgICAgICAgICAgdGhpcy5jYXJkSGVpZ2h0LFxuICAgICAgICAgICAgdGhpcy5fY2FyZFdpZHRoQ29sU3BhbixcbiAgICAgICAgICAgIHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuLFxuICAgICAgICAgICAgbmV3Q2FyZENvbFNwYW4sXG4gICAgICAgICAgICBuZXdDYXJkSGVpZ2h0Um93U3BhblxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJldHVybiBwcmV2aW91cyBoZWlnaHQgcm93IHNwYW4gb2YgdGhlIGNhcmQgKi9cbiAgICBnZXQgcHJldmlvdXNDYXJkSGVpZ2h0Um93U3BhbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJldkNhcmRIZWlnaHRSb3dTcGFuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNldCBjYXJkIHByb3BlcnRpZXMgdXNpbmcgY29uZmlnIHJlY2VpdmVkICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbFNldHVwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhcmRXaWR0aENvbFNwYW4gPSB0aGlzLl9jb25maWc/LmNhcmRXaWR0aENvbFNwYW4gfHwgdGhpcy5jYXJkV2lkdGhDb2xTcGFuO1xuICAgICAgICB0aGlzLmNhcmRIZWlnaHRSb3dTcGFuID0gdGhpcy5fY29uZmlnPy5jYXJkSGVpZ2h0Um93U3BhbiB8fCB0aGlzLmNhcmRIZWlnaHRSb3dTcGFuO1xuICAgICAgICB0aGlzLnRpdGxlID0gdGhpcy5fY29uZmlnPy50aXRsZSB8fCB0aGlzLnRpdGxlO1xuICAgICAgICB0aGlzLnJhbmsgPSB0aGlzLl9jb25maWc/LnJhbmsgfHwgdGhpcy5yYW5rO1xuICAgICAgICB0aGlzLmNhcmRNaW5pSGVhZGVyUm93U3BhbiA9IHRoaXMuX2NvbmZpZz8uY2FyZE1pbmlIZWFkZXJSb3dTcGFuIHx8IHRoaXMuY2FyZE1pbmlIZWFkZXJSb3dTcGFuO1xuICAgICAgICB0aGlzLmNhcmRNaW5pQ29udGVudFJvd1NwYW4gPSB0aGlzLl9jb25maWc/LmNhcmRNaW5pQ29udGVudFJvd1NwYW4gfHwgdGhpcy5jYXJkTWluaUNvbnRlbnRSb3dTcGFuO1xuICAgICAgICB0aGlzLnJlc2l6YWJsZSA9IHRoaXMuX2NvbmZpZy5yZXNpemFibGUgfHwgdGhpcy5yZXNpemFibGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmV0dXJucyB0cnVlIHdoZW4gcmVzaXplIG9mZnNldCBpcyBjcm9zc2VkICovXG4gICAgcHJpdmF0ZSBfaG9yaXpvbnRhbFJlc2l6ZVdpdGhPZmZzZXQoKTogdm9pZCB7XG4gICAgICAgIC8vIHBvc2l0aXZlIHZhbHVlIGluZGljYXRlcyB0aGF0IHdpZHRoIGhhcyBpbmNyZWFzZWRcbiAgICAgICAgY29uc3Qgd2lkdGhJbmNyZW1lbnQgPSB0aGlzLmNhcmRXaWR0aCAtIHRoaXMuX3ByZXZDYXJkV2lkdGg7XG4gICAgICAgIGNvbnN0IGNhcmRTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRXaWR0aCAvIGhvcml6b250YWxSZXNpemVTdGVwKTtcbiAgICAgICAgY29uc3QgY2FyZFNwYW5GcmFjdGlvbiA9IHRoaXMuY2FyZFdpZHRoICUgaG9yaXpvbnRhbFJlc2l6ZVN0ZXA7XG5cbiAgICAgICAgLy8gd2hlbiB3aWR0aCBpbmNyZWFzZXNcbiAgICAgICAgaWYgKHdpZHRoSW5jcmVtZW50ID4gMCkge1xuICAgICAgICAgICAgaWYgKHdpZHRoSW5jcmVtZW50IDwgaG9yaXpvbnRhbFJlc2l6ZU9mZnNldCArIGdhcCkge1xuICAgICAgICAgICAgICAgIC8vIHdpZHRoSW5jcmVtZW50IGlzIGxlc3MgdGhhbiBvZmZzZXQsIGRvIG5vdCBpbmNyZWFzZSB3aWR0aFxuICAgICAgICAgICAgICAgIHRoaXMuY2FyZFdpZHRoID0gdGhpcy5fcHJldkNhcmRXaWR0aDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgdmFsdWUgb2YgY2FyZFNwYW5GcmFjdGlvbiwgaW5jbHVkaW5nIGdhcHMgaW4gY2FyZHNcbiAgICAgICAgICAgICAgICBsZXQgaXNDYXJkU3BhbkZyYWN0aW9uQ3Jvc3NpbmdPZmZzZXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpc0NhcmRTcGFuRnJhY3Rpb25Dcm9zc2luZ09mZnNldCA9IGNhcmRTcGFuRnJhY3Rpb24gLSAoY2FyZFNwYW4gLSAxKSAqIGdhcCA+IGhvcml6b250YWxSZXNpemVPZmZzZXQ7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJkV2lkdGggPSBpc0NhcmRTcGFuRnJhY3Rpb25Dcm9zc2luZ09mZnNldFxuICAgICAgICAgICAgICAgICAgICA/IChjYXJkU3BhbiArIDEpICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXBcbiAgICAgICAgICAgICAgICAgICAgOiBjYXJkU3BhbiAqIGhvcml6b250YWxSZXNpemVTdGVwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gd2hlbiB3aWR0aCBkZWNyZWFzZXNcbiAgICAgICAgICAgIGlmIChNYXRoLmFicyh3aWR0aEluY3JlbWVudCkgPCBob3Jpem9udGFsUmVzaXplT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgLy8gd2lkdGhJbmNyZW1lbnQgaXMgbGVzcyB0aGFuIG9mZnNldCwgZG8gbm90IGRlY3JlYXNlIHdpZHRoXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJkV2lkdGggPSB0aGlzLl9wcmV2Q2FyZFdpZHRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBjaGVjayB2YWx1ZSBvZiBjYXJkU3BhbkZyYWN0aW9uLCBpbmNsdWRpbmcgZ2FwcyBpbiBjYXJkc1xuICAgICAgICAgICAgICAgIGxldCBpc0NhcmRTcGFuRnJhY3Rpb25Dcm9zc2luZ09mZnNldCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzQ2FyZFNwYW5GcmFjdGlvbkNyb3NzaW5nT2Zmc2V0ID0gY2FyZFNwYW5GcmFjdGlvbiAtIGNhcmRTcGFuICogZ2FwID4gaG9yaXpvbnRhbFJlc2l6ZU9mZnNldDtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcmRXaWR0aCA9IGlzQ2FyZFNwYW5GcmFjdGlvbkNyb3NzaW5nT2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgID8gKGNhcmRTcGFuICsgMSkgKiBob3Jpem9udGFsUmVzaXplU3RlcFxuICAgICAgICAgICAgICAgICAgICA6IGNhcmRTcGFuICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIG1ha2UgaG9yaXpvbnRhbCByZXNpemUgb25seSBvbiBzdGVwIG9mIDIwcmVtXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaG9yaXpvbnRhbFN0ZXBSZXNpemluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faG9yaXpvbnRhbFJlc2l6ZVdpdGhPZmZzZXQoKTtcblxuICAgICAgICAvLyBBZGQgaW5uZXIgZ2FwIGluICBjYXJkV2lkdGggaWYgd2lkdGggaXMgbW9yZSB0aGFuIDEgY29sdW1uXG4gICAgICAgIGlmICh0aGlzLmNhcmRXaWR0aCA+IGhvcml6b250YWxSZXNpemVTdGVwKSB7XG4gICAgICAgICAgICB0aGlzLmNhcmRXaWR0aCA9IHRoaXMuY2FyZFdpZHRoICsgKHRoaXMuY2FyZFdpZHRoIC8gaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgLSAxKSAqIGdhcDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhcmRXaWR0aENvbFNwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZFdpZHRoIC8gaG9yaXpvbnRhbFJlc2l6ZVN0ZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gbWFrZSB2ZXJ0aWNhbCByZXNpemUgb25seSBvbiBzdGVwIG9mIDFyZW1cbiAgICAgKi9cbiAgICBwcml2YXRlIF92ZXJ0aWNhbFN0ZXBSZXNpemluZygpOiB2b2lkIHtcbiAgICAgICAgLy8gcG9zaXRpdmUgdmFsdWUgaW5kaWNhdGVzIHRoYXQgaGVpZ2h0IGhhcyBpbmNyZWFzZWRcbiAgICAgICAgY29uc3QgY2FyZEhlaWdodFNwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZEhlaWdodCAvIHZlcnRpY2FsUmVzaXplU3RlcCk7XG4gICAgICAgIGNvbnN0IGNhcmRTcGFuRnJhY3Rpb24gPSB0aGlzLmNhcmRIZWlnaHQgJSB2ZXJ0aWNhbFJlc2l6ZVN0ZXA7XG4gICAgICAgIHRoaXMuY2FyZEhlaWdodCA9XG4gICAgICAgICAgICBjYXJkU3BhbkZyYWN0aW9uID4gdmVydGljYWxSZXNpemVPZmZzZXRcbiAgICAgICAgICAgICAgICA/IChjYXJkSGVpZ2h0U3BhbiArIDEpICogdmVydGljYWxSZXNpemVTdGVwXG4gICAgICAgICAgICAgICAgOiBjYXJkSGVpZ2h0U3BhbiAqIHZlcnRpY2FsUmVzaXplU3RlcDtcblxuICAgICAgICB0aGlzLmNhcmRIZWlnaHRSb3dTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRIZWlnaHQgLyB2ZXJ0aWNhbFJlc2l6ZVN0ZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gUmVzaXplIGNhcmQgaG9yaXpvbnRhbGx5IGJ5IGNoZWNraW5nIGJvdW5kYXJ5IGNvbmRpdGlvblxuICAgICAqIEBwYXJhbSB4UG9zaXRpb246IGN1cnJlbnQgeC1wb3NpdGlvbiBvZiBjdXJzb3JcbiAgICAgKi9cbiAgICBwcml2YXRlIF9ob3Jpem9udGFsUmVzaXppbmcoeFBvc2l0aW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IHRoaXMuX3ByZXZYIC0geFBvc2l0aW9uO1xuICAgICAgICB0aGlzLmNhcmRXaWR0aCA9IHRoaXMuX3J0bCA/IHRoaXMuY2FyZFdpZHRoICsgZGlmZmVyZW5jZSA6IHRoaXMuY2FyZFdpZHRoIC0gZGlmZmVyZW5jZTtcblxuICAgICAgICBjb25zdCB0b3RhbEluZGVudGF0aW9uID0gKHRoaXMuX21heENvbHVtbiAtIDEpICogZ2FwO1xuICAgICAgICBjb25zdCBtYXhDYXJkV2lkdFdpdGhvdXRJbmRlbnRhdGlvbiA9IHRoaXMuX21heENvbHVtbiAqIGhvcml6b250YWxSZXNpemVTdGVwO1xuXG4gICAgICAgIGNvbnN0IG1heENhcmRXaWR0aCA9IHRoaXMuX3J0bFxuICAgICAgICAgICAgPyBtYXhDYXJkV2lkdFdpdGhvdXRJbmRlbnRhdGlvbiAtIHRvdGFsSW5kZW50YXRpb25cbiAgICAgICAgICAgIDogbWF4Q2FyZFdpZHRXaXRob3V0SW5kZW50YXRpb24gKyB0b3RhbEluZGVudGF0aW9uO1xuXG4gICAgICAgIGlmICh0aGlzLmNhcmRXaWR0aCA+IG1heENhcmRXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5jYXJkV2lkdGggPSBtYXhDYXJkV2lkdGg7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jYXJkV2lkdGggPCBob3Jpem9udGFsUmVzaXplU3RlcCkge1xuICAgICAgICAgICAgdGhpcy5jYXJkV2lkdGggPSBob3Jpem9udGFsUmVzaXplU3RlcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gUmVzaXplIGNhcmQgdmVydGljYWxseS5cbiAgICAgKiB0YWtlcyBjYXJlIG9mIG1pbmktaGVhZGVyIGhlaWdodCBhbmQgbWluaS1jb250ZW50IGhlaWdodFxuICAgICAqIEBwYXJhbSB5UG9zaXRpb246IGN1cnJlbnQgeS1wb3NpdGlvbiBvZiBjdXJzb3JcbiAgICAgKi9cbiAgICBwcml2YXRlIF92ZXJ0aWNhbFJlc2l6aW5nKHlQb3NpdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCByZWFjaGluZ01pbmlIZWFkZXIgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5jYXJkSGVpZ2h0ID09PSB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0KSB7XG4gICAgICAgICAgICAvLyBpZiBjYXJkIGhlaWdodCBpcyBhbHJlYWR5IGF0IG1pbmktaGVhZGVyIGhlaWdodFxuICAgICAgICAgICAgaWYgKHRoaXMuX3ByZXZZIC0geVBvc2l0aW9uID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIGRlY3JlYXNpbmcgaGVpZ2h0XG4gICAgICAgICAgICAgICAgLy8gaWYgbWluaUhlYWRlciBoZWlnaHQgcmVhY2hlZCwgc3RvcCByZXNpemluZ1xuICAgICAgICAgICAgICAgIHRoaXMuY2FyZEhlaWdodCA9IHRoaXMuY2FyZE1pbmlIZWFkZXJIZWlnaHQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJldkNhcmRIZWlnaHRSb3dTcGFuID0gdGhpcy5fY2FyZEhlaWdodFJvd1NwYW47XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZEhlaWdodCAvIHZlcnRpY2FsUmVzaXplU3RlcCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGluY3JlYXNpbmcgaGVpZ2h0XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJkSGVpZ2h0ID0gdGhpcy5jYXJkTWluaUhlYWRlckhlaWdodCArIHRoaXMuY2FyZE1pbmlDb250ZW50SGVpZ2h0O1xuICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZDYXJkSGVpZ2h0Um93U3BhbiA9IHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRIZWlnaHQgLyB2ZXJ0aWNhbFJlc2l6ZVN0ZXApO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0b3BSZXNpemluZygpO1xuICAgICAgICAgICAgICAgIHRoaXMubWluaUNvbnRlbnRSZWFjaGVkLmVtaXQodGhpcy5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jYXJkSGVpZ2h0IDwgdGhpcy5jYXJkTWluaUNvbnRlbnRIZWlnaHQgKyB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0KSB7XG4gICAgICAgICAgICAvLyBpZiBjYXJkIGhlaWdodCBpcyBiZXR3ZWVuIG1pbmktaGVhZGVyIGFuZCBtaW5pLWNvbnRlbnRcbiAgICAgICAgICAgIGlmICh0aGlzLl9wcmV2WSAtIHlQb3NpdGlvbiA8IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcmRIZWlnaHQgPSB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0ICsgdGhpcy5jYXJkTWluaUNvbnRlbnRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJldkNhcmRIZWlnaHRSb3dTcGFuID0gdGhpcy5fY2FyZEhlaWdodFJvd1NwYW47XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZEhlaWdodCAvIHZlcnRpY2FsUmVzaXplU3RlcCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RvcFJlc2l6aW5nKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5taW5pQ29udGVudFJlYWNoZWQuZW1pdCh0aGlzLmdldFJlc2l6ZWRFdmVudE9iamVjdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIHRoaXMuY2FyZEhlaWdodCA9PT0gdGhpcy5jYXJkTWluaUNvbnRlbnRIZWlnaHQgKyB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0ICYmXG4gICAgICAgICAgICB0aGlzLl9wcmV2WSAtIHlQb3NpdGlvbiA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBkZWNyZWFzaW5nIGhlaWdodFxuICAgICAgICAgICAgLy8gaGVpZ2h0IGRlY3JlYXNpbmcgYWZ0ZXIgcmVhY2hpbmcgbWluaS1jb250ZW50LiB0aGlzIG5lZWRzIHRvIGRpZmZlcmVudGlhdGVcbiAgICAgICAgICAgIC8vIGZyb20gaGVpZ2h0IGRlY3JlYXNpbmcgYW5kIHJlYWNoaW5nIHRvIG1pbmktY29udGVudC5cbiAgICAgICAgICAgIHJlYWNoaW5nTWluaUhlYWRlciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmNhcmRIZWlnaHQgPSB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0O1xuICAgICAgICAgICAgdGhpcy5fcHJldkNhcmRIZWlnaHRSb3dTcGFuID0gdGhpcy5fY2FyZEhlaWdodFJvd1NwYW47XG4gICAgICAgICAgICB0aGlzLl9jYXJkSGVpZ2h0Um93U3BhbiA9IE1hdGguZmxvb3IodGhpcy5jYXJkSGVpZ2h0IC8gdmVydGljYWxSZXNpemVTdGVwKTtcbiAgICAgICAgICAgIC8vIG1pbmlIZWFkZXIgaGVpZ2h0IHJlYWNoZWQsIHN0b3AgcmVzaXppbmdcbiAgICAgICAgICAgIHRoaXMuX3N0b3BSZXNpemluZygpO1xuICAgICAgICAgICAgdGhpcy5taW5pSGVhZGVyUmVhY2hlZC5lbWl0KHRoaXMuZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jYXJkSGVpZ2h0ID0gdGhpcy5jYXJkSGVpZ2h0IC0gKHRoaXMuX3ByZXZZIC0geVBvc2l0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuX3ByZXZDYXJkSGVpZ2h0Um93U3BhbiA9IHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuO1xuICAgICAgICAgICAgdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZEhlaWdodCAvIHZlcnRpY2FsUmVzaXplU3RlcCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzdG9wIHJlc2l6aW5nIG9uIG1pbmlDb250ZW50IGhlaWdodFxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNhcmRIZWlnaHQgPD0gdGhpcy5jYXJkTWluaUNvbnRlbnRIZWlnaHQgKyB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0ICYmXG4gICAgICAgICAgICB0aGlzLl9wcmV2WSAtIHlQb3NpdGlvbiA+IDAgJiZcbiAgICAgICAgICAgICFyZWFjaGluZ01pbmlIZWFkZXJcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNhcmRIZWlnaHQgPSB0aGlzLmNhcmRNaW5pQ29udGVudEhlaWdodCArIHRoaXMuY2FyZE1pbmlIZWFkZXJIZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLl9wcmV2Q2FyZEhlaWdodFJvd1NwYW4gPSB0aGlzLl9jYXJkSGVpZ2h0Um93U3BhbjtcbiAgICAgICAgICAgIHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRIZWlnaHQgLyB2ZXJ0aWNhbFJlc2l6ZVN0ZXApO1xuICAgICAgICAgICAgdGhpcy5taW5pQ29udGVudFJlYWNoZWQuZW1pdCh0aGlzLmdldFJlc2l6ZWRFdmVudE9iamVjdCgpKTtcbiAgICAgICAgICAgIHRoaXMuX3N0b3BSZXNpemluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gd2hpbGUgY29ybmVyIHJlc2l6ZSwgd2lkdGggbWlnaHQgaGF2ZSBpbmNyZWFzZWQgYW5kIHJlYWNoZWQgdG8gbWluaS1jb250ZW50IGhlaWdodC5cbiAgICAgICAgLy8gc28sIG9uIG1pbmktY29udGVudCByZXNpemUgd2lsbCBzdG9wLCBidXQgaGF2ZSB0byBkbyBzdGVwIHJlc2l6aW5nIGZvciB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbC5cbiAgICAgICAgaWYgKCF0aGlzLl9yZXNpemUpIHtcbiAgICAgICAgICAgIC8vIGluY3JlYXNlL2RlY3JlYXNlIHdpZHRoIG9mIGNhcmQgaW4gb3JkZXIgb2YgMjByZW1cbiAgICAgICAgICAgIGlmIChNYXRoLmFicyh0aGlzLmNhcmRXaWR0aCAtIHRoaXMuX3ByZXZDYXJkV2lkdGgpID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hvcml6b250YWxTdGVwUmVzaXppbmcoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaW5jcmVhc2UvZGVjcmVhc2UgaGVpZ2h0IG9mIGNhcmQgaW4gb3JkZXIgb2YgMXJlbVxuICAgICAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuY2FyZEhlaWdodCAtIHRoaXMuX3ByZXZDYXJkSGVpZ2h0KSA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92ZXJ0aWNhbFN0ZXBSZXNpemluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gcmVzZXQgaW52b2x2ZWQgdmFyaWFibGVzIHdoaWxlIHJlc2l6aW5nICovXG4gICAgcHJpdmF0ZSBfc3RvcFJlc2l6aW5nKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fcmVzaXplKSB7XG4gICAgICAgICAgICB0aGlzLmNhcmRTdGF0ZSA9IDA7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUluZGljYXRpb25Cb3JkZXJXaWR0aCA9IDA7XG4gICAgICAgICAgICB0aGlzLl9yZXNpemUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuekluZGV4ID0gMDtcbiAgICAgICAgICAgIHRoaXMuc2hvd0JvcmRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVkLmVtaXQodGhpcy5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZXR1cm5zIGNhcmRXaWR0aCBiYXNlZCBvbiBjYXJkIGNvbHVtbiBzcGFuICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZFdpZHRoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhcmRXaWR0aCA9IHRoaXMuX2NhcmRXaWR0aENvbFNwYW4gKiBob3Jpem9udGFsUmVzaXplU3RlcCArICh0aGlzLl9jYXJkV2lkdGhDb2xTcGFuIC0gMSkgKiBnYXA7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJldHVybnMgY2FyZEhlaWdodCBiYXNlZCBvbiBjYXJkIHJvdyBzcGFuICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJkSGVpZ2h0ID0gdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4gKiB2ZXJ0aWNhbFJlc2l6ZVN0ZXA7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJldHVybnMgY2FyZCBtaW5pIGhlYWRlciBoZWlnaHQgKi9cbiAgICBwcml2YXRlIF9zZXRDYXJkTWluaUhlYWRlckhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJkTWluaUhlYWRlckhlaWdodCA9IHRoaXMuX2NhcmRNaW5pSGVhZGVyUm93U3BhbiAqIHZlcnRpY2FsUmVzaXplU3RlcDtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmV0dXJucyBjYXJkIG1pbmkgY29udGVudCBoZWlnaHQgKi9cbiAgICBwcml2YXRlIF9zZXRDYXJkTWluaUNvbnRlbnRIZWlnaHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FyZE1pbmlDb250ZW50SGVpZ2h0ID0gdGhpcy5jYXJkTWluaUNvbnRlbnRSb3dTcGFuICogdmVydGljYWxSZXNpemVTdGVwO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG59XG5cbi8qKiBDb25maWcgaW50ZXJmYWNlIGZvciBjYXJkIHByb3BlcnRpZXMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzaXphYmxlQ2FyZEl0ZW1Db25maWcge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHJhbms/OiBudW1iZXI7XG4gICAgY2FyZFdpZHRoQ29sU3Bhbj86IG51bWJlcjtcbiAgICBjYXJkSGVpZ2h0Um93U3Bhbj86IG51bWJlcjtcbiAgICBjYXJkTWluaUhlYWRlclJvd1NwYW4/OiBudW1iZXI7XG4gICAgY2FyZE1pbmlDb250ZW50Um93U3Bhbj86IG51bWJlcjtcbiAgICByZXNpemFibGU/OiBib29sZWFuO1xufVxuXG4vKiogT2JqZWN0IHRvIGVtaXQgb24gcmVzaXplIGNvbXBsZXRlICovXG5leHBvcnQgY2xhc3MgUmVzaXplZEV2ZW50IHtcbiAgICAvKipcbiAgICAgKiBPYmplY3QgdG8gZW1pdCBvbiByZXNpemUgY29tcGxldGVcbiAgICAgKiBAcGFyYW0gY2FyZFxuICAgICAqIEBwYXJhbSBwcmV2Q2FyZFdpZHRoIFByZXZpb3VzIGNhcmQgd2lkdGhcbiAgICAgKiBAcGFyYW0gcHJldkNhcmRIZWlnaHQgUHJldmlvdXMgY2FyZCBoZWlnaHRcbiAgICAgKiBAcGFyYW0gY2FyZFdpZHRoIEN1cnJlbnQgY2FyZCB3aWR0aFxuICAgICAqIEBwYXJhbSBjYXJkSGVpZ2h0IEN1cnJlbnQgY2FyZCBoZWlnaHRcbiAgICAgKiBAcGFyYW0gY2FyZFdpZHRoQ29sU3BhbiBDdXJyZW50IGNhcmQgd2lkdGggY29sdW1uIHNwYW5cbiAgICAgKiBAcGFyYW0gY2FyZEhlaWdodFJvd1NwYW4gQ3VycmVudCBjYXJkIGhlaWdodCByb3cgc3BhblxuICAgICAqIEBwYXJhbSBuZXdDYXJkV2lkdGhDb2xTcGFuIE5ldyBjYXJkIHdpZHRoIGNvbHVtbiBzcGFuXG4gICAgICogQHBhcmFtIG5ld0NhcmRIZWlnaHRSb3dTcGFuIE5ldyBjYXJkIGhlaWdodCByb3cgc3BhblxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgY2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQsXG4gICAgICAgIHB1YmxpYyBwcmV2Q2FyZFdpZHRoOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBwcmV2Q2FyZEhlaWdodDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgY2FyZFdpZHRoOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBjYXJkSGVpZ2h0OiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBjYXJkV2lkdGhDb2xTcGFuOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBjYXJkSGVpZ2h0Um93U3BhbjogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgbmV3Q2FyZFdpZHRoQ29sU3BhbjogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgbmV3Q2FyZEhlaWdodFJvd1NwYW46IG51bWJlclxuICAgICkge31cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZkLXJlc2l6YWJsZS1jYXJkLWxheW91dF9faXRlbVwiXG4gICAgW2NsYXNzLmZkLXJlc2l6YWJsZS1jYXJkLWxheW91dF9faW5kaWNhdGlvbi1ib3JkZXJdPVwic2hvd0JvcmRlclwiXG4gICAgI3Jlc2l6ZUNhcmRcbj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0X19pdGVtLS1ib3JkZXItZGlzcGxheSBmZC1yZXNpemFibGUtY2FyZC1sYXlvdXRfX2l0ZW0tLXJlc2l6ZS10cmFuc2l0aW9uXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNhcmRXaWR0aFwiXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiY2FyZEhlaWdodFwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cInNob3dSZXNpemVJY29uKClcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJoaWRlUmVzaXplSWNvbigpXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZC1yZXNpemFibGUtY2FyZC1sYXlvdXRfX2NhcmRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dpbmdSZXNpemVJY29uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLXJlc2l6YWJsZS1jYXJkLWxheW91dF9faWNvbi13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0X19pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNjb3JuZXJIYW5kbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50LCAnYm90aCcpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNpemFibGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2ZXJ0aWNhbEhhbmRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaG9yaXpvbnRhbEhhbmRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZkLXJlc2l6YWJsZS1jYXJkLWxheW91dF9faXRlbS0tcmVzaXplLXRyYW5zaXRpb25cIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicmVzaXplSW5kaWNhdGlvbkJvcmRlcldpZHRoXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJjYXJkSGVpZ2h0XCJcbiAgICA+PC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN2ZXJ0aWNhbEhhbmRsZVRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgI3ZlcnRpY2FsSGFuZGxlXG4gICAgICAgIGNsYXNzPVwiZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0X19yZXNpemUtLXZlcnRpY2FsXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQsICdob3Jpem9udGFsJylcIlxuICAgID48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaG9yaXpvbnRhbEhhbmRsZVRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgI2hvcml6b250YWxIYW5kbGVcbiAgICAgICAgY2xhc3M9XCJmZC1yZXNpemFibGUtY2FyZC1sYXlvdXRfX3Jlc2l6ZS0taG9yaXpvbnRhbFwiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50LCAndmVydGljYWwnKVwiXG4gICAgPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
619
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLWNhcmQtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yZXNpemFibGUtY2FyZC1sYXlvdXQvcmVzaXphYmxlLWNhcmQtbGF5b3V0L3Jlc2l6YWJsZS1jYXJkLWl0ZW0vcmVzaXphYmxlLWNhcmQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9yZXNpemFibGUtY2FyZC1sYXlvdXQvcmVzaXphYmxlLWNhcmQtbGF5b3V0L3Jlc2l6YWJsZS1jYXJkLWl0ZW0vcmVzaXphYmxlLWNhcmQtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFZLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUlwQyw0REFBNEQ7QUFDNUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBRXhDLHVCQUF1QjtBQUN2QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFFckMsZ0NBQWdDO0FBQ2hDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFFdEIsNENBQTRDO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUUxQywwQ0FBMEM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO0FBS3RDLGlFQUFpRTtBQUNqRSxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDakIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBV3JCLE1BQU0sT0FBTywwQkFBMEI7SUFDbkMsc0NBQXNDO0lBQ3RDLElBQ0ksTUFBTSxDQUFDLE1BQStCO1FBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFDRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQVVEOzs7O09BSUc7SUFDSCxJQUNJLElBQUksQ0FBQyxTQUFpQjtRQUN0QixpRUFBaUU7UUFDakUsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEQsSUFBSSxTQUFTLEdBQUcsUUFBUSxFQUFFO1lBQ3RCLFFBQVEsR0FBRyxTQUFTLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBQ0QsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNJLGdCQUFnQixDQUFDLE9BQWU7UUFDaEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQztRQUNqQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNJLGlCQUFpQixDQUFDLE9BQWU7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFDSSxxQkFBcUIsQ0FBQyxPQUFlO1FBQ3JDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxPQUFPLENBQUM7UUFDdEMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUNELElBQUkscUJBQXFCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFDSSxzQkFBc0IsQ0FBQyxPQUFlO1FBQ3RDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxPQUFPLENBQUM7UUFDdkMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUNELElBQUksc0JBQXNCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBd0lELGNBQWM7SUFDZCxZQUNxQixHQUFzQixFQUN2QixVQUFzQixFQUNULFdBQXVCO1FBRm5DLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3ZCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDVCxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQXpOeEQsaUNBQWlDO1FBRWpDLFdBQU0sR0FBRyxnQkFBZ0IsWUFBWSxFQUFFLEVBQUUsQ0FBQztRQTZFMUMsa0VBQWtFO1FBRWxFLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFZakIsbUNBQW1DO1FBR25DLFFBQUcsR0FBRyxDQUFDLENBQUM7UUFFUix1RUFBdUU7UUFFdkUsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUVYLGNBQWM7UUFFZCxhQUFRLEdBQUcsVUFBVSxDQUFDO1FBRXRCLHdEQUF3RDtRQUV4RCxvQkFBZSxHQUFHLElBQUksQ0FBQztRQUV2Qix3Q0FBd0M7UUFFeEMsYUFBUSxHQUErQixJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUV4RSwwQ0FBMEM7UUFFMUMsWUFBTyxHQUErQixJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUV2RSw0REFBNEQ7UUFFNUQsc0JBQWlCLEdBQStCLElBQUksWUFBWSxFQUFnQixDQUFDO1FBRWpGLGdFQUFnRTtRQUVoRSx1QkFBa0IsR0FBK0IsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFFbEYsaURBQWlEO1FBQ2pELHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUUxQix3Q0FBd0M7UUFDeEMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUtuQiwrQ0FBK0M7UUFDL0MsY0FBUyxHQUFXLG9CQUFvQixDQUFDO1FBV3pDLHdEQUF3RDtRQUN4RCxnQ0FBMkIsR0FBRyxDQUFDLENBQUM7UUFFaEM7OztXQUdHO1FBQ0gsY0FBUyxHQUFjLENBQUMsQ0FBQztRQUV6Qix3Q0FBd0M7UUFDeEMsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUViLDBEQUEwRDtRQUNsRCxzQkFBaUIsR0FBRyxDQUFDLENBQUM7UUE2QjlCLHFDQUFxQztRQUM3QixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBUXhCOzs7V0FHRztRQUNLLDJCQUFzQixHQUFHLENBQUMsQ0FBQztRQUtuQyxjQUFjO1FBQ04sU0FBSSxHQUFHLEtBQUssQ0FBQztRQUVyQixjQUFjO1FBQ04sbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBUXhDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0Y7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLEtBQWlCLEVBQUUsZUFBZ0M7UUFDM0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2pCLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7O09BSUc7SUFFSCxXQUFXLENBQUMsS0FBaUI7UUFDekIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2pCLE9BQU87U0FDVjtRQUVELGlDQUFpQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNmLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQzFCO1FBRUQseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRWhCLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ25DLFFBQVEsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQzNCLEtBQUssTUFBTTtnQkFDUCxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDaEMsTUFBTTtZQUNWLEtBQUssWUFBWTtnQkFDYixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2xDLE1BQU07WUFDVixLQUFLLFVBQVU7Z0JBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNoQyxNQUFNO1lBQ1Y7Z0JBQ0ksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdkM7UUFFRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLEdBQUcsb0JBQW9CLEdBQUcsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO1FBRTdGLE1BQU0sZ0NBQWdDLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxtQkFBbUIsR0FBRyxzQkFBc0IsQ0FBQztRQUV2RyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLG1CQUFtQjtZQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUVuQixJQUFJLGdDQUFnQyxFQUFFO2dCQUNsQyxNQUFNLGVBQWUsR0FBRyxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxHQUFHLG9CQUFvQixHQUFHLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztnQkFDL0YsSUFBSSxDQUFDLDJCQUEyQixHQUFHLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO2FBQ3ZFO2lCQUFNO2dCQUNILElBQUksQ0FBQywyQkFBMkIsR0FBRyxDQUFDLENBQUM7YUFDeEM7U0FDSjthQUFNLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDOUIsbUJBQW1CO1lBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDcEIsSUFBSSxnQ0FBZ0MsRUFBRTtnQkFDbEMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsR0FBRyxvQkFBb0IsR0FBRyxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7Z0JBQy9GLElBQUksQ0FBQywyQkFBMkIsR0FBRyxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUN2RTtpQkFBTTtnQkFDSCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsQ0FBQyxDQUFDO2FBQ3hDO1NBQ0o7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXpCLHdCQUF3QjtRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7O09BR0c7SUFFSCxTQUFTO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDakIsT0FBTztTQUNWO1FBQ0QsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2YsT0FBTztTQUNWO1FBRUQsb0RBQW9EO1FBQ3BELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEQsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7U0FDbEM7UUFFRCxvREFBb0Q7UUFDcEQsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN0RCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUNoQztRQUVELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsS0FBSztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLGNBQWM7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsY0FBYztRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQsYUFBYSxDQUFDLFVBQWtCO1FBQzVCLFFBQVEsVUFBVSxFQUFFO1lBQ2hCLEtBQUssSUFBSTtnQkFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztnQkFDcEIsTUFBTTtZQUNWLEtBQUssSUFBSTtnQkFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztnQkFDcEIsTUFBTTtZQUNWLEtBQUssSUFBSTtnQkFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztnQkFDcEIsTUFBTTtZQUNWLEtBQUssSUFBSTtnQkFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztnQkFDcEIsTUFBTTtZQUNWO2dCQUNJLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxrRUFBa0U7SUFDbEUscUJBQXFCLENBQUMsVUFBa0I7UUFDcEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDN0Usa0NBQWtDO1FBQ2xDLDZEQUE2RDtRQUM3RCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FBQ3hHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQix1QkFBdUI7WUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztTQUNuRDthQUFNO1lBQ0gsb0RBQW9EO1lBQ3BELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDL0UsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLHVCQUF1QjtZQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1NBQ25EO0lBQ0wsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxxQkFBcUI7UUFDakIsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztRQUM5RSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixHQUFHLG9CQUFvQixHQUFHLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztRQUU1RixNQUFNLGdDQUFnQyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxHQUFHLHNCQUFzQixDQUFDO1FBQ2hHLE1BQU0sY0FBYyxHQUFHLGdDQUFnQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDO1FBQ3hHLE9BQU8sSUFBSSxZQUFZLENBQ25CLElBQUksRUFDSixJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsZUFBZSxFQUNwQixJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLGlCQUFpQixFQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQ3ZCLGNBQWMsRUFDZCxvQkFBb0IsQ0FDdkIsQ0FBQztJQUNOLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsSUFBSSx5QkFBeUI7UUFDekIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDdkMsQ0FBQztJQUVELHdEQUF3RDtJQUNoRCxhQUFhO1FBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLGdCQUFnQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUNoRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDbkYsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztRQUM1QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDL0YsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FBQ2xHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUM5RCxDQUFDO0lBRUQseURBQXlEO0lBQ2pELDJCQUEyQjtRQUMvQixvREFBb0Q7UUFDcEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQztRQUUvRCx1QkFBdUI7UUFDdkIsSUFBSSxjQUFjLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLElBQUksY0FBYyxHQUFHLHNCQUFzQixHQUFHLEdBQUcsRUFBRTtnQkFDL0MsNERBQTREO2dCQUM1RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7YUFDeEM7aUJBQU07Z0JBQ0gsMkRBQTJEO2dCQUMzRCxJQUFJLGdDQUFnQyxHQUFHLEtBQUssQ0FBQztnQkFDN0MsZ0NBQWdDLEdBQUcsZ0JBQWdCLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLHNCQUFzQixDQUFDO2dCQUNwRyxJQUFJLENBQUMsU0FBUyxHQUFHLGdDQUFnQztvQkFDN0MsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLG9CQUFvQjtvQkFDdkMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQzthQUN6QztTQUNKO2FBQU07WUFDSCx1QkFBdUI7WUFDdkIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLHNCQUFzQixFQUFFO2dCQUNuRCw0REFBNEQ7Z0JBQzVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQzthQUN4QztpQkFBTTtnQkFDSCwyREFBMkQ7Z0JBQzNELElBQUksZ0NBQWdDLEdBQUcsS0FBSyxDQUFDO2dCQUM3QyxnQ0FBZ0MsR0FBRyxnQkFBZ0IsR0FBRyxRQUFRLEdBQUcsR0FBRyxHQUFHLHNCQUFzQixDQUFDO2dCQUM5RixJQUFJLENBQUMsU0FBUyxHQUFHLGdDQUFnQztvQkFDN0MsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLG9CQUFvQjtvQkFDdkMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQzthQUN6QztTQUNKO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssdUJBQXVCO1FBQzNCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBRW5DLDZEQUE2RDtRQUM3RCxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsb0JBQW9CLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDdkY7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOztPQUVHO0lBQ0sscUJBQXFCO1FBQ3pCLHFEQUFxRDtRQUNyRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztRQUN4RSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsa0JBQWtCLENBQUM7UUFDOUQsSUFBSSxDQUFDLFVBQVU7WUFDWCxnQkFBZ0IsR0FBRyxvQkFBb0I7Z0JBQ25DLENBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0I7Z0JBQzNDLENBQUMsQ0FBQyxjQUFjLEdBQUcsa0JBQWtCLENBQUM7UUFFOUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRDs7O09BR0c7SUFDSyxtQkFBbUIsQ0FBQyxTQUFpQjtRQUN6QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztRQUV2RixNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDckQsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLG9CQUFvQixDQUFDO1FBRTdFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJO1lBQzFCLENBQUMsQ0FBQyw2QkFBNkIsR0FBRyxnQkFBZ0I7WUFDbEQsQ0FBQyxDQUFDLDZCQUE2QixHQUFHLGdCQUFnQixDQUFDO1FBRXZELElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUM7U0FDakM7YUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsb0JBQW9CLEVBQUU7WUFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQztTQUN6QztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssaUJBQWlCLENBQUMsU0FBaUI7UUFDdkMsSUFBSSxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFL0IsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUMvQyxrREFBa0Q7WUFDbEQsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsR0FBRyxDQUFDLEVBQUU7Z0JBQzdCLG9CQUFvQjtnQkFDcEIsOENBQThDO2dCQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO2FBQzlFO2lCQUFNO2dCQUNILG9CQUFvQjtnQkFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO2dCQUN6RSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO2dCQUN0RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLENBQUM7Z0JBQzNFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO2FBQzlEO1NBQ0o7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUNqRix5REFBeUQ7WUFDekQsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsR0FBRyxDQUFDLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztnQkFDekUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUMzRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQzthQUM5RDtTQUNKO2FBQU0sSUFDSCxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CO1lBQzFFLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxHQUFHLENBQUMsRUFDN0I7WUFDRSxvQkFBb0I7WUFDcEIsNkVBQTZFO1lBQzdFLHVEQUF1RDtZQUN2RCxrQkFBa0IsR0FBRyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDNUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUN0RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLENBQUM7WUFDM0UsMkNBQTJDO1lBQzNDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7U0FDN0Q7YUFBTTtZQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUN0RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLENBQUM7U0FDOUU7UUFFRCxzQ0FBc0M7UUFDdEMsSUFDSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CO1lBQ3pFLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxHQUFHLENBQUM7WUFDM0IsQ0FBQyxrQkFBa0IsRUFDckI7WUFDRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDekUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUN0RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLENBQUM7WUFDM0UsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN4QjtRQUVELHNGQUFzRjtRQUN0RixrR0FBa0c7UUFDbEcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZixvREFBb0Q7WUFDcEQsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDcEQsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7YUFDbEM7WUFFRCxvREFBb0Q7WUFDcEQsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdEQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7YUFDaEM7U0FDSjtJQUNMLENBQUM7SUFFRCxzREFBc0Q7SUFDOUMsYUFBYTtRQUNqQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsMkJBQTJCLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7U0FDbkQ7SUFDTCxDQUFDO0lBRUQsMERBQTBEO0lBQ2xELGFBQWE7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsb0JBQW9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3BHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELHdEQUF3RDtJQUNoRCxjQUFjO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBQy9ELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELDhDQUE4QztJQUN0Qyx3QkFBd0I7UUFDNUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3RSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCwrQ0FBK0M7SUFDdkMseUJBQXlCO1FBQzdCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsa0JBQWtCLENBQUM7UUFDOUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDOzhHQXpwQlEsMEJBQTBCO2tHQUExQiwwQkFBMEIsaTRCQ3BEdkMsaTJEQXNEQSxzMkpESmMsSUFBSSw2RkFBRSxnQkFBZ0I7OzJGQUV2QiwwQkFBMEI7a0JBVHRDLFNBQVM7K0JBQ0ksd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQzs7MEJBdU81QixRQUFROzRDQWxPVCxNQUFNO3NCQURULEtBQUs7Z0JBWU4sTUFBTTtzQkFETCxLQUFLO2dCQUtOLEtBQUs7c0JBREosS0FBSztnQkFTRixJQUFJO3NCQURQLEtBQUs7Z0JBaUJGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFjRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBZUYscUJBQXFCO3NCQUR4QixLQUFLO2dCQWVGLHNCQUFzQjtzQkFEekIsS0FBSztnQkFXTixTQUFTO3NCQURSLEtBQUs7Z0JBTU4sSUFBSTtzQkFGSCxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGVBQWU7Z0JBTTVCLEtBQUs7c0JBRkosS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBTTdCLEdBQUc7c0JBRkYsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxjQUFjO2dCQUszQixNQUFNO3NCQURMLFdBQVc7dUJBQUMsZUFBZTtnQkFLNUIsUUFBUTtzQkFEUCxXQUFXO3VCQUFDLGdCQUFnQjtnQkFLN0IsZUFBZTtzQkFEZCxXQUFXO3VCQUFDLGlEQUFpRDtnQkFLOUQsUUFBUTtzQkFEUCxNQUFNO2dCQUtQLE9BQU87c0JBRE4sTUFBTTtnQkFLUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBS1Asa0JBQWtCO3NCQURqQixNQUFNO2dCQW9JUCxXQUFXO3NCQURWLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMkU1QyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBbVZqRCx3Q0FBd0M7QUFDeEMsTUFBTSxPQUFPLFlBQVk7SUFDckI7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxZQUNXLElBQWdDLEVBQ2hDLGFBQXFCLEVBQ3JCLGNBQXNCLEVBQ3RCLFNBQWlCLEVBQ2pCLFVBQWtCLEVBQ2xCLGdCQUF3QixFQUN4QixpQkFBeUIsRUFDekIsbUJBQTJCLEVBQzNCLG9CQUE0QjtRQVI1QixTQUFJLEdBQUosSUFBSSxDQUE0QjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQUN6Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQVE7UUFDM0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFRO0lBQ3BDLENBQUM7Q0FDUCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzYWJsZU9wdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOdWxsYWJsZSwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBSZXNpemVEaXJlY3Rpb24gPSAndmVydGljYWwnIHwgJ2hvcml6b250YWwnIHwgJ2JvdGgnO1xuXG4vLyBDYXJkIHJlc2l6ZXMgaW4gc3RlcCBvZiBmaXhlZCB2YWx1ZXMuIHZhbHVlcyBhcmUgaW4gcGl4ZWxcbmV4cG9ydCBjb25zdCBob3Jpem9udGFsUmVzaXplU3RlcCA9IDMyMDtcblxuLy8gdmVydGljYWwgcmVzaXplIHN0ZXBcbmV4cG9ydCBjb25zdCB2ZXJ0aWNhbFJlc2l6ZVN0ZXAgPSAxNjtcblxuLy8gZ2FwIG9mIDFyZW0gYmV0d2VlbiB0aGUgY2FyZHNcbmV4cG9ydCBjb25zdCBnYXAgPSAxNjtcblxuLy8gdGhyZXNob2xkIG9mZnNldCBmb3IgaG9yaXpvbnRhbCByZXNpemluZy5cbmV4cG9ydCBjb25zdCBob3Jpem9udGFsUmVzaXplT2Zmc2V0ID0gMTYwO1xuXG4vLyB0aHJlc2hvbGQgb2Zmc2V0IGZvciB2ZXJ0aWNhbCByZXNpemluZy5cbmV4cG9ydCBjb25zdCB2ZXJ0aWNhbFJlc2l6ZU9mZnNldCA9IDg7XG5cbi8vIHN0YXRlIG9mIGNhcmQuIEluY3JlYXNpbmcgd2lkdGgsIG5vIGNoYW5nZSBvciBkZWNyZWFzaW5nIHdpZHRoLlxuZXhwb3J0IHR5cGUgQ2FyZFN0YXRlID0gMSB8IDAgfCAtMTtcblxuLy8gY2FyZCBpcyBnaXZlbiBudW1lcmljIHZhbHVlLCBvbiB3aGljaCBzb3J0aW5nIG9mIGNhcmRzIGlzIGRvbmVcbmxldCBjYXJkUmFuayA9IDE7XG5sZXQgY2FyZFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1yZXNpemFibGUtY2FyZC1pdGVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3Jlc2l6YWJsZS1jYXJkLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Jlc2l6YWJsZS1jYXJkLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIE5nVGVtcGxhdGVPdXRsZXRdXG59KVxuZXhwb3J0IGNsYXNzIFJlc2l6YWJsZUNhcmRJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgRm9jdXNhYmxlT3B0aW9uLCBPbkRlc3Ryb3kge1xuICAgIC8qKiBDYXJkIHByb3BlcnRpZXMgZnJvbSB0aGUgY29uZmlnICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY29uZmlnKGNvbmZpZzogUmVzaXphYmxlQ2FyZEl0ZW1Db25maWcpIHtcbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICB0aGlzLl9pbml0aWFsU2V0dXAoKTtcbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgICBnZXQgY29uZmlnKCk6IFJlc2l6YWJsZUNhcmRJdGVtQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZztcbiAgICB9XG5cbiAgICAvKiogc2V0IHVpbnF1ZSBpZCBmb3IgdGhlIGNhcmQgKi9cbiAgICBASW5wdXQoKVxuICAgIGl0ZW1JZCA9IGBmZC1jYXJkLWl0ZW0tJHtjYXJkVW5pcXVlSWQrK31gO1xuXG4gICAgLyoqIHNldCB0aXRsZSBvZiB0aGUgY2FyZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGl0bGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFNlcmlhbCBvcmRlciBvZiBjYXJkLlxuICAgICAqIGNhcmRzIGFyZSBzb3J0ZWQgYmFzZWQgb24gcmFua3MgYmVmb3JlIGRpc3BsYXlpbmcgbGF5b3V0LlxuICAgICAqIGNhcmQgd2l0aCBsb3dlciByYW5rIHdpbGwgYmUgZGlzcGxheWVkIGZpcnN0IGluIGxheW91dCB0aGFuIHRoZSBjYXJkIHdpdGggaGlnaGVyIHJhbmsuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgcmFuayhyYW5rVmFsdWU6IG51bWJlcikge1xuICAgICAgICAvLyBkZXRlcm1pbmUgbWF4IHZhbHVlIGJldHdlZW4gdXNlciBnaXZlbiB2YWx1ZSBhbmQgZGVmYXVsdCB2YWx1ZVxuICAgICAgICB0aGlzLl9yYW5rID0gcmFua1ZhbHVlID8gcmFua1ZhbHVlIDogY2FyZFJhbmsrKztcbiAgICAgICAgaWYgKHJhbmtWYWx1ZSA+IGNhcmRSYW5rKSB7XG4gICAgICAgICAgICBjYXJkUmFuayA9IHJhbmtWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgcmFuaygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmFuaztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOdW1iZXIgb2YgY29sdW1uIHNwYW4gY2FyZCB3aWR0aCB0YWtlcy5cbiAgICAgKiBJdCB3aWxsIGJlIGluIHN0ZXAgb2YgMjByZW0uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2FyZFdpZHRoQ29sU3Bhbihjb2xTcGFuOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fY2FyZFdpZHRoQ29sU3BhbiA9IGNvbFNwYW47XG4gICAgICAgIHRoaXMuX3NldENhcmRXaWR0aCgpO1xuICAgIH1cbiAgICBnZXQgY2FyZFdpZHRoQ29sU3BhbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FyZFdpZHRoQ29sU3BhbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOdW1iZXIgb2Ygcm93IHNwYW4sIGNhcmQgaGVpZ2h0IHRha2VzLlxuICAgICAqIEl0IHdpbGwgYmUgaW4gdGhlIHN0ZXAgb2YgMXJlbS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjYXJkSGVpZ2h0Um93U3Bhbihyb3dTcGFuOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4gPSByb3dTcGFuO1xuICAgICAgICB0aGlzLl9zZXRDYXJkSGVpZ2h0KCk7XG4gICAgfVxuICAgIGdldCBjYXJkSGVpZ2h0Um93U3BhbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FyZEhlaWdodFJvd1NwYW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTnVtYmVyIG9mIHJvdyBzcGFuIGNhcmQgbWluaSBoZWFkZXIgaGVpZ2h0IHRha2VzLlxuICAgICAqIE1pbmkgSGVhZGVyOiBUaGUgc21hbGxlc3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNhcmQgaXMgdGhlIGhlYWRlci5cbiAgICAgKiBUaGUgY2FyZCBjYW4gYmUgY29sbGFwc2VkIHRvIG9ubHkgaXRzIGhlYWRlciBoZWlnaHQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2FyZE1pbmlIZWFkZXJSb3dTcGFuKHJvd1NwYW46IG51bWJlcikge1xuICAgICAgICB0aGlzLl9jYXJkTWluaUhlYWRlclJvd1NwYW4gPSByb3dTcGFuO1xuICAgICAgICB0aGlzLl9zZXRDYXJkTWluaUhlYWRlckhlaWdodCgpO1xuICAgIH1cbiAgICBnZXQgY2FyZE1pbmlIZWFkZXJSb3dTcGFuKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYXJkTWluaUhlYWRlclJvd1NwYW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTnVtYmVyIG9mIHJvdyBzcGFuIGNhcmQgbWluaSBjb250ZW50IGhlaWdodCB0YWtlcy5cbiAgICAgKiBNaW5pIENvbnRlbnQ6IFRoZSBtaW5pbXVtIGhlaWdodCBmb3IgdGhlIGNhcmQgY29udGVudCBkZXBlbmRzIG9uIHRoZSBjYXJkIHR5cGUsXG4gICAgICogYW5kIG11c3QgYmUgYXMgaGlnaCBhcyB0aGUgc21hbGxlc3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnRlbnQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2FyZE1pbmlDb250ZW50Um93U3Bhbihyb3dTcGFuOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fY2FyZE1pbmlDb250ZW50Um93U3BhbiA9IHJvd1NwYW47XG4gICAgICAgIHRoaXMuX3NldENhcmRNaW5pQ29udGVudEhlaWdodCgpO1xuICAgIH1cbiAgICBnZXQgY2FyZE1pbmlDb250ZW50Um93U3BhbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FyZE1pbmlDb250ZW50Um93U3BhbiA/PyAwO1xuICAgIH1cblxuICAgIC8qKiBDYXJkIGNhbiBiZSBzZXQgdG8gcmVzaXphYmxlPWZhbHNlLCB0byByZXN0cmljdCBjYXJkIHJlc2l6ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVzaXphYmxlID0gdHJ1ZTtcblxuICAgIC8qKiBTZXQgbGVmdCBwb3NpdGlvbiBmb3IgdGhlIGNhcmQgKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnc3R5bGUubGVmdC5weCcpXG4gICAgbGVmdDogTnVsbGFibGU8bnVtYmVyPjtcblxuICAgIC8qKiBTZXQgcmlnaHQgcG9zaXRpb24gZm9yIHRoZSBjYXJkICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnJpZ2h0LnB4JylcbiAgICByaWdodDogTnVsbGFibGU8bnVtYmVyPjtcblxuICAgIC8qKiBTZXQgdG9wIHBvc2l0aW9uIGZvciB0aGUgY2FyZCovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnRvcC5weCcpXG4gICAgdG9wID0gMDtcblxuICAgIC8qKiBAaGlkZGVuIHdoaWxlIHJlc2l6aW5nIHRoaXMgdmFsdWUgd2lsbCBjaGFuZ2UgdG8gYSBncmVhdGVyIHZhbHVlICovXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS56LWluZGV4JylcbiAgICB6SW5kZXggPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnBvc2l0aW9uJylcbiAgICBwb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG5cbiAgICAvKiogQGhpZGRlbiB0cmFuc2l0aW9uIGFuaW1hdGlvbiB3aGVuIGxheW91dCByZS1kcmF3cyAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0X19kcmF3LXRyYW5zaXRpb24nKVxuICAgIHJlRHJhd0FuaW1hdGlvbiA9IHRydWU7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBjYXJkIGlzIHN0aWxsIHJlc2l6aW5nICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVzaXppbmc6IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBjYXJkIHJlc2l6ZSBpcyBjb21wbGV0ZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZXNpemVkOiBFdmVudEVtaXR0ZXI8UmVzaXplZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzaXplZEV2ZW50PigpO1xuXG4gICAgLyoqIEVtaXRzIHdoZW4gY2FyZCBoZWlnaHQgaXMgcmVkdWNlZCB0byBzaG93IG9ubHkgaGVhZGVyICovXG4gICAgQE91dHB1dCgpXG4gICAgbWluaUhlYWRlclJlYWNoZWQ6IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemVkRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiBtaW5pbXVtIGhlaWdodCBvZiBjYXJkIGNvbnRlbnQgYXJlYSBpcyByZWFjaGVkICovXG4gICAgQE91dHB1dCgpXG4gICAgbWluaUNvbnRlbnRSZWFjaGVkOiBFdmVudEVtaXR0ZXI8UmVzaXplZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzaXplZEV2ZW50PigpO1xuXG4gICAgLyoqIHNob3cgY29ybmVyIHJlc2l6ZSBpY29uIG9uIGhvdmVyIG92ZXIgY2FyZCAqL1xuICAgIHNob3dpbmdSZXNpemVJY29uID0gZmFsc2U7XG5cbiAgICAvKiogc2hvdyBib3JkZXIgd2hlbiBjYXJkIGlzIHJlc2l6aW5nICovXG4gICAgc2hvd0JvcmRlciA9IGZhbHNlO1xuXG4gICAgLyoqIHN0YXJ0aW5nIGNvbHVtbiBwb3NpdGlvbiBvZiBjYXJkLiBzdGFydHMgd2l0aCAwICovXG4gICAgc3RhcnRpbmdDb2x1bW5Qb3NpdGlvbjogbnVtYmVyO1xuXG4gICAgLyoqIGNhcmQgd2lkdGggaW4gcHguIERlZmF1bHQgdmFsdWUgdG8gMjByZW0gKi9cbiAgICBjYXJkV2lkdGg6IG51bWJlciA9IGhvcml6b250YWxSZXNpemVTdGVwO1xuXG4gICAgLyoqIGNhcmQgaGVpZ2h0IGluIHB4ICovXG4gICAgY2FyZEhlaWdodDogbnVtYmVyO1xuXG4gICAgLyoqIE1pbmktaGVhZGVyIGhlaWdodCBvZiBjYXJkICovXG4gICAgY2FyZE1pbmlIZWFkZXJIZWlnaHQ6IG51bWJlcjtcblxuICAgIC8qKiBNaW5pLWNvbnRlbnQgaGVpZ2h0IG9mIGNhcmQgdG8gZGlzcGxheSBtaW5pbXVtIHZhbGlkIGNvbnRlbnQgKi9cbiAgICBjYXJkTWluaUNvbnRlbnRIZWlnaHQ6IG51bWJlcjtcblxuICAgIC8qKiBPdXRlciByZXNpemUgaW5kaWNhdGlvbiBib3JkZXIgd2lkdGggZm9yIHRoZSBjYXJkICovXG4gICAgcmVzaXplSW5kaWNhdGlvbkJvcmRlcldpZHRoID0gMDtcblxuICAgIC8qKlxuICAgICAqIERlbm90ZXMgaWYgY2FyZCBpcyBjdXJyZW50bHkgZXhwYW5kaW5nIG9yIGNvbnRyYWN0aW5nIGhvcml6b250YWxseS5cbiAgICAgKiArMSBkZW5vdGVzIGluY3JlYXNpbmcsIC0xIGRlbm90ZXMgZGVjcmVhc2luZyBhbmQgMCBkZW5vdGVzIGNhcmQtc3RhdGUgaGFzIG5vdCBjaGFuZ2VkIGhvcml6b250YWxseS5cbiAgICAgKi9cbiAgICBjYXJkU3RhdGU6IENhcmRTdGF0ZSA9IDA7XG5cbiAgICAvKiogQ2hhbmdlIGluIHJhbmsgZnJvbSBwcmV2aW91cyB2YWx1ZSovXG4gICAgcHJldlJhbmsgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gRGVmYXVsdCB3aWR0aCBvZiBjYXJkIGlzIDIwcmVtIGllLiAxIGNvbHVtbiAqL1xuICAgIHByaXZhdGUgX2NhcmRXaWR0aENvbFNwYW4gPSAxO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYXJkSGVpZ2h0Um93U3BhbjogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gaGVscHMgaW4gdmVydGljYWwgc3RlcCBjaGFuZ2UgZXZlbnQgZW1pdCAqL1xuICAgIHByaXZhdGUgX3ByZXZDYXJkSGVpZ2h0Um93U3BhbjogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYXJkTWluaUhlYWRlclJvd1NwYW46IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FyZE1pbmlDb250ZW50Um93U3Bhbj86IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuIGNvbmZpZyB2YWx1ZXMgZm9yIGNhcmQgKi9cbiAgICBwcml2YXRlIF9jb25maWc6IFJlc2l6YWJsZUNhcmRJdGVtQ29uZmlnO1xuXG4gICAgLyoqIEBoaWRkZW4gcHJldmlvdXMgY3Vyc29yIHggcG9zaXRpb24gKi9cbiAgICBwcml2YXRlIF9wcmV2WDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gcHJldmlvdXMgY3Vyc29yIHkgcG9zaXRpb24gKi9cbiAgICBwcml2YXRlIF9wcmV2WTogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcmV2Q2FyZFdpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ByZXZDYXJkSGVpZ2h0OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiBmbGFnIHRvIGNvbnRyb2wgcmVzaXplICovXG4gICAgcHJpdmF0ZSBfcmVzaXplID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2l6ZURpcmVjdGlvbjogUmVzaXplRGlyZWN0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tYXhDb2x1bW46IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gc3RvcmVzIG9yaWdpbmFsIHdpZHRoIHNwYW4gb2YgY2FyZC5cbiAgICAgKiBJdCBtYXkgcmVkdWNlIG9uIHNtYWxsIHNjcmVlbiwgc28gaGF2ZSB0byByZXN0b3JlIHVzaW5nIHRoaXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfb3JpZ2luYWxDYXJkV2lkdGhTcGFuID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmFuazogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9ydGwgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMuX3J0bFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKHRoaXMuX3J0bFNlcnZpY2UucnRsLnN1YnNjcmliZSgodmFsdWUpID0+ICh0aGlzLl9ydGwgPSB2YWx1ZSkpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHJlc2l6ZSBoYW5kbGVyIGlzIHByZXNzZWQgYW5kIHJlc2l6aW5nIG1heSBzdGFydC5cbiAgICAgKiBAcGFyYW0gZXZlbnQ6IE1vdXNlRXZlbnRcbiAgICAgKiBAcGFyYW0gcmVzaXplRGlyZWN0aW9uOiB3aGljaCBoYW5kbGVyIGlzIHByZXNzZWQgdG8gcmVzaXplXG4gICAgICovXG4gICAgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQsIHJlc2l6ZURpcmVjdGlvbjogUmVzaXplRGlyZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICghdGhpcy5yZXNpemFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2hvd2luZ1Jlc2l6ZUljb24gPSB0cnVlO1xuICAgICAgICB0aGlzLl9yZXNpemUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9wcmV2WCA9IGV2ZW50LmNsaWVudFg7XG4gICAgICAgIHRoaXMuX3ByZXZZID0gZXZlbnQuY2xpZW50WTtcbiAgICAgICAgdGhpcy5fcHJldkNhcmRXaWR0aCA9IHRoaXMuY2FyZFdpZHRoO1xuICAgICAgICB0aGlzLl9wcmV2Q2FyZEhlaWdodCA9IHRoaXMuY2FyZEhlaWdodDtcbiAgICAgICAgdGhpcy5fcmVzaXplRGlyZWN0aW9uID0gcmVzaXplRGlyZWN0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gV2hlbiBtb3VzZSBtb3ZlcyB0byByZXNpemUgdGhlIGNhcmQuXG4gICAgICogdXNpbmcgd2luZG93Om1vdXNlbW92ZSBzbywgcmVzaXplIHdpbGwgaGFwcGVuIHNtb290aGx5XG4gICAgICogQHBhcmFtIGV2ZW50OiBNb3VzZUV2ZW50XG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXG4gICAgb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLnJlc2l6YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2F2ZXMgZnJvbSB1bi1uZWNlc3NhcnkgcmVzaXplXG4gICAgICAgIGlmICghdGhpcy5fcmVzaXplKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuc2hvd0JvcmRlcikge1xuICAgICAgICAgICAgdGhpcy5zaG93Qm9yZGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlc2l6aW5nIGNhcmQgd2lsbCBnbyBvdmVyIG90aGVyIGNhcmRzXG4gICAgICAgIHRoaXMuekluZGV4ID0gMTtcblxuICAgICAgICBjb25zdCB7IGNsaWVudFgsIGNsaWVudFkgfSA9IGV2ZW50O1xuICAgICAgICBzd2l0Y2ggKHRoaXMuX3Jlc2l6ZURpcmVjdGlvbikge1xuICAgICAgICAgICAgY2FzZSAnYm90aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5faG9yaXpvbnRhbFJlc2l6aW5nKGNsaWVudFgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsUmVzaXppbmcoY2xpZW50WSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdob3Jpem9udGFsJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9ob3Jpem9udGFsUmVzaXppbmcoY2xpZW50WCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2ZXJ0aWNhbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fdmVydGljYWxSZXNpemluZyhjbGllbnRZKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5faG9yaXpvbnRhbFJlc2l6aW5nKGNsaWVudFgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsUmVzaXppbmcoY2xpZW50WSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjYXJkV2lkdGhDb2xTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRXaWR0aCAvIGhvcml6b250YWxSZXNpemVTdGVwKTtcbiAgICAgICAgY29uc3QgY2FyZFdpZHRoV2l0aENvbHVtbiA9IGNhcmRXaWR0aENvbFNwYW4gKiBob3Jpem9udGFsUmVzaXplU3RlcCArIGNhcmRXaWR0aENvbFNwYW4gKiBnYXA7XG5cbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbFJlc2l6ZVRocmVzaG9sZFJlYWNoZWQgPSB0aGlzLmNhcmRXaWR0aCAtIGNhcmRXaWR0aFdpdGhDb2x1bW4gPiBob3Jpem9udGFsUmVzaXplT2Zmc2V0O1xuXG4gICAgICAgIGlmIChjbGllbnRYID4gdGhpcy5fcHJldlgpIHtcbiAgICAgICAgICAgIC8vIGluY3JlYXNpbmcgd2lkdGhcbiAgICAgICAgICAgIHRoaXMuY2FyZFN0YXRlID0gMTtcblxuICAgICAgICAgICAgaWYgKGhvcml6b250YWxSZXNpemVUaHJlc2hvbGRSZWFjaGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZnV0dXJlQ2FyZFdpZHRoID0gKGNhcmRXaWR0aENvbFNwYW4gKyAxKSAqIGhvcml6b250YWxSZXNpemVTdGVwICsgY2FyZFdpZHRoQ29sU3BhbiAqIGdhcDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUluZGljYXRpb25Cb3JkZXJXaWR0aCA9IGZ1dHVyZUNhcmRXaWR0aCAtIHRoaXMuY2FyZFdpZHRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUluZGljYXRpb25Cb3JkZXJXaWR0aCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY2xpZW50WCA8IHRoaXMuX3ByZXZYKSB7XG4gICAgICAgICAgICAvLyBkZWNyZWFzaW5nIHdpZHRoXG4gICAgICAgICAgICB0aGlzLmNhcmRTdGF0ZSA9IC0xO1xuICAgICAgICAgICAgaWYgKGhvcml6b250YWxSZXNpemVUaHJlc2hvbGRSZWFjaGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZnV0dXJlQ2FyZFdpZHRoID0gKGNhcmRXaWR0aENvbFNwYW4gKyAxKSAqIGhvcml6b250YWxSZXNpemVTdGVwICsgY2FyZFdpZHRoQ29sU3BhbiAqIGdhcDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUluZGljYXRpb25Cb3JkZXJXaWR0aCA9IGZ1dHVyZUNhcmRXaWR0aCAtIHRoaXMuY2FyZFdpZHRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUluZGljYXRpb25Cb3JkZXJXaWR0aCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wcmV2WCA9IGNsaWVudFg7XG4gICAgICAgIHRoaXMuX3ByZXZZID0gY2xpZW50WTtcbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIC8vIEVtaXRzIHJlc2l6aW5nIGV2ZW50LlxuICAgICAgICB0aGlzLnJlc2l6aW5nLmVtaXQodGhpcy5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogd2hlbiByZXNpemluZyBvZiBjYXJkIHN0b3BzXG4gICAgICogQHBhcmFtIGV2ZW50OiBNb3VzZUV2ZW50XG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6IG1vdXNldXAnLCBbJyRldmVudCddKVxuICAgIG9uTW91c2VVcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlc2l6YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmIGNhcmQgd2FzIG5vdCByZXNpemluZ1xuICAgICAgICBpZiAoIXRoaXMuX3Jlc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW5jcmVhc2UvZGVjcmVhc2Ugd2lkdGggb2YgY2FyZCBpbiBvcmRlciBvZiAyMHJlbVxuICAgICAgICBpZiAoTWF0aC5hYnModGhpcy5jYXJkV2lkdGggLSB0aGlzLl9wcmV2Q2FyZFdpZHRoKSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2hvcml6b250YWxTdGVwUmVzaXppbmcoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGluY3JlYXNlL2RlY3JlYXNlIGhlaWdodCBvZiBjYXJkIGluIG9yZGVyIG9mIDFyZW1cbiAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuY2FyZEhlaWdodCAtIHRoaXMuX3ByZXZDYXJkSGVpZ2h0KSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2FsU3RlcFJlc2l6aW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zdG9wUmVzaXppbmcoKTtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIFNldHMgZm9jdXMgb24gdGhlIGVsZW1lbnQgKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaGVhZGVyID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmZkLWNhcmRfX2hlYWRlcicpO1xuICAgICAgICBoZWFkZXI/LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIFNob3dzIHJlc2l6ZSBpY29uICovXG4gICAgc2hvd1Jlc2l6ZUljb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5yZXNpemFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dpbmdSZXNpemVJY29uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogSGlkZXMgcmVzaXplIGljb24gKi9cbiAgICBoaWRlUmVzaXplSWNvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9yZXNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd2luZ1Jlc2l6ZUljb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIG1heCB3aWR0aCBmb3IgY2FyZCwgYmFzZWQgb24gbGF5b3V0IHNpemUgcGFzc2VkICovXG4gICAgZ2V0TWF4Q29sU3BhbihsYXlvdXRTaXplOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBzd2l0Y2ggKGxheW91dFNpemUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NtJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXhDb2x1bW4gPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWQnOlxuICAgICAgICAgICAgICAgIHRoaXMuX21heENvbHVtbiA9IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZyc6XG4gICAgICAgICAgICAgICAgdGhpcy5fbWF4Q29sdW1uID0gMztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3hsJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXhDb2x1bW4gPSA0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXhDb2x1bW4gPSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhDb2x1bW47XG4gICAgfVxuXG4gICAgLyoqIFVwZGF0ZSBjYXJkIHdpZHRoIGlmIGl0IGV4Y2VlZHMgY29sdW1uIHNwYW4gYmFzZWQgb24gbGF5b3V0ICovXG4gICAgdmVyaWZ5VXBkYXRlQ2FyZFdpZHRoKGxheW91dFNpemU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCB3aWR0aENvbFNwYW4gPSB0aGlzLl9jb25maWc/LmNhcmRXaWR0aENvbFNwYW4gfHwgdGhpcy5jYXJkV2lkdGhDb2xTcGFuO1xuICAgICAgICAvLyBzdG9yaW5nIG9yaWdpbmFsIHdpZHRoIG9mIGNhcmQuXG4gICAgICAgIC8vIHVzZWQgdG8gcmVzdG9yZSB3aWR0aCBvbiB3aW5kb3cgcmVzaXplIGZyb20gc21hbGwgdG8gbGFyZ2VcbiAgICAgICAgdGhpcy5fb3JpZ2luYWxDYXJkV2lkdGhTcGFuID0gIXRoaXMuX29yaWdpbmFsQ2FyZFdpZHRoU3BhbiA/IHdpZHRoQ29sU3BhbiA6IHRoaXMuX29yaWdpbmFsQ2FyZFdpZHRoU3BhbjtcbiAgICAgICAgdGhpcy5fbWF4Q29sdW1uID0gdGhpcy5nZXRNYXhDb2xTcGFuKGxheW91dFNpemUpO1xuICAgICAgICBpZiAod2lkdGhDb2xTcGFuID4gdGhpcy5fbWF4Q29sdW1uKSB7XG4gICAgICAgICAgICB0aGlzLmNhcmRXaWR0aENvbFNwYW4gPSB0aGlzLl9tYXhDb2x1bW47XG4gICAgICAgICAgICB0aGlzLl9zZXRDYXJkV2lkdGgoKTtcbiAgICAgICAgICAgIC8vIEVtaXRzIHJlc2l6ZWQgZXZlbnQuXG4gICAgICAgICAgICB0aGlzLnJlc2l6ZWQuZW1pdCh0aGlzLmdldFJlc2l6ZWRFdmVudE9iamVjdCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGtlZXAgY2FyZCB3aWR0aCBtaW5pbXVtLCBzbyBpdCBjYW4gZml0IGluIHNjcmVlbi5cbiAgICAgICAgICAgIHRoaXMuY2FyZFdpZHRoQ29sU3BhbiA9IE1hdGgubWluKHRoaXMuX21heENvbHVtbiwgdGhpcy5fb3JpZ2luYWxDYXJkV2lkdGhTcGFuKTtcbiAgICAgICAgICAgIHRoaXMuX3NldENhcmRXaWR0aCgpO1xuICAgICAgICAgICAgLy8gRW1pdHMgcmVzaXplZCBldmVudC5cbiAgICAgICAgICAgIHRoaXMucmVzaXplZC5lbWl0KHRoaXMuZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJldHVybnMgUmVzaXplZEV2ZW50IG9iamVjdCB0byBlbWl0LiAqL1xuICAgIGdldFJlc2l6ZWRFdmVudE9iamVjdCgpOiBSZXNpemVkRXZlbnQge1xuICAgICAgICBjb25zdCBuZXdDYXJkSGVpZ2h0Um93U3BhbiA9IE1hdGguZmxvb3IodGhpcy5jYXJkSGVpZ2h0IC8gdmVydGljYWxSZXNpemVTdGVwKTtcbiAgICAgICAgY29uc3QgbmV3Q2FyZFdpZHRoQ29sU3BhbiA9IE1hdGguZmxvb3IodGhpcy5jYXJkV2lkdGggLyBob3Jpem9udGFsUmVzaXplU3RlcCk7XG4gICAgICAgIGNvbnN0IG5ld0NhcmRXaWR0aCA9IG5ld0NhcmRXaWR0aENvbFNwYW4gKiBob3Jpem9udGFsUmVzaXplU3RlcCArIG5ld0NhcmRXaWR0aENvbFNwYW4gKiBnYXA7XG5cbiAgICAgICAgY29uc3QgaG9yaXpvbnRhbFJlc2l6ZVRocmVzaG9sZFJlYWNoZWQgPSB0aGlzLmNhcmRXaWR0aCAtIG5ld0NhcmRXaWR0aCA+IGhvcml6b250YWxSZXNpemVPZmZzZXQ7XG4gICAgICAgIGNvbnN0IG5ld0NhcmRDb2xTcGFuID0gaG9yaXpvbnRhbFJlc2l6ZVRocmVzaG9sZFJlYWNoZWQgPyBuZXdDYXJkV2lkdGhDb2xTcGFuICsgMSA6IG5ld0NhcmRXaWR0aENvbFNwYW47XG4gICAgICAgIHJldHVybiBuZXcgUmVzaXplZEV2ZW50KFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIHRoaXMuX3ByZXZDYXJkV2lkdGgsXG4gICAgICAgICAgICB0aGlzLl9wcmV2Q2FyZEhlaWdodCxcbiAgICAgICAgICAgIHRoaXMuY2FyZFdpZHRoLFxuICAgICAgICAgICAgdGhpcy5jYXJkSGVpZ2h0LFxuICAgICAgICAgICAgdGhpcy5fY2FyZFdpZHRoQ29sU3BhbixcbiAgICAgICAgICAgIHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuLFxuICAgICAgICAgICAgbmV3Q2FyZENvbFNwYW4sXG4gICAgICAgICAgICBuZXdDYXJkSGVpZ2h0Um93U3BhblxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJldHVybiBwcmV2aW91cyBoZWlnaHQgcm93IHNwYW4gb2YgdGhlIGNhcmQgKi9cbiAgICBnZXQgcHJldmlvdXNDYXJkSGVpZ2h0Um93U3BhbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJldkNhcmRIZWlnaHRSb3dTcGFuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNldCBjYXJkIHByb3BlcnRpZXMgdXNpbmcgY29uZmlnIHJlY2VpdmVkICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbFNldHVwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhcmRXaWR0aENvbFNwYW4gPSB0aGlzLl9jb25maWc/LmNhcmRXaWR0aENvbFNwYW4gfHwgdGhpcy5jYXJkV2lkdGhDb2xTcGFuO1xuICAgICAgICB0aGlzLmNhcmRIZWlnaHRSb3dTcGFuID0gdGhpcy5fY29uZmlnPy5jYXJkSGVpZ2h0Um93U3BhbiB8fCB0aGlzLmNhcmRIZWlnaHRSb3dTcGFuO1xuICAgICAgICB0aGlzLnRpdGxlID0gdGhpcy5fY29uZmlnPy50aXRsZSB8fCB0aGlzLnRpdGxlO1xuICAgICAgICB0aGlzLnJhbmsgPSB0aGlzLl9jb25maWc/LnJhbmsgfHwgdGhpcy5yYW5rO1xuICAgICAgICB0aGlzLmNhcmRNaW5pSGVhZGVyUm93U3BhbiA9IHRoaXMuX2NvbmZpZz8uY2FyZE1pbmlIZWFkZXJSb3dTcGFuIHx8IHRoaXMuY2FyZE1pbmlIZWFkZXJSb3dTcGFuO1xuICAgICAgICB0aGlzLmNhcmRNaW5pQ29udGVudFJvd1NwYW4gPSB0aGlzLl9jb25maWc/LmNhcmRNaW5pQ29udGVudFJvd1NwYW4gfHwgdGhpcy5jYXJkTWluaUNvbnRlbnRSb3dTcGFuO1xuICAgICAgICB0aGlzLnJlc2l6YWJsZSA9IHRoaXMuX2NvbmZpZy5yZXNpemFibGUgfHwgdGhpcy5yZXNpemFibGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmV0dXJucyB0cnVlIHdoZW4gcmVzaXplIG9mZnNldCBpcyBjcm9zc2VkICovXG4gICAgcHJpdmF0ZSBfaG9yaXpvbnRhbFJlc2l6ZVdpdGhPZmZzZXQoKTogdm9pZCB7XG4gICAgICAgIC8vIHBvc2l0aXZlIHZhbHVlIGluZGljYXRlcyB0aGF0IHdpZHRoIGhhcyBpbmNyZWFzZWRcbiAgICAgICAgY29uc3Qgd2lkdGhJbmNyZW1lbnQgPSB0aGlzLmNhcmRXaWR0aCAtIHRoaXMuX3ByZXZDYXJkV2lkdGg7XG4gICAgICAgIGNvbnN0IGNhcmRTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRXaWR0aCAvIGhvcml6b250YWxSZXNpemVTdGVwKTtcbiAgICAgICAgY29uc3QgY2FyZFNwYW5GcmFjdGlvbiA9IHRoaXMuY2FyZFdpZHRoICUgaG9yaXpvbnRhbFJlc2l6ZVN0ZXA7XG5cbiAgICAgICAgLy8gd2hlbiB3aWR0aCBpbmNyZWFzZXNcbiAgICAgICAgaWYgKHdpZHRoSW5jcmVtZW50ID4gMCkge1xuICAgICAgICAgICAgaWYgKHdpZHRoSW5jcmVtZW50IDwgaG9yaXpvbnRhbFJlc2l6ZU9mZnNldCArIGdhcCkge1xuICAgICAgICAgICAgICAgIC8vIHdpZHRoSW5jcmVtZW50IGlzIGxlc3MgdGhhbiBvZmZzZXQsIGRvIG5vdCBpbmNyZWFzZSB3aWR0aFxuICAgICAgICAgICAgICAgIHRoaXMuY2FyZFdpZHRoID0gdGhpcy5fcHJldkNhcmRXaWR0aDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgdmFsdWUgb2YgY2FyZFNwYW5GcmFjdGlvbiwgaW5jbHVkaW5nIGdhcHMgaW4gY2FyZHNcbiAgICAgICAgICAgICAgICBsZXQgaXNDYXJkU3BhbkZyYWN0aW9uQ3Jvc3NpbmdPZmZzZXQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpc0NhcmRTcGFuRnJhY3Rpb25Dcm9zc2luZ09mZnNldCA9IGNhcmRTcGFuRnJhY3Rpb24gLSAoY2FyZFNwYW4gLSAxKSAqIGdhcCA+IGhvcml6b250YWxSZXNpemVPZmZzZXQ7XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJkV2lkdGggPSBpc0NhcmRTcGFuRnJhY3Rpb25Dcm9zc2luZ09mZnNldFxuICAgICAgICAgICAgICAgICAgICA/IChjYXJkU3BhbiArIDEpICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXBcbiAgICAgICAgICAgICAgICAgICAgOiBjYXJkU3BhbiAqIGhvcml6b250YWxSZXNpemVTdGVwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gd2hlbiB3aWR0aCBkZWNyZWFzZXNcbiAgICAgICAgICAgIGlmIChNYXRoLmFicyh3aWR0aEluY3JlbWVudCkgPCBob3Jpem9udGFsUmVzaXplT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgLy8gd2lkdGhJbmNyZW1lbnQgaXMgbGVzcyB0aGFuIG9mZnNldCwgZG8gbm90IGRlY3JlYXNlIHdpZHRoXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJkV2lkdGggPSB0aGlzLl9wcmV2Q2FyZFdpZHRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBjaGVjayB2YWx1ZSBvZiBjYXJkU3BhbkZyYWN0aW9uLCBpbmNsdWRpbmcgZ2FwcyBpbiBjYXJkc1xuICAgICAgICAgICAgICAgIGxldCBpc0NhcmRTcGFuRnJhY3Rpb25Dcm9zc2luZ09mZnNldCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlzQ2FyZFNwYW5GcmFjdGlvbkNyb3NzaW5nT2Zmc2V0ID0gY2FyZFNwYW5GcmFjdGlvbiAtIGNhcmRTcGFuICogZ2FwID4gaG9yaXpvbnRhbFJlc2l6ZU9mZnNldDtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcmRXaWR0aCA9IGlzQ2FyZFNwYW5GcmFjdGlvbkNyb3NzaW5nT2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgID8gKGNhcmRTcGFuICsgMSkgKiBob3Jpem9udGFsUmVzaXplU3RlcFxuICAgICAgICAgICAgICAgICAgICA6IGNhcmRTcGFuICogaG9yaXpvbnRhbFJlc2l6ZVN0ZXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIG1ha2UgaG9yaXpvbnRhbCByZXNpemUgb25seSBvbiBzdGVwIG9mIDIwcmVtXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaG9yaXpvbnRhbFN0ZXBSZXNpemluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faG9yaXpvbnRhbFJlc2l6ZVdpdGhPZmZzZXQoKTtcblxuICAgICAgICAvLyBBZGQgaW5uZXIgZ2FwIGluICBjYXJkV2lkdGggaWYgd2lkdGggaXMgbW9yZSB0aGFuIDEgY29sdW1uXG4gICAgICAgIGlmICh0aGlzLmNhcmRXaWR0aCA+IGhvcml6b250YWxSZXNpemVTdGVwKSB7XG4gICAgICAgICAgICB0aGlzLmNhcmRXaWR0aCA9IHRoaXMuY2FyZFdpZHRoICsgKHRoaXMuY2FyZFdpZHRoIC8gaG9yaXpvbnRhbFJlc2l6ZVN0ZXAgLSAxKSAqIGdhcDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhcmRXaWR0aENvbFNwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZFdpZHRoIC8gaG9yaXpvbnRhbFJlc2l6ZVN0ZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gbWFrZSB2ZXJ0aWNhbCByZXNpemUgb25seSBvbiBzdGVwIG9mIDFyZW1cbiAgICAgKi9cbiAgICBwcml2YXRlIF92ZXJ0aWNhbFN0ZXBSZXNpemluZygpOiB2b2lkIHtcbiAgICAgICAgLy8gcG9zaXRpdmUgdmFsdWUgaW5kaWNhdGVzIHRoYXQgaGVpZ2h0IGhhcyBpbmNyZWFzZWRcbiAgICAgICAgY29uc3QgY2FyZEhlaWdodFNwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZEhlaWdodCAvIHZlcnRpY2FsUmVzaXplU3RlcCk7XG4gICAgICAgIGNvbnN0IGNhcmRTcGFuRnJhY3Rpb24gPSB0aGlzLmNhcmRIZWlnaHQgJSB2ZXJ0aWNhbFJlc2l6ZVN0ZXA7XG4gICAgICAgIHRoaXMuY2FyZEhlaWdodCA9XG4gICAgICAgICAgICBjYXJkU3BhbkZyYWN0aW9uID4gdmVydGljYWxSZXNpemVPZmZzZXRcbiAgICAgICAgICAgICAgICA/IChjYXJkSGVpZ2h0U3BhbiArIDEpICogdmVydGljYWxSZXNpemVTdGVwXG4gICAgICAgICAgICAgICAgOiBjYXJkSGVpZ2h0U3BhbiAqIHZlcnRpY2FsUmVzaXplU3RlcDtcblxuICAgICAgICB0aGlzLmNhcmRIZWlnaHRSb3dTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRIZWlnaHQgLyB2ZXJ0aWNhbFJlc2l6ZVN0ZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gUmVzaXplIGNhcmQgaG9yaXpvbnRhbGx5IGJ5IGNoZWNraW5nIGJvdW5kYXJ5IGNvbmRpdGlvblxuICAgICAqIEBwYXJhbSB4UG9zaXRpb246IGN1cnJlbnQgeC1wb3NpdGlvbiBvZiBjdXJzb3JcbiAgICAgKi9cbiAgICBwcml2YXRlIF9ob3Jpem9udGFsUmVzaXppbmcoeFBvc2l0aW9uOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IHRoaXMuX3ByZXZYIC0geFBvc2l0aW9uO1xuICAgICAgICB0aGlzLmNhcmRXaWR0aCA9IHRoaXMuX3J0bCA/IHRoaXMuY2FyZFdpZHRoICsgZGlmZmVyZW5jZSA6IHRoaXMuY2FyZFdpZHRoIC0gZGlmZmVyZW5jZTtcblxuICAgICAgICBjb25zdCB0b3RhbEluZGVudGF0aW9uID0gKHRoaXMuX21heENvbHVtbiAtIDEpICogZ2FwO1xuICAgICAgICBjb25zdCBtYXhDYXJkV2lkdFdpdGhvdXRJbmRlbnRhdGlvbiA9IHRoaXMuX21heENvbHVtbiAqIGhvcml6b250YWxSZXNpemVTdGVwO1xuXG4gICAgICAgIGNvbnN0IG1heENhcmRXaWR0aCA9IHRoaXMuX3J0bFxuICAgICAgICAgICAgPyBtYXhDYXJkV2lkdFdpdGhvdXRJbmRlbnRhdGlvbiAtIHRvdGFsSW5kZW50YXRpb25cbiAgICAgICAgICAgIDogbWF4Q2FyZFdpZHRXaXRob3V0SW5kZW50YXRpb24gKyB0b3RhbEluZGVudGF0aW9uO1xuXG4gICAgICAgIGlmICh0aGlzLmNhcmRXaWR0aCA+IG1heENhcmRXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5jYXJkV2lkdGggPSBtYXhDYXJkV2lkdGg7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jYXJkV2lkdGggPCBob3Jpem9udGFsUmVzaXplU3RlcCkge1xuICAgICAgICAgICAgdGhpcy5jYXJkV2lkdGggPSBob3Jpem9udGFsUmVzaXplU3RlcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gUmVzaXplIGNhcmQgdmVydGljYWxseS5cbiAgICAgKiB0YWtlcyBjYXJlIG9mIG1pbmktaGVhZGVyIGhlaWdodCBhbmQgbWluaS1jb250ZW50IGhlaWdodFxuICAgICAqIEBwYXJhbSB5UG9zaXRpb246IGN1cnJlbnQgeS1wb3NpdGlvbiBvZiBjdXJzb3JcbiAgICAgKi9cbiAgICBwcml2YXRlIF92ZXJ0aWNhbFJlc2l6aW5nKHlQb3NpdGlvbjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGxldCByZWFjaGluZ01pbmlIZWFkZXIgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5jYXJkSGVpZ2h0ID09PSB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0KSB7XG4gICAgICAgICAgICAvLyBpZiBjYXJkIGhlaWdodCBpcyBhbHJlYWR5IGF0IG1pbmktaGVhZGVyIGhlaWdodFxuICAgICAgICAgICAgaWYgKHRoaXMuX3ByZXZZIC0geVBvc2l0aW9uID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIGRlY3JlYXNpbmcgaGVpZ2h0XG4gICAgICAgICAgICAgICAgLy8gaWYgbWluaUhlYWRlciBoZWlnaHQgcmVhY2hlZCwgc3RvcCByZXNpemluZ1xuICAgICAgICAgICAgICAgIHRoaXMuY2FyZEhlaWdodCA9IHRoaXMuY2FyZE1pbmlIZWFkZXJIZWlnaHQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJldkNhcmRIZWlnaHRSb3dTcGFuID0gdGhpcy5fY2FyZEhlaWdodFJvd1NwYW47XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZEhlaWdodCAvIHZlcnRpY2FsUmVzaXplU3RlcCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGluY3JlYXNpbmcgaGVpZ2h0XG4gICAgICAgICAgICAgICAgdGhpcy5jYXJkSGVpZ2h0ID0gdGhpcy5jYXJkTWluaUhlYWRlckhlaWdodCArIHRoaXMuY2FyZE1pbmlDb250ZW50SGVpZ2h0O1xuICAgICAgICAgICAgICAgIHRoaXMuX3ByZXZDYXJkSGVpZ2h0Um93U3BhbiA9IHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRIZWlnaHQgLyB2ZXJ0aWNhbFJlc2l6ZVN0ZXApO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0b3BSZXNpemluZygpO1xuICAgICAgICAgICAgICAgIHRoaXMubWluaUNvbnRlbnRSZWFjaGVkLmVtaXQodGhpcy5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jYXJkSGVpZ2h0IDwgdGhpcy5jYXJkTWluaUNvbnRlbnRIZWlnaHQgKyB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0KSB7XG4gICAgICAgICAgICAvLyBpZiBjYXJkIGhlaWdodCBpcyBiZXR3ZWVuIG1pbmktaGVhZGVyIGFuZCBtaW5pLWNvbnRlbnRcbiAgICAgICAgICAgIGlmICh0aGlzLl9wcmV2WSAtIHlQb3NpdGlvbiA8IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhcmRIZWlnaHQgPSB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0ICsgdGhpcy5jYXJkTWluaUNvbnRlbnRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJldkNhcmRIZWlnaHRSb3dTcGFuID0gdGhpcy5fY2FyZEhlaWdodFJvd1NwYW47XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZEhlaWdodCAvIHZlcnRpY2FsUmVzaXplU3RlcCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RvcFJlc2l6aW5nKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5taW5pQ29udGVudFJlYWNoZWQuZW1pdCh0aGlzLmdldFJlc2l6ZWRFdmVudE9iamVjdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIHRoaXMuY2FyZEhlaWdodCA9PT0gdGhpcy5jYXJkTWluaUNvbnRlbnRIZWlnaHQgKyB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0ICYmXG4gICAgICAgICAgICB0aGlzLl9wcmV2WSAtIHlQb3NpdGlvbiA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBkZWNyZWFzaW5nIGhlaWdodFxuICAgICAgICAgICAgLy8gaGVpZ2h0IGRlY3JlYXNpbmcgYWZ0ZXIgcmVhY2hpbmcgbWluaS1jb250ZW50LiB0aGlzIG5lZWRzIHRvIGRpZmZlcmVudGlhdGVcbiAgICAgICAgICAgIC8vIGZyb20gaGVpZ2h0IGRlY3JlYXNpbmcgYW5kIHJlYWNoaW5nIHRvIG1pbmktY29udGVudC5cbiAgICAgICAgICAgIHJlYWNoaW5nTWluaUhlYWRlciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmNhcmRIZWlnaHQgPSB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0O1xuICAgICAgICAgICAgdGhpcy5fcHJldkNhcmRIZWlnaHRSb3dTcGFuID0gdGhpcy5fY2FyZEhlaWdodFJvd1NwYW47XG4gICAgICAgICAgICB0aGlzLl9jYXJkSGVpZ2h0Um93U3BhbiA9IE1hdGguZmxvb3IodGhpcy5jYXJkSGVpZ2h0IC8gdmVydGljYWxSZXNpemVTdGVwKTtcbiAgICAgICAgICAgIC8vIG1pbmlIZWFkZXIgaGVpZ2h0IHJlYWNoZWQsIHN0b3AgcmVzaXppbmdcbiAgICAgICAgICAgIHRoaXMuX3N0b3BSZXNpemluZygpO1xuICAgICAgICAgICAgdGhpcy5taW5pSGVhZGVyUmVhY2hlZC5lbWl0KHRoaXMuZ2V0UmVzaXplZEV2ZW50T2JqZWN0KCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jYXJkSGVpZ2h0ID0gdGhpcy5jYXJkSGVpZ2h0IC0gKHRoaXMuX3ByZXZZIC0geVBvc2l0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuX3ByZXZDYXJkSGVpZ2h0Um93U3BhbiA9IHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuO1xuICAgICAgICAgICAgdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4gPSBNYXRoLmZsb29yKHRoaXMuY2FyZEhlaWdodCAvIHZlcnRpY2FsUmVzaXplU3RlcCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzdG9wIHJlc2l6aW5nIG9uIG1pbmlDb250ZW50IGhlaWdodFxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNhcmRIZWlnaHQgPD0gdGhpcy5jYXJkTWluaUNvbnRlbnRIZWlnaHQgKyB0aGlzLmNhcmRNaW5pSGVhZGVySGVpZ2h0ICYmXG4gICAgICAgICAgICB0aGlzLl9wcmV2WSAtIHlQb3NpdGlvbiA+IDAgJiZcbiAgICAgICAgICAgICFyZWFjaGluZ01pbmlIZWFkZXJcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNhcmRIZWlnaHQgPSB0aGlzLmNhcmRNaW5pQ29udGVudEhlaWdodCArIHRoaXMuY2FyZE1pbmlIZWFkZXJIZWlnaHQ7XG4gICAgICAgICAgICB0aGlzLl9wcmV2Q2FyZEhlaWdodFJvd1NwYW4gPSB0aGlzLl9jYXJkSGVpZ2h0Um93U3BhbjtcbiAgICAgICAgICAgIHRoaXMuX2NhcmRIZWlnaHRSb3dTcGFuID0gTWF0aC5mbG9vcih0aGlzLmNhcmRIZWlnaHQgLyB2ZXJ0aWNhbFJlc2l6ZVN0ZXApO1xuICAgICAgICAgICAgdGhpcy5taW5pQ29udGVudFJlYWNoZWQuZW1pdCh0aGlzLmdldFJlc2l6ZWRFdmVudE9iamVjdCgpKTtcbiAgICAgICAgICAgIHRoaXMuX3N0b3BSZXNpemluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gd2hpbGUgY29ybmVyIHJlc2l6ZSwgd2lkdGggbWlnaHQgaGF2ZSBpbmNyZWFzZWQgYW5kIHJlYWNoZWQgdG8gbWluaS1jb250ZW50IGhlaWdodC5cbiAgICAgICAgLy8gc28sIG9uIG1pbmktY29udGVudCByZXNpemUgd2lsbCBzdG9wLCBidXQgaGF2ZSB0byBkbyBzdGVwIHJlc2l6aW5nIGZvciB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbC5cbiAgICAgICAgaWYgKCF0aGlzLl9yZXNpemUpIHtcbiAgICAgICAgICAgIC8vIGluY3JlYXNlL2RlY3JlYXNlIHdpZHRoIG9mIGNhcmQgaW4gb3JkZXIgb2YgMjByZW1cbiAgICAgICAgICAgIGlmIChNYXRoLmFicyh0aGlzLmNhcmRXaWR0aCAtIHRoaXMuX3ByZXZDYXJkV2lkdGgpID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hvcml6b250YWxTdGVwUmVzaXppbmcoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaW5jcmVhc2UvZGVjcmVhc2UgaGVpZ2h0IG9mIGNhcmQgaW4gb3JkZXIgb2YgMXJlbVxuICAgICAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuY2FyZEhlaWdodCAtIHRoaXMuX3ByZXZDYXJkSGVpZ2h0KSA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92ZXJ0aWNhbFN0ZXBSZXNpemluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gcmVzZXQgaW52b2x2ZWQgdmFyaWFibGVzIHdoaWxlIHJlc2l6aW5nICovXG4gICAgcHJpdmF0ZSBfc3RvcFJlc2l6aW5nKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fcmVzaXplKSB7XG4gICAgICAgICAgICB0aGlzLmNhcmRTdGF0ZSA9IDA7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUluZGljYXRpb25Cb3JkZXJXaWR0aCA9IDA7XG4gICAgICAgICAgICB0aGlzLl9yZXNpemUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuekluZGV4ID0gMDtcbiAgICAgICAgICAgIHRoaXMuc2hvd0JvcmRlciA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVkLmVtaXQodGhpcy5nZXRSZXNpemVkRXZlbnRPYmplY3QoKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSZXR1cm5zIGNhcmRXaWR0aCBiYXNlZCBvbiBjYXJkIGNvbHVtbiBzcGFuICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZFdpZHRoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhcmRXaWR0aCA9IHRoaXMuX2NhcmRXaWR0aENvbFNwYW4gKiBob3Jpem9udGFsUmVzaXplU3RlcCArICh0aGlzLl9jYXJkV2lkdGhDb2xTcGFuIC0gMSkgKiBnYXA7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJldHVybnMgY2FyZEhlaWdodCBiYXNlZCBvbiBjYXJkIHJvdyBzcGFuICovXG4gICAgcHJpdmF0ZSBfc2V0Q2FyZEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJkSGVpZ2h0ID0gdGhpcy5fY2FyZEhlaWdodFJvd1NwYW4gKiB2ZXJ0aWNhbFJlc2l6ZVN0ZXA7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJldHVybnMgY2FyZCBtaW5pIGhlYWRlciBoZWlnaHQgKi9cbiAgICBwcml2YXRlIF9zZXRDYXJkTWluaUhlYWRlckhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJkTWluaUhlYWRlckhlaWdodCA9IHRoaXMuX2NhcmRNaW5pSGVhZGVyUm93U3BhbiAqIHZlcnRpY2FsUmVzaXplU3RlcDtcbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gUmV0dXJucyBjYXJkIG1pbmkgY29udGVudCBoZWlnaHQgKi9cbiAgICBwcml2YXRlIF9zZXRDYXJkTWluaUNvbnRlbnRIZWlnaHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FyZE1pbmlDb250ZW50SGVpZ2h0ID0gdGhpcy5jYXJkTWluaUNvbnRlbnRSb3dTcGFuICogdmVydGljYWxSZXNpemVTdGVwO1xuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG59XG5cbi8qKiBDb25maWcgaW50ZXJmYWNlIGZvciBjYXJkIHByb3BlcnRpZXMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzaXphYmxlQ2FyZEl0ZW1Db25maWcge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHJhbms/OiBudW1iZXI7XG4gICAgY2FyZFdpZHRoQ29sU3Bhbj86IG51bWJlcjtcbiAgICBjYXJkSGVpZ2h0Um93U3Bhbj86IG51bWJlcjtcbiAgICBjYXJkTWluaUhlYWRlclJvd1NwYW4/OiBudW1iZXI7XG4gICAgY2FyZE1pbmlDb250ZW50Um93U3Bhbj86IG51bWJlcjtcbiAgICByZXNpemFibGU/OiBib29sZWFuO1xufVxuXG4vKiogT2JqZWN0IHRvIGVtaXQgb24gcmVzaXplIGNvbXBsZXRlICovXG5leHBvcnQgY2xhc3MgUmVzaXplZEV2ZW50IHtcbiAgICAvKipcbiAgICAgKiBPYmplY3QgdG8gZW1pdCBvbiByZXNpemUgY29tcGxldGVcbiAgICAgKiBAcGFyYW0gY2FyZFxuICAgICAqIEBwYXJhbSBwcmV2Q2FyZFdpZHRoIFByZXZpb3VzIGNhcmQgd2lkdGhcbiAgICAgKiBAcGFyYW0gcHJldkNhcmRIZWlnaHQgUHJldmlvdXMgY2FyZCBoZWlnaHRcbiAgICAgKiBAcGFyYW0gY2FyZFdpZHRoIEN1cnJlbnQgY2FyZCB3aWR0aFxuICAgICAqIEBwYXJhbSBjYXJkSGVpZ2h0IEN1cnJlbnQgY2FyZCBoZWlnaHRcbiAgICAgKiBAcGFyYW0gY2FyZFdpZHRoQ29sU3BhbiBDdXJyZW50IGNhcmQgd2lkdGggY29sdW1uIHNwYW5cbiAgICAgKiBAcGFyYW0gY2FyZEhlaWdodFJvd1NwYW4gQ3VycmVudCBjYXJkIGhlaWdodCByb3cgc3BhblxuICAgICAqIEBwYXJhbSBuZXdDYXJkV2lkdGhDb2xTcGFuIE5ldyBjYXJkIHdpZHRoIGNvbHVtbiBzcGFuXG4gICAgICogQHBhcmFtIG5ld0NhcmRIZWlnaHRSb3dTcGFuIE5ldyBjYXJkIGhlaWdodCByb3cgc3BhblxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgY2FyZDogUmVzaXphYmxlQ2FyZEl0ZW1Db21wb25lbnQsXG4gICAgICAgIHB1YmxpYyBwcmV2Q2FyZFdpZHRoOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBwcmV2Q2FyZEhlaWdodDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgY2FyZFdpZHRoOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBjYXJkSGVpZ2h0OiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBjYXJkV2lkdGhDb2xTcGFuOiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBjYXJkSGVpZ2h0Um93U3BhbjogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgbmV3Q2FyZFdpZHRoQ29sU3BhbjogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgbmV3Q2FyZEhlaWdodFJvd1NwYW46IG51bWJlclxuICAgICkge31cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZkLXJlc2l6YWJsZS1jYXJkLWxheW91dF9faXRlbVwiXG4gICAgW2NsYXNzLmZkLXJlc2l6YWJsZS1jYXJkLWxheW91dF9faW5kaWNhdGlvbi1ib3JkZXJdPVwic2hvd0JvcmRlclwiXG4gICAgI3Jlc2l6ZUNhcmRcbj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0X19pdGVtLS1ib3JkZXItZGlzcGxheSBmZC1yZXNpemFibGUtY2FyZC1sYXlvdXRfX2l0ZW0tLXJlc2l6ZS10cmFuc2l0aW9uXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNhcmRXaWR0aFwiXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiY2FyZEhlaWdodFwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cInNob3dSZXNpemVJY29uKClcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJoaWRlUmVzaXplSWNvbigpXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZC1yZXNpemFibGUtY2FyZC1sYXlvdXRfX2NhcmRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dpbmdSZXNpemVJY29uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLXJlc2l6YWJsZS1jYXJkLWxheW91dF9faWNvbi13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0X19pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNjb3JuZXJIYW5kbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50LCAnYm90aCcpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNpemFibGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2ZXJ0aWNhbEhhbmRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaG9yaXpvbnRhbEhhbmRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZkLXJlc2l6YWJsZS1jYXJkLWxheW91dF9faXRlbS0tcmVzaXplLXRyYW5zaXRpb25cIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicmVzaXplSW5kaWNhdGlvbkJvcmRlcldpZHRoXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJjYXJkSGVpZ2h0XCJcbiAgICA+PC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN2ZXJ0aWNhbEhhbmRsZVRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgI3ZlcnRpY2FsSGFuZGxlXG4gICAgICAgIGNsYXNzPVwiZmQtcmVzaXphYmxlLWNhcmQtbGF5b3V0X19yZXNpemUtLXZlcnRpY2FsXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQsICdob3Jpem9udGFsJylcIlxuICAgID48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaG9yaXpvbnRhbEhhbmRsZVRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgI2hvcml6b250YWxIYW5kbGVcbiAgICAgICAgY2xhc3M9XCJmZC1yZXNpemFibGUtY2FyZC1sYXlvdXRfX3Jlc2l6ZS0taG9yaXpvbnRhbFwiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50LCAndmVydGljYWwnKVwiXG4gICAgPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs
CHANGED
|
@@ -495,11 +495,11 @@ export class ResizableCardLayoutComponent {
|
|
|
495
495
|
this._rtlService?.rtl.pipe(takeUntil(this._destroy$)).subscribe(refreshDirection);
|
|
496
496
|
}
|
|
497
497
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ResizableCardLayoutComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
498
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: ResizableCardLayoutComponent, isStandalone: true, selector: "fd-resizable-card-layout", inputs: { layoutConfig: "layoutConfig" }, outputs: { stepChange: "stepChange", resizing: "resizing", resized: "resized", miniHeaderReached: "miniHeaderReached", miniContentReached: "miniContentReached", layoutChange: "layoutChange" }, host: { listeners: { "keydown": "handleKeydown($event)", "window:resize": "onResize()" } }, queries: [{ propertyName: "resizeCardItems", predicate: ResizableCardItemComponent }], ngImport: i0, template: "<div\n #layout\n class=\"fd-resizable-card-layout\"\n [class]=\"'fd-resizable-card-layout--' + layoutSize\"\n [style.width.px]=\"layoutWidth\"\n [style.height.px]=\"layoutHeight\"\n>\n <ng-content></ng-content>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2
|
|
498
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: ResizableCardLayoutComponent, isStandalone: true, selector: "fd-resizable-card-layout", inputs: { layoutConfig: "layoutConfig" }, outputs: { stepChange: "stepChange", resizing: "resizing", resized: "resized", miniHeaderReached: "miniHeaderReached", miniContentReached: "miniContentReached", layoutChange: "layoutChange" }, host: { listeners: { "keydown": "handleKeydown($event)", "window:resize": "onResize()" } }, queries: [{ propertyName: "resizeCardItems", predicate: ResizableCardItemComponent }], ngImport: i0, template: "<div\n #layout\n class=\"fd-resizable-card-layout\"\n [class]=\"'fd-resizable-card-layout--' + layoutSize\"\n [style.width.px]=\"layoutWidth\"\n [style.height.px]=\"layoutHeight\"\n>\n <ng-content></ng-content>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2\n * Copyright (c) 2023 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-resizable-card-layout{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:1rem 0 0;padding:0 .5rem;position:relative}.fd-resizable-card-layout:after,.fd-resizable-card-layout:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__item{-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;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-width:20rem;padding:0;position:relative}.fd-resizable-card-layout__item:after,.fd-resizable-card-layout__item:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__card{-webkit-box-sizing:border-box;-webkit-box-ordinal-group:2;-ms-flex-order:1;-webkit-box-flex:1;-ms-flex:1;border:0;box-sizing:border-box;color:var(--sapTextColor);flex:1;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:calc(100% - .0625rem);line-height:var(--sapContent_LineHeight);margin:0;order:1;padding:0;position:relative}.fd-resizable-card-layout__card:after,.fd-resizable-card-layout__card:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__icon-wrapper{-webkit-box-sizing:border-box;border:0;bottom:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:1rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0 .0625rem .0625rem 0;position:absolute;right:0;width:1rem;z-index:2}.fd-resizable-card-layout__icon-wrapper:after,.fd-resizable-card-layout__icon-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__icon-wrapper[dir=rtl],[dir=rtl] .fd-resizable-card-layout__icon-wrapper{left:0;padding:0 0 .0625rem .0625rem;right:auto}.fd-resizable-card-layout__icon{-webkit-box-sizing:border-box;border:0;bottom:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapButton_IconColor);cursor:nwse-resize;font-family:var(--sapFontFamily);font-family:SAP-icons;font-size:var(--sapFontSize);font-size:1rem;font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:0;position:absolute;right:.0625rem;z-index:2}.fd-resizable-card-layout__icon:after,.fd-resizable-card-layout__icon:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__icon:before{content:\"\\e24f\";font-family:SAP-icons;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-resizable-card-layout__icon[dir=rtl],[dir=rtl] .fd-resizable-card-layout__icon{-webkit-transform:rotate(90deg);cursor:nesw-resize;padding:0 .0625rem .0625rem .5rem;position:relative;transform:rotate(90deg)}.fd-resizable-card-layout__icon--vertical,.fd-resizable-card-layout__icon--vertical[dir=rtl],[dir=rtl] .fd-resizable-card-layout__icon--vertical{cursor:ns-resize}.fd-resizable-card-layout__icon--horizontal,.fd-resizable-card-layout__icon--horizontal[dir=rtl],[dir=rtl] .fd-resizable-card-layout__icon--horizontal{cursor:ew-resize}.fd-resizable-card-layout__resize--vertical{-webkit-box-ordinal-group:3;-ms-flex-order:2;cursor:ew-resize;order:2;width:.0625rem;z-index:2}.fd-resizable-card-layout__resize--vertical::content{content:\"\";position:absolute}.fd-resizable-card-layout__resize--horizontal{bottom:0;cursor:ns-resize;height:.0625rem;position:absolute;width:calc(100% - .5rem);z-index:2}.fd-resizable-card-layout__indication-border{-webkit-box-sizing:border-box;border:0;border:.125rem dashed var(--sapContent_DragAndDropActiveColor);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-resizable-card-layout__indication-border:after,.fd-resizable-card-layout__indication-border:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout--sm{padding-left:.5rem;padding-right:.5rem}.fd-resizable-card-layout--lg,.fd-resizable-card-layout--md{padding-left:1rem;padding-right:1rem}.fd-resizable-card-layout--xl{padding-left:3rem;padding-right:3rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
499
499
|
}
|
|
500
500
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ResizableCardLayoutComponent, decorators: [{
|
|
501
501
|
type: Component,
|
|
502
|
-
args: [{ selector: 'fd-resizable-card-layout', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, template: "<div\n #layout\n class=\"fd-resizable-card-layout\"\n [class]=\"'fd-resizable-card-layout--' + layoutSize\"\n [style.width.px]=\"layoutWidth\"\n [style.height.px]=\"layoutHeight\"\n>\n <ng-content></ng-content>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2
|
|
502
|
+
args: [{ selector: 'fd-resizable-card-layout', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, template: "<div\n #layout\n class=\"fd-resizable-card-layout\"\n [class]=\"'fd-resizable-card-layout--' + layoutSize\"\n [style.width.px]=\"layoutWidth\"\n [style.height.px]=\"layoutHeight\"\n>\n <ng-content></ng-content>\n</div>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2\n * Copyright (c) 2023 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-resizable-card-layout{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:1rem 0 0;padding:0 .5rem;position:relative}.fd-resizable-card-layout:after,.fd-resizable-card-layout:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__item{-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;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-width:20rem;padding:0;position:relative}.fd-resizable-card-layout__item:after,.fd-resizable-card-layout__item:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__card{-webkit-box-sizing:border-box;-webkit-box-ordinal-group:2;-ms-flex-order:1;-webkit-box-flex:1;-ms-flex:1;border:0;box-sizing:border-box;color:var(--sapTextColor);flex:1;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:calc(100% - .0625rem);line-height:var(--sapContent_LineHeight);margin:0;order:1;padding:0;position:relative}.fd-resizable-card-layout__card:after,.fd-resizable-card-layout__card:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__icon-wrapper{-webkit-box-sizing:border-box;border:0;bottom:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:1rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0 .0625rem .0625rem 0;position:absolute;right:0;width:1rem;z-index:2}.fd-resizable-card-layout__icon-wrapper:after,.fd-resizable-card-layout__icon-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__icon-wrapper[dir=rtl],[dir=rtl] .fd-resizable-card-layout__icon-wrapper{left:0;padding:0 0 .0625rem .0625rem;right:auto}.fd-resizable-card-layout__icon{-webkit-box-sizing:border-box;border:0;bottom:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapButton_IconColor);cursor:nwse-resize;font-family:var(--sapFontFamily);font-family:SAP-icons;font-size:var(--sapFontSize);font-size:1rem;font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);line-height:1rem;margin:0;padding:0;position:absolute;right:.0625rem;z-index:2}.fd-resizable-card-layout__icon:after,.fd-resizable-card-layout__icon:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout__icon:before{content:\"\\e24f\";font-family:SAP-icons;text-align:center;text-decoration:inherit;text-rendering:optimizeLegibility;text-transform:none}.fd-resizable-card-layout__icon[dir=rtl],[dir=rtl] .fd-resizable-card-layout__icon{-webkit-transform:rotate(90deg);cursor:nesw-resize;padding:0 .0625rem .0625rem .5rem;position:relative;transform:rotate(90deg)}.fd-resizable-card-layout__icon--vertical,.fd-resizable-card-layout__icon--vertical[dir=rtl],[dir=rtl] .fd-resizable-card-layout__icon--vertical{cursor:ns-resize}.fd-resizable-card-layout__icon--horizontal,.fd-resizable-card-layout__icon--horizontal[dir=rtl],[dir=rtl] .fd-resizable-card-layout__icon--horizontal{cursor:ew-resize}.fd-resizable-card-layout__resize--vertical{-webkit-box-ordinal-group:3;-ms-flex-order:2;cursor:ew-resize;order:2;width:.0625rem;z-index:2}.fd-resizable-card-layout__resize--vertical::content{content:\"\";position:absolute}.fd-resizable-card-layout__resize--horizontal{bottom:0;cursor:ns-resize;height:.0625rem;position:absolute;width:calc(100% - .5rem);z-index:2}.fd-resizable-card-layout__indication-border{-webkit-box-sizing:border-box;border:0;border:.125rem dashed var(--sapContent_DragAndDropActiveColor);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-resizable-card-layout__indication-border:after,.fd-resizable-card-layout__indication-border:before{box-sizing:inherit;font-size:inherit}.fd-resizable-card-layout--sm{padding-left:.5rem;padding-right:.5rem}.fd-resizable-card-layout--lg,.fd-resizable-card-layout--md{padding-left:1rem;padding-right:1rem}.fd-resizable-card-layout--xl{padding-left:3rem;padding-right:3rem}\n"] }]
|
|
503
503
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.RtlService, decorators: [{
|
|
504
504
|
type: Optional
|
|
505
505
|
}] }]; }, propDecorators: { layoutConfig: [{
|
|
@@ -211,7 +211,7 @@ export class SegmentedButtonComponent {
|
|
|
211
211
|
useExisting: forwardRef(() => SegmentedButtonComponent),
|
|
212
212
|
multi: true
|
|
213
213
|
}
|
|
214
|
-
], queries: [{ propertyName: "_buttons", predicate: FD_BUTTON_COMPONENT }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: ["/*!\n * Fundamental Library Styles v0.30.2
|
|
214
|
+
], queries: [{ propertyName: "_buttons", predicate: FD_BUTTON_COMPONENT }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: ["/*!\n * Fundamental Library Styles v0.30.2\n * Copyright (c) 2023 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-segmented-button{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:inline-flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;vertical-align:middle}.fd-segmented-button:after,.fd-segmented-button:before{box-sizing:inherit;font-size:inherit}.fd-segmented-button:before{-webkit-box-shadow:inset 0 0 0 var(--sapButton_BorderWidth) var(--fdButtonPrioritizedBorderColor, var(--sapButton_BorderColor));background:var(--sapButton_Background);border-radius:var(--sapButton_BorderCornerRadius);box-shadow:inset 0 0 0 var(--sapButton_BorderWidth) var(--fdButtonPrioritizedBorderColor, var(--sapButton_BorderColor));content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}.fd-segmented-button button{--fdButtonPrioritizedBorderColor:var(--fdButton_Split_Border_Color);--fdButtonPrioritizedBackgroundColor:var(--fdButton_Split_Background_Color);margin:0}.fd-segmented-button button.is-hover,.fd-segmented-button button:hover{z-index:1}.fd-segmented-button button:first-child{border-radius:var(--fdButton_Border_Radius_Left)}.fd-segmented-button button:not(:first-child):not(:last-child){border-radius:var(--fdButton_Segmented_Middle_Border_Radius)}.fd-segmented-button button:last-child{border-radius:var(--fdButton_Border_Radius_Right)}.fd-segmented-button button:not(:last-child){margin-right:var(--fdButton_Segmented_Border_Offset)}.fd-segmented-button button:not(:last-child)[dir=rtl],[dir=rtl] .fd-segmented-button button:not(:last-child){margin-left:var(--fdButton_Segmented_Border_Offset);margin-right:0}.fd-segmented-button:not(.fd-segmented-button--vertical) button[dir=rtl]:first-child,[dir=rtl] .fd-segmented-button:not(.fd-segmented-button--vertical) button:first-child{border-radius:var(--fdButton_Border_Radius_Left_RTL)}.fd-segmented-button:not(.fd-segmented-button--vertical) button[dir=rtl]:last-child,[dir=rtl] .fd-segmented-button:not(.fd-segmented-button--vertical) button:last-child{border-radius:var(--fdButton_Border_Radius_Right_RTL)}.fd-segmented-button--vertical{flex-direction:column}.fd-segmented-button--vertical button:first-child{border-radius:var(--fdButton_Vertical_Border_Radius_Left)}.fd-segmented-button--vertical button:last-child{border-radius:var(--fdButton_Vertical_Border_Radius_Right)}.fd-segmented-button--vertical button:not(:last-child){margin-bottom:var(--fdButton_Segmented_Border_Offset);margin-right:0}.fd-segmented-button--vertical button:not(:last-child)[dir=rtl],[dir=rtl] .fd-segmented-button--vertical button:not(:last-child){margin-left:0;margin-right:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
215
215
|
}
|
|
216
216
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: SegmentedButtonComponent, decorators: [{
|
|
217
217
|
type: Component,
|
|
@@ -223,7 +223,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
|
|
|
223
223
|
useExisting: forwardRef(() => SegmentedButtonComponent),
|
|
224
224
|
multi: true
|
|
225
225
|
}
|
|
226
|
-
], standalone: true, styles: ["/*!\n * Fundamental Library Styles v0.30.2
|
|
226
|
+
], standalone: true, styles: ["/*!\n * Fundamental Library Styles v0.30.2\n * Copyright (c) 2023 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-segmented-button{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);display:inline-flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;vertical-align:middle}.fd-segmented-button:after,.fd-segmented-button:before{box-sizing:inherit;font-size:inherit}.fd-segmented-button:before{-webkit-box-shadow:inset 0 0 0 var(--sapButton_BorderWidth) var(--fdButtonPrioritizedBorderColor, var(--sapButton_BorderColor));background:var(--sapButton_Background);border-radius:var(--sapButton_BorderCornerRadius);box-shadow:inset 0 0 0 var(--sapButton_BorderWidth) var(--fdButtonPrioritizedBorderColor, var(--sapButton_BorderColor));content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}.fd-segmented-button button{--fdButtonPrioritizedBorderColor:var(--fdButton_Split_Border_Color);--fdButtonPrioritizedBackgroundColor:var(--fdButton_Split_Background_Color);margin:0}.fd-segmented-button button.is-hover,.fd-segmented-button button:hover{z-index:1}.fd-segmented-button button:first-child{border-radius:var(--fdButton_Border_Radius_Left)}.fd-segmented-button button:not(:first-child):not(:last-child){border-radius:var(--fdButton_Segmented_Middle_Border_Radius)}.fd-segmented-button button:last-child{border-radius:var(--fdButton_Border_Radius_Right)}.fd-segmented-button button:not(:last-child){margin-right:var(--fdButton_Segmented_Border_Offset)}.fd-segmented-button button:not(:last-child)[dir=rtl],[dir=rtl] .fd-segmented-button button:not(:last-child){margin-left:var(--fdButton_Segmented_Border_Offset);margin-right:0}.fd-segmented-button:not(.fd-segmented-button--vertical) button[dir=rtl]:first-child,[dir=rtl] .fd-segmented-button:not(.fd-segmented-button--vertical) button:first-child{border-radius:var(--fdButton_Border_Radius_Left_RTL)}.fd-segmented-button:not(.fd-segmented-button--vertical) button[dir=rtl]:last-child,[dir=rtl] .fd-segmented-button:not(.fd-segmented-button--vertical) button:last-child{border-radius:var(--fdButton_Border_Radius_Right_RTL)}.fd-segmented-button--vertical{flex-direction:column}.fd-segmented-button--vertical button:first-child{border-radius:var(--fdButton_Vertical_Border_Radius_Left)}.fd-segmented-button--vertical button:last-child{border-radius:var(--fdButton_Vertical_Border_Radius_Right)}.fd-segmented-button--vertical button:not(:last-child){margin-bottom:var(--fdButton_Segmented_Border_Offset);margin-right:0}.fd-segmented-button--vertical button:not(:last-child)[dir=rtl],[dir=rtl] .fd-segmented-button--vertical button:not(:last-child){margin-left:0;margin-right:0}\n"] }]
|
|
227
227
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.DestroyRef }]; }, propDecorators: { toggle: [{
|
|
228
228
|
type: Input
|
|
229
229
|
}], _fdSegmentedButtonClass: [{
|