@fundamental-ngx/core 0.47.1 → 0.47.2-rc.1
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-item/list-item.component.mjs +1 -4
- 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-attribute/object-attribute.component.mjs +3 -3
- 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 -7
- 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-attribute.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-attribute.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.47.2-rc.1.tgz +0 -0
- package/package.json +5 -5
- package/schematics/add-dependencies/index.js +8 -8
- package/fundamental-ngx-core-v0.47.1.tgz +0 -0
|
@@ -748,7 +748,7 @@ export class SliderComponent {
|
|
|
748
748
|
[ContentDensityMode.COZY]: 'fd-slider--lg'
|
|
749
749
|
}
|
|
750
750
|
})
|
|
751
|
-
], viewQueries: [{ propertyName: "trackEl", first: true, predicate: ["track"], descendants: true, read: ElementRef, static: true }, { propertyName: "handle", first: true, predicate: ["handle"], descendants: true, read: ElementRef }, { propertyName: "rangeHandle1", first: true, predicate: ["rangeHandle1"], descendants: true, read: ElementRef }, { propertyName: "rangeHandle2", first: true, predicate: ["rangeHandle2"], descendants: true, read: ElementRef }, { propertyName: "_rangeGroupHandle", first: true, predicate: ["rangeGroupHandle"], descendants: true, read: ElementRef }, { propertyName: "_popovers", predicate: PopoverComponent, descendants: true }, { propertyName: "_sliderTooltipWrappers", predicate: ["sliderTooltipWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"fd-slider__inner\">\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeMode : singleMode\"></ng-container>\n\n <div class=\"fd-slider__track\" (click)=\"onTrackClick($event)\" #track>\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeModeTrack : singleModeTrack\"></ng-container>\n </div>\n\n <div class=\"fd-slider__tick-wrapper\">\n <div class=\"fd-slider__ticks\" (click)=\"onTrackClick($event)\">\n <ng-container *ngIf=\"showTicks\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i\">\n <div\n class=\"fd-slider__tick\"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"tick.position || 0\"\n [class.fd-slider__tick--in-range]=\"\n !hideProgressBar &&\n (_isRange\n ? tick.value >= _position[0] && tick.value <= _position[1]\n : tick.value <= _position)\n \"\n ></div>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"fd-slider__labels\" *ngIf=\"showTicks && showTicksLabels\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i; last as last; first as first\">\n <div\n *ngIf=\"first || last || i % tickmarksBetweenLabels === 0\"\n class=\"fd-slider__label\"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"tick.position || 0\"\n >\n {{ tick.label }}\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #singleModeTrack>\n <div\n *ngIf=\"!hideProgressBar\"\n class=\"fd-slider__track-range\"\n [style.height.%]=\"vertical ? _progress : null\"\n [style.width.%]=\"vertical ? null : _progress\"\n ></div>\n</ng-template>\n\n<ng-template #rangeModeTrack>\n <div\n *ngIf=\"!hideProgressBar\"\n class=\"fd-slider__track-range\"\n [style.height.%]=\"vertical ? _rangeProgress : null\"\n [style.width.%]=\"vertical ? null : _rangeProgress\"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"_handle1Position < _handle2Position ? _handle1Position : _handle2Position\"\n >\n <div\n class=\"fd-slider__track-focus-range\"\n (mousedown)=\"onHandleClick($event, true)\"\n (keydown)=\"onKeyDown($event, _handles.Both)\"\n tabindex=\"0\"\n #rangeGroupHandle\n ></div>\n </div>\n</ng-template>\n\n<ng-template #singleMode>\n <div\n #handle\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || ('coreSlider.singleMinMaxDetails' | fdTranslate : { min: minValue, max: maxValue })\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? singleSliderPopover : null\"\n [attr.aria-valuemin]=\"'coreSlider.singleValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.singleValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate : { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate : { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"_progress\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (focus)=\"_handleFocused$.next(true)\"\n (blur)=\"_handleFocused$.next(false)\"\n (keydown)=\"onKeyDown($event)\"\n ></div>\n\n <fd-popover\n #singleSliderPopover\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"handle\"\n [disabled]=\"!tooltipMode\"\n class=\"fd-popover--slider\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.SINGLE_SLIDER, position: _position }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #rangeMode>\n <div\n #rangeHandle1\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || ('coreSlider.multipleHandle1MinMaxDetails' | fdTranslate : { min: minValue, max: maxValue })\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover1 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle1ValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle1ValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"_handle1Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event, _handles.First)\"\n (focus)=\"_rangeHandle1Focused$.next(true)\"\n (blur)=\"_rangeHandle1Focused$.next(false)\"\n ></div>\n\n <div\n #rangeHandle2\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || ('coreSlider.multipleHandle2MinMaxDetails' | fdTranslate : { min: minValue, max: maxValue })\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover2 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle2ValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle2ValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"_handle2Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event, _handles.Second)\"\n (focus)=\"_rangeHandle2Focused$.next(true)\"\n (blur)=\"_rangeHandle2Focused$.next(false)\"\n ></div>\n\n <fd-popover\n #rangeSliderPopover1\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle1\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER1, position: _handle1Value }\n \"\n ></ng-container>\n </fd-popover>\n\n <fd-popover\n #rangeSliderPopover2\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle2\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER2, position: _handle2Value }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #popoverInner let-target=\"target\" let-position=\"position\">\n <div\n #sliderTooltipWrapper\n class=\"fd-slider--tooltip-wrapper\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n (mouseenter)=\"_popoverInputFieldHovered$.next(true)\"\n (mouseleave)=\"_popoverInputFieldHovered$.next(false)\"\n >\n <div *ngIf=\"(customValues && customValues.length > 0) || tooltipMode === 'readonly'\" class=\"fd-slider--tooltip\">\n {{ customValues && customValues.length > 0 ? customValues[position].label : _popoverValueRef[target] }}\n </div>\n\n <input\n #popoverInputField\n tabindex=\"-1\"\n type=\"text\"\n [disabled]=\"disabled\"\n fdkOnlyDigits\n [decimal]=\"true\"\n [style.width.ch]=\"('' + _popoverValueRef[target]).length + 2\"\n class=\"fd-input fd-slider--tooltip {{ _popoverInputFieldClass }}\"\n *ngIf=\"customValues?.length === 0 && tooltipMode === 'editable'\"\n [(ngModel)]=\"_popoverValueRef[target]\"\n (blur)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (keydown.enter)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (focus)=\"_popoverInputFieldFocused$.next(true)\"\n (blur)=\"_popoverInputFieldFocused$.next(false)\"\n />\n </div>\n</ng-template>\n", styles: [".fd-slider{-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:0;max-width:100%;min-width:4rem;padding:0;padding:1rem calc(var(--fdSlider_Handle_Width) * .5 + .125rem);position:relative}.fd-slider:after,.fd-slider:before{box-sizing:inherit;font-size:inherit}.fd-slider.is-disabled,.fd-slider:disabled,.fd-slider[aria-disabled=true]{cursor:not-allowed}.fd-slider--lg{--fdSlider_Handle_Width:var(--fdSlider_Mobile_Handle_Width);--fdSlider_Handle_Height:var(--fdSlider_Mobile_Handle_Height);--fdSlider_Handle_Active_Width:var(--fdSlider_Mobile_Handle_Active_Size);--fdSlider_Handle_Active_Height:var(--fdSlider_Mobile_Handle_Active_Size);padding-left:calc(var(--fdSlider_Mobile_Handle_Width) * .5 + .125rem);padding-right:calc(var(--fdSlider_Mobile_Handle_Width) * .5 + .125rem)}.fd-slider__inner{-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:0;padding:0;position:relative}.fd-slider__inner:after,.fd-slider__inner:before{-webkit-box-sizing:inherit;-webkit-box-sizing:border-box;-webkit-transform:translateY(-50%);background-color:var(--fdSlider_Endpoint_Active_Background);border:0;border:var(--fdSlider_Endpoint_Active_Border);border-radius:50%;box-sizing:inherit;box-sizing:border-box;color:var(--sapTextColor);content:\"\";font-family:var(--sapFontFamily);font-size:inherit;font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Endpoint_Size);left:-.7rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:var(--fdSlider_Endpoint_Size)}.fd-slider__inner:after:after,.fd-slider__inner:after:before,.fd-slider__inner:before:after,.fd-slider__inner:before:before{box-sizing:inherit;font-size:inherit}.fd-slider__inner:after{left:auto;right:-.7rem}.fd-slider:not(.fd-slider--vertical):not(.fd-slider--range) .fd-slider__inner[dir=rtl]:before,.fd-slider__inner:after,[dir=rtl] .fd-slider:not(.fd-slider--vertical):not(.fd-slider--range) .fd-slider__inner:before{background-color:var(--fdSlider_Endpoint_Background);border:var(--fdSlider_Endpoint_Border)}.fd-slider:not(.fd-slider--vertical):not(.fd-slider--range) .fd-slider__inner[dir=rtl]:after,[dir=rtl] .fd-slider:not(.fd-slider--vertical):not(.fd-slider--range) .fd-slider__inner:after{background-color:var(--fdSlider_Endpoint_Active_Background);border:var(--fdSlider_Endpoint_Active_Border)}.fd-slider__track{-webkit-box-sizing:border-box;-webkit-box-shadow:inset 0 0 0 var(--fdSlider_Track_Border_Width) var(--fdSlider_Track_Border_Color);background-color:var(--fdSlider_Track_Background);border:0;border-radius:var(--fdSlider_Track_BorderRadius);box-shadow:inset 0 0 0 var(--fdSlider_Track_Border_Width) var(--fdSlider_Track_Border_Color);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Track_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:100%;z-index:1}.fd-slider__track:after,.fd-slider__track:before{box-sizing:inherit;font-size:inherit}.fd-slider__track-range{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--fdSlider_Track_Active_Box_Shadow);background-color:var(--fdSlider_Track_Active_Background);border:0;border:.0625rem solid var(--fdSlider_Track_Active_Border);border-radius:.25rem;box-shadow:var(--fdSlider_Track_Active_Box_Shadow);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__track-range:after,.fd-slider__track-range:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick-wrapper{-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:0;padding:0;position:absolute;top:calc((var(--fdSlider_Track_Height) - var(--fdSlider_Tick_Height)) / 2);width:100%;z-index:2}.fd-slider__tick-wrapper:after,.fd-slider__tick-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-slider__ticks{-webkit-box-sizing:border-box;-webkit-box-pack:justify;-ms-flex-pack:justify;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;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-slider__ticks:after,.fd-slider__ticks:before{box-sizing:inherit;font-size:inherit}.fd-slider__labels{-webkit-box-sizing:border-box;-webkit-box-pack:justify;-ms-flex-pack:justify;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;height:1rem;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;top:.5rem}.fd-slider__labels:after,.fd-slider__labels:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick{-webkit-box-sizing:border-box;border:0;border-left:.0625rem solid var(--fdSlider_Tick_Background);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Tick_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__tick:after,.fd-slider__tick:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick--in-range{border-color:var(--fdSlider_Active_Tick_Background)}.fd-slider__label{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:0}.fd-slider__label:after,.fd-slider__label:before{box-sizing:inherit;font-size:inherit}.fd-slider__handle{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-transform:translate(-50%,-50%);align-items:center;background-color:var(--fdSlider_Handle_Background);border:0;border:var(--fdSlider_Handle_Border);border-radius:var(--fdSlider_Handle_Border_Radius);box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Handle_Height);justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--fdSlider_Handle_Width);z-index:3}.fd-slider__handle:after,.fd-slider__handle:before{box-sizing:inherit;font-size:inherit}.fd-slider__handle:before{-webkit-transform:translate(-50%,-50%);content:\"\";height:var(--fdSlider_Handle_Active_Height);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--fdSlider_Handle_Active_Width)}.fd-slider__handle:after{color:var(--sapContent_Selected_ForegroundColor);content:\"\\e29c\";display:var(--fdSlider_Handle_Icon_Display);font-family:SAP-icons;font-size:.875rem;line-height:1}.fd-slider__handle.is-focus,.fd-slider__handle:focus{background-color:var(--fdSlider_Focus_Handle_Background);border:var(--fdSlider_Focus_Handle_Border);outline:none;z-index:5}.fd-slider__handle.is-focus:after,.fd-slider__handle:focus:after{display:none}.fd-slider__handle.is-hover,.fd-slider__handle:hover{background-color:var(--fdSlider_Hover_Handle_Background);border:var(--fdSlider_Hover_Handle_Border);border-color:var(--fdSlider_Handle_Border_Hover_Color)}.fd-slider__handle.is-hover.is-focus,.fd-slider__handle.is-hover:focus,.fd-slider__handle:hover.is-focus,.fd-slider__handle:hover:focus{background-color:var(--fdSlider_Focus_Handle_Background);border:var(--fdSlider_Focus_Handle_Border);outline:none;z-index:5}.fd-slider__handle.is-hover.is-focus:after,.fd-slider__handle.is-hover:focus:after,.fd-slider__handle:hover.is-focus:after,.fd-slider__handle:hover:focus:after{display:none}.fd-slider__handle.is-active,.fd-slider__handle:active{background-color:var(--fdSlider_Active_Handle_Background);border:var(--fdSlider_Active_Handle_Border)}.fd-slider__handle.is-active.is-focus,.fd-slider__handle.is-active:focus,.fd-slider__handle:active.is-focus,.fd-slider__handle:active:focus{background-color:var(--fdSlider_Focus_Handle_Background);border:var(--fdSlider_Focus_Handle_Border);outline:none;z-index:5}.fd-slider__handle.is-active.is-focus:after,.fd-slider__handle.is-active:focus:after,.fd-slider__handle:active.is-focus:after,.fd-slider__handle:active:focus:after{display:none}.fd-slider__track-focus-range{-webkit-box-sizing:border-box;-webkit-transform:translateY(-50%);border:0;border-radius:var(--fdSlider_Range_Track_Border_Radius);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:calc(var(--fdSlider_Handle_Height) + .5rem);left:0;line-height:var(--sapContent_LineHeight);margin:0;margin:0 calc(var(--fdSlider_Handle_Height) * -1 / 1.1);padding:0;position:absolute;right:0;top:50%;transform:translateY(-50%)}.fd-slider__track-focus-range:after,.fd-slider__track-focus-range:before{box-sizing:inherit;font-size:inherit}.fd-slider__track-focus-range.is-focus,.fd-slider__track-focus-range:focus{outline:var(--fdSlider_Focus_Range_Outline);z-index:5}.fd-slider--range .fd-slider__inner:after,.fd-slider--range .fd-slider__inner:before{background-color:var(--fdSlider_Endpoint_Background);border:var(--fdSlider_Endpoint_Border)}.fd-slider--range .fd-slider__inner .fd-slider__handle{background-color:var(--fdSlider_Range_Handle_Background);border:var(--fdSlider_Range_Handle_Border)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-hover,.fd-slider--range .fd-slider__inner .fd-slider__handle:hover{background-color:var(--fdSlider_Range_Hover_Handle_Background);border-color:var(--fdSlider_Range_Hover_Handle_Border_Color)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-active,.fd-slider--range .fd-slider__inner .fd-slider__handle:active{background-color:var(--fdSlider_Range_Active_Handle_Background);border-color:var(--fdSlider_Range_Active_Handle_Border_Color)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-active:after,.fd-slider--range .fd-slider__inner .fd-slider__handle:active:after{display:var(--fdSlider_Focus_Handle_Display)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-focus,.fd-slider--range .fd-slider__inner .fd-slider__handle:focus{background-color:var(--fdSlider_Range_Focus_Handle_Background);border:var(--fdSlider_Range_Focus_Handle_Border);z-index:5}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-focus:after,.fd-slider--range .fd-slider__inner .fd-slider__handle:focus:after{display:var(--fdSlider_Focus_Handle_Display)}.fd-slider--vertical{height:100%}.fd-slider--vertical .fd-slider__inner{height:100%;width:var(--fdSlider_Track_Height)}.fd-slider--vertical .fd-slider__inner:after,.fd-slider--vertical .fd-slider__inner:before{-webkit-transform:translateX(-50%);left:50%;right:auto;top:auto;transform:translate(-50%)}.fd-slider--vertical .fd-slider__inner:before{bottom:-.7rem}.fd-slider--vertical .fd-slider__inner:after{top:-.7rem}.fd-slider--vertical .fd-slider__track{height:100%;width:var(--fdSlider_Track_Height)}.fd-slider--vertical .fd-slider__track-range{bottom:0;position:absolute;width:100%}.fd-slider--vertical .fd-slider__handle{-webkit-transform:translate(-50%,50%);bottom:0;height:var(--fdSlider_Handle_Width);left:50%;top:auto;transform:translate(-50%,50%);width:var(--fdSlider_Handle_Height)}.fd-slider--vertical .fd-slider__handle:after{transform:rotate(90deg)}.fd-slider--vertical .fd-slider__tick-wrapper{height:100%;left:calc((var(--fdSlider_Track_Height) - var(--fdSlider_Tick_Height)) / 2);right:calc((var(--fdSlider_Track_Height) - var(--fdSlider_Tick_Height)) / 2);top:0}.fd-slider--vertical .fd-slider__ticks{flex-direction:column-reverse;height:100%}.fd-slider--vertical .fd-slider__tick{border-left:none;border-top-style:solid;border-top-width:.0625rem;height:0;width:var(--fdSlider_Tick_Height)}.fd-slider--vertical .fd-slider__labels{flex-direction:column-reverse;height:100%;left:calc(var(--fdSlider_Handle_Width) * .5 + .125rem);position:absolute;top:-.55rem}.fd-slider--vertical .fd-slider__labels[dir=rtl],[dir=rtl] .fd-slider--vertical .fd-slider__labels{left:auto;right:calc(var(--fdSlider_Handle_Width) * .5 + .125rem)}.fd-slider--vertical .fd-slider__label{height:.0625rem;width:auto}.fd-slider--vertical.fd-slider--range .fd-slider__track-range{left:0}.fd-slider--vertical.fd-slider--range .fd-slider__track-focus-range{-webkit-transform:translateX(-50%);height:auto;inset:0 auto 0 50%;margin:calc(var(--fdSlider_Handle_Height) * -1 / 1.1) 0;transform:translate(-50%);width:calc(var(--fdSlider_Handle_Height) + .5rem)}/*!\n * Fundamental Library Styles v0.32.0-rc.7\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-input{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--sapField_Shadow);-webkit-appearance:none;appearance:none;background:var(--sapField_BackgroundStyle, var(--sapField_BackgroundStyle));background-color:var(--sapField_Background, var(--sapField_Background));border:0;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-radius:var(--sapField_BorderCornerRadius);box-shadow:var(--sapField_Shadow);box-sizing:border-box;color:var(--sapTextColor);color:var(--sapField_TextColor);cursor:text;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--sapElement_Height);line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdInput_Field_Margin, .25rem 0);min-height:var(--sapElement_Height);min-width:var(2.75rem, 2.75rem);outline:none;overflow:hidden;padding:0;padding:var(--fdInput_Field_Padding, 0 .625rem);text-overflow:ellipsis;text-shadow:var(--fdInput_Text_Shadow);white-space:nowrap;width:100%;z-index:1}.fd-input:after,.fd-input:before{box-sizing:inherit;font-size:inherit}.fd-input::placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input[dir=rtl]::placeholder,[dir=rtl] .fd-input::placeholder{text-indent:.125rem}.fd-input::selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input::-ms-clear{display:none}.fd-input.is-hover,.fd-input:hover{-webkit-box-shadow:var(--fdInput_Box_Shadow_Hover);background:var(--sapField_Hover_BackgroundStyle, var(--sapField_Hover_BackgroundStyle));background-color:var(--sapField_Hover_Background, var(--sapField_Hover_Background));border-color:var(--sapField_Hover_BorderColor);box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-input.is-focus,.fd-input:focus{-webkit-box-shadow:none;background:var(--sapField_Focus_Background, var(--sapField_Focus_Background));box-shadow:none;outline-color:var(--fdInput_Outline_Color);outline-offset:var(--fdInput_Outline_Offset);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-input[type=search]::-webkit-search-cancel-button,.fd-input[type=search]::-webkit-search-decoration,.fd-input[type=search]::-webkit-search-results-button,.fd-input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}.fd-input[aria-expanded=false]{z-index:0}.fd-input.is-expanded,.fd-input[aria-expanded=true]{z-index:4}.fd-input[class*=-compact],.fd-input[class*=-condensed],[class*=-compact] .fd-input:not([class*=-cozy]),[class*=-condensed] .fd-input:not([class*=-cozy]){box-sizing:border-box;height:var(--sapElement_Compact_Height);margin:var(--fdInput_Field_Compact_Margin, .1875rem 0);min-height:var(--sapElement_Compact_Height);min-width:var(--fdInput_Field_Compact_Min_Width, 2rem);padding:var(--fdInput_Field_Compact_Padding, 0 .5rem)}.fd-input--no-number-spinner{-moz-appearance:textfield}.fd-input--no-number-spinner::-webkit-inner-spin-button,.fd-input--no-number-spinner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-input.right-align{text-align:right}.fd-input.is-success{-webkit-box-shadow:var(--sapField_SuccessShadow);background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapField_SuccessBackground);border:var(--sapField_SuccessColor) var(--sapField_SuccessBorderWidth) var(--sapField_SuccessBorderStyle);box-shadow:var(--sapField_SuccessShadow)}.fd-input.is-success.is-hover,.fd-input.is-success:hover{-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);background-color:var(--fdInput_Success_Background_Color_Hover);border-color:var(--sapField_SuccessColor);box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-input.is-success.is-focus,.fd-input.is-success:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Success_Outline_Color);z-index:5}.fd-input.is-success.is-focus.is-hover,.fd-input.is-success.is-focus:hover,.fd-input.is-success:focus.is-hover,.fd-input.is-success:focus:hover{box-shadow:none}.fd-input.is-success.is-expanded,.fd-input.is-success[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Success_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-error{-webkit-box-shadow:var(--sapField_InvalidShadow);background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapField_InvalidBackground);border:var(--sapField_InvalidColor) var(--sapField_InvalidBorderWidth) var(--sapField_InvalidBorderStyle);box-shadow:var(--sapField_InvalidShadow)}.fd-input.is-error.is-hover,.fd-input.is-error:hover{-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);background-color:var(--fdInput_Error_Background_Color_Hover);border-color:var(--sapField_InvalidColor);box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-input.is-error.is-focus,.fd-input.is-error:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Error_Outline_Color);z-index:5}.fd-input.is-error.is-focus.is-hover,.fd-input.is-error.is-focus:hover,.fd-input.is-error:focus.is-hover,.fd-input.is-error:focus:hover{box-shadow:none}.fd-input.is-error.is-expanded,.fd-input.is-error[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Error_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-warning{-webkit-box-shadow:var(--sapField_WarningShadow);background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle);box-shadow:var(--sapField_WarningShadow)}.fd-input.is-warning.is-hover,.fd-input.is-warning:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-warning.is-focus.is-hover,.fd-input.is-warning.is-focus:hover,.fd-input.is-warning:focus.is-hover,.fd-input.is-warning:focus:hover{box-shadow:none}.fd-input.is-warning.is-expanded,.fd-input.is-warning[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Warning_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-alert{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-alert.is-hover,.fd-input.is-alert:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-alert.is-focus.is-hover,.fd-input.is-alert.is-focus:hover,.fd-input.is-alert:focus.is-hover,.fd-input.is-alert:focus:hover{box-shadow:none}.fd-input.is-alert.is-expanded,.fd-input.is-alert[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Warning_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-information{-webkit-box-shadow:var(--sapField_InformationShadow);background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapField_InformationBackground);border:var(--sapField_InformationColor) var(--sapField_InformationBorderWidth) var(--sapField_InformationBorderStyle);box-shadow:var(--sapField_InformationShadow)}.fd-input.is-information.is-hover,.fd-input.is-information:hover{-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);background-color:var(--fdInput_Information_Background_Color_Hover);border-color:var(--sapField_InformationColor);box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-input.is-information.is-focus,.fd-input.is-information:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Information_Outline_Color);z-index:5}.fd-input.is-information.is-focus.is-hover,.fd-input.is-information.is-focus:hover,.fd-input.is-information:focus.is-hover,.fd-input.is-information:focus:hover{box-shadow:none}.fd-input.is-information.is-expanded,.fd-input.is-information[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Information_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-alert,.fd-input.is-error,.fd-input.is-warning{font-style:var(--fdInput_State_Text_Style);font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::placeholder,.fd-input.is-error::placeholder,.fd-input.is-warning::placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus,.fd-input.is-error.is-focus,.fd-input.is-error:focus,.fd-input.is-information.is-focus,.fd-input.is-information:focus,.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{outline-offset:var(--fdInput_Outline_Offset_States);z-index:5}.fd-input.is-error::placeholder{color:var(--sapField_TextColor)}.fd-input.is-disabled,.fd-input:disabled,.fd-input[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-input.is-disabled::placeholder,.fd-input:disabled::placeholder,.fd-input[aria-disabled=true]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly,.fd-input[aria-readonly=true],.fd-input[readonly]{-webkit-box-shadow:none;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);box-shadow:none}.fd-input.is-readonly::placeholder,.fd-input[aria-readonly=true]::placeholder,.fd-input[readonly]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly.is-focus,.fd-input.is-readonly.is-hover,.fd-input.is-readonly:focus,.fd-input.is-readonly:hover,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true].is-hover,.fd-input[aria-readonly=true]:focus,.fd-input[aria-readonly=true]:hover,.fd-input[readonly].is-focus,.fd-input[readonly].is-hover,.fd-input[readonly]:focus,.fd-input[readonly]:hover{-webkit-box-shadow:none;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);box-shadow:none}.fd-input.is-readonly.is-focus,.fd-input.is-readonly:focus,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true]:focus,.fd-input[readonly].is-focus,.fd-input[readonly]:focus{z-index:5}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-popover--slider{display:block!important}.fd-popover__body.fd-slider--tooltip-popover{top:-7px!important;overflow:hidden}.fd-popover__body.fd-slider--tooltip-popover .fd-slider--tooltip{padding:.25rem;min-width:2rem;text-align:center;height:1.375rem;line-height:1;direction:ltr;box-sizing:border-box;margin:0!important;border:0;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);font-size:.875rem;font-size:var(--sapFontSize)}.fd-slider{display:block}.fd-slider.fd-slider--with-labels{padding-bottom:2rem}.fd-slider__tick-wrapper .fd-slider__label,.fd-slider__tick-wrapper .fd-slider__tick{position:absolute}.fd-slider__ticks{height:var(--fdSlider_Tick_Height)}.fd-slider__track .fd-slider__handle:focus{z-index:2;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.fd-slider__track .fd-popover-custom{display:none}.fd-slider__labels .fd-slider__label{white-space:nowrap}.fd-slider__alternative-tick-width .fd-slider__tick{width:1px}[dir=rtl] .fd-slider__handle{transform:translate(50%,-50%)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: SliderPositionDirective, selector: "[fd-slider-position]", inputs: ["position", "vertical"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: i5.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "directive", type: i5.PopoverTriggerDirective, selector: "[fdPopoverTrigger], [fd-popover-trigger]", inputs: ["fdPopoverTrigger"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: OnlyDigitsDirective, selector: "[fdkOnlyDigits]", inputs: ["decimal", "decimalSeparator"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
751
|
+
], viewQueries: [{ propertyName: "trackEl", first: true, predicate: ["track"], descendants: true, read: ElementRef, static: true }, { propertyName: "handle", first: true, predicate: ["handle"], descendants: true, read: ElementRef }, { propertyName: "rangeHandle1", first: true, predicate: ["rangeHandle1"], descendants: true, read: ElementRef }, { propertyName: "rangeHandle2", first: true, predicate: ["rangeHandle2"], descendants: true, read: ElementRef }, { propertyName: "_rangeGroupHandle", first: true, predicate: ["rangeGroupHandle"], descendants: true, read: ElementRef }, { propertyName: "_popovers", predicate: PopoverComponent, descendants: true }, { propertyName: "_sliderTooltipWrappers", predicate: ["sliderTooltipWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"fd-slider__inner\">\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeMode : singleMode\"></ng-container>\n\n <div class=\"fd-slider__track\" (click)=\"onTrackClick($event)\" #track>\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeModeTrack : singleModeTrack\"></ng-container>\n </div>\n\n <div class=\"fd-slider__tick-wrapper\">\n <div class=\"fd-slider__ticks\" (click)=\"onTrackClick($event)\">\n <ng-container *ngIf=\"showTicks\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i\">\n <div\n class=\"fd-slider__tick\"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"tick.position || 0\"\n [class.fd-slider__tick--in-range]=\"\n !hideProgressBar &&\n (_isRange\n ? tick.value >= _position[0] && tick.value <= _position[1]\n : tick.value <= _position)\n \"\n ></div>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"fd-slider__labels\" *ngIf=\"showTicks && showTicksLabels\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i; last as last; first as first\">\n <div\n *ngIf=\"first || last || i % tickmarksBetweenLabels === 0\"\n class=\"fd-slider__label\"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"tick.position || 0\"\n >\n {{ tick.label }}\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #singleModeTrack>\n <div\n *ngIf=\"!hideProgressBar\"\n class=\"fd-slider__track-range\"\n [style.height.%]=\"vertical ? _progress : null\"\n [style.width.%]=\"vertical ? null : _progress\"\n ></div>\n</ng-template>\n\n<ng-template #rangeModeTrack>\n <div\n *ngIf=\"!hideProgressBar\"\n class=\"fd-slider__track-range\"\n [style.height.%]=\"vertical ? _rangeProgress : null\"\n [style.width.%]=\"vertical ? null : _rangeProgress\"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"_handle1Position < _handle2Position ? _handle1Position : _handle2Position\"\n >\n <div\n class=\"fd-slider__track-focus-range\"\n (mousedown)=\"onHandleClick($event, true)\"\n (keydown)=\"onKeyDown($event, _handles.Both)\"\n tabindex=\"0\"\n #rangeGroupHandle\n ></div>\n </div>\n</ng-template>\n\n<ng-template #singleMode>\n <div\n #handle\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || ('coreSlider.singleMinMaxDetails' | fdTranslate : { min: minValue, max: maxValue })\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? singleSliderPopover : null\"\n [attr.aria-valuemin]=\"'coreSlider.singleValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.singleValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate : { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate : { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"_progress\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (focus)=\"_handleFocused$.next(true)\"\n (blur)=\"_handleFocused$.next(false)\"\n (keydown)=\"onKeyDown($event)\"\n ></div>\n\n <fd-popover\n #singleSliderPopover\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"handle\"\n [disabled]=\"!tooltipMode\"\n class=\"fd-popover--slider\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.SINGLE_SLIDER, position: _position }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #rangeMode>\n <div\n #rangeHandle1\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || ('coreSlider.multipleHandle1MinMaxDetails' | fdTranslate : { min: minValue, max: maxValue })\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover1 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle1ValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle1ValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"_handle1Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event, _handles.First)\"\n (focus)=\"_rangeHandle1Focused$.next(true)\"\n (blur)=\"_rangeHandle1Focused$.next(false)\"\n ></div>\n\n <div\n #rangeHandle2\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || ('coreSlider.multipleHandle2MinMaxDetails' | fdTranslate : { min: minValue, max: maxValue })\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover2 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle2ValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle2ValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"_handle2Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event, _handles.Second)\"\n (focus)=\"_rangeHandle2Focused$.next(true)\"\n (blur)=\"_rangeHandle2Focused$.next(false)\"\n ></div>\n\n <fd-popover\n #rangeSliderPopover1\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle1\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER1, position: _handle1Value }\n \"\n ></ng-container>\n </fd-popover>\n\n <fd-popover\n #rangeSliderPopover2\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle2\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER2, position: _handle2Value }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #popoverInner let-target=\"target\" let-position=\"position\">\n <div\n #sliderTooltipWrapper\n class=\"fd-slider--tooltip-wrapper\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n (mouseenter)=\"_popoverInputFieldHovered$.next(true)\"\n (mouseleave)=\"_popoverInputFieldHovered$.next(false)\"\n >\n <div *ngIf=\"(customValues && customValues.length > 0) || tooltipMode === 'readonly'\" class=\"fd-slider--tooltip\">\n {{ customValues && customValues.length > 0 ? customValues[position].label : _popoverValueRef[target] }}\n </div>\n\n <input\n #popoverInputField\n tabindex=\"-1\"\n type=\"text\"\n [disabled]=\"disabled\"\n fdkOnlyDigits\n [decimal]=\"true\"\n [style.width.ch]=\"('' + _popoverValueRef[target]).length + 2\"\n class=\"fd-input fd-slider--tooltip {{ _popoverInputFieldClass }}\"\n *ngIf=\"customValues?.length === 0 && tooltipMode === 'editable'\"\n [(ngModel)]=\"_popoverValueRef[target]\"\n (blur)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (keydown.enter)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (focus)=\"_popoverInputFieldFocused$.next(true)\"\n (blur)=\"_popoverInputFieldFocused$.next(false)\"\n />\n </div>\n</ng-template>\n", styles: [".fd-slider{-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:0;max-width:100%;min-width:4rem;padding:0;padding:1rem calc(var(--fdSlider_Handle_Width) * .5 + .125rem);position:relative}.fd-slider:after,.fd-slider:before{box-sizing:inherit;font-size:inherit}.fd-slider.is-disabled,.fd-slider:disabled,.fd-slider[aria-disabled=true]{cursor:not-allowed}.fd-slider--lg{--fdSlider_Handle_Width:var(--fdSlider_Mobile_Handle_Width);--fdSlider_Handle_Height:var(--fdSlider_Mobile_Handle_Height);--fdSlider_Handle_Active_Width:var(--fdSlider_Mobile_Handle_Active_Size);--fdSlider_Handle_Active_Height:var(--fdSlider_Mobile_Handle_Active_Size);padding-left:calc(var(--fdSlider_Mobile_Handle_Width) * .5 + .125rem);padding-right:calc(var(--fdSlider_Mobile_Handle_Width) * .5 + .125rem)}.fd-slider__inner{-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:0;padding:0;position:relative}.fd-slider__inner:after,.fd-slider__inner:before{-webkit-box-sizing:inherit;-webkit-box-sizing:border-box;-webkit-transform:translateY(-50%);background-color:var(--fdSlider_Endpoint_Active_Background);border:0;border:var(--fdSlider_Endpoint_Active_Border);border-radius:50%;box-sizing:inherit;box-sizing:border-box;color:var(--sapTextColor);content:\"\";font-family:var(--sapFontFamily);font-size:inherit;font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Endpoint_Size);left:-.7rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:var(--fdSlider_Endpoint_Size)}.fd-slider__inner:after:after,.fd-slider__inner:after:before,.fd-slider__inner:before:after,.fd-slider__inner:before:before{box-sizing:inherit;font-size:inherit}.fd-slider__inner:after{left:auto;right:-.7rem}.fd-slider:not(.fd-slider--vertical):not(.fd-slider--range) .fd-slider__inner[dir=rtl]:before,.fd-slider__inner:after,[dir=rtl] .fd-slider:not(.fd-slider--vertical):not(.fd-slider--range) .fd-slider__inner:before{background-color:var(--fdSlider_Endpoint_Background);border:var(--fdSlider_Endpoint_Border)}.fd-slider:not(.fd-slider--vertical):not(.fd-slider--range) .fd-slider__inner[dir=rtl]:after,[dir=rtl] .fd-slider:not(.fd-slider--vertical):not(.fd-slider--range) .fd-slider__inner:after{background-color:var(--fdSlider_Endpoint_Active_Background);border:var(--fdSlider_Endpoint_Active_Border)}.fd-slider__track{-webkit-box-sizing:border-box;-webkit-box-shadow:inset 0 0 0 var(--fdSlider_Track_Border_Width) var(--fdSlider_Track_Border_Color);background-color:var(--fdSlider_Track_Background);border:0;border-radius:var(--fdSlider_Track_BorderRadius);box-shadow:inset 0 0 0 var(--fdSlider_Track_Border_Width) var(--fdSlider_Track_Border_Color);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Track_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:100%;z-index:1}.fd-slider__track:after,.fd-slider__track:before{box-sizing:inherit;font-size:inherit}.fd-slider__track-range{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--fdSlider_Track_Active_Box_Shadow);background-color:var(--fdSlider_Track_Active_Background);border:0;border:.0625rem solid var(--fdSlider_Track_Active_Border);border-radius:.25rem;box-shadow:var(--fdSlider_Track_Active_Box_Shadow);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__track-range:after,.fd-slider__track-range:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick-wrapper{-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:0;padding:0;position:absolute;top:calc((var(--fdSlider_Track_Height) - var(--fdSlider_Tick_Height)) / 2);width:100%;z-index:2}.fd-slider__tick-wrapper:after,.fd-slider__tick-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-slider__ticks{-webkit-box-sizing:border-box;-webkit-box-pack:justify;-ms-flex-pack:justify;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;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-slider__ticks:after,.fd-slider__ticks:before{box-sizing:inherit;font-size:inherit}.fd-slider__labels{-webkit-box-sizing:border-box;-webkit-box-pack:justify;-ms-flex-pack:justify;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;height:1rem;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;top:.5rem}.fd-slider__labels:after,.fd-slider__labels:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick{-webkit-box-sizing:border-box;border:0;border-left:.0625rem solid var(--fdSlider_Tick_Background);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Tick_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__tick:after,.fd-slider__tick:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick--in-range{border-color:var(--fdSlider_Active_Tick_Background)}.fd-slider__label{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:0}.fd-slider__label:after,.fd-slider__label:before{box-sizing:inherit;font-size:inherit}.fd-slider__handle{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-transform:translate(-50%,-50%);align-items:center;background-color:var(--fdSlider_Handle_Background);border:0;border:var(--fdSlider_Handle_Border);border-radius:var(--fdSlider_Handle_Border_Radius);box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Handle_Height);justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--fdSlider_Handle_Width);z-index:3}.fd-slider__handle:after,.fd-slider__handle:before{box-sizing:inherit;font-size:inherit}.fd-slider__handle:before{-webkit-transform:translate(-50%,-50%);content:\"\";height:var(--fdSlider_Handle_Active_Height);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--fdSlider_Handle_Active_Width)}.fd-slider__handle:after{color:var(--sapContent_Selected_ForegroundColor);content:\"\\e29c\";display:var(--fdSlider_Handle_Icon_Display);font-family:SAP-icons;font-size:.875rem;line-height:1}.fd-slider__handle.is-focus,.fd-slider__handle:focus{background-color:var(--fdSlider_Focus_Handle_Background);border:var(--fdSlider_Focus_Handle_Border);outline:none;z-index:5}.fd-slider__handle.is-focus:after,.fd-slider__handle:focus:after{display:none}.fd-slider__handle.is-hover,.fd-slider__handle:hover{background-color:var(--fdSlider_Hover_Handle_Background);border:var(--fdSlider_Hover_Handle_Border);border-color:var(--fdSlider_Handle_Border_Hover_Color)}.fd-slider__handle.is-hover.is-focus,.fd-slider__handle.is-hover:focus,.fd-slider__handle:hover.is-focus,.fd-slider__handle:hover:focus{background-color:var(--fdSlider_Focus_Handle_Background);border:var(--fdSlider_Focus_Handle_Border);outline:none;z-index:5}.fd-slider__handle.is-hover.is-focus:after,.fd-slider__handle.is-hover:focus:after,.fd-slider__handle:hover.is-focus:after,.fd-slider__handle:hover:focus:after{display:none}.fd-slider__handle.is-active,.fd-slider__handle:active{background-color:var(--fdSlider_Active_Handle_Background);border:var(--fdSlider_Active_Handle_Border)}.fd-slider__handle.is-active.is-focus,.fd-slider__handle.is-active:focus,.fd-slider__handle:active.is-focus,.fd-slider__handle:active:focus{background-color:var(--fdSlider_Focus_Handle_Background);border:var(--fdSlider_Focus_Handle_Border);outline:none;z-index:5}.fd-slider__handle.is-active.is-focus:after,.fd-slider__handle.is-active:focus:after,.fd-slider__handle:active.is-focus:after,.fd-slider__handle:active:focus:after{display:none}.fd-slider__track-focus-range{-webkit-box-sizing:border-box;-webkit-transform:translateY(-50%);border:0;border-radius:var(--fdSlider_Range_Track_Border_Radius);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:calc(var(--fdSlider_Handle_Height) + .5rem);left:0;line-height:var(--sapContent_LineHeight);margin:0;margin:0 calc(var(--fdSlider_Handle_Height) * -1 / 1.1);padding:0;position:absolute;right:0;top:50%;transform:translateY(-50%)}.fd-slider__track-focus-range:after,.fd-slider__track-focus-range:before{box-sizing:inherit;font-size:inherit}.fd-slider__track-focus-range.is-focus,.fd-slider__track-focus-range:focus{outline:var(--fdSlider_Focus_Range_Outline);z-index:5}.fd-slider--range .fd-slider__inner:after,.fd-slider--range .fd-slider__inner:before{background-color:var(--fdSlider_Endpoint_Background);border:var(--fdSlider_Endpoint_Border)}.fd-slider--range .fd-slider__inner .fd-slider__handle{background-color:var(--fdSlider_Range_Handle_Background);border:var(--fdSlider_Range_Handle_Border)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-hover,.fd-slider--range .fd-slider__inner .fd-slider__handle:hover{background-color:var(--fdSlider_Range_Hover_Handle_Background);border-color:var(--fdSlider_Range_Hover_Handle_Border_Color)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-active,.fd-slider--range .fd-slider__inner .fd-slider__handle:active{background-color:var(--fdSlider_Range_Active_Handle_Background);border-color:var(--fdSlider_Range_Active_Handle_Border_Color)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-active:after,.fd-slider--range .fd-slider__inner .fd-slider__handle:active:after{display:var(--fdSlider_Focus_Handle_Display)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-focus,.fd-slider--range .fd-slider__inner .fd-slider__handle:focus{background-color:var(--fdSlider_Range_Focus_Handle_Background);border:var(--fdSlider_Range_Focus_Handle_Border);z-index:5}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-focus:after,.fd-slider--range .fd-slider__inner .fd-slider__handle:focus:after{display:var(--fdSlider_Focus_Handle_Display)}.fd-slider--vertical{height:100%}.fd-slider--vertical .fd-slider__inner{height:100%;width:var(--fdSlider_Track_Height)}.fd-slider--vertical .fd-slider__inner:after,.fd-slider--vertical .fd-slider__inner:before{-webkit-transform:translateX(-50%);left:50%;right:auto;top:auto;transform:translate(-50%)}.fd-slider--vertical .fd-slider__inner:before{bottom:-.7rem}.fd-slider--vertical .fd-slider__inner:after{top:-.7rem}.fd-slider--vertical .fd-slider__track{height:100%;width:var(--fdSlider_Track_Height)}.fd-slider--vertical .fd-slider__track-range{bottom:0;position:absolute;width:100%}.fd-slider--vertical .fd-slider__handle{-webkit-transform:translate(-50%,50%);bottom:0;height:var(--fdSlider_Handle_Width);left:50%;top:auto;transform:translate(-50%,50%);width:var(--fdSlider_Handle_Height)}.fd-slider--vertical .fd-slider__handle:after{transform:rotate(90deg)}.fd-slider--vertical .fd-slider__tick-wrapper{height:100%;left:calc((var(--fdSlider_Track_Height) - var(--fdSlider_Tick_Height)) / 2);right:calc((var(--fdSlider_Track_Height) - var(--fdSlider_Tick_Height)) / 2);top:0}.fd-slider--vertical .fd-slider__ticks{flex-direction:column-reverse;height:100%}.fd-slider--vertical .fd-slider__tick{border-left:none;border-top-style:solid;border-top-width:.0625rem;height:0;width:var(--fdSlider_Tick_Height)}.fd-slider--vertical .fd-slider__labels{flex-direction:column-reverse;height:100%;left:calc(var(--fdSlider_Handle_Width) * .5 + .125rem);position:absolute;top:-.55rem}.fd-slider--vertical .fd-slider__labels[dir=rtl],[dir=rtl] .fd-slider--vertical .fd-slider__labels{left:auto;right:calc(var(--fdSlider_Handle_Width) * .5 + .125rem)}.fd-slider--vertical .fd-slider__label{height:.0625rem;width:auto}.fd-slider--vertical.fd-slider--range .fd-slider__track-range{left:0}.fd-slider--vertical.fd-slider--range .fd-slider__track-focus-range{-webkit-transform:translateX(-50%);height:auto;inset:0 auto 0 50%;margin:calc(var(--fdSlider_Handle_Height) * -1 / 1.1) 0;transform:translate(-50%);width:calc(var(--fdSlider_Handle_Height) + .5rem)}/*!\n * Fundamental Library Styles v0.32.0\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-input{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--sapField_Shadow);-webkit-appearance:none;appearance:none;background:var(--sapField_BackgroundStyle, var(--sapField_BackgroundStyle));background-color:var(--sapField_Background, var(--sapField_Background));border:0;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-radius:var(--sapField_BorderCornerRadius);box-shadow:var(--sapField_Shadow);box-sizing:border-box;color:var(--sapTextColor);color:var(--sapField_TextColor);cursor:text;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--sapElement_Height);line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdInput_Field_Margin, .25rem 0);min-height:var(--sapElement_Height);min-width:var(2.75rem, 2.75rem);outline:none;overflow:hidden;padding:0;padding:var(--fdInput_Field_Padding, 0 .625rem);text-overflow:ellipsis;text-shadow:var(--fdInput_Text_Shadow);white-space:nowrap;width:100%;z-index:1}.fd-input:after,.fd-input:before{box-sizing:inherit;font-size:inherit}.fd-input::placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input[dir=rtl]::placeholder,[dir=rtl] .fd-input::placeholder{text-indent:.125rem}.fd-input::selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input::-ms-clear{display:none}.fd-input.is-hover,.fd-input:hover{-webkit-box-shadow:var(--fdInput_Box_Shadow_Hover);background:var(--sapField_Hover_BackgroundStyle, var(--sapField_Hover_BackgroundStyle));background-color:var(--sapField_Hover_Background, var(--sapField_Hover_Background));border-color:var(--sapField_Hover_BorderColor);box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-input.is-focus,.fd-input:focus{-webkit-box-shadow:none;background:var(--sapField_Focus_Background, var(--sapField_Focus_Background));box-shadow:none;outline-color:var(--fdInput_Outline_Color);outline-offset:var(--fdInput_Outline_Offset);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-input[type=search]::-webkit-search-cancel-button,.fd-input[type=search]::-webkit-search-decoration,.fd-input[type=search]::-webkit-search-results-button,.fd-input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}.fd-input[aria-expanded=false]{z-index:0}.fd-input.is-expanded,.fd-input[aria-expanded=true]{z-index:4}.fd-input[class*=-compact],.fd-input[class*=-condensed],[class*=-compact] .fd-input:not([class*=-cozy]),[class*=-condensed] .fd-input:not([class*=-cozy]){box-sizing:border-box;height:var(--sapElement_Compact_Height);margin:var(--fdInput_Field_Compact_Margin, .1875rem 0);min-height:var(--sapElement_Compact_Height);min-width:var(--fdInput_Field_Compact_Min_Width, 2rem);padding:var(--fdInput_Field_Compact_Padding, 0 .5rem)}.fd-input--no-number-spinner{-moz-appearance:textfield}.fd-input--no-number-spinner::-webkit-inner-spin-button,.fd-input--no-number-spinner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-input.right-align{text-align:right}.fd-input.is-success{-webkit-box-shadow:var(--sapField_SuccessShadow);background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapField_SuccessBackground);border:var(--sapField_SuccessColor) var(--sapField_SuccessBorderWidth) var(--sapField_SuccessBorderStyle);box-shadow:var(--sapField_SuccessShadow)}.fd-input.is-success.is-hover,.fd-input.is-success:hover{-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);background-color:var(--fdInput_Success_Background_Color_Hover);border-color:var(--sapField_SuccessColor);box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-input.is-success.is-focus,.fd-input.is-success:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Success_Outline_Color);z-index:5}.fd-input.is-success.is-focus.is-hover,.fd-input.is-success.is-focus:hover,.fd-input.is-success:focus.is-hover,.fd-input.is-success:focus:hover{box-shadow:none}.fd-input.is-success.is-expanded,.fd-input.is-success[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Success_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-error{-webkit-box-shadow:var(--sapField_InvalidShadow);background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapField_InvalidBackground);border:var(--sapField_InvalidColor) var(--sapField_InvalidBorderWidth) var(--sapField_InvalidBorderStyle);box-shadow:var(--sapField_InvalidShadow)}.fd-input.is-error.is-hover,.fd-input.is-error:hover{-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);background-color:var(--fdInput_Error_Background_Color_Hover);border-color:var(--sapField_InvalidColor);box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-input.is-error.is-focus,.fd-input.is-error:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Error_Outline_Color);z-index:5}.fd-input.is-error.is-focus.is-hover,.fd-input.is-error.is-focus:hover,.fd-input.is-error:focus.is-hover,.fd-input.is-error:focus:hover{box-shadow:none}.fd-input.is-error.is-expanded,.fd-input.is-error[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Error_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-warning{-webkit-box-shadow:var(--sapField_WarningShadow);background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle);box-shadow:var(--sapField_WarningShadow)}.fd-input.is-warning.is-hover,.fd-input.is-warning:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-warning.is-focus.is-hover,.fd-input.is-warning.is-focus:hover,.fd-input.is-warning:focus.is-hover,.fd-input.is-warning:focus:hover{box-shadow:none}.fd-input.is-warning.is-expanded,.fd-input.is-warning[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Warning_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-alert{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-alert.is-hover,.fd-input.is-alert:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-alert.is-focus.is-hover,.fd-input.is-alert.is-focus:hover,.fd-input.is-alert:focus.is-hover,.fd-input.is-alert:focus:hover{box-shadow:none}.fd-input.is-alert.is-expanded,.fd-input.is-alert[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Warning_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-information{-webkit-box-shadow:var(--sapField_InformationShadow);background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapField_InformationBackground);border:var(--sapField_InformationColor) var(--sapField_InformationBorderWidth) var(--sapField_InformationBorderStyle);box-shadow:var(--sapField_InformationShadow)}.fd-input.is-information.is-hover,.fd-input.is-information:hover{-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);background-color:var(--fdInput_Information_Background_Color_Hover);border-color:var(--sapField_InformationColor);box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-input.is-information.is-focus,.fd-input.is-information:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Information_Outline_Color);z-index:5}.fd-input.is-information.is-focus.is-hover,.fd-input.is-information.is-focus:hover,.fd-input.is-information:focus.is-hover,.fd-input.is-information:focus:hover{box-shadow:none}.fd-input.is-information.is-expanded,.fd-input.is-information[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Information_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-alert,.fd-input.is-error,.fd-input.is-warning{font-style:var(--fdInput_State_Text_Style);font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::placeholder,.fd-input.is-error::placeholder,.fd-input.is-warning::placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus,.fd-input.is-error.is-focus,.fd-input.is-error:focus,.fd-input.is-information.is-focus,.fd-input.is-information:focus,.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{outline-offset:var(--fdInput_Outline_Offset_States);z-index:5}.fd-input.is-error::placeholder{color:var(--sapField_TextColor)}.fd-input.is-disabled,.fd-input:disabled,.fd-input[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-input.is-disabled::placeholder,.fd-input:disabled::placeholder,.fd-input[aria-disabled=true]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly,.fd-input[aria-readonly=true],.fd-input[readonly]{-webkit-box-shadow:none;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);box-shadow:none}.fd-input.is-readonly::placeholder,.fd-input[aria-readonly=true]::placeholder,.fd-input[readonly]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly.is-focus,.fd-input.is-readonly.is-hover,.fd-input.is-readonly:focus,.fd-input.is-readonly:hover,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true].is-hover,.fd-input[aria-readonly=true]:focus,.fd-input[aria-readonly=true]:hover,.fd-input[readonly].is-focus,.fd-input[readonly].is-hover,.fd-input[readonly]:focus,.fd-input[readonly]:hover{-webkit-box-shadow:none;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);box-shadow:none}.fd-input.is-readonly.is-focus,.fd-input.is-readonly:focus,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true]:focus,.fd-input[readonly].is-focus,.fd-input[readonly]:focus{z-index:5}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-popover--slider{display:block!important}.fd-popover__body.fd-slider--tooltip-popover{top:-7px!important;overflow:hidden}.fd-popover__body.fd-slider--tooltip-popover .fd-slider--tooltip{padding:.25rem;min-width:2rem;text-align:center;height:1.375rem;line-height:1;direction:ltr;box-sizing:border-box;margin:0!important;border:0;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);font-size:.875rem;font-size:var(--sapFontSize)}.fd-slider{display:block}.fd-slider.fd-slider--with-labels{padding-bottom:2rem}.fd-slider__tick-wrapper .fd-slider__label,.fd-slider__tick-wrapper .fd-slider__tick{position:absolute}.fd-slider__ticks{height:var(--fdSlider_Tick_Height)}.fd-slider__track .fd-slider__handle:focus{z-index:2;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.fd-slider__track .fd-popover-custom{display:none}.fd-slider__labels .fd-slider__label{white-space:nowrap}.fd-slider__alternative-tick-width .fd-slider__tick{width:1px}[dir=rtl] .fd-slider__handle{transform:translate(50%,-50%)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: SliderPositionDirective, selector: "[fd-slider-position]", inputs: ["position", "vertical"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: i5.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "directive", type: i5.PopoverTriggerDirective, selector: "[fdPopoverTrigger], [fd-popover-trigger]", inputs: ["fdPopoverTrigger"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: OnlyDigitsDirective, selector: "[fdkOnlyDigits]", inputs: ["decimal", "decimalSeparator"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
752
752
|
}
|
|
753
753
|
__decorate([
|
|
754
754
|
applyCssClass,
|
|
@@ -781,7 +781,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
|
|
|
781
781
|
OnlyDigitsDirective,
|
|
782
782
|
AsyncPipe,
|
|
783
783
|
FdTranslatePipe
|
|
784
|
-
], template: "<div class=\"fd-slider__inner\">\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeMode : singleMode\"></ng-container>\n\n <div class=\"fd-slider__track\" (click)=\"onTrackClick($event)\" #track>\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeModeTrack : singleModeTrack\"></ng-container>\n </div>\n\n <div class=\"fd-slider__tick-wrapper\">\n <div class=\"fd-slider__ticks\" (click)=\"onTrackClick($event)\">\n <ng-container *ngIf=\"showTicks\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i\">\n <div\n class=\"fd-slider__tick\"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"tick.position || 0\"\n [class.fd-slider__tick--in-range]=\"\n !hideProgressBar &&\n (_isRange\n ? tick.value >= _position[0] && tick.value <= _position[1]\n : tick.value <= _position)\n \"\n ></div>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"fd-slider__labels\" *ngIf=\"showTicks && showTicksLabels\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i; last as last; first as first\">\n <div\n *ngIf=\"first || last || i % tickmarksBetweenLabels === 0\"\n class=\"fd-slider__label\"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"tick.position || 0\"\n >\n {{ tick.label }}\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #singleModeTrack>\n <div\n *ngIf=\"!hideProgressBar\"\n class=\"fd-slider__track-range\"\n [style.height.%]=\"vertical ? _progress : null\"\n [style.width.%]=\"vertical ? null : _progress\"\n ></div>\n</ng-template>\n\n<ng-template #rangeModeTrack>\n <div\n *ngIf=\"!hideProgressBar\"\n class=\"fd-slider__track-range\"\n [style.height.%]=\"vertical ? _rangeProgress : null\"\n [style.width.%]=\"vertical ? null : _rangeProgress\"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"_handle1Position < _handle2Position ? _handle1Position : _handle2Position\"\n >\n <div\n class=\"fd-slider__track-focus-range\"\n (mousedown)=\"onHandleClick($event, true)\"\n (keydown)=\"onKeyDown($event, _handles.Both)\"\n tabindex=\"0\"\n #rangeGroupHandle\n ></div>\n </div>\n</ng-template>\n\n<ng-template #singleMode>\n <div\n #handle\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || ('coreSlider.singleMinMaxDetails' | fdTranslate : { min: minValue, max: maxValue })\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? singleSliderPopover : null\"\n [attr.aria-valuemin]=\"'coreSlider.singleValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.singleValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate : { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate : { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"_progress\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (focus)=\"_handleFocused$.next(true)\"\n (blur)=\"_handleFocused$.next(false)\"\n (keydown)=\"onKeyDown($event)\"\n ></div>\n\n <fd-popover\n #singleSliderPopover\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"handle\"\n [disabled]=\"!tooltipMode\"\n class=\"fd-popover--slider\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.SINGLE_SLIDER, position: _position }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #rangeMode>\n <div\n #rangeHandle1\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || ('coreSlider.multipleHandle1MinMaxDetails' | fdTranslate : { min: minValue, max: maxValue })\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover1 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle1ValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle1ValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"_handle1Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event, _handles.First)\"\n (focus)=\"_rangeHandle1Focused$.next(true)\"\n (blur)=\"_rangeHandle1Focused$.next(false)\"\n ></div>\n\n <div\n #rangeHandle2\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || ('coreSlider.multipleHandle2MinMaxDetails' | fdTranslate : { min: minValue, max: maxValue })\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover2 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle2ValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle2ValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"_handle2Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event, _handles.Second)\"\n (focus)=\"_rangeHandle2Focused$.next(true)\"\n (blur)=\"_rangeHandle2Focused$.next(false)\"\n ></div>\n\n <fd-popover\n #rangeSliderPopover1\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle1\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER1, position: _handle1Value }\n \"\n ></ng-container>\n </fd-popover>\n\n <fd-popover\n #rangeSliderPopover2\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle2\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER2, position: _handle2Value }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #popoverInner let-target=\"target\" let-position=\"position\">\n <div\n #sliderTooltipWrapper\n class=\"fd-slider--tooltip-wrapper\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n (mouseenter)=\"_popoverInputFieldHovered$.next(true)\"\n (mouseleave)=\"_popoverInputFieldHovered$.next(false)\"\n >\n <div *ngIf=\"(customValues && customValues.length > 0) || tooltipMode === 'readonly'\" class=\"fd-slider--tooltip\">\n {{ customValues && customValues.length > 0 ? customValues[position].label : _popoverValueRef[target] }}\n </div>\n\n <input\n #popoverInputField\n tabindex=\"-1\"\n type=\"text\"\n [disabled]=\"disabled\"\n fdkOnlyDigits\n [decimal]=\"true\"\n [style.width.ch]=\"('' + _popoverValueRef[target]).length + 2\"\n class=\"fd-input fd-slider--tooltip {{ _popoverInputFieldClass }}\"\n *ngIf=\"customValues?.length === 0 && tooltipMode === 'editable'\"\n [(ngModel)]=\"_popoverValueRef[target]\"\n (blur)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (keydown.enter)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (focus)=\"_popoverInputFieldFocused$.next(true)\"\n (blur)=\"_popoverInputFieldFocused$.next(false)\"\n />\n </div>\n</ng-template>\n", styles: [".fd-slider{-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:0;max-width:100%;min-width:4rem;padding:0;padding:1rem calc(var(--fdSlider_Handle_Width) * .5 + .125rem);position:relative}.fd-slider:after,.fd-slider:before{box-sizing:inherit;font-size:inherit}.fd-slider.is-disabled,.fd-slider:disabled,.fd-slider[aria-disabled=true]{cursor:not-allowed}.fd-slider--lg{--fdSlider_Handle_Width:var(--fdSlider_Mobile_Handle_Width);--fdSlider_Handle_Height:var(--fdSlider_Mobile_Handle_Height);--fdSlider_Handle_Active_Width:var(--fdSlider_Mobile_Handle_Active_Size);--fdSlider_Handle_Active_Height:var(--fdSlider_Mobile_Handle_Active_Size);padding-left:calc(var(--fdSlider_Mobile_Handle_Width) * .5 + .125rem);padding-right:calc(var(--fdSlider_Mobile_Handle_Width) * .5 + .125rem)}.fd-slider__inner{-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:0;padding:0;position:relative}.fd-slider__inner:after,.fd-slider__inner:before{-webkit-box-sizing:inherit;-webkit-box-sizing:border-box;-webkit-transform:translateY(-50%);background-color:var(--fdSlider_Endpoint_Active_Background);border:0;border:var(--fdSlider_Endpoint_Active_Border);border-radius:50%;box-sizing:inherit;box-sizing:border-box;color:var(--sapTextColor);content:\"\";font-family:var(--sapFontFamily);font-size:inherit;font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Endpoint_Size);left:-.7rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:var(--fdSlider_Endpoint_Size)}.fd-slider__inner:after:after,.fd-slider__inner:after:before,.fd-slider__inner:before:after,.fd-slider__inner:before:before{box-sizing:inherit;font-size:inherit}.fd-slider__inner:after{left:auto;right:-.7rem}.fd-slider:not(.fd-slider--vertical):not(.fd-slider--range) .fd-slider__inner[dir=rtl]:before,.fd-slider__inner:after,[dir=rtl] .fd-slider:not(.fd-slider--vertical):not(.fd-slider--range) .fd-slider__inner:before{background-color:var(--fdSlider_Endpoint_Background);border:var(--fdSlider_Endpoint_Border)}.fd-slider:not(.fd-slider--vertical):not(.fd-slider--range) .fd-slider__inner[dir=rtl]:after,[dir=rtl] .fd-slider:not(.fd-slider--vertical):not(.fd-slider--range) .fd-slider__inner:after{background-color:var(--fdSlider_Endpoint_Active_Background);border:var(--fdSlider_Endpoint_Active_Border)}.fd-slider__track{-webkit-box-sizing:border-box;-webkit-box-shadow:inset 0 0 0 var(--fdSlider_Track_Border_Width) var(--fdSlider_Track_Border_Color);background-color:var(--fdSlider_Track_Background);border:0;border-radius:var(--fdSlider_Track_BorderRadius);box-shadow:inset 0 0 0 var(--fdSlider_Track_Border_Width) var(--fdSlider_Track_Border_Color);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Track_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:100%;z-index:1}.fd-slider__track:after,.fd-slider__track:before{box-sizing:inherit;font-size:inherit}.fd-slider__track-range{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--fdSlider_Track_Active_Box_Shadow);background-color:var(--fdSlider_Track_Active_Background);border:0;border:.0625rem solid var(--fdSlider_Track_Active_Border);border-radius:.25rem;box-shadow:var(--fdSlider_Track_Active_Box_Shadow);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__track-range:after,.fd-slider__track-range:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick-wrapper{-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:0;padding:0;position:absolute;top:calc((var(--fdSlider_Track_Height) - var(--fdSlider_Tick_Height)) / 2);width:100%;z-index:2}.fd-slider__tick-wrapper:after,.fd-slider__tick-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-slider__ticks{-webkit-box-sizing:border-box;-webkit-box-pack:justify;-ms-flex-pack:justify;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;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-slider__ticks:after,.fd-slider__ticks:before{box-sizing:inherit;font-size:inherit}.fd-slider__labels{-webkit-box-sizing:border-box;-webkit-box-pack:justify;-ms-flex-pack:justify;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;height:1rem;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;top:.5rem}.fd-slider__labels:after,.fd-slider__labels:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick{-webkit-box-sizing:border-box;border:0;border-left:.0625rem solid var(--fdSlider_Tick_Background);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Tick_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__tick:after,.fd-slider__tick:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick--in-range{border-color:var(--fdSlider_Active_Tick_Background)}.fd-slider__label{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:0}.fd-slider__label:after,.fd-slider__label:before{box-sizing:inherit;font-size:inherit}.fd-slider__handle{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-transform:translate(-50%,-50%);align-items:center;background-color:var(--fdSlider_Handle_Background);border:0;border:var(--fdSlider_Handle_Border);border-radius:var(--fdSlider_Handle_Border_Radius);box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Handle_Height);justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--fdSlider_Handle_Width);z-index:3}.fd-slider__handle:after,.fd-slider__handle:before{box-sizing:inherit;font-size:inherit}.fd-slider__handle:before{-webkit-transform:translate(-50%,-50%);content:\"\";height:var(--fdSlider_Handle_Active_Height);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--fdSlider_Handle_Active_Width)}.fd-slider__handle:after{color:var(--sapContent_Selected_ForegroundColor);content:\"\\e29c\";display:var(--fdSlider_Handle_Icon_Display);font-family:SAP-icons;font-size:.875rem;line-height:1}.fd-slider__handle.is-focus,.fd-slider__handle:focus{background-color:var(--fdSlider_Focus_Handle_Background);border:var(--fdSlider_Focus_Handle_Border);outline:none;z-index:5}.fd-slider__handle.is-focus:after,.fd-slider__handle:focus:after{display:none}.fd-slider__handle.is-hover,.fd-slider__handle:hover{background-color:var(--fdSlider_Hover_Handle_Background);border:var(--fdSlider_Hover_Handle_Border);border-color:var(--fdSlider_Handle_Border_Hover_Color)}.fd-slider__handle.is-hover.is-focus,.fd-slider__handle.is-hover:focus,.fd-slider__handle:hover.is-focus,.fd-slider__handle:hover:focus{background-color:var(--fdSlider_Focus_Handle_Background);border:var(--fdSlider_Focus_Handle_Border);outline:none;z-index:5}.fd-slider__handle.is-hover.is-focus:after,.fd-slider__handle.is-hover:focus:after,.fd-slider__handle:hover.is-focus:after,.fd-slider__handle:hover:focus:after{display:none}.fd-slider__handle.is-active,.fd-slider__handle:active{background-color:var(--fdSlider_Active_Handle_Background);border:var(--fdSlider_Active_Handle_Border)}.fd-slider__handle.is-active.is-focus,.fd-slider__handle.is-active:focus,.fd-slider__handle:active.is-focus,.fd-slider__handle:active:focus{background-color:var(--fdSlider_Focus_Handle_Background);border:var(--fdSlider_Focus_Handle_Border);outline:none;z-index:5}.fd-slider__handle.is-active.is-focus:after,.fd-slider__handle.is-active:focus:after,.fd-slider__handle:active.is-focus:after,.fd-slider__handle:active:focus:after{display:none}.fd-slider__track-focus-range{-webkit-box-sizing:border-box;-webkit-transform:translateY(-50%);border:0;border-radius:var(--fdSlider_Range_Track_Border_Radius);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:calc(var(--fdSlider_Handle_Height) + .5rem);left:0;line-height:var(--sapContent_LineHeight);margin:0;margin:0 calc(var(--fdSlider_Handle_Height) * -1 / 1.1);padding:0;position:absolute;right:0;top:50%;transform:translateY(-50%)}.fd-slider__track-focus-range:after,.fd-slider__track-focus-range:before{box-sizing:inherit;font-size:inherit}.fd-slider__track-focus-range.is-focus,.fd-slider__track-focus-range:focus{outline:var(--fdSlider_Focus_Range_Outline);z-index:5}.fd-slider--range .fd-slider__inner:after,.fd-slider--range .fd-slider__inner:before{background-color:var(--fdSlider_Endpoint_Background);border:var(--fdSlider_Endpoint_Border)}.fd-slider--range .fd-slider__inner .fd-slider__handle{background-color:var(--fdSlider_Range_Handle_Background);border:var(--fdSlider_Range_Handle_Border)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-hover,.fd-slider--range .fd-slider__inner .fd-slider__handle:hover{background-color:var(--fdSlider_Range_Hover_Handle_Background);border-color:var(--fdSlider_Range_Hover_Handle_Border_Color)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-active,.fd-slider--range .fd-slider__inner .fd-slider__handle:active{background-color:var(--fdSlider_Range_Active_Handle_Background);border-color:var(--fdSlider_Range_Active_Handle_Border_Color)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-active:after,.fd-slider--range .fd-slider__inner .fd-slider__handle:active:after{display:var(--fdSlider_Focus_Handle_Display)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-focus,.fd-slider--range .fd-slider__inner .fd-slider__handle:focus{background-color:var(--fdSlider_Range_Focus_Handle_Background);border:var(--fdSlider_Range_Focus_Handle_Border);z-index:5}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-focus:after,.fd-slider--range .fd-slider__inner .fd-slider__handle:focus:after{display:var(--fdSlider_Focus_Handle_Display)}.fd-slider--vertical{height:100%}.fd-slider--vertical .fd-slider__inner{height:100%;width:var(--fdSlider_Track_Height)}.fd-slider--vertical .fd-slider__inner:after,.fd-slider--vertical .fd-slider__inner:before{-webkit-transform:translateX(-50%);left:50%;right:auto;top:auto;transform:translate(-50%)}.fd-slider--vertical .fd-slider__inner:before{bottom:-.7rem}.fd-slider--vertical .fd-slider__inner:after{top:-.7rem}.fd-slider--vertical .fd-slider__track{height:100%;width:var(--fdSlider_Track_Height)}.fd-slider--vertical .fd-slider__track-range{bottom:0;position:absolute;width:100%}.fd-slider--vertical .fd-slider__handle{-webkit-transform:translate(-50%,50%);bottom:0;height:var(--fdSlider_Handle_Width);left:50%;top:auto;transform:translate(-50%,50%);width:var(--fdSlider_Handle_Height)}.fd-slider--vertical .fd-slider__handle:after{transform:rotate(90deg)}.fd-slider--vertical .fd-slider__tick-wrapper{height:100%;left:calc((var(--fdSlider_Track_Height) - var(--fdSlider_Tick_Height)) / 2);right:calc((var(--fdSlider_Track_Height) - var(--fdSlider_Tick_Height)) / 2);top:0}.fd-slider--vertical .fd-slider__ticks{flex-direction:column-reverse;height:100%}.fd-slider--vertical .fd-slider__tick{border-left:none;border-top-style:solid;border-top-width:.0625rem;height:0;width:var(--fdSlider_Tick_Height)}.fd-slider--vertical .fd-slider__labels{flex-direction:column-reverse;height:100%;left:calc(var(--fdSlider_Handle_Width) * .5 + .125rem);position:absolute;top:-.55rem}.fd-slider--vertical .fd-slider__labels[dir=rtl],[dir=rtl] .fd-slider--vertical .fd-slider__labels{left:auto;right:calc(var(--fdSlider_Handle_Width) * .5 + .125rem)}.fd-slider--vertical .fd-slider__label{height:.0625rem;width:auto}.fd-slider--vertical.fd-slider--range .fd-slider__track-range{left:0}.fd-slider--vertical.fd-slider--range .fd-slider__track-focus-range{-webkit-transform:translateX(-50%);height:auto;inset:0 auto 0 50%;margin:calc(var(--fdSlider_Handle_Height) * -1 / 1.1) 0;transform:translate(-50%);width:calc(var(--fdSlider_Handle_Height) + .5rem)}/*!\n * Fundamental Library Styles v0.32.0-rc.7\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-input{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--sapField_Shadow);-webkit-appearance:none;appearance:none;background:var(--sapField_BackgroundStyle, var(--sapField_BackgroundStyle));background-color:var(--sapField_Background, var(--sapField_Background));border:0;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-radius:var(--sapField_BorderCornerRadius);box-shadow:var(--sapField_Shadow);box-sizing:border-box;color:var(--sapTextColor);color:var(--sapField_TextColor);cursor:text;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--sapElement_Height);line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdInput_Field_Margin, .25rem 0);min-height:var(--sapElement_Height);min-width:var(2.75rem, 2.75rem);outline:none;overflow:hidden;padding:0;padding:var(--fdInput_Field_Padding, 0 .625rem);text-overflow:ellipsis;text-shadow:var(--fdInput_Text_Shadow);white-space:nowrap;width:100%;z-index:1}.fd-input:after,.fd-input:before{box-sizing:inherit;font-size:inherit}.fd-input::placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input[dir=rtl]::placeholder,[dir=rtl] .fd-input::placeholder{text-indent:.125rem}.fd-input::selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input::-ms-clear{display:none}.fd-input.is-hover,.fd-input:hover{-webkit-box-shadow:var(--fdInput_Box_Shadow_Hover);background:var(--sapField_Hover_BackgroundStyle, var(--sapField_Hover_BackgroundStyle));background-color:var(--sapField_Hover_Background, var(--sapField_Hover_Background));border-color:var(--sapField_Hover_BorderColor);box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-input.is-focus,.fd-input:focus{-webkit-box-shadow:none;background:var(--sapField_Focus_Background, var(--sapField_Focus_Background));box-shadow:none;outline-color:var(--fdInput_Outline_Color);outline-offset:var(--fdInput_Outline_Offset);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-input[type=search]::-webkit-search-cancel-button,.fd-input[type=search]::-webkit-search-decoration,.fd-input[type=search]::-webkit-search-results-button,.fd-input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}.fd-input[aria-expanded=false]{z-index:0}.fd-input.is-expanded,.fd-input[aria-expanded=true]{z-index:4}.fd-input[class*=-compact],.fd-input[class*=-condensed],[class*=-compact] .fd-input:not([class*=-cozy]),[class*=-condensed] .fd-input:not([class*=-cozy]){box-sizing:border-box;height:var(--sapElement_Compact_Height);margin:var(--fdInput_Field_Compact_Margin, .1875rem 0);min-height:var(--sapElement_Compact_Height);min-width:var(--fdInput_Field_Compact_Min_Width, 2rem);padding:var(--fdInput_Field_Compact_Padding, 0 .5rem)}.fd-input--no-number-spinner{-moz-appearance:textfield}.fd-input--no-number-spinner::-webkit-inner-spin-button,.fd-input--no-number-spinner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-input.right-align{text-align:right}.fd-input.is-success{-webkit-box-shadow:var(--sapField_SuccessShadow);background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapField_SuccessBackground);border:var(--sapField_SuccessColor) var(--sapField_SuccessBorderWidth) var(--sapField_SuccessBorderStyle);box-shadow:var(--sapField_SuccessShadow)}.fd-input.is-success.is-hover,.fd-input.is-success:hover{-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);background-color:var(--fdInput_Success_Background_Color_Hover);border-color:var(--sapField_SuccessColor);box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-input.is-success.is-focus,.fd-input.is-success:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Success_Outline_Color);z-index:5}.fd-input.is-success.is-focus.is-hover,.fd-input.is-success.is-focus:hover,.fd-input.is-success:focus.is-hover,.fd-input.is-success:focus:hover{box-shadow:none}.fd-input.is-success.is-expanded,.fd-input.is-success[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Success_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-error{-webkit-box-shadow:var(--sapField_InvalidShadow);background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapField_InvalidBackground);border:var(--sapField_InvalidColor) var(--sapField_InvalidBorderWidth) var(--sapField_InvalidBorderStyle);box-shadow:var(--sapField_InvalidShadow)}.fd-input.is-error.is-hover,.fd-input.is-error:hover{-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);background-color:var(--fdInput_Error_Background_Color_Hover);border-color:var(--sapField_InvalidColor);box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-input.is-error.is-focus,.fd-input.is-error:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Error_Outline_Color);z-index:5}.fd-input.is-error.is-focus.is-hover,.fd-input.is-error.is-focus:hover,.fd-input.is-error:focus.is-hover,.fd-input.is-error:focus:hover{box-shadow:none}.fd-input.is-error.is-expanded,.fd-input.is-error[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Error_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-warning{-webkit-box-shadow:var(--sapField_WarningShadow);background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle);box-shadow:var(--sapField_WarningShadow)}.fd-input.is-warning.is-hover,.fd-input.is-warning:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-warning.is-focus.is-hover,.fd-input.is-warning.is-focus:hover,.fd-input.is-warning:focus.is-hover,.fd-input.is-warning:focus:hover{box-shadow:none}.fd-input.is-warning.is-expanded,.fd-input.is-warning[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Warning_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-alert{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-alert.is-hover,.fd-input.is-alert:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-alert.is-focus.is-hover,.fd-input.is-alert.is-focus:hover,.fd-input.is-alert:focus.is-hover,.fd-input.is-alert:focus:hover{box-shadow:none}.fd-input.is-alert.is-expanded,.fd-input.is-alert[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Warning_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-information{-webkit-box-shadow:var(--sapField_InformationShadow);background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapField_InformationBackground);border:var(--sapField_InformationColor) var(--sapField_InformationBorderWidth) var(--sapField_InformationBorderStyle);box-shadow:var(--sapField_InformationShadow)}.fd-input.is-information.is-hover,.fd-input.is-information:hover{-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);background-color:var(--fdInput_Information_Background_Color_Hover);border-color:var(--sapField_InformationColor);box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-input.is-information.is-focus,.fd-input.is-information:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Information_Outline_Color);z-index:5}.fd-input.is-information.is-focus.is-hover,.fd-input.is-information.is-focus:hover,.fd-input.is-information:focus.is-hover,.fd-input.is-information:focus:hover{box-shadow:none}.fd-input.is-information.is-expanded,.fd-input.is-information[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Information_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-alert,.fd-input.is-error,.fd-input.is-warning{font-style:var(--fdInput_State_Text_Style);font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::placeholder,.fd-input.is-error::placeholder,.fd-input.is-warning::placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus,.fd-input.is-error.is-focus,.fd-input.is-error:focus,.fd-input.is-information.is-focus,.fd-input.is-information:focus,.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{outline-offset:var(--fdInput_Outline_Offset_States);z-index:5}.fd-input.is-error::placeholder{color:var(--sapField_TextColor)}.fd-input.is-disabled,.fd-input:disabled,.fd-input[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-input.is-disabled::placeholder,.fd-input:disabled::placeholder,.fd-input[aria-disabled=true]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly,.fd-input[aria-readonly=true],.fd-input[readonly]{-webkit-box-shadow:none;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);box-shadow:none}.fd-input.is-readonly::placeholder,.fd-input[aria-readonly=true]::placeholder,.fd-input[readonly]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly.is-focus,.fd-input.is-readonly.is-hover,.fd-input.is-readonly:focus,.fd-input.is-readonly:hover,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true].is-hover,.fd-input[aria-readonly=true]:focus,.fd-input[aria-readonly=true]:hover,.fd-input[readonly].is-focus,.fd-input[readonly].is-hover,.fd-input[readonly]:focus,.fd-input[readonly]:hover{-webkit-box-shadow:none;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);box-shadow:none}.fd-input.is-readonly.is-focus,.fd-input.is-readonly:focus,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true]:focus,.fd-input[readonly].is-focus,.fd-input[readonly]:focus{z-index:5}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-popover--slider{display:block!important}.fd-popover__body.fd-slider--tooltip-popover{top:-7px!important;overflow:hidden}.fd-popover__body.fd-slider--tooltip-popover .fd-slider--tooltip{padding:.25rem;min-width:2rem;text-align:center;height:1.375rem;line-height:1;direction:ltr;box-sizing:border-box;margin:0!important;border:0;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);font-size:.875rem;font-size:var(--sapFontSize)}.fd-slider{display:block}.fd-slider.fd-slider--with-labels{padding-bottom:2rem}.fd-slider__tick-wrapper .fd-slider__label,.fd-slider__tick-wrapper .fd-slider__tick{position:absolute}.fd-slider__ticks{height:var(--fdSlider_Tick_Height)}.fd-slider__track .fd-slider__handle:focus{z-index:2;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.fd-slider__track .fd-popover-custom{display:none}.fd-slider__labels .fd-slider__label{white-space:nowrap}.fd-slider__alternative-tick-width .fd-slider__tick{width:1px}[dir=rtl] .fd-slider__handle{transform:translate(50%,-50%)}\n"] }]
|
|
784
|
+
], template: "<div class=\"fd-slider__inner\">\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeMode : singleMode\"></ng-container>\n\n <div class=\"fd-slider__track\" (click)=\"onTrackClick($event)\" #track>\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeModeTrack : singleModeTrack\"></ng-container>\n </div>\n\n <div class=\"fd-slider__tick-wrapper\">\n <div class=\"fd-slider__ticks\" (click)=\"onTrackClick($event)\">\n <ng-container *ngIf=\"showTicks\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i\">\n <div\n class=\"fd-slider__tick\"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"tick.position || 0\"\n [class.fd-slider__tick--in-range]=\"\n !hideProgressBar &&\n (_isRange\n ? tick.value >= _position[0] && tick.value <= _position[1]\n : tick.value <= _position)\n \"\n ></div>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"fd-slider__labels\" *ngIf=\"showTicks && showTicksLabels\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i; last as last; first as first\">\n <div\n *ngIf=\"first || last || i % tickmarksBetweenLabels === 0\"\n class=\"fd-slider__label\"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"tick.position || 0\"\n >\n {{ tick.label }}\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #singleModeTrack>\n <div\n *ngIf=\"!hideProgressBar\"\n class=\"fd-slider__track-range\"\n [style.height.%]=\"vertical ? _progress : null\"\n [style.width.%]=\"vertical ? null : _progress\"\n ></div>\n</ng-template>\n\n<ng-template #rangeModeTrack>\n <div\n *ngIf=\"!hideProgressBar\"\n class=\"fd-slider__track-range\"\n [style.height.%]=\"vertical ? _rangeProgress : null\"\n [style.width.%]=\"vertical ? null : _rangeProgress\"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"_handle1Position < _handle2Position ? _handle1Position : _handle2Position\"\n >\n <div\n class=\"fd-slider__track-focus-range\"\n (mousedown)=\"onHandleClick($event, true)\"\n (keydown)=\"onKeyDown($event, _handles.Both)\"\n tabindex=\"0\"\n #rangeGroupHandle\n ></div>\n </div>\n</ng-template>\n\n<ng-template #singleMode>\n <div\n #handle\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || ('coreSlider.singleMinMaxDetails' | fdTranslate : { min: minValue, max: maxValue })\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? singleSliderPopover : null\"\n [attr.aria-valuemin]=\"'coreSlider.singleValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.singleValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate : { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate : { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"_progress\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (focus)=\"_handleFocused$.next(true)\"\n (blur)=\"_handleFocused$.next(false)\"\n (keydown)=\"onKeyDown($event)\"\n ></div>\n\n <fd-popover\n #singleSliderPopover\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"handle\"\n [disabled]=\"!tooltipMode\"\n class=\"fd-popover--slider\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.SINGLE_SLIDER, position: _position }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #rangeMode>\n <div\n #rangeHandle1\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || ('coreSlider.multipleHandle1MinMaxDetails' | fdTranslate : { min: minValue, max: maxValue })\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover1 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle1ValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle1ValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"_handle1Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event, _handles.First)\"\n (focus)=\"_rangeHandle1Focused$.next(true)\"\n (blur)=\"_rangeHandle1Focused$.next(false)\"\n ></div>\n\n <div\n #rangeHandle2\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || ('coreSlider.multipleHandle2MinMaxDetails' | fdTranslate : { min: minValue, max: maxValue })\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover2 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle2ValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle2ValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n fd-slider-position\n [vertical]=\"vertical\"\n [position]=\"_handle2Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event, _handles.Second)\"\n (focus)=\"_rangeHandle2Focused$.next(true)\"\n (blur)=\"_rangeHandle2Focused$.next(false)\"\n ></div>\n\n <fd-popover\n #rangeSliderPopover1\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle1\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER1, position: _handle1Value }\n \"\n ></ng-container>\n </fd-popover>\n\n <fd-popover\n #rangeSliderPopover2\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle2\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER2, position: _handle2Value }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #popoverInner let-target=\"target\" let-position=\"position\">\n <div\n #sliderTooltipWrapper\n class=\"fd-slider--tooltip-wrapper\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n (mouseenter)=\"_popoverInputFieldHovered$.next(true)\"\n (mouseleave)=\"_popoverInputFieldHovered$.next(false)\"\n >\n <div *ngIf=\"(customValues && customValues.length > 0) || tooltipMode === 'readonly'\" class=\"fd-slider--tooltip\">\n {{ customValues && customValues.length > 0 ? customValues[position].label : _popoverValueRef[target] }}\n </div>\n\n <input\n #popoverInputField\n tabindex=\"-1\"\n type=\"text\"\n [disabled]=\"disabled\"\n fdkOnlyDigits\n [decimal]=\"true\"\n [style.width.ch]=\"('' + _popoverValueRef[target]).length + 2\"\n class=\"fd-input fd-slider--tooltip {{ _popoverInputFieldClass }}\"\n *ngIf=\"customValues?.length === 0 && tooltipMode === 'editable'\"\n [(ngModel)]=\"_popoverValueRef[target]\"\n (blur)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (keydown.enter)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (focus)=\"_popoverInputFieldFocused$.next(true)\"\n (blur)=\"_popoverInputFieldFocused$.next(false)\"\n />\n </div>\n</ng-template>\n", styles: [".fd-slider{-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:0;max-width:100%;min-width:4rem;padding:0;padding:1rem calc(var(--fdSlider_Handle_Width) * .5 + .125rem);position:relative}.fd-slider:after,.fd-slider:before{box-sizing:inherit;font-size:inherit}.fd-slider.is-disabled,.fd-slider:disabled,.fd-slider[aria-disabled=true]{cursor:not-allowed}.fd-slider--lg{--fdSlider_Handle_Width:var(--fdSlider_Mobile_Handle_Width);--fdSlider_Handle_Height:var(--fdSlider_Mobile_Handle_Height);--fdSlider_Handle_Active_Width:var(--fdSlider_Mobile_Handle_Active_Size);--fdSlider_Handle_Active_Height:var(--fdSlider_Mobile_Handle_Active_Size);padding-left:calc(var(--fdSlider_Mobile_Handle_Width) * .5 + .125rem);padding-right:calc(var(--fdSlider_Mobile_Handle_Width) * .5 + .125rem)}.fd-slider__inner{-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:0;padding:0;position:relative}.fd-slider__inner:after,.fd-slider__inner:before{-webkit-box-sizing:inherit;-webkit-box-sizing:border-box;-webkit-transform:translateY(-50%);background-color:var(--fdSlider_Endpoint_Active_Background);border:0;border:var(--fdSlider_Endpoint_Active_Border);border-radius:50%;box-sizing:inherit;box-sizing:border-box;color:var(--sapTextColor);content:\"\";font-family:var(--sapFontFamily);font-size:inherit;font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Endpoint_Size);left:-.7rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:var(--fdSlider_Endpoint_Size)}.fd-slider__inner:after:after,.fd-slider__inner:after:before,.fd-slider__inner:before:after,.fd-slider__inner:before:before{box-sizing:inherit;font-size:inherit}.fd-slider__inner:after{left:auto;right:-.7rem}.fd-slider:not(.fd-slider--vertical):not(.fd-slider--range) .fd-slider__inner[dir=rtl]:before,.fd-slider__inner:after,[dir=rtl] .fd-slider:not(.fd-slider--vertical):not(.fd-slider--range) .fd-slider__inner:before{background-color:var(--fdSlider_Endpoint_Background);border:var(--fdSlider_Endpoint_Border)}.fd-slider:not(.fd-slider--vertical):not(.fd-slider--range) .fd-slider__inner[dir=rtl]:after,[dir=rtl] .fd-slider:not(.fd-slider--vertical):not(.fd-slider--range) .fd-slider__inner:after{background-color:var(--fdSlider_Endpoint_Active_Background);border:var(--fdSlider_Endpoint_Active_Border)}.fd-slider__track{-webkit-box-sizing:border-box;-webkit-box-shadow:inset 0 0 0 var(--fdSlider_Track_Border_Width) var(--fdSlider_Track_Border_Color);background-color:var(--fdSlider_Track_Background);border:0;border-radius:var(--fdSlider_Track_BorderRadius);box-shadow:inset 0 0 0 var(--fdSlider_Track_Border_Width) var(--fdSlider_Track_Border_Color);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Track_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:100%;z-index:1}.fd-slider__track:after,.fd-slider__track:before{box-sizing:inherit;font-size:inherit}.fd-slider__track-range{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--fdSlider_Track_Active_Box_Shadow);background-color:var(--fdSlider_Track_Active_Background);border:0;border:.0625rem solid var(--fdSlider_Track_Active_Border);border-radius:.25rem;box-shadow:var(--fdSlider_Track_Active_Box_Shadow);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__track-range:after,.fd-slider__track-range:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick-wrapper{-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:0;padding:0;position:absolute;top:calc((var(--fdSlider_Track_Height) - var(--fdSlider_Tick_Height)) / 2);width:100%;z-index:2}.fd-slider__tick-wrapper:after,.fd-slider__tick-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-slider__ticks{-webkit-box-sizing:border-box;-webkit-box-pack:justify;-ms-flex-pack:justify;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;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-slider__ticks:after,.fd-slider__ticks:before{box-sizing:inherit;font-size:inherit}.fd-slider__labels{-webkit-box-sizing:border-box;-webkit-box-pack:justify;-ms-flex-pack:justify;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;height:1rem;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;top:.5rem}.fd-slider__labels:after,.fd-slider__labels:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick{-webkit-box-sizing:border-box;border:0;border-left:.0625rem solid var(--fdSlider_Tick_Background);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Tick_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__tick:after,.fd-slider__tick:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick--in-range{border-color:var(--fdSlider_Active_Tick_Background)}.fd-slider__label{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:0}.fd-slider__label:after,.fd-slider__label:before{box-sizing:inherit;font-size:inherit}.fd-slider__handle{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-transform:translate(-50%,-50%);align-items:center;background-color:var(--fdSlider_Handle_Background);border:0;border:var(--fdSlider_Handle_Border);border-radius:var(--fdSlider_Handle_Border_Radius);box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Handle_Height);justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--fdSlider_Handle_Width);z-index:3}.fd-slider__handle:after,.fd-slider__handle:before{box-sizing:inherit;font-size:inherit}.fd-slider__handle:before{-webkit-transform:translate(-50%,-50%);content:\"\";height:var(--fdSlider_Handle_Active_Height);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--fdSlider_Handle_Active_Width)}.fd-slider__handle:after{color:var(--sapContent_Selected_ForegroundColor);content:\"\\e29c\";display:var(--fdSlider_Handle_Icon_Display);font-family:SAP-icons;font-size:.875rem;line-height:1}.fd-slider__handle.is-focus,.fd-slider__handle:focus{background-color:var(--fdSlider_Focus_Handle_Background);border:var(--fdSlider_Focus_Handle_Border);outline:none;z-index:5}.fd-slider__handle.is-focus:after,.fd-slider__handle:focus:after{display:none}.fd-slider__handle.is-hover,.fd-slider__handle:hover{background-color:var(--fdSlider_Hover_Handle_Background);border:var(--fdSlider_Hover_Handle_Border);border-color:var(--fdSlider_Handle_Border_Hover_Color)}.fd-slider__handle.is-hover.is-focus,.fd-slider__handle.is-hover:focus,.fd-slider__handle:hover.is-focus,.fd-slider__handle:hover:focus{background-color:var(--fdSlider_Focus_Handle_Background);border:var(--fdSlider_Focus_Handle_Border);outline:none;z-index:5}.fd-slider__handle.is-hover.is-focus:after,.fd-slider__handle.is-hover:focus:after,.fd-slider__handle:hover.is-focus:after,.fd-slider__handle:hover:focus:after{display:none}.fd-slider__handle.is-active,.fd-slider__handle:active{background-color:var(--fdSlider_Active_Handle_Background);border:var(--fdSlider_Active_Handle_Border)}.fd-slider__handle.is-active.is-focus,.fd-slider__handle.is-active:focus,.fd-slider__handle:active.is-focus,.fd-slider__handle:active:focus{background-color:var(--fdSlider_Focus_Handle_Background);border:var(--fdSlider_Focus_Handle_Border);outline:none;z-index:5}.fd-slider__handle.is-active.is-focus:after,.fd-slider__handle.is-active:focus:after,.fd-slider__handle:active.is-focus:after,.fd-slider__handle:active:focus:after{display:none}.fd-slider__track-focus-range{-webkit-box-sizing:border-box;-webkit-transform:translateY(-50%);border:0;border-radius:var(--fdSlider_Range_Track_Border_Radius);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:calc(var(--fdSlider_Handle_Height) + .5rem);left:0;line-height:var(--sapContent_LineHeight);margin:0;margin:0 calc(var(--fdSlider_Handle_Height) * -1 / 1.1);padding:0;position:absolute;right:0;top:50%;transform:translateY(-50%)}.fd-slider__track-focus-range:after,.fd-slider__track-focus-range:before{box-sizing:inherit;font-size:inherit}.fd-slider__track-focus-range.is-focus,.fd-slider__track-focus-range:focus{outline:var(--fdSlider_Focus_Range_Outline);z-index:5}.fd-slider--range .fd-slider__inner:after,.fd-slider--range .fd-slider__inner:before{background-color:var(--fdSlider_Endpoint_Background);border:var(--fdSlider_Endpoint_Border)}.fd-slider--range .fd-slider__inner .fd-slider__handle{background-color:var(--fdSlider_Range_Handle_Background);border:var(--fdSlider_Range_Handle_Border)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-hover,.fd-slider--range .fd-slider__inner .fd-slider__handle:hover{background-color:var(--fdSlider_Range_Hover_Handle_Background);border-color:var(--fdSlider_Range_Hover_Handle_Border_Color)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-active,.fd-slider--range .fd-slider__inner .fd-slider__handle:active{background-color:var(--fdSlider_Range_Active_Handle_Background);border-color:var(--fdSlider_Range_Active_Handle_Border_Color)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-active:after,.fd-slider--range .fd-slider__inner .fd-slider__handle:active:after{display:var(--fdSlider_Focus_Handle_Display)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-focus,.fd-slider--range .fd-slider__inner .fd-slider__handle:focus{background-color:var(--fdSlider_Range_Focus_Handle_Background);border:var(--fdSlider_Range_Focus_Handle_Border);z-index:5}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-focus:after,.fd-slider--range .fd-slider__inner .fd-slider__handle:focus:after{display:var(--fdSlider_Focus_Handle_Display)}.fd-slider--vertical{height:100%}.fd-slider--vertical .fd-slider__inner{height:100%;width:var(--fdSlider_Track_Height)}.fd-slider--vertical .fd-slider__inner:after,.fd-slider--vertical .fd-slider__inner:before{-webkit-transform:translateX(-50%);left:50%;right:auto;top:auto;transform:translate(-50%)}.fd-slider--vertical .fd-slider__inner:before{bottom:-.7rem}.fd-slider--vertical .fd-slider__inner:after{top:-.7rem}.fd-slider--vertical .fd-slider__track{height:100%;width:var(--fdSlider_Track_Height)}.fd-slider--vertical .fd-slider__track-range{bottom:0;position:absolute;width:100%}.fd-slider--vertical .fd-slider__handle{-webkit-transform:translate(-50%,50%);bottom:0;height:var(--fdSlider_Handle_Width);left:50%;top:auto;transform:translate(-50%,50%);width:var(--fdSlider_Handle_Height)}.fd-slider--vertical .fd-slider__handle:after{transform:rotate(90deg)}.fd-slider--vertical .fd-slider__tick-wrapper{height:100%;left:calc((var(--fdSlider_Track_Height) - var(--fdSlider_Tick_Height)) / 2);right:calc((var(--fdSlider_Track_Height) - var(--fdSlider_Tick_Height)) / 2);top:0}.fd-slider--vertical .fd-slider__ticks{flex-direction:column-reverse;height:100%}.fd-slider--vertical .fd-slider__tick{border-left:none;border-top-style:solid;border-top-width:.0625rem;height:0;width:var(--fdSlider_Tick_Height)}.fd-slider--vertical .fd-slider__labels{flex-direction:column-reverse;height:100%;left:calc(var(--fdSlider_Handle_Width) * .5 + .125rem);position:absolute;top:-.55rem}.fd-slider--vertical .fd-slider__labels[dir=rtl],[dir=rtl] .fd-slider--vertical .fd-slider__labels{left:auto;right:calc(var(--fdSlider_Handle_Width) * .5 + .125rem)}.fd-slider--vertical .fd-slider__label{height:.0625rem;width:auto}.fd-slider--vertical.fd-slider--range .fd-slider__track-range{left:0}.fd-slider--vertical.fd-slider--range .fd-slider__track-focus-range{-webkit-transform:translateX(-50%);height:auto;inset:0 auto 0 50%;margin:calc(var(--fdSlider_Handle_Height) * -1 / 1.1) 0;transform:translate(-50%);width:calc(var(--fdSlider_Handle_Height) + .5rem)}/*!\n * Fundamental Library Styles v0.32.0\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-input{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--sapField_Shadow);-webkit-appearance:none;appearance:none;background:var(--sapField_BackgroundStyle, var(--sapField_BackgroundStyle));background-color:var(--sapField_Background, var(--sapField_Background));border:0;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-radius:var(--sapField_BorderCornerRadius);box-shadow:var(--sapField_Shadow);box-sizing:border-box;color:var(--sapTextColor);color:var(--sapField_TextColor);cursor:text;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--sapElement_Height);line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdInput_Field_Margin, .25rem 0);min-height:var(--sapElement_Height);min-width:var(2.75rem, 2.75rem);outline:none;overflow:hidden;padding:0;padding:var(--fdInput_Field_Padding, 0 .625rem);text-overflow:ellipsis;text-shadow:var(--fdInput_Text_Shadow);white-space:nowrap;width:100%;z-index:1}.fd-input:after,.fd-input:before{box-sizing:inherit;font-size:inherit}.fd-input::placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input[dir=rtl]::placeholder,[dir=rtl] .fd-input::placeholder{text-indent:.125rem}.fd-input::selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input::-ms-clear{display:none}.fd-input.is-hover,.fd-input:hover{-webkit-box-shadow:var(--fdInput_Box_Shadow_Hover);background:var(--sapField_Hover_BackgroundStyle, var(--sapField_Hover_BackgroundStyle));background-color:var(--sapField_Hover_Background, var(--sapField_Hover_Background));border-color:var(--sapField_Hover_BorderColor);box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-input.is-focus,.fd-input:focus{-webkit-box-shadow:none;background:var(--sapField_Focus_Background, var(--sapField_Focus_Background));box-shadow:none;outline-color:var(--fdInput_Outline_Color);outline-offset:var(--fdInput_Outline_Offset);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-input[type=search]::-webkit-search-cancel-button,.fd-input[type=search]::-webkit-search-decoration,.fd-input[type=search]::-webkit-search-results-button,.fd-input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}.fd-input[aria-expanded=false]{z-index:0}.fd-input.is-expanded,.fd-input[aria-expanded=true]{z-index:4}.fd-input[class*=-compact],.fd-input[class*=-condensed],[class*=-compact] .fd-input:not([class*=-cozy]),[class*=-condensed] .fd-input:not([class*=-cozy]){box-sizing:border-box;height:var(--sapElement_Compact_Height);margin:var(--fdInput_Field_Compact_Margin, .1875rem 0);min-height:var(--sapElement_Compact_Height);min-width:var(--fdInput_Field_Compact_Min_Width, 2rem);padding:var(--fdInput_Field_Compact_Padding, 0 .5rem)}.fd-input--no-number-spinner{-moz-appearance:textfield}.fd-input--no-number-spinner::-webkit-inner-spin-button,.fd-input--no-number-spinner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-input.right-align{text-align:right}.fd-input.is-success{-webkit-box-shadow:var(--sapField_SuccessShadow);background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapField_SuccessBackground);border:var(--sapField_SuccessColor) var(--sapField_SuccessBorderWidth) var(--sapField_SuccessBorderStyle);box-shadow:var(--sapField_SuccessShadow)}.fd-input.is-success.is-hover,.fd-input.is-success:hover{-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);background-color:var(--fdInput_Success_Background_Color_Hover);border-color:var(--sapField_SuccessColor);box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-input.is-success.is-focus,.fd-input.is-success:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Success_Outline_Color);z-index:5}.fd-input.is-success.is-focus.is-hover,.fd-input.is-success.is-focus:hover,.fd-input.is-success:focus.is-hover,.fd-input.is-success:focus:hover{box-shadow:none}.fd-input.is-success.is-expanded,.fd-input.is-success[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Success_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-error{-webkit-box-shadow:var(--sapField_InvalidShadow);background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapField_InvalidBackground);border:var(--sapField_InvalidColor) var(--sapField_InvalidBorderWidth) var(--sapField_InvalidBorderStyle);box-shadow:var(--sapField_InvalidShadow)}.fd-input.is-error.is-hover,.fd-input.is-error:hover{-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);background-color:var(--fdInput_Error_Background_Color_Hover);border-color:var(--sapField_InvalidColor);box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-input.is-error.is-focus,.fd-input.is-error:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Error_Outline_Color);z-index:5}.fd-input.is-error.is-focus.is-hover,.fd-input.is-error.is-focus:hover,.fd-input.is-error:focus.is-hover,.fd-input.is-error:focus:hover{box-shadow:none}.fd-input.is-error.is-expanded,.fd-input.is-error[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Error_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-warning{-webkit-box-shadow:var(--sapField_WarningShadow);background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle);box-shadow:var(--sapField_WarningShadow)}.fd-input.is-warning.is-hover,.fd-input.is-warning:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-warning.is-focus.is-hover,.fd-input.is-warning.is-focus:hover,.fd-input.is-warning:focus.is-hover,.fd-input.is-warning:focus:hover{box-shadow:none}.fd-input.is-warning.is-expanded,.fd-input.is-warning[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Warning_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-alert{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-alert.is-hover,.fd-input.is-alert:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-alert.is-focus.is-hover,.fd-input.is-alert.is-focus:hover,.fd-input.is-alert:focus.is-hover,.fd-input.is-alert:focus:hover{box-shadow:none}.fd-input.is-alert.is-expanded,.fd-input.is-alert[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Warning_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-information{-webkit-box-shadow:var(--sapField_InformationShadow);background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapField_InformationBackground);border:var(--sapField_InformationColor) var(--sapField_InformationBorderWidth) var(--sapField_InformationBorderStyle);box-shadow:var(--sapField_InformationShadow)}.fd-input.is-information.is-hover,.fd-input.is-information:hover{-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);background-color:var(--fdInput_Information_Background_Color_Hover);border-color:var(--sapField_InformationColor);box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-input.is-information.is-focus,.fd-input.is-information:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Information_Outline_Color);z-index:5}.fd-input.is-information.is-focus.is-hover,.fd-input.is-information.is-focus:hover,.fd-input.is-information:focus.is-hover,.fd-input.is-information:focus:hover{box-shadow:none}.fd-input.is-information.is-expanded,.fd-input.is-information[aria-expanded=true]{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--fdInput_Information_Outline_Color);outline-offset:var(--fdInput_Outline_Offset)}.fd-input.is-alert,.fd-input.is-error,.fd-input.is-warning{font-style:var(--fdInput_State_Text_Style);font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::placeholder,.fd-input.is-error::placeholder,.fd-input.is-warning::placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus,.fd-input.is-error.is-focus,.fd-input.is-error:focus,.fd-input.is-information.is-focus,.fd-input.is-information:focus,.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{outline-offset:var(--fdInput_Outline_Offset_States);z-index:5}.fd-input.is-error::placeholder{color:var(--sapField_TextColor)}.fd-input.is-disabled,.fd-input:disabled,.fd-input[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-input.is-disabled::placeholder,.fd-input:disabled::placeholder,.fd-input[aria-disabled=true]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly,.fd-input[aria-readonly=true],.fd-input[readonly]{-webkit-box-shadow:none;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);box-shadow:none}.fd-input.is-readonly::placeholder,.fd-input[aria-readonly=true]::placeholder,.fd-input[readonly]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color);opacity:0}.fd-input.is-readonly.is-focus,.fd-input.is-readonly.is-hover,.fd-input.is-readonly:focus,.fd-input.is-readonly:hover,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true].is-hover,.fd-input[aria-readonly=true]:focus,.fd-input[aria-readonly=true]:hover,.fd-input[readonly].is-focus,.fd-input[readonly].is-hover,.fd-input[readonly]:focus,.fd-input[readonly]:hover{-webkit-box-shadow:none;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);box-shadow:none}.fd-input.is-readonly.is-focus,.fd-input.is-readonly:focus,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true]:focus,.fd-input[readonly].is-focus,.fd-input[readonly]:focus{z-index:5}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-popover--slider{display:block!important}.fd-popover__body.fd-slider--tooltip-popover{top:-7px!important;overflow:hidden}.fd-popover__body.fd-slider--tooltip-popover .fd-slider--tooltip{padding:.25rem;min-width:2rem;text-align:center;height:1.375rem;line-height:1;direction:ltr;box-sizing:border-box;margin:0!important;border:0;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);font-size:.875rem;font-size:var(--sapFontSize)}.fd-slider{display:block}.fd-slider.fd-slider--with-labels{padding-bottom:2rem}.fd-slider__tick-wrapper .fd-slider__label,.fd-slider__tick-wrapper .fd-slider__tick{position:absolute}.fd-slider__ticks{height:var(--fdSlider_Tick_Height)}.fd-slider__track .fd-slider__handle:focus{z-index:2;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.fd-slider__track .fd-popover-custom{display:none}.fd-slider__labels .fd-slider__label{white-space:nowrap}.fd-slider__alternative-tick-width .fd-slider__tick{width:1px}[dir=rtl] .fd-slider__handle{transform:translate(50%,-50%)}\n"] }]
|
|
785
785
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1.Platform }, { type: i2.LiveAnnouncer }, { type: i3.RtlService, decorators: [{
|
|
786
786
|
type: Optional
|
|
787
787
|
}] }, { type: i4.ContentDensityObserver }]; }, propDecorators: { id: [{
|
|
@@ -854,4 +854,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
|
|
|
854
854
|
type: HostBinding,
|
|
855
855
|
args: ['class.fd-slider--range']
|
|
856
856
|
}], buildComponentCssClass: [] } });
|
|
857
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2xpZGVyL3NsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBSUwsUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFGLE9BQU8sRUFDSCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLEdBQUcsRUFDSCxLQUFLLEVBQ0wsSUFBSSxFQUNKLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDWixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8s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Z0JBV3BDLFFBQVE7c0JBRFAsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBc0dyQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgRU5URVIsIExFRlRfQVJST1csIFJJR0hUX0FSUk9XLCBTUEFDRSwgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgTGl2ZUFubm91bmNlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBkZWJvdW5jZVRpbWUsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgbWFwLFxuICAgIG1hcFRvLFxuICAgIHNraXAsXG4gICAgc3RhcnRXaXRoLFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlLFxuICAgIHRha2VVbnRpbFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQsIFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5pbXBvcnQgeyBOdWxsYWJsZSwgT25seURpZ2l0c0RpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7XG4gICAgU2xpZGVyQ29udHJvbFZhbHVlLFxuICAgIFNsaWRlckN1c3RvbVZhbHVlLFxuICAgIFNsaWRlclJhbmdlSGFuZGxlcyxcbiAgICBTbGlkZXJUaWNrTWFyayxcbiAgICBTbGlkZXJWYWx1ZVRhcmdldHNcbn0gZnJvbSAnLi9zbGlkZXIubW9kZWwnO1xuaW1wb3J0IHsgTUlOX0RJU1RBTkNFX0JFVFdFRU5fVElDS1MgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBhcHBseUNzc0NsYXNzLCBDc3NDbGFzc0J1aWxkZXIsIEtleVV0aWwsIFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBGb3JtSXRlbUNvbnRyb2wsIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHtcbiAgICBDb250ZW50RGVuc2l0eU1vZGUsXG4gICAgQ29udGVudERlbnNpdHlPYnNlcnZlcixcbiAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgU2xpZGVyUG9zaXRpb25EaXJlY3RpdmUgfSBmcm9tICcuL3NsaWRlci1wb3NpdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCwgTmdJZiwgTmdGb3IsIEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuXG5leHBvcnQgY29uc3QgU0xJREVSX1ZBTFVFX0FDQ0VTU09SID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNsaWRlckNvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbn07XG5sZXQgc2xpZGVySWQgPSAwO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1zbGlkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NsaWRlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFNMSURFUl9WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2woU2xpZGVyQ29tcG9uZW50KSxcbiAgICAgICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyh7XG4gICAgICAgICAgICBkZWZhdWx0Q29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNULFxuICAgICAgICAgICAgbW9kaWZpZXJzOiB7XG4gICAgICAgICAgICAgICAgW0NvbnRlbnREZW5zaXR5TW9kZS5DT1pZXTogJ2ZkLXNsaWRlci0tbGcnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICcobW91c2VlbnRlciknOiAndGhpcy5fY29tcG9uZW50SG92ZXJlZCQubmV4dCh0cnVlKScsXG4gICAgICAgICcobW91c2VsZWF2ZSknOiAndGhpcy5fY29tcG9uZW50SG92ZXJlZCQubmV4dChmYWxzZSknLFxuICAgICAgICAnKGZvY3Vzb3V0KSc6ICdvblRvdWNoZWQoKSdcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgU2xpZGVyUG9zaXRpb25EaXJlY3RpdmUsXG4gICAgICAgIFBvcG92ZXJNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBPbmx5RGlnaXRzRGlyZWN0aXZlLFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVyQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQ3NzQ2xhc3NCdWlsZGVyLCBGb3JtSXRlbUNvbnRyb2xcbntcbiAgICAvKiogU2xpZGVyIGlkLCBpdCBoYXMgc29tZSBkZWZhdWx0IHZhbHVlIGlmIG5vdCBzZXQsICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBpZCA9ICdmZC1zbGlkZXItaWQtJyArIHNsaWRlcklkKys7XG5cbiAgICAvKiogVXNlcidzIGN1c3RvbSBjbGFzc2VzICovXG4gICAgQElucHV0KClcbiAgICBjbGFzczogc3RyaW5nO1xuXG4gICAgLyoqIElEIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzIHNsaWRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSBzbGlkZXIuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogTWluaW11bSB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBtaW4odmFsdWU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCB0aGlzLl9taW4pO1xuICAgICAgICBpZiAoKCh0aGlzLm1heCAtIG5ld1ZhbHVlKSAvIHRoaXMuc3RlcCkgJSAxICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWluID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBtaW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgICB9XG5cbiAgICAvKiogTWF4aW11bSB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBtYXgodmFsdWU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCB0aGlzLl9tYXgpO1xuICAgICAgICBpZiAoKChuZXdWYWx1ZSAtIHRoaXMubWluKSAvIHRoaXMuc3RlcCkgJSAxICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWF4ID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBtYXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heDtcbiAgICB9XG5cbiAgICAvKiogU3RlcCB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGVwKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdGhpcy5fc3RlcCk7XG4gICAgICAgIGlmICgoKHRoaXMubWF4IC0gdGhpcy5taW4pIC8gbmV3VmFsdWUpICUgMSAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N0ZXAgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHN0ZXAoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0ZXA7XG4gICAgfVxuXG4gICAgLyoqIEp1bXAgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBzZXQganVtcCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2p1bXAgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdGhpcy5fanVtcCk7XG4gICAgfVxuICAgIGdldCBqdW1wKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9qdW1wO1xuICAgIH1cblxuICAgIC8qKiBQdXQgYSBsYWJlbCBvbiBldmVyeSBOLXRoIHRpY2ttYXJrLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRpY2ttYXJrc0JldHdlZW5MYWJlbHModmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl90aWNrbWFya3NCZXR3ZWVuTGFiZWxzID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIHRoaXMuX3RpY2ttYXJrc0JldHdlZW5MYWJlbHMpO1xuICAgIH1cbiAgICBnZXQgdGlja21hcmtzQmV0d2VlbkxhYmVscygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGlja21hcmtzQmV0d2VlbkxhYmVscztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTbGlkZXIgbW9kZS5cbiAgICAgKiBPcHRpb25zIGluY2x1ZGU6ICdzaW5nbGUnIHwgJ3JhbmdlJ1xuICAgICAqIFRoZSBkZWZhdWx0IGlzIHNldCB0byAnc2luZ2xlJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9kZTogJ3NpbmdsZScgfCAncmFuZ2UnID0gJ3NpbmdsZSc7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aWNrIG1hcmtzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1RpY2tzID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aWNrIG1hcmsgbGFiZWxzLiBNdXN0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCAnc2hvd1RpY2tzJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1RpY2tzTGFiZWxzID0gZmFsc2U7XG5cbiAgICAvKiogQXJyYXkgb2YgY3VzdG9tIHZhbHVlcyB0byB1c2UgZm9yIFNsaWRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGN1c3RvbVZhbHVlczogU2xpZGVyQ3VzdG9tVmFsdWVbXSA9IFtdO1xuXG4gICAgLyoqIFRvb2x0aXAgY2FuIGJlIHR3byB0eXBlcywgJ3JlYWRvbmx5JyB0byBkaXNwbGF5IHZhbHVlIGFuZCAnZWRpdGFibGUnIHRvIG1ha2UgdGhlIGFiaWxpdHkgdG8gc2V0IGFuZCBkaXNwbGF5IHZhbHVlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG9vbHRpcE1vZGU6ICdyZWFkb25seScgfCAnZWRpdGFibGUnO1xuXG4gICAgLyoqIEhpZGVzIGRpc3BsYXkgb2YgY29sb3JlZCBwcm9ncmVzcyBiYXIuICovXG4gICAgQElucHV0KClcbiAgICBoaWRlUHJvZ3Jlc3NCYXIgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjb250cm9sIGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgc2xpZGVyIHNob3VsZCBoYXZlIHZlcnRpY2FsIGFsaWdubWVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHZlcnRpY2FsID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wb3NpdGlvbjogbnVtYmVyIHwgbnVtYmVyW10gPSAwO1xuXG4gICAgLyoqIENvbnRyb2wgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogU2xpZGVyQ29udHJvbFZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3NldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IHZhbHVlKCk6IFNsaWRlckNvbnRyb2xWYWx1ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfcG9wb3ZlclZhbHVlUmVmKCk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLl9wb3NpdGlvbiBhcyBudW1iZXIsIHRoaXMuX2hhbmRsZTFWYWx1ZSwgdGhpcy5faGFuZGxlMlZhbHVlXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3RyYWNrJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICB0cmFja0VsOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnaGFuZGxlJywge1xuICAgICAgICByZWFkOiBFbGVtZW50UmVmXG4gICAgfSlcbiAgICBoYW5kbGU6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdyYW5nZUhhbmRsZTEnLCB7XG4gICAgICAgIHJlYWQ6IEVsZW1lbnRSZWZcbiAgICB9KVxuICAgIHJhbmdlSGFuZGxlMTogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3JhbmdlSGFuZGxlMicsIHtcbiAgICAgICAgcmVhZDogRWxlbWVudFJlZlxuICAgIH0pXG4gICAgcmFuZ2VIYW5kbGUyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgncmFuZ2VHcm91cEhhbmRsZScsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KVxuICAgIF9yYW5nZUdyb3VwSGFuZGxlOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihQb3BvdmVyQ29tcG9uZW50KVxuICAgIF9wb3BvdmVyczogUXVlcnlMaXN0PFBvcG92ZXJDb21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKCdzbGlkZXJUb29sdGlwV3JhcHBlcicpXG4gICAgX3NsaWRlclRvb2x0aXBXcmFwcGVyczogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ZhbHVlOiBudW1iZXIgfCBTbGlkZXJUaWNrTWFyayB8IFNsaWRlclRpY2tNYXJrW10gfCBudW1iZXJbXSA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wcm9ncmVzcyA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtc2xpZGVyLS1yYW5nZScpXG4gICAgX2lzUmFuZ2UgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hhbmRsZTFQb3NpdGlvbiA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oYW5kbGUyUG9zaXRpb24gPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFuZGxlMVZhbHVlID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hhbmRsZTJWYWx1ZSA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9yYW5nZVByb2dyZXNzID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RpY2tNYXJrczogU2xpZGVyVGlja01hcmtbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2xpZGVyVmFsdWVUYXJnZXRzID0gU2xpZGVyVmFsdWVUYXJnZXRzO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcG9wb3ZlcklucHV0RmllbGRDbGFzcyA9IGBmZC1zbGlkZXItcG9wb3Zlci1pbnB1dC0ke3NsaWRlcklkfWA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pc1J0bCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIHdoZXRoZXIgdG8gdXNlIHZhbHVlIHdpdGggYSBwcmVmaXggZm9yIGFubm91bmNpbmdcbiAgICAgKi9cbiAgICBfdXNlU2xpZGVyVmFsdWVQcmVmaXggPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFuZGxlcyA9IFNsaWRlclJhbmdlSGFuZGxlcztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWluID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWF4ID0gMTAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdGVwID0gMTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfanVtcCA9IDEwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90aWNrbWFya3NCZXR3ZWVuTGFiZWxzID0gMTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmFsdWVzQnlTdGVwczogbnVtYmVyW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gY29tcG9uZW504oCZcyBkZXN0cnVjdGlvbiAoZm9yIHVuc3Vic2NyaWJpbmcpXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9jb21wb25lbnRIb3ZlcmVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfaGFuZGxlRm9jdXNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3JhbmdlSGFuZGxlMUZvY3VzZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9yYW5nZUhhbmRsZTJGb2N1c2VkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfcG9wb3ZlcklucHV0RmllbGRGb2N1c2VkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfcG9wb3ZlcklucHV0RmllbGRIb3ZlcmVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfbGl2ZUFubm91bmNlcjogTGl2ZUFubm91bmNlcixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZSxcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJcbiAgICApIHtcbiAgICAgICAgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENzc0NsYXNzQnVpbGRlciBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb25cbiAgICAgKiBmdW5jdGlvbiBtdXN0IHJldHVybiBzaW5nbGUgc3RyaW5nXG4gICAgICogZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIG9yZGVyIHdoaWNoIGNzcyBjbGFzc2VzIGFyZSBhcHBsaWVkXG4gICAgICovXG4gICAgQGFwcGx5Q3NzQ2xhc3NcbiAgICBidWlsZENvbXBvbmVudENzc0NsYXNzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdmZC1zbGlkZXInLFxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA/ICdpcy1kaXNhYmxlZCcgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuX2lzUmFuZ2UgPyAnZmQtc2xpZGVyLS1yYW5nZScgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuc2hvd1RpY2tzICYmIHRoaXMuc2hvd1RpY2tzTGFiZWxzID8gJ2ZkLXNsaWRlci0td2l0aC1sYWJlbHMnIDogJycsXG4gICAgICAgICAgICB0aGlzLnZlcnRpY2FsID8gJ2ZkLXNsaWRlci0tdmVydGljYWwnIDogJycsXG4gICAgICAgICAgICB0aGlzLmNsYXNzLFxuICAgICAgICAgICAgdGhpcy5fcGxhdGZvcm0uRURHRSB8fCB0aGlzLl9wbGF0Zm9ybS5UUklERU5UID8gJ2ZkLXNsaWRlcl9fYWx0ZXJuYXRpdmUtdGljay13aWR0aCcgOiAnJ1xuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVRvUnRsKCk7XG4gICAgICAgIHRoaXMuX2F0dGFjaFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMuX29uUmVzaXplKCk7XG4gICAgICAgIGlmICh0aGlzLl92YWx1ZXNCeVN0ZXBzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5fY29uc3RydWN0VmFsdWVzQnlTdGVwcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgICAgICB0aGlzLl9jaGVja0lzSW5SYW5nZU1vZGUoKTtcbiAgICAgICAgdGhpcy5fY29uc3RydWN0VGlja01hcmtzKCk7XG4gICAgICAgIHRoaXMuX2NvbnN0cnVjdFZhbHVlc0J5U3RlcHMoKTtcbiAgICAgICAgdGhpcy5fcmVjYWxjSGFuZGxlUG9zaXRpb25zKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvSW50ZXJhY3Rpb25DaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldFZhbHVlbm93KHBvc2l0aW9uOiBudW1iZXIgfCBudW1iZXJbXSwgc2xpZGVyVmFsdWVUYXJnZXQ6IFNsaWRlclZhbHVlVGFyZ2V0cyk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHRoaXMuY3VzdG9tVmFsdWVzW3Bvc2l0aW9uIGFzIG51bWJlcl0ubGFiZWxcbiAgICAgICAgICAgIDogdGhpcy5fcG9wb3ZlclZhbHVlUmVmW3NsaWRlclZhbHVlVGFyZ2V0XTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBtaW5WYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCA/IHRoaXMuY3VzdG9tVmFsdWVzW3RoaXMubWluIGFzIG51bWJlcl0ubGFiZWwgOiB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBtYXhWYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCA/IHRoaXMuY3VzdG9tVmFsdWVzW3RoaXMubWF4IGFzIG51bWJlcl0ubGFiZWwgOiB0aGlzLm1heDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiAodmFsdWU6IFNsaWRlckNvbnRyb2xWYWx1ZSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBTbGlkZXJDb250cm9sVmFsdWUpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWU6IFNsaWRlckNvbnRyb2xWYWx1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXRWYWx1ZSh2YWx1ZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25UcmFja0NsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuX2lzUmFuZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXRWYWx1ZSh0aGlzLl9jYWxjdWxhdGVWYWx1ZUZyb21Qb2ludGVyUG9zaXRpb24oZXZlbnQpKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlUG9wb3ZlcnNQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLmhhbmRsZS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkhhbmRsZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBncm91cCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZmlyc3RIYW5kbGVDb29yZHM6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTtcbiAgICAgICAgbGV0IHJhbmdlU2xpZGVyU3RhcnRDb29yZHM6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTtcblxuICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgIHJhbmdlU2xpZGVyU3RhcnRDb29yZHMgPSB7XG4gICAgICAgICAgICAgICAgeDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICAgICAgICB5OiBldmVudC5jbGllbnRZXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBmaXJzdEhhbmRsZVJlY3QgPSB0aGlzLnJhbmdlSGFuZGxlMS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgICAgICBmaXJzdEhhbmRsZUNvb3JkcyA9IHtcbiAgICAgICAgICAgICAgICB4OiBmaXJzdEhhbmRsZVJlY3QueCArIGZpcnN0SGFuZGxlUmVjdC53aWR0aCAvIDIsXG4gICAgICAgICAgICAgICAgeTogZmlyc3RIYW5kbGVSZWN0LnkgKyBmaXJzdEhhbmRsZVJlY3QuaGVpZ2h0IC8gMlxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVuc3Vic2NyaWJlRnJvbU1vdXNlbW92ZSA9IHRoaXMuX3JlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnbW91c2Vtb3ZlJywgKG1vdmVFdmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlUG9wb3ZlcnNQb3NpdGlvbigpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1JhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5fY2FsY3VsYXRlVmFsdWVGcm9tUG9pbnRlclBvc2l0aW9uKG1vdmVFdmVudCkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGNvb3JkcyA9IHtcbiAgICAgICAgICAgICAgICBjbGllbnRYOiBtb3ZlRXZlbnQuY2xpZW50WCxcbiAgICAgICAgICAgICAgICBjbGllbnRZOiBtb3ZlRXZlbnQuY2xpZW50WVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbGV0IGhhbmRsZUluZGV4OiBTbGlkZXJSYW5nZUhhbmRsZXM7XG4gICAgICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVJbmRleCA9IFNsaWRlclJhbmdlSGFuZGxlcy5Cb3RoO1xuICAgICAgICAgICAgICAgIC8vIE1pbWljIGRyYWdnaW5nIGZpcnN0IGhhbmRsZSB0byBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBvbGQgYW5kIG5ldyB2YWx1ZXMuXG4gICAgICAgICAgICAgICAgY29vcmRzID0ge1xuICAgICAgICAgICAgICAgICAgICBjbGllbnRYOiBmaXJzdEhhbmRsZUNvb3JkcyEueCArIChtb3ZlRXZlbnQuY2xpZW50WCAtIHJhbmdlU2xpZGVyU3RhcnRDb29yZHMhLngpLFxuICAgICAgICAgICAgICAgICAgICBjbGllbnRZOiBmaXJzdEhhbmRsZUNvb3JkcyEueSArIChtb3ZlRXZlbnQuY2xpZW50WSAtIHJhbmdlU2xpZGVyU3RhcnRDb29yZHMhLnkpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzLnJhbmdlSGFuZGxlMS5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlSW5kZXggPSBTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcy5yYW5nZUhhbmRsZTIubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGhhbmRsZUluZGV4ID0gU2xpZGVyUmFuZ2VIYW5kbGVzLlNlY29uZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2NhbGN1bGF0ZVZhbHVlRnJvbVBvaW50ZXJQb3NpdGlvbihjb29yZHMsIGZhbHNlKSBhcyBudW1iZXI7XG4gICAgICAgICAgICB0aGlzLl9zZXRSYW5nZUhhbmRsZVZhbHVlQW5kUG9zaXRpb24oaGFuZGxlSW5kZXgsIHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlKHRoaXMuX2NvbnN0cnVjdFJhbmdlTW9kZWxWYWx1ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHVuc3Vic2NyaWJlRnJvbU1vdXNldXAgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNldXAnLCAoKSA9PiB7XG4gICAgICAgICAgICB1bnN1YnNjcmliZUZyb21Nb3VzZW1vdmUoKTtcbiAgICAgICAgICAgIHVuc3Vic2NyaWJlRnJvbU1vdXNldXAoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGhhbmRsZT86IFNsaWRlclJhbmdlSGFuZGxlcyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFsbG93ZWRLZXlzOiBudW1iZXJbXSA9IFtMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgVVBfQVJST1csIERPV05fQVJST1csIEVOVEVSLCBTUEFDRV07XG4gICAgICAgIGlmICghS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIGFsbG93ZWRLZXlzKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IHVwQWN0aW9uS2V5ID0gS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtVUF9BUlJPVywgdGhpcy5faXNSdGwgPyBMRUZUX0FSUk9XIDogUklHSFRfQVJST1ddKTtcbiAgICAgICAgY29uc3QgZG93bkFjdGlvbktleSA9IEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRE9XTl9BUlJPVywgdGhpcy5faXNSdGwgPyBSSUdIVF9BUlJPVyA6IExFRlRfQVJST1ddKTtcblxuICAgICAgICBpZiAoIXVwQWN0aW9uS2V5ICYmICFkb3duQWN0aW9uS2V5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaWZmID0gZXZlbnQuc2hpZnRLZXkgPyB0aGlzLmp1bXAgOiB0aGlzLnN0ZXA7XG4gICAgICAgIGxldCBuZXdWYWx1ZTogbnVtYmVyIHwgU2xpZGVyVGlja01hcmsgfCBudWxsID0gbnVsbDtcbiAgICAgICAgaWYgKCF0aGlzLl9pc1JhbmdlKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9ICh0aGlzLl9wb3NpdGlvbiBhcyBudW1iZXIpICsgZGlmZiAqICh1cEFjdGlvbktleSA/IDEgOiAtMSk7XG5cbiAgICAgICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbmV3VmFsdWUgPSB0aGlzLl9wcm9jZXNzTmV3VmFsdWUobmV3VmFsdWUgYXMgbnVtYmVyLCAhdGhpcy5faXNSYW5nZSk7XG5cbiAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2hhbmRsZVJhbmdlS2V5ZG93bihcbiAgICAgICAgICAgIGhhbmRsZSA9PT0gU2xpZGVyUmFuZ2VIYW5kbGVzLkJvdGggPyBbU2xpZGVyUmFuZ2VIYW5kbGVzLkZpcnN0LCBTbGlkZXJSYW5nZUhhbmRsZXMuU2Vjb25kXSA6IGhhbmRsZSEsXG4gICAgICAgICAgICBkaWZmLFxuICAgICAgICAgICAgdXBBY3Rpb25LZXlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl91cGRhdGVQb3BvdmVyc1Bvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXBkYXRlVmFsdWVGcm9tSW5wdXQodmFsdWU6IHN0cmluZywgdGFyZ2V0OiBTbGlkZXJWYWx1ZVRhcmdldHMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLl9wcm9jZXNzTmV3VmFsdWUoK3ZhbHVlKSBhcyBudW1iZXI7XG4gICAgICAgIGlmICghdGhpcy5faXNSYW5nZSAmJiB0YXJnZXQgPT09IFNsaWRlclZhbHVlVGFyZ2V0cy5TSU5HTEVfU0xJREVSKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVQb3BvdmVyc1Bvc2l0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldCA9PT0gU2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjEpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFJhbmdlSGFuZGxlVmFsdWVBbmRQb3NpdGlvbihTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3QsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VIYW5kbGUxLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFyZ2V0ID09PSBTbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMikge1xuICAgICAgICAgICAgdGhpcy5fc2V0UmFuZ2VIYW5kbGVWYWx1ZUFuZFBvc2l0aW9uKFNsaWRlclJhbmdlSGFuZGxlcy5TZWNvbmQsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VIYW5kbGUyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXRWYWx1ZSh0aGlzLl9jb25zdHJ1Y3RSYW5nZU1vZGVsVmFsdWUoKSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVJhbmdlS2V5ZG93bihoYW5kbGVzOiBTbGlkZXJSYW5nZUhhbmRsZXMgfCBTbGlkZXJSYW5nZUhhbmRsZXNbXSwgZGlmZjogbnVtYmVyLCB1cDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBoYW5kbGVzID0gQXJyYXkuaXNBcnJheShoYW5kbGVzKSA/IGhhbmRsZXMgOiBbaGFuZGxlc107XG4gICAgICAgIGNvbnN0IHZhbHVlTWFwID0gbmV3IE1hcDxcbiAgICAgICAgICAgIFNsaWRlclJhbmdlSGFuZGxlcyxcbiAgICAgICAgICAgIHsgcHJldjogbnVtYmVyIHwgU2xpZGVyVGlja01hcmsgfCBudWxsOyBjdXJyZW50OiBudW1iZXIgfCBTbGlkZXJUaWNrTWFyayB8IG51bGwgfVxuICAgICAgICA+KCk7XG4gICAgICAgIGhhbmRsZXMuZm9yRWFjaCgoaGFuZGxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcmV2VmFsdWUgPSBoYW5kbGUgPT09IFNsaWRlclJhbmdlSGFuZGxlcy5GaXJzdCA/IHRoaXMuX2hhbmRsZTFWYWx1ZSA6IHRoaXMuX2hhbmRsZTJWYWx1ZTtcbiAgICAgICAgICAgIGxldCBuZXdWYWx1ZTogbnVtYmVyIHwgU2xpZGVyVGlja01hcmsgfCBudWxsID0gcHJldlZhbHVlICsgZGlmZiAqICh1cCA/IDEgOiAtMSk7XG4gICAgICAgICAgICBpZiAobmV3VmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5fcHJvY2Vzc05ld1ZhbHVlKG5ld1ZhbHVlIGFzIG51bWJlciwgIXRoaXMuX2lzUmFuZ2UpO1xuXG4gICAgICAgICAgICB2YWx1ZU1hcC5zZXQoaGFuZGxlLCB7IHByZXY6IHByZXZWYWx1ZSwgY3VycmVudDogbmV3VmFsdWUgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChBcnJheS5mcm9tKHZhbHVlTWFwLnZhbHVlcygpKS5zb21lKChlbnRyeSkgPT4gZW50cnkuY3VycmVudCA9PT0gZW50cnkucHJldikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhbHVlTWFwLmZvckVhY2goKGVudHJ5LCBoYW5kbGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3NldFJhbmdlSGFuZGxlVmFsdWVBbmRQb3NpdGlvbihoYW5kbGUsIGVudHJ5LmN1cnJlbnQgYXMgbnVtYmVyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5fY29uc3RydWN0UmFuZ2VNb2RlbFZhbHVlKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VmFsdWUodmFsdWU6IFNsaWRlckNvbnRyb2xWYWx1ZSwgZW1pdEV2ZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNSYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5faW5pdFJhbmdlTW9kZSgodmFsdWUgPz8gWzAuMF0pIGFzIG51bWJlcltdIHwgU2xpZGVyVGlja01hcmtbXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0U2luZ2VNb2RlKCh2YWx1ZSA/PyAwKSBhcyBudW1iZXIgfCBTbGlkZXJUaWNrTWFyayk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKGVtaXRFdmVudCkge1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlUG9wb3ZlcnNQb3NpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5fcG9wb3ZlcnMuZm9yRWFjaCgocG9wb3ZlcikgPT4gcG9wb3Zlci5yZWZyZXNoUG9zaXRpb24oKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVWYWx1ZUZyb21Qb2ludGVyUG9zaXRpb24oXG4gICAgICAgIGNvb3JkczogeyBjbGllbnRZOiBudW1iZXI7IGNsaWVudFg6IG51bWJlciB9LFxuICAgICAgICB0YWtlQ3VzdG9tVmFsdWUgPSB0cnVlXG4gICAgKTogbnVtYmVyIHwgU2xpZGVyVGlja01hcmsge1xuICAgICAgICBjb25zdCB7IGxlZnQsIHdpZHRoLCBib3R0b20sIGhlaWdodCB9ID0gdGhpcy50cmFja0VsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGxldCBwZXJjZW50YWdlID0gdGhpcy52ZXJ0aWNhbCA/IChib3R0b20gLSBjb29yZHMuY2xpZW50WSkgLyBoZWlnaHQgOiAoY29vcmRzLmNsaWVudFggLSBsZWZ0KSAvIHdpZHRoO1xuXG4gICAgICAgIGlmICh0aGlzLl9pc1J0bCkge1xuICAgICAgICAgICAgcGVyY2VudGFnZSA9IDEgLSBwZXJjZW50YWdlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5taW4gKyBwZXJjZW50YWdlICogKHRoaXMubWF4IC0gdGhpcy5taW4pO1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc05ld1ZhbHVlKG5ld1ZhbHVlLCB0YWtlQ3VzdG9tVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc05ld1ZhbHVlKG5ld1ZhbHVlOiBudW1iZXIsIHRha2VDdXN0b21WYWx1ZSA9IHRydWUpOiBudW1iZXIgfCBTbGlkZXJUaWNrTWFyayB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdWYWx1ZSA8IHRoaXMubWluKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMubWluO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VzZVNsaWRlclZhbHVlUHJlZml4ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgY29uc3Qgc3RlcERpZmZBcnJheSA9IHRoaXMuX3ZhbHVlc0J5U3RlcHNcbiAgICAgICAgICAgIC5tYXAoKHN0ZXBWYWx1ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICBkaWZmOiBNYXRoLmFicyhzdGVwVmFsdWUgLSBuZXdWYWx1ZSksXG4gICAgICAgICAgICAgICAgdmFsdWU6IHN0ZXBWYWx1ZVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5kaWZmIC0gYi5kaWZmKTtcbiAgICAgICAgbGV0IHZhbHVlOiBTbGlkZXJUaWNrTWFyayB8IG51bWJlciA9IHN0ZXBEaWZmQXJyYXlbMF0udmFsdWU7XG4gICAgICAgIGlmICh0YWtlQ3VzdG9tVmFsdWUgJiYgdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmN1c3RvbVZhbHVlc1t2YWx1ZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0UmFuZ2VIYW5kbGVWYWx1ZUFuZFBvc2l0aW9uKGhhbmRsZUluZGV4OiBTbGlkZXJSYW5nZUhhbmRsZXMsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLl9jYWxjUHJvZ3Jlc3ModmFsdWUsIHRydWUpO1xuICAgICAgICBpZiAoaGFuZGxlSW5kZXggPT09IFNsaWRlclJhbmdlSGFuZGxlcy5GaXJzdCkge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMVZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGUxUG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgfSBlbHNlIGlmIChoYW5kbGVJbmRleCA9PT0gU2xpZGVyUmFuZ2VIYW5kbGVzLlNlY29uZCkge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMlZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGUyUG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgfSBlbHNlIGlmIChoYW5kbGVJbmRleCA9PT0gU2xpZGVyUmFuZ2VIYW5kbGVzLkJvdGgpIHtcbiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBob3cgbXVjaCBzdGVwcyBiZWluZyBza2lwcGVkLlxuICAgICAgICAgICAgY29uc3Qgb2xkVmFsdWVJbmRleCA9IHRoaXMuX3ZhbHVlc0J5U3RlcHMuaW5kZXhPZih0aGlzLl9oYW5kbGUxVmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWVJbmRleCA9IHRoaXMuX3ZhbHVlc0J5U3RlcHMuaW5kZXhPZih2YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBkaWZmID0gb2xkVmFsdWVJbmRleCAtIG5ld1ZhbHVlSW5kZXg7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGUyVmFsdWVJbmRleCA9IHRoaXMuX3ZhbHVlc0J5U3RlcHMuaW5kZXhPZih0aGlzLl9oYW5kbGUyVmFsdWUpO1xuXG4gICAgICAgICAgICBpZiAoZGlmZiA9PT0gMCB8fCB0aGlzLl92YWx1ZXNCeVN0ZXBzLmxlbmd0aCA8PSBoYW5kbGUyVmFsdWVJbmRleCAtIGRpZmYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uU2hpZnQgPSBwb3NpdGlvbiAtIHRoaXMuX2hhbmRsZTFQb3NpdGlvbjtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZTFQb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMlBvc2l0aW9uID0gdGhpcy5faGFuZGxlMlBvc2l0aW9uICsgcG9zaXRpb25TaGlmdDtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZTFWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMlZhbHVlID0gdGhpcy5fdmFsdWVzQnlTdGVwc1toYW5kbGUyVmFsdWVJbmRleCAtIGRpZmZdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3JhbmdlUHJvZ3Jlc3MgPSBNYXRoLmFicyh0aGlzLl9oYW5kbGUyUG9zaXRpb24gLSB0aGlzLl9oYW5kbGUxUG9zaXRpb24pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29uc3RydWN0UmFuZ2VNb2RlbFZhbHVlKCk6IG51bWJlcltdIHwgU2xpZGVyVGlja01hcmtbXSB7XG4gICAgICAgIGxldCByYW5nZUxvd2VyVmFsdWU6IG51bWJlciB8IHN0cmluZztcbiAgICAgICAgbGV0IHJhbmdlSGlnaGVyVmFsdWU6IG51bWJlciB8IHN0cmluZztcbiAgICAgICAgbGV0IHJhbmdlVmFsdWU6IG51bWJlcltdIHwgU2xpZGVyVGlja01hcmtbXSA9IFtcbiAgICAgICAgICAgIE1hdGgubWluKHRoaXMuX2hhbmRsZTFWYWx1ZSwgdGhpcy5faGFuZGxlMlZhbHVlKSxcbiAgICAgICAgICAgIE1hdGgubWF4KHRoaXMuX2hhbmRsZTFWYWx1ZSwgdGhpcy5faGFuZGxlMlZhbHVlKVxuICAgICAgICBdO1xuICAgICAgICByYW5nZUxvd2VyVmFsdWUgPSByYW5nZVZhbHVlWzBdO1xuICAgICAgICByYW5nZUhpZ2hlclZhbHVlID0gcmFuZ2VWYWx1ZVsxXTtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tVmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG1pbiA9IHRoaXMuY3VzdG9tVmFsdWVzW3JhbmdlVmFsdWVbMF1dIHx8IHRoaXMuY3VzdG9tVmFsdWVzWzBdO1xuICAgICAgICAgICAgY29uc3QgbWF4ID0gdGhpcy5jdXN0b21WYWx1ZXNbcmFuZ2VWYWx1ZVsxXV0gfHwgdGhpcy5jdXN0b21WYWx1ZXNbdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICByYW5nZVZhbHVlID0gW21pbiwgbWF4XTtcbiAgICAgICAgICAgIHJhbmdlTG93ZXJWYWx1ZSA9IHJhbmdlVmFsdWVbMF0ubGFiZWw7XG4gICAgICAgICAgICByYW5nZUhpZ2hlclZhbHVlID0gcmFuZ2VWYWx1ZVsxXS5sYWJlbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9saXZlQW5ub3VuY2VyLmFubm91bmNlKCdyYW5nZSB2YWx1ZSBiZXR3ZWVuICcgKyByYW5nZUxvd2VyVmFsdWUgKyAnIGFuZCAnICsgcmFuZ2VIaWdoZXJWYWx1ZSwgJ3BvbGl0ZScpO1xuICAgICAgICByZXR1cm4gcmFuZ2VWYWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2F0dGFjaFJlc2l6ZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MDApLCB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX29uUmVzaXplKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbnN0cnVjdFRpY2tNYXJrcygpO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb25zdHJ1Y3RWYWx1ZXNCeVN0ZXBzKCk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWVzQnlTdGVwcyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZW5ndGg6ICh0aGlzLm1heCAtIHRoaXMubWluKSAvIHRoaXMuc3RlcCArIDFcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChfLCBpKSA9PiBOdW1iZXIoKHRoaXMubWluICsgaSAqIHRoaXMuc3RlcCkudG9GaXhlZCgyKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb25zdHJ1Y3RUaWNrTWFya3MoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpY2tNYXJrcyA9IFtdO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubWluID0gMDtcbiAgICAgICAgICAgIHRoaXMubWF4ID0gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICBjb25zdCBjdXN0b21WYWx1ZXNMZW5ndGggPSB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgdGhpcy5fdGlja01hcmtzID0gdGhpcy5jdXN0b21WYWx1ZXMubWFwKChpdGVtLCBpKSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICgxMDAgLyBjdXN0b21WYWx1ZXNMZW5ndGgpICogaVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdG90YWwgPSB0aGlzLm1heCAtIHRoaXMubWluO1xuICAgICAgICAgICAgY29uc3QgdGlja01hcmtzQ291bnQgPSB0b3RhbCAvIHRoaXMuc3RlcCArIDE7XG4gICAgICAgICAgICBpZiAodGhpcy5fbWF4VGlja01hcmtzTnVtYmVyICE9PSB1bmRlZmluZWQgJiYgdGlja01hcmtzQ291bnQgPiB0aGlzLl9tYXhUaWNrTWFya3NOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90aWNrTWFya3MgPSBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYCR7dGhpcy5taW59YFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRvdGFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGAke3RoaXMubWF4fWBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRpY2tNYXJrc0NvdW50ICUgMSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tNYXJrcyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aDogdGlja01hcmtzQ291bnRcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgKF8sIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gTWF0aC5yb3VuZChpICogdGhpcy5zdGVwICogMTAwKSAvIDEwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gKHZhbHVlIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pKSAqIDEwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGAke3RoaXMubWluICsgdmFsdWV9YFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9tYXhUaWNrTWFya3NOdW1iZXIoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0aGlzLnRyYWNrRWwgfHwgIXRoaXMudHJhY2tFbC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXMudHJhY2tFbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKCh0aGlzLnZlcnRpY2FsID8gaGVpZ2h0IDogd2lkdGgpIC8gTUlOX0RJU1RBTkNFX0JFVFdFRU5fVElDS1MpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY1Byb2dyZXNzKHZhbHVlOiBudW1iZXIsIHNraXBSdGwgPSBmYWxzZSk6IG51bWJlciB7XG4gICAgICAgIGxldCBwcm9ncmVzcyA9ICgodmFsdWUgLSB0aGlzLm1pbikgLyAodGhpcy5tYXggLSB0aGlzLm1pbikpICogMTAwO1xuICAgICAgICBpZiAoIXNraXBSdGwgJiYgdGhpcy5faXNSdGwpIHtcbiAgICAgICAgICAgIHByb2dyZXNzID0gMTAwIC0gcHJvZ3Jlc3M7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb2dyZXNzID4gMTAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMTAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9ncmVzcyA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9ncmVzcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlY2FsY0hhbmRsZVBvc2l0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzUmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZTFQb3NpdGlvbiA9IHRoaXMuX2NhbGNQcm9ncmVzcyh0aGlzLl9oYW5kbGUxVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMlBvc2l0aW9uID0gdGhpcy5fY2FsY1Byb2dyZXNzKHRoaXMuX2hhbmRsZTJWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9yYW5nZVByb2dyZXNzID0gTWF0aC5hYnModGhpcy5faGFuZGxlMlBvc2l0aW9uIC0gdGhpcy5faGFuZGxlMVBvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wcm9ncmVzcyA9IHRoaXMuX2NhbGNQcm9ncmVzcyh0aGlzLl9wb3NpdGlvbiBhcyBudW1iZXIsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2hlY2tJc0luUmFuZ2VNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc1JhbmdlID0gdGhpcy5tb2RlID09PSAncmFuZ2UnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJ0bCBjaGFuZ2Ugc3Vic2NyaXB0aW9uICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9SdGwoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fcnRsU2VydmljZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2UucnRsLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGlzUnRsOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9pc1J0bCA9IGlzUnRsO1xuICAgICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRTaW5nZU1vZGUodmFsdWU6IG51bWJlciB8IFNsaWRlclRpY2tNYXJrKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0U2luZ2VNb2RlV2l0aEN1c3RvbVZhbHVlKHZhbHVlIGFzIFNsaWRlclRpY2tNYXJrKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbml0U2luZ2VNb2RlRGVmYXVsdChjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdGhpcy5taW4pKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRTaW5nZU1vZGVEZWZhdWx0KHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSB0aGlzLl9jYWxjUHJvZ3Jlc3ModmFsdWUsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdFNpbmdlTW9kZVdpdGhDdXN0b21WYWx1ZShzbGlkZXJUaWNrTWFyazogU2xpZGVyVGlja01hcmspOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSAodGhpcy5fZ2V0Q3VzdG9tVmFsdWVzUG9zaXRpb24oc2xpZGVyVGlja01hcmspIGFzIG51bWJlcikgfHwgdGhpcy5taW47XG4gICAgICAgIHRoaXMuX2luaXRTaW5nZU1vZGVEZWZhdWx0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRSYW5nZU1vZGUodmFsdWU6IG51bWJlcltdIHwgU2xpZGVyVGlja01hcmtbXSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5faW5pdFJhbmdlTW9kZVdpdGhDdXN0b21WYWx1ZXModmFsdWUgYXMgU2xpZGVyVGlja01hcmtbXSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlyc3RIYW5kbGUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZVswXSwgdGhpcy5taW4pO1xuICAgICAgICBjb25zdCBzZWNvbmRIYW5kbGUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZVsxXSwgdGhpcy5tYXgpO1xuICAgICAgICB0aGlzLl9pbml0UmFuZ2VNb2RlRGVmYXVsdChbZmlyc3RIYW5kbGUsIHNlY29uZEhhbmRsZV0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdFJhbmdlTW9kZURlZmF1bHQoW2ZpcnN0SGFuZGxlLCBzZWNvbmRIYW5kbGVdOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3NpdGlvbiA9IFtmaXJzdEhhbmRsZSwgc2Vjb25kSGFuZGxlXTtcbiAgICAgICAgdGhpcy5fc2V0UmFuZ2VIYW5kbGVWYWx1ZUFuZFBvc2l0aW9uKFNsaWRlclJhbmdlSGFuZGxlcy5GaXJzdCwgZmlyc3RIYW5kbGUpO1xuICAgICAgICB0aGlzLl9zZXRSYW5nZUhhbmRsZVZhbHVlQW5kUG9zaXRpb24oU2xpZGVyUmFuZ2VIYW5kbGVzLlNlY29uZCwgc2Vjb25kSGFuZGxlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRSYW5nZU1vZGVXaXRoQ3VzdG9tVmFsdWVzKFtmaXJzdEhhbmRsZSwgc2Vjb25kSGFuZGxlXTogU2xpZGVyVGlja01hcmtbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2dldEN1c3RvbVZhbHVlc1Bvc2l0aW9uKFtmaXJzdEhhbmRsZSwgc2Vjb25kSGFuZGxlXSkgfHwgW3RoaXMubWluLCB0aGlzLm1heF07XG4gICAgICAgIHRoaXMuX2luaXRSYW5nZU1vZGVEZWZhdWx0KHZhbHVlIGFzIG51bWJlcltdKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEN1c3RvbVZhbHVlc1Bvc2l0aW9uKHZhbHVlOiBTbGlkZXJUaWNrTWFyayB8IFNsaWRlclRpY2tNYXJrW10pOiBudW1iZXIgfCBudW1iZXJbXSB7XG4gICAgICAgIHRoaXMubWluID0gMDtcbiAgICAgICAgdGhpcy5tYXggPSB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggLSAxO1xuICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0Q3VzdG9tVmFsdWVzUG9zaXRpb25zKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEN1c3RvbVZhbHVlc1Bvc2l0aW9ucyh2YWx1ZTogU2xpZGVyVGlja01hcmsgfCBTbGlkZXJUaWNrTWFya1tdKTogbnVtYmVyIHwgbnVtYmVyW10ge1xuICAgICAgICBpZiAoIXZhbHVlIHx8ICh2YWx1ZSBhcyBTbGlkZXJUaWNrTWFya1tdKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1JhbmdlID8gWzAsIHRoaXMuY3VzdG9tVmFsdWVzLmxlbmd0aCAtIDFdIDogMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGxldCBbZmlyc3RIYW5kbGUsIHNlY29uZEhhbmRsZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIGlmICghdGhpcy5faW5zdGFuY2VPZkN1c3RvbVZhbHVlKGZpcnN0SGFuZGxlKSkge1xuICAgICAgICAgICAgICAgIGZpcnN0SGFuZGxlID0gdGhpcy5jdXN0b21WYWx1ZXNbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlT2ZDdXN0b21WYWx1ZShzZWNvbmRIYW5kbGUpKSB7XG4gICAgICAgICAgICAgICAgc2Vjb25kSGFuZGxlID0gdGhpcy5jdXN0b21WYWx1ZXNbdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBmaXJzdEhhbmRsZVBvc2l0aW9uID0gdGhpcy5jdXN0b21WYWx1ZXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLnZhbHVlID09PSBmaXJzdEhhbmRsZS52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBzZWNvbmRIYW5kbGVQb3NpdGlvbiA9IHRoaXMuY3VzdG9tVmFsdWVzLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS52YWx1ZSA9PT0gc2Vjb25kSGFuZGxlLnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ZXMgPSBbXG4gICAgICAgICAgICAgICAgZmlyc3RIYW5kbGVQb3NpdGlvbiA+PSAwID8gZmlyc3RIYW5kbGVQb3NpdGlvbiA6IDAsXG4gICAgICAgICAgICAgICAgc2Vjb25kSGFuZGxlUG9zaXRpb24gPj0gMCA/IHNlY29uZEhhbmRsZVBvc2l0aW9uIDogdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHJldHVybiBpbmRleGVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGZpcnN0SGFuZGxlID0gdmFsdWUgYXMgU2xpZGVyVGlja01hcms7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlT2ZDdXN0b21WYWx1ZShmaXJzdEhhbmRsZSkpIHtcbiAgICAgICAgICAgICAgICBmaXJzdEhhbmRsZSA9IHRoaXMuY3VzdG9tVmFsdWVzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tVmFsdWVzLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS52YWx1ZSA9PT0gZmlyc3RIYW5kbGUudmFsdWUpIHx8IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luc3RhbmNlT2ZDdXN0b21WYWx1ZShvYmplY3Q6IGFueSk6IG9iamVjdCBpcyBTbGlkZXJDdXN0b21WYWx1ZSB7XG4gICAgICAgIHJldHVybiAhIW9iamVjdCAmJiAndmFsdWUnIGluIG9iamVjdCAmJiAnbGFiZWwnIGluIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvSW50ZXJhY3Rpb25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZUZvY3VzZWQkLFxuICAgICAgICAgICAgdGhpcy5fcmFuZ2VIYW5kbGUxRm9jdXNlZCQsXG4gICAgICAgICAgICB0aGlzLl9yYW5nZUhhbmRsZTJGb2N1c2VkJCxcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJJbnB1dEZpZWxkRm9jdXNlZCQsXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRIb3ZlcmVkJCxcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJJbnB1dEZpZWxkSG92ZXJlZCRcbiAgICAgICAgXSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgbWFwKChzdGF0ZXMpID0+IHN0YXRlcy5zb21lKEJvb2xlYW4pKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGZvY3VzZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBub3QgZm9jdXNlZCwgY2hlY2sgZm9yIHRoZSBlZGdlIGNhc2UsXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gaG92ZXIgaXMgb24gdGhlIGZkLXBvcG92ZXItYm9keSwgdGhhdCBpcyBhIHBhcmVudCBmb3IgdGhlIHRvb2x0aXAuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gdHJ1ZSwgd2hlbiBob3ZlcmluZyB0aGUgZ2FwIGJldHdlZW4gaGFuZGxlIGFuZCB0aGUgdG9vbHRpcC5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzUG9wb3ZlckhvdmVyZWQoKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMTApLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChmb2N1c2VkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcG9wb3ZlcnMuZm9yRWFjaCgocG9wb3ZlcikgPT4gcG9wb3Zlci5vcGVuKCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0UHJlZml4KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJzLmZvckVhY2goKHBvcG92ZXIpID0+IHBvcG92ZXIuY2xvc2UoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gcmVzZXQgZGVmYXVsdCBwcmVmaXggb24gbGVhdmluZyB0aGUgc2xpZGVyICovXG4gICAgcHJpdmF0ZSBfcmVzZXRQcmVmaXgoKTogdm9pZCB7XG4gICAgICAgIC8vIHJlc2V0IHByZWZpeCBzdHJpbmcgZm9yIHNsaWRlciBjdXJyZW50IHZhbHVlIHRoYXQgbmVlZCB0byBiZSBhbm5vdW5jZWRcbiAgICAgICAgdGhpcy5fdXNlU2xpZGVyVmFsdWVQcmVmaXggPSB0cnVlO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENoZWNrcyB3aGV0aGVyIGlucHV0IHBvcG92ZXIgZWxlbWVudCBpcyBob3ZlcmVkLlxuICAgICAqIFdpbGwgYWxzbyByZXR1cm4gdHJ1ZSwgd2hlbiBob3ZlcmluZyB0aGUgZ2FwIGJldHdlZW4gaGFuZGxlIGFuZCB0aGUgdG9vbHRpcC5cbiAgICAgKiBJZiB5ZXMsIHJldHVybnMgXCJ0cnVlXCIgaW5zdGFudGx5IGFuZCBcImZhbHNlXCIgb25jZSBpdCdzIG5vdCBob3ZlcmVkIGFueW1vcmUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaXNQb3BvdmVySG92ZXJlZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgcG9wb3ZlckJvZHkgPSB0aGlzLl9zbGlkZXJUb29sdGlwV3JhcHBlcnMuZmlyc3Q/Lm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnZmQtcG9wb3Zlci1ib2R5Jyk7XG4gICAgICAgIGlmIChwb3BvdmVyQm9keT8ubWF0Y2hlcygnOmhvdmVyJykpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tRXZlbnQocG9wb3ZlckJvZHksICdtb3VzZWxlYXZlJykucGlwZShtYXBUbyhmYWxzZSksIHRha2UoMSksIHN0YXJ0V2l0aCh0cnVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmQtc2xpZGVyX19pbm5lclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJfaXNSYW5nZSA/IHJhbmdlTW9kZSA6IHNpbmdsZU1vZGVcIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgY2xhc3M9XCJmZC1zbGlkZXJfX3RyYWNrXCIgKGNsaWNrKT1cIm9uVHJhY2tDbGljaygkZXZlbnQpXCIgI3RyYWNrPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiX2lzUmFuZ2UgPyByYW5nZU1vZGVUcmFjayA6IHNpbmdsZU1vZGVUcmFja1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZkLXNsaWRlcl9fdGljay13cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZC1zbGlkZXJfX3RpY2tzXCIgKGNsaWNrKT1cIm9uVHJhY2tDbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RpY2tzXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGljayBvZiBfdGlja01hcmtzOyBpbmRleCBhcyBpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyX190aWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLXNsaWRlci1wb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZlcnRpY2FsXT1cInZlcnRpY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJ0aWNrLnBvc2l0aW9uIHx8IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkLXNsaWRlcl9fdGljay0taW4tcmFuZ2VdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIWhpZGVQcm9ncmVzc0JhciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfaXNSYW5nZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRpY2sudmFsdWUgPj0gX3Bvc2l0aW9uWzBdICYmIHRpY2sudmFsdWUgPD0gX3Bvc2l0aW9uWzFdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGljay52YWx1ZSA8PSBfcG9zaXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLXNsaWRlcl9fbGFiZWxzXCIgKm5nSWY9XCJzaG93VGlja3MgJiYgc2hvd1RpY2tzTGFiZWxzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0aWNrIG9mIF90aWNrTWFya3M7IGluZGV4IGFzIGk7IGxhc3QgYXMgbGFzdDsgZmlyc3QgYXMgZmlyc3RcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlyc3QgfHwgbGFzdCB8fCBpICUgdGlja21hcmtzQmV0d2VlbkxhYmVscyA9PT0gMFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyX19sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIGZkLXNsaWRlci1wb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICBbdmVydGljYWxdPVwidmVydGljYWxcIlxuICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwidGljay5wb3NpdGlvbiB8fCAwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IHRpY2subGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3NpbmdsZU1vZGVUcmFjaz5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiIWhpZGVQcm9ncmVzc0JhclwiXG4gICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyX190cmFjay1yYW5nZVwiXG4gICAgICAgIFtzdHlsZS5oZWlnaHQuJV09XCJ2ZXJ0aWNhbCA/IF9wcm9ncmVzcyA6IG51bGxcIlxuICAgICAgICBbc3R5bGUud2lkdGguJV09XCJ2ZXJ0aWNhbCA/IG51bGwgOiBfcHJvZ3Jlc3NcIlxuICAgID48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcmFuZ2VNb2RlVHJhY2s+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiFoaWRlUHJvZ3Jlc3NCYXJcIlxuICAgICAgICBjbGFzcz1cImZkLXNsaWRlcl9fdHJhY2stcmFuZ2VcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LiVdPVwidmVydGljYWwgPyBfcmFuZ2VQcm9ncmVzcyA6IG51bGxcIlxuICAgICAgICBbc3R5bGUud2lkdGguJV09XCJ2ZXJ0aWNhbCA/IG51bGwgOiBfcmFuZ2VQcm9ncmVzc1wiXG4gICAgICAgIGZkLXNsaWRlci1wb3NpdGlvblxuICAgICAgICBbdmVydGljYWxdPVwidmVydGljYWxcIlxuICAgICAgICBbcG9zaXRpb25dPVwiX2hhbmRsZTFQb3NpdGlvbiA8IF9oYW5kbGUyUG9zaXRpb24gPyBfaGFuZGxlMVBvc2l0aW9uIDogX2hhbmRsZTJQb3NpdGlvblwiXG4gICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZkLXNsaWRlcl9fdHJhY2stZm9jdXMtcmFuZ2VcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbkhhbmRsZUNsaWNrKCRldmVudCwgdHJ1ZSlcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudCwgX2hhbmRsZXMuQm90aClcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICNyYW5nZUdyb3VwSGFuZGxlXG4gICAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2luZ2xlTW9kZT5cbiAgICA8ZGl2XG4gICAgICAgICNoYW5kbGVcbiAgICAgICAgY2xhc3M9XCJmZC1zbGlkZXJfX2hhbmRsZVwiXG4gICAgICAgIFtjbGFzcy5mZC1zbGlkZXJfX2hhbmRsZS0tbGddPVwiX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuaXNDb3p5JCB8IGFzeW5jXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICByb2xlPVwic2xpZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIGFyaWFMYWJlbCB8fCAoJ2NvcmVTbGlkZXIuc2luZ2xlTWluTWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgbWluOiBtaW5WYWx1ZSwgbWF4OiBtYXhWYWx1ZSB9KVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICBbZmRQb3BvdmVyVHJpZ2dlcl09XCJ0b29sdGlwTW9kZSA/IHNpbmdsZVNsaWRlclBvcG92ZXIgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCInY29yZVNsaWRlci5zaW5nbGVWYWx1ZW1pbkRldGFpbHMnIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBtaW5WYWx1ZSB9XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCInY29yZVNsaWRlci5zaW5nbGVWYWx1ZW1heERldGFpbHMnIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBtYXhWYWx1ZSB9XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJcbiAgICAgICAgICAgIF91c2VTbGlkZXJWYWx1ZVByZWZpeFxuICAgICAgICAgICAgICAgID8gKCdjb3JlU2xpZGVyLnNpbmdsZVZhbHVlTm93RGV0YWlscydcbiAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBnZXRWYWx1ZW5vdyhfcG9zaXRpb24sIF9zbGlkZXJWYWx1ZVRhcmdldHMuU0lOR0xFX1NMSURFUikgfSlcbiAgICAgICAgICAgICAgICA6IGdldFZhbHVlbm93KF9wb3NpdGlvbiwgX3NsaWRlclZhbHVlVGFyZ2V0cy5TSU5HTEVfU0xJREVSKVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVldGV4dF09XCJcbiAgICAgICAgICAgIF91c2VTbGlkZXJWYWx1ZVByZWZpeFxuICAgICAgICAgICAgICAgID8gKCdjb3JlU2xpZGVyLnNpbmdsZVZhbHVlTm93RGV0YWlscydcbiAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBnZXRWYWx1ZW5vdyhfcG9zaXRpb24sIF9zbGlkZXJWYWx1ZVRhcmdldHMuU0lOR0xFX1NMSURFUikgfSlcbiAgICAgICAgICAgICAgICA6IGdldFZhbHVlbm93KF9wb3NpdGlvbiwgX3NsaWRlclZhbHVlVGFyZ2V0cy5TSU5HTEVfU0xJREVSKVxuICAgICAgICBcIlxuICAgICAgICBmZC1zbGlkZXItcG9zaXRpb25cbiAgICAgICAgW3ZlcnRpY2FsXT1cInZlcnRpY2FsXCJcbiAgICAgICAgW3Bvc2l0aW9uXT1cIl9wcm9ncmVzc1wiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25IYW5kbGVDbGljaygkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAoZm9jdXMpPVwiX2hhbmRsZUZvY3VzZWQkLm5leHQodHJ1ZSlcIlxuICAgICAgICAoYmx1cik9XCJfaGFuZGxlRm9jdXNlZCQubmV4dChmYWxzZSlcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgPjwvZGl2PlxuXG4gICAgPGZkLXBvcG92ZXJcbiAgICAgICAgI3NpbmdsZVNsaWRlclBvcG92ZXJcbiAgICAgICAgW3RyaWdnZXJzXT1cIltdXCJcbiAgICAgICAgW2Nsb3NlT25PdXRzaWRlQ2xpY2tdPVwiZmFsc2VcIlxuICAgICAgICBbYXBwZW5kVG9dPVwiaGFuZGxlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiF0b29sdGlwTW9kZVwiXG4gICAgICAgIGNsYXNzPVwiZmQtcG9wb3Zlci0tc2xpZGVyXCJcbiAgICAgICAgYWRkaXRpb25hbEJvZHlDbGFzcz1cImZkLXNsaWRlci0tdG9vbHRpcC1wb3BvdmVyXCJcbiAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgcG9wb3ZlcklubmVyO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgdGFyZ2V0OiBfc2xpZGVyVmFsdWVUYXJnZXRzLlNJTkdMRV9TTElERVIsIHBvc2l0aW9uOiBfcG9zaXRpb24gfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvZmQtcG9wb3Zlcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcmFuZ2VNb2RlPlxuICAgIDxkaXZcbiAgICAgICAgI3JhbmdlSGFuZGxlMVxuICAgICAgICBjbGFzcz1cImZkLXNsaWRlcl9faGFuZGxlXCJcbiAgICAgICAgW2NsYXNzLmZkLXNsaWRlcl9faGFuZGxlLS1sZ109XCJfY29udGVudERlbnNpdHlPYnNlcnZlci5pc0NvenkkIHwgYXN5bmNcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICAgIHJvbGU9XCJzbGlkZXJcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgYXJpYUxhYmVsIHx8ICgnY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTFNaW5NYXhEZXRhaWxzJyB8IGZkVHJhbnNsYXRlIDogeyBtaW46IG1pblZhbHVlLCBtYXg6IG1heFZhbHVlIH0pXG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgIFtmZFBvcG92ZXJUcmlnZ2VyXT1cInRvb2x0aXBNb2RlID8gcmFuZ2VTbGlkZXJQb3BvdmVyMSA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIidjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMVZhbHVlbWluRGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IG1pblZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIidjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMVZhbHVlbWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IG1heFZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cIlxuICAgICAgICAgICAgX3VzZVNsaWRlclZhbHVlUHJlZml4XG4gICAgICAgICAgICAgICAgPyAoJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUxVmFsdWVOb3dEZXRhaWxzJ1xuICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IGdldFZhbHVlbm93KF9oYW5kbGUxVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMSkgfSlcbiAgICAgICAgICAgICAgICA6IGdldFZhbHVlbm93KF9oYW5kbGUxVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMSlcbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZXRleHRdPVwiXG4gICAgICAgICAgICBfdXNlU2xpZGVyVmFsdWVQcmVmaXhcbiAgICAgICAgICAgICAgICA/ICgnY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTFWYWx1ZU5vd0RldGFpbHMnXG4gICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlIDogeyB2YWx1ZTogZ2V0VmFsdWVub3coX2hhbmRsZTFWYWx1ZSwgX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIxKSB9KVxuICAgICAgICAgICAgICAgIDogZ2V0VmFsdWVub3coX2hhbmRsZTFWYWx1ZSwgX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIxKVxuICAgICAgICBcIlxuICAgICAgICBmZC1zbGlkZXItcG9zaXRpb25cbiAgICAgICAgW3ZlcnRpY2FsXT1cInZlcnRpY2FsXCJcbiAgICAgICAgW3Bvc2l0aW9uXT1cIl9oYW5kbGUxUG9zaXRpb25cIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uSGFuZGxlQ2xpY2soJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudCwgX2hhbmRsZXMuRmlyc3QpXCJcbiAgICAgICAgKGZvY3VzKT1cIl9yYW5nZUhhbmRsZTFGb2N1c2VkJC5uZXh0KHRydWUpXCJcbiAgICAgICAgKGJsdXIpPVwiX3JhbmdlSGFuZGxlMUZvY3VzZWQkLm5leHQoZmFsc2UpXCJcbiAgICA+PC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgICNyYW5nZUhhbmRsZTJcbiAgICAgICAgY2xhc3M9XCJmZC1zbGlkZXJfX2hhbmRsZVwiXG4gICAgICAgIFtjbGFzcy5mZC1zbGlkZXJfX2hhbmRsZS0tbGddPVwiX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuaXNDb3p5JCB8IGFzeW5jXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICByb2xlPVwic2xpZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIGFyaWFMYWJlbCB8fCAoJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUyTWluTWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgbWluOiBtaW5WYWx1ZSwgbWF4OiBtYXhWYWx1ZSB9KVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICBbZmRQb3BvdmVyVHJpZ2dlcl09XCJ0b29sdGlwTW9kZSA/IHJhbmdlU2xpZGVyUG9wb3ZlcjIgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCInY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTJWYWx1ZW1pbkRldGFpbHMnIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBtaW5WYWx1ZSB9XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCInY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTJWYWx1ZW1heERldGFpbHMnIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBtYXhWYWx1ZSB9XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJcbiAgICAgICAgICAgIF91c2VTbGlkZXJWYWx1ZVByZWZpeFxuICAgICAgICAgICAgICAgID8gKCdjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMlZhbHVlTm93RGV0YWlscydcbiAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBnZXRWYWx1ZW5vdyhfaGFuZGxlMlZhbHVlLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjIpIH0pXG4gICAgICAgICAgICAgICAgOiBnZXRWYWx1ZW5vdyhfaGFuZGxlMlZhbHVlLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjIpXG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWV0ZXh0XT1cIlxuICAgICAgICAgICAgX3VzZVNsaWRlclZhbHVlUHJlZml4XG4gICAgICAgICAgICAgICAgPyAoJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUyVmFsdWVOb3dEZXRhaWxzJ1xuICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IGdldFZhbHVlbm93KF9oYW5kbGUyVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMikgfSlcbiAgICAgICAgICAgICAgICA6IGdldFZhbHVlbm93KF9oYW5kbGUyVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMilcbiAgICAgICAgXCJcbiAgICAgICAgZmQtc2xpZGVyLXBvc2l0aW9uXG4gICAgICAgIFt2ZXJ0aWNhbF09XCJ2ZXJ0aWNhbFwiXG4gICAgICAgIFtwb3NpdGlvbl09XCJfaGFuZGxlMlBvc2l0aW9uXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbkhhbmRsZUNsaWNrKCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQsIF9oYW5kbGVzLlNlY29uZClcIlxuICAgICAgICAoZm9jdXMpPVwiX3JhbmdlSGFuZGxlMkZvY3VzZWQkLm5leHQodHJ1ZSlcIlxuICAgICAgICAoYmx1cik9XCJfcmFuZ2VIYW5kbGUyRm9jdXNlZCQubmV4dChmYWxzZSlcIlxuICAgID48L2Rpdj5cblxuICAgIDxmZC1wb3BvdmVyXG4gICAgICAgICNyYW5nZVNsaWRlclBvcG92ZXIxXG4gICAgICAgIFt0cmlnZ2Vyc109XCJbXVwiXG4gICAgICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImZhbHNlXCJcbiAgICAgICAgW2FwcGVuZFRvXT1cInJhbmdlSGFuZGxlMVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhdG9vbHRpcE1vZGVcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtc2xpZGVyLS10b29sdGlwLXBvcG92ZXJcIlxuICAgICAgICBjbGFzcz1cImZkLXBvcG92ZXItLXNsaWRlclwiXG4gICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHBvcG92ZXJJbm5lcjtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7IHRhcmdldDogX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIxLCBwb3NpdGlvbjogX2hhbmRsZTFWYWx1ZSB9XG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1wb3BvdmVyPlxuXG4gICAgPGZkLXBvcG92ZXJcbiAgICAgICAgI3JhbmdlU2xpZGVyUG9wb3ZlcjJcbiAgICAgICAgW3RyaWdnZXJzXT1cIltdXCJcbiAgICAgICAgW2Nsb3NlT25PdXRzaWRlQ2xpY2tdPVwiZmFsc2VcIlxuICAgICAgICBbYXBwZW5kVG9dPVwicmFuZ2VIYW5kbGUyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiF0b29sdGlwTW9kZVwiXG4gICAgICAgIGFkZGl0aW9uYWxCb2R5Q2xhc3M9XCJmZC1zbGlkZXItLXRvb2x0aXAtcG9wb3ZlclwiXG4gICAgICAgIGNsYXNzPVwiZmQtcG9wb3Zlci0tc2xpZGVyXCJcbiAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgcG9wb3ZlcklubmVyO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgdGFyZ2V0OiBfc2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjIsIHBvc2l0aW9uOiBfaGFuZGxlMlZhbHVlIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2ZkLXBvcG92ZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3BvcG92ZXJJbm5lciBsZXQtdGFyZ2V0PVwidGFyZ2V0XCIgbGV0LXBvc2l0aW9uPVwicG9zaXRpb25cIj5cbiAgICA8ZGl2XG4gICAgICAgICNzbGlkZXJUb29sdGlwV3JhcHBlclxuICAgICAgICBjbGFzcz1cImZkLXNsaWRlci0tdG9vbHRpcC13cmFwcGVyXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cIl9wb3BvdmVySW5wdXRGaWVsZEhvdmVyZWQkLm5leHQodHJ1ZSlcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJfcG9wb3ZlcklucHV0RmllbGRIb3ZlcmVkJC5uZXh0KGZhbHNlKVwiXG4gICAgPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiKGN1c3RvbVZhbHVlcyAmJiBjdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkgfHwgdG9vbHRpcE1vZGUgPT09ICdyZWFkb25seSdcIiBjbGFzcz1cImZkLXNsaWRlci0tdG9vbHRpcFwiPlxuICAgICAgICAgICAge3sgY3VzdG9tVmFsdWVzICYmIGN1c3RvbVZhbHVlcy5sZW5ndGggPiAwID8gY3VzdG9tVmFsdWVzW3Bvc2l0aW9uXS5sYWJlbCA6IF9wb3BvdmVyVmFsdWVSZWZbdGFyZ2V0XSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNwb3BvdmVySW5wdXRGaWVsZFxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgZmRrT25seURpZ2l0c1xuICAgICAgICAgICAgW2RlY2ltYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGguY2hdPVwiKCcnICsgX3BvcG92ZXJWYWx1ZVJlZlt0YXJnZXRdKS5sZW5ndGggKyAyXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQgZmQtc2xpZGVyLS10b29sdGlwIHt7IF9wb3BvdmVySW5wdXRGaWVsZENsYXNzIH19XCJcbiAgICAgICAgICAgICpuZ0lmPVwiY3VzdG9tVmFsdWVzPy5sZW5ndGggPT09IDAgJiYgdG9vbHRpcE1vZGUgPT09ICdlZGl0YWJsZSdcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfcG9wb3ZlclZhbHVlUmVmW3RhcmdldF1cIlxuICAgICAgICAgICAgKGJsdXIpPVwiX3VwZGF0ZVZhbHVlRnJvbUlucHV0KHBvcG92ZXJJbnB1dEZpZWxkLnZhbHVlLCB0YXJnZXQpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIl91cGRhdGVWYWx1ZUZyb21JbnB1dChwb3BvdmVySW5wdXRGaWVsZC52YWx1ZSwgdGFyZ2V0KVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwiX3BvcG92ZXJJbnB1dEZpZWxkRm9jdXNlZCQubmV4dCh0cnVlKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJfcG9wb3ZlcklucHV0RmllbGRGb2N1c2VkJC5uZXh0KGZhbHNlKVwiXG4gICAgICAgIC8+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
857
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2xpZGVyL3NsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBSUwsUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFGLE9BQU8sRUFDSCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLEdBQUcsRUFDSCxLQUFLLEVBQ0wsSUFBSSxFQUNKLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDWixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRixPQUFPLEVBQVksbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRSxPQUFPLEVBR0gsa0JBQWtCLEVBRWxCLGtCQUFrQixFQUNyQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFtQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakcsT0FBTyxFQUFtQix1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RGLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLCtCQUErQixFQUNsQyxNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7QUFFeEQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDakMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztJQUM5QyxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFDRixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFtQ2pCLE1BQU0sT0FBTyxlQUFlO0lBb0J4QixxQkFBcUI7SUFDckIsSUFDSSxHQUFHLENBQUMsS0FBYTtRQUNqQixNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDL0MsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQUksR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLElBQ0ksR0FBRyxDQUFDLEtBQWE7UUFDakIsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQy9DLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFJLEdBQUc7UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUNJLElBQUksQ0FBQyxLQUFhO1FBQ2xCLE1BQU0sUUFBUSxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFDSSxJQUFJLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNELElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsMENBQTBDO0lBQzFDLElBQ0ksc0JBQXNCLENBQUMsS0FBYTtRQUNwQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFDRCxJQUFJLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztJQUN4QyxDQUFDO0lBMkNELG9CQUFvQjtJQUNwQixJQUNJLEtBQUssQ0FBQyxLQUF5QjtRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLGdCQUFnQjtRQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQW1CLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQTRIRCxjQUFjO0lBQ2QsWUFDb0IsVUFBc0IsRUFDckIsSUFBdUIsRUFDdkIsU0FBb0IsRUFDcEIsU0FBbUIsRUFDbkIsY0FBNkIsRUFFN0IsV0FBdUIsRUFDL0IsdUJBQStDO1FBUHhDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDckIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDdkIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBRTdCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQy9CLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBd0I7UUFwUTVELHdEQUF3RDtRQUd4RCxPQUFFLEdBQUcsZUFBZSxHQUFHLFFBQVEsRUFBRSxDQUFDO1FBdUVsQzs7OztXQUlHO1FBRUgsU0FBSSxHQUF1QixRQUFRLENBQUM7UUFFcEMsNENBQTRDO1FBRTVDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsK0ZBQStGO1FBRS9GLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXhCLGdEQUFnRDtRQUVoRCxpQkFBWSxHQUF3QixFQUFFLENBQUM7UUFNdkMsNkNBQTZDO1FBRTdDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXhCLHVDQUF1QztRQUV2QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCOztXQUVHO1FBRUgsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixjQUFjO1FBQ2QsY0FBUyxHQUFzQixDQUFDLENBQUM7UUFrRGpDLGNBQWM7UUFDZCxXQUFNLEdBQTBELENBQUMsQ0FBQztRQUVsRSxjQUFjO1FBQ2QsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUVkLGNBQWM7UUFFZCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGNBQWM7UUFDZCxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFFckIsY0FBYztRQUNkLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUVyQixjQUFjO1FBQ2Qsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFFbEIsY0FBYztRQUNkLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLGNBQWM7UUFDZCxtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUVuQixjQUFjO1FBQ2QsZUFBVSxHQUFxQixFQUFFLENBQUM7UUFFbEMsY0FBYztRQUNkLHdCQUFtQixHQUFHLGtCQUFrQixDQUFDO1FBRXpDLGNBQWM7UUFDZCw0QkFBdUIsR0FBRywyQkFBMkIsUUFBUSxFQUFFLENBQUM7UUFFaEUsY0FBYztRQUNkLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZjs7O1dBR0c7UUFDSCwwQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFFN0IsY0FBYztRQUNkLGFBQVEsR0FBRyxrQkFBa0IsQ0FBQztRQUU5QixjQUFjO1FBQ04sU0FBSSxHQUFHLENBQUMsQ0FBQztRQUVqQixjQUFjO1FBQ04sU0FBSSxHQUFHLEdBQUcsQ0FBQztRQUVuQixjQUFjO1FBQ04sVUFBSyxHQUFHLENBQUMsQ0FBQztRQUVsQixjQUFjO1FBQ04sVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVuQixjQUFjO1FBQ04sNEJBQXVCLEdBQUcsQ0FBQyxDQUFDO1FBRXBDLGNBQWM7UUFDTixtQkFBYyxHQUFhLEVBQUUsQ0FBQztRQUV0Qzs7O1dBR0c7UUFDYyxnQkFBVyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWxFLGNBQWM7UUFDTCx1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6RCxjQUFjO1FBQ0wsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0RCxjQUFjO1FBQ0wsMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUQsY0FBYztRQUNMLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVELGNBQWM7UUFDTCwrQkFBMEIsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqRSxjQUFjO1FBQ0wsK0JBQTBCLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFtRmpFLGNBQWM7UUFDZCxhQUFRLEdBQXdDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUV6RCxjQUFjO1FBQ2QsY0FBUyxHQUFHLEdBQVMsRUFBRSxHQUFFLENBQUMsQ0FBQztRQTFFdkIsdUJBQXVCLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBRUgsc0JBQXNCO1FBQ2xCLE9BQU87WUFDSCxXQUFXO1lBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDMUMsSUFBSSxDQUFDLEtBQUs7WUFDVixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDM0YsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjO0lBQ2QsUUFBUTtRQUNKLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7U0FDbEM7UUFDRCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsY0FBYztJQUNkLGVBQWU7UUFDWCxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXLENBQUMsUUFBMkIsRUFBRSxpQkFBcUM7UUFDMUUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQWtCLENBQUMsQ0FBQyxLQUFLO1lBQzdDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDakcsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBYSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2pHLENBQUM7SUFRRCxjQUFjO0lBQ2QsZ0JBQWdCLENBQUMsRUFBdUM7UUFDcEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGNBQWM7SUFDZCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxjQUFjO0lBQ2QsZ0JBQWdCLENBQUMsVUFBbUI7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVELGNBQWM7SUFDZCxVQUFVLENBQUMsS0FBeUI7UUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGNBQWM7SUFDZCxZQUFZLENBQUMsS0FBaUI7UUFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEMsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsY0FBYztJQUNkLGFBQWEsQ0FBQyxLQUFpQixFQUFFLEtBQUssR0FBRyxLQUFLO1FBQzFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLE9BQU87U0FDVjtRQUVELElBQUksaUJBQTJDLENBQUM7UUFDaEQsSUFBSSxzQkFBZ0QsQ0FBQztRQUVyRCxJQUFJLEtBQUssRUFBRTtZQUNQLHNCQUFzQixHQUFHO2dCQUNyQixDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ2hCLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTzthQUNuQixDQUFDO1lBRUYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUVoRixpQkFBaUIsR0FBRztnQkFDaEIsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLEtBQUssR0FBRyxDQUFDO2dCQUNoRCxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUM7YUFDcEQsQ0FBQztTQUNMO1FBRUQsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsU0FBcUIsRUFBRSxFQUFFO1lBQ3RHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxPQUFPO2FBQ1Y7WUFFRCxJQUFJLE1BQU0sR0FBRztnQkFDVCxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87Z0JBQzFCLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTzthQUM3QixDQUFDO1lBRUYsSUFBSSxXQUErQixDQUFDO1lBQ3BDLElBQUksS0FBSyxFQUFFO2dCQUNQLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RDLHNGQUFzRjtnQkFDdEYsTUFBTSxHQUFHO29CQUNMLE9BQU8sRUFBRSxpQkFBa0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLHNCQUF1QixDQUFDLENBQUMsQ0FBQztvQkFDL0UsT0FBTyxFQUFFLGlCQUFrQixDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsc0JBQXVCLENBQUMsQ0FBQyxDQUFDO2lCQUNsRixDQUFDO2FBQ0w7aUJBQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFO2dCQUN6RCxXQUFXLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDO2FBQzFDO2lCQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRTtnQkFDekQsV0FBVyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQzthQUMzQztpQkFBTTtnQkFDSCxPQUFPO2FBQ1Y7WUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsa0NBQWtDLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBVyxDQUFDO1lBQy9FLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUM3RSx3QkFBd0IsRUFBRSxDQUFDO1lBQzNCLHNCQUFzQixFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztJQUNkLFNBQVMsQ0FBQyxLQUFvQixFQUFFLE1BQTJCO1FBQ3ZELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLE9BQU87U0FDVjtRQUNELE1BQU0sV0FBVyxHQUFhLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEVBQUU7WUFDeEMsT0FBTztTQUNWO1FBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNqRyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFckcsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNoQyxPQUFPO1NBQ1Y7UUFFRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3BELElBQUksUUFBUSxHQUFtQyxJQUFJLENBQUM7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsUUFBUSxHQUFJLElBQUksQ0FBQyxTQUFvQixHQUFHLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXRFLElBQUksUUFBUSxLQUFLLElBQUksRUFBRTtnQkFDbkIsT0FBTzthQUNWO1lBRUQsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXJFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDL0IsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLG1CQUFtQixDQUNwQixNQUFNLEtBQUssa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTyxFQUNwRyxJQUFJLEVBQ0osV0FBVyxDQUNkLENBQUM7UUFFRixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsY0FBYztJQUNkLHFCQUFxQixDQUFDLEtBQWEsRUFBRSxNQUEwQjtRQUMzRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLENBQVcsQ0FBQztRQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxNQUFNLEtBQUssa0JBQWtCLENBQUMsYUFBYSxFQUFFO1lBQy9ELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDL0IsT0FBTztTQUNWO1FBQ0QsSUFBSSxNQUFNLEtBQUssa0JBQWtCLENBQUMsYUFBYSxFQUFFO1lBQzdDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDM0M7UUFDRCxJQUFJLE1BQU0sS0FBSyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUU7WUFDN0MsSUFBSSxDQUFDLCtCQUErQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUMzQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsY0FBYztJQUNOLG1CQUFtQixDQUFDLE9BQWtELEVBQUUsSUFBWSxFQUFFLEVBQVc7UUFDckcsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFHckIsQ0FBQztRQUNKLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN2QixNQUFNLFNBQVMsR0FBRyxNQUFNLEtBQUssa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ2hHLElBQUksUUFBUSxHQUFtQyxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEYsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO2dCQUNuQixPQUFPO2FBQ1Y7WUFFRCxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFckUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDN0UsT0FBTztTQUNWO1FBRUQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsK0JBQStCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFpQixDQUFDLENBQUM7UUFDMUUsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGNBQWM7SUFDTixTQUFTLENBQUMsS0FBeUIsRUFBRSxTQUFTLEdBQUcsSUFBSTtRQUN6RCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQWdDLENBQUMsQ0FBQztTQUN4RTthQUFNO1lBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQTRCLENBQUMsQ0FBQztTQUNoRTtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksU0FBUyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4QjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWM7SUFDTix1QkFBdUI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELGNBQWM7SUFDTixrQ0FBa0MsQ0FDdEMsTUFBNEMsRUFDNUMsZUFBZSxHQUFHLElBQUk7UUFFdEIsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDM0YsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUV0RyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixVQUFVLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztTQUMvQjtRQUNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxjQUFjO0lBQ04sZ0JBQWdCLENBQUMsUUFBZ0IsRUFBRSxlQUFlLEdBQUcsSUFBSTtRQUM3RCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3JCLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNyQixRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUN2QjtRQUNELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYzthQUNwQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztZQUNwQyxLQUFLLEVBQUUsU0FBUztTQUNuQixDQUFDLENBQUM7YUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLEtBQUssR0FBNEIsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM1RCxJQUFJLGVBQWUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakQsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsY0FBYztJQUNOLCtCQUErQixDQUFDLFdBQStCLEVBQUUsS0FBYTtRQUNsRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLFdBQVcsS0FBSyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztTQUNwQzthQUFNLElBQUksV0FBVyxLQUFLLGtCQUFrQixDQUFDLE1BQU0sRUFBRTtZQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO1NBQ3BDO2FBQU0sSUFBSSxXQUFXLEtBQUssa0JBQWtCLENBQUMsSUFBSSxFQUFFO1lBQ2hELDBDQUEwQztZQUMxQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDdEUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekQsTUFBTSxJQUFJLEdBQUcsYUFBYSxHQUFHLGFBQWEsQ0FBQztZQUMzQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUUxRSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUksaUJBQWlCLEdBQUcsSUFBSSxFQUFFO2dCQUN0RSxPQUFPO2FBQ1Y7WUFFRCxNQUFNLGFBQWEsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUM7WUFDakMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLENBQUM7WUFDOUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ3RFO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsY0FBYztJQUNOLHlCQUF5QjtRQUM3QixJQUFJLGVBQWdDLENBQUM7UUFDckMsSUFBSSxnQkFBaUMsQ0FBQztRQUN0QyxJQUFJLFVBQVUsR0FBZ0M7WUFDMUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDaEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDbkQsQ0FBQztRQUNGLGVBQWUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDaEcsVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLGVBQWUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ3RDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDMUM7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsR0FBRyxlQUFlLEdBQUcsT0FBTyxHQUFHLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlHLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxjQUFjO0lBQ04scUJBQXFCO1FBQ3pCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO2FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNwRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGNBQWM7SUFDTixTQUFTO1FBQ2IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYztJQUNOLHVCQUF1QjtRQUMzQixJQUFJO1lBQ0EsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUM1QjtnQkFDSSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7YUFDaEQsRUFDRCxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDMUQsQ0FBQztTQUNMO1FBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRTtJQUNsQixDQUFDO0lBRUQsY0FBYztJQUNOLG1CQUFtQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNyQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ2IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7WUFDZCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbEQsR0FBRyxJQUFJO2dCQUNQLFFBQVEsRUFBRSxDQUFDLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7YUFDM0MsQ0FBQyxDQUFDLENBQUM7U0FDUDthQUFNO1lBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ2xDLE1BQU0sY0FBYyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUM3QyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxTQUFTLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtnQkFDckYsSUFBSSxDQUFDLFVBQVUsR0FBRztvQkFDZDt3QkFDSSxRQUFRLEVBQUUsQ0FBQzt3QkFDWCxLQUFLLEVBQUUsQ0FBQzt3QkFDUixLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFO3FCQUN2QjtvQkFDRDt3QkFDSSxRQUFRLEVBQUUsR0FBRzt3QkFDYixLQUFLLEVBQUUsS0FBSzt3QkFDWixLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFO3FCQUN2QjtpQkFDSixDQUFDO2dCQUNGLE9BQU87YUFDVjtZQUNELElBQUksY0FBYyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FDeEI7b0JBQ0ksTUFBTSxFQUFFLGNBQWM7aUJBQ3pCLEVBQ0QsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQ0wsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7b0JBQ3BELE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7b0JBQ3ZELE9BQU87d0JBQ0gsS0FBSzt3QkFDTCxRQUFRO3dCQUNSLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxFQUFFO3FCQUMvQixDQUFDO2dCQUNOLENBQUMsQ0FDSixDQUFDO2FBQ0w7U0FDSjtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFBWSxtQkFBbUI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUM5QyxPQUFPO1NBQ1Y7UUFFRCxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFN0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxjQUFjO0lBQ04sYUFBYSxDQUFDLEtBQWEsRUFBRSxPQUFPLEdBQUcsS0FBSztRQUNoRCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN6QixRQUFRLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQztTQUM3QjtRQUNELElBQUksUUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNoQixPQUFPLEdBQUcsQ0FBQztTQUNkO1FBQ0QsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFO1lBQ2QsT0FBTyxDQUFDLENBQUM7U0FDWjtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxjQUFjO0lBQ04sc0JBQXNCO1FBQzFCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNqRjtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsY0FBYztJQUNOLG1CQUFtQjtRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDO0lBQzFDLENBQUM7SUFFRCxzQ0FBc0M7SUFDOUIsZUFBZTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQWMsRUFBRSxFQUFFO1lBQ2hGLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztJQUNOLGNBQWMsQ0FBQyxLQUE4QjtRQUNqRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsNkJBQTZCLENBQUMsS0FBdUIsQ0FBQyxDQUFDO1lBQzVELE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELGNBQWM7SUFDTixxQkFBcUIsQ0FBQyxLQUFhO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGNBQWM7SUFDTiw2QkFBNkIsQ0FBQyxjQUE4QjtRQUNoRSxNQUFNLEtBQUssR0FBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsY0FBYyxDQUFZLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNwRixJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGNBQWM7SUFDTixjQUFjLENBQUMsS0FBa0M7UUFDckQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEtBQXlCLENBQUMsQ0FBQztZQUMvRCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdELE1BQU0sWUFBWSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGNBQWM7SUFDTixxQkFBcUIsQ0FBQyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQVc7UUFDL0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsK0JBQStCLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELGNBQWM7SUFDTiw4QkFBOEIsQ0FBQyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQW1CO1FBQ2hGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQWlCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsY0FBYztJQUNOLHdCQUF3QixDQUFDLEtBQXdDO1FBQ3JFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDZCxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYztJQUNOLHlCQUF5QixDQUFDLEtBQXdDO1FBQ3RFLElBQUksQ0FBQyxLQUFLLElBQUssS0FBMEIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3BELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoRTtRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUMzQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN0QztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQzVDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ2xFO1lBQ0QsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEcsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEcsTUFBTSxPQUFPLEdBQUc7Z0JBQ1osbUJBQW1CLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEQsb0JBQW9CLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQzthQUNsRixDQUFDO1lBQ0YsT0FBTyxPQUFPLENBQUM7U0FDbEI7YUFBTTtZQUNILElBQUksV0FBVyxHQUFHLEtBQXVCLENBQUM7WUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDM0MsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdEM7WUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkY7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLHNCQUFzQixDQUFDLE1BQVc7UUFDdEMsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLE9BQU8sSUFBSSxNQUFNLElBQUksT0FBTyxJQUFJLE1BQU0sQ0FBQztJQUM5RCxDQUFDO0lBRUQsY0FBYztJQUNOLDJCQUEyQjtRQUMvQixhQUFhLENBQUM7WUFDVixJQUFJLENBQUMsZUFBZTtZQUNwQixJQUFJLENBQUMscUJBQXFCO1lBQzFCLElBQUksQ0FBQyxxQkFBcUI7WUFDMUIsSUFBSSxDQUFDLDBCQUEwQjtZQUMvQixJQUFJLENBQUMsa0JBQWtCO1lBQ3ZCLElBQUksQ0FBQywwQkFBMEI7U0FDbEMsQ0FBQzthQUNHLElBQUksQ0FDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQ3JDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2xCLElBQUksT0FBTyxFQUFFO2dCQUNULE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25CO1lBQ0QsMkNBQTJDO1lBQzNDLDBFQUEwRTtZQUMxRSwrRUFBK0U7WUFDL0UsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUMsRUFDRixZQUFZLENBQUMsRUFBRSxDQUFDLEVBQ2hCLG9CQUFvQixFQUFFLEVBQ3RCLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQzlCO2FBQ0EsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZEO2lCQUFNO2dCQUNILElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQ3hEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQseURBQXlEO0lBQ2pELFlBQVk7UUFDaEIseUVBQXlFO1FBQ3pFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxpQkFBaUI7UUFDckIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEcsSUFBSSxXQUFXLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sU0FBUyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUM1RjtRQUNELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7OEdBeDRCUSxlQUFlO2tHQUFmLGVBQWUsZ3RCQTVCYjtZQUNQLHFCQUFxQjtZQUNyQix1QkFBdUIsQ0FBQyxlQUFlLENBQUM7WUFDeEMsK0JBQStCLENBQUM7Z0JBQzVCLHFCQUFxQixFQUFFLGtCQUFrQixDQUFDLE9BQU87Z0JBQ2pELFNBQVMsRUFBRTtvQkFDUCxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLGVBQWU7aUJBQzdDO2FBQ0osQ0FBQztTQUNMLHVHQXdKMkIsVUFBVSx5R0FLNUIsVUFBVSx1R0FNVixVQUFVLHVHQU1WLFVBQVUsZ0hBS21CLFVBQVUsNENBSW5DLGdCQUFnQix5S0NsUWxDLDZnV0F1UUEsMjR6QkQvS1EsZ0JBQWdCLG9KQUNoQixJQUFJLDZGQUNKLEtBQUssbUhBQ0wsdUJBQXVCLGtHQUN2QixhQUFhLG9VQUNiLFdBQVcsK21CQUNYLG1CQUFtQixnR0FDbkIsU0FBUyx5Q0FDVCxlQUFlOztBQXNSbkI7SUFEQyxhQUFhOzs7OzZEQVdiOzJGQTdSUSxlQUFlO2tCQWxDM0IsU0FBUzsrQkFDSSxXQUFXLGlCQUdOLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1AscUJBQXFCO3dCQUNyQix1QkFBdUIsaUJBQWlCO3dCQUN4QywrQkFBK0IsQ0FBQzs0QkFDNUIscUJBQXFCLEVBQUUsa0JBQWtCLENBQUMsT0FBTzs0QkFDakQsU0FBUyxFQUFFO2dDQUNQLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsZUFBZTs2QkFDN0M7eUJBQ0osQ0FBQztxQkFDTCxRQUNLO3dCQUNGLGNBQWMsRUFBRSxvQ0FBb0M7d0JBQ3BELGNBQWMsRUFBRSxxQ0FBcUM7d0JBQ3JELFlBQVksRUFBRSxhQUFhO3FCQUM5QixjQUNXLElBQUksV0FDUDt3QkFDTCxnQkFBZ0I7d0JBQ2hCLElBQUk7d0JBQ0osS0FBSzt3QkFDTCx1QkFBdUI7d0JBQ3ZCLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLFNBQVM7d0JBQ1QsZUFBZTtxQkFDbEI7OzBCQXVRSSxRQUFRO2lGQS9QYixFQUFFO3NCQUZELEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsU0FBUztnQkFLdEIsS0FBSztzQkFESixLQUFLO2dCQUtOLGNBQWM7c0JBRGIsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS0YsR0FBRztzQkFETixLQUFLO2dCQWNGLEdBQUc7c0JBRE4sS0FBSztnQkFjRixJQUFJO3NCQURQLEtBQUs7Z0JBY0YsSUFBSTtzQkFEUCxLQUFLO2dCQVVGLHNCQUFzQjtzQkFEekIsS0FBSztnQkFjTixJQUFJO3NCQURILEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBT04sUUFBUTtzQkFEUCxLQUFLO2dCQVFGLEtBQUs7c0JBRFIsS0FBSztnQkFlTixPQUFPO3NCQUROLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU90RCxNQUFNO3NCQUhMLFNBQVM7dUJBQUMsUUFBUSxFQUFFO3dCQUNqQixJQUFJLEVBQUUsVUFBVTtxQkFDbkI7Z0JBT0QsWUFBWTtzQkFIWCxTQUFTO3VCQUFDLGNBQWMsRUFBRTt3QkFDdkIsSUFBSSxFQUFFLFVBQVU7cUJBQ25CO2dCQU9ELFlBQVk7c0JBSFgsU0FBUzt1QkFBQyxjQUFjLEVBQUU7d0JBQ3ZCLElBQUksRUFBRSxVQUFVO3FCQUNuQjtnQkFLRCxpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBS2xFLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBSzlCLHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQyxzQkFBc0I7Z0JBV3BDLFFBQVE7c0JBRFAsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBc0dyQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgRU5URVIsIExFRlRfQVJST1csIFJJR0hUX0FSUk9XLCBTUEFDRSwgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgTGl2ZUFubm91bmNlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBkZWJvdW5jZVRpbWUsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgbWFwLFxuICAgIG1hcFRvLFxuICAgIHNraXAsXG4gICAgc3RhcnRXaXRoLFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlLFxuICAgIHRha2VVbnRpbFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQsIFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5pbXBvcnQgeyBOdWxsYWJsZSwgT25seURpZ2l0c0RpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7XG4gICAgU2xpZGVyQ29udHJvbFZhbHVlLFxuICAgIFNsaWRlckN1c3RvbVZhbHVlLFxuICAgIFNsaWRlclJhbmdlSGFuZGxlcyxcbiAgICBTbGlkZXJUaWNrTWFyayxcbiAgICBTbGlkZXJWYWx1ZVRhcmdldHNcbn0gZnJvbSAnLi9zbGlkZXIubW9kZWwnO1xuaW1wb3J0IHsgTUlOX0RJU1RBTkNFX0JFVFdFRU5fVElDS1MgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBhcHBseUNzc0NsYXNzLCBDc3NDbGFzc0J1aWxkZXIsIEtleVV0aWwsIFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBGb3JtSXRlbUNvbnRyb2wsIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHtcbiAgICBDb250ZW50RGVuc2l0eU1vZGUsXG4gICAgQ29udGVudERlbnNpdHlPYnNlcnZlcixcbiAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgU2xpZGVyUG9zaXRpb25EaXJlY3RpdmUgfSBmcm9tICcuL3NsaWRlci1wb3NpdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCwgTmdJZiwgTmdGb3IsIEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuXG5leHBvcnQgY29uc3QgU0xJREVSX1ZBTFVFX0FDQ0VTU09SID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNsaWRlckNvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbn07XG5sZXQgc2xpZGVySWQgPSAwO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1zbGlkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NsaWRlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFNMSURFUl9WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2woU2xpZGVyQ29tcG9uZW50KSxcbiAgICAgICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyh7XG4gICAgICAgICAgICBkZWZhdWx0Q29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNULFxuICAgICAgICAgICAgbW9kaWZpZXJzOiB7XG4gICAgICAgICAgICAgICAgW0NvbnRlbnREZW5zaXR5TW9kZS5DT1pZXTogJ2ZkLXNsaWRlci0tbGcnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICcobW91c2VlbnRlciknOiAndGhpcy5fY29tcG9uZW50SG92ZXJlZCQubmV4dCh0cnVlKScsXG4gICAgICAgICcobW91c2VsZWF2ZSknOiAndGhpcy5fY29tcG9uZW50SG92ZXJlZCQubmV4dChmYWxzZSknLFxuICAgICAgICAnKGZvY3Vzb3V0KSc6ICdvblRvdWNoZWQoKSdcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgU2xpZGVyUG9zaXRpb25EaXJlY3RpdmUsXG4gICAgICAgIFBvcG92ZXJNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBPbmx5RGlnaXRzRGlyZWN0aXZlLFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVyQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQ3NzQ2xhc3NCdWlsZGVyLCBGb3JtSXRlbUNvbnRyb2xcbntcbiAgICAvKiogU2xpZGVyIGlkLCBpdCBoYXMgc29tZSBkZWZhdWx0IHZhbHVlIGlmIG5vdCBzZXQsICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBpZCA9ICdmZC1zbGlkZXItaWQtJyArIHNsaWRlcklkKys7XG5cbiAgICAvKiogVXNlcidzIGN1c3RvbSBjbGFzc2VzICovXG4gICAgQElucHV0KClcbiAgICBjbGFzczogc3RyaW5nO1xuXG4gICAgLyoqIElEIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzIHNsaWRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSBzbGlkZXIuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogTWluaW11bSB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBtaW4odmFsdWU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCB0aGlzLl9taW4pO1xuICAgICAgICBpZiAoKCh0aGlzLm1heCAtIG5ld1ZhbHVlKSAvIHRoaXMuc3RlcCkgJSAxICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWluID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBtaW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgICB9XG5cbiAgICAvKiogTWF4aW11bSB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBtYXgodmFsdWU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCB0aGlzLl9tYXgpO1xuICAgICAgICBpZiAoKChuZXdWYWx1ZSAtIHRoaXMubWluKSAvIHRoaXMuc3RlcCkgJSAxICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWF4ID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBtYXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heDtcbiAgICB9XG5cbiAgICAvKiogU3RlcCB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGVwKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdGhpcy5fc3RlcCk7XG4gICAgICAgIGlmICgoKHRoaXMubWF4IC0gdGhpcy5taW4pIC8gbmV3VmFsdWUpICUgMSAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N0ZXAgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHN0ZXAoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0ZXA7XG4gICAgfVxuXG4gICAgLyoqIEp1bXAgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBzZXQganVtcCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2p1bXAgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdGhpcy5fanVtcCk7XG4gICAgfVxuICAgIGdldCBqdW1wKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9qdW1wO1xuICAgIH1cblxuICAgIC8qKiBQdXQgYSBsYWJlbCBvbiBldmVyeSBOLXRoIHRpY2ttYXJrLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRpY2ttYXJrc0JldHdlZW5MYWJlbHModmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl90aWNrbWFya3NCZXR3ZWVuTGFiZWxzID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIHRoaXMuX3RpY2ttYXJrc0JldHdlZW5MYWJlbHMpO1xuICAgIH1cbiAgICBnZXQgdGlja21hcmtzQmV0d2VlbkxhYmVscygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGlja21hcmtzQmV0d2VlbkxhYmVscztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTbGlkZXIgbW9kZS5cbiAgICAgKiBPcHRpb25zIGluY2x1ZGU6ICdzaW5nbGUnIHwgJ3JhbmdlJ1xuICAgICAqIFRoZSBkZWZhdWx0IGlzIHNldCB0byAnc2luZ2xlJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9kZTogJ3NpbmdsZScgfCAncmFuZ2UnID0gJ3NpbmdsZSc7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aWNrIG1hcmtzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1RpY2tzID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aWNrIG1hcmsgbGFiZWxzLiBNdXN0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCAnc2hvd1RpY2tzJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1RpY2tzTGFiZWxzID0gZmFsc2U7XG5cbiAgICAvKiogQXJyYXkgb2YgY3VzdG9tIHZhbHVlcyB0byB1c2UgZm9yIFNsaWRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGN1c3RvbVZhbHVlczogU2xpZGVyQ3VzdG9tVmFsdWVbXSA9IFtdO1xuXG4gICAgLyoqIFRvb2x0aXAgY2FuIGJlIHR3byB0eXBlcywgJ3JlYWRvbmx5JyB0byBkaXNwbGF5IHZhbHVlIGFuZCAnZWRpdGFibGUnIHRvIG1ha2UgdGhlIGFiaWxpdHkgdG8gc2V0IGFuZCBkaXNwbGF5IHZhbHVlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG9vbHRpcE1vZGU6ICdyZWFkb25seScgfCAnZWRpdGFibGUnO1xuXG4gICAgLyoqIEhpZGVzIGRpc3BsYXkgb2YgY29sb3JlZCBwcm9ncmVzcyBiYXIuICovXG4gICAgQElucHV0KClcbiAgICBoaWRlUHJvZ3Jlc3NCYXIgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjb250cm9sIGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgc2xpZGVyIHNob3VsZCBoYXZlIHZlcnRpY2FsIGFsaWdubWVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHZlcnRpY2FsID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wb3NpdGlvbjogbnVtYmVyIHwgbnVtYmVyW10gPSAwO1xuXG4gICAgLyoqIENvbnRyb2wgdmFsdWUgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB2YWx1ZSh2YWx1ZTogU2xpZGVyQ29udHJvbFZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3NldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IHZhbHVlKCk6IFNsaWRlckNvbnRyb2xWYWx1ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfcG9wb3ZlclZhbHVlUmVmKCk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLl9wb3NpdGlvbiBhcyBudW1iZXIsIHRoaXMuX2hhbmRsZTFWYWx1ZSwgdGhpcy5faGFuZGxlMlZhbHVlXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3RyYWNrJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICB0cmFja0VsOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnaGFuZGxlJywge1xuICAgICAgICByZWFkOiBFbGVtZW50UmVmXG4gICAgfSlcbiAgICBoYW5kbGU6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdyYW5nZUhhbmRsZTEnLCB7XG4gICAgICAgIHJlYWQ6IEVsZW1lbnRSZWZcbiAgICB9KVxuICAgIHJhbmdlSGFuZGxlMTogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3JhbmdlSGFuZGxlMicsIHtcbiAgICAgICAgcmVhZDogRWxlbWVudFJlZlxuICAgIH0pXG4gICAgcmFuZ2VIYW5kbGUyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgncmFuZ2VHcm91cEhhbmRsZScsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiBmYWxzZSB9KVxuICAgIF9yYW5nZUdyb3VwSGFuZGxlOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihQb3BvdmVyQ29tcG9uZW50KVxuICAgIF9wb3BvdmVyczogUXVlcnlMaXN0PFBvcG92ZXJDb21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKCdzbGlkZXJUb29sdGlwV3JhcHBlcicpXG4gICAgX3NsaWRlclRvb2x0aXBXcmFwcGVyczogUXVlcnlMaXN0PEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ZhbHVlOiBudW1iZXIgfCBTbGlkZXJUaWNrTWFyayB8IFNsaWRlclRpY2tNYXJrW10gfCBudW1iZXJbXSA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wcm9ncmVzcyA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtc2xpZGVyLS1yYW5nZScpXG4gICAgX2lzUmFuZ2UgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hhbmRsZTFQb3NpdGlvbiA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oYW5kbGUyUG9zaXRpb24gPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFuZGxlMVZhbHVlID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hhbmRsZTJWYWx1ZSA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9yYW5nZVByb2dyZXNzID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RpY2tNYXJrczogU2xpZGVyVGlja01hcmtbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2xpZGVyVmFsdWVUYXJnZXRzID0gU2xpZGVyVmFsdWVUYXJnZXRzO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcG9wb3ZlcklucHV0RmllbGRDbGFzcyA9IGBmZC1zbGlkZXItcG9wb3Zlci1pbnB1dC0ke3NsaWRlcklkfWA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pc1J0bCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIHdoZXRoZXIgdG8gdXNlIHZhbHVlIHdpdGggYSBwcmVmaXggZm9yIGFubm91bmNpbmdcbiAgICAgKi9cbiAgICBfdXNlU2xpZGVyVmFsdWVQcmVmaXggPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFuZGxlcyA9IFNsaWRlclJhbmdlSGFuZGxlcztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWluID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbWF4ID0gMTAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdGVwID0gMTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfanVtcCA9IDEwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90aWNrbWFya3NCZXR3ZWVuTGFiZWxzID0gMTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmFsdWVzQnlTdGVwczogbnVtYmVyW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gY29tcG9uZW504oCZcyBkZXN0cnVjdGlvbiAoZm9yIHVuc3Vic2NyaWJpbmcpXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9jb21wb25lbnRIb3ZlcmVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfaGFuZGxlRm9jdXNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3JhbmdlSGFuZGxlMUZvY3VzZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9yYW5nZUhhbmRsZTJGb2N1c2VkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfcG9wb3ZlcklucHV0RmllbGRGb2N1c2VkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfcG9wb3ZlcklucHV0RmllbGRIb3ZlcmVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfbGl2ZUFubm91bmNlcjogTGl2ZUFubm91bmNlcixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZSxcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJcbiAgICApIHtcbiAgICAgICAgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENzc0NsYXNzQnVpbGRlciBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb25cbiAgICAgKiBmdW5jdGlvbiBtdXN0IHJldHVybiBzaW5nbGUgc3RyaW5nXG4gICAgICogZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIG9yZGVyIHdoaWNoIGNzcyBjbGFzc2VzIGFyZSBhcHBsaWVkXG4gICAgICovXG4gICAgQGFwcGx5Q3NzQ2xhc3NcbiAgICBidWlsZENvbXBvbmVudENzc0NsYXNzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdmZC1zbGlkZXInLFxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA/ICdpcy1kaXNhYmxlZCcgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuX2lzUmFuZ2UgPyAnZmQtc2xpZGVyLS1yYW5nZScgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuc2hvd1RpY2tzICYmIHRoaXMuc2hvd1RpY2tzTGFiZWxzID8gJ2ZkLXNsaWRlci0td2l0aC1sYWJlbHMnIDogJycsXG4gICAgICAgICAgICB0aGlzLnZlcnRpY2FsID8gJ2ZkLXNsaWRlci0tdmVydGljYWwnIDogJycsXG4gICAgICAgICAgICB0aGlzLmNsYXNzLFxuICAgICAgICAgICAgdGhpcy5fcGxhdGZvcm0uRURHRSB8fCB0aGlzLl9wbGF0Zm9ybS5UUklERU5UID8gJ2ZkLXNsaWRlcl9fYWx0ZXJuYXRpdmUtdGljay13aWR0aCcgOiAnJ1xuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVRvUnRsKCk7XG4gICAgICAgIHRoaXMuX2F0dGFjaFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMuX29uUmVzaXplKCk7XG4gICAgICAgIGlmICh0aGlzLl92YWx1ZXNCeVN0ZXBzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5fY29uc3RydWN0VmFsdWVzQnlTdGVwcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgICAgICB0aGlzLl9jaGVja0lzSW5SYW5nZU1vZGUoKTtcbiAgICAgICAgdGhpcy5fY29uc3RydWN0VGlja01hcmtzKCk7XG4gICAgICAgIHRoaXMuX2NvbnN0cnVjdFZhbHVlc0J5U3RlcHMoKTtcbiAgICAgICAgdGhpcy5fcmVjYWxjSGFuZGxlUG9zaXRpb25zKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvSW50ZXJhY3Rpb25DaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldFZhbHVlbm93KHBvc2l0aW9uOiBudW1iZXIgfCBudW1iZXJbXSwgc2xpZGVyVmFsdWVUYXJnZXQ6IFNsaWRlclZhbHVlVGFyZ2V0cyk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHRoaXMuY3VzdG9tVmFsdWVzW3Bvc2l0aW9uIGFzIG51bWJlcl0ubGFiZWxcbiAgICAgICAgICAgIDogdGhpcy5fcG9wb3ZlclZhbHVlUmVmW3NsaWRlclZhbHVlVGFyZ2V0XTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBtaW5WYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCA/IHRoaXMuY3VzdG9tVmFsdWVzW3RoaXMubWluIGFzIG51bWJlcl0ubGFiZWwgOiB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBtYXhWYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCA/IHRoaXMuY3VzdG9tVmFsdWVzW3RoaXMubWF4IGFzIG51bWJlcl0ubGFiZWwgOiB0aGlzLm1heDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlOiAodmFsdWU6IFNsaWRlckNvbnRyb2xWYWx1ZSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBTbGlkZXJDb250cm9sVmFsdWUpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHdyaXRlVmFsdWUodmFsdWU6IFNsaWRlckNvbnRyb2xWYWx1ZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXRWYWx1ZSh2YWx1ZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25UcmFja0NsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuX2lzUmFuZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXRWYWx1ZSh0aGlzLl9jYWxjdWxhdGVWYWx1ZUZyb21Qb2ludGVyUG9zaXRpb24oZXZlbnQpKTtcbiAgICAgICAgdGhpcy5fdXBkYXRlUG9wb3ZlcnNQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLmhhbmRsZS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkhhbmRsZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBncm91cCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZmlyc3RIYW5kbGVDb29yZHM6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTtcbiAgICAgICAgbGV0IHJhbmdlU2xpZGVyU3RhcnRDb29yZHM6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTtcblxuICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgIHJhbmdlU2xpZGVyU3RhcnRDb29yZHMgPSB7XG4gICAgICAgICAgICAgICAgeDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICAgICAgICB5OiBldmVudC5jbGllbnRZXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBmaXJzdEhhbmRsZVJlY3QgPSB0aGlzLnJhbmdlSGFuZGxlMS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgICAgICBmaXJzdEhhbmRsZUNvb3JkcyA9IHtcbiAgICAgICAgICAgICAgICB4OiBmaXJzdEhhbmRsZVJlY3QueCArIGZpcnN0SGFuZGxlUmVjdC53aWR0aCAvIDIsXG4gICAgICAgICAgICAgICAgeTogZmlyc3RIYW5kbGVSZWN0LnkgKyBmaXJzdEhhbmRsZVJlY3QuaGVpZ2h0IC8gMlxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVuc3Vic2NyaWJlRnJvbU1vdXNlbW92ZSA9IHRoaXMuX3JlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnbW91c2Vtb3ZlJywgKG1vdmVFdmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlUG9wb3ZlcnNQb3NpdGlvbigpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1JhbmdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5fY2FsY3VsYXRlVmFsdWVGcm9tUG9pbnRlclBvc2l0aW9uKG1vdmVFdmVudCkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGNvb3JkcyA9IHtcbiAgICAgICAgICAgICAgICBjbGllbnRYOiBtb3ZlRXZlbnQuY2xpZW50WCxcbiAgICAgICAgICAgICAgICBjbGllbnRZOiBtb3ZlRXZlbnQuY2xpZW50WVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbGV0IGhhbmRsZUluZGV4OiBTbGlkZXJSYW5nZUhhbmRsZXM7XG4gICAgICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVJbmRleCA9IFNsaWRlclJhbmdlSGFuZGxlcy5Cb3RoO1xuICAgICAgICAgICAgICAgIC8vIE1pbWljIGRyYWdnaW5nIGZpcnN0IGhhbmRsZSB0byBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBvbGQgYW5kIG5ldyB2YWx1ZXMuXG4gICAgICAgICAgICAgICAgY29vcmRzID0ge1xuICAgICAgICAgICAgICAgICAgICBjbGllbnRYOiBmaXJzdEhhbmRsZUNvb3JkcyEueCArIChtb3ZlRXZlbnQuY2xpZW50WCAtIHJhbmdlU2xpZGVyU3RhcnRDb29yZHMhLngpLFxuICAgICAgICAgICAgICAgICAgICBjbGllbnRZOiBmaXJzdEhhbmRsZUNvb3JkcyEueSArIChtb3ZlRXZlbnQuY2xpZW50WSAtIHJhbmdlU2xpZGVyU3RhcnRDb29yZHMhLnkpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzLnJhbmdlSGFuZGxlMS5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlSW5kZXggPSBTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcy5yYW5nZUhhbmRsZTIubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGhhbmRsZUluZGV4ID0gU2xpZGVyUmFuZ2VIYW5kbGVzLlNlY29uZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2NhbGN1bGF0ZVZhbHVlRnJvbVBvaW50ZXJQb3NpdGlvbihjb29yZHMsIGZhbHNlKSBhcyBudW1iZXI7XG4gICAgICAgICAgICB0aGlzLl9zZXRSYW5nZUhhbmRsZVZhbHVlQW5kUG9zaXRpb24oaGFuZGxlSW5kZXgsIHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlKHRoaXMuX2NvbnN0cnVjdFJhbmdlTW9kZWxWYWx1ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHVuc3Vic2NyaWJlRnJvbU1vdXNldXAgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNldXAnLCAoKSA9PiB7XG4gICAgICAgICAgICB1bnN1YnNjcmliZUZyb21Nb3VzZW1vdmUoKTtcbiAgICAgICAgICAgIHVuc3Vic2NyaWJlRnJvbU1vdXNldXAoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGhhbmRsZT86IFNsaWRlclJhbmdlSGFuZGxlcyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFsbG93ZWRLZXlzOiBudW1iZXJbXSA9IFtMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgVVBfQVJST1csIERPV05fQVJST1csIEVOVEVSLCBTUEFDRV07XG4gICAgICAgIGlmICghS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIGFsbG93ZWRLZXlzKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IHVwQWN0aW9uS2V5ID0gS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtVUF9BUlJPVywgdGhpcy5faXNSdGwgPyBMRUZUX0FSUk9XIDogUklHSFRfQVJST1ddKTtcbiAgICAgICAgY29uc3QgZG93bkFjdGlvbktleSA9IEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbRE9XTl9BUlJPVywgdGhpcy5faXNSdGwgPyBSSUdIVF9BUlJPVyA6IExFRlRfQVJST1ddKTtcblxuICAgICAgICBpZiAoIXVwQWN0aW9uS2V5ICYmICFkb3duQWN0aW9uS2V5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkaWZmID0gZXZlbnQuc2hpZnRLZXkgPyB0aGlzLmp1bXAgOiB0aGlzLnN0ZXA7XG4gICAgICAgIGxldCBuZXdWYWx1ZTogbnVtYmVyIHwgU2xpZGVyVGlja01hcmsgfCBudWxsID0gbnVsbDtcbiAgICAgICAgaWYgKCF0aGlzLl9pc1JhbmdlKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9ICh0aGlzLl9wb3NpdGlvbiBhcyBudW1iZXIpICsgZGlmZiAqICh1cEFjdGlvbktleSA/IDEgOiAtMSk7XG5cbiAgICAgICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbmV3VmFsdWUgPSB0aGlzLl9wcm9jZXNzTmV3VmFsdWUobmV3VmFsdWUgYXMgbnVtYmVyLCAhdGhpcy5faXNSYW5nZSk7XG5cbiAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2hhbmRsZVJhbmdlS2V5ZG93bihcbiAgICAgICAgICAgIGhhbmRsZSA9PT0gU2xpZGVyUmFuZ2VIYW5kbGVzLkJvdGggPyBbU2xpZGVyUmFuZ2VIYW5kbGVzLkZpcnN0LCBTbGlkZXJSYW5nZUhhbmRsZXMuU2Vjb25kXSA6IGhhbmRsZSEsXG4gICAgICAgICAgICBkaWZmLFxuICAgICAgICAgICAgdXBBY3Rpb25LZXlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl91cGRhdGVQb3BvdmVyc1Bvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXBkYXRlVmFsdWVGcm9tSW5wdXQodmFsdWU6IHN0cmluZywgdGFyZ2V0OiBTbGlkZXJWYWx1ZVRhcmdldHMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLl9wcm9jZXNzTmV3VmFsdWUoK3ZhbHVlKSBhcyBudW1iZXI7XG4gICAgICAgIGlmICghdGhpcy5faXNSYW5nZSAmJiB0YXJnZXQgPT09IFNsaWRlclZhbHVlVGFyZ2V0cy5TSU5HTEVfU0xJREVSKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVQb3BvdmVyc1Bvc2l0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldCA9PT0gU2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjEpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFJhbmdlSGFuZGxlVmFsdWVBbmRQb3NpdGlvbihTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3QsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VIYW5kbGUxLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFyZ2V0ID09PSBTbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMikge1xuICAgICAgICAgICAgdGhpcy5fc2V0UmFuZ2VIYW5kbGVWYWx1ZUFuZFBvc2l0aW9uKFNsaWRlclJhbmdlSGFuZGxlcy5TZWNvbmQsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VIYW5kbGUyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXRWYWx1ZSh0aGlzLl9jb25zdHJ1Y3RSYW5nZU1vZGVsVmFsdWUoKSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVJhbmdlS2V5ZG93bihoYW5kbGVzOiBTbGlkZXJSYW5nZUhhbmRsZXMgfCBTbGlkZXJSYW5nZUhhbmRsZXNbXSwgZGlmZjogbnVtYmVyLCB1cDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBoYW5kbGVzID0gQXJyYXkuaXNBcnJheShoYW5kbGVzKSA/IGhhbmRsZXMgOiBbaGFuZGxlc107XG4gICAgICAgIGNvbnN0IHZhbHVlTWFwID0gbmV3IE1hcDxcbiAgICAgICAgICAgIFNsaWRlclJhbmdlSGFuZGxlcyxcbiAgICAgICAgICAgIHsgcHJldjogbnVtYmVyIHwgU2xpZGVyVGlja01hcmsgfCBudWxsOyBjdXJyZW50OiBudW1iZXIgfCBTbGlkZXJUaWNrTWFyayB8IG51bGwgfVxuICAgICAgICA+KCk7XG4gICAgICAgIGhhbmRsZXMuZm9yRWFjaCgoaGFuZGxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcmV2VmFsdWUgPSBoYW5kbGUgPT09IFNsaWRlclJhbmdlSGFuZGxlcy5GaXJzdCA/IHRoaXMuX2hhbmRsZTFWYWx1ZSA6IHRoaXMuX2hhbmRsZTJWYWx1ZTtcbiAgICAgICAgICAgIGxldCBuZXdWYWx1ZTogbnVtYmVyIHwgU2xpZGVyVGlja01hcmsgfCBudWxsID0gcHJldlZhbHVlICsgZGlmZiAqICh1cCA/IDEgOiAtMSk7XG4gICAgICAgICAgICBpZiAobmV3VmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5fcHJvY2Vzc05ld1ZhbHVlKG5ld1ZhbHVlIGFzIG51bWJlciwgIXRoaXMuX2lzUmFuZ2UpO1xuXG4gICAgICAgICAgICB2YWx1ZU1hcC5zZXQoaGFuZGxlLCB7IHByZXY6IHByZXZWYWx1ZSwgY3VycmVudDogbmV3VmFsdWUgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChBcnJheS5mcm9tKHZhbHVlTWFwLnZhbHVlcygpKS5zb21lKChlbnRyeSkgPT4gZW50cnkuY3VycmVudCA9PT0gZW50cnkucHJldikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhbHVlTWFwLmZvckVhY2goKGVudHJ5LCBoYW5kbGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3NldFJhbmdlSGFuZGxlVmFsdWVBbmRQb3NpdGlvbihoYW5kbGUsIGVudHJ5LmN1cnJlbnQgYXMgbnVtYmVyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5fY29uc3RydWN0UmFuZ2VNb2RlbFZhbHVlKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VmFsdWUodmFsdWU6IFNsaWRlckNvbnRyb2xWYWx1ZSwgZW1pdEV2ZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNSYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5faW5pdFJhbmdlTW9kZSgodmFsdWUgPz8gWzAuMF0pIGFzIG51bWJlcltdIHwgU2xpZGVyVGlja01hcmtbXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0U2luZ2VNb2RlKCh2YWx1ZSA/PyAwKSBhcyBudW1iZXIgfCBTbGlkZXJUaWNrTWFyayk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKGVtaXRFdmVudCkge1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlUG9wb3ZlcnNQb3NpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5fcG9wb3ZlcnMuZm9yRWFjaCgocG9wb3ZlcikgPT4gcG9wb3Zlci5yZWZyZXNoUG9zaXRpb24oKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVWYWx1ZUZyb21Qb2ludGVyUG9zaXRpb24oXG4gICAgICAgIGNvb3JkczogeyBjbGllbnRZOiBudW1iZXI7IGNsaWVudFg6IG51bWJlciB9LFxuICAgICAgICB0YWtlQ3VzdG9tVmFsdWUgPSB0cnVlXG4gICAgKTogbnVtYmVyIHwgU2xpZGVyVGlja01hcmsge1xuICAgICAgICBjb25zdCB7IGxlZnQsIHdpZHRoLCBib3R0b20sIGhlaWdodCB9ID0gdGhpcy50cmFja0VsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGxldCBwZXJjZW50YWdlID0gdGhpcy52ZXJ0aWNhbCA/IChib3R0b20gLSBjb29yZHMuY2xpZW50WSkgLyBoZWlnaHQgOiAoY29vcmRzLmNsaWVudFggLSBsZWZ0KSAvIHdpZHRoO1xuXG4gICAgICAgIGlmICh0aGlzLl9pc1J0bCkge1xuICAgICAgICAgICAgcGVyY2VudGFnZSA9IDEgLSBwZXJjZW50YWdlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5taW4gKyBwZXJjZW50YWdlICogKHRoaXMubWF4IC0gdGhpcy5taW4pO1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc05ld1ZhbHVlKG5ld1ZhbHVlLCB0YWtlQ3VzdG9tVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc05ld1ZhbHVlKG5ld1ZhbHVlOiBudW1iZXIsIHRha2VDdXN0b21WYWx1ZSA9IHRydWUpOiBudW1iZXIgfCBTbGlkZXJUaWNrTWFyayB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdWYWx1ZSA8IHRoaXMubWluKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMubWluO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VzZVNsaWRlclZhbHVlUHJlZml4ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgY29uc3Qgc3RlcERpZmZBcnJheSA9IHRoaXMuX3ZhbHVlc0J5U3RlcHNcbiAgICAgICAgICAgIC5tYXAoKHN0ZXBWYWx1ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICBkaWZmOiBNYXRoLmFicyhzdGVwVmFsdWUgLSBuZXdWYWx1ZSksXG4gICAgICAgICAgICAgICAgdmFsdWU6IHN0ZXBWYWx1ZVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5kaWZmIC0gYi5kaWZmKTtcbiAgICAgICAgbGV0IHZhbHVlOiBTbGlkZXJUaWNrTWFyayB8IG51bWJlciA9IHN0ZXBEaWZmQXJyYXlbMF0udmFsdWU7XG4gICAgICAgIGlmICh0YWtlQ3VzdG9tVmFsdWUgJiYgdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmN1c3RvbVZhbHVlc1t2YWx1ZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0UmFuZ2VIYW5kbGVWYWx1ZUFuZFBvc2l0aW9uKGhhbmRsZUluZGV4OiBTbGlkZXJSYW5nZUhhbmRsZXMsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLl9jYWxjUHJvZ3Jlc3ModmFsdWUsIHRydWUpO1xuICAgICAgICBpZiAoaGFuZGxlSW5kZXggPT09IFNsaWRlclJhbmdlSGFuZGxlcy5GaXJzdCkge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMVZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGUxUG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgfSBlbHNlIGlmIChoYW5kbGVJbmRleCA9PT0gU2xpZGVyUmFuZ2VIYW5kbGVzLlNlY29uZCkge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMlZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGUyUG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgfSBlbHNlIGlmIChoYW5kbGVJbmRleCA9PT0gU2xpZGVyUmFuZ2VIYW5kbGVzLkJvdGgpIHtcbiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBob3cgbXVjaCBzdGVwcyBiZWluZyBza2lwcGVkLlxuICAgICAgICAgICAgY29uc3Qgb2xkVmFsdWVJbmRleCA9IHRoaXMuX3ZhbHVlc0J5U3RlcHMuaW5kZXhPZih0aGlzLl9oYW5kbGUxVmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWVJbmRleCA9IHRoaXMuX3ZhbHVlc0J5U3RlcHMuaW5kZXhPZih2YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBkaWZmID0gb2xkVmFsdWVJbmRleCAtIG5ld1ZhbHVlSW5kZXg7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGUyVmFsdWVJbmRleCA9IHRoaXMuX3ZhbHVlc0J5U3RlcHMuaW5kZXhPZih0aGlzLl9oYW5kbGUyVmFsdWUpO1xuXG4gICAgICAgICAgICBpZiAoZGlmZiA9PT0gMCB8fCB0aGlzLl92YWx1ZXNCeVN0ZXBzLmxlbmd0aCA8PSBoYW5kbGUyVmFsdWVJbmRleCAtIGRpZmYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uU2hpZnQgPSBwb3NpdGlvbiAtIHRoaXMuX2hhbmRsZTFQb3NpdGlvbjtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZTFQb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMlBvc2l0aW9uID0gdGhpcy5faGFuZGxlMlBvc2l0aW9uICsgcG9zaXRpb25TaGlmdDtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZTFWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMlZhbHVlID0gdGhpcy5fdmFsdWVzQnlTdGVwc1toYW5kbGUyVmFsdWVJbmRleCAtIGRpZmZdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3JhbmdlUHJvZ3Jlc3MgPSBNYXRoLmFicyh0aGlzLl9oYW5kbGUyUG9zaXRpb24gLSB0aGlzLl9oYW5kbGUxUG9zaXRpb24pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29uc3RydWN0UmFuZ2VNb2RlbFZhbHVlKCk6IG51bWJlcltdIHwgU2xpZGVyVGlja01hcmtbXSB7XG4gICAgICAgIGxldCByYW5nZUxvd2VyVmFsdWU6IG51bWJlciB8IHN0cmluZztcbiAgICAgICAgbGV0IHJhbmdlSGlnaGVyVmFsdWU6IG51bWJlciB8IHN0cmluZztcbiAgICAgICAgbGV0IHJhbmdlVmFsdWU6IG51bWJlcltdIHwgU2xpZGVyVGlja01hcmtbXSA9IFtcbiAgICAgICAgICAgIE1hdGgubWluKHRoaXMuX2hhbmRsZTFWYWx1ZSwgdGhpcy5faGFuZGxlMlZhbHVlKSxcbiAgICAgICAgICAgIE1hdGgubWF4KHRoaXMuX2hhbmRsZTFWYWx1ZSwgdGhpcy5faGFuZGxlMlZhbHVlKVxuICAgICAgICBdO1xuICAgICAgICByYW5nZUxvd2VyVmFsdWUgPSByYW5nZVZhbHVlWzBdO1xuICAgICAgICByYW5nZUhpZ2hlclZhbHVlID0gcmFuZ2VWYWx1ZVsxXTtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tVmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG1pbiA9IHRoaXMuY3VzdG9tVmFsdWVzW3JhbmdlVmFsdWVbMF1dIHx8IHRoaXMuY3VzdG9tVmFsdWVzWzBdO1xuICAgICAgICAgICAgY29uc3QgbWF4ID0gdGhpcy5jdXN0b21WYWx1ZXNbcmFuZ2VWYWx1ZVsxXV0gfHwgdGhpcy5jdXN0b21WYWx1ZXNbdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICByYW5nZVZhbHVlID0gW21pbiwgbWF4XTtcbiAgICAgICAgICAgIHJhbmdlTG93ZXJWYWx1ZSA9IHJhbmdlVmFsdWVbMF0ubGFiZWw7XG4gICAgICAgICAgICByYW5nZUhpZ2hlclZhbHVlID0gcmFuZ2VWYWx1ZVsxXS5sYWJlbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9saXZlQW5ub3VuY2VyLmFubm91bmNlKCdyYW5nZSB2YWx1ZSBiZXR3ZWVuICcgKyByYW5nZUxvd2VyVmFsdWUgKyAnIGFuZCAnICsgcmFuZ2VIaWdoZXJWYWx1ZSwgJ3BvbGl0ZScpO1xuICAgICAgICByZXR1cm4gcmFuZ2VWYWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2F0dGFjaFJlc2l6ZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MDApLCB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX29uUmVzaXplKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbnN0cnVjdFRpY2tNYXJrcygpO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb25zdHJ1Y3RWYWx1ZXNCeVN0ZXBzKCk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWVzQnlTdGVwcyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZW5ndGg6ICh0aGlzLm1heCAtIHRoaXMubWluKSAvIHRoaXMuc3RlcCArIDFcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChfLCBpKSA9PiBOdW1iZXIoKHRoaXMubWluICsgaSAqIHRoaXMuc3RlcCkudG9GaXhlZCgyKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb25zdHJ1Y3RUaWNrTWFya3MoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpY2tNYXJrcyA9IFtdO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubWluID0gMDtcbiAgICAgICAgICAgIHRoaXMubWF4ID0gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICBjb25zdCBjdXN0b21WYWx1ZXNMZW5ndGggPSB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgdGhpcy5fdGlja01hcmtzID0gdGhpcy5jdXN0b21WYWx1ZXMubWFwKChpdGVtLCBpKSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICgxMDAgLyBjdXN0b21WYWx1ZXNMZW5ndGgpICogaVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdG90YWwgPSB0aGlzLm1heCAtIHRoaXMubWluO1xuICAgICAgICAgICAgY29uc3QgdGlja01hcmtzQ291bnQgPSB0b3RhbCAvIHRoaXMuc3RlcCArIDE7XG4gICAgICAgICAgICBpZiAodGhpcy5fbWF4VGlja01hcmtzTnVtYmVyICE9PSB1bmRlZmluZWQgJiYgdGlja01hcmtzQ291bnQgPiB0aGlzLl9tYXhUaWNrTWFya3NOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90aWNrTWFya3MgPSBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYCR7dGhpcy5taW59YFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogMTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRvdGFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGAke3RoaXMubWF4fWBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRpY2tNYXJrc0NvdW50ICUgMSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tNYXJrcyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aDogdGlja01hcmtzQ291bnRcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgKF8sIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gTWF0aC5yb3VuZChpICogdGhpcy5zdGVwICogMTAwKSAvIDEwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gKHZhbHVlIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pKSAqIDEwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGAke3RoaXMubWluICsgdmFsdWV9YFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9tYXhUaWNrTWFya3NOdW1iZXIoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0aGlzLnRyYWNrRWwgfHwgIXRoaXMudHJhY2tFbC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXMudHJhY2tFbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKCh0aGlzLnZlcnRpY2FsID8gaGVpZ2h0IDogd2lkdGgpIC8gTUlOX0RJU1RBTkNFX0JFVFdFRU5fVElDS1MpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY1Byb2dyZXNzKHZhbHVlOiBudW1iZXIsIHNraXBSdGwgPSBmYWxzZSk6IG51bWJlciB7XG4gICAgICAgIGxldCBwcm9ncmVzcyA9ICgodmFsdWUgLSB0aGlzLm1pbikgLyAodGhpcy5tYXggLSB0aGlzLm1pbikpICogMTAwO1xuICAgICAgICBpZiAoIXNraXBSdGwgJiYgdGhpcy5faXNSdGwpIHtcbiAgICAgICAgICAgIHByb2dyZXNzID0gMTAwIC0gcHJvZ3Jlc3M7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb2dyZXNzID4gMTAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMTAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9ncmVzcyA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9ncmVzcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlY2FsY0hhbmRsZVBvc2l0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzUmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZTFQb3NpdGlvbiA9IHRoaXMuX2NhbGNQcm9ncmVzcyh0aGlzLl9oYW5kbGUxVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMlBvc2l0aW9uID0gdGhpcy5fY2FsY1Byb2dyZXNzKHRoaXMuX2hhbmRsZTJWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9yYW5nZVByb2dyZXNzID0gTWF0aC5hYnModGhpcy5faGFuZGxlMlBvc2l0aW9uIC0gdGhpcy5faGFuZGxlMVBvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wcm9ncmVzcyA9IHRoaXMuX2NhbGNQcm9ncmVzcyh0aGlzLl9wb3NpdGlvbiBhcyBudW1iZXIsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2hlY2tJc0luUmFuZ2VNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc1JhbmdlID0gdGhpcy5tb2RlID09PSAncmFuZ2UnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFJ0bCBjaGFuZ2Ugc3Vic2NyaXB0aW9uICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9SdGwoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fcnRsU2VydmljZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2UucnRsLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGlzUnRsOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9pc1J0bCA9IGlzUnRsO1xuICAgICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRTaW5nZU1vZGUodmFsdWU6IG51bWJlciB8IFNsaWRlclRpY2tNYXJrKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0U2luZ2VNb2RlV2l0aEN1c3RvbVZhbHVlKHZhbHVlIGFzIFNsaWRlclRpY2tNYXJrKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbml0U2luZ2VNb2RlRGVmYXVsdChjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdGhpcy5taW4pKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRTaW5nZU1vZGVEZWZhdWx0KHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSB0aGlzLl9jYWxjUHJvZ3Jlc3ModmFsdWUsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdFNpbmdlTW9kZVdpdGhDdXN0b21WYWx1ZShzbGlkZXJUaWNrTWFyazogU2xpZGVyVGlja01hcmspOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSAodGhpcy5fZ2V0Q3VzdG9tVmFsdWVzUG9zaXRpb24oc2xpZGVyVGlja01hcmspIGFzIG51bWJlcikgfHwgdGhpcy5taW47XG4gICAgICAgIHRoaXMuX2luaXRTaW5nZU1vZGVEZWZhdWx0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRSYW5nZU1vZGUodmFsdWU6IG51bWJlcltdIHwgU2xpZGVyVGlja01hcmtbXSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5faW5pdFJhbmdlTW9kZVdpdGhDdXN0b21WYWx1ZXModmFsdWUgYXMgU2xpZGVyVGlja01hcmtbXSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlyc3RIYW5kbGUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZVswXSwgdGhpcy5taW4pO1xuICAgICAgICBjb25zdCBzZWNvbmRIYW5kbGUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZVsxXSwgdGhpcy5tYXgpO1xuICAgICAgICB0aGlzLl9pbml0UmFuZ2VNb2RlRGVmYXVsdChbZmlyc3RIYW5kbGUsIHNlY29uZEhhbmRsZV0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdFJhbmdlTW9kZURlZmF1bHQoW2ZpcnN0SGFuZGxlLCBzZWNvbmRIYW5kbGVdOiBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3NpdGlvbiA9IFtmaXJzdEhhbmRsZSwgc2Vjb25kSGFuZGxlXTtcbiAgICAgICAgdGhpcy5fc2V0UmFuZ2VIYW5kbGVWYWx1ZUFuZFBvc2l0aW9uKFNsaWRlclJhbmdlSGFuZGxlcy5GaXJzdCwgZmlyc3RIYW5kbGUpO1xuICAgICAgICB0aGlzLl9zZXRSYW5nZUhhbmRsZVZhbHVlQW5kUG9zaXRpb24oU2xpZGVyUmFuZ2VIYW5kbGVzLlNlY29uZCwgc2Vjb25kSGFuZGxlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRSYW5nZU1vZGVXaXRoQ3VzdG9tVmFsdWVzKFtmaXJzdEhhbmRsZSwgc2Vjb25kSGFuZGxlXTogU2xpZGVyVGlja01hcmtbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2dldEN1c3RvbVZhbHVlc1Bvc2l0aW9uKFtmaXJzdEhhbmRsZSwgc2Vjb25kSGFuZGxlXSkgfHwgW3RoaXMubWluLCB0aGlzLm1heF07XG4gICAgICAgIHRoaXMuX2luaXRSYW5nZU1vZGVEZWZhdWx0KHZhbHVlIGFzIG51bWJlcltdKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEN1c3RvbVZhbHVlc1Bvc2l0aW9uKHZhbHVlOiBTbGlkZXJUaWNrTWFyayB8IFNsaWRlclRpY2tNYXJrW10pOiBudW1iZXIgfCBudW1iZXJbXSB7XG4gICAgICAgIHRoaXMubWluID0gMDtcbiAgICAgICAgdGhpcy5tYXggPSB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggLSAxO1xuICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0Q3VzdG9tVmFsdWVzUG9zaXRpb25zKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEN1c3RvbVZhbHVlc1Bvc2l0aW9ucyh2YWx1ZTogU2xpZGVyVGlja01hcmsgfCBTbGlkZXJUaWNrTWFya1tdKTogbnVtYmVyIHwgbnVtYmVyW10ge1xuICAgICAgICBpZiAoIXZhbHVlIHx8ICh2YWx1ZSBhcyBTbGlkZXJUaWNrTWFya1tdKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1JhbmdlID8gWzAsIHRoaXMuY3VzdG9tVmFsdWVzLmxlbmd0aCAtIDFdIDogMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGxldCBbZmlyc3RIYW5kbGUsIHNlY29uZEhhbmRsZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIGlmICghdGhpcy5faW5zdGFuY2VPZkN1c3RvbVZhbHVlKGZpcnN0SGFuZGxlKSkge1xuICAgICAgICAgICAgICAgIGZpcnN0SGFuZGxlID0gdGhpcy5jdXN0b21WYWx1ZXNbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlT2ZDdXN0b21WYWx1ZShzZWNvbmRIYW5kbGUpKSB7XG4gICAgICAgICAgICAgICAgc2Vjb25kSGFuZGxlID0gdGhpcy5jdXN0b21WYWx1ZXNbdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBmaXJzdEhhbmRsZVBvc2l0aW9uID0gdGhpcy5jdXN0b21WYWx1ZXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLnZhbHVlID09PSBmaXJzdEhhbmRsZS52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBzZWNvbmRIYW5kbGVQb3NpdGlvbiA9IHRoaXMuY3VzdG9tVmFsdWVzLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS52YWx1ZSA9PT0gc2Vjb25kSGFuZGxlLnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ZXMgPSBbXG4gICAgICAgICAgICAgICAgZmlyc3RIYW5kbGVQb3NpdGlvbiA+PSAwID8gZmlyc3RIYW5kbGVQb3NpdGlvbiA6IDAsXG4gICAgICAgICAgICAgICAgc2Vjb25kSGFuZGxlUG9zaXRpb24gPj0gMCA/IHNlY29uZEhhbmRsZVBvc2l0aW9uIDogdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHJldHVybiBpbmRleGVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGZpcnN0SGFuZGxlID0gdmFsdWUgYXMgU2xpZGVyVGlja01hcms7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlT2ZDdXN0b21WYWx1ZShmaXJzdEhhbmRsZSkpIHtcbiAgICAgICAgICAgICAgICBmaXJzdEhhbmRsZSA9IHRoaXMuY3VzdG9tVmFsdWVzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tVmFsdWVzLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS52YWx1ZSA9PT0gZmlyc3RIYW5kbGUudmFsdWUpIHx8IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luc3RhbmNlT2ZDdXN0b21WYWx1ZShvYmplY3Q6IGFueSk6IG9iamVjdCBpcyBTbGlkZXJDdXN0b21WYWx1ZSB7XG4gICAgICAgIHJldHVybiAhIW9iamVjdCAmJiAndmFsdWUnIGluIG9iamVjdCAmJiAnbGFiZWwnIGluIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvSW50ZXJhY3Rpb25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZUZvY3VzZWQkLFxuICAgICAgICAgICAgdGhpcy5fcmFuZ2VIYW5kbGUxRm9jdXNlZCQsXG4gICAgICAgICAgICB0aGlzLl9yYW5nZUhhbmRsZTJGb2N1c2VkJCxcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJJbnB1dEZpZWxkRm9jdXNlZCQsXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRIb3ZlcmVkJCxcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJJbnB1dEZpZWxkSG92ZXJlZCRcbiAgICAgICAgXSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgbWFwKChzdGF0ZXMpID0+IHN0YXRlcy5zb21lKEJvb2xlYW4pKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGZvY3VzZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBub3QgZm9jdXNlZCwgY2hlY2sgZm9yIHRoZSBlZGdlIGNhc2UsXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gaG92ZXIgaXMgb24gdGhlIGZkLXBvcG92ZXItYm9keSwgdGhhdCBpcyBhIHBhcmVudCBmb3IgdGhlIHRvb2x0aXAuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gdHJ1ZSwgd2hlbiBob3ZlcmluZyB0aGUgZ2FwIGJldHdlZW4gaGFuZGxlIGFuZCB0aGUgdG9vbHRpcC5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzUG9wb3ZlckhvdmVyZWQoKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMTApLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChmb2N1c2VkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcG9wb3ZlcnMuZm9yRWFjaCgocG9wb3ZlcikgPT4gcG9wb3Zlci5vcGVuKCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0UHJlZml4KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJzLmZvckVhY2goKHBvcG92ZXIpID0+IHBvcG92ZXIuY2xvc2UoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gcmVzZXQgZGVmYXVsdCBwcmVmaXggb24gbGVhdmluZyB0aGUgc2xpZGVyICovXG4gICAgcHJpdmF0ZSBfcmVzZXRQcmVmaXgoKTogdm9pZCB7XG4gICAgICAgIC8vIHJlc2V0IHByZWZpeCBzdHJpbmcgZm9yIHNsaWRlciBjdXJyZW50IHZhbHVlIHRoYXQgbmVlZCB0byBiZSBhbm5vdW5jZWRcbiAgICAgICAgdGhpcy5fdXNlU2xpZGVyVmFsdWVQcmVmaXggPSB0cnVlO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENoZWNrcyB3aGV0aGVyIGlucHV0IHBvcG92ZXIgZWxlbWVudCBpcyBob3ZlcmVkLlxuICAgICAqIFdpbGwgYWxzbyByZXR1cm4gdHJ1ZSwgd2hlbiBob3ZlcmluZyB0aGUgZ2FwIGJldHdlZW4gaGFuZGxlIGFuZCB0aGUgdG9vbHRpcC5cbiAgICAgKiBJZiB5ZXMsIHJldHVybnMgXCJ0cnVlXCIgaW5zdGFudGx5IGFuZCBcImZhbHNlXCIgb25jZSBpdCdzIG5vdCBob3ZlcmVkIGFueW1vcmUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaXNQb3BvdmVySG92ZXJlZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgcG9wb3ZlckJvZHkgPSB0aGlzLl9zbGlkZXJUb29sdGlwV3JhcHBlcnMuZmlyc3Q/Lm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnZmQtcG9wb3Zlci1ib2R5Jyk7XG4gICAgICAgIGlmIChwb3BvdmVyQm9keT8ubWF0Y2hlcygnOmhvdmVyJykpIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tRXZlbnQocG9wb3ZlckJvZHksICdtb3VzZWxlYXZlJykucGlwZShtYXBUbyhmYWxzZSksIHRha2UoMSksIHN0YXJ0V2l0aCh0cnVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmQtc2xpZGVyX19pbm5lclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJfaXNSYW5nZSA/IHJhbmdlTW9kZSA6IHNpbmdsZU1vZGVcIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgY2xhc3M9XCJmZC1zbGlkZXJfX3RyYWNrXCIgKGNsaWNrKT1cIm9uVHJhY2tDbGljaygkZXZlbnQpXCIgI3RyYWNrPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiX2lzUmFuZ2UgPyByYW5nZU1vZGVUcmFjayA6IHNpbmdsZU1vZGVUcmFja1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZkLXNsaWRlcl9fdGljay13cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZC1zbGlkZXJfX3RpY2tzXCIgKGNsaWNrKT1cIm9uVHJhY2tDbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1RpY2tzXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGljayBvZiBfdGlja01hcmtzOyBpbmRleCBhcyBpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyX190aWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLXNsaWRlci1wb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZlcnRpY2FsXT1cInZlcnRpY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJ0aWNrLnBvc2l0aW9uIHx8IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkLXNsaWRlcl9fdGljay0taW4tcmFuZ2VdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIWhpZGVQcm9ncmVzc0JhciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfaXNSYW5nZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRpY2sudmFsdWUgPj0gX3Bvc2l0aW9uWzBdICYmIHRpY2sudmFsdWUgPD0gX3Bvc2l0aW9uWzFdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGljay52YWx1ZSA8PSBfcG9zaXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLXNsaWRlcl9fbGFiZWxzXCIgKm5nSWY9XCJzaG93VGlja3MgJiYgc2hvd1RpY2tzTGFiZWxzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0aWNrIG9mIF90aWNrTWFya3M7IGluZGV4IGFzIGk7IGxhc3QgYXMgbGFzdDsgZmlyc3QgYXMgZmlyc3RcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlyc3QgfHwgbGFzdCB8fCBpICUgdGlja21hcmtzQmV0d2VlbkxhYmVscyA9PT0gMFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyX19sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIGZkLXNsaWRlci1wb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICBbdmVydGljYWxdPVwidmVydGljYWxcIlxuICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwidGljay5wb3NpdGlvbiB8fCAwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IHRpY2subGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3NpbmdsZU1vZGVUcmFjaz5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiIWhpZGVQcm9ncmVzc0JhclwiXG4gICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyX190cmFjay1yYW5nZVwiXG4gICAgICAgIFtzdHlsZS5oZWlnaHQuJV09XCJ2ZXJ0aWNhbCA/IF9wcm9ncmVzcyA6IG51bGxcIlxuICAgICAgICBbc3R5bGUud2lkdGguJV09XCJ2ZXJ0aWNhbCA/IG51bGwgOiBfcHJvZ3Jlc3NcIlxuICAgID48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcmFuZ2VNb2RlVHJhY2s+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiFoaWRlUHJvZ3Jlc3NCYXJcIlxuICAgICAgICBjbGFzcz1cImZkLXNsaWRlcl9fdHJhY2stcmFuZ2VcIlxuICAgICAgICBbc3R5bGUuaGVpZ2h0LiVdPVwidmVydGljYWwgPyBfcmFuZ2VQcm9ncmVzcyA6IG51bGxcIlxuICAgICAgICBbc3R5bGUud2lkdGguJV09XCJ2ZXJ0aWNhbCA/IG51bGwgOiBfcmFuZ2VQcm9ncmVzc1wiXG4gICAgICAgIGZkLXNsaWRlci1wb3NpdGlvblxuICAgICAgICBbdmVydGljYWxdPVwidmVydGljYWxcIlxuICAgICAgICBbcG9zaXRpb25dPVwiX2hhbmRsZTFQb3NpdGlvbiA8IF9oYW5kbGUyUG9zaXRpb24gPyBfaGFuZGxlMVBvc2l0aW9uIDogX2hhbmRsZTJQb3NpdGlvblwiXG4gICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZkLXNsaWRlcl9fdHJhY2stZm9jdXMtcmFuZ2VcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbkhhbmRsZUNsaWNrKCRldmVudCwgdHJ1ZSlcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudCwgX2hhbmRsZXMuQm90aClcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICNyYW5nZUdyb3VwSGFuZGxlXG4gICAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2luZ2xlTW9kZT5cbiAgICA8ZGl2XG4gICAgICAgICNoYW5kbGVcbiAgICAgICAgY2xhc3M9XCJmZC1zbGlkZXJfX2hhbmRsZVwiXG4gICAgICAgIFtjbGFzcy5mZC1zbGlkZXJfX2hhbmRsZS0tbGddPVwiX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuaXNDb3p5JCB8IGFzeW5jXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICByb2xlPVwic2xpZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIGFyaWFMYWJlbCB8fCAoJ2NvcmVTbGlkZXIuc2luZ2xlTWluTWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgbWluOiBtaW5WYWx1ZSwgbWF4OiBtYXhWYWx1ZSB9KVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICBbZmRQb3BvdmVyVHJpZ2dlcl09XCJ0b29sdGlwTW9kZSA/IHNpbmdsZVNsaWRlclBvcG92ZXIgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCInY29yZVNsaWRlci5zaW5nbGVWYWx1ZW1pbkRldGFpbHMnIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBtaW5WYWx1ZSB9XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCInY29yZVNsaWRlci5zaW5nbGVWYWx1ZW1heERldGFpbHMnIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBtYXhWYWx1ZSB9XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJcbiAgICAgICAgICAgIF91c2VTbGlkZXJWYWx1ZVByZWZpeFxuICAgICAgICAgICAgICAgID8gKCdjb3JlU2xpZGVyLnNpbmdsZVZhbHVlTm93RGV0YWlscydcbiAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBnZXRWYWx1ZW5vdyhfcG9zaXRpb24sIF9zbGlkZXJWYWx1ZVRhcmdldHMuU0lOR0xFX1NMSURFUikgfSlcbiAgICAgICAgICAgICAgICA6IGdldFZhbHVlbm93KF9wb3NpdGlvbiwgX3NsaWRlclZhbHVlVGFyZ2V0cy5TSU5HTEVfU0xJREVSKVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVldGV4dF09XCJcbiAgICAgICAgICAgIF91c2VTbGlkZXJWYWx1ZVByZWZpeFxuICAgICAgICAgICAgICAgID8gKCdjb3JlU2xpZGVyLnNpbmdsZVZhbHVlTm93RGV0YWlscydcbiAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBnZXRWYWx1ZW5vdyhfcG9zaXRpb24sIF9zbGlkZXJWYWx1ZVRhcmdldHMuU0lOR0xFX1NMSURFUikgfSlcbiAgICAgICAgICAgICAgICA6IGdldFZhbHVlbm93KF9wb3NpdGlvbiwgX3NsaWRlclZhbHVlVGFyZ2V0cy5TSU5HTEVfU0xJREVSKVxuICAgICAgICBcIlxuICAgICAgICBmZC1zbGlkZXItcG9zaXRpb25cbiAgICAgICAgW3ZlcnRpY2FsXT1cInZlcnRpY2FsXCJcbiAgICAgICAgW3Bvc2l0aW9uXT1cIl9wcm9ncmVzc1wiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25IYW5kbGVDbGljaygkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAoZm9jdXMpPVwiX2hhbmRsZUZvY3VzZWQkLm5leHQodHJ1ZSlcIlxuICAgICAgICAoYmx1cik9XCJfaGFuZGxlRm9jdXNlZCQubmV4dChmYWxzZSlcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgPjwvZGl2PlxuXG4gICAgPGZkLXBvcG92ZXJcbiAgICAgICAgI3NpbmdsZVNsaWRlclBvcG92ZXJcbiAgICAgICAgW3RyaWdnZXJzXT1cIltdXCJcbiAgICAgICAgW2Nsb3NlT25PdXRzaWRlQ2xpY2tdPVwiZmFsc2VcIlxuICAgICAgICBbYXBwZW5kVG9dPVwiaGFuZGxlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiF0b29sdGlwTW9kZVwiXG4gICAgICAgIGNsYXNzPVwiZmQtcG9wb3Zlci0tc2xpZGVyXCJcbiAgICAgICAgYWRkaXRpb25hbEJvZHlDbGFzcz1cImZkLXNsaWRlci0tdG9vbHRpcC1wb3BvdmVyXCJcbiAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgcG9wb3ZlcklubmVyO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgdGFyZ2V0OiBfc2xpZGVyVmFsdWVUYXJnZXRzLlNJTkdMRV9TTElERVIsIHBvc2l0aW9uOiBfcG9zaXRpb24gfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvZmQtcG9wb3Zlcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcmFuZ2VNb2RlPlxuICAgIDxkaXZcbiAgICAgICAgI3JhbmdlSGFuZGxlMVxuICAgICAgICBjbGFzcz1cImZkLXNsaWRlcl9faGFuZGxlXCJcbiAgICAgICAgW2NsYXNzLmZkLXNsaWRlcl9faGFuZGxlLS1sZ109XCJfY29udGVudERlbnNpdHlPYnNlcnZlci5pc0NvenkkIHwgYXN5bmNcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICAgIHJvbGU9XCJzbGlkZXJcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgYXJpYUxhYmVsIHx8ICgnY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTFNaW5NYXhEZXRhaWxzJyB8IGZkVHJhbnNsYXRlIDogeyBtaW46IG1pblZhbHVlLCBtYXg6IG1heFZhbHVlIH0pXG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgIFtmZFBvcG92ZXJUcmlnZ2VyXT1cInRvb2x0aXBNb2RlID8gcmFuZ2VTbGlkZXJQb3BvdmVyMSA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIidjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMVZhbHVlbWluRGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IG1pblZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIidjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMVZhbHVlbWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IG1heFZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cIlxuICAgICAgICAgICAgX3VzZVNsaWRlclZhbHVlUHJlZml4XG4gICAgICAgICAgICAgICAgPyAoJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUxVmFsdWVOb3dEZXRhaWxzJ1xuICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IGdldFZhbHVlbm93KF9oYW5kbGUxVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMSkgfSlcbiAgICAgICAgICAgICAgICA6IGdldFZhbHVlbm93KF9oYW5kbGUxVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMSlcbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZXRleHRdPVwiXG4gICAgICAgICAgICBfdXNlU2xpZGVyVmFsdWVQcmVmaXhcbiAgICAgICAgICAgICAgICA/ICgnY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTFWYWx1ZU5vd0RldGFpbHMnXG4gICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlIDogeyB2YWx1ZTogZ2V0VmFsdWVub3coX2hhbmRsZTFWYWx1ZSwgX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIxKSB9KVxuICAgICAgICAgICAgICAgIDogZ2V0VmFsdWVub3coX2hhbmRsZTFWYWx1ZSwgX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIxKVxuICAgICAgICBcIlxuICAgICAgICBmZC1zbGlkZXItcG9zaXRpb25cbiAgICAgICAgW3ZlcnRpY2FsXT1cInZlcnRpY2FsXCJcbiAgICAgICAgW3Bvc2l0aW9uXT1cIl9oYW5kbGUxUG9zaXRpb25cIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uSGFuZGxlQ2xpY2soJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudCwgX2hhbmRsZXMuRmlyc3QpXCJcbiAgICAgICAgKGZvY3VzKT1cIl9yYW5nZUhhbmRsZTFGb2N1c2VkJC5uZXh0KHRydWUpXCJcbiAgICAgICAgKGJsdXIpPVwiX3JhbmdlSGFuZGxlMUZvY3VzZWQkLm5leHQoZmFsc2UpXCJcbiAgICA+PC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgICNyYW5nZUhhbmRsZTJcbiAgICAgICAgY2xhc3M9XCJmZC1zbGlkZXJfX2hhbmRsZVwiXG4gICAgICAgIFtjbGFzcy5mZC1zbGlkZXJfX2hhbmRsZS0tbGddPVwiX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuaXNDb3p5JCB8IGFzeW5jXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICByb2xlPVwic2xpZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIGFyaWFMYWJlbCB8fCAoJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUyTWluTWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgbWluOiBtaW5WYWx1ZSwgbWF4OiBtYXhWYWx1ZSB9KVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICBbZmRQb3BvdmVyVHJpZ2dlcl09XCJ0b29sdGlwTW9kZSA/IHJhbmdlU2xpZGVyUG9wb3ZlcjIgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCInY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTJWYWx1ZW1pbkRldGFpbHMnIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBtaW5WYWx1ZSB9XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCInY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTJWYWx1ZW1heERldGFpbHMnIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBtYXhWYWx1ZSB9XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJcbiAgICAgICAgICAgIF91c2VTbGlkZXJWYWx1ZVByZWZpeFxuICAgICAgICAgICAgICAgID8gKCdjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMlZhbHVlTm93RGV0YWlscydcbiAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBnZXRWYWx1ZW5vdyhfaGFuZGxlMlZhbHVlLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjIpIH0pXG4gICAgICAgICAgICAgICAgOiBnZXRWYWx1ZW5vdyhfaGFuZGxlMlZhbHVlLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjIpXG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWV0ZXh0XT1cIlxuICAgICAgICAgICAgX3VzZVNsaWRlclZhbHVlUHJlZml4XG4gICAgICAgICAgICAgICAgPyAoJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUyVmFsdWVOb3dEZXRhaWxzJ1xuICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IGdldFZhbHVlbm93KF9oYW5kbGUyVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMikgfSlcbiAgICAgICAgICAgICAgICA6IGdldFZhbHVlbm93KF9oYW5kbGUyVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMilcbiAgICAgICAgXCJcbiAgICAgICAgZmQtc2xpZGVyLXBvc2l0aW9uXG4gICAgICAgIFt2ZXJ0aWNhbF09XCJ2ZXJ0aWNhbFwiXG4gICAgICAgIFtwb3NpdGlvbl09XCJfaGFuZGxlMlBvc2l0aW9uXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbkhhbmRsZUNsaWNrKCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQsIF9oYW5kbGVzLlNlY29uZClcIlxuICAgICAgICAoZm9jdXMpPVwiX3JhbmdlSGFuZGxlMkZvY3VzZWQkLm5leHQodHJ1ZSlcIlxuICAgICAgICAoYmx1cik9XCJfcmFuZ2VIYW5kbGUyRm9jdXNlZCQubmV4dChmYWxzZSlcIlxuICAgID48L2Rpdj5cblxuICAgIDxmZC1wb3BvdmVyXG4gICAgICAgICNyYW5nZVNsaWRlclBvcG92ZXIxXG4gICAgICAgIFt0cmlnZ2Vyc109XCJbXVwiXG4gICAgICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImZhbHNlXCJcbiAgICAgICAgW2FwcGVuZFRvXT1cInJhbmdlSGFuZGxlMVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhdG9vbHRpcE1vZGVcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtc2xpZGVyLS10b29sdGlwLXBvcG92ZXJcIlxuICAgICAgICBjbGFzcz1cImZkLXBvcG92ZXItLXNsaWRlclwiXG4gICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHBvcG92ZXJJbm5lcjtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7IHRhcmdldDogX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIxLCBwb3NpdGlvbjogX2hhbmRsZTFWYWx1ZSB9XG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1wb3BvdmVyPlxuXG4gICAgPGZkLXBvcG92ZXJcbiAgICAgICAgI3JhbmdlU2xpZGVyUG9wb3ZlcjJcbiAgICAgICAgW3RyaWdnZXJzXT1cIltdXCJcbiAgICAgICAgW2Nsb3NlT25PdXRzaWRlQ2xpY2tdPVwiZmFsc2VcIlxuICAgICAgICBbYXBwZW5kVG9dPVwicmFuZ2VIYW5kbGUyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiF0b29sdGlwTW9kZVwiXG4gICAgICAgIGFkZGl0aW9uYWxCb2R5Q2xhc3M9XCJmZC1zbGlkZXItLXRvb2x0aXAtcG9wb3ZlclwiXG4gICAgICAgIGNsYXNzPVwiZmQtcG9wb3Zlci0tc2xpZGVyXCJcbiAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgcG9wb3ZlcklubmVyO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgdGFyZ2V0OiBfc2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjIsIHBvc2l0aW9uOiBfaGFuZGxlMlZhbHVlIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2ZkLXBvcG92ZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3BvcG92ZXJJbm5lciBsZXQtdGFyZ2V0PVwidGFyZ2V0XCIgbGV0LXBvc2l0aW9uPVwicG9zaXRpb25cIj5cbiAgICA8ZGl2XG4gICAgICAgICNzbGlkZXJUb29sdGlwV3JhcHBlclxuICAgICAgICBjbGFzcz1cImZkLXNsaWRlci0tdG9vbHRpcC13cmFwcGVyXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cIl9wb3BvdmVySW5wdXRGaWVsZEhvdmVyZWQkLm5leHQodHJ1ZSlcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJfcG9wb3ZlcklucHV0RmllbGRIb3ZlcmVkJC5uZXh0KGZhbHNlKVwiXG4gICAgPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiKGN1c3RvbVZhbHVlcyAmJiBjdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkgfHwgdG9vbHRpcE1vZGUgPT09ICdyZWFkb25seSdcIiBjbGFzcz1cImZkLXNsaWRlci0tdG9vbHRpcFwiPlxuICAgICAgICAgICAge3sgY3VzdG9tVmFsdWVzICYmIGN1c3RvbVZhbHVlcy5sZW5ndGggPiAwID8gY3VzdG9tVmFsdWVzW3Bvc2l0aW9uXS5sYWJlbCA6IF9wb3BvdmVyVmFsdWVSZWZbdGFyZ2V0XSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNwb3BvdmVySW5wdXRGaWVsZFxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgZmRrT25seURpZ2l0c1xuICAgICAgICAgICAgW2RlY2ltYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGguY2hdPVwiKCcnICsgX3BvcG92ZXJWYWx1ZVJlZlt0YXJnZXRdKS5sZW5ndGggKyAyXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQgZmQtc2xpZGVyLS10b29sdGlwIHt7IF9wb3BvdmVySW5wdXRGaWVsZENsYXNzIH19XCJcbiAgICAgICAgICAgICpuZ0lmPVwiY3VzdG9tVmFsdWVzPy5sZW5ndGggPT09IDAgJiYgdG9vbHRpcE1vZGUgPT09ICdlZGl0YWJsZSdcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfcG9wb3ZlclZhbHVlUmVmW3RhcmdldF1cIlxuICAgICAgICAgICAgKGJsdXIpPVwiX3VwZGF0ZVZhbHVlRnJvbUlucHV0KHBvcG92ZXJJbnB1dEZpZWxkLnZhbHVlLCB0YXJnZXQpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIl91cGRhdGVWYWx1ZUZyb21JbnB1dChwb3BvdmVySW5wdXRGaWVsZC52YWx1ZSwgdGFyZ2V0KVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwiX3BvcG92ZXJJbnB1dEZpZWxkRm9jdXNlZCQubmV4dCh0cnVlKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJfcG9wb3ZlcklucHV0RmllbGRGb2N1c2VkJC5uZXh0KGZhbHNlKVwiXG4gICAgICAgIC8+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|