{"version":3,"file":"microsoft-windows-admin-center-sdk-angular.mjs","sources":["../../../../../angular/src/directives/router/router-link.directive.ts","../../../../../angular/src/directives/router/router.module.ts","../../../../../angular/src/service/resource.service.ts","../../../../../angular/src/directives/svg/svg.directive.ts","../../../../../angular/src/directives/svg/svg-resource.ts","../../../../../angular/src/directives/svg/svg.module.ts","../../../../../angular/src/controls/common/template-loader-base.component.ts","../../../../../angular/src/directives/template-outlet/template-outlet.directive.ts","../../../../../angular/src/directives/template-outlet/template-outlet.module.ts","../../../../../angular/src/directives/disabled/disabled.directive.ts","../../../../../angular/src/directives/disabled/disabled.module.ts","../../../../../angular/src/directives/markdown/markdown.directive.ts","../../../../../angular/src/directives/markdown/markdown.module.ts","../../../../../angular/src/controls/common/decorators/injection.decorators.ts","../../../../../angular/src/controls/common/ng-lifecycle-base.component.ts","../../../../../angular/src/controls/common/base.component.ts","../../../../../angular/src/directives/clamp/clamp.directive.ts","../../../../../angular/src/directives/clamp/clamp.module.ts","../../../../../angular/src/directives/tile/tile-image.directive.ts","../../../../../angular/src/directives/tile/tile-directives.module.ts","../../../../../angular/src/directives/telemetry/telemetry.directive.ts","../../../../../angular/src/directives/telemetry/telemetry-directives.module.ts","../../../../../angular/src/directives/autofocus/autofocus.directive.ts","../../../../../angular/src/directives/autofocus/autofocus.module.ts","../../../../../angular/src/directives/discard/discard.directive.ts","../../../../../angular/src/directives/discard/discard.module.ts","../../../../../angular/src/guards/dev.guard.service.ts","../../../../../angular/src/guards/experiment.guard.service.ts","../../../../../angular/src/service/rpc.service.ts","../../../../../angular/src/service/authorization.service.ts","../../../../../angular/src/service/http.service.ts","../../../../../angular/src/service/gateway.service.ts","../../../../../angular/src/service/batch.service.ts","../../../../../angular/src/service/node.service.ts","../../../../../angular/src/service/cim.service.ts","../../../../../angular/src/service/connection.service.ts","../../../../../angular/src/service/file-transfer.service.ts","../../../../../angular/src/service/lifetime.service.ts","../../../../../angular/src/service/powershell.service.ts","../../../../../angular/src/service/active-connection.service.ts","../../../../../angular/src/service/azure-manager.service.ts","../../../../../angular/src/service/websocket-stream.service.ts","../../../../../angular/src/service/powershell-stream.service.ts","../../../../../angular/src/service/cim-stream.service.ts","../../../../../angular/src/service/credssp-manager.service.ts","../../../../../angular/src/service/frame.service.ts","../../../../../angular/src/service/navigation.ts","../../../../../angular/src/service/notification.service.ts","../../../../../angular/src/service/settings.service.ts","../../../../../angular/src/service/ssh-stream.service.ts","../../../../../angular/src/service/work-item.service.ts","../../../../../angular/src/service/app-context.service.ts","../../../../../angular/src/guards/installation-type.guard.service.ts","../../../../../angular/src/guards/guards.module.ts","../../../../../angular/src/guards/index.ts","../../../../../angular/src/pipes/boolean-converter-pipe.ts","../../../../../angular/src/pipes/boolean-converter-pipe.module.ts","../../../../../angular/src/pipes/byte-unit-converter-pipe.ts","../../../../../angular/src/pipes/byte-unit-converter-pipe.module.ts","../../../../../angular/src/pipes/date-converter-pipe.ts","../../../../../angular/src/pipes/date-converter-pipe.module.ts","../../../../../angular/src/pipes/enum-converter-pipe.ts","../../../../../angular/src/pipes/enum-converter-pipe.module.ts","../../../../../angular/src/pipes/filter-pipe.ts","../../../../../angular/src/pipes/filter-pipe.module.ts","../../../../../angular/src/pipes/format-pipe.ts","../../../../../angular/src/pipes/format-pipe.module.ts","../../../../../angular/src/pipes/highlight-pipe.ts","../../../../../angular/src/pipes/highlight-pipe.module.ts","../../../../../angular/src/pipes/yesno-converter-pipe.ts","../../../../../angular/src/pipes/yesno-converter-pipe.module.ts","../../../../../angular/src/controls/backdrop/backdrop.component.ts","../../../../../angular/src/controls/backdrop/backdrop.component.html","../../../../../angular/src/controls/backdrop/backdrop.module.ts","../../../../../angular/src/controls/tool-header/tool-header.component.ts","../../../../../angular/src/controls/tool-header/tool-header.component.html","../../../../../angular/src/controls/tool-header/tool-header.module.ts","../../../../../angular/src/controls/idle/idle.component.ts","../../../../../angular/src/controls/idle/idle.module.ts","../../../../../angular/src/controls/common/events/disabledChanged.event.ts","../../../../../angular/src/controls/common/layout.ts","../../../../../angular/src/controls/tooltip/models/tooltip-options.ts","../../../../../angular/src/controls/tooltip/tooltip-host-instance.ts","../../../../../angular/src/controls/tooltip/tooltip-host.component.html","../../../../../angular/src/controls/tooltip/tooltip-host.component.ts","../../../../../angular/src/controls/ux/sme-ux.component.ts","../../../../../angular/src/controls/extension-root/ux-extension-root.component.ts","../../../../../angular/src/controls/extension-root/ux-extension-root.component.html","../../../../../angular/src/controls/extension-root/background-extension-root.component.ts","../../../../../angular/src/controls/tooltip/tooltip-zone.directive.ts","../../../../../angular/src/controls/tooltip/models/tooltip-placement.ts","../../../../../angular/src/controls/tooltip/tooltip.directive.ts","../../../../../angular/src/controls/tooltip/tooltip.module.ts","../../../../../angular/src/controls/ux/sme-ux.module.ts","../../../../../angular/src/controls/extension-root/extension-root.module.ts","../../../../../angular/src/controls/accordion/accordion-panel/accordion-panel.component.html","../../../../../angular/src/controls/accordion/accordion-panel/accordion-panel.component.ts","../../../../../angular/src/controls/accordion/accordion.component.ts","../../../../../angular/src/controls/accordion/accordion.component.html","../../../../../angular/src/controls/accordion/accordion.module.ts","../../../../../angular/src/controls/dropdown/dropdown.service.ts","../../../../../angular/src/controls/dropdown/dropdown.component.ts","../../../../../angular/src/controls/dropdown/dropdown.component.html","../../../../../angular/src/controls/dropdown/dropdown.module.ts","../../../../../angular/src/controls/actions/containers/action-container.component.ts","../../../../../angular/src/controls/common/dynamic.component.ts","../../../../../angular/src/controls/actions/items/action-item.component.ts","../../../../../angular/src/controls/actions/items/dynamic-action-item.component.ts","../../../../../angular/src/controls/actions/containers/action-menu/action-menu.component.html","../../../../../angular/src/controls/actions/containers/action-menu/action-menu.component.ts","../../../../../angular/src/controls/actions/containers/action-bar/action-bar.component.html","../../../../../angular/src/controls/actions/containers/action-bar/action-bar.component.ts","../../../../../angular/src/controls/actions/containers/action-bar/action-bar.directive.ts","../../../../../angular/src/controls/actions/items/action-button/action-button-renderer.component.html","../../../../../angular/src/controls/actions/items/action-button/action-button-renderer.component.ts","../../../../../angular/src/controls/actions/items/action-button/action-button.ts","../../../../../angular/src/controls/actions/items/action-button/action-button.component.ts","../../../../../angular/src/controls/actions/items/action-button-async/action-button-async.ts","../../../../../angular/src/controls/actions/items/action-button-async/action-button-async.component.ts","../../../../../angular/src/controls/actions/items/action-dropdown/action-dropdown.component.html","../../../../../angular/src/controls/actions/items/action-dropdown/action-dropdown.component.ts","../../../../../angular/src/controls/actions/items/action-item-separator/action-item-separator-renderer.component.html","../../../../../angular/src/controls/actions/items/action-item-separator/action-item-separator-renderer.component.ts","../../../../../angular/src/controls/actions/items/action-item-separator/action-item-separator.ts","../../../../../angular/src/controls/actions/items/action-item-separator/action-item-separator.component.ts","../../../../../angular/src/service/extension-broker.service.ts","../../../../../angular/src/service/tag.service.ts","../../../../../angular/src/controls/actions/templates/tags-action-button.component.ts","../../../../../angular/src/controls/actions/actions.module.ts","../../../../../angular/src/controls/drop-zone/drop-zone.component.ts","../../../../../angular/src/controls/drop-zone/drop-zone.module.ts","../../../../../angular/src/controls/icon/icon-text/icon-text.component.html","../../../../../angular/src/controls/icon/icon-text/icon-text.component.ts","../../../../../angular/src/controls/icon/layered-icon/models/icon-size-helpers.ts","../../../../../angular/src/controls/icon/layered-icon/layer/icon-layer.component.ts","../../../../../angular/src/controls/icon/layered-icon/layered-icon.component.ts","../../../../../angular/src/controls/icon/layered-icon/status/status-icon.component.html","../../../../../angular/src/controls/icon/layered-icon/status/status-icon.component.ts","../../../../../angular/src/controls/icon/icon.module.ts","../../../../../angular/src/controls/layout/editable-layout-item.component.html","../../../../../angular/src/controls/layout/editable-layout-item.component.ts","../../../../../angular/src/controls/common/sme-responsive-window-manager.component.ts","../../../../../angular/src/controls/layout/layout-config.ts","../../../../../angular/src/controls/layout/layout-definition.component.ts","../../../../../angular/src/controls/layout/layout-item.component.html","../../../../../angular/src/controls/layout/layout-item.component.ts","../../../../../angular/src/controls/layout/layout-responsive-window-manager.ts","../../../../../angular/src/controls/layout/layout.component.ts","../../../../../angular/src/controls/layout/layout.component.html","../../../../../angular/src/controls/layout/editable-layout.component.ts","../../../../../angular/src/controls/layout/editable-layout.component.html","../../../../../angular/src/controls/layout/layout.module.ts","../../../../../angular/src/controls/loading-wheel/loading-wheel.component.html","../../../../../angular/src/controls/loading-wheel/loading-wheel.component.ts","../../../../../angular/src/controls/loading-wheel/loading-wheel.module.ts","../../../../../angular/src/controls/schema/schema-models.ts","../../../../../angular/src/controls/schema/schema-utilities.ts","../../../../../angular/src/controls/schema/schema-store.ts","../../../../../angular/src/controls/schema/schema-decorator.ts","../../../../../angular/src/controls/form/validation-alert/validation-alert.ts","../../../../../angular/src/controls/form/form-field/form-field-accessor.directive.ts","../../../../../angular/src/controls/form/form-field/form-field-aggregator.ts","../../../../../angular/src/controls/form/validators/base-async-validator.ts","../../../../../angular/src/controls/form/validators/sme-async-validator.ts","../../../../../angular/src/controls/form/form-field/form-field-async-validator.directive.ts","../../../../../angular/src/controls/form/form-field/form-field-orientation.ts","../../../../../angular/src/controls/form/validators/base-validator.ts","../../../../../angular/src/controls/form/validators/sme-validator.ts","../../../../../angular/src/controls/form/form-field/form-field-validator.directive.ts","../../../../../angular/src/controls/form/form-field/form-field.component.ts","../../../../../angular/src/controls/schema/schema-field-host.component.ts","../../../../../angular/src/controls/schema/schema-field-host.component.html","../../../../../angular/src/controls/form/form-field/form-field-template.directive.ts","../../../../../angular/src/controls/form/form-field/options-form-field/form-field-option.component.ts","../../../../../angular/src/controls/form/form-field/options-form-field/options-form-field.component.ts","../../../../../angular/src/controls/form/form-field/options-form-field/option-subform-template-loader.component.ts","../../../../../angular/src/controls/form/validation-alert/validation-alert.component.html","../../../../../angular/src/controls/form/validation-alert/validation-alert.component.ts","../../../../../angular/src/controls/form/fieldset/fieldset.directive.ts","../../../../../angular/src/controls/form/form-field-layout/form-field-layout.component.html","../../../../../angular/src/controls/form/form-field-layout/form-field-layout.component.ts","../../../../../angular/src/controls/form/form-field/checklist/checklist-form-field.component.ts","../../../../../angular/src/controls/form/form-field/checklist/checklist-form-field.component.html","../../../../../angular/src/controls/form/form-field/object/object-default-form-field-loader.component.html","../../../../../angular/src/controls/form/form-field/object/object-default-form-field-loader.component.ts","../../../../../angular/src/controls/schema/basic-form-loader.component.html","../../../../../angular/src/controls/schema/basic-form-loader.component.ts","../../../../../angular/src/controls/schema/data-only-form-field-loader.component.ts","../../../../../angular/src/controls/dialog/dialog.component.html","../../../../../angular/src/controls/dialog/dialog.component.ts","../../../../../angular/src/controls/dialog/dialog.service.ts","../../../../../angular/src/controls/schema/tabbed-form-loader.component.html","../../../../../angular/src/controls/schema/tabbed-form-loader.component.ts","../../../../../angular/src/controls/schema/schema-field-host.module.ts","../../../../../angular/src/controls/form/form-field/form-field-accessibility-manager-base.service.ts","../../../../../angular/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.ts","../../../../../angular/src/controls/form/form-field/isolator/isolator.component.ts","../../../../../angular/src/controls/form/form-field/array/array-form-field.component.ts","../../../../../angular/src/controls/form/form-field/array/array-form-field.component.html","../../../../../angular/src/controls/form/form-field/date-like/date-like-form-field.component.ts","../../../../../angular/src/controls/form/form-field/calendar/calendar-form-field.component.html","../../../../../angular/src/controls/form/form-field/calendar/calendar-form-field.component.ts","../../../../../angular/src/controls/form/form-field/checkbox/checkbox-form-field.component.html","../../../../../angular/src/controls/form/form-field/checkbox/checkbox-form-field.component.ts","../../../../../angular/src/controls/form/form-field/clock/clock-form-field.component.html","../../../../../angular/src/controls/form/form-field/clock/clock-form-field.component.ts","../../../../../angular/src/controls/form/form-field/code/monaco.ts","../../../../../angular/src/controls/form/form-field/code/code-form-field.component.html","../../../../../angular/src/controls/form/form-field/code/code-form-field.component.ts","../../../../../angular/src/controls/form/form-field/search/search-form-field.component.html","../../../../../angular/src/controls/form/form-field/search/search-form-field.component.ts","../../../../../angular/src/controls/form/form-field/combobox/combobox-schema-driven-form-template.html","../../../../../angular/src/controls/form/form-field/combobox/combobox-form-field.component.html","../../../../../angular/src/controls/form/form-field/combobox/combobox-form-field.component.ts","../../../../../angular/src/controls/form/form-field/combobox/select-form-field.directive.ts","../../../../../angular/src/controls/form/form-field/date/date-form-field.component.ts","../../../../../angular/src/controls/form/form-field/date/date-form-field.component.html","../../../../../angular/src/controls/form/form-field/datetime/datetime-form-field.component.ts","../../../../../angular/src/controls/form/form-field/datetime/datetime-form-field.component.html","../../../../../angular/src/controls/form/form-field/datetime-range/datetime-range-option.component.ts","../../../../../angular/src/controls/form/form-field/datetime-range/datetime-range-form-field.component.html","../../../../../angular/src/controls/form/form-field/datetime-range/datetime-range-form-field.component.ts","../../../../../angular/src/controls/form/form-field/file/webkitFileSystem.ts","../../../../../angular/src/controls/form/form-field/file/file-form-field.component.html","../../../../../angular/src/controls/form/form-field/file/file-form-field.component.ts","../../../../../angular/src/controls/form/form-field/json/json-form-field.component.ts","../../../../../angular/src/controls/form/form-field/json/json-form-field.component.html","../../../../../angular/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.ts","../../../../../angular/src/controls/form/form-field/list/list-form-field.component.html","../../../../../angular/src/controls/form/form-field/list/list-form-field.component.ts","../../../../../angular/src/controls/form/form-field/number/number-form-field.component.html","../../../../../angular/src/controls/form/form-field/number/number-form-field.component.ts","../../../../../angular/src/controls/form/form-field/number/number-schema-driven-form-template.html","../../../../../angular/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.ts","../../../../../angular/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.ts","../../../../../angular/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.html","../../../../../angular/src/controls/form/validators/capslock.directive.ts","../../../../../angular/src/controls/form/form-field/password/password-form-field.component.ts","../../../../../angular/src/controls/form/form-field/password/password-form-field.component.html","../../../../../angular/src/controls/form/form-field/radio-group/radio-group-form-field.component.base.ts","../../../../../angular/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.ts","../../../../../angular/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.html","../../../../../angular/src/controls/form/form-field/radio-group/rating/rating-radio-group-form-field.component.html","../../../../../angular/src/controls/form/form-field/radio-group/rating/rating-radio-group-form-field.component.ts","../../../../../angular/src/controls/form/form-field/radio-group/tile/tile-radio-group-form-field.component.html","../../../../../angular/src/controls/form/form-field/radio-group/tile/tile-radio-group-form-field.component.ts","../../../../../angular/src/controls/form/form-field/readonly/readonly-form-field.component.html","../../../../../angular/src/controls/form/form-field/readonly/readonly-form-field.component.ts","../../../../../angular/src/controls/form/form-field/slider/slider-form-field.component.ts","../../../../../angular/src/controls/form/form-field/slider/slider-form-field.component.html","../../../../../angular/src/controls/form/form-field/tags/tags-form-field.component.html","../../../../../angular/src/controls/form/form-field/tags/tags-form-field.component.ts","../../../../../angular/src/controls/form/form-field/text/text-form-field.component.html","../../../../../angular/src/controls/form/form-field/text/text-form-field.component.ts","../../../../../angular/src/controls/form/form-field/time/time-form-field.component.ts","../../../../../angular/src/controls/form/form-field/time/time-form-field.component.html","../../../../../angular/src/controls/form/form-field/toggle-switch/toggle-switch-form-field.component.ts","../../../../../angular/src/controls/form/form-field/toggle-switch/toggle-switch-form-field.component.html","../../../../../angular/src/controls/form/validators/input-validator.directive.ts","../../../../../angular/src/controls/form/validators/machine-name.directive.ts","../../../../../angular/src/controls/form/validators/match.directive.ts","../../../../../angular/src/controls/form/validators/required-trimmed.directive.ts","../../../../../angular/src/controls/form/forms.module.ts","../../../../../angular/src/controls/resizer/resizer.component.ts","../../../../../angular/src/controls/resizer/resizer.module.ts","../../../../../angular/src/controls/query-editor/query-editor-contract.ts","../../../../../angular/src/controls/data-table/data-table-contract.ts","../../../../../angular/src/controls/data-table/data-table-column.component.ts","../../../../../angular/src/controls/common/spacer-base.component.ts","../../../../../angular/src/controls/data-table/data-table-accessibility-manager.ts","../../../../../angular/src/controls/data-table/data-table-responsive-window-manager.ts","../../../../../angular/src/controls/form/form-field/form-field-container.ts","../../../../../angular/src/controls/data-table/data-table-template-loader.component.ts","../../../../../angular/src/controls/data-table/helpers/px-converter.ts","../../../../../angular/src/controls/data-table/data-table.component.html","../../../../../angular/src/controls/data-table/data-table.component.ts","../../../../../angular/src/controls/data-table/data-table-column-template/delete-column.component.html","../../../../../angular/src/controls/data-table/data-table-column-template/delete-column.component.ts","../../../../../angular/src/controls/data-table/data-table-column-template/tags-column.component.html","../../../../../angular/src/controls/data-table/data-table-column-template/tags-column.component.ts","../../../../../angular/src/controls/data-table/data-table.module.ts","../../../../../angular/src/controls/data-table/data-table-download.service.ts","../../../../../angular/src/controls/pivot/pivot-tab-type.ts","../../../../../angular/src/controls/pivot/pivot-tab.container.ts","../../../../../angular/src/controls/pivot/pivot-tab.component.ts","../../../../../angular/src/controls/pivot/pivot-responsive-window-manager.ts","../../../../../angular/src/controls/pivot/pivot.component.html","../../../../../angular/src/controls/pivot/pivot.component.ts","../../../../../angular/src/controls/pivot/pivot.module.ts","../../../../../angular/src/controls/master-view/master-view-content/master-view-content.component.ts","../../../../../angular/src/controls/master-view/master-view-content/master-view-content.module.ts","../../../../../angular/src/controls/split-view/split-view-responsive-window-manager.ts","../../../../../angular/src/controls/split-view/split-view.component.html","../../../../../angular/src/controls/split-view/split-view.component.ts","../../../../../angular/src/controls/master-view/master-view-responsive-window-manager.ts","../../../../../angular/src/controls/master-view/master-view.component.html","../../../../../angular/src/controls/master-view/master-view.component.ts","../../../../../angular/src/controls/master-view/master-view.module.ts","../../../../../angular/src/controls/active-directory/active-directory.service.ts","../../../../../angular/src/controls/data-table/extensions/data-table-column-picker-extension.ts","../../../../../angular/src/controls/active-directory/search-form-field/active-directory-search-form-field.component.html","../../../../../angular/src/controls/active-directory/search-form-field/active-directory-search-form-field.component.ts","../../../../../angular/src/controls/active-directory/active-directory.module.ts","../../../../../angular/src/controls/alert-bar/alert-bar.service.ts","../../../../../angular/src/controls/alert-bar/alert-bar.component.html","../../../../../angular/src/controls/alert-bar/alert-bar.component.ts","../../../../../angular/src/controls/alert-bar/alert-bar.module.ts","../../../../../angular/src/controls/badge/badge-base.component.ts","../../../../../angular/src/controls/badge/badge.component.html","../../../../../angular/src/controls/badge/coming-soon-badge.component.ts","../../../../../angular/src/controls/badge/custom-badge.component.ts","../../../../../angular/src/controls/badge/feedback-badge.component.ts","../../../../../angular/src/controls/badge/new-badge.component.ts","../../../../../angular/src/controls/badge/preview-badge.component.ts","../../../../../angular/src/controls/badge/bugfixes-feature-badge.component.ts","../../../../../angular/src/controls/badge/credssp-enabled-badge.component.ts","../../../../../angular/src/controls/badge/critical-badge.component.ts","../../../../../angular/src/controls/badge/improvement-feature-badge.component.ts","../../../../../angular/src/controls/badge/new-feature-badge.component.ts","../../../../../angular/src/controls/badge/warning-badge.component.ts","../../../../../angular/src/controls/badge/badge.module.ts","../../../../../angular/src/controls/badge/feature-badge-types.interface.ts","../../../../../angular/src/controls/banner/banner.component.html","../../../../../angular/src/controls/banner/banner.component.ts","../../../../../angular/src/controls/banner/banner.module.ts","../../../../../angular/src/controls/breadcrumb/models/breadcrumb-separator.ts","../../../../../angular/src/controls/breadcrumb-header/breadcrumb-header.component.html","../../../../../angular/src/controls/breadcrumb-header/breadcrumb-header.component.ts","../../../../../angular/src/controls/breadcrumb-header/breadcrumb-header.module.ts","../../../../../angular/src/controls/breadcrumb/breadcrumb.component.html","../../../../../angular/src/controls/breadcrumb/breadcrumb.component.ts","../../../../../angular/src/controls/breadcrumb/breadcrumb.module.ts","../../../../../angular/src/controls/chart/chart.component.html","../../../../../angular/src/controls/chart/chart.component.ts","../../../../../angular/src/controls/chart/chart.module.ts","../../../../../angular/src/controls/common/capacity-base.component.ts","../../../../../angular/src/controls/common/decorators/debounce.decorators.ts","../../../../../angular/src/controls/common/decorators/navigation-title.decorators.ts","../../../../../angular/src/controls/common/decorators/yield.decorator.ts","../../../../../angular/src/controls/common/decorators/form.decorators.ts","../../../../../angular/src/controls/context-menu/context-dropdown.component.ts","../../../../../angular/src/controls/context-menu/context-dropdown.component.html","../../../../../angular/src/controls/context-menu/context-menu.component.html","../../../../../angular/src/controls/context-menu/context-menu.component.ts","../../../../../angular/src/controls/context-menu/context-menu.directive.ts","../../../../../angular/src/controls/context-menu/context-menu.module.ts","../../../../../angular/src/controls/copilot/copilot.component.ts","../../../../../angular/src/controls/copilot/copilot.component.html","../../../../../angular/src/controls/copilot/copilot.module.ts","../../../../../angular/src/controls/details/details-responsive-window-manager.ts","../../../../../angular/src/controls/details/details.component.html","../../../../../angular/src/controls/details/details.component.ts","../../../../../angular/src/controls/details/details.module.ts","../../../../../angular/src/controls/dialog/base-dialog.component.ts","../../../../../angular/src/controls/form/index.ts","../../../../../angular/src/controls/dialog/confirmation-dialog/confirmation-dialog.component.html","../../../../../angular/src/controls/dialog/confirmation-dialog/confirmation-dialog.component.ts","../../../../../angular/src/controls/dialog/choice-dialog/choice-dialog.component.html","../../../../../angular/src/controls/dialog/choice-dialog/choice-dialog.component.ts","../../../../../angular/src/controls/dialog/confirmation-list-dialog/confirmation-list-dialog.component.html","../../../../../angular/src/controls/dialog/confirmation-list-dialog/confirmation-list-dialog.component.ts","../../../../../angular/src/controls/dialog/message-dialog/message-dialog.component.html","../../../../../angular/src/controls/dialog/message-dialog/message-dialog.component.ts","../../../../../angular/src/controls/dialog/common-dialogs/common-dialogs.component.ts","../../../../../angular/src/controls/dialog/common-dialogs/common-dialogs.component.html","../../../../../angular/src/controls/dialog/extension-dialog/extension-dialog.component.html","../../../../../angular/src/controls/dialog/extension-dialog/extension-dialog.component.ts","../../../../../angular/src/controls/dialog/dialog.module.ts","../../../../../angular/src/controls/header/header.component.html","../../../../../angular/src/controls/header/header.component.ts","../../../../../angular/src/controls/header/header.module.ts","../../../../../angular/src/controls/documentation/documentation.component.html","../../../../../angular/src/controls/documentation/documentation.component.ts","../../../../../angular/src/controls/documentation/documentation.module.ts","../../../../../angular/src/controls/doughnut-chart/legend-position.ts","../../../../../angular/src/controls/legend/legend-entry/legend-entry.component.html","../../../../../angular/src/controls/legend/legend-entry/legend-entry.component.ts","../../../../../angular/src/controls/legend/legend.component.html","../../../../../angular/src/controls/legend/legend.component.ts","../../../../../angular/src/controls/doughnut-chart/doughnut-chart.component.html","../../../../../angular/src/controls/doughnut-chart/doughnut-chart.component.ts","../../../../../angular/src/controls/doughnut-chart/capacity-doughnut-chart/capacity-doughnut-chart.component.ts","../../../../../angular/src/controls/doughnut-chart/capacity-doughnut-chart/capacity-doughnut-chart.component.html","../../../../../angular/src/controls/legend/legend.module.ts","../../../../../angular/src/controls/doughnut-chart/doughnut-chart.module.ts","../../../../../angular/src/controls/guided-panel/guided-pane/guided-pane.component.html","../../../../../angular/src/controls/guided-panel/guided-pane/guided-pane.component.ts","../../../../../angular/src/controls/guided-panel/guided-panel.component.ts","../../../../../angular/src/controls/guided-panel/guided-panel.component.html","../../../../../angular/src/controls/guided-panel/guided-panel.module.ts","../../../../../angular/src/controls/horizontal-bar-chart/horizontal-bar-chart.component.ts","../../../../../angular/src/controls/horizontal-bar-chart/horizontal-bar-chart.component.html","../../../../../angular/src/controls/horizontal-bar-chart/capacity-bar-chart.component.html","../../../../../angular/src/controls/horizontal-bar-chart/capacity-bar-chart.component.ts","../../../../../angular/src/controls/horizontal-bar-chart/stacked-bar.component.ts","../../../../../angular/src/controls/horizontal-bar-chart/stacked-horizontal-bar-chart.component.html","../../../../../angular/src/controls/horizontal-bar-chart/stacked-horizontal-bar-chart.component.ts","../../../../../angular/src/controls/horizontal-bar-chart/horizontal-bar-chart.module.ts","../../../../../angular/src/controls/line-chart/line-chart.component.html","../../../../../angular/src/controls/line-chart/line-chart.component.ts","../../../../../angular/src/controls/line-chart/tabbed-line-chart-group/tabbed-line-chart-group.component.html","../../../../../angular/src/controls/line-chart/tabbed-line-chart-group/tabbed-line-chart-group.component.ts","../../../../../angular/src/controls/line-chart/line-chart.module.ts","../../../../../angular/src/controls/node-credentials-form/node-credentials-form.component.html","../../../../../angular/src/controls/node-credentials-form/node-credentials-form.component.ts","../../../../../angular/src/controls/node-credentials-form/node-credentials-form.module.ts","../../../../../angular/src/controls/page-alert-bar/models/page-alert.ts","../../../../../angular/src/controls/page-alert-bar/page-alert-bar.component.html","../../../../../angular/src/controls/page-alert-bar/page-alert-bar.component.ts","../../../../../angular/src/controls/page-alert-bar/page-alert-bar.module.ts","../../../../../angular/src/controls/property-grid/property-grid-item.component.ts","../../../../../angular/src/controls/property-grid/property-grid-responsive-window-manager.ts","../../../../../angular/src/controls/property-grid/property-grid.component.html","../../../../../angular/src/controls/property-grid/property-grid.component.ts","../../../../../angular/src/controls/property-grid/property-grid.module.ts","../../../../../angular/src/controls/query-editor/query-editor.component.html","../../../../../angular/src/controls/query-editor/query-editor.component.ts","../../../../../angular/src/controls/query-editor/query-editor.module.ts","../../../../../angular/src/controls/schema-form/schema-form-content.component.html","../../../../../angular/src/controls/schema-form/schema-form-content.component.ts","../../../../../angular/src/controls/schema-form/schema-form-editor-utilities.ts","../../../../../angular/src/controls/schema-form/schema-form-editor-schema-text.component.ts","../../../../../angular/src/controls/schema-form/schema-form-editor-schema-text.component.html","../../../../../angular/src/controls/schema-form/schema-form-editor-schema-tree.constants.ts","../../../../../angular/src/controls/schema-form/schema-form-editor-schema-tree.component.html","../../../../../angular/src/controls/schema-form/schema-form-editor-schema-tree.component.ts","../../../../../angular/src/controls/schema-form/schema-form-editor-data.component.ts","../../../../../angular/src/controls/schema-form/schema-form-editor-data.component.html","../../../../../angular/src/controls/schema-form/schema-form-editor-form-view-model.component.ts","../../../../../angular/src/controls/schema-form/schema-form-editor-form-view-model.component.html","../../../../../angular/src/controls/schema-form/schema-form-editor.component.html","../../../../../angular/src/controls/schema-form/schema-form-editor.component.ts","../../../../../angular/src/controls/schema-form/schema-form.component.html","../../../../../angular/src/controls/schema-form/schema-form.component.ts","../../../../../angular/src/controls/split-view/split-view.module.ts","../../../../../angular/src/controls/schema-form/resource-string-picker.component.html","../../../../../angular/src/controls/schema-form/resource-string-picker.component.ts","../../../../../angular/src/controls/schema-form/schema-form.module.ts","../../../../../angular/src/service/rpc-shell.service.ts","../../../../../angular/src/controls/settings/settings-form.service.ts","../../../../../angular/src/controls/settings/settings.component.html","../../../../../angular/src/controls/settings/settings.component.ts","../../../../../angular/src/controls/settings/common-settings/settings-responsive-window-manager.ts","../../../../../angular/src/controls/settings/settings-footer.component.ts","../../../../../angular/src/controls/settings/settings-header.component.ts","../../../../../angular/src/controls/settings/settings-content.component.ts","../../../../../angular/src/controls/settings/settings-navigation.component.ts","../../../../../angular/src/controls/settings/common-settings/common-settings.component.html","../../../../../angular/src/controls/settings/common-settings/common-settings.component.ts","../../../../../angular/src/controls/settings/common-settings/settings-page.component.ts","../../../../../angular/src/controls/settings/common-settings/settings-page.component.html","../../../../../angular/src/controls/settings/settings-can-deactivate-guard.service.ts","../../../../../angular/src/controls/settings/settings-form.directive.ts","../../../../../angular/src/controls/settings/settings.module.ts","../../../../../angular/src/controls/settings/common-settings/common-settings-component-base.ts","../../../../../angular/src/controls/snap-in-extension/snap-in-extension.component.html","../../../../../angular/src/controls/snap-in-extension/snap-in-extension.component.ts","../../../../../angular/src/controls/snap-in-extension/snap-in-extension.module.ts","../../../../../angular/src/controls/summary/summary.component.html","../../../../../angular/src/controls/summary/summary.component.ts","../../../../../angular/src/controls/summary/summary-item.ts","../../../../../angular/src/controls/summary/summary.module.ts","../../../../../angular/src/controls/summary-group/summary-group.component.html","../../../../../angular/src/controls/summary-group/summary-group.component.ts","../../../../../angular/src/controls/summary-group/summary-group.module.ts","../../../../../angular/src/controls/tile/tile-content.component.html","../../../../../angular/src/controls/tile/tile-content.component.ts","../../../../../angular/src/controls/tile/tile.component.html","../../../../../angular/src/controls/tile/tile.component.ts","../../../../../angular/src/controls/tile/tile.module.ts","../../../../../angular/src/controls/ux/sme-ux-content/sme-ux-content.component.ts","../../../../../angular/src/controls/ux/sme-ux-content/sme-ux-content.module.ts","../../../../../angular/src/controls/ux/sme-ux-footer/sme-ux-footer.component.ts","../../../../../angular/src/controls/ux/sme-ux-footer/sme-ux-footer.module.ts","../../../../../angular/src/controls/wizard-lite/wizard-navigation-button/wizard-navigation-button.component.html","../../../../../angular/src/controls/wizard-lite/wizard-navigation-button/wizard-navigation-button.component.ts","../../../../../angular/src/controls/ux/sme-ux-footer/sme-ux-footer-template/sme-wizard-lite-footer-template/sme-wizard-lite-footer-template.component.html","../../../../../angular/src/controls/ux/sme-ux-footer/sme-ux-footer-template/sme-wizard-lite-footer-template/sme-wizard-lite-footer-template.component.ts","../../../../../angular/src/controls/wizard-lite/wizard-navigation-button/wizard-navigation-button.module.ts","../../../../../angular/src/controls/ux/sme-ux-footer/sme-ux-footer-template/sme-wizard-lite-footer-template/sme-wizard-lite-footer-template.module.ts","../../../../../angular/src/controls/ux/sme-ux-page/sme-ux-page.component.ts","../../../../../angular/src/controls/ux/sme-ux-page/sme-ux-page.module.ts","../../../../../angular/src/controls/wizard/models/wizard-step.ts","../../../../../angular/src/controls/wizard/models/wizard-stage.ts","../../../../../angular/src/controls/wizard/wizard-builder.ts","../../../../../angular/src/controls/wizard/wizard-navigation-information.ts","../../../../../angular/src/controls/wizard/wizard-responsive-window-manager.ts","../../../../../angular/src/controls/wizard/wizard.component.html","../../../../../angular/src/controls/wizard/wizard.component.ts","../../../../../angular/src/controls/wizard/wizard.module.ts","../../../../../angular/src/controls/wizard/wizard-as-parent.ts","../../../../../angular/src/controls/wizard/wizard-step/wizard-step.component.ts","../../../../../angular/src/controls/wizard/wizard-step/form-wizard-step.component.ts","../../../../../angular/src/controls/wizard/wizard-step/reactive-form-wizard-step.component.ts","../../../../../angular/src/controls/wizard/wizard-step/template-driven-form-wizard-step.component.ts","../../../../../angular/src/controls/wizard-lite/wizard-lite.service.ts","../../../../../angular/src/controls/wizard-lite/wizard-lite.component.ts","../../../../../angular/src/controls/wizard-lite/wizard-lite.component.html","../../../../../angular/src/controls/wizard-lite/wizard-lite.module.ts","../../../../../angular/src/service/app-error-handler.service.ts","../../../../../angular/src/service/column-picker.service.ts","../../../../../angular/src/service/electron.service.ts","../../../../../angular/src/service/jobs.service.ts","../../../../../angular/src/service/connectivity-enforcer.ts","../../../../../angular/src/service/user-alive.service.ts","../../../../../angular/src/service/navigation.service.ts","../../../../../angular/src/service/schedule-reboot.service.ts","../../../../../angular/src/service/secure-extension-data.service.ts","../../../../../angular/src/service/sme-extension.service.ts","../../../../../angular/src/service/core-service.module.ts","../../../../../angular/src/data/forms/base-form-data.ts","../../../../../angular/src/data/forms/base-properties-form.ts","../../../../../angular/src/data/forms/editable-collection-item.ts","../../../../../angular/src/data/routing/routing.ts","../../../../../angular/src/data/extension-broker/snap-in-listener.ts","../../../../../angular/angular.ts","../../../../../angular/microsoft-windows-admin-center-sdk-angular.ts"],"sourcesContent":["import {\r\n    AfterContentInit,\r\n    ChangeDetectorRef,\r\n    Directive,\r\n    DoCheck,\r\n    EventEmitter,\r\n    Host,\r\n    Input,\r\n    OnDestroy,\r\n    Optional,\r\n    Output\r\n} from '@angular/core';\r\nimport { NavigationEnd, Router, RouterLink, RouterLinkWithHref } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\n\r\n/**\r\n * Directive to provide notification or state changes for angulars @see RouterLink directive.\r\n * The design of this directive is identical to @see RouterLinkActive\r\n * and as such supports the same @see RouterLinkActiveOptions are supported.\r\n */\r\n@Directive({\r\n    selector: '[routerLink][smeRouterLinkActivated],[routerLink][smeRouterLinkDeactivated]'\r\n})\r\nexport class SmeRouterLinkDirective implements DoCheck, AfterContentInit, OnDestroy {\r\n    /**\r\n     * The output for when the route is activated\r\n     */\r\n    @Output()\r\n    public smeRouterLinkActivated = new EventEmitter<void>();\r\n\r\n    /**\r\n     * The output for when the route is deactivated\r\n     */\r\n    @Output()\r\n    public smeRouterLinkDeactivated = new EventEmitter<void>();\r\n\r\n    /**\r\n     * Use the same input options as angulars @see RouterLinkActive Directive\r\n     */\r\n    @Input()\r\n    public routerLinkActiveOptions: { exact: boolean } = { exact: false };\r\n\r\n    /**\r\n     * Placeholder for the current activation state\r\n     */\r\n    private isActive = false;\r\n    private subscriptions: Subscription[] = [];\r\n\r\n    /**\r\n     * Initializes a new instance of the @see PivotComponent class.\r\n     * @param  link The router link that's defined for the element or child elements\r\n     * @param  linkWithHref The router link with 'a' tags that's defined for the element or child elements\r\n     * @param  router The angular router service\r\n     */\r\n    constructor(\r\n        @Optional() @Host() public link: RouterLink,\r\n        @Optional() @Host() public linkWithHref: RouterLinkWithHref,\r\n        private router: Router,\r\n        private changeDetectorRef: ChangeDetectorRef\r\n    ) {\r\n\r\n        this.subscriptions.push(\r\n            this.router.events.subscribe(s => {\r\n                if (s instanceof NavigationEnd) {\r\n                    this.updateIsActive();\r\n                }\r\n            })\r\n        );\r\n    }\r\n\r\n    /**\r\n     * Angulars AfterContentInit life cycle event\r\n     */\r\n    public ngAfterContentInit(): void {\r\n        this.updateIsActive();\r\n    }\r\n\r\n    /**\r\n     * Angulars OnChanges life cycle event\r\n     */\r\n    public ngDoCheck(): void {\r\n        this.updateIsActive();\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.subscriptions.forEach(sub => sub?.unsubscribe());\r\n    }\r\n\r\n    /**\r\n     * Updates the isActive state and fires appropriate events if that state has changed.\r\n     */\r\n    private updateIsActive(): void {\r\n        if ((!this.link && !this.linkWithHref) || !this.router.navigated) {\r\n            return;\r\n        }\r\n\r\n        const hasActiveLinks = this.hasActiveLinks();\r\n        if (this.isActive !== hasActiveLinks) {\r\n            this.isActive = hasActiveLinks;\r\n            if (this.isActive) {\r\n                this.smeRouterLinkActivated.next();\r\n            } else {\r\n                this.smeRouterLinkDeactivated.next();\r\n            }\r\n            this.changeDetectorRef.detectChanges();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Indicates if a given link is active\r\n     * @param link the link to check\r\n     */\r\n    private isLinkActive(link: RouterLink | RouterLinkWithHref): boolean {\r\n        return this.router.isActive(link.urlTree, this.routerLinkActiveOptions.exact);\r\n    }\r\n\r\n    /**\r\n     * Indicates that at leased one link is active\r\n     */\r\n    private hasActiveLinks(): boolean {\r\n        return (this.link && this.isLinkActive(this.link)) ||\r\n            (this.linkWithHref && this.isLinkActive(this.linkWithHref));\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { SmeRouterLinkDirective } from './router-link.directive';\r\n\r\n/**\r\n * Module to modify and interact with angulars Router directives\r\n */\r\n@NgModule({\r\n    exports: [\r\n        SmeRouterLinkDirective\r\n    ],\r\n    declarations: [\r\n        SmeRouterLinkDirective\r\n    ]\r\n})\r\nexport class SmeRouterModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { ResourceCache } from '@microsoft/windows-admin-center-sdk/core/data/resource-cache';\r\n\r\n/**\r\n * Resource service to find a resource data by type and id.\r\n */\r\n@Injectable()\r\nexport class ResourceService extends ResourceCache {\r\n}\r\n","import { Directive, ElementRef, Input, ViewContainerRef } from '@angular/core';\r\nimport { ResourceService } from '../../service/resource.service';\r\n\r\n/**\r\n * SVG image directive to place SVG image at background-image by CSS style class.\r\n */\r\n@Directive({ selector: '[smeSvg]' })\r\nexport class SvgDirective {\r\n    /**\r\n     * Initializes a new instance of the SvgDirective class.\r\n     *\r\n     * @param elementRef the element reference.\r\n     * @param resourceService the resource service.\r\n     */\r\n    constructor(private elementRef: ElementRef, private resourceService: ResourceService) {\r\n    }\r\n\r\n    /**\r\n     * Set \"smeSvg\" input as id string of SVG resource.\r\n     *\r\n     * @param id The identification of SVG resource.\r\n     */\r\n    @Input() set smeSvg(id: string) {\r\n        if (id) {\r\n            id = id.toLowerCase();\r\n            const className = this.resourceService.find<string>(ResourceService.svgType, id);\r\n            if (className) {\r\n                this.elementRef.nativeElement.classList.add(className);\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n/**\r\n * SVG image directive to place SVG image as inline into the element.\r\n */\r\n@Directive({ selector: '[smeSvgInline]' })\r\nexport class SvgInlineDirective {\r\n    /**\r\n     * Initializes a new instance of the SvgInlineDirective class.\r\n     *\r\n     * @param viewContainer the view container reference.\r\n     * @param resourceService the resource service.\r\n     */\r\n    constructor(private viewContainer: ViewContainerRef, private resourceService: ResourceService) {\r\n    }\r\n\r\n    @Input() set smeSvgInline(id: string) {\r\n        this.viewContainer.clear();\r\n        if (id) {\r\n            id = id.toLowerCase();\r\n            const content = this.resourceService.find<string>(ResourceService.svgInlineType, id);\r\n            if (content) {\r\n                this.viewContainer.element.nativeElement.innerHTML = content;\r\n            }\r\n         }\r\n    }\r\n}\r\n","import { ResourceCacheFind } from '@microsoft/windows-admin-center-sdk/core/data/resource-cache';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { ResourceService } from '../../service/resource.service';\r\n\r\nexport interface SvgIndexedData {\r\n    name: string;\r\n    lower: string;\r\n    value: string;\r\n}\r\n\r\ninterface SvgStack {\r\n    target: any;\r\n    path: string;\r\n}\r\n\r\n/**\r\n * SVG resource class for CSS class.\r\n */\r\nexport class SvgResource implements ResourceCacheFind<string> {\r\n    private svgInlineResource: SvgInlineResource;\r\n\r\n    /**\r\n     * Build svg resources from SVG object, and register the resource service.\r\n     *\r\n     * @param resourceService the resource service.\r\n     * @param svg the svg object generated by gulp-svg-code.\r\n     */\r\n    public static buildRegister(resourceService: ResourceService, svg: any): void {\r\n        // register SVG resources to resource service.\r\n        resourceService.register(ResourceService.svgType, new SvgResource(svg));\r\n        resourceService.register(ResourceService.svgInlineType, new SvgInlineResource(svg));\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the SvgResource class.\r\n     *\r\n     * @param svg the svg object generated by gulp-svg-code.\r\n     */\r\n    constructor(private svg: any) {\r\n        this.svgInlineResource = new SvgInlineResource(this.svg);\r\n    }\r\n\r\n    /**\r\n     * Find SVG string by id.\r\n     *\r\n     * @param id the identification of SVG. (id must be lower case)\r\n     */\r\n    public find(id: string): string {\r\n        const result = this.svgInlineResource.findIndex(id);\r\n        if (!result) {\r\n            return null;\r\n        }\r\n\r\n        const segments = result.name.split('/');\r\n        return 'svg-' + segments.join('--');\r\n    }\r\n}\r\n\r\n/**\r\n * SVG inline resource class for ram SVG insertion.\r\n */\r\nexport class SvgInlineResource implements ResourceCacheFind<string> {\r\n    private lowerSvg: { [lower: string]: SvgIndexedData };\r\n\r\n    /**\r\n     * Initializes a new instance of the SvgInlineResource class.\r\n     *\r\n     * @param svg the svg object generated by gulp-svg-code.\r\n     */\r\n    constructor(private svg: any) {\r\n        this.lowerSvg = this.createLowercaseIndexing(this.svg);\r\n    }\r\n\r\n    /**\r\n     * Find SVG string by id.\r\n     *\r\n     * @param id the identification of SVG. (id must be lower case)\r\n     * @return string the Svg resource string.\r\n     */\r\n    public find(id: string): string {\r\n        const result = this.lowerSvg[id];\r\n        if (!result) {\r\n            Logging.log({\r\n                level: LogLevel.Warning,\r\n                message: `Unable to find SVG resource for ${id}`,\r\n                params: {\r\n                    id: id\r\n                },\r\n                source: 'SvgInlineResource'\r\n            });\r\n\r\n            return null;\r\n        }\r\n\r\n        return result.value;\r\n    }\r\n\r\n    /**\r\n     * Find index data.\r\n     *\r\n     * @param id the identification of SVG.\r\n     * @return SvgIndexedData the indexed data.\r\n     */\r\n    public findIndex(id: string): SvgIndexedData {\r\n        return this.lowerSvg[id];\r\n    }\r\n\r\n    /**\r\n     * Create lower case property version.\r\n     *\r\n     * @param svg the original svg data.\r\n     * @return any the lower case version of svg.\r\n     */\r\n    private createLowercaseIndexing(svg: any): { [lower: string]: SvgIndexedData } {\r\n        const newSvg: { [lower: string]: SvgIndexedData } = {};\r\n        let nextCollection: SvgStack[] = [{ target: svg, path: '' }];\r\n        while (nextCollection.length > 0) {\r\n            const collection: SvgStack[] = nextCollection;\r\n            nextCollection = [];\r\n            for (const current of collection) {\r\n                MsftSme.forEachKey(current.target, (key: string, value: any) => {\r\n                    const path = this.nextPath(current.path, key);\r\n                    if (value && typeof value === 'object') {\r\n                        // add to next level traverse.\r\n                        nextCollection.push({ target: value, path: path });\r\n                    } else {\r\n                        // register to the collection.\r\n                        const lower = path.toLowerCase();\r\n                        newSvg[lower] = <SvgIndexedData>{\r\n                            name: path,\r\n                            lower: lower,\r\n                            value: value\r\n                        };\r\n                    }\r\n                });\r\n            }\r\n        }\r\n\r\n        return newSvg;\r\n    }\r\n\r\n    private nextPath(path: string, key: string): string {\r\n        return path === '' ? key : path + '/' + key;\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { ResourceService } from '../../service/resource.service';\r\nimport { SvgDirective, SvgInlineDirective } from './svg.directive';\r\n\r\n/**\r\n * SVG module class to export SVG directives.\r\n */\r\n@NgModule({\r\n    exports: [\r\n        SvgDirective,\r\n        SvgInlineDirective\r\n    ],\r\n    declarations: [\r\n        SvgDirective,\r\n        SvgInlineDirective\r\n    ],\r\n    providers: [\r\n        ResourceService\r\n    ]\r\n})\r\nexport class SvgModule { }\r\n","import { Directive, EmbeddedViewRef, Input, OnChanges, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\r\n\r\nexport interface TemplateContext<TData> {\r\n    $implicit: TData;\r\n}\r\n/**\r\n * Base class for template loaders\r\n */\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class TemplateLoaderBaseComponent<TData, TContext extends TemplateContext<TData>> implements OnInit, OnChanges, OnDestroy {\r\n\r\n    /**\r\n     * The data context of the view we create\r\n     */\r\n    @Input()\r\n    public data: TData;\r\n\r\n    /**\r\n     * The Template to load into the view container\r\n     */\r\n    @Input()\r\n    public template: TemplateRef<TContext>;\r\n\r\n    /**\r\n     * The reference to the view created for the template\r\n     */\r\n    protected view: EmbeddedViewRef<TContext>;\r\n\r\n    /**\r\n     * Instantiates a new instance of TemplateLoaderBaseComponent\r\n     * @param viewContainer the reference to this elements view container\r\n     */\r\n    constructor(private viewContainer: ViewContainerRef) {\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnInit interface\r\n     */\r\n    public ngOnInit(): void {\r\n        this.view = this.viewContainer.createEmbeddedView(this.template, this.createContext());\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnChanges interface\r\n     * @param changes the changes that occured\r\n     */\r\n    public ngOnChanges(changes): void {\r\n        if (!this.view || !this.view.context) {\r\n            return;\r\n        }\r\n\r\n        // changes and update the context if those properties exist\r\n        for (const key in changes) {\r\n            if (key in this.view.context) {\r\n                this.view.context[key] = changes[key].currentValue;\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnDestroy interface\r\n     */\r\n    public ngOnDestroy(): void {\r\n        this.view.destroy();\r\n    }\r\n\r\n    /**\r\n     * Creates the context for our embeded view\r\n     */\r\n    protected abstract createContext(): TContext;\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges, ViewContainerRef } from '@angular/core';\r\nimport { TemplateContext, TemplateLoaderBaseComponent } from '../../controls/common/template-loader-base.component';\r\n\r\n@Directive({\r\n    selector: '[smeTemplateOutlet]'\r\n})\r\nexport class TemplateOutletDirective extends TemplateLoaderBaseComponent<any, TemplateContext<any>> implements OnChanges {\r\n\r\n    /**\r\n     * The data context of the host that should be given to the template context\r\n     */\r\n    @Input()\r\n    public hostData: any;\r\n\r\n    /**\r\n     * The property name to use for host data\r\n     */\r\n    @Input()\r\n    public hostDataName: string;\r\n\r\n    /**\r\n     * Instantiates a new instance of TooltipTemplateLoaderComponent\r\n     * @param viewContainer the reference to this elements view container\r\n     */\r\n    constructor(viewContainer: ViewContainerRef) {\r\n        super(viewContainer);\r\n    }\r\n\r\n    public ngOnChanges(changes: SimpleChanges) {\r\n        super.ngOnChanges(changes);\r\n\r\n        if (!this.view || !this.view.context) {\r\n            return;\r\n        }\r\n\r\n        if (changes.hostDataName || changes.hostData) {\r\n            this.applyHostData(this.view.context);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Creates the context for our embedded view\r\n     */\r\n    protected createContext(): TemplateContext<any> {\r\n        return this.applyHostData({ $implicit: this.data });\r\n    }\r\n\r\n    /**\r\n     * Applies the hostData property to a given context object.\r\n     */\r\n    private applyHostData(context: any): any {\r\n        const hostDataName = this.hostDataName || 'hostData';\r\n        context[hostDataName] = this.hostData;\r\n        return context;\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { TemplateOutletDirective } from './template-outlet.directive';\r\n\r\n/**\r\n * Module to modify simplify template loading\r\n */\r\n@NgModule({\r\n    exports: [\r\n        TemplateOutletDirective\r\n    ],\r\n    declarations: [\r\n        TemplateOutletDirective\r\n    ]\r\n})\r\nexport class SmeTemplateOutletModule { }\r\n","import { Directive, ElementRef, HostBinding, Input } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\n\r\n@Directive({\r\n    // eslint-disable-next-line @angular-eslint/directive-selector\r\n    selector: '[smeDisabled]'\r\n})\r\nexport class DisabledDirective {\r\n    @Input()\r\n    public get smeDisabled(): boolean {\r\n        return this.internalDisabled;\r\n    }\r\n    public set smeDisabled(value: boolean) {\r\n        this.internalDisabled = value;\r\n        if (value && this.host && document.activeElement === this.host.nativeElement) {\r\n            this.removeFocus();\r\n        }\r\n\r\n    }\r\n\r\n    @HostBinding('attr.disabled')\r\n    public get attrDisabled(): boolean {\r\n        // angular wont add an attribute if it is null. so return false as null.\r\n        return this.smeDisabled ? true : null;\r\n    }\r\n\r\n    private internalDisabled: boolean;\r\n\r\n    constructor(private host: ElementRef) { }\r\n\r\n    @Debounce(0)\r\n    private removeFocus() {\r\n\r\n        if (this.smeDisabled) {\r\n            if (document.activeElement === this.host.nativeElement || document.activeElement === document.body) {\r\n                const next = Dom.getNextFocusableElement(this.host.nativeElement) || Dom.getNextZoneElement(this.host.nativeElement);\r\n                if (next) {\r\n                    next.focus();\r\n                } else {\r\n                    const previous = Dom.getPreviousFocusableElement(this.host.nativeElement)\r\n                        || Dom.getPreviousZoneElement(this.host.nativeElement);\r\n                    if (previous) {\r\n                        previous.focus();\r\n                    }\r\n                }\r\n            }\r\n        } else if (!this.smeDisabled && document.activeElement === document.body) {\r\n            this.host.nativeElement.focus();\r\n        }\r\n    }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { DisabledDirective } from './disabled.directive';\r\n\r\n@NgModule({\r\n    exports: [\r\n        DisabledDirective\r\n    ],\r\n    declarations: [\r\n        DisabledDirective\r\n    ]\r\n})\r\nexport class DisabledModule { }\r\n","import { Directive, ElementRef, HostBinding, Input, OnChanges, OnInit, Renderer2, SimpleChanges } from '@angular/core';\r\nimport { marked } from 'marked';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Markdown @id sme-markdown-directive}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/markdown-overview.md}\r\n *\r\n * @example {@label Basic Usage @id basic-usage}\r\n * @file {@filename component.html @filepath ./examples/basic-usage.component.html}\r\n * @file {@filename component.ts @filepath ./examples/basic-usage.component.ts}\r\n *\r\n */\r\n\r\n@Directive({\r\n    // eslint-disable-next-line @angular-eslint/directive-selector\r\n    selector: '[smeMarkdown]'\r\n})\r\nexport class MarkdownDirective implements OnInit, OnChanges {\r\n    @Input()\r\n    public smeMarkdown: string;\r\n\r\n    @HostBinding('innerHtml')\r\n    public get content(): string {\r\n        return this.renderedContent;\r\n    }\r\n\r\n    private renderedContent: string;\r\n\r\n    constructor(private host: ElementRef, private renderer: Renderer2) {\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.renderer.addClass(this.host.nativeElement, 'sme-documentation');\r\n    }\r\n\r\n    public ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes.smeMarkdown) {\r\n            this.render();\r\n        }\r\n    }\r\n\r\n    public render(): void {\r\n        this.renderedContent = '';\r\n        if (marked && !MsftSme.isNullOrWhiteSpace(this.smeMarkdown)) {\r\n            this.renderedContent = marked.parse(this.smeMarkdown);\r\n        }\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MarkdownDirective } from './markdown.directive';\r\n\r\n@NgModule({\r\n    exports: [\r\n        MarkdownDirective\r\n    ],\r\n    declarations: [\r\n        MarkdownDirective\r\n    ]\r\n})\r\nexport class MarkdownModule { }\r\n","import { Injectable, InjectOptions, Injector } from '@angular/core';\r\n\r\n/**\r\n * Defines the injection options stored in the @see SmeInjectionMap\r\n */\r\ninterface SmeInjectionOptions {\r\n    token: any;\r\n    injectOptions: InjectOptions;\r\n}\r\n\r\n/**\r\n * Defines the object we store in the\r\n * @see smeInjectKey property of decorated classes\r\n */\r\ninterface SmeInjectionMap extends MsftSme.StringMap<SmeInjectionOptions> { }\r\n\r\nconst TypeInjectionMap = new Map<Function, SmeInjectionMap>();\r\n\r\nfunction injectProperties(instance: any, injector: Injector) {\r\n    if (MsftSme.isNullOrUndefined(injector)) {\r\n        // eslint-disable-next-line max-len\r\n        throw new Error(`SmeInjectableBase: No Injector for ${instance.constructor.name}. The angular Injector must be the first argument to the constructor.`);\r\n    }\r\n    let prototype = instance.constructor;\r\n    let proto = Object.getPrototypeOf(instance);\r\n    let injectionMap: SmeInjectionMap = TypeInjectionMap.has(prototype) ? TypeInjectionMap.get(prototype) : {};\r\n\r\n    while (!MsftSme.isNullOrUndefined(proto)) {\r\n        prototype = proto.constructor;\r\n        if (TypeInjectionMap.has(prototype)) {\r\n            const protoInjection = TypeInjectionMap.get(prototype);\r\n            injectionMap = { ...protoInjection, ...injectionMap };\r\n        }\r\n\r\n        // get next prototype\r\n        proto = Object.getPrototypeOf(proto);\r\n    }\r\n\r\n    // process any injected properties we found\r\n    const propertyKeys = Object.keys(injectionMap);\r\n\r\n    if (propertyKeys.length > 0) {\r\n        // Use the injector to do the heavy lifting and resolve our tokens into properties.\r\n        propertyKeys.forEach(prop => {\r\n            const options = injectionMap[prop];\r\n            if (options?.injectOptions.optional) {\r\n                instance[prop] = injector.get(options.token, null, options.injectOptions);\r\n            } else {\r\n                instance[prop] = injector.get(options.token, undefined, { optional: false });\r\n            }\r\n        });\r\n    }\r\n}\r\n\r\n/**\r\n * As of Angular 9, the SmeInjectable Decorator no longer works.\r\n * The new approach is to use an injectable base class that does essentially the same thing.\r\n */\r\n@Injectable()\r\nexport class SmeInjectableBase {\r\n    constructor(protected injector: Injector) {\r\n        injectProperties(this, injector);\r\n    }\r\n}\r\n","import {\r\n    AfterContentChecked,\r\n    AfterContentInit,\r\n    AfterViewChecked,\r\n    AfterViewInit,\r\n    Directive,\r\n    DoCheck,\r\n    Injector,\r\n    OnChanges,\r\n    OnDestroy,\r\n    OnInit,\r\n    SimpleChanges\r\n} from '@angular/core';\r\nimport { SmeInjectableBase } from './decorators/injection.decorators';\r\n\r\n/**\r\n * Blank implementation of the complete angular component lifecycle.\r\n * This enabled our base components to implement the lifecycle even if they dont use all of its functions just yet.\r\n * That way if we do decide to use one of these hooks, we dont need to change every derived component as\r\n * they should all be calling super() implementation anyway.\r\n */\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport class NgLifecycleBaseComponent extends SmeInjectableBase implements\r\n    OnChanges,\r\n    OnInit,\r\n    DoCheck,\r\n    OnDestroy,\r\n    AfterContentInit,\r\n    AfterContentChecked,\r\n    AfterViewInit,\r\n    AfterViewChecked {\r\n    /**\r\n     * Initializes a new instance of the {BaseComponent} class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n    protected ngIsInitialized = false;\r\n    protected ngIsContentInitialized = false;\r\n    protected ngIsViewInitialized = false;\r\n    protected ngIsDestroyed = false;\r\n    // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\r\n    public ngOnChanges(changes: SimpleChanges): void { /* placeholder*/ }\r\n    public ngOnInit(): void { this.ngIsInitialized = true; }\r\n    // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\r\n    public ngDoCheck(): void { /* placeholder*/ }\r\n    public ngOnDestroy(): void { this.ngIsDestroyed = true; }\r\n    public ngAfterContentInit(): void { this.ngIsContentInitialized = true; }\r\n    // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\r\n    public ngAfterContentChecked(): void { /* placeholder*/ }\r\n    public ngAfterViewInit(): void { this.ngIsViewInitialized = true; }\r\n    // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\r\n    public ngAfterViewChecked(): void { /* placeholder*/ }\r\n}\r\n","import { Directive, ElementRef, Injector, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { Subscription } from 'rxjs';\r\nimport { Strings } from '../../generated/strings';\r\nimport { NgLifecycleBaseComponent } from './ng-lifecycle-base.component';\r\n\r\n/**\r\n * A base class for all components.\r\n * - TResourceStrings The typed interface for resource strings.\r\n */\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class BaseComponent<TResourceStrings> extends NgLifecycleBaseComponent implements OnDestroy {\r\n\r\n    /**\r\n     * Static constant to provide unique ids for each component\r\n     * @see {componentId}\r\n     */\r\n    private static nextComponentId = 0;\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected abstract readonly logSourceName: string;\r\n\r\n    /**\r\n     * The localized strings for the current project\r\n     */\r\n    public strings: TResourceStrings;\r\n\r\n    /**\r\n     * A bag of ids generated using @see {componentId} and the map returned from @see {createIdBag}\r\n     */\r\n    public idBag: MsftSme.StringMap<string>;\r\n\r\n    /**\r\n     * The unique id of this component.\r\n     * This is useful when controls need to use an ID (such as in forms) but may appear multiple times on the same page.\r\n     * Using this ID as the basis for the controls internal IDs generated in @see {createIdBag} keeps the IDs unique.\r\n     */\r\n    protected componentId: string;\r\n\r\n    /**\r\n     * Container for active subscriptions that should be cleaned up in the OnDestroy call.\r\n     */\r\n    protected subscriptions: Subscription[];\r\n\r\n    /**\r\n     * The angular renderer service\r\n     */\r\n    protected renderer: Renderer2;\r\n\r\n    /**\r\n     * The element reference for this component\r\n     */\r\n    protected hostElement: ElementRef;\r\n\r\n    /**\r\n     * Initializes a new instance of the {BaseComponent} class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n\r\n        this.renderer = injector.get(Renderer2);\r\n        this.hostElement = injector.get(ElementRef);\r\n\r\n        // load the strings for the application\r\n        this.strings = <TResourceStrings>MsftSme.self().Resources.strings;\r\n\r\n        // initialize subscriptions to empty\r\n        this.subscriptions = [];\r\n\r\n        // setup component id and idBag\r\n        this.componentId = `component-${BaseComponent.nextComponentId++}`;\r\n        this.idBag = this.createIdBag();\r\n        MsftSme.forEachKey(this.idBag, (key) => {\r\n            this.idBag[key] = `${this.componentId}-${key}`;\r\n        });\r\n\r\n        // setup initial host classes on this element\r\n        this.applyInitialHostClasses();\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnDestroy interface\r\n     * derived classes are always expected to call super.ngOnDestroy() when overriding\r\n     */\r\n    public ngOnDestroy(): void {\r\n        this.subscriptions.forEach((subscription) => {\r\n            if (subscription && !subscription.closed) {\r\n                subscription.unsubscribe();\r\n            }\r\n        });\r\n        super.ngOnDestroy();\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids\r\n     * Derived classes are always expected to call super.createIdBag() when overriding\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {};\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     * Derived classes are always expected to call super.getInitialHostClasses() when overriding\r\n     */\r\n    protected getInitialHostClasses(): string[] {\r\n        return [];\r\n    }\r\n\r\n    /**\r\n     * Shortcut to get an attribute on the host element\r\n     * @param name The name of the attribute\r\n     */\r\n    protected getAttribute(name: string): string {\r\n        return this.hostElement.nativeElement.getAttribute(name);\r\n    }\r\n\r\n    /**\r\n     * Shortcut to set an attribute on the host element\r\n     * @param name The name of the attribute\r\n     * @param value The value of the attribute\r\n     */\r\n    protected setAttribute(name: string, value: string) {\r\n        this.renderer.setAttribute(this.hostElement.nativeElement, name, value);\r\n    }\r\n\r\n    /**\r\n     * Shortcut to remove an attribute on the host element\r\n     * @param name The name of the attribute\r\n     */\r\n    protected removeAttribute(name: string) {\r\n        this.renderer.removeAttribute(this.hostElement.nativeElement, name);\r\n    }\r\n\r\n    /**\r\n     * Shortcut to add a class on the host element\r\n     * @param className The name of the attribute\r\n     */\r\n    protected addClass(className: string) {\r\n        this.renderer.addClass(this.hostElement.nativeElement, className);\r\n    }\r\n\r\n    /**\r\n     * Shortcut to remove a class on the host element\r\n     * @param className The name of the class\r\n     */\r\n    protected removeClass(className: string) {\r\n        this.renderer.removeClass(this.hostElement.nativeElement, className);\r\n    }\r\n\r\n    /**\r\n     * Shortcut to set a style on the host element\r\n     * @param style The name of the style\r\n     * @param value The new value\r\n     */\r\n    protected setStyle(style: string, value: any) {\r\n        this.renderer.setStyle(this.hostElement.nativeElement, style, value);\r\n    }\r\n\r\n    /**\r\n     * Shortcut to remove a style on the host element\r\n     * @param style The name of the style\r\n     */\r\n    protected removeStyle(style: string) {\r\n        this.renderer.removeStyle(this.hostElement.nativeElement, style);\r\n    }\r\n\r\n    /**\r\n     * Shortcut to log a record. The source name is automatically picked up from the class instance\r\n     * @param message the message of the log record\r\n     * @param level (optional) the log level (defaults to Debug)\r\n     * @param params (optional) the parameters to log\r\n     * @param source (optional) the source of the log message. Defaults to the name of the constructor that instantiated this instance\r\n     * @return Promise<any> settle to resolve if buffered.\r\n     */\r\n    protected log(message: string, level: LogLevel = LogLevel.Debug, params?: any, source: string = this.logSourceName): Promise<any> {\r\n        return Logging.log({\r\n            level: level,\r\n            message: message,\r\n            localParams: params,\r\n            source: source\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Applies the initial classes to this components host element.\r\n     * We preserve any custom classes by removing them, applying the base classes and reapplying the custom classes.\r\n     */\r\n    private applyInitialHostClasses() {\r\n        const customClasses = Dom.getClasses(this.hostElement.nativeElement);\r\n        customClasses.forEach(c => this.renderer.removeClass(this.hostElement.nativeElement, c));\r\n        this.getInitialHostClasses()\r\n            .concat(customClasses)\r\n            .forEach(c => this.renderer.addClass(this.hostElement.nativeElement, c));\r\n    }\r\n}\r\n\r\n/**\r\n * Internal base component for SME Core controls. It simply removes the need to supply the string type parameter\r\n * This class is exported from this file, but not meant to be exported from index.ts bundles.\r\n */\r\nexport abstract class CoreBaseComponent extends BaseComponent<Strings> {\r\n    // Should Remain Empty.\r\n}\r\n","import { Directive, EventEmitter, HostListener, Injector, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { CoreBaseComponent } from '../../controls/common/base.component';\r\n\r\nexport enum Unicode {\r\n    HorizontalEllipsis = '\\u2026'\r\n}\r\n\r\n/**\r\n * Describes the clamped event of the ClampDirective\r\n */\r\nexport interface ClampedEvent {\r\n    clamped: boolean;\r\n}\r\n\r\nconst breakAllClass = 'sme-arrange-word-break-all';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Clamp @id sme-clamp-directive}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/clamp-overview.md}\r\n *\r\n * @example {@label Basic Usage @id basic-usage}\r\n * @file {@filename component.html @filepath ./examples/basic-usage.component.html}\r\n * @file {@filename component.ts @filepath ./examples/basic-usage.component.ts}\r\n *\r\n * @example {@label Clamp with auto lines @id auto-lines}\r\n * @file {@filename component.html @filepath ./examples/auto-lines-clamp.component.html}\r\n * @file {@filename component.ts @filepath ./examples/auto-lines-clamp.component.ts}\r\n *\r\n */\r\n\r\n@Directive({\r\n    selector: '[smeClamp]'\r\n})\r\nexport class ClampDirective extends CoreBaseComponent implements OnChanges {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'ClampDirective';\r\n    }\r\n    /**\r\n     * The content to clamp.\r\n     */\r\n    @Input() public smeClamp;\r\n\r\n    /**\r\n     * The number of lines to clamp, or auto to clamp whatever will fit in the element\r\n     */\r\n    @Input() public smeClampLines: number | 'auto';\r\n\r\n    /**\r\n     * Event that outputs a value indicating whether the content is clamped or not\r\n     */\r\n    @Output()\r\n    public clamped = new EventEmitter<ClampedEvent>();\r\n\r\n    /**\r\n     * The number of lines to clamp to\r\n     */\r\n    private get lineCount(): number {\r\n        // get the lineCount\r\n        let lineCount = MsftSme.isNumber(this.smeClampLines) ? this.smeClampLines : 'auto';\r\n\r\n        // calc line count if it is auto\r\n        if (lineCount === 'auto') {\r\n            lineCount = this.hostElement.nativeElement.offsetHeight / this.lineHeight;\r\n        }\r\n\r\n        // make sure line count is at least 1 line\r\n        return Math.max(lineCount, 1);\r\n    }\r\n\r\n    /**\r\n     * The height that the clamp should be contained within\r\n     */\r\n    private get clampHeight(): number {\r\n        return this.lineCount * this.lineHeight;\r\n    }\r\n\r\n    /**\r\n     * The line height of this element\r\n     */\r\n    private get lineHeight(): number {\r\n        return parseInt(window.getComputedStyle(this.hostElement.nativeElement).lineHeight, 10);\r\n    }\r\n\r\n    /**\r\n     * Indicates that content overflows the desired height of the clamp\r\n     */\r\n    private get needsClamping() {\r\n        return this.hostElement.nativeElement.scrollHeight > this.clampHeight;\r\n    }\r\n\r\n    private get renderedLines() {\r\n        return this.hostElement.nativeElement.scrollHeight / this.lineHeight;\r\n    }\r\n\r\n    private get breakWords() {\r\n        return (<HTMLElement>this.hostElement.nativeElement).classList.contains(breakAllClass);\r\n    }\r\n\r\n    /**\r\n     * Constructs a new instance of the ClampDirective\r\n     * @param injector The injector for the sme base component\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Host listener for page resize event.\r\n     */\r\n    @HostListener('window:resize')\r\n    public onResize() {\r\n        // reset initial content state\r\n        this.resetClampContent();\r\n        if (this.needsClamping) {\r\n            this.clamp(this.hostElement.nativeElement);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnChanges interface\r\n     * On every input change, we recalculate the clamp.\r\n     */\r\n    public ngOnChanges(changes: SimpleChanges) {\r\n        super.ngOnChanges(changes);\r\n        if (changes.smeClamp) {\r\n            // reset initial content state\r\n            this.resetClampContent();\r\n        }\r\n\r\n        // if the input changes require clamping again, then re-clamp\r\n        if (this.needsClamping) {\r\n            this.clamp(this.hostElement.nativeElement);\r\n        }\r\n    }\r\n\r\n    private setBreakWords() {\r\n        const element = (<HTMLElement>this.hostElement.nativeElement);\r\n        if (!element.classList.contains(breakAllClass)) {\r\n            element.classList.add(breakAllClass);\r\n        }\r\n    }\r\n\r\n    private removeBreakWords() {\r\n        const element = (<HTMLElement>this.hostElement.nativeElement);\r\n        if (element.classList.contains(breakAllClass)) {\r\n            element.classList.remove(breakAllClass);\r\n        }\r\n    }\r\n\r\n    private resetClampContent() {\r\n        // reset initial content state\r\n        this.removeBreakWords();\r\n        this.hostElement.nativeElement.innerHTML = this.smeClamp || '';\r\n        // whenever this changes, we need to measure and output whether the content will be clamped.\r\n        this.clamped.emit({ clamped: this.needsClamping });\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-arrange-line-clamp'\r\n        ]);\r\n    }\r\n\r\n    /**\r\n     * Clamps the text of a node by doing a last child first process of\r\n     * eliminating text until the host element fits in the clamp height.\r\n     * while this method should support HTML content, our input to this directive is a string for now.\r\n     * @param node The node to clamp\r\n     * @returns true if the node was successfully clamped\r\n     */\r\n    private clamp(node: Node): boolean {\r\n        // Process the children of the node we want to clamp, starting with the last node\r\n        for (let i = node.childNodes.length - 1; i > -1; i--) {\r\n            const child = node.childNodes[i];\r\n\r\n            // We only care about text and element nodes.\r\n            let isClamped = false;\r\n            if (child.nodeType === Node.ELEMENT_NODE) {\r\n                // dive into element nodes recursively\r\n                isClamped = this.clamp(child);\r\n            } else if (child.nodeType === Node.TEXT_NODE) {\r\n                //  When we find a text node, try clamping it.\r\n                let text = node.textContent;\r\n                const originalText = text;\r\n\r\n                // first trim words until the content fits\r\n                while (text.length > 1) {\r\n                    // remove the last word from the text\r\n                    node.textContent = this.trimLastWord(text);\r\n\r\n                    if (this.renderedLines < this.lineCount) {\r\n                        // We went too far there must be a big word here, add back the last word and break\r\n                        node.textContent = text;\r\n                        if (!this.breakWords) {\r\n                            this.setBreakWords();\r\n                            text = originalText;\r\n                            continue;\r\n                        }\r\n                        break;\r\n                    }\r\n\r\n                    // Stop if we are down to one word (trim didn't change text) or we are short enough to not need clamping\r\n                    if (node.textContent === text || !this.needsClamping) {\r\n                        // make sure text and node content are the same (in the case clamping is no longer needed)\r\n                        text = node.textContent;\r\n                        break;\r\n                    }\r\n\r\n                    // we still have more words to trim\r\n                    text = node.textContent;\r\n                }\r\n\r\n                // now that we are trimmed down on words, remove characters until the text fits with the ellipsis\r\n                while (text.length > 1) {\r\n                    // Trim off one trailing character and any trailing whitespace.\r\n                    text = <string>(<any>text.substring(0, text.length - 1)).trimRight();\r\n\r\n                    // set the node content to our text, plus a unicode ellipses\r\n                    node.textContent = `${text}${Unicode.HorizontalEllipsis}`;\r\n\r\n                    // Stop if no more clamping is needed.\r\n                    if (!this.needsClamping) {\r\n                        // We successfully clamped the text\r\n                        isClamped = true;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            // We are done if the clamp is satisfied\r\n            if (isClamped) {\r\n                return true;\r\n            } else {\r\n                // if the current node does not satisfy the clamp, remove it as it is to big to fit.\r\n                node.removeChild(child);\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Trims the last word from the string, or returns the original string if there is only one word\r\n     * @param text the text to trim\r\n     */\r\n    private trimLastWord(text: string) {\r\n        const lastSpace = text.lastIndexOf(' ');\r\n        if (lastSpace === -1) {\r\n            return text;\r\n        }\r\n        return text.substring(0, lastSpace);\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { ClampDirective } from './clamp.directive';\r\n\r\n@NgModule({\r\n    exports: [\r\n        ClampDirective\r\n    ],\r\n    declarations: [\r\n        ClampDirective\r\n    ]\r\n})\r\nexport class ClampModule { }\r\n","import { AfterContentInit, Directive, ElementRef, HostBinding, Input } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[smeTileImage]'\r\n})\r\nexport class TileImageDirective implements AfterContentInit {\r\n    @HostBinding('class.sme-tile-image')\r\n    @Input()\r\n    public imageSrc: string;\r\n\r\n    constructor(private elementRef: ElementRef) {\r\n    }\r\n\r\n    ngAfterContentInit(): void {\r\n        this.elementRef.nativeElement.style.backgroundImage = 'url(' + this.imageSrc + ')';\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { TileImageDirective } from './tile-image.directive';\r\n\r\n@NgModule({\r\n    exports: [\r\n        TileImageDirective\r\n    ],\r\n    declarations: [\r\n        TileImageDirective\r\n    ]\r\n})\r\nexport class TileDirectivesModule { }\r\n","import { Directive, DoCheck, ElementRef, Input, KeyValueDiffer, KeyValueDiffers, OnInit } from '@angular/core';\r\n\r\n/**\r\n * SME directive to wrap around telemetry tags for convenience and control. JSLL and 1DS use these to add information to telemetry events.\r\n */\r\n@Directive({\r\n    selector: `[smeTelemetry], [smeTelemetryId], [smeTelemetryArea], [smeTelemetrySlot], [smeTelemetryContentName],\r\n    [smeTelemetryContentSource], [smeTelemetryContentType], [smeTelemetryTemplate], [smeTelemetryProduct],\r\n    [smeTelemetryDataBlob], [smeTelemetryDisableAuto], [smeTelemetryDisableElement]`\r\n})\r\nexport class TelemetryDirective implements DoCheck, OnInit {\r\n   /**\r\n     * JSLL/1DS main tag labels - all tags are supported (data-bi-*) but these are the main labels and are\r\n     * specifically checked for in various cases.\r\n     */\r\n    private static readonly idLabel = 'data-bi-id';\r\n    private static readonly areaNameLabel = 'data-bi-area';\r\n    private static readonly slotNumberLabel = 'data-bi-slot';\r\n    private static readonly contentNameLabel = 'data-bi-name';\r\n    private static readonly contentSourceLabel = 'data-bi-source';\r\n    private static readonly templateNameLabel = 'data-bi-view';\r\n    private static readonly productIdLabel = 'data-bi-product';\r\n    private static readonly contentTypeLabel = 'data-bi-type';\r\n    private static readonly disableAutomaticTrackingLabel = 'data-bi-mto';\r\n    private static readonly disableElementTrackingLabel = 'data-bi-dnt';\r\n\r\n    // Sme telemetry prefix - takes place of data-bi- in WAC telemetry tagging\r\n    private static readonly directivePrefix = 'smeTelemetry';\r\n\r\n    // List of all the selectors, without the smeTelemetry prefix. Lower case b/c attributes are forced into lowercase by default.\r\n    private static readonly labeledDirectives = [\r\n        'id',\r\n        'area',\r\n        'slot',\r\n        'contentname',\r\n        'contentsource',\r\n        'contenttype',\r\n        'template',\r\n        'product',\r\n        'datablob',\r\n        'disableauto',\r\n        'disableelement'\r\n    ];\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'SmeTelemetryDataBlobDirective';\r\n    }\r\n\r\n    /**\r\n     * Content to specify custom directives on\r\n     */\r\n    @Input()\r\n    public smeTelemetry: any;\r\n\r\n    /**\r\n     * Adds data-bi-id\r\n     */\r\n    @Input('smeTelemetryId')\r\n    public set telemetryId(value: string) {\r\n        this.internalId = value;\r\n        this.elementRef.nativeElement.setAttribute(TelemetryDirective.idLabel, this.internalId);\r\n    }\r\n    public get telemetryId(): string { return this.internalId; }\r\n\r\n    /**\r\n     * Adds data-bi-area\r\n     */\r\n    @Input('smeTelemetryArea')\r\n    public set areaName(value: string) {\r\n        this.internalAreaName = value;\r\n        this.elementRef.nativeElement.setAttribute(TelemetryDirective.areaNameLabel, this.internalAreaName);\r\n    }\r\n    public get areaName(): string { return this.internalAreaName; }\r\n\r\n    /**\r\n     * Adds data-bi-slot\r\n     */\r\n    @Input('smeTelemetrySlot')\r\n    public set slotNumber(value: string) {\r\n        this.internalSlotNumber = value;\r\n        this.elementRef.nativeElement.setAttribute(TelemetryDirective.slotNumberLabel, this.internalSlotNumber);\r\n    }\r\n    public get slotNumber(): string { return this.internalSlotNumber; }\r\n\r\n    /**\r\n     * Adds data-bi-name\r\n     */\r\n    @Input('smeTelemetryContentName')\r\n    public set contentName(value: string) {\r\n        this.internalContentName = value;\r\n        this.elementRef.nativeElement.setAttribute(TelemetryDirective.contentNameLabel, this.internalContentName);\r\n    }\r\n    public get contentName(): string { return this.internalContentName; }\r\n\r\n    /**\r\n     * Adds data-bi-source\r\n     */\r\n    @Input('smeTelemetryContentSource')\r\n    public set contentSource(value: string) {\r\n        this.internalContentSource = value;\r\n        this.elementRef.nativeElement.setAttribute(TelemetryDirective.contentSourceLabel, this.internalContentSource);\r\n    }\r\n    public get contentSource(): string { return this.internalContentSource; }\r\n\r\n    /**\r\n     * Adds data-bi-type\r\n     */\r\n    @Input('smeTelemetryContentType')\r\n    public set contentType(value: string) {\r\n        this.internalContentType = value;\r\n        this.elementRef.nativeElement.setAttribute(TelemetryDirective.contentTypeLabel, this.internalContentType);\r\n    }\r\n    public get contentType(): string { return this.internalContentType; }\r\n\r\n    /**\r\n     * Adds data-bi-view\r\n     */\r\n    @Input('smeTelemetryTemplate')\r\n    public set templateName(value: string) {\r\n        this.internalTemplateName = value;\r\n        this.elementRef.nativeElement.setAttribute(TelemetryDirective.templateNameLabel, this.internalTemplateName);\r\n    }\r\n    public get templateName(): string { return this.internalTemplateName; }\r\n\r\n    /**\r\n     * Adds data-bi-product\r\n     */\r\n    @Input('smeTelemetryProduct')\r\n    public set productId(value: string) {\r\n        this.internalProductId = value;\r\n        this.elementRef.nativeElement.setAttribute(TelemetryDirective.productIdLabel, this.internalProductId);\r\n    }\r\n    public get productId(): string { return this.internalProductId; }\r\n\r\n    /**\r\n     * Adds each field in JSON object to element. Allows for custom element typings. Data-m has a similar behavior, but splitting up\r\n     * the individual fields works together with lineage component, whereas specifying data-m blocks the lineage handling (ie cannot pull\r\n     * tags from higher or lower in the DOM tree)\r\n     * This uses the ngDoCheck to change DOM mainly, this setter is used for the initial object set.\r\n     */\r\n    @Input('smeTelemetryDataBlob')\r\n    public set dataBlob(value: any) {\r\n        this.internalDataBlob = value;\r\n        for (const [key, val] of Object.entries(this.internalDataBlob)) {\r\n            if (val === '') {\r\n                // Skip if value is empty, attribute will not be added initially.\r\n                delete this.internalDataBlob[key];\r\n                continue;\r\n            }\r\n            const label = `data-bi-${key}`;\r\n            // use NS function to hold case in attribute name\r\n            this.elementRef.nativeElement.setAttributeNS(null, label, val);\r\n        }\r\n    }\r\n    public get dataBlob(): any {\r\n        return this.internalDataBlob;\r\n    }\r\n\r\n    /**\r\n     * Adds data-bi-mto\r\n     * Removes the element from being subject to default automatic tracking.\r\n     */\r\n    @Input('smeTelemetryDisableAuto')\r\n    public set disableAutomaticTracking(value: boolean) {\r\n        this.internalDisableAutomaticTracking = value;\r\n        // empty quotes will add attribute with no value, null will remove\r\n        if (this.internalDisableAutomaticTracking) {\r\n            this.elementRef.nativeElement.setAttribute(TelemetryDirective.disableAutomaticTrackingLabel, '');\r\n        } else {\r\n            this.elementRef.nativeElement.removeAttribute(TelemetryDirective.disableAutomaticTrackingLabel);\r\n        }\r\n    }\r\n    public get disableAutomaticTracking(): boolean { return this.internalDisableAutomaticTracking; }\r\n\r\n    /**\r\n     * Adds data-bi-dnt\r\n     * Removes element from all telemetry events.\r\n     */\r\n    @Input('smeTelemetryDisableElement')\r\n    public set disableElementTracking(value: boolean) {\r\n        this.internalDisableElementTracking = value;\r\n        // empty quotes will add attribute with no value, null will remove\r\n        if (this.internalDisableElementTracking) {\r\n            this.elementRef.nativeElement.setAttribute(TelemetryDirective.disableElementTrackingLabel, '');\r\n        } else {\r\n            this.elementRef.nativeElement.removeAttribute(TelemetryDirective.disableElementTrackingLabel);\r\n        }\r\n    }\r\n    public get disableElementTracking(): boolean { return this.internalDisableElementTracking; }\r\n\r\n    /**\r\n     * Initialize differ for data blob so it constantly updates based on object.\r\n     * Also, check if smeTelemetry specified. If so, search for anything with smeTelemetry prefix and add data-bi telemetry\r\n     * tags. This allows for any singular addition of a data-bi- tag, as opposed to dataBlob which uses an object to retrieve fields.\r\n     * Due to Angular limitations we cannot bind to any custom SmeTelemetry____ directive, limiting it to mainly use for\r\n     * static data-bi- labels. Custom directives, if not part of data blob, should primarily stem from the data-bi-\r\n     * dictionary for adding target fields in telemetry.\r\n     * See https://martech.azurewebsites.net/website-tools/jsll/references/data-bi-event-dictionary/\r\n     * @param elementRef    Element with the directive\r\n     * @param kvDiffers     KeyValue differs for dataBlob\r\n     */\r\n    constructor(private elementRef: ElementRef, private kvDiffers: KeyValueDiffers) {\r\n        this.dataBlobDiffer = this.kvDiffers.find(this.internalDataBlob).create();\r\n    }\r\n\r\n    private dataBlobDiffer: KeyValueDiffer<string, string>;\r\n\r\n    /**\r\n     * Internal variable holders\r\n     */\r\n    private internalId = '';\r\n    private internalAreaName = '';\r\n    private internalSlotNumber = '';\r\n    private internalContentName = '';\r\n    private internalContentSource = '';\r\n    private internalTemplateName = '';\r\n    private internalProductId = '';\r\n    private internalContentType = '';\r\n    private internalDisableAutomaticTracking = false;\r\n    private internalDisableElementTracking = false;\r\n    private internalDataBlob = {};\r\n\r\n    public ngOnInit() {\r\n        if (this.elementRef.nativeElement.hasAttribute(TelemetryDirective.directivePrefix)) {\r\n            const attributes = this.elementRef.nativeElement.getAttributeNames().filter((name: string) => {\r\n                        const suffix = name.substring(TelemetryDirective.directivePrefix.length);\r\n                        return name.startsWith(TelemetryDirective.directivePrefix.toLowerCase())\r\n                            && suffix && !(TelemetryDirective.labeledDirectives.includes(suffix));\r\n                    }).map((attr: string) => attr.substring(TelemetryDirective.directivePrefix.length));\r\n            for (const attributeName of attributes) {\r\n                const attributeValue = this.elementRef.nativeElement.getAttribute(`${TelemetryDirective.directivePrefix}${attributeName}`);\r\n                const label = `data-bi-${attributeName}`;\r\n\r\n                this.elementRef.nativeElement.setAttribute(label, attributeValue);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Handle changes to data blob object, needed b/c data object will update without triggering setter.\r\n     * Selectively update DOM fields based on individual changes.\r\n     */\r\n    public ngDoCheck() {\r\n        if (this.dataBlobDiffer) {\r\n            const changes = this.dataBlobDiffer.diff(this.internalDataBlob);\r\n            if (changes) {\r\n                changes.forEachItem((item) => {\r\n                    if (item.currentValue === item.previousValue) {\r\n                        return;\r\n                    }\r\n                    const label = `data-bi-${item.key}`;\r\n                    if (!item.currentValue) {\r\n                        this.elementRef.nativeElement.removeAttributeNS(null, label);\r\n                        delete this.internalDataBlob[item.key];\r\n                    } else {\r\n                        this.elementRef.nativeElement.setAttributeNS(null, label, item.currentValue);\r\n                    }\r\n                });\r\n            }\r\n        }\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { TelemetryDirective } from './telemetry.directive';\r\n\r\n@NgModule({\r\n    exports: [\r\n        TelemetryDirective\r\n    ],\r\n    declarations: [\r\n        TelemetryDirective\r\n    ]\r\n})\r\nexport class TelemetryDirectiveModule { }\r\n","import { Directive, ElementRef, Input } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[autofocus],[smeAutofocus]'\r\n})\r\nexport class AutofocusDirective {\r\n    /**\r\n     * Using manual focus to override native autofocus behavior.\r\n     * Native autofocus does not work in iFrame.\r\n     */\r\n    @Input()\r\n    public get autofocus(): boolean {\r\n        return this.internalAutofocusable;\r\n    }\r\n\r\n    public set autofocus(value: boolean) {\r\n        this.internalAutofocusable = value;\r\n        if (value && this.host) {\r\n            this.host.nativeElement.focus();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Custom autofocus.\r\n     */\r\n    @Input()\r\n    public smeAutofocus: boolean;\r\n\r\n    private internalAutofocusable: boolean;\r\n\r\n    constructor(private host: ElementRef) { }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { AutofocusDirective } from './autofocus.directive';\r\n\r\n@NgModule({\r\n    exports: [\r\n        AutofocusDirective\r\n    ],\r\n    declarations: [\r\n        AutofocusDirective\r\n    ]\r\n})\r\nexport class AutofocusModule { }\r\n","import { Directive, ElementRef, OnDestroy, OnInit } from '@angular/core';\r\nimport { Strings } from '../../generated/strings';\r\n\r\n@Directive({\r\n    selector: '[smeDiscard]'\r\n})\r\nexport class DiscardDirective implements OnInit, OnDestroy {\r\n    private strings = MsftSme.getStrings<Strings>();\r\n    private alertElement: HTMLParagraphElement;\r\n    private smeDiscardId = `sme-discard-id-${MsftSme.newGuid()}`;\r\n    private observer: MutationObserver;\r\n    private isAlerting = false;\r\n\r\n    constructor(private host: ElementRef) {\r\n        this.alertElement = this.createAlertElement(this.strings.MsftSmeShell.Angular.Common.discarded);\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        if (this.host && this.host.nativeElement) {\r\n            this.observer = new MutationObserver(mutations => {\r\n                mutations.forEach(mutation => {\r\n                    if (mutation.target && mutation.target['disabled'] !== undefined) {\r\n                        if (!mutation.target['disabled']) {\r\n                            this.removeAlertElement();\r\n                        } else {\r\n                            /**\r\n                             * initially the disabled attribute is triggered when component initializes, skip alerting the user until\r\n                             * the next time the user presses the button. Going forward, The disabled attribute will only\r\n                             * be triggered if the button state changes.\r\n                            */\r\n                            if (this.isAlerting) {\r\n                                this.alertDiscarded();\r\n                            }\r\n                            this.isAlerting = true;\r\n                        }\r\n                    }\r\n                });\r\n            });\r\n            const config = { attributeFilter: ['disabled'], childList: true, characterData: true };\r\n            this.observer.observe(this.host.nativeElement, config);\r\n        }\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.observer?.disconnect();\r\n    }\r\n\r\n    private alertDiscarded(): void {\r\n        if (this.alertElement) {\r\n            document.body.appendChild(this.alertElement);\r\n        }\r\n    }\r\n\r\n    private createAlertElement(value: string): HTMLParagraphElement {\r\n        const alertElement = document.createElement('p');\r\n        alertElement.id = this.smeDiscardId;\r\n        alertElement.setAttribute('role', 'alert');\r\n        alertElement.classList.add('sme-screen-reader');\r\n        alertElement.insertAdjacentText('afterbegin', value);\r\n        return alertElement;\r\n    }\r\n\r\n    private removeAlertElement(): void {\r\n        const element = document.getElementById(this.smeDiscardId);\r\n        if (element) {\r\n            document.body.removeChild(element);\r\n        }\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { DiscardDirective } from './discard.directive';\r\n\r\n@NgModule({\r\n    exports: [\r\n        DiscardDirective\r\n    ],\r\n    declarations: [\r\n        DiscardDirective\r\n    ]\r\n})\r\nexport class DiscardModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { BaseGuardData } from './guard-data';\r\n\r\n@Injectable()\r\nexport class DevGuardService implements CanActivate {\r\n\r\n    /**\r\n     * Initializes a new instance of the DevGuardService class.\r\n     * @param router the router.\r\n     */\r\n    constructor(private router: Router) { }\r\n\r\n    /**\r\n     * Guard against navigating unless angular dev mode is enabled\r\n     * @param route the current route snapshot\r\n     * @param state the current router state snapshot\r\n     */\r\n    public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n        if (!MsftSme.self().Init.isProduction) {\r\n            return true;\r\n        }\r\n        const routeData = <BaseGuardData>route.data;\r\n        this.router.navigateByUrl(routeData.redirectTo);\r\n        return false;\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { BaseGuardData } from './guard-data';\r\n\r\nexport interface ExperimentGuardData extends BaseGuardData {\r\n    experiments: string | string[];\r\n    shellExperiments?: string | string[];\r\n}\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Experiments and IsProduction @id sme-dev-guide-utilities-msft-sme-experiments}\r\n *\r\n * @overview\r\n * @file {@filepath ./experiment-key/examples/overview.md}\r\n *\r\n * @example {@label Experiment key @id experiment-key}\r\n * @file {@filename experiment-key.ts @filepath ./experiment-key/examples/experiment-key.ts}\r\n *\r\n * @example {@label IsProduction @id isProduction}\r\n * @file {@filename isproduction.ts @filepath ./experiment-key/examples/isproduction.ts}\r\n */\r\n@Injectable()\r\nexport class ExperimentGuardService implements CanActivate {\r\n\r\n    /**\r\n     * Initializes a new instance of the ExperimentGuardService class.\r\n     * @param router the router.\r\n     */\r\n    constructor(private router: Router) { }\r\n\r\n    /**\r\n     * Guard against navigating unless angular dev mode is enabled\r\n     * @param route the current route snapshot\r\n     * @param state the current router state snapshot\r\n     */\r\n    public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n        const routeData = <ExperimentGuardData>route.data;\r\n        let experiments = routeData.experiments || [];\r\n        let shellExperiments = routeData.shellExperiments || [];\r\n\r\n        if (!Array.isArray(experiments)) {\r\n            experiments = [experiments];\r\n        }\r\n        if (!Array.isArray(shellExperiments)) {\r\n            shellExperiments = [shellExperiments];\r\n        }\r\n\r\n        if (experiments.every(x => MsftSme.isExperimentEnabled(x)) && shellExperiments.every(x => MsftSme.isExperimentEnabled(x))) {\r\n            return true;\r\n        }\r\n        this.router.navigateByUrl(routeData.redirectTo);\r\n        return false;\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Rpc } from '@microsoft/windows-admin-center-sdk/core/rpc/rpc';\r\n\r\n@Injectable()\r\n/**\r\n * The Rpc service class.\r\n */\r\nexport class RpcService extends Rpc {\r\n    /**\r\n     * Initializes a new instance of the RpcService class.\r\n     */\r\n    constructor() {\r\n        super();\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpStatusCode } from '@microsoft/windows-admin-center-sdk/core/data/http-constants';\r\nimport { AuthorizationManager, NodeAuthorizationHandler } from '@microsoft/windows-admin-center-sdk/core/security/authorization-manager';\r\nimport { AjaxError } from 'rxjs/ajax';\r\nimport { RpcService } from './rpc.service';\r\n\r\n@Injectable()\r\nexport class AuthorizationService extends AuthorizationManager {\r\n    public static authorize: NodeAuthorizationHandler = null;\r\n\r\n    constructor(rpc: RpcService) {\r\n        super((serverNames, errorData) => AuthorizationService.authorize(serverNames, errorData), rpc);\r\n    }\r\n\r\n    public canHandleAjaxFailure(code: HttpStatusCode, error: AjaxError): boolean {\r\n        // if we are not the shell, assume our parent can handle auth\r\n        const canHandle = AuthorizationService.authorize || !this.isShell;\r\n        return  canHandle && super.canHandleAjaxFailure(code, error);\r\n    }\r\n\r\n    private get isShell() {\r\n        return this.rpc.isShell;\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Http } from '@microsoft/windows-admin-center-sdk/core/data/http';\r\n\r\n/**\r\n * The LifetimeService service class.\r\n */\r\n@Injectable()\r\nexport class HttpService extends Http {\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { GatewayConnection } from '@microsoft/windows-admin-center-sdk/core/data/gateway-connection';\r\nimport { AuthorizationService } from './authorization.service';\r\nimport { HttpService } from './http.service';\r\nimport { RpcService } from './rpc.service';\r\n\r\n@Injectable()\r\n/**\r\n * The gateway service class.\r\n */\r\nexport class GatewayService extends GatewayConnection {\r\n    /**\r\n     * Initializes a new instance of the GatewayService class.\r\n     *\r\n     * @param http the Http object.\r\n     * @param rpcService the RPC service.\r\n     * @param authorizationService the authorizaton service.\r\n     */\r\n    constructor(\r\n        httpService: HttpService,\r\n        rpcService: RpcService,\r\n        authorizationService: AuthorizationService) {\r\n        super(httpService, rpcService, authorizationService);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BatchConnection } from '@microsoft/windows-admin-center-sdk/core/data/batch-connection';\r\nimport { AuthorizationService } from './authorization.service';\r\nimport { GatewayService } from './gateway.service';\r\n\r\n@Injectable()\r\n/**\r\n * The batch service class.\r\n */\r\nexport class BatchService extends BatchConnection {\r\n    /**\r\n     * Initializes a new instance of the BatchService class.\r\n     *\r\n     * @param gatewayService the gateway service.\r\n     * @param authorizationService the authorization service.\r\n     */\r\n    constructor(gatewayService: GatewayService, authorizationService: AuthorizationService) {\r\n        super(gatewayService, authorizationService);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NodeConnection } from '@microsoft/windows-admin-center-sdk/core/data/node-connection';\r\nimport { AuthorizationService } from './authorization.service';\r\nimport { GatewayService } from './gateway.service';\r\n\r\n@Injectable()\r\n/**\r\n * The node service class.\r\n */\r\nexport class NodeService extends NodeConnection {\r\n    /**\r\n     * Initializes a new instance of the NodeService class.\r\n     *\r\n     * @param gatewayService the gateway service.\r\n     * @param authorizationService the authorization service.\r\n     */\r\n    constructor(gatewayService: GatewayService, authorizationService: AuthorizationService) {\r\n        super(gatewayService, authorizationService);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CimConnection } from '@microsoft/windows-admin-center-sdk/core/data/cim-connection';\r\nimport { BatchService } from './batch.service';\r\nimport { NodeService } from './node.service';\r\n\r\n@Injectable()\r\n/**\r\n * The CIM service class.\r\n */\r\nexport class CimService extends CimConnection {\r\n\r\n    /**\r\n     * Initializes a new instance of the CimService class.\r\n     *\r\n     * @param nodeService the NodeService class instance injected.\r\n     * @param batchService the BatchService class instance injected.\r\n     */\r\n    constructor(nodeService: NodeService, batchService: BatchService) {\r\n        super(nodeService, batchService);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ConnectionManager } from '@microsoft/windows-admin-center-sdk/core/security/connection-manager';\r\nimport { GatewayService } from './gateway.service';\r\nimport { RpcService } from './rpc.service';\r\n\r\n@Injectable()\r\nexport class ConnectionService extends ConnectionManager {\r\n    constructor(rpc: RpcService, gatewayService: GatewayService) {\r\n        super(rpc, gatewayService);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FileTransfer } from '@microsoft/windows-admin-center-sdk/core/data/file-transfer';\r\nimport { AuthorizationService } from './authorization.service';\r\nimport { GatewayService } from './gateway.service';\r\nimport { NodeService } from './node.service';\r\n\r\n@Injectable()\r\n/**\r\n * The File Transfer service class.\r\n */\r\nexport class FileTransferService extends FileTransfer {\r\n    /**\r\n     * Initializes a new instance of the FileTransferService class.\r\n     *\r\n     * @param nodeService the node service.\r\n     * @param gatewayService the gateway service.\r\n     * @param authorizationService the authorization service.\r\n     */\r\n    constructor(nodeService: NodeService, gatewayService: GatewayService,  authorizationService: AuthorizationService) {\r\n        super(nodeService, gatewayService, authorizationService);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { TriggerableLifetimeManager } from '@microsoft/windows-admin-center-sdk/core/data/disposable';\r\nimport { LifetimeData } from '@microsoft/windows-admin-center-sdk/core/data/lifetime-data';\r\n\r\n/**\r\n * The LifetimeService service class.\r\n */\r\n@Injectable()\r\nexport class LifetimeService extends LifetimeData {\r\n    /**\r\n     * lifetime manager of the application.\r\n     */\r\n    public manager: TriggerableLifetimeManager = new TriggerableLifetimeManager();\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { PowerShellConnection } from '@microsoft/windows-admin-center-sdk/core/data/powershell-connection';\r\nimport { BatchService } from './batch.service';\r\nimport { LifetimeService } from './lifetime.service';\r\nimport { NodeService } from './node.service';\r\n\r\n@Injectable()\r\n/**\r\n * The PowerShell service class.\r\n */\r\nexport class PowerShellService extends PowerShellConnection {\r\n    /**\r\n     * Initializes a new instance of the PowerShellService class.\r\n     *\r\n     * @param lifetimeService the lifetimeService class instance injected.\r\n     * @param nodeService the NodeService class instance injected.\r\n     * @param batchService the BatchService class instance injected.\r\n     */\r\n    constructor(lifetimeService: LifetimeService, nodeService: NodeService, batchService: BatchService) {\r\n        super(lifetimeService, nodeService, batchService);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActiveConnection } from '@microsoft/windows-admin-center-sdk/core/security/active-connection';\r\nimport { CimService } from './cim.service';\r\nimport { ConnectionService } from './connection.service';\r\nimport { FileTransferService } from './file-transfer.service';\r\nimport { PowerShellService } from './powershell.service';\r\n\r\n@Injectable()\r\n/**\r\n * The active connection service class.\r\n */\r\nexport class ActiveConnectionService extends ActiveConnection {\r\n    /**\r\n     * Initializes a new instance of the ActiveConnectionService class.\r\n     *\r\n     * @param connectionService the connection service.\r\n     */\r\n    constructor(\r\n        connectionService: ConnectionService,\r\n        cimService: CimService,\r\n        powerShellService: PowerShellService,\r\n        fileTransferService: FileTransferService\r\n    ) {\r\n        super(connectionService, cimService, powerShellService, fileTransferService);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AzureManager } from '@microsoft/windows-admin-center-sdk/core/azure/azure-manager';\r\nimport { HttpService } from './http.service';\r\nimport { RpcService } from './rpc.service';\r\n\r\n@Injectable()\r\n/**\r\n * Azure Manager service class. This is an injectable service wrapper for the actual\r\n * AzureManager class.\r\n */\r\nexport class AzureManagerService extends AzureManager {\r\n\r\n    constructor(rpc: RpcService, http: HttpService) {\r\n        super(rpc, http);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { WebsocketStream } from '@microsoft/windows-admin-center-sdk/core/data/websocket-stream';\r\nimport { GatewayService } from './gateway.service';\r\n\r\n@Injectable()\r\n/**\r\n * The Websocket Stream service class.\r\n */\r\nexport class WebsocketStreamService extends WebsocketStream {\r\n    /**\r\n     * Initializes a new instance of the WebsocketStreamService class.\r\n     *\r\n     * @param gatewayService the gateway service object.\r\n     */\r\n    constructor(public gatewayService: GatewayService) {\r\n        super(gatewayService);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { PowerShellStream } from '@microsoft/windows-admin-center-sdk/core/data/powershell-stream';\r\nimport { AuthorizationService } from './authorization.service';\r\nimport { WebsocketStreamService } from './websocket-stream.service';\r\n\r\n@Injectable()\r\n/**\r\n * The PowerShell Stream service class.\r\n */\r\nexport class PowerShellStreamService extends PowerShellStream {\r\n    /**\r\n     * Initializes a new instance of the PowerShellStreamService class.\r\n     *\r\n     * @param websocketStreamService the websocket stream class instance injected.\r\n     * @param authorizationService the authorization manager service class instance injected.\r\n     */\r\n    constructor(websocketStreamService: WebsocketStreamService, authorizationService: AuthorizationService) {\r\n        super(websocketStreamService, authorizationService);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CimStream } from '@microsoft/windows-admin-center-sdk/core/data/cim-stream';\r\nimport { AuthorizationService } from './authorization.service';\r\nimport { PowerShellStreamService } from './powershell-stream.service';\r\nimport { WebsocketStreamService } from './websocket-stream.service';\r\n\r\n@Injectable()\r\n/**\r\n * The CIM Stream service class.\r\n */\r\nexport class CimStreamService extends CimStream {\r\n    /**\r\n     * Initializes a new instance of the CimStreamService class.\r\n     *\r\n     * @param websocketStreamService the websocket stream class instance injected.\r\n     * @param powerShellStream the PowerShell stream class instance injected.\r\n     * @param authorizationService the authorization manager service class instance injected.\r\n     */\r\n    constructor(\r\n        websocketStreamService: WebsocketStreamService,\r\n         powerShellStream: PowerShellStreamService,\r\n         authorizationService: AuthorizationService) {\r\n        super(websocketStreamService, powerShellStream, authorizationService);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CredSSPManager } from '@microsoft/windows-admin-center-sdk/core/security/credssp-manager';\r\nimport { RpcService } from './rpc.service';\r\n\r\n@Injectable()\r\n/**\r\n * CredSPP Manager service class. This is an injectable service wrapper for the actual\r\n * CredSSPManager class.\r\n */\r\nexport class CredSSPManagerService extends CredSSPManager {\r\n\r\n    constructor(rpc: RpcService) {\r\n        super(rpc);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FrameConnection } from '@microsoft/windows-admin-center-sdk/core/frame/frame-connection';\r\nimport { RpcService } from './rpc.service';\r\n\r\n@Injectable()\r\n/**\r\n * The CIM service class.\r\n */\r\nexport class FrameService extends FrameConnection {\r\n    /**\r\n     * Initializes a new instance of the FrameService class.\r\n     *\r\n     * @param rpcService the RpcService class instance injected.\r\n     */\r\n    constructor(rpc: RpcService) {\r\n        super(rpc);\r\n    }\r\n}\r\n","import { Location } from '@angular/common';\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, Params, PRIMARY_OUTLET, Router } from '@angular/router';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { EnvironmentModule } from '@microsoft/windows-admin-center-sdk/core/manifest/environment-modules';\r\nimport { SelectablePath } from '@microsoft/windows-admin-center-sdk/core/rpc/report/rpc-report-model';\r\nimport { RpcShellNavigate } from '@microsoft/windows-admin-center-sdk/core/rpc/shell-navigate/rpc-shell-navigate-model';\r\nimport { Connection } from '@microsoft/windows-admin-center-sdk/core/security/connection';\r\nimport { forkJoin, Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { Strings } from '../generated/strings';\r\nimport { AppContextService } from './app-context.service';\r\n\r\n/**\r\n * The navigation data extra for holding fragement parameter and queryParams for module url.\r\n */\r\nexport interface NavigationDataExtras {\r\n    /**\r\n     * The fragment string for module if any.\r\n     */\r\n    fragment?: string;\r\n\r\n    /**\r\n     * The query parameters for module if any.\r\n     */\r\n    queryParams?: { [key: string]: string };\r\n}\r\n\r\n/**\r\n * The navigation data to navigate inside of module.\r\n */\r\nexport interface NavigationData {\r\n    /**\r\n     * The navigation commands (path segments).\r\n     */\r\n    commands: string[];\r\n\r\n    /**\r\n     * The navigation data extras for module.\r\n     */\r\n    options: NavigationDataExtras;\r\n}\r\n\r\n/**\r\n * Static function name for the navigation title function in a component class\r\n */\r\nexport const navigationTitleFunctionName = 'navigationTitle';\r\n\r\n/**\r\n * Navigation Title Function Return type\r\n */\r\nexport type NavigationTitle = string | SelectablePath[] | Observable<SelectablePath[]>;\r\n\r\n/**\r\n * Callback for data.title property in router configuration.\r\n */\r\ninterface NavigationTitleData {\r\n    title: string | ((appContextService: AppContextService, childRouter: ActivatedRouteSnapshot) => string | SelectablePath[]);\r\n}\r\n\r\n/**\r\n * Navigation class to provide set of static helper functions.\r\n */\r\nexport class Navigation {\r\n    /**\r\n     * The url options for gateway and connection.\r\n     */\r\n    public static gatewayUrl = 'gatewayUrl';\r\n\r\n    /**\r\n     * The url options for version of static content.\r\n     */\r\n    public static staticVersion = 'staticVersion';\r\n\r\n    private static pushStateBackup: any = null;\r\n\r\n    /**\r\n     * Turn off browser history push.\r\n     * - instead sending all path change to the Shell to create history.\r\n     */\r\n    public static turnOffHistory(): void {\r\n        if (window.history.pushState !== MsftSme.noop) {\r\n            Navigation.pushStateBackup = window.history.pushState;\r\n            Object.defineProperty(window.history, 'pushState', {\r\n                value: MsftSme.noop\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Turn on browser history push.\r\n     */\r\n    public static turnOnHistory(): void {\r\n        if (Navigation.pushStateBackup && window.history.pushState === MsftSme.noop) {\r\n            Object.defineProperty(window.history, 'pushState', {\r\n                value: Navigation.pushStateBackup\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Compare two urls by removing leading and trailing slashes.\r\n     *\r\n     * @param url1 the url to compare.\r\n     * @param url2 the url to compare.\r\n     * @return boolean true if matches. null url returns false.\r\n     */\r\n    public static areEqualUrl(url1: string, url2: string): boolean {\r\n        if (url1 == null || url2 == null) {\r\n            return false;\r\n        }\r\n\r\n        return Navigation.trimSlash(url1) === Navigation.trimSlash(url2);\r\n    }\r\n\r\n    /**\r\n     * Compare two urls for number of segments.\r\n     *\r\n     * @param url1 the url to compare.\r\n     * @param url2 the url to compare.\r\n     * @param count the number of segments to compare.\r\n     * @return boolean true if matches for number of segments.\r\n     */\r\n    public static areEqualSegments(url1: string, url2: string, count: number): boolean {\r\n        if (url1 == null || url2 == null) {\r\n            return false;\r\n        }\r\n\r\n        const segments1 = Navigation.trimSlash(url1).split('/');\r\n        const segments2 = Navigation.trimSlash(url2).split('/');\r\n\r\n        if (segments1.length < count || segments2.length < count) {\r\n            return false;\r\n        }\r\n\r\n        for (let i = 0; i < count; i++) {\r\n            if (segments1[i] !== segments2[i]) {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * Trim leading and trailing slashes.\r\n     *\r\n     * @param url the url to trim leading and trailing slashes.\r\n     * @returns the updated url.\r\n     */\r\n    private static trimSlash(url: string): string {\r\n        if (url == null) {\r\n            return url;\r\n        }\r\n\r\n        if (url.length > 0 && url[0] === '/') {\r\n            url = url.substring(1);\r\n        }\r\n\r\n        if (url.length > 0 && url[url.length - 1] === '/') {\r\n            url = url.substring(0, url.length - 1);\r\n        }\r\n\r\n        return url;\r\n    }\r\n\r\n    /**\r\n     * Get url segments combined module name and path of entry point.\r\n     *\r\n     * @param moduleName the module name.\r\n     * @param entryPointName the name of entry point.\r\n     * @return the url segments.\r\n     */\r\n    public static getModuleEntryPointUrlSegment(moduleName: string, entryPointName?: string): string {\r\n        return `${moduleName}!${entryPointName}`;\r\n    }\r\n\r\n    /**\r\n     * Builds selectable paths from the given route.\r\n     *\r\n     * @param appContextService The application context service object.\r\n     * @param route The route to extract the breadcrumb for\r\n     * @param pathPrefix The prefix to prepend to the route path\r\n     * @return SelectablePath[] the selectable paths.\r\n     */\r\n    public static buildSelectablePathsForRoute(\r\n        appContextService: AppContextService,\r\n        route: ActivatedRouteSnapshot,\r\n        pathPrefix?: string): Observable<SelectablePath[]> {\r\n        const asyncArray: Observable<SelectablePath[]>[] = [];\r\n        const childrenQueue = route.children.slice(0);\r\n        pathPrefix = pathPrefix ? pathPrefix : '';\r\n\r\n        while (childrenQueue.length > 0) {\r\n            // we are only interested in primary routes that have a displayName at this time\r\n            const child = childrenQueue.shift();\r\n            if (child.outlet === PRIMARY_OUTLET) {\r\n                // append the routes URL segment\r\n                const segmentPath = child.url\r\n                    .filter(seg1 => seg1 && seg1.path && seg1.path.length > 0)\r\n                    .map(seg2 => seg2.path)\r\n                    .join('/');\r\n                if (segmentPath) {\r\n                    // only add a segment if there's any valuable information to it.\r\n                    pathPrefix = Location.joinWithSlash(pathPrefix, segmentPath);\r\n                }\r\n\r\n                let result: NavigationTitle = null;\r\n                if (child.component && child.component[navigationTitleFunctionName]) {\r\n                    // the label can be null to indicate if it's home page access.\r\n                    result = child.component[navigationTitleFunctionName](appContextService, child);\r\n                    if (result) {\r\n                        if (result instanceof Observable) {\r\n                            // observable query.\r\n                            asyncArray.push(result);\r\n                        } else if (typeof result === 'object') {\r\n                            // returned as array.\r\n                            const paths: SelectablePath[] = result;\r\n                            asyncArray.push(of(paths));\r\n                        } else if (typeof result === 'string') {\r\n                            // returned as string.\r\n                            const selectablePath: SelectablePath = {\r\n                                label: result,\r\n                                path: pathPrefix\r\n                            };\r\n                            asyncArray.push(of([selectablePath]));\r\n                        } else {\r\n                            const message = MsftSme.getStrings<Strings>()\r\n                                .MsftSmeShell.Angular.Navigation.NavigationTitleReturnTypeError.message;\r\n                            throw new Error(message);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            // continue building recursively\r\n            child.children.forEach(grandChild => {\r\n                if (grandChild.outlet === PRIMARY_OUTLET) {\r\n                    childrenQueue.push(grandChild);\r\n                }\r\n            });\r\n        }\r\n\r\n        return forkJoin(asyncArray).pipe(map(resultArray => {\r\n            const result: SelectablePath[] = [];\r\n            resultArray.forEach((items, index, array) => {\r\n                items.forEach(item => {\r\n                    result.push(item);\r\n                });\r\n            });\r\n            return result;\r\n        }));\r\n    }\r\n\r\n    /**\r\n     * Navigate to the connection.\r\n     *\r\n     * @param router the router.\r\n     * @param connection the connection object.\r\n     */\r\n    public static navigateConnection(router: Router, connection: Connection): Promise<boolean> {\r\n        const typeInfo = EnvironmentModule.getConnectionTypeInfo(connection.type);\r\n        const moduleEntrySegment = Navigation.getModuleEntryPointUrlSegment(typeInfo.solution.parentModule.name, typeInfo.solution.name);\r\n        const rootEntrySegment = Navigation.getModuleEntryPointUrlSegment(\r\n            typeInfo.solution.parentModule.name, typeInfo.solution.tools.defaultTool);\r\n        const pathSegments: string[] = ['solutions', moduleEntrySegment, 'tools', rootEntrySegment];\r\n        return router.navigate(pathSegments);\r\n    }\r\n\r\n    /**\r\n     * Get navigation URL by solution/name, module/name, connection/name and connection/type.\r\n     *\r\n     * (ex.\r\n     *    - /\r\n     *    - /msft.sme.server-manager!servers\r\n     *    - /msft.sme.server-manager!servers/tools/msft.sme.server-manager!overview\r\n     *    - /msft.sme.server-manager!servers +\r\n     *          /connections/msft.sme.connection-type.server/sme-full1.redmond.corp.microsoft.com +\r\n     *          /tools/msft.sme.server-manager!overview)\r\n     * @param data the RPC shell navigate data.\r\n     * @return string the url to navigate to the tool.\r\n     */\r\n    public static getNavigationUrlForToolEntryPoint(data: RpcShellNavigate): string {\r\n        if (data.navigateNext) {\r\n            return data.navigateNext;\r\n        }\r\n\r\n        if (data.settings) {\r\n            let settingsUrl = `/settings`;\r\n            if (data.settings.name) {\r\n                settingsUrl += `/${data.settings.name}`;\r\n            }\r\n\r\n            if (data.settings.nestedUrlAndOptions) {\r\n                settingsUrl += data.settings.nestedUrlAndOptions;\r\n            }\r\n\r\n            return settingsUrl;\r\n        } else if (!data.solution || !data.solution.moduleName) {\r\n            // no solution goes to root (homepage)\r\n            return '/';\r\n        } else if (!data.solution.entryPointName) {\r\n            // it requires entryPointName.\r\n            Logging.logError('navigation', 'Argument error: entryPointName of the solution is required.');\r\n            return null;\r\n        }\r\n\r\n        let url = `/${data.solution.moduleName}!${data.solution.entryPointName}`;\r\n        if (data.connection) {\r\n            if (!data.connection.name || !data.connection.type) {\r\n                // connection list for empty connection like 'data.connection === {}'\r\n                url += '/connections';\r\n                return url;\r\n            }\r\n\r\n            url += `/connections/${data.connection.type}/${data.connection.name}`;\r\n        }\r\n\r\n        // allow to navigate inside of solution just by tool name, so data.connection == null is expected.\r\n        if (data.tool) {\r\n            if (data.tool.moduleName && !data.tool.entryPointName) {\r\n                // it requires entryPointName.\r\n                Logging.logError('navigation', 'Argument error: entryPointName of the tool is required.');\r\n                return null;\r\n            }\r\n\r\n            url += `/tools/${data.tool.moduleName}!${data.tool.entryPointName}`;\r\n        } else if (data.connectionSettings) {\r\n            url += '/tools/settings';\r\n            if (data.connectionSettings.tabUrlName) {\r\n                url += `/${data.connectionSettings.tabUrlName}`;\r\n            }\r\n        }\r\n\r\n        if (data.toolNestedUrlAndOptions) {\r\n            url += data.toolNestedUrlAndOptions;\r\n        }\r\n\r\n        return url;\r\n    }\r\n\r\n    /**\r\n     * Get navigation extra data from current activated route on shell.\r\n     *\r\n     * @param route the activated route.\r\n     */\r\n    public static getUrlNavigationDataExtras(route: ActivatedRoute): NavigationDataExtras {\r\n        const snapshot = route.snapshot;\r\n        const fragment = snapshot.queryParamMap.get('fragment');\r\n        let queryParams = null;\r\n        try {\r\n            const query = snapshot.queryParamMap.get('queryParams');\r\n            if (query) {\r\n                queryParams = JSON.parse(query);\r\n            }\r\n\r\n        } catch {\r\n        }\r\n\r\n        return { fragment, queryParams };\r\n    }\r\n\r\n    /**\r\n     * Get the navigation data from the path on module.\r\n     *\r\n     * @param router the Router object.\r\n     * @param path The path URI with module.\r\n     */\r\n    public static getUrlNavigationData(router: Router, path: string): NavigationData {\r\n        const urlTree = router.parseUrl(path);\r\n        const options: NavigationDataExtras = {\r\n            fragment: urlTree.fragment,\r\n            queryParams: urlTree.queryParams\r\n        };\r\n        urlTree.fragment = null;\r\n        urlTree.queryParams = {};\r\n        const rootPath = urlTree.toString();\r\n        const rootPathTrimmed = Navigation.trimSlash(rootPath);\r\n        const commands: string[] = rootPathTrimmed === '' ? [''] : rootPathTrimmed.split('/');\r\n        for (let index = 0; index < commands.length; index++) {\r\n            // decodeURI to passing parameters to module path.\r\n            commands[index] = decodeURI(commands[index]);\r\n        }\r\n\r\n        return { commands, options };\r\n    }\r\n\r\n    /**\r\n     * Get the navigation queryParams on shell/module.\r\n     *\r\n     * @param dataExtras The navigation data extras object.\r\n     * @returns the params data for router navigation call.\r\n     */\r\n    public static getUrlQueryParams(dataExtras: NavigationDataExtras): Params {\r\n        const params: Params = {};\r\n        if (dataExtras.fragment) {\r\n            params.fragment = dataExtras.fragment;\r\n        }\r\n\r\n        if (dataExtras.queryParams && Object.keys(dataExtras.queryParams).length > 0) {\r\n            params.queryParams = JSON.stringify(dataExtras.queryParams);\r\n        }\r\n\r\n        return params;\r\n    }\r\n\r\n    /**\r\n     * Get serialized the data extras object into url string.\r\n     *\r\n     * @param options the navigation data extras object.\r\n     * @returns the URL string.\r\n     */\r\n    public static getUrlSerializedDataExtras(options: NavigationDataExtras): string {\r\n        let extra = '';\r\n        if (options.queryParams) {\r\n            let keys = Object.keys(options.queryParams);\r\n            keys = keys.sort();\r\n            keys.forEach((key, index) => extra += `${index === 0 ? '?' : '&'}${key}=${options.queryParams[key]}`);\r\n        }\r\n\r\n        if (options.fragment) {\r\n            extra += `#${options.fragment}`;\r\n        }\r\n\r\n        return extra;\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NotificationConnection } from '@microsoft/windows-admin-center-sdk/core/notification/notification-connection';\r\nimport { RpcService } from './rpc.service';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Notifications @id sme-dev-guide-shell-services-notifications}\r\n *\r\n * @overview\r\n * @file {@filepath ./notifications/examples/overview.md}\r\n *\r\n * @example {@label In progress notification @id in-progress-notification}\r\n * @file {@filename notifications-in-progress.ts @filepath ./notifications/examples/notifications-in-progress.ts}\r\n *\r\n * @example {@label Alert notification @id alert-notifications}\r\n * @file {@filename notifications-alert.ts @filepath ./notifications/examples/notifications-alert.ts}\r\n *\r\n * @example {@label Information notification @id information-notification}\r\n * @file {@filename notifications-information.ts @filepath ./notifications/examples/notifications-information.ts}\r\n *\r\n * @example {@label Long running notification @id long-running-notification}\r\n * @file {@filename notifications-long-running.ts @filepath ./notifications/examples/notifications-long-running.ts}\r\n *\r\n * @example {@label Long running with disabled notification @id long-running-disable-notification}\r\n * @file {@filename notifications-long-running-disable.ts @filepath ./notifications/examples/notifications-long-running-disable.ts}\r\n */\r\n/**\r\n * Notification service class.\r\n */\r\n@Injectable()\r\nexport class NotificationService extends NotificationConnection {\r\n    /**\r\n     * Initializes a new instance of the NotificationConnectionService class.\r\n     *\r\n     * @param rpcService the RPC service.\r\n     * @param connectionService the connection service.\r\n     */\r\n    constructor(rpcService: RpcService) {\r\n        super(rpcService);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SettingsManager } from '@microsoft/windows-admin-center-sdk/core/data/settings-manager';\r\nimport { GatewayService } from './gateway.service';\r\nimport { RpcService } from './rpc.service';\r\n\r\n@Injectable()\r\n/**\r\n * The Settings service class.\r\n */\r\nexport class SettingsService extends SettingsManager {\r\n    /**\r\n     * Initializes a new instance of the SettingsService class.\r\n     *\r\n     * @param rpcService the rpc service.\r\n     * @param gatewayService the gateway service.\r\n     */\r\n    constructor(rpcService: RpcService, gatewayService: GatewayService) {\r\n        super(rpcService, gatewayService);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SshStream } from '@microsoft/windows-admin-center-sdk/core/data/ssh-stream';\r\nimport { AuthorizationService } from './authorization.service';\r\nimport { WebsocketStreamService } from './websocket-stream.service';\r\n\r\n@Injectable()\r\n/**\r\n * The SSH Stream service class.\r\n */\r\nexport class SshStreamService extends SshStream {\r\n    /**\r\n     * Initializes a new instance of the SshStreamService class.\r\n     *\r\n     * @param websocketStreamService the websocket stream class instance injected.\r\n     * @param authorizationService the authorization manager service class instance injected.\r\n     */\r\n    constructor(websocketStreamService: WebsocketStreamService, authorizationService: AuthorizationService) {\r\n        super(websocketStreamService, authorizationService);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { WorkItemConnection } from '@microsoft/windows-admin-center-sdk/core/notification/work-item-connection';\r\nimport { GatewayService } from './gateway.service';\r\nimport { NodeService } from './node.service';\r\nimport { NotificationService } from './notification.service';\r\nimport { RpcService } from './rpc.service';\r\n\r\n/**\r\n * Work item service class.\r\n */\r\n@Injectable()\r\nexport class WorkItemService extends WorkItemConnection {\r\n    /**\r\n     * Initializes a new instance of the WorkItemService class.\r\n     *\r\n     * @param rpcService the RPC service.\r\n     * @param nodeService the Node service.\r\n     * @param gatewayService the gateway service.\r\n     * @param notificationService the notification service.\r\n     */\r\n    constructor(\r\n        rpcService: RpcService,\r\n        nodeService: NodeService,\r\n        gatewayService: GatewayService,\r\n        notificationService: NotificationService) {\r\n        super(rpcService, gatewayService, nodeService, notificationService);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AppContext } from '@microsoft/windows-admin-center-sdk/core/data/app-context';\r\nimport { PerformanceTracker } from '@microsoft/windows-admin-center-sdk/core/performance/performance-tracker';\r\nimport { DialogService } from '../controls/dialog/dialog.service';\r\nimport { SvgResource } from '../directives/svg/svg-resource';\r\nimport { ActiveConnectionService } from './active-connection.service';\r\nimport { AuthorizationService } from './authorization.service';\r\nimport { AzureManagerService } from './azure-manager.service';\r\nimport { CimStreamService } from './cim-stream.service';\r\nimport { CimService } from './cim.service';\r\nimport { ConnectionService } from './connection.service';\r\nimport { CredSSPManagerService } from './credssp-manager.service';\r\nimport { FileTransferService } from './file-transfer.service';\r\nimport { FrameService } from './frame.service';\r\nimport { GatewayService } from './gateway.service';\r\nimport { Navigation } from './navigation';\r\nimport { NavigationService, NavigatorServiceOptions } from './navigation.service';\r\nimport { NodeService } from './node.service';\r\nimport { NotificationService } from './notification.service';\r\nimport { PowerShellStreamService } from './powershell-stream.service';\r\nimport { PowerShellService } from './powershell.service';\r\nimport { ResourceService } from './resource.service';\r\nimport { RpcService } from './rpc.service';\r\nimport { SettingsService } from './settings.service';\r\nimport { SshStreamService } from './ssh-stream.service';\r\nimport { WorkItemService } from './work-item.service';\r\n\r\n/**\r\n * The initialization context to AppModule.\r\n */\r\nexport interface AppModuleInitialization {\r\n    /**\r\n     * The svg resource to register.\r\n     */\r\n    svgResource?: any;\r\n}\r\n\r\n/**\r\n * The initialization context to AppComponent.\r\n */\r\nexport interface AppComponentInitialization {\r\n    /**\r\n     * The dialog service.\r\n     */\r\n    dialogService?: DialogService;\r\n\r\n    /**\r\n     * The navigation service instance.\r\n     */\r\n    navigationService?: NavigationService;\r\n\r\n    /**\r\n     * The options for navigation service.\r\n     */\r\n    navigatorServiceOptions?: NavigatorServiceOptions;\r\n}\r\n\r\n@Injectable()\r\n/**\r\n * The application context service class.\r\n */\r\nexport class AppContextService extends AppContext {\r\n    private internalResourceService: ResourceService;\r\n    private internalAuthorizationService: AuthorizationService;\r\n    private internalNavigationService: NavigationService;\r\n\r\n    /**\r\n     * Initializes a new instance of the AppContextService class.\r\n     *\r\n     * @param activeConnectionService the active connection service.\r\n     * @param authorizationService the authorization service.\r\n     * @param cimService the cim service.\r\n     * @param cimStreamService the cim stream service.\r\n     * @param connectionService the connection service.\r\n     * @param fileTransferService the file transfer service.\r\n     * @param frameService the frame of window and dialog service.\r\n     * @param gatewayService the gateway service.\r\n     * @param nodeService the node service.\r\n     * @param notificationService the notification service.\r\n     * @param powerShellService the powerShell service.\r\n     * @param powerShellStreamService the powerShell stream service.\r\n     * @param resourceService the resource service.\r\n     * @param rpcService the Rpc service.\r\n     * @param settingsService the settingsService service.\r\n     * @param sshStreamService the SSH stream service.\r\n     * @param workItemService the work item service.\r\n     */\r\n    constructor(\r\n        activeConnectionService: ActiveConnectionService,\r\n        authorizationService: AuthorizationService,\r\n        azureManagerService: AzureManagerService,\r\n        cimService: CimService,\r\n        cimStreamService: CimStreamService,\r\n        connectionService: ConnectionService,\r\n        credSSPManagerService: CredSSPManagerService,\r\n        fileTransferService: FileTransferService,\r\n        frameService: FrameService,\r\n        gatewayService: GatewayService,\r\n        nodeService: NodeService,\r\n        notificationService: NotificationService,\r\n        powerShellService: PowerShellService,\r\n        powerShellStreamService: PowerShellStreamService,\r\n        resourceService: ResourceService,\r\n        rpcService: RpcService,\r\n        settingsService: SettingsService,\r\n        sshStreamService: SshStreamService,\r\n        workItemService: WorkItemService\r\n    ) {\r\n        super(\r\n            activeConnectionService,\r\n            authorizationService,\r\n            azureManagerService,\r\n            cimService,\r\n            cimStreamService,\r\n            connectionService,\r\n            credSSPManagerService,\r\n            fileTransferService,\r\n            frameService,\r\n            gatewayService,\r\n            nodeService,\r\n            notificationService,\r\n            powerShellService,\r\n            powerShellStreamService,\r\n            resourceService,\r\n            rpcService,\r\n            settingsService,\r\n            sshStreamService,\r\n            workItemService\r\n        );\r\n\r\n        this.internalResourceService = resourceService;\r\n        this.internalAuthorizationService = authorizationService;\r\n    }\r\n\r\n    /**\r\n     * Initialize the app context resource from AppModule constructor.\r\n     *\r\n     * @param options the app module initialization options.\r\n     */\r\n    public initializeModule(options: AppModuleInitialization): void {\r\n        PerformanceTracker.appModuleInitialized();\r\n        if (options.svgResource) {\r\n            // register SVG resources to resource service.\r\n            SvgResource.buildRegister(this.internalResourceService, options.svgResource);\r\n        }\r\n\r\n        // turn off browser history-push.\r\n        // RouterLink click in html will push history to the browser at default.\r\n        Navigation.turnOffHistory();\r\n    }\r\n\r\n    /**\r\n     * Register dialog service with dialog id in navigation service\r\n     * @param dialogService dialog service to be registered\r\n     * @param dialogId dialog id associated\r\n     */\r\n    public registerDialogService(dialogService: DialogService, dialogId: string): void {\r\n        this.internalNavigationService.registerDialogService(dialogService, dialogId);\r\n    }\r\n\r\n    /**\r\n     * Initializes the app context resource from ngInit call in AppComponent.\r\n     * (From module side only, do not call from shell)\r\n     * @param options the App context initialization options.\r\n     */\r\n    public ngInit(options: AppComponentInitialization): void {\r\n        PerformanceTracker.appComponentInitialized();\r\n        if (options.navigationService) {\r\n            options.navigationService.initialize(options.navigatorServiceOptions);\r\n            this.internalNavigationService = options.navigationService;\r\n        }\r\n\r\n        this.credSSPManager.initialize(this);\r\n        this.azureManagerService.initialize();\r\n    }\r\n\r\n    /**\r\n     * Destroy the app context resource from ngDestroy call in AppComponent.\r\n     * (From module side only, do not call from shell)\r\n     */\r\n    public ngDestroy(): void {\r\n        if (this.internalNavigationService) {\r\n            this.internalNavigationService.shutdown();\r\n        }\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { GatewayInventoryCache } from '@microsoft/windows-admin-center-sdk/core/shared/gateway-inventory/gateway-inventory-cache';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, map, take } from 'rxjs/operators';\r\nimport { AppContextService } from '../service/app-context.service';\r\n\r\nexport interface InstallationTypeGuardData {\r\n    installationTypeGuardConfig: {\r\n        installationTypes: string | string[];\r\n        redirectTo: string;\r\n    };\r\n}\r\n\r\n@Injectable()\r\nexport class InstallationTypeGuardService implements CanActivate {\r\n    /**\r\n    * Initializes a new instance of the InstallationTypeGuardService class.\r\n    * @param router the router.\r\n    */\r\n    constructor(private router: Router, private appContext: AppContextService) { }\r\n    /**\r\n    * Guard against navigating unless installation type supports it\r\n    * @param route the current route snapshot\r\n    * @param state the current router state snapshot\r\n    */\r\n    public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\r\n        const routeData = <InstallationTypeGuardData>route.data;\r\n\r\n        if (!routeData || !routeData.installationTypeGuardConfig) {\r\n            return of(true);\r\n        }\r\n\r\n        let installationTypes = routeData.installationTypeGuardConfig.installationTypes || [];\r\n        if (!Array.isArray(installationTypes)) {\r\n            installationTypes = [installationTypes];\r\n        }\r\n\r\n        const redirectTo = routeData.installationTypeGuardConfig.redirectTo;\r\n        const gatewayCache = new GatewayInventoryCache(this.appContext);\r\n\r\n        return gatewayCache.query({})\r\n            .pipe(take(1),\r\n                map(inventory => {\r\n                    if (inventory) {\r\n                        if ((<string[]>installationTypes).some(t => t === inventory.instance.installationType)) {\r\n                            return true;\r\n                        }\r\n\r\n                        this.router.navigateByUrl(redirectTo);\r\n                        return false;\r\n                    } else {\r\n                        Logging.logError('InstallationTypeGuardService', 'GatewayInventoryCache is null');\r\n                        this.router.navigateByUrl(redirectTo);\r\n                        return false;\r\n                    }\r\n                }),\r\n                catchError((error) => {\r\n                    Logging.logError('InstallationTypeGuardService', error.message);\r\n                    this.router.navigateByUrl(redirectTo);\r\n                    return of(false);\r\n                })\r\n            );\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { DevGuardService } from './dev.guard.service';\r\nimport { ExperimentGuardService } from './experiment.guard.service';\r\nimport { InstallationTypeGuardService } from './installation-type.guard.service';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule\r\n    ],\r\n    providers: [\r\n        DevGuardService,\r\n        ExperimentGuardService,\r\n        InstallationTypeGuardService\r\n    ]\r\n})\r\nexport class GuardsModule {}\r\n","/**\r\n * export all public APIs.\r\n */\r\nexport { DevGuardService } from './dev.guard.service';\r\nexport { GuardsModule } from './guards.module';\r\nexport { ExperimentGuardService, ExperimentGuardData } from './experiment.guard.service';\r\nexport { BaseGuardData } from './guard-data';\r\nexport { InstallationTypeGuardService } from './installation-type.guard.service';\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\n\r\n/**\r\n * @smeDoc {@label BooleanConverterPipe @id smeBooleanConverter}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/boolean-converter-overview.md}\r\n *\r\n * @example {@label Example Boolean Converter @id boolean-converter-example }\r\n * @file {@filename component.html @filepath ./examples/boolean-converter-example.component.html}\r\n * @file {@filename component.ts @filepath ./examples/boolean-converter-example.component.ts}\r\n */\r\n@Pipe({\r\n    name: 'smeBooleanConverter'\r\n})\r\nexport class BooleanConverterPipe implements PipeTransform {\r\n    public transform(value: boolean, args: Map<boolean, string>): string {\r\n        if (args) {\r\n            const stringValue = args.get(!!value);\r\n\r\n            if (stringValue !== undefined) {\r\n                return stringValue;\r\n            } else {\r\n                Logging.log({\r\n                    level: LogLevel.Warning,\r\n                    message: `Boolean value for ${value} is ${!!value}} but it is not defined in map ${args}.`,\r\n                    params: {\r\n                        args: args,\r\n                        stringValue: stringValue,\r\n                        value: value\r\n                    },\r\n                    source: 'BooleanConverterPipe'\r\n                });\r\n            }\r\n        } else {\r\n            Logging.log({\r\n                level: LogLevel.Warning,\r\n                message: `No map defined to translate value ${value}.`,\r\n                params: {\r\n                    args: args,\r\n                    value: value\r\n                },\r\n                source: 'BooleanConverterPipe'\r\n            });\r\n        }\r\n\r\n        return value.toString();\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { BooleanConverterPipe } from './boolean-converter-pipe';\r\n\r\n@NgModule({\r\n    declarations: [BooleanConverterPipe],\r\n    imports: [CommonModule],\r\n    exports: [BooleanConverterPipe],\r\n    providers: [BooleanConverterPipe]\r\n})\r\nexport class BooleanConverterPipeModule {\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nconst byteUnit = 'B';\r\n\r\n/**\r\n * Methods for converting media units (i.e. bytes) into display formats.\r\n */\r\nexport module MediaConversion2 {\r\n    'use strict';\r\n\r\n    const iecUnitMap: { [index: number]: string } = {\r\n        0: byteUnit,\r\n        1: 'KB',\r\n        2: 'MB',\r\n        3: 'GB',\r\n        4: 'TB',\r\n        5: 'PB',\r\n        6: 'XB',\r\n        7: 'ZB',\r\n        8: 'YB'\r\n    };\r\n\r\n    /**\r\n     * The base of byte representation to use in conversion.\r\n     */\r\n    export enum Base {\r\n        Binary = 1024,\r\n        Decimal = 1000\r\n    }\r\n\r\n    /**\r\n     * The units used in conversion.\r\n     */\r\n    enum Unit {\r\n        Byte = 0,\r\n\r\n        // SI Prefix\r\n        Kilobyte = 1,\r\n        Megabyte = 2,\r\n        Gigabyte = 3,\r\n        Terabyte = 4,\r\n        Petabyte = 5,\r\n        Exabyte = 6,\r\n        Zettabyte = 7,\r\n        Yottabyte = 8,\r\n\r\n        // IEC Prefix\r\n        Kibibyte = 1,\r\n        Mebibyte = 2,\r\n        Gibibyte = 3,\r\n        Tebibyte = 4,\r\n        Pebibyte = 5,\r\n        Exbiyte = 6,\r\n        Zebibyte = 7,\r\n        Yebibyte = 8\r\n    }\r\n\r\n    /**\r\n     * Converts the supplied bytes into the appropriate display string.\r\n     *\r\n     * @param bytes The raw number of bytes.\r\n     * @param baseNumber The byte number representation base to use in conversion.\r\n     */\r\n    export function getConvertedValue(bytes: number, base: MediaConversion2.Base): string {\r\n        if (bytes != null && !isNaN(bytes)) {\r\n            let unit = getUnit(bytes, base);\r\n            let result = convertValue(bytes, base, unit, false);\r\n\r\n            const accpetableDifference = 1;\r\n            if (base - result < accpetableDifference ) {\r\n                result = 1.0; // set to 1 whole unit\r\n                unit++; // increase the unit to next highest\r\n            }\r\n\r\n            const displayUnit = iecUnitMap[unit];\r\n            if (displayUnit) {\r\n                if (displayUnit === byteUnit) {\r\n                    // round so we cannot have a fraction of a byte\r\n                    result = MsftSme.round(result);\r\n                }\r\n\r\n                return '{0} {1}'.format(result, displayUnit);\r\n            }\r\n\r\n            return '{0} {1}'.format(bytes, byteUnit);\r\n        }\r\n\r\n        return '-';\r\n    }\r\n\r\n    /**\r\n     * Converts the raw bytes into the number corresponding to it's appropriate display value.\r\n     *\r\n     * @param bytes The raw number of bytes.\r\n     * @param base the byte representation base to use in conversion.\r\n     * @param unit The desired unit of conversion.\r\n     * @param floor Whether or not to floor the result.\r\n     */\r\n    function convertValue(bytes: number, base: Base, unit: Unit, floor?: boolean): number {\r\n        const result = bytes / Math.pow(base, unit);\r\n        if (floor) {\r\n            return Math.floor(result);\r\n        }\r\n\r\n        let precisionDigits: number;\r\n\r\n        if (result >= 1000) {\r\n            precisionDigits = 4;\r\n        } else {\r\n            precisionDigits = 3;\r\n        }\r\n\r\n        return parseFloat(result.toPrecision(precisionDigits));\r\n    }\r\n\r\n    /**\r\n     * Gets the appropriate unit for a number of raw bytes in a particular base.\r\n     *\r\n     * @param bytes The raw number of bytes.\r\n     * @param base The byte representation base to use in conversion.\r\n     */\r\n    function getUnit(bytes: number, base: Base): Unit {\r\n        if (bytes === 0) {\r\n            return <Unit>bytes;\r\n        }\r\n\r\n        let iterator = 0;\r\n        while ((bytes / Math.pow(base, iterator)) >= base) {\r\n            iterator++;\r\n        }\r\n\r\n        return <Unit>iterator;\r\n    }\r\n}\r\n\r\n/**\r\n * @smeDoc {@label ByteConverterPipe @id smeByteUnitConverter}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/byte-converter-overview.md}\r\n *\r\n * @example {@label Example byte Converter @id byte-converter-example }\r\n * @file {@filename component.html @filepath ./examples/byte-converter-example.component.html}\r\n * @file {@filename component.ts @filepath ./examples/byte-converter-example.component.ts}\r\n */\r\n@Pipe({\r\n    name: 'smeByteUnitConverter'\r\n})\r\nexport class ByteUnitConverterPipe implements PipeTransform {\r\n    public transform(value: number, baseNumber: number): string {\r\n        const base = <MediaConversion2.Base>baseNumber;\r\n        if (value < 0 || typeof value !== 'number') {\r\n            return '-';\r\n        }\r\n\r\n        return MediaConversion2.getConvertedValue(value, base);\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ByteUnitConverterPipe } from './byte-unit-converter-pipe';\r\n\r\n@NgModule({\r\n    declarations: [ByteUnitConverterPipe],\r\n    imports: [CommonModule],\r\n    exports: [ByteUnitConverterPipe],\r\n    providers: [ByteUnitConverterPipe]\r\n})\r\nexport class ByteUnitConverterPipeModule {\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Globalization } from '@microsoft/windows-admin-center-sdk/core/data/globalization';\r\n\r\n@Pipe({ name: 'smeDate' })\r\nexport class DateConverterPipe implements PipeTransform {\r\n    public transform(date: Date, format?: string): string {\r\n        if (!date) {\r\n            return null;\r\n        }\r\n\r\n        let checkDate: Date;\r\n        try {\r\n            // input date may be just string or number, make sure it converted to Date object\r\n            checkDate = new Date(date);\r\n        } catch {\r\n            return null;\r\n        }\r\n\r\n        return getFormatDate(format, checkDate);\r\n    }\r\n}\r\n\r\n@Pipe({ name: 'smeLocalDate' })\r\n/**\r\n * Convert UTC time to local time\r\n * Input date is UTC time\r\n */\r\nexport class LocalDateConverterPipe implements PipeTransform {\r\n    public transform(utcDate: Date, format?: string): string {\r\n        if (!utcDate) {\r\n            return null;\r\n        }\r\n\r\n        let checkDate: Date;\r\n        let localDate: Date;\r\n        try {\r\n            // input utcDate may be just string or number, make sure it converted to Date object\r\n            checkDate = new Date(utcDate);\r\n            localDate = new Date(checkDate.getTime() - checkDate.getTimezoneOffset() * 60 * 1000);\r\n        } catch {\r\n            return null;\r\n        }\r\n\r\n        return getFormatDate(format, localDate);\r\n    }\r\n}\r\n\r\nfunction getFormatDate(format: string, date: Date): string {\r\n    const formatLCase = format ? format.toLowerCase() : '';\r\n    switch (formatLCase) {\r\n        case 'full':\r\n            return Globalization.fullTime(date);\r\n        case 'medium':\r\n            return Globalization.dateTimeOnly(date);\r\n        case 'short':\r\n            return Globalization.dateTimeOnlyShort(date);\r\n        case 'date':\r\n            return Globalization.dateOnly(date);\r\n        case 'time':\r\n            return Globalization.timeOnly(date);\r\n        default:\r\n            return Globalization.fullTime(date);\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { DateConverterPipe, LocalDateConverterPipe } from './date-converter-pipe';\r\n\r\n@NgModule({\r\n    declarations: [DateConverterPipe, LocalDateConverterPipe],\r\n    exports: [DateConverterPipe, LocalDateConverterPipe],\r\n    providers: [DateConverterPipe, LocalDateConverterPipe]\r\n})\r\nexport class DateConverterPipeModule {\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\n\r\nexport type EnumLookupType = 'raw' | 'localized';\r\n\r\n/**\r\n * Interface defining extended enum functionality\r\n */\r\nexport interface ExtendedEnum {\r\n    enumId: string;\r\n    values?: Number[];\r\n    toLocaleString?: (type: number) => string;\r\n    toString?: (type: number) => string;\r\n    compare?: (a: number, b: number) => number;\r\n}\r\n\r\n/**\r\n * @smeDoc {@label EnumConverterPipe @id smeEnumConverter}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/enum-converter-overview.md}\r\n *\r\n * @example {@label Example Enum Converter @id enum-converter-example }\r\n * @file {@filename component.html @filepath ./examples/enum-converter-example.component.html}\r\n * @file {@filename component.ts @filepath ./examples/enum-converter-example.component.ts}\r\n *\r\n * @example {@label Example Color Enum Converter @id color-enum-color-converter }\r\n * @file {@filename color.ts @filepath ./examples/enum-converter-example-color.ts}\r\n * @file {@filename color.component.html @filepath ./examples/enum-converter-example-color.component.html}\r\n * @file {@filename color.component.ts @filepath ./examples/enum-converter-example-color.component.ts}\r\n */\r\n@Pipe({\r\n    name: 'smeEnumConverter'\r\n})\r\nexport class EnumConverterPipe implements PipeTransform {\r\n\r\n    private static enums = new Map<string, ExtendedEnum>();\r\n\r\n    /**\r\n     * Registers an Extended enum for use with this pipe\r\n     */\r\n    public static registerEnum(extendedEnum: ExtendedEnum) {\r\n        EnumConverterPipe.enums.set(extendedEnum.enumId, extendedEnum);\r\n    }\r\n\r\n    /**\r\n     * Angular pipe transform implementation\r\n     * @param value the current value being piped in\r\n     * @param lookupMap a map to lookup a relevant string for the current value\r\n     */\r\n    public transform(value: number, lookupMap: Map<number, string>): string;\r\n    /**\r\n     * Angular pipe transform implementation\r\n     * @param value the current value being piped in\r\n     * @param enumId ths id of the extended enum to use for value translation\r\n     * @param lookupType the type of lookup to perform using the extended enum\r\n     */\r\n    public transform(value: number, enumId: string, lookupType: EnumLookupType): string;\r\n    public transform(value: number, lookupMapOrEnumId: Map<number, string> | string, lookupType?: EnumLookupType): string {\r\n        if (MsftSme.isNullOrUndefined(value) || isNaN(value)) {\r\n            return null;\r\n        }\r\n\r\n        if (!lookupMapOrEnumId) {\r\n            Logging.log({\r\n                level: LogLevel.Warning,\r\n                message: `No map or enum id defined to translate value ${value}`,\r\n                params: {\r\n                    lookupMapOrEnumId: lookupMapOrEnumId,\r\n                    value: value\r\n                },\r\n                source: 'EnumConverterPipe'\r\n            });\r\n            return value.toString();\r\n        }\r\n\r\n        if (typeof lookupMapOrEnumId === 'string') {\r\n            return this.transformEnumId(value, lookupMapOrEnumId, lookupType || 'localized');\r\n        } else {\r\n            return this.transformLookupMap(value, lookupMapOrEnumId);\r\n        }\r\n\r\n    }\r\n\r\n    /**\r\n     * Translates a value using a registered extended enum\r\n     * @param value the current value being piped in\r\n     * @param enumId ths id of the extended enum to use for value translation\r\n     * @param lookupType the type of lookup to perform using the extended enum\r\n     */\r\n    private transformEnumId(value: number, enumId: string, lookupType: EnumLookupType): string {\r\n        const extendedEnum = EnumConverterPipe.enums.get(enumId);\r\n        if (!MsftSme.isNullOrUndefined(extendedEnum)) {\r\n            if (lookupType === 'localized' && extendedEnum.toLocaleString) {\r\n                return extendedEnum.toLocaleString(value);\r\n            }\r\n            if (extendedEnum.toString) {\r\n                return extendedEnum.toString(value);\r\n            }\r\n        }\r\n\r\n        return value.toString();\r\n    }\r\n\r\n    /**\r\n     * Transforms the pipe value from the provided lookup map\r\n     * @param value the piped value\r\n     * @param lookupMap the map to lookup the value\r\n     */\r\n    private transformLookupMap(value: number, lookupMap: Map<number, string>): string {\r\n        const stringValue = lookupMap.get(value);\r\n        if (stringValue !== undefined) {\r\n            return stringValue;\r\n        } else {\r\n            Logging.log({\r\n                level: LogLevel.Warning,\r\n                message: `Value '${value}' is not defined in map ${lookupMap}`,\r\n                params: {\r\n                    args: lookupMap,\r\n                    stringValue: stringValue,\r\n                    value: value\r\n                },\r\n                source: 'EnumConverterPipe.transformLookupMap'\r\n            });\r\n            return value.toString();\r\n        }\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { EnumConverterPipe } from './enum-converter-pipe';\r\n\r\n@NgModule({\r\n  declarations: [EnumConverterPipe],\r\n  imports: [CommonModule],\r\n  exports: [EnumConverterPipe],\r\n  providers: [EnumConverterPipe]\r\n})\r\nexport class EnumConverterPipeModule {\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n    name: 'smeFilter',\r\n    pure: false\r\n})\r\n/**\r\n * This pipe filters an array and returns the result.\r\n * Normally we would get an exception if we simply returned the transformed\r\n * array as it causes an additional change detection cycle in dev mode.\r\n *\r\n * To avoid this we always return the same array an merely add remove items from it\r\n * This is not a great option for large arrays, but will work fine for small ones.\r\n *\r\n * See the following stack overflow question for more details\r\n * http://stackoverflow.com/a/34497504/7292792\r\n */\r\nexport class FilterPipe implements PipeTransform {\r\n    private tmp = [];\r\n    public transform(value: Array<any>, filter: string | MsftSme.Func1<any, boolean>, not: any = false): Array<any> {\r\n        this.tmp.length = 0;\r\n        if (value && Array.isArray(value)) {\r\n            let filterFunc: MsftSme.Func1<any, boolean> = <MsftSme.Func1<any, boolean>>filter;\r\n            if (typeof filter === 'string') {\r\n                const prop = filter;\r\n                filterFunc = item => item[prop];\r\n            }\r\n            if (not) {\r\n                const originalFunc = filterFunc;\r\n                filterFunc = item => !originalFunc(item);\r\n            }\r\n            const arr = value.filter(filterFunc);\r\n            this.tmp.push(...arr);\r\n        }\r\n        return this.tmp;\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FilterPipe } from './filter-pipe';\r\n\r\n@NgModule({\r\n  declarations: [FilterPipe],\r\n  imports: [CommonModule],\r\n  exports: [FilterPipe],\r\n  providers: [FilterPipe]\r\n})\r\nexport class FilterPipeModule {\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nexport interface FormatPipeLink {\r\n    text: string;\r\n    href: string;\r\n    target?: string;\r\n}\r\n\r\nexport type FormatPipeValue = string | FormatPipeLink;\r\n\r\n/**\r\n * @smeDoc {@label FormatPipe @id smeFormat}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/format-overview.md}\r\n *\r\n * @example {@label Example enum Converter @id format-example }\r\n * @file {@filename component.html @filepath ./examples/format-example.component.html}\r\n * @file {@filename component.ts @filepath ./examples/format-example.component.ts}\r\n */\r\n@Pipe({ name: 'smeFormat' })\r\nexport class FormatPipe implements PipeTransform {\r\n    public transform(format: string, values?: FormatPipeValue | FormatPipeValue[]): string {\r\n        if (!format || MsftSme.isNullOrUndefined(values) || MsftSme.arrayEquals(<FormatPipeValue[]>values, [])) {\r\n            return format;\r\n        }\r\n\r\n        if (!Array.isArray(values)) {\r\n            values = [values];\r\n        }\r\n\r\n        const transformedValues = values.map(value => {\r\n            const linkValue = <FormatPipeLink>value;\r\n            if (linkValue.href) {\r\n                const targetAttr = linkValue.target ? `target=\"${linkValue.target}\"` : '';\r\n                return `<a class=\"sme-link\" ${targetAttr} href=\"${linkValue.href}\">${linkValue.text}</a>`;\r\n            } else {\r\n                return value;\r\n            }\r\n        });\r\n\r\n        return format.format.apply(format, transformedValues);\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormatPipe } from './format-pipe';\r\n\r\n@NgModule({\r\n    declarations: [FormatPipe],\r\n    imports: [CommonModule],\r\n    exports: [FormatPipe],\r\n    providers: [FormatPipe]\r\n})\r\nexport class FormatPipeModule {\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * @smeDoc {@label HighlightPipe @id smeHighlight}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/highlight-overview.md}\r\n *\r\n * @example {@label Example enum Converter @id highlight-example }\r\n * @file {@filename component.html @filepath ./examples/highlight-example.component.html}\r\n * @file {@filename component.ts @filepath ./examples/highlight-example.component.ts}\r\n */\r\n@Pipe({ name: 'smeHighlight' })\r\nexport class HighlightPipe implements PipeTransform {\r\n  public transform(attribute, search: string, highlightClass?: string): string {\r\n    if (search === undefined || search === null || search === '' || attribute == null) {\r\n      return attribute;\r\n    }\r\n\r\n    highlightClass = highlightClass || 'sme-highlight';\r\n\r\n    // escape regex control chars\r\n    // *.exe searched literally instead of giving error for invalid regular expression\r\n    const pattern = search.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\r\n\r\n    // g is global modifier for all matches\r\n    // i is case-insensitive modifier\r\n    const regex = new RegExp(pattern, 'gi');\r\n\r\n    const text = attribute.toString();\r\n    return text.replace(regex, (match) => `<mark class=\"${highlightClass}\">${match}</mark>`);\r\n  }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { HighlightPipe } from './highlight-pipe';\r\n\r\n@NgModule({\r\n    declarations: [HighlightPipe],\r\n    imports: [CommonModule],\r\n    exports: [HighlightPipe],\r\n    providers: [HighlightPipe]\r\n})\r\nexport class HighlightPipeModule {\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Strings } from '../generated/strings';\r\n\r\n/**\r\n * @smeDoc {@label Yesno-converterPipe @id smeBooleanToYesNoConverter}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/yesno-converter-overview.md}\r\n *\r\n * @example {@label Example enum Converter @id yesno-converter-example }\r\n * @file {@filename component.html @filepath ./examples/yesno-converter-example.component.html}\r\n * @file {@filename component.ts @filepath ./examples/yesno-converter-example.component.ts}\r\n */\r\n@Pipe({\r\n    name: 'smeBooleanToYesNoConverter'\r\n})\r\nexport class YesNoConverterPipe implements PipeTransform {\r\n\r\n    private strings = MsftSme.getStrings<Strings>();\r\n\r\n    public transform(value: boolean): string {\r\n        return value ? this.strings.MsftSmeShell.Angular.Common.yes : this.strings.MsftSmeShell.Angular.Common.no;\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { YesNoConverterPipe } from './yesno-converter-pipe';\r\n\r\n@NgModule({\r\n    declarations: [YesNoConverterPipe],\r\n    imports: [CommonModule],\r\n    exports: [YesNoConverterPipe],\r\n    providers: [YesNoConverterPipe]\r\n})\r\nexport class YesNoConverterPipeModule {\r\n}\r\n","import { Component, EventEmitter, HostBinding, Injector, Input, Output } from '@angular/core';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\n\r\n@Component({\r\n    selector: 'sme-backdrop',\r\n    templateUrl: './backdrop.component.html'\r\n})\r\nexport class BackdropComponent extends CoreBaseComponent {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'BackdropComponent';\r\n    }\r\n    /**\r\n     * The base dialog layer. Be aware that this value is also defined in layers.scss\r\n     */\r\n    private smeLayerDialog = 900;\r\n\r\n    @HostBinding('class.sme-position-left-unset')\r\n    @Input() public allowBackgroundInteraction = false;\r\n\r\n    @Input() public showBackdrop = true;\r\n\r\n    @Input() public level = 1;\r\n    @Output() public clicked: EventEmitter<void> = new EventEmitter<void>();\r\n    @HostBinding('style.z-index')\r\n    public get zIndex(): number {\r\n        return this.level + this.smeLayerDialog;\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * emits clicked event\r\n     */\r\n    public onClick() {\r\n        this.clicked.emit();\r\n    }\r\n\r\n    public getCssClass(): string {\r\n        const classes = [];\r\n\r\n        if (MsftSme.isShell() && !MsftSme.getValue<boolean>(MsftSme.self(), 'Environment.configuration.appBar.hide')) {\r\n            classes.push('sme-position-top-xxl sme-position-backdrop-fill-screen');\r\n        }\r\n\r\n        if (this.allowBackgroundInteraction && this.showBackdrop) {\r\n            classes.push('sme-position-left-unset');\r\n        }\r\n\r\n        return classes.join(' ');\r\n    }\r\n}\r\n","<div class=\"sme-position-inset-none sme-layout-fixed\" [ngClass]=\"getCssClass()\">\r\n  <div class=\"sme-position-inset-none sme-layout-fixed\" [ngClass]=\"getCssClass()\" (click)=\"onClick()\" [class.sme-scheme-backdrop-opaque]=\"showBackdrop\"></div>\r\n  <ng-content></ng-content>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { BackdropComponent } from './backdrop.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        BackdropComponent\r\n    ],\r\n    declarations: [\r\n        BackdropComponent\r\n    ],\r\n    imports: [\r\n        CommonModule\r\n    ]\r\n})\r\nexport class BackdropModule { }\r\n","import { Component } from '@angular/core';\r\n\r\n/**\r\n * The Message Dialog Component\r\n * @deprecated since 2/28/19. Please use '<header class=\"sme-tool-header\"><h3>Heading Content</h3></header>' instead\r\n */\r\n@Component({\r\n    selector: 'sme-tool-header',\r\n    templateUrl: './tool-header.component.html'\r\n})\r\nexport class ToolHeaderComponent {\r\n\r\n}\r\n","<div class=\"tool-header-box\">\r\n  <h4 class=\"tool-header\">\r\n    <ng-content></ng-content>\r\n  </h4>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ToolHeaderComponent } from './tool-header.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        ToolHeaderComponent\r\n    ],\r\n    declarations: [\r\n        ToolHeaderComponent\r\n    ],\r\n    imports: [\r\n        CommonModule\r\n    ]\r\n})\r\nexport class ToolHeaderModule { }\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'sme-idle',\r\n    template: '<div></div>'\r\n})\r\nexport class IdleComponent {\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { IdleComponent } from './idle.component';\r\n\r\n@NgModule({\r\n    declarations: [ IdleComponent ],\r\n    imports: [ CommonModule ],\r\n    exports: [ IdleComponent ]\r\n})\r\nexport class IdleModule { }\r\n","export interface DisabledChangedEvent extends CustomEvent<{ disabled: boolean }> { }\r\n\r\nexport namespace DisabledChangedEvent {\r\n\r\n    export const typeName = 'disabledChanged';\r\n\r\n    export function isDisabled(element: HTMLElement): boolean {\r\n        return element.getAttribute('disabled') !== 'false';\r\n    }\r\n\r\n    export function create(element: HTMLElement, disabled = DisabledChangedEvent.isDisabled(element)): DisabledChangedEvent {\r\n        const event = new CustomEvent(DisabledChangedEvent.typeName, {\r\n            detail: { disabled: disabled },\r\n            bubbles: false,\r\n            cancelable: true,\r\n            composed: true\r\n        });\r\n        return event;\r\n    }\r\n\r\n    export function dispatch(element: HTMLElement, event = DisabledChangedEvent.create(element)) {\r\n        element.dispatchEvent(event);\r\n    }\r\n}\r\n","import { EventEmitter, InjectionToken } from '@angular/core';\r\n\r\nexport interface Layout {\r\n    layoutChanged: EventEmitter<void>;\r\n    windowBreakpointChanged?: EventEmitter<void>;\r\n}\r\n\r\n/**\r\n * Injection token used to provide a {@link Layout} reference\r\n */\r\nexport const SME_LAYOUT_PROVIDER = new InjectionToken<Layout>('sme.layout');\r\n","import { ElementRef, TemplateRef } from '@angular/core';\r\nimport { TooltipPlacement } from './tooltip-placement';\r\n\r\n/**\r\n * Defines the various ways a tooltip can be shown. This is defined as a bitflag so we can support multiple options within one number\r\n * further additions here should follow this format (i.e. next enum entry would be 8)\r\n */\r\nexport enum TooltipShowMode {\r\n    Hover = 1,\r\n    Click = 2,\r\n    KeyboardFocus = 4,\r\n}\r\n\r\n/**\r\n * The options that define a tooltip\r\n */\r\nexport interface TooltipOptions {\r\n    targetid: string;\r\n    contentId: string;\r\n    title: string;\r\n    template: TemplateRef<any>;\r\n    context: any;\r\n    restoreFocusTo: HTMLElement;\r\n    placement: TooltipPlacement;\r\n    element: ElementRef;\r\n    onStateChanged: MsftSme.Action;\r\n    onWindowClick: MsftSme.Action;\r\n    showOn: TooltipShowMode;\r\n    shouldRead: boolean;\r\n    triggeredFrom: TooltipShowMode;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { TooltipHost } from './models/tooltip-host';\r\n\r\n@Injectable()\r\nexport class TooltipHostInstance {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    private static get logSourceName() {\r\n        return 'TooltipHostComponent';\r\n    }\r\n\r\n    /**\r\n     * public facing getter for the tooltip host\r\n     */\r\n    public static get activeHost(): TooltipHost {\r\n        if (!this.internalActiveHost) {\r\n            Logging.logError('TooltipHostInstance', 'Attempted to access TooltipHost before it was ready or it has already been destroyed.');\r\n        }\r\n        return this.internalActiveHost;\r\n    }\r\n\r\n    /**\r\n     * internal placeholder for the registered tooltip host\r\n     */\r\n    private static internalActiveHost: TooltipHost;\r\n\r\n    /**\r\n     * Registers the tooltip host with the service.\r\n     * @param component The tooltip host component.\r\n     */\r\n    public static register(host: TooltipHost): void {\r\n        // show a warning in dev mode\r\n        if (this.internalActiveHost && !MsftSme.self().Init.isProduction) {\r\n            // eslint-disable-next-line max-len\r\n            Logging.logWarning(this.logSourceName, 'Only one tooltip host should be registered (\"sme-ux\" component now does this for you). Search for and remove any instances of sme-tooltip-host in this project.');\r\n        }\r\n        this.internalActiveHost = host;\r\n    }\r\n\r\n    /**\r\n     * Unregisters the tooltip host with the service.\r\n     * @param component The tooltip host component.\r\n     */\r\n    public static unregister(host: TooltipHost): void {\r\n        if (this.activeHost === host) {\r\n            this.internalActiveHost = null;\r\n        }\r\n    }\r\n}\r\n","<div #tooltipContainer class=\"sme-tooltip sme-tooltip-position-bottom sme-layer-tooltip sme-shadow-tooltip\" [class.sme-screen-reader]=\"!options\"\r\n  (focusin)=\"onFocusChanged($event)\" (focusout)=\"onFocusChanged($event)\" (mouseenter)=\"onHoverChanged($event)\" (mouseleave)=\"onHoverChanged($event)\">\r\n  <div #tooltipPointer class=\"sme-tooltip-pointer\"></div>\r\n  <div class=\"sme-tooltip-pointer-cover\"></div>\r\n\r\n  <div class=\"sme-tooltip-content sme-focus-trap\" *ngIf=\"showNonAriaLiveContent\" [attr.role]=\"ariaRole\" [attr.aria-modal]=\"ariaModal\"\r\n    [id]=\"options.contentId\" [attr.aria-labelledby]=\"idBag.label\" [attr.aria-describedby]=\"idBag.description\">\r\n    <ng-container *ngIf=\"!!options.template\">\r\n      <ng-container smeTemplateOutlet [template]=\"options.template\" [data]=\"options.context\" [hostData]=\"hostData\">\r\n      </ng-container>\r\n    </ng-container>\r\n\r\n    <ng-container *ngIf=\"options.title\">\r\n      <p class=\"sme-font-label\" [id]=\"idBag.label\">\r\n        <span>{{options.title}}</span>\r\n      </p>\r\n    </ng-container>\r\n  </div>\r\n\r\n  <div aria-live=\"assertive\">\r\n    <div class=\"sme-tooltip-content\" *ngIf=\"showAriaLiveContent\" [attr.role]=\"ariaRole\" [attr.aria-modal]=\"ariaModal\"\r\n      [id]=\"options.contentId\" [attr.aria-labelledby]=\"idBag.label\" [attr.aria-describedby]=\"idBag.description\">\r\n      <p class=\"sme-font-label\" [id]=\"idBag.label\">\r\n        <span>{{options.title}}</span>\r\n      </p>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Component, ElementRef, HostListener, Injector, NgZone, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { TooltipHost } from './models/tooltip-host';\r\nimport { TooltipOptions, TooltipShowMode } from './models/tooltip-options';\r\nimport { TooltipHostInstance } from './tooltip-host-instance';\r\n\r\nexport interface TooltipMousePosition {\r\n    x: number;\r\n    y: number;\r\n}\r\n\r\n/**\r\n * Tooltip host component provides a host for tooltips.\r\n */\r\n@Component({\r\n    selector: 'sme-tooltip-host',\r\n    templateUrl: './tooltip-host.component.html'\r\n})\r\nexport class TooltipHostComponent extends CoreBaseComponent implements OnInit, OnDestroy, TooltipHost {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'TooltipHostComponent';\r\n    }\r\n\r\n    private static readonly SCREEN_EDGE_MARGIN = 16;\r\n\r\n    /**\r\n     * The element that contains and positions the tooltip\r\n     */\r\n    @ViewChild('tooltipContainer')\r\n    public tooltipContainer: ElementRef;\r\n\r\n    /**\r\n     * The element that is used to point to the target of the tooltip\r\n     */\r\n    @ViewChild('tooltipPointer')\r\n    public tooltipPointer: ElementRef;\r\n\r\n    /**\r\n     * The current tooltip options\r\n     */\r\n    public options: TooltipOptions;\r\n\r\n    /**\r\n     * Internal placeholder for the current focused state\r\n     */\r\n    private focused: boolean;\r\n\r\n    /**\r\n     * Internal placeholder for the current hovered state\r\n     */\r\n    private hovered: boolean;\r\n\r\n    /**\r\n     * container for host specific data being passed to the tooltip template context\r\n     */\r\n    public hostData: any;\r\n\r\n    /**\r\n     * The current mouse position relative to this hosting element\r\n     */\r\n    public mousePosition: TooltipMousePosition;\r\n\r\n    /**\r\n     * Mouse move listener event\r\n     */\r\n    private onMouseMoveListener: (event: MouseEvent) => void;\r\n\r\n    /**\r\n     * indicates that the tooltip has focus\r\n     */\r\n    public get isFocused() {\r\n        return this.options && this.isShown(this.options.targetid) && this.focused;\r\n    }\r\n\r\n    /**\r\n     * indicates that the tooltip is hovered\r\n     */\r\n    public get isHovered() {\r\n        return this.options && this.isShown(this.options.targetid) && this.hovered;\r\n    }\r\n\r\n    /**\r\n     * Gets the role that this tooltip is playing. If the tooltip is text only,\r\n     * then it is treated as a dialog.\r\n     * otherwise it is treated as a tooltip\r\n     */\r\n    public get ariaRole() {\r\n        if (this.options && this.options.template) {\r\n            return 'alertdialog';\r\n        }\r\n        return 'tooltip';\r\n    }\r\n\r\n    /**\r\n     * Gets the aria modal attribute value\r\n     */\r\n    public get ariaModal(): boolean {\r\n        if (this.options && this.options.template) {\r\n            return true;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    /**\r\n     * Indicates if the tooltip content outside the aria-live region will be shown\r\n     */\r\n    public get showNonAriaLiveContent(): boolean {\r\n        return this.options && (!!this.options.template || !this.options.shouldRead);\r\n    }\r\n\r\n    /**\r\n     * Indicates if the tooltip content inside the aria-live region will be shown\r\n     */\r\n    public get showAriaLiveContent(): boolean {\r\n        return this.options && this.options.shouldRead;\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the @see TooltipHostComponent class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator in the base @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector, private zone: NgZone) {\r\n        super(injector);\r\n        TooltipHostInstance.register(this);\r\n        this.hostData = { ariaLabelId: this.idBag.label, ariaDescriptionId: this.idBag.description };\r\n    }\r\n\r\n    public ngOnInit() {\r\n        super.ngOnInit();\r\n        this.onMouseMoveListener = this.onMouseMove.bind(this);\r\n        this.zone.runOutsideAngular(() =>\r\n            document.body.addEventListener('mousemove', this.onMouseMoveListener));\r\n    }\r\n\r\n    public ngOnDestroy() {\r\n        super.ngOnDestroy();\r\n        document.body.removeEventListener('mousemove', this.onMouseMoveListener);\r\n        TooltipHostInstance.unregister(this);\r\n    }\r\n\r\n    /**\r\n     * Occurs when the tooltip container is focused or unfocused\r\n     * @param event the focusin or focusout event\r\n     */\r\n    public onFocusChanged(event: Event) {\r\n        this.focused = this.options && (event.type === 'focusin' || (this.focused && event.type !== 'focusout'));\r\n        if (this.options) {\r\n            this.options.onStateChanged();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Occurs when the tooltip container is hovered or un-hovered\r\n     * @param event the mouseenter or mouseleave event\r\n     */\r\n    public onHoverChanged(event: Event) {\r\n        this.hovered = this.options && (event.type === 'mouseenter' || (this.hovered && event.type !== 'mouseleave'));\r\n        if (this.options) {\r\n            this.options.onStateChanged();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Window resize listener\r\n     */\r\n    @HostListener('window:resize', ['$event'])\r\n    @HostListener('window:blur', ['$event'])\r\n    public onWindowResized(event: Event) {\r\n        if (this.options) {\r\n            this.hide(this.options.targetid);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Escape key listener\r\n     */\r\n    // document:keyup.escape is used so that a dialog is not closed when trying to close a tooltip\r\n    @HostListener('document:keyup.escape', ['$event'])\r\n    public onEscape(event: Event) {\r\n        if (this.options) {\r\n            // Stop propagation so that if in a dialog it will not close.\r\n            event.stopImmediatePropagation();\r\n            this.hide(this.options.targetid);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Mouse movement listener\r\n     * We do not use HostListener here to avoid invoking change detection for all mousemove events.\r\n     */\r\n    private onMouseMove(event: MouseEvent) {\r\n        this.mousePosition = {\r\n            x: event.x,\r\n            y: event.y\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Escape key listener\r\n     */\r\n    @HostListener('window:click', ['$event'])\r\n    public onClick(event: PointerEvent) {\r\n        if (this.options && this.options.showOn === TooltipShowMode.Click) {\r\n            this.options.onWindowClick();\r\n            this.hide(this.options.targetid);\r\n        }\r\n\r\n        if (MsftSme.isNullOrUndefined(this.mousePosition)) {\r\n            this.mousePosition = {\r\n                x: event.x,\r\n                y: event.y\r\n            };\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Show a tooltip with the given options\r\n     */\r\n    public show(options: TooltipOptions): void {\r\n        if (this.options) {\r\n            this.hide(this.options.targetid);\r\n        }\r\n        this.options = options;\r\n        this.reposition(false, options.triggeredFrom);\r\n        setTimeout(() => {\r\n            const next = Dom.getNextFocusableElement(this.hostElement.nativeElement);\r\n            if (next) {\r\n                next.focus();\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Updates the active tooltip with new options\r\n     * @param id the tooltip id\r\n     */\r\n    public update(options: TooltipOptions): void {\r\n        if (this.isShown(options.targetid)) {\r\n            this.options.contentId = options.contentId;\r\n            this.options.context = options.context;\r\n            this.options.template = options.template;\r\n            this.options.title = options.title;\r\n            this.options.element = options.element;\r\n            this.options.placement = options.placement;\r\n        }\r\n        this.reposition(false, options.triggeredFrom);\r\n    }\r\n\r\n    /**\r\n     * Hides the tooltip with the given id\r\n     * @param id the tooltip id\r\n     */\r\n    public isShown(id: string): boolean {\r\n        return this.options && this.options.targetid === id;\r\n    }\r\n\r\n    /**\r\n     * Hides the tooltip with the given id\r\n     * @param id the tooltip id\r\n     */\r\n    public hide(id: string): void {\r\n        if (this.isShown(id)) {\r\n            this.hovered = false;\r\n            this.focused = false;\r\n            // if we opened a template, restore focus to the original element when we close the tooltip\r\n            if (this.options.template && this.options.restoreFocusTo) {\r\n                // Check to see if the template had any focusable elements that caused focus to change\r\n                const tooltipFocusableElement = Dom.getFirstElement(\r\n                    <HTMLElement>this.hostElement.nativeElement,\r\n                    element => Dom.isFocusable(element)\r\n                );\r\n                if (tooltipFocusableElement) {\r\n                    this.options.restoreFocusTo.focus();\r\n                }\r\n            }\r\n\r\n            // Reset positioning so that sme-layout-off-screen will not be overridden\r\n            // when the options are null.\r\n            const tooltip = <HTMLElement>this.tooltipContainer.nativeElement;\r\n            this.renderer.removeStyle(tooltip, 'left');\r\n            this.renderer.removeStyle(tooltip, 'top');\r\n            this.options = null;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Repositions the tooltip\r\n     */\r\n    private reposition(finalReposition: boolean, tooltipTrigger: TooltipShowMode): void {\r\n        if (this.options) {\r\n            // if the target element is no longer in the dom, cancel the tooltip\r\n            if (!document.body.contains(this.options.element.nativeElement)) {\r\n                this.hide(this.options.targetid);\r\n                return;\r\n            }\r\n\r\n            // Get elements for manipulation\r\n            const pointer = <HTMLElement>this.tooltipPointer.nativeElement;\r\n            const tooltip = <HTMLElement>this.tooltipContainer.nativeElement;\r\n\r\n            // get bounding rectangles for measurement\r\n            const targetRect = (<HTMLElement>this.options.element.nativeElement).getBoundingClientRect();\r\n            const hostRect = (<HTMLElement>this.hostElement.nativeElement).getBoundingClientRect();\r\n            const pointerRect = pointer.getBoundingClientRect();\r\n            const tooltipRect = tooltip.getBoundingClientRect();\r\n\r\n            // get initial top and left position of the tooltip\r\n            const leftAdjustment = 2; // Adjust the tooltip location a little bit to align with some icons (as target) better.\r\n            let left = targetRect.left - hostRect.left + leftAdjustment;\r\n            let top = (targetRect.top - hostRect.top) + targetRect.height;\r\n\r\n            // get the margin of the tooltip and include that in the calculation\r\n            const tooltipLeftMargin = parseInt(window.getComputedStyle(tooltip).marginLeft, 10);\r\n            const tooltipRightMargin = parseInt(window.getComputedStyle(tooltip).marginRight, 10);\r\n            let pointerLeft = ((targetRect.width / 2) - (pointerRect.width / 2)) - tooltipLeftMargin;\r\n\r\n            // if the pointer hangs off the left side of the tooltip, then adjust the left position of the tooltip and pointer\r\n            if (pointerLeft < tooltipLeftMargin) {\r\n                const leftOffset = tooltipLeftMargin - pointerLeft;\r\n                left -= leftOffset;\r\n                pointerLeft += leftOffset;\r\n            }\r\n\r\n            // on the second round, we can take the height and width of the tooltip into account.\r\n            if (finalReposition && tooltipRect.height > 0 && tooltipRect.width > 0) {\r\n                // if the target width is greater than the rendered tooltip width,\r\n                // then adjust the pointer and tooltip to align with the pointer\r\n                if (tooltipRect.width < targetRect.width) {\r\n                    pointerLeft = (((tooltipRect.width / 2) - (pointerRect.width / 2)) - tooltipLeftMargin);\r\n\r\n                    // If hovering mouse cursor, apply mouse repositioning logic.\r\n                    if (MsftSme.applyBitwiseAnd(tooltipTrigger, TooltipShowMode.Hover)) {\r\n                        if (this.mousePosition.x <= 0) {\r\n                            left = (tooltipRect.width / 2) - tooltipLeftMargin;\r\n                        } else {\r\n                            left = this.mousePosition.x - ((tooltipRect.width / 2) - tooltipLeftMargin);\r\n                        }\r\n                    }\r\n                }\r\n\r\n                // check if right edge of tooltip is off the screen\r\n                const right = (left + tooltipRect.width);\r\n                const rightOverflow = right - (hostRect.right - TooltipHostComponent.SCREEN_EDGE_MARGIN);\r\n                if (rightOverflow > 0) {\r\n                    // adjust left position to account for right offset\r\n                    left -= rightOverflow;\r\n                    pointerLeft += rightOverflow;\r\n                }\r\n\r\n                // Adjust for tooltip hanging on left after adjustment on right\r\n                if (pointerLeft > tooltipRect.width) {\r\n                    pointerLeft = (tooltipRect.width - pointerRect.width - tooltipRightMargin);\r\n                }\r\n\r\n                if (top + tooltipRect.height + TooltipHostComponent.SCREEN_EDGE_MARGIN > hostRect.bottom) {\r\n                    // If the tooltip's bottom is out of the viewport's bottom edge,\r\n                    // Show the tooltip above the target element.\r\n                    const pointerTopOffset = 3; // Need 3px here for the pointer top to make it align well with the tooltip content box.\r\n                    top = targetRect.top - tooltipRect.height - pointer.clientHeight;\r\n                    this.renderer.setStyle(pointer, 'top', `${tooltipRect.height - pointer.clientHeight / 2 - pointerTopOffset}px`);\r\n                } else {\r\n                    this.renderer.setStyle(pointer, 'top', `-8px`);\r\n                }\r\n\r\n                // check if left edge of tooltip is off the screen\r\n                if (left < 0) {\r\n                    const oldLeft = left;\r\n                    left = -tooltipLeftMargin;\r\n                    pointerLeft = (pointerLeft + oldLeft + left) < 4 ? 4 : pointerLeft + oldLeft;\r\n                }\r\n\r\n                this.renderer.setStyle(tooltip, 'top', `${top}px`);\r\n                this.renderer.setStyle(tooltip, 'left', `${left}px`);\r\n                this.renderer.setStyle(pointer, 'left', `${pointerLeft}px`);\r\n\r\n                // TODO: (as the need arises)\r\n                // Allow for tooltip placement (left right top bottom)\r\n            } else {\r\n                // For the first round of rendering, just move the tooltip outside the viewport.\r\n                // But we still can get the size of the tooltip for the 2nd round of calculation.\r\n                // This way won't cause unnecessary content overflow and scrollbars.\r\n                this.renderer.setStyle(tooltip, 'left', `-999px`);\r\n                this.renderer.setStyle(tooltip, 'top', `-999px`);\r\n            }\r\n\r\n            if (!finalReposition) {\r\n                setTimeout(() => this.reposition(true, tooltipTrigger), 0);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            label: '',\r\n            description: ''\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses(): string[] {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-tooltip-host',\r\n            'sme-layer-tooltip',\r\n            'sme-layout-fixed',\r\n            'sme-position-inset-none',\r\n            'sme-focus-zone'\r\n        ]);\r\n    }\r\n}\r\n","import { Component, EventEmitter, forwardRef, HostListener, Injector, NgZone, OnInit, Output } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { DisabledChangedEvent } from '../common/events/disabledChanged.event';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../common/layout';\r\n\r\nexport interface LintSettings {\r\n    disableAccessibility: boolean;\r\n    disableStyle: boolean;\r\n    disableRecursiveCheck: boolean;\r\n}\r\n\r\n/**\r\n * Defines the settings of a deprecated object\r\n */\r\nexport interface DeprecationSettings {\r\n    /**\r\n     * An additional message to include in the warning to users about the deprecation\r\n     */\r\n    message?: string;\r\n    /**\r\n     * The alternative to suggest using instead\r\n     */\r\n    alternateSignature?: string;\r\n    /**\r\n     * Date that this was deprecated in the mm/dd/yy format.\r\n     */\r\n    deprecatedSince: string;\r\n\r\n    /**\r\n     * Date that this was obsolete in the mm/dd/yy format. (required if 'obsolete' is true)\r\n     */\r\n    obsoleteSince?: string;\r\n\r\n    /**\r\n     * Indicates that this is obsolete\r\n     */\r\n    obsolete?: boolean;\r\n}\r\n\r\nconst smeStylesDeprecatedSince = '8/01/18';\r\nconst smeStylesObsoleteSince = '12/10/18';\r\n\r\n/**\r\n * This is the root component for every angular sme application.\r\n * It provides common styles, layout, and logic needed to make SME controls behave correctly.\r\n */\r\n@Component({\r\n    selector: 'sme-ux',\r\n    template: '<sme-tooltip-host></sme-tooltip-host><ng-content></ng-content>',\r\n    providers: [\r\n        { provide: SME_LAYOUT_PROVIDER, useExisting: forwardRef(() => SmeUxComponent) }\r\n    ]\r\n})\r\nexport class SmeUxComponent extends CoreBaseComponent implements Layout, OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'SmeUxComponent';\r\n    }\r\n\r\n    private static elementsAlreadyChecked = new Set<HTMLElement>();\r\n    private static classesAlreadyChecked = new Set<String>();\r\n    private static smeLintDisable = 'sme-lint-disable';\r\n    private static smeLintDisableSelf = 'sme-lint-disable-self';\r\n    private static deprecatedClasses: MsftSme.StringMap<DeprecationSettings> = {\r\n        /* eslint-disable max-len */\r\n        '.acceptable': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.alert': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'sme-alert component', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.alert-danger': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'sme-alert component', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.auto-flex-size': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-position-flex-auto', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.border-all': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-border-inset-sm .sme-border-color-base-90', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.border-bottom': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-border-bottom-sm .sme-border-bottom-color-base-90', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.border-horizontal': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-border-horizontal-sm .sme-border-horizontal-color-base-90', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.border-left': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-border-left-sm .sme-border-left-color-base-90', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.border-right': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-border-right-sm .sme-border-right-color-base-90', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.border-top': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-border-top-sm .sme-border-top-color-base-90', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.border-vertical': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-border-vertical-sm .sme-border-vertical-color-base-90', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.breadCrumb': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'sme-alert component', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.break-word': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-arrange-ws-wrap', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.checkbox': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'sme-form-field[type=\"checkbox\"]', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.color-dark': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-color-alt', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.color-error': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.color-info': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.color-light': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-color-base', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.color-light-gray': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-color-base-90', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.color-success': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.color-warning': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.combobox': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'sme-form-field[type=\"select\"]', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.dashboard': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'sme-layout-content-zone-padded sme-arrange-stack-h', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.delete-button': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.details-content': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.details-panel': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'sme-property-grid', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.details-panel-container': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'sme-property-grid', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.details-tab': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'sme-property-grid and/or sme-pivot', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.details-wrapper': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'sme-property-grid', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.disabled': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'sme-disabled', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.error-cover': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.error-message': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.fixed-flex-size': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-position-flex-none', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.flex-layout': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-arrange-stack-h OR .sme-arrange-stack-v', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.font-bold': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'b OR .sme-font-emphasis OR sme-font-family-bold', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.form-buttons': { deprecatedSince: smeStylesDeprecatedSince, message: 'Please use sme-form-field components instead', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.form-control': { deprecatedSince: smeStylesDeprecatedSince, message: 'Please use sme-form-field components instead', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.form-controls': { deprecatedSince: smeStylesDeprecatedSince, message: 'Please use sme-form-field components instead', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.form-group': { deprecatedSince: smeStylesDeprecatedSince, message: 'Please use sme-form-field components instead', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.form-group-label': { deprecatedSince: smeStylesDeprecatedSince, message: 'Please use sme-form-field components instead', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.form-input': { deprecatedSince: smeStylesDeprecatedSince, message: 'Please use sme-form-field components instead', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.form-stretch': { deprecatedSince: smeStylesDeprecatedSince, message: 'Please use sme-form-field components instead', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.guided-pane-button': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.header-container': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.highlight': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'mark OR .sme-background-color-yellow', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.horizontal': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-arrange-stack-h', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.indent': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.input-file': { deprecatedSince: smeStylesDeprecatedSince, message: 'Please use sme-form-field components instead', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.invalid': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.item-list': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.modal-scrollable': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.multi-section': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.nav-tabs': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'sme-pivot component', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.no-action-bar': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.no-scroll': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-arrange-overflow-hide', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.nowrap': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-arrange-stack-h OR .sme-arrange-stack-v', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.overflow-margins': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.overflow-tool': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.progress-cover': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.radio': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'sme-form-field[type=\"radio\"]', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.relative': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-layout-relative', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.relative-center': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-layout-absolute .sme-position-center', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.required-clue': { deprecatedSince: smeStylesDeprecatedSince, message: 'Please use sme-form-field components instead', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.reverse': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-arrange-stack-reversed', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.right-panel': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.rollup': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.rollup-status': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.rollup-title': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.rollup-value': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.searchbox': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'sme-form-field[type=\"search\"]', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.searchbox-action-bar': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.size-h-1': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.size-h-2': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.size-h-3': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.size-h-4': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.size-h-full': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.size-h-half': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.size-v-1': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.size-v-2': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.size-v-3': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.size-v-4': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.status-icon': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.stretch-absolute': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-layout-absolute .sme-position-inset-none', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.stretch-fixed': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-layout-fixed .sme-position-inset-none', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.stretch-vertical': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-position-stretch-v', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.stretch-width': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-position-stretch-h', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.svg-16px': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.table-indent': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.table-sm': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.thin': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.tile': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.tile-body': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.tile-content': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.tile-footer': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.tile-header': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.tile-layout': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.tile-table': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.tool-bar': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.tool-container': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'sme-layout-content-zone or sme-layout-content-zone-padded', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.tool-header': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.tool-header-box': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.tool-pane': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.toolbar': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.usage-bar': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.usage-bar-area': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.usage-bar-background': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.usage-bar-title': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.usage-bar-value': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.usage-chart': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.usage-message': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.usage-message-area': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.usage-message-title': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.vertical': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-arrange-stack-v', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.vertical-scroll-only': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-arrange-overflow-hide-x sme-arrange-overflow-auto-y', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.warning': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.white-space': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.wrap': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-arrange-wrapstack-h OR .sme-arrange-wrapstack-v', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.btn': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-button OR button', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.btn-primary': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: '.sme-button.sme-button-primary OR button.sme-button-primary', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        '.toggle-switch': { deprecatedSince: smeStylesDeprecatedSince, alternateSignature: 'sme-form-field[type=\"toggle-switch\"]', obsolete: true, obsoleteSince: smeStylesObsoleteSince },\r\n        // Note icon win class deprecation is special. It is overridden on the fly for all of the icon-win classes.\r\n        '.icon-win': { deprecatedSince: smeStylesDeprecatedSince, obsolete: true, obsoleteSince: smeStylesObsoleteSince }\r\n        /* eslint-enable max-len */\r\n    };\r\n\r\n    /**\r\n     * It implements the ILayout interface. It's triggered when the layout is changed.\r\n     * It's used to tell the child components to coordinate with the layout change.\r\n     */\r\n    @Output()\r\n    public layoutChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * Implementation of the Layout interface. It's only triggered when the window breakpoint defined has been changed.\r\n     * This special breakpoint change event will be fired for control's special layout change.\r\n     */\r\n    @Output()\r\n    public windowBreakpointChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    constructor(injector: Injector, private ngZone: NgZone) {\r\n        super(injector);\r\n        this.startDOMListener();\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        super.ngOnInit();\r\n    }\r\n\r\n    /**\r\n     * Starts listening to DOM mutations and reporting them to handlers\r\n     */\r\n    private startDOMListener(): void {\r\n        // production configuration only listens to the disabled attribute.\r\n        const configuration: MutationObserverInit = {\r\n            attributes: true,\r\n            attributeFilter: ['disabled'],\r\n            childList: false,\r\n            subtree: true\r\n        };\r\n        let mutationCallback: MutationCallback = (mutations) => this.onProductionMutation(mutations);\r\n\r\n        // configure more in depth listening for dev mode\r\n        if (!MsftSme.self().Init.isProduction) {\r\n            // configure the observer for dev mode\r\n            configuration.childList = true;\r\n            configuration.attributeFilter.push('class');\r\n            mutationCallback = (mutations) => this.onDebugMutation(mutations);\r\n        }\r\n\r\n        // Run outside of angular lifecycle to avoid triggering infinite changes to the DOM\r\n        this.ngZone.runOutsideAngular(() => {\r\n            const observer = new MutationObserver((mutations, obs) => mutationCallback(mutations, obs));\r\n            observer.observe(\r\n                this.hostElement.nativeElement,\r\n                configuration\r\n            );\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Occurs when there are DOM mutations to examine\r\n     * @param mutations the DOM mutations\r\n     */\r\n    private onProductionMutation(mutations: MutationRecord[]) {\r\n        mutations.forEach(mutation => {\r\n            // listen to the disabled attribute on fieldsets\r\n            if (mutation.type === 'attributes'\r\n                && mutation.attributeName === 'disabled'\r\n                && mutation.target.nodeType === 1\r\n                && mutation.target.nodeName === 'FIELDSET') {\r\n                DisabledChangedEvent.dispatch(<HTMLElement>mutation.target);\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Occurs when there are DOM mutations to examine in debug mode only\r\n     * @param mutations the DOM mutations\r\n     */\r\n    private onDebugMutation(mutations: MutationRecord[]) {\r\n        SmeUxComponent.elementsAlreadyChecked.clear();\r\n        mutations.forEach(mutation => {\r\n            if (mutation.addedNodes && mutation.addedNodes.length > 0) {\r\n                this.checkNodes(mutation.addedNodes, mutation.type === 'childList');\r\n            } else if (mutation.attributeName) {\r\n                const target = <HTMLElement>mutation.target;\r\n                this.checkForDeprecation(target);\r\n                if (mutation.type === 'childList') {\r\n                    this.checkForAccessibility(target);\r\n                }\r\n            }\r\n        });\r\n        this.onProductionMutation(mutations);\r\n    }\r\n\r\n    /**\r\n     * Checks a NodeList for lint issues recursively\r\n     */\r\n    private checkNodes(nodes: NodeList, checkForAccessibility: boolean) {\r\n        for (let i = 0; i < nodes.length; i++) {\r\n            const node = nodes.item(i);\r\n            if (node.nodeType === Node.ELEMENT_NODE) {\r\n                const nodeElement = <HTMLElement>node;\r\n\r\n                this.checkForDeprecation(nodeElement);\r\n                if (nodeElement.childNodes && nodeElement.childNodes.length > 0) {\r\n                    // check if this element disabled node children check on it self\r\n                    const disableRecursiveCheck = this.getLintDisableSettings(\r\n                        nodeElement,\r\n                        SmeUxComponent.smeLintDisableSelf\r\n                    ).disableRecursiveCheck;\r\n                    if (!disableRecursiveCheck) {\r\n                        this.checkNodes(nodeElement.childNodes, checkForAccessibility);\r\n                    }\r\n                }\r\n                if (checkForAccessibility) {\r\n                    this.checkForAccessibility(nodeElement);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Checks to see if an element is using deprecated styles or structure.\r\n     * @param element the element to check\r\n     */\r\n    private checkForDeprecation(element: HTMLElement): void {\r\n        if (this.shouldShowStyleLog(element)) {\r\n            for (let i = 0; i < element.classList.length; i++) {\r\n                const className = `.${element.classList.item(i)}`;\r\n                // only ever check a particular class one time\r\n                if (SmeUxComponent.classesAlreadyChecked.has(className)) {\r\n                    continue;\r\n                }\r\n                // mark this class as already checked.\r\n                SmeUxComponent.classesAlreadyChecked.add(className);\r\n                // check for an old deprecated class\r\n                let options = SmeUxComponent.deprecatedClasses[className];\r\n\r\n                // check if this is a deprecated icon-win class\r\n                if (MsftSme.isNullOrUndefined(options) && className.startsWith('.icon-win-')) {\r\n                    options = MsftSme.deepCopy(SmeUxComponent.deprecatedClasses['.icon-win']);\r\n                    options.alternateSignature = className.replace('.icon-win-', '.sme-icon-');\r\n                }\r\n\r\n                let message: string;\r\n                // if this is class is not deprecated, check if it is a unknown class\r\n                if (MsftSme.isNullOrUndefined(options)) {\r\n                    // classes prefixed with 'sme' or 'ng' are considered 'known'\r\n                    if (!className.startsWith('.sme-') && !className.startsWith('.ng-')) {\r\n                        SmeUxComponent.classesAlreadyChecked.add(className);\r\n                        message = this.strings.MsftSmeShell.Angular.HtmlScanner.UnrecognizedClass.messageFormat.format(className);\r\n                    }\r\n                } else if (options.obsolete) {\r\n                    if (!options.obsoleteSince) {\r\n                        // eslint-disable-next-line\r\n                        throw new SyntaxError(`obsolete option set on DeprecationSettings for \"${className}\", but has an invalid 'obsoleteSince' date.`);\r\n                    }\r\n                    // craft obsolete message from options.\r\n                    const alternateMessage = options.alternateSignature\r\n                        ? this.strings.MsftSmeShell.Angular.Decorators.Obsolete.alternateSignatureFormat\r\n                            .format(options.alternateSignature)\r\n                        : '';\r\n                    message = this.strings.MsftSmeShell.Angular.Decorators.Obsolete.messageFormat\r\n                        .format(className, options.obsoleteSince, alternateMessage, options.message || '');\r\n                } else {\r\n                    if (!options.deprecatedSince) {\r\n                        // eslint-disable-next-line\r\n                        throw new SyntaxError(`DeprecationSettings for \"${className}\" has an invalid 'deprecatedSince' date.`);\r\n                    }\r\n                    // craft deprecated message from options.\r\n                    const alternateMessage = options.alternateSignature\r\n                        ? this.strings.MsftSmeShell.Angular.Decorators.Deprecated.alternateSignatureFormat\r\n                            .format(options.alternateSignature)\r\n                        : '';\r\n                    message = this.strings.MsftSmeShell.Angular.Decorators.Deprecated.CssClass.messageFormat\r\n                        .format(className, options.deprecatedSince, alternateMessage, options.message || '');\r\n                }\r\n                if (message) {\r\n                    this.log(message, LogLevel.Warning, { element: element });\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Check accessibility rules for the given element\r\n     * @param element the element\r\n     */\r\n    public checkForAccessibility(element: HTMLElement): void {\r\n        const hasDisableAccessibilityAncestor = Dom.getSpecificAncestor(\r\n            element,\r\n            el => this.getLintDisableSettings(el, SmeUxComponent.smeLintDisable).disableAccessibility\r\n        );\r\n        if (!hasDisableAccessibilityAncestor) {\r\n            this.checkNoMixedUseZones(element);\r\n            this.checkAnchorTagRequirements(element);\r\n            this.checkNoDialogsInForms(element);\r\n            this.checkNoInputsOutsideForms(element);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Checks that the given element and its children are not mixed use zones\r\n     * A mixed use zone has a child that is a zone and a child that is a non-zone focusable element at the same level\r\n     * @param element the element\r\n     */\r\n    private checkNoMixedUseZones(element): void {\r\n        Dom.getAllElements(element, el => Dom.isZone(el) && this.shouldShowAccessibilityLog(el)).forEach(el => {\r\n            if (!SmeUxComponent.elementsAlreadyChecked.has(el)) {\r\n                const nonZoneChild = Dom.getFirstElement(el, Dom.isFocusableNonZone, Dom.isZone, false);\r\n                const zoneChild = Dom.getFirstElement(el, Dom.isZone, null, false);\r\n                if (zoneChild && zoneChild !== el && nonZoneChild) {\r\n                    SmeUxComponent.elementsAlreadyChecked.add(el);\r\n                    this.log(\r\n                        this.strings.MsftSmeShell.Angular.Lint.Accessibility.MixedUseZone,\r\n                        LogLevel.Error,\r\n                        { element: el, nonZoneChild: nonZoneChild, zoneChild: zoneChild }\r\n                    );\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Checks any anchor tags on the element or it's children either have an href or a role and tabindex\r\n     * @param element the element\r\n     */\r\n    private checkAnchorTagRequirements(element: HTMLElement): void {\r\n        Dom.getAllElements(element, el => el.tagName === 'A' && this.shouldShowAccessibilityLog(el)).forEach(el => {\r\n            if (!SmeUxComponent.elementsAlreadyChecked.has(el)) {\r\n                const hasHref = el.attributes.getNamedItem('href');\r\n                const hasRole = el.attributes.getNamedItem('role');\r\n                const hasTabIndex = el.attributes.getNamedItem('tabindex');\r\n                if (!hasHref && !hasRole) {\r\n                    SmeUxComponent.elementsAlreadyChecked.add(el);\r\n                    this.log(\r\n                        this.strings.MsftSmeShell.Angular.Lint.Accessibility.AnchorRoleOrHref,\r\n                        LogLevel.Error,\r\n                        { element: el }\r\n                    );\r\n                }\r\n                if (!hasHref && !hasTabIndex) {\r\n                    SmeUxComponent.elementsAlreadyChecked.add(el);\r\n                    this.log(\r\n                        this.strings.MsftSmeShell.Angular.Lint.Accessibility.AnchorTabIndexOrHref,\r\n                        LogLevel.Error,\r\n                        { element: el }\r\n                    );\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Checks that the element or it's children are not forms outside of dialogs\r\n     * @param element the element\r\n     */\r\n    private checkNoDialogsInForms(element: HTMLElement): void {\r\n        const disableSelfSettings = this.getLintDisableSettings(element, SmeUxComponent.smeLintDisableSelf);\r\n        if (!disableSelfSettings.disableAccessibility) {\r\n            const trapWithinForm = Dom.getFirstElement(element, Dom.isInTrapWithinForm);\r\n            if (trapWithinForm) {\r\n                if (!SmeUxComponent.elementsAlreadyChecked.has(trapWithinForm)) {\r\n                    SmeUxComponent.elementsAlreadyChecked.add(trapWithinForm);\r\n                    this.log(\r\n                        this.strings.MsftSmeShell.Angular.Lint.Accessibility.DialogInForm,\r\n                        LogLevel.Error,\r\n                        { element: trapWithinForm }\r\n                    );\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Checks that the element and its children are not inputs without form wrappers\r\n     * @param element the element\r\n     */\r\n    private checkNoInputsOutsideForms(element: HTMLElement): void {\r\n        Dom.getAllElements(element, el => Dom.isInputWithoutForm(el) && this.shouldShowAccessibilityLog(el)).forEach(el => {\r\n            if (!SmeUxComponent.elementsAlreadyChecked.has(el)) {\r\n                SmeUxComponent.elementsAlreadyChecked.add(el);\r\n                this.log(\r\n                    this.strings.MsftSmeShell.Angular.Lint.Accessibility.InputWithoutForm,\r\n                    LogLevel.Error,\r\n                    { element: el }\r\n                );\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * determines if accessibility error logging is enabled for the given element\r\n     * @param element the element\r\n     */\r\n    private shouldShowAccessibilityLog(element: HTMLElement): boolean {\r\n        const hasDisableAccessibilityAncestor = Dom.getSpecificAncestor(\r\n            element,\r\n            el => this.getLintDisableSettings(el, SmeUxComponent.smeLintDisable).disableAccessibility\r\n        );\r\n        const disableSelfSettings = this.getLintDisableSettings(element, SmeUxComponent.smeLintDisableSelf);\r\n\r\n        return !hasDisableAccessibilityAncestor && !disableSelfSettings.disableAccessibility;\r\n    }\r\n\r\n    /**\r\n     * determines if style warning logging is enabled for the given element\r\n     * @param element the element\r\n     */\r\n    private shouldShowStyleLog(element: HTMLElement): boolean {\r\n        const hasDisableStyleAncestor = Dom.getSpecificAncestor(\r\n            element,\r\n            el => this.getLintDisableSettings(el, SmeUxComponent.smeLintDisable).disableStyle\r\n        );\r\n        const disableSelfSettings = this.getLintDisableSettings(element, SmeUxComponent.smeLintDisableSelf);\r\n\r\n        return !hasDisableStyleAncestor && !disableSelfSettings.disableStyle;\r\n    }\r\n\r\n    /**\r\n     * Gets lint settings for the given element\r\n     * @param element the element\r\n     * @param lintAttribute the lint attribute to check 'sme-lint-disable' or 'sme-lint-disable-self'\r\n     */\r\n    private getLintDisableSettings(element: HTMLElement, lintAttribute: string): LintSettings {\r\n        const lintSettings: LintSettings = { disableAccessibility: false, disableStyle: false, disableRecursiveCheck: false };\r\n        const smeLintDisable = element.attributes.getNamedItem(lintAttribute);\r\n        if (smeLintDisable) {\r\n            if (!MsftSme.isNullOrWhiteSpace(smeLintDisable.value)) {\r\n                const rules = smeLintDisable.value.split(',');\r\n                rules.forEach(rule => {\r\n                    switch (rule.trim()) {\r\n                        case 'accessibility':\r\n                            lintSettings.disableAccessibility = true;\r\n                            break;\r\n                        case 'style':\r\n                            lintSettings.disableStyle = true;\r\n                            break;\r\n                        case 'recursive':\r\n                            lintSettings.disableRecursiveCheck = true;\r\n                            break;\r\n                    }\r\n                });\r\n            } else {\r\n                // both enabled if attribute present but not given a value\r\n                lintSettings.disableAccessibility = true;\r\n                lintSettings.disableStyle = true;\r\n                lintSettings.disableRecursiveCheck = true;\r\n\r\n            }\r\n        }\r\n        return lintSettings;\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-ux'\r\n        ]);\r\n    }\r\n\r\n    /**\r\n     * Listen to window resizes and emit a debounced layout changed.\r\n     */\r\n    @HostListener('window:resize')\r\n    @Debounce(250)\r\n    public onWindowResized() {\r\n        this.layoutChanged.emit();\r\n    }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n/**\r\n * Defines the root component for background extensions.\r\n * Currently, this component  but is here allow for\r\n * a common implementation that applies to all background extensions\r\n */\r\n@Component({\r\n    selector: 'sme-ux-extension-root',\r\n    templateUrl: './ux-extension-root.component.html'\r\n})\r\nexport class UxExtensionRootComponent { }\r\n","<sme-ux class=\"sme-layout-absolute sme-position-inset-none\">\r\n  <router-outlet></router-outlet>\r\n</sme-ux>\r\n","import { Component } from '@angular/core';\r\n\r\n/**\r\n * Defines the root component for background extensions.\r\n * Currently, this component does very little (nothing) but is here allow for\r\n * a common implementation that applies to all background extensions\r\n */\r\n@Component({\r\n    selector: 'sme-background-extension-root',\r\n    template: '<router-outlet></router-outlet>'\r\n})\r\nexport class BackgroundExtensionRootComponent { }\r\n","import {\r\n    AfterViewInit,\r\n    Directive,\r\n    HostListener,\r\n    Injector,\r\n    OnDestroy,\r\n    OnInit\r\n} from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { TooltipHostInstance } from './tooltip-host-instance';\r\nimport { TooltipDirective } from './tooltip.directive';\r\n@Directive({\r\n    selector: '[smeTooltipZone]',\r\n    exportAs: 'smeTooltipZone'\r\n})\r\nexport class TooltipZoneDirective extends CoreBaseComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'TooltipZoneDirective';\r\n    }\r\n\r\n    private tooltipDirective: TooltipDirective;\r\n    private focusableZoneElement: HTMLElement;\r\n    private mutationObserver: MutationObserver;\r\n    private isViewLoaded = false;\r\n    private isObserving = false;\r\n\r\n    @HostListener('keydown', ['$event'])\r\n    public onShortcut(event: KeyboardEvent): void {\r\n        if (event.keyCode === KeyCode.F1 && event.altKey) {\r\n            if (this.tooltipDirective) {\r\n                if (!this.tooltipDirective.shown) {\r\n                    this.tooltipDirective.show(true);\r\n                    event.stopImmediatePropagation();\r\n                } else {\r\n                    this.tooltipDirective.hide();\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    @HostListener('focusout')\r\n    public onFocusChange(): void {\r\n        // The tooltip is using a template, handle the focusout event properly if template has tab index\r\n        if (this.tooltipDirective) {\r\n            event.stopImmediatePropagation();\r\n            if (!TooltipHostInstance.activeHost.isFocused) {\r\n                this.tooltipDirective.hide();\r\n            }\r\n        }\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    public ngOnInit() {\r\n        this.mutationObserver = new MutationObserver(mutations => {\r\n            mutations.forEach(() => {\r\n                /*  Observe when a node is added or removed. If this occurs then reset which element\r\n                    will have the aria-keyshortcuts attribute so the first focusable element will only\r\n                    have it.*/\r\n                this.unsetAriaShortcutAttribute();\r\n                this.setAriaShortcutAttribute();\r\n            });\r\n        });\r\n    }\r\n\r\n    public ngAfterViewInit() {\r\n        this.isViewLoaded = true;\r\n        this.startObserving();\r\n    }\r\n\r\n    public ngOnDestroy() {\r\n        this.stopObserving();\r\n        this.unsetAriaShortcutAttribute();\r\n    }\r\n\r\n    public registerTooltipDirective(tooltipDirective: TooltipDirective) {\r\n        this.tooltipDirective = tooltipDirective;\r\n        this.setAriaShortcutAttribute();\r\n        this.startObserving();\r\n    }\r\n\r\n    public unregisterTooltipDirective() {\r\n        this.tooltipDirective = null;\r\n        this.unsetAriaShortcutAttribute();\r\n        this.stopObserving();\r\n    }\r\n\r\n    private startObserving() {\r\n        // Only start observing if there is a tooltip associated with this zone\r\n        // and the view has had the initial load.\r\n        if (this.tooltipDirective && this.isViewLoaded && !this.isObserving && this.mutationObserver) {\r\n            this.isObserving = true;\r\n            this.mutationObserver.observe(this.hostElement.nativeElement, {\r\n                childList: true,\r\n                subtree: true\r\n            });\r\n        }\r\n    }\r\n\r\n    private stopObserving() {\r\n        if (this.mutationObserver && this.isObserving) {\r\n            this.mutationObserver.disconnect();\r\n            this.isObserving = false;\r\n        }\r\n    }\r\n\r\n    // Add debounce to allow the content of the tooltip zone to load before finding a focusable element\r\n    @Debounce()\r\n    private setAriaShortcutAttribute() {\r\n        this.focusableZoneElement = Dom.getFirstElement(\r\n            <HTMLElement>this.hostElement.nativeElement,\r\n            element => Dom.isFocusPossible(element),\r\n            element => !!element.getAttribute('smeTooltipZone')\r\n        );\r\n\r\n        if (this.focusableZoneElement) {\r\n            this.focusableZoneElement.setAttribute('aria-keyshortcuts', this.strings.MsftSmeShell.Angular.TooltipZone.Aria.keyShortcuts);\r\n        } else {\r\n            this.log(\r\n                'A tooltip zone must have a child element that is focusable for keyboard accessibility',\r\n                LogLevel.Error,\r\n                { TooltipZone: this.hostElement.nativeElement }\r\n            );\r\n        }\r\n    }\r\n\r\n    private unsetAriaShortcutAttribute() {\r\n        if (this.focusableZoneElement) {\r\n            this.focusableZoneElement.removeAttribute('aria-keyshortcuts');\r\n            this.focusableZoneElement = null;\r\n        }\r\n    }\r\n}\r\n","/**\r\n * Enum for the placement of a tooltip\r\n */\r\nexport enum TooltipPlacement {\r\n    Top,\r\n    Left,\r\n    Right,\r\n    Bottom\r\n}\r\n\r\n/**\r\n * Functions for the TooltipPlacement enum\r\n */\r\nexport module TooltipPlacementEnum {\r\n\r\n    /**\r\n     * List of all the values of the @see TooltipPlacement enum\r\n     */\r\n    const placements = [\r\n        TooltipPlacement.Top,\r\n        TooltipPlacement.Left,\r\n        TooltipPlacement.Right,\r\n        TooltipPlacement.Bottom\r\n    ];\r\n\r\n    /**\r\n     * Converts a string value to a @see TooltipPlacement enum\r\n     */\r\n    export function fromString(value: string, defaultPlacement: TooltipPlacement = TooltipPlacement.Bottom): TooltipPlacement {\r\n        if (MsftSme.isNullOrWhiteSpace(value)) {\r\n            return defaultPlacement;\r\n        }\r\n        value = value.toLowerCase();\r\n        return placements.find(tp => TooltipPlacement[tp].toLowerCase() === value) || defaultPlacement;\r\n    }\r\n    /**\r\n     * Converts a @see TooltipPlacement enum to a string value\r\n     */\r\n    export function toString(placement: TooltipPlacement): string {\r\n        return TooltipPlacement[placement];\r\n    }\r\n}\r\n","import {\r\n    Directive,\r\n    ElementRef,\r\n    EventEmitter,\r\n    HostBinding,\r\n    HostListener,\r\n    Injector,\r\n    Input,\r\n    OnChanges,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n    SecurityContext,\r\n    SimpleChanges,\r\n    TemplateRef\r\n} from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { SmeWebTelemetry } from '@microsoft/windows-admin-center-sdk/core/index';\r\nimport { decode } from 'html-entities';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { TooltipHost } from './models/tooltip-host';\r\nimport { TooltipOptions, TooltipShowMode } from './models/tooltip-options';\r\nimport { TooltipPlacement, TooltipPlacementEnum } from './models/tooltip-placement';\r\nimport { TooltipHostInstance } from './tooltip-host-instance';\r\nimport { TooltipZoneDirective } from './tooltip-zone.directive';\r\n\r\nexport class ToolTipFocusEvent {\r\n    static focusIn = 'focusin';\r\n    static focusOut = 'focusout';\r\n}\r\n\r\nexport class ToolTipMouseEvent {\r\n    static mouseEnter = 'mouseenter';\r\n    static mouseLeave = 'mouseleave';\r\n}\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Tooltip @id sme-tooltip-directive}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/overview.md}\r\n *\r\n * @example {@label Basic Usage @id basic-usage}\r\n * @file {@filename component.html @filepath ./examples/basic-usage.component.html}\r\n * @file {@filename component.ts @filepath ./examples/tooltip-example.component.ts}\r\n *\r\n * @example {@label Custom Template @id custom-template}\r\n * @file {@filename component.html @filepath ./examples/template-reference.component.html}\r\n * @file {@filename component.ts @filepath ./examples/tooltip-example.component.ts}\r\n *\r\n * @example {@label Custom Implementation @id tooltip-zone}\r\n * @file {@filename component.html @filepath ./examples/tooltip-zone.component.html}\r\n */\r\n\r\n/**\r\n * Directive to create tooltips in the tooltip host.\r\n */\r\n@Directive({\r\n    selector: '[smeTooltip],[title]'\r\n})\r\nexport class TooltipDirective extends CoreBaseComponent implements OnDestroy, OnChanges, OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'TooltipDirective';\r\n    }\r\n\r\n    @Output() public toolTipFocusEventTriggered: EventEmitter<ToolTipFocusEvent> = new EventEmitter<ToolTipFocusEvent>();\r\n    @Output() public toolTipMouseEventTriggered: EventEmitter<ToolTipMouseEvent> = new EventEmitter<ToolTipMouseEvent>();\r\n\r\n    private internalTitle: string;\r\n\r\n    /**\r\n     * Sets the native tooltip property.\r\n     *\r\n     * This input is susceptible to XSS attacks, and is sanitized if necessary.\r\n     * In cases the input is sanitized, the displayed tooltip to the user will only show the sanitized content.\r\n     * This behavior (defense) is expected since users should not present XSS payloads in the [title] attribute.\r\n     */\r\n    @Input()\r\n    public set title(input: string) {\r\n        if (!MsftSme.isNullOrUndefined(input)) {\r\n            // https://github.com/angular/angular/blob/main/packages/core/src/sanitization/html_sanitizer.ts\r\n            const sanitizedInput = this.domSanitizer.sanitize(SecurityContext.HTML, input);\r\n\r\n            // When sanitizing \"safe\" specialized inputs (e.g., localized inputs)\r\n            // the DomSanitizer can return parts of the value as encoded, (e.g., 'olá' can be returned as 'ol&#225;'),\r\n            // therefore, we compare the decoded values to see if any part of the input was actually sanitized and determine\r\n            // what is displayed in the tooltip based on sanitation results.\r\n            if (decode(sanitizedInput) !== decode(input)) {\r\n                this.internalTitle = sanitizedInput;\r\n\r\n                SmeWebTelemetry.traceAction(\r\n                    null,\r\n                    {\r\n                        content: {\r\n                            label: 'SecurityProtectionEvent',\r\n                            type: 'XSSPrevention'\r\n                        }\r\n                    });\r\n            } else {\r\n                // Safe input\r\n                this.internalTitle = input;\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Gets the native tooltip property.\r\n     */\r\n    public get title(): string {\r\n        return this.internalTitle;\r\n    }\r\n\r\n    /**\r\n     * A template reference for a custom tooltip.\r\n     */\r\n    @Input()\r\n    public smeTooltip: TemplateRef<any>;\r\n\r\n    /**\r\n     * A data object that can be accessed in a template reference for a custom tooltip.\r\n     */\r\n    @Input()\r\n    public smeTooltipContext: any;\r\n\r\n    /**\r\n     * The input for the placement of the tooltip. Defaults to 'bottom'.\r\n     */\r\n    @Input()\r\n    public smeTooltipPlacement: string;\r\n\r\n    /**\r\n     * Indicates when to show the tooltip.\r\n     */\r\n    @Input()\r\n    public smeTooltipShowOn: TooltipShowMode;\r\n\r\n    /**\r\n     * Indicates when to explicitly not show the tooltip in cases where it needs to be shown only under certain conditions.\r\n     */\r\n    @Input()\r\n    public smeTooltipShow = true;\r\n\r\n    /**\r\n     * Indicates if receiving hover and focus events.\r\n     */\r\n    @Input()\r\n    public smeTooltipEnableEvents = false;\r\n\r\n    /**\r\n     * Indicates if hide the tooltip when inner HTML is the same as tooltip content\r\n     * In certain cases, we always need the tooltip to show, such as the multi-tool component tool list.\r\n     */\r\n    @Input()\r\n    public hideOnTooltipSameAsText = true;\r\n\r\n    /**\r\n     * The defined zone for showing tooltip with a shortcut. The zone is a wrapper for the content that is relevant to the tooltip.\r\n     */\r\n    @Input()\r\n    public tooltipZone: TooltipZoneDirective;\r\n\r\n    /**\r\n     * Gets the id of the tooltip that will describe this element\r\n     */\r\n    @HostBinding('attr.aria-describedBy')\r\n    public get ariaDescribedBy(): string {\r\n        if (!this.shown || !MsftSme.isNullOrUndefined(this.smeTooltip) || !this.hideOnTooltipSameAsText) {\r\n            return null;\r\n        }\r\n        return this.idBag && this.idBag.tooltip ? this.idBag.tooltip : null;\r\n    }\r\n\r\n    /**\r\n     * The actual placement of the tooltip\r\n     */\r\n    private get placement(): TooltipPlacement {\r\n        return TooltipPlacementEnum.fromString(this.smeTooltipPlacement);\r\n    }\r\n\r\n    /**\r\n     * The tooltip host\r\n     */\r\n    private get tooltipHost(): TooltipHost {\r\n        return TooltipHostInstance.activeHost;\r\n    }\r\n\r\n    /**\r\n     * Indicates that tooltips should show on focus/hover.\r\n     */\r\n    public get showOnfocus() {\r\n        return !!MsftSme.self().Resources.accessibilityMode;\r\n    }\r\n\r\n    /**\r\n     * Internal placeholder for the current focused state\r\n     */\r\n    private focused: boolean;\r\n\r\n    /**\r\n     * Internal placeholder for the current clicked state\r\n     */\r\n    private clicked: boolean;\r\n\r\n    /**\r\n     * Internal placeholder for the current hovered state\r\n     */\r\n    private hovered: boolean;\r\n\r\n    /**\r\n     * Internal mutation observer used to watch for disabled attribute on elements\r\n     */\r\n    private observer: MutationObserver;\r\n\r\n    /**\r\n     * Internal placeholder for tooltip triggering cause (click, hover, focus)\r\n     */\r\n    private tooltipTrigger: TooltipShowMode;\r\n\r\n    /**\r\n     * Indicates if the tooltip is being shown.\r\n     */\r\n    public get shown(): boolean {\r\n        return this.tooltipHost.isShown(this.componentId);\r\n    }\r\n\r\n    /**\r\n     * Indicates that this tooltip should show only when the text is truncated\r\n     * We assume this is true if the title attribute is exactly the same as the text content of this node.\r\n     */\r\n    private get isTooltipSameAsText(): boolean {\r\n        if (MsftSme.isNullOrUndefined(this.title)) {\r\n            return false;\r\n        }\r\n\r\n        const nativehostElement = <HTMLElement>this.hostElement.nativeElement;\r\n        return !!this.title && MsftSme.localeCompareIgnoreCase(\r\n            String(this.title).trim(), nativehostElement.textContent.trim()) === 0;\r\n    }\r\n\r\n    /**\r\n     * Indicates that this tooltip should be shown\r\n     */\r\n    private get shouldShow() {\r\n        if (MsftSme.isNullOrWhiteSpace(this.title)\r\n            && MsftSme.isNullOrUndefined(this.smeTooltip) || !this.smeTooltipShow) {\r\n            return false;\r\n        }\r\n\r\n        if (MsftSme.applyBitwiseAnd(this.smeTooltipShowOn, TooltipShowMode.Click)) {\r\n            // if we are hovered or our tooltip is hovered\r\n            if (this.clicked) {\r\n                return true;\r\n            }\r\n\r\n            // if we are shown and are focused or our tooltip\r\n            if (this.shown && this.tooltipHost.isFocused) {\r\n                return true;\r\n            }\r\n        } else if (MsftSme.applyBitwiseAnd(this.smeTooltipShowOn,\r\n            (MsftSme.applyBitwiseOr(TooltipShowMode.Hover, TooltipShowMode.KeyboardFocus)))) {\r\n            if (this.hideOnTooltipSameAsText && this.isTooltipSameAsText && !this.getIsTruncated()) {\r\n\r\n                // Remove title attribute when true conditions are not met\r\n                this.setAttribute('title', '');\r\n                return false;\r\n            }\r\n\r\n            // if we are hovered or our tooltip is hovered\r\n            if (this.hovered || (this.shown && this.tooltipHost.isHovered)) {\r\n                return true;\r\n            }\r\n\r\n            // if we show on focus and are focused or our tooltip has focus\r\n            if (this.showOnfocus && (this.focused || (this.shown && this.tooltipHost.isFocused))) {\r\n                return true;\r\n            }\r\n        }\r\n\r\n        // Remove title attribute when true conditions are not met\r\n        this.setAttribute('title', '');\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the @see PivotComponent class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator in the base @see BaseComponent class\r\n     */\r\n    constructor(private elementRef: ElementRef, private domSanitizer: DomSanitizer, injector: Injector) {\r\n        super(injector);\r\n        this.smeTooltipShowOn = MsftSme.applyBitwiseOr(TooltipShowMode.Hover, TooltipShowMode.KeyboardFocus);\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnInit interface\r\n     */\r\n    public ngOnInit(): void {\r\n        if (this.tooltipZone) {\r\n            this.tooltipZone.registerTooltipDirective(this);\r\n        }\r\n\r\n        // Set up observer if element can be disabled, watch for disabled changes\r\n        if (this.elementRef &&\r\n            this.elementRef.nativeElement &&\r\n            // eslint-disable-next-line eqeqeq\r\n            this.elementRef.nativeElement.disabled != null) {\r\n\r\n            // We hide the tooltip if the element it is attached to becomes disabled\r\n            this.observer = new MutationObserver(mutations => {\r\n                mutations.forEach(mutation => {\r\n                    if (mutation.attributeName === 'disabled') {\r\n                        // Check if need to be hidden\r\n                        this.hide();\r\n                    }\r\n                });\r\n            });\r\n\r\n            const config = { attributes: true, childList: true, characterData: true };\r\n            this.observer.observe(this.elementRef.nativeElement, config);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnChanges interface\r\n     * On any change we update the tooltip if it is shown\r\n     */\r\n    public ngOnChanges(changes: SimpleChanges): void {\r\n        super.ngOnChanges(changes);\r\n\r\n        if (this.shown) {\r\n            this.tooltipHost.update(this.getTooltipOptions());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnDestroy interface\r\n     */\r\n    public ngOnDestroy(): void {\r\n        super.ngOnDestroy();\r\n        this.showHideTooltip(false, false);\r\n        if (this.tooltipZone) {\r\n            this.tooltipZone.unregisterTooltipDirective();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            tooltip: ''\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Host listeners for tooltip focus events\r\n     */\r\n    @HostListener(ToolTipFocusEvent.focusIn, ['$event'])\r\n    @HostListener(ToolTipFocusEvent.focusOut, ['$event'])\r\n    public onFocusEvent(event: Event): void {\r\n        // on focus in/out change focused state\r\n        const focused = event.type === ToolTipFocusEvent.focusIn || (this.focused && event.type !== ToolTipFocusEvent.focusOut);\r\n        const lostClickFocus = this.clicked && event.type === ToolTipFocusEvent.focusOut;\r\n        this.tooltipTrigger = this.clicked ? TooltipShowMode.Click : TooltipShowMode.KeyboardFocus;\r\n        this.showHideTooltip(this.hovered, focused, lostClickFocus ? false : this.clicked);\r\n    }\r\n\r\n    /**\r\n     * Host listeners for tooltip mouse events\r\n     */\r\n    @HostListener(ToolTipMouseEvent.mouseEnter, ['$event'])\r\n    @HostListener(ToolTipMouseEvent.mouseLeave, ['$event'])\r\n    public onMouseEvent(event: Event): void {\r\n        if (MsftSme.applyBitwiseAnd(this.smeTooltipShowOn, TooltipShowMode.Hover)) {\r\n            // on mouse enter/leave change hovered state\r\n            const hovered = event.type === ToolTipMouseEvent.mouseEnter || (this.hovered && event.type !== ToolTipMouseEvent.mouseLeave);\r\n            this.tooltipTrigger = TooltipShowMode.Hover;\r\n            this.showHideTooltip(hovered, this.focused, this.clicked);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Host listeners for click and enter\r\n     */\r\n    @HostListener('click', ['$event'])\r\n    @HostListener('keydown.enter', ['$event'])\r\n    @HostListener('keydown.space', ['$event'])\r\n    public onClick(event: Event): void {\r\n        if (MsftSme.applyBitwiseAnd(this.smeTooltipShowOn, TooltipShowMode.Click)) {\r\n            this.showHideTooltip(this.hovered, this.focused, true);\r\n            event.preventDefault();\r\n            event.stopPropagation();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Shows or hides the tooltip if either the hover or focused states are true\r\n     * @param hovered indicates the element is hovered\r\n     * @param focused indicates the element is focused\r\n     */\r\n    private showHideTooltip(hovered = this.hovered, focused = this.focused, clicked = this.clicked) {\r\n        // Only emits on status changed.\r\n        if (this.smeTooltipEnableEvents) {\r\n            if (focused !== this.focused) {\r\n                focused ?\r\n                    this.toolTipFocusEventTriggered.emit(ToolTipFocusEvent.focusIn) :\r\n                    this.toolTipFocusEventTriggered.emit(ToolTipFocusEvent.focusOut);\r\n            }\r\n\r\n            if (hovered !== this.hovered) {\r\n                hovered ?\r\n                    this.toolTipMouseEventTriggered.emit(ToolTipMouseEvent.mouseEnter) :\r\n                    this.toolTipMouseEventTriggered.emit(ToolTipMouseEvent.mouseLeave);\r\n            }\r\n        }\r\n\r\n        this.hovered = hovered;\r\n        this.focused = focused;\r\n        this.clicked = clicked;\r\n\r\n        if (this.shouldShow && !this.shown) {\r\n            this.show();\r\n        } else if (!this.shouldShow && this.shown) {\r\n            this.hide();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Shows the tooltip.\r\n     */\r\n    @Debounce()\r\n    public show(showOnShortCut: boolean = false, restoreFocusTo?: HTMLElement) {\r\n        if ((this.shouldShow || showOnShortCut) && !this.shown) {\r\n            // Explicitly set the tooltip to be read when using the shortcut, otherwise do not.\r\n            this.tooltipHost.show(this.getTooltipOptions(restoreFocusTo, showOnShortCut));\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Hides the tooltip.\r\n     */\r\n    @Debounce()\r\n    public hide() {\r\n        if (this.shown\r\n            && (!this.shouldShow\r\n                || (this.elementRef.nativeElement\r\n                    && this.elementRef.nativeElement.disabled === true))) {\r\n            // If it is showing and shouldn't be or if it is showing and disabled\r\n            this.tooltipHost.hide(this.componentId);\r\n        }\r\n    }\r\n\r\n    private getTooltipOptions(restoreFocusTo?: HTMLElement, shouldRead?: boolean): TooltipOptions {\r\n        return {\r\n            targetid: this.componentId,\r\n            contentId: this.idBag.tooltip,\r\n            title: this.title,\r\n            template: this.smeTooltip,\r\n            context: this.smeTooltipContext,\r\n            element: this.hostElement,\r\n            restoreFocusTo: restoreFocusTo || <HTMLElement>document.activeElement,\r\n            placement: this.placement,\r\n            showOn: this.smeTooltipShowOn,\r\n            shouldRead: shouldRead,\r\n            onStateChanged: () => this.showHideTooltip(),\r\n            onWindowClick: () => this.showHideTooltip(this.hovered, this.focused, this.clicked),\r\n            triggeredFrom: this.tooltipTrigger\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Determines if the text node content is truncated.\r\n     */\r\n    private getIsTruncated(): boolean {\r\n        const host = <HTMLElement>this.hostElement.nativeElement;\r\n        const ellipsisParent = Dom.getAncestor(host, (e) => getComputedStyle(e).textOverflow === 'ellipsis');\r\n        if (!ellipsisParent) {\r\n            return false;\r\n        }\r\n\r\n        const measureElement = document.createElement('span');\r\n        // position element off screen\r\n        measureElement.style.display = 'inline';\r\n        measureElement.style.width = 'auto';\r\n        measureElement.style.visibility = 'hidden';\r\n        measureElement.style.position = 'absolute';\r\n        measureElement.style.right = '-10000px';\r\n        measureElement.style.bottom = '-10000px';\r\n        measureElement.innerHTML = host.textContent;\r\n\r\n        // use same font as host element\r\n        const hostStyle = getComputedStyle(host);\r\n        const ellipsesParentStyle = getComputedStyle(ellipsisParent);\r\n        measureElement.style.fontFamily = hostStyle.fontFamily;\r\n        measureElement.style.fontVariant = hostStyle.fontVariant;\r\n        measureElement.style.fontSize = hostStyle.fontSize;\r\n        measureElement.style.fontStyle = hostStyle.fontStyle;\r\n        measureElement.style.fontWeight = hostStyle.fontWeight;\r\n        measureElement.style.lineHeight = hostStyle.lineHeight;\r\n        measureElement.style.letterSpacing = hostStyle.letterSpacing;\r\n        measureElement.style.padding = ellipsesParentStyle.padding;\r\n\r\n        // append the measure element to the dom and compare width with the ellipsisParent\r\n        document.body.append(measureElement);\r\n        const ellipsesParentWidth = ellipsisParent.getBoundingClientRect().width;\r\n        const measureWidth = measureElement.getBoundingClientRect().width;\r\n        const isTruncated = ellipsesParentWidth < measureWidth;\r\n        measureElement.remove();\r\n\r\n        // this logging is to verbose, but useful for debugging.\r\n        // Logging.logDebug(\r\n        //     this.logSourceName,\r\n        //     `Truncation Calculated: ${isTruncated}`,\r\n        //     {\r\n        //         ellipsesParentWidth: ellipsesParentWidth,\r\n        //         measureWidth: measureWidth\r\n        //     }\r\n        // );\r\n        return isTruncated;\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { MarkdownModule } from '../../directives/markdown/markdown.module';\r\nimport { SmeTemplateOutletModule } from '../../directives/template-outlet/template-outlet.module';\r\nimport { TooltipHostComponent } from './tooltip-host.component';\r\nimport { TooltipZoneDirective } from './tooltip-zone.directive';\r\nimport { TooltipDirective } from './tooltip.directive';\r\n\r\n@NgModule({\r\n    exports: [\r\n        TooltipDirective,\r\n        TooltipZoneDirective,\r\n        TooltipHostComponent\r\n    ],\r\n    declarations: [\r\n        TooltipDirective,\r\n        TooltipZoneDirective,\r\n        TooltipHostComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        MarkdownModule,\r\n        SmeTemplateOutletModule\r\n    ]\r\n})\r\nexport class TooltipModule {\r\n    /**\r\n     * Angular convention for singleton services.\r\n     * @see https://angular.io/guide/singleton-services\r\n     */\r\n    public static forRoot(): ModuleWithProviders<TooltipModule> {\r\n        return {\r\n            ngModule: TooltipModule,\r\n            providers: []\r\n        };\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { SmeUxComponent } from './sme-ux.component';\r\n\r\n@NgModule({\r\n    exports: [SmeUxComponent],\r\n    declarations: [SmeUxComponent],\r\n    imports: [\r\n        CommonModule,\r\n        TooltipModule\r\n    ]\r\n})\r\nexport class SmeUxModule { }\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { SmeUxModule } from '../ux/sme-ux.module';\r\nimport { BackgroundExtensionRootComponent } from './background-extension-root.component';\r\nimport { UxExtensionRootComponent } from './ux-extension-root.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        UxExtensionRootComponent,\r\n        BackgroundExtensionRootComponent\r\n    ],\r\n    imports: [CommonModule, RouterModule, SmeUxModule],\r\n    exports: [\r\n        UxExtensionRootComponent,\r\n        BackgroundExtensionRootComponent\r\n    ]\r\n})\r\nexport class ExtensionRootModule { }\r\n","<div class=\"sme-accordion-panel\">\r\n  <div class=\"sme-arrange-stack-h sme-panel-header sme-layout-flex sme-position-flex-align-center\" [class.sme-panel-header-border-radius]=\"borderRadius\"\r\n    [class.sme-panel-header-border-radius-opened]=\"borderRadius && opened\">\r\n    <div #accordionPanelButton [class.sme-focus-zone]=\"canClose\" [class.sme-panel-header-border-radius]=\"borderRadius\"\r\n      [class.sme-panel-header-border-radius-opened]=\"borderRadius && opened\" [attr.aria-expanded]=\"!!opened\"\r\n      [attr.aria-label]=\"header\" tabindex=\"0\"\r\n      class=\"sme-button sme-button-align-left sme-button-trigger sme-position-flex-auto sme-panel-expander\"\r\n      (click)=\"onToggle()\">\r\n      <span *ngIf=\"canClose\" class=\"sme-position-flex-none sme-icon sme-position-stretch-v\"\r\n        [ngClass]=\"{'sme-icon-chevronDown':opened, 'sme-icon-chevronRight': !opened}\"></span>\r\n      <span class=\"sme-arrange-ellipsis sme-position-stretch-v\" [title]=\"header\">{{ header }}</span>\r\n    </div>\r\n    <ng-content select=\"sme-panel-control\"></ng-content>\r\n  </div>\r\n  <div class=\"sme-panel-body\" *ngIf=\"opened\" [class.sme-padding-inset-sm]=\"paddingInset\">\r\n    <ng-content></ng-content>\r\n  </div>\r\n</div>\r\n","import { Component, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'sme-panel-control',\r\n    template: '<ng-content></ng-content>'\r\n})\r\nexport class PanelControlComponent {\r\n    /**\r\n     * Best effort to make sure the buttons, texts can be focused.\r\n     */\r\n    @HostBinding('class.sme-focus-zone')\r\n    public defaultFocusZone = true;\r\n}\r\n\r\n@Component({\r\n    selector: 'sme-accordion-panel',\r\n    templateUrl: './accordion-panel.component.html'\r\n})\r\nexport class AccordionPanelComponent implements OnInit {\r\n    /**\r\n     * It determines the header for the panel.\r\n     */\r\n    @Input()\r\n    public header: string;\r\n\r\n    /**\r\n     * It indicates whether the panel is opened.\r\n     */\r\n    public opened = true;\r\n\r\n    /**\r\n     * It indicates whether the panel is initially opened.\r\n     * This value will no longer be respected after the control fully loaded.\r\n     */\r\n    @Input()\r\n    public initialOpened = true;\r\n\r\n    /**\r\n     * It indicates whether the panel is expandable.\r\n     */\r\n    @Input()\r\n    public isExpandable = true;\r\n\r\n    /**\r\n     * It determines the border radius for the panel.\r\n     * True will apply border radius to have round corners.\r\n     */\r\n    @Input()\r\n    public borderRadius = false;\r\n\r\n    /**\r\n     * It determines the padding inset for the panel body.\r\n     * True will apply a default padding to the panel body.\r\n     */\r\n    @Input()\r\n    public paddingInset = false;\r\n\r\n    /**\r\n     * It indicates whether the panel can be closed.\r\n     */\r\n    public canClose: boolean;\r\n\r\n    public ngOnInit() {\r\n        this.opened = !!this.initialOpened;\r\n        this.canClose = this.isExpandable;\r\n    }\r\n\r\n    @Output()\r\n    public toggled: EventEmitter<AccordionPanelComponent> = new EventEmitter<AccordionPanelComponent>();\r\n\r\n    /**\r\n     * The on toggle function implementation.\r\n     */\r\n    public onToggle(): void {\r\n        if (!this.isExpandable) {\r\n            return;\r\n        }\r\n\r\n        this.opened = !this.opened;\r\n        this.toggled.emit(this);\r\n    }\r\n}\r\n","import { AfterContentInit, AfterViewInit, Component, ContentChildren, Injector, Input, QueryList } from '@angular/core';\r\nimport { merge, Observable, of } from 'rxjs';\r\nimport { mergeMap } from 'rxjs/operators';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { AccordionPanelComponent } from './accordion-panel/accordion-panel.component';\r\n\r\n@Component({\r\n    selector: 'sme-accordion',\r\n    templateUrl: './accordion.component.html'\r\n})\r\nexport class AccordionComponent extends CoreBaseComponent implements AfterContentInit, AfterViewInit {\r\n\r\n    private _canCloseAny: boolean;\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'AccordionComponent';\r\n    }\r\n\r\n    @ContentChildren(AccordionPanelComponent)\r\n    public panels: QueryList<AccordionPanelComponent>;\r\n\r\n    @Input()\r\n    public canOpenMultiple: boolean;\r\n\r\n    @Input()\r\n    public canCloseAll: boolean;\r\n\r\n    @Input()\r\n    public set canCloseAny(value: boolean) {\r\n        this._canCloseAny = value;\r\n\r\n        if (this.panels) {\r\n            this.panels.forEach(p => p.canClose = this._canCloseAny);\r\n        }\r\n    }\r\n\r\n    public get canCloseAny(): boolean {\r\n        return this._canCloseAny;\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.canOpenMultiple = true;\r\n        this.canCloseAll = true;\r\n        this.canCloseAny = false;\r\n    }\r\n\r\n    public ngAfterContentInit() {\r\n        this.subscriptions.push(\r\n            merge(\r\n                of(null).pipe(mergeMap(() => this.getToggleObservables(this.panels))),\r\n                this.panels.changes.pipe(\r\n                    mergeMap(panels => {\r\n                        return this.getToggleObservables(panels);\r\n                    })\r\n                )\r\n            ).subscribe(panel => this.onPanelToggled(panel)));\r\n\r\n        this.subscriptions.push(\r\n            merge(\r\n                of(null).pipe(mergeMap(() => this.getAllPanelObservables(this.panels))),\r\n                this.panels.changes.pipe(\r\n                    mergeMap((panels: AccordionPanelComponent[]) => {\r\n                        return this.getToggleObservablesCore(panels);\r\n                    })\r\n                )\r\n            ).subscribe(panel => panel.canClose = this.canCloseAny));\r\n    }\r\n\r\n    private getToggleObservablesCore(panels: AccordionPanelComponent[]): Observable<AccordionPanelComponent> {\r\n        const observables = panels.map((panel: AccordionPanelComponent) => {\r\n            return panel.toggled;\r\n        });\r\n        return merge(...observables);\r\n    }\r\n\r\n    private getToggleObservables(panels: QueryList<AccordionPanelComponent>): Observable<AccordionPanelComponent> {\r\n        const panelArray = panels.toArray();\r\n        return this.getToggleObservablesCore(panelArray);\r\n    }\r\n\r\n    private getAllPanelObservables(panels: QueryList<AccordionPanelComponent>): Observable<AccordionPanelComponent> {\r\n        const observables = panels.toArray().map((panel: AccordionPanelComponent) => {\r\n            return of(panel);\r\n        });\r\n        return merge(...observables);\r\n    }\r\n\r\n    public onPanelToggled(panel: AccordionPanelComponent) {\r\n        if (panel.opened) {\r\n            if (!this.canOpenMultiple) {\r\n                this.closePanelsExcept(panel);\r\n            }\r\n        } else {\r\n            if ((!this.canCloseAll && !this.panels.some(p => p.opened)) || !this.canCloseAny) {\r\n                panel.opened = true;\r\n            }\r\n        }\r\n    }\r\n\r\n    public closePanelsExcept(panel: AccordionPanelComponent) {\r\n        this.panels.toArray().forEach(p => {\r\n            if (p !== panel) {\r\n                p.opened = false;\r\n            }\r\n        });\r\n    }\r\n}\r\n","<ng-content></ng-content>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport {\r\n    AccordionPanelComponent,\r\n    PanelControlComponent\r\n} from './accordion-panel/accordion-panel.component';\r\nimport { AccordionComponent } from './accordion.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        AccordionComponent,\r\n        AccordionPanelComponent,\r\n        PanelControlComponent\r\n    ],\r\n    declarations: [\r\n        AccordionComponent,\r\n        AccordionPanelComponent,\r\n        PanelControlComponent\r\n    ],\r\n    imports: [\r\n        RouterModule,\r\n        CommonModule\r\n    ]\r\n})\r\nexport class AccordionModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { Dropdown } from './models';\r\nimport { DropdownHeightCalculationResult } from './models/dropdown-height-calculation-result';\r\nimport { DropdownHeightCalculationSchema } from './models/dropdown-height-schema';\r\n\r\nexport type Events = KeyboardEvent | MouseEvent | FocusEvent;\r\n@Injectable()\r\n/**\r\n * Service for maintaining dropdown state.\r\n * Only one dropdown can be opened at a time.\r\n * This does not support nested dropdowns.\r\n */\r\nexport class DropdownService {\r\n    // Minimum space above or below the dropdown to determine positioning.\r\n    private static minSpaceForDropdown = 300;\r\n    // If the original height for the whole dropdown is 2 times the available space\r\n    // should display as full height\r\n    private static shouldUseFullHeightDropdownRatio = 2;\r\n\r\n    private onDocumentClickBinding = this.onDocumentClick.bind(this);\r\n    private onDocumentKeydownBinding = this.onDocumentKeydown.bind(this);\r\n    private onWindowScrollBinding = this.onWindowScroll.bind(this);\r\n    private onWindowBlurBinding = this.onWindowBlur.bind(this);\r\n    private activeDropdown: Dropdown;\r\n    /**\r\n     * This saves the records for the last opened dropdowns\r\n     */\r\n    private dropdownList: Array<Dropdown> = [];\r\n    // It defines the height for the dropdown with the specific window height.\r\n    // This will be enabled only if <sme-dropdown [calculateHeight]=\"true\">\r\n    private heightCalculationObject: DropdownHeightCalculationSchema = {\r\n        small: {\r\n            // when the window height is smaller than 300px\r\n            // The smallest margin top and bottom\r\n            max: 300,\r\n            margin: 5,\r\n            wholeHeight: true\r\n        },\r\n        medium: {\r\n            // when then window height is within [301,500]\r\n            // The smallest margin top and bottom\r\n            min: 300,\r\n            max: 500,\r\n            margin: 10\r\n        },\r\n        large: {\r\n            // when then window height is greater than 500px\r\n            // The smallest margin top and bottom\r\n            min: 500,\r\n            margin: 20\r\n        }\r\n    };\r\n\r\n    /**\r\n     * opens a dropdown and sets it to active\r\n     * @param dropdown The dropdown to open\r\n     * @param calculateHeight Whether to do height calculation\r\n     * @param event The event\r\n     */\r\n    public open(dropdown: Dropdown, calculateHeight?: boolean, displayToSide?: boolean): Promise<void> {\r\n        return new Promise((resolve) => {\r\n            let isCurrentDropdownChildFromActiveDropdown = false;\r\n            if (!this.activeDropdown) {\r\n                // if there is not an active dropdown, add handler for auto closing the dropdown\r\n                window.document.addEventListener('click', this.onDocumentClickBinding);\r\n                window.document.addEventListener('keydown', this.onDocumentKeydownBinding);\r\n                window.addEventListener('scroll', this.onWindowScrollBinding, true);\r\n                window.addEventListener('blur', this.onWindowBlurBinding);\r\n            } else {\r\n                // if the passed in dropdown is not the active dropdown\r\n                // if current dropdown is the child of the active dropdown\r\n                // we should keep both dropdown opening\r\n                if (this.activeDropdown !== dropdown) {\r\n                    const dropdownNode = dropdown.contentElement.nativeElement;\r\n                    const activeDropdownChildren =\r\n                        this.activeDropdown.contentElement.nativeElement.querySelectorAll('.sme-layout-dropdown');\r\n                    if (activeDropdownChildren.length > 0) {\r\n                        for (let i = 0; i < activeDropdownChildren.length; i++) {\r\n                            if (activeDropdownChildren[i].isSameNode(dropdownNode)) {\r\n                                isCurrentDropdownChildFromActiveDropdown = true;\r\n                            }\r\n                        }\r\n                    }\r\n                    if (isCurrentDropdownChildFromActiveDropdown) {\r\n                        this.activeDropdown.isOpen = true;\r\n                    } else {\r\n                        this.activeDropdown.isOpen = false;\r\n                    }\r\n\r\n                } else {\r\n                    // otherwise close the active dropdown\r\n                    this.activeDropdown.isOpen = false;\r\n                }\r\n            }\r\n            // if not from the same parent, close the previous active element's directs\r\n            // then open current active dropdown\r\n            // if need to close, then need to close first and then open\r\n            this.closeNestedOnOpen(dropdown, this.activeDropdown, isCurrentDropdownChildFromActiveDropdown).then(() => {\r\n                // set the new dropdown as the open dropdown\r\n                this.activeDropdown = dropdown;\r\n                this.activeDropdown.isOpen = true;\r\n\r\n                // push new expanded dropdown component\r\n                if (this.activeDropdown && !this.dropdownList.includes(this.activeDropdown)) {\r\n                    this.dropdownList.push(this.activeDropdown);\r\n                }\r\n\r\n                this.updatePosition(dropdown, calculateHeight, displayToSide);\r\n\r\n                resolve();\r\n            });\r\n        });\r\n    }\r\n\r\n    /**\r\n     * updates the position of a dropdown so that it remains on screen\r\n     * @param dropdown The dropdown to update\r\n     * @param calculateHeight Defines whether to calculate height of the dropdown based on window size.\r\n     */\r\n    public updatePosition(dropdown: Dropdown, calculateHeight?: boolean, displayToSide?: boolean) {\r\n        const contentElement = (<HTMLElement>dropdown.contentElement.nativeElement);\r\n\r\n        // reset dropdown overflow\r\n        dropdown.overflowX = false;\r\n        dropdown.overflowY = false;\r\n\r\n        // Reset the content height and width then the content.scrollHeight and scrollWidth can get the actual content dimensions\r\n        contentElement.style.height = '';\r\n        contentElement.style.width = '';\r\n\r\n        const toggleRect = (<HTMLElement>dropdown.toggleElement.nativeElement).getBoundingClientRect();\r\n\r\n        // we don't allow the dropdown to exceed the height or width of the window, so account for that as well\r\n        const rectWidth = contentElement.scrollWidth;\r\n        const rectHeight = contentElement.scrollHeight;\r\n\r\n        // Set the left position of the dropdown\r\n        this.dropdownSetPositionLeft(toggleRect, dropdown, rectWidth, displayToSide);\r\n\r\n        // Set the right position of the dropdown\r\n        this.dropdownSetPositionTop(toggleRect, dropdown, rectHeight, calculateHeight, displayToSide);\r\n\r\n        if (!dropdown.dropdownApplyFormFieldOffsetWidth) {\r\n            // min-content would be a good choice but won't be supported by ie or edge\r\n            (<HTMLElement>dropdown.contentElement.nativeElement).style.maxWidth = 'inherit';\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Marks a dropdown as closed, if the dropdown is the active dropdown,\r\n     * the active dropdown is reset and event handlers are removed.\r\n     * @param dropdown The dropdown to close\r\n     */\r\n    public close(dropdown: Dropdown, event?: Events) {\r\n        // mark the dropdown as closed\r\n        dropdown.isOpen = false;\r\n        // return if the passed in dropdown is not the active dropdown\r\n        if (this.activeDropdown !== dropdown) {\r\n            return;\r\n        }\r\n\r\n        // reset active dropdown to null\r\n        this.activeDropdown = null;\r\n\r\n        if (event) {\r\n            this.closeNested(dropdown, event);\r\n        }\r\n\r\n        // stop listening to document events if no active dropdown\r\n        if (!this.activeDropdown) {\r\n            window.document.removeEventListener('click', this.onDocumentClickBinding);\r\n            window.document.removeEventListener('keydown', this.onDocumentKeydownBinding);\r\n            window.removeEventListener('scroll', this.onWindowScrollBinding, true);\r\n            window.removeEventListener('blur', this.onWindowBlurBinding);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Handles document clicks while a dropdown is open\r\n     */\r\n    private onDocumentClick(event: MouseEvent) {\r\n        // stop if there is no dropdown\r\n        if (!this.activeDropdown) {\r\n            return;\r\n        }\r\n\r\n        // stop if the clicked element is also the toggle element for the active dropdown\r\n        if (this.activeDropdown.toggleElement && this.activeDropdown.toggleElement.nativeElement === event.target) {\r\n            return;\r\n        }\r\n\r\n        // check if the click occured an element that is inside the dropdown content\r\n        if (this.activeDropdown.contentElement &&\r\n            this.activeDropdown.contentElement.nativeElement.contains(event.target)) {\r\n\r\n            // stop if the element is an element that handles input, return\r\n            if (/input|textarea/i.test((<any>event.target).tagName)) {\r\n                return;\r\n            }\r\n\r\n            // stop if the target element has the 'sme-dropdown-interaction-enabled' class on one of its ancestors up to the content element\r\n            let element = <HTMLElement>event.target;\r\n            while (!this.activeDropdown.contentElement.nativeElement.isSameNode(element)) {\r\n                if (element.classList.contains('sme-dropdown-interaction-enabled')) {\r\n                    return;\r\n                }\r\n                element = element.parentElement;\r\n            }\r\n        }\r\n\r\n        // otherwise, close the dropdown\r\n        this.close(this.activeDropdown, event);\r\n    }\r\n\r\n    /**\r\n     * Handles document keydowns while a dropdown is open\r\n     */\r\n    private onDocumentKeydown(event: KeyboardEvent) {\r\n        // if the esc key is pressed, close the popup and focus on the toggle element\r\n        if (event.keyCode === KeyCode.Escape) {\r\n            if (this.activeDropdown && this.activeDropdown.toggleElement) {\r\n                const docElement = this.activeDropdown.toggleElement.nativeElement;\r\n                const nextElement = Dom.getFirstFocusableDescendent(docElement) || Dom.getNextFocusableElement(docElement);\r\n\r\n                if (nextElement) {\r\n                    nextElement.focus();\r\n                }\r\n            }\r\n\r\n            this.close(this.activeDropdown);\r\n            return;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Handles document scrolling while a dropdown is open\r\n     */\r\n    private onWindowScroll(event: Event) {\r\n        // stop if there is no dropdown\r\n        if (!this.activeDropdown) {\r\n            return;\r\n        }\r\n        // check if the scroll occured on an element that is inside the dropdown content\r\n        if (this.activeDropdown.contentElement &&\r\n            this.activeDropdown.contentElement.nativeElement.contains(event.target)) {\r\n            return;\r\n        }\r\n        // otherwise, close dropdown(s)\r\n        if (this.dropdownList && this.dropdownList.length) {\r\n            this.closeNestedAllExpandedDropdowns(this.dropdownList);\r\n\r\n            // close a dropdown that appears inside a context menu\r\n            if (this.activeDropdown.isContextMenu) {\r\n                this.close(this.activeDropdown);\r\n            }\r\n        } else {\r\n            this.close(this.activeDropdown);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Handles window blurs while a dropdown is open\r\n     */\r\n    private onWindowBlur(event: FocusEvent) {\r\n        // close the dropdown if we leave the window (this also works to prevent to close dropdowns in iframes)\r\n        this.close(this.activeDropdown, event);\r\n    }\r\n\r\n    /**\r\n    * Handles the position calculation for the left of the dropdown container\r\n    * Decides whether to place the dropdown left, right, or on top of the toggle button\r\n    */\r\n    private dropdownSetPositionLeft(\r\n        toggleRect: DOMRect | ClientRect,\r\n        dropdown: Dropdown,\r\n        rectWidth: number,\r\n        displayToSide?: boolean): void {\r\n\r\n        // modify the left position of the rect to account for any old offset\r\n        let rectLeft = toggleRect.left;\r\n\r\n        // get the viewport width\r\n        const windowWidth = window.innerWidth;\r\n\r\n        // If displayToSide attribute is set, display dropdown to side of toggleRect, else place it above or below\r\n        if (!!displayToSide) {\r\n            const spaceLeft = toggleRect.left;\r\n            const spaceRight = windowWidth - toggleRect.right;\r\n\r\n            // Always try to put dropdown to the direction that has more space. First try to put on the right, if not then put left\r\n            if (spaceRight >= DropdownService.minSpaceForDropdown || rectWidth < spaceRight || spaceRight > spaceLeft) {\r\n                if (rectWidth > spaceRight) {\r\n                    rectWidth = spaceRight;\r\n                    dropdown.overflowX = true;\r\n                }\r\n                // show right of control\r\n                rectLeft = toggleRect.right;\r\n            } else if (rectWidth < spaceLeft) {\r\n                // show left of control\r\n                rectLeft = toggleRect.left - rectWidth;\r\n            } else {\r\n                // if rect is bigger than space to the left and toggle rectangle combined\r\n                if (rectWidth > spaceLeft + toggleRect.width) {\r\n                    rectWidth = spaceLeft + toggleRect.width;\r\n                    dropdown.overflowX = true;\r\n                }\r\n                // show on top of control\r\n                rectLeft = toggleRect.right - rectWidth;\r\n            }\r\n        } else {\r\n            // Cap width and height to the window dimensions and set appropriate overflow\r\n            if (rectWidth > windowWidth) {\r\n                rectWidth = windowWidth;\r\n                dropdown.overflowX = true;\r\n            }\r\n            if (rectWidth < toggleRect.width) {\r\n                rectWidth = toggleRect.width;\r\n            }\r\n\r\n            if (rectLeft + rectWidth > windowWidth) {\r\n                rectLeft = windowWidth - rectWidth;\r\n            }\r\n        }\r\n\r\n        rectLeft = Math.max(0, rectLeft);\r\n        dropdown.left = rectLeft;\r\n\r\n        (<HTMLElement>dropdown.contentElement.nativeElement).style.left = rectLeft + 'px';\r\n        if (!dropdown.autoWidth) {\r\n            (<HTMLElement>dropdown.contentElement.nativeElement).style.width = rectWidth + 'px';\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Handles the position calculation for the top of the dropdown container\r\n     * Decides whether to place the dropdown above or below the toggle button\r\n     */\r\n    private dropdownSetPositionTop(\r\n        toggleRect: DOMRect | ClientRect,\r\n        dropdown: Dropdown,\r\n        rectHeight: number,\r\n        calculateHeight?: boolean,\r\n        displayToSide?: boolean): void {\r\n\r\n        // need to remember the original value for small height window rendering\r\n        const originalRectHeight = rectHeight;\r\n\r\n        // modify the top position of the rect to account for any old offset\r\n        let rectTop = toggleRect.bottom;\r\n\r\n        // get the viewport height\r\n        const windowHeight = window.innerHeight;\r\n\r\n        const spaceAbove = toggleRect.top;\r\n        const spaceBelow = windowHeight - toggleRect.bottom;\r\n\r\n        // Always try to put dropdown to the direction that has more space.\r\n        let shouldDisplayingAbove = false;\r\n        // First try to put on the bottom, if not then put on above\r\n        if (spaceBelow >= DropdownService.minSpaceForDropdown || rectHeight < spaceBelow || spaceBelow > spaceAbove) {\r\n            if (rectHeight > spaceBelow) {\r\n                rectHeight = spaceBelow;\r\n                dropdown.overflowY = true;\r\n            }\r\n            // show below the control.\r\n            rectTop = displayToSide === true ? toggleRect.top : toggleRect.bottom;\r\n        } else {\r\n            // if rect is bigger than space above\r\n            if (rectHeight > spaceAbove) {\r\n                rectHeight = spaceAbove;\r\n                dropdown.overflowY = true;\r\n            }\r\n            // show above the control.\r\n            rectTop = displayToSide === true ? toggleRect.bottom - rectHeight : toggleRect.top - rectHeight;\r\n            shouldDisplayingAbove = true;\r\n        }\r\n\r\n        rectTop = Math.max(0, rectTop);\r\n        dropdown.top = rectTop;\r\n\r\n        if (calculateHeight) {\r\n            const heightTopObject =\r\n                this.dropdownCalculateHeightTop(\r\n                    rectHeight,\r\n                    rectTop,\r\n                    shouldDisplayingAbove,\r\n                    spaceAbove,\r\n                    spaceBelow,\r\n                    originalRectHeight\r\n                );\r\n            (<HTMLElement>dropdown.contentElement.nativeElement).style.height = heightTopObject.height + 'px';\r\n            (<HTMLElement>dropdown.contentElement.nativeElement).style.top = heightTopObject.top + 'px';\r\n        } else {\r\n            (<HTMLElement>dropdown.contentElement.nativeElement).style.height = rectHeight + 'px';\r\n            (<HTMLElement>dropdown.contentElement.nativeElement).style.top = rectTop + 'px';\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It handles the height calculation for the dropdown container\r\n     * It calculates based on the heightCalculationObject\r\n     * First try to put the dropdown container to decide whether a scroll bar is needed\r\n     * Then apply the height from calculation\r\n     */\r\n    private dropdownCalculateHeightTop(rectHeight: number, rectTop: number, shouldDisplayingAbove: boolean, toggleTop: number,\r\n        toggleBottom: number, originalRectHeight: number): DropdownHeightCalculationResult {\r\n        const windowHeight = window.innerHeight;\r\n        let actualTop = rectTop;\r\n        let actualHeight = rectHeight;\r\n        const toggleHeight = shouldDisplayingAbove ? toggleTop : toggleBottom;\r\n        const windowHeightMargin = this.getDropdownMargin(windowHeight);\r\n        const shouldUpdateHeight = this.shouldUpdateHeight(rectHeight, toggleHeight, windowHeightMargin);\r\n\r\n        if (shouldUpdateHeight) {\r\n            // handles special cases where dropdown body is too big, use full height mode\r\n            if (originalRectHeight >= toggleHeight * DropdownService.shouldUseFullHeightDropdownRatio) {\r\n                actualTop = windowHeightMargin;\r\n                // if original body exceeded the whole window height, use window height\r\n                // otherwise use the original height\r\n                if (originalRectHeight >= windowHeight - 2 * windowHeightMargin) {\r\n                    actualHeight = windowHeight - 2 * windowHeightMargin;\r\n                } else {\r\n                    actualHeight = originalRectHeight;\r\n                }\r\n            } else {\r\n                if (windowHeight <= this.heightCalculationObject.small.max) {\r\n                    if (originalRectHeight > windowHeight - 2 * windowHeightMargin) {\r\n                        // whole height\r\n                        actualHeight = windowHeight - 2 * windowHeightMargin;\r\n                        actualTop = windowHeightMargin;\r\n                    } else if (rectHeight > toggleHeight - windowHeightMargin) {\r\n                        // display from top, will cover part of the input box\r\n                        actualHeight = rectHeight - windowHeightMargin;\r\n                        actualTop = windowHeightMargin;\r\n                    }\r\n                } else {\r\n                    // can be only displayed as below or above in bigger screen\r\n                    actualHeight = rectHeight - windowHeightMargin;\r\n                }\r\n            }\r\n\r\n            if (shouldDisplayingAbove) {\r\n                if (toggleTop > actualHeight) {\r\n                    actualTop = toggleTop - actualHeight;\r\n                }\r\n            }\r\n        }\r\n\r\n        return {\r\n            top: actualTop,\r\n            height: actualHeight\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Calculates whether should update the height pixels for the dropdown\r\n     */\r\n    private shouldUpdateHeight(rectHeight: number, toggleHeight: number, windowHeightMargin: number): boolean {\r\n        let res = false;\r\n        if (toggleHeight - rectHeight < windowHeightMargin) {\r\n            res = true;\r\n        }\r\n        return res;\r\n    }\r\n\r\n    /**\r\n     * Get dropdown margin base on the calculation object\r\n     */\r\n    private getDropdownMargin(windowHeight: number) {\r\n        let windowHeightMargin = 0;\r\n        if (windowHeight <= this.heightCalculationObject.small.max) {\r\n            windowHeightMargin = this.heightCalculationObject.small.margin;\r\n        } else if (windowHeight >= this.heightCalculationObject.medium.min && windowHeight <= this.heightCalculationObject.medium.max) {\r\n            windowHeightMargin = this.heightCalculationObject.medium.margin;\r\n        } else if (windowHeight >= this.heightCalculationObject.large.min) {\r\n            windowHeightMargin = this.heightCalculationObject.large.margin;\r\n        }\r\n        return windowHeightMargin;\r\n    }\r\n\r\n    /**\r\n     * Deal with nested close for dropdown\r\n     * @param dropdown the active dropdown\r\n     * @param event contains the current event target\r\n     */\r\n    public closeNested(dropdown: Dropdown, event: Events) {\r\n        if (dropdown && event) {\r\n            let eventTarget = <HTMLElement>event.target;\r\n            // assign active dropdown\r\n            if (this.dropdownList && this.dropdownList.length) {\r\n                if (eventTarget) {\r\n                    if (eventTarget.classList) {\r\n                        if (!eventTarget.classList.contains('.sme-layout-dropdown')) {\r\n                            eventTarget = Dom.getAncestor(eventTarget, element => element.classList.contains('sme-layout-dropdown'));\r\n                        }\r\n                    } else {\r\n                        // this handles when the event target is Window object that does't contains event.target\r\n                        eventTarget = null;\r\n                    }\r\n\r\n                } else if (eventTarget.hasOwnProperty('querySelector') && eventTarget.querySelector('sme-dropdown')) {\r\n                    eventTarget = eventTarget.querySelector('sme-dropdown');\r\n                }\r\n\r\n                let activeDropdown = null;\r\n                if (eventTarget) {\r\n                    for (let index = 0; index < this.dropdownList.length; index++) {\r\n                        const d = this.dropdownList[index];\r\n                        if (d.contentElement.nativeElement === eventTarget) {\r\n                            activeDropdown = d;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                this.activeDropdown = activeDropdown;\r\n            }\r\n            // close drop-downs\r\n            if (eventTarget) {\r\n                const dropdownsInEventRegion = eventTarget.querySelectorAll('sme-dropdown .sme-dropdown-toggle-container');\r\n                if (dropdownsInEventRegion && dropdownsInEventRegion.length) {\r\n                    // close all children dropdowns\r\n                    // we can only refer to UI level from querySelectorAll, not the component.\r\n                    dropdownsInEventRegion.forEach((d) => {\r\n                        if (d) {\r\n                            d.dispatchEvent(new Event('closeEvent'));\r\n                        }\r\n                    });\r\n                } else {\r\n                    // close all expanded dropdowns\r\n                    this.closeNestedAllExpandedDropdowns(this.dropdownList);\r\n                    this.activeDropdown = null;\r\n                }\r\n            } else {\r\n                // close all expanded dropdowns\r\n                // close child first\r\n                this.closeNestedAllExpandedDropdowns(this.dropdownList);\r\n                this.activeDropdown = null;\r\n            }\r\n        } else {\r\n            return;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It handles closing all the expanded dropdowns\r\n     */\r\n    private closeNestedAllExpandedDropdowns(dropdownList: Array<Dropdown>) {\r\n        if (dropdownList && dropdownList.length) {\r\n            for (let i = dropdownList.length - 1; i >= 0; i--) {\r\n                const element = dropdownList[i];\r\n                if (element && element.contentElement.nativeElement) {\r\n                    const node = element.contentElement.nativeElement;\r\n                    // only close the ones displaying\r\n                    if (!node.classList.contains('sme-layout-hidden')) {\r\n                        this.closeNestedHelper(element);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    @Yield()\r\n    /**\r\n     * It handles closing the dropdown from the component\r\n     */\r\n    private closeNestedHelper(dropdown: Dropdown) {\r\n        if (dropdown) {\r\n            dropdown.isOpen = false;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It handles when opening a dropdown when other dropdown(s) is/are open\r\n     */\r\n    private closeNestedOnOpen(currentDropdown: Dropdown, previousDropdown: Dropdown, isCurrentDropdownChildFromActiveDropdown: boolean):\r\n        Promise<void> {\r\n        return new Promise((resolve) => {\r\n            if (isCurrentDropdownChildFromActiveDropdown || !this.dropdownList || !this.dropdownList.length || !previousDropdown) {\r\n                resolve();\r\n            } else {\r\n                const isFromSameParent = this.isFromSameParent(currentDropdown, previousDropdown);\r\n                const currentDropdownNode = currentDropdown.contentElement.nativeElement;\r\n                const previousDropdownNode = previousDropdown.contentElement.nativeElement;\r\n                const d = Dom;\r\n                // find if there are intersection on parent node. And close till that level.\r\n                // if no intersection, close the previous active dropdown one by one.\r\n                const previousActiveDropdowns = this.dropdownList;\r\n                if (isFromSameParent) {\r\n                    const shouldCloseDropdowns = previousActiveDropdowns.filter((dropdown) => {\r\n                        const allChildren = d.getAllElements(dropdown.contentElement.nativeElement,\r\n                            element => element.classList.contains('sme-layout-dropdown'));\r\n                        if (allChildren.includes(previousDropdownNode) && allChildren.includes(currentDropdownNode)) {\r\n                            return false;\r\n                        }\r\n                        return true;\r\n                    });\r\n                    this.closeNestedAllExpandedDropdowns(shouldCloseDropdowns);\r\n                } else {\r\n                    this.closeNestedAllExpandedDropdowns(this.dropdownList);\r\n                }\r\n            }\r\n\r\n            resolve();\r\n        });\r\n    }\r\n\r\n    /**\r\n     * It handles whether two dropdowns are from the same parent\r\n     */\r\n    private isFromSameParent(currentDropdown: Dropdown, PreviousDropdown: Dropdown) {\r\n        const currentDropdownNode = currentDropdown.contentElement.nativeElement;\r\n        const previousDropdownNode = PreviousDropdown.contentElement.nativeElement;\r\n        const d = Dom;\r\n        const currentDropdownNodeParents = d.getAllAncestors(currentDropdownNode,\r\n            element => element.classList.contains('sme-layout-dropdown'));\r\n        const previousDropdownNodeParents = d.getAllAncestors(previousDropdownNode,\r\n            element => element.classList.contains('sme-layout-dropdown'));\r\n        let res = false;\r\n        for (let i = 0; i < currentDropdownNodeParents.length; i++) {\r\n            const iElement = currentDropdownNodeParents[i];\r\n            for (let j = 0; j < previousDropdownNodeParents.length; j++) {\r\n                const jElement = previousDropdownNodeParents[j];\r\n                if (iElement.isSameNode(jElement)) {\r\n                    res = true;\r\n                }\r\n            }\r\n        }\r\n        return res;\r\n    }\r\n}\r\n","import {\r\n    AfterViewInit,\r\n    Component,\r\n    ElementRef,\r\n    EventEmitter,\r\n    HostBinding,\r\n    HostListener,\r\n    Inject,\r\n    Input,\r\n    OnDestroy,\r\n    OnInit,\r\n    Optional,\r\n    Output,\r\n    Renderer2,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../common/layout';\r\nimport { DropdownService } from './dropdown.service';\r\nimport { Dropdown } from './models';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Dropdown @id sme-dropdown-component @internal}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/dropdown-overview.md}\r\n *\r\n * @example {@label Basic Usage @id basic-usage}\r\n * @file {@filename component.html @filepath ./examples/basic-usage.component.html}\r\n *\r\n * @example {@label Dropdown with advanced content @id advanced-dropdown}\r\n * @file {@filename component.html @filepath ./examples/advanced-dropdown.component.html}\r\n * @file {@filename component.ts @filepath ./examples/advanced-dropdown.component.ts}\r\n *\r\n */\r\n\r\n/**\r\n * Component to create an dropdown\r\n */\r\n@Component({\r\n    selector: 'sme-dropdown',\r\n    templateUrl: './dropdown.component.html'\r\n})\r\nexport class DropdownComponent implements OnDestroy, OnInit, Dropdown, AfterViewInit {\r\n    private layoutChangeSubscriber;\r\n\r\n    /**\r\n     * Event Emitter for when the dropdown opens or closes. Emits a boolean to indicate if the dropdown is open\r\n     * @deprecated since 9/25/2019. Please use 'toggled' instead\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\r\n    @Output() public get onToggled(): EventEmitter<boolean> {\r\n        return this.toggled;\r\n    }\r\n    @Output() public toggled = new EventEmitter<boolean>();\r\n\r\n    /**\r\n     * It indicates should automatically toggle to dropdown when the toggle element is clicked. Defaults to true\r\n     */\r\n    @Input() public autoToggle: boolean;\r\n\r\n    /**\r\n     * It indicates whether to set the dropdown content width to be based on the actual content\r\n     */\r\n    @Input() public autoWidth: boolean;\r\n\r\n    /**\r\n     * It determine whether to calculate height for the dropdown\r\n     */\r\n    @Input()\r\n    public calculateHeight: boolean;\r\n\r\n    /**\r\n     * It determines whether to display dropdown menu to side of toggle. Defaults to below\r\n     */\r\n    @Input()\r\n    public displayToSide: boolean;\r\n\r\n    @Input()\r\n    public isContextMenu = false;\r\n    /**\r\n     * The content element. This must be provided by the DropdownContentDirective or possibly some custom implementation\r\n     */\r\n    @ViewChild('smeDropdownContent')\r\n    public contentElement: ElementRef;\r\n\r\n    /**\r\n     * The toggle element. This must be provided by the DropdownToggleDirective or possibly some custom implementation\r\n     */\r\n    @ViewChild('smeDropdownToggle', { static: true })\r\n    public toggleElement: ElementRef;\r\n\r\n    /**\r\n     * Determine if the dropdown will use the sme-form-field to limit its max-width\r\n     */\r\n    @Input()\r\n    public dropdownApplyFormFieldOffsetWidth = true;\r\n\r\n    /**\r\n     * Indicates the open state of the dropdown\r\n     */\r\n    public isOpen = false;\r\n\r\n    /**\r\n     * Indicates how far the dropdown content has been translated to remain fully on screen\r\n     */\r\n    public left = 0;\r\n\r\n    /**\r\n     * Indicates how far the dropdown content has been translated to remain fully on screen\r\n     */\r\n    public top = 0;\r\n\r\n    /**\r\n     * Indicates if the dropdown is larger than the horizontal space available\r\n     */\r\n    public overflowX = false;\r\n\r\n    /**\r\n     * Indicates if the dropdown is larger than the vertical space available\r\n     */\r\n    public overflowY = false;\r\n\r\n    /**\r\n     * Indicates that dropdown should be disabled.\r\n     */\r\n    @HostBinding('class.sme-disabled')\r\n    @Input() public disabled = false;\r\n\r\n    private unsubscribeToggleClick: Function;\r\n\r\n    /**\r\n     * Initializes a new instance of the DropdownDirective\r\n     */\r\n    constructor(\r\n        private renderer: Renderer2,\r\n        private element: ElementRef,\r\n        private dropdownService: DropdownService,\r\n        @Optional() @Inject(SME_LAYOUT_PROVIDER) private layout: Layout) {\r\n        renderer.addClass(element.nativeElement, 'sme-layout-relative');\r\n        this.autoToggle = true;\r\n    }\r\n\r\n    /**\r\n    * Angulars On Init Lifecycle Hook\r\n    */\r\n    public ngOnInit() {\r\n        if (this.layout) {\r\n            this.layoutChangeSubscriber = this.layout.layoutChanged.subscribe(() => {\r\n                // Use setTimeout to postponed the dropdown UI update to next refresh cycle.\r\n                // This the current refresh cycle can be used for any components to update its own UI which may impact dropdown UI.\r\n                setTimeout(() => {\r\n                    this.dropdownService.updatePosition(this, this.calculateHeight, this.displayToSide);\r\n                });\r\n            });\r\n        }\r\n    }\r\n\r\n    public ngAfterViewInit(): void {\r\n        // load the context menu code here so as to allow all child views to be completely initialized\r\n        if (!this.isContextMenu) {\r\n            this.unsubscribeToggleClick = this.renderer.listen(this.toggleElement.nativeElement, 'click',\r\n                (event) => this.onToggleClick(event));\r\n        } else {\r\n            this.dropdownService.open(this, this.calculateHeight, this.displayToSide).then(() => {\r\n                this.isOpen = true;\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Angulars On Destroy Lifecycle Hook\r\n     */\r\n    public ngOnDestroy() {\r\n        this.close();\r\n        // this.unsubscribeToggleClick();\r\n\r\n        if (this.layoutChangeSubscriber) {\r\n            this.layoutChangeSubscriber.unsubscribe();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Opens this dropdown\r\n     */\r\n    public open() {\r\n        this.toggle(true, this.calculateHeight, this.displayToSide);\r\n    }\r\n\r\n    /**\r\n     * Listen to keyboard event and close dropdown when users do not focus on dropdown list\r\n     */\r\n    @HostListener('keyup', ['$event'])\r\n    public onKeyup(event: KeyboardEvent) {\r\n        if (event.keyCode === KeyCode.Tab) {\r\n            let element = <HTMLElement>event.target;\r\n            while (!this.contentElement.nativeElement.isSameNode(element) && !this.element.nativeElement.isSameNode(element)) {\r\n                if (element.classList.contains('sme-focus-trap')) {\r\n                    return;\r\n                }\r\n                element = element.parentElement;\r\n            }\r\n            this.close(event);\r\n        } else if ((event.keyCode === KeyCode.LeftArrow && (<HTMLElement>event.target).className.indexOf('sme-dropdown-toggle') > -1)) {\r\n            this.close(event);\r\n        } else if (event.keyCode === KeyCode.Escape) {\r\n            // prevent event propagation when inside a dialog\r\n            event.preventDefault();\r\n            event.stopPropagation();\r\n            event.stopImmediatePropagation();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Closes this dropdown\r\n     * @param event keyboard event including the current event target\r\n     */\r\n    public close(event?: KeyboardEvent) {\r\n        this.toggle(false, null, this.displayToSide, event);\r\n    }\r\n\r\n    /**\r\n     * Toggles the dropdown\r\n     * @param open Optional. If provided, forces the dropdown open or closed.\r\n     */\r\n    public toggle(open?: boolean, calculateHeight?: boolean, displayToSide?: boolean, event?: KeyboardEvent) {\r\n        // If we are already in the correct state, return\r\n        if (!MsftSme.isNullOrUndefined(open) && open === this.isOpen) {\r\n            return;\r\n        }\r\n\r\n        if (this.isOpen) {\r\n            // close if opened\r\n            this.dropdownService.close(this);\r\n            if (event) {\r\n                this.dropdownService.closeNested(this, event);\r\n            }\r\n            // emit the current state of the dropdown\r\n            this.onToggled.emit(this.isOpen);\r\n        } else {\r\n            // open if closed\r\n            this.dropdownService.open(this, calculateHeight, displayToSide).then(() => {\r\n                this.toggleElement.nativeElement.addEventListener('closeEvent', () => {\r\n                    this.isOpen = false;\r\n                }, false);\r\n                // emit the current state of the dropdown\r\n                this.onToggled.emit(this.isOpen);\r\n            });\r\n        }\r\n\r\n    }\r\n\r\n    /**\r\n     * Handler for the click event for the toggle element\r\n     * @param event the mouse event of the click\r\n     * @param manualToggle determine whether this is manually toggle\r\n     */\r\n    public onToggleClick(event: any, manualToggle?: boolean) {\r\n        event.stopPropagation();\r\n\r\n        if (this.autoToggle || manualToggle) {\r\n            // toggle the dropdown if not disabled\r\n            if (!this.disabled) {\r\n                this.toggle(null, this.calculateHeight, this.displayToSide);\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n}\r\n","<div #smeDropdownToggle class=\"sme-dropdown-toggle-container\" data-uta-id=\"dropdown-toggle\">\r\n  <ng-content select=\".sme-dropdown-toggle\"></ng-content>\r\n</div>\r\n<div #smeDropdownContent\r\n  class=\"sme-layout-dropdown sme-layout-fixed sme-position-below sme-scheme-dropdown sme-layer-nav sme-shadow-dropdown\"\r\n  [ngClass]=\"{'sme-layout-hidden': !isOpen, 'sme-layout-inline-block': isOpen, 'sme-arrange-overflow-auto-x': overflowX, 'sme-arrange-overflow-auto-y': overflowY}\"\r\n  data-uta-id=\"dropdown-content\">\r\n  <ng-content select=\".sme-dropdown-content\"></ng-content>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { DropdownComponent } from './dropdown.component';\r\nimport { DropdownService } from './dropdown.service';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        DropdownComponent\r\n    ],\r\n    exports: [\r\n        DropdownComponent\r\n    ],\r\n    imports: [\r\n        CommonModule\r\n    ],\r\n    providers: [\r\n        DropdownService\r\n    ]\r\n})\r\nexport class DropdownModule { }\r\n","import {\r\n    AfterContentInit,\r\n    ContentChildren,\r\n    Directive,\r\n    DoCheck,\r\n    EventEmitter,\r\n    Injector,\r\n    Input,\r\n    IterableChangeRecord,\r\n    IterableDiffer,\r\n    IterableDiffers,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n    QueryList\r\n} from '@angular/core';\r\nimport { merge, Subscription } from 'rxjs';\r\nimport { CoreBaseComponent } from '../../common/base.component';\r\nimport { ActionItem, ActionItemComponent } from '../items/action-item.component';\r\nimport { ActionContainer, ActionContainerOrientation, ActionItemExecutedEventArgs } from './action-container';\r\n\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class ActionContainerComponent\r\n    extends CoreBaseComponent\r\n    implements AfterContentInit, DoCheck, OnInit, OnDestroy, ActionContainer {\r\n\r\n    /**\r\n     * Property that stores ActionContainerComponent compact state. True for compact, false for not.\r\n     */\r\n    public abstract get compact(): boolean;\r\n\r\n    /**\r\n     * Property that stores ActionContainerComponent orientation.\r\n     * Vertical displays container from top to bottom of page, horizontal displays from left to right.\r\n     */\r\n    public abstract get orientation(): ActionContainerOrientation;\r\n\r\n    /**\r\n     * List of HTML defined ActionItem objects stored in ActionContainerComponent.\r\n     */\r\n    @ContentChildren('action')\r\n    public childActions: QueryList<ActionItemComponent>;\r\n\r\n    /**\r\n     * List of programmatically defined ActionItem objects stored in ActionContainerComponent.\r\n     */\r\n    @Input()\r\n    public set actions(actions: ActionItem[]) {\r\n        this.internalActions = actions || [];\r\n        this.updateActions();\r\n    }\r\n\r\n    /**\r\n     * Flag set to display either HTML or programmatically defined ActionItem objects first.\r\n     * True to display HTML defined actions first, false to display programmatically defined actions first (defaults to false).\r\n     */\r\n    @Input()\r\n    public set displayInlineActionsFirst(displayFirst: boolean) {\r\n        this.displayInlineActionsFirstInternal = displayFirst;\r\n    }\r\n\r\n    /**\r\n     * List of all ActionItem objects stored in ActionContainerComponent.\r\n     */\r\n    public get actions(): ActionItem[] {\r\n        this.combinedActions.length = 0;\r\n\r\n        this.combinedActions.push.apply(\r\n            this.combinedActions,\r\n            this.displayInlineActionsFirstInternal ? this.inlineActions.concat(this.internalActions)\r\n                : this.internalActions.concat(this.inlineActions)\r\n        );\r\n\r\n        return this.combinedActions;\r\n    }\r\n\r\n    /**\r\n     * Target object used by child actions of ActionContainerComponent.\r\n     */\r\n    @Input()\r\n    public set target(input: any) {\r\n        this.internalTarget = input;\r\n        this.targetChange.emit(this.internalTarget);\r\n        this.updateActionStates();\r\n    }\r\n    public get target() {\r\n        return this.internalTarget;\r\n    }\r\n\r\n    @Output()\r\n    public targetChange = new EventEmitter<any>();\r\n\r\n    /**\r\n     * Flag set to enable or disable ActionContainerComponent.\r\n     */\r\n    @Input()\r\n    public set enabled(input: boolean) {\r\n        this.enabledInternal = !!input;\r\n        this.updateActionStates();\r\n    }\r\n    public get enabled() {\r\n        return this.enabledInternal;\r\n    }\r\n\r\n    /**\r\n     * Event emitter fired whenever an error occurs within a child ActionItem.\r\n     */\r\n    @Output()\r\n    // eslint-disable-next-line @angular-eslint/no-output-native\r\n    public error: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n    /**\r\n     * Event emitter fired whenever a child ActionItem is executed.\r\n     */\r\n    @Output()\r\n    public executed: EventEmitter<ActionItemExecutedEventArgs> = new EventEmitter<ActionItemExecutedEventArgs>();\r\n\r\n    /**\r\n     * Returns true if any child ActionItem objects have the busy flag set, false otherwise.\r\n     */\r\n    public get isBusy(): boolean {\r\n        return this.actions && this.actions.some(action => action.busy);\r\n    }\r\n\r\n    /**\r\n     * List of all child ActionItem objects, both HTML and programmatically defined.\r\n     */\r\n    public combinedActions: ActionItem[] = [];\r\n\r\n    /**\r\n     * List of programmatically defined ActionItem objects stored in ActionContainerComponent.\r\n     */\r\n    public internalActions: ActionItem[] = [];\r\n\r\n    /**\r\n    * List of HTML defined ActionItem objects stored in ActionContainerComponent.\r\n    */\r\n    public inlineActions: ActionItem[] = [];\r\n\r\n    private displayInlineActionsFirstInternal = false;\r\n    private enabledInternal = true;\r\n    private internalTarget: any;\r\n    private actionsDiffer: IterableDiffer<any>;\r\n    private wasBusy: boolean;\r\n    private completedSubscription: Subscription;\r\n\r\n    /**\r\n     * Constructor for ActionContainerComponent.\r\n     */\r\n    constructor(private iterableDiffers: IterableDiffers, injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Callback method run when ActionContainerComponent is initialized.\r\n     */\r\n    public ngOnInit() {\r\n        // whenever an action executes or errors, update action states\r\n        // NOTE: Angular documentation states that we should not treat event emitters as observables.\r\n        // in the future this could break if angular changes its implementation.\r\n        // We should consider another way of surfacing this.\r\n        this.completedSubscription = merge(this.executed, this.error).subscribe(next => this.updateActionStates());\r\n\r\n    }\r\n\r\n    /**\r\n     * Callback method run when ActionContainerComponent is destroyed.\r\n     */\r\n    public ngOnDestroy() {\r\n        this.completedSubscription?.unsubscribe();\r\n    }\r\n\r\n    /**\r\n     * Callback method run immediately after Angular has completed initialization of all of ActionContainerComponent's content.\r\n     */\r\n    public ngAfterContentInit() {\r\n        this.childActions.changes.subscribe(val => {\r\n            this.inlineActions.length = 0;\r\n            this.inlineActions.push.apply(this.inlineActions, this.childActions.map(item => item.action));\r\n        });\r\n        this.inlineActions = this.childActions.map(item => item.action);\r\n        this.updateActions();\r\n    }\r\n\r\n    // Needs more investigation.\r\n    /**\r\n     * Angular's doCheck life cycle hook. Note there is an odd condition when trying to create dynamic toolbar items inline with ng for.\r\n     * Somehow this method is not getting called in time to initialize the button that is created by the ng for statement.\r\n     */\r\n    public ngDoCheck(): void {\r\n        if (this.actionsDiffer) {\r\n            const changes = this.actionsDiffer.diff(this.actions);\r\n            if (changes) {\r\n                changes.forEachAddedItem((record: IterableChangeRecord<ActionItem>) => (record.item).addedToContainer(this.target, this));\r\n                changes.forEachRemovedItem((record: IterableChangeRecord<ActionItem>) => (record.item).removedFromContainer());\r\n            }\r\n        }\r\n\r\n        if (this.wasBusy !== this.isBusy) {\r\n            this.wasBusy = this.isBusy;\r\n            this.updateActionStates();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Method to update all child ActionItem objects states.\r\n     */\r\n    public updateActionStates() {\r\n        if (this.actions && this.actions.length > 0) {\r\n            this.actions.forEach(action => action.setActionState(this.target, this));\r\n        }\r\n    }\r\n\r\n    private updateActions() {\r\n        this.actionsDiffer = this.iterableDiffers.find(this.actions).create(null);\r\n        this.updateActionStates();\r\n    }\r\n}\r\n","import {\r\n    ComponentFactory,\r\n    ComponentFactoryResolver,\r\n    ComponentRef,\r\n    Directive,\r\n    Injector,\r\n    OnDestroy,\r\n    OnInit,\r\n    Type,\r\n    ViewChild,\r\n    ViewContainerRef\r\n} from '@angular/core';\r\nimport { CoreBaseComponent } from './base.component';\r\n\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport class DynamicComponentBase<T> extends CoreBaseComponent implements OnInit, OnDestroy {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'DynamicComponentBase';\r\n    }\r\n\r\n    @ViewChild('container', { read: ViewContainerRef, static: true })\r\n    private container: ViewContainerRef;\r\n\r\n    protected componentType: Type<T>;\r\n    protected ref: ComponentRef<T>;\r\n\r\n    constructor(private componentFactoryResolver: ComponentFactoryResolver,\r\n        inject?: Injector) {\r\n        super(inject);\r\n    }\r\n\r\n    public ngOnInit() {\r\n        this.createComponent();\r\n    }\r\n\r\n    public ngOnDestroy() {\r\n        this.cleanComponent();\r\n    }\r\n\r\n    protected createComponent() {\r\n        this.cleanComponent();\r\n        let factory: ComponentFactory<T>;\r\n        factory = this.componentFactoryResolver.resolveComponentFactory(this.componentType);\r\n        this.ref = this.container.createComponent(factory);\r\n    }\r\n\r\n    protected cleanComponent() {\r\n        // make sure any previously created component is properly destroyed\r\n        if (this.ref) {\r\n            this.ref.destroy();\r\n            this.ref = null;\r\n        }\r\n    }\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges, Type } from '@angular/core';\r\nimport { Strings } from '../../../generated/strings';\r\nimport { ActionContainer } from '../containers/action-container';\r\n\r\n/**\r\n * Defines the model of an action item including which renderer to use.\r\n * The consumer can provide an array of these to the action bar 'actions' attribute.\r\n */\r\nexport class ActionItem {\r\n    protected busyTargets = [];\r\n\r\n    public actionId: string;\r\n\r\n    /**\r\n     * CSS class for icon to be displayed with the ActionItem.\r\n     */\r\n    public iconClass: string;\r\n\r\n    /**\r\n     * Name of action item to be read out by screen reader.\r\n     */\r\n    public name: string;\r\n\r\n    /**\r\n     * Label to be displayed for the ActionItem.\r\n     */\r\n    public text: string;\r\n\r\n    /**\r\n     * Fixed pixel width to be used for the ActionItem.\r\n     */\r\n    public width: number;\r\n\r\n    /**\r\n     * Flag set to indicate the ActionItem is currently in the busy state (defaults to false).\r\n     */\r\n    public busy = false;\r\n\r\n    /**\r\n     * Flag set to indicate whether or not the ActionItem is enabled (defaults to true).\r\n     */\r\n    public enabled = true;\r\n\r\n    /**\r\n     * Flag set to indicate whether or not the ActionItem is toggled (defaults to false).\r\n     */\r\n    public toggled = false;\r\n\r\n    /**\r\n     * Flag set to indicate whether or not the ActionItem is hidden (defaults to false).\r\n     */\r\n    public hidden = false;\r\n\r\n    /**\r\n     * The target object for the ActionItem.\r\n     */\r\n    public target: any;\r\n\r\n    /**\r\n     * The parent ActionContainer of the ActionItem.\r\n     */\r\n    public container: ActionContainer;\r\n\r\n    /**\r\n     * Flag set to indicate whether or not the ActionItem can be run (defaults to false and set to true once added to a container).\r\n     */\r\n    public ready = false;\r\n\r\n    /**\r\n     * Flag set to indicate whether or not the ActionItem should have a pop-out\r\n     */\r\n    public popOutEnabled = false;\r\n\r\n    /**\r\n     * URL for the pop-out window if the Flag popOutEnabled is True\r\n     */\r\n    public popOutUrl: string;\r\n\r\n    /**\r\n     * Title for the pop-out window\r\n     */\r\n    public popOutTitle: string;\r\n\r\n    /**\r\n     * Constructor for ActionItem.\r\n     * @param renderer The renderer instance used with the ActionItem.\r\n     */\r\n    constructor(public readonly renderer: Type<any>) { }\r\n\r\n    /**\r\n     * Method to set the state of the ActionItem.\r\n     * @param target The target object to be used by the ActionItem.\r\n     * @param container The ActionContainer to place the ActionItem in.\r\n     */\r\n    public setActionState(target: any, container: ActionContainer) {\r\n        this.target = target;\r\n        this.container = container;\r\n\r\n        const targetUniqueReference = this.getTargetUniqueReference(target);\r\n        this.busy = this.busyTargets.indexOf(targetUniqueReference) !== -1;\r\n    }\r\n\r\n    /**\r\n     * Sets the target and container of the ActionItem to null.\r\n     */\r\n    public clearActionState() {\r\n        this.target = null;\r\n        this.container = null;\r\n    }\r\n\r\n    /**\r\n     * Adds the ActionItem to the given container and sets the ActionItem target. Sets ready to true.\r\n     * @param target Target object to be used by the ActionItem.\r\n     * @param container ActionContainer to set as the parent of the ActionItem.\r\n     */\r\n    public addedToContainer(target: any, container: ActionContainer) {\r\n        this.ready = true;\r\n        this.setActionState(target, container);\r\n    }\r\n\r\n    /**\r\n     * Removes the ActionItem from its current container and sets ready to false.\r\n     */\r\n    public removedFromContainer() {\r\n        this.ready = false;\r\n        this.clearActionState();\r\n    }\r\n\r\n    protected getTargetUniqueReference(target: any): any {\r\n        return target;\r\n    }\r\n\r\n}\r\n\r\n/**\r\n * The base class for the components that actually renders actions.\r\n * This is refereed to by the 'renderer' property of ActionItem\r\n * Internally it is used by the DynamicActionItemComponent to create an action item\r\n *\r\n */\r\nexport class ActionItemRendererComponent<T extends ActionItem> {\r\n    public item: T;\r\n    public itemChanged(item: T) {\r\n        this.item = item;\r\n    }\r\n}\r\n\r\n/**\r\n * Provides the ability to add action items from html best for simple scenarios without a complex command model\r\n */\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class ActionItemComponent implements OnChanges {\r\n    protected logSourceName: string;\r\n    public strings: Strings = MsftSme.getStrings<Strings>();\r\n\r\n    @Input()\r\n    public actionId: string;\r\n\r\n    /**\r\n     * Flag set to hide the ActionItemComponent. True for hidden, false otherwise.\r\n     */\r\n    @Input()\r\n    public hidden: boolean;\r\n\r\n    /**\r\n     * Flag set to enable or disable the ActionItemComponent. True for enabled, false for disabled.\r\n     */\r\n    @Input()\r\n    public enabled: boolean;\r\n\r\n    /**\r\n     * Flag set to indicate if ActionItemComponent is currently toggled. True for toggled, false if not.\r\n     */\r\n    @Input()\r\n    public toggled: boolean;\r\n\r\n    /**\r\n     * Label to be displayed for the ActionItem.\r\n     */\r\n    @Input()\r\n    public text: string;\r\n\r\n    /**\r\n     * Name of action item to be read out by screen reader.\r\n     */\r\n    @Input()\r\n    public name: string;\r\n\r\n    /**\r\n     * CSS class for icon to be displayed with the ActionItem.\r\n     */\r\n    @Input()\r\n    public iconClass: string;\r\n\r\n    /**\r\n     * Flag to show the pop-out button on the ActionItemComponent. True for enabling pop-out, false if not\r\n     */\r\n    @Input()\r\n    public popOutEnabled: boolean;\r\n\r\n    /**\r\n     * URL for the pop-out window if the Flag popOutEnabled is True\r\n     */\r\n    @Input()\r\n    public popOutUrl: string;\r\n\r\n    /**\r\n     * Title for the pop-out window\r\n    */\r\n    @Input()\r\n    public popOutTitle: string;\r\n\r\n    /**\r\n     * ActionItem object associated with this ActionItemComponent.\r\n     */\r\n    public action: ActionItem;\r\n\r\n    /**\r\n     * Constructor for ActionItemComponent.\r\n     */\r\n    constructor() {\r\n        this.action = this.createActionItem();\r\n    }\r\n\r\n    protected abstract createActionItem(): ActionItem;\r\n\r\n    /**\r\n     * Callback method run after default change detector has executed.\r\n     */\r\n    public ngOnChanges(changes: SimpleChanges) {\r\n        const props = Object.keys(changes);\r\n        props.forEach(prop => {\r\n            const change = changes[prop];\r\n            this.action[prop] = change.currentValue;\r\n        });\r\n    }\r\n}\r\n","import {\r\n    Component,\r\n    ComponentFactoryResolver,\r\n    EventEmitter,\r\n    Injector,\r\n    Input,\r\n    Output\r\n} from '@angular/core';\r\nimport { DynamicComponentBase } from '../../common/dynamic.component';\r\nimport { ActionItem, ActionItemRendererComponent } from './action-item.component';\r\n\r\n@Component({\r\n    selector: 'sme-dynamic-action-item',\r\n    template: '<div #container></div>'\r\n})\r\nexport class DynamicActionItemComponent extends DynamicComponentBase<ActionItemRendererComponent<ActionItem>> {\r\n    private itemRef: ActionItem;\r\n\r\n    /**\r\n     * The wrapped ActionItem object.\r\n     */\r\n    @Input()\r\n    set item(item: ActionItem) {\r\n        this.itemRef = item;\r\n        this.updateOptions(item);\r\n        this.itemChanged.emit();\r\n    }\r\n\r\n    /**\r\n     * Event emitter fired when DynamicActionItemComponent has changed.\r\n     */\r\n    @Output()\r\n    public itemChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     *  Constructor for DynamicActionItemComponent.\r\n     */\r\n    constructor(componentFactoryResolver: ComponentFactoryResolver, injector: Injector) {\r\n        super(componentFactoryResolver, injector);\r\n    }\r\n\r\n    protected createComponent() {\r\n        this.componentType = this.itemRef.renderer;\r\n        super.createComponent();\r\n        this.updateOptions(this.itemRef);\r\n    }\r\n\r\n    private updateOptions(item: ActionItem) {\r\n        if (this.ref && this.ref.instance.itemChanged) {\r\n            this.ref.instance.itemChanged(item);\r\n        }\r\n    }\r\n}\r\n","<div class=\"sme-arrange-stack-v\" role=\"presentation\">\r\n  <sme-dynamic-action-item role=\"presentation\" *ngFor=\"let item of actions | smeFilter:'hidden':true\" [item]=\"item\" class=\"sme-arrange-stack-h sme-arrange-stack-centered sme-arrange-stack-inline\"></sme-dynamic-action-item>\r\n</div>\r\n","import { Component, Injector, IterableDiffers, Optional } from '@angular/core';\r\nimport { ActionContainerOrientation } from '../action-container';\r\nimport { ActionContainerComponent } from '../action-container.component';\r\n\r\n@Component({\r\n    selector: 'sme-action-menu',\r\n    templateUrl: './action-menu.component.html'\r\n})\r\n/**\r\n * TODO: define html and handling for menu. After which we can define context and context \"ellipses\" button controls.\r\n */\r\nexport class ActionMenuComponent extends ActionContainerComponent {\r\n    protected logSourceName: string;\r\n\r\n    public get compact(): boolean {\r\n        return false;\r\n    }\r\n\r\n    public get orientation(): ActionContainerOrientation {\r\n        return 'horizontal';\r\n    }\r\n\r\n    constructor(iterableDiffers: IterableDiffers, @Optional() private parentContainer: ActionContainerComponent, injector: Injector) {\r\n        super(iterableDiffers, injector);\r\n    }\r\n\r\n    public get isBusy(): boolean {\r\n        let isParentBusy = false;\r\n        if (this.parentContainer && this.parentContainer.isBusy) {\r\n            isParentBusy = true;\r\n        }\r\n        return isParentBusy || this.actions && this.actions.some(action => action.busy);\r\n    }\r\n}\r\n","<div role=\"menubar\" [attr.aria-label]=\"actionsAriaLabel\" class=\"sme-position-flex-none sme-arrange-stack-h\" #actionBarElement>\r\n  <sme-dynamic-action-item *ngFor=\"let item of hiddenFilter(displayedActions)\" [item]=\"item\"\r\n    (itemChanged)=\"onActionItemChanged()\"\r\n    class=\"sme-arrange-stack-h sme-arrange-stack-centered sme-arrange-stack-inline\"\r\n    [class.sme-action-bar-item-no-padding-v]=\"heightOverflow\"></sme-dynamic-action-item>\r\n\r\n  <sme-dropdown #dropDown role=\"presentation\" class=\"sme-position-flex-none\"\r\n    [class.sme-layout-hidden]=\"!compact && trayActions.length === 0\"\r\n    [class.sme-layout-none]=\"compact && trayActions.length === 0\" [title]=\"moreActionsDisplay\" [smeTooltipShow]=\"!this.dropDown.isOpen\">\r\n    <button #dropDownButton type=\"button\" [attr.aria-label]=\"moreActionsDisplay\" role=\"menuitem\"\r\n      class=\"sme-button-trigger sme-layout-action-bar-item-height sme-button-auto-width sme-dropdown-toggle\"\r\n      [class.sme-toggled]=\"dropDown.isOpen\" [attr.aria-expanded]=\"dropDown.isOpen\" aria-haspopup=\"true\"\r\n      data-uta-id=\"action-bar-more\">\r\n      <span class=\"sme-icon sme-icon-more\" [title]=\"moreActionsDisplay\"></span>\r\n      <span class=\"sme-screen-reader\">{{ moreActionsDisplay }}</span>\r\n    </button>\r\n    <sme-action-menu [actions]=\"trayActions\" role=\"menu\" class=\"sme-dropdown-content\" [(target)]=\"target\"\r\n      (error)=\"error.emit($event)\" (executed)=\"executed.emit($event)\"></sme-action-menu>\r\n  </sme-dropdown>\r\n  <ng-content></ng-content>\r\n</div>\r\n","import {\r\n    AfterViewInit,\r\n    Component,\r\n    DoCheck,\r\n    ElementRef,\r\n    EventEmitter,\r\n    HostListener,\r\n    Inject,\r\n    Injector,\r\n    IterableDiffers,\r\n    OnDestroy,\r\n    Optional,\r\n    Output,\r\n    Renderer2,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { Subscription } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport { Strings } from '../../../../generated/strings';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../../../common/layout';\r\nimport { DropdownComponent } from '../../../dropdown/dropdown.component';\r\nimport { ActionItem } from '../../items/action-item.component';\r\nimport { ActionContainerOrientation } from '../action-container';\r\nimport { ActionContainerComponent } from '../action-container.component';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Actions @id sme-actions}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/overview.md}\r\n *\r\n * @example {@label Defined actions from component @id defined-actions-from-component}\r\n * @file {@filename component.html @filepath ./examples/defined-actions-from-component.component.html}\r\n * @file {@filename component.ts @filepath ./examples/actions-example.component.ts}\r\n *\r\n * @example {@label Defined actions from html @id defined-actions-from-html}\r\n * @file {@filename component.html @filepath ./examples/defined-actions-from-html.component.html}\r\n * @file {@filename component.ts @filepath ./examples/actions-example.component.ts}\r\n *\r\n * @example {@label Defined actions from both @id defined-actions-from-both}\r\n * @file {@filename component.html @filepath ./examples/defined-actions-from-both.component.html}\r\n * @file {@filename component.ts @filepath ./examples/actions-example.component.ts}\r\n *\r\n * @example {@label All buttons disabled @id all-buttons-disabled}\r\n * @file {@filename component.html @filepath ./examples/all-buttons-disabled.component.html}\r\n * @file {@filename component.ts @filepath ./examples/actions-example.component.ts}\r\n *\r\n * @example {@label Model driven action bar @id model-driven}\r\n * @file {@filename component.html @filepath ./examples/model-driven.component.html}\r\n * @file {@filename component.ts @filepath ./examples/actions-example.component.ts}\r\n *\r\n * @example {@label Container embedded action bar @id container-embedded-action-bar}\r\n * @file {@filename component.html @filepath ./examples/container-embedded-action-bar.component.html}\r\n * @file {@filename component.ts @filepath ./examples/actions-example.component.ts}\r\n */\r\n\r\n@Component({\r\n    selector: 'sme-action-bar',\r\n    templateUrl: './action-bar.component.html'\r\n})\r\nexport class ActionBarComponent extends ActionContainerComponent implements DoCheck, AfterViewInit, OnDestroy {\r\n    protected logSourceName: string;\r\n\r\n    /**\r\n     * Flag that when set will display minimal UI for the action bar.\r\n     */\r\n    public get compact(): boolean {\r\n        return this.isCompact;\r\n    }\r\n\r\n    /**\r\n     * Attribute that sets vertical or horizontal orientation where vertical displays action bar from top to bottom of page\r\n     * and horizontal displays action bar from left to right.\r\n     */\r\n    public get orientation(): ActionContainerOrientation {\r\n        return 'vertical';\r\n    }\r\n\r\n    /**\r\n     * List of ActionItem objects that we want to perform.\r\n     */\r\n    public displayedActions: ActionItem[] = [];\r\n\r\n    /**\r\n     * List of ActionItem objects that are collapsed into dropdown.\r\n     */\r\n    public trayActions: ActionItem[] = [];\r\n\r\n    /**\r\n     * Text displayed for tray dropdown.\r\n     */\r\n    public moreActionsDisplay: string;\r\n\r\n    /**\r\n     * Label on action menu for accessibility.\r\n     */\r\n    public actionsAriaLabel: string;\r\n\r\n    /**\r\n     * Flag to make sure if the height of the bar is currently greater than the available height of the target,\r\n     * then the items are adjusted accordingly.\r\n     */\r\n    public heightOverflow: boolean;\r\n\r\n    /**\r\n     * Button element for tray dropdown.\r\n     */\r\n    public moreButtonElement: HTMLElement;\r\n\r\n    /**\r\n     * Localized set of strings.\r\n     */\r\n    public strings = MsftSme.getStrings<Strings>();\r\n    private isCompact = false;\r\n    private hovered = false;\r\n    private focused = false;\r\n    private attachedTo: HTMLElement;\r\n    private shouldShow = true;\r\n    private isVisible = true;\r\n    private layoutSubscription: Subscription;\r\n\r\n    /**\r\n     * Event fired when list of ActionItems changes.\r\n     */\r\n    @Output()\r\n    public actionsUpdated = new EventEmitter<any>();\r\n\r\n    private get isAttached(): boolean {\r\n        return !MsftSme.isNullOrUndefined(this.attachedTo);\r\n    }\r\n\r\n    @ViewChild('actionBarElement') private element: ElementRef;\r\n    @ViewChild('dropDownButton') private dropDownButtonElement: ElementRef;\r\n\r\n    /**\r\n     * DropdownComponent element for action tray.\r\n     */\r\n    @ViewChild('dropDown') public dropDown: DropdownComponent;\r\n\r\n    /**\r\n     * Constructor for the ActionBarComponent.\r\n     */\r\n    constructor(iterableDiffers: IterableDiffers, public renderer: Renderer2, public hostElement: ElementRef,\r\n        @Optional() @Inject(SME_LAYOUT_PROVIDER) layout: Layout, injector: Injector) {\r\n        super(iterableDiffers, injector);\r\n        renderer.addClass(hostElement.nativeElement, 'sme-position-stretch-h');\r\n        renderer.addClass(hostElement.nativeElement, 'sme-layout-action-bar');\r\n        renderer.addClass(hostElement.nativeElement, 'sme-arrange-stack-h');\r\n        renderer.addClass(hostElement.nativeElement, 'sme-arrange-ws-nowrap');\r\n        renderer.addClass(hostElement.nativeElement, 'sme-arrange-overflow-show');\r\n        renderer.setStyle(this.hostElement.nativeElement, 'opacity', 0);\r\n        this.moreActionsDisplay = this.strings.MsftSmeShell.Angular.Common.more;\r\n        this.actionsAriaLabel = this.strings.MsftSmeShell.Angular.Common.actions;\r\n\r\n        if (layout) {\r\n            this.layoutSubscription = layout.layoutChanged.subscribe(() => this.onLayoutChanged());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Filters out ActionItem objects to be hidden.\r\n     * @param items ActionItem objects to check.\r\n     * @returns List of unhidden ActionItem objects.\r\n     */\r\n    public hiddenFilter(items: ActionItem[]): ActionItem[] {\r\n        return items.filter(item => !item.hidden);\r\n    }\r\n\r\n    /**\r\n     * Callback triggered after view initializes.\r\n     */\r\n    public ngAfterViewInit(): void {\r\n        setTimeout(() => {\r\n            this.updateActionBar();\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Callback triggered after component is destroyed.\r\n     */\r\n    public ngOnDestroy() {\r\n        super.ngOnDestroy();\r\n        this.layoutSubscription?.unsubscribe();\r\n    }\r\n\r\n    /**\r\n     * On layout changed event handler, occurs every time the layout has been changed.\r\n     */\r\n    @Yield()\r\n    private onLayoutChanged() {\r\n        this.updateActionBar();\r\n    }\r\n\r\n    /**\r\n     * Host listeners for focus events.\r\n     */\r\n    @HostListener('focusin', ['$event'])\r\n    @HostListener('focusout', ['$event'])\r\n    public onFocusEvent(event: Event): void {\r\n        // on focus in/out change focused state\r\n        this.focused = event.type === 'focusin' || (this.focused && event.type !== 'focusout');\r\n        this.updateHeight();\r\n    }\r\n\r\n    /**\r\n     * Host listeners for keyboard events.\r\n     */\r\n    @HostListener('keydown', ['$event'])\r\n    public onToggleKeydown(event: KeyboardEvent): void {\r\n        // accessibility, take focus to the more button after a selection in dropdown elements.\r\n        switch (event.keyCode) {\r\n            case KeyCode.Enter: {\r\n                if (this.dropDown) {\r\n                    if (this.moreButtonElement && this.dropDown.isOpen && this.dropDown.contentElement) {\r\n                        this.moreButtonElement.focus();\r\n                    } else {\r\n                        this.dropDown.onToggled.pipe(take(1)).subscribe(open => {\r\n                            if (open) {\r\n                                // blur/focus to refresh focus - this will make the tooltip disappear\r\n                                // while menu is open (b/c tooltip will block view)\r\n                                this.dropDownButtonElement.nativeElement.blur();\r\n                                this.dropDownButtonElement.nativeElement.focus();\r\n                                this.moreButtonElement = <HTMLElement>document.activeElement;\r\n                            }\r\n                        });\r\n                    }\r\n                }\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Host listeners for mouse events.\r\n     */\r\n    @HostListener('mouseenter', ['$event'])\r\n    @HostListener('mouseleave', ['$event'])\r\n    public onMouseEvent(event: Event): void {\r\n        // on mouse enter/leave change hovered state\r\n        this.hovered = event.type === 'mouseenter' || (this.hovered && event.type !== 'mouseleave');\r\n        this.updateHeight();\r\n    }\r\n\r\n    /**\r\n     * Host listener for page resize event.\r\n     */\r\n    @HostListener('window:resize')\r\n    onResize() {\r\n        this.updateActionBar();\r\n    }\r\n\r\n    /**\r\n     * Callback triggered after child ActionItem changes.\r\n     */\r\n    public onActionItemChanged() {\r\n        setTimeout(() => {\r\n            this.updateActionBar();\r\n        });\r\n    }\r\n\r\n    private updateHeight(): void {\r\n        if (this.isAttached) {\r\n            if (this.isVisible && (this.shouldShow || this.focused || this.hovered)) {\r\n                this.renderer.removeStyle(this.hostElement.nativeElement, 'overflow');\r\n                this.renderer.removeClass(this.hostElement.nativeElement, 'sme-animation-fade-out-xs');\r\n                this.renderer.addClass(this.hostElement.nativeElement, 'sme-animation-fade-in-xs');\r\n            } else {\r\n                this.renderer.setStyle(this.hostElement.nativeElement, 'opacity', 0);\r\n                this.renderer.setStyle(this.hostElement.nativeElement, 'overflow', 'hidden');\r\n                this.renderer.addClass(this.hostElement.nativeElement, 'sme-animation-fade-out-xs');\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Method to set visibility for ActionBarComponent.\r\n     * @param isVisible True for visible, false for not.\r\n     */\r\n    public setVisibility(isVisible: boolean): void {\r\n        this.isVisible = isVisible;\r\n        this.updateHeight();\r\n    }\r\n\r\n    /**\r\n     * Method to set visibility for ActionBarComponent.\r\n     * @param shouldShow True for showing, false for not.\r\n     */\r\n    public showHide(shouldShow: boolean): void {\r\n        this.shouldShow = shouldShow;\r\n        this.updateHeight();\r\n    }\r\n\r\n    /**\r\n     * Repositions given HTMLElement to be relative to its sibling element.\r\n     * @param element Element to reposition.\r\n     * @param compact Boolean flag to set whether or not ActionBarComponent should be compact.\r\n     */\r\n    public repositionRelativeTo(element: HTMLElement, compact: boolean): void {\r\n        if (MsftSme.isNullOrUndefined(element.offsetParent)) {\r\n            return;\r\n        }\r\n\r\n        let isSibling = false;\r\n        const siblings = element.parentElement.children;\r\n        for (let i = 0; i < siblings.length; i++) {\r\n            const sibling = siblings.item(i);\r\n            if (sibling === this.hostElement.nativeElement) {\r\n                isSibling = true;\r\n                break;\r\n            }\r\n        }\r\n        if (!isSibling) {\r\n            Logging.logError('ActionBar.repositionRelativeTo', 'ActionBar can only be positioned relative to a sibling element.');\r\n            return;\r\n        }\r\n        const wasAttached = this.isAttached;\r\n        this.attachedTo = element;\r\n\r\n        if (!wasAttached) {\r\n            this.showHide(false);\r\n        }\r\n\r\n        // when positioning on an element, use compact settings if desired\r\n        this.isCompact = compact;\r\n\r\n        // change classes to account for different positioning mechanism\r\n        this.renderer.removeStyle(this.hostElement.nativeElement, 'position');\r\n        this.renderer.removeClass(this.hostElement.nativeElement, 'sme-position-stretch-h');\r\n        this.renderer.addClass(this.hostElement.nativeElement, 'sme-layout-absolute');\r\n        this.renderer.addClass(this.hostElement.nativeElement, 'sme-background-color-base');\r\n\r\n        // Calculate new position\r\n        const style = window.getComputedStyle(element);\r\n        const margin = {\r\n            top: parseInt(style.marginTop, 10),\r\n            bottom: parseInt(style.marginBottom, 10),\r\n            left: parseInt(style.marginLeft, 10),\r\n            right: parseInt(style.marginRight, 10)\r\n        };\r\n        const border = {\r\n            top: parseInt(style.borderTop, 10),\r\n            bottom: parseInt(style.borderBottom, 10),\r\n            left: parseInt(style.borderLeft, 10),\r\n            right: parseInt(style.borderRight, 10)\r\n        };\r\n        const availableWidth = element.clientWidth - border.left - border.right - margin.left - margin.right;\r\n        const availableHeight = element.clientHeight - border.bottom - margin.bottom;\r\n        const width = Math.min(Math.max(availableWidth / 2, 300), availableWidth);\r\n        const right = element.offsetParent.clientWidth - (element.offsetLeft + element.clientWidth);\r\n        const top = element.offsetTop + border.top + margin.top;\r\n\r\n        this.renderer.setStyle(this.hostElement.nativeElement, 'right', `${right}px`);\r\n        this.renderer.setStyle(this.hostElement.nativeElement, 'top', `${top}px`);\r\n        this.renderer.setStyle(this.hostElement.nativeElement, 'width', `unset`);\r\n        this.renderer.setStyle(this.hostElement.nativeElement, 'max-width', `${width}px`);\r\n        this.renderer.setStyle(this.hostElement.nativeElement, 'max-height', `${availableHeight}px`);\r\n        this.renderer.setStyle(this.hostElement.nativeElement, 'justify-content', `flex-end`);\r\n\r\n        // if the height of the bar is currently greater than the available height of the target,\r\n        // then make sure displayed items are adjusted accordingly\r\n        this.heightOverflow = parseInt(style.height, 10) > availableHeight;\r\n\r\n        setTimeout(() => {\r\n            this.updateActionBar();\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Method to update how ActionBarComponent is displayed.\r\n     */\r\n    public updateActionBar() {\r\n        let currentFill = 0;\r\n\r\n        // Set up the following styles during the UI calculation to make sure the html element flickering won't exceed\r\n        // the action bar container.\r\n        // The following inline styles will be removed after the UI calculation is done.\r\n        const hostElement = <HTMLElement>this.hostElement.nativeElement;\r\n        this.renderer.setStyle(hostElement, 'overflow', `hidden`);\r\n\r\n        if (!this.isAttached) {\r\n            this.renderer.setStyle(hostElement, 'position', `relative`);\r\n            this.renderer.removeStyle(this.hostElement.nativeElement, 'opacity');\r\n        }\r\n\r\n        this.displayedActions = [];\r\n        this.trayActions = [];\r\n\r\n        const style = getComputedStyle(hostElement);\r\n        const padding = parseInt(style.getPropertyValue('padding-left'), 10) + parseInt(style.getPropertyValue('padding-right'), 10);\r\n        const containerWidth = (this.isAttached ? parseInt(style.maxWidth, 10) : hostElement.offsetWidth) - padding;\r\n\r\n        // Firstly, we need to calculate the total width of all buttons without \"more\" button.\r\n        let buttonsTotalWidth = 0;\r\n        for (let i = 0; i < this.actions.length; ++i) {\r\n            const action = this.actions[i];\r\n            // assume hidden actions have a 0 width. When they are un-hidden, there width will change and trigger another update.\r\n            const actionWidth = action.hidden ? 0 : action.width || 0;\r\n            buttonsTotalWidth += actionWidth;\r\n        }\r\n\r\n        if (buttonsTotalWidth <= containerWidth) {\r\n            for (let index = 0; index < this.actions.length; ++index) {\r\n                this.displayedActions.push(this.actions[index]);\r\n            }\r\n        } else {\r\n            // If the buttons total width exceeds the container width, then we calculate which button should be\r\n            // displayed and which button should be put into \"more\" drop-down.\r\n            // Note: the available container width should be the container width - \"more\" button's width.\r\n            const visibleButtonContainerWidth = containerWidth - this.dropDownButtonElement.nativeElement.offsetWidth;\r\n            for (let index = 0; index < this.actions.length; ++index) {\r\n                const action = this.actions[index];\r\n                // assume hidden actions have a 0 width. When they are un-hidden, there width will change and trigger another update.\r\n                const actionWidth = action.hidden ? 0 : action.width || 0;\r\n                if (currentFill + actionWidth > visibleButtonContainerWidth) {\r\n                    this.trayActions.push(action);\r\n                } else {\r\n                    this.displayedActions.push(action);\r\n                }\r\n\r\n                currentFill += actionWidth;\r\n            }\r\n        }\r\n\r\n        if (this.displayedActions.length === 0) {\r\n            this.moreActionsDisplay = this.strings.MsftSmeShell.Angular.Common.actions;\r\n        } else {\r\n            this.moreActionsDisplay = this.strings.MsftSmeShell.Angular.Common.more;\r\n        }\r\n\r\n        // If any action bar width is NaN, that means not all the action-buttons finished rendering on the UI.\r\n        // Thus \"currentFill\" is still NaN. Otherwise, we consider all the action-buttons finish rendering.\r\n        // Then it's time to remove the temporary inline styles.\r\n        if (!!currentFill) {\r\n            if (!this.isAttached && (this.shouldShow || this.hovered || this.focused)) {\r\n                this.renderer.removeStyle(hostElement, 'overflow');\r\n            }\r\n            this.renderer.removeStyle(hostElement, 'position');\r\n        }\r\n\r\n        // some action item states depend on what container they reside in.\r\n        // TrayActions will be updated because they were moved into the actionMenu,\r\n        // however displayed actions should be reset as they may have moved.\r\n        if (this.displayedActions && this.displayedActions.length > 0) {\r\n            this.displayedActions.forEach(action => action.setActionState(this.target, this));\r\n        }\r\n\r\n        this.actionsUpdated.emit();\r\n    }\r\n}\r\n","import { Directive, DoCheck, HostListener, Injector, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { CoreBaseComponent } from '../../../../controls/common/base.component';\r\nimport { ActionBarComponent } from './action-bar.component';\r\n\r\n@Directive({\r\n    selector: '[smeActionBar]'\r\n})\r\nexport class ActionBarDirective extends CoreBaseComponent implements OnChanges, DoCheck {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'ActionBarDirective';\r\n    }\r\n\r\n    /**\r\n     * The ActionBarComponent to attach to.\r\n     */\r\n    @Input() public smeActionBar: ActionBarComponent;\r\n\r\n    /**\r\n     * Indicates if the action bar should appear collapsed (defaults to false).\r\n     */\r\n    @Input() public smeActionBarCompact = true;\r\n\r\n    /**\r\n     * Indicates if the action bar should appear at all (defaults to true).\r\n     */\r\n    @Input() public smeActionBarAvailable = true;\r\n\r\n    private hovered = false;\r\n    private focused = false;\r\n    private offsetTop: number;\r\n    private offsetLeft: number;\r\n    private offsetParent: Element;\r\n    private clientWidth: number;\r\n\r\n    /**\r\n     * Constructs a new instance of the ActionBarDirective\r\n     * @param injector The injector for the sme base component\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Callback method that executes after the default change-detector runs.\r\n     */\r\n    public ngDoCheck() {\r\n        super.ngDoCheck();\r\n        const offsetLeft = this.hostElement.nativeElement.offsetLeft;\r\n        const offsetTop = this.hostElement.nativeElement.offsetTop;\r\n        const offsetParent = this.hostElement.nativeElement.offsetParent;\r\n        const clientWidth = this.hostElement.nativeElement.clientWidth;\r\n        if (this.offsetLeft !== offsetLeft\r\n            || this.offsetTop !== offsetTop\r\n            || this.offsetParent !== offsetParent\r\n            || this.clientWidth !== clientWidth) {\r\n            if (this.smeActionBar) {\r\n                this.repositionActionBar();\r\n            }\r\n        }\r\n        this.offsetLeft = offsetLeft;\r\n        this.offsetTop = offsetTop;\r\n        this.offsetParent = offsetParent;\r\n        this.clientWidth = clientWidth;\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnChanges interface.\r\n     * On every input change, we recalculate the clamp.\r\n     */\r\n    public ngOnChanges(changes: SimpleChanges) {\r\n        super.ngOnChanges(changes);\r\n        if (changes.smeActionBar && this.smeActionBar) {\r\n            this.repositionActionBar();\r\n            this.smeActionBar.setVisibility(this.smeActionBarAvailable);\r\n        }\r\n        if (changes.smeActionBarAvailable) {\r\n            this.smeActionBar.setVisibility(this.smeActionBarAvailable);\r\n        }\r\n    }\r\n\r\n    private repositionActionBar() {\r\n        if (this.smeActionBar) {\r\n            this.smeActionBar.repositionRelativeTo(this.hostElement.nativeElement, this.smeActionBarCompact);\r\n        }\r\n    }\r\n\r\n    private showHideActionBar() {\r\n        if (this.smeActionBar) {\r\n            this.smeActionBar.showHide(this.hovered || this.focused);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Host listeners for window resize events.\r\n     */\r\n    @HostListener('window:resize', ['$event'])\r\n    public onWindowResize(event) {\r\n        if (this.smeActionBar) {\r\n            setTimeout(() => this.repositionActionBar());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Host listeners for focus events.\r\n     */\r\n    @HostListener('focusin', ['$event'])\r\n    @HostListener('focusout', ['$event'])\r\n    public onFocusEvent(event: Event): void {\r\n        // on focus in/out change focused state\r\n        this.focused = event.type === 'focusin' || (this.focused && event.type !== 'focusout');\r\n        this.showHideActionBar();\r\n    }\r\n\r\n    /**\r\n     * Host listeners for mouse events.\r\n     */\r\n    @HostListener('mouseenter', ['$event'])\r\n    @HostListener('mouseleave', ['$event'])\r\n    public onMouseEvent(event: Event): void {\r\n        // on mouse enter/leave change hovered state\r\n        this.hovered = event.type === 'mouseenter' || (this.hovered && event.type !== 'mouseleave');\r\n        this.showHideActionBar();\r\n    }\r\n}\r\n","<div class=\"sme-arrange-stack-h\">\r\n  <button [attr.role]=\"ariaRole\" *ngIf=\"!item.container?.compact\"\r\n    class=\"sme-button-trigger sme-button-auto-width sme-button-align-left sme-position-stretch\"\r\n    [class.sme-toggled]=\"ariaChecked\" [attr.aria-checked]=\"ariaChecked\" [attr.data-uta-id]=\"item.actionId\"\r\n    (click)=\"execute()\" [smeDisabled]=\"!item.enabled || item.busy || !item.ready\" type=\"button\">\r\n      <span [ngClass]=\"item.iconClass || ''\" aria-hidden=\"true\"></span>\r\n      <span class=\"sme-arrange-ellipsis sme-action-button-text-span\" [title]=\"item.text\">{{ item.text }}</span>\r\n  </button>\r\n\r\n  <button [attr.role]=\"ariaRole\" *ngIf=\"item.container?.compact\"\r\n    class=\"sme-button-trigger sme-button-auto-width sme-button-align-left sme-position-stretch\"\r\n    [class.sme-toggled]=\"ariaChecked\" [attr.aria-checked]=\"ariaChecked\" [attr.data-uta-id]=\"item.actionId\"\r\n    (click)=\"execute()\" [smeDisabled]=\"!item.enabled || item.busy || !item.ready\" type=\"button\" [title]=\"item.text\"\r\n    [attr.aria-label]=\"item.text\">\r\n    <span [ngClass]=\"item.iconClass || ''\" aria-hidden=\"true\"></span>\r\n    <button *ngIf=\"item.popOutEnabled\" type=\"button\" (click)=\"popOutWindow()\"\r\n      [attr.aria-label]=\"actionButtonStrings.OpenInANewWindow.label\" [title]=\"actionButtonStrings.OpenInANewWindow.title\"\r\n      class=\"sme-button-trigger sme-height-md sme-button-auto-width sme-behavior-hover-target-show sme-layout-button-flex-end\">\r\n      <div class=\"sme-icon sme-icon-openInNewWindow\"></div>\r\n    </button>\r\n  </button>\r\n\r\n  <button *ngIf=\"item.popOutEnabled\" type=\"button\" (click)=\"popOutWindow()\"\r\n    [attr.aria-label]=\"actionButtonStrings.OpenInANewWindow.label\" [title]=\"actionButtonStrings.OpenInANewWindow.title\"\r\n    class=\"sme-button-trigger sme-button-auto-width sme-behavior-hover-target-show sme-layout-button-flex-end\"\r\n    [smeDisabled]=\"!item.enabled || item.busy || !item.ready\">\r\n    <div class=\"sme-icon sme-icon-openInNewWindow\"></div>\r\n  </button>\r\n</div>\r\n","import { Component, DoCheck, ElementRef, HostListener, Renderer2 } from '@angular/core';\r\nimport { Strings } from '../../../../generated/strings';\r\nimport { ActionItemRendererComponent } from '../action-item.component';\r\nimport { ActionButton } from './action-button';\r\n\r\n@Component({\r\n    selector: 'sme-action-button-renderer',\r\n    templateUrl: './action-button-renderer.component.html'\r\n})\r\nexport class ActionButtonRendererComponent extends ActionItemRendererComponent<ActionButton> implements DoCheck {\r\n    public actionButtonStrings = MsftSme.getStrings<Strings>().MsftSmeShell.Angular.ActionButton;\r\n\r\n    private portListenerHandler: MsftSme.Action1<MessageEvent>;\r\n    private port: MessagePort;\r\n    private popupWindow: Window;\r\n    private openOrigin = window.location.origin;\r\n\r\n    /**\r\n     * Aria role set on action button.\r\n     */\r\n    public get ariaRole(): string {\r\n        return this.item && this.item.toggled ? 'menuitemcheckbox' : 'menuitem';\r\n    }\r\n\r\n    /**\r\n     * Aria checked flag set on action button.\r\n     */\r\n    public get ariaChecked(): boolean {\r\n        return this.item && this.item.toggled ? true : null;\r\n    }\r\n\r\n    /**\r\n     * Constructor for ActionButtonRendererComponent.\r\n     */\r\n    constructor(private renderer: Renderer2, private hostElement: ElementRef) {\r\n        super();\r\n        renderer.addClass(hostElement.nativeElement, 'sme-position-stretch');\r\n    }\r\n\r\n    /**\r\n     * Method called to register a change with the ActionButton.\r\n     * @param item The ActionButton to register change for.\r\n     */\r\n    public itemChanged(item: ActionButton) {\r\n        super.itemChanged(item);\r\n    }\r\n\r\n    /**\r\n     * Callback method run after the default change-detector executes.\r\n     */\r\n    public ngDoCheck() {\r\n        const offsetWidth = (<HTMLElement>this.hostElement.nativeElement).offsetWidth;\r\n        if (offsetWidth === 0) {\r\n            return;\r\n        }\r\n\r\n        // It looks like the CSS icon isn't being included in the offsetWidth, nor the clientWidth.\r\n        // Adding here for simplicity and clarity.\r\n        const cssIconWidth = 14;\r\n        const calculatedWidth = offsetWidth + cssIconWidth;\r\n        if (this.item.width !== calculatedWidth) {\r\n            this.item.width = calculatedWidth;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Method called when action button is clicked.\r\n     */\r\n    public execute() {\r\n        if (this.item.execute) {\r\n            this.item.execute.call(this.item, this.item.target);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Method called when the pop-out icon is clicked\r\n     */\r\n    public popOutWindow(): void {\r\n        this.popupWindow = window.open(this.item.popOutUrl, '_blank', 'toolbar=no');\r\n    }\r\n\r\n    @HostListener('window:message', ['$event'])\r\n    public onWindowMessage(event: MessageEvent) {\r\n        if (!this.popupWindow) {\r\n            return;\r\n        }\r\n\r\n        if (event.origin !== this.openOrigin) {\r\n            return;\r\n        }\r\n\r\n        if (event.data && event.data.type === 'msft-sme-shell-host.identify') {\r\n            (<Window>event.source).postMessage({\r\n                requestId: event.data.requestId,\r\n                type: 'response'\r\n            }, event.origin);\r\n        }\r\n\r\n        const windowConfigs = {\r\n            appBar: {\r\n                solution: {\r\n                    hide: true,\r\n                    hideDropdown: true\r\n                },\r\n                title: {\r\n                    disableNavigation: true,\r\n                    value: this.item.popOutTitle\r\n                },\r\n                rightMenu: {\r\n                    showAbout: false,\r\n                    showScripts: false,\r\n                    showSettings: false,\r\n                    showWindowControls: false,\r\n                    showShareLink: false\r\n                }\r\n            },\r\n            tools: {\r\n                hide: true\r\n            },\r\n            connections: {\r\n                header: {\r\n                    hide: true\r\n                }\r\n            }\r\n        };\r\n\r\n        if (event.data && event.data.type === 'msft-sme-shell-host.initialize') {\r\n            if (this.port) {\r\n                this.port.removeEventListener('message', this.portListenerHandler);\r\n                this.port.close();\r\n                this.port = null;\r\n            }\r\n\r\n            this.port = event.ports[0];\r\n            this.port.postMessage({\r\n                requestId: event.data.requestId,\r\n                type: 'response',\r\n                data: windowConfigs\r\n            });\r\n        }\r\n    }\r\n}\r\n","import { ActionItem } from '../action-item.component';\r\nimport { ActionButtonRendererComponent } from './action-button-renderer.component';\r\n\r\nexport class ActionButton extends ActionItem {\r\n    /**\r\n     * Constructor for ActionButton.\r\n     */\r\n    constructor() {\r\n        super(ActionButtonRendererComponent);\r\n    }\r\n\r\n    /**\r\n     * Method called when action button is clicked.\r\n     */\r\n    public execute(model?: any): void {\r\n        this.container.executed.emit({ result: model, item: this });\r\n    }\r\n}\r\n","import {\r\n    AfterViewInit,\r\n    Component,\r\n    EventEmitter,\r\n\r\n    OnDestroy,\r\n    Output\r\n} from '@angular/core';\r\nimport { ActionBarComponent } from '../../containers/action-bar/action-bar.component';\r\nimport { ActionItemComponent } from '../action-item.component';\r\nimport { ActionButton } from './action-button';\r\n\r\n@Component({\r\n    selector: 'sme-action-button',\r\n    template: ''\r\n})\r\nexport class ActionButtonComponent extends ActionItemComponent implements AfterViewInit, OnDestroy {\r\n    /**\r\n     * Event emitter fired when action button is clicked.\r\n     */\r\n    @Output()\r\n    public execute: EventEmitter<any> = new EventEmitter<any>(false);\r\n\r\n    /**\r\n     * Constructor for ActionButtonComponent.\r\n     */\r\n    constructor(private actionBarComponent: ActionBarComponent) {\r\n        super();\r\n    }\r\n\r\n    /**\r\n     * Callback method run after view has been initialized for ActionButtonComponent.\r\n     */\r\n    public ngAfterViewInit(): void {\r\n        setTimeout(() => {\r\n            this.actionBarComponent.updateActionBar();\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Callback method run after ActionButtonComponent has been destroyed.\r\n     */\r\n    public ngOnDestroy(): void {\r\n        setTimeout(() => {\r\n            this.actionBarComponent.updateActionBar();\r\n        });\r\n    }\r\n\r\n    protected createActionItem(): ActionButton {\r\n        const button = new ActionButton();\r\n        button.text = 'creat action item text';\r\n        button.execute = (target) => {\r\n            this.execute.emit(target);\r\n        };\r\n        return button;\r\n    }\r\n}\r\n","import { Observable, of } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport { ActionContainer } from '../../containers/action-container';\r\nimport { ActionButton } from '../action-button/action-button';\r\n\r\nexport class ActionButtonAsync<T> extends ActionButton {\r\n    /**\r\n     * Function to execute asynchronously on action button click.\r\n     */\r\n    public asyncExecute: MsftSme.Func1<T, Observable<T>>;\r\n    protected targetState: { [targetUniqueReference: string]: any } = {};\r\n\r\n    protected waitForUIStateUpdate = false;\r\n    protected skipBusyHandling = false;\r\n\r\n    /**\r\n     * Constructor for ActionButtonAsync.\r\n     */\r\n    constructor() {\r\n        super();\r\n        this.asyncExecute = (target) => of(target);\r\n    }\r\n\r\n    public execute(target?: T): void {\r\n        if (this.enabled) {\r\n            this.preExecute(target);\r\n            this.onExecute(target)\r\n                .pipe(take(1))\r\n                .subscribe({\r\n                    next: result => {\r\n                        this.container.executed.emit({ result: result || target, item: this });\r\n                    },\r\n                    error: error => {\r\n                        this.markTargetAsNotBusy(target);\r\n                        this.container.error.emit({ error: error, item: this });\r\n                    },\r\n                    complete: () => {\r\n                        this.postExecute(target);\r\n                    }\r\n                });\r\n        }\r\n    }\r\n\r\n    public setActionState(target: any, container: ActionContainer) {\r\n        this.target = target;\r\n        this.container = container;\r\n\r\n        if (this.waitForUIStateUpdate && target) {\r\n            if (this.isArray(target)) {\r\n                for (let i = 0; i < target.length; i++) {\r\n                    const item = target[i];\r\n                    const targetUniqueReference = this.getTargetUniqueReference(item);\r\n                    const postState = this.getTransitionState(target);\r\n                    if (this.isDataRefreshed(this.targetState[targetUniqueReference], postState)) {\r\n                        this.markTargetAsNotBusy(item);\r\n                    }\r\n                    this.busy = this.busyTargets.indexOf(targetUniqueReference) !== -1;\r\n                }\r\n            } else {\r\n                const targetUniqueReference = this.getTargetUniqueReference(target);\r\n                const postState = this.getTransitionState(target);\r\n                if (this.isDataRefreshed(this.targetState[targetUniqueReference], postState)) {\r\n                    this.markTargetAsNotBusy(target);\r\n                }\r\n                this.busy = this.busyTargets.indexOf(targetUniqueReference) !== -1;\r\n            }\r\n        }\r\n    }\r\n\r\n    protected getTransitionState(target: T): any {\r\n        return target;\r\n    }\r\n\r\n    protected preExecute(target: T) {\r\n        if (!this.skipBusyHandling) {\r\n            if (this.waitForUIStateUpdate) {\r\n                if (this.target === target) {\r\n                    this.busy = true;\r\n                }\r\n\r\n                this.markTargetAsBusy(target);\r\n            } else {\r\n                this.busy = true;\r\n            }\r\n        }\r\n    }\r\n\r\n    protected onExecute(target: T): Observable<T> {\r\n        // By default just return the target wrapped in observable and do nothing.\r\n        // This should be overridden in derived classes\r\n        return this.asyncExecute(target);\r\n    }\r\n\r\n    protected postExecute(target: T) {\r\n        if (!this.skipBusyHandling) {\r\n            if (this.waitForUIStateUpdate) {\r\n                if (this.target === target) {\r\n                    this.busy = false;\r\n                }\r\n                if (!this.waitForUIStateUpdate) {\r\n                    this.markTargetAsNotBusy(target);\r\n                }\r\n            } else {\r\n                this.busy = false;\r\n            }\r\n        }\r\n    }\r\n\r\n    protected markTargetAsBusy(target: any): void {\r\n        if (this.waitForUIStateUpdate && target) {\r\n            if (this.isArray(target)) {\r\n                for (let i = 0; i < target.length; i++) {\r\n                    this.markIndividualTargetAsBusy(target, i);\r\n                }\r\n            } else {\r\n                this.markIndividualTargetAsBusy(target);\r\n            }\r\n        }\r\n    }\r\n\r\n    private markIndividualTargetAsBusy(target: any, index?: number): void {\r\n        const targetObjectReference = this.markIndividualTargetParseTarget(target, index);\r\n        const targetUniqueReference = this.getTargetUniqueReference(targetObjectReference);\r\n\r\n        this.busyTargets.push(targetUniqueReference);\r\n\r\n        const state = this.getTransitionState(targetObjectReference);\r\n        this.targetState[targetUniqueReference] = state;\r\n    }\r\n\r\n    protected markTargetAsNotBusy(target: any): void {\r\n        if (target) {\r\n            if (this.isArray(target)) {\r\n                for (let i = 0; i < target.length; i++) {\r\n                    this.markIndividualTargetAsNotBusy(target, i);\r\n                }\r\n            } else {\r\n                this.markIndividualTargetAsNotBusy(target);\r\n            }\r\n        }\r\n    }\r\n\r\n    protected markIndividualTargetParseTarget(target: any, index?: number): any {\r\n        let targetObjectReference;\r\n        if (index !== undefined && this.isArray(target)) {\r\n            targetObjectReference = target[index];\r\n        } else {\r\n            targetObjectReference = target;\r\n        }\r\n\r\n        return targetObjectReference;\r\n    }\r\n\r\n    private markIndividualTargetAsNotBusy(target: any, index?: number): void {\r\n        const targetObjectReference = this.markIndividualTargetParseTarget(target, index);\r\n        const targetUniqueReference = this.getTargetUniqueReference(targetObjectReference);\r\n\r\n        const busyTargetIndex = this.busyTargets.indexOf(targetUniqueReference);\r\n        if (busyTargetIndex !== -1) {\r\n            this.busyTargets.splice(busyTargetIndex, 1);\r\n        }\r\n\r\n        const state = this.getTransitionState(targetObjectReference);\r\n        this.targetState[targetUniqueReference] = state;\r\n    }\r\n\r\n    protected isDataRefreshed(preState: any, postState: any): boolean {\r\n        return preState !== postState;\r\n    }\r\n\r\n    private isArray(target: any): boolean {\r\n        return Array.isArray(target);\r\n    }\r\n}\r\n","import {\r\n    AfterViewInit,\r\n    Component,\r\n    EventEmitter,\r\n    OnDestroy,\r\n    Output\r\n} from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { ActionBarComponent } from '../../containers/action-bar/action-bar.component';\r\nimport { ActionItemComponent } from '../action-item.component';\r\nimport { ActionButtonAsync } from './action-button-async';\r\n\r\nexport interface ActionButtonAsyncExecuteArgs {\r\n    execute: Observable<any>;\r\n    target: any;\r\n}\r\n@Component({\r\n    selector: 'sme-action-button-async:not([type])',\r\n    template: ''\r\n})\r\nexport class ActionButtonAsyncComponent extends ActionItemComponent implements AfterViewInit, OnDestroy {\r\n    /**\r\n     * Event emitter fired when action button is clicked.\r\n     */\r\n    @Output()\r\n    public execute: EventEmitter<ActionButtonAsyncExecuteArgs> = new EventEmitter<ActionButtonAsyncExecuteArgs>(false);\r\n\r\n    /**\r\n     * Constructor for ActionButtonAsyncComponent\r\n     */\r\n    constructor(private actionBarComponent: ActionBarComponent) {\r\n        super();\r\n    }\r\n\r\n    /**\r\n     * Callback method run after ActionButtonAsyncComponent view has been initialized.\r\n     */\r\n    public ngAfterViewInit(): void {\r\n        setTimeout(() => {\r\n            this.actionBarComponent.updateActionBar();\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Callback method run after ActionButtonAsyncComponent has been destroyed.\r\n     */\r\n    public ngOnDestroy(): void {\r\n        setTimeout(() => {\r\n            this.actionBarComponent.updateActionBar();\r\n        });\r\n    }\r\n\r\n    protected createActionItem(): ActionButtonAsync<any> {\r\n        const button = new ActionButtonAsync<any>();\r\n        button.asyncExecute = (target) => {\r\n            const args: ActionButtonAsyncExecuteArgs = {\r\n                execute: null,\r\n                target: target\r\n            };\r\n            this.execute.emit(args);\r\n\r\n            if (!args.execute) {\r\n                return of(target);\r\n            }\r\n\r\n            return args.execute;\r\n        };\r\n        return button;\r\n    }\r\n}\r\n","<sme-dropdown [attr.data-uta-id]=\"actionDropdownUtaId\" #dropDown class=\"sme-position-flex-none\" role=\"presentation\" [displayToSide]=\"item.container?.orientation === 'horizontal'\">\r\n  <button #dropDownButton role=\"menuitem\" type=\"button\" class=\"sme-button-trigger sme-layout-action-bar-item-height sme-button-auto-width sme-button-align-left sme-position-stretch-h sme-dropdown-toggle\"\r\n    [class.sme-toggled]=\"dropDown.isOpen\" [attr.aria-expanded]=\"dropDown.isOpen\" aria-haspopup=\"true\" [smeDisabled]=\"!item.enabled || item.busy || !item.ready\" [title]=\"actionTitle\" [attr.data-uta-id]=\"actionDropdownId\">\r\n    <p *ngIf=\"actionTitle\" class=\"sme-screen-reader\">{{ actionTitle }}</p>\r\n    <span [ngClass]=\"item.iconClass || ''\"></span>\r\n    <span [class.sme-screen-reader]=\"item.container.compact\" class=\"sme-arrange-ellipsis sme-action-button-text-span\">{{ item.text }}</span>\r\n    <span *ngIf=\"item.container?.orientation === 'vertical'\" class=\"sme-icon sme-icon-size-xxs sme-icon-chevronDown sme-margin-left-xs\"></span>\r\n    <span *ngIf=\"item.container?.orientation === 'horizontal'\" class=\"sme-icon sme-icon-size-xxs sme-icon-chevronRight sme-position-right-inline\"></span>\r\n  </button>\r\n  <sme-action-menu [actions]=\"item.actions\" role=\"menu\" class=\"sme-dropdown-content\" [(target)]=\"item.container.target\" (error)=\"item.container.error.emit($event)\"\r\n    (executed)=\"item.container.executed.emit($event)\"></sme-action-menu>\r\n</sme-dropdown>\r\n","import {\r\n    AfterContentInit,\r\n    AfterViewInit,\r\n    Component,\r\n    ContentChildren,\r\n    DoCheck,\r\n    ElementRef,\r\n    HostListener,\r\n    Input,\r\n    OnChanges,\r\n    OnDestroy,\r\n    QueryList,\r\n    Renderer2,\r\n    SimpleChanges,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { DropdownComponent } from '../../../dropdown/dropdown.component';\r\nimport { ActionBarComponent } from '../../containers/action-bar/action-bar.component';\r\nimport { ActionItem, ActionItemComponent, ActionItemRendererComponent } from '../action-item.component';\r\n\r\nexport class ActionDropdown extends ActionItem {\r\n    /**\r\n     * List of child ActionItem objects.\r\n     */\r\n    public actions: ActionItem[];\r\n\r\n    /**\r\n     * Constructor for ActionDropdown.\r\n     */\r\n    constructor() {\r\n        super(ActionDropdownRendererComponent);\r\n    }\r\n}\r\n\r\n@Component({\r\n    selector: 'sme-action-dropdown-renderer',\r\n    templateUrl: './action-dropdown.component.html'\r\n})\r\nexport class ActionDropdownRendererComponent extends ActionItemRendererComponent<ActionDropdown> implements DoCheck {\r\n    private static hoverTimeToActivate = 500;\r\n    public static dropdownUtaIdSuffix = '-dropdown';\r\n\r\n    /**\r\n     * Dropdown component used in ActionDropdown.\r\n     */\r\n    @ViewChild('dropDown') public dropDown: DropdownComponent;\r\n    @ViewChild('dropDownButton') private dropDownButtonElement: ElementRef;\r\n\r\n    private isHovering = false;\r\n\r\n    public get actionTitle(): string {\r\n        return this.item.name && this.item.name !== this.item.text ? this.item.name : null;\r\n    }\r\n\r\n    public get actionDropdownId(): string {\r\n        return this.item.actionId;\r\n    }\r\n\r\n    public get actionDropdownUtaId(): string {\r\n        return this.item.actionId + ActionDropdownRendererComponent.dropdownUtaIdSuffix;\r\n    }\r\n\r\n    /**\r\n     * Constructor of ActionDropdownRendererComponent.\r\n     */\r\n    constructor(private renderer: Renderer2, private hostElement: ElementRef) {\r\n        super();\r\n        renderer.addClass(hostElement.nativeElement, 'sme-position-stretch');\r\n    }\r\n\r\n    /**\r\n     * Method called to register a change with the ActionButton.\r\n     * @param item The ActionButton to register change for.\r\n     */\r\n    public itemChanged(item: ActionDropdown) {\r\n        super.itemChanged(item);\r\n    }\r\n\r\n    public ngDoCheck() {\r\n        const offsetWidth = (<HTMLElement>this.hostElement.nativeElement).offsetWidth;\r\n        if (offsetWidth === 0) {\r\n            return;\r\n        }\r\n\r\n        // It looks like the CSS icon isn't being included in the offsetWidth, nor the clientWidth.\r\n        // Adding here for simplicity and clarity.\r\n        const cssIconWidth = 14;\r\n        const calculatedWidth = offsetWidth + cssIconWidth;\r\n        if (this.item.width !== calculatedWidth) {\r\n            this.item.width = calculatedWidth;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Host listener to handle keyboard events.\r\n     */\r\n    @HostListener('keydown', ['$event'])\r\n    public onToggleKeydown(event: KeyboardEvent): void {\r\n        // accessibility, take focus to the action button after a selection in dropdown elements.\r\n        switch (event.keyCode) {\r\n            case KeyCode.Enter: {\r\n                if (this.dropDown &&\r\n                    this.dropDownButtonElement &&\r\n                    this.dropDownButtonElement.nativeElement &&\r\n                    this.dropDown.isOpen &&\r\n                    this.dropDown.contentElement) {\r\n                    this.dropDownButtonElement.nativeElement.focus();\r\n                }\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Host listeners to handle mouse events.\r\n     */\r\n    @HostListener('mouseenter', ['$event'])\r\n    @HostListener('mouseleave', ['$event'])\r\n    public onMouseEvent(event: Event) {\r\n        if (this.item.container.orientation === 'vertical') {\r\n            return;\r\n        }\r\n        this.isHovering = event.type === 'mouseenter';\r\n        this.yieldToggleDropdown(this.isHovering);\r\n    }\r\n\r\n    private yieldToggleDropdown(wasHovering: boolean) {\r\n        setTimeout(_ => {\r\n            if (this.isHovering !== wasHovering) {\r\n                return;\r\n            }\r\n            if (wasHovering) {\r\n                this.dropDown.open();\r\n            } else {\r\n                this.dropDown.close();\r\n            }\r\n        }, ActionDropdownRendererComponent.hoverTimeToActivate);\r\n    }\r\n}\r\n\r\n@Component({\r\n    selector: 'sme-action-dropdown',\r\n    template: ''\r\n})\r\nexport class ActionDropdownComponent extends ActionItemComponent implements AfterViewInit, OnChanges, OnDestroy, AfterContentInit {\r\n\r\n    @ViewChild('dropDown') public dropDown: DropdownComponent;\r\n\r\n    @ContentChildren('action')\r\n    public childActions: QueryList<ActionItemComponent>;\r\n\r\n    @Input()\r\n    public actions: ActionItem[] = [];\r\n\r\n    constructor(private actionBarComponent: ActionBarComponent) {\r\n        super();\r\n\r\n        this.childActions = new QueryList<ActionItemComponent>();\r\n    }\r\n\r\n    public ngAfterViewInit(): void {\r\n        setTimeout(() => {\r\n            this.actionBarComponent.updateActionBar();\r\n        });\r\n    }\r\n\r\n    public ngAfterContentInit() {\r\n        this.childActions.changes.subscribe(val => {\r\n            this.updateActions();\r\n        });\r\n        this.updateActions();\r\n    }\r\n\r\n    public ngOnChanges(changes: SimpleChanges) {\r\n        const props = Object.keys(changes);\r\n        props.forEach(prop => {\r\n            if (prop === 'actions') {\r\n                this.updateActions();\r\n                return;\r\n            }\r\n            const change = changes[prop];\r\n            this.action[prop] = change.currentValue;\r\n        });\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        setTimeout(() => {\r\n            this.actionBarComponent.updateActionBar();\r\n        });\r\n    }\r\n\r\n    protected createActionItem(): ActionDropdown {\r\n        const dropdown = new ActionDropdown();\r\n        dropdown.actions = [];\r\n        return dropdown;\r\n    }\r\n\r\n    private updateActions() {\r\n        // QuerySelector currently includes self, but this should be fixed in Angular 8\r\n        // @see https://stackoverflow.com/questions/40660093/why-does-contentchildren-include-self-this-when-querying-a-matching-selector\r\n        const combinedActions = this.actions.concat(this.childActions.filter(item => item !== this).map(item => item.action));\r\n        (<ActionDropdown>this.action).actions = combinedActions;\r\n    }\r\n}\r\n","<hr *ngIf=\"item.container?.orientation === 'horizontal'\" [hidden]=\"checkFirstOrLast()\" class=\"sme-separator\"/>\r\n<div *ngIf=\"item.container?.orientation === 'vertical'\" [hidden]=\"checkFirstOrLast()\" class=\"sme-layout-action-bar-item-height sme-padding-vertical-xxs\">\r\n  <div class=\"sme-border-left-sm sme-position-stretch-v sme-separator\"></div>\r\n</div>","import { Component, ElementRef, Renderer2 } from '@angular/core';\r\nimport { ActionItemRendererComponent } from '../action-item.component';\r\nimport { ActionItemSeparator } from './action-item-separator';\r\n\r\n@Component({\r\n    selector: 'sme-action-item-separator-renderer',\r\n    templateUrl: './action-item-separator-renderer.component.html'\r\n})\r\nexport class ActionItemSeparatorRendererComponent extends ActionItemRendererComponent<ActionItemSeparator> {\r\n\r\n    /**\r\n     * Constructor for ActionItemSeparatorRendererComponent\r\n     */\r\n    constructor(private renderer: Renderer2, private hostElement: ElementRef) {\r\n        super();\r\n        renderer.addClass(hostElement.nativeElement, 'sme-position-stretch');\r\n    }\r\n\r\n    /**\r\n     * Method called to register a change with the ActionButton.\r\n     * @param item The ActionButton to register change for.\r\n     */\r\n    public itemChanged(item: ActionItemSeparator) {\r\n        super.itemChanged(item);\r\n    }\r\n\r\n    /**\r\n     * Method to check whether or not action item separator is first or last in its parent container.\r\n     * @returns True if first or last, false otherwise.\r\n     */\r\n    public checkFirstOrLast(): boolean {\r\n        const siblingActions = this.item.container.actions;\r\n        if (siblingActions[0] === this.item || MsftSme.last(siblingActions) === this.item) {\r\n            return true;\r\n        } else {\r\n            return false;\r\n        }\r\n    }\r\n}\r\n","import { ActionItem } from '../action-item.component';\r\nimport { ActionItemSeparatorRendererComponent } from './action-item-separator-renderer.component';\r\n\r\nexport class ActionItemSeparator extends ActionItem {\r\n    /**\r\n     * Constructor for ActionItemSeparator.\r\n     */\r\n    constructor() {\r\n        super(ActionItemSeparatorRendererComponent);\r\n    }\r\n\r\n    /**\r\n     * Method called when action button is clicked.\r\n     */\r\n    public execute(model?: any): void {\r\n        this.container.executed.emit({ result: model, item: this });\r\n    }\r\n}\r\n","import {\r\n    AfterViewInit,\r\n    Component,\r\n    OnDestroy\r\n} from '@angular/core';\r\nimport { ActionBarComponent } from '../../containers/action-bar/action-bar.component';\r\nimport { ActionItemComponent } from '../action-item.component';\r\nimport { ActionItemSeparator } from './action-item-separator';\r\n\r\n@Component({\r\n    selector: 'sme-action-item-separator',\r\n    template: ''\r\n})\r\nexport class ActionItemSeparatorComponent extends ActionItemComponent implements AfterViewInit, OnDestroy {\r\n    /**\r\n     * Constructor for ActionItemSeparatorComponent.\r\n     */\r\n    constructor(private actionBarComponent: ActionBarComponent) {\r\n        super();\r\n    }\r\n\r\n    public ngAfterViewInit(): void {\r\n        setTimeout(() => {\r\n            this.actionBarComponent.updateActionBar();\r\n        });\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        setTimeout(() => {\r\n            this.actionBarComponent.updateActionBar();\r\n        });\r\n    }\r\n\r\n    protected createActionItem(): ActionItemSeparator {\r\n        const separator = new ActionItemSeparator();\r\n        return separator;\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ExtensionBroker } from '@microsoft/windows-admin-center-sdk/core/data/extension-broker/extension-broker';\r\nimport { RpcService } from './rpc.service';\r\n\r\n@Injectable()\r\n/**\r\n * Extension broker service class.\r\n * This is an injectable service wrapper for the actual extension broker class.\r\n */\r\nexport class ExtensionBrokerService extends ExtensionBroker {\r\n    constructor(rpc: RpcService) {\r\n        super(rpc);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { TagManager } from '@microsoft/windows-admin-center-sdk/core/security/tag-manager';\r\nimport { ExtensionBrokerService } from './extension-broker.service';\r\n\r\n@Injectable()\r\nexport class TagService extends TagManager {\r\n    constructor(extensionBroker: ExtensionBrokerService) {\r\n        super(extensionBroker);\r\n    }\r\n}\r\n","import { AfterViewInit, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { TagSuggestion } from '@microsoft/windows-admin-center-sdk/core/security/tag-manager';\r\nimport { of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { TagService } from '../../../service/tag.service';\r\nimport { ActionBarComponent } from '../containers/action-bar/action-bar.component';\r\nimport { ActionButtonAsync } from '../items/action-button-async/action-button-async';\r\nimport { ActionButtonAsyncComponent, ActionButtonAsyncExecuteArgs } from '../items/action-button-async/action-button-async.component';\r\n\r\n@Component({\r\n    selector: 'sme-action-button-async[type=\"tags\"]',\r\n    template: ''\r\n})\r\nexport class TagsActionButtonComponent extends ActionButtonAsyncComponent implements AfterViewInit {\r\n    /**\r\n     * Event emitter for when the action is complete\r\n     */\r\n    @Output()\r\n    public execute: EventEmitter<ActionButtonAsyncExecuteArgs> = new EventEmitter<ActionButtonAsyncExecuteArgs>();\r\n\r\n    /**\r\n     * The component id registered with the TagService for these tags\r\n     */\r\n    @Input()\r\n    public componentId: string;\r\n\r\n    /**\r\n     * Tag suggestions for the edit tags dialog\r\n     */\r\n    @Input()\r\n    public suggestions: TagSuggestion[];\r\n\r\n    /**\r\n     * The input object for what tags to edit\r\n     */\r\n    @Input()\r\n    public target: any;\r\n\r\n    /**\r\n     * controls action button state\r\n     */\r\n    @Input()\r\n    public enabled = true;\r\n\r\n    /**\r\n     * Constructor for TagsActionButtonComponent.\r\n     */\r\n    constructor(actionBarComponent: ActionBarComponent, private tagService: TagService) {\r\n        super(actionBarComponent);\r\n    }\r\n\r\n    protected createActionItem(): ActionButtonAsync<any> {\r\n        const button = new ActionButtonAsync<any>();\r\n        button.text = this.strings.MsftSmeShell.Angular.ActionButton.Templates.EditTags.Label;\r\n        button.iconClass = 'sme-icon sme-icon-edit';\r\n        button.asyncExecute = () => {\r\n            const args: ActionButtonAsyncExecuteArgs = {\r\n                execute: null,\r\n                target: this.target\r\n            };\r\n\r\n            return this.tagService.showDialog(\r\n                this.componentId,\r\n                this.target,\r\n                this.suggestions\r\n                ).pipe(\r\n                    map(\r\n                        () => {\r\n                            this.execute.emit(args);\r\n\r\n                            if (!args.execute) {\r\n                                return of(this.target);\r\n                            }\r\n\r\n                        }\r\n                    )\r\n                );\r\n\r\n        };\r\n        return button;\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { DisabledModule } from '../../directives/disabled/disabled.module';\r\nimport { FilterPipeModule } from '../../pipes/filter-pipe.module';\r\nimport { DropdownModule } from '../dropdown/dropdown.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { ActionBarComponent } from './containers/action-bar/action-bar.component';\r\nimport { ActionBarDirective } from './containers/action-bar/action-bar.directive';\r\nimport { ActionMenuComponent } from './containers/action-menu/action-menu.component';\r\nimport { ActionButtonRendererComponent } from './items/action-button/action-button-renderer.component';\r\nimport { ActionButtonComponent } from './items/action-button/action-button.component';\r\nimport { ActionButtonAsyncComponent } from './items/action-button-async/action-button-async.component';\r\nimport { ActionDropdownComponent, ActionDropdownRendererComponent } from './items/action-dropdown/action-dropdown.component';\r\nimport { ActionItemSeparatorRendererComponent } from './items/action-item-separator/action-item-separator-renderer.component';\r\nimport { ActionItemSeparatorComponent } from './items/action-item-separator/action-item-separator.component';\r\nimport { DynamicActionItemComponent } from './items/dynamic-action-item.component';\r\nimport { TagsActionButtonComponent } from './templates/tags-action-button.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        ActionBarComponent,\r\n        ActionBarDirective,\r\n        ActionButtonComponent,\r\n        ActionButtonRendererComponent,\r\n        ActionMenuComponent,\r\n        DynamicActionItemComponent,\r\n        ActionDropdownComponent,\r\n        ActionDropdownRendererComponent,\r\n        ActionItemSeparatorComponent,\r\n        ActionItemSeparatorRendererComponent,\r\n        ActionButtonAsyncComponent,\r\n        TagsActionButtonComponent\r\n    ],\r\n    declarations: [\r\n        ActionBarComponent,\r\n        ActionBarDirective,\r\n        ActionMenuComponent,\r\n        ActionButtonComponent,\r\n        ActionButtonRendererComponent,\r\n        ActionDropdownComponent,\r\n        ActionDropdownRendererComponent,\r\n        ActionItemSeparatorComponent,\r\n        ActionItemSeparatorRendererComponent,\r\n        DynamicActionItemComponent,\r\n        ActionButtonAsyncComponent,\r\n        TagsActionButtonComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        FilterPipeModule,\r\n        DropdownModule,\r\n        DisabledModule,\r\n        TooltipModule\r\n    ]\r\n})\r\nexport class ActionsModule { }\r\n","import { Component, EventEmitter, HostBinding, HostListener, Injector, Output } from '@angular/core';\r\nimport { Strings } from '../../generated/strings';\r\nimport { BaseComponent } from '../common/base.component';\r\n\r\n@Component({\r\n    selector: 'sme-drop-zone',\r\n    template: '<ng-content></ng-content>'\r\n})\r\nexport class DropZoneComponent extends BaseComponent<Strings> {\r\n\r\n    @HostBinding('class.sme-dragged-over')\r\n    public isDraggedOver: boolean;\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'DropZoneComponent';\r\n    }\r\n\r\n    @Output()\r\n    public smeDrop: EventEmitter<DataTransfer> = new EventEmitter<DataTransfer>();\r\n\r\n    /**\r\n     * Constructs a new instance of @see DropZoneComponent\r\n     * @param injector the angular injection service for the base classes @SmeInjectableBase Annotation.\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     * When called in the @see BaseComponent super class initialization, These classes will be automatically assigned to the host element.\r\n     */\r\n    protected getInitialHostClasses(): string[] {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-drop-zone'\r\n        ]);\r\n    }\r\n\r\n    /**\r\n     * Bring all browsers into a common behavior by always handling all drop target events\r\n     */\r\n\r\n    @HostListener('dragenter', ['$event'])\r\n    public onDragEnter(event: DragEvent): void {\r\n        this.handleEvent();\r\n        this.isDraggedOver = true;\r\n    }\r\n\r\n    @HostListener('dragover', ['$event'])\r\n    public onDragOver(event: DragEvent): void {\r\n        this.handleEvent();\r\n        this.isDraggedOver = true;\r\n    }\r\n\r\n    @HostListener('dragleave', ['$event'])\r\n    public onDragLeave(event: DragEvent): void {\r\n        this.handleEvent();\r\n        this.isDraggedOver = false;\r\n    }\r\n\r\n    @HostListener('drop', ['$event'])\r\n    public onDrop(event: DragEvent): void {\r\n        this.handleEvent();\r\n        this.isDraggedOver = false;\r\n        this.smeDrop.emit(event.dataTransfer);\r\n    }\r\n\r\n    private handleEvent() {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { DropZoneComponent } from './drop-zone.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        DropZoneComponent\r\n    ],\r\n    exports: [\r\n        DropZoneComponent\r\n    ],\r\n    imports: [\r\n        CommonModule\r\n    ]\r\n})\r\nexport class DropZoneModule { }\r\n","<ng-container *ngIf=\"smeIconClassName || urlIcon\">\r\n  <span *ngIf=\"smeIconClassName\" class=\"sme-icon-text-icon sme-position-flex-align-center sme-icon sme-margin-right-xs\" [class]=\"smeIconClassName ? smeIconClassName : ''\"></span>\r\n  <span *ngIf=\"urlIcon && !smeIconClassName\" class=\"sme-icon-text-icon sme-position-flex-align-center sme-url-icon sme-margin-right-xs\" [style.background-image]=\"urlIcon\"></span>\r\n</ng-container>\r\n<input *ngIf=\"readOnlyFormField\" type=\"text\" readonly class=\"sme-icon-text-text sme-position-flex-auto\" [attr.aria-label]=\"readOnlyFormFieldLabel\" tabindex=\"-1\" [value]=\"title\" />\r\n<h3 *ngIf=\"!readOnlyFormField && showTitle\" class=\"sme-icon-text-text sme-position-flex-align-center\">{{ title }}</h3>\r\n","import { Component, HostBinding, Injector, Input, OnInit } from '@angular/core';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { CoreBaseComponent } from '../../common/base.component';\r\n\r\n@Component({\r\n    selector: 'sme-icon-text',\r\n    templateUrl: './icon-text.component.html'\r\n})\r\nexport class IconTextComponent extends CoreBaseComponent implements OnInit {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'IconTextComponent';\r\n    }\r\n\r\n    /**\r\n     * The text in string.\r\n     */\r\n    @Input()\r\n    public title = '';\r\n\r\n    /**\r\n     * It determines whether to show title\r\n     */\r\n    @Input()\r\n    public showTitle = true;\r\n\r\n    @HostBinding('class.sme-layout-flex')\r\n    public layoutFlex = true;\r\n\r\n    /**\r\n     * The sme icon class for URL icons.\r\n     */\r\n    @Input()\r\n    public urlIcon: string;\r\n\r\n    /**\r\n     * The sme icon class for MDL icons.\r\n     */\r\n    @Input()\r\n    public smeIconClassName: string;\r\n\r\n    /**\r\n     * It determines whether used in the read-only form field.\r\n     */\r\n    @Input()\r\n    public readOnlyFormField = false;\r\n\r\n    /**\r\n    * The label for the readonly form field.\r\n    */\r\n    @Input()\r\n    public readOnlyFormFieldLabel: string;\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n\r\n        if (this.smeIconClassName && this.urlIcon) {\r\n            Logging.log({\r\n                level: LogLevel.Warning,\r\n                message: 'Either sme icon or url icon is accepted.',\r\n                source: `${this.logSourceName}.constructor`\r\n            });\r\n        }\r\n    }\r\n}\r\n","export const defaultIconSize = 16;\r\n\r\nexport function getCssSizeString(defaultSize: number | string, size: number | string = defaultSize) {\r\n    if (typeof size === 'number') {\r\n        size = `${size}px`;\r\n    }\r\n    return size;\r\n}\r\n","import { Component, HostBinding, Injector, Input } from '@angular/core';\r\nimport { CoreBaseComponent } from '../../../common/base.component';\r\nimport { getCssSizeString } from '../models/icon-size-helpers';\r\n\r\n@Component({\r\n    selector: 'sme-icon-layer',\r\n    template: '<ng-content></ng-content>'\r\n})\r\nexport class IconLayerComponent extends CoreBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'IconLayerComponent';\r\n    }\r\n\r\n    private internalFontSize;\r\n\r\n    /**\r\n     * Input binding for the size of the layer.\r\n     */\r\n    @Input()\r\n    public size: number | string;\r\n\r\n    /**\r\n     * Input binding for the top position of the layer.\r\n     */\r\n    @Input()\r\n    public top: number | string;\r\n\r\n    /**\r\n     * Input binding for the left position of the layer.\r\n     */\r\n    @Input()\r\n    public left: number | string;\r\n\r\n    /**\r\n     * Input binding for the height of the layer.\r\n     */\r\n    @Input()\r\n    public height: number | string;\r\n\r\n    /**\r\n     * Input binding for the width of the layer.\r\n     */\r\n    @Input()\r\n    public width: number | string;\r\n\r\n    /**\r\n     * Host element binding for the right position of the layer\r\n     */\r\n    @HostBinding('style.top') get getTop() {\r\n        return getCssSizeString('0', this.top);\r\n    }\r\n\r\n    /**\r\n     * Host element binding for the left position of the layer\r\n     */\r\n    @HostBinding('style.left') get getLeft() {\r\n        return getCssSizeString('0', this.left);\r\n    }\r\n\r\n    /**\r\n     * Host element binding for the width of the layer\r\n     */\r\n    @HostBinding('style.width') get getWidth() {\r\n        return getCssSizeString('100%', this.width);\r\n    }\r\n\r\n    /**\r\n     * Host element binding for the height of the layer\r\n     */\r\n    @HostBinding('style.height') get getHeight() {\r\n        return getCssSizeString('100%', this.height);\r\n    }\r\n\r\n    /**\r\n     * Host element binding for the font-size of the icon\r\n     */\r\n    @HostBinding('style.font-size')\r\n    public get fontSize() {\r\n        return this.internalFontSize;\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        // It's related to the Bug 15522066: table grouping in Microsoft Edge (not Chrome) causes column mis-alignment if status is a column\r\n        // Basically the problem is if this component has the font-size inline style in the begining of a table rendering,\r\n        // it messes up the table layout in Microsoft Edge (only Microsoft Edge).\r\n        // The workaround is to defer the inline style rendering the Microsoft Edge can handle the table layout correctly.\r\n        setTimeout(() => {\r\n            this.internalFontSize = getCssSizeString(this.hostElement.nativeElement.clientHeight, this.size);\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-icon-layer'\r\n        ]);\r\n    }\r\n}\r\n","import { Component, HostBinding, Injector, Input } from '@angular/core';\r\nimport { CoreBaseComponent } from '../../common/base.component';\r\nimport { defaultIconSize, getCssSizeString } from './models/icon-size-helpers';\r\n\r\n/**\r\n * @smeDoc {@label Layered Icon @id sme-layered-icon}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/layered-icon-overview.md}\r\n *\r\n * @example {@label Layered Icon example @id layered-icon-example}\r\n * @file {@filename layered-icon-example.component.html @filepath ./examples/layered-icon-example.component.html }\r\n * @file {@filename layered-icon-example.component.ts @filepath ./examples/layered-icon-example.component.ts }\r\n * @file {@filename layered-icon-example.module.ts @filepath ./examples/layered-icon-example.module.ts }\r\n */\r\n@Component({\r\n    selector: 'sme-layered-icon',\r\n    template: '<ng-content></ng-content>'\r\n})\r\nexport class LayeredIconComponent extends CoreBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'LayeredIconComponent';\r\n    }\r\n\r\n    /**\r\n     * Input binding for the size of the icon.\r\n     * this is a css size string or number of pixels\r\n     */\r\n    @Input()\r\n    public size: number | string;\r\n\r\n    /**\r\n     * Host element binding for the width of the icon\r\n     */\r\n    @HostBinding('style.width')\r\n    public get width() {\r\n        return getCssSizeString(defaultIconSize, this.size);\r\n    }\r\n\r\n    /**\r\n     * Host element binding for the height of the icon\r\n     */\r\n    @HostBinding('style.height')\r\n    public get height() {\r\n        return getCssSizeString(defaultIconSize, this.size);\r\n    }\r\n\r\n    /**\r\n     * Host element binding for the font-size of the icon\r\n     */\r\n    @HostBinding('style.font-size')\r\n    public get fontSize() {\r\n        return getCssSizeString(defaultIconSize, this.size);\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-layered-icon'\r\n        ]);\r\n    }\r\n}\r\n","<sme-layered-icon [size]=\"size\" aria-hidden=\"true\" [title]=\"statusString\">\r\n  <sme-icon-layer [size]=\"size\" *ngFor=\"let layer of layers\" [ngClass]=\"layer\"></sme-icon-layer>\r\n</sme-layered-icon>\r\n<!-- in scan mode screen reader does not focus on the layered-icon properly to read the title -->\r\n<div class=\"sme-screen-reader\">{{ statusString }}</div>\r\n","import { Component, Injector, Input } from '@angular/core';\r\nimport { CoreBaseComponent } from '../../../common/base.component';\r\n\r\nexport enum StatusIconType {\r\n    Critical = 'critical',\r\n    Error = 'error',\r\n    Warning = 'warning',\r\n    Progress = 'progress',\r\n    Info = 'info',\r\n    Success = 'success',\r\n    Unknown = 'unknown'\r\n}\r\n\r\nexport module StatusIconType {\r\n    export type Bindable = StatusIconType | 'critical' | 'error' | 'warning' | 'progress' | 'info' | 'success' | 'unknown';\r\n\r\n    const statusIconTypes = [\r\n        StatusIconType.Critical,\r\n        StatusIconType.Error,\r\n        StatusIconType.Warning,\r\n        StatusIconType.Progress,\r\n        StatusIconType.Info,\r\n        StatusIconType.Success,\r\n        StatusIconType.Unknown\r\n    ];\r\n    function fromString(value: string): StatusIconType {\r\n        const defaultStatusIconType = StatusIconType.Unknown;\r\n\r\n        if (MsftSme.isNullOrWhiteSpace(value)) {\r\n            return defaultStatusIconType;\r\n        }\r\n\r\n        value = value.toLowerCase();\r\n        return statusIconTypes.find(type => type.toLowerCase() === value) || defaultStatusIconType;\r\n    }\r\n\r\n    export function fromBindableType(value: Bindable): StatusIconType {\r\n        if (typeof (value) === 'string') {\r\n            return fromString(value);\r\n        }\r\n        return value;\r\n    }\r\n\r\n    export function getIconLayers(iconType: StatusIconType): string[] {\r\n        switch (iconType) {\r\n            case StatusIconType.Critical:\r\n                return ['sme-icon', 'sme-color-critical', 'sme-icon-statusErrorFull'];\r\n            case StatusIconType.Error:\r\n                return ['sme-icon', 'sme-color-error', 'sme-icon-criticalErrorSolid'];\r\n            case StatusIconType.Warning:\r\n                return ['sme-icon', 'sme-color-warning', 'sme-icon-warningSolid'];\r\n            case StatusIconType.Progress:\r\n                return ['sme-icon', 'sme-color-progress', 'sme-icon-syncStatusSolid'];\r\n            case StatusIconType.Info:\r\n                return ['sme-icon', 'sme-color-info', 'sme-icon-infoSolid'];\r\n            case StatusIconType.Success:\r\n                return ['sme-icon', 'sme-color-success', 'sme-icon-completedSolid'];\r\n            case StatusIconType.Unknown:\r\n                return ['sme-icon', 'sme-color-neutral', 'sme-icon-unknownSolid'];\r\n        }\r\n    }\r\n}\r\n\r\n@Component({\r\n    selector: 'sme-status-icon',\r\n    templateUrl: './status-icon.component.html'\r\n})\r\nexport class StatusIconComponent extends CoreBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n    */\r\n    protected get logSourceName() {\r\n        return 'StatusIconComponent';\r\n    }\r\n\r\n    /**\r\n     * Input binding for the size of the icon in pixels\r\n     */\r\n    @Input()\r\n    public size: number | string;\r\n\r\n    /**\r\n     * Input binding for the status icon type\r\n     */\r\n    @Input()\r\n    public set status(type: StatusIconType) {\r\n        const layers = [];\r\n        switch (type) {\r\n            case StatusIconType.Critical:\r\n                layers.push(\r\n                    ['sme-icon', 'sme-color-critical', 'sme-icon-statusErrorFull']\r\n                );\r\n                this.statusString = this.localStrings.Critical;\r\n                break;\r\n            case StatusIconType.Error:\r\n                layers.push(\r\n                    ['sme-icon', 'sme-color-error', 'sme-icon-criticalErrorSolid']\r\n                );\r\n                this.statusString = this.localStrings.Error;\r\n                break;\r\n            case StatusIconType.Warning:\r\n                layers.push(\r\n                    ['sme-icon', 'sme-color-warning', 'sme-icon-warningSolid']\r\n                );\r\n                this.statusString = this.localStrings.Warning;\r\n                break;\r\n            case StatusIconType.Progress:\r\n                layers.push(\r\n                    ['sme-icon', 'sme-color-progress', 'sme-icon-syncStatusSolid']\r\n                );\r\n                this.statusString = this.localStrings.Progress;\r\n                break;\r\n            case StatusIconType.Info:\r\n                layers.push(\r\n                    ['sme-icon', 'sme-color-info', 'sme-icon-infoSolid']\r\n                );\r\n                this.statusString = this.localStrings.Info;\r\n                break;\r\n            case StatusIconType.Success:\r\n                layers.push(\r\n                    ['sme-icon', 'sme-color-success', 'sme-icon-completedSolid']\r\n                );\r\n                this.statusString = this.localStrings.Success;\r\n                break;\r\n            case StatusIconType.Unknown:\r\n                layers.push(\r\n                    ['sme-icon', 'sme-color-neutral', 'sme-icon-unknownSolid']\r\n                );\r\n                this.statusString = this.localStrings.Unknown;\r\n                break;\r\n        }\r\n        this.layers = layers;\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * the icon layers used to build the status icon\r\n     */\r\n    public layers: any[];\r\n\r\n    /**\r\n     * the state of the icon as a localized string\r\n     */\r\n    public statusString: string;\r\n\r\n    private localStrings = this.strings.MsftSmeShell.Angular.StatusIcon;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { IconTextComponent } from './icon-text/icon-text.component';\r\nimport { IconLayerComponent } from './layered-icon/layer/icon-layer.component';\r\nimport { LayeredIconComponent } from './layered-icon/layered-icon.component';\r\nimport { StatusIconComponent } from './layered-icon/status/status-icon.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        LayeredIconComponent,\r\n        IconLayerComponent,\r\n        IconTextComponent,\r\n        StatusIconComponent\r\n    ],\r\n    declarations: [\r\n        LayeredIconComponent,\r\n        IconLayerComponent,\r\n        IconTextComponent,\r\n        StatusIconComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        TooltipModule\r\n    ]\r\n})\r\nexport class IconModule { }\r\n","<div [id]=\"id\" class=\"sme-layout-absolute\" [style.top.px]='yCoordInGrid' [style.left.px]='xCoordInGrid' [style.width.px]='widthInGrid' [style.height.px]='heightInGrid'>\r\n  <div class=\"sme-border-inset-sm sme-border-color-base-90 sme-background-color-white sme-cursor-pointer sme-layout-absolute sme-position-inset-none sme-margin-top-xs sme-margin-left-xs\"\r\n    draggable=\"true\" (dragstart)=\"onDragStart($event)\" (drag)=\"onDrag($event)\" (dragend)=\"onDragEnd($event)\" [ngClass]=\"{'sme-cursor-pointer': isLayoutItemDraggable}\">\r\n    <p *ngIf=\"isLayoutItemDraggable\" class=\"sme-font-h3 sme-color-black sme-position-center sme-layout-absolute\"> {{ displayName }} </p>\r\n    <ng-content></ng-content>\r\n    <div (mousedown)='onCornerClick($event)' class=\"sme-corner-resizer-cursor\" [ngClass]=\"{'sme-corner-resizer-disabled': !isLayoutItemDraggable}\"></div>\r\n  </div>\r\n</div>\r\n","import { Component, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\n\r\n/**\r\n * Individual Layout Items that can be added on demand with as -\r\n * Height\r\n * Width\r\n * X-Coordinate\r\n * Y-Coordinate\r\n */\r\n@Component({\r\n    selector: 'sme-editable-layout-item',\r\n    templateUrl: './editable-layout-item.component.html'\r\n\r\n})\r\nexport class EditableLayoutItemComponent extends CoreBaseComponent implements OnInit {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'EditableLayoutItemComponent';\r\n    }\r\n    public px: number;\r\n    public py: number;\r\n    public draggingWindow = false;\r\n    public minArea: number;\r\n    public get area(): number {\r\n        return this.widthInGrid * this.heightInGrid;\r\n    }\r\n\r\n    @Input()\r\n    public displayName: string;\r\n\r\n    @Input()\r\n    public heightInGrid: number;\r\n\r\n    @Input()\r\n    public widthInGrid: number;\r\n\r\n    @Input()\r\n    public xCoordInGrid: number;\r\n\r\n    @Input()\r\n    public yCoordInGrid: number;\r\n\r\n    @Input()\r\n    public id: number;\r\n\r\n    @Input()\r\n    public isLayoutItemResizable: boolean;\r\n\r\n    @Input()\r\n    public isLayoutItemDraggable: boolean;\r\n\r\n    @Output() public dragEnd = new EventEmitter<EditableLayoutItemComponent>();\r\n\r\n    public ngOnInit(): void {\r\n        this.px = 0;\r\n        this.py = 0;\r\n        this.draggingWindow = false;\r\n        // area of 3 cubes in grid\r\n        this.minArea = 72 * 72 * 3;\r\n    }\r\n\r\n    public onDrag(event: DragEvent) {\r\n        if (!this.draggingWindow || !this.isLayoutItemDraggable) {\r\n            return;\r\n        }\r\n\r\n        const hostRect = (<HTMLElement>this.hostElement.nativeElement).getBoundingClientRect();\r\n        const newX = event.clientX - hostRect.left;\r\n        const newY = event.clientY - hostRect.top;\r\n\r\n        this.xCoordInGrid = newX > 0 ? newX : this.xCoordInGrid;\r\n        this.yCoordInGrid = newY > 0 ? newY : this.yCoordInGrid;\r\n    }\r\n\r\n    public onDragStart(event: DragEvent) {\r\n        this.draggingWindow = true;\r\n    }\r\n\r\n    public onDragEnd(event: any) {\r\n        this.draggingWindow = false;\r\n        this.dragEnd.emit(this);\r\n    }\r\n\r\n    @HostListener('mouseup', ['$event'])\r\n    public onDrop(event: MouseEvent) {\r\n        this.draggingWindow = false;\r\n        this.isLayoutItemResizable = false;\r\n        this.dragEnd.emit(this);\r\n    }\r\n\r\n    public onCornerClick(event: MouseEvent) {\r\n        this.draggingWindow = false;\r\n        this.isLayoutItemResizable = true;\r\n        this.px = event.clientX;\r\n        this.py = event.clientY;\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n\r\n    @HostListener('document:mousemove', ['$event'])\r\n    public onCornerMove(event: MouseEvent) {\r\n        if (this.draggingWindow || !this.isLayoutItemResizable || !this.isLayoutItemDraggable) {\r\n            return;\r\n        }\r\n        const offsetX = event.clientX - this.px;\r\n        const offsetY = event.clientY - this.py;\r\n        const lastX = this.xCoordInGrid;\r\n        const lastY = this.yCoordInGrid;\r\n        const pWidth = this.widthInGrid;\r\n        const pHeight = this.heightInGrid;\r\n        this.widthInGrid += offsetX;\r\n        this.heightInGrid += offsetY;\r\n        if (this.area < this.minArea) {\r\n            this.xCoordInGrid = lastX;\r\n            this.yCoordInGrid = lastY;\r\n            this.widthInGrid = pWidth;\r\n            this.heightInGrid = pHeight;\r\n        }\r\n        this.px = event.clientX;\r\n        this.py = event.clientY;\r\n    }\r\n}\r\n","import { Directive, Inject } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Subscription } from 'rxjs';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from './layout';\r\n\r\n/**\r\n * It defines the number of breakpoints that WAC currently support.\r\n * add more scenarios when WAC is going to support scenarios like tablet etc.\r\n */\r\nexport enum SmeResponsiveWindowBreakpointsValue {\r\n    Reflow = 399.98,\r\n    PhoneDown = 767.98,\r\n    PhoneUp = Number.MAX_SAFE_INTEGER\r\n}\r\n\r\n/**\r\n * It defines the current supported scenario for window sizes.\r\n */\r\nexport enum SmeResponsiveWindowBreakpoints {\r\n    Reflow = 'Reflow',\r\n    PhoneDown = 'PhoneDown',\r\n    PhoneUp = 'PhoneUp'\r\n}\r\n\r\n/**\r\n * It defines an object to communicate among controls.\r\n */\r\nexport interface SmeResponsiveWindowData {\r\n    width: number;\r\n    height: number;\r\n    size: SmeResponsiveWindowBreakpoints;\r\n    reflowMode: boolean;\r\n    phoneDown: boolean;\r\n    phoneUp: boolean;\r\n}\r\n\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport class SmeResponsiveWindowManagerComponent {\r\n\r\n    /**\r\n     * It defines whether the current window size is for super small window.\r\n     */\r\n    protected internalReflowMode = false;\r\n\r\n    /**\r\n     * It defines whether the current window size is phone down.\r\n     */\r\n    protected internalPhoneDown = false;\r\n\r\n    /**\r\n     * It defines whether the current window size is phone up.\r\n     */\r\n    protected internalPhoneUp = false;\r\n\r\n    /**\r\n     * It defines whether the current solution/tool is using css v2 to support responsive window.\r\n     */\r\n    protected internalCssV2 = false;\r\n\r\n    /**\r\n     * the internal current window responsive mode.\r\n     */\r\n    private internalResponsiveWindowMode: SmeResponsiveWindowBreakpoints;\r\n\r\n    /**\r\n     * The array for subscription.\r\n     */\r\n    private subscriptions: Subscription[] = [];\r\n\r\n    /**\r\n     * The most recent memory for the last known window information.\r\n     */\r\n    private internalPrevSize: SmeResponsiveWindowData;\r\n\r\n    /**\r\n     * Gets the current window responsive state.\r\n     */\r\n    public get responsiveWindowState(): SmeResponsiveWindowBreakpoints {\r\n        return this.internalResponsiveWindowMode;\r\n    }\r\n\r\n    /**\r\n     * Sets the current window responsive state.\r\n     */\r\n    public set responsiveWindowState(input: SmeResponsiveWindowBreakpoints) {\r\n        const prevResponsiveWindowState = this.internalResponsiveWindowMode;\r\n        this.internalResponsiveWindowMode = input;\r\n        if (prevResponsiveWindowState !== this.internalResponsiveWindowMode) {\r\n            this.layout?.windowBreakpointChanged.emit();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Gets the value indicating whether css v2 should be used.\r\n     */\r\n    public get cssV2(): boolean {\r\n        return this.internalCssV2;\r\n    }\r\n\r\n    /**\r\n     * It sets the value for whether the current tool/solution is using css v2 for window responsiveness.\r\n     */\r\n    public set cssV2(input: boolean) {\r\n        this.internalCssV2 = !!input;\r\n    }\r\n\r\n    /**\r\n     * Gets the phone down mode.\r\n     */\r\n    public get phoneDown() {\r\n        return this.internalPhoneDown;\r\n    }\r\n\r\n    /**\r\n     * Sets the phone down mode.\r\n     */\r\n    public set phoneDown(input: boolean) {\r\n        this.internalPhoneDown = !!input;\r\n    }\r\n\r\n    /**\r\n     * Gets the phone up mode.\r\n     */\r\n    public get phoneUp() {\r\n        return this.internalPhoneUp;\r\n    }\r\n\r\n    /**\r\n     * Set the phone up mode.\r\n     */\r\n    public set phoneUp(input: boolean) {\r\n        this.internalPhoneUp = !!input;\r\n    }\r\n\r\n    /**\r\n     * Gets the reflow mode.\r\n     */\r\n    public get reflowMode() {\r\n        return this.internalReflowMode;\r\n    }\r\n\r\n    /**\r\n     * Sets the reflow mode.\r\n     */\r\n    public set reflowMode(input: boolean) {\r\n        this.internalReflowMode = !!input;\r\n    }\r\n\r\n    /**\r\n     * Gets the width of the window from the window object.\r\n     * Should only be called on layout or window size change.\r\n     */\r\n    public get width(): number {\r\n        return window?.innerWidth;\r\n    }\r\n\r\n    /**\r\n     * Gets the height of the window from the window object.\r\n     * Should only be called on layout or window size change.\r\n     */\r\n    public get height(): number {\r\n        return window?.innerHeight;\r\n    }\r\n\r\n    /**\r\n     * Gets the last known window responsive data.\r\n     */\r\n    public get prevSize(): SmeResponsiveWindowData {\r\n        if (this.internalPrevSize?.width === this.width && this.internalPrevSize?.height === this.height) {\r\n            return this.internalPrevSize;\r\n        } else {\r\n            return this.getSmeResponsiveWindowData();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Gets the window responsive break points.\r\n     */\r\n    public get size(): SmeResponsiveWindowBreakpoints {\r\n        const width = this.width;\r\n        if (width <= SmeResponsiveWindowBreakpointsValue.Reflow) {\r\n            this.reflowMode = true;\r\n            this.phoneDown = false;\r\n            this.phoneUp = false;\r\n            this.responsiveWindowState = SmeResponsiveWindowBreakpoints.Reflow;\r\n        } else if (width <= SmeResponsiveWindowBreakpointsValue.PhoneDown) {\r\n            this.reflowMode = false;\r\n            this.phoneDown = true;\r\n            this.phoneUp = false;\r\n            this.responsiveWindowState = SmeResponsiveWindowBreakpoints.PhoneDown;\r\n        } else {\r\n            this.reflowMode = false;\r\n            this.phoneDown = false;\r\n            this.phoneUp = true;\r\n            this.responsiveWindowState = SmeResponsiveWindowBreakpoints.PhoneUp;\r\n        }\r\n\r\n        return this.responsiveWindowState;\r\n    }\r\n\r\n    /**\r\n     * The manager supports layout component and in the meantime listening to the window size change event.\r\n     * @param layout the layout component.\r\n     */\r\n    constructor(@Inject(SME_LAYOUT_PROVIDER) private layout?: Layout) {\r\n        this.setIsCssV2Enabled();\r\n\r\n        if (this.layout) {\r\n            // on parent layout changes, re-emit the layout change to our event\r\n            this.subscriptions.push(layout.layoutChanged.subscribe((() => this.onLayoutChanged())));\r\n            // on window break point changes, emit the event about critical classes and styling updates signal.\r\n            this.subscriptions.push(layout.windowBreakpointChanged.subscribe(() => this.onWindowBreakpointChanged()));\r\n\r\n            this.deferredOnLayoutChanged();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It sets whether the current solution/tool is using the css v2 for window responsiveness.\r\n     */\r\n    public setIsCssV2Enabled() {\r\n        this.cssV2 = this.isUsingCssV2();\r\n    }\r\n\r\n    /**\r\n     * The implementation for checking whether the styles are being set.\r\n     * @returns true if the current tool/solution is using css v2 for window responsiveness.\r\n     */\r\n    private isUsingCssV2(): boolean {\r\n        const head = document.getElementsByTagName('head')[0];\r\n        const links = head.querySelectorAll('link');\r\n        let cssV2 = true;\r\n\r\n        // sme shell root would be containing style.css and either main.css or main-v2.css\r\n        // thus as long as it is not main.css, should be using css-v2\r\n        for (let i = 0; i < links.length; i++) {\r\n            const link = links[i];\r\n            if (link.href && link.href.includes('main.css')) {\r\n                cssV2 = false;\r\n                break;\r\n            }\r\n        }\r\n\r\n        return cssV2;\r\n    }\r\n\r\n    /**\r\n     * The functionality to update the core variables for window responsive data.\r\n     * @returns The SmeResponsiveWindowData object\r\n     */\r\n    public getSmeResponsiveWindowData(): SmeResponsiveWindowData {\r\n        // on window size or layout change, gets the width and height from the window object.\r\n        const width = this.width;\r\n        const height = this.height;\r\n\r\n        // based on the window size information, calculates the core paramters.\r\n        const size = this.size;\r\n\r\n        // the 3 gets above sets these following 3 parameters.\r\n        const reflowMode = this.reflowMode;\r\n        const phoneDown = this.phoneDown;\r\n        const phoneUp = this.phoneUp;\r\n\r\n        // sets the object and return.\r\n        this.internalPrevSize =  {\r\n            width: width,\r\n            height: height,\r\n            size: size,\r\n            reflowMode: reflowMode,\r\n            phoneDown: phoneDown,\r\n            phoneUp: phoneUp\r\n        };\r\n\r\n        return this.internalPrevSize;\r\n    }\r\n\r\n    /**\r\n     * On layout changed event handler, occurs every time the layout has been changed.\r\n     */\r\n    private onLayoutChanged(): void {\r\n        this.getSmeResponsiveWindowData();\r\n    }\r\n\r\n    /**\r\n     * The deferred layout changed handler.\r\n     */\r\n    @Debounce()\r\n    public deferredOnLayoutChanged(): void {\r\n        this.onLayoutChanged();\r\n    }\r\n\r\n    /**\r\n     * To respond to a layout breakpoint changed event.\r\n     * @returns void\r\n     */\r\n    public onWindowBreakpointChanged(): void {\r\n        return;\r\n    }\r\n\r\n    /**\r\n     * Gets the parent element by html tag. By default, go up 10 levels for enhanced performance.\r\n     * @param inputElement The input element.\r\n     * @returns The targeted html element get by the html tag\r\n     */\r\n    public getParentElementByTag(inputElement: HTMLElement,\r\n        parentHtmlTags = ['sme-pivot', 'sme-split-view', 'sme-settings-page'],\r\n        levelExternal = 10,\r\n        customKeywords?: string,\r\n        untilTagName?: string): HTMLElement {\r\n\r\n            if (!inputElement) {\r\n                return undefined;\r\n            }\r\n\r\n            let level = levelExternal;\r\n            let found = false;\r\n            let parent = inputElement;\r\n            while (level > 0 && !found) {\r\n                if (parent) {\r\n                    parent = parent.parentElement;\r\n                }\r\n\r\n                const parentTagName = parent?.tagName.toLocaleLowerCase();\r\n                if (untilTagName) {\r\n                    if (parentTagName === untilTagName.toLowerCase()) {\r\n                        return undefined;\r\n                    }\r\n                }\r\n\r\n                if (parentHtmlTags.includes(parentTagName) || (customKeywords !== undefined && parentTagName?.includes(customKeywords))) {\r\n                    found = true;\r\n                    return parent;\r\n                }\r\n                level -= 1;\r\n            }\r\n\r\n            return undefined;\r\n    }\r\n\r\n    /**\r\n     * The core algorithm for adding and removing classes based on window size and window size settings.\r\n     * @param settings the settings object\r\n     * @param curSettings the current setting\r\n     * @param element the html element for setting up classes.\r\n     * @returns void.\r\n     */\r\n    public updateClassArrayOnWindowSize(settings: any, curSettings: string, element: HTMLElement): void {\r\n        if (!settings) {\r\n            return;\r\n        }\r\n\r\n        settings = JSON.parse(JSON.stringify(settings));\r\n        const phoneDown = JSON.parse(JSON.stringify(settings.phoneDown));\r\n        const phoneUp = JSON.parse(JSON.stringify(settings.phoneUp));\r\n        const reflow = JSON.parse(JSON.stringify(settings.reflow));\r\n\r\n        let toBeRemovedClassList = [];\r\n        let toBeAddedClassList = [];\r\n\r\n        switch (curSettings) {\r\n            case 'phoneUp':\r\n                toBeAddedClassList = phoneUp;\r\n                toBeRemovedClassList = phoneDown;\r\n                toBeRemovedClassList = this.uniqueArray(toBeRemovedClassList, reflow);\r\n                break;\r\n            case 'phoneDown':\r\n                toBeAddedClassList = phoneDown;\r\n                toBeRemovedClassList = phoneUp;\r\n                toBeRemovedClassList = this.uniqueArray(toBeRemovedClassList, reflow);\r\n                break;\r\n            case 'reflow':\r\n                toBeAddedClassList = reflow;\r\n                toBeRemovedClassList = phoneDown;\r\n                toBeRemovedClassList = this.uniqueArray(toBeRemovedClassList, phoneUp);\r\n                break;\r\n        }\r\n\r\n        toBeRemovedClassList = this.removeExistedItem(toBeRemovedClassList, toBeAddedClassList);\r\n\r\n        for (let i = 0; i < toBeRemovedClassList.length; i++) {\r\n            if (element.classList.contains(toBeRemovedClassList[i])) {\r\n                element.classList.remove(toBeRemovedClassList[i]);\r\n            }\r\n        }\r\n\r\n        for (let i = 0; i < toBeAddedClassList.length; i++) {\r\n            if (!element.classList.contains(toBeAddedClassList[i])) {\r\n                element.classList.add(toBeAddedClassList[i]);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Merge two arrays with unique items.\r\n     * @param arrayA the input array A\r\n     * @param arrayB the input array B\r\n     * @returns an array that contains unique items from array A and array B\r\n     */\r\n    private uniqueArray(arrayA: string[], arrayB: string[]): string[] {\r\n        if (arrayB && arrayB.length) {\r\n            for (let i = 0; i < arrayB.length; i++) {\r\n                if (!arrayA.includes(arrayB[i])) {\r\n                    arrayA.push(arrayB[i]);\r\n                }\r\n            }\r\n        }\r\n\r\n        return arrayA;\r\n    }\r\n\r\n    /**\r\n     * Guarantees will not remove the classes that needs to be added.\r\n     * @param toBeRemovedClassList the list of classes that needs to be removed.\r\n     * @param toBeAddedClassList the list of classes that needs to be added.\r\n     * @returns the list of classes that needs to be removed and doesn't overlap with the classes that needs to be added.\r\n     */\r\n    private removeExistedItem(toBeRemovedClassList: string[], toBeAddedClassList: string[]): string[] {\r\n        if (!toBeAddedClassList || !toBeAddedClassList.length) {\r\n            return toBeRemovedClassList;\r\n        }\r\n\r\n        if (!toBeRemovedClassList || !toBeRemovedClassList.length) {\r\n            return [];\r\n        }\r\n\r\n        const res = [];\r\n\r\n        for (let i = 0; i < toBeRemovedClassList.length; i++) {\r\n            if (!toBeAddedClassList.includes(toBeRemovedClassList[i])) {\r\n                res.push(toBeRemovedClassList[i]);\r\n            }\r\n        }\r\n\r\n        return res;\r\n    }\r\n}\r\n","import { SmeResponsiveWindowBreakpoints } from '../common/sme-responsive-window-manager.component';\r\n\r\nexport interface LayoutItemConfig {\r\n    width: LayoutItemConfigPropertyWidth;\r\n}\r\n\r\nexport interface LayoutItemConfigPropertyWidth {\r\n    type: LayoutItemConfigPropertyWidthType;\r\n    value: number;\r\n}\r\n\r\nexport enum LayoutItemConfigPropertyWidthType {\r\n    Percentage = 'Percentage',\r\n    Number = 'Number'\r\n}\r\n\r\nexport interface LayoutConfig {\r\n    [SmeResponsiveWindowBreakpoints.PhoneUp]?: LayoutConfigItem;\r\n    [SmeResponsiveWindowBreakpoints.PhoneDown]?: LayoutConfigItem;\r\n    [SmeResponsiveWindowBreakpoints.Reflow]?: LayoutConfigItem;\r\n}\r\n\r\nexport interface LayoutConfigItem {\r\n    mode?: LayoutItemConfigMode;\r\n    config?: LayoutItemConfig[];\r\n}\r\n\r\nexport enum LayoutItemConfigMode {\r\n    Default = 'Default',\r\n    Custom = 'Custom'\r\n}\r\n\r\nexport enum LayoutDrivenType {\r\n    Default = 'Default',\r\n    ResponsiveWindowManager = 'ResponsiveWindowManager'\r\n}\r\n\r\n/**\r\n * The layout config generator.\r\n *\r\n * It determines the configurable width for the layout item.\r\n * Usage:\r\n *\r\n * const layoutConfigGenerator = new LayoutConfigGenerator();\r\n * layoutConfigGenerator.initialize([20, '100'])\r\n *\r\n * type number is used for pixel.\r\n * type string is used for percentage.\r\n */\r\nexport class LayoutConfigGenerator {\r\n    /**\r\n     * It initialized the layout configs for the layout component.\r\n     *\r\n     * @param phoneUp the layout config array for phone-up\r\n     * @param phoneDown the layout config array for phone-down\r\n     * @param reflow the layout config array for reflow\r\n     * @returns\r\n     */\r\n    public initialize(phoneUp: any[], phoneDown?: any[], reflow?: any[]): LayoutConfig {\r\n        const layoutConfig: LayoutConfig = {};\r\n        this.parseConfig(layoutConfig, phoneUp, SmeResponsiveWindowBreakpoints.PhoneUp);\r\n        this.parseConfig(layoutConfig, phoneDown, SmeResponsiveWindowBreakpoints.PhoneDown);\r\n        this.parseConfig(layoutConfig, reflow, SmeResponsiveWindowBreakpoints.Reflow);\r\n        return layoutConfig;\r\n    }\r\n\r\n    private parseConfig(layoutConfig: LayoutConfig, config: any, smeResponsiveWindowBreakpoints: SmeResponsiveWindowBreakpoints): void {\r\n        if (!config) {\r\n            layoutConfig[smeResponsiveWindowBreakpoints] = {\r\n                mode: LayoutItemConfigMode.Default\r\n            };\r\n        } else {\r\n            layoutConfig[smeResponsiveWindowBreakpoints] = {\r\n                mode: LayoutItemConfigMode.Custom,\r\n                config: []\r\n            };\r\n\r\n            for (let i = 0; i <= config.length; i++) {\r\n                layoutConfig[smeResponsiveWindowBreakpoints].config.push({\r\n                    width: {\r\n                        type: typeof config[i] === 'string' ?\r\n                            LayoutItemConfigPropertyWidthType.Percentage : LayoutItemConfigPropertyWidthType.Number,\r\n                        value: typeof config[i] === 'string' ? parseFloat(config[i]) : config[i]\r\n                    }\r\n                });\r\n            }\r\n        }\r\n    }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'sme-layout-definition',\r\n    template: ''\r\n})\r\nexport class LayoutDefinitionComponent {\r\n    @Input()\r\n    public until: number = Number.MAX_VALUE;\r\n    // TODO: need to define some named breakpoint value / \"until\" values later.\r\n\r\n    @Input()\r\n    public columns: number;\r\n\r\n    @Input()\r\n    public name: string;\r\n\r\n    /**\r\n     * Setting addBottomPadding to True will add bottom padding to all layout-items,\r\n     * otherwise does NOT add bottom padding to any layout-items.\r\n     */\r\n    @Input()\r\n    public addBottomPadding = true;\r\n}\r\n","<div *ngIf=\"caption\" class=\"sme-font-family-bold sme-border-bottom-sm sme-border-bottom-color-base-40 sme-padding-bottom-xs sme-margin-vertical-sm\">{{caption}}</div>\r\n<ng-content></ng-content>","import { Component, HostBinding, Injector, Input, OnInit } from '@angular/core';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { LayoutItemConfig } from './layout-config';\r\n\r\n/**\r\n * Layout component\r\n */\r\n@Component({\r\n    selector: 'sme-layout-item',\r\n    templateUrl: './layout-item.component.html'\r\n})\r\nexport class LayoutItemComponent extends CoreBaseComponent implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'LayoutItemComponent';\r\n    }\r\n\r\n    protected internalMaxWidth: number;\r\n\r\n    @HostBinding('style.width')\r\n    public width: string;\r\n\r\n    @HostBinding('style.paddingRight')\r\n    public paddingRight: string;\r\n\r\n    @HostBinding('style.paddingBottom')\r\n    public paddingBottom: string;\r\n\r\n    @HostBinding('style.flex')\r\n    public flex: string;\r\n\r\n    @HostBinding('style.min-width')\r\n    public minWidth: string;\r\n\r\n    /**\r\n     * The number of columns that this item should span at maximum\r\n     */\r\n    @Input()\r\n    public columnSpan = 1;\r\n\r\n    @Input()\r\n    public caption: string;\r\n\r\n    public get maxWidth() {\r\n        return this.internalMaxWidth;\r\n    }\r\n\r\n    @Input()\r\n    public customConfig: LayoutItemConfig;\r\n\r\n    @Input()\r\n    public set maxWidth(value: number) {\r\n        this.internalMaxWidth = value;\r\n        if (MsftSme.isNullOrUndefined(value)) {\r\n            this.renderer.setAttribute(this.hostElement.nativeElement, 'style', 'max-width:auto');\r\n        } else {\r\n            this.renderer.setAttribute(this.hostElement.nativeElement, 'style', 'max-width:{0}px'.format(value));\r\n        }\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    public ngOnInit() {\r\n        this.hostElement.nativeElement.style.visibility = 'hidden';\r\n    }\r\n\r\n    public ready() {\r\n        this.hostElement.nativeElement.style.visibility = 'visible';\r\n    }\r\n}\r\n","import { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { SmeResponsiveWindowManagerComponent } from '../common/sme-responsive-window-manager.component';\r\n\r\nexport class LayoutResponsiveWindowManager extends SmeResponsiveWindowManagerComponent {\r\n    public readonly name = 'sme-layout';\r\n\r\n    @Yield()\r\n    public onWindowSizeChanged(): void {\r\n        if (!this.cssV2) {\r\n            return;\r\n        }\r\n\r\n        // Can handle dynamic configuration, custom styling on different size of the window later on.\r\n    }\r\n}\r\n","import { AfterViewInit, Component, ContentChildren, EventEmitter, Inject, Injector, Input, Output, QueryList } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../common/layout';\r\nimport { SmeResponsiveWindowBreakpoints } from '../common/sme-responsive-window-manager.component';\r\nimport { LayoutConfig, LayoutConfigItem, LayoutDrivenType, LayoutItemConfig, LayoutItemConfigMode, LayoutItemConfigPropertyWidthType } from './layout-config';\r\nimport { LayoutDefinitionComponent } from './layout-definition.component';\r\nimport { LayoutItemComponent } from './layout-item.component';\r\nimport { LayoutResponsiveWindowManager } from './layout-responsive-window-manager';\r\n\r\n/**\r\n * Layout component\r\n */\r\n@Component({\r\n    selector: 'sme-layout',\r\n    templateUrl: './layout.component.html'\r\n})\r\nexport class LayoutComponent extends CoreBaseComponent implements AfterViewInit {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'LayoutComponent';\r\n    }\r\n\r\n    /**\r\n     * The layout items content children.\r\n     */\r\n    @ContentChildren(LayoutItemComponent)\r\n    private layoutItems: QueryList<LayoutItemComponent>;\r\n\r\n    /**\r\n     * The layout definition content children.\r\n     */\r\n    @ContentChildren(LayoutDefinitionComponent)\r\n    private definitions: QueryList<LayoutDefinitionComponent>;\r\n\r\n    /**\r\n     * The current layout definition value based on custom layout definition and the browser window size.\r\n     */\r\n    public currentLayoutDefinition: LayoutDefinitionComponent;\r\n\r\n    /**\r\n     * The default horizontal space in between layout items.\r\n     */\r\n    @Input()\r\n    public itemHorizontalSpace = 32;\r\n\r\n    /**\r\n     * The default vertical space in between layout items.\r\n     */\r\n    @Input()\r\n    public itemVerticalSpace = 32;\r\n\r\n    /**\r\n     * If true, will always use full width of the row for rendering.\r\n     */\r\n    @Input()\r\n    public oneColumn = false;\r\n\r\n    /**\r\n     * If true, will always try to fill the whole row for each layout item.\r\n     */\r\n    @Input()\r\n    public tryToFillWholeRow = true;\r\n\r\n    /**\r\n     * The layout definition.\r\n     */\r\n    @Input()\r\n    public definition: { [columnCount: number]: { lowerWidth?: number, upperWidth?: number } } = {};\r\n\r\n    /**\r\n     * If false, it will not assign extra paddings to the right for the last layout item.\r\n     */\r\n    @Input()\r\n    public padLastItem = false;\r\n\r\n    /**\r\n     * If true, not extra right padding when there is only one item that uses the whole width of the row.\r\n     */\r\n    @Input()\r\n    public noExtraRightPaddingOneItemPerRow = true;\r\n\r\n    /**\r\n     * It determines whether the layout is for settings where it contains a left and right layout item.\r\n     * If true, will apply special design for settings layout.\r\n     * On phone-up, the left side navigation layout item will be using a fixed width by default 300px,\r\n     * the right side layout item will be using the remaining width by default.\r\n     *\r\n     * On phone-down or 400% zoom, nothing is different from the regular settings page,\r\n     * the left right layout will be transformed to top bottom layout.\r\n     */\r\n    @Input()\r\n    public layoutConfig: LayoutConfig = {\r\n        [SmeResponsiveWindowBreakpoints.PhoneUp]: { 'mode': LayoutItemConfigMode.Default },\r\n        [SmeResponsiveWindowBreakpoints.PhoneDown]: { 'mode': LayoutItemConfigMode.Default },\r\n        [SmeResponsiveWindowBreakpoints.Reflow]: { 'mode': LayoutItemConfigMode.Default }\r\n    };\r\n\r\n    /**\r\n     * Implementation of the Layout interface\r\n     */\r\n    @Output()\r\n    public layoutChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * Implementation of the Layout interface\r\n     */\r\n    @Output()\r\n    public windowBreakpointChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    private columnCount = 1;\r\n    private columnSpanTotal = 0;\r\n    private layoutResponsiveWindowManager: LayoutResponsiveWindowManager;\r\n    private layoutDrivenType = LayoutDrivenType.Default;\r\n    private currentLayoutItemConfig: LayoutItemConfig[];\r\n    private readonly stylePixel = 'px';\r\n\r\n    public get currentLayoutDefinitionName(): string {\r\n        return this.currentLayoutDefinition ? this.currentLayoutDefinition.name : '';\r\n    }\r\n\r\n    public get currentLayoutDrivenType(): LayoutDrivenType {\r\n        return this.layoutDrivenType;\r\n    }\r\n\r\n    public get currentWindowBreakpoint(): SmeResponsiveWindowBreakpoints {\r\n        return this.layoutResponsiveWindowManager?.prevSize.size;\r\n    }\r\n\r\n    public get currentLayoutItems(): QueryList<LayoutItemComponent> {\r\n        return this.layoutItems;\r\n    }\r\n\r\n    constructor(injector: Injector, @Inject(SME_LAYOUT_PROVIDER) layout: Layout) {\r\n        super(injector);\r\n\r\n        if (layout) {\r\n            this.layoutResponsiveWindowManager = new LayoutResponsiveWindowManager(layout);\r\n            // on parent layout changes, re-emit the layout change to our event\r\n            this.subscriptions.push(layout.layoutChanged.subscribe((() => this.onLayoutChanged())));\r\n            // on window break point changes, emit the event about critical classes and styling updates signal.\r\n            this.subscriptions.push(layout.windowBreakpointChanged.subscribe(() => this.onWindowBreakpointChanged()));\r\n\r\n            this.deferredOnLayoutChanged();\r\n        }\r\n\r\n    }\r\n\r\n    public ngAfterViewInit(): void {\r\n        this.subscriptions.push(this.layoutItems.changes.subscribe(() => this.onLayoutChanged()));\r\n    }\r\n\r\n    /**\r\n     * The open API for refreshing the control externally.\r\n     */\r\n    @Debounce()\r\n    public refresh(): void {\r\n        this.resetFlex();\r\n        this.onLayoutChanged();\r\n    }\r\n\r\n    /**\r\n     * On layout changed event handler, occurs every time the layout has been changed.\r\n     */\r\n    public onLayoutChanged() {\r\n        this.updateLayout();\r\n    }\r\n\r\n    /**\r\n     * The deferred layout changed handler.\r\n     */\r\n    @Debounce()\r\n    private deferredOnLayoutChanged() {\r\n        this.onLayoutChanged();\r\n    }\r\n\r\n    /**\r\n     * The on window breakpoint changed handler.\r\n     * Adding yield for component to get ElementRef after initialization.\r\n     */\r\n    @Yield()\r\n    public onWindowBreakpointChanged() {\r\n        if (!this.layoutItems || !this.layoutItems.toArray()) {\r\n            return;\r\n        }\r\n\r\n        this.layoutResponsiveWindowManager.onWindowSizeChanged();\r\n    }\r\n\r\n    // Adds classes listed to the root component\r\n    // On phone down the flex start needs to be flex start to make sure no extra space being generated.\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-arrange-wrapstack-h', 'sme-layout-phone-down'\r\n        ]);\r\n    }\r\n\r\n    protected updateLayout(): void {\r\n        setTimeout(() => {\r\n            if (!this.layoutItems) {\r\n                return;\r\n            }\r\n\r\n            const layoutItems = this.layoutItems.toArray();\r\n            this.getTotalColumnSpan(layoutItems);\r\n\r\n            const currentWindowSize = this.layoutResponsiveWindowManager.prevSize.size;\r\n            this.updateLayoutConfig(currentWindowSize);\r\n\r\n            const layoutWidth = this.hostElement.nativeElement.clientWidth || Number.MAX_VALUE;\r\n            if (this.layoutDrivenType === LayoutDrivenType.Default) {\r\n                const definitions = this.definitions.toArray().sort((a, b) => a.until - b.until);\r\n                const previousLayoutDefinition = this.currentLayoutDefinition;\r\n                this.updateCurrentLayoutDefinition(definitions, layoutWidth);\r\n\r\n                const itemHorizontalSpacePercentage = Math.round(this.itemHorizontalSpace * 100 / layoutWidth);\r\n                const columnCountModifier = this.padLastItem ? 0 : 1;\r\n                const availableLayoutWidthPercentage = 100 - itemHorizontalSpacePercentage * (this.columnCount - columnCountModifier);\r\n                this.layoutDefinitionWithColumnSpanCalculation(layoutItems, availableLayoutWidthPercentage, itemHorizontalSpacePercentage);\r\n\r\n                if (previousLayoutDefinition !== this.currentLayoutDefinition) {\r\n                    setTimeout(() => {\r\n                        this.layoutChanged.emit();\r\n                    });\r\n                }\r\n            } else if (this.layoutDrivenType === LayoutDrivenType.ResponsiveWindowManager) {\r\n                let availableLayoutWidthInPixel = layoutWidth - this.itemHorizontalSpace;\r\n                availableLayoutWidthInPixel = availableLayoutWidthInPixel > 0 ? availableLayoutWidthInPixel : 0;\r\n\r\n                if (availableLayoutWidthInPixel <= 0) {\r\n                    return;\r\n                }\r\n\r\n                this.configDrivenCalculation(layoutItems, availableLayoutWidthInPixel);\r\n            }\r\n        });\r\n    }\r\n\r\n    private updateLayoutConfig(currentWindowSize: SmeResponsiveWindowBreakpoints): void {\r\n        if (!currentWindowSize) {\r\n            this.layoutDrivenType = LayoutDrivenType.Default;\r\n            return;\r\n        }\r\n\r\n        const phoneUp = this.layoutConfig.PhoneUp;\r\n        const phoneDown = this.layoutConfig.PhoneDown;\r\n        const reflow = this.layoutConfig.Reflow;\r\n\r\n        if (!phoneUp || !phoneDown || !reflow) {\r\n            Logging.log({\r\n                level: LogLevel.Debug,\r\n                message: 'Invalid layout config has been passed in',\r\n                source: 'DataTableComponent.onContentTablePressed'\r\n            });\r\n\r\n            const defaultMode = { 'mode': LayoutItemConfigMode.Default };\r\n\r\n            if (!phoneUp) {\r\n                this.layoutConfig.PhoneUp = defaultMode;\r\n            }\r\n\r\n            if (!phoneDown) {\r\n                this.layoutConfig.PhoneDown = defaultMode;\r\n            }\r\n\r\n            if (!reflow) {\r\n                this.layoutConfig.Reflow = defaultMode;\r\n            }\r\n        }\r\n\r\n        const currentConfig: LayoutConfigItem = this.layoutConfig[currentWindowSize];\r\n\r\n        if (currentConfig.mode === LayoutItemConfigMode.Default) {\r\n            this.setLayoutDrivenType(LayoutDrivenType.Default);\r\n        } else if (currentConfig.mode === LayoutItemConfigMode.Custom && currentConfig.config && currentConfig.config.length) {\r\n            this.setLayoutDrivenType(LayoutDrivenType.ResponsiveWindowManager);\r\n            this.currentLayoutItemConfig = currentConfig.config;\r\n        }\r\n    }\r\n\r\n    private resetFlex() {\r\n        const layoutItems = this.layoutItems.toArray();\r\n        for (let i = 0; i < layoutItems.length; i++) {\r\n            const layoutItem = layoutItems[i];\r\n            if (layoutItem.flex) {\r\n                layoutItem.flex = undefined;\r\n            }\r\n        }\r\n    }\r\n\r\n    private setLayoutDrivenType(layoutDrivenType: LayoutDrivenType): void {\r\n        if (this.layoutDrivenType === LayoutDrivenType.ResponsiveWindowManager && layoutDrivenType === LayoutDrivenType.Default) {\r\n            this.resetFlex();\r\n        }\r\n\r\n        this.layoutDrivenType = layoutDrivenType;\r\n        // The vertical space gap is determined by the itemVerticalSpace parameter.\r\n        // For the defaultMode, it is controlled by the padding bottom of the grid item.\r\n        // For the responsive manager driven mode, it is controlled by the grid-gap.\r\n        this.hostElement.nativeElement.style.gridGap = layoutDrivenType === LayoutDrivenType.ResponsiveWindowManager ? `${this.itemVerticalSpace}px 0px` : 'unset';\r\n    }\r\n\r\n    private getTotalColumnSpan(layoutItems: LayoutItemComponent[]): void {\r\n        this.columnSpanTotal = 0;\r\n        layoutItems.forEach(item => this.columnSpanTotal += item.columnSpan);\r\n    }\r\n\r\n    private updateCurrentLayoutDefinition(\r\n        definitions: LayoutDefinitionComponent[],\r\n        layoutWidth: number\r\n    ): void {\r\n        this.currentLayoutDefinition = undefined;\r\n        for (let i = definitions.length - 1; i >= 0; i--) {\r\n            const definitionColumns = definitions[i].columns;\r\n            if (layoutWidth <= definitions[i].until || (this.tryToFillWholeRow && this.columnSpanTotal <= definitionColumns) || this.oneColumn) {\r\n                this.columnCount = definitionColumns;\r\n                this.currentLayoutDefinition = definitions[i];\r\n            }\r\n        }\r\n    }\r\n\r\n    private layoutDefinitionWithColumnSpanCalculation(\r\n        layoutItems: LayoutItemComponent[],\r\n        availableLayoutWidthPercentage: number,\r\n        itemHorizontalSpacePercentage: number\r\n    ): void {\r\n        let percentageSoFar = 0;\r\n        let columnIndex = 0;\r\n        for (let i = 0; i < layoutItems.length; i++) {\r\n            let percentage = 0;\r\n            columnIndex += layoutItems[i].columnSpan;\r\n            if (columnIndex === this.columnCount) {\r\n                // If true, it means this layout item is the last one in the row.\r\n                // It ensures the last one in the row use rest of the percentage.\r\n                // Example: If it's a 3 column layout, the last one's percentage is 33.34%, not 33.33%\r\n                percentage = 100 - percentageSoFar;\r\n                percentageSoFar = 0;\r\n                // 1 column and 1 layout item.\r\n                if (columnIndex === 1 && this.columnCount === 1 && !this.noExtraRightPaddingOneItemPerRow) {\r\n                    layoutItems[i].paddingRight = '0px';\r\n                } else {\r\n                    layoutItems[i].paddingRight = this.padLastItem ? this.itemHorizontalSpace + this.stylePixel : '0' + this.stylePixel;\r\n                }\r\n                columnIndex = 0;\r\n            } else {\r\n                const columnPercentage = Math.round(availableLayoutWidthPercentage * 100 / this.columnCount) / 100;\r\n                percentage = layoutItems[i].columnSpan * (columnPercentage + itemHorizontalSpacePercentage);\r\n                percentageSoFar += percentage;\r\n\r\n                if (percentageSoFar > 100) {\r\n                    // put item on next row if it is too big\r\n                    if (percentage > 100) {\r\n                        percentage = 100;\r\n                    }\r\n                    percentageSoFar = 0;\r\n                    columnIndex = 0;\r\n                    layoutItems[i].paddingRight = this.padLastItem ? this.itemHorizontalSpace + this.stylePixel : '0' + this.stylePixel;\r\n                } else {\r\n                    layoutItems[i].paddingRight = this.itemHorizontalSpace + this.stylePixel;\r\n                }\r\n            }\r\n\r\n            if (this?.currentLayoutDefinition?.addBottomPadding) {\r\n                layoutItems[i].paddingBottom = this.itemVerticalSpace + this.stylePixel;\r\n            } else {\r\n                // If bottom padding already exists and currentLayoutDefinition.addBottomPadding is False\r\n                // Remove the bottom padding.\r\n                if (layoutItems[i].paddingBottom === this.itemVerticalSpace + this.stylePixel) {\r\n                    layoutItems[i].paddingBottom = '0' + this.stylePixel;\r\n                }\r\n            }\r\n\r\n            layoutItems[i].width = percentage + '%';\r\n            layoutItems[i].ready();\r\n        }\r\n    }\r\n\r\n    private configDrivenCalculation(\r\n        layoutItems: LayoutItemComponent[],\r\n        availableLayoutWidthInPixel: number\r\n    ): void {\r\n        const isHybridMode = this.updateCustomConfig(layoutItems);\r\n\r\n        if (isHybridMode) {\r\n            this.configDrivenCalculationHybrid(layoutItems, availableLayoutWidthInPixel);\r\n        } else {\r\n            this.configDrivenCalculationDefault(layoutItems, availableLayoutWidthInPixel);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It deal with configurations that only has either percentage or number.\r\n     * Aiming at performance optimization.\r\n     *\r\n     * @param layoutItems The layout item object array\r\n     * @param availableLayoutWidthInPixel available width in pixel horizontally.\r\n     */\r\n    private configDrivenCalculationDefault(\r\n        layoutItems: LayoutItemComponent[],\r\n        availableLayoutWidthInPixel: number\r\n    ) {\r\n        const defaultWidthForLayoutItemInPixel = 200;\r\n\r\n        let widthUsedInPixel = 0;\r\n        let percentageSoFar = 0;\r\n        for (let i = 0; i < layoutItems.length; i++) {\r\n            if (layoutItems[i].customConfig?.width) {\r\n                const widthObject = layoutItems[i].customConfig.width;\r\n                const remainingWidthInPixel = availableLayoutWidthInPixel - widthUsedInPixel;\r\n\r\n                if (widthObject.type === LayoutItemConfigPropertyWidthType.Percentage) {\r\n                    if (widthObject.value > 100 || widthObject.value < 0) {\r\n                        widthObject.value = 100;\r\n                    }\r\n\r\n                    const percentage = widthObject.value;\r\n                    percentageSoFar += percentage;\r\n\r\n                    const paddingRight = this.itemHorizontalSpace;\r\n                    layoutItems[i].paddingRight = paddingRight.toString().concat(this.stylePixel);\r\n                    layoutItems[i].width = percentage + '%';\r\n\r\n                    if (percentageSoFar > 100) {\r\n                        percentageSoFar = 0;\r\n                    }\r\n                } else if (widthObject.type === LayoutItemConfigPropertyWidthType.Number) {\r\n                    if (widthObject.value < 0) {\r\n                        widthObject.value =\r\n                            defaultWidthForLayoutItemInPixel <= remainingWidthInPixel ?\r\n                                defaultWidthForLayoutItemInPixel : remainingWidthInPixel;\r\n                    }\r\n\r\n                    widthUsedInPixel += widthObject.value;\r\n\r\n                    // how to determine if it is the last item in a row?\r\n                    const paddingRight = this.itemHorizontalSpace;\r\n                    widthUsedInPixel += paddingRight;\r\n\r\n                    layoutItems[i].paddingRight = paddingRight.toString().concat(this.stylePixel);\r\n                    layoutItems[i].width = widthObject.value + this.stylePixel;\r\n                } else {\r\n                    Logging.log({\r\n                        level: LogLevel.Debug,\r\n                        message: 'Invalid width',\r\n                        source: 'LayoutComponent.configDrivenCalculationDefault'\r\n                    });\r\n                }\r\n            } else {\r\n                Logging.log({\r\n                    level: LogLevel.Debug,\r\n                    message: 'Invalid width',\r\n                    source: 'LayoutComponent.configDrivenCalculationDefault'\r\n                });\r\n            }\r\n\r\n            layoutItems[i].ready();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It deal with configurations that only has both percentage and number.\r\n     * Aiming at performance optimization.\r\n     *\r\n     * @param layoutItems The layout item object array\r\n     * @param availableLayoutWidthInPixel available width in pixel horizontally.\r\n     */\r\n    private configDrivenCalculationHybrid(\r\n        layoutItems: LayoutItemComponent[],\r\n        availableLayoutWidthInPixel: number\r\n    ) {\r\n        const defaultWidthForLayoutItemInPixel = 200;\r\n\r\n        let widthUsedInPixel = 0;\r\n        for (let i = 0; i < layoutItems.length; i++) {\r\n            if (layoutItems[i].customConfig.width) {\r\n                const widthObject = layoutItems[i].customConfig.width;\r\n                const remainingWidthInPixel = availableLayoutWidthInPixel - widthUsedInPixel;\r\n\r\n                if (widthObject.type === LayoutItemConfigPropertyWidthType.Percentage) {\r\n                    if (widthObject.value > 100 || widthObject.value < 0) {\r\n                        widthObject.value = 100;\r\n                    }\r\n\r\n                    // how to determine if it is the last item in a row?\r\n                    const paddingRight = this.itemHorizontalSpace;\r\n                    widthUsedInPixel += paddingRight;\r\n                    layoutItems[i].paddingRight = paddingRight.toString().concat(this.stylePixel);\r\n\r\n                    let potentialWidthInPixel = (widthObject.value / 100) * remainingWidthInPixel;\r\n                    if (potentialWidthInPixel === 0) {\r\n                        widthUsedInPixel = 0;\r\n                        widthUsedInPixel += paddingRight;\r\n                        potentialWidthInPixel = (widthObject.value / 100) * (availableLayoutWidthInPixel - widthUsedInPixel);\r\n                    } else {\r\n                        if (potentialWidthInPixel >= remainingWidthInPixel) {\r\n                            potentialWidthInPixel = remainingWidthInPixel;\r\n                            // resets the used pixel for a new row.\r\n                            widthUsedInPixel = 0;\r\n                        } else {\r\n                            widthUsedInPixel += potentialWidthInPixel;\r\n                        }\r\n\r\n                        layoutItems[i].flex = '1 0 0';\r\n                        layoutItems[i].minWidth = defaultWidthForLayoutItemInPixel.toString().concat(this.stylePixel);\r\n                    }\r\n\r\n                    layoutItems[i].width = potentialWidthInPixel + this.stylePixel;\r\n                } else if (widthObject.type === LayoutItemConfigPropertyWidthType.Number) {\r\n                    if (widthObject.value < 0) {\r\n                        widthObject.value =\r\n                            defaultWidthForLayoutItemInPixel <= remainingWidthInPixel ?\r\n                                defaultWidthForLayoutItemInPixel : remainingWidthInPixel;\r\n                    }\r\n\r\n                    widthUsedInPixel += widthObject.value;\r\n\r\n                    // how to determine if it is the last item in a row?\r\n                    const paddingRight = this.itemHorizontalSpace;\r\n                    widthUsedInPixel += paddingRight;\r\n\r\n                    layoutItems[i].paddingRight = paddingRight.toString().concat(this.stylePixel);\r\n                    layoutItems[i].width = widthObject.value + this.stylePixel;\r\n                } else {\r\n                    Logging.log({\r\n                        level: LogLevel.Debug,\r\n                        message: 'Invalid width',\r\n                        source: 'LayoutComponent.configDrivenCalculationHybrid'\r\n                    });\r\n                }\r\n            } else {\r\n                Logging.log({\r\n                    level: LogLevel.Debug,\r\n                    message: 'Invalid width',\r\n                    source: 'LayoutComponent.configDrivenCalculationHybrid'\r\n                });\r\n            }\r\n\r\n            layoutItems[i].ready();\r\n        }\r\n    }\r\n\r\n    private updateCustomConfig(layoutItems: LayoutItemComponent[]): boolean {\r\n        const widthType = [];\r\n        for (let i = 0; i < layoutItems.length; i++) {\r\n            if (!this.currentLayoutItemConfig[i]) {\r\n                continue;\r\n            }\r\n\r\n            layoutItems[i].customConfig = this.currentLayoutItemConfig[i];\r\n            if (!widthType.includes(layoutItems[i].customConfig.width.type)) {\r\n                widthType.push(layoutItems[i].customConfig.width.type);\r\n            }\r\n        }\r\n\r\n        if (widthType.length <= 1) {\r\n            return false;\r\n        }\r\n\r\n        return true;\r\n    }\r\n}\r\n","<ng-content select=\"sme-layout-item\"></ng-content>\r\n","import { AfterViewInit, Component, ContentChildren, OnChanges, QueryList, Input } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { EditableLayoutItemComponent } from './editable-layout-item.component';\r\nimport { LayoutComponent } from './layout.component';\r\n\r\n@Component({\r\n    selector: 'sme-editable-layout',\r\n    templateUrl: './editable-layout.component.html'\r\n})\r\nexport class EditableLayoutComponent extends LayoutComponent implements AfterViewInit, OnChanges {\r\n    private static gridSquareSize = 72;\r\n    private static gridPaddingSize = 8;\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'EditableLayoutComponent';\r\n    }\r\n\r\n    @ContentChildren(EditableLayoutItemComponent)\r\n    protected editableLayoutItems: QueryList<EditableLayoutItemComponent>;\r\n\r\n    @Input()\r\n    public isEditMode: boolean;\r\n\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-layout-relative',\r\n            'sme-position-stretch',\r\n            'sme-arrange-overflow-auto'\r\n        ]);\r\n    }\r\n\r\n    public ngOnChanges() {\r\n        this.changeDraggable(this.isEditMode);\r\n    }\r\n    /**\r\n     * Method to change (start/stop) the draggable behavior of this layout.\r\n     * @param isDraggable flag to start/stop draggable behavior of all the layout inside this layout.\r\n     */\r\n    public changeDraggable(isDraggable: boolean) {\r\n        if (this.editableLayoutItems) {\r\n            const editableLayoutItems = this.editableLayoutItems.toArray();\r\n            for (let i = 0; i < editableLayoutItems.length; i++) {\r\n                editableLayoutItems[i].isLayoutItemDraggable = isDraggable;\r\n            }\r\n        }\r\n    }\r\n\r\n    public ngAfterViewInit() {\r\n        this.snapToGrid();\r\n        this.editableLayoutItems.forEach((childComponent: EditableLayoutItemComponent) => {\r\n            this.subscriptions.push(childComponent.dragEnd.subscribe((item) => {\r\n                this.dragEnd(item);\r\n            }));\r\n        });\r\n    }\r\n\r\n    public get gridHeight() {\r\n        const editableLayoutItems = this.editableLayoutItems.toArray();\r\n        const itemsByMaxY = editableLayoutItems.map(item => item.yCoordInGrid + item.heightInGrid).sort((a, b) => a > b ? 1 : -1);\r\n        return Math.max(itemsByMaxY.last() + EditableLayoutComponent.gridPaddingSize, this.hostElement.nativeElement.clientHeight);\r\n    }\r\n\r\n    public get gridWidth() {\r\n        const editableLayoutItems = this.editableLayoutItems.toArray();\r\n        const itemsByMaxX = editableLayoutItems.map(item => item.xCoordInGrid + item.widthInGrid).sort((a, b) => a > b ? 1 : -1);\r\n        return Math.max(itemsByMaxX.last() + EditableLayoutComponent.gridPaddingSize, this.hostElement.nativeElement.clientWidth);\r\n    }\r\n\r\n    /**\r\n     * This method will be called once child/item layout is dragged to change the their position or\r\n     * their corners are being dragged to resize them. This will be called on onMouseUp and onMouseLeave event.\r\n     * @param item layout that is just dragged.\r\n     */\r\n    public dragEnd(item) {\r\n        const editableLayoutItems = this.editableLayoutItems.toArray();\r\n        const draggedItemId = new Array();\r\n        draggedItemId.push(item.id);\r\n        const idOfLastElement = draggedItemId.pop();\r\n        for (let i = 0; i < editableLayoutItems.length; i++) {\r\n            const draggedItemY1 = item.yCoordInGrid;\r\n            const draggedItemX1 = item.xCoordInGrid;\r\n            const draggedItemY2 = draggedItemY1 + item.heightInGrid;\r\n            const draggedItemX2 = draggedItemX1 + item.widthInGrid;\r\n            if (idOfLastElement !== editableLayoutItems[i].id) {\r\n                const existingItemY1 = editableLayoutItems[i].yCoordInGrid;\r\n                const existingItemX1 = editableLayoutItems[i].xCoordInGrid;\r\n                const existingItemX2 = existingItemX1 + editableLayoutItems[i].widthInGrid;\r\n                const existingItemY2 = existingItemY1 + editableLayoutItems[i].heightInGrid;\r\n                const isXOverlapping = this.areElementsOverlapping(draggedItemX1, draggedItemX2, existingItemX1, existingItemX2);\r\n                const isYOverlapping = this.areElementsOverlapping(draggedItemY1, draggedItemY2, existingItemY1, existingItemY2);\r\n                if ((isXOverlapping && isYOverlapping)) {\r\n                    if (existingItemY1 >= draggedItemY1) {\r\n                        draggedItemId.push(editableLayoutItems[i].id);\r\n                        editableLayoutItems[i].yCoordInGrid = draggedItemY2;\r\n                    } else {\r\n                        item.yCoordInGrid = existingItemY2;\r\n                        draggedItemId.push(item.id);\r\n                    }\r\n                }\r\n            }\r\n            if (i === editableLayoutItems.length - 1 && draggedItemId.length > 0) {\r\n                this.dragEnd(editableLayoutItems[draggedItemId.pop()]);\r\n            }\r\n        }\r\n        this.snapToGrid();\r\n    }\r\n\r\n    /**\r\n     * This method will check overlapping when coordinates are out of conflicting area, like bigger div is dragged over smaller div.\r\n     * @param pointOneOfDraggedDiv Y/X starting point of Vertical/Horizontal point of dragged div\r\n     * @param pointTwoOfDraggedDiv Y/X ending point of Vertical/Horizontal point of dragged div\r\n     * @param pointOneOfExistingDiv Y/X starting point of Vertical/Horizontal div over which new div is dragged\r\n     * @param pointTwoOfExistingDiv Y/X ending point of Vertical/Horizontal div over which new div is dragged\r\n     */\r\n    public areElementsOverlapping(\r\n        pointOneOfDraggedDiv: number,\r\n        pointTwoOfDraggedDiv: number,\r\n        pointOneOfExistingDiv: number,\r\n        pointTwoOfExistingDiv: number) {\r\n        return (this.checkBetween(pointOneOfExistingDiv, pointTwoOfExistingDiv, pointOneOfDraggedDiv)\r\n            || this.checkBetween(pointOneOfExistingDiv, pointTwoOfExistingDiv, pointTwoOfDraggedDiv))\r\n            || (pointOneOfDraggedDiv <= pointOneOfExistingDiv && pointTwoOfDraggedDiv >= pointTwoOfExistingDiv);\r\n    }\r\n\r\n    /**\r\n     * Just to check if searched item is fall under certain range.\r\n     * @param start start of range\r\n     * @param end end of range\r\n     * @param search item being searched\r\n     */\r\n    public checkBetween(start: number, end: number, search: number): boolean {\r\n        return (search > start) && (search < end) ? true : false;\r\n    }\r\n\r\n    /**\r\n     * This method is adjust all the div with to fall on the boundary of grid with 72 x 72.\r\n     */\r\n    public snapToGrid() {\r\n        this.editableLayoutItems.forEach((childComponent: EditableLayoutItemComponent) => {\r\n            const remainderX = childComponent.xCoordInGrid % EditableLayoutComponent.gridSquareSize;\r\n            const remainderY = childComponent.yCoordInGrid % EditableLayoutComponent.gridSquareSize;\r\n            const remainderHeight = childComponent.heightInGrid % EditableLayoutComponent.gridSquareSize;\r\n            const remainderWidth = childComponent.widthInGrid % EditableLayoutComponent.gridSquareSize;\r\n            if (remainderX !== 0) {\r\n                childComponent.xCoordInGrid = Math.max(childComponent.xCoordInGrid - remainderX, 0);\r\n            }\r\n            if (remainderY !== 0) {\r\n                childComponent.yCoordInGrid = Math.max(childComponent.yCoordInGrid - remainderY, 0);\r\n            }\r\n            if (remainderHeight !== 0) {\r\n                childComponent.heightInGrid =\r\n                    Math.max(childComponent.heightInGrid - remainderHeight, EditableLayoutComponent.gridSquareSize);\r\n            }\r\n            if (remainderWidth !== 0) {\r\n                childComponent.widthInGrid = Math.max(childComponent.widthInGrid - remainderWidth, EditableLayoutComponent.gridSquareSize);\r\n            }\r\n\r\n            // adjust for minimum area bounds\r\n            if (childComponent.area < childComponent.minArea) {\r\n                let widthModifier = 0;\r\n                let heightModifier = 0;\r\n                if (childComponent.widthInGrid >= childComponent.heightInGrid) {\r\n                    widthModifier = EditableLayoutComponent.gridSquareSize;\r\n                }\r\n                if (childComponent.heightInGrid >= childComponent.widthInGrid) {\r\n                    heightModifier = EditableLayoutComponent.gridSquareSize;\r\n                }\r\n                childComponent.widthInGrid += widthModifier;\r\n                childComponent.heightInGrid += heightModifier;\r\n            }\r\n        });\r\n    }\r\n\r\n    @Debounce(0)\r\n    protected updateLayout(): void {\r\n        if (this.editableLayoutItems) {\r\n            const layoutWidth = this.hostElement.nativeElement.clientWidth || 0;\r\n            if (!layoutWidth) {\r\n                return;\r\n            }\r\n\r\n            // calculate coords and boxSize\r\n            const editableLayoutItems = this.editableLayoutItems.toArray();\r\n\r\n            for (let i = 0; i < editableLayoutItems.length; i++) {\r\n                editableLayoutItems[i].widthInGrid = editableLayoutItems[i].widthInGrid;\r\n                editableLayoutItems[i].heightInGrid = editableLayoutItems[i].heightInGrid;\r\n            }\r\n        }\r\n    }\r\n}\r\n","<div class=\"sme-editable-layout-grid\" [style.height.px]=\"gridHeight\" [style.width.px]=\"gridWidth\">\r\n<ng-content select=\"sme-editable-layout-item\"></ng-content>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { EditableLayoutItemComponent } from './editable-layout-item.component';\r\nimport { EditableLayoutComponent } from './editable-layout.component';\r\nimport { LayoutDefinitionComponent } from './layout-definition.component';\r\nimport { LayoutItemComponent } from './layout-item.component';\r\nimport { LayoutComponent } from './layout.component';\r\n\r\n@NgModule({\r\n    declarations: [LayoutComponent, LayoutItemComponent, LayoutDefinitionComponent, EditableLayoutComponent, EditableLayoutItemComponent],\r\n    exports: [LayoutComponent, LayoutItemComponent, LayoutDefinitionComponent, EditableLayoutComponent, EditableLayoutItemComponent],\r\n    imports: [CommonModule]\r\n})\r\nexport class LayoutModule {}\r\n","<div class=\"sme-layer-over\" aria-live=\"assertive\"\r\n  [ngClass]=\"{'sme-scheme-loading-wheel': !isBackgroundTransparent, 'sme-layout-absolute': !inline, 'sme-position-inset-none': !inline}\">\r\n  <div class=\"sme-position-center-h-inline\" [ngClass]=\"{'sme-layout-absolute': !inline, 'sme-position-center': !inline, 'sme-arrange-stack-h': messageInline, 'sme-position-flex-align-center': messageInline}\">\r\n    <div class=\"sme-progress sme-progress-indeterminate-local {{sizeClass}} sme-focus-zone\" role=\"status\" tabindex=\"0\"\r\n      [ngClass]=\"{'sme-progress-center': inline, 'sme-progress-center-h': !inline, 'sme-progress-message-inline': messageInline}\" [attr.aria-labelledby]=\"idBag.loadingAriaLabel\">\r\n      <span></span>\r\n      <span></span>\r\n      <span></span>\r\n      <span></span>\r\n      <span></span>\r\n    </div>\r\n    <div class=\"sme-screen-reader\" [id]=\"idBag.loadingAriaLabel\">{{ message || strings.MsftSmeShell.Angular.LoadingWheel.ARIA.loading }}</div>\r\n    <span *ngIf=\"message\" class=\"sme-color-accent {{ messageClass }}\" [ngClass]=\"{'sme-margin-left-sm': messageInline}\" aria-hidden=\"true\">{{ message }}</span>\r\n    <a tabindex=\"0\" role=\"link\" *ngIf=\"buttonLabel\" class=\"sme-layout-block sme-link sme-focus-zone\" [ngClass]=\"{'sme-margin-left-xs': messageInline}\"\r\n      (click)=\"buttonClick.next()\">{{ buttonLabel }}</a>\r\n  </div>\r\n</div>\r\n","import { Component, EventEmitter, Inject, Injector, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../common/layout';\r\n\r\nexport enum LoadingWheelSize {\r\n    ExtraSmall = 'extra-small',\r\n    Small = 'small',\r\n    Medium = 'medium',\r\n    Large = 'large',\r\n    Default = Large\r\n}\r\n\r\nexport module LoadingWheelSize {\r\n    export type Bindable = LoadingWheelSize | 'extra-small' | 'small' | 'medium' | 'large';\r\n\r\n    const loadingWheelSizes = [\r\n        LoadingWheelSize.ExtraSmall,\r\n        LoadingWheelSize.Small,\r\n        LoadingWheelSize.Medium,\r\n        LoadingWheelSize.Large\r\n    ];\r\n    function fromString(value: string): LoadingWheelSize {\r\n        const defaultLoadingWheelSize = LoadingWheelSize.Default;\r\n\r\n        if (MsftSme.isNullOrWhiteSpace(value)) {\r\n            return defaultLoadingWheelSize;\r\n        }\r\n\r\n        value = value.toLowerCase();\r\n        return loadingWheelSizes.find(size => size.toLowerCase() === value) || defaultLoadingWheelSize;\r\n    }\r\n\r\n    export function fromBindableType(value: Bindable): LoadingWheelSize {\r\n        if (typeof (value) === 'string') {\r\n            return fromString(value);\r\n        }\r\n        return value;\r\n    }\r\n\r\n    export function toProgressClass(size: LoadingWheelSize): string {\r\n        switch (size) {\r\n            case LoadingWheelSize.ExtraSmall:\r\n                return 'sme-progress-extra-small';\r\n            case LoadingWheelSize.Small:\r\n                return 'sme-progress-small';\r\n            case LoadingWheelSize.Medium:\r\n                return 'sme-progress-medium';\r\n            case LoadingWheelSize.Large:\r\n            default:\r\n                return 'sme-progress-large';\r\n        }\r\n    }\r\n}\r\n/**\r\n * @smeDoc {@label Loading Wheel @id sme-loading-wheel}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/loading-wheel-overview.md}\r\n *\r\n * @example {@label Small loading wheel example @id small-loading-wheel}\r\n * @file {@filename small-loading-wheel-example.html @filepath ./examples/small-loading-wheel-example.html }\r\n * @file {@filename small-loading-wheel-example.ts @filepath ./examples/small-loading-wheel-example.ts }\r\n * @file {@filename loading-wheel-example.module.ts @filepath ./examples/loading-wheel-example.module.ts }\r\n *\r\n * @example {@label Large loading wheel example @id large-loading-wheel}\r\n * @file {@filename large-loading-wheel-example.html @filepath ./examples/large-loading-wheel-example.html }\r\n * @file {@filename large-loading-wheel-example.ts @filepath ./examples/large-loading-wheel-example.ts }\r\n * @file {@filename loading-wheel-example.module.ts @filepath ./examples/loading-wheel-example.module.ts }\r\n */\r\n@Component({\r\n    selector: 'sme-loading-wheel',\r\n    templateUrl: './loading-wheel.component.html'\r\n})\r\nexport class LoadingWheelComponent extends CoreBaseComponent implements OnDestroy, OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName(): string {\r\n        return 'LoadingWheelComponent';\r\n    }\r\n\r\n    /**\r\n     * The event fired when the button is clicked.\r\n     */\r\n    @Output()\r\n    public buttonClick: EventEmitter<void>;\r\n\r\n    /**\r\n     * The message to be displayed on the loading wheel.\r\n     */\r\n    @Input()\r\n    public message: string;\r\n\r\n    /**\r\n     * The class to be applied to the message, multiple classes should be passed in with space separator.\r\n     */\r\n    @Input()\r\n    public messageClass = 'sme-font-h3';\r\n\r\n    /**\r\n     * It determines whether the message is inline with the spinner wheel.\r\n     */\r\n    @Input()\r\n    public messageInline = false;\r\n\r\n    /**\r\n     * It determines whether the loading wheel is whole page or inline.\r\n     */\r\n    @Input()\r\n    public inline: boolean;\r\n\r\n    /**\r\n     * The label to be displayed on the button/link.\r\n     */\r\n    @Input()\r\n    public buttonLabel: string;\r\n\r\n    /**\r\n     * It determines whether the background for the loading wheel is transparent.\r\n     */\r\n    @Input()\r\n    public isBackgroundTransparent: boolean;\r\n\r\n    /**\r\n     * It determines the size of the loading wheel.\r\n     */\r\n    @Input()\r\n    public size: LoadingWheelSize.Bindable;\r\n\r\n    public get sizeClass(): string {\r\n        return LoadingWheelSize.toProgressClass(LoadingWheelSize.fromBindableType(this.size));\r\n    }\r\n\r\n    private initialSize: LoadingWheelSize;\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.size = LoadingWheelSize.Default;\r\n        this.message = '';\r\n        this.inline = false;\r\n        this.buttonLabel = null;\r\n        this.isBackgroundTransparent = false;\r\n        this.buttonClick = new EventEmitter<void>();\r\n    }\r\n\r\n    /**\r\n     * The method run when the component is initialized\r\n     */\r\n    public ngOnInit() {\r\n        super.ngOnInit();\r\n        this.initialSize = LoadingWheelSize.fromBindableType(this.size);\r\n        this.onLayoutChanged();\r\n    }\r\n\r\n    /**\r\n     * Destroy resources.\r\n     */\r\n    public ngOnDestroy(): void {\r\n        super.ngOnDestroy();\r\n        this.buttonClick.complete();\r\n    }\r\n\r\n    /**\r\n     * Adjust loading wheel size if its container is smaller than the inputted size\r\n     */\r\n    private onLayoutChanged() {\r\n        setTimeout(() => {\r\n            const firstChild = this.hostElement.nativeElement.firstChild;\r\n            const layoutHeight = firstChild.clientHeight || Number.MAX_VALUE;\r\n            const layoutWidth = firstChild.clientWidth || Number.MAX_VALUE;\r\n            // ranges come from sme-progress- classes, each size is a square with margin-top: 12px\r\n            // extra-small = 16px, small = 20px, medium = 40px, large = 60px\r\n            if (layoutHeight < 32 || layoutWidth < 20 || this.initialSize === LoadingWheelSize.ExtraSmall) {\r\n                this.size = LoadingWheelSize.ExtraSmall;\r\n            } else if (layoutHeight < 52 || layoutWidth < 40 || this.initialSize === LoadingWheelSize.Small) {\r\n                this.size = LoadingWheelSize.Small;\r\n            } else if (layoutHeight < 72 || layoutWidth < 60 || this.initialSize === LoadingWheelSize.Medium) {\r\n                this.size = this.initialSize === LoadingWheelSize.Medium ? LoadingWheelSize.Medium : this.initialSize;\r\n            } else {\r\n                this.size = this.initialSize;\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            loadingAriaLabel: ''\r\n        };\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormatPipeModule } from '../../pipes/format-pipe.module';\r\nimport { LoadingWheelComponent } from './loading-wheel.component';\r\n\r\n@NgModule({\r\n    exports: [ LoadingWheelComponent ],\r\n    declarations: [ LoadingWheelComponent ],\r\n    imports: [\r\n        CommonModule,\r\n        FormatPipeModule\r\n    ]\r\n})\r\nexport class LoadingWheelModule { }\r\n","export type FormData = any;\r\n\r\nexport interface DataSchema extends SchemaObjectProperty {\r\n    /**\r\n     * Collections of properties.\r\n     */\r\n    properties: SchemaProperty[];\r\n}\r\n\r\nexport enum SchemaPrimitiveType {\r\n    /**\r\n     * Default format: a single line text box.\r\n     */\r\n    String = 0,\r\n\r\n    /**\r\n     * Default format: a single line text box to input the number.\r\n     */\r\n    Number = 1,\r\n\r\n    /**\r\n     * Default format: a checkbox.\r\n     */\r\n    Boolean = 2,\r\n\r\n    /**\r\n     * Default format: a file uploading control.\r\n     */\r\n    File = 3,\r\n\r\n    /**\r\n     * Default format: no specific UI control. Default format is used to render all the child properties.\r\n     */\r\n    Object = 4,\r\n\r\n    /**\r\n     * Default format: TBD.\r\n     */\r\n    Array = 5\r\n}\r\n\r\nexport interface SchemaProperty {\r\n    type?: SchemaPrimitiveType;\r\n    format?: string;\r\n    name?: string;\r\n    label?: string;\r\n    defaultValue?: any;\r\n    description?: string;\r\n    required?: boolean;\r\n    options?: any; // TODO: consider use generic type here.\r\n    hideCondition?: string;\r\n    readonlyCondition?: string;\r\n    disabledCondition?: string;\r\n    customValidation?: string;\r\n    customAsyncValidation?: {\r\n        handler: string,\r\n        pendingMessage: string,\r\n        debounceTime: number\r\n    };\r\n}\r\n\r\nexport interface SchemaObjectProperty extends SchemaProperty {\r\n    properties: SchemaProperty[];\r\n    emptyByDefault?: boolean;\r\n}\r\n\r\nexport interface SchemaArrayProperty extends SchemaProperty {\r\n    item: SchemaProperty;\r\n}\r\n\r\nexport class SchemaFieldContext {\r\n    public isEditorMode: boolean;\r\n    public formData: any;\r\n    public formController: any;\r\n    public parentData: any;\r\n}\r\n","import { DataSchema, FormData, SchemaObjectProperty, SchemaPrimitiveType, SchemaProperty } from './schema-models';\r\nimport { DataTypeRegistration } from './schema-store';\r\n\r\n/**\r\n * Utility functions for Schema.\r\n * @dynamic\r\n */\r\nexport class SchemaUtilities {\r\n    /**\r\n     * It generates the data based on given schema.\r\n     */\r\n    public static generateDataBasedOnSchema(schema: DataSchema): FormData {\r\n        const data: any = {};\r\n        if (schema && schema.properties) {\r\n            schema.properties.forEach(property => {\r\n                data[property.name] = SchemaUtilities.generateDataBasedOnSchemaProperty(property);\r\n            });\r\n        }\r\n        return data;\r\n    }\r\n\r\n    /**\r\n     * It generates the data based on given property.\r\n     */\r\n    public static generateDataBasedOnSchemaProperty(property: SchemaProperty): FormData {\r\n        let data: any = null;\r\n        if (property.type !== SchemaPrimitiveType.Object\r\n            && !MsftSme.isNullOrUndefined(property.defaultValue) && property.defaultValue !== '') {\r\n            data = property.defaultValue;\r\n        } else {\r\n            switch (property.type) {\r\n                case SchemaPrimitiveType.Boolean:\r\n                    data = false;\r\n                    break;\r\n                case SchemaPrimitiveType.Array:\r\n                    data = [];\r\n                    break;\r\n                case SchemaPrimitiveType.String:\r\n                    data = '';\r\n                    break;\r\n                case SchemaPrimitiveType.Object:\r\n                    const objectProperty = <SchemaObjectProperty>property;\r\n                    if (!objectProperty.emptyByDefault) {\r\n                        data = {};\r\n                        objectProperty.properties.forEach(item => {\r\n                            data[item.name] = SchemaUtilities.generateDataBasedOnSchemaProperty(item);\r\n                        });\r\n                    }\r\n                    break;\r\n            }\r\n        }\r\n        return data;\r\n    }\r\n\r\n    /**\r\n     * It set up the form data with given schema.\r\n     * Any properties not in the passed in data will be added in the returned data.\r\n     */\r\n    public static setUpFormData(data: FormData, schema: DataSchema): FormData {\r\n        if (!data) {\r\n            data = {};\r\n        }\r\n        const defaultData = SchemaUtilities.generateDataBasedOnSchema(schema);\r\n        SchemaUtilities.setUpFormDataInternal(data, defaultData);\r\n        return data;\r\n    }\r\n\r\n    /**\r\n     * It generates the full type (e.g. 'string|textbox') by property schema.\r\n     */\r\n    public static generateFullTypeStringByPropertySchema(propertySchema: SchemaProperty): string {\r\n        return propertySchema ? SchemaUtilities.generateFullTypeString(propertySchema.type, propertySchema.format) : '';\r\n    }\r\n\r\n    /**\r\n     * It generates the full type (e.g. 'string|textbox') by type and format.\r\n     */\r\n    public static generateFullTypeString(type: SchemaPrimitiveType, format: string): string {\r\n        return SchemaPrimitiveType[type] + '|' + format;\r\n    }\r\n\r\n    /**\r\n     * It generates the full type (e.g. 'string|textbox') by data type registration.\r\n     */\r\n    public static generateFullTypeStringByDataTypeRegistration(dataTypeRegistration: DataTypeRegistration): string {\r\n        return SchemaUtilities.generateFullTypeString(dataTypeRegistration.type, dataTypeRegistration.format);\r\n    }\r\n\r\n    /**\r\n     * It gets the property schema by name in the given schema which contains the property array.\r\n     */\r\n    public static getPropertySchemaByName(schema: DataSchema | SchemaObjectProperty, propertyName: string): SchemaProperty {\r\n        return schema.properties.filter(function (item) { return item.name === propertyName; })[0];\r\n    }\r\n\r\n    /**\r\n     * Deepcopy the object.\r\n     */\r\n    public static deepCopy(object: any): any {\r\n        return MsftSme.isNullOrUndefined(object) ? null : JSON.parse(JSON.stringify(object));\r\n    }\r\n\r\n    private static setUpFormDataInternal(data: any, defaultData): void {\r\n        for (const property in defaultData) {\r\n            if (defaultData.hasOwnProperty(property)) {\r\n                if ((MsftSme.isNullOrUndefined(data[property]) || typeof data[property] !== typeof defaultData[property])\r\n                    && !MsftSme.isNullOrUndefined(defaultData[property])) {\r\n                    data[property] = JSON.parse(JSON.stringify(defaultData[property]));\r\n                } else if (typeof defaultData[property] === 'object') {\r\n                    SchemaUtilities.setUpFormDataInternal(data[property], defaultData[property]);\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\n","import { Type } from '@angular/core';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { SchemaPrimitiveType, SchemaProperty } from './schema-models';\r\nimport { SchemaUtilities } from './schema-utilities';\r\n\r\n/**\r\n * Schema Form Data Type Store\r\n * It maintains the data type registrations per form instance.\r\n */\r\nexport class SchemaDataTypeStore {\r\n    /**\r\n     * It's used to store the data type registrations submitted from the form field components.\r\n     */\r\n    public static dataTypeRegistrationsFromClass: { [type: string]: DataTypeRegistration } = {};\r\n    private dataTypeMap: { [type: string]: DataTypeRegistration } = {};\r\n\r\n    /**\r\n     * It registers the data type registration.\r\n     */\r\n    public static registerDataType(dataTypeRegistration: DataTypeRegistration): void {\r\n        const fullType = SchemaUtilities.generateFullTypeStringByDataTypeRegistration(dataTypeRegistration);\r\n        SchemaDataTypeStore.dataTypeRegistrationsFromClass[fullType] = dataTypeRegistration;\r\n    }\r\n\r\n    constructor() {\r\n        for (const type in SchemaDataTypeStore.dataTypeRegistrationsFromClass) {\r\n            if (SchemaDataTypeStore.dataTypeRegistrationsFromClass.hasOwnProperty(type)) {\r\n                this.registerDataType(SchemaDataTypeStore.dataTypeRegistrationsFromClass[type]);\r\n            }\r\n        }\r\n    }\r\n    /**\r\n     * It returns the names of all the data type registrations.\r\n     */\r\n    public getAllRegistrations(): DataTypeRegistration[] {\r\n        const result: DataTypeRegistration[] = [];\r\n        for (const type in this.dataTypeMap) {\r\n            if (this.dataTypeMap.hasOwnProperty(type)) {\r\n                result.push(this.dataTypeMap[type]);\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    /**\r\n     * It gets the data type registration by type.\r\n     */\r\n    public getDataTypeRegistration(type: SchemaPrimitiveType, format?: string): DataTypeRegistration {\r\n        const fullType = SchemaUtilities.generateFullTypeString(type, format);\r\n        const result = this.dataTypeMap[fullType];\r\n        if (!result) {\r\n            Logging.log({\r\n                level: LogLevel.Error,\r\n                message: 'Failed to find data type registration',\r\n                params: {\r\n                    type: fullType\r\n                },\r\n                source: 'SchemaFormDataTypeStore.getDataTypeRegistration'\r\n            });\r\n        }\r\n        return result;\r\n    }\r\n    /**\r\n     * It registers the data type registration.\r\n     */\r\n    public registerDataType(dataTypeRegistration: DataTypeRegistration): void {\r\n        const fullType = SchemaUtilities.generateFullTypeStringByDataTypeRegistration(dataTypeRegistration);\r\n        this.dataTypeMap[fullType] = dataTypeRegistration;\r\n    }\r\n}\r\n/**\r\n * It describes all the necessary information for a schema form field.\r\n */\r\nexport interface DataTypeRegistration {\r\n    /**\r\n     * It defines the primitive type of the data type.\r\n     */\r\n    type: SchemaPrimitiveType;\r\n    /**\r\n     * It defines the description of the data type. The description will be used in the editor which a data type is chosen\r\n     * to help explain how the chosen data type works.\r\n     */\r\n    description: string;\r\n    /**\r\n     * It defines the format of the data type. Format maps to a specific UI control for the data type.\r\n     */\r\n    format: string;\r\n    /**\r\n     * It defines how the angular template html should be generated for the schema property.\r\n     */\r\n    loaderComponent?: Type<any>;\r\n\r\n    /**\r\n     * It defines how the object type schema should look like for the object type schema.\r\n     */\r\n    predefinedObjectProperties?: SchemaProperty[];\r\n\r\n    /**\r\n     * It defines the schema of the option property.\r\n     * Example: for drop down list field, the option properties would be an array for key value pairs to provide drop down options.\r\n     */\r\n    optionProperties?: SchemaProperty[];\r\n\r\n    /**\r\n     * Here is the place to append any additional information for the data type.\r\n     * E.g. Json object data type has a tag says \"form-editor\" to indicate that data type is only used for form editor, it's not available\r\n     * for normal forms.\r\n     */\r\n    tags?: string[];\r\n\r\n    /**\r\n     * It defines whether the format of this data type is the default format of that type.\r\n     */\r\n    isDefaultFormat?: boolean;\r\n\r\n    defaultDataHandler?: (schema: SchemaProperty) => any;\r\n}\r\n","/* eslint-disable */\r\nimport { Type } from '@angular/core';\r\nimport { DataTypeRegistration, SchemaDataTypeStore } from './schema-store';\r\nimport { SchemaUtilities } from './schema-utilities';\r\n\r\nexport function SmeSchemaProperty(...dataTypeRegistrations: DataTypeRegistration[]) {\r\n    return function (target: Function) {\r\n        dataTypeRegistrations.forEach(dataTypeRegistration => {\r\n            const fullType = SchemaUtilities.generateFullTypeStringByDataTypeRegistration(dataTypeRegistration);\r\n            if (!dataTypeRegistration.loaderComponent) {\r\n                dataTypeRegistration.loaderComponent = <Type<any>>target;\r\n            }\r\n            SchemaDataTypeStore.dataTypeRegistrationsFromClass[fullType] = dataTypeRegistration;\r\n        });\r\n    };\r\n}\r\n","import { Observable } from 'rxjs';\r\n\r\n/**\r\n * The levels of severity of a validation alert.\r\n */\r\nexport enum ValidationAlertSeverity {\r\n    Informational = 0,\r\n    Warning = 1,\r\n    Error = 2\r\n}\r\n\r\n/**\r\n * Defines a Validation Alert object used for advanced form validation\r\n */\r\nexport interface ValidationAlert {\r\n    hidden?: boolean;\r\n    valid?: boolean;\r\n    pending?: boolean;\r\n    message?: string;\r\n    severity?: ValidationAlertSeverity;\r\n    isMarkdownMessage?: boolean;\r\n    iconClass?: string;\r\n    showWhenPristine?: boolean;\r\n}\r\n\r\nexport type ValidationResult = ValidationAlert | boolean | string;\r\n\r\n/**\r\n * Defines a collection of validation alerts\r\n */\r\nexport interface ValidationAlerts extends MsftSme.StringMap<ValidationResult> { }\r\n\r\nexport interface AsyncValidationAlerts extends Array<Observable<ValidationAlerts>> { }\r\n","import { Directive, forwardRef, OnDestroy } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\n\r\n/**\r\n * Implementation of ControlValueAccessor for sme-form-field\r\n * The selector for this directive must match @see FormFieldComponent.selector. see FormFieldComponent for details.\r\n */\r\n@Directive({\r\n    // eslint-disable-next-line @angular-eslint/directive-selector\r\n    selector: 'sme-form-field',\r\n    providers: [\r\n        { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => FormFieldAccessorDirective), multi: true }\r\n    ]\r\n})\r\nexport class FormFieldAccessorDirective<TModel> implements ControlValueAccessor, OnDestroy {\r\n\r\n    /**\r\n     * Indicates that this form control is disabled\r\n     */\r\n    public disabled: boolean;\r\n\r\n    /**\r\n     * Disabled changed subject\r\n     */\r\n    public disabledChange: Subject<boolean>;\r\n\r\n    /**\r\n     * Placeholder for the onChange callback that is registered by the Forms API\r\n     */\r\n    public onChange: MsftSme.Action1<TModel>;\r\n\r\n    /**\r\n     * Placeholder for the onTouched callback that is registered by the Forms API\r\n     */\r\n    public onTouched: MsftSme.Action;\r\n\r\n    /**\r\n     * The form controls actual value\r\n     */\r\n    private value: TModel;\r\n\r\n    /**\r\n     * Constructs a new instance of FormInputBaseComponent\r\n     */\r\n    constructor() {\r\n        // Initialize Values.\r\n        this.onChange = MsftSme.noop;\r\n        this.onTouched = MsftSme.noop;\r\n        this.disabled = false;\r\n        this.disabledChange = new Subject<boolean>();\r\n    }\r\n\r\n    public ngOnDestroy() {\r\n        this.disabledChange.complete();\r\n    }\r\n\r\n    /**\r\n     * Implementation of ControlValueAccessor interface.\r\n     * Registers a callback function that should be called when the control's value changes in the UI.\r\n     * @param fn the onChange function to call when the control should propagated changes to the view\r\n     */\r\n    public registerOnChange(fn: MsftSme.Action1<TModel>) {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    /**\r\n     * Implementation of ControlValueAccessor interface.\r\n     * Registers a callback function that should be called when the control receives a blur event.\r\n     * @param fn the onTouched function to call when the control should be considered blurred\r\n     */\r\n    public registerOnTouched(fn: MsftSme.Action) {\r\n        this.onTouched = fn;\r\n    }\r\n\r\n    /**\r\n     * Implementation of ControlValueAccessor interface.\r\n     * Called when the controls status changes to or from \"DISABLED\"\r\n     * @param isDisabled Indicates if the control should be disabled.\r\n     */\r\n    public setDisabledState(isDisabled: boolean): void {\r\n        this.disabled = isDisabled;\r\n        this.disabledChange.next(this.disabled);\r\n    }\r\n\r\n    /**\r\n     * Implementation of ControlValueAccessor interface.\r\n     * This method will be called by the forms API to write to the view when programmatic (model -> view) changes are requested.\r\n     * @param value The new value of the model for this form control\r\n     */\r\n    public writeValue(value: TModel, triggerChange: boolean = false) {\r\n        this.value = value;\r\n        if (triggerChange) {\r\n            this.onChange(value);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Safety wrapper around value. Value should only be changed from writeValue method\r\n     */\r\n    public getValue() {\r\n        return this.value;\r\n    }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\n/**\r\n * Interface for indicating an object as a form field that can be aggregated\r\n */\r\nexport interface FormFieldAggregatable {\r\n    isValid: MsftSme.Func<boolean>;\r\n    disabled: boolean;\r\n    pending: boolean;\r\n    dirty: boolean;\r\n    touched: boolean;\r\n}\r\n\r\n/**\r\n * Interface for indicating an object that cna aggregate form fields\r\n */\r\nexport interface FormFieldAggregator {\r\n    addFormField: MsftSme.Action1<FormFieldAggregatable>;\r\n    removeFormField: MsftSme.Action1<FormFieldAggregatable>;\r\n    updateStatus: MsftSme.Action;\r\n}\r\n\r\n/**\r\n * Injection token used to provide a {@link Layout} reference\r\n */\r\nexport const SME_FORM_FIELD_AGGREGATOR_PROVIDER = new InjectionToken<FormFieldAggregator>('sme.form-field.aggregator');\r\n","import { FormControl } from '@angular/forms';\r\nimport { Observable, of } from 'rxjs';\r\nimport { ValidationAlerts } from '../validation-alert/validation-alert';\r\nimport { SmeAsyncValidator } from './sme-async-validator';\r\n\r\n/**\r\n * Base class for form validation.\r\n */\r\nexport class FormAsyncValidatorBase implements SmeAsyncValidator {\r\n    /**\r\n     * Instantiates a new instance of FormValidatorBase\r\n     */\r\n    constructor() {\r\n        // placeholder\r\n    }\r\n\r\n    /**\r\n     * Implementation of Validator interface.\r\n     * Validates the value of this elements form control. Use the @see checkValidate event to hook into this function.\r\n     * @param c The FormControl attached to this element\r\n     * @return null when valid, otherwise returns a validation object in the form of \"{ errorType: {valid: false} }\".\r\n     */\r\n    public validate(c: FormControl): Observable<ValidationAlerts | null> {\r\n        // we have no alerts, so return null this should be overridden by derived classes\r\n        return of(null);\r\n    }\r\n\r\n    /**\r\n     * Checks if an alerts object has alerts and returns it, otherwise returns null.\r\n     * @param alerts The alerts to check\r\n     */\r\n    protected alertsOrNull(alerts: ValidationAlerts): ValidationAlerts | null {\r\n        if (MsftSme.isNullOrUndefined(alerts) && Object.keys(alerts).length === 0) {\r\n            return null;\r\n        }\r\n        return alerts;\r\n    }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { AbstractControl } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { ValidationAlerts } from '../validation-alert/validation-alert';\r\n\r\nexport interface SmeAsyncValidator {\r\n    validate(c: AbstractControl): Observable<ValidationAlerts | null>;\r\n}\r\n\r\n/**\r\n * Injection token used to provide {@link SmeAsyncValidator} references\r\n */\r\nexport const SME_ASYNC_VALIDATORS = new InjectionToken<Array<SmeAsyncValidator>>('sme.asyncValidators');\r\n","import { Directive, EventEmitter, forwardRef, Inject, Input, Optional, Output, Self, StaticProvider } from '@angular/core';\r\nimport { AsyncValidator, FormControl, NG_ASYNC_VALIDATORS, ValidationErrors } from '@angular/forms';\r\nimport { forkJoin, Observable, of, Subject } from 'rxjs';\r\nimport { delay, map, mergeMap } from 'rxjs/operators';\r\nimport { AsyncValidationAlerts, ValidationAlert, ValidationAlerts } from '../validation-alert/validation-alert';\r\nimport { FormAsyncValidatorBase } from '../validators/base-async-validator';\r\nimport { SmeAsyncValidator, SME_ASYNC_VALIDATORS } from '../validators/sme-async-validator';\r\n\r\n/**\r\n * Arguments for the @see FormFieldAsyncValidatorDirective.customAsyncValidate Output event\r\n */\r\nexport interface CheckAsyncValidationEventArgs {\r\n    /**\r\n     * The form control that we are validating\r\n     */\r\n    formControl: FormControl;\r\n\r\n    /**\r\n     * An observable that emits an alert object when complete\r\n     */\r\n    alerts: AsyncValidationAlerts;\r\n}\r\n\r\n/**\r\n * Provider for the FormFieldAsyncValidatorDirective directive\r\n */\r\nexport const FORM_FIELD_ASYNC_VALIDATOR: StaticProvider = {\r\n    provide: NG_ASYNC_VALIDATORS,\r\n    useExisting: forwardRef(() => FormFieldAsyncValidatorDirective),\r\n    multi: true\r\n};\r\n\r\nexport const defaultAsyncValidationDebounceTime = 800;\r\n\r\n/**\r\n * Implementation of Async Validator for sme-form-field\r\n * The selector for this directive must match @see FormFieldComponent.selector. see FormFieldComponent for details.\r\n */\r\n@Directive({\r\n    // eslint-disable-next-line @angular-eslint/directive-selector\r\n    selector: 'sme-form-field[customAsyncValidate]',\r\n    providers: [FORM_FIELD_ASYNC_VALIDATOR]\r\n})\r\nexport class FormFieldAsyncValidatorDirective extends FormAsyncValidatorBase implements AsyncValidator {\r\n\r\n    @Input()\r\n    /**\r\n     * It indicates whether to disable this validator.\r\n     * In some scenarios we want to programmatically control whether this validator\r\n     * should be used like in schema driven form.\r\n     * Then this property will be used.\r\n     */\r\n    public customAsyncValidateDisabled: boolean;\r\n\r\n    @Input()\r\n    public customAsyncValidateDebounceTime: number;\r\n\r\n    /**\r\n     * EventEmitter for checking validation and raising alerts\r\n     * Subscribers are expected to populate the 'alerts' map with their own validation alerts\r\n     */\r\n    @Output()\r\n    public customAsyncValidate: EventEmitter<CheckAsyncValidationEventArgs> = new EventEmitter<CheckAsyncValidationEventArgs>();\r\n\r\n    /**\r\n     * Subject to emit when new alerts are available\r\n     */\r\n    public asyncAlert = new Subject<ValidationAlerts>();\r\n\r\n    /**\r\n     * Instantiates a new instance of FormFieldAsyncValidatorDirective\r\n     */\r\n    constructor(\r\n        @Optional() @Self() @Inject(SME_ASYNC_VALIDATORS) private asyncValidators: Array<SmeAsyncValidator>) {\r\n        super();\r\n    }\r\n\r\n    /**\r\n     * Implementation of Validator interface.\r\n     * Validates the value of this elements form control. Use the @see checkValidate event to hook into this function.\r\n     * @param c The FormControl attached to this element\r\n     * @return null when valid, otherwise returns a validation object in the form of \"{ errorType: {valid: false} }\".\r\n     */\r\n    public validate(c: FormControl): Observable<ValidationErrors | null> {\r\n        const asyncAlerts: AsyncValidationAlerts = [];\r\n\r\n        if (!this.customAsyncValidateDisabled) {\r\n            // collect custom validation observables\r\n            this.customAsyncValidate.emit({ formControl: c, alerts: asyncAlerts });\r\n\r\n            // incorporate our super validation\r\n            asyncAlerts.unshift(super.validate(c));\r\n\r\n            // collect SmeValidator alerts\r\n            if (this.asyncValidators && this.asyncValidators.length > 0) {\r\n                const injectedAlerts = this.asyncValidators.map(validator => validator.validate(c));\r\n                asyncAlerts.push(...injectedAlerts);\r\n            }\r\n\r\n            // determine our debounce time so that we dont fire to often\r\n            let delayTime = defaultAsyncValidationDebounceTime;\r\n            if (MsftSme.isNumber(this.customAsyncValidateDebounceTime) && this.customAsyncValidateDebounceTime >= 0) {\r\n                delayTime = this.customAsyncValidateDebounceTime;\r\n            }\r\n\r\n            // delay all of our validators by the debounce time.\r\n            // if the value changes in this time frame, the observable subscriptions are canceled and should cease.\r\n            // we do this by injecting a delay in the pipeline before returning the original validation logic\r\n            const debouncedAlerts = asyncAlerts.map(\r\n                originalObservable => of(null).pipe(\r\n                    delay(delayTime),\r\n                    mergeMap(() => originalObservable))\r\n            );\r\n\r\n            return forkJoin(debouncedAlerts).pipe(\r\n                map((recievedAlerts) => {\r\n                    const alerts = recievedAlerts.reduce((result, next) => ({ ...result, ...next }), <ValidationAlerts>{});\r\n                    // notify any listeners that we have alerts available\r\n                    this.asyncAlert.next(alerts);\r\n\r\n                    // get the errors list from the alerts. return that as our errors collection for angulars internal processing\r\n                    const errors: ValidationAlerts = {};\r\n\r\n                    // pull out the error alerts to return to angular. Only these alerts should actually invalidate the control\r\n                    Object.keys(alerts).forEach(key => {\r\n                        const alert = alerts[key];\r\n                        if (!alert || !(<ValidationAlert>alert).valid) {\r\n                            errors[key] = alert;\r\n                        }\r\n                    });\r\n\r\n                    return this.alertsOrNull(errors);\r\n                })\r\n            );\r\n        }\r\n\r\n        return of(null);\r\n    }\r\n}\r\n","/**\r\n * The orientation of a form field\r\n */\r\nexport enum FormFieldOrientation {\r\n    Horizontal = 'horizontal',\r\n    Vertical = 'vertical'\r\n}\r\n\r\nexport module FormFieldOrientation {\r\n    export type Bindable = FormFieldOrientation | 'horizontal' | 'vertical';\r\n\r\n    const formFieldOrientations = [\r\n        FormFieldOrientation.Horizontal,\r\n        FormFieldOrientation.Vertical\r\n    ];\r\n\r\n    function fromString(value: string): FormFieldOrientation {\r\n        const defaultFormFieldOrientation = FormFieldOrientation.Horizontal;\r\n\r\n        if (MsftSme.isNullOrWhiteSpace(value)) {\r\n            return defaultFormFieldOrientation;\r\n        }\r\n\r\n        value = value.toLowerCase();\r\n        return formFieldOrientations.find(orientation => orientation.toLowerCase() === value) || defaultFormFieldOrientation;\r\n    }\r\n    export function fromBindableType(value: Bindable): FormFieldOrientation {\r\n        if (typeof (value) === 'string') {\r\n            return fromString(value);\r\n        }\r\n        return value;\r\n    }\r\n}\r\n","import { FormControl } from '@angular/forms';\r\nimport { ValidationAlerts } from '../validation-alert/validation-alert';\r\nimport { SmeValidator } from './sme-validator';\r\n\r\n/**\r\n * Base class for form validation.\r\n */\r\nexport class FormValidatorBase implements SmeValidator {\r\n    /**\r\n     * Revalidates the model attached to this validator\r\n     */\r\n    protected revalidate: MsftSme.Action = MsftSme.noop;\r\n\r\n    /**\r\n     * Instantiates a new instance of FormValidatorBase\r\n     */\r\n    constructor() {\r\n        // placeholder\r\n    }\r\n\r\n    /**\r\n     * Implementation of Validator interface.\r\n     * Validates the value of this elements form control. Use the @see checkValidate event to hook into this function.\r\n     * @param c The FormControl attached to this element\r\n     * @return null when valid, otherwise returns a validation object in the form of \"{ errorType: {valid: false} }\".\r\n     */\r\n    public validate(c: FormControl): ValidationAlerts | null {\r\n        // we have no alerts, so return null this should be overridden by derived classes\r\n        return null;\r\n    }\r\n\r\n    /**\r\n     * Implementation of Validator interface.\r\n     * registers a change function that should be called anytime revalidation needs to occur\r\n     */\r\n    public registerOnValidatorChange(fn: MsftSme.Action): void {\r\n        this.revalidate = fn;\r\n    }\r\n\r\n    /**\r\n     * Checks if an alerts object has alerts and returns it, otherwise returns null.\r\n     * @param alerts The alerts to check\r\n     */\r\n    protected alertsOrNull(alerts: ValidationAlerts): ValidationAlerts | null {\r\n        if (MsftSme.isNullOrUndefined(alerts) && Object.keys(alerts).length === 0) {\r\n            return null;\r\n        }\r\n        return alerts;\r\n    }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { AbstractControl } from '@angular/forms';\r\nimport { ValidationAlerts } from '../validation-alert/validation-alert';\r\n\r\nexport interface SmeValidator {\r\n    validate(c: AbstractControl): ValidationAlerts | null;\r\n    registerOnValidatorChange?(fn: MsftSme.Action): void;\r\n}\r\n\r\n/**\r\n * Injection token used to provide {@link SmeValidator} references\r\n */\r\nexport const SME_VALIDATORS = new InjectionToken<Array<SmeValidator>>('sme.validators');\r\n","import { Directive, EventEmitter, forwardRef, Inject, Optional, Output, Self, StaticProvider } from '@angular/core';\r\nimport { FormControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { ValidationAlert, ValidationAlerts } from '../validation-alert/validation-alert';\r\nimport { FormValidatorBase } from '../validators/base-validator';\r\nimport { SmeValidator, SME_VALIDATORS } from '../validators/sme-validator';\r\n\r\n/**\r\n * Arguments for the @see FormFieldValidatorDirective.customValidate Output event\r\n */\r\nexport interface CheckValidationEventArgs {\r\n    /**\r\n     * The form control that we are validating\r\n     */\r\n    formControl: FormControl;\r\n\r\n    /**\r\n     * An empty object to return populate with validation alerts\r\n     */\r\n    alerts: ValidationAlerts;\r\n}\r\n\r\n/**\r\n * Provider for the FormFieldValidatorDirective directive\r\n */\r\nexport const FORM_FIELD_VALIDATOR: StaticProvider = {\r\n    provide: NG_VALIDATORS,\r\n    useExisting: forwardRef(() => FormFieldValidatorDirective),\r\n    multi: true\r\n};\r\n\r\n/**\r\n * Implementation of Validator for sme-form-field\r\n * The selector for this directive must match @see FormFieldComponent.selector. see FormFieldComponent for details.\r\n */\r\n@Directive({\r\n    // eslint-disable-next-line @angular-eslint/directive-selector\r\n    selector: 'sme-form-field',\r\n    providers: [FORM_FIELD_VALIDATOR]\r\n})\r\nexport class FormFieldValidatorDirective extends FormValidatorBase implements Validator {\r\n\r\n    /**\r\n     * EventEmitter for checking validation and raising alerts\r\n     * Subscribers are expected to populate the 'alerts' map with there own validation alerts\r\n     */\r\n    @Output()\r\n    public customValidate: EventEmitter<CheckValidationEventArgs> = new EventEmitter<CheckValidationEventArgs>();\r\n\r\n    /**\r\n     * Subject to emit when new alerts\r\n     */\r\n    public alert = new Subject<ValidationAlerts>();\r\n\r\n    /**\r\n     * Instantiates a new instance of FormFieldValidatorDirective\r\n     */\r\n    constructor(\r\n        @Optional() @Self() @Inject(SME_VALIDATORS) private validators: Array<SmeValidator>) {\r\n        super();\r\n        if (validators) {\r\n            validators.forEach(v => v.registerOnValidatorChange(() => this.revalidate()));\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Implementation of Validator interface.\r\n     * Validates the value of this elements form control. Use the @see checkValidate event to hook into this function.\r\n     * @param c The FormControl attached to this element\r\n     * @return null when valid, otherwise returns a validation object in the form of \"{ errorType: {valid: false} }\".\r\n     */\r\n    public validate(c: FormControl): ValidationErrors | null {\r\n        let alerts: ValidationAlerts = super.validate(c) || {};\r\n        // collect custom validate alerts\r\n        this.customValidate.emit({ formControl: c, alerts: alerts });\r\n\r\n        // collect SmeValidator alerts\r\n        if (this.validators && this.validators.length > 0) {\r\n            const injectedAlerts = this.validators.reduce(\r\n                (result, validator) => {\r\n                    return { ...result, ...validator.validate(c) || {} };\r\n                },\r\n                <ValidationAlerts>{}\r\n            );\r\n\r\n            alerts = { ...injectedAlerts, ...alerts };\r\n        }\r\n\r\n        // notify any listeners that we have alerts available\r\n        this.alert.next(alerts);\r\n\r\n        // get the errors list from the alerts. return that as our errors collection for angulars internal processing\r\n        const errors: ValidationAlerts = {};\r\n\r\n        Object.keys(alerts).forEach(key => {\r\n            const alert = alerts[key];\r\n            if (!alert || !(<ValidationAlert>alert).valid) {\r\n                errors[key] = alert;\r\n            }\r\n        });\r\n\r\n        return this.alertsOrNull(errors);\r\n    }\r\n}\r\n","import {\r\n    AfterViewInit, ChangeDetectorRef, ContentChild, Directive, DoCheck,\r\n    EventEmitter, HostBinding, Injector, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, TemplateRef\r\n} from '@angular/core';\r\nimport { FormControl, NgControl } from '@angular/forms';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { fromEvent, merge, Observable, of } from 'rxjs';\r\nimport { Strings } from '../../../generated/strings';\r\nimport { BaseComponent } from '../../common/base.component';\r\nimport { DisabledChangedEvent } from '../../common/events/disabledChanged.event';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../../common/layout';\r\nimport { ValidationAlert, ValidationAlerts, ValidationAlertSeverity, ValidationResult } from '../validation-alert/validation-alert';\r\nimport { FormFieldAccessorDirective } from './form-field-accessor.directive';\r\nimport { FormFieldAggregatable, FormFieldAggregator, SME_FORM_FIELD_AGGREGATOR_PROVIDER } from './form-field-aggregator';\r\nimport { CheckAsyncValidationEventArgs, FormFieldAsyncValidatorDirective } from './form-field-async-validator.directive';\r\nimport { FormFieldContainer } from './form-field-container';\r\nimport { FormFieldOrientation } from './form-field-orientation';\r\nimport { CheckValidationEventArgs, FormFieldValidatorDirective } from './form-field-validator.directive';\r\n\r\n/**\r\n * Base component class for form fields\r\n * A circular reference would be created by injecting both ngModel\r\n * and providing @see ControlValueAccessor and @see Validator implementations on the same component.\r\n * Therefore, we have broken the FormField component into 3 parts.\r\n *  - The @see FormFieldValidatorDirective handles the implementation of @see Validator and @see NG_VALIDATORS\r\n *  - The @see FormFieldAccessorDirective handles the implementation of @see ControlValueAccessor and @see NG_VALUE_ACCESSOR\r\n *  - This @see FormFieldComponent is our glue that pulls it all together with labels and alerts and injects the NgControl instance safely.\r\n *\r\n * In order for this to work, all three components must use the same base selector @see FormFieldComponent.selector.\r\n * This is enforced in the constructor of this component,\r\n * However the directives are done by convention and will just crash if the injector cannot find them.\r\n *\r\n */\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Form fields @id sme-form-fields-component}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/overview.md}\r\n *\r\n * @example {@label Search with emphasized search button @id search-emphasis}\r\n * @file {@filename component.ts @filepath ./examples/search-emphasize.component.ts}\r\n * @file {@filename component.html @filepath ./examples/search-emphasize.component.html}\r\n *\r\n * @example {@label Search with hidden label @id search-hidden}\r\n * @file {@filename component.ts @filepath ./examples/search-hidden-label.component.ts}\r\n * @file {@filename component.html @filepath ./examples/search-hidden-label.component.html}\r\n  *\r\n * @example {@label Search with required field @id search-required}\r\n * @file {@filename component.ts @filepath ./examples/search-required.component.ts}\r\n * @file {@filename component.html @filepath ./examples/search-required.component.html}\r\n *\r\n * @example {@label Calendar @id calendar}\r\n * @file {@filename component.html @filepath ./examples/calendar.component.html}\r\n *\r\n * @example {@label Clock @id clock}\r\n * @file {@filename component.ts @filepath ./examples/clock.component.ts}\r\n * @file {@filename component.html @filepath ./examples/clock.component.html}\r\n *\r\n * @example {@label Datetime @id datetime}\r\n * @file {@filename component.ts @filepath ./examples/datetime.component.ts}\r\n * @file {@filename component.html @filepath ./examples/datetime.component.html}\r\n *\r\n * @example {@label Validation error @id validation-error}\r\n * @file {@filename component.ts @filepath ./examples/validation-error.component.ts}\r\n * @file {@filename component.html @filepath ./examples/validation-error.component.html}\r\n *\r\n * @example {@label Validation pending @id validation-pending}\r\n * @file {@filename component.ts @filepath ./examples/validation-pending.component.ts}\r\n * @file {@filename component.html @filepath ./examples/validation-pending.component.html}\r\n *\r\n * @example {@label Validation with custom markdown @id validation-markdown}\r\n * @file {@filename component.ts @filepath ./examples/validation-markdown.component.ts}\r\n * @file {@filename component.ts @filepath ./examples/validation-markdown.component.html}\r\n *\r\n * @example {@label Basic combobox @id combobox}\r\n * @file {@filename component.ts @filepath ./examples/combobox.component.ts}\r\n * @file {@filename component.html @filepath ./examples/combobox.component.html}\r\n *\r\n * @example {@label Combobox with search @id combobox-search}\r\n * @file {@filename component.ts @filepath ./examples/combobox-search.component.ts}\r\n * @file {@filename component.html @filepath ./examples/combobox-search.component.html}\r\n *\r\n * @example {@label Multiple select comboxbox @id combobox-multi}\r\n * @file {@filename component.ts @filepath ./examples/combobox-multi.component.ts}\r\n * @file {@filename component.html @filepath ./examples/combobox-multi.component.html}\r\n *\r\n * @example {@label Multiple select combobox with minwidth @id combobox-multi-minwidth}\r\n * @file {@filename component.ts @filepath ./examples/combobox-multi-minwidth.component.ts}\r\n * @file {@filename component.html @filepath ./examples/combobox-multi-minwidth.component.html}\r\n *\r\n * @example {@label Multiple select combobox with custom tooltip @id custom-tooltip}\r\n * @file {@filename component.ts @filepath ./examples/custom-tooltip.component.ts}\r\n * @file {@filename component.html @filepath ./examples/custom-tooltip.component.html}\r\n */\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class FormFieldComponent<TStrings, TModel>\r\n    extends BaseComponent<TStrings>\r\n    implements OnInit, OnDestroy, DoCheck, OnChanges, AfterViewInit, FormFieldAggregatable {\r\n\r\n    /**\r\n     * The selector that all form fields must use in order to work properly with\r\n     * @see FormFieldAccessorDirective and @see FormFieldValidatorDirective\r\n     */\r\n    public static readonly selector = 'sme-form-field';\r\n\r\n    /**\r\n     * The type of field that we are dealing with. This is a required property\r\n     */\r\n    @Input()\r\n    public type: string;\r\n\r\n    /**\r\n     * Indicates that the header of this form field should be hidden from view (but not necessarily from aria)\r\n     * Not supported on all form fields\r\n     */\r\n    @Input()\r\n    public hideHeader: boolean;\r\n\r\n    /**\r\n     * Indicates if to maintain the space left after hidding header\r\n     */\r\n\r\n    @Input()\r\n    public hideHeaderSpace = true;\r\n\r\n    /**\r\n     * Indicates that this requires a value\r\n     */\r\n    @Input()\r\n    public required: boolean;\r\n\r\n    /**\r\n     * Indicates that this requires a value\r\n     */\r\n    @Input()\r\n    public autofocus: boolean;\r\n\r\n    /**\r\n     * The placeholder for the internal form control\r\n     */\r\n    @Input()\r\n    public placeholder: string;\r\n\r\n    /**\r\n     * The label that identifies this control to the user\r\n     */\r\n    @Input()\r\n    public label: string;\r\n\r\n    /**\r\n     * It determines whether to render the label in vertical middle\r\n     */\r\n    @Input()\r\n    public verticalMiddleLabel = false;\r\n\r\n    /**\r\n     * The template ref of a subform of this component. The way this template ref is used varies form field to field\r\n     */\r\n    @ContentChild(TemplateRef)\r\n    public subFormTemplate: TemplateRef<any>;\r\n\r\n    /**\r\n     * The description of this field; A description for the user of the meaning and purpose of this field\r\n     */\r\n    @Input()\r\n    public get description(): string {\r\n        return this.internalDescription;\r\n    }\r\n    public set description(value: string) {\r\n        this.internalDescription = value;\r\n        this.updateDetails();\r\n    }\r\n\r\n    @Input()\r\n    @HostBinding('class.sme-form-field-auto-height')\r\n    public compact: boolean;\r\n\r\n    @Input()\r\n    @HostBinding('class.sme-form-field-minimal')\r\n    public minimal: boolean;\r\n\r\n    /**\r\n     * It indicates whether the form field is readonly.\r\n     */\r\n    @Input()\r\n    public readonly: boolean;\r\n\r\n    /**\r\n     * The instructions of this control; A built in description for the user of how this control works.\r\n     * This should be provided by the control and applies to all instances of the control, but can be overridden as an attribute.\r\n     */\r\n    @Input()\r\n    public get instructions(): string {\r\n        return this.internalInstructions;\r\n    }\r\n    public set instructions(value: string) {\r\n        this.internalInstructions = value;\r\n        this.updateDetails();\r\n    }\r\n\r\n    /**\r\n     * If provided, renders a custom tooltip for this field\r\n     */\r\n    @Input()\r\n    public tooltipTemplate: TemplateRef<any>;\r\n\r\n    /**\r\n     * The tooltip. If not provided, details property will be used\r\n     */\r\n    @Input()\r\n    public tooltip: string;\r\n\r\n    /**\r\n     * Provides binding context for the tooltip\r\n     */\r\n    @Input()\r\n    public tooltipContext: any;\r\n\r\n    /**\r\n     * Indicates that this form control is truly disabled\r\n     * This will be true if the accessor (model), input, or ancestor is disabled\r\n     * Its value is set only on DoCheck.\r\n     */\r\n    public get disabled(): boolean {\r\n        // return true if we are disabled, our model is disabled or an ancestor is disabled\r\n        return this.internalDisabled;\r\n    }\r\n\r\n    /**\r\n     * It indicates whether the form field is pending validation\r\n     */\r\n    public get pending(): boolean {\r\n        return this.ngModel && this.ngModel.pending;\r\n    }\r\n\r\n    public get dirty(): boolean {\r\n        return this.ngModel && this.ngModel.dirty;\r\n    }\r\n\r\n    public get touched(): boolean {\r\n        return this.ngModel && this.ngModel.touched;\r\n    }\r\n\r\n    @HostBinding('class.sme-disabled')\r\n    @HostBinding('attr.disabled')\r\n    @HostBinding('attr.aria-disabled')\r\n    public get loadingOrDisabled(): boolean {\r\n        return (this.disabled || this.loading) ? true : null;\r\n    }\r\n\r\n    /**\r\n     * Placeholder for the bound input of the disabled property\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-input-rename\r\n    @Input('disabled')\r\n    public disabledInput: boolean;\r\n\r\n    /**\r\n     * Indicates whether the form field is loading\r\n     */\r\n    @Input()\r\n    public loading: boolean;\r\n\r\n    /**\r\n     * The message to show while loading\r\n     */\r\n    @Input()\r\n    public loadingMessage: string;\r\n\r\n    /**\r\n     * The message to show while pending\r\n     */\r\n    @Input()\r\n    public pendingMessage: string;\r\n\r\n    /**\r\n     * Overrides the default dataUtaId if passed in\r\n     */\r\n    @Input()\r\n    public utaId: string;\r\n\r\n    /**\r\n     * The form field's UTA id getter.\r\n     * The ID is based on the form field name that's set on the ngModel.\r\n     */\r\n    @HostBinding('attr.data-uta-id')\r\n    public get dataUtaId(): string {\r\n        // First, get the name from the attribute set in the HTML\r\n        const formFieldNameAttribute = this.getAttribute('formcontrolname') || this.getAttribute('name');\r\n\r\n        // Then, if no HTML attribute is set, try to get the name from the ngModel\r\n        const formFieldName = formFieldNameAttribute || this.ngModel && this.ngModel.name && this.ngModel.name.toString();\r\n\r\n        // If none of these are set, then look for the utaId input\r\n        const formFieldId = formFieldName || this.utaId;\r\n\r\n        // Finally, only set the data-uta-id attribute if neither name nor formcontrolname are set on the HTML already\r\n        return MsftSme.isNullOrUndefined(formFieldNameAttribute) ? formFieldId : undefined;\r\n    }\r\n\r\n    /**\r\n     * Placeholder for the combined disabled state\r\n     */\r\n    private get internalDisabled(): boolean {\r\n        return this.ancestorDisabled || this.disabledInput || this.disabledByModel;\r\n    }\r\n\r\n    /**\r\n     * Placeholder for the ancestor disabled state\r\n     */\r\n    private ancestorDisabled: boolean;\r\n\r\n    /**\r\n     * Indicates that the ancestor disabled state is being reflected in the current model\r\n     */\r\n    private expectDisabledByAncestor: boolean;\r\n\r\n    /**\r\n     * Indicates that the input disabled state is being reflected in the current model\r\n     */\r\n    private expectDisabledByInput: boolean;\r\n\r\n    /**\r\n     * Placeholder for the ancestor disabled state\r\n     */\r\n    private disabledByModel: boolean;\r\n\r\n    protected get fieldName(): string {\r\n        const strings = (<Strings>MsftSme.self().Resources.strings).MsftSmeShell.Angular.Common.Form.Validation;\r\n        return this.label || ((this.ngModel && this.ngModel.name) ? this.ngModel.name.toString() : strings.UnknownFieldName);\r\n    }\r\n\r\n    /**\r\n     * The value of this field.\r\n     * safe wrapper around this.accessor.value\r\n     */\r\n    public get value(): TModel {\r\n        return this.accessor.getValue();\r\n    }\r\n    public set value(value: TModel) {\r\n        this.accessor.writeValue(value, true);\r\n    }\r\n\r\n    public get showInfoBubble(): boolean {\r\n        return (!!this.resolvedTitle || !!this.resolvedTooltipTemplate);\r\n    }\r\n\r\n    public get resolvedTooltipTemplate(): TemplateRef<any> {\r\n        return this.tooltipTemplate;\r\n    }\r\n\r\n    public get resolvedTitle(): string {\r\n        return this.tooltip || this.details;\r\n    }\r\n\r\n    /**\r\n     * Aggregate property for the details for of this control (description merged with instructions)\r\n     */\r\n    public details: string;\r\n\r\n    /**\r\n     * The current alert to display for this control\r\n     */\r\n    public alert: ValidationAlert;\r\n\r\n    /**\r\n     * The current non-error alerts to display for this control\r\n     */\r\n    private nonErrorAlerts: ValidationAlerts;\r\n\r\n    /**\r\n     * The current non-error async alerts to display for this control\r\n     */\r\n    private nonErrorAsyncAlerts: ValidationAlerts;\r\n\r\n    /**\r\n     * Indicates that immediate validation is enabled\r\n     */\r\n    @Input()\r\n    public immediateValidation: boolean;\r\n\r\n    @Output()\r\n    // eslint-disable-next-line @angular-eslint/no-output-native\r\n    public change: EventEmitter<TModel>;\r\n\r\n    /**\r\n     * Indicates the default value for immediateValidation.\r\n     * This is meant to be overridden by derived classes\r\n     */\r\n    protected get defaultImmediateValidation(): boolean {\r\n        return false;\r\n    }\r\n\r\n    @HostBinding('class.sme-form-field-error-alert-border')\r\n    public errorAlertBorder: Boolean = false;\r\n\r\n    /**\r\n     * Indicates if the form field should layout horizontally\r\n     */\r\n    @HostBinding('class.sme-form-field-orientation-horizontal')\r\n    public get isHorizontalLayout() {\r\n        const orientation = FormFieldOrientation.fromBindableType(this.orientation) ||\r\n            FormFieldOrientation.fromBindableType(this.calculatedOrientation);\r\n        return orientation === FormFieldOrientation.Horizontal;\r\n    }\r\n\r\n    /**\r\n     * Indicates if the form field should layout vertically\r\n     */\r\n    @HostBinding('class.sme-form-field-orientation-vertical')\r\n    public get isVerticalLayout() {\r\n        const orientation = FormFieldOrientation.fromBindableType(this.orientation) ||\r\n            FormFieldOrientation.fromBindableType(this.calculatedOrientation);\r\n        return orientation === FormFieldOrientation.Vertical;\r\n    }\r\n\r\n    /**\r\n     * Indicates the desired orientation of the form field.\r\n     * When provided, the form field will no longer dynamically chang its orientation.\r\n     */\r\n    @Input()\r\n    public orientation: FormFieldOrientation.Bindable;\r\n\r\n    /**\r\n     * Placeholder for the calculated orientation\r\n     */\r\n    public calculatedOrientation: FormFieldOrientation.Bindable;\r\n\r\n    /**\r\n     * Injected @see NgControl instance bound to this component.\r\n     */\r\n    public ngModel: NgControl;\r\n\r\n    /**\r\n     * Injected @see FormFieldAccessorDirective instance bound to this component.\r\n     */\r\n    private accessor: FormFieldAccessorDirective<TModel>;\r\n\r\n    /**\r\n     * Injected @see FormFieldValidatorDirective instance bound to this component.\r\n     */\r\n    private validator: FormFieldValidatorDirective;\r\n\r\n    /**\r\n     * Injected @see FormFieldValidatorDirective instance bound to this component.\r\n     */\r\n    private asyncValidator: FormFieldAsyncValidatorDirective;\r\n\r\n    /**\r\n     * Injected @see FormFieldAggregator parent instance bound to this component.\r\n     */\r\n    private aggregator: FormFieldAggregator;\r\n\r\n    /**\r\n     * Injected @see Layout parent instance bound to this component.\r\n     */\r\n    private layout: Layout;\r\n\r\n    /**\r\n     * Injected @see ChangeDetectorRef instance bound to this component.\r\n     */\r\n    protected changeDetectorRef: ChangeDetectorRef;\r\n\r\n    @Input()\r\n    public formFieldContainer: FormFieldContainer;\r\n\r\n    /**\r\n     * Getter for the available width for subfields to consume\r\n     */\r\n    protected get subFieldLayoutWidth(): number {\r\n        const element = <HTMLElement>this.hostElement.nativeElement;\r\n        return element.clientWidth;\r\n    }\r\n\r\n    /**\r\n     * Internal placeholder for the description of this field\r\n     */\r\n    private internalDescription: string;\r\n\r\n    /**\r\n     * Internal placeholder for the instructions of this control\r\n     */\r\n    private internalInstructions: string;\r\n\r\n    /**\r\n     * Holds the initial value of the field\r\n     */\r\n    private initialValue: TModel;\r\n\r\n    /**\r\n     * Indicates that the initial value has been tracked\r\n     */\r\n    private valueInitialized: boolean;\r\n\r\n    /**\r\n     * Gets the width to base layout decisions on\r\n     */\r\n    private get layoutWidth(): number {\r\n        const element = <HTMLElement>this.hostElement.nativeElement;\r\n        if (!element) { return 0; }\r\n        return element.offsetParent ? element.offsetParent.clientWidth : element.clientWidth;\r\n    }\r\n\r\n    /**\r\n     * Gets the layout width as detected on the last DoCheck()\r\n     */\r\n    private previouslyCheckedLayoutWidth: number;\r\n\r\n    /**\r\n     * Constructs a new instance of @see FormFieldComponent\r\n     * @param injector the angular injection service for the base classes @SmeInjectableBase Annotation.\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n\r\n        this.ngModel = injector.get(NgControl, null, { optional: true });\r\n        this.accessor = injector.get(FormFieldAccessorDirective);\r\n        this.validator = injector.get(FormFieldValidatorDirective);\r\n        this.asyncValidator = injector.get(FormFieldAsyncValidatorDirective, null, { optional: true });\r\n        this.aggregator = injector.get(SME_FORM_FIELD_AGGREGATOR_PROVIDER, null, { optional: true });\r\n        this.layout = injector.get(SME_LAYOUT_PROVIDER, null, { optional: true, skipSelf: true });\r\n        this.changeDetectorRef = injector.get(ChangeDetectorRef);\r\n\r\n        this.required = false;\r\n        this.placeholder = '';\r\n        this.autofocus = null;\r\n        this.initialValue = null;\r\n        this.valueInitialized = false;\r\n        this.immediateValidation = this.defaultImmediateValidation;\r\n        this.ancestorDisabled = false;\r\n        this.expectDisabledByAncestor = false;\r\n        this.expectDisabledByInput = false;\r\n        this.change = new EventEmitter<TModel>();\r\n        this.calculatedOrientation = FormFieldOrientation.Horizontal;\r\n        this.previouslyCheckedLayoutWidth = this.layoutWidth;\r\n\r\n        // Runtime Linting is not necessarily useful for framework controls such as\r\n        // form fields since they are designed with accessibility in mind.\r\n        this.setAttribute('sme-lint-disable', '');\r\n\r\n        // validate selector to be in the 'sme-form-field[type=\"<type>\"]' format\r\n        if (this.hostElement.nativeElement.tagName.toLowerCase() !== FormFieldComponent.selector) {\r\n            Logging.logError(\r\n                'FormField.constructor', `Components derived from ${FormFieldComponent.selector} must use a base selector of ${FormFieldComponent.selector}[type=\"...\"]`);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnInit interface\r\n     */\r\n    public ngOnInit() {\r\n        super.ngOnInit();\r\n\r\n        if (!this.type) {\r\n            throw new Error(`The \"type\" attribute is required on all ${FormFieldComponent.selector} components`);\r\n        }\r\n\r\n        if (!this.ngModel) {\r\n            // eslint-disable-next-line max-len\r\n            throw new Error(`${FormFieldComponent.selector} components require the use of an NgControl directive such as [ngModel], [formControlName], or [formControl]`);\r\n        }\r\n\r\n        if (this.formFieldContainer) {\r\n            this.formFieldContainer.checkValidation = () => {\r\n                this.ngModel.control.markAsDirty();\r\n                this.ngModel.control.updateValueAndValidity();\r\n                return this.ngModel.valid;\r\n            };\r\n            this.formFieldContainer.immediateValidation = () => {\r\n                if (this.immediateValidation) {\r\n                    this.ngModel.control.markAsDirty();\r\n                    this.ngModel.control.updateValueAndValidity();\r\n                    this.ngModel.control.markAsPristine();\r\n                }\r\n                return this.ngModel.valid;\r\n            };\r\n            this.formFieldContainer.isDirty = () => {\r\n                return this.ngModel.dirty;\r\n            };\r\n        }\r\n\r\n        // hook up layout directive to get layout width\r\n        if (this.layout) {\r\n            this.subscriptions.push(this.layout.layoutChanged.subscribe(() => { this.yieldOnLayoutChanged(); }));\r\n        }\r\n\r\n        // subscribe to our validators customValidate event.\r\n        this.subscriptions.push(this.validator.customValidate.subscribe(\r\n            // Merge our alerts with the alerts object given in the event args\r\n            (args: CheckValidationEventArgs) => { MsftSme.deepAssign(args.alerts, this.validate(args.formControl)); }\r\n        ));\r\n\r\n        // subscribe to our validators alert event.\r\n        this.subscriptions.push(this.validator.alert.subscribe((alerts: ValidationAlerts) => { this.onAlert(alerts); }));\r\n\r\n        if (this.asyncValidator && !this.asyncValidator.customAsyncValidateDisabled) {\r\n            // subscribe to our asyncValidators customAsyncValidate event.\r\n            this.subscriptions.push(this.asyncValidator.customAsyncValidate.subscribe(\r\n                // Merge our alerts with the alerts object given in the event args\r\n                (args: CheckAsyncValidationEventArgs) => { args.alerts.push(this.asyncValidate(args.formControl)); }\r\n            ));\r\n\r\n            // subscribe to our asyncValidators asyncAlert event.\r\n            this.subscriptions.push(this.asyncValidator.asyncAlert.subscribe((alerts: ValidationAlerts) => { this.onAsyncAlert(alerts); }));\r\n        }\r\n        // listen to disabled state changes from our model\r\n        this.subscriptions.push(this.accessor.disabledChange.subscribe((disabled => this.ngModelDisabledChanged(disabled))));\r\n\r\n        // subscribe to ngModel status changes.\r\n        this.subscriptions.push(this.ngModel.statusChanges.subscribe(status => this.onStatusChanged(status)));\r\n        this.subscriptions.push(this.ngModel.valueChanges.subscribe((value) => this.onValueChanged(value)));\r\n\r\n        // if we have a parent aggregator, then register to it\r\n        if (this.aggregator) {\r\n            this.aggregator.addFormField(this);\r\n        }\r\n\r\n        // our model may have started in the disabled state, so initialize our tracking property to the current accessor state.\r\n        this.disabledByModel = this.accessor.disabled;\r\n\r\n        // ensure our model starts in a pristine state\r\n        this.ngModel.control.markAsPristine();\r\n\r\n        // a bit hacky, but this works to trigger validation immediately when the form loads.\r\n        // this method does not work properly with editable grids using formFieldContainer, use explicit immediateValidation call above.\r\n        if (!this.formFieldContainer && this.immediateValidation) {\r\n            // This triggers immediate validation\r\n            this.ngModel.control.markAsDirty();\r\n\r\n            // This reverts the pristine state of the form field but it needs to \"wait a little\"\r\n            setTimeout(() => {\r\n                this.ngModel.control.markAsPristine();\r\n            }, 250);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular DoCheck interface\r\n     */\r\n    public ngDoCheck() {\r\n        super.ngDoCheck();\r\n        // Check to see if we need to recalculate our layout\r\n        const layoutWidth = this.layoutWidth;\r\n        if (layoutWidth !== this.previouslyCheckedLayoutWidth) {\r\n            this.onLayoutChanged();\r\n        }\r\n        this.previouslyCheckedLayoutWidth = layoutWidth;\r\n    }\r\n\r\n    /**\r\n     * synchronizes the expected disabled state with the actual state of the model\r\n     */\r\n    private synchronizeDisabledState() {\r\n        const disable = this.internalDisabled;\r\n        if (disable === this.accessor.disabled) {\r\n            return;\r\n        }\r\n\r\n        if (disable) {\r\n            if (this.ancestorDisabled) {\r\n                this.expectDisabledByAncestor = true;\r\n            }\r\n            if (this.disabledInput) {\r\n                this.expectDisabledByInput = true;\r\n            }\r\n            this.ngModel.control.disable();\r\n        } else if (!this.disabledByModel) {\r\n            this.expectDisabledByAncestor = false;\r\n            this.expectDisabledByInput = false;\r\n            this.ngModel.control.enable();\r\n        }\r\n    }\r\n\r\n    public ngOnChanges(changes: SimpleChanges) {\r\n        super.ngOnChanges(changes);\r\n\r\n        if (changes.loading) {\r\n            this.updateAlerts();\r\n        }\r\n        if (changes.disabledInput) {\r\n            setTimeout(() => this.synchronizeDisabledState());\r\n        }\r\n    }\r\n\r\n    public ngAfterViewInit() {\r\n        super.ngAfterViewInit();\r\n        // initialize fieldset ancestors. Our ancestry should never change, so we can save perf by collecting this now.\r\n        const fieldsetAncestors = <HTMLFieldSetElement[]>Dom.getAllAncestors(\r\n            this.hostElement.nativeElement,\r\n            (element) => element.tagName.toUpperCase() === 'FIELDSET'\r\n        );\r\n\r\n        // listen to the custom disabledChanged event on our ancestor fieldsets\r\n        const disabledChangedObservables = fieldsetAncestors.map(f => fromEvent(f, DisabledChangedEvent.typeName));\r\n        this.subscriptions.push(\r\n            merge(...disabledChangedObservables).subscribe(() => {\r\n                this.ancestorDisabled = fieldsetAncestors.some(f => f.disabled);\r\n                this.synchronizeDisabledState();\r\n            })\r\n        );\r\n\r\n        // initialize our ancestral disabled state\r\n        this.ancestorDisabled = fieldsetAncestors.some(f => f.disabled);\r\n        this.synchronizeDisabledState();\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnDestroy interface\r\n     * derived classes are always expected to call super.ngOnDestroy() when overriding\r\n     */\r\n    public ngOnDestroy() {\r\n        super.ngOnDestroy();\r\n        // if we have a parent aggregator, then register to it\r\n        if (this.aggregator) {\r\n            this.aggregator.removeFormField(this);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * On layout changed event handler, occurs every time the layout has been changed.\r\n     */\r\n    protected onLayoutChanged() {\r\n        const layoutWidth = this.layoutWidth;\r\n        // 600px is breakpoint for form field vertical/horizontal layout\r\n        const orientation = layoutWidth >= 600 ? FormFieldOrientation.Horizontal : FormFieldOrientation.Vertical;\r\n        if (this.calculatedOrientation !== orientation) {\r\n            this.calculatedOrientation = orientation;\r\n            this.changeDetectorRef.detectChanges();\r\n            this.yieldOnOrientationChanged();\r\n        }\r\n    }\r\n\r\n    /**\r\n    * Occurs every time the orientation has been changed.\r\n    */\r\n    protected onOrientationChanged() {\r\n        // To be implemented optionally by derived components.\r\n    }\r\n\r\n    /**\r\n    * Occurs every time the layout has been changed.\r\n    */\r\n    @Yield()\r\n    private yieldOnLayoutChanged() {\r\n        if (!this.ngIsDestroyed) {\r\n            this.onLayoutChanged();\r\n        }\r\n    }\r\n\r\n    /**\r\n    * Occurs every time the layout has been changed.\r\n    */\r\n    @Yield()\r\n    private yieldOnOrientationChanged() {\r\n        if (!this.ngIsDestroyed) {\r\n            this.onLayoutChanged();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Resets this field to its initial value\r\n     */\r\n    public reset(): void {\r\n        this.ngModel.reset();\r\n    }\r\n\r\n    /**\r\n     * Clears the value of this field base on the initial values type.\r\n     */\r\n    public clear(): void {\r\n        this.value = this.getClearValue();\r\n    }\r\n\r\n    /**\r\n     * Copies the fields value to the clipboard.\r\n     */\r\n    public copyToClipboard() {\r\n        MsftSme.copyToClipboard(this.value);\r\n    }\r\n\r\n    /**\r\n     * Check whether the header should be displayed.\r\n     */\r\n    public shouldDisplayHeader(): boolean {\r\n        return !this.hideHeader && (!!(this.label || this.details) || this.required);\r\n    }\r\n\r\n    /**\r\n     * Gets a value indicating if this form field is valid\r\n     */\r\n    public isValid(): boolean {\r\n        return this.ngModel.valid;\r\n    }\r\n\r\n    /**\r\n     * Gets a value indicating if the form field is dirty.\r\n     */\r\n    public isDirty(): boolean {\r\n        return this.ngModel.dirty;\r\n    }\r\n\r\n    /**\r\n     * Marks the form field as pristine.\r\n     */\r\n    public markAsPristine(): void {\r\n        this.ngModel.control.markAsPristine();\r\n    }\r\n\r\n    /**\r\n     * Marks the form field as dirty.\r\n     */\r\n    public markAsDirty(): void {\r\n        this.ngModel.control.markAsDirty();\r\n    }\r\n\r\n    /**\r\n     * Applies the focus to the current element\r\n     */\r\n    public focus() {\r\n        const next = Dom.getNextFocusableElement(this.hostElement.nativeElement);\r\n        if (next) {\r\n            next.focus();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Occurs every time the control is disabled or enabled.\r\n     * @param disabled The new disabled state of the control\r\n     */\r\n    protected ngModelDisabledChanged(disabled: boolean) {\r\n        if (disabled) {\r\n            const expectDisabled = this.expectDisabledByAncestor || this.expectDisabledByInput;\r\n            if (this.expectDisabledByAncestor) {\r\n                this.expectDisabledByAncestor = false;\r\n            }\r\n            if (this.expectDisabledByInput) {\r\n                this.expectDisabledByInput = false;\r\n            }\r\n            if (!expectDisabled) {\r\n                this.disabledByModel = true;\r\n                this.synchronizeDisabledState();\r\n            }\r\n        } else {\r\n            this.disabledByModel = false;\r\n            this.synchronizeDisabledState();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Determines the value to use when clearing the field based on the initial value type\r\n     * Derived fields may override this to change the clear value behavior\r\n     */\r\n    protected getClearValue(): TModel {\r\n        if (MsftSme.isNullOrUndefined(this.initialValue)) {\r\n            return null;\r\n        }\r\n\r\n        if (Array.isArray(this.initialValue)) {\r\n            return <any>[];\r\n        }\r\n\r\n        switch (typeof this.initialValue) {\r\n            case 'string': {\r\n                return <any>'';\r\n            }\r\n            case 'boolean': {\r\n                return <any>false;\r\n            }\r\n            default: {\r\n                return this.initialValue;\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control\r\n     * @param c The form control attached to this instance\r\n     */\r\n    protected validate(c: FormControl): ValidationAlerts {\r\n        // To be implemented optionally by derived components.\r\n        return {};\r\n    }\r\n\r\n    /**\r\n     * Performs asynchronous validation that is internal to this control\r\n     * @param c The form control attached to this instance\r\n     */\r\n    protected asyncValidate(c: FormControl): Observable<ValidationAlerts> {\r\n        // To be implemented optionally by derived components.\r\n        return of({});\r\n    }\r\n\r\n    /**\r\n     * Occurs any time value changed.\r\n     */\r\n    protected updateDetails() {\r\n        const details = [];\r\n        if (!MsftSme.isNullOrWhiteSpace(this.description)) {\r\n            details.push(this.description);\r\n        }\r\n        if (!MsftSme.isNullOrWhiteSpace(this.instructions)) {\r\n            details.push(this.instructions);\r\n        }\r\n\r\n        // separate details and instructions with double line breaks.\r\n        this.details = details.length > 0 ? details.join('\\n\\n') : null;\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     * When called in the @see BaseComponent super class initialization, These classes will be automatically assigned to the host element.\r\n     */\r\n    protected getInitialHostClasses(): string[] {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-form-field'\r\n        ]);\r\n    }\r\n\r\n    /**\r\n     * Occurs every time the value of the control changes, in the UI or programmatically.\r\n     * @param value the value of the form control\r\n     */\r\n    protected onValueChanged(value: TModel) {\r\n        if (!this.valueInitialized) {\r\n            this.initialValue = value;\r\n            this.valueInitialized = true;\r\n        } else {\r\n            if (this.formFieldContainer) {\r\n                this.formFieldContainer.reportChange();\r\n            }\r\n            if (this.change.observers.length > 0) {\r\n                if (this.ngModel['update'].observers.length > 0) {\r\n                    setTimeout(() => this.change.emit());\r\n                } else {\r\n                    this.value = value;\r\n                    this.change.emit();\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Occurs every time the validation status of the control has been re-calculated.\r\n     * @param status the status object of the form control\r\n     */\r\n    protected onStatusChanged(status: any) {\r\n        this.updateAlerts();\r\n        if (this.aggregator) {\r\n            this.aggregator.updateStatus();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Occurs every time there are alert changes from the validator directive\r\n     * @param alerts the alerts from the validator directive\r\n     */\r\n    protected onAlert(alerts: ValidationAlerts) {\r\n        this.nonErrorAlerts = this.removeErrorAlerts(alerts);\r\n        this.updateAlerts();\r\n    }\r\n\r\n    /**\r\n     * Occurs every time there are alert changes from the validator directive\r\n     * @param alerts the alerts from the validator directive\r\n     */\r\n    protected onAsyncAlert(alerts: ValidationAlerts) {\r\n        this.nonErrorAsyncAlerts = this.removeErrorAlerts(alerts);\r\n        this.updateAlerts();\r\n    }\r\n\r\n    /**\r\n     * Removes the error alerts from a ValidationAlert Objects\r\n     * errors will be surfaced in the this.ngModel.control.errors instead\r\n     * @param alerts the alerts to filter\r\n     */\r\n    private removeErrorAlerts(alerts: ValidationAlerts): ValidationAlerts {\r\n        const nonErrorAlerts = {};\r\n        Object.keys(alerts).forEach(key => {\r\n            const alert = alerts[key];\r\n            if (alert && (<ValidationAlert>alert).valid) {\r\n                nonErrorAlerts[key] = alert;\r\n            }\r\n        });\r\n        return nonErrorAlerts;\r\n    }\r\n\r\n    /**\r\n     * Updates the form field border to reflect error alerts\r\n     */\r\n    private updateBorderState() {\r\n        if (this.alert && this.alert.severity === ValidationAlertSeverity.Error\r\n            && (this.alert.valid || this.alert.showWhenPristine || this.ngModel.dirty)) {\r\n            this.errorAlertBorder = true;\r\n        } else {\r\n            this.errorAlertBorder = false;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Updates the active alerts of this control\r\n     */\r\n    protected updateAlerts() {\r\n        const strings = <Strings>MsftSme.self().Resources.strings;\r\n        this.alert = null;\r\n        // When in a loading state, show that alert only.\r\n        if (this.loading) {\r\n            this.alert = {\r\n                pending: true,\r\n                message: this.loadingMessage || strings.MsftSmeShell.Angular.Common.Form.Loading.message\r\n            };\r\n            return;\r\n        }\r\n\r\n        // When in a pending state, show that alert only.\r\n        if (this.pending) {\r\n            this.alert = {\r\n                pending: true,\r\n                message: this.pendingMessage\r\n                    || strings.MsftSmeShell.Angular.Common.Form.Validation.Pending.message\r\n            };\r\n            return;\r\n        }\r\n\r\n        // gather our alerts.\r\n        const alertsArray: MsftSme.NameValue<string, any>[] = [];\r\n        this.addVisibleAlerts(alertsArray, this.nonErrorAlerts);\r\n        this.addVisibleAlerts(alertsArray, this.nonErrorAsyncAlerts);\r\n        this.addVisibleAlerts(alertsArray, this.ngModel.control.errors);\r\n\r\n        // clear active alert if there are no alerts\r\n        if (alertsArray.length === 0) {\r\n            if (this.formFieldContainer) {\r\n                this.formFieldContainer.updateAlert(null);\r\n            }\r\n            this.updateBorderState();\r\n            return;\r\n        }\r\n\r\n        const formFieldErrorNames = { required: 'required', invalidDisplayValue: 'invalidDisplayValue' };\r\n        // Pre sort for invalid display errors to come before required errors, they have the same severity\r\n        alertsArray.sort((a, b) => {\r\n            if (a.name === formFieldErrorNames.required && b.name === formFieldErrorNames.invalidDisplayValue) {\r\n                return 1;\r\n            }\r\n            if (a.name === formFieldErrorNames.invalidDisplayValue && b.name === formFieldErrorNames.required) {\r\n                return -1;\r\n            }\r\n            return 0;\r\n        });\r\n\r\n        const sortedAlerts = alertsArray\r\n            .map(e => this.getAlert(e.name, e.value))\r\n            .sort((a, b) => {\r\n                // first sort on valid property\r\n                if (a.valid !== b.valid) {\r\n                    return a.valid ? 1 : -1;\r\n                }\r\n\r\n                // then sort on severity\r\n                if (a.severity !== b.severity) {\r\n                    return a.severity < b.severity ? 1 : -1;\r\n                }\r\n\r\n                // otherwise they are considered equal for sorting\r\n                return 0;\r\n            });\r\n\r\n        sortedAlerts.some(alert => {\r\n            // Show alert in these scenarios:\r\n            // - If the form field is required and it is not the initial load of the form\r\n            // - If a custom alert marks showWhenPrisitine as true\r\n            // - If the alert is marked as valid\r\n            // - Any other alerts after the form is marked as dirty\r\n            if (alert.severity !== ValidationAlertSeverity.Error || alert.valid || alert.showWhenPristine || this.ngModel.dirty) {\r\n                this.alert = alert;\r\n                if (this.formFieldContainer) {\r\n                    this.formFieldContainer.updateAlert(alert);\r\n                }\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n\r\n        this.updateBorderState();\r\n    }\r\n\r\n    private addVisibleAlerts(target: MsftSme.NameValue<string, any>[], alerts: ValidationAlerts) {\r\n        if (!MsftSme.isNullOrUndefined(alerts)) {\r\n            MsftSme.forEachKey(alerts, (k, v) => {\r\n                if (!(<ValidationAlert>v).hidden) {\r\n                    target.push({ name: k, value: v });\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * gets an alert object from a key and validation result\r\n     */\r\n    protected getAlert(key: string, alert: ValidationResult): ValidationAlert {\r\n        // if the alert is false, null, or valid with no message, then its not really an alert that needs to be shown and should be ignored\r\n        if (alert === false\r\n            || MsftSme.isNullOrUndefined(alert)\r\n            || ((alert as ValidationAlert).valid === true) && MsftSme.isNullOrWhiteSpace((alert as ValidationAlert).message)) {\r\n            return null;\r\n        }\r\n\r\n        let processedAlert: ValidationAlert;\r\n\r\n        // if the alert is a string, show it as an error\r\n        if (typeof alert === 'string') {\r\n            processedAlert = {\r\n                valid: false,\r\n                severity: ValidationAlertSeverity.Error,\r\n                message: <string>alert\r\n            };\r\n        } else {\r\n\r\n            processedAlert = this.getKnownNgAlert(key, alert);\r\n\r\n            if (!processedAlert) {\r\n\r\n                // if alert is a simple true, we dont really know how to deal with it, so just create an empty validation object\r\n                processedAlert = alert === true ? {} : { ...alert };\r\n\r\n                // if valid is not set, then set it explicitly to false\r\n                if (MsftSme.isNullOrUndefined(processedAlert.valid)) {\r\n                    processedAlert.valid = false;\r\n                }\r\n\r\n                // if there is no message, create a default one\r\n                if (MsftSme.isNullOrWhiteSpace(processedAlert.message)) {\r\n                    processedAlert.message = `Validation failed: ${key}`;\r\n                }\r\n\r\n                // if severity is not set correctly and the field is not valid, then set it to error\r\n                if (!processedAlert.valid && MsftSme.isNullOrUndefined(ValidationAlertSeverity[processedAlert.severity])) {\r\n                    processedAlert.severity = ValidationAlertSeverity.Error;\r\n                }\r\n            }\r\n\r\n        }\r\n        return processedAlert;\r\n    }\r\n\r\n    /**\r\n     * Gets an alert object from known angular alert keys\r\n     */\r\n    protected getKnownNgAlert(key: string, alert: any): ValidationAlert {\r\n        const vStrings = (<Strings>MsftSme.self().Resources.strings).MsftSmeShell.Angular.Common.Form.Validation;\r\n        let message: string;\r\n        // first check for known angular 'built-in' validations\r\n\r\n        switch (key) {\r\n            case 'min': {\r\n                message = vStrings.Min.format.format(this.fieldName, alert.min);\r\n                break;\r\n            }\r\n            case 'max': {\r\n                message = vStrings.Max.format.format(this.fieldName, alert.max);\r\n                break;\r\n            }\r\n            case 'required': {\r\n                message = vStrings.Required.format.format(this.fieldName);\r\n                break;\r\n            }\r\n            case 'email': {\r\n                message = vStrings.Email.format.format(this.fieldName);\r\n                break;\r\n            }\r\n            case 'minlength': {\r\n                message = vStrings.MinLength.format.format(this.fieldName, alert.requiredLength);\r\n                break;\r\n            }\r\n            case 'maxlength': {\r\n                message = vStrings.MaxLength.format.format(this.fieldName, alert.requiredLength);\r\n                break;\r\n            }\r\n            case 'pattern': {\r\n                message = vStrings.Pattern.format.format(this.fieldName, alert.requiredPattern);\r\n                break;\r\n            }\r\n            default: {\r\n                break;\r\n            }\r\n        }\r\n\r\n        if (MsftSme.isNullOrWhiteSpace(message)) {\r\n            return null;\r\n        }\r\n\r\n        let valid = false;\r\n        let severity = ValidationAlertSeverity.Error;\r\n\r\n        if (!MsftSme.isNullOrWhiteSpace(alert)) {\r\n            // merge alert properties if they exist\r\n            valid = !!alert.valid;\r\n            severity = MsftSme.isNullOrUndefined(alert.severity) ? severity : alert.severity;\r\n            message = MsftSme.isNullOrUndefined(alert.message) ? message : alert.message;\r\n        }\r\n\r\n        return {\r\n            valid: valid,\r\n            severity: severity,\r\n            message: message\r\n        };\r\n    }\r\n\r\n    /**\r\n     * In some cases, we need a combined version of the label and description so that the screen read can read it appropriately.\r\n     * Common cases for this are when using role=\"group\" or role=\"radioGroup\" because they does not support aria-describedby\r\n     * we achieve the same effect by splitting the description and and label with a '.' (period)\"\r\n     * TODO: verify how this localizes or find a better way.\r\n     */\r\n    protected getMergedDescriptionLabel(): string {\r\n        if (MsftSme.isNullOrWhiteSpace(this.description)) {\r\n            return this.label || '';\r\n        }\r\n        if (MsftSme.isNullOrWhiteSpace(this.label)) {\r\n            return this.description || '';\r\n        }\r\n\r\n        return `${this.label}. ${this.description}`;\r\n    }\r\n}\r\n\r\n/**\r\n * Internal base component for SME for fields. It simply removes the need to supply the string type parameter to FormFieldComponent\r\n * This class is exported from this file, but not meant to be exported from index.ts bundles.\r\n */\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class SmeInternalFormFieldComponent<TModel> extends FormFieldComponent<Strings, TModel> {\r\n    // Should Remain Empty.\r\n}\r\n","import {\r\n    Component, ComponentFactoryResolver, ComponentRef, Directive, ElementRef,\r\n    EventEmitter, Input, OnInit, Optional, Output, QueryList, SkipSelf, ViewChild, ViewChildren, ViewContainerRef\r\n} from '@angular/core';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { Strings } from '../../generated/strings';\r\nimport { FormFieldComponent } from '../form/form-field/form-field.component';\r\nimport {\r\n    SchemaArrayProperty, SchemaFieldContext,\r\n    SchemaObjectProperty, SchemaPrimitiveType, SchemaProperty\r\n} from '../schema/schema-models';\r\nimport { SchemaDataTypeStore } from '../schema/schema-store';\r\n\r\n/**\r\n * Schema Form Component\r\n * It takes the schema and data and other necessary inputs then dynamically renders the form UI.\r\n */\r\n@Component({\r\n    selector: 'sme-schema-field-host',\r\n    templateUrl: './schema-field-host.component.html'\r\n})\r\nexport class SchemaFieldHostComponent implements OnInit {\r\n    private isInitialized = false;\r\n    private internalData: any;\r\n    private internalPropertySchema: SchemaProperty;\r\n\r\n    private loaderComponentRef: ComponentRef<any>;\r\n\r\n    @ViewChild('fieldHost', { read: ViewContainerRef, static: true })\r\n    private fieldHost: ViewContainerRef;\r\n\r\n    private dataTypeStore = new SchemaDataTypeStore();\r\n\r\n    @Input()\r\n    public context: SchemaFieldContext;\r\n\r\n    @Output()\r\n    public formActionExecuted: EventEmitter<{ action: string, data: any }> = new EventEmitter<{ action: string, data: any }>();\r\n\r\n    @Input()\r\n    public get propertySchema(): SchemaProperty {\r\n        return this.internalPropertySchema;\r\n    }\r\n    public set propertySchema(value: SchemaProperty) {\r\n        this.internalPropertySchema = value;\r\n        if (this.isInitialized) {\r\n            /* if (this.loaderComponentRef) {\r\n                this.loaderComponentRef.instance.propertySchema = this.propertySchema;\r\n            } */\r\n\r\n            this.renderLoaderComponent();\r\n        }\r\n    }\r\n\r\n    @Input()\r\n    public get data(): any {\r\n        return this.internalData;\r\n    }\r\n    public set data(value: any) {\r\n        const isChanged = this.internalData === value;\r\n        this.internalData = value;\r\n        if (this.isInitialized) {\r\n            this.dataChange.emit(value);\r\n            if (this.loaderComponentRef) {\r\n                this.loaderComponentRef.instance.data = this.data;\r\n                this.loaderComponentRef.instance.context.formData = this.context.formData;\r\n            }\r\n        }\r\n        if (isChanged && this.isDirty()) {\r\n            this.executeFormAction('data change', { field: this.propertySchema.name, value: value });\r\n        }\r\n    }\r\n    @Output()\r\n    public dataChange = new EventEmitter<any>();\r\n\r\n    @Output()\r\n    public dataMarkedAsDirty: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    constructor(private elementRef: ElementRef, private viewContainer: ViewContainerRef,\r\n        private componentFactoryResolver: ComponentFactoryResolver, @SkipSelf() @Optional() private parent: SchemaFieldHostComponent) {\r\n        this.elementRef.nativeElement.classList.add('sme-schema-field-host');\r\n        this.elementRef.nativeElement.classList.add('sme-layout-block');\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.renderLoaderComponent();\r\n        this.isInitialized = true;\r\n    }\r\n\r\n    public isValid(): boolean {\r\n        return (<SchemaFieldLoaderComponentBase>this.loaderComponentRef.instance).isValid();\r\n    }\r\n\r\n    public isDirty(): boolean {\r\n        return this.loaderComponentRef && (<SchemaFieldLoaderComponentBase>this.loaderComponentRef.instance).isDirty();\r\n    }\r\n    public markAsPristine(): void {\r\n        (<SchemaFieldLoaderComponentBase>this.loaderComponentRef.instance).markAsPristine();\r\n    }\r\n    public executeFormAction(action: string, data: any): void {\r\n        if (!this.parent) {\r\n            this.formActionExecuted.emit({ action: action, data: data });\r\n        } else {\r\n            let parent = this.parent;\r\n            while (parent.parent) {\r\n                parent = parent.parent;\r\n            }\r\n            parent.formActionExecuted.emit({ action: action, data: data });\r\n        }\r\n    }\r\n    public getFormFieldLoaderComponent(): SchemaFieldLoaderComponentBase {\r\n        return this.loaderComponentRef && this.loaderComponentRef.instance;\r\n    }\r\n\r\n    private renderLoaderComponent() {\r\n        let type = this.propertySchema.type;\r\n        let format = this.propertySchema.format;\r\n        if (MsftSme.isNullOrUndefined(type)) {\r\n            type = SchemaPrimitiveType.Object;\r\n            if (!format) {\r\n                format = 'basic-form';\r\n            }\r\n        }\r\n        if (!format) {\r\n            const allRegistrations = this.dataTypeStore.getAllRegistrations();\r\n            allRegistrations.forEach(item => {\r\n                if (item.type === type && item.isDefaultFormat) {\r\n                    format = item.format;\r\n                }\r\n            });\r\n        }\r\n        const registration = this.dataTypeStore.getDataTypeRegistration(type, format);\r\n        if (registration) {\r\n            const componentFactory = this.componentFactoryResolver.resolveComponentFactory(registration.loaderComponent);\r\n            const viewContainerRef = this.fieldHost;\r\n            viewContainerRef.clear();\r\n            this.loaderComponentRef = viewContainerRef.createComponent(componentFactory);\r\n            this.loaderComponentRef.instance.propertySchema = this.propertySchema;\r\n            this.loaderComponentRef.instance.data = this.data;\r\n            this.loaderComponentRef.instance.context = { ...this.context };\r\n            if (this.parent) {\r\n                this.loaderComponentRef.instance.context.parentData = this.parent.data;\r\n            }\r\n            this.loaderComponentRef.instance.parentSchemaFieldHostComponent = this;\r\n            if (!!this.loaderComponentRef.instance.dataChange) {\r\n                this.loaderComponentRef.instance.dataChange.subscribe(data => {\r\n                    this.internalData = data;\r\n                    this.dataChange.emit(data);\r\n                });\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport class SchemaFieldLoaderComponentBase implements OnInit {\r\n    public static resourceKeyPrefix = 'resources:strings:';\r\n    public static resourceActualTextPrefix = 'actual_string:';\r\n\r\n    private static localizationCache: { [key: string]: string } = {};\r\n\r\n    private shouldStartToApplyAsyncValidator = false;\r\n\r\n    private strings: Strings = MsftSme.getStrings<Strings>();\r\n\r\n    private badExpressions: string[] = [];\r\n\r\n    private internalData: any;\r\n    private internalContext: SchemaFieldContext;\r\n\r\n    @ViewChild('field')\r\n    public formFieldComponent: FormFieldComponent<Strings, any>;\r\n\r\n    @Input()\r\n    public get data(): any {\r\n        return this.internalData;\r\n    }\r\n    public set data(value: any) {\r\n        this.internalData = value;\r\n        this.dataChange.emit(value);\r\n    }\r\n\r\n    @Output()\r\n    public dataChange = new EventEmitter<any>();\r\n\r\n    @Output()\r\n    public formActionExecuted: EventEmitter<{ action: string, data: any }> = new EventEmitter<{ action: string, data: any }>();\r\n\r\n    public parentSchemaFieldHostComponent: SchemaFieldHostComponent;\r\n\r\n    public get context(): SchemaFieldContext {\r\n        return this.internalContext;\r\n    }\r\n    public set context(value: SchemaFieldContext) {\r\n        this.internalContext = value;\r\n    }\r\n\r\n    public ngOnInit() {\r\n        setTimeout(() => {\r\n            this.shouldStartToApplyAsyncValidator = true;\r\n        });\r\n    }\r\n\r\n    public isValid(): boolean {\r\n        return this.formFieldComponent && (this.formFieldComponent.disabled || this.formFieldComponent.isValid());\r\n    }\r\n\r\n    public shouldCustomAsyncValidationBeDisabled(): boolean {\r\n        return !(this.shouldStartToApplyAsyncValidator\r\n            && this.parentSchemaFieldHostComponent.propertySchema.customAsyncValidation\r\n            && this.parentSchemaFieldHostComponent.propertySchema.customAsyncValidation.handler);\r\n    }\r\n\r\n    public isDirty(): boolean {\r\n        return this.formFieldComponent && this.formFieldComponent.isDirty();\r\n    }\r\n    public markAsPristine(): void {\r\n        if (this.formFieldComponent) {\r\n            this.formFieldComponent.markAsPristine();\r\n        }\r\n    }\r\n    public evalExpression(expression: string): any {\r\n        let result: any;\r\n        if (expression) {\r\n            if (this.badExpressions.indexOf(expression) === -1) {\r\n                try {\r\n                    const caller = this.resolveComponentMember(expression.substring(0, expression.lastIndexOf('.')));\r\n                    const expressionFunction: (context: SchemaFieldContext) => void = this.resolveComponentMember(expression);\r\n\r\n                    if (caller && expressionFunction) {\r\n                        result = expressionFunction.call(caller, this.context);\r\n                    } else {\r\n                        if (expression === 'true') {\r\n                            result = true;\r\n                        }\r\n                    }\r\n                } catch (e) {\r\n                    // eslint-disable-next-line no-console\r\n                    console.error(e);\r\n                    if (this.badExpressions.indexOf(expression) === -1) {\r\n                        this.badExpressions.push(expression);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n\r\n    /**\r\n     * It resolves the object properties based on the given path with multiple levels of properties.\r\n     * An example of path is \"location.zipCode\".\r\n     */\r\n    public resolveComponentMember(path: string): any {\r\n        if (path) {\r\n            if (path.indexOf('formData') === 0 || path.indexOf('formController') === 0 || path.indexOf('parentData') === 0) {\r\n                path = 'context.' + path;\r\n            }\r\n\r\n            const obj = this;\r\n            const pathSegments: string[] = path.split('.');\r\n            if (pathSegments.length === 1) {\r\n                return obj[path];\r\n            }\r\n\r\n            let currentObj = obj;\r\n            for (let i = 0; i < pathSegments.length; i++) {\r\n                currentObj = currentObj[pathSegments[i]];\r\n                if (currentObj === undefined || currentObj === null) {\r\n                    break;\r\n                }\r\n            }\r\n            return currentObj;\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    public resolveFunction(path: string): Function {\r\n        const defaultFunction = () => {\r\n            // Do nothing by default.\r\n        };\r\n\r\n        let resolvedFunction: Function;\r\n\r\n        if (this.badExpressions.indexOf(path) === -1) {\r\n            if (path) {\r\n                const owner = this.resolveComponentMember(path.substring(0, path.lastIndexOf('.')));\r\n                if (owner) {\r\n                    resolvedFunction = this.resolveComponentMember(path).bind(owner);\r\n                } else {\r\n                    this.badExpressions.push(path);\r\n                    Logging.log({\r\n                        level: LogLevel.Error,\r\n                        message: 'Resolve Function Error',\r\n                        params: {\r\n                            string: path\r\n                        },\r\n                        source: 'SchemaFieldLoaderComponentBase.resolveFunction'\r\n                    });\r\n                }\r\n            }\r\n        }\r\n\r\n        return resolvedFunction || defaultFunction;\r\n    }\r\n\r\n    public localize(text: string): string {\r\n        let result = '';\r\n        if (text) {\r\n            const cacheData = SchemaFieldLoaderComponentBase.localizationCache[text];\r\n            if (cacheData) {\r\n                result = cacheData;\r\n            } else {\r\n                if (text.indexOf(SchemaFieldLoaderComponentBase.resourceKeyPrefix) === 0) {\r\n                    const path = 'strings.' + text.substring(SchemaFieldLoaderComponentBase.resourceKeyPrefix.length);\r\n                    result = this.resolveComponentMember(path);\r\n                } else if (text.indexOf(SchemaFieldLoaderComponentBase.resourceActualTextPrefix) === 0) {\r\n                    result = text.substring(SchemaFieldLoaderComponentBase.resourceActualTextPrefix.length);\r\n                }\r\n                if (!result) {\r\n                    result = '[Failed to find localized string: ' + text + ']';\r\n\r\n                    Logging.log({\r\n                        level: LogLevel.Error,\r\n                        message: result,\r\n                        params: {\r\n                            string: text\r\n                        },\r\n                        source: 'SchemaFieldLoaderComponentBase Localization Error: ' + text\r\n                    });\r\n                }\r\n\r\n                SchemaFieldLoaderComponentBase.localizationCache[text] = result;\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n\r\n    public executeFormAction(action: string, data?: any) {\r\n        this.parentSchemaFieldHostComponent.formActionExecuted.emit({ action: action, data: data });\r\n    }\r\n}\r\n\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport class SimplePropertySchemaFieldLoaderComponent extends SchemaFieldLoaderComponentBase {\r\n    @Input()\r\n    public propertySchema: SchemaProperty;\r\n}\r\n\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport class ObjectPropertySchemaFieldLoaderComponent extends SchemaFieldLoaderComponentBase {\r\n    @ViewChildren(SchemaFieldHostComponent)\r\n    protected fieldHostComponents: QueryList<SchemaFieldHostComponent>;\r\n\r\n    @Input()\r\n    public propertySchema: SchemaObjectProperty;\r\n\r\n    public isValid(): boolean {\r\n        let result = true;\r\n        if (!(!this.propertySchema.format || this.propertySchema.format === 'default' || !this.propertySchema.type)) {\r\n            result = super.isValid();\r\n        }\r\n\r\n        if (this.fieldHostComponents) {\r\n            const fieldHostComponents = this.fieldHostComponents.toArray();\r\n            if (result) {\r\n                for (let i = 0; i < fieldHostComponents.length; i++) {\r\n                    if (!fieldHostComponents[i].isValid()) {\r\n                        result = false;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    public isDirty(): boolean {\r\n        let result = false;\r\n        if (!(!this.propertySchema.format || this.propertySchema.format === 'default' || this.propertySchema.format === 'tabbed-form')) {\r\n            result = super.isDirty();\r\n        }\r\n        const fieldHostComponents = this.fieldHostComponents.toArray();\r\n        if (!result) {\r\n            for (let i = 0; i < fieldHostComponents.length; i++) {\r\n                if (fieldHostComponents[i].isDirty()) {\r\n                    result = true;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    public markAsPristine(): void {\r\n        super.markAsPristine();\r\n        const fieldHostComponents = this.fieldHostComponents.toArray();\r\n        if (fieldHostComponents) {\r\n            for (let i = 0; i < fieldHostComponents.length; i++) {\r\n                fieldHostComponents[i].markAsPristine();\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport class ArrayPropertySchemaFieldLoaderComponent extends SchemaFieldLoaderComponentBase {\r\n    private internalFieldHostComponents: QueryList<SchemaFieldHostComponent>;\r\n    @ViewChildren(SchemaFieldHostComponent)\r\n    private set fieldHostComponents(value: QueryList<SchemaFieldHostComponent>) {\r\n        this.internalFieldHostComponents = value;\r\n    }\r\n\r\n    @Input()\r\n    public propertySchema: SchemaArrayProperty;\r\n\r\n    public isValid(): boolean {\r\n        let result = super.isValid();\r\n\r\n        if (result) {\r\n            const fieldHostComponents = this.internalFieldHostComponents.toArray();\r\n            for (let i = 0; i < fieldHostComponents.length; i++) {\r\n                if (!fieldHostComponents[i].isValid()) {\r\n                    result = false;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    public isDirty(): boolean {\r\n        let result = super.isDirty();\r\n        if (!result) {\r\n            const fieldHostComponents = this.internalFieldHostComponents.toArray();\r\n            for (let i = 0; i < fieldHostComponents.length; i++) {\r\n                if (fieldHostComponents[i].isDirty()) {\r\n                    result = true;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    public markAsPristine(): void {\r\n        super.markAsPristine();\r\n        const fieldHostComponents = this.fieldHostComponents.toArray();\r\n        if (fieldHostComponents) {\r\n            for (let i = 0; i < fieldHostComponents.length; i++) {\r\n                fieldHostComponents[i].markAsPristine();\r\n            }\r\n        }\r\n    }\r\n}\r\n","<div #fieldHost></div>","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\nexport type FormFieldTemplateType = 'display' | 'subForm';\r\n\r\n@Directive({\r\n    selector: '[smeFormFieldTemplate]'\r\n})\r\nexport class FormFieldTemplateDirective {\r\n    @Input()\r\n    public type: FormFieldTemplateType;\r\n\r\n    constructor(public templateRef: TemplateRef<any>) {\r\n        this.type = 'subForm';\r\n    }\r\n}\r\n","import { Component, ContentChild, ContentChildren, Input, QueryList, TemplateRef } from '@angular/core';\r\nimport { FormFieldTemplateDirective } from '../form-field-template.directive';\r\n\r\n/**\r\n * Defines a generic option for control types that display multiple options.\r\n * These include, radio, checklist, multiselect, select, etc...\r\n * The current implementation is pretty basic, but could be extended to support a variety of features\r\n */\r\n@Component({\r\n    selector: 'sme-option',\r\n    template: ''\r\n})\r\nexport class FormFieldOptionComponent {\r\n\r\n    public get resolvedTooltipTemplate(): TemplateRef<any> {\r\n        return this.tooltipTemplate;\r\n    }\r\n\r\n    public get resolvedTitle(): string {\r\n        if (this.tooltipTemplate) {\r\n            return null;\r\n        }\r\n        return this.label;\r\n    }\r\n\r\n    /**\r\n     * Show info icon and tooltip information?\r\n     */\r\n    public get showInfoBubble(): boolean {\r\n        return !!this.resolvedTooltipTemplate || !!this.tooltip;\r\n    }\r\n\r\n    /**\r\n     * The id of this option used for UI test automation.\r\n     */\r\n    @Input()\r\n    public utaId: string;\r\n\r\n    /**\r\n     * The value of this option.\r\n     */\r\n    @Input()\r\n    public value: any;\r\n\r\n    /**\r\n     * The label of this option.\r\n     */\r\n    @Input()\r\n    public label: string;\r\n\r\n    /**\r\n     * The description of this option.\r\n     */\r\n    @Input()\r\n    public description: string;\r\n\r\n    /**\r\n     * Indicates if this option is disabled.\r\n     */\r\n    @Input()\r\n    public disabled: boolean;\r\n\r\n    /**\r\n     * Indicates if this option is hidden.\r\n     */\r\n    @Input()\r\n    public hidden: boolean;\r\n\r\n    @ContentChildren(FormFieldTemplateDirective)\r\n    private allTemplates: QueryList<FormFieldTemplateDirective>;\r\n\r\n    @ContentChild(TemplateRef)\r\n    private defaultSubFormTemplate: TemplateRef<any>;\r\n\r\n    /**\r\n     * Indicates if this option is selected\r\n     */\r\n    public isSelected: boolean;\r\n\r\n    @Input()\r\n    public tooltip?: string;\r\n\r\n    /**\r\n     * If provided, renders a custom tooltip for this field\r\n     */\r\n    @Input()\r\n    public tooltipTemplate: TemplateRef<any>;\r\n\r\n    /**\r\n     * Provides binding context for the tooltip\r\n     */\r\n    @Input()\r\n    public tooltipContext: any;\r\n\r\n    /**\r\n     * The template that's displayed for the option. Intended use is to define how option should look like in 'tile' radio group.\r\n     */\r\n    public get displayTemplate(): TemplateRef<any> {\r\n        if (MsftSme.isNullOrUndefined(this.allTemplates) || this.allTemplates.length === 0) {\r\n            return null;\r\n        }\r\n\r\n        const res = this.allTemplates.find(template => template.type === 'display');\r\n        return MsftSme.isNullOrUndefined(res) ? null : res.templateRef;\r\n    }\r\n\r\n    /**\r\n     * The template ref of the option's subform. The way this template ref is used varies form control to control\r\n     */\r\n    public get subFormTemplate(): TemplateRef<any> {\r\n        if (MsftSme.isNullOrUndefined(this.allTemplates) || this.allTemplates.length === 0) {\r\n            return this.defaultSubFormTemplate;\r\n        }\r\n\r\n        if (MsftSme.isNullOrUndefined(this.displayTemplate)) {\r\n            return this.allTemplates.first.templateRef;\r\n        }\r\n\r\n        const res = this.allTemplates.find(template => template.type !== 'display');\r\n        return MsftSme.isNullOrUndefined(res) ? null : res.templateRef;\r\n    }\r\n\r\n    /**\r\n     * Converts this instance to its string representation\r\n     */\r\n    public toString() {\r\n        return this.label || `${this.value}`;\r\n    }\r\n}\r\n","import {\r\n    AfterContentInit,\r\n    ContentChildren,\r\n    Directive,\r\n    Injector,\r\n    Input,\r\n    OnInit,\r\n    QueryList\r\n} from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Strings } from '../../../../generated/strings';\r\nimport { FormFieldComponent } from '../form-field.component';\r\nimport { FormFieldOptionComponent } from './form-field-option.component';\r\n\r\ntype OptionsFormFieldTrackBy = 'index' | 'value' | 'label' | 'default';\r\n\r\n/**\r\n * Defines a base class form form field components with options\r\n */\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class OptionsFormFieldComponent<TStrings, TModel>\r\n    extends FormFieldComponent<TStrings, TModel>\r\n    implements OnInit, AfterContentInit {\r\n\r\n    /**\r\n     * Indicates if multiple option selection is supported\r\n     */\r\n    public abstract multiple: boolean;\r\n\r\n    /**\r\n     * Sets the comparator function to determined complex object equality of option.value and values\r\n     * Defaults to '===' object equality. Meaning that value is always a literal subset of all the option.value's.\r\n     */\r\n    @Input()\r\n    public valueComparator: MsftSme.Func2<TModel, TModel, boolean>;\r\n\r\n    /**\r\n     * Indicates if the select all option should be shown in multi-select mode\r\n     */\r\n    @Input()\r\n    public showSelectAll: boolean;\r\n\r\n    /**\r\n     * Indicates the mode to track options by\r\n     */\r\n    @Input()\r\n    public trackBy: OptionsFormFieldTrackBy;\r\n\r\n    /**\r\n     * The options for this control.\r\n     */\r\n    @ContentChildren(FormFieldOptionComponent)\r\n    public options = new QueryList<FormFieldOptionComponent>();\r\n\r\n    /**\r\n     * The options for this control.\r\n     */\r\n    public selectedOptions: FormFieldOptionComponent[];\r\n\r\n    /**\r\n     * The options for this control.\r\n     */\r\n    public selectedOptionsDisplayValue: string;\r\n\r\n    /**\r\n     * indicates if all options are selected\r\n     */\r\n    public get isAllOptionsSelected(): boolean {\r\n        return this.selectedOptions && this.options\r\n            && this.selectedOptions.length === this.options.filter(option => !option.disabled).length;\r\n    }\r\n\r\n    /**\r\n     * indicates if some options are selected\r\n     */\r\n    public get isSomeOptionsSelected(): boolean {\r\n        return this.selectedOptions && this.selectedOptions.length > 0;\r\n    }\r\n\r\n    /**\r\n     * The current keyCodes for autocompletion\r\n     */\r\n    private autoCompleteKeyCodes: number[];\r\n\r\n    /**\r\n     * the Filtered options specifically using for combobox with option filters\r\n     */\r\n    public optionsFiltered: QueryList<FormFieldOptionComponent>;\r\n\r\n    /**\r\n     * indicates whether the combobox has option filters\r\n     */\r\n    @Input()\r\n    public searchable: boolean;\r\n\r\n    /**\r\n     * indicates the search string for filtering options\r\n     */\r\n    public get searchString(): string {\r\n        return this.searchStringInternal;\r\n    }\r\n\r\n    public set searchString(value: string) {\r\n        // ensure only actual changes are processed\r\n        if (value !== this.searchStringInternal) {\r\n            this.searchStringInternal = value;\r\n            this.filterOptionBySearchString();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * indicates the internal search string\r\n     */\r\n    private searchStringInternal: string;\r\n    /**\r\n     * Initializes a new instance of the OptionsFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n        this.trackBy = 'value';\r\n        this.showSelectAll = true;\r\n        this.selectedOptions = [];\r\n        this.selectedOptionsDisplayValue = '';\r\n        this.searchStringInternal = '';\r\n        this.searchable = false;\r\n        this.optionsFiltered = new QueryList<FormFieldOptionComponent>();\r\n        this.optionsFiltered.reset(new Array());\r\n        this.valueComparator = (a, b) => a === b;\r\n    }\r\n\r\n    /**\r\n     * Implementation of Angular OnInit interface\r\n     */\r\n    public ngOnInit() {\r\n        super.ngOnInit();\r\n        this.syncSelectionChanged(this.value);\r\n    }\r\n\r\n    /**\r\n     * Implementation of Angular AfterContentInit interface\r\n     */\r\n    public ngAfterContentInit() {\r\n        super.ngAfterContentInit();\r\n        this.syncSelectionChanged(this.value);\r\n        this.subscriptions.push(this.options.changes.subscribe(() => this.syncSelectionChanged(this.value)));\r\n    }\r\n\r\n    /**\r\n     * Gets the option display string for a given value\r\n     * @param value The value to get a display string for\r\n     */\r\n    public getValueDisplayString(value: TModel): string {\r\n        const valueOption = MsftSme.find(this.options.toArray(), option => this.valueComparator(option.value, value));\r\n        if (!MsftSme.isNullOrUndefined(valueOption)) {\r\n            return valueOption.toString();\r\n        } else if (MsftSme.isNullOrUndefined(value)) {\r\n            return '';\r\n        } else {\r\n            return value.toString();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Selects an option.\r\n     */\r\n    public toggleOption(option: FormFieldOptionComponent, select: boolean): boolean {\r\n        if (this.loadingOrDisabled || option.disabled) {\r\n            return false;\r\n        }\r\n        let value: any = this.value;\r\n        if (option.isSelected === select) {\r\n            return true;\r\n        }\r\n\r\n        if (select) {\r\n            if (this.multiple) {\r\n                if (!Array.isArray(value)) {\r\n                    value = <any>[option.value];\r\n                } else {\r\n                    value = <any>[...value, option.value];\r\n                }\r\n            } else {\r\n                value = option.value;\r\n            }\r\n        } else {\r\n            if (this.multiple) {\r\n                if (!Array.isArray(value)) {\r\n                    value = <any>[];\r\n                } else {\r\n                    value = [...value];\r\n                    MsftSme.remove(value, option.value);\r\n                }\r\n            } else {\r\n                value = null;\r\n            }\r\n        }\r\n\r\n        this.value = value;\r\n        this.syncSelectionChanged(this.value);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * Gets the selected option index (always -1 in multiple selection mode)\r\n     */\r\n    public getSelectedIndex(): number {\r\n        if (this.multiple) {\r\n            // moving selection is not supported in multi select mode\r\n            return -1;\r\n        }\r\n\r\n        let index = -1;\r\n        const options = this.options.toArray();\r\n\r\n        for (let i = 0; i < options.length; i++) {\r\n            const option = options[i];\r\n            if (option.value === this.value) {\r\n                index = i;\r\n                break;\r\n            }\r\n        }\r\n\r\n        return index;\r\n    }\r\n\r\n    /**\r\n     * Selects/Deselects an option by its index\r\n     */\r\n    public toggleOptionByIndex(index: number, select = true): boolean {\r\n        if (index < 0 || index >= this.options.length) {\r\n            return false;\r\n        }\r\n\r\n        const option = this.options.toArray()[index];\r\n        return this.toggleOption(option, select);\r\n    }\r\n\r\n    /**\r\n     * Selects the next option.\r\n     * @returns a boolean indicating if the select was successful\r\n     */\r\n    public selectNextOption(): boolean {\r\n        for (let i = this.getSelectedIndex() + 1; i < this.options.length; i++) {\r\n            if (this.toggleOptionByIndex(i)) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Selects the previous option.\r\n     * @returns a boolean indicating if the select was successful\r\n     */\r\n    public selectPreviousOption(): boolean {\r\n        for (let i = this.getSelectedIndex() - 1; i >= 0; i--) {\r\n            if (this.toggleOptionByIndex(i)) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Selects or deselects all options\r\n     * @returns a boolean indicating if the select was successful\r\n     */\r\n    public toggleAllOptions(select: boolean = !this.isAllOptionsSelected): boolean {\r\n        if (this.isAllOptionsSelected === select) {\r\n            return true;\r\n        }\r\n        return select ? this.selectAllOptions() : this.clearAllOptions();\r\n    }\r\n\r\n    /**\r\n     * Selects all options. Only allowed in multiple select mode\r\n     * @returns a boolean indicating if the select was successful\r\n     */\r\n    public selectAllOptions() {\r\n        if (!this.multiple) {\r\n            // select all is not supported in single select mode\r\n            return false;\r\n        }\r\n\r\n        this.value = <any>this.options.reduce((enabledValues, current) => {\r\n            if (current && !current.disabled) {\r\n                enabledValues.push(current.value);\r\n            }\r\n            return enabledValues;\r\n        }, []);\r\n\r\n        this.syncSelectionChanged(this.value);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * Clears all options. Only allowed in multiple select mode\r\n     * @returns a boolean indicating if the unselect was successful\r\n     */\r\n    public clearAllOptions() {\r\n        if (!this.multiple) {\r\n            // select all is not supported in single select mode\r\n            return false;\r\n        }\r\n\r\n        this.value = <any>[];\r\n        this.syncSelectionChanged(this.value);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     *\r\n     */\r\n    public trackOption(index: number, option: FormFieldOptionComponent) {\r\n        switch (this.trackBy) {\r\n            case 'value': { return option.value; }\r\n            case 'label': { return option.label; }\r\n            case 'index': { return index; }\r\n            default: {\r\n                return option;\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Adds a keycode from KeyPress event to the autocomplete processor\r\n     */\r\n    protected progressiveAutoComplete(keyCode: number): void {\r\n        if (this.multiple) {\r\n            // autoComplete is not supported in single select mode\r\n            return;\r\n        }\r\n        if (!this.autoCompleteKeyCodes) {\r\n            this.autoCompleteKeyCodes = [];\r\n        }\r\n        this.autoCompleteKeyCodes.push(keyCode);\r\n        this.processAutoComplete();\r\n    }\r\n\r\n    /**\r\n     * Selects an option by the keys entered. Only allowed in single select mode\r\n     */\r\n    @Debounce()\r\n    private processAutoComplete(): void {\r\n        const autoCompleteString = String.fromCharCode(...this.autoCompleteKeyCodes).toLocaleLowerCase();\r\n        const options = this.options.toArray();\r\n        const optionToSelect = MsftSme.find(options, (option) => {\r\n            const optionDisplayString = option.toString();\r\n            return optionDisplayString.startsWith(autoCompleteString);\r\n        });\r\n        if (!!optionToSelect) {\r\n            this.value = optionToSelect.value;\r\n            this.syncSelectionChanged(this.value);\r\n        }\r\n        this.autoCompleteKeyCodes = [];\r\n    }\r\n\r\n    /**\r\n     * Occurs whenever the internal value of this form control changes\r\n     */\r\n    protected onValueChanged(value: TModel) {\r\n        super.onValueChanged(value);\r\n        this.syncSelectionChanged(value);\r\n    }\r\n\r\n    /**\r\n     * Synchronizes the displayed and selected options with the actual form control value\r\n     */\r\n    protected syncSelectionChanged(value: TModel) {\r\n        this.selectedOptions = [];\r\n        this.selectedOptionsDisplayValue = '';\r\n\r\n        if (!this.options) {\r\n            return;\r\n        }\r\n\r\n        if (this.searchable) {\r\n            this.filterOptionBySearchString();\r\n            if (!this.optionsFiltered) {\r\n                return;\r\n            }\r\n        }\r\n        // Match our selected options with the current value\r\n        this.options.forEach(option => {\r\n            option.isSelected = this.multiple\r\n                ? (Array.isArray(value) && value.some(v => this.valueComparator(v, option.value)))\r\n                : this.valueComparator(value, option.value);\r\n            if (option.isSelected) {\r\n                this.selectedOptions.push(option);\r\n            }\r\n        });\r\n        this.selectedOptionsDisplayValue = this.selectedOptions.map(o => o.toString()).join(', ');\r\n    }\r\n    /**\r\n     * Base function for filter options by search string, will be called only if searchable to true\r\n     */\r\n    protected filterOptionBySearchString() {\r\n        const searchString = this.searchString.toString().toLocaleLowerCase();\r\n        if (this.optionsFiltered) {\r\n            this.optionsFiltered.reset(this.options.toArray().filter((option) => {\r\n                return option.label.toString().toLocaleLowerCase().includes(searchString);\r\n            }));\r\n        }\r\n    }\r\n}\r\n\r\n/**\r\n * Internal base component for SME form fields with options.\r\n * It simply removes the need to supply the string type parameter to FormFieldComponent\r\n * This class is exported from this file, but not meant to be exported from index.ts bundles.\r\n */\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class SmeInternalOptionsFormFieldComponent<TModel> extends OptionsFormFieldComponent<Strings, TModel> {\r\n\r\n    /**\r\n     * Indicates if the select all option should be shown in multi-select mode\r\n     */\r\n    @Input()\r\n    public selectAllLabel: string;\r\n\r\n    /**\r\n     * assigns an Id to select all option for dropdowns\r\n     */\r\n    @Input()\r\n    public selectAllUtaId: string;\r\n\r\n    /**\r\n     * Internal class for sme options controls\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.selectAllLabel = this.strings.MsftSmeShell.Angular.Form.Common.SelectAll.label;\r\n    }\r\n}\r\n","import { Component, Input, OnChanges, ViewContainerRef } from '@angular/core';\r\nimport { TemplateContext, TemplateLoaderBaseComponent } from '../../../common/template-loader-base.component';\r\nimport { FormFieldOptionComponent } from './form-field-option.component';\r\n\r\nexport interface FormFieldOptionSubFormTemplateContext extends TemplateContext<FormFieldOptionComponent> {\r\n    optionIndex: number;\r\n}\r\n\r\n@Component({\r\n    selector: 'sme-option-template-loader',\r\n    template: ''\r\n})\r\nexport class FormFieldOptionSubFormTemplateLoaderComponent\r\n    extends TemplateLoaderBaseComponent<FormFieldOptionComponent, FormFieldOptionSubFormTemplateContext>\r\n    implements OnChanges {\r\n\r\n    /**\r\n     * The index of the row for this template\r\n     */\r\n    @Input()\r\n    public optionIndex: number;\r\n\r\n    /**\r\n     * Instantiates a new instance of FormFieldOptionSubFormTemplateLoaderComponent\r\n     * @param viewContainer the reference to this elements view container\r\n     */\r\n    constructor(viewContainer: ViewContainerRef) {\r\n        super(viewContainer);\r\n    }\r\n\r\n    /**\r\n     * Creates the context for our embeded view\r\n     */\r\n    protected createContext(): FormFieldOptionSubFormTemplateContext {\r\n        return {\r\n            $implicit: this.data,\r\n            optionIndex: this.optionIndex\r\n        };\r\n    }\r\n}\r\n","<sme-loading-wheel size=\"small\" *ngIf=\"isPending\" [isBackgroundTransparent]=\"true\"\r\n    class=\"sme-layout-relative sme-layout-inline-block sme-width-lg sme-margin-right-xs\"></sme-loading-wheel>\r\n\r\n<div *ngIf=\"hasAlert\" [attr.role]=\"useRoleAlert\" [attr.aria-labelledby]=\"idBag.alertType + ' ' + idBag.alertMessage\" class=\"sme-arrange-stack-inline\">\r\n    <span class=\"sme-alert-icon sme-icon sme-icon-size-xs\" [class]=\"alertClass\" aria-hidden=\"true\"></span>\r\n    <span [attr.id]=\"idBag.alertType\" class=\"sme-screen-reader\">{{alertType}}</span>\r\n    <span [attr.id]=\"idBag.alertMessage\" *ngIf=\"!isMarkdownMessage\">{{message}}</span>\r\n    <p [attr.id]=\"idBag.alertMessage\" *ngIf=\"isMarkdownMessage\" [smeMarkdown]=\"message\"></p>\r\n</div>","import { Component, HostBinding, Injector, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { CoreBaseComponent } from '../../common/base.component';\r\nimport { ValidationAlert, ValidationAlertSeverity } from './validation-alert';\r\n\r\n/**\r\n * Component for displaying a form validation alert.\r\n * Alerts are not necessarily errors, they can display other types of\r\n * information that the user should know about a value they entered into a form field\r\n */\r\n@Component({\r\n    selector: 'sme-validation-alert, sme-alert',\r\n    templateUrl: './validation-alert.component.html'\r\n})\r\nexport class ValidationAlertComponent extends CoreBaseComponent implements OnInit, OnChanges {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'ValidationAlertComponent';\r\n    }\r\n    /**\r\n     * Optionally show background color for the alert.\r\n     */\r\n    @HostBinding('class.sme-alert-background')\r\n    @Input()\r\n    public showBackground = false;\r\n\r\n    /**\r\n     * The alert Validation alert we need to display.\r\n     */\r\n    @Input()\r\n    public alert: ValidationAlert;\r\n\r\n    /**\r\n     * The default role for the alert\r\n     */\r\n    @Input()\r\n    public role = 'alert';\r\n\r\n    /**\r\n     * The icon class to use for the alert\r\n     */\r\n    public iconClass: string = null;\r\n\r\n    /**\r\n     * Indicates the value to use for the 'role' attribute\r\n     */\r\n    public get useRoleAlert(): string {\r\n        return MsftSme.isNullOrUndefined(this.role) ? null : 'alert';\r\n    }\r\n\r\n    /**\r\n     * Indicates that there is an alert to display\r\n     */\r\n    public get hasAlert(): boolean {\r\n        return !MsftSme.isNullOrUndefined(this.alert);\r\n    }\r\n\r\n    /**\r\n     * Indicates that this alert is hidden\r\n     */\r\n    @HostBinding('class.sme-layout-none')\r\n    public get isHidden(): boolean {\r\n        return !!this.alert?.hidden;\r\n    }\r\n\r\n    /**\r\n     * Indicates that the current alert is valid\r\n     */\r\n    public get valid(): boolean {\r\n        return this.hasAlert && this.alert.valid;\r\n    }\r\n\r\n    /**\r\n     * Indicates that the current alert is valid\r\n     */\r\n    public get message(): string {\r\n        return this.hasAlert ? this.alert.message : '';\r\n    }\r\n\r\n    /**\r\n     * Indicates that the current alert should be rendered with markdown\r\n     */\r\n    public get isMarkdownMessage(): boolean {\r\n        return this.hasAlert && this.alert.isMarkdownMessage;\r\n    }\r\n\r\n    /**\r\n     * Indicates that the current alert has a severity defined\r\n     */\r\n    public get hasSeverity() {\r\n        return this.hasAlert && !MsftSme.isNullOrUndefined(ValidationAlertSeverity[this.alert.severity]);\r\n    }\r\n\r\n    /**\r\n     * Indicates that the current alert has a custom icon\r\n     */\r\n    public get hasCustomIcon() {\r\n        return this.hasAlert && !MsftSme.isNullOrWhiteSpace(this.alert.iconClass);\r\n    }\r\n\r\n    /**\r\n     * Indicates that the current alert is valid\r\n     */\r\n    @HostBinding('class.sme-alert-pending')\r\n    public get isPending(): boolean {\r\n        return this.hasAlert && this.alert.pending;\r\n    }\r\n\r\n    /**\r\n     * Indicates that the current alert is an error alert\r\n     * Errors are always invalid with either no severity or error severity\r\n     */\r\n    @HostBinding('class.sme-alert-error')\r\n    public get isError(): boolean {\r\n        return this.hasAlert\r\n            && !this.isPending\r\n            && (this.alert.severity === ValidationAlertSeverity.Error\r\n                || (!this.valid && !this.hasSeverity));\r\n    }\r\n\r\n    /**\r\n     * Indicates that the current alert is an warning alert\r\n     * Warnings may be valid or invalid (usually valid) with warning severity\r\n     */\r\n    @HostBinding('class.sme-alert-warning')\r\n    public get isWarning(): boolean {\r\n        return this.hasAlert && !this.isPending && this.alert.severity === ValidationAlertSeverity.Warning;\r\n    }\r\n\r\n    /**\r\n     * Indicates that the current alert is an informational alert\r\n     * Informational alerts may be valid or invalid (usually valid) with informational severity\r\n     */\r\n    @HostBinding('class.sme-alert-informational')\r\n    public get isInformational(): boolean {\r\n        return this.hasAlert && !this.isPending && this.alert.severity === ValidationAlertSeverity.Informational;\r\n    }\r\n\r\n    /**\r\n     * Indicates that the current alert is an success alert\r\n     * Success alerts are always valid with no severity severity\r\n     */\r\n    @HostBinding('class.sme-alert-success')\r\n    public get isSuccess(): boolean {\r\n        return this.valid && !this.isPending && !this.hasSeverity;\r\n    }\r\n\r\n    /**\r\n     * Indicates that the current alert is an success alert\r\n     */\r\n    public get alertType(): string {\r\n        const alertTypes = this.strings.MsftSmeShell.Angular.Common.Form.Validation.AlertTypes;\r\n        if (this.isPending) {\r\n            return alertTypes.pending;\r\n        } else if (this.isSuccess) {\r\n            return alertTypes.success;\r\n        } else if (this.isWarning) {\r\n            return alertTypes.warn;\r\n        } else if (this.isInformational) {\r\n            return alertTypes.info;\r\n        } else if (this.isError) {\r\n            return alertTypes.error;\r\n        } else {\r\n            return '';\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Gets the class to apply to the alert icon\r\n     */\r\n    public get alertClass(): string {\r\n        let alertString = '';\r\n        if (this.isPending) {\r\n            alertString = 'sme-alert-pending';\r\n        } else if (this.isSuccess) {\r\n            alertString = 'sme-alert-success';\r\n        } else if (this.isWarning) {\r\n            alertString = 'sme-alert-warning';\r\n        } else if (this.isInformational) {\r\n            alertString = 'sme-alert-informational';\r\n        } else if (this.isError) {\r\n            alertString = 'sme-alert-error';\r\n        } else {\r\n            alertString = '';\r\n        }\r\n\r\n        if (this.iconClass) {\r\n            alertString = alertString ? `${alertString}  ${this.iconClass}` : this.iconClass;\r\n        }\r\n\r\n        if (this.showBackground) {\r\n            alertString += alertString ? `${alertString} sme-alert-background` : 'sme-alert-background';\r\n        }\r\n\r\n        return alertString;\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnInit interface\r\n     */\r\n    public ngOnInit() {\r\n        super.ngOnInit();\r\n    }\r\n\r\n    public ngOnChanges(changes: SimpleChanges) {\r\n        super.ngOnChanges(changes);\r\n        if (changes.alert) {\r\n            if (!MsftSme.isNullOrWhiteSpace(this.iconClass)) {\r\n                this.renderer.removeClass(this.hostElement.nativeElement, this.iconClass);\r\n            }\r\n\r\n            if (this.hasCustomIcon) {\r\n                this.iconClass = this.alert.iconClass;\r\n            } else if (this.isError) {\r\n                this.iconClass = 'sme-icon-criticalErrorSolid';\r\n            } else if (this.isWarning) {\r\n                this.iconClass = 'sme-icon-warningSolid';\r\n            } else if (this.isInformational) {\r\n                this.iconClass = 'sme-icon-infoSolid';\r\n            } else if (this.isSuccess) {\r\n                this.iconClass = 'sme-icon-completedSolid';\r\n            } else {\r\n                this.iconClass = null;\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     * When called in the @see BaseComponent super class initialization, These classes will be automatically assigned to the host element.\r\n     */\r\n    protected getInitialHostClasses(): string[] {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-alert'\r\n        ]);\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            alertMessage: '',\r\n            alertType: ''\r\n        };\r\n    }\r\n}\r\n","import { AfterViewInit, ChangeDetectorRef, Directive, HostBinding, Injector, Input } from '@angular/core';\r\nimport { CoreBaseComponent } from '../../common/base.component';\r\nimport { DisabledChangedEvent } from '../../common/events/disabledChanged.event';\r\n\r\n/**\r\n * Directive for applying standard classes and attributes to fieldsets to automatically apply aria attributes when enabled/disabled.\r\n * TODO: there is an angular bug where fieldsets do not correctly replicate there disabled state to child ngModels.\r\n * See if there is a way we can fix it.\r\n */\r\n@Directive({\r\n    // eslint-disable-next-line @angular-eslint/directive-selector\r\n    selector: 'fieldset'\r\n})\r\nexport class FieldsetDirective extends CoreBaseComponent implements AfterViewInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'FieldsetDirective';\r\n    }\r\n\r\n    /**\r\n     * Indicates that this fieldset is disabled\r\n     */\r\n    @Input()\r\n    @HostBinding('class.sme-disabled')\r\n    @HostBinding('attr.disabled')\r\n    @HostBinding('attr.aria-disabled')\r\n    public get disabled(): boolean {\r\n        return this.internalDisabled;\r\n    }\r\n    public set disabled(value: boolean) {\r\n        // translate false to 'null'. Why: attr bindings will remove the attribute if it returns null, but false will result in\r\n        // [disabled=\"false\"] in the case of disabled attr, we actually do want to remove them.\r\n        // see thread: https://github.com/angular/angular/issues/2869\r\n        const wasDisabled = this.internalDisabled;\r\n        this.internalDisabled = value || null;\r\n\r\n        // if we actually changed state, trigger a second change detection so any decedent DOM can pick up this disabled state quickly.\r\n        if (this.internalDisabled !== wasDisabled) {\r\n            this.changeDetectorRef.detectChanges();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Injected @see ChangeDetectorRef instance bound to this component.\r\n     */\r\n    private changeDetectorRef: ChangeDetectorRef;\r\n\r\n    /**\r\n     * Internal placeholder for the value of 'disabled'\r\n     */\r\n    private internalDisabled: boolean;\r\n\r\n    /**\r\n     * Constructs a new instance of @see FieldsetDirective\r\n     * @param injector the angular injection service for the base classes @SmeInjectableBase Annotation.\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n\r\n        this.changeDetectorRef = injector.get(ChangeDetectorRef);\r\n    }\r\n\r\n    public ngAfterViewInit() {\r\n        super.ngAfterViewInit();\r\n        if (this.disabled) {\r\n            DisabledChangedEvent.dispatch(this.hostElement.nativeElement);\r\n        }\r\n    }\r\n}\r\n","<div #zone=\"smeTooltipZone\" smeTooltipZone>\r\n  <!-- Normal label -->\r\n  <label *ngIf=\"formField.shouldDisplayHeader() && !formField.compact\" class=\"sme-form-field-label\" aria-hidden=\"true\"\r\n    [class.sme-form-field-label-vertical-middle]=\"formField.verticalMiddleLabel\">\r\n    <span aria-hidden=\"true\" *ngIf=\"markdownEnabled\" [smeMarkdown]=\"markdownText\"></span>\r\n    <span *ngIf=\"!markdownEnabled\">{{ formField.label }}</span>\r\n    <strong *ngIf=\"formField.required\" class=\"sme-position-flex-none sme-margin-left-xxxs\"\r\n      [class.sme-color-error]=\"!formField.disabled\">\r\n      {{ strings.MsftSmeShell.Angular.Common.Form.Validation.required }}\r\n    </strong>\r\n    <span *ngIf=\"!formField.disabled && formField.showInfoBubble\" tabindex=\"0\"\r\n      class=\"sme-position-flex-none sme-icon sme-info-bubble sme-icon-info sme-margin-left-xs\"\r\n      [smeTooltip]=\"formField.resolvedTooltipTemplate\" [title]=\"formField.resolvedTitle\"\r\n      [smeTooltipContext]=\"formField.tooltipContext\" [tooltipZone]=\"zone\"></span>\r\n    <span *ngIf=\"formField.disabled && formField.showInfoBubble\" tabindex=\"0\"\r\n      class=\"sme-position-flex-none sme-icon sme-info-bubble sme-icon-info sme-margin-left-xs sme-color-neutral\"></span>\r\n  </label>\r\n  <!-- Horizontal hidden label -->\r\n  <!-- hidden label should not take any width or padding-left -->\r\n  <label *ngIf=\"formField.compact || (formField.isHorizontalLayout && !formField.shouldDisplayHeader())\"\r\n    class=\"sme-hidden-label sme-form-field-label\" [class.sme-form-field-label-hidden]=\"formField.hideHeaderSpace\" aria-hidden=\"true\"></label>\r\n  <!-- Form Field Content -->\r\n  <ng-content></ng-content>\r\n</div>\r\n","import { Component, Injector, Input } from '@angular/core';\r\nimport { CoreBaseComponent } from '../../common/base.component';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\n\r\n@Component({\r\n    selector: 'sme-form-field-layout',\r\n    templateUrl: './form-field-layout.component.html'\r\n})\r\nexport class FormFieldLayoutComponent<TStrings> extends CoreBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'FormFieldLayoutComponent';\r\n    }\r\n\r\n    /**\r\n     * A reference to the form field that this layout contains\r\n     */\r\n    @Input()\r\n    public formField: FormFieldComponent<TStrings, any>;\r\n\r\n    /**\r\n     * String from checkbox form field in case markdown is enabled.\r\n     */\r\n    public markdownText: string;\r\n\r\n    /**\r\n     * Boolean input for whether to interpret the form field component as markdown or not.\r\n     * Enable only for check box form fields\r\n     */\r\n     public get markdownEnabled() {\r\n        // Circular dependency between FormFieldLayoutComponent and CheckboxFormFieldComponent,\r\n        // so we have to use the logSourceName() method to check the type of the formField.\r\n        // Long term we should refactor this and clean up the code.\r\n        if ((<any>this.formField).logSourceName === 'CheckboxFormFieldComponent') {\r\n             this.markdownText = (<any>this.formField).markdownText;\r\n             return !!this.markdownText;\r\n         }\r\n         return false;\r\n     }\r\n\r\n    /**\r\n     * Initializes a new instance of the FormFieldLayoutComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n    }\r\n\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat(\r\n            'sme-form-field-layout'\r\n        );\r\n    }\r\n}\r\n","import { Component, HostBinding, Injector, Input, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { ValidationAlerts } from '../../../form/validation-alert/validation-alert';\r\nimport { SmeSchemaProperty } from '../../../schema/schema-decorator';\r\nimport { ObjectPropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';\r\nimport { SchemaArrayProperty, SchemaObjectProperty, SchemaPrimitiveType } from '../../../schema/schema-models';\r\nimport { SchemaDataTypeStore } from '../../../schema/schema-store';\r\nimport { SchemaUtilities } from '../../../schema/schema-utilities';\r\nimport { FormFieldOptionComponent } from '../options-form-field/form-field-option.component';\r\nimport { SmeInternalOptionsFormFieldComponent } from '../options-form-field/options-form-field.component';\r\n\r\n/* eslint-disable max-len */\r\n@Component({\r\n    template: `\r\n    <sme-form-field #field type=\"checklist\" [(ngModel)]=\"data\" [name]=\"propertySchema.name\" [label]=\"localize(propertySchema.label)\"\r\n        [required]=\"propertySchema.required\" [description]=\"localize(propertySchema.description)\" [shouldUseOwnOptionsList]=\"true\"\r\n        [readonly]=\"!!evalExpression(propertySchema.readonlyCondition)\"\r\n        [disabled]=\"!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))\"\r\n        (customValidate)=\"resolveFunction(propertySchema.customValidation)($event)\"\r\n        (customAsyncValidate)=\"propertySchema.customAsyncValidation && resolveFunction(propertySchema.customAsyncValidation.handler)($event)\"\r\n        [pendingMessage]=\"propertySchema.customAsyncValidation && localize(propertySchema.customAsyncValidation.pendingMessage)\"\r\n        [customAsyncValidateDisabled]=\"shouldCustomAsyncValidationBeDisabled()\"\r\n        [customAsyncValidateDebounceTime]=\"propertySchema.customAsyncValidation && +propertySchema.customAsyncValidation.handler\"\r\n        >\r\n        <ng-container *ngFor=\"let item of options\">\r\n            <sme-option *ngIf=\"!getObjectOptionByMainOption(item.value)\" [value]=\"item.value\" [label]=\"localize(item.label)\"\r\n            [disabled]=\"item.disabled\">\r\n            </sme-option>\r\n            <sme-option *ngIf=\"getObjectOptionByMainOption(item.value)\" [value]=\"item.value\" [label]=\"localize(item.label)\"\r\n            [disabled]=\"item.disabled\">\r\n                <ng-template>\r\n                    <sme-schema-field-host [propertySchema]=\"getObjectOptionByMainOption(item.value)\"\r\n                        [(data)]=\"data.objectOptions && data.objectOptions[item.value]\"\r\n                        [context]=\"context\">\r\n                    </sme-schema-field-host>\r\n                </ng-template>\r\n            </sme-option>\r\n        </ng-container>\r\n    </sme-form-field>\r\n    `\r\n})\r\n/* eslint-enable max-len */\r\nexport class ChecklistFormFieldLoaderComponent extends ObjectPropertySchemaFieldLoaderComponent {\r\n\r\n    public get options(): any[] {\r\n        let result: any[] = [];\r\n        const staticOptions: any[] = this.propertySchema.options && this.propertySchema.options.items || [];\r\n        const dynamicOptions: any[] = this.resolveComponentMember(this.propertySchema.options.itemsBinding);\r\n\r\n        if (staticOptions) {\r\n            result = result.concat(staticOptions);\r\n        }\r\n        if (dynamicOptions) {\r\n            result = result.concat(dynamicOptions);\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    public static registerDataType() {\r\n        SchemaDataTypeStore.registerDataType({\r\n            type: SchemaPrimitiveType.Object,\r\n            format: 'checklist',\r\n            description: 'A check list control binding to check list object data.',\r\n            loaderComponent: ChecklistFormFieldLoaderComponent\r\n        });\r\n    }\r\n\r\n    public getObjectOptionByMainOption(mainOptionValue: string): SchemaObjectProperty {\r\n        const objectOptions = <SchemaObjectProperty>SchemaUtilities.getPropertySchemaByName(this.propertySchema, 'objectOptions');\r\n        if (objectOptions) {\r\n            const objectOption: SchemaObjectProperty =\r\n                <SchemaObjectProperty>SchemaUtilities.getPropertySchemaByName(objectOptions, mainOptionValue);\r\n            return objectOption;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    public isValid(): boolean {\r\n        let result = true;\r\n\r\n        if (this.propertySchema.required && this.data.options.length === 0) {\r\n            result = false;\r\n        }\r\n\r\n        if (result) {\r\n            const fieldHostComponents = this.fieldHostComponents.toArray();\r\n            for (let i = 0; i < this.data.options.length; i++) {\r\n                if (this.data.objectOptions[this.data.options[i]]) {\r\n                    const fieldHostComponentForSelectedOption =\r\n                        fieldHostComponents.find(item => item.propertySchema.name === this.data.options[i]);\r\n                    if (fieldHostComponentForSelectedOption) {\r\n                        result = fieldHostComponentForSelectedOption.isValid();\r\n                        if (!result) {\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n}\r\n\r\n/**\r\n * Accessible Implementation of a form field for a set of .sme-checkbox\r\n */\r\n@SmeSchemaProperty({\r\n    type: SchemaPrimitiveType.Object,\r\n    format: 'checklist',\r\n    description: 'A check list control binding to check list object data.',\r\n    loaderComponent: ChecklistFormFieldLoaderComponent,\r\n    predefinedObjectProperties: [\r\n        <SchemaArrayProperty>{\r\n            type: SchemaPrimitiveType.Array,\r\n            format: 'simple-list',\r\n            name: 'options',\r\n            required: false,\r\n            options: {\r\n            },\r\n            item: {\r\n                type: SchemaPrimitiveType.String,\r\n                format: 'textbox',\r\n                required: false\r\n            }\r\n        },\r\n        <SchemaObjectProperty>{\r\n            type: SchemaPrimitiveType.Object,\r\n            format: 'default',\r\n            name: 'objectOptions',\r\n            properties: [\r\n                <SchemaObjectProperty>{\r\n                    type: SchemaPrimitiveType.Object,\r\n                    format: 'default',\r\n                    name: '<object data for option 1>',\r\n                    properties: []\r\n                },\r\n                <SchemaObjectProperty>{\r\n                    type: SchemaPrimitiveType.Object,\r\n                    format: 'default',\r\n                    name: '<object data for option 2>',\r\n                    properties: []\r\n                },\r\n                <SchemaObjectProperty>{\r\n                    type: SchemaPrimitiveType.Object,\r\n                    format: 'default',\r\n                    name: '<object data for option 3>',\r\n                    properties: []\r\n                }\r\n            ]\r\n        }\r\n    ],\r\n    optionProperties: [\r\n        <SchemaArrayProperty>{\r\n            type: SchemaPrimitiveType.Array,\r\n            format: 'simple-list',\r\n            name: 'items',\r\n            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.StaticOptions',\r\n            item: <SchemaObjectProperty>{\r\n                type: SchemaPrimitiveType.Object,\r\n                format: 'default',\r\n                properties: [\r\n                    {\r\n                        type: SchemaPrimitiveType.String,\r\n                        format: 'resource-string-picker',\r\n                        name: 'label',\r\n                        label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.Label',\r\n                        required: true\r\n                    },\r\n                    {\r\n                        type: SchemaPrimitiveType.String,\r\n                        format: 'textbox',\r\n                        name: 'value',\r\n                        label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.Value',\r\n                        required: true\r\n                    }\r\n                ],\r\n                options: {\r\n                    columnCount: 1\r\n                }\r\n            }\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.String,\r\n            format: 'textbox',\r\n            name: 'itemsBinding',\r\n            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.DynamicOptions'\r\n        }\r\n    ]\r\n})\r\n@Component({\r\n    selector: 'sme-form-field[type=\"checklist\"]',\r\n    templateUrl: './checklist-form-field.component.html'\r\n})\r\nexport class ChecklistFormFieldComponent<TValue> extends SmeInternalOptionsFormFieldComponent<TValue[]> implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'ChecklistFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * multiple selection is the only supported mode of the checklist\r\n     */\r\n    public readonly multiple = true;\r\n\r\n    @Input()\r\n    public shouldUseOwnOptionsList = false;\r\n\r\n    /**\r\n     * The aria label for this instance\r\n     */\r\n    @HostBinding('attr.aria-label')\r\n    public get ariaLabel(): string {\r\n        return this.getMergedDescriptionLabel();\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the ChecklistFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnInit interface\r\n     */\r\n    public ngOnInit() {\r\n        super.ngOnInit();\r\n        this.setAttribute('role', 'group');\r\n    }\r\n\r\n    protected onValueChanged(value: any) {\r\n        super.onValueChanged(value);\r\n\r\n        if (this.shouldUseOwnOptionsList) {\r\n            this.options.forEach(option => {\r\n                option.isSelected = value.options && value.options.indexOf(option.value) !== -1;\r\n            });\r\n        }\r\n    }\r\n\r\n    public toggleOption(option: FormFieldOptionComponent, select: boolean): boolean {\r\n        if (this.shouldUseOwnOptionsList) {\r\n            const value: any = this.value;\r\n            if (option.isSelected === select) {\r\n                return true;\r\n            }\r\n\r\n            if (select) {\r\n                value.options.push(option.value);\r\n            } else {\r\n                value.options.splice(value.options.indexOf(option.value), 1);\r\n            }\r\n\r\n            this.value = value;\r\n            option.isSelected = select;\r\n\r\n            super.syncSelectionChanged(value.options);\r\n            return true;\r\n        } else {\r\n            return super.toggleOption(option, select);\r\n        }\r\n    }\r\n\r\n    public toggleAllOptions(select: boolean = !this.isAllOptionsSelected): boolean {\r\n        if (this.shouldUseOwnOptionsList) {\r\n            if (this.isAllOptionsSelected === select) {\r\n                return true;\r\n            }\r\n            if (!this.multiple) {\r\n                // select all is not supported in single select mode\r\n                return false;\r\n            }\r\n            const value: any = this.value;\r\n\r\n            value.options = select ? <any>this.options.reduce((enabledValues, current) => {\r\n                if (current && !current.disabled) {\r\n                    enabledValues.push(current.value);\r\n                }\r\n                return enabledValues;\r\n            }, []) : <any>[];\r\n\r\n            this.value = value;\r\n\r\n            super.syncSelectionChanged(value.options);\r\n            return true;\r\n        } else {\r\n            return super.toggleAllOptions(select);\r\n        }\r\n    }\r\n\r\n    public getCheckboxId(first: boolean, last: boolean) {\r\n        if (first) {\r\n            return this.idBag.firstCheckbox;\r\n        } else if (last) {\r\n            return this.idBag.lastCheckbox;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    protected syncSelectionChanged(value: any) {\r\n        if (!this.shouldUseOwnOptionsList) {\r\n            super.syncSelectionChanged(value);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The aria label for this instance\r\n     */\r\n    public onCheckboxKeydown(event: KeyboardEvent, index: number): void {\r\n        if (!this.options || this.options.length === 0) {\r\n            return;\r\n        }\r\n\r\n        let handled = false;\r\n        let goToIndex: number = null;\r\n        let endIndex = this.options.length - 1;\r\n        if (this.multiple && this.showSelectAll) {\r\n            index++;\r\n            endIndex++;\r\n        }\r\n        switch (event.keyCode) {\r\n            case KeyCode.Home: {\r\n                handled = true;\r\n                if (index >= 0) {\r\n                    goToIndex = 0;\r\n                }\r\n                break;\r\n            }\r\n            case KeyCode.End: {\r\n                handled = true;\r\n                if (index <= endIndex) {\r\n                    goToIndex = endIndex;\r\n                }\r\n                break;\r\n            }\r\n            case KeyCode.UpArrow: {\r\n                handled = true;\r\n                if (index >= 0) {\r\n                    goToIndex = index - 1;\r\n                }\r\n                break;\r\n            }\r\n            case KeyCode.DownArrow: {\r\n                handled = true;\r\n                if (index <= endIndex) {\r\n                    goToIndex = index + 1;\r\n                }\r\n                break;\r\n            }\r\n            default: break;\r\n        }\r\n\r\n        if (!MsftSme.isNull(goToIndex)) {\r\n            let checkbox: HTMLInputElement;\r\n            if (this.multiple && this.showSelectAll && goToIndex === 0) {\r\n                checkbox = <HTMLInputElement>document.getElementById(`${this.idBag.selectAllCheckbox}`);\r\n            } else {\r\n                if (this.multiple && this.showSelectAll) {\r\n                    goToIndex--;\r\n                }\r\n                checkbox = <HTMLInputElement>document.getElementById(`${this.idBag.checkbox}${goToIndex}`);\r\n            }\r\n            if (checkbox) {\r\n                checkbox.focus();\r\n            }\r\n        }\r\n\r\n        if (handled) {\r\n            event.preventDefault();\r\n            event.stopPropagation();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            checkbox: '',\r\n            checkboxDescription: '',\r\n            selectAllCheckbox: '',\r\n            selectAllCheckboxDescription: '',\r\n            detailsSpan: ''\r\n        };\r\n    }\r\n\r\n    public formatDataUtaId(option: string): string {\r\n        return option.toLowerCase().replaceAll(' ', '-');\r\n    }\r\n\r\n    public getCheckboxCount(index?: number) {\r\n        let total = this.options.length;\r\n        let currentIndex = MsftSme.isNullOrUndefined(index) ? 0 : index + 1;\r\n        if (this.showSelectAll) {\r\n            total++;\r\n            currentIndex++;\r\n        }\r\n        return this.strings.MsftSmeShell.Angular.Form.Checklist.indexDescription.format(currentIndex, total);\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control\r\n     * @param c The form control attached to this instance\r\n     */\r\n    protected validate(c: FormControl): ValidationAlerts {\r\n\r\n        if (this.required) {\r\n            if (MsftSme.isNullOrUndefined(this.value)) {\r\n                return { required: true };\r\n            }\r\n\r\n            const keys = Object.keys(this.value);\r\n            if (keys.length === 0 || keys.every(k => !this.value[k])) {\r\n                return { required: true };\r\n            }\r\n        }\r\n\r\n        return super.validate(c);\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\" class=\"sme-focus-zone\">\r\n  <div *ngIf=\"value\" role=\"group\" class=\"sme-form-field-editor sme-form-field-width\">\r\n    <div *ngIf=\"multiple && showSelectAll\" class=\"sme-checkbox sme-checkbox-header\">\r\n      <label>\r\n        <input type=\"checkbox\" [id]=\"idBag.selectAllCheckbox\" (keydown)=\"onCheckboxKeydown($event, -1)\"\r\n          [attr.aria-label]=\"selectAllLabel\" [attr.aria-describedby]=\"idBag.selectAllCheckboxDescription\"\r\n          (change)=\"toggleAllOptions()\" [checked]=\"isAllOptionsSelected\" [attr.aria-checked]=\"isAllOptionsSelected\"\r\n          [attr.aria-required]=\"required\" [disabled]=\"loadingOrDisabled\" data-uta-id=\"select-all\" />\r\n        <span aria-hidden=\"true\">{{selectAllLabel}}</span>\r\n        <div [id]=\"idBag.selectAllCheckboxDescription\" class=\"sme-screen-reader\">{{ getCheckboxCount() }}</div>\r\n      </label>\r\n    </div>\r\n    <ng-container *ngFor=\"let option of options; index as i\">\r\n      <div class=\"sme-checkbox sme-margin-bottom-xxs\">\r\n        <label>\r\n          <input type=\"checkbox\" [id]=\"idBag.checkbox + i\" (keydown)=\"onCheckboxKeydown($event, i)\"\r\n            [attr.aria-label]=\"option.toString()\" [attr.aria-describedby]=\"idBag.checkboxDescription + i\"\r\n            (change)=\"toggleOption(option, !option.isSelected)\" [checked]=\"option.isSelected\"\r\n            [attr.aria-checked]=\"option.isSelected\" [attr.aria-required]=\"required\" [attr.data-uta-id]=\"formatDataUtaId(option.toString())\"\r\n            [disabled]=\"loadingOrDisabled || option.disabled\">\r\n          <span aria-hidden=\"true\">{{option.toString()}}</span>\r\n        </label>\r\n        <div [id]=\"idBag.checkboxDescription + i\" class=\"sme-screen-reader\">{{ getCheckboxCount(i) }}</div>\r\n      </div>\r\n      <fieldset *ngIf=\"option.subFormTemplate\" [disabled]=\"loadingOrDisabled || !option.isSelected || option.disabled\"\r\n        class=\"sme-focus-zone\">\r\n        <sme-option-template-loader [template]=\"option.subFormTemplate\" [data]=\"option\" [optionIndex]=\"i\">\r\n        </sme-option-template-loader>\r\n      </fieldset>\r\n    </ng-container>\r\n  </div>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","<div class=\"sme-layout-relative\" [class.sme-margin-bottom-xl]=\"shouldShowLoadingWheel()\"\r\n     [class.sme-height-xxxl]=\"shouldShowLoadingWheel()\" [class.sme-width-xxxl]=\"shouldShowLoadingWheel()\">\r\n  <sme-loading-wheel *ngIf=\"shouldShowLoadingWheel()\"></sme-loading-wheel>\r\n  <fieldset *ngIf=\"!shouldShowLoadingWheel()\"\r\n            [smeDisabled]=\"propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition)\"\r\n            style=\"margin:0 !important\">\r\n    <a *ngIf=\"shouldShowHeader() && propertySchema.label && isCollapsible()\" (click)='clickToggle()'\r\n       class=\"sme-padding-bottom-xs sme-arrange-stack-h\">\r\n      <span class=\"sme-position-flex-none sme-icon sme-padding-right-xxs\"\r\n            [ngClass]=\"{'sme-icon-chevronDown':isExpanded(), 'sme-icon-chevronRight':!isExpanded()}\">\r\n      </span>\r\n      <b class=\"sme-position-flex-auto sme-margin-top-xxxs\">{{localize(propertySchema.label)}}</b>\r\n    </a>\r\n    <b *ngIf=\"shouldShowHeader() && propertySchema.label && !isCollapsible()\"\r\n       class=\"sme-layout-block sme-margin-top-xxxs sme-padding-bottom-xs\">{{localize(propertySchema.label)}}</b>\r\n    <p *ngIf=\"propertySchema.options && propertySchema.options.subTitle\" class=\"sme-margin-vertical-xs\">\r\n      {{localize(propertySchema.options.subTitle)}}</p>\r\n    <div class=\"sme-object-field-content\" [class.sme-layout-none]=\"!isExpanded()\">\r\n      <sme-layout [itemVerticalSpace]=\"0\" [itemHorizontalSpace]=\"10\">\r\n        <sme-layout-definition name=\"wide\"\r\n                               [columns]=\"(propertySchema.options && propertySchema.options.columnCount) || 1\">\r\n        </sme-layout-definition>\r\n        <sme-layout-item *ngFor=\"let property of propertySchema.properties; let i = index\">\r\n          <sme-schema-field-host *ngIf=\"!(property.format=='*data-only' || (property.hideCondition && evalExpression(property.hideCondition)))\"\r\n                                 class=\"sme-layout-relative\"\r\n                                 [class.sme-schema-field-host-not-first]=\"i>=(propertySchema.options && propertySchema.options.columnCount || 1)\"\r\n                                 [propertySchema]=\"property\" [context]=\"context\" [(data)]=\"data && data[property.name]\"\r\n                                 [attr.data-property-name]=\"property.name\">\r\n          </sme-schema-field-host>\r\n        </sme-layout-item>\r\n      </sme-layout>\r\n    </div>\r\n    <p *ngIf=\"propertySchema.options && propertySchema.options.additionalDescription\" class=\"sme-margin-top-xs\">\r\n      {{localize(propertySchema.options.additionalDescription)}}</p>\r\n  </fieldset>\r\n</div>\r\n<sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n","import { Component } from '@angular/core';\r\nimport { ObjectPropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';\r\nimport { SchemaObjectProperty, SchemaPrimitiveType } from '../../../schema/schema-models';\r\nimport { SchemaDataTypeStore } from '../../../schema/schema-store';\r\nimport { ValidationAlert } from '../../validation-alert/validation-alert';\r\n\r\n@Component({\r\n    templateUrl: './object-default-form-field-loader.component.html'\r\n})\r\nexport class ObjectDefaultFormFieldLoaderComponent extends ObjectPropertySchemaFieldLoaderComponent {\r\n    public alert: ValidationAlert;\r\n\r\n    public static registerDataType() {\r\n        SchemaDataTypeStore.registerDataType({\r\n            type: SchemaPrimitiveType.Object,\r\n            format: 'default',\r\n            isDefaultFormat: true,\r\n            description: 'It\\'s a special form field control that recursively renders all the properties as fields. '\r\n                + 'This is like a container of other schema items.',\r\n            loaderComponent: ObjectDefaultFormFieldLoaderComponent,\r\n            optionProperties: [\r\n                {\r\n                    type: SchemaPrimitiveType.String,\r\n                    format: 'resource-string-picker',\r\n                    name: 'subTitle',\r\n                    label: 'actual_string:Subtitle'\r\n                },\r\n                {\r\n                    type: SchemaPrimitiveType.String,\r\n                    format: 'resource-string-picker',\r\n                    name: 'additionalDescription',\r\n                    label: 'actual_string:Additional Description'\r\n                },\r\n                {\r\n                    type: SchemaPrimitiveType.String,\r\n                    format: 'textbox',\r\n                    name: 'busyCondition',\r\n                    label: 'actual_string:Busy Condition'\r\n                },\r\n                {\r\n                    type: SchemaPrimitiveType.Number,\r\n                    format: 'textbox',\r\n                    name: 'columnCount',\r\n                    label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.ObjectType.ColumnCount',\r\n                    defaultValue: 1\r\n                },\r\n                {\r\n                    type: SchemaPrimitiveType.Boolean,\r\n                    format: 'checkbox',\r\n                    name: 'hideHeader',\r\n                    label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.ObjectType.HideHeader'\r\n                },\r\n                <SchemaObjectProperty>{\r\n                    type: SchemaPrimitiveType.Object,\r\n                    format: 'default',\r\n                    name: 'collapsible',\r\n                    label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.ObjectType.Collapsible',\r\n                    required: false,\r\n                    properties: [\r\n                        {\r\n                            type: SchemaPrimitiveType.Boolean,\r\n                            format: 'checkbox',\r\n                            name: 'yes',\r\n                            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.ObjectType.Yes',\r\n                            required: false,\r\n                            options: {\r\n                            }\r\n                        },\r\n                        {\r\n                            type: SchemaPrimitiveType.String,\r\n                            format: 'combobox',\r\n                            name: 'state',\r\n                            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.ObjectType.State',\r\n                            required: false,\r\n                            defaultValue: 'collapsed',\r\n                            options: {\r\n                                items: [\r\n                                    {\r\n                                        label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.ObjectType.Collapsed',\r\n                                        value: 'collapsed'\r\n                                    },\r\n                                    {\r\n                                        label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.ObjectType.Expanded',\r\n                                        value: 'expanded'\r\n                                    }\r\n                                ]\r\n                            }\r\n                        }\r\n                    ]\r\n                }\r\n            ],\r\n            predefinedObjectProperties: [\r\n                {\r\n                    type: SchemaPrimitiveType.String,\r\n                    format: 'textbox'\r\n                }\r\n            ]\r\n        });\r\n    }\r\n\r\n    public isValid(): boolean {\r\n        let result = super.isValid();\r\n        this.alert = null;\r\n\r\n        if (this.isDirty()) {\r\n            const customValidationHandler = this.propertySchema.customValidation\r\n                && this.resolveFunction(this.propertySchema.customValidation);\r\n            if (customValidationHandler) {\r\n                const errorMessage = customValidationHandler(this.data);\r\n                if (errorMessage) {\r\n                    this.alert = {\r\n                        message: errorMessage\r\n                    };\r\n                    result = false;\r\n                }\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    public shouldShowHeader(): boolean {\r\n        return !(this.propertySchema.options && this.propertySchema.options.hideHeader);\r\n    }\r\n\r\n    public isCollapsible(): boolean {\r\n        return this.propertySchema.options && this.propertySchema.options.collapsible && this.propertySchema.options.collapsible.yes;\r\n    }\r\n\r\n    public isExpanded(): boolean {\r\n        return !(this.isCollapsible() && this.propertySchema.options.collapsible.state === 'collapsed');\r\n    }\r\n\r\n    public clickToggle(): void {\r\n        if (this.isCollapsible()) {\r\n            this.propertySchema.options.collapsible.state =\r\n                this.propertySchema.options.collapsible.state === 'expanded' ? 'collapsed' : 'expanded';\r\n        }\r\n    }\r\n\r\n    public shouldShowLoadingWheel(): boolean {\r\n        return this.propertySchema.options && this.propertySchema.options.busyCondition\r\n            && this.evalExpression(this.propertySchema.options.busyCondition);\r\n    }\r\n}\r\n","<form [attr.id]=\"propertySchema.options && propertySchema.options.formID\" (submit)=\"$event.preventDefault()\">\r\n    <div class=\"sme-layout-relative\" [class.sme-margin-bottom-xl]=\"shouldShowLoadingWheel()\"\r\n        [class.sme-height-xxxl]=\"shouldShowLoadingWheel()\">\r\n        <sme-loading-wheel *ngIf=\"shouldShowLoadingWheel()\"></sme-loading-wheel>\r\n        <div *ngIf=\"!shouldShowLoadingWheel()\">\r\n            <a *ngIf=\"shouldShowHeader() && propertySchema.label && isCollapsible()\" (click)='clickToggle()'\r\n                class=\"sme-padding-bottom-xs sme-arrange-stack-h\">\r\n                <span class=\"sme-position-flex-none sme-icon sme-padding-right-xxs\"\r\n                    [ngClass]=\"{'sme-icon-chevronDown':isExpanded(), 'sme-icon-chevronRight':!isExpanded()}\">\r\n                </span>\r\n                <b class=\"sme-position-flex-auto sme-margin-top-xxxs\">{{localize(propertySchema.label)}}</b>\r\n            </a>\r\n            <b *ngIf=\"shouldShowHeader() && propertySchema.label && !isCollapsible()\"\r\n                class=\"sme-layout-block sme-margin-top-xxxs sme-padding-bottom-xs\">{{localize(propertySchema.label)}}</b>\r\n            <div [hidden]=\"!isExpanded()\">\r\n                <sme-layout [itemVerticalSpace]=\"0\" [itemHorizontalSpace]=\"10\">\r\n                    <sme-layout-definition name=\"wide\"\r\n                        [columns]=\"(propertySchema.options && propertySchema.options.columnCount) || 1\">\r\n                    </sme-layout-definition>\r\n                    <sme-layout-item *ngFor=\"let property of propertySchema.properties; let i = index\">\r\n                        <sme-schema-field-host\r\n                            *ngIf=\"!(property.hideCondition && evalExpression(property.hideCondition))\"\r\n                            [class.sme-schema-field-host-not-first]=\"i>=(propertySchema.options && propertySchema.options.columnCount || 1)\"\r\n                            [propertySchema]=\"property\" [context]=\"context\" [(data)]=\"data && data[property.name]\"\r\n                            [attr.data-property-name]=\"property.name\">\r\n                        </sme-schema-field-host>\r\n                    </sme-layout-item>\r\n                </sme-layout>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</form>","import { Component } from '@angular/core';\r\nimport { ObjectDefaultFormFieldLoaderComponent } from '../form/form-field/object/object-default-form-field-loader.component';\r\nimport { SchemaObjectProperty, SchemaPrimitiveType } from './schema-models';\r\nimport { SchemaDataTypeStore } from './schema-store';\r\n@Component({\r\n    templateUrl: './basic-form-loader.component.html'\r\n})\r\nexport class BasicFormLoaderComponent extends ObjectDefaultFormFieldLoaderComponent {\r\n    public static registerDataType() {\r\n        SchemaDataTypeStore.registerDataType({\r\n            type: SchemaPrimitiveType.Object,\r\n            format: 'basic-form',\r\n            isDefaultFormat: true,\r\n            description: 'It\\'s a special form field control that recursively renders all the properties as fields. '\r\n                + 'This is like a container of other schema items.',\r\n            loaderComponent: BasicFormLoaderComponent,\r\n            optionProperties: [\r\n                {\r\n                    type: SchemaPrimitiveType.String,\r\n                    format: 'textbox',\r\n                    name: 'formID',\r\n                    label: 'actual_string:Form ID',\r\n                    description: 'actual_string:You may need the ID to link with the \"form\" attribute value of the submit button.'\r\n                },\r\n                {\r\n                    type: SchemaPrimitiveType.String,\r\n                    format: 'textbox',\r\n                    name: 'busyCondition',\r\n                    label: 'actual_string:Busy Condition'\r\n                },\r\n                {\r\n                    type: SchemaPrimitiveType.Number,\r\n                    format: 'textbox',\r\n                    name: 'columnCount',\r\n                    label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.ObjectType.ColumnCount',\r\n                    defaultValue: 1\r\n                },\r\n                {\r\n                    type: SchemaPrimitiveType.Boolean,\r\n                    format: 'checkbox',\r\n                    name: 'hideHeader',\r\n                    label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.ObjectType.HideHeader'\r\n                },\r\n                <SchemaObjectProperty>{\r\n                    type: SchemaPrimitiveType.Object,\r\n                    format: 'default',\r\n                    name: 'collapsible',\r\n                    label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.ObjectType.Collapsible',\r\n                    required: false,\r\n                    properties: [\r\n                        {\r\n                            type: SchemaPrimitiveType.Boolean,\r\n                            format: 'checkbox',\r\n                            name: 'yes',\r\n                            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.ObjectType.Yes',\r\n                            required: false,\r\n                            options: {\r\n                            }\r\n                        },\r\n                        {\r\n                            type: SchemaPrimitiveType.String,\r\n                            format: 'combobox',\r\n                            name: 'state',\r\n                            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.ObjectType.State',\r\n                            required: false,\r\n                            defaultValue: 'collapsed',\r\n                            options: {\r\n                                items: [\r\n                                    {\r\n                                        label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.ObjectType.Collapsed',\r\n                                        value: 'collapsed'\r\n                                    },\r\n                                    {\r\n                                        label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.ObjectType.Expanded',\r\n                                        value: 'expanded'\r\n                                    }\r\n                                ]\r\n                            }\r\n                        }\r\n                    ]\r\n                }\r\n            ],\r\n            predefinedObjectProperties: [\r\n                {\r\n                    type: SchemaPrimitiveType.String,\r\n                    format: 'textbox'\r\n                }\r\n            ],\r\n            tags: ['form-container']\r\n        });\r\n    }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { SimplePropertySchemaFieldLoaderComponent } from './schema-field-host.component';\r\nimport { SchemaPrimitiveType } from './schema-models';\r\nimport { SchemaDataTypeStore } from './schema-store';\r\n@Component({\r\n    template: '<span></span>'\r\n})\r\nexport class DataOnlyFormFieldLoaderComponent extends SimplePropertySchemaFieldLoaderComponent {\r\n    public static registerDataType() {\r\n        SchemaDataTypeStore.registerDataType({\r\n            type: SchemaPrimitiveType.String,\r\n            format: '*data-only',\r\n            description: 'It\\'s a special form field control which only works as a data property placeholder. '\r\n                + 'It doesn\\'s actually render the data in the UI.',\r\n            loaderComponent: DataOnlyFormFieldLoaderComponent\r\n        });\r\n        SchemaDataTypeStore.registerDataType({\r\n            type: SchemaPrimitiveType.Number,\r\n            format: '*data-only',\r\n            description: 'It\\'s a special form field control which only works as a data property placeholder. '\r\n                + 'It doesn\\'s actually render the data in the UI.',\r\n            loaderComponent: DataOnlyFormFieldLoaderComponent\r\n        });\r\n    }\r\n}\r\n","<sme-backdrop *ngIf=\"visible\" [level]=\"dialogLevel\" (clicked)=\"!!clickBackdrop ? onBackgroundClicked() : ''\"\r\n  [showBackdrop]=\"showBackdrop\" [allowBackgroundInteraction]=\"allowBackgroundInteraction\"\r\n  class=\"sme-layout-absolute sme-position-inset-none\">\r\n  <div [ngClass]=\"dialogClasses\" [attr.role]=\"dialogRole\" [attr.aria-hidden]=\"!visible\"\r\n    [attr.aria-labelledby]=\"ariaLabel ? idBag.ariaLabelSpan :'sme-dialog-title'\"\r\n    [attr.aria-describedby]=\"ariaDescription ? idBag.ariaDescriptionSpan : 'sme-dialog-desc'\" aria-modal=\"true\">\r\n    <button *ngIf=\"closeButton\" class=\"sme-button-trigger sme-button-auto-width sme-dialog-close-button\"\r\n      (click)=\"onCloseClicked()\" [attr.aria-label]=\"strings.MsftSmeShell.Angular.Common.close\"\r\n      [title]=\"strings.MsftSmeShell.Angular.Common.close\">\r\n      <span class=\"sme-icon sme-icon-cancel\"></span>\r\n    </button>\r\n    <div class=\"sme-position-flex-none sme-focus-zone\">\r\n      <ng-content select=\"sme-dialog-header\"></ng-content>\r\n    </div>\r\n    <div class=\"sme-layout-relative sme-position-flex-auto sme-padding-horizontal-lg sme-arrange-overflow-auto-y sme-arrange-overflow-hide-x sme-focus-zone sme-layout-responsive-zone-xs sme-dialog-content-wrapper\">\r\n      <ng-content select=\"sme-dialog-content\"></ng-content>\r\n    </div>\r\n    <div *ngIf=\"!hideFooter\" class=\"sme-position-flex-none sme-focus-zone sme-padding-horizontal-lg sme-padding-vertical-sm\">\r\n      <ng-content select=\"sme-dialog-footer\"></ng-content>\r\n    </div>\r\n  </div>\r\n  <span *ngIf=\"ariaLabel\" class=\"sme-screen-reader\" [id]=\"idBag.ariaLabelSpan\">{{ariaLabel}}</span>\r\n  <span *ngIf=\"ariaDescription\" class=\"sme-screen-reader\" [id]=\"idBag.ariaDescriptionSpan\">{{ariaDescription}}</span>\r\n</sme-backdrop>\r\n","import {\r\n    AfterViewChecked,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ElementRef,\r\n    HostListener,\r\n    Injector,\r\n    Input,\r\n    OnChanges,\r\n    OnDestroy,\r\n    SimpleChanges\r\n} from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { Subject } from 'rxjs';\r\nimport { Strings } from '../../generated/strings';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Dialog @id sme-dialog}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/dialog-overview.md}\r\n *\r\n * @example {@label Basic Usage @id basic-usage}\r\n * @file {@filename component.ts @filepath ./examples/dialog-example.component.ts}\r\n * @file {@filename component.html @filepath ./examples/dialog-example.component.html}\r\n *\r\n * @example {@label Dialog Chain @id dialog-chain}\r\n * @file {@filename component.ts @filepath ./examples/dialog-example-dialog-chain.component.ts}\r\n * @file {@filename component.html @filepath ./examples/dialog-example-dialog-chain.component.html}\r\n *\r\n * @example {@label Full Screen Dialog @id full-screen-dialog}\r\n * @file {@filename component.ts @filepath ./examples/dialog-example-full-screen-dialog.component.ts}\r\n * @file {@filename component.html @filepath ./examples/dialog-example-full-screen-dialog.component.html}\r\n *\r\n */\r\n@Component({\r\n    selector: 'sme-dialog-header',\r\n    template: '<div class=\"sme-padding-horizontal-lg sme-padding-vertical-sm\"><ng-content></ng-content></div>'\r\n})\r\nexport class DialogHeaderComponent {\r\n}\r\n\r\n@Component({\r\n    selector: 'sme-dialog-content',\r\n    template: '<ng-content></ng-content>'\r\n})\r\nexport class DialogContentComponent {\r\n}\r\n\r\n@Component({\r\n    selector: 'sme-dialog-footer',\r\n    template: `<div class=\"sme-layout-dialog-footer\">\r\n    <ng-content></ng-content></div>`\r\n})\r\nexport class DialogFooterComponent {\r\n}\r\n\r\nexport enum DialogCloseReason {\r\n    SoftDismiss = 0,\r\n    CloseButton = 1,\r\n    EscapeKey = 2,\r\n    CompetingDialog = 3\r\n}\r\n\r\nexport class DialogMode {\r\n    public static pane = 'pane';\r\n    public static widePane = 'wide-pane';\r\n    public static compact = 'compact';\r\n    public static compactSquare = 'compact-square';\r\n    public static fullscreen = 'fullscreen';\r\n    public static centered = 'centered';\r\n    public static centeredMedium = 'centered-medium';\r\n    public static centeredLarge = 'centered-large';\r\n    public static notification = 'notification';\r\n}\r\n\r\nexport const modalDialog = 'modal';\r\nexport const alertDialog = 'alert';\r\n\r\n@Component({\r\n    selector: 'sme-dialog',\r\n    templateUrl: './dialog.component.html'\r\n})\r\nexport class DialogComponent extends CoreBaseComponent implements OnChanges, OnDestroy, AfterViewChecked {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'DialogComponent';\r\n    }\r\n\r\n    /**\r\n     * Static constant to provide unique ids for each master view\r\n     */\r\n    private static nextDialogId = 0;\r\n    public dialogClasses: string[];\r\n    public dialogRole = 'alertdialog';\r\n\r\n    public strings = MsftSme.getStrings<Strings>();\r\n\r\n    public dialogLevel = 1;\r\n\r\n    /**\r\n     * A bag of ids generated using @see {masterViewId} and the map returned from @see {createIdBag}\r\n     */\r\n    declare public idBag: MsftSme.StringMap<string>;\r\n    /**\r\n     * The unique id of this master view.\r\n     * This is useful when masterViews need to use an ID but may appear multiple times on the same page.\r\n     * Using this ID as the basis for the controls internal IDs generated in @see {createIdBag} keeps the IDs unique.\r\n     */\r\n    protected dialogId: number;\r\n\r\n    /**\r\n     * The dialog mode to use.\r\n     */\r\n    protected mode: string;\r\n\r\n    /**\r\n     * Whether to allow interaction with elements from outside the dialog especially to support the hovering events.\r\n     */\r\n    @Input() public allowBackgroundInteraction = false;\r\n\r\n    /**\r\n     * Whether to render the dialog background. False to hide the dialog container and make the background transparent.\r\n     * The background color then will be based on the dialog body.\r\n     */\r\n    @Input() public showBackdrop = true;\r\n\r\n    /**\r\n     * Whether to hide the dialog footer.\r\n     */\r\n    @Input() public hideFooter = false;\r\n\r\n    /**\r\n     * Whether to enable the feature of clicking outside of the dialog to close the current dialog.\r\n     * True means clicking outside the dialog will close the dialog. We want this to be set to false when there are forms in the dialog.\r\n     */\r\n    @Input() public clickBackdrop = true;\r\n    @Input() public ariaLabel = '';\r\n    @Input() public ariaDescription = '';\r\n\r\n    /**\r\n     * Sets whether this should be an action pane or a centered dialog\r\n     *\r\n     * @deprecated Use dialogMode instead\r\n     * @param newValue if true, uses a left pane dialog, otherwise a centered dialog\r\n     */\r\n    @Input() public set actionPane(newValue: boolean) {\r\n        if (newValue) {\r\n            this.dialogMode = DialogMode.pane;\r\n        } else {\r\n            this.dialogMode = DialogMode.centered;\r\n        }\r\n\r\n        this.setDialogModeFromInput();\r\n    }\r\n\r\n    /**\r\n     * Indicates the dialog mode to use\r\n     * @see DialogMode\r\n     */\r\n    @Input()\r\n    public set dialogMode(mode: string) {\r\n        this.mode = mode;\r\n    }\r\n\r\n    public get dialogMode() {\r\n        return this.mode;\r\n    }\r\n\r\n    /**\r\n     * Dialog types. Mostly used for accessibility. Valid values:\r\n     * @see modalDialog = 'modal';\r\n     * @see alertDialog = \"alert\";\r\n     */\r\n    @Input() public dialogType = '';\r\n\r\n    /**\r\n     * Flag to determine whether the dialog should have a close button in top right or not\r\n     */\r\n    @Input() public closeButton = false;\r\n\r\n    /**\r\n     * Compact dialog can be full height when displaying on the right side of the screen.\r\n     * It can also be displayed in the middle of the screen that needs to be having paddings to each direction.\r\n     * This compactFullHeight to true will always be 100% height. Otherwise css would control the max height.\r\n     */\r\n    @Input() public compactFullHeight = false;\r\n\r\n    public closeRequested: Subject<DialogCloseReason>;\r\n\r\n    private doAutoFocus = false;\r\n    private isVisible = false;\r\n    public set visible(visible: boolean) {\r\n        this.isVisible = visible;\r\n        this.doAutoFocus = visible;\r\n    }\r\n\r\n    public get visible(): boolean {\r\n        return this.isVisible;\r\n    }\r\n\r\n    constructor(\r\n        private elementRef: ElementRef,\r\n        private changeDetectorRef: ChangeDetectorRef,\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n\r\n        this.mode = DialogMode.pane;\r\n\r\n        // Create closeRequested subject to notify dialogs when a close is requested and how it was requested (DialogCloseReason)\r\n        this.closeRequested = new Subject<DialogCloseReason>();\r\n        this.setDialogModeFromInput();\r\n\r\n        // setup dialog id and idBag\r\n        this.dialogId = DialogComponent.nextDialogId++;\r\n        this.idBag = this.createIdBag();\r\n        MsftSme.forEachKey(this.idBag, (key) => {\r\n            this.idBag[key] = `dialog-${this.dialogId.toString()}-${key}`;\r\n        });\r\n    }\r\n\r\n    // document:keyup.escape is used so that a dialog is not closed when trying to close a tooltip\r\n    @HostListener('document:keyup.escape')\r\n    public onKeyUp(): void {\r\n        if (this.visible) {\r\n            this.onEscapePressed();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Angular Life Cycle hook for After View Checked.\r\n     * When the visibility changes, we are going to focus on the first element that has the autofocus attribute\r\n     */\r\n    public ngAfterViewChecked(): void {\r\n        if (this.doAutoFocus) {\r\n            this.autoFocus();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Completed the closeRequested subject\r\n     */\r\n    public ngOnDestroy(): void {\r\n        this.closeRequested.complete();\r\n    }\r\n\r\n    /**\r\n     * Auto focus on first element that is focusable\r\n     */\r\n    @Debounce(0)\r\n    public autoFocus(): void {\r\n        this.doAutoFocus = false;\r\n        if (this.elementRef.nativeElement) {\r\n            // If the dialog has a loading wheel, focus first goes to the loading wheel then gets lost.\r\n            // TO avoid this, we get the parent element or native element of the dialog, then get the first\r\n            // focusable element in that element\r\n            const element = this.elementRef.nativeElement.parentElement || this.elementRef.nativeElement;\r\n            const firstFocusable = Dom.getFirstFocusableDescendent(element);\r\n            if (firstFocusable) {\r\n                firstFocusable.focus();\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Shows the dialog.\r\n     */\r\n    public show(): void {\r\n        this.visible = true;\r\n    }\r\n\r\n    /**\r\n     * Hides the dialog.\r\n     */\r\n    public hide(): void {\r\n        this.visible = false;\r\n        this.changeDetectorRef.detectChanges();\r\n    }\r\n\r\n    /**\r\n     * Notifies closeRequested subscribers that the backdrop has been clicked, requesting a soft dismiss\r\n     */\r\n    public onBackgroundClicked(): void {\r\n        this.closeRequested.next(DialogCloseReason.SoftDismiss);\r\n    }\r\n\r\n    /**\r\n     * Notifies closeRequested subscribers that the close button has been pressed, requesting a close button dismiss\r\n     */\r\n    public onCloseClicked(): void {\r\n        this.closeRequested.next(DialogCloseReason.CloseButton);\r\n    }\r\n\r\n    public onEscapePressed(): void {\r\n        this.closeRequested.next(DialogCloseReason.EscapeKey);\r\n    }\r\n\r\n    public ngOnChanges(changes: SimpleChanges): void {\r\n        const dialogModeChange = changes['dialogMode'];\r\n        if (dialogModeChange && dialogModeChange.currentValue) {\r\n            this.setDialogModeFromInput();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The function to update the dialog pane width. This function is only available for dialog mode pane.\r\n     * @param input The input value to set the dialog pane width to. if pass in undefined, it will reset the width to default.\r\n     *\r\n     */\r\n    public updateDialogPaneWidth(input: number): void {\r\n        if (this.dialogMode !== DialogMode.pane) {\r\n            return;\r\n        }\r\n\r\n        const backDropContainer = this.elementRef.nativeElement.querySelector('sme-backdrop');\r\n        if (!backDropContainer) {\r\n            return;\r\n        }\r\n\r\n        const dialogPaneContainer = this.elementRef.nativeElement.querySelector('div.sme-layout-dialog-pane');\r\n        if (!dialogPaneContainer) {\r\n            return;\r\n        }\r\n\r\n        if (input === undefined) {\r\n            backDropContainer.style.removeProperty('width');\r\n            backDropContainer.style.removeProperty('right');\r\n            dialogPaneContainer.style.removeProperty('width');\r\n            return;\r\n        }\r\n\r\n        backDropContainer.style.setProperty('width', `${input}px`, 'important');\r\n        backDropContainer.style.setProperty('right', `-${input}px`, 'important');\r\n        dialogPaneContainer.style.setProperty('width', `${input}px`, 'important');\r\n    }\r\n\r\n    protected setDialogModeFromInput() {\r\n        const newValue = this.dialogMode.toLowerCase().trim();\r\n        const classes = ['sme-layout-absolute', 'sme-scheme-dialog', 'sme-animation-transition-width-xs', 'sme-responsive-dialog'];\r\n        const commonPaneClasses = ['sme-position-vertical-none', 'sme-position-right-none'];\r\n\r\n        if (newValue === DialogMode.pane) {\r\n            classes.push(...commonPaneClasses, 'sme-layout-dialog-pane', 'sme-shadow-action-pane');\r\n        } else if (newValue === DialogMode.widePane) {\r\n            classes.push(...commonPaneClasses, 'sme-layout-dialog-wide-pane', 'sme-shadow-action-pane');\r\n        } else if (newValue === DialogMode.compact) {\r\n            classes.push(...commonPaneClasses, 'sme-layout-dialog-compact', 'sme-shadow-action-pane');\r\n            if (this.compactFullHeight) {\r\n                classes.push('sme-layout-dialog-compact-full-height');\r\n            }\r\n        } else if (newValue === DialogMode.compactSquare) {\r\n            classes.push('sme-position-center', 'sme-layout-dialog-centered', 'sme-layout-dialog-compact-square', 'sme-shadow-dialog');\r\n            if (this.compactFullHeight) {\r\n                classes.push('sme-layout-dialog-compact-full-height');\r\n            }\r\n        } else if (newValue === DialogMode.fullscreen) {\r\n            classes.push(...commonPaneClasses, 'sme-layout-dialog-fullscreen', 'sme-shadow-action-pane');\r\n        } else if (newValue === DialogMode.centered) {\r\n            classes.push('sme-position-center', 'sme-layout-dialog-centered', 'sme-shadow-dialog');\r\n        } else if (newValue === DialogMode.centeredMedium) {\r\n            classes.push('sme-position-center', 'sme-layout-dialog-centered-medium', 'sme-shadow-dialog');\r\n        } else if (newValue === DialogMode.centeredLarge) {\r\n            classes.push('sme-position-center', 'sme-layout-dialog-centered-large', 'sme-shadow-dialog');\r\n        } else if (newValue === DialogMode.notification) {\r\n            classes.push('sme-position-top-sm', 'sme-position-right-sm', 'sme-layout-dialog-notification', 'sme-shadow-dialog');\r\n        }\r\n\r\n        classes.push('sme-arrange-stack-v', 'sme-arrange-overflow-auto');\r\n\r\n        this.dialogClasses = classes;\r\n\r\n        // accessibility\r\n        if (this.dialogType) {\r\n            this.dialogRole = this.dialogType === modalDialog ? 'dialog' : 'alertdialog';\r\n        } else {\r\n            // by default centered dialogs are considered as alerts\r\n            const alertModes = [DialogMode.centered, DialogMode.centeredLarge, DialogMode.compactSquare];\r\n            this.dialogRole = alertModes.some(mode => this.dialogMode === mode) ? 'alertdialog' : 'dialog';\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            ariaLabelSpan: '',\r\n            ariaDescriptionSpan: ''\r\n        };\r\n    }\r\n}\r\n","import { Injectable, Optional, SkipSelf } from '@angular/core';\r\nimport { Net } from '@microsoft/windows-admin-center-sdk/core/data/net';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { EnvironmentModuleEntryPointType } from '@microsoft/windows-admin-center-sdk/core/manifest/environment-modules';\r\nimport { EMPTY, Observable, of, ReplaySubject } from 'rxjs';\r\nimport { catchError, map, mergeMap, takeLast } from 'rxjs/operators';\r\nimport { Strings } from '../../generated/strings';\r\nimport { AppContextService } from '../../service/app-context.service';\r\nimport { BaseDialogComponent, DialogOptions, DialogResult } from './base-dialog.component';\r\nimport { ChoiceDialogOptions, ChoiceDialogResult } from './choice-dialog/choice-dialog.component';\r\nimport { ConfirmationDialogOptions, ConfirmationDialogResult } from './confirmation-dialog/confirmation-dialog.component';\r\nimport { ConfirmationListDialogOptions, ConfirmationListDialogResult } from './confirmation-list-dialog/confirmation-list-dialog.component';\r\nimport { DialogCloseReason } from './dialog.component';\r\nimport { MessageDialogOptions } from './message-dialog/message-dialog.component';\r\n\r\nexport enum DialogChangeEvent {\r\n    Show,\r\n    Hide\r\n}\r\n\r\nexport interface DialogEvent {\r\n    dialogId: string;\r\n    changeEvent: DialogChangeEvent;\r\n}\r\n\r\n@Injectable()\r\nexport class DialogService {\r\n    public commonIds = {\r\n        choice: 'sme-common-choice-dialog',\r\n        confirmation: 'sme-common-confirmation-dialog',\r\n        confirmationList: 'sme-common-confirmation-list-dialog',\r\n        message: 'sme-common-message-dialog',\r\n        notificationsPane: 'sme-common-notifications-pane',\r\n        settings: 'sme-common-settings-pane',\r\n        help: 'sme-common-help-pane',\r\n        userPane: 'sme-common-user-pane',\r\n        manageAs: 'sme-common-manage-as-dialog',\r\n        powerShellShowScript: 'sme-common-powershell-show-script',\r\n        credSSPConfirmation: 'sme-credssp-confirmation-dialog',\r\n        userAlive: 'sme-user-alive-dialog',\r\n        postInstall: 'sme-post-install-dialog'\r\n    };\r\n\r\n    public activeDialogsStack: BaseDialogComponent<DialogOptions, DialogResult>[] = [];\r\n\r\n    private strings = MsftSme.getStrings<Strings>().MsftSmeShell.Angular;\r\n    private componentMap: { [index: string]: BaseDialogComponent<DialogOptions, DialogResult> } = {};\r\n    private activeDialogResult: Observable<DialogResult>;\r\n    private dialogOrigins: { [index: string]: HTMLElement } = {};\r\n    private changedEventSubject: ReplaySubject<DialogEvent>;\r\n\r\n    constructor(private appContext: AppContextService, @SkipSelf() @Optional() private parentDialogService?: DialogService) {\r\n        this.changedEventSubject = new ReplaySubject<DialogEvent>(1);\r\n    }\r\n\r\n    /**\r\n     * Gets the subject of notification changed event.\r\n     */\r\n    public get changed(): ReplaySubject<DialogEvent> {\r\n        return this.changedEventSubject;\r\n    }\r\n\r\n    public get currentDialogLevel(): number {\r\n        return this.activeDialogsStack ? this.activeDialogsStack.length + this.iFrameDialogCount : this.iFrameDialogCount;\r\n    }\r\n\r\n    private iFrameDialogCount = 0;\r\n\r\n    /**\r\n     * Registers the dialog with the service.\r\n     *\r\n     * TOptions the type of the dialog options.\r\n     * TResult the type of the dialog results.\r\n     * @param id The unique identifier of the dialog.\r\n     * @param component The dialog component.\r\n     */\r\n    public register<TOptions extends DialogOptions, TResult extends DialogResult>(\r\n        id: string,\r\n        component: BaseDialogComponent<TOptions, TResult>\r\n    ): void {\r\n        if (!id) {\r\n            throw new Error('DialogService.register: ID is required to register a dialog.');\r\n        }\r\n\r\n        if (!component) {\r\n            throw new Error('DialogService.register: A dialog is required to register a dialog.');\r\n        }\r\n\r\n        /**\r\n         * removing until we understand cases where angular can call ngOnInit twice.\r\n         * see: http://stackoverflow.com/questions/42700116/angular2-routing-issue-and-ngoninit-called-twice\r\n         * and @msft-sme/local-users-groups for examples\r\n         */\r\n        // if (this.componentMap[id]) {\r\n        //     console.warn(`DialogService.register: A dialog with the ID \\'${id}\\' has already been registered`);\r\n        // }\r\n\r\n        this.componentMap[id] = component;\r\n    }\r\n\r\n    /**\r\n     * Unregisters the dialog with the service.\r\n     *\r\n     * @param id The unique identifier of the dialog.\r\n     */\r\n    public unregister(id: string): void {\r\n        if (this.componentMap[id]) {\r\n            delete this.componentMap[id];\r\n        }\r\n\r\n        if (this.activeDialogsStack && this.activeDialogsStack.length > 0 && MsftSme.last(this.activeDialogsStack).id === id) {\r\n            this.activeDialogsStack.pop();\r\n        }\r\n    }\r\n\r\n    public addIFrameDialog(): void {\r\n        this.iFrameDialogCount++;\r\n    }\r\n\r\n    public removeIFrameDialog(): void {\r\n        this.iFrameDialogCount = Math.max(this.iFrameDialogCount - 1, 0);\r\n    }\r\n\r\n    /**\r\n     * Shows the dialog.\r\n     *\r\n     * TOptions The type of the dialog options.\r\n     * TResult The result of the dialog.\r\n     * @param id The unique identifier of the dialog.\r\n     * @param options The dialog options.\r\n     */\r\n    public show<TOptions extends DialogOptions, TResult extends DialogResult>(id: string, options: TOptions): Observable<TResult> {\r\n        if (!id) {\r\n            throw new Error('DialogService.show: ID is required to show a dialog.');\r\n        }\r\n\r\n        if (!this.componentMap[id]) {\r\n            if (this.parentDialogService) {\r\n                return this.parentDialogService.show(id, options);\r\n            } else {\r\n                throw new Error(`DialogService.show: No dialog associated with provided ID \\'${id}\\'.`);\r\n            }\r\n        }\r\n\r\n        const newDialog = this.componentMap[id];\r\n        const oldDialog = MsftSme.last(this.activeDialogsStack);\r\n\r\n        // accessibility\r\n        if (options && !(<any>options).isFromRpc) { // if from Rpc then don't resume focus since it will focus back on iframe\r\n            const origin = document.activeElement as HTMLElement;\r\n            if (origin) {\r\n                this.dialogOrigins[id] = origin;\r\n            }\r\n        }\r\n\r\n        // dont do anything unless we have a subscriber\r\n        return of(oldDialog)\r\n            .pipe(\r\n                mergeMap(it => {\r\n                    // create a placeholder for the new dialog result\r\n                    let resultObservable: Observable<TResult>;\r\n                    // remember if there was an active dialog when we started\r\n                    const existingActiveDialog = !!oldDialog;\r\n                    if (existingActiveDialog) {\r\n                        if (oldDialog.keepOpen) {\r\n                            // If the currently active dialog wants to stay open, then keep it open and show the new dialog on top\r\n                            this.activeDialogsStack.push(newDialog);\r\n                            this.overlayOpen(true, newDialog.id);\r\n                            // we set the dialog level as the length of the active dialogs stack\r\n                            newDialog.setLevel(this.currentDialogLevel);\r\n                            this.activeDialogResult = newDialog.show(options)\r\n                                .pipe(map(result => {\r\n                                    this.overlayOpen(false, newDialog.id);\r\n                                    this.activeDialogsStack.pop();\r\n                                    if (oldDialog) {\r\n                                        oldDialog.autoFocus();\r\n                                    }\r\n\r\n                                    return result;\r\n                                }));\r\n                            resultObservable = <Observable<TResult>>this.activeDialogResult;\r\n                        } else {\r\n                            // if there is an active dialog, wait for it to complete, then show a the new one\r\n                            resultObservable = <Observable<TResult>>this.activeDialogResult\r\n                                .pipe(\r\n                                    takeLast(1),\r\n                                    mergeMap(() => {\r\n                                        return this.show(id, options);\r\n                                    }));\r\n                        }\r\n                    } else {\r\n                        // if there is no active dialog, then just show the new one\r\n                        this.activeDialogsStack.push(newDialog);\r\n                        this.overlayOpen(true, newDialog.id);\r\n                        newDialog.setLevel(this.currentDialogLevel);\r\n                        this.activeDialogResult = newDialog.show(options)\r\n                            .pipe(\r\n                                map(result => {\r\n                                    this.overlayOpen(false, newDialog.id);\r\n                                    if (oldDialog) {\r\n                                        oldDialog.autoFocus();\r\n                                    }\r\n\r\n                                    this.activeDialogsStack.pop();\r\n                                    return result;\r\n                                }));\r\n                        resultObservable = <Observable<TResult>>this.activeDialogResult;\r\n                    }\r\n\r\n                    // if we had an active dialog, request the previous dialog to close unless it wants to stay open\r\n                    if (existingActiveDialog && !oldDialog.keepOpen) {\r\n                        oldDialog.closeRequested(DialogCloseReason.CompetingDialog);\r\n                    }\r\n\r\n                    this.emitDialogChangeEvent(id, DialogChangeEvent.Show);\r\n                    return resultObservable;\r\n                }));\r\n    }\r\n\r\n    /**\r\n     * Shows a message dialog with the given options\r\n     *\r\n     * @param options The dialog options.\r\n     * @returns A subject that will be published one time with the dialog result\r\n     * @deprecated Please use 'AppContextService.frame.showDialogMessage' on extensions.\r\n     */\r\n    public showMessage(options: MessageDialogOptions): Observable<DialogResult> {\r\n        // if running from shell, manually launch dialog\r\n        if (this.appContext.rpc.isShell) {\r\n            return this.show(this.commonIds.message, options);\r\n        } else {\r\n            // otherwise ask the shell to do it for us.\r\n            return this.appContext.frame.showDialogMessage({\r\n                buttonText: options.buttonText,\r\n                checkboxText: options.checkboxText,\r\n                externalLink: options.externalLink,\r\n                message: options.message,\r\n                title: options.title\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Hide a message dialog.\r\n     */\r\n    public hideMessage(): void {\r\n        this.hide(this.commonIds.message);\r\n    }\r\n\r\n    /**\r\n     * Shows a choice dialog with the given options.\r\n     *\r\n     * @param options The dialog options.\r\n     * @returns A subject that will be published one time with the dialog result.\r\n     */\r\n    public showChoice(options: ChoiceDialogOptions): Observable<ChoiceDialogResult> {\r\n        if (this.appContext.rpc.isShell) {\r\n            return this.show(this.commonIds.choice, options);\r\n        } else {\r\n            return this.appContext.frame.showDialogChoice({\r\n                cancelButtonText: options.cancelButtonText,\r\n                choices: options.choices,\r\n                confirmButtonText: options.confirmButtonText,\r\n                footnote: options.footnote,\r\n                message: options.message,\r\n                title: options.title\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Hide a choice dialog.\r\n     */\r\n    public hideChoice(): void {\r\n        this.hide<ChoiceDialogResult>(this.commonIds.choice);\r\n    }\r\n\r\n    /**\r\n     * Shows a confirmation dialog with the given options\r\n     *\r\n     * @param options The dialog options.\r\n     * @returns A subject that will be published one time with the dialog result\r\n     * @deprecated since 02/20/18. Please use 'AppContextService.frame.showDialogConfirmation' instead\r\n     */\r\n    public showConfirmation(options: ConfirmationDialogOptions): Observable<ConfirmationDialogResult> {\r\n        let confirmationObservable;\r\n\r\n        // if running from shell, manually launch dialog\r\n        if (this.appContext.rpc.isShell) {\r\n            confirmationObservable = this.show(this.commonIds.confirmation, options);\r\n        } else {\r\n            // otherwise ask the shell to do it for us.\r\n            confirmationObservable = this.appContext.frame.showDialogConfirmation({\r\n                cancelButtonText: options.cancelButtonText,\r\n                checkboxText: options.checkboxText,\r\n                confirmButtonText: options.confirmButtonText,\r\n                doubleCheckText: options.doubleCheckText,\r\n                message: options.message,\r\n                title: options.title,\r\n                externalLink: options.externalLink\r\n            });\r\n        }\r\n\r\n        return confirmationObservable.pipe(map((response: ConfirmationDialogResult) => {\r\n            return response || { confirmed: false, checkboxResult: false };\r\n        }));\r\n    }\r\n\r\n    /**\r\n     * Hide a confirmation dialog.\r\n     */\r\n    public hideConfirmation(): void {\r\n        this.hide(this.commonIds.confirmation);\r\n    }\r\n\r\n    /**\r\n     * Shows a confirmation list dialog with the given options\r\n     *\r\n     * @param options The dialog options.\r\n     * @returns A subject that will be published one time with the dialog result\r\n     */\r\n    public showConfirmationList(options: ConfirmationListDialogOptions): Observable<ConfirmationListDialogResult> {\r\n        return this.show(this.commonIds.confirmationList, options);\r\n    }\r\n\r\n    /**\r\n     * Hide a confirmation list  dialog.\r\n     */\r\n    public hideConfirmationList(): void {\r\n        this.hide(this.commonIds.confirmationList);\r\n    }\r\n\r\n    /**\r\n     * Hides the dialog.\r\n     *\r\n     * TResult The type of the dialog result.\r\n     * @param id The unique identifier of the dialog.\r\n     * @param result The result of the dialog.\r\n     */\r\n    public hide<TResult extends DialogResult>(id: string, result?: TResult): void {\r\n        if (!id) {\r\n            throw new Error('DialogService.hide: ID is required to hide a dialog.');\r\n        }\r\n\r\n        if (!this.componentMap[id]) {\r\n            if (this.parentDialogService) {\r\n                this.parentDialogService.hide(id, result);\r\n                return;\r\n            } else {\r\n                throw new Error(`DialogService.hide: No dialog associated with provided ID \\'${id}\\'.`);\r\n            }\r\n        }\r\n\r\n        this.componentMap[id].hide(result);\r\n        this.emitDialogChangeEvent(id, DialogChangeEvent.Hide);\r\n    }\r\n\r\n    /**\r\n     * Send Rpc request to shell to add/remove overlay\r\n     * @param overlay true: add, false: remove\r\n     * @param id id of the dialog\r\n     */\r\n    public overlayOpen(overlay: boolean, id: string): void {\r\n        const startOverlay = MsftSme.isExtension()\r\n            && (MsftSme.entryPointType() === EnvironmentModuleEntryPointType.Tool\r\n                || MsftSme.entryPointType() === EnvironmentModuleEntryPointType.SettingsForm);\r\n        if (startOverlay) {\r\n            // there could be multiple dialog service instances for some reason\r\n            this.appContext.registerDialogService(this, id);\r\n            this.appContext.frame.overlayOpen(overlay, id)\r\n                .pipe(\r\n                    catchError(error => {\r\n                        const notification = this.appContext.notification.create(null);\r\n                        notification.showError(this.strings.Overlay.openErrorTitle, Net.getErrorMessage(error));\r\n                        return EMPTY;\r\n                    }));\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Handle clicking on dialog background in shell\r\n     * @param dialogId id of dialog whose background was clicked\r\n     */\r\n    public overlayClicked(dialogId: string): boolean {\r\n        const lastDialog = MsftSme.last(this.activeDialogsStack);\r\n        if (lastDialog && lastDialog.id === dialogId) {\r\n            lastDialog.onBackgroundClicked();\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Resume focus back to the original element that shows the dialog.\r\n     * @param id The id of dialog\r\n     * @param delay If provided, delays resuming focus for a period of time in ms\r\n     */\r\n    public resumeFocus(id: string, delay = 0): void {\r\n        // check to see if there is a dialog stack currently.\r\n        const wasInDialogStack = this.activeDialogsStack && this.activeDialogsStack.length > 0;\r\n        if (this.dialogOrigins[id]) {\r\n            setTimeout(\r\n                () => {\r\n                    const isInDialogStack = this.activeDialogsStack && this.activeDialogsStack.length > 0;\r\n                    if (!wasInDialogStack && isInDialogStack) {\r\n                        // a dialog was opened during the setTimeout.\r\n                        // This means that the new dialog will resume focus to the wrong element and the new dialog will open unfocused.\r\n                        this.dialogOrigins[this.activeDialogsStack[0].id] = this.dialogOrigins[id];\r\n                        delete this.dialogOrigins[id];\r\n                    } else if (this.appContext.frame.activeRpcDialogsOrigins.size > 0) {\r\n                        // an rpc dialog was opened during the setTimeout. So just wait a little longer and then refocus\r\n                        this.resumeFocus(id, 100);\r\n                    } else {\r\n                        const element = this.dialogOrigins[id];\r\n                        const focusOn: HTMLElement = Dom.getFocusOrigin(element);\r\n                        if (focusOn) {\r\n                            focusOn.focus();\r\n                        }\r\n                        delete this.dialogOrigins[id];\r\n                    }\r\n\r\n                }, delay);\r\n        }\r\n    }\r\n\r\n    public emitDialogChangeEvent(dialogId: String, changeEvent: DialogChangeEvent) {\r\n        this.changedEventSubject.next(<DialogEvent>{ dialogId: dialogId, changeEvent: changeEvent });\r\n    }\r\n}\r\n","<div class=\"sme-settings sme-layout-absolute-phone-up sme-position-inset-none sme-arrange-stack-v sme-padding-bottom-lg\">\r\n  <header *ngIf=\"propertySchema.label\" class=\"sme-position-flex-none sme-layout-tool-header\">\r\n    <h3 class=\"sme-position-flex-none\">{{localize(propertySchema.label)}}</h3>\r\n  </header>\r\n  <div class=\"sme-position-flex-auto sme-arrange-stack-h sme-layout-relative\">\r\n    <div class=\"sme-layout-absolute sme-position-inset-none sme-arrange-stack-h\">\r\n      <div class=\"sme-settings-navigation sme-position-flex-none\">\r\n        <nav role=\"tablist\" class=\"sme-padding-horizontal-lg sme-arrange-stack-v\">\r\n          <ul\r\n            class=\"sme-position-flex-auto sme-arrange-stack-v sme-arrange-overflow-hide-x sme-arrange-overflow-auto-y\">\r\n            <li *ngFor=\"let group of propertySchema.options.groups\">\r\n              <nav>\r\n                <h5 class=\"sme-margin-top-xs sme-margin-bottom-xs\" *ngIf=\"group.displayName\"\r\n                  [title]=\"localize(group.displayName)\">{{localize(group.displayName)}}</h5>\r\n                <div *ngFor=\"let form of group.forms\">\r\n                  <a *ngIf=\"!context.isEditorMode && propertySchema.options.supportRoute\" #navLink\r\n                    class=\"sme-padding-squish-v-sm sme-arrange-stack-h sme-scheme-nav-item\"\r\n                    role=\"tab\" [title]=\"localize(form.displayName)\"\r\n                    [routerLink]=\"baseUrl+'/form/'+form.name\"\r\n                    [class.sme-active]=\"form.name===activeFormName\" (click)=\"switchForm(form.name)\">\r\n                    <div class=\"sme-icon sme-margin-right-xs {{form.icon}}\"></div>\r\n                    <span class=\"ellipsis sme-position-flex-auto\">\r\n                      {{localize(form.displayName)}}\r\n                    </span>\r\n                    <div class=\"sme-width-sm sme-position-center-h-inline\"><span\r\n                        *ngIf=\"isFormDirty(form.name)\">*</span></div>\r\n                  </a>\r\n                  <a *ngIf=\"!(!context.isEditorMode && propertySchema.options.supportRoute)\" #navLink\r\n                    class=\"sme-padding-squish-v-sm sme-arrange-stack-h sme-scheme-nav-item\"\r\n                    [title]=\"localize(form.displayName)\" role=\"tab\" (click)=\"switchForm(form.name)\"\r\n                    [class.sme-active]=\"form.name===activeFormName\">\r\n                    <div class=\"sme-icon sme-margin-right-xs {{form.icon}}\"></div>\r\n                    <span class=\"ellipsis sme-position-flex-auto\">\r\n                      {{localize(form.displayName)}}\r\n                    </span>\r\n                    <div class=\"sme-width-sm sme-position-center-h-inline\"><span\r\n                        *ngIf=\"isFormDirty(form.name)\">*</span></div>\r\n                  </a>\r\n                </div>\r\n              </nav>\r\n            </li>\r\n          </ul>\r\n        </nav>\r\n      </div>\r\n      <div class=\"sme-position-flex-auto sme-layout-relative\">\r\n        <div class=\"sme-layout-absolute sme-position-inset-none sme-arrange-overflow-auto\">\r\n          <form *ngFor=\"let property of propertySchema.properties; let i = index\">\r\n            <div [class.sme-layout-none]=\"activeFormName!==property.name\"\r\n              class=\"sme-layout-absolute-phone-up sme-position-inset-none sme-arrange-stack-v\">\r\n              <!-- <sme-schema-field-host #fieldHost [propertySchema]=\"property\" [(data)]=\"data[property.name]\"\r\n          [context]=\"context\" (dataMarkedAsDirty)=\"markDataAsDirty(property.name)\" class=\"sme-position-flex-auto\">\r\n        </sme-schema-field-host> -->\r\n              <sme-schema-field-host #fieldHost [propertySchema]=\"property\" [(data)]=\"data[property.name]\"\r\n                [context]=\"context\" class=\"sme-position-flex-auto\">\r\n              </sme-schema-field-host>\r\n              <div *ngIf=\"!getFooterButtonHideOption(property.name)\" class=\"sme-position-flex-none sme-focus-zone\">\r\n                <button type=\"submit\" class=\"sme-button-primary\"\r\n                  (click)=\"onSaveClick(property.name);$event.preventDefault()\"\r\n                  [smeDisabled]=\"!(isFormDirty(property.name) && isFormValid(property.name) && !isFormBusy(property.name))\">{{getFooterButtonText(property.name,'save')}}</button>\r\n                <button type=\"button\" (click)=\"onDiscardClick(property.name)\"\r\n                  [smeDisabled]=\"!(isFormDirty(property.name) && !isFormBusy(property.name))\">{{getFooterButtonText(property.name,'discard')}}</button>\r\n                <button type=\"button\"\r\n                  (click)=\"onCloseClick()\">{{getFooterButtonText(property.name,'close')}}</button>\r\n              </div>\r\n            </div>\r\n          </form>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Component, ElementRef, OnDestroy, OnInit, QueryList, ViewChildren } from '@angular/core';\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { AppContextService } from '../../service/app-context.service';\r\nimport { ConfirmationDialogOptions } from '../dialog/confirmation-dialog/confirmation-dialog.component';\r\nimport { DialogService } from '../dialog/dialog.service';\r\nimport { ObjectPropertySchemaFieldLoaderComponent, SchemaFieldHostComponent } from './schema-field-host.component';\r\nimport { DataSchema, SchemaArrayProperty, SchemaObjectProperty, SchemaPrimitiveType } from './schema-models';\r\nimport { SchemaDataTypeStore } from './schema-store';\r\nimport { SchemaUtilities } from './schema-utilities';\r\n@Component({\r\n    templateUrl: './tabbed-form-loader.component.html'\r\n})\r\nexport class TabbedFormLoaderComponent extends ObjectPropertySchemaFieldLoaderComponent implements OnInit, OnDestroy {\r\n    private cancelNextRouteGuard = false;\r\n    private subscriptions: Subscription[] = [];\r\n    private originalData: FormData;\r\n    @ViewChildren(SchemaFieldHostComponent)\r\n    declare protected fieldHostComponents: QueryList<SchemaFieldHostComponent>;\r\n    @ViewChildren('navLink')\r\n    private navLinkElements: QueryList<ElementRef>;\r\n    public baseUrl: string;\r\n    public activeFormName: string;\r\n    constructor(\r\n        private appContextService: AppContextService,\r\n        private activatedRoute: ActivatedRoute,\r\n        private router: Router,\r\n        private dialogService: DialogService) {\r\n        super();\r\n    }\r\n\r\n    public static registerDataType() {\r\n        SchemaDataTypeStore.registerDataType({\r\n            type: SchemaPrimitiveType.Object,\r\n            format: 'tabbed-form',\r\n            description: 'It\\'s a special form field control that recursively renders all the properties as fields. '\r\n                + 'This is like a container of other schema items.',\r\n            loaderComponent: TabbedFormLoaderComponent,\r\n            optionProperties: [\r\n                {\r\n                    type: SchemaPrimitiveType.Boolean,\r\n                    format: 'checkbox',\r\n                    name: 'supportRoute',\r\n                    label: 'actual_string:Support Route',\r\n                    required: false,\r\n                    options: {\r\n                    }\r\n                },\r\n                <SchemaArrayProperty>{\r\n                    type: SchemaPrimitiveType.Array,\r\n                    format: 'simple-list',\r\n                    name: 'groups',\r\n                    label: 'actual_string:Groups',\r\n                    required: false,\r\n                    options: {\r\n                    },\r\n                    item: <SchemaObjectProperty>{\r\n                        type: SchemaPrimitiveType.Object,\r\n                        format: 'default',\r\n                        required: false,\r\n                        options: {\r\n                            columnCount: 1,\r\n                            hideHeader: false,\r\n                            collapsible: {\r\n                                yes: false,\r\n                                state: 'collapsed'\r\n                            }\r\n                        },\r\n                        properties: [\r\n                            {\r\n                                type: SchemaPrimitiveType.String,\r\n                                format: 'resource-string-picker',\r\n                                name: 'displayName',\r\n                                label: 'actual_string:Display Name',\r\n                                options: {\r\n                                }\r\n                            },\r\n                            <SchemaArrayProperty>{\r\n                                type: SchemaPrimitiveType.Array,\r\n                                format: 'simple-list',\r\n                                name: 'forms',\r\n                                label: 'actual_string:Forms',\r\n                                required: false,\r\n                                options: {\r\n                                },\r\n                                item: <SchemaObjectProperty>{\r\n                                    type: SchemaPrimitiveType.Object,\r\n                                    format: 'default',\r\n                                    required: false,\r\n                                    options: {\r\n                                        columnCount: 1,\r\n                                        hideHeader: false,\r\n                                        collapsible: {\r\n                                            yes: false,\r\n                                            state: 'collapsed'\r\n                                        }\r\n                                    },\r\n                                    properties: [\r\n                                        {\r\n                                            type: SchemaPrimitiveType.String,\r\n                                            format: 'textbox',\r\n                                            name: 'name',\r\n                                            label: 'actual_string:Name',\r\n                                            required: false,\r\n                                            options: {\r\n                                                multipleline: false\r\n                                            }\r\n                                        },\r\n                                        {\r\n                                            type: SchemaPrimitiveType.String,\r\n                                            format: 'resource-string-picker',\r\n                                            name: 'displayName',\r\n                                            label: 'actual_string:Display Name',\r\n                                            required: false,\r\n                                            options: {\r\n                                            }\r\n                                        },\r\n                                        {\r\n                                            type: SchemaPrimitiveType.String,\r\n                                            format: 'textbox',\r\n                                            name: 'icon',\r\n                                            label: 'actual_string:Icon',\r\n                                            required: false,\r\n                                            options: {\r\n                                                multipleline: false\r\n                                            }\r\n                                        },\r\n                                        {\r\n                                            type: SchemaPrimitiveType.String,\r\n                                            format: 'resource-string-picker',\r\n                                            name: 'saveButtonText',\r\n                                            label: 'actual_string:Save button text',\r\n                                            required: false,\r\n                                            defaultValue: 'resources:strings:MsftSmeShell.Angular.Common.save',\r\n                                            options: {\r\n                                                multipleline: false\r\n                                            }\r\n                                        },\r\n                                        {\r\n                                            type: SchemaPrimitiveType.String,\r\n                                            format: 'resource-string-picker',\r\n                                            name: 'discardButtonText',\r\n                                            label: 'actual_string:Discard Button Text',\r\n                                            required: false,\r\n                                            defaultValue: 'resources:strings:MsftSmeShell.Angular.Common.discard',\r\n                                            options: {\r\n                                                multipleline: false\r\n                                            }\r\n                                        },\r\n                                        {\r\n                                            type: SchemaPrimitiveType.String,\r\n                                            format: 'resource-string-picker',\r\n                                            name: 'closeButtonText',\r\n                                            label: 'actual_string:Cancel Button Text',\r\n                                            required: false,\r\n                                            defaultValue: 'resources:strings:MsftSmeShell.Angular.Common.close',\r\n                                            options: {\r\n                                                multipleline: false\r\n                                            }\r\n                                        },\r\n                                        {\r\n                                            type: SchemaPrimitiveType.Boolean,\r\n                                            format: 'toggle-switch',\r\n                                            name: 'hideFooterActionButton',\r\n                                            label: 'actual_string:Hide action buttons in footer'\r\n                                        }\r\n                                    ],\r\n                                    emptyByDefault: false\r\n                                }\r\n                            }\r\n                        ],\r\n                        emptyByDefault: false\r\n                    }\r\n                }\r\n            ],\r\n            predefinedObjectProperties: [\r\n                <SchemaObjectProperty>{\r\n                    type: SchemaPrimitiveType.Object,\r\n                    format: 'default',\r\n                    name: '<form 1>',\r\n                    properties: []\r\n                },\r\n                <SchemaObjectProperty>{\r\n                    type: SchemaPrimitiveType.Object,\r\n                    format: 'default',\r\n                    name: '<form 2>',\r\n                    properties: []\r\n                },\r\n                <SchemaObjectProperty>{\r\n                    type: SchemaPrimitiveType.Object,\r\n                    format: 'default',\r\n                    name: '<form 3>',\r\n                    properties: []\r\n                }\r\n            ],\r\n            tags: ['form-container']\r\n        });\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.baseUrl = this.getBaseUrl();\r\n        if (this.baseUrl.indexOf('?') !== -1) {\r\n            this.baseUrl = this.baseUrl.split('?')[0];\r\n        }\r\n        this.subscriptions.push(this.activatedRoute.params.subscribe(params => {\r\n            this.activeFormName = params.name;\r\n            if (this.activeFormName) {\r\n                this.executeFormAction('switch form', this.activeFormName);\r\n            }\r\n        }));\r\n        this.originalData = SchemaUtilities.deepCopy(this.data);\r\n\r\n        for (const formName in this.data) {\r\n            if (this.data.hasOwnProperty(formName)) {\r\n                ((currentFormName: string) => {\r\n                    this.executeFormAction('initialize form', {\r\n                        formName: currentFormName,\r\n                        onSucceeded: (formData): void => {\r\n                            this.data[currentFormName] = formData;\r\n                            this.originalData[currentFormName] = SchemaUtilities.deepCopy(formData);\r\n                            if (this.fieldHostComponents) {\r\n                                const fieldHostComponents = this.fieldHostComponents.toArray();\r\n                                const fieldHostComponent = fieldHostComponents.find(item => item.propertySchema.name === currentFormName);\r\n                                if (fieldHostComponent) {\r\n                                    fieldHostComponent.markAsPristine();\r\n                                }\r\n                            }\r\n                        }\r\n                    });\r\n                })(formName);\r\n            }\r\n        }\r\n\r\n        setTimeout(() => {\r\n            if (!this.activeFormName) {\r\n                this.navLinkElements.first.nativeElement.click();\r\n            }\r\n        });\r\n    }\r\n    public ngOnDestroy() {\r\n        this.subscriptions.forEach(sub => sub?.unsubscribe());\r\n    }\r\n\r\n    public setupSchema(schema: DataSchema): void {\r\n        for (let i = 0; i < schema.properties.length; i++) {\r\n            schema.properties[i].disabledCondition = 'formController.controller.' + schema.properties[i].name + '.isDisabled';\r\n            schema.properties[i].options.busyCondition = 'formController.controller.' + schema.properties[i].name + '.isBusy';\r\n        }\r\n    }\r\n\r\n    public switchForm(formName: string) {\r\n        this.activeFormName = formName;\r\n        this.executeFormAction('switch form', this.activeFormName);\r\n        this.cancelNextRouteGuard = true;\r\n    }\r\n\r\n    public setFormOriginalData(formName, data: any): void {\r\n        this.originalData[formName] = SchemaUtilities.deepCopy(data);\r\n    }\r\n    public isFormBusy(formName: string): boolean {\r\n        let result = false;\r\n        const currentFormSchema = SchemaUtilities.getPropertySchemaByName(this.propertySchema, this.activeFormName);\r\n        if (currentFormSchema && currentFormSchema.options && currentFormSchema.options.busyCondition) {\r\n            result = this.evalExpression(currentFormSchema.options.busyCondition);\r\n        }\r\n        if (!result) {\r\n            result = this.evalExpression(currentFormSchema.disabledCondition);\r\n        }\r\n        return result;\r\n    }\r\n    public isFormDirty(formName: string): boolean {\r\n        let result = false;\r\n        if (this.fieldHostComponents) {\r\n            const fieldHostComponents = this.fieldHostComponents.toArray();\r\n            const fieldHostComponent = fieldHostComponents.find(item => item.propertySchema.name === formName);\r\n            if (fieldHostComponent) {\r\n                result = fieldHostComponent.isDirty();\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n\r\n    public getFooterButtonHideOption(formName: string): boolean {\r\n        let result = false;\r\n\r\n        for (let i = 0; i < this.propertySchema.options.groups.length; i++) {\r\n            for (let j = 0; j < this.propertySchema.options.groups[i].forms.length; j++) {\r\n                if (this.propertySchema.options.groups[i].forms[j].name === formName) {\r\n                    result = this.propertySchema.options.groups[i].forms[j].hideFooterActionButton;\r\n                }\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n    public getFooterButtonText(formName: string, button: string): string {\r\n        let result = '';\r\n\r\n        for (let i = 0; i < this.propertySchema.options.groups.length; i++) {\r\n            for (let j = 0; j < this.propertySchema.options.groups[i].forms.length; j++) {\r\n                if (this.propertySchema.options.groups[i].forms[j].name === formName) {\r\n                    switch (button) {\r\n                        case 'save':\r\n                            result = this.localize(this.propertySchema.options.groups[i].forms[j].saveButtonText);\r\n                            break;\r\n                        case 'discard':\r\n                            result = this.localize(this.propertySchema.options.groups[i].forms[j].discardButtonText);\r\n                            break;\r\n                        case 'close':\r\n                            result = this.localize(this.propertySchema.options.groups[i].forms[j].closeButtonText);\r\n                            break;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n    public isFormValid(formName: string): boolean {\r\n        let result = false;\r\n        if (this.fieldHostComponents) {\r\n            const fieldHostComponents = this.fieldHostComponents.toArray();\r\n            const fieldHostComponent = fieldHostComponents.find(item => item.propertySchema.name === formName);\r\n            if (fieldHostComponent) {\r\n                result = fieldHostComponent.isValid();\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    public onSaveClick(formName: string): void {\r\n        this.executeFormAction('submit', {\r\n            formName: formName,\r\n            onSucceeded: (): void => {\r\n                if (this.fieldHostComponents) {\r\n                    const fieldHostComponents = this.fieldHostComponents.toArray();\r\n                    const fieldHostComponent = fieldHostComponents.find(item => item.propertySchema.name === formName);\r\n                    if (fieldHostComponent) {\r\n                        fieldHostComponent.markAsPristine();\r\n                    }\r\n                }\r\n            }\r\n        });\r\n    }\r\n    public onDiscardClick(formName: string): void {\r\n        let formDataOverriding = null;\r\n        this.executeFormAction('reset form', {\r\n            formName: formName,\r\n            onSucceeded: (formData): void => {\r\n                formDataOverriding = formData;\r\n            }\r\n        });\r\n\r\n        this.data[formName] = formDataOverriding || SchemaUtilities.deepCopy(this.originalData[formName]);\r\n        if (this.fieldHostComponents) {\r\n            const fieldHostComponents = this.fieldHostComponents.toArray();\r\n            const fieldHostComponent = fieldHostComponents.find(item => item.propertySchema.name === formName);\r\n            if (fieldHostComponent) {\r\n                fieldHostComponent.markAsPristine();\r\n            }\r\n        }\r\n    }\r\n    public canDeactivate(\r\n        route: ActivatedRouteSnapshot,\r\n        state: RouterStateSnapshot,\r\n        confirmationDialogOptions: ConfirmationDialogOptions\r\n    ): Observable<boolean> | Promise<boolean> | boolean {\r\n        let continueNavigation: Observable<boolean> | Promise<boolean> | boolean = true;\r\n\r\n        if (!this.cancelNextRouteGuard) {\r\n            let isFormDirty = false;\r\n            for (const formName in this.data) {\r\n                if (this.data.hasOwnProperty(formName)) {\r\n                    if (this.isFormDirty(formName)) {\r\n                        isFormDirty = true;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            if (isFormDirty) {\r\n                continueNavigation = this.dialogService\r\n                    .showConfirmation(confirmationDialogOptions)\r\n                    .pipe(\r\n                        map((result) => {\r\n                            // The default is to continue editing\r\n                            const discardChanges = !result.confirmed;\r\n                            return discardChanges;\r\n                        }));\r\n\r\n                return continueNavigation;\r\n            }\r\n        }\r\n\r\n        this.cancelNextRouteGuard = false;\r\n\r\n        return continueNavigation;\r\n    }\r\n\r\n    public onCloseClick(): void {\r\n        this.executeFormAction('close');\r\n    }\r\n\r\n    private getBaseUrl(): string {\r\n        let result = this.router.url;\r\n        for (let i = 0; i < this.propertySchema.properties.length; i++) {\r\n            result = result.replace('/form/' + this.propertySchema.properties[i].name, '');\r\n        }\r\n        return decodeURI(result);\r\n    }\r\n}\r\n\r\nexport class TabbedFormController {\r\n    public controller: { [formName: string]: TabbedFormItemController<any, any> } = {};\r\n}\r\n\r\nexport abstract class TabbedFormItemController<TDataModel, TViewModel> {\r\n    private isBusyInternal = true;\r\n    private isDisabledInternal = false;\r\n\r\n    public abstract loadData(): Promise<TDataModel>;\r\n    public abstract convertDataModelToViewModel(dataModel: TDataModel): TViewModel;\r\n    public abstract mergeViewModelToDataModel(viewModel: TViewModel, dataModel: TDataModel): TDataModel;\r\n    public abstract submitData(dataModel: TDataModel): Promise<void>;\r\n    public abstract onSaving(viewModel: TViewModel): void;\r\n    public abstract onFetchError(error: any): void;\r\n    public abstract onSaveError(error: any): void;\r\n    public abstract onSaveSuccess(viewModel: TViewModel): void;\r\n\r\n    public isBusy(): boolean {\r\n        return this.isBusyInternal;\r\n    }\r\n\r\n    public isDisabled(): boolean {\r\n        return this.isDisabledInternal;\r\n    }\r\n\r\n    public initialize(): Promise<TViewModel> {\r\n        return new Promise<TViewModel>((resolve, reject) => {\r\n            this.loadData().then(result => {\r\n                const viewModel = this.convertDataModelToViewModel(result);\r\n                this.isBusyInternal = false;\r\n                resolve(viewModel);\r\n            });\r\n        });\r\n    }\r\n\r\n    public saveData(viewModel: TViewModel): Promise<void> {\r\n        this.onSaving(viewModel);\r\n        this.isDisabledInternal = true;\r\n        return new Promise<void>((resolve, reject) => {\r\n            this.loadData().then(result => {\r\n                const newDataModel = this.mergeViewModelToDataModel(viewModel, result);\r\n                this.submitData(newDataModel).then(() => {\r\n                    this.isDisabledInternal = false;\r\n                    this.onSaveSuccess(viewModel);\r\n                    resolve();\r\n                },\r\n                    reason => {\r\n                        this.isDisabledInternal = false;\r\n                        this.onSaveError(reason);\r\n                        reject(reason);\r\n                    });\r\n            });\r\n        });\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { DisabledModule } from '../../directives/disabled/disabled.module';\r\nimport { ChecklistFormFieldLoaderComponent } from '../form/form-field/checklist/checklist-form-field.component';\r\nimport { ObjectDefaultFormFieldLoaderComponent } from '../form/form-field/object/object-default-form-field-loader.component';\r\nimport { LayoutModule } from '../layout/layout.module';\r\nimport { LoadingWheelModule } from '../loading-wheel/loading-wheel.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { BasicFormLoaderComponent } from './basic-form-loader.component';\r\nimport { DataOnlyFormFieldLoaderComponent } from './data-only-form-field-loader.component';\r\nimport { SchemaFieldHostComponent } from './schema-field-host.component';\r\nimport { TabbedFormLoaderComponent } from './tabbed-form-loader.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        SchemaFieldHostComponent,\r\n        TabbedFormLoaderComponent,\r\n        BasicFormLoaderComponent,\r\n        DataOnlyFormFieldLoaderComponent\r\n    ],\r\n    exports: [\r\n        SchemaFieldHostComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        LayoutModule,\r\n        RouterModule,\r\n        LoadingWheelModule,\r\n        DisabledModule,\r\n        TooltipModule\r\n    ]\r\n})\r\nexport class SchemaFieldHostModule {\r\n    constructor() {\r\n        BasicFormLoaderComponent.registerDataType();\r\n        DataOnlyFormFieldLoaderComponent.registerDataType();\r\n        ObjectDefaultFormFieldLoaderComponent.registerDataType();\r\n        TabbedFormLoaderComponent.registerDataType();\r\n        ChecklistFormFieldLoaderComponent.registerDataType();\r\n    }\r\n}\r\n","import { ElementRef, Injectable } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/index';\r\n\r\n/**\r\n * A re-usable form field accessibility manager.\r\n */\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class FormFieldAccessibilityManagerBaseService {\r\n    /**\r\n     * The focus handler on delete/add if the form field is a list.\r\n     * @param value The value for the list form field.\r\n     * @param addButton The component reference for the add button.\r\n     * @param hostElement The host element reference.\r\n     * @param isDelete Determine if the action is delete.\r\n     * @returns void\r\n     */\r\n    public listFormFieldFocusHandlerOnKeyboardAction(value: string[], addButton: ElementRef | undefined, hostElement: ElementRef, isDelete = true): void {\r\n        // If there are no items in the list, focus on the add button.\r\n        if (!value || !value.length) {\r\n            this.deferredFocusOnAddButton(addButton);\r\n            return;\r\n        }\r\n\r\n        // Otherwise focus on the either the first input fields when it is delete or the last input field when it is add.\r\n        this.deferredFocusOnInputFields(hostElement, value, isDelete);\r\n    }\r\n\r\n    /**\r\n     * The focus handler on delete/add if the form field is a list. And the list is built with a specific selector.\r\n     * @param value The value for the list form field.\r\n     * @param addButton The component reference for the add button.\r\n     * @param hostElement The host element reference.\r\n     * @param selector The selector for the input fields.\r\n     * @returns void\r\n     */\r\n    public listFormFieldFocusHandlerOnKeyboardActionBySelector(value: string[], addButton: ElementRef | undefined, hostElement: ElementRef, selector: string): void {\r\n        // If there are no items in the list, focus on the add button.\r\n        if (!value || !value.length) {\r\n            this.deferredFocusOnAddButton(addButton);\r\n            return;\r\n        }\r\n\r\n        // Otherwise focus on the either the first input fields when it is delete or the last input field when it is add.\r\n        this.deferredFocusOnTargetBySelector(value, hostElement, selector);\r\n    }\r\n\r\n    /**\r\n     * It handles the focus on the input field by index if value is type of any[].\r\n     * @param hostElement the host form field element.\r\n     * @param index the index of the input field to focus on.\r\n     * @returns void.\r\n     */\r\n    public focusOnInputByIndex(hostElement: ElementRef, index: number): void {\r\n        const inputs = hostElement.nativeElement.querySelectorAll('input');\r\n        if (index < 0 || index >= inputs.length) {\r\n            return;\r\n        }\r\n\r\n        inputs[index].focus();\r\n    }\r\n\r\n    @Debounce()\r\n    public deferredFocusOnTargetBySelector(value: string[], hostElement: ElementRef, selector: string): void {\r\n        if (!value || !value.length) {\r\n            return;\r\n        }\r\n\r\n        const targets = hostElement.nativeElement.querySelectorAll(selector);\r\n        if (!targets || !targets.length) {\r\n            return;\r\n        }\r\n\r\n        targets[0].focus();\r\n    }\r\n\r\n    @Debounce()\r\n    protected deferredFocusOnAddButton(addButton: ElementRef | undefined) {\r\n        if (!addButton) {\r\n            return;\r\n        }\r\n\r\n        addButton.nativeElement.focus();\r\n    }\r\n\r\n    @Debounce()\r\n    protected deferredFocusOnInputFields(hostElement: ElementRef, value: string[], isDelete = true): void {\r\n        if (!value || !value.length) {\r\n            return;\r\n        }\r\n\r\n        this.focusOnInputByIndex(hostElement, isDelete ? 0 : value.length - 1);\r\n    }\r\n}\r\n","import { ElementRef, Injectable } from '@angular/core';\r\nimport { FormFieldAccessibilityManagerBaseService } from '../form-field-accessibility-manager-base.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ArrayFormFieldAccessibilityManagerService {\r\n    private readonly firstFormFieldInArrayItemSelector = 'sme-accordion sme-accordion-panel:last-of-type input';\r\n\r\n    constructor(protected formFieldAccessibilityManagerBaseService: FormFieldAccessibilityManagerBaseService) {}\r\n\r\n    /**\r\n     * It handles the focus when deleting an item from the list.\r\n     * @param value the value for the list.\r\n     * @param addButton the element reference for the add button.\r\n     * @param hostElement the element reference for the host element.\r\n     * @returns void\r\n     */\r\n    public delete(value: any[], addButton: ElementRef, hostElement: ElementRef): void {\r\n        this.formFieldAccessibilityManagerBaseService.listFormFieldFocusHandlerOnKeyboardActionBySelector(value, addButton, hostElement, this.firstFormFieldInArrayItemSelector);\r\n    }\r\n\r\n    /**\r\n     * It handles the focus when adding an item to the list.\r\n     * @param value the value for the list.\r\n     * @param addButton the element reference for the add button.\r\n     * @param hostElement the element reference for the host element.\r\n     * @returns void\r\n     */\r\n    public add(value: any[], addButton: ElementRef, hostElement: ElementRef): void {\r\n        this.formFieldAccessibilityManagerBaseService.listFormFieldFocusHandlerOnKeyboardActionBySelector(value, addButton, hostElement, this.firstFormFieldInArrayItemSelector);\r\n    }\r\n\r\n    /**\r\n     * It handles the focus when promoting an item in the list.\r\n     * @param hostElement The element reference for the host element.\r\n     * @param index the current index.\r\n     */\r\n    public promote(value: any[], hostElement: ElementRef, index: number): void {\r\n        this.formFieldAccessibilityManagerBaseService.deferredFocusOnTargetBySelector(\r\n            value,\r\n            hostElement,\r\n            // nth means index - 1 + 1 = index\r\n            `sme-accordion sme-accordion-panel:nth-of-type(${index}) button:nth-of-type(2)`);\r\n    }\r\n\r\n    /**\r\n     * It handles the focus when demoting an item in the list.\r\n     * @param hostElement The element reference for the host element.\r\n     * @param index the current index.\r\n     */\r\n    public demote(value: any[], hostElement: ElementRef, index: number): void {\r\n        this.formFieldAccessibilityManagerBaseService.deferredFocusOnTargetBySelector(\r\n            value,\r\n            hostElement,\r\n            // nth means index + 1 + 1 = index + 2\r\n            `sme-accordion sme-accordion-panel:nth-of-type(${index + 2}) button:nth-of-type(3)`);\r\n    }\r\n}\r\n","import { Component, ContentChild, forwardRef, Injector, OnDestroy, Provider, TemplateRef } from '@angular/core';\r\nimport { ControlContainer } from '@angular/forms';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Subject } from 'rxjs';\r\nimport { CoreBaseComponent } from '../../../common/base.component';\r\nimport { FormFieldAggregatable, FormFieldAggregator, SME_FORM_FIELD_AGGREGATOR_PROVIDER } from '../form-field-aggregator';\r\n\r\n/**\r\n * Provider that hides any existing ControlContainers from NgModel\r\n */\r\nexport const nullFormProvider: Provider = {\r\n    provide: ControlContainer,\r\n    useValue: null\r\n};\r\n\r\n/**\r\n * Provider for the form field aggregator token\r\n */\r\nexport const fieldAggregationProvider: Provider = {\r\n    provide: SME_FORM_FIELD_AGGREGATOR_PROVIDER,\r\n    useExisting: forwardRef(() => FormFieldIsolatorComponent)\r\n};\r\n\r\nexport interface FormStatus {\r\n    dirty: boolean;\r\n    pending: boolean;\r\n    touched: boolean;\r\n    valid: boolean;\r\n}\r\n\r\n/**\r\n * Component used to force NgModel's in this controls content behave in standalone mode.\r\n * That is, isolated from external form control containers.\r\n */\r\n@Component({\r\n    selector: 'sme-form-field-isolator,sme-array-item',\r\n    template: '',\r\n    providers: [nullFormProvider, fieldAggregationProvider]\r\n})\r\nexport class FormFieldIsolatorComponent extends CoreBaseComponent implements FormFieldAggregator, OnDestroy {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'FormFieldIsolatorComponent';\r\n    }\r\n\r\n    /**\r\n     * Indicates if all the fields connected to this isolator are valid\r\n     */\r\n    public get isValid(): boolean {\r\n        return this.status.valid;\r\n    }\r\n\r\n    /**\r\n     * Indicates if any field connected to this isolator are invalid\r\n     */\r\n    public get isInvalid(): boolean {\r\n        return !this.status.valid;\r\n    }\r\n\r\n    /**\r\n     * Indicates if any field connected to this isolator is pending\r\n     */\r\n    public get isPending(): boolean {\r\n        return this.status.pending;\r\n    }\r\n\r\n    /**\r\n     * Indicates if all the fields connected to this isolator are valid\r\n     */\r\n    private status: FormStatus;\r\n\r\n    /**\r\n     * The template ref of a subform of this component. The way this template ref is used varies form field to field\r\n     */\r\n    @ContentChild(TemplateRef)\r\n    public subFieldTemplate: TemplateRef<any>;\r\n\r\n    /**\r\n     * Event for listening to validity changes\r\n     */\r\n    public statusChanged: Subject<FormStatus>;\r\n\r\n    /**\r\n     * The fields registered with this control\r\n     */\r\n    private formFields: Set<FormFieldAggregatable>;\r\n\r\n    /**\r\n     * Initializes a new instance of the JsonFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n        this.status = {\r\n            dirty: false,\r\n            pending: false,\r\n            touched: false,\r\n            valid: true\r\n        };\r\n\r\n        this.formFields = new Set<FormFieldAggregatable>();\r\n        this.statusChanged = new Subject<FormStatus>();\r\n    }\r\n\r\n    public ngOnDestroy() {\r\n        this.statusChanged.complete();\r\n        this.formFields.clear();\r\n    }\r\n\r\n    /**\r\n     * Adds a form field to isolated state tracking\r\n     */\r\n    public addFormField(field: FormFieldAggregatable) {\r\n        this.formFields.add(field);\r\n    }\r\n\r\n    /**\r\n     * Removes a form field from isolated state tracking\r\n     */\r\n    public removeFormField(field: FormFieldAggregatable) {\r\n        this.formFields.delete(field);\r\n    }\r\n\r\n    /**\r\n     * updates the status of this field\r\n     * @debounce is used to throttle calls to this function.\r\n     * Only the last call will trigger a status change when multiple calls are fired in quick succession from registered fields.\r\n     */\r\n    @Debounce(0)\r\n    public updateStatus() {\r\n        let anyFieldDirty = false;\r\n        let anyFieldPending = false;\r\n        let anyFieldTouched = false;\r\n        let allFieldsValid = true;\r\n\r\n        if (this.formFields || this.formFields.size > 0) {\r\n            this.formFields.forEach(field => {\r\n                anyFieldDirty = anyFieldDirty || field.dirty;\r\n                anyFieldPending = anyFieldPending || field.pending;\r\n                anyFieldTouched = anyFieldTouched || field.touched;\r\n\r\n                if (!field.disabled) {\r\n                    allFieldsValid = allFieldsValid && field.isValid();\r\n                }\r\n            });\r\n        }\r\n\r\n        this.status.dirty = anyFieldDirty;\r\n        this.status.pending = anyFieldPending;\r\n        this.status.touched = anyFieldTouched;\r\n        this.status.valid = allFieldsValid;\r\n\r\n        this.statusChanged.next(this.status);\r\n    }\r\n}\r\n","import {\r\n    Component,\r\n    ContentChild,\r\n    ElementRef,\r\n    EventEmitter,\r\n    HostBinding,\r\n    Injector,\r\n    Input,\r\n    OnInit,\r\n    Output,\r\n    TemplateRef,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Strings } from '../../../../generated/strings';\r\nimport { ValidationAlerts } from '../../../form/validation-alert/validation-alert';\r\nimport { SmeSchemaProperty } from '../../../schema/schema-decorator';\r\nimport { ArrayPropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';\r\nimport { SchemaObjectProperty, SchemaPrimitiveType } from '../../../schema/schema-models';\r\nimport { SchemaUtilities } from '../../../schema/schema-utilities';\r\nimport { SmeInternalFormFieldComponent } from '../form-field.component';\r\nimport { FormFieldIsolatorComponent, FormStatus } from '../isolator/isolator.component';\r\nimport { ArrayFormFieldAccessibilityManagerService } from './array-form-field-accessibility-manager.service';\r\n\r\nexport interface AskForNewItemEventArgs {\r\n    item: any;\r\n}\r\n\r\nexport interface AskForItemHeaderArgs {\r\n    headerEvalFunc: MsftSme.Func2<any, number, string>;\r\n}\r\n\r\nexport interface AskForRemoveEvalFuncArgs {\r\n    removeEvalFunc: MsftSme.Func2<any, number, boolean>;\r\n}\r\n\r\n/* eslint-disable max-len */\r\n@Component({\r\n    template: `\r\n    <sme-form-field #field type=\"array\" [(ngModel)]=\"data\" [name]=\"propertySchema.name\" [label]=\"localize(propertySchema.label)\"\r\n        [required]=\"propertySchema.required\" [description]=\"localize(propertySchema.description)\" (askForNewItem)=\"askForNewItem($event)\"\r\n        [adjustControlButtonLocation]=\"shouldAdjustControlButtonLocation()\"\r\n        (customValidate)=\"resolveFunction(propertySchema.customValidation)($event)\"\r\n        (customAsyncValidate)=\"propertySchema.customAsyncValidation && resolveFunction(propertySchema.customAsyncValidation.handler)($event)\"\r\n        [pendingMessage]=\"propertySchema.customAsyncValidation && localize(propertySchema.customAsyncValidation.pendingMessage)\"\r\n        [customAsyncValidateDisabled]=\"shouldCustomAsyncValidationBeDisabled()\"\r\n        [customAsyncValidateDebounceTime]=\"propertySchema.customAsyncValidation && +propertySchema.customAsyncValidation.handler\"\r\n        >\r\n        <ng-template let-model>\r\n            <sme-schema-field-host [propertySchema]=\"propertySchema.item\"\r\n                [context]=\"context\" [data]=\"model\"></sme-schema-field-host>\r\n        </ng-template>\r\n    </sme-form-field>\r\n    `\r\n})\r\n\r\nexport class ArrayFormFieldLoaderComponent extends ArrayPropertySchemaFieldLoaderComponent {\r\n    @ViewChild('field')\r\n    private arrayFormFieldComponent: ArrayFormFieldComponent;\r\n\r\n    public askForNewItem($event): void {\r\n        const item = SchemaUtilities.generateDataBasedOnSchemaProperty(this.propertySchema.item);\r\n        $event.item = item;\r\n    }\r\n\r\n    public shouldAdjustControlButtonLocation(): boolean {\r\n        const itemPropertySchema = <SchemaObjectProperty>this.propertySchema.item;\r\n        let result = !!(this.propertySchema.item.label || this.propertySchema.item.description);\r\n        if (!result) {\r\n            let columnCount = 1;\r\n            if (itemPropertySchema.options && itemPropertySchema.options.columnCount) {\r\n                columnCount = itemPropertySchema.options.columnCount;\r\n            }\r\n            for (let i = 0; i < columnCount && i < itemPropertySchema.properties.length; i++) {\r\n                if (itemPropertySchema.properties[i].label || itemPropertySchema.properties[i].description) {\r\n                    result = true;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n}\r\n\r\n/**\r\n * Accessible Implementation of a form field for .sme-array\r\n */\r\n@SmeSchemaProperty({\r\n    type: SchemaPrimitiveType.Array,\r\n    format: 'simple-list',\r\n    isDefaultFormat: true,\r\n    description: `A form field control binding to array data.`,\r\n    loaderComponent: ArrayFormFieldLoaderComponent\r\n})\r\n@Component({\r\n    selector: 'sme-form-field[type=\"array\"]',\r\n    templateUrl: './array-form-field.component.html'\r\n})\r\nexport class ArrayFormFieldComponent extends SmeInternalFormFieldComponent<any[]> implements OnInit {\r\n    private _itemTitle: string;\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'ArrayFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * Gets the item template from either the subFormTemplate or subFieldIsolator if provided.\r\n     */\r\n    public get itemTemplate(): TemplateRef<any> {\r\n        if (this.subFieldIsolator && this.subFieldIsolator.subFieldTemplate) {\r\n            return this.subFieldIsolator.subFieldTemplate;\r\n        }\r\n        return this.subFormTemplate;\r\n    }\r\n\r\n    /**\r\n     * If provided, the sub field isolator prevents child ngmodels from registering with the form.\r\n     * Instead, we will use it to manage our own validity\r\n     */\r\n    @ContentChild(FormFieldIsolatorComponent, { static: true })\r\n    public subFieldIsolator: FormFieldIsolatorComponent;\r\n\r\n    /**\r\n     * When no \"newItem\" is provided. This output will be called anytime a new item is required.\r\n     */\r\n    @Output()\r\n    public askForNewItem: EventEmitter<AskForNewItemEventArgs> = new EventEmitter<AskForNewItemEventArgs>();\r\n\r\n    // Event used to provide a custom function that builds individual item headers\r\n    @Output()\r\n    public askForItemHeader: EventEmitter<AskForItemHeaderArgs> = new EventEmitter<AskForItemHeaderArgs>();\r\n\r\n    // Event used to provide a custom function that evaluates whether to show or hide individual remove buttons\r\n    @Output()\r\n    public askForRemoveEvaluator: EventEmitter<AskForRemoveEvalFuncArgs> = new EventEmitter<AskForRemoveEvalFuncArgs>();\r\n\r\n    /**\r\n     * Indicates that the array item button locations should be adjusted to account for no item label.\r\n     */\r\n    @Input()\r\n    public adjustControlButtonLocation = false;\r\n\r\n    /**\r\n     * Input for generating a new item from an existing object\r\n     */\r\n    @Input()\r\n    public newItem: any;\r\n\r\n    /**\r\n     * Indicates if the add and remove actions should be shown\r\n     */\r\n    @Input()\r\n    public showAdd: boolean;\r\n\r\n    /**\r\n     * Indicates if the remove actions should be shown for all items\r\n     */\r\n    @Input()\r\n    public showRemove: boolean;\r\n\r\n    /**\r\n     * Indicates if the move actions should be shown\r\n     */\r\n    @Input()\r\n    public showMove: boolean;\r\n\r\n    @Input()\r\n    public canCloseAll: boolean;\r\n\r\n    @Input()\r\n    public canCloseAny: boolean;\r\n\r\n    @Input()\r\n    public canOpenMultiple: boolean;\r\n\r\n    /**\r\n     * Maximum number of items in the array\r\n     */\r\n    @Input()\r\n    public maxItems: number;\r\n\r\n    @Input()\r\n    public addButtonText: string;\r\n\r\n    @Input()\r\n    public headerTemplate: TemplateRef<any>;\r\n\r\n    @Input()\r\n    public set itemTitle(value: string) {\r\n        this._itemTitle = `${value} {0}`;\r\n    }\r\n\r\n    public get itemTitle(): string {\r\n        return this._itemTitle;\r\n    }\r\n\r\n    /**\r\n     * The aria label for this instance.\r\n     */\r\n    @HostBinding('attr.aria-label')\r\n    public get ariaLabel(): string {\r\n        return this.getMergedDescriptionLabel();\r\n    }\r\n\r\n    /**\r\n     * When updated, the screen reader will announce this string\r\n     */\r\n    public screenReaderEvent: string;\r\n\r\n    @ViewChild('addButton')\r\n    private addButton: ElementRef;\r\n\r\n    /**\r\n     * Initializes a new instance of the JsonFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector,\r\n        protected arrayFormFieldAccessibilityManagerService: ArrayFormFieldAccessibilityManagerService\r\n    ) {\r\n        super(injector);\r\n        this.showAdd = true;\r\n        this.showRemove = true;\r\n        this.maxItems = -1;\r\n        this.showMove = true;\r\n        this.canCloseAll = true;\r\n        this.canCloseAny = false;\r\n        this.canOpenMultiple = true;\r\n        this.addButtonText = (<Strings>MsftSme.self().Resources.strings).MsftSmeShell.Angular.Common.add;\r\n        this._itemTitle = (<Strings>MsftSme.self().Resources.strings).MsftSmeShell.Angular.Form.Array.itemTitle;\r\n        this.screenReaderEvent = '';\r\n    }\r\n\r\n    /**\r\n     * The method called after the component is initialized.\r\n     */\r\n    public ngOnInit(): void {\r\n        super.ngOnInit();\r\n        this.setAttribute('role', 'group');\r\n        if (this.subFieldIsolator) {\r\n            this.subscriptions.push(\r\n                this.subFieldIsolator.statusChanged.subscribe((status: FormStatus) => {\r\n                    if (status.pending) {\r\n                        this.ngModel.control.markAsPending();\r\n                    }\r\n\r\n                    if (status.dirty) {\r\n                        this.ngModel.control.markAsDirty();\r\n                    }\r\n\r\n                    if (status.touched) {\r\n                        this.ngModel.control.markAsTouched();\r\n                    }\r\n\r\n                    this.ngModel.control.updateValueAndValidity();\r\n                }));\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Updates a hidden aria-live region with information about changes to the page; if the same event is being repeated, the event string\r\n     * is set in lowercase, so the screen reader thinks it's a new string. Clearing and re-setting the field does not prompt the screen\r\n     * reader to read the aria-live region.\r\n     * @param event the string to be announced\r\n     */\r\n    private updateScreenReaderEvent(event: string): void {\r\n        this.screenReaderEvent = event === this.screenReaderEvent ? event.toLocaleLowerCase() : event;\r\n    }\r\n\r\n    /**\r\n     * Adds an item to the array\r\n     */\r\n    public add(): void {\r\n        const item = this.getNewItem();\r\n        this.value.push(item);\r\n        this.triggerValueChange();\r\n\r\n        this.arrayFormFieldAccessibilityManagerService.add(this.value, this.addButton, this.hostElement);\r\n    }\r\n\r\n    /**\r\n     * Deletes an item from the array\r\n     */\r\n    public delete(item: any): void {\r\n        const index = this.value.indexOf(item);\r\n        this.value.splice(index, 1);\r\n        this.triggerValueChange();\r\n        this.updateScreenReaderEvent(this.strings.MsftSmeShell.Angular.Form.Array.removeButtonEvent);\r\n\r\n        this.arrayFormFieldAccessibilityManagerService.delete(this.value, this.addButton, this.hostElement);\r\n    }\r\n\r\n    /**\r\n     * Decreases the index of an item by 1\r\n     */\r\n    public moveUp(item: any): void {\r\n        const index = this.value.indexOf(item);\r\n        if (index > 0) {\r\n            const temp = { ...item };\r\n            this.value[index] = { ...this.value[index - 1] };\r\n            this.value[index - 1] = temp;\r\n            this.updateScreenReaderEvent(this.strings.MsftSmeShell.Angular.Form.Array.promoteButtonEvent);\r\n\r\n            this.arrayFormFieldAccessibilityManagerService.promote(this.value, this.hostElement, index);\r\n        } else {\r\n            this.updateScreenReaderEvent(this.strings.MsftSmeShell.Angular.Form.Array.promoteButtonPreventedEvent);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Increases the index of an item by 1\r\n     */\r\n    public moveDown(item: any): void {\r\n        const index = this.value.indexOf(item);\r\n        if (index < this.value.length - 1) {\r\n            const temp = { ...item };\r\n            this.value[index] = { ...this.value[index + 1] };\r\n            this.value[index + 1] = temp;\r\n            this.updateScreenReaderEvent(this.strings.MsftSmeShell.Angular.Form.Array.demoteButtonEvent);\r\n\r\n            this.arrayFormFieldAccessibilityManagerService.demote(this.value, this.hostElement, index);\r\n        } else {\r\n            this.updateScreenReaderEvent(this.strings.MsftSmeShell.Angular.Form.Array.demoteButtonPreventedEvent);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The method called when a <select> element's value changes.\r\n     */\r\n    public triggerValueChange(): void {\r\n        this.value = [...this.value];\r\n    }\r\n\r\n    public getItemAriaId(index: number, idName: string): any {\r\n        switch (idName) {\r\n            case 'item':\r\n                return `${this.idBag['item']}-${index}`;\r\n            case 'itemHeader':\r\n                return `${this.idBag['item']}-header-${index}`;\r\n            case 'itemContainer':\r\n                return `${this.idBag['item']}-container-${index}`;\r\n            default: return null;\r\n        }\r\n    }\r\n\r\n    public getItemTitle(item: any, index: number): string {\r\n        const event: AskForItemHeaderArgs = { headerEvalFunc: null };\r\n        this.askForItemHeader.emit(event);\r\n\r\n        return event.headerEvalFunc ? event.headerEvalFunc(item, index) : this.itemTitle.format(index);\r\n    }\r\n\r\n    public getShowRemove(item: any, index: number): boolean {\r\n        const event: AskForRemoveEvalFuncArgs = { removeEvalFunc: null };\r\n        this.askForRemoveEvaluator.emit(event);\r\n\r\n        return event.removeEvalFunc ? event.removeEvalFunc(item, index) : this.showRemove;\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control\r\n     * @param c The form control attached to this instance\r\n     */\r\n    protected validate(c: FormControl): ValidationAlerts {\r\n        if (this.required) {\r\n            if (MsftSme.isNullOrUndefined(this.value)) {\r\n                return { required: true };\r\n            }\r\n\r\n            if (!this.value.length) {\r\n                return { required: true };\r\n            }\r\n        }\r\n\r\n        if (this.subFieldIsolator && !this.subFieldIsolator.isValid) {\r\n            return {\r\n                invalidSubField: {\r\n                    hidden: true\r\n                }\r\n            };\r\n        }\r\n\r\n        return super.validate(c);\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            ... super.createIdBag(),\r\n            detailsSpan: '',\r\n            item: ''\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Generates a new item to be added to the array\r\n     */\r\n    private getNewItem(): any {\r\n        if (this.newItem) {\r\n            return MsftSme.deepCopy(this.newItem);\r\n        } else {\r\n            const event: AskForNewItemEventArgs = { item: null };\r\n            this.askForNewItem.emit(event);\r\n            return event.item || {};\r\n        }\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <div class=\"sme-array\">\r\n    <sme-accordion [canCloseAny]=\"canCloseAny\" [canCloseAll]=\"canCloseAll\" [canOpenMultiple]=\"canOpenMultiple\">\r\n      <sme-accordion-panel *ngFor=\"let item of value; let i = index\" [header]=\"getItemTitle(item, i)\" [isExpandable]=\"false\" [attr.data-uta-id]=\"'array-form-field-item-' + i\">\r\n        <sme-panel-control>\r\n          <ng-container *ngIf=\"headerTemplate\" smeTemplateOutlet [template]=\"headerTemplate\" [data]=\"item\" hostDataName=\"context\"\r\n            [hostData]=\"{index: i, ariaLabelId: getItemAriaId(i, 'itemHeader')}\"></ng-container>\r\n          <button *ngIf=\"showMove\" type=\"button\"\r\n            class=\"sme-button-trigger sme-button-auto-width sme-form-field-height sme-padding-horizontal-xs\"\r\n            [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.Array.promoteButtonAriaLabel\"\r\n            [title]=\"strings.MsftSmeShell.Angular.Form.Array.promoteButtonTooltip\" (click)=\"moveUp(item)\"\r\n            [smeDisabled]=\"loadingOrDisabled\" data-uta-id=\"promote-button\">\r\n            <span class=\"sme-icon sme-icon-up\"></span>\r\n          </button>\r\n          <button *ngIf=\"showMove\" type=\"button\"\r\n            class=\"sme-button-trigger sme-button-auto-width sme-form-field-height sme-padding-horizontal-xs\"\r\n            [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.Array.demoteButtonAriaLabel\"\r\n            [title]=\"strings.MsftSmeShell.Angular.Form.Array.demoteButtonTooltip\" (click)=\"moveDown(item)\"\r\n            [smeDisabled]=\"loadingOrDisabled\" data-uta-id=\"demote-button\">\r\n            <span class=\"sme-icon sme-icon-down\"></span>\r\n          </button>\r\n          <button *ngIf=\"getShowRemove(item, i)\" type=\"button\"\r\n            class=\"sme-button-trigger sme-button-auto-width sme-form-field-height sme-padding-horizontal-xs\"\r\n            [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.Array.removeButtonAriaLabel\"\r\n            [title]=\"strings.MsftSmeShell.Angular.Form.Array.removeButtonTooltip\" (click)=\"delete(item)\"\r\n            [smeDisabled]=\"loadingOrDisabled\" data-uta-id=\"remove-button\">\r\n            <span class=\"sme-icon sme-icon-delete sme-color-red\"></span>\r\n          </button>\r\n        </sme-panel-control>\r\n        <span class=\"sme-screen-reader\" [id]=\"getItemAriaId(i, 'item')\">{{itemTitle}}</span>\r\n        <fieldset [attr.aria-labelledby]=\"getItemAriaId(i, 'item')\"\r\n          class=\"sme-arrange-stack-h sme-margin-bottom-lg sme-array-item\"\r\n          [class.sme-subform-indent-none]=\"orientation==='horizontal'\">\r\n          <div class=\"sme-position-flex-auto sme-padding-inset-md\" [id]=\"getItemAriaId(i, 'itemContainer')\">\r\n            <ng-container smeTemplateOutlet [template]=\"itemTemplate\" [data]=\"item\" hostDataName=\"context\"\r\n              [hostData]=\"{index: i, ariaLabelId: getItemAriaId(i, 'item')}\"></ng-container>\r\n          </div>\r\n        </fieldset>\r\n      </sme-accordion-panel>\r\n    </sme-accordion>\r\n    <button #addButton *ngIf=\"showAdd\" type=\"button\" data-uta-id=\"add-button\"\r\n      [smeDisabled]=\"loadingOrDisabled || (maxItems !== -1 && value.length >= maxItems)\"\r\n      class=\"sme-button-trigger sme-button-auto-width sme-icon sme-icon-add sme-margin-bottom-xs\"\r\n      [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.Array.addButtonAriaLabel\"\r\n      [title]=\"strings.MsftSmeShell.Angular.Form.Array.addButtonTooltip\" (click)=\"add()\">{{addButtonText}}</button>\r\n  </div>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n  <div class=\"sme-screen-reader\" aria-live=\"assertive\" aria-relevant=\"all\">{{screenReaderEvent}}</div>\r\n</sme-form-field-layout>\r\n","import { Directive, Injector, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { DateLike } from '@microsoft/windows-admin-center-sdk/core/base/date/date-like';\r\nimport { DateTime } from '@microsoft/windows-admin-center-sdk/core/base/date/date-time';\r\nimport { DateType } from '@microsoft/windows-admin-center-sdk/core/base/date/date-type';\r\nimport { Globalization } from '@microsoft/windows-admin-center-sdk/core/data/globalization';\r\nimport { ValidationAlerts } from '../../validation-alert/validation-alert';\r\nimport { SmeInternalFormFieldComponent } from '../form-field.component';\r\n\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class DateLikeFormFieldComponent extends SmeInternalFormFieldComponent<DateLike> implements OnChanges {\r\n\r\n    /**\r\n     * Indicates the expected output type of the date like value.\r\n     * if not provided, this control will attempt to detect the date type when 'value' is set\r\n     */\r\n    @Input()\r\n    public dateType: DateType;\r\n\r\n    /**\r\n     * Indicates the maximum date value allowed\r\n     */\r\n    @Input()\r\n    public max: DateLike;\r\n\r\n    /**\r\n     * Indicates the minimum date value allowed\r\n     */\r\n    @Input()\r\n    public min: DateLike;\r\n\r\n    /**\r\n     * Now, as a date.\r\n     */\r\n    protected now: Date;\r\n\r\n    /**\r\n     * Gets the year of now\r\n     */\r\n    protected get nowYear(): number {\r\n        return this.now.getFullYear();\r\n    }\r\n\r\n    /**\r\n     * Gets the month of now\r\n     */\r\n    protected get nowMonth(): number {\r\n        return this.now.getMonth();\r\n    }\r\n\r\n    /**\r\n     * Gets the day of the month of now\r\n     */\r\n    protected get nowDay(): number {\r\n        return this.now.getDate();\r\n    }\r\n\r\n    /**\r\n     * Gets the Hour of now\r\n     */\r\n    protected get nowHour(): number {\r\n        return this.now.getHours();\r\n    }\r\n\r\n    /**\r\n     * Gets the minutes of now\r\n     */\r\n    protected get nowMinute(): number {\r\n        return this.now.getMinutes();\r\n    }\r\n\r\n    /**\r\n     * The auto-detected type of this fields value.\r\n     */\r\n    protected detectedDateType: DateType;\r\n\r\n    /**\r\n     * Initializes a new instance of the @see CalendarFormFieldComponent class.\r\n     * @param injector The angular injection service. required by @see SmeInjectableBase decorator in the @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.now = new Date();\r\n        this.detectedDateType = DateType.Date;\r\n    }\r\n\r\n    /**\r\n     * Angular OnChanges implementation\r\n     */\r\n    public ngOnChanges(changes: SimpleChanges) {\r\n        super.ngOnChanges(changes);\r\n        if (this.ngModel) {\r\n            // ignore first change of min and max, but subsequent changes should cause validation changes\r\n            const minChangedNotFirst = changes.min && !changes.min.isFirstChange();\r\n            const maxChangedNotFirst = changes.max && !changes.max.isFirstChange();\r\n            if (minChangedNotFirst || maxChangedNotFirst) {\r\n                this.ngModel.control.updateValueAndValidity();\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Occurs every time the value of the control changes, in the UI or programmatically.\r\n     * @param value the value of the form control\r\n     */\r\n    protected onValueChanged(value: DateLike) {\r\n        this.detectedDateType = DateType.of(value);\r\n        super.onValueChanged(value);\r\n    }\r\n\r\n    /**\r\n     * Validates the control as a date (time is not considered)\r\n     */\r\n    protected validateAsDate(c: FormControl): ValidationAlerts | null {\r\n        const valueAsDate = DateType.convert(this.value, DateType.Date);\r\n        if (this.min) {\r\n            const minDate = DateType.convert(this.min, DateType.Date);\r\n            if (DateTime.compareDates(valueAsDate, minDate) < 0) {\r\n                const message = this.strings.MsftSmeShell.Angular.Form.Date.MinDateErrorFormat;\r\n                const minString = minDate.toLocaleDateString(Globalization.localeId);\r\n                return {\r\n                    minDate: {\r\n                        message: message.format(minString)\r\n                    }\r\n                };\r\n            }\r\n        }\r\n        if (this.max) {\r\n            const maxDate = DateType.convert(this.max, DateType.Date);\r\n            if (DateTime.compareDates(valueAsDate, maxDate) > 0) {\r\n                const message = this.strings.MsftSmeShell.Angular.Form.Date.MaxDateErrorFormat;\r\n                const maxString = maxDate.toLocaleDateString(Globalization.localeId);\r\n                return {\r\n                    maxDate: {\r\n                        message: message.format(maxString)\r\n                    }\r\n                };\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n\r\n    /**\r\n     * Validates the control as a time (date is not considered)\r\n     */\r\n    protected validateAsTime(c: FormControl): ValidationAlerts | null {\r\n        const valueAsDate = DateType.convert(this.value, DateType.Date);\r\n        if (this.min) {\r\n            const minDate = DateType.convert(this.min, DateType.Date);\r\n            if (DateTime.compareTimes(valueAsDate, minDate) < 0) {\r\n                const message = this.strings.MsftSmeShell.Angular.Form.Time.MinTimeErrorFormat;\r\n                const minString = minDate.toLocaleTimeString(Globalization.localeId);\r\n                return {\r\n                    minDate: {\r\n                        message: message.format(minString)\r\n                    }\r\n                };\r\n            }\r\n        }\r\n        if (this.max) {\r\n            const maxDate = DateType.convert(this.max, DateType.Date);\r\n            if (DateTime.compareTimes(valueAsDate, maxDate) > 0) {\r\n                const message = this.strings.MsftSmeShell.Angular.Form.Time.MaxTimeErrorFormat;\r\n                const maxString = maxDate.toLocaleTimeString(Globalization.localeId);\r\n                return {\r\n                    maxDate: {\r\n                        message: message.format(maxString)\r\n                    }\r\n                };\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n\r\n    /**\r\n     * Validates the control as a datetime (date and time are both considered)\r\n     */\r\n    protected validateAsDateTime(c: FormControl): ValidationAlerts | null {\r\n        const valueAsDate = DateType.convert(this.value, DateType.Date);\r\n        if (this.min) {\r\n            const minDate = DateType.convert(this.min, DateType.Date);\r\n            if (DateTime.compareDateTimes(valueAsDate, minDate) < 0) {\r\n                const message = this.strings.MsftSmeShell.Angular.Form.Date.MinDateErrorFormat;\r\n                const minString = minDate.toLocaleString(Globalization.localeId);\r\n                return {\r\n                    minDate: {\r\n                        message: message.format(minString)\r\n                    }\r\n                };\r\n            }\r\n        }\r\n        if (this.max) {\r\n            const maxDate = DateType.convert(this.max, DateType.Date);\r\n            if (DateTime.compareDateTimes(valueAsDate, maxDate) > 0) {\r\n                const message = this.strings.MsftSmeShell.Angular.Form.Date.MaxDateErrorFormat;\r\n                const maxString = maxDate.toLocaleString(Globalization.localeId);\r\n                return {\r\n                    maxDate: {\r\n                        message: message.format(maxString)\r\n                    }\r\n                };\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\" role=\"region\" [attr.aria-label]=\"ariaLabel\">\r\n  <div class=\"sme-calendar sme-focus-zone sme-form-field-editor\">\r\n    <div class=\"sme-calendar-header\">\r\n      <div class=\"sme-calendar-header-text\" [attr.aria-live]=\"'polite'\">{{ headerText }}</div>\r\n      <button type=\"button\" class=\"sme-button-trigger sme-button-auto-width\" [disabled]=\"isTodayInView\" (click)=\"onGoToTodayClicked($event)\"\r\n              [title]=\"strings.MsftSmeShell.Angular.Calendar.goToToday\" [attr.aria-label]=\"strings.MsftSmeShell.Angular.Calendar.goToToday\">\r\n        <span class=\"sme-icon sme-icon-calendar\"></span>\r\n      </button>\r\n      <button type=\"button\" class=\"sme-button-trigger sme-button-auto-width\" (click)=\"onPreviousClicked($event)\"\r\n              [title]=\"strings.MsftSmeShell.Angular.Calendar.PreviousMonth\"\r\n              [attr.aria-label]=\"strings.MsftSmeShell.Angular.Calendar.PreviousMonth\">\r\n        <span class=\"sme-icon sme-icon-up\"></span>\r\n      </button>\r\n      <button type=\"button\" class=\"sme-button-trigger sme-button-auto-width\" (click)=\"onNextClicked($event)\"\r\n              [title]=\"strings.MsftSmeShell.Angular.Calendar.NextMonth\" [attr.aria-label]=\"strings.MsftSmeShell.Angular.Calendar.NextMonth\">\r\n        <span class=\"sme-icon sme-icon-down\"></span>\r\n      </button>\r\n    </div>\r\n    <div class=\"sme-calendar-block-row\">\r\n      <div class=\"sme-calendar-block sme-calendar-block-header\" *ngFor=\"let heading of dayHeadings\">{{ heading }}</div>\r\n    </div>\r\n    <div class=\"sme-calendar-block-row\" *ngFor=\"let week of dayBlocks\">\r\n      <button type=\"button\" class=\"sme-calendar-block\" [attr.data-timestamp]=\"day.timestamp\" [attr.aria-label]=\"convertDateToScreenReaderFormat(day.date)\" *ngFor=\"let day of week\" (click)=\"selectDay(day.date)\"\r\n              (keydown)=\"onDayBlockKeyDown($event, day)\" [class.sme-selected]=\"isDaySelected(day.date)\" [attr.aria-pressed]=\"isDaySelected(day.date)\"\r\n              [class.sme-calendar-block-today]=\"day.isToday\" [class.sme-calendar-block-other-month]=\"!day.isCurrentMonth\">\r\n        {{day.date.getDate()}}\r\n      </button>\r\n    </div>\r\n  </div>\r\n  <sme-validation-alert *ngIf=\"!compact\" [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import { Component, Injector, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { DateTime } from '@microsoft/windows-admin-center-sdk/core/base/date/date-time';\r\nimport { DateType } from '@microsoft/windows-admin-center-sdk/core/base/date/date-type';\r\nimport { TimeUnit } from '@microsoft/windows-admin-center-sdk/core/base/date/time-unit';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { Globalization } from '@microsoft/windows-admin-center-sdk/core/data/globalization';\r\nimport { ValidationAlerts } from '../../validation-alert/validation-alert';\r\nimport { DateLikeFormFieldComponent } from '../date-like/date-like-form-field.component';\r\n\r\nexport interface DayBlock {\r\n    date: Date;\r\n    isCurrentMonth: boolean;\r\n    isToday: boolean;\r\n    timestamp: number;\r\n}\r\n\r\n/**\r\n * Calendar Form Field Component\r\n */\r\n@Component({\r\n    selector: 'sme-form-field[type=\"calendar\"]',\r\n    templateUrl: './calendar-form-field.component.html'\r\n})\r\nexport class CalendarFormFieldComponent extends DateLikeFormFieldComponent implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'CalendarFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * Internal selected date value\r\n     */\r\n    public selectedDate: Date;\r\n\r\n    /**\r\n     * Gets the selected year\r\n     */\r\n    private get selectedYear(): number {\r\n        return this.selectedDate ? this.selectedDate.getFullYear() : null;\r\n    }\r\n\r\n    /**\r\n     * Gets the selected month\r\n     */\r\n    private get selectedMonth(): number {\r\n        return this.selectedDate ? this.selectedDate.getMonth() : null;\r\n    }\r\n\r\n    /**\r\n     * Gets the text for the currently viewed month\r\n     */\r\n    public get headerText(): string {\r\n        const monthText = this.strings.MsftSmeShell.Angular.Calendar.Month[this.currentMonth + 1];\r\n        const yearText = this.currentYear.toString();\r\n        return `${monthText} ${yearText}`;\r\n    }\r\n\r\n    /**\r\n     * Gets a value indicating if the current view contains today's date\r\n     */\r\n    public get isTodayInView(): boolean {\r\n        return this.nowYear === this.currentYear && this.nowMonth === this.currentMonth;\r\n    }\r\n\r\n    /**\r\n     * Gets a value indicating if the current view contains today's date\r\n     */\r\n    public get isSelectionInView(): boolean {\r\n        return this.nowYear === this.currentYear && this.nowMonth === this.currentMonth;\r\n    }\r\n\r\n    /**\r\n     * A workaround to have Screen reader know this is a required \"input\" field.\r\n     */\r\n\r\n    public get ariaLabel(): string {\r\n        if (this.required) {\r\n            return this.strings.MsftSmeShell.Angular.Calendar.AriaLabel.Required.format(this.label);\r\n        }\r\n        return this.label;\r\n    }\r\n\r\n    /**\r\n     * The currently viewed year\r\n     */\r\n    public currentYear: number;\r\n\r\n    /**\r\n     * The currently viewed month\r\n     */\r\n    public currentMonth: number;\r\n\r\n    /**\r\n     * A localized list of date column headings\r\n     */\r\n    public dayHeadings: string[];\r\n\r\n    /**\r\n     * A matrix of visible days acording to the week they appear in.\r\n     */\r\n    public dayBlocks: DayBlock[][];\r\n\r\n    /**\r\n    * A Localized list of days of week.\r\n    */\r\n    public daysOfWeek: string[];\r\n\r\n    /**\r\n     * Initializes a new instance of the @see CalendarFormFieldComponent class.\r\n     * @param injector The angular injection service. required by @see SmeInjectableBase decorator in the @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.currentYear = this.now.getFullYear();\r\n        this.currentMonth = this.now.getMonth();\r\n        this.dayBlocks = [];\r\n        this.dayHeadings = [\r\n            this.strings.MsftSmeShell.Angular.Calendar.Heading.Sunday,\r\n            this.strings.MsftSmeShell.Angular.Calendar.Heading.Monday,\r\n            this.strings.MsftSmeShell.Angular.Calendar.Heading.Tuesday,\r\n            this.strings.MsftSmeShell.Angular.Calendar.Heading.Wednesday,\r\n            this.strings.MsftSmeShell.Angular.Calendar.Heading.Thursday,\r\n            this.strings.MsftSmeShell.Angular.Calendar.Heading.Friday,\r\n            this.strings.MsftSmeShell.Angular.Calendar.Heading.Saturday\r\n        ];\r\n        this.daysOfWeek = [\r\n            this.strings.MsftSmeShell.Angular.Calendar.Day.Sunday,\r\n            this.strings.MsftSmeShell.Angular.Calendar.Day.Monday,\r\n            this.strings.MsftSmeShell.Angular.Calendar.Day.Tuesday,\r\n            this.strings.MsftSmeShell.Angular.Calendar.Day.Wednesday,\r\n            this.strings.MsftSmeShell.Angular.Calendar.Day.Thursday,\r\n            this.strings.MsftSmeShell.Angular.Calendar.Day.Friday,\r\n            this.strings.MsftSmeShell.Angular.Calendar.Day.Saturday\r\n        ];\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnInit interface\r\n     */\r\n    public ngOnInit(): void {\r\n        super.ngOnInit();\r\n        this.generateDayBlocks();\r\n    }\r\n\r\n    /**\r\n     * Occurs when the previous month button has been clicked\r\n     */\r\n    public onPreviousClicked(event: Event): void {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n        this.goToPreviousMonth();\r\n    }\r\n\r\n    /**\r\n     * Occurs when the next month button has been clicked\r\n     */\r\n    public onNextClicked(event: Event): void {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n        this.goToNextMonth();\r\n    }\r\n\r\n    /**\r\n     * Occurs when the go to today button has been clicked\r\n     */\r\n    public onGoToTodayClicked(event: Event): void {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n        this.goToToday();\r\n        this.yieldFocus();\r\n    }\r\n\r\n    /**\r\n     * Changes the current view to include the previous month\r\n     */\r\n    public goToPreviousMonth(): void {\r\n        this.currentMonth--;\r\n        if (this.currentMonth < 0) {\r\n            this.currentMonth = 11;\r\n            this.currentYear--;\r\n        }\r\n        this.generateDayBlocks();\r\n    }\r\n\r\n    /**\r\n     * Changes the current view to include the previous month\r\n     */\r\n    public goToNextMonth(): void {\r\n        this.currentMonth++;\r\n        if (this.currentMonth >= 12) {\r\n            this.currentMonth = 0;\r\n            this.currentYear++;\r\n        }\r\n        this.generateDayBlocks();\r\n    }\r\n\r\n    /**\r\n     * Selects a day in the calander\r\n     */\r\n    public selectDay(day: Date) {\r\n        const newDate = DateType.convert(day, DateType.Date);\r\n        this.selectedDate = newDate;\r\n        this.value = DateType.convert(newDate, MsftSme.isNullOrUndefined(this.dateType) ? this.detectedDateType : this.dateType);\r\n    }\r\n\r\n    /**\r\n     * Indicates if a given day is selected\r\n     */\r\n    public isDaySelected(day: Date) {\r\n        return DateTime.isEqualDates(day, this.selectedDate);\r\n    }\r\n\r\n    /**\r\n     * Applies the focus to the current element\r\n     */\r\n    public focus(): void {\r\n        const element: HTMLElement = (<HTMLElement>this.hostElement.nativeElement).querySelector(\r\n            '.sme-calendar-block.sme-selected, .sme-calendar-block.sme-calendar-block-today'\r\n        );\r\n        if (element) {\r\n            element.focus();\r\n            return;\r\n        }\r\n\r\n        super.focus();\r\n    }\r\n\r\n    @Yield()\r\n    private yieldFocus() {\r\n        this.focus();\r\n    }\r\n\r\n    /**\r\n     * Brings today into view\r\n     */\r\n    public goToToday() {\r\n        if (!this.isTodayInView) {\r\n            this.goTo(this.nowYear, this.nowMonth);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Brings selected date into view\r\n     */\r\n    public goToSelection() {\r\n        if (!this.isSelectionInView) {\r\n            this.goTo(this.selectedYear, this.selectedMonth);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Brings a month and year into view\r\n     */\r\n    public goTo(year: number, month: number) {\r\n        this.currentYear = year;\r\n        this.currentMonth = month;\r\n        this.generateDayBlocks();\r\n    }\r\n\r\n    /**\r\n     * Handles keydown events on dat blocks\r\n     */\r\n    public onDayBlockKeyDown(event: KeyboardEvent, day: DayBlock) {\r\n        let goToDate: Date;\r\n        switch (event.keyCode) {\r\n            case KeyCode.UpArrow: {\r\n                // go back one week\r\n                goToDate = new Date(day.date);\r\n                goToDate.setDate(goToDate.getDate() - 7);\r\n                break;\r\n            }\r\n            case KeyCode.DownArrow: {\r\n                // go forward one week\r\n                goToDate = new Date(day.date);\r\n                goToDate.setDate(goToDate.getDate() + 7);\r\n                break;\r\n            }\r\n            case KeyCode.LeftArrow: {\r\n                // go back one Day\r\n                goToDate = new Date(day.date);\r\n                goToDate.setDate(goToDate.getDate() - 1);\r\n                break;\r\n            }\r\n            case KeyCode.RightArrow: {\r\n                // go forward one Day\r\n                goToDate = new Date(day.date);\r\n                goToDate.setDate(goToDate.getDate() + 1);\r\n                break;\r\n            }\r\n            case KeyCode.Home: {\r\n                if (event.ctrlKey) {\r\n                    // go to beginning of current month\r\n                    goToDate = new Date(day.date);\r\n                    goToDate.setDate(1);\r\n                } else {\r\n                    // go to beginning of current week\r\n                    const currentWeekDay = day.date.getDay();\r\n                    goToDate = new Date(day.timestamp - (TimeUnit.Day * currentWeekDay));\r\n                }\r\n                break;\r\n            }\r\n            case KeyCode.End: {\r\n                if (event.ctrlKey) {\r\n                    // go to end of current month\r\n                    goToDate = new Date(day.date);\r\n                    // go to first day of current month (avoid ase were day is > 28 and the next month is Feb.)\r\n                    goToDate.setDate(1);\r\n                    // go to next month\r\n                    goToDate.setMonth(goToDate.getMonth() + 1);\r\n                    // go back one day\r\n                    goToDate.setDate(0);\r\n\r\n                } else {\r\n                    // go to end of current week\r\n                    const currentWeekDay = day.date.getDay();\r\n                    const daysLeftInWeek = 6 - currentWeekDay;\r\n                    goToDate = new Date(day.timestamp + (TimeUnit.Day * daysLeftInWeek));\r\n                }\r\n                break;\r\n            }\r\n            case KeyCode.PageUp: {\r\n                // go to previous month\r\n                goToDate = new Date(day.date);\r\n                goToDate.setMonth(goToDate.getMonth() - 1);\r\n                break;\r\n            }\r\n            case KeyCode.PageDown: {\r\n                // go to next month\r\n                goToDate = new Date(day.date);\r\n                goToDate.setMonth(goToDate.getMonth() + 1);\r\n                break;\r\n            }\r\n            default: {\r\n                return;\r\n            }\r\n        }\r\n\r\n        if (MsftSme.isNullOrUndefined(goToDate)) {\r\n            return;\r\n        }\r\n\r\n        this.focusOnDate(goToDate);\r\n\r\n        // handle all keys\r\n        event.stopImmediatePropagation();\r\n        event.stopPropagation();\r\n        event.preventDefault();\r\n    }\r\n\r\n    /**\r\n     * Occurs every time the value of the control changes, in the UI or programmatically.\r\n     * @param value the value of the form control\r\n     */\r\n    protected onValueChanged(value) {\r\n        this.selectedDate = value ? DateType.convert(value, DateType.Date) : new Date();\r\n        super.onValueChanged(this.selectedDate);\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control\r\n     * @param c The form control attached to this instance\r\n     */\r\n    protected validate(c: FormControl): ValidationAlerts {\r\n        return this.validateAsDate(c) || super.validate(c);\r\n    }\r\n\r\n    /**\r\n     * Generates the current view of day blocks\r\n     */\r\n    private generateDayBlocks(): void {\r\n        const firstWeekDay = (new Date(this.currentYear, this.currentMonth, 1)).getDay();\r\n        const lastMonth = DateTime.getLastDayOfPreviousMonth(this.currentYear, this.currentMonth);\r\n        const nextMonth = DateTime.getFirstDayOfNextMonth(this.currentYear, this.currentMonth);\r\n        const lastDayOfLastMonth = DateTime.getLastDayOfMonth(lastMonth.getFullYear(), lastMonth.getMonth()).getDate();\r\n        const lastDayOfMonth = DateTime.getLastDayOfMonth(this.currentYear, this.currentMonth).getDate();\r\n\r\n        this.dayBlocks = [];\r\n        let currentWeek: DayBlock[] = [];\r\n        this.dayBlocks.push(currentWeek);\r\n\r\n        // Fill the left over days of last month into the first week.\r\n        for (let i = 0; i < firstWeekDay; i++) {\r\n            const date = new Date(lastMonth.getFullYear(), lastMonth.getMonth(), lastDayOfLastMonth - firstWeekDay + i + 1);\r\n            currentWeek.push({\r\n                date: date,\r\n                isCurrentMonth: false,\r\n                isToday: false,\r\n                timestamp: date.getTime()\r\n            });\r\n        }\r\n\r\n        // Fill the first a few days of current month into the first week.\r\n        for (let i = 0; i < 7 - firstWeekDay; i++) {\r\n            const currentDay = i + 1;\r\n            const date = new Date(this.currentYear, this.currentMonth, currentDay);\r\n            currentWeek.push({\r\n                date: date,\r\n                isCurrentMonth: true,\r\n                isToday: this.currentYear === this.nowYear\r\n                    && this.currentMonth === this.nowMonth\r\n                    && currentDay === this.nowDay,\r\n                timestamp: date.getTime()\r\n            });\r\n        }\r\n\r\n        // Fill the rest of the days of current month into rest of weeks.\r\n        for (let i = 7 - firstWeekDay + 1; i <= lastDayOfMonth; i++) {\r\n            if (currentWeek.length === 7) {\r\n                currentWeek = [];\r\n                this.dayBlocks.push(currentWeek);\r\n            }\r\n            const currentDay = i;\r\n            const date = new Date(this.currentYear, this.currentMonth, currentDay);\r\n            currentWeek.push({\r\n                date: date,\r\n                isCurrentMonth: true,\r\n                isToday: this.currentYear === this.nowYear\r\n                    && this.currentMonth === this.nowMonth\r\n                    && currentDay === this.nowDay,\r\n                timestamp: date.getTime()\r\n            });\r\n        }\r\n\r\n        // Fill the rest of the last week of current month with the first a few days of next month.\r\n        let remainingDays = 7 - currentWeek.length;\r\n        for (let i = 1; i <= remainingDays; i++) {\r\n            const date = new Date(nextMonth.getFullYear(), nextMonth.getMonth(), i);\r\n            currentWeek.push({\r\n                date: date,\r\n                isCurrentMonth: false,\r\n                isToday: false,\r\n                timestamp: date.getTime()\r\n            });\r\n        }\r\n\r\n        // Fill the rest of day blocks with days of next month to make sure in total there\r\n        // are 6 weeks of day blocks.\r\n        while (this.dayBlocks.length < 6) {\r\n            currentWeek = [];\r\n            for (let i = 0; i < 7; i++) {\r\n                remainingDays++;\r\n                const date = new Date(nextMonth.getFullYear(), nextMonth.getMonth(), remainingDays);\r\n                currentWeek.push({\r\n                    date: date,\r\n                    isCurrentMonth: false,\r\n                    isToday: false,\r\n                    timestamp: date.getTime()\r\n                });\r\n            }\r\n            this.dayBlocks.push(currentWeek);\r\n        }\r\n\r\n    }\r\n\r\n    /**\r\n     * attempts to find a day button via its timestamp\r\n     */\r\n    private findDayButton(date: Date): HTMLElement {\r\n        const timestamp = date.getTime();\r\n        const selector = `button.sme-calendar-block[data-timestamp=\"${timestamp}\"]`;\r\n        return (<HTMLElement>this.hostElement.nativeElement).querySelector(selector);\r\n    }\r\n\r\n    /**\r\n     * Brings focus to a given date\r\n     */\r\n    private focusOnDate(date: Date) {\r\n        // try to find date button\r\n        let dayButton = this.findDayButton(date);\r\n        if (!dayButton) {\r\n            // bring date into view and try again\r\n            this.goTo(date.getFullYear(), date.getMonth());\r\n            setTimeout(() => {\r\n                dayButton = this.findDayButton(date);\r\n                if (dayButton) {\r\n                    dayButton.focus();\r\n                }\r\n            });\r\n        } else {\r\n            dayButton.focus();\r\n        }\r\n    }\r\n\r\n    public convertDateToScreenReaderFormat(day: Date): string {\r\n        return this.daysOfWeek[day.getDay()] + ', ' + Globalization.dateOnly(day);\r\n    }\r\n\r\n}\r\n","<!-- Vertical Layout -->\r\n<div *ngIf=\"isVerticalLayout\" class=\"sme-checkbox\" #zone=\"smeTooltipZone\" smeTooltipZone>\r\n  <label class=\"sme-arrange-stack-h\">\r\n    <input type=\"checkbox\" [attr.aria-labelledby]=\"label ? idBag.labelSpan : null\"\r\n    [attr.aria-describedby]=\"details ? idBag.detailsSpan : null\" [attr.aria-checked]=\"value\"\r\n    [attr.aria-required]=\"required\" [indeterminate]=\"indeterminate\" [required]=\"required\"\r\n    [disabled]=\"loadingOrDisabled\" [(ngModel)]=\"value\" (click)=\"onCheckboxClicked()\">\r\n\r\n    <span *ngIf=\"!!markdownText\" [attr.aria-hidden]=\"true\" [class.sme-position-flex-auto]=\"!showInfoBubble\" [smeMarkdown]=\"markdownText\" [attr.title]=\"indeterminate ? indeterminateTooltip : null\"></span>\r\n    <span *ngIf=\"!markdownText\" [class.sme-position-flex-auto]=\"!showInfoBubble\" [attr.title]=\"indeterminate ? indeterminateTooltip : null\">{{ label }}</span>\r\n\r\n    <span *ngIf=\"required\" class=\"sme-position-flex-none sme-margin-left-xs\"\r\n      aria-hidden=\"true\">{{ strings.MsftSmeShell.Angular.Common.Form.Validation.required }}</span>\r\n    <span *ngIf=\"showInfoBubble\"\r\n      class=\"sme-position-flex-none sme-icon sme-info-bubble sme-icon-info sme-margin-left-xs\"\r\n      [smeTooltip]=\"resolvedTooltipTemplate\" [title]=\"resolvedTitle\" [smeTooltipContext]=\"tooltipContext\"\r\n      [tooltipZone]=\"zone\" tabindex=\"0\"></span>\r\n  </label>\r\n  <span *ngIf=\"label\" class=\"sme-screen-reader\" [id]=\"idBag.labelSpan\">{{ label }}</span>\r\n  <span *ngIf=\"details\" class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan\">{{ details }}</span>\r\n</div>\r\n<!-- Horizontal layout -->\r\n<sme-form-field-layout *ngIf=\"isHorizontalLayout\" [formField]=\"this\" class=\"sme-focus-zone\">\r\n  <div class=\"sme-checkbox sme-form-field-editor\">\r\n    <label class=\"sme-arrange-stack-h\">\r\n      <input type=\"checkbox\" [attr.aria-labelledby]=\"label ? idBag.labelSpan : null\"\r\n        [attr.aria-describedby]=\"details ? idBag.detailsSpan : null\" [attr.aria-checked]=\"value\"\r\n        [attr.aria-required]=\"required\" [indeterminate]=\"indeterminate\" [required]=\"required\"\r\n        [disabled]=\"loadingOrDisabled\" [(ngModel)]=\"value\" (click)=\"onCheckboxClicked()\">\r\n      <span>\r\n        <!-- Empty Span Required for checkbox -->\r\n      </span>\r\n    </label>\r\n    <span *ngIf=\"label\" class=\"sme-screen-reader\" [id]=\"idBag.labelSpan\">{{ label }}</span>\r\n    <span *ngIf=\"details\" class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan\">{{ details }}</span>\r\n  </div>\r\n</sme-form-field-layout>\r\n\r\n<fieldset *ngIf=\"subFormTemplate\" [disabled]=\"loadingOrDisabled || !value\"\r\n  class=\"sme-layout-relative sme-checkbox-subform\">\r\n  <ng-container smeTemplateOutlet [template]=\"subFormTemplate\"></ng-container>\r\n</fieldset>\r\n<sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n","import { Component, HostBinding, Injector, Input } from '@angular/core';\r\nimport { FormControl, Validators } from '@angular/forms';\r\nimport { SmeSchemaProperty } from '../../../schema/schema-decorator';\r\nimport { SimplePropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';\r\nimport { SchemaPrimitiveType } from '../../../schema/schema-models';\r\nimport { SmeInternalFormFieldComponent } from '../form-field.component';\r\n\r\n/* eslint-disable max-len */\r\n@Component({\r\n    template: `\r\n    <sme-form-field #field type=\"checkbox\" [(ngModel)]=\"data\" [name]=\"propertySchema.name\" [label]=\"localize(propertySchema.label)\"\r\n        [description]=\"localize(propertySchema.description)\" [required]=\"propertySchema.required\"\r\n        [readonly]=\"!!evalExpression(propertySchema.readonlyCondition)\"\r\n        [disabled]=\"!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))\"\r\n        (customValidate)=\"resolveFunction(propertySchema.customValidation)($event)\"\r\n        (customAsyncValidate)=\"propertySchema.customAsyncValidation && resolveFunction(propertySchema.customAsyncValidation.handler)($event)\"\r\n        [pendingMessage]=\"propertySchema.customAsyncValidation && localize(propertySchema.customAsyncValidation.pendingMessage)\"\r\n        [customAsyncValidateDisabled]=\"shouldCustomAsyncValidationBeDisabled()\"\r\n        [customAsyncValidateDebounceTime]=\"propertySchema.customAsyncValidation && +propertySchema.customAsyncValidation.handler\"\r\n        ></sme-form-field>\r\n    `\r\n})\r\n/* eslint-enable max-len */\r\nexport class CheckboxFormFieldLoaderComponent extends SimplePropertySchemaFieldLoaderComponent {\r\n}\r\n\r\n/**\r\n * Accessible Implementation of a form field for .sme-checkbox\r\n */\r\n@SmeSchemaProperty({\r\n    type: SchemaPrimitiveType.Boolean,\r\n    format: 'checkbox',\r\n    isDefaultFormat: true,\r\n    description: 'A checkbox binding to boolean data.',\r\n    loaderComponent: CheckboxFormFieldLoaderComponent\r\n})\r\n@Component({\r\n    selector: 'sme-form-field[type=\"checkbox\"]',\r\n    templateUrl: './checkbox-form-field.component.html'\r\n})\r\nexport class CheckboxFormFieldComponent extends SmeInternalFormFieldComponent<boolean> {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'CheckboxFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * Indicates that this checkbox should operate in indeterminate mode. That is, it should report value as null, true, or false.\r\n     */\r\n    @Input()\r\n    public indeterminate: boolean;\r\n\r\n    /**\r\n     * Text to be rendered as markdown in the checkbox component. This will become the label text of the checkbox.\r\n     */\r\n    @Input()\r\n    public markdownText: string;\r\n\r\n    /**\r\n     * If provided, gives an explanation for the indeterminate checkbox state.\r\n     */\r\n    @Input()\r\n    public indeterminateTooltip: string;\r\n\r\n    @HostBinding('class.sme-form-field-auto-height')\r\n    public get noSubTemplate(): boolean {\r\n        return !this.subFormTemplate;\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the TagsInputComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n        this.indeterminate = false;\r\n        this.indeterminateTooltip = null;\r\n    }\r\n\r\n    /**\r\n     * Handler for clicking on the checkbox\r\n     */\r\n    public onCheckboxClicked() {\r\n        // to mimic the behavior of html checkboxes,\r\n        // when the checkbox is clicked (and not disabled), we reset the indeterminate state to false.\r\n        if (!this.disabled && this.indeterminate) {\r\n            this.indeterminate = false;\r\n            this.value = true;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            labelSpan: '',\r\n            detailsSpan: ''\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control\r\n     * @param c The form control attached to this instance\r\n     */\r\n    protected validate(c: FormControl) {\r\n        // translate 'required' on checkbox to 'requiredTrue' validator.\r\n        // requiredTrue does not have  a directive, and the required directive does not surface an error for false values\r\n        if (this.required) {\r\n            const requiredTrue = Validators.requiredTrue(c);\r\n            if (requiredTrue) { return requiredTrue; }\r\n        }\r\n\r\n        return super.validate(c);\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\" role=\"region\" [attr.aria-label]=\"ariaLabel\">\r\n  <div class=\"sme-clock sme-focus-zone sme-form-field-editor \">\r\n    <div class=\"sme-clock-main-content\">\r\n      <div class=\"sme-clock-column sme-clock-column-hours\" (wheel)=\"onHourWheel($event)\"\r\n           (scroll)=\"onColumnScroll($event)\">\r\n        <div class=\"sme-clock-column-header\">{{this.strings.MsftSmeShell.Angular.Clock.Headings.hour}}</div>\r\n        <button type=\"button\" *ngFor=\"let hour of hours\" [class.sme-selected]=\"hour.isSelected\" [tabindex]=\"hour.isSelected ? 0 : -1\"\r\n                (click)=\"onHourClicked($event, hour)\" (keydown)=\"onHourKeydown($event)\" [attr.aria-label]=\"strings.MsftSmeShell.Angular.Clock.Headings.hour + hour.display\">{{hour.display}}</button>\r\n      </div>\r\n      <div class=\"sme-clock-column sme-clock-column-minutes\" (wheel)=\"onMinuteWheel($event)\"\r\n           (scroll)=\"onColumnScroll($event)\">\r\n        <div class=\"sme-clock-column-header\">{{this.strings.MsftSmeShell.Angular.Clock.Headings.minute}}</div>\r\n        <button type=\"button\" *ngFor=\"let minute of minutes\" [class.sme-selected]=\"minute.isSelected\"\r\n                [tabindex]=\"minute.isSelected ? 0 : -1\" (click)=\"onMinuteClicked($event, minute)\"\r\n                (keydown)=\"onMinuteKeydown($event)\" [attr.aria-label]=\"strings.MsftSmeShell.Angular.Clock.Headings.minute + minute.display\">{{minute.display}}</button>\r\n      </div>\r\n      <div *ngIf=\"!!viewportMeridiem\" class=\"sme-clock-column sme-clock-column-meridiem\"\r\n           (wheel)=\"onMeridiemWheel($event)\" (scroll)=\"onColumnScroll($event)\">\r\n        <div class=\"sme-clock-column-header\">{{this.strings.MsftSmeShell.Angular.Clock.Headings.meridiem}}</div>\r\n        <button type=\"button\" *ngFor=\"let meridiem of meridiems\" class=\"sme-clock-meridiem-{{meridiem.value}}\"\r\n                [class.sme-selected]=\"meridiem.isSelected\" [tabindex]=\"meridiem.isSelected ? 0 : -1\"\r\n                (click)=\"onMeridiemClicked($event, meridiem.value)\"\r\n                (keydown)=\"onMeridiemKeydown($event)\">{{meridiem.display}}</button>\r\n      </div>\r\n    </div>\r\n    <div *ngIf=\"showConfirmation\" class=\"sme-clock-confirmation\">\r\n      <button type=\"button\" [title]=\"this.strings.MsftSmeShell.Angular.Common.apply\"\r\n        [attr.aria-label]=\"this.strings.MsftSmeShell.Angular.Common.apply\" tabindex=\"0\"\r\n        (click)=\"onAcceptClicked($event)\">\r\n        <span class=\"sme-icon sme-icon-size-xxs sme-icon-accept\"></span>\r\n      </button>\r\n      <button type=\"button\" [title]=\"this.strings.MsftSmeShell.Angular.Common.clear\"\r\n        [attr.aria-label]=\"this.strings.MsftSmeShell.Angular.Common.clear\" tabindex=\"0\"\r\n        (click)=\"cleared.emit($event)\">\r\n        <span class=\"sme-icon sme-icon-size-xxs sme-icon-clear\"></span>\r\n      </button>\r\n    </div>\r\n  </div>\r\n  <sme-validation-alert *ngIf=\"!compact\" [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import { Component, EventEmitter, Injector, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { DateType } from '@microsoft/windows-admin-center-sdk/core/base/date/date-type';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { Globalization } from '@microsoft/windows-admin-center-sdk/core/data/globalization';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { ValidationAlerts } from '../../validation-alert/validation-alert';\r\nimport { DateLikeFormFieldComponent } from '../date-like/date-like-form-field.component';\r\n\r\nexport interface TimeBlock {\r\n    display: string;\r\n    value: number;\r\n    isSelected: boolean;\r\n}\r\n\r\nexport enum Meridiem {\r\n    AM = 'am',\r\n    PM = 'pm'\r\n}\r\n\r\nexport type NullableMeridiem = null | Meridiem;\r\n\r\nexport interface MeridiemBlock {\r\n    display: string;\r\n    value: Meridiem;\r\n    isSelected: boolean;\r\n}\r\n\r\nexport interface Spin {\r\n    value: number;\r\n    pivot: number;\r\n}\r\n\r\n/**\r\n * Clock Form Field Component\r\n */\r\n@Component({\r\n    selector: 'sme-form-field[type=\"clock\"]',\r\n    templateUrl: './clock-form-field.component.html'\r\n})\r\nexport class ClockFormFieldComponent extends DateLikeFormFieldComponent implements OnInit {\r\n\r\n    /**\r\n     *  Const getter for The visible number of rows for the clock component.\r\n     */\r\n    private static get visibleRowCount(): number {\r\n        // Change this to change how many rows show in the UX\r\n        return 7;\r\n    }\r\n\r\n    /**\r\n     * Returns maximum number of hours depending of the hour format\r\n     */\r\n    private get maxHours() {\r\n        return this.use12HourFormat ? 12 : 24;\r\n    }\r\n\r\n    /**\r\n     * Return the maximum number of minutes in an hour\r\n     */\r\n    private maxMinutes = 60;\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'ClockFormFieldComponent';\r\n    }\r\n\r\n    @Input()\r\n    public showConfirmation = false;\r\n    @Output() public accepted = new EventEmitter();\r\n    @Output() public cleared = new EventEmitter();\r\n\r\n    /**\r\n     * Internal selected time value\r\n     */\r\n    public viewportTime: Date;\r\n\r\n    /**\r\n     * Gets the selected hours\r\n     */\r\n    private get viewportHour(): number {\r\n        return this.viewportTime ? this.getParsedHour(this.viewportTime.getHours()) : null;\r\n    }\r\n\r\n    /**\r\n     * Gets the selected minutes\r\n     */\r\n    private get viewportMinute(): number {\r\n        return this.viewportTime ? this.viewportTime.getMinutes() : null;\r\n    }\r\n\r\n    /**\r\n     * A list of hours in the clock\r\n     */\r\n    public hours: TimeBlock[];\r\n\r\n    /**\r\n     * A list of minutes in the clock\r\n     */\r\n    public minutes: TimeBlock[];\r\n\r\n    /**\r\n     * A list of minutes in the clock\r\n     */\r\n    public meridiems: MeridiemBlock[];\r\n\r\n    /**\r\n     * The initial meridian should remain at the top\r\n     */\r\n    private initialMeridiem: Meridiem;\r\n\r\n    /**\r\n     * indicates the meridiem of the current time\r\n     */\r\n    public get viewportMeridiem(): NullableMeridiem {\r\n        if (!this.use12HourFormat) {\r\n            return null;\r\n        }\r\n        // 00 to 11 is am, 12 to 23 is pm\r\n        return this.viewportTime ? this.viewportTime.getHours() >= 12 ? Meridiem.PM : Meridiem.AM : null;\r\n    }\r\n\r\n    /**\r\n     * Current spun hour and the pivot point\r\n     */\r\n    private spinHour: Spin = { value: null, pivot: null };\r\n\r\n    /**\r\n     * Current spun minute and the pivot point\r\n     */\r\n    private spinMinute: Spin = { value: null, pivot: null };\r\n\r\n    /**\r\n     * indicates if a value change is expected\r\n     */\r\n    private localeDateFormat: Intl.DateTimeFormat;\r\n\r\n    /**\r\n     * Answers, is user currently scrolling down?\r\n     */\r\n    private isScrollDown = false;\r\n\r\n    /**\r\n     * indicates if a value change is expected\r\n     */\r\n    private localeDateFormatOptions: Intl.ResolvedDateTimeFormatOptions;\r\n\r\n    private get use12HourFormat(): boolean {\r\n        // this is left null in some 12 hour format locales in chrome, explicitly check for false\r\n        return this.localeDateFormatOptions.hour12 !== false;\r\n    }\r\n\r\n    /**\r\n     * A workaround to have Screen reader know this is a required \"input\" field.\r\n     */\r\n\r\n    public get ariaLabel(): string {\r\n        if (this.required) {\r\n            return this.strings.MsftSmeShell.Angular.Clock.AriaLabel.Required.format(this.label);\r\n        }\r\n        return this.label;\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the @see ClockFormFieldComponent class.\r\n     * @param injector The angular injection service. required by @see SmeInjectableBase decorator in the @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.hours = [];\r\n        this.minutes = [];\r\n        this.localeDateFormat = Intl.DateTimeFormat(Globalization.localeId);\r\n        this.localeDateFormatOptions = this.localeDateFormat.resolvedOptions();\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnInit interface\r\n     */\r\n    public ngOnInit(): void {\r\n        super.ngOnInit();\r\n        // Default time on clock is the current time\r\n        this.viewportTime = new Date();\r\n        this.generateTimeColumns();\r\n    }\r\n\r\n    /**\r\n     * Indicates if a given day is selected\r\n     */\r\n    public isMeridiemSelected(value: Meridiem) {\r\n        return this.viewportMeridiem === value;\r\n    }\r\n\r\n    /**\r\n     * Occurs when an hour is clicked\r\n     */\r\n    public onHourClicked(event: MouseEvent, hour: TimeBlock) {\r\n        this.setHour(this.convertTo24Hours(hour.value, this.viewportMeridiem));\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * Occurs when a key is pressed down on a hour block\r\n     */\r\n    public onHourKeydown(event: KeyboardEvent) {\r\n        switch (event.keyCode) {\r\n            case KeyCode.UpArrow: { this.isScrollDown = false; this.goToPreviousHour(); break; }\r\n            case KeyCode.DownArrow: { this.isScrollDown = true; this.goToNextHour(); break; }\r\n            case KeyCode.Enter: { this.focusOnHostElement(); return; }\r\n            default: { return; }\r\n        }\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * Occurs when the mouse wheel is moved on the hour column\r\n     */\r\n    public onHourWheel(event: WheelEvent) {\r\n        this.handleWheelSpin(event, this.hours, this.maxHours, hour => { this.spinHour = hour; });\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * Occurs when any column is scrolled\r\n     */\r\n    public onColumnScroll(event: Event) {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * Selected the previous hour block from the current one\r\n     */\r\n    public goToPreviousHour() {\r\n        const previousHour = this.getPreviousValue(this.viewportHour, 1, this.maxHours);\r\n        this.setHour(this.convertTo24Hours(previousHour, this.viewportMeridiem));\r\n    }\r\n\r\n    /**\r\n     * Selected the next hour block from the current one\r\n     */\r\n    public goToNextHour() {\r\n        const nextHour = this.getNextValue(this.viewportHour, 1, this.maxHours);\r\n        this.setHour(this.convertTo24Hours(nextHour, this.viewportMeridiem));\r\n    }\r\n\r\n    /**\r\n     * Sets the hour from a time block\r\n     */\r\n    private setHour(hour: number) {\r\n        const valueTime = this.viewportTime;\r\n        valueTime.setHours(hour);\r\n        this.spinHour = { value: null, pivot: null };\r\n        this.updateValueOrViewPortTime(valueTime, this.showConfirmation);\r\n    }\r\n\r\n    /**\r\n     * Occurs when an minute is clicked\r\n     */\r\n    public onMinuteClicked(event: MouseEvent, minute: TimeBlock) {\r\n        this.setMinute(minute.value);\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * Occurs when a key is pressed down on a minute block\r\n     */\r\n    public onMinuteKeydown(event: KeyboardEvent) {\r\n        switch (event.keyCode) {\r\n            case KeyCode.UpArrow: { this.isScrollDown = false; this.goToPreviousMinute(); break; }\r\n            case KeyCode.DownArrow: { this.isScrollDown = true; this.goToNextMinute(); break; }\r\n            case KeyCode.Enter: { this.focusOnHostElement(); return; }\r\n            default: { return; }\r\n        }\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * Occurs when the mouse wheel is moved on the minute column\r\n     */\r\n    public onMinuteWheel(event: WheelEvent) {\r\n        this.handleWheelSpin(event, this.minutes, this.maxMinutes, minute => { this.spinMinute = minute; });\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * Selected the previous minute block from the current one\r\n     */\r\n    public goToPreviousMinute() {\r\n        const previousMinute = this.getPreviousValue(this.viewportMinute, 1, this.maxMinutes);\r\n        this.setMinute(previousMinute);\r\n    }\r\n\r\n    /**\r\n     * Selected the next minute block from the current one\r\n     */\r\n    public goToNextMinute() {\r\n        const nextMinute = this.getNextValue(this.viewportMinute, 1, this.maxMinutes);\r\n        this.setMinute(nextMinute);\r\n    }\r\n\r\n    /**\r\n     * Sets the minute from a time block\r\n     */\r\n    private setMinute(minute: number) {\r\n        const valueTime = this.viewportTime;\r\n        valueTime.setMinutes(minute);\r\n        this.spinMinute = { value: null, pivot: null };\r\n        this.updateValueOrViewPortTime(valueTime, this.showConfirmation);\r\n    }\r\n\r\n    /**\r\n     * Parse an hour depending on the current format\r\n     */\r\n    private getParsedHour(value) {\r\n        return this.use12HourFormat ? value % 12 : value;\r\n    }\r\n\r\n    /**\r\n     * Convert a 12 hour system value to twenty four hour\r\n     */\r\n    private convertTo24Hours(hour: number, meridiem: Meridiem) {\r\n        if (meridiem === Meridiem.PM) {\r\n            return hour + 12;\r\n        }\r\n        return hour;\r\n    }\r\n\r\n    /**\r\n     * Occurs when an meridiem is clicked\r\n     */\r\n    public onMeridiemClicked(event: MouseEvent, meridiem: Meridiem) {\r\n        this.setMeridiem(meridiem);\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * Occurs when a key is pressed down on a meridiem block\r\n     */\r\n    public onMeridiemKeydown(event: KeyboardEvent) {\r\n        switch (event.keyCode) {\r\n            case KeyCode.UpArrow:\r\n            case KeyCode.DownArrow: {\r\n                this.toggleMeridiem();\r\n                break;\r\n            }\r\n            case KeyCode.Enter: { this.focusOnHostElement(); return; }\r\n            default: { return; }\r\n        }\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * Occurs when the mouse wheel is moved on the meridiem column\r\n     */\r\n    public onMeridiemWheel(event: WheelEvent) {\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * Toggles the meridiem between AM and PM. No-Op if meridiem is not valid in the current locale\r\n     */\r\n    public toggleMeridiem(meridiem?: Meridiem) {\r\n        if (!this.use12HourFormat) {\r\n            return;\r\n        }\r\n        if (!meridiem) {\r\n            meridiem = this.isMeridiemSelected(Meridiem.AM) ? Meridiem.PM : Meridiem.AM;\r\n        }\r\n        this.setMeridiem(meridiem);\r\n    }\r\n\r\n    /**\r\n     * Sets the meridiem to either AM or PM. No-Op if meridiem is not valid in the current locale\r\n     */\r\n    public setMeridiem(meridiem: Meridiem) {\r\n        if (!this.use12HourFormat) {\r\n            return;\r\n        }\r\n        const valueTime = this.viewportTime;\r\n        valueTime.setHours(this.convertTo24Hours(this.viewportHour, meridiem));\r\n        this.updateValueOrViewPortTime(valueTime, this.showConfirmation);\r\n    }\r\n\r\n    /**\r\n     * Called when accept button is clicked to commit changes\r\n     */\r\n    public onAcceptClicked(event: Event) {\r\n        this.value = DateType.convert(this.viewportTime, MsftSme.isNullOrUndefined(this.dateType) ? this.detectedDateType : this.dateType);\r\n        this.accepted.emit(event);\r\n    }\r\n\r\n    /**\r\n     * Updates either the form value or the viewport value depending on whether the value should be persisted\r\n     */\r\n    private updateValueOrViewPortTime(value: Date, setViewPort: boolean) {\r\n        if (!setViewPort) {\r\n            this.value = DateType.convert(value, MsftSme.isNullOrUndefined(this.dateType) ? this.detectedDateType : this.dateType);\r\n            return;\r\n        }\r\n        this.viewportTime = value;\r\n        this.generateTimeColumns();\r\n    }\r\n\r\n    /**\r\n     * Occurs every time the value of the control changes, in the UI or programmatically.\r\n     * @param value the value of the form control\r\n     */\r\n    protected onValueChanged(value) {\r\n        super.onValueChanged(value);\r\n        const valueAsDate = DateType.convert(value, DateType.Date);\r\n        if (value) {\r\n            this.viewportTime = valueAsDate;\r\n        }\r\n        if (value) {\r\n            this.generateTimeColumns();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control\r\n     * @param c The form control attached to this instance\r\n     */\r\n    protected validate(c: FormControl): ValidationAlerts {\r\n        return this.validateAsTime(c) || super.validate(c);\r\n    }\r\n\r\n    /**\r\n     * Handles the wheel spin on columns. No value selection is made mimicking the behavior in Chromium Edge\r\n     */\r\n    @Debounce(10)\r\n    private handleWheelSpin(event: WheelEvent, column: TimeBlock[], max: number, setSpinValue: (spin: Spin) => void): void {\r\n        const isScrollUp = event.deltaY < 0;\r\n        const newSpinValue = isScrollUp ?\r\n            this.getNextValue(column[column.length - 1].value, 1, max) :\r\n            this.getPreviousValue(column[0].value, 1, max);\r\n        setSpinValue({ value: newSpinValue, pivot: isScrollUp ? column.length - 1 : 0 });\r\n        this.generateTimeColumns();\r\n    }\r\n\r\n    /**\r\n     * Applies the focus to a the hours column\r\n     */\r\n    private focusOnHours() {\r\n        this.focusOnColumn('.sme-clock-column-hours');\r\n    }\r\n\r\n    /**\r\n     * Applies the focus to a the minutes column\r\n     */\r\n    private focusOnMinute() {\r\n        this.focusOnColumn('.sme-clock-column-minutes');\r\n    }\r\n\r\n    /**\r\n     * Applies the focus to a the meridiem column\r\n     */\r\n    private focusOnMeridiem() {\r\n        this.focusOnColumn('.sme-clock-column-meridiem');\r\n    }\r\n\r\n    /**\r\n     * Applies the focus to a column\r\n     */\r\n    private focusOnColumn(columnClass: string): HTMLElement {\r\n        const element: HTMLElement = (<HTMLElement>this.hostElement.nativeElement).querySelector(columnClass);\r\n        if (element) {\r\n            const focusElement = Dom.getFirstFocusableDescendent(element);\r\n            if (focusElement) { focusElement.focus(); }\r\n        }\r\n        return element;\r\n    }\r\n\r\n    /**\r\n     * Applies the focus to the current element\r\n     */\r\n    public focus(): void {\r\n        this.focusOnHours();\r\n    }\r\n\r\n    /**\r\n     * Applies the focus to the host element when the clock retracts\r\n     */\r\n    @Yield()\r\n    private focusOnHostElement() {\r\n        const focusElement = Dom.getNextFocusableElement(this.hostElement.nativeElement);\r\n        if (focusElement) {\r\n            focusElement.focus();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Generates the current view\r\n     */\r\n    private generateTimeColumns(): void {\r\n        if (!this.viewportTime) {\r\n            this.hours = [];\r\n            this.minutes = [];\r\n            return;\r\n        }\r\n        // check if focus exists in our control so we can restore it when we are done.\r\n        const columnToFocus = MsftSme.find(\r\n            [\r\n                { name: 'hours', focus: () => this.focusOnHours() },\r\n                { name: 'minutes', focus: () => this.focusOnMinute() },\r\n                { name: 'meridiem', focus: () => this.focusOnMeridiem() }\r\n            ],\r\n            column => {\r\n                const element = this.hostElement.nativeElement.querySelector(`.sme-clock-column-${column.name} .sme-selected`);\r\n                return document.activeElement === element;\r\n            });\r\n\r\n        if (!this.initialMeridiem) {\r\n            this.initialMeridiem = this.viewportMeridiem;\r\n        }\r\n        const altMeridiem = Meridiem.AM === this.initialMeridiem ? Meridiem.PM : Meridiem.AM;\r\n        const amLabel = this.strings.MsftSmeShell.Angular.Clock.Meridiem.AM.label;\r\n        const pmLabel = this.strings.MsftSmeShell.Angular.Clock.Meridiem.PM.label;\r\n        let initialMeridiemLabel;\r\n        let altMeridiemLabel;\r\n        if (Meridiem.AM === this.initialMeridiem) {\r\n            initialMeridiemLabel = amLabel;\r\n            altMeridiemLabel = pmLabel;\r\n        } else {\r\n            initialMeridiemLabel = pmLabel;\r\n            altMeridiemLabel = amLabel;\r\n        }\r\n        this.meridiems = [\r\n            {\r\n                display: initialMeridiemLabel,\r\n                value: this.initialMeridiem,\r\n                isSelected: this.isMeridiemSelected(this.initialMeridiem)\r\n            },\r\n            {\r\n                display: altMeridiemLabel,\r\n                value: altMeridiem,\r\n                isSelected: this.isMeridiemSelected(altMeridiem)\r\n            }\r\n        ];\r\n\r\n        const selectedHour = this.viewportHour;\r\n        const currentHour = MsftSme.isNullOrUndefined(this.spinHour.value) ? selectedHour : this.spinHour.value;\r\n        this.hours = this.generateTimeWindow(\r\n            currentHour,\r\n            this.maxHours,\r\n            this.hours.findIndex((hour) => hour.value === selectedHour),\r\n            this.spinHour.pivot).map(hour => {\r\n                // display value is padded to 2 digits\r\n                let displayValue: string = `0${hour}`.slice(-2);\r\n                if (this.use12HourFormat) {\r\n                    if (hour === 0) {\r\n                        displayValue = '12';\r\n                    }\r\n                }\r\n                const block: TimeBlock = {\r\n                    display: displayValue,\r\n                    value: hour,\r\n                    isSelected: hour === selectedHour\r\n                };\r\n                return block;\r\n            });\r\n\r\n        const currentMinute = MsftSme.isNullOrUndefined(this.spinMinute.value) ? this.viewportMinute : this.spinMinute.value;\r\n        this.minutes = this.generateTimeWindow(\r\n            currentMinute,\r\n            this.maxMinutes,\r\n            this.minutes.findIndex(\r\n                (minute) => minute.value === this.viewportMinute\r\n            ),\r\n            this.spinMinute.pivot\r\n        ).map(minute => ({\r\n            // display value is padded to 2 digits\r\n            display: `0${minute}`.slice(-2),\r\n            value: minute,\r\n            isSelected: minute === this.viewportMinute\r\n        }));\r\n\r\n        if (columnToFocus) {\r\n            window.requestAnimationFrame(() => {\r\n                columnToFocus.focus();\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Returns the next value after a given step in a cycle\r\n     * @param currentValue current value in the cycle\r\n     * @param step value of steps to move\r\n     * @param maxValue max value in the cycle\r\n     */\r\n    private getNextValue(currentValue, step, maxValue) {\r\n        const nextValue = currentValue + step;\r\n        if (nextValue >= maxValue) {\r\n            return nextValue % maxValue;\r\n        }\r\n        return nextValue;\r\n    }\r\n\r\n    /**\r\n     * Returns the previous value after a given step in a cycle\r\n     * @param currentValue current value in the cycle\r\n     * @param step value of steps to move\r\n     * @param maxValue max value in the cycle\r\n     */\r\n    private getPreviousValue(currentValue, step, maxValue) {\r\n        const prevValue = currentValue - step;\r\n        if (prevValue < 0) {\r\n            return maxValue + prevValue;\r\n        }\r\n        return prevValue;\r\n    }\r\n\r\n    /**\r\n     * Generates a series of numbers representing a cyclic window in time given a center (current value) and max value\r\n     */\r\n    private generateTimeWindow(currentValue: number, max: number, currentValueIndex: number, spinPivot?: number): number[] {\r\n        // generate window based on 0 if value is invalid (occurs when form field value is null or undefined)\r\n        if (isNaN(currentValue) || MsftSme.isNullOrUndefined(currentValue)) {\r\n            currentValue = 0;\r\n        }\r\n        const visibleRows = ClockFormFieldComponent.visibleRowCount;\r\n        const minIndex = 0;\r\n        const maxIndex = visibleRows - 1;\r\n        let pivotPoint = this.isScrollDown ? maxIndex : minIndex;\r\n        if (currentValueIndex !== -1) {\r\n            // if current value still in the window\r\n            pivotPoint = currentValueIndex;\r\n        }\r\n\r\n        if (!MsftSme.isNullOrUndefined(spinPivot)) {\r\n            // if wheel spinning\r\n            pivotPoint = spinPivot;\r\n        }\r\n\r\n        const timeWindow = new Array<number>(visibleRows).fill(null).map((_, i) => {\r\n            if (i === pivotPoint) {\r\n                return currentValue;\r\n            } else if (i < pivotPoint) {\r\n                const steps = pivotPoint - i;\r\n                return this.getPreviousValue(currentValue, steps, max);\r\n            } else {\r\n                const steps = i - pivotPoint;\r\n                return this.getNextValue(currentValue, steps, max);\r\n            }\r\n        });\r\n        return timeWindow;\r\n    }\r\n}\r\n","/// <reference types='monaco-editor/monaco' />\r\n\r\nimport { fromEventPattern, Observable, of } from 'rxjs';\r\nimport { mergeMap, shareReplay, tap } from 'rxjs/operators';\r\n\r\nexport class Monaco {\r\n\r\n    public static get isLoaded() {\r\n        return !!window['monaco'];\r\n    }\r\n\r\n    public static get isEditorModuleLoaded() {\r\n        return this.isLoaded && !!monaco.editor;\r\n    }\r\n\r\n    private static get amdRequire() {\r\n        return <any>window['require'];\r\n    }\r\n\r\n    private static editorLibraryLoaded: Observable<void>;\r\n    private static importsConfigured: Observable<void>;\r\n    private static requireLoaded: Observable<void>;\r\n\r\n    /**\r\n     * The current version of monaco. This version is used to look up the monaco library path from the shell environment.\r\n     * WHen this changes, a new version must be added to @see MsftSmeExternalLibraries with the new version.\r\n     * Currently, we need to support the versions release with at least 2 of the last major SDK release.\r\n     */\r\n    private static version = '0.36.1';\r\n\r\n    /**\r\n     * Gets the bse url for the monaco editor\r\n     */\r\n    private static get baseUrl(): string {\r\n        return MsftSme.self().Resources.lib.monaco[Monaco.version];\r\n    }\r\n\r\n    /**\r\n     * Gets the Monaco namespace, loading it if it hasn't been already\r\n     */\r\n    public static loadMonacoEditor(): Observable<void> {\r\n        if (this.isEditorModuleLoaded) {\r\n            return of(null);\r\n        }\r\n\r\n        if (!this.editorLibraryLoaded) {\r\n            this.editorLibraryLoaded = this.configureMonacoImports().pipe(\r\n                mergeMap(() => this.loadAmdModule('vs/editor/editor.main')),\r\n                shareReplay(1)\r\n            );\r\n        }\r\n        return this.editorLibraryLoaded;\r\n\r\n    }\r\n\r\n    /**\r\n     * Loads a AMD module\r\n     */\r\n    private static loadAmdModule(path: string): Observable<void> {\r\n        return new Observable(observer => {\r\n            this.amdRequire(\r\n                [path],\r\n                () => {\r\n                    observer.next();\r\n                    observer.complete();\r\n                },\r\n                () => {\r\n                    observer.error(new Error(`Failed to load amd module at path: ${path}`));\r\n                    observer.complete();\r\n                }\r\n            );\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Gets the configure monaco for amd imports\r\n     */\r\n    private static configureMonacoImports(): Observable<void> {\r\n        if (this.isLoaded) {\r\n            return of(null);\r\n        }\r\n        if (!this.importsConfigured) {\r\n            this.importsConfigured = this.loadRequire().pipe(\r\n                tap(() => { this.amdRequire.config({ paths: { vs: `${this.baseUrl}` } }); }),\r\n                shareReplay(1)\r\n            );\r\n        }\r\n        return this.importsConfigured;\r\n    }\r\n\r\n    /**\r\n     * Gets the AMD loader, loading it if it hasn't been already\r\n     */\r\n    private static loadRequire(): Observable<void> {\r\n        if (this.amdRequire) {\r\n            return of(null);\r\n        }\r\n        if (!this.requireLoaded) {\r\n            this.requireLoaded = new Observable<any>(observer => {\r\n                const script: HTMLScriptElement = document.createElement('script');\r\n                script.type = 'text/javascript';\r\n                script.src = `${this.baseUrl}/loader.js`;\r\n                script.crossOrigin = 'cors';\r\n                script.onload = () => {\r\n                    observer.next();\r\n                    observer.complete();\r\n                };\r\n                script.onerror = () => {\r\n                    observer.error(new Error('Failed to load AMD Loader for monaco'));\r\n                    script.remove();\r\n                    observer.complete();\r\n                };\r\n\r\n                document.body.appendChild(script);\r\n            }).pipe(shareReplay(1));\r\n\r\n        }\r\n        return this.requireLoaded;\r\n    }\r\n}\r\n\r\n/**\r\n * Observable wrapper for monaco editors eventing system\r\n */\r\nexport function fromMonacoEvent<T>(emitter: monaco.IEvent<T>): Observable<T> {\r\n    return fromEventPattern(\r\n        (handler) => emitter((result) => handler(result)),\r\n        (handler, listener) => {\r\n            listener.dispose();\r\n            handler();\r\n        });\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <div #editor class=\"sme-code-editor sme-form-field-editor\" sme-lint-disable></div>\r\n  <sme-validation-alert *ngIf=\"!compact\" [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import {\r\n    AfterViewInit, Component, ElementRef, HostListener, Injector, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild\r\n} from '@angular/core';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter, take } from 'rxjs/operators';\r\nimport { SmeSchemaProperty } from '../../../schema/schema-decorator';\r\nimport { SimplePropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';\r\nimport { SchemaPrimitiveType } from '../../../schema/schema-models';\r\nimport { SmeInternalFormFieldComponent } from '../form-field.component';\r\nimport { fromMonacoEvent, Monaco } from './monaco';\r\n\r\n/* eslint-disable max-len */\r\n@Component({\r\n    template: `\r\n    <sme-form-field #field type=\"code\" [(ngModel)]=\"data\" [name]=\"propertySchema.name\" [label]=\"localize(propertySchema.label)\"\r\n        [language]=\"propertySchema.options && propertySchema.options.language\"\r\n        [options]=\"propertySchema.options && propertySchema.options.options\"\r\n        [required]=\"propertySchema.required\" [description]=\"localize(propertySchema.description)\"\r\n        [readonly]=\"!!evalExpression(propertySchema.readonlyCondition)\"\r\n        [disabled]=\"!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))\"\r\n        (customValidate)=\"resolveFunction(propertySchema.customValidation)($event)\"\r\n        (customAsyncValidate)=\"propertySchema.customAsyncValidation && resolveFunction(propertySchema.customAsyncValidation.handler)($event)\"\r\n        [pendingMessage]=\"propertySchema.customAsyncValidation && localize(propertySchema.customAsyncValidation.pendingMessage)\"\r\n        [customAsyncValidateDisabled]=\"shouldCustomAsyncValidationBeDisabled()\"\r\n        [customAsyncValidateDebounceTime]=\"propertySchema.customAsyncValidation && +propertySchema.customAsyncValidation.handler\"\r\n        ></sme-form-field>\r\n    `\r\n})\r\n/* eslint-enable max-len */\r\nexport class CodeFormFieldLoaderComponent extends SimplePropertySchemaFieldLoaderComponent {\r\n}\r\n\r\n/**\r\n * Accessible text field implementation\r\n */\r\n@SmeSchemaProperty({\r\n    type: SchemaPrimitiveType.String,\r\n    format: 'code',\r\n    description: 'A multiline code editor binding to string data.',\r\n    loaderComponent: CodeFormFieldLoaderComponent,\r\n    optionProperties: [\r\n        {\r\n            type: SchemaPrimitiveType.String,\r\n            format: 'textbox',\r\n            name: 'language',\r\n            required: true,\r\n            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.CodeEditor.Language.label',\r\n            description: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.CodeEditor.Language.description'\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.Object,\r\n            format: 'json-text-editor',\r\n            name: 'options',\r\n            defaultValue: {},\r\n            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.CodeEditor.Options.label',\r\n            description: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.CodeEditor.Options.description'\r\n        }\r\n    ]\r\n})\r\n@Component({\r\n    selector: 'sme-form-field[type=\"code\"]',\r\n    templateUrl: './code-form-field.component.html'\r\n})\r\nexport class CodeFormFieldComponent extends SmeInternalFormFieldComponent<string> implements OnInit, AfterViewInit, OnDestroy, OnChanges {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'CodeFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * The language of the code in the editor\r\n     */\r\n    @Input()\r\n    public language: string;\r\n\r\n    /**\r\n     * The monaco editor construction options. When provided, overrides the default behaviors of this control\r\n     */\r\n    @Input()\r\n    public options: monaco.editor.IStandaloneEditorConstructionOptions;\r\n\r\n    /**\r\n     * The current monaco editor instance\r\n     */\r\n    public get editor(): monaco.editor.IStandaloneCodeEditor {\r\n        return this.internalEditor;\r\n    }\r\n\r\n    /**\r\n     * The current monaco editor instance\r\n     */\r\n    public get model(): monaco.editor.ITextModel {\r\n        return this.editor ? this.editor.getModel() : null;\r\n    }\r\n\r\n    /**\r\n     * Reference to the element that we use to contain the monaco text editor\r\n     */\r\n    @ViewChild('editor', { static: true })\r\n    private editorHost: ElementRef;\r\n\r\n    /**\r\n     * internal placeholder for the current monaco editor instance.\r\n     */\r\n    private internalEditor: monaco.editor.IStandaloneCodeEditor;\r\n\r\n    /**\r\n     * Tracking mechanism for subscriptions for the current editor instance\r\n     */\r\n    private editorSubscriptions: Subscription[];\r\n\r\n    /**\r\n     * Initializes a new instance of the TextFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n        // set initial values for field\r\n        this.language = 'plaintext';\r\n        this.editorSubscriptions = [];\r\n        // start subscriptions\r\n        this.subscriptions.push(\r\n            // begin loading monaco library\r\n            Monaco.loadMonacoEditor().pipe(take(1)).subscribe(() => {\r\n                // start monaco subscriptions\r\n                this.subscriptions.push(\r\n                    fromMonacoEvent(monaco.editor.onDidCreateEditor).pipe(\r\n                        filter(editor => editor === this.editor)\r\n                    ).subscribe((editor) => this.onEditorCreated(editor))\r\n                );\r\n                // create initial monaco editor\r\n                this.createEditor();\r\n            })\r\n        );\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular AfterViewInit interface\r\n     */\r\n    public ngAfterViewInit() {\r\n        super.ngAfterViewInit();\r\n        this.createEditor();\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnChanges interface\r\n     */\r\n    public ngOnChanges(changes: SimpleChanges): void {\r\n        super.ngOnInit();\r\n        const updateEditorOnChangesTo = ['options', 'language', 'readonly'];\r\n        if (!!this.editor && updateEditorOnChangesTo.some(prop => !!changes.prop)) {\r\n            this.createEditor();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnDestroy interface\r\n     */\r\n    public ngOnDestroy() {\r\n        super.ngOnDestroy();\r\n        this.disposeEditor();\r\n    }\r\n\r\n    /**\r\n     * Keydown handler for this form field\r\n     */\r\n    @HostListener('keydown', ['$event'])\r\n    public onKeyDown(event: KeyboardEvent) {\r\n        // prevent our own global handlers from affecting cursor control in monaco\r\n        const keyCodes = [\r\n            KeyCode.DownArrow,\r\n            KeyCode.UpArrow,\r\n            KeyCode.LeftArrow,\r\n            KeyCode.RightArrow,\r\n            KeyCode.Home,\r\n            KeyCode.End,\r\n            KeyCode.PageUp,\r\n            KeyCode.PageDown,\r\n            KeyCode.Tab\r\n        ];\r\n        if (keyCodes.includes(event.keyCode)) {\r\n            event.stopPropagation();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Scrolls and centers to a given position within the editor\r\n     * @param position The @see monaco.IPosition to scroll to\r\n     */\r\n    public scrollTo(position: monaco.IPosition) {\r\n        this.editor.revealLineInCenter(position.lineNumber);\r\n        this.editor.setPosition(position);\r\n        const scrollTop = this.editor.getTopForPosition(position.lineNumber, position.column);\r\n        this.editor.setScrollTop(scrollTop);\r\n    }\r\n\r\n    /**\r\n     * Finds a range from a starting keyword to an ending keyword.\r\n     */\r\n    public findKeyword(keyword: string): monaco.Range {\r\n        if (!this.editor || MsftSme.isNullOrWhiteSpace(keyword)) {\r\n            return null;\r\n        }\r\n        const match = this.editor.getModel().findNextMatch(keyword, { lineNumber: 0, column: 0 }, false, false, '', false);\r\n        return match ? match.range : null;\r\n    }\r\n\r\n    /**\r\n     * Finds a range from a starting keyword to an ending keyword.\r\n     */\r\n    public findKeywordRange(startKeyword: string, endKeyword: string): monaco.Range {\r\n        // fail to find if there is no editor, or args are invalid\r\n        if (!this.editor || MsftSme.isNullOrWhiteSpace(startKeyword) || MsftSme.isNullOrWhiteSpace(endKeyword)) {\r\n            return null;\r\n        }\r\n        // find start keyword\r\n        const model = this.editor.getModel();\r\n        const startMatch = model.findNextMatch(startKeyword, { lineNumber: 0, column: 0 }, false, false, '', false);\r\n        // fail if no start keyword\r\n        if (!startMatch) { return null; }\r\n        // find end keyword starting from end of start keyword\r\n        const endMatch = model.findNextMatch(endKeyword, startMatch.range.getEndPosition(), false, false, '', false);\r\n        // fail if no end keyword\r\n        if (!endMatch) { return null; }\r\n        // Create and return our found range\r\n        return new monaco.Range(\r\n            startMatch.range.startLineNumber,\r\n            startMatch.range.startColumn,\r\n            endMatch.range.startLineNumber,\r\n            endMatch.range.endColumn\r\n        );\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: ''\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Applies the focus to this form control\r\n     */\r\n    public focus() {\r\n        if (this.editor) {\r\n            this.editor.focus();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * When ngModel's value changes, update the editors value to reflect it\r\n     */\r\n    protected onValueChanged(value: string) {\r\n        if (this.editor && !MsftSme.isNullOrUndefined(value)) {\r\n            this.editor.setValue(value);\r\n        }\r\n\r\n        super.onValueChanged(value);\r\n    }\r\n\r\n    /**\r\n     * On layout changed event handler, occurs every time the layout has been changed.\r\n     */\r\n    protected onLayoutChanged() {\r\n        const orientation = this.calculatedOrientation;\r\n        super.onLayoutChanged();\r\n        // if orientation has not changed, then layout now, otherwise,\r\n        // layout will be done in onOrientationChanged\r\n        if (this.editor && orientation !== this.calculatedOrientation) {\r\n            this.editor.layout();\r\n        }\r\n    }\r\n\r\n    /**\r\n    * Occurs every time the orientation has been changed.\r\n    */\r\n    protected onOrientationChanged() {\r\n        super.onOrientationChanged();\r\n        if (this.editor) {\r\n            this.editor.layout();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Initializes the monaco editor\r\n     */\r\n    private createEditor() {\r\n        // make sure editor host and monaco are both loaded\r\n        if (!(this.editorHost && this.editorHost.nativeElement) || !Monaco.isEditorModuleLoaded) {\r\n            return;\r\n        }\r\n\r\n        // destroy the editor if it already exists\r\n        this.disposeEditor();\r\n\r\n        // generate new construction options\r\n        const options = this.createEditorConstructionOptions();\r\n\r\n        // create the editor\r\n        this.internalEditor = monaco.editor.create(this.editorHost.nativeElement, options);\r\n\r\n        // listen for editor changes\r\n        this.editorSubscriptions.push(\r\n            fromMonacoEvent(this.editor.onDidChangeModelContent).subscribe((event) => this.onEditorContentChanged(event))\r\n        );\r\n\r\n        this.onLayoutChanged();\r\n    }\r\n\r\n    /**\r\n     * Creates new construction options for the editor based on the current inputs to this control\r\n     */\r\n    private createEditorConstructionOptions(): monaco.editor.IStandaloneEditorConstructionOptions {\r\n        // create merged options from inputs and custom options\r\n        return {\r\n            // default options\r\n            theme: MsftSme.self().Resources.theme === 'dark' ? 'vs-dark' : 'vs',\r\n            lineNumbers: 'off',\r\n            minimap: { enabled: false },\r\n            value: this.value,\r\n            language: this.language,\r\n            readOnly: this.readonly,\r\n            ariaLabel: this.label,\r\n            tabFocusMode: false,\r\n            // override with custom options\r\n            ...this.options\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Occurs when the editor is created or recreated\r\n     */\r\n    private onEditorCreated(editor: monaco.editor.ICodeEditor) {\r\n        if (this.readonly) {\r\n            const inputAreaElement = <HTMLElement>this.editorHost.nativeElement.querySelector('.inputarea');\r\n            if (inputAreaElement) {\r\n                while (inputAreaElement.attributes.length > 0) {\r\n                    inputAreaElement.removeAttribute(inputAreaElement.attributes[0].name);\r\n                }\r\n                inputAreaElement.setAttribute('aria-readonly', 'true');\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Occurs when the editors content has changed.\r\n     * @param event the @see monaco.editor.IModelContentChangedEvent event object\r\n     */\r\n    private onEditorContentChanged(event: monaco.editor.IModelContentChangedEvent): void {\r\n        const value = this.model.getValue();\r\n        if (this.value !== value) {\r\n            this.value = value;\r\n            this.ngModel.control.updateValueAndValidity();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Occurs when the editor is being disposed\r\n     */\r\n    private disposeEditor() {\r\n        if (!this.editor) {\r\n            return;\r\n        }\r\n        this.editorSubscriptions.forEach(s => { if (!s.closed) { s.unsubscribe(); } });\r\n        this.editorSubscriptions = [];\r\n        this.editor.dispose();\r\n        this.internalEditor = null;\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <div class=\"sme-searchbox sme-searchbox-button-icon\" [class.sme-disabled]=\"loadingOrDisabled\">\r\n    <input type=\"search\" [attr.aria-labelledby]=\"idBag.labelSpan\" [required]=\"required\" [autofocus]=\"autofocus\"\r\n      [disabled]=\"loadingOrDisabled\" [(ngModel)]=\"value\" [placeholder]=\"placeholder\" (ngModelChange)=\"executeSearch()\"\r\n      (keydown.Enter)=\"onEnterKeyDown($event)\" (keydown)=\"onKeyDown($event)\" (blur)=\"onBlur($event)\">\r\n    <ng-container *ngIf=\"!disableSearchButton\">\r\n      <button *ngIf=\"!emphasizeSearchButton\" type=\"button\"\r\n        class=\"sme-button-trigger sme-button-auto-width sme-form-field-height\" (click)=\"executeDeliberateSearch()\"\r\n        [smeDisabled]=\"loadingOrDisabled\" [attr.aria-label]=\"searchButtonText\" [title]=\"searchButtonText\"\r\n        data-uta-id=\"search-button\">\r\n        <span class=\"sme-icon sme-icon-search sme-icon-size-xxs\"></span>\r\n      </button>\r\n      <button *ngIf=\"emphasizeSearchButton\" type=\"button\"\r\n        class=\"sme-button-primary sme-button-auto-width sme-form-field-height\" (click)=\"executeDeliberateSearch()\"\r\n        [smeDisabled]=\"loadingOrDisabled\" data-uta-id=\"search-button\">\r\n        <span class=\"sme-icon sme-icon-search sme-margin-right-xs sme-icon-size-xxs\"></span>\r\n        <span>{{searchButtonText}}</span>\r\n      </button>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"disableSearchButton\">\r\n      <span class=\"sme-icon sme-icon-search sme-margin-right-xs sme-icon-size-xxs\" (click)=\"iconClick($event)\"></span>\r\n    </ng-container>\r\n  </div>\r\n  <span class=\"sme-screen-reader\" [id]=\"idBag.labelSpan\">{{label}}</span>\r\n  <span class=\"sme-screen-reader\" [id]=\"idBag.countSpan\">\r\n    <span *ngIf=\"!searching\" aria-live=\"polite\" aria-relevant=\"all\">\r\n      {{ count ? strings.MsftSmeShell.Angular.Form.SearchField.count.format(count) :\r\n      strings.MsftSmeShell.Angular.Form.SearchField.count.format(0) }}\r\n    </span>\r\n    <span *ngIf=\"searching\" aria-live=\"polite\" aria-relevant=\"all\">\r\n      {{strings.MsftSmeShell.Angular.Form.SearchField.Searching.label}}\r\n    </span>\r\n  </span>\r\n\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import { Component, EventEmitter, Injector, Input, OnInit, Output } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { SmeInternalFormFieldComponent } from '../form-field.component';\r\n\r\n/**\r\n * Accessible search field implementation of .sme-searchbox\r\n */\r\n@Component({\r\n    selector: 'sme-form-field[type=\"search\"]',\r\n    templateUrl: './search-form-field.component.html'\r\n})\r\nexport class SearchFormFieldComponent extends SmeInternalFormFieldComponent<any> implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'SearchFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     *  Input binding for the number of search results found\r\n     */\r\n    @Input()\r\n    public count?: number;\r\n\r\n    /**\r\n     *  Input binding for whether the user is currently searching in the field. Defaults to false\r\n     */\r\n    @Input()\r\n    public searching = false;\r\n\r\n    /**\r\n     *  Input binding for whether to trim leading/trailing whitespace in a search. Defaults to true.\r\n     */\r\n    @Input()\r\n    public trimSearch = true;\r\n\r\n    /**\r\n     *  Input binding for whether to emphasize the search button. Defaults to false.\r\n     */\r\n    @Input()\r\n    public emphasizeSearchButton = false;\r\n\r\n    /**\r\n     *  Input binding for the search button text\r\n     */\r\n    @Input()\r\n    public searchButtonText: string;\r\n\r\n    /**\r\n     *  Input binding for whether to disable the button and not handle clicks on it.\r\n     */\r\n    @Input()\r\n    public disableSearchButton = false;\r\n\r\n    /**\r\n     *  Output binding for the event emitted from typing into the search field, or executing a deliberate search\r\n     */\r\n    @Output()\r\n    public search: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n    /**\r\n     * Output binding for event emitted on key press on the search box\r\n     */\r\n    @Output()\r\n    public keyDownEvent: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\r\n\r\n    /**\r\n     * Output binding for event emitted when focus leaves search box\r\n     */\r\n    @Output()\r\n    public blurEvent: EventEmitter<FocusEvent> = new EventEmitter<FocusEvent>();\r\n\r\n    /**\r\n     *  Output binding for the event emitted from hitting the search button or the enter key\r\n     */\r\n    @Output()\r\n    public deliberateSearch: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n    /**\r\n     * Initializes a new instance of the SearchFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n        this.hideHeader = true;\r\n        this.searchButtonText = this.strings.MsftSmeShell.Angular.Common.search;\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnInit interface\r\n     */\r\n    public ngOnInit() {\r\n        super.ngOnInit();\r\n        this.setAttribute('role', 'search');\r\n    }\r\n\r\n    /**\r\n     * Emits the updated search value, after a default debounce time\r\n     */\r\n    @Debounce()\r\n    public executeSearch() {\r\n        if (this.trimSearch) {\r\n            this.search.emit(this.value ? this.value.trim() : this.value);\r\n        } else {\r\n            this.search.emit(this.value);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Emits the updated deliberate search value, after a default debounce time\r\n     */\r\n    @Debounce()\r\n    public executeDeliberateSearch() {\r\n        if (this.trimSearch) {\r\n            this.deliberateSearch.emit(this.value ? this.value.trim() : this.value);\r\n        } else {\r\n            this.deliberateSearch.emit(this.value);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Emits events on key press and while focus is on the search box\r\n     */\r\n    @Debounce()\r\n    public onKeyDown(event: KeyboardEvent) {\r\n        if (MsftSme.isEmpty(this.value) && (event.key === 'Backspace' || event.key === 'Delete')) {\r\n            // This check allows for search to execute when deleting keypresses are sent after the value has been cleared out\r\n            this.executeSearch();\r\n        }\r\n        this.keyDownEvent.emit(event);\r\n    }\r\n\r\n    /**\r\n     * Emits event when focus leaves the search box\r\n     */\r\n    @Debounce()\r\n    public onBlur(event: FocusEvent) {\r\n        this.blurEvent.emit(event);\r\n    }\r\n\r\n    /**\r\n     * Handles the enter key on the search input\r\n     */\r\n    public onEnterKeyDown($event: Event) {\r\n        $event.preventDefault();\r\n        $event.stopPropagation();\r\n        this.executeSearch();\r\n        this.executeDeliberateSearch();\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Handles the click event for the search icon.\r\n     */\r\n    public iconClick($event: MouseEvent) {\r\n        $event.preventDefault();\r\n        $event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            labelSpan: '',\r\n            countSpan: '',\r\n            detailsSpan: ''\r\n        };\r\n    }\r\n}\r\n","<sme-form-field #field type=\"combobox\" [(ngModel)]=\"data\"\r\n  [name]=\"propertySchema.name\"\r\n  [label]=\"localize(propertySchema.label)\"\r\n  [description]=\"localize(propertySchema.description)\"\r\n  [required]=\"propertySchema.required\"\r\n  [readonly]=\"!!(evalExpression(propertySchema.readonlyCondition))\"\r\n  [searchable]=\"!!(propertySchema.options && propertySchema.options.searchable)\"\r\n  [loading]=\"!!(propertySchema.options && propertySchema.options.busyCondition && evalExpression(propertySchema.options.busyCondition))\"\r\n  [disabled]=\"!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition)) || !!(propertySchema.options && propertySchema.options.busyCondition && evalExpression(propertySchema.options.busyCondition))\"\r\n  (customValidate)=\"resolveFunction(propertySchema.customValidation)($event)\"\r\n  (customAsyncValidate)=\"propertySchema.customAsyncValidation && resolveFunction(propertySchema.customAsyncValidation.handler)($event)\"\r\n  [pendingMessage]=\"propertySchema.customAsyncValidation && localize(propertySchema.customAsyncValidation.pendingMessage)\"\r\n  [customAsyncValidateDisabled]=\"shouldCustomAsyncValidationBeDisabled()\"\r\n  [customAsyncValidateDebounceTime]=\"propertySchema.customAsyncValidation && +propertySchema.customAsyncValidation.handler\"\r\n  [placeholder]=\"localize(propertySchema.options && propertySchema.options.placeholder)\">\r\n  <sme-option *ngFor=\"let item of propertySchema.options.items\" [value]=\"item.value\" [label]=\"localize(item.label)\"></sme-option>\r\n  <ng-container *ngIf=\"propertySchema.options.itemsBinding\">\r\n    <sme-option *ngFor=\"let item of resolveComponentMember(propertySchema.options.itemsBinding)\"\r\n      [value]=\"item.value\" [label]=\"localize(item.label)\"></sme-option>\r\n  </ng-container>\r\n</sme-form-field>\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <sme-dropdown #dropDown [autoToggle]=\"false\" class=\"sme-combobox sme-focus-zone sme-form-field-editor\"\r\n    [disabled]=\"loadingOrDisabled\" [calculateHeight]=\"true\" (toggled)=\"onDropdownToggled($event)\"\r\n    [dropdownApplyFormFieldOffsetWidth]=\"dropdownApplyFormFieldOffsetWidth\">\r\n    <div #dropdownHeader class=\"sme-combobox-header sme-dropdown-toggle\" (keydown)=\"onToggleKeydown($event)\"\r\n      (keypress)=\"onToggleKeyPress($event)\">\r\n      <input (blur)=\"onBlur()\" #textInput type=\"text\" role=\"combobox\" [value]=\"selectedOptionsDisplayValue\" readonly\r\n        [attr.aria-controls]=\"idBag.dropDownContent\" [attr.aria-label]=\"label\"\r\n        [attr.disabled]=\"loadingOrDisabled ? true : null\" [attr.aria-owns]=\"idBag.dropDownContent\"\r\n        [attr.aria-expanded]=\"dropDown.isOpen\" [attr.aria-autocomplete]=\"'none'\"\r\n        (click)=\"dropDown.onToggleClick($event, true)\" spellcheck=\"false\" autocapitalize=\"off\" autocomplete=\"off\"\r\n        [placeholder]=\"placeholder\" [attr.aria-required]=\"required\" />\r\n      <button type=\"button\" [attr.disabled]=\"loadingOrDisabled ? true : null\" tabindex=\"-1\" role=\"presentation\"\r\n        aria-hidden=\"true\" [attr.aria-pressed]=\"dropDown.isOpen\" [class.sme-toggled]=\"dropDown.isOpen\"\r\n        class=\"sme-button-trigger sme-button-auto-width\" (click)=\"dropDown.onToggleClick($event, true)\">\r\n        <span class=\"sme-icon sme-icon-chevronDown\"></span>\r\n      </button>\r\n    </div>\r\n    <!-- The minimum of width that a dropdown can be is set at 220px -->\r\n    <!-- Guarantee dropdown content width can not go below this value no matter how small the window is set at -->\r\n    <!-- Otherwise will display gray margin to the right of the dropdown content on small window -->\r\n    <div #listbox role=\"listbox\" class=\"sme-dropdown-content sme-dropdown-content-inherit-container-height\"\r\n      [class.sme-padding-squish-v-xs]=\"multiple\" (keydown)=\"onListboxKeydown($event)\"\r\n      [ngStyle]=\"dropdownApplyFormFieldOffsetWidth && { 'max-width.px': dropdownHeader.offsetWidth > 220 ? dropdownHeader.offsetWidth : 220} || !dropdownApplyFormFieldOffsetWidth && { 'max-width': 'initial' }\"\r\n      [id]=\"idBag.dropDownContent\">\r\n      <form *ngIf=\"searchable\" (keydown)=\"onSearchFormKeydown($event)\" [class.sme-padding-squish-v-xs]=\"!multiple\">\r\n        <sme-form-field (keyDownEvent)=\"onKeyDownEvent($event)\" (blurEvent)=\"onBlur()\" name=\"searchStringValue\" type=\"search\" [disableSearchButton]=\"true\"\r\n          [placeholder]=\"strings.MsftSmeShell.Angular.Common.search\"\r\n          [label]=\"strings.MsftSmeShell.Angular.Common.search\" [id]=\"idBag.searchInput\"\r\n          [count]=\"optionsFiltered.length ? optionsFiltered.length : 0\" [(ngModel)]=\"searchString\"\r\n          (ngModelChange)=\"onSearchStringChange()\"></sme-form-field>\r\n      </form>\r\n      <div *ngIf=\"multiple && showSelectAll\" class=\"sme-checkbox sme-dropdown-interaction-enabled\"\r\n        [class.sme-layout-none]=\"isFiltered\" role=\"option\">\r\n        <label class=\"sme-position-stretch-h sme-arrange-word-break-all\">\r\n          <input (blur)=\"onBlur()\" type=\"checkbox\" [attr.data-uta-id]=\"selectAllUtaId\" (change)=\"toggleAllOptions()\" [checked]=\"isAllOptionsSelected\"\r\n            [attr.aria-checked]=\"isAllOptionsSelected\" role=\"checkbox\" [attr.aria-label]=\"selectAllLabel\"\r\n            [smeTelemetryId]=\"selectAllLabel\"\r\n            class=\"sme-layout-absolute sme-position-inset-none\" />\r\n          <span aria-hidden=\"true\">{{selectAllLabel}}</span>\r\n        </label>\r\n      </div>\r\n      <ng-container *ngIf=\"searchable\">\r\n        <ng-container *ngFor=\"let option of optionsFiltered;trackBy: trackOption\">\r\n          <ng-container smeTemplateOutlet [template]=\"itemTemplate\" [data]=\"option\"></ng-container>\r\n        </ng-container>\r\n      </ng-container>\r\n      <ng-container *ngIf=\"!searchable\">\r\n        <ng-container *ngFor=\"let option of options;trackBy: trackOption\">\r\n          <ng-container smeTemplateOutlet [template]=\"itemTemplate\" [data]=\"option\"></ng-container>\r\n        </ng-container>\r\n      </ng-container>\r\n    </div>\r\n  </sme-dropdown>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n\r\n  <ng-template #singleSelectTemplate let-option>\r\n    <button (blur)=\"onBlur()\" type=\"button\" role=\"option\" [attr.aria-selected]=\"option.isSelected\" [attr.aria-label]=\"option.toString()\"\r\n      [class.sme-selected]=\"option.isSelected\" (click)=\"toggleOption(option, true); textInput.focus()\"\r\n      [disabled]=\"option.disabled\" [attr.data-uta-id]=\"option.utaId ? option.utaId : option.value\">\r\n      <span [smeTooltip]=\"option.disabled ? null : option.resolvedTooltipTemplate\"\r\n        [smeTooltipContext]=\"option.disabled ? null : (option.tooltipContext || option)\">\r\n        <span [class.sme-arrange-ellipsis]=\"!overflowWrap\" [title]=\"option.resolvedTitle\"\r\n          [class.sme-combobox-option-wrap]=\"overflowWrap\"\r\n          class=\"sme-layout-float-left\">{{option.toString()}}\r\n        </span>\r\n      </span>\r\n    </button>\r\n  </ng-template>\r\n\r\n  <ng-template #multiSelectTemplate let-option>\r\n    <div class=\"sme-checkbox sme-dropdown-interaction-enabled\" role=\"option\">\r\n      <label class=\"sme-position-stretch-h sme-arrange-word-break-all\">\r\n        <input (blur)=\"onBlur()\" type=\"checkbox\" (change)=\"toggleOption(option, !option.isSelected)\" [checked]=\"option.isSelected\"\r\n          [attr.aria-checked]=\"option.isSelected\" role=\"checkbox\" [attr.aria-label]=\"option.toString()\"\r\n          [attr.data-uta-id]=\"option.utaId ? option.utaId : option.value\"\r\n          [smeTelemetryId]=\"option.toString()\"\r\n          [disabled]=\"option.disabled\" class=\"sme-layout-absolute sme-position-inset-none\" />\r\n        <span aria-hidden=\"true\" [class.sme-combobox-option-wrap]=\"overflowWrap\"\r\n          class=\"sme-position-stretch-h sme-layout-float-left\"\r\n          [smeTooltip]=\"option.disabled ? null : option.resolvedTooltipTemplate\" [title]=\"option.resolvedTitle\"\r\n          [smeTooltipContext]=\"option.disabled ? null : (option.tooltipContext || option)\">\r\n          <span class=\"sme-position-stretch-h sme-layout-float-left\"\r\n            [class.sme-arrange-ellipsis]=\"!overflowWrap\">{{option.toString()}}\r\n          </span>\r\n        </span>\r\n      </label>\r\n    </div>\r\n  </ng-template>\r\n</sme-form-field-layout>\r\n","import { Component, ElementRef, Injector, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { DropdownComponent } from '../../../dropdown/dropdown.component';\r\nimport { DropdownService } from '../../../dropdown/dropdown.service';\r\nimport { ValidationAlerts } from '../../../form/validation-alert/validation-alert';\r\nimport { SmeSchemaProperty } from '../../../schema/schema-decorator';\r\nimport { SimplePropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';\r\nimport { SchemaArrayProperty, SchemaObjectProperty, SchemaPrimitiveType } from '../../../schema/schema-models';\r\nimport { SmeInternalOptionsFormFieldComponent } from '../options-form-field/options-form-field.component';\r\n\r\nexport type ValueOrArray<T> = T | T[];\r\n@Component({\r\n    templateUrl: './combobox-schema-driven-form-template.html'\r\n})\r\nexport class ComboboxFormFieldLoaderComponent extends SimplePropertySchemaFieldLoaderComponent {\r\n}\r\n\r\n/**\r\n * Accessible Implementation of a form field combo box\r\n */\r\n@SmeSchemaProperty({\r\n    type: SchemaPrimitiveType.String,\r\n    format: 'combobox',\r\n    description: 'a combobox control binding to string data.',\r\n    loaderComponent: ComboboxFormFieldLoaderComponent,\r\n    optionProperties: [\r\n        <SchemaArrayProperty>{\r\n            type: SchemaPrimitiveType.Array,\r\n            format: 'simple-list',\r\n            name: 'items',\r\n            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.StaticOptions',\r\n            item: <SchemaObjectProperty>{\r\n                type: SchemaPrimitiveType.Object,\r\n                format: 'default',\r\n                properties: [\r\n                    {\r\n                        type: SchemaPrimitiveType.String,\r\n                        format: 'resource-string-picker',\r\n                        name: 'label',\r\n                        label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.Label',\r\n                        required: true\r\n                    },\r\n                    {\r\n                        type: SchemaPrimitiveType.String,\r\n                        format: 'textbox',\r\n                        name: 'value',\r\n                        label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.Value',\r\n                        required: true\r\n                    }\r\n                ],\r\n                options: {\r\n                    columnCount: 1\r\n                }\r\n            }\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.String,\r\n            format: 'textbox',\r\n            name: 'itemsBinding',\r\n            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.DynamicOptions'\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.String,\r\n            format: 'textbox',\r\n            name: 'busyCondition',\r\n            label: 'actual_string:Busy Condition'\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.String,\r\n            format: 'resource-string-picker',\r\n            name: 'placeholder',\r\n            defaultValue: '',\r\n            label: 'actual_string:Placeholder'\r\n        }\r\n    ]\r\n})\r\n@Component({\r\n    selector: 'sme-form-field[type=\"combobox\"],sme-form-field[type=\"select\"]',\r\n    templateUrl: './combobox-form-field.component.html'\r\n})\r\nexport class ComboboxFormFieldComponent<T> extends SmeInternalOptionsFormFieldComponent<Array<T>> implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'ComboboxFormFieldComponent';\r\n    }\r\n\r\n    @ViewChild('singleSelectTemplate', { static: true })\r\n    public singleSelectTemplate: TemplateRef<any>;\r\n\r\n    @ViewChild('multiSelectTemplate', { static: true })\r\n    public multiSelectTemplate: TemplateRef<any>;\r\n\r\n    @ViewChild('listbox')\r\n    public listboxElement: ElementRef;\r\n\r\n    @ViewChild('dropDown')\r\n    public dropDown: DropdownComponent;\r\n\r\n    @Input()\r\n    public multiple: boolean;\r\n\r\n    // by default will show ellipsis\r\n    // otherwise show wrapped text\r\n    @Input()\r\n    public overflowWrap: boolean;\r\n\r\n    /**\r\n     * Determine if reset search string on collapse dropdown\r\n     */\r\n    @Input()\r\n    public maintainSearch: boolean;\r\n\r\n    /**\r\n     * Determine if the dropdown will use the sme-form-field to limit its max-width\r\n     */\r\n    @Input()\r\n    public dropdownApplyFormFieldOffsetWidth = true;\r\n\r\n    private dropdownService: DropdownService;\r\n\r\n    public get isFiltered(): boolean {\r\n        return this.searchString && this.searchString.length > 0;\r\n    }\r\n\r\n    public get itemTemplate() {\r\n        return this.multiple ? this.multiSelectTemplate : this.singleSelectTemplate;\r\n    }\r\n\r\n    private keyBoardEvent: KeyboardEvent;\r\n\r\n    /**\r\n     * Initializes a new instance of the ComboboxFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n\r\n        this.dropdownService = injector.get(DropdownService);\r\n\r\n        this.multiple = false;\r\n        this.maintainSearch = false;\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnInit interface\r\n     */\r\n    public ngOnInit() {\r\n        super.ngOnInit();\r\n    }\r\n\r\n    /**\r\n     * Handles keypress events on the dropdown toggle\r\n     */\r\n    public onToggleKeyPress(event: KeyboardEvent) {\r\n        // for all other cases, send to autocomplete\r\n        this.progressiveAutoComplete(event.keyCode);\r\n\r\n        // handle all keys\r\n        event.stopImmediatePropagation();\r\n        event.stopPropagation();\r\n        event.preventDefault();\r\n    }\r\n\r\n    /**\r\n     * Handles toggled state changes\r\n     */\r\n    public onDropdownToggled(expanded: boolean) {\r\n        if (expanded) {\r\n            // Single selection option width need to be restricted by the dropdown\r\n            if (!this.multiple) {\r\n                this.applySingleOptionWidth();\r\n            }\r\n            if (this.searchable && !MsftSme.isNullOrWhiteSpace(this.searchString) && !this.maintainSearch) {\r\n                this.searchString = '';\r\n                this.updatePosition();\r\n            }\r\n            let focusOn = this.listboxElement.nativeElement.querySelector('[role=\"option\"][aria-selected=\"true\"]');\r\n            if (!focusOn) {\r\n                focusOn = Dom.getNextFocusableElement(this.listboxElement.nativeElement);\r\n            }\r\n        } else {\r\n            this.hostElement.nativeElement.focus();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Handles event emitted when focus leaves input field\r\n     */\r\n    public onBlur() {\r\n        if (this.keyBoardEvent?.keyCode === KeyCode.Tab) {\r\n            this.dropDown.close();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Handles event emitted on key press in search form input field\r\n     * @param event\r\n     */\r\n    public onKeyDownEvent(event: KeyboardEvent) {\r\n        this.keyBoardEvent = event;\r\n    }\r\n\r\n    private getFirstOption(): HTMLElement {\r\n        if (this.multiple) {\r\n            const checkboxes = (<HTMLElement>this.hostElement.nativeElement).querySelectorAll('input[type=\"checkbox\"]');\r\n            for (let i = 0; i < checkboxes.length; i++) {\r\n                const checkbox = <HTMLElement>checkboxes.item(i);\r\n                if (Dom.isFocusable(checkbox)) {\r\n                    return checkbox;\r\n                }\r\n            }\r\n        } else {\r\n            const options = (<HTMLElement>this.hostElement.nativeElement).querySelectorAll('button[role=\"option\"]');\r\n            for (let i = 0; i < options.length; i++) {\r\n                const option = <HTMLElement>options.item(i);\r\n                if (Dom.isFocusable(option)) {\r\n                    return option;\r\n                }\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n\r\n    /**\r\n     * Handles keydown events on the dropdown toggle\r\n     */\r\n    public onToggleKeydown(event: KeyboardEvent) {\r\n        this.keyBoardEvent = event;\r\n        switch (event.keyCode) {\r\n            case KeyCode.Enter:\r\n            case KeyCode.Space: {\r\n                this.dropDown.onToggleClick(event, true);\r\n                break;\r\n            }\r\n            case KeyCode.UpArrow: {\r\n                if (!this.multiple && !this.dropDown.isOpen) {\r\n                    this.selectPreviousOption();\r\n                }\r\n                return;\r\n            }\r\n            case KeyCode.DownArrow: {\r\n                if (event.altKey) {\r\n                    this.dropDown.onToggleClick(event, true);\r\n                } else if (!this.multiple && !this.dropDown.isOpen) {\r\n                    this.selectNextOption();\r\n                }\r\n                return;\r\n            }\r\n            default: {\r\n                return;\r\n            }\r\n        }\r\n\r\n        // handle all keys\r\n        event.stopImmediatePropagation();\r\n        event.stopPropagation();\r\n        event.preventDefault();\r\n    }\r\n\r\n    /**\r\n     * Handles keydown events on option changes\r\n     */\r\n    public onListboxKeydown(event: KeyboardEvent) {\r\n        this.keyBoardEvent = event;\r\n        switch (event.keyCode) {\r\n            case KeyCode.UpArrow:\r\n            case KeyCode.LeftArrow: {\r\n                const firstCheckbox = this.getFirstOption();\r\n                if (firstCheckbox && document.activeElement === firstCheckbox) {\r\n                    (<HTMLElement>(<HTMLElement>this.hostElement.nativeElement).querySelector('input[type=\"search\"]')).focus();\r\n                    break;\r\n                }\r\n                return;\r\n            }\r\n            default: {\r\n                return;\r\n            }\r\n        }\r\n\r\n        // handle all keys\r\n        event.stopImmediatePropagation();\r\n        event.stopPropagation();\r\n        event.preventDefault();\r\n    }\r\n\r\n    public onSearchFormKeydown(event: KeyboardEvent) {\r\n        switch (event.keyCode) {\r\n            case KeyCode.DownArrow:\r\n            case KeyCode.RightArrow: {\r\n                const firstOption = this.getFirstOption();\r\n                if (firstOption) {\r\n                    firstOption.focus();\r\n                    break;\r\n                }\r\n                return;\r\n            }\r\n            default: { return; }\r\n        }\r\n\r\n        // handle all keys\r\n        event.stopImmediatePropagation();\r\n        event.stopPropagation();\r\n        event.preventDefault();\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: '',\r\n            dropDownContent: '',\r\n            searchInput: ''\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control\r\n     * @param c The form control attached to this instance\r\n     */\r\n    protected validate(c: FormControl): ValidationAlerts {\r\n\r\n        if (this.required) {\r\n            if (MsftSme.isNullOrUndefined(this.value)) {\r\n                return { required: true };\r\n            }\r\n\r\n            if (this.multiple) {\r\n                const keys = Object.keys(this.value);\r\n                if (keys.length === 0 || keys.every(k => !this.value[k])) {\r\n                    return { required: true };\r\n                }\r\n            }\r\n        }\r\n\r\n        return super.validate(c);\r\n    }\r\n\r\n    /**\r\n     * On searchString model change\r\n     */\r\n    @Debounce()\r\n    public onSearchStringChange() {\r\n        this.filterOptionBySearchString();\r\n        this.updatePosition();\r\n    }\r\n\r\n    @Yield()\r\n    private updatePosition() {\r\n        this.dropdownService.updatePosition(this.dropDown, true);\r\n    }\r\n\r\n    /**\r\n     * It handles calculating and updating the styles for each of the options inside\r\n     * of the dropdown container, because the dropdown container's width is dynamic,\r\n     * have to calculate option as well.\r\n     */\r\n    private applySingleOptionWidth(): void {\r\n        const width = this.getSingleDropdownOptionWidth();\r\n        if (width === null) { return; }\r\n        const options = (<HTMLElement>this.hostElement.nativeElement).querySelectorAll('button[role=\"option\"]');\r\n        if (!options) { return; }\r\n        // TODO: when decided to do virtualization for this portion\r\n        // need to only calculate the ones that are inside of view port\r\n        for (let i = 0; i < options.length; i++) {\r\n            const option = <HTMLElement>options.item(i);\r\n            const span = <HTMLElement>option.querySelector('span');\r\n            if (!span) { return; }\r\n            const innerSpan = <HTMLElement>span.querySelector('span');\r\n            if (!innerSpan) { return; }\r\n            span.style.width = width + 'px';\r\n            // 24 is the button's padding left and right\r\n            // the inner part of the span need to be the total dropdown value minus\r\n            // button's padding left and right to make the ellipsis working\r\n            const innerSpanWidth = width - 24;\r\n            innerSpan.style.width = innerSpanWidth + 'px';\r\n        }\r\n    }\r\n    /**\r\n     * This handles getting the current width being applied by the dropdown service\r\n     */\r\n    private getSingleDropdownOptionWidth(): number {\r\n        const contentElement = (<HTMLElement>this.dropDown.contentElement.nativeElement);\r\n        if (!contentElement) { return null; }\r\n        const firstOption = Dom.getFirstElement(contentElement, element => element.tagName === 'BUTTON');\r\n        if (!firstOption) { return null; }\r\n        return firstOption.offsetWidth;\r\n    }\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n/**\r\n * @deprecated since 03/06/19. Please use ComboboxFormFieldComponent (sme-form-field[type=\"combobox\"]) instead\r\n * Placeholder for old select form field. combobox should be used instead.\r\n * this is kept for backward compatibility only.\r\n */\r\n@Directive({\r\n    // eslint-disable-next-line @angular-eslint/directive-selector\r\n    selector: 'sme-form-field[type=\"select\"]'\r\n})\r\nexport class SelectFormFieldDirective { }\r\n","import { Component, Injector, ViewChild } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { DateLike } from '@microsoft/windows-admin-center-sdk/core/base/date/date-like';\r\nimport { DateTime } from '@microsoft/windows-admin-center-sdk/core/base/date/date-time';\r\nimport { DateType } from '@microsoft/windows-admin-center-sdk/core/base/date/date-type';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { Globalization } from '@microsoft/windows-admin-center-sdk/core/data/globalization';\r\nimport { DropdownComponent } from '../../../dropdown/dropdown.component';\r\nimport { ValidationAlerts } from '../../validation-alert/validation-alert';\r\nimport { CalendarFormFieldComponent } from '../calendar/calendar-form-field.component';\r\nimport { DateLikeFormFieldComponent } from '../date-like/date-like-form-field.component';\r\n\r\n/**\r\n * Date Form Field Component\r\n */\r\n@Component({\r\n    selector: 'sme-form-field[type=\"date\"]',\r\n    templateUrl: './date-form-field.component.html'\r\n})\r\nexport class DateFormFieldComponent extends DateLikeFormFieldComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'DateFormFieldComponent';\r\n    }\r\n\r\n    @ViewChild('dropDown')\r\n    public dropDown: DropdownComponent;\r\n\r\n    @ViewChild('calendar')\r\n    public calendar: CalendarFormFieldComponent;\r\n\r\n    /**\r\n     * The current editable display value of this field\r\n     */\r\n    public displayValue: string;\r\n\r\n    /**\r\n     * indicates if the display value is valid\r\n     */\r\n    public displayValueValid: boolean;\r\n\r\n    /**\r\n     * indicates if a value change is expected\r\n     */\r\n    public expectValueChange: boolean;\r\n\r\n    /**\r\n     * Initializes a new instance of the @see DateFormFieldComponent class.\r\n     * @param injector The angular injection service. required by @see SmeInjectableBase decorator in the @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.displayValueValid = false;\r\n    }\r\n\r\n    /**\r\n     * Handles toggled state changes\r\n     */\r\n    public onDropdownToggled(expanded: boolean) {\r\n        if (expanded) {\r\n            this.calendar.focus();\r\n        } else {\r\n            this.focus();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Handles keydown events on the dropdown toggle\r\n     */\r\n    public onToggleKeydown(event: KeyboardEvent) {\r\n        switch (event.keyCode) {\r\n            case KeyCode.Enter: {\r\n                this.dropDown.onToggleClick(event, true);\r\n                event.stopImmediatePropagation();\r\n                event.stopPropagation();\r\n                event.preventDefault();\r\n                return;\r\n            }\r\n            case KeyCode.DownArrow: {\r\n                if (event.altKey) {\r\n                    this.dropDown.onToggleClick(event, true);\r\n                }\r\n                return;\r\n            }\r\n            default: { return; }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Handles value changes from the date input\r\n     */\r\n    public commitDisplayValue() {\r\n        const displayDate = new Date(this.displayValue);\r\n        this.displayValueValid = !isNaN(displayDate.getTime());\r\n        this.expectValueChange = true;\r\n        this.markAsDirty();\r\n        if (this.displayValueValid) {\r\n            const valueAsDate = DateType.convert(this.value, DateType.Date);\r\n            DateTime.copyDate(displayDate, valueAsDate);\r\n            const dateType = MsftSme.isNullOrUndefined(this.dateType) ? this.detectedDateType : this.dateType;\r\n            this.value = DateType.convert(valueAsDate, dateType);\r\n        } else {\r\n            this.ngModel.control.updateValueAndValidity();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Occurs every time the value of the control changes, in the UI or programmatically.\r\n     * @param value the value of the form control\r\n     */\r\n    protected onValueChanged(value: DateLike) {\r\n        super.onValueChanged(value);\r\n        if (!this.expectValueChange) {\r\n            if (!value) {\r\n                this.displayValue = '';\r\n            } else {\r\n                const valueAsDate = DateType.convert(value, DateType.Date);\r\n                this.displayValue = valueAsDate.toLocaleDateString(Globalization.localeId);\r\n            }\r\n            if (!this.displayValueValid) {\r\n                this.displayValueValid = true;\r\n                this.ngModel.control.updateValueAndValidity();\r\n            }\r\n        }\r\n        this.expectValueChange = false;\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control\r\n     * @param c The form control attached to this instance\r\n     */\r\n    protected validate(c: FormControl): ValidationAlerts {\r\n        if (!this.displayValueValid) {\r\n            return {\r\n                invalidDisplayValue: {\r\n                    message: this.strings.MsftSmeShell.Angular.Form.Date.InvalidDate.format(\r\n                        DateTime.getLocaleDateStringFormat(Globalization.localeId.toLowerCase())\r\n                    )\r\n                }\r\n            };\r\n        }\r\n        return this.validateAsDate(c) || super.validate(c);\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: '',\r\n            dropDownContent: ''\r\n        };\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <div class=\"sme-arrange-stack-h sme-focus-zone sme-form-field-editor\">\r\n    <sme-dropdown #dropDown [autoToggle]=\"false\" class=\"sme-combobox\" [disabled]=\"disabled\" [autoWidth]=\"true\"\r\n                  (toggled)=\"onDropdownToggled($event)\">\r\n      <div #dropdownHeader class=\"sme-combobox-header sme-dropdown-toggle\" (keydown)=\"onToggleKeydown($event)\">\r\n        <input #textInput type=\"text\"\r\n              [attr.aria-required]=\"required\"\r\n              role=\"combobox\" [(ngModel)]=\"displayValue\" (ngModelChange)=\"commitDisplayValue()\"\r\n               [attr.aria-controls]=\"idBag.dropDownContent\" [attr.aria-label]=\"label\" [attr.disabled]=\"loadingOrDisabled ? true : null\"\r\n               [attr.aria-owns]=\"idBag.dropDownContent\" [attr.aria-expanded]=\"dropDown.isOpen\"\r\n               [attr.aria-autocomplete]=\"'none'\" spellcheck=\"false\" autocapitalize=\"off\" autocomplete=\"off\" [placeholder]=\"placeholder\" />\r\n        <button #dropDownButton type=\"button\" [attr.disabled]=\"loadingOrDisabled ? true : null\" tabindex=\"-1\" role=\"presentation\"\r\n                aria-hidden=\"true\" [attr.aria-pressed]=\"dropDown.isOpen\" [class.sme-toggled]=\"dropDown.isOpen\"\r\n                class=\"sme-button-trigger sme-button-auto-width\" (click)=\"dropDown.onToggleClick($event, true)\">\r\n          <span class=\"sme-icon sme-icon-calendar\"></span>\r\n        </button>\r\n      </div>\r\n      <div class=\"sme-dropdown-content sme-dropdown-interaction-enabled\" [id]=\"idBag.dropDownContent\">\r\n        <sme-form-field #calendar type=\"calendar\" [(ngModel)]=\"value\" [required]=\"true\" [hideHeader]=\"true\" orientation=\"vertical\"\r\n                        class=\"sme-padding-squish-v-sm\"></sme-form-field>\r\n      </div>\r\n    </sme-dropdown>\r\n  </div>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import { Component, Injector, OnInit, ViewChild } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { DateLike } from '@microsoft/windows-admin-center-sdk/core/base/date/date-like';\r\nimport { DateTime } from '@microsoft/windows-admin-center-sdk/core/base/date/date-time';\r\nimport { DateType } from '@microsoft/windows-admin-center-sdk/core/base/date/date-type';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { Globalization } from '@microsoft/windows-admin-center-sdk/core/data/globalization';\r\nimport { DropdownComponent } from '../../../dropdown/dropdown.component';\r\nimport { ValidationAlerts } from '../../validation-alert/validation-alert';\r\nimport { CalendarFormFieldComponent } from '../calendar/calendar-form-field.component';\r\nimport { ClockFormFieldComponent } from '../clock/clock-form-field.component';\r\nimport { DateLikeFormFieldComponent } from '../date-like/date-like-form-field.component';\r\n\r\n/**\r\n * DateTime Form Field Component\r\n */\r\n@Component({\r\n    selector: 'sme-form-field[type=\"datetime\"]',\r\n    templateUrl: './datetime-form-field.component.html'\r\n})\r\nexport class DateTimeFormFieldComponent extends DateLikeFormFieldComponent implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'DateTimeFormFieldComponent';\r\n    }\r\n\r\n    @ViewChild('dropDown')\r\n    public dropDown: DropdownComponent;\r\n\r\n    @ViewChild('calendar')\r\n    public calendar: CalendarFormFieldComponent;\r\n\r\n    @ViewChild('clock')\r\n    public clock: ClockFormFieldComponent;\r\n\r\n    /**\r\n     * The current editable display value of this field\r\n     */\r\n    public displayValue: string;\r\n\r\n    /**\r\n     * indicates if the display value is valid\r\n     */\r\n    public displayValueValid: boolean;\r\n\r\n    /**\r\n     * indicates if a value change is expected\r\n     */\r\n    public expectValueChange: boolean;\r\n\r\n    /**\r\n     * An intermediate store for drop down values\r\n     */\r\n    public interMediateValue: Date;\r\n\r\n    /**\r\n     * Initializes a new instance of the @see DateTimeFormFieldComponent class.\r\n     * @param injector The angular injection service. required by @see SmeInjectableBase decorator in the @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.displayValueValid = false;\r\n        this.interMediateValue = new Date();\r\n    }\r\n\r\n    /**\r\n     * Handles toggled state changes\r\n     */\r\n    public onDropdownToggled(expanded: boolean) {\r\n        if (expanded) {\r\n            this.calendar.focus();\r\n        } else {\r\n            this.focus();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Handles keydown events on the dropdown toggle\r\n     */\r\n    public onToggleKeydown(event: KeyboardEvent) {\r\n        switch (event.keyCode) {\r\n            case KeyCode.Enter: {\r\n                if (this.dropDown.isOpen) {\r\n                    this.commitDropDownValue(event);\r\n                    return;\r\n                }\r\n                this.dropDown.onToggleClick(event, true);\r\n                event.stopImmediatePropagation();\r\n                event.stopPropagation();\r\n                event.preventDefault();\r\n                return;\r\n            }\r\n            case KeyCode.DownArrow: {\r\n                if (event.altKey) {\r\n                    this.dropDown.onToggleClick(event, true);\r\n                }\r\n                return;\r\n            }\r\n            default: { return; }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Handles value changes from the date input\r\n     */\r\n    public commitDisplayValue() {\r\n        const displayDate = new Date(this.displayValue);\r\n        this.displayValueValid = !isNaN(displayDate.getTime());\r\n        this.expectValueChange = true;\r\n        this.markAsDirty();\r\n        if (this.displayValueValid) {\r\n            const valueAsDate = DateType.convert(this.value, DateType.Date);\r\n            DateTime.copyDate(displayDate, valueAsDate);\r\n            DateTime.copyTime(displayDate, valueAsDate);\r\n            const dateType = MsftSme.isNullOrUndefined(this.dateType) ? this.detectedDateType : this.dateType;\r\n            this.value = DateType.convert(valueAsDate, dateType);\r\n        } else {\r\n            this.ngModel.control.updateValueAndValidity();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Occurs every time the value of the control changes, in the UI or programmatically.\r\n     * @param value the value of the form control\r\n     */\r\n    protected onValueChanged(value: DateLike) {\r\n        super.onValueChanged(value);\r\n        if (!this.expectValueChange) {\r\n            if (!value) {\r\n                this.displayValue = '';\r\n            } else {\r\n                const valueAsDate = DateType.convert(value, DateType.Date);\r\n                this.displayValue = valueAsDate.toLocaleString(Globalization.localeId);\r\n            }\r\n            if (!this.displayValueValid) {\r\n                this.displayValueValid = true;\r\n                this.ngModel.control.updateValueAndValidity();\r\n            }\r\n        }\r\n        this.expectValueChange = false;\r\n    }\r\n\r\n    /**\r\n     * Called on ng model changes, prevents dropdown changes from going to form model.\r\n     */\r\n    public onNgModelChange(value: DateLike, dateChanged?: boolean): void {\r\n        const valueAsDate = DateType.convert(value, DateType.Date);\r\n\r\n        if (dateChanged) {\r\n            const year = valueAsDate.getFullYear();\r\n            const date = valueAsDate.getDate();\r\n            const month = valueAsDate.getMonth();\r\n\r\n            this.interMediateValue.setFullYear(year, month, date);\r\n            return;\r\n        }\r\n\r\n        const hours = valueAsDate.getHours();\r\n        const minutes = valueAsDate.getMinutes();\r\n\r\n        this.interMediateValue.setHours(hours, minutes);\r\n    }\r\n\r\n    /**\r\n     * Called when users commits drop down changes, they are saved to model\r\n     */\r\n    public commitDropDownValue(event: Event) {\r\n        this.value = this.interMediateValue;\r\n        this.dropDown.onToggleClick(event, true);\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control\r\n     * @param c The form control attached to this instance\r\n     */\r\n    protected validate(c: FormControl): ValidationAlerts {\r\n        if (!this.displayValueValid) {\r\n            return {\r\n                invalidDisplayValue: {\r\n                    message: this.strings.MsftSmeShell.Angular.Form.Date.InvalidDateTime.format(\r\n                        DateTime.getLocaleDateStringFormat(Globalization.localeId.toLowerCase()))\r\n                }\r\n            };\r\n        }\r\n        return this.validateAsDateTime(c) || super.validate(c);\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: '',\r\n            dropDownContent: ''\r\n        };\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <div class=\"sme-arrange-stack-h sme-focus-zone sme-form-field-editor\">\r\n    <sme-dropdown #dropDown [autoToggle]=\"false\" class=\"sme-combobox\" [disabled]=\"disabled\" [autoWidth]=\"true\"\r\n      (toggled)=\"onDropdownToggled($event)\">\r\n      <div #dropdownHeader class=\"sme-combobox-header sme-dropdown-toggle\" (keydown)=\"onToggleKeydown($event)\">\r\n        <input #textInput type=\"text\" role=\"combobox\" [(ngModel)]=\"displayValue\" (ngModelChange)=\"commitDisplayValue()\"\r\n          [attr.aria-controls]=\"idBag.dropDownContent\" [attr.aria-label]=\"label\"\r\n          [attr.disabled]=\"loadingOrDisabled ? true : null\"\r\n          [attr.aria-owns]=\"idBag.dropDownContent\" [attr.aria-expanded]=\"dropDown.isOpen\"\r\n          [attr.aria-autocomplete]=\"'none'\" [attr.aria-required]=\"required\" spellcheck=\"false\" autocapitalize=\"off\"\r\n          autocomplete=\"off\" [placeholder]=\"placeholder\" />\r\n        <button #dropDownButton type=\"button\" [attr.disabled]=\"loadingOrDisabled ? true : null\" tabindex=\"-1\"\r\n          role=\"presentation\" aria-hidden=\"true\" [attr.aria-pressed]=\"dropDown.isOpen\"\r\n          [class.sme-toggled]=\"dropDown.isOpen\" class=\"sme-button-trigger sme-button-auto-width\"\r\n          (click)=\"dropDown.onToggleClick($event, true)\">\r\n          <span class=\"sme-icon sme-icon-dateTime2\"></span>\r\n        </button>\r\n      </div>\r\n      <div class=\"sme-dropdown-content sme-dropdown-interaction-enabled sme-focus-trap\" [id]=\"idBag.dropDownContent\">\r\n        <div class=\"sme-datetime-dropdown\">\r\n          <div class=\"sme-datetime-main-content\">\r\n            <sme-form-field #calendar type=\"calendar\" [ngModel]=\"interMediateValue\" (ngModelChange)=\"onNgModelChange($event, true)\"\r\n              [required]=\"true\" [hideHeader]=\"true\" orientation=\"vertical\">\r\n            </sme-form-field>\r\n            <sme-form-field #clock type=\"clock\" [ngModel]=\"interMediateValue\" (ngModelChange)=\"onNgModelChange($event)\"\r\n              [required]=\"true\" [hideHeader]=\"true\" orientation=\"vertical\">\r\n            </sme-form-field>\r\n          </div>\r\n          <div class=\"sme-datetime-confirmation\">\r\n            <button type=\"button\" class=\"sme-focus-zone\" [attr.aria-label]=\"this.strings.MsftSmeShell.Angular.Common.apply\" tabindex=\"0\"\r\n              (click)=\"commitDropDownValue($event)\">\r\n              <span class=\"sme-icon sme-icon-size-xxs sme-icon-accept\"></span>\r\n            </button>\r\n            <button type=\"button\" class=\"sme-focus-zone\" [attr.aria-label]=\"this.strings.MsftSmeShell.Angular.Common.clear\" tabindex=\"0\"\r\n              (click)=\"dropDown.onToggleClick($event, true);\">\r\n              <span class=\"sme-icon sme-icon-size-xxs sme-icon-clear\"></span>\r\n            </button>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </sme-dropdown>\r\n  </div>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { DateLike } from '@microsoft/windows-admin-center-sdk/core/base/date/date-like';\r\nimport { DateRange } from '@microsoft/windows-admin-center-sdk/core/base/date/date-range';\r\n\r\n/**\r\n * Defines a generic option for date range control\r\n */\r\n@Component({\r\n    selector: 'sme-date-range-option',\r\n    template: ''\r\n})\r\nexport class DateTimeRangeOptionComponent implements OnChanges {\r\n\r\n    /**\r\n     * The value of this option.\r\n     */\r\n    @Input()\r\n    public value: DateRange;\r\n\r\n    /**\r\n     * The start date\r\n     */\r\n    @Input()\r\n    public start: DateLike;\r\n\r\n    /**\r\n     * The end date\r\n     */\r\n    @Input()\r\n    public end: DateLike;\r\n\r\n    /**\r\n     * The label of this option.\r\n     */\r\n    @Input()\r\n    public label: string;\r\n\r\n    /**\r\n     * The computed date range of this option\r\n     */\r\n    public get dateRange(): DateRange {\r\n        return this.internalDateRange;\r\n    }\r\n\r\n    private internalDateRange: DateRange;\r\n\r\n    /**\r\n     * The computed date range of this option\r\n     */\r\n    public ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes.value) {\r\n            this.internalDateRange = this.value;\r\n        }\r\n\r\n        if (changes.start || changes.end) {\r\n            const now = Date.now();\r\n            this.internalDateRange = new DateRange(this.start || now, this.end || now);\r\n        }\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <sme-dropdown #dropDown [autoToggle]=\"false\" class=\"sme-combobox sme-focus-zone\" [disabled]=\"loadingOrDisabled\"\r\n    [dropdownApplyFormFieldOffsetWidth]=\"dropdownApplyFormFieldOffsetWidth\">\r\n    <div #dropdownHeader class=\"sme-combobox-header sme-dropdown-toggle\" (keydown)=\"onToggleKeydown($event)\">\r\n      <input #textInput type=\"text\" role=\"combobox\" [value]=\"displayValue\" readonly\r\n        [attr.aria-controls]=\"idBag.dropDownContent\"\r\n        [attr.aria-label]=\"label\"\r\n        [attr.aria-required]='required'\r\n        [attr.disabled]=\"loadingOrDisabled ? true : null\" \r\n        [attr.aria-owns]=\"idBag.dropDownContent\" [attr.aria-expanded]=\"dropDown.isOpen\"\r\n        [attr.aria-autocomplete]=\"'none'\" (click)=\"dropDown.onToggleClick($event, true)\" spellcheck=\"false\"\r\n        autocapitalize=\"off\" autocomplete=\"off\" [placeholder]=\"placeholder\" />\r\n      <button type=\"button\" [attr.disabled]=\"loadingOrDisabled ? true : null\" tabindex=\"-1\" role=\"presentation\"\r\n        aria-hidden=\"true\" [attr.aria-pressed]=\"dropDown.isOpen\" [class.sme-toggled]=\"dropDown.isOpen\"\r\n        class=\"sme-button-trigger sme-button-auto-width\" (click)=\"dropDown.onToggleClick($event, true)\">\r\n        <span class=\"sme-icon sme-icon-chevronDown\"></span>\r\n      </button>\r\n    </div>\r\n    <!-- The minimum of width that a dropdown can be is set at 220px -->\r\n    <!-- Guarantee dropdown content width can not go below this value no matter how small the window is set at -->\r\n    <!-- Otherwise will display gray margin to the right of the dropdown content on small window -->\r\n    <div #listbox role=\"listbox\" class=\"sme-dropdown-content sme-dropdown-interaction-enabled sme-padding-squish-v-sm\"\r\n      [ngStyle]=\"dropdownApplyFormFieldOffsetWidth && { 'max-width.px': dropdownHeader.offsetWidth > 220 ? dropdownHeader.offsetWidth : 220} || !dropdownApplyFormFieldOffsetWidth && { 'max-width': 'initial' }\"\r\n      [id]=\"idBag.dropDownContent\">\r\n      <ng-container *ngIf=\"options && options.length\">\r\n        <ng-container *ngFor=\"let option of options; let optionIndex = index\">\r\n          <div class=\"sme-radio\">\r\n            <label>\r\n              <input type=\"radio\" [attr.aria-label]=\"option.label\" [attr.name]=\"idBag.groupName\"\r\n                [checked]=\"isSelected(option.dateRange)\" (click)=\"updateValue(option.dateRange)\"\r\n                [attr.aria-checked]=\"isSelected(option.dateRange)\" [name]=\"idBag.groupName\"\r\n                [attr.aria-required]=\"required\" [disabled]=\"loadingOrDisabled\"\r\n                (keydown)=\"onRadioGroupOptionKeydown($event)\">\r\n              <span aria-hidden=\"true\">{{option.label}}</span>\r\n            </label>\r\n          </div>\r\n        </ng-container>\r\n      </ng-container>\r\n\r\n      <div class=\"sme-radio sme-dropdown-interaction-enabled\" *ngIf=\"showCustomOption && options && options.length > 0\">\r\n        <label>\r\n          <input type=\"radio\" [attr.aria-label]=\"customText\" [attr.aria-checked]=\"isSelected(customDateRange)\"\r\n            [attr.name]=\"idBag.groupName\" [name]=\"idBag.groupName\" [checked]=\"isSelected(customDateRange)\"\r\n            (click)=\"updateValue(customDateRange)\" [attr.aria-required]=\"required\" [disabled]=\"loadingOrDisabled\"\r\n            (keydown)=\"onRadioGroupOptionKeydown($event)\">\r\n          <span aria-hidden=\"true\">{{this.customText}}</span>\r\n        </label>\r\n      </div>\r\n\r\n      <fieldset *ngIf=\"isSelected(customDateRange) || !options || options.length === 0\" class=\"sme-focus-trap\"\r\n        [class.sme-subform-indent-none]=\"!options || options.length === 0\" [disabled]=\"loadingOrDisabled\">\r\n        <sme-form-field #startFormField *ngIf=\"customDateRange && customDateRange.start\"\r\n          class=\"sme-dropdown-interaction-enabled\" type=\"datetime\" [label]=\"startTimeText\"\r\n          [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"customDateRangeStart\"\r\n          (ngModelChange)=\"onCustomDateRangeChanged('start', $event)\" [id]=\"idBag.startTimeInput\"\r\n          (customValidate)=\"onCustomValidate($event, 'start')\" (keydown)=\"onDatePickerKeydown($event, 'start')\">\r\n        </sme-form-field>\r\n        <sme-form-field #endFormField *ngIf=\"customDateRange && customDateRange.end\"\r\n          class=\"sme-dropdown-interaction-enabled\" type=\"datetime\" [label]=\"endTimeText\"\r\n          [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"customDateRangeEnd\"\r\n          (ngModelChange)=\"onCustomDateRangeChanged('end', $event)\" [id]=\"idBag.endTimeInput\"\r\n          (customValidate)=\"onCustomValidate($event, 'end')\" (keydown)=\"onDatePickerKeydown($event, 'end')\">\r\n        </sme-form-field>\r\n      </fieldset>\r\n    </div>\r\n  </sme-dropdown>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import {\r\n    AfterContentInit,\r\n    Component,\r\n    ContentChildren,\r\n    ElementRef,\r\n    EventEmitter,\r\n    Injector,\r\n    Input,\r\n    Output,\r\n    QueryList,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { DateLike } from '@microsoft/windows-admin-center-sdk/core/base/date/date-like';\r\nimport { DateRange } from '@microsoft/windows-admin-center-sdk/core/base/date/date-range';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { DropdownComponent } from '../../../dropdown/dropdown.component';\r\nimport { DropdownService } from '../../../dropdown/dropdown.service';\r\nimport { ValidationAlert, ValidationAlerts, ValidationAlertSeverity } from '../../validation-alert/validation-alert';\r\nimport { DateTimeFormFieldComponent } from '../datetime/datetime-form-field.component';\r\nimport { CheckValidationEventArgs } from '../form-field-validator.directive';\r\nimport { SmeInternalFormFieldComponent } from '../form-field.component';\r\nimport { DateTimeRangeOptionComponent } from './datetime-range-option.component';\r\n\r\nexport interface TimeISOHistoryData {\r\n    key: string;\r\n    value: string;\r\n}\r\n@Component({\r\n    selector: 'sme-form-field[type=\"datetimerange\"]',\r\n    templateUrl: './datetime-range-form-field.component.html'\r\n})\r\nexport class DateTimeRangeFormFieldComponent extends SmeInternalFormFieldComponent<DateRange> implements AfterContentInit {\r\n    public static timeISOPattern = `{0}-{1}-{2}T{3}:{4}:{5}`;\r\n    public static twoDigitPattern = `0{0}`;\r\n    public static timeISOHistoryLength = 100;\r\n    public static startProperty = 'start';\r\n    public static endProperty = 'end';\r\n\r\n    public customText = this.strings.MsftSmeShell.Angular.Form.DateTimeRange.Custom.label;\r\n    public startTimeText = this.strings.MsftSmeShell.Angular.Form.DateTimeRange.StartTime.label;\r\n    public endTimeText = this.strings.MsftSmeShell.Angular.Form.DateTimeRange.EndTime.label;\r\n    private invalidStartTimeText = this.strings.MsftSmeShell.Angular.Form.DateTimeRange.Invalid.StartTime;\r\n    private invalidEndTimeText = this.strings.MsftSmeShell.Angular.Form.DateTimeRange.Invalid.EndTime;\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'DateTimeRangeFormFieldComponent';\r\n    }\r\n\r\n    @ViewChild('listbox')\r\n    public listboxElement: ElementRef;\r\n\r\n    @ViewChild('dropDown')\r\n    public dropDown: DropdownComponent;\r\n\r\n    @ViewChild('startFormField')\r\n    public startFormField: DateTimeFormFieldComponent;\r\n\r\n    @ViewChild('endFormField')\r\n    public endFormField: DateTimeFormFieldComponent;\r\n\r\n    /**\r\n     * The options for this control.\r\n     */\r\n    @ContentChildren(DateTimeRangeOptionComponent)\r\n    public options: QueryList<DateTimeRangeOptionComponent>;\r\n\r\n    /**\r\n     * Determine if the dropdown will use the sme-form-field to limit its max-width\r\n     */\r\n    @Input()\r\n    public dropdownApplyFormFieldOffsetWidth: boolean;\r\n\r\n    @Input()\r\n    public showCustomOption: boolean;\r\n\r\n    @Input()\r\n    public customDateRange: DateRange;\r\n\r\n    @Input()\r\n    public showCustomDisplayText = true;\r\n\r\n    // TODO: need to update the date picker to deal with timezone\r\n    public get customDateRangeStart(): string {\r\n        return this.timeISOTranslator(this.customDateRange.start);\r\n    }\r\n\r\n    public get customDateRangeEnd(): string {\r\n        return this.timeISOTranslator(this.customDateRange.end);\r\n    }\r\n\r\n    @Output()\r\n    public customLabelEmitter = new EventEmitter();\r\n\r\n    private dropdownService: DropdownService;\r\n\r\n    // Deal with scalability\r\n    // Do not need to call duplicated function again and again\r\n    // Pool size for now set at 100\r\n    private timeISOHistory: Array<TimeISOHistoryData> = [];\r\n    private getTimeHistory(input: Date): string {\r\n        let res = '';\r\n        const history = this.timeISOHistory.filter((item) => {\r\n            if (item.key === input.getTime().toString()) {\r\n                return item;\r\n            }\r\n        })[0];\r\n\r\n        if (history) {\r\n            res = history.value;\r\n        }\r\n\r\n        return res;\r\n    }\r\n    private setTimeHistory(key: Date, value: string) {\r\n        const history = this.timeISOHistory.filter((item) => {\r\n            if (item.key === key.getTime().toString()) {\r\n                return item;\r\n            }\r\n        })[0];\r\n        if (!history) {\r\n            if (this.timeISOHistory\r\n                && this.timeISOHistory.length >= DateTimeRangeFormFieldComponent.timeISOHistoryLength) {\r\n                this.timeISOHistory.unshift();\r\n            }\r\n            this.timeISOHistory.push({\r\n                key: key.getTime().toString(),\r\n                value: value\r\n            });\r\n        }\r\n    }\r\n    // TODO: need support for 24 hours vs 12 hours with am/pm.\r\n    private timeISOTranslator(input: Date) {\r\n        let res = this.getTimeHistory(input);\r\n        if (res) {\r\n            return res;\r\n        }\r\n        const rawYear = input.getFullYear();\r\n        const rawMonth = input.getMonth() + 1;\r\n        const month = rawMonth < 10 ? DateTimeRangeFormFieldComponent.twoDigitPattern.format(rawMonth) : rawMonth;\r\n        const rawDay = input.getDate();\r\n        const day = rawDay < 10 ? DateTimeRangeFormFieldComponent.twoDigitPattern.format(rawDay) : rawDay;\r\n        const rawHour = input.getHours();\r\n        const hour = rawHour < 10 ? DateTimeRangeFormFieldComponent.twoDigitPattern.format(rawHour) : rawHour;\r\n        const rawMinute = input.getMinutes();\r\n        const minute = rawMinute < 10 ? DateTimeRangeFormFieldComponent.twoDigitPattern.format(rawMinute) : rawMinute;\r\n        const rawSecond = input.getSeconds();\r\n        const second = rawSecond < 10 ? DateTimeRangeFormFieldComponent.twoDigitPattern.format(rawSecond) : rawSecond;\r\n        res = DateTimeRangeFormFieldComponent.timeISOPattern.format(rawYear, month, day, hour, minute, second);\r\n        this.setTimeHistory(input, res);\r\n        return res;\r\n    }\r\n\r\n    public get displayValue(): string {\r\n        if (this.showCustomDisplayText && (this.isSelected(this.customDateRange) || !this.options.length)) {\r\n            return this.customText;\r\n        }\r\n        const selectedOption = this.options.find(option => this.isSelected(option.dateRange));\r\n        if (selectedOption) {\r\n            return selectedOption.label;\r\n        } else if (this.showCustomDisplayText) {\r\n            return this.customText;\r\n        }\r\n\r\n        return this.value ? this.value.toString() : '';\r\n    }\r\n\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n\r\n        this.dropdownService = injector.get(DropdownService);\r\n\r\n        this.dropdownApplyFormFieldOffsetWidth = true;\r\n        this.showCustomOption = true;\r\n        const now = Date.now();\r\n        this.customDateRange = new DateRange(now, now + (60 * 60 * 1000)); // now to now + 1 hour\r\n    }\r\n\r\n    public isSelected(dateRange: DateRange) {\r\n        if (!this.options || !this.options.length) {\r\n            return true;\r\n        }\r\n        if (dateRange && dateRange.start && dateRange.end) {\r\n            return dateRange.isEqualTo(this.value);\r\n        } else {\r\n            return false;\r\n        }\r\n\r\n    }\r\n\r\n    public updateValue(value: DateRange) {\r\n        this.value = value;\r\n        this.updateDropdownPosition();\r\n    }\r\n\r\n    public ngAfterContentInit() {\r\n        this.subscriptions.push(this.options.changes.subscribe(val => {\r\n            if (this.options.length === 0) {\r\n                this.value = this.customDateRange;\r\n            }\r\n        }));\r\n        if (this.options.length === 0) {\r\n            this.value = this.customDateRange;\r\n        }\r\n    }\r\n\r\n    public onCustomDateRangeChanged(fieldName: string, value: string) {\r\n        switch (fieldName) {\r\n            case DateTimeRangeFormFieldComponent.startProperty: {\r\n                this.customDateRange.start = new Date(value);\r\n                break;\r\n            }\r\n            case DateTimeRangeFormFieldComponent.endProperty: {\r\n                this.customDateRange.end = new Date(value);\r\n                break;\r\n            }\r\n        }\r\n        // Always notify the change to the parent\r\n        this.value = this.customDateRange;\r\n    }\r\n\r\n    @Yield()\r\n    private updateDropdownPosition() {\r\n        this.dropdownService.updatePosition(this.dropDown);\r\n    }\r\n\r\n    protected onValueChanged(value: DateRange) {\r\n        if (!this.options) {\r\n            return;\r\n        }\r\n        if (value && !this.options.some(option => option.dateRange.isEqualTo(value))) {\r\n            this.customDateRange.start = value.start;\r\n            this.customDateRange.end = value.end;\r\n        }\r\n        const selectedOption = this.options.find((item) => {\r\n            return item.dateRange.isEqualTo(value);\r\n        });\r\n        if (selectedOption) {\r\n            this.customLabelEmitter.emit(selectedOption.label);\r\n        } else {\r\n            this.customLabelEmitter.emit(this.customText);\r\n        }\r\n        super.onValueChanged(value);\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: '',\r\n            groupName: '',\r\n            dropDownContent: '',\r\n            startTimeInput: '',\r\n            endTimeInput: ''\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control\r\n     * @param c The form control attached to this instance\r\n     */\r\n    protected validate(c: FormControl): ValidationAlerts {\r\n        if (this.required) {\r\n            if (MsftSme.isNullOrUndefined(this.value)) {\r\n                return { required: true };\r\n            }\r\n        }\r\n\r\n        if (this.value && this.value.isValid()) {\r\n            let alert = this.validateStartDate();\r\n            if (alert) { return { invalidTimerange: alert }; }\r\n\r\n            alert = this.validateEndDate();\r\n            if (alert) { return { invalidTimerange: alert }; }\r\n        }\r\n\r\n        return super.validate(c);\r\n    }\r\n\r\n    public onCustomValidate(event: CheckValidationEventArgs, name: string, value?: DateLike): void {\r\n        const alerts: ValidationAlerts = {};\r\n        if (name === DateTimeRangeFormFieldComponent.startProperty) {\r\n            const alert = this.validateStartDate(new Date(event.formControl.value));\r\n            if (alert) {\r\n                alerts['invalidDateRange'] = alert;\r\n            } else {\r\n\r\n                if ((this.endFormField && !this.endFormField.ngModel.valid) &&\r\n                    (this.startFormField && this.startFormField.ngModel.control.errors)) {\r\n                    this.endFormField.ngModel.control.setErrors(null);\r\n                }\r\n            }\r\n        } else if (name === DateTimeRangeFormFieldComponent.endProperty) {\r\n            const alert = this.validateEndDate(new Date(event.formControl.value));\r\n            if (alert) {\r\n                alerts['invalidDateRange'] = alert;\r\n            } else {\r\n                if (this.startFormField && !this.startFormField.ngModel.valid && this.startFormField.ngModel.control.errors) {\r\n                    this.startFormField.ngModel.control.setErrors(null);\r\n                }\r\n            }\r\n        }\r\n\r\n        MsftSme.deepAssign(event.alerts, alerts);\r\n    }\r\n\r\n    private validateStartDate(startDate?: Date): ValidationAlert | null {\r\n        if (!this.value || MsftSme.isNullOrUndefined(this.value.start)) {\r\n            return null;\r\n        }\r\n        let startTime = this.value.start;\r\n        if (startDate) {\r\n            startTime = startDate;\r\n        }\r\n        if (startTime && this.value.end && startTime.valueOf() > this.value.end.valueOf()) {\r\n            return {\r\n                valid: false,\r\n                message: this.invalidStartTimeText,\r\n                severity: ValidationAlertSeverity.Error\r\n            };\r\n        }\r\n        return null;\r\n    }\r\n\r\n    private validateEndDate(endDate?: Date): ValidationAlert | null {\r\n        if (!this.value || MsftSme.isNullOrUndefined(this.value.end)) {\r\n            return null;\r\n        }\r\n        let endTime = this.value.end;\r\n        if (endDate) {\r\n            endTime = endDate;\r\n        }\r\n        if (this.value.start && endTime && this.value.start.valueOf() > endTime.valueOf()) {\r\n            return {\r\n                valid: false,\r\n                message: this.invalidEndTimeText,\r\n                severity: ValidationAlertSeverity.Error\r\n            };\r\n        }\r\n        return null;\r\n    }\r\n\r\n    // accessibility\r\n    public onToggleKeydown(event: KeyboardEvent) {\r\n        switch (event.keyCode) {\r\n            case KeyCode.Enter:\r\n            case KeyCode.Space: {\r\n                this.dropDown.onToggleClick(event, true);\r\n                break;\r\n            }\r\n            case KeyCode.DownArrow: {\r\n                if (event.altKey) {\r\n                    this.dropDown.onToggleClick(event, true);\r\n                }\r\n                return;\r\n            }\r\n            default: {\r\n                return;\r\n            }\r\n        }\r\n\r\n        // handle all keys\r\n        event.stopImmediatePropagation();\r\n        event.stopPropagation();\r\n        event.preventDefault();\r\n    }\r\n\r\n    public onRadioGroupOptionKeydown(event: KeyboardEvent) {\r\n        switch (event.keyCode) {\r\n            // overrides the tab function\r\n            case KeyCode.Tab: {\r\n                // prevent focus on the next element in the parent trap\r\n                if (!this.canFocusOnStartTimeRangePicker()) {\r\n                    event.preventDefault();\r\n                }\r\n                event.stopImmediatePropagation();\r\n                event.stopPropagation();\r\n                break;\r\n            }\r\n            default: {\r\n                return;\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n    public onDatePickerKeydown(event: KeyboardEvent, input: string) {\r\n        // allow escape and alt arrow up to retract the datetime range fields as well. Only remove if the datetime controls are not open.\r\n        if ((event.keyCode === KeyCode.Escape) || (event.keyCode === KeyCode.UpArrow && event.altKey)) {\r\n            if (!this.startFormField.dropDown.isOpen && !this.endFormField.dropDown.isOpen) {\r\n                if (this.dropDown && this.dropDown.contentElement) {\r\n                    const nextElement = Dom.getNextFocusableElement(this.dropDown.contentElement.nativeElement);\r\n                    if (nextElement) {\r\n                        nextElement.focus();\r\n                    }\r\n                }\r\n                this.dropDown.onToggleClick(event, true);\r\n            }\r\n        }\r\n        // allow shift+tab to take focus back to startFormField while at endFormField\r\n        if (event.shiftKey && event.keyCode === KeyCode.Tab || event.keyCode !== KeyCode.Tab) {\r\n            return;\r\n        } else {\r\n            // prevent focus on the next element in the parent trap\r\n            if (this.checkIsLastElementInDataRangePickerTrap()) {\r\n                event.preventDefault();\r\n            }\r\n            event.stopImmediatePropagation();\r\n        }\r\n    }\r\n\r\n    private checkIsLastElementInDataRangePickerTrap() {\r\n        const dom = Dom;\r\n        const currentFocus = <HTMLElement>document.activeElement;\r\n        const nextElement = dom.getNextFocusableElementInTrap(currentFocus);\r\n        // The last item inside of the dropdown, expected to stay at the last item\r\n        if (currentFocus === nextElement) {\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    private canFocusOnStartTimeRangePicker() {\r\n        if (this.startFormField && this.endFormField) {\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n}\r\n","import { from, Observable, of, zip } from 'rxjs';\r\nimport { mergeMap, map } from 'rxjs/operators';\r\n\r\n/**\r\n * Abstraction layer for handling the webkit file system.\r\n * This is not yet a standard spec, but is supported on both Edge and Chrome.\r\n */\r\nexport class WebkitFileSystem {\r\n\r\n    /**\r\n     * Temporary solution to indicating a file object is actually a directory without fully implementing folder upload support.\r\n     */\r\n    public static isDirectoryPropertyName = '__SME_isDirectory__';\r\n\r\n    constructor(private items: DataTransferItemList) { }\r\n\r\n    public getFileList(): Observable<File[]> {\r\n        const files: File[] = [];\r\n        for (let i = 0; i < this.items.length; i++) {\r\n            const item = this.items[i];\r\n            if (item.kind !== 'file') { continue; }\r\n            const entry = item.webkitGetAsEntry();\r\n            const file = item.getAsFile();\r\n            if (entry.isDirectory) {\r\n                file[WebkitFileSystem.isDirectoryPropertyName] = true;\r\n            }\r\n            files.push(file);\r\n        }\r\n        return of(files);\r\n\r\n        // TODO: The following code should work when we decide to support uploading directories on Edge and Chrome\r\n        // const entries: any[] = [];\r\n        // for (let i = 0; i < this.items.length; i++) {\r\n        //     const item = this.items[i];\r\n        //     if (item.kind !== 'file') { continue; }\r\n        //     // entries.push(item.webkitGetAsEntry());\r\n        // }\r\n        // return this.toFileList(entries);\r\n    }\r\n\r\n    private toFileList(entries: any[]): Observable<File[]> {\r\n        const files: Observable<File[]>[] = [];\r\n        for (let i = 0; i < entries.length; i++) {\r\n            files.push(this.getFilesFromEntry(entries[i]));\r\n        }\r\n        return zip(...files).pipe(map(result => {\r\n            return result.reduce((value, next) => {\r\n                value.push(...next);\r\n                return value;\r\n            }, []);\r\n        }));\r\n    }\r\n\r\n    private getFilesFromEntry(entry: any): Observable<File[]> {\r\n        if (entry.isFile) {\r\n            return this.getFile(entry).pipe(map(file => [file]));\r\n        } else if (entry.isDirectory) {\r\n            return this.getDirectory(entry);\r\n        }\r\n    }\r\n\r\n    private getFile(entry: any): Observable<File> {\r\n        return from(new Promise<File>((resolve, reject) => entry.file(resolve, reject)));\r\n    }\r\n\r\n    private getDirectory(entry: any): Observable<File[]> {\r\n        const reader = entry.createReader();\r\n        return this.readAllEntries(reader).pipe(mergeMap(entries => this.toFileList(entries)));\r\n    }\r\n\r\n    private readAllEntries(reader: any): Observable<any[]> {\r\n        return this.readEntries(reader).pipe(\r\n            mergeMap(entries => {\r\n                if (!entries || entries.length === 0) {\r\n                    return of([]);\r\n                }\r\n                return this.readAllEntries(reader).pipe(\r\n                    map(remainingEntries => entries.concat(remainingEntries))\r\n                );\r\n            })\r\n        );\r\n    }\r\n\r\n    private readEntries(reader: any): Observable<any[]> {\r\n        return from(new Promise<any[]>((resolve, reject) => reader.readEntries(resolve, reject)));\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <fieldset [attr.aria-label]=\"ariaLabel\"\r\n            class=\"sme-file-drop-zone sme-subform-indent-none sme-subform-no-bottom-margin\">\r\n    <sme-drop-zone class=\"sme-padding-inset-xs sme-margin-bottom-xs sme-arrange-stack-v\" (smeDrop)=\"onDrop($event)\">\r\n      <div class=\"sme-file-input sme-margin-bottom-xxs\">\r\n        <input #file type=\"file\" class=\"sme-layout-none\" [disabled]=\"loadingOrDisabled\" (change)=\"onFileChanged()\"\r\n               [attr.multiple]=\"multiple || undefined\" [attr.accept]=\"hasFileTypes ? acceptedFileTypes : undefined\">\r\n        <button type=\"button\" [smeDisabled]=\"loadingOrDisabled\"\r\n                class=\"sme-button-primary sme-button-auto-width sme-margin-right-xs\" (click)=\"file.click()\" [attr.aria-label]=\"ariaLabelText\">\r\n          {{ buttonLabel || ( multiple\r\n          ? strings.MsftSmeShell.Angular.Form.File.buttonText.plural\r\n          : strings.MsftSmeShell.Angular.Form.File.buttonText.singular )\r\n          }}\r\n        </button>\r\n        <b class=\"sme-position-flex-align-center\">\r\n          {{\r\n          multiple\r\n          ? strings.MsftSmeShell.Angular.Form.File.dragDropText.plural\r\n          : strings.MsftSmeShell.Angular.Form.File.dragDropText.singular\r\n          }}\r\n        </b>\r\n      </div>\r\n      <p>{{ hasFileTypes ? (strings.MsftSmeShell.Angular.Form.File.allowedFileTypesFormat | smeFormat:acceptedFileTypes)\r\n        : ( strings.MsftSmeShell.Angular.Form.File.allowedFileTypesFormat | smeFormat:strings.MsftSmeShell.Angular.Form.File.allFileTypes) }}</p>\r\n    </sme-drop-zone>\r\n    <p class=\"sme-margin-bottom-xs\">{{fileCountLabel}}</p>\r\n\r\n    <ng-container *ngIf=\"hasFiles\">\r\n      <div *ngFor=\"let file of files; let i = index\" class=\"sme-arrange-stack-h sme-margin-bottom-xs\">\r\n        <div class=\"sme-position-flex-none sme-icon sme-icon-size-lg\" [class.sme-icon-openFile]=\"!isDirectory(file)\"\r\n             [class.sme-icon-openFolderHorizontal]=\"isDirectory(file)\"></div>\r\n        <div class=\"sme-position-flex-auto sme-padding-left-sm sme-arrange-stack-v\">\r\n          <label class=\"sme-position-flex-auto sme-arrange-ellipsis sme-padding-inset-none\">{{ file.name }}</label>\r\n          <label class=\"sme-position-flex-auto sme-arrange-ellipsis sme-padding-inset-none\">\r\n            {{file.size | smeByteUnitConverter:1024}}\r\n          </label>\r\n        </div>\r\n        <button type=\"button\" class=\"sme-button-trigger sme-position-flex-none sme-button-auto-width sme-focus-zone\"\r\n                (click)=\"removeItemAt(i)\"\r\n                [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.File.removeButtonAriaLabelFormat | smeFormat:file.name\"\r\n                [title]=\"strings.MsftSmeShell.Angular.Form.File.removeButtonTooltip\" [smeDisabled]=\"loadingOrDisabled\">\r\n          <span class=\"sme-icon sme-icon-cancel sme-color-red\"></span>\r\n        </button>\r\n      </div>\r\n    </ng-container>\r\n  </fieldset>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import { Component, ElementRef, Injector, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { SmeSchemaProperty } from '../../../schema/schema-decorator';\r\nimport { SimplePropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';\r\nimport { SchemaPrimitiveType } from '../../../schema/schema-models';\r\nimport { ValidationAlerts, ValidationAlertSeverity } from '../../validation-alert/validation-alert';\r\nimport { SmeInternalFormFieldComponent } from '../form-field.component';\r\nimport { WebkitFileSystem } from './webkitFileSystem';\r\n\r\n/* eslint-disable max-len */\r\n@Component({\r\n    template: `\r\n    <sme-form-field #field type=\"file\" [(ngModel)]=\"data\" [name]=\"propertySchema.name\" [label]=\"localize(propertySchema.label)\"\r\n        [description]=\"localize(propertySchema.description)\" [required]=\"propertySchema.required\"\r\n        [readonly]=\"!!evalExpression(propertySchema.readonlyCondition)\"\r\n        [disabled]=\"!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))\"\r\n        [multiple]=\"propertySchema.options.multiple\" [fileTypes]=\"propertySchema.options.fileTypes\"\r\n        (customValidate)=\"resolveFunction(propertySchema.customValidation)($event)\"\r\n        (customAsyncValidate)=\"propertySchema.customAsyncValidation && resolveFunction(propertySchema.customAsyncValidation.handler)($event)\"\r\n        [pendingMessage]=\"propertySchema.customAsyncValidation && localize(propertySchema.customAsyncValidation.pendingMessage)\"\r\n        [customAsyncValidateDisabled]=\"shouldCustomAsyncValidationBeDisabled()\"\r\n        [customAsyncValidateDebounceTime]=\"propertySchema.customAsyncValidation && +propertySchema.customAsyncValidation.handler\"\r\n        ></sme-form-field>\r\n    `\r\n})\r\n/* eslint-enable max-len */\r\nexport class FileFormFieldLoaderComponent extends SimplePropertySchemaFieldLoaderComponent {\r\n}\r\n\r\n/**\r\n * Accessible file field implementation\r\n */\r\n@SmeSchemaProperty({\r\n    type: SchemaPrimitiveType.File,\r\n    format: 'default',\r\n    isDefaultFormat: true,\r\n    description: 'A file upload control binding to file data.',\r\n    loaderComponent: FileFormFieldLoaderComponent\r\n})\r\n@Component({\r\n    selector: 'sme-form-field[type=\"file\"]',\r\n    templateUrl: './file-form-field.component.html'\r\n})\r\nexport class FileFormFieldComponent extends SmeInternalFormFieldComponent<File | File[]> implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'FileFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * The file input part of this control\r\n     */\r\n    @ViewChild('file')\r\n    public fileInput: ElementRef;\r\n\r\n    /**\r\n     * Indicates that multiple files are allowed\r\n     */\r\n    @Input()\r\n    public multiple: boolean;\r\n\r\n    /**\r\n     * Indicates the type of files that are allowed\r\n     */\r\n    @Input()\r\n    public fileTypes: string[];\r\n\r\n    /**\r\n     * The label to use on the select button\r\n     */\r\n    @Input()\r\n    public buttonLabel: string;\r\n\r\n    private activeDroppedFileSystem: WebkitFileSystem;\r\n\r\n    /**\r\n     * The aria label for this instance\r\n     */\r\n    public get ariaLabel(): string {\r\n        return this.getMergedDescriptionLabel();\r\n    }\r\n\r\n    /**\r\n     * gets the file count label\r\n     */\r\n    public get fileCountLabel() {\r\n        return this.hasFiles\r\n            ? this.hasMultipleFiles\r\n                ? this.strings.MsftSmeShell.Angular.Form.File.selectedFilesFormat.plural.format(this.files.length)\r\n                : this.strings.MsftSmeShell.Angular.Form.File.selectedFilesFormat.singular\r\n            : this.multiple\r\n                ? this.strings.MsftSmeShell.Angular.Form.File.selectedFilesFormat.multipleEnabled.none\r\n                : this.strings.MsftSmeShell.Angular.Form.File.selectedFilesFormat.none;\r\n    }\r\n\r\n    /**\r\n     * gets aria-label text\r\n     */\r\n    public get ariaLabelText() {\r\n        let labelText = this.buttonLabel || (this.multiple\r\n            ? this.strings.MsftSmeShell.Angular.Form.File.buttonText.plural\r\n            : this.strings.MsftSmeShell.Angular.Form.File.buttonText.singular);\r\n\r\n        if (this.required) {\r\n            // Append the announced label with \"Required\" if the field is marked as required\r\n            const requiredLabel =  this.strings.MsftSmeShell.Angular.Common.Form.Validation.Required.label;\r\n            labelText = labelText.concat(requiredLabel);\r\n        }\r\n\r\n        return this.hasFiles\r\n            ? this.strings.MsftSmeShell.Angular.Form.File.selectedFilesFormat.plural.format(this.files.length).concat(labelText)\r\n            : labelText;\r\n    }\r\n\r\n    /**\r\n     * Indicates if there are any files selected\r\n     */\r\n    public get files(): File[] {\r\n        return Array.isArray(this.value) ? this.value : !!this.value ? [this.value] : [];\r\n    }\r\n\r\n    /**\r\n     * Indicates if there are any files selected\r\n     */\r\n    public get hasFiles(): boolean {\r\n        return this.multiple ? Array.isArray(this.value) && this.value.length > 0 : !!this.value;\r\n    }\r\n\r\n    /**\r\n     * Indicates if there are multiple files selected\r\n     */\r\n    private get hasMultipleFiles(): boolean {\r\n        return this.hasFiles && Array.isArray(this.value) && this.value.length > 1;\r\n    }\r\n\r\n    /**\r\n     * Indicates if there are any file type restrictions\r\n     */\r\n    public get hasFileTypes(): boolean {\r\n        return !!this.fileTypes && this.fileTypes.length > 0;\r\n    }\r\n\r\n    /**\r\n     * Returns a formatted accept property for our file input\r\n     */\r\n    public get acceptedFileTypes(): string {\r\n        return this.fileTypes ? this.fileTypes.join(', ') : '';\r\n    }\r\n\r\n    public get directoryUploadSupported() {\r\n        return !!DataTransferItem.prototype.webkitGetAsEntry;\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the FileFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n        this.placeholder = this.strings.MsftSmeShell.Angular.Form.File.placeholder;\r\n    }\r\n\r\n    public reset() {\r\n        this.fileInput.nativeElement.value = null;\r\n        super.reset();\r\n    }\r\n\r\n    /**\r\n     * Occurs when the file input has changed\r\n     */\r\n    public onFileChanged(): void {\r\n        this.updateValue(MsftSme.getValue(this.fileInput, 'nativeElement.files'));\r\n    }\r\n\r\n    /**\r\n     * Occurs when the there is a drop onto this control\r\n     */\r\n    public onDrop(data: DataTransfer) {\r\n        // if we dropped something other than a file, then just update value to an empty list\r\n        if (data.files.length === 0 || data.items.length === 0) {\r\n            this.updateValue([]);\r\n            return;\r\n        }\r\n\r\n        if (!this.directoryUploadSupported) {\r\n            // If webkit is not supported, there is no reliable way to detect folders being dropped without excluding some file types.\r\n            // both Edge and Chrome fully support this api. So we should be good as far a our supported browser matrix is concerned.\r\n            this.updateValue(data.files);\r\n        }\r\n\r\n        const fileSystem = new WebkitFileSystem(data.items);\r\n        this.activeDroppedFileSystem = fileSystem;\r\n        fileSystem.getFileList().subscribe({\r\n            next: files => {\r\n                if (this.activeDroppedFileSystem === fileSystem) {\r\n                    this.updateValue(files);\r\n                }\r\n            },\r\n            error: error => {\r\n                Logging.logError(this.logSourceName, 'An Error occurred resolving dropped files', { error: error });\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Updates the controls value to reflect dropped or browsed files\r\n     */\r\n    private updateValue(files: FileList | File[]) {\r\n        this.activeDroppedFileSystem = null;\r\n        if (MsftSme.isNullOrUndefined(files)) {\r\n            this.value = this.multiple ? [] : null;\r\n        } else if (this.multiple) {\r\n            const fileArray: File[] = [];\r\n            for (let i = 0; i < files.length; i++) {\r\n                fileArray.push(files[i]);\r\n            }\r\n            this.value = fileArray;\r\n        } else {\r\n            this.value = files[0];\r\n        }\r\n        this.ngModel.control.updateValueAndValidity();\r\n        this.fileInput.nativeElement.value = null;\r\n    }\r\n\r\n    /**\r\n     * Removes an item at the given index\r\n     */\r\n    public removeItemAt(index: number): void {\r\n        if (Array.isArray(this.value)) {\r\n            this.value.splice(index, 1);\r\n            this.value = [...this.value];\r\n        } else {\r\n            this.value = null;\r\n        }\r\n\r\n        const firstFocusable = Dom.getFirstFocusableDescendent(this.hostElement.nativeElement);\r\n        if (firstFocusable) {\r\n            firstFocusable.focus();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: ''\r\n        };\r\n    }\r\n\r\n    public isDirectory(file: File): boolean {\r\n        return !!file[WebkitFileSystem.isDirectoryPropertyName];\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control\r\n     * @param c The form control attached to this instance\r\n     */\r\n    protected validate(c: FormControl): ValidationAlerts {\r\n        // Stop if there are no files, fallback to super validation\r\n        if (!this.hasFiles) {\r\n            return super.validate(c);\r\n        }\r\n\r\n        // Check for invalid file entries\r\n        for (let i = 0; i < this.files.length; i++) {\r\n            const file = this.files[i];\r\n            // dont allow directories\r\n            if (this.isDirectory(file)) {\r\n                return {\r\n                    noDirectories: {\r\n                        message: this.strings.MsftSmeShell.Angular.Form.File.directoriesNotAllowed,\r\n                        valid: false,\r\n                        severity: ValidationAlertSeverity.Error\r\n                    }\r\n                };\r\n            }\r\n\r\n            // Do not allow invalid file types\r\n            if (this.hasFileTypes) {\r\n                const segments = file.name.split('.');\r\n                let extension = segments.length > 1 ? MsftSme.last(segments) : null;\r\n                if (extension) {\r\n                    extension = `.${extension}`;\r\n                }\r\n                if (!this.fileTypes.some(type => type === file.type || (extension !== null && type === extension))) {\r\n                    let message: string;\r\n                    if (extension || file.type) {\r\n                        message = this.strings.MsftSmeShell.Angular.Form.File.invalidFileTypeFormat.format(extension || file.type);\r\n                    } else {\r\n                        message = this.strings.MsftSmeShell.Angular.Form.File.invalidFileUnknownTypeFormat.format(file.name);\r\n                    }\r\n                    return {\r\n                        invalidFileType: {\r\n                            message: message,\r\n                            valid: false,\r\n                            severity: ValidationAlertSeverity.Error\r\n                        }\r\n                    };\r\n                }\r\n            }\r\n        }\r\n\r\n        return super.validate(c);\r\n    }\r\n}\r\n","import { Component, Injector, OnInit } from '@angular/core';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { SmeSchemaProperty } from '../../../schema/schema-decorator';\r\nimport { SimplePropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';\r\nimport { SchemaPrimitiveType } from '../../../schema/schema-models';\r\nimport { SmeInternalFormFieldComponent } from '../form-field.component';\r\n\r\n/* eslint-disable max-len */\r\n@Component({\r\n    template: `\r\n    <sme-form-field #field type=\"json\" [(ngModel)]=\"data\" [name]=\"propertySchema.name\" [label]=\"localize(propertySchema.label)\"\r\n        [required]=\"propertySchema.required\" [description]=\"localize(propertySchema.description)\"\r\n        [readonly]=\"!!evalExpression(propertySchema.readonlyCondition)\"\r\n        [disabled]=\"!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))\"\r\n        (customValidate)=\"resolveFunction(propertySchema.customValidation)($event)\"\r\n        (customAsyncValidate)=\"propertySchema.customAsyncValidation && resolveFunction(propertySchema.customAsyncValidation.handler)($event)\"\r\n        [pendingMessage]=\"propertySchema.customAsyncValidation && localize(propertySchema.customAsyncValidation.pendingMessage)\"\r\n        [customAsyncValidateDisabled]=\"shouldCustomAsyncValidationBeDisabled()\"\r\n        [customAsyncValidateDebounceTime]=\"propertySchema.customAsyncValidation && +propertySchema.customAsyncValidation.handler\"\r\n        ></sme-form-field>\r\n    `\r\n})\r\n/* eslint-enable max-len */\r\nexport class JsonFormFieldLoaderComponent extends SimplePropertySchemaFieldLoaderComponent {\r\n}\r\n\r\n/**\r\n * Accessible json field implementation\r\n */\r\n@SmeSchemaProperty({\r\n    type: SchemaPrimitiveType.Object,\r\n    format: 'json-text-editor',\r\n    description: 'A multiple line text box binding to json data.',\r\n    loaderComponent: JsonFormFieldLoaderComponent\r\n})\r\n@Component({\r\n    selector: 'sme-form-field[type=\"json\"]',\r\n    templateUrl: './json-form-field.component.html'\r\n})\r\nexport class JsonFormFieldComponent extends SmeInternalFormFieldComponent<any> implements OnInit {\r\n    private internalJsonText: string;\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'JsonFormFieldComponent';\r\n    }\r\n\r\n    public get jsonText(): string {\r\n        return this.internalJsonText;\r\n    }\r\n    public set jsonText(value: string) {\r\n        this.internalJsonText = value;\r\n        try {\r\n            this.value = JSON.parse(value);\r\n        } catch (e) {\r\n            // eslint-disable-next-line no-console\r\n            console.warn('JSON parse error.');\r\n            Logging.log({\r\n                level: LogLevel.Debug,\r\n                message: 'JSON parse error.',\r\n                source: 'JsonFormFieldComponent.jsonText.set'\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the JsonFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n    }\r\n\r\n    protected onValueChanged(value: any) {\r\n        let formattedJsonText = '';\r\n\r\n        if (this.internalJsonText) {\r\n            try {\r\n                formattedJsonText = JSON.stringify(JSON.parse(this.internalJsonText), null, 4);\r\n            } catch (e) {\r\n                Logging.log({\r\n                    level: LogLevel.Debug,\r\n                    message: 'JSON parse error.',\r\n                    source: 'JsonFormFieldComponent.jsonText.set'\r\n                });\r\n            }\r\n        }\r\n\r\n        const newJsonText = JSON.stringify(value, null, 4);\r\n\r\n        if (value) {\r\n            if (formattedJsonText !== newJsonText) {\r\n                this.internalJsonText = JSON.stringify(value, null, 4);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: ''\r\n        };\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <div class=\"sme-json sme-form-field-editor\">\r\n    <textarea [(ngModel)]=\"jsonText\" rows=\"10\">\r\n    </textarea>\r\n  </div>\r\n  <span class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan\">{{details}}</span>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import { ElementRef, Injectable } from '@angular/core';\r\nimport { FormFieldAccessibilityManagerBaseService } from '../form-field-accessibility-manager-base.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ListFormFieldAccessibilityManagerService {\r\n\r\n    constructor(protected formFieldAccessibilityManagerBaseService: FormFieldAccessibilityManagerBaseService) {}\r\n    /**\r\n     * It handles the focus when deleting an item from the list.\r\n     * @param value the value for the list.\r\n     * @param addButton the element reference for the add button.\r\n     * @param hostElement the element reference for the host element.\r\n     * @returns void\r\n     */\r\n    public delete(value: string[] | any[], addButton: ElementRef | undefined, hostElement: ElementRef): void {\r\n        this.formFieldAccessibilityManagerBaseService.listFormFieldFocusHandlerOnKeyboardAction(value, addButton, hostElement);\r\n    }\r\n\r\n    /**\r\n     * It handles the focus when adding an item to the list.\r\n     * @param value the value for the list.\r\n     * @param addButton the element reference for the add button.\r\n     * @param hostElement the element reference for the host element.\r\n     * @returns void\r\n     */\r\n    public add(value: string[] | any[], addButton: ElementRef | undefined, hostElement: ElementRef): void {\r\n        this.formFieldAccessibilityManagerBaseService.listFormFieldFocusHandlerOnKeyboardAction(value, addButton, hostElement, false);\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <div *ngIf=\"value\" class=\"sme-margin-bottom-xs sme-form-field-editor\">\r\n    <div *ngFor=\"let item of value;trackBy: trackByIndex; let i = index\"\r\n      class=\"sme-arrange-stack-h sme-margin-bottom-xs sme-form-field-width\">\r\n      <input class=\"sme-position-flex-auto sme-margin-right-xs\" type=\"text\" [(ngModel)]=\"value[i]\"\r\n        (input)=\"triggerValueChange()\"\r\n        [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.List.itemAriaLabel.format(label, i + 1, value.length)\" />\r\n      <button type=\"button\" class=\"sme-button-trigger sme-position-flex-none sme-button-auto-width\"\r\n        [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.List.removeButtonAriaLabel\"\r\n        [title]=\"strings.MsftSmeShell.Angular.Form.List.removeButtonTooltip\" (click)=\"removeItemAt(i)\">\r\n        <span class=\"sme-icon sme-icon-cancel sme-color-red\"></span>\r\n      </button>\r\n    </div>\r\n    <button #addButton type=\"button\" class=\"sme-button-trigger sme-button-auto-width sme-margin-bottom-xs\"\r\n      [attr.aria-label]=\"addButtonAriaLabel\"\r\n      [title]=\"strings.MsftSmeShell.Angular.Form.List.addButtonTooltip\" (click)=\"addListItem()\">\r\n      <span class=\"sme-icon sme-icon-add\"></span>\r\n      <span>{{ strings.MsftSmeShell.Angular.Form.List.addButtonAriaLabel }}</span>\r\n    </button>\r\n  </div>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>","import { Component, ElementRef, HostBinding, Injector, OnInit, ViewChild } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ValidationAlerts } from '../../validation-alert/validation-alert';\r\nimport { SmeInternalFormFieldComponent } from '../form-field.component';\r\nimport { ListFormFieldAccessibilityManagerService } from './list-form-field-accessibility-manager.service';\r\n\r\n/**\r\n * Accessible Implementation of a form field for a string array\r\n */\r\n@Component({\r\n    selector: 'sme-form-field[type=\"list\"]',\r\n    templateUrl: './list-form-field.component.html'\r\n})\r\nexport class ListFormFieldComponent extends SmeInternalFormFieldComponent<string[]> implements OnInit {\r\n\r\n    /**\r\n     * The view child component for the add button\r\n     */\r\n    @ViewChild('addButton')\r\n    public addButton: ElementRef;\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'ListFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * The aria label for this instance.\r\n     */\r\n    @HostBinding('attr.aria-label')\r\n    public get ariaLabel(): string {\r\n        return this.getMergedDescriptionLabel();\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the ListFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector,\r\n        protected listFormFieldAccessibilityManagerService: ListFormFieldAccessibilityManagerService\r\n    ) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * It gets the aria label for the add button that can respect when the field is required.\r\n     */\r\n    public get addButtonAriaLabel(): string {\r\n        if (this.required) {\r\n            return this.strings.MsftSmeShell.Angular.Calendar.AriaLabel.Required.format(\r\n                this.strings.MsftSmeShell.Angular.Form.List.addButtonAriaLabel);\r\n        }\r\n        return this.strings.MsftSmeShell.Angular.Form.List.addButtonAriaLabel;\r\n    }\r\n\r\n    /**\r\n     * The method called after the component is initialized.\r\n     */\r\n    public ngOnInit(): void {\r\n        super.ngOnInit();\r\n        this.setAttribute('role', 'group');\r\n    }\r\n\r\n    /**\r\n     * Adds an item to the list\r\n     */\r\n    public addListItem(value: string = ''): void {\r\n        this.value = [...this.value, value];\r\n\r\n        this.listFormFieldAccessibilityManagerService.add(this.value, this.addButton, this.hostElement);\r\n    }\r\n\r\n    /**\r\n     * Removes an item at the given index\r\n     */\r\n    public removeItemAt(index: number): void {\r\n        const value = [...this.value];\r\n        value.splice(index, 1);\r\n        this.value = value;\r\n\r\n        this.listFormFieldAccessibilityManagerService.delete(this.value, this.addButton, this.hostElement);\r\n    }\r\n\r\n    /**\r\n     * The method called when a <select> element's value changes.\r\n     */\r\n    public triggerValueChange(): void {\r\n        this.value = [...this.value];\r\n    }\r\n\r\n    /**\r\n     * Returns the index to track items in the array by\r\n     */\r\n    public trackByIndex(index, item) { return index; }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: ''\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control.\r\n     *\r\n     * @param c The form control attached to this instance.\r\n     * @returns Any validation alerts for this control.\r\n     */\r\n    protected validate(c: FormControl): ValidationAlerts {\r\n        if (this.required && (MsftSme.isNullOrUndefined(this.value) || this.value.length === 0)) {\r\n            return { required: true };\r\n        }\r\n\r\n        if (!MsftSme.isNullOrUndefined(this.value) && this.value.some((x) => MsftSme.isNullOrWhiteSpace(x))) {\r\n            return {\r\n                nullValue: {\r\n                    message: this.strings.MsftSmeShell.Angular.Form.List.emptyValues\r\n                }\r\n            };\r\n        }\r\n\r\n        return super.validate(c);\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <div class=\"sme-form-field-editor\">\r\n    <span *ngIf=\"readonly\">{{ value }}</span>\r\n    <div #container *ngIf=\"!readonly\" class=\"sme-number-form-field-container\">\r\n      <input #input type=\"number\" autocomplete=\"off\" [(ngModel)]=\"value\" class=\"sme-hidden-focus\" [attr.role]=\"showSpinButton ? 'spinbutton': null\"\r\n        [required]=\"required\" [disabled]=\"loadingOrDisabled\" [max]=\"max\" [min]=\"min\" [step]=\"step\" [placeholder]=\"placeholder\"\r\n        [attr.aria-valuemax]=\"max\"  [attr.aria-valuemin]=\"min\" [attr.aria-label]=\"label\" [attr.aria-required]=\"required\"\r\n        (focus)=\"onInputFocus($event)\" (focusout)=\"onInputFocusOut($event)\" (keydown)=\"onInputKeydown($event)\">\r\n      <span *ngIf=\"showSpinButton\" class=\"sme-arrange-stack-v sme-form-field-number-button-group\">\r\n        <button #incrementButton type=\"button\" class=\"sme-button-auto-width\" tabindex=\"-1\" (click)=\"increment()\" [attr.aria-label]=\"ariaLabelIncrease\">\r\n          <span class=\"sme-icon sme-icon-chevronUpSmall\"></span>\r\n        </button>\r\n        <button #decrementButton type=\"button\" class=\"sme-button-auto-width\" tabindex=\"-1\" (click)=\"decrement()\" [attr.aria-label]=\"ariaLabelDecrease\">\r\n          <span class=\"sme-icon sme-icon-chevronDownSmall\"></span>\r\n        </button>\r\n      </span>\r\n    </div>\r\n  </div>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import { Component, ElementRef, Injector, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { FormControl, ValidationErrors, Validators } from '@angular/forms';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { SmeSchemaProperty } from '../../../schema/schema-decorator';\r\nimport { SimplePropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';\r\nimport { SchemaPrimitiveType } from '../../../schema/schema-models';\r\nimport { ValidationAlertSeverity } from '../../validation-alert/validation-alert';\r\nimport { SmeInternalFormFieldComponent } from '../form-field.component';\r\n\r\n/* eslint-disable max-len */\r\n@Component({\r\n    templateUrl: './number-schema-driven-form-template.html'\r\n})\r\n/* eslint-enable max-len */\r\nexport class NumberFormFieldLoaderComponent extends SimplePropertySchemaFieldLoaderComponent {\r\n}\r\n\r\n/**\r\n * Accessible number field implementation\r\n */\r\n@SmeSchemaProperty({\r\n    type: SchemaPrimitiveType.Number,\r\n    format: 'textbox',\r\n    isDefaultFormat: true,\r\n    description: 'A single line textbox binding to number data.',\r\n    loaderComponent: NumberFormFieldLoaderComponent,\r\n    optionProperties: [\r\n        {\r\n            type: SchemaPrimitiveType.Number,\r\n            format: 'textbox',\r\n            name: 'min',\r\n            label: 'actual_string:Min',\r\n            defaultValue: 0,\r\n            required: false,\r\n            options: {\r\n                multipleline: false\r\n            }\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.Number,\r\n            format: 'textbox',\r\n            name: 'max',\r\n            label: 'actual_string:Max',\r\n            defaultValue: 100,\r\n            required: false,\r\n            options: {\r\n                multipleline: false\r\n            }\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.Number,\r\n            format: 'textbox',\r\n            name: 'step',\r\n            label: 'actual_string:Step',\r\n            defaultValue: 1,\r\n            required: false,\r\n            options: {\r\n                multipleline: false\r\n            }\r\n        }\r\n    ]\r\n})\r\n@Component({\r\n    selector: 'sme-form-field[type=\"number\"]',\r\n    templateUrl: './number-form-field.component.html'\r\n})\r\nexport class NumberFormFieldComponent extends SmeInternalFormFieldComponent<number> implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'NumberFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * The input from number form field\r\n     */\r\n    @ViewChild('input')\r\n    public input: ElementRef;\r\n\r\n    /**\r\n     * The container for the input box and spin buttons\r\n     */\r\n    @ViewChild('container')\r\n    public container: ElementRef;\r\n\r\n    /**\r\n     * The increment button UI element\r\n     */\r\n    @ViewChild('incrementButton')\r\n    public incrementButton: ElementRef;\r\n\r\n    /**\r\n     * The decrement button UI element\r\n     */\r\n    @ViewChild('decrementButton')\r\n    public decrementButton: ElementRef;\r\n\r\n    /**\r\n     * It determine whether to show the spin button.\r\n     */\r\n    @Input()\r\n    public showSpinButton = false;\r\n\r\n    /**\r\n     * The size of each movement of the slider.\r\n     */\r\n    @Input()\r\n    public step: number;\r\n\r\n    /**\r\n     * The size of each increment/decrement value of the slider.\r\n     */\r\n    @Input()\r\n    public incrementBy: number;\r\n\r\n    /**\r\n     * The minimum value of the slider\r\n     */\r\n    @Input()\r\n    public min: number;\r\n\r\n    /**\r\n     * The maximum value of the slider\r\n     */\r\n    @Input()\r\n    public max: number;\r\n\r\n    /**\r\n     * Initializes a new instance of the SliderFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n        this.min = 0;\r\n        // No default maximum/step\r\n    }\r\n\r\n    public ngOnInit() {\r\n        super.ngOnInit();\r\n\r\n        // If incrementBy is not set, use step. If step is not set default to 1 (one)\r\n        this.incrementBy = MsftSme.isNullOrUndefined(this.incrementBy)\r\n            ? MsftSme.isNullOrUndefined(this.step) ? 1 : this.step\r\n            : this.incrementBy;\r\n    }\r\n\r\n    /**\r\n     * Getter aria label increase for spin button increase.\r\n     */\r\n    public get ariaLabelIncrease(): string {\r\n        return this.strings.MsftSmeShell.Angular.Form.SpinButton.increase.format(this.incrementBy);\r\n    }\r\n\r\n    /**\r\n     * Getter aria label increase for spin button decrease.\r\n     */\r\n    public get ariaLabelDecrease(): string {\r\n        return this.strings.MsftSmeShell.Angular.Form.SpinButton.decrease.format(this.incrementBy);\r\n    }\r\n\r\n    /**\r\n     * Handle keydown events on the number input\r\n     */\r\n    public onInputKeydown($event: KeyboardEvent) {\r\n        // In Microsoft Edge and IE, numeric inputs will scroll the page while incrementing/decrementing the number.\r\n        switch ($event.keyCode) {\r\n            case KeyCode.UpArrow: {\r\n                $event.preventDefault();\r\n                // firing the click event to trigger the click style to render\r\n                this.increment();\r\n                this.toggleFocusEvent(this.incrementButton, true);\r\n                setTimeout(() => {\r\n                    this.toggleFocusEvent(this.incrementButton, false);\r\n                });\r\n                break;\r\n            }\r\n            case KeyCode.DownArrow: {\r\n                $event.preventDefault();\r\n                // firing the click event to trigger the click style to render\r\n                this.decrement();\r\n                this.toggleFocusEvent(this.decrementButton, true);\r\n                setTimeout(() => {\r\n                    this.toggleFocusEvent(this.decrementButton, false);\r\n                });\r\n                break;\r\n            }\r\n            default: { return; }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Increments the controls value by 1 \"step\"\r\n     */\r\n    public increment() {\r\n        let value = MsftSme.isNumber(this.value) ? this.value : this.min - 1;\r\n        value += this.incrementBy;\r\n        if (value > this.max) {\r\n            value = this.max;\r\n        }\r\n        this.value = value;\r\n    }\r\n\r\n    /**\r\n     * Decrements the controls value by 1 \"step\"\r\n     */\r\n    public decrement() {\r\n        let value = MsftSme.isNumber(this.value) ? this.value : this.min + 1;\r\n        value -= this.incrementBy;\r\n        if (value < this.min) {\r\n            value = this.min;\r\n        }\r\n        this.value = value;\r\n    }\r\n\r\n    /**\r\n     * The functionality to focus on the input field\r\n     */\r\n    public onInputFocus($event) {\r\n        if ($event) {\r\n            $event.preventDefault();\r\n        }\r\n\r\n        this.toggleFocusEvent(this.container, true);\r\n    }\r\n\r\n    /**\r\n     * The functionality to focus out on the input field\r\n     *\r\n     * @param $event the focus event object\r\n     */\r\n    public onInputFocusOut($event) {\r\n        if ($event) {\r\n            $event.preventDefault();\r\n        }\r\n\r\n        this.toggleFocusEvent(this.container, false);\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: ''\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Determines the value to use when clearing the field based on the initial value type\r\n     */\r\n    protected getClearValue(): number {\r\n        return MsftSme.isNullOrUndefined(this.min) ? 0 : this.min;\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control\r\n     * @param c The form control attached to this instance\r\n     */\r\n    protected validate(c: FormControl): ValidationErrors {\r\n        // if not required, don't process null or empty values for further validation\r\n        if (!this.required && (MsftSme.isNullOrWhiteSpace(c.value))) {\r\n            return super.validate(c);\r\n        }\r\n\r\n        if (!MsftSme.isNumber(this.value)) {\r\n            return {\r\n                notANumber: {\r\n                    valid: false,\r\n                    message: this.strings.MsftSmeShell.Angular.Common.Form.Validation.isNumber.format.format(this.fieldName),\r\n                    severity: ValidationAlertSeverity.Error\r\n                }\r\n            };\r\n        }\r\n        // angular's min and max validator only work via code. So we implement them here.\r\n        if (!MsftSme.isNullOrUndefined(this.min) && this.value < this.min) {\r\n            const errors = Validators.min(this.min)(c);\r\n            if (errors) { return errors; }\r\n        }\r\n\r\n        if (!MsftSme.isNullOrUndefined(this.max) && this.value > this.max) {\r\n            const errors = Validators.max(this.max)(c);\r\n            if (errors) { return errors; }\r\n        }\r\n\r\n        if (!MsftSme.isNullOrUndefined(this.step)) {\r\n            // If step is used check if the current value falls within the range of the legal values\r\n            const safeRem = this.getSafeRemainder((this.value - this.min), this.step);\r\n            // Round off to the nearest integer, handle any floating precision errors that may occur\r\n            const rem = Math.round((safeRem + Number.EPSILON) * 100) / 100;\r\n\r\n            if (rem !== 0) {\r\n                return {\r\n                    notAMultipleOfStep: {\r\n                        valid: false,\r\n                        message: this.strings.MsftSmeShell.Angular.Common.Form.Validation.IllegalNumber\r\n                            .format(this.fieldName, this.step, this.min),\r\n                        severity: ValidationAlertSeverity.Error\r\n                    }\r\n                };\r\n            }\r\n        }\r\n\r\n        return super.validate(c);\r\n    }\r\n\r\n    /**\r\n     * Gets the remainder of a division operation by converting any decimals to integers first\r\n     * @param value The number to be divided\r\n     * @param divisor The dividing number\r\n     */\r\n    protected getSafeRemainder(value: number, divisor: number): number {\r\n        const valueDecimals = (value.toString().split('.')[1] || '').length;\r\n        const divisorDecimals = (divisor.toString().split('.')[1] || '').length;\r\n        const maxDecimals = Math.max(valueDecimals, divisorDecimals);\r\n        const valueInt = parseInt(value.toFixed(maxDecimals).replace('.', ''), 10);\r\n        const divisorInt = parseInt(divisor.toFixed(maxDecimals).replace('.', ''), 10);\r\n        return (valueInt % divisorInt) / Math.pow(10, maxDecimals);\r\n    }\r\n\r\n    /**\r\n     * It toggles the focus state for passed in UI element\r\n     *\r\n     * @param element the element for focusing\r\n     * @param addClass it determines whether to add or remove class state\r\n     * @returns void\r\n     */\r\n    protected toggleFocusEvent(element: ElementRef, addClass = true): void {\r\n        if (!element?.nativeElement) {\r\n            return;\r\n        }\r\n\r\n        if (addClass && !element.nativeElement.className.includes('sme-focused')) {\r\n            element.nativeElement.classList.add('sme-focused');\r\n        }\r\n\r\n        if (!addClass && element.nativeElement.className.includes('sme-focused')) {\r\n            element.nativeElement.classList.remove('sme-focused');\r\n        }\r\n    }\r\n}\r\n","<sme-form-field #field type=\"number\" [(ngModel)]=\"data\"\r\n  [name]=\"propertySchema.name\"\r\n  [label]=\"localize(propertySchema.label)\"\r\n  [required]=\"propertySchema.required\"\r\n  [description]=\"localize(propertySchema.description)\"\r\n  [readonly]=\"!!evalExpression(propertySchema.readonlyCondition)\"\r\n  [disabled]=\"!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))\"\r\n  [min]=\"propertySchema.options && propertySchema.options.min\"\r\n  [max]=\"propertySchema.options && propertySchema.options.max\"\r\n  [step]=\"propertySchema.options && propertySchema.options.step\"\r\n  [showSpinButton]=\"propertySchema.options && propertySchema.options.showSpinButton\"\r\n  [pendingMessage]=\"propertySchema.customAsyncValidation && localize(propertySchema.customAsyncValidation.pendingMessage)\"\r\n  [customAsyncValidateDisabled]=\"shouldCustomAsyncValidationBeDisabled()\"\r\n  [customAsyncValidateDebounceTime]=\"propertySchema.customAsyncValidation && +propertySchema.customAsyncValidation.handler\"\r\n  (customValidate)=\"resolveFunction(propertySchema.customValidation)($event)\"\r\n  (customAsyncValidate)=\"propertySchema.customAsyncValidation && resolveFunction(propertySchema.customAsyncValidation.handler)($event)\">\r\n</sme-form-field>\r\n","import { ElementRef, Injectable } from '@angular/core';\r\nimport { FormFieldAccessibilityManagerBaseService } from '../form-field-accessibility-manager-base.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class OrderedListFormFieldAccessibilityManagerService {\r\n    constructor(protected formFieldAccessibilityManagerBaseService: FormFieldAccessibilityManagerBaseService) {}\r\n    /**\r\n     * It handles the focus when deleting an item from the list.\r\n     * @param value the value for the list.\r\n     * @param addButton the element reference for the add button.\r\n     * @param hostElement the element reference for the host element.\r\n     * @returns void\r\n     */\r\n    public delete(value: any[], addButton: ElementRef, hostElement: ElementRef): void {\r\n        this.formFieldAccessibilityManagerBaseService.listFormFieldFocusHandlerOnKeyboardAction(value, addButton, hostElement);\r\n    }\r\n\r\n    /**\r\n     * It handles the focus when adding an item to the list.\r\n     * @param value the value for the list.\r\n     * @param addButton the element reference for the add button.\r\n     * @param hostElement the element reference for the host element.\r\n     * @returns void\r\n     */\r\n    public add(value: any[], addButton: ElementRef, hostElement: ElementRef): void {\r\n        this.formFieldAccessibilityManagerBaseService.listFormFieldFocusHandlerOnKeyboardAction(value, addButton, hostElement, false);\r\n    }\r\n\r\n    /**\r\n     * It handles the focus when promoting an item in the list.\r\n     * @param hostElement The element reference for the host element.\r\n     * @param index the current index.\r\n     */\r\n    public promote(value: any[], hostElement: ElementRef, buttonId: string): void {\r\n        this.formFieldAccessibilityManagerBaseService.deferredFocusOnTargetBySelector(value, hostElement, buttonId);\r\n    }\r\n\r\n    /**\r\n     * It handles the focus when demoting an item in the list.\r\n     * @param hostElement The element reference for the host element.\r\n     * @param index the current index.\r\n     */\r\n    public demote(value: any[], hostElement: ElementRef, buttonId: string): void {\r\n        this.formFieldAccessibilityManagerBaseService.deferredFocusOnTargetBySelector(value, hostElement, buttonId);\r\n    }\r\n\r\n}\r\n","import { Component, ElementRef, HostBinding, Injector, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { SmeSchemaProperty } from '../../../schema/schema-decorator';\r\nimport { SimplePropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';\r\nimport { SchemaArrayProperty, SchemaObjectProperty, SchemaPrimitiveType } from '../../../schema/schema-models';\r\nimport { ValidationAlerts } from '../../validation-alert/validation-alert';\r\nimport { SmeInternalOptionsFormFieldComponent } from '../options-form-field/options-form-field.component';\r\nimport { OrderedListFormFieldAccessibilityManagerService } from './ordered-list-form-field-accessibility-manager.service';\r\n\r\n/* eslint-disable max-len */\r\n@Component({\r\n    template: `\r\n    <sme-form-field #field type=\"orderedlist\" [(ngModel)]=\"data\" [name]=\"propertySchema.name\" [valueComparator]=\"valueComparator\"\r\n        [label]=\"localize(propertySchema.label)\"\r\n        [required]=\"propertySchema.required\" [description]=\"localize(propertySchema.description)\"\r\n        [readonly]=\"!!evalExpression(propertySchema.readonlyCondition)\"\r\n        [disabled]=\"!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))\"\r\n        (customValidate)=\"resolveFunction(propertySchema.customValidation)($event)\"\r\n        (customAsyncValidate)=\"propertySchema.customAsyncValidation && resolveFunction(propertySchema.customAsyncValidation.handler)($event)\"\r\n        [pendingMessage]=\"propertySchema.customAsyncValidation && localize(propertySchema.customAsyncValidation.pendingMessage)\"\r\n        [customAsyncValidateDisabled]=\"shouldCustomAsyncValidationBeDisabled()\"\r\n        [customAsyncValidateDebounceTime]=\"propertySchema.customAsyncValidation && +propertySchema.customAsyncValidation.handler\"\r\n        >\r\n            <sme-option *ngFor=\"let item of propertySchema.options.items\" [value]=\"item.value\" [label]=\"localize(item.label)\"></sme-option>\r\n            <ng-container *ngIf=\"propertySchema.options.itemsBinding\">\r\n                <sme-option *ngFor=\"let item of resolveComponentMember(propertySchema.options.itemsBinding)\"\r\n                    [value]=\"item.value\" [label]=\"localize(item.label)\"></sme-option>\r\n            </ng-container>\r\n    </sme-form-field>\r\n    `\r\n})\r\n/* eslint-enable max-len */\r\nexport class OrderedListFormFieldLoaderComponent extends SimplePropertySchemaFieldLoaderComponent {\r\n    /**\r\n     * Compare array equality.\r\n     * @param a comparison array.\r\n     * @param b comparison array.\r\n     * @returns true if equal.\r\n     */\r\n    public valueComparator: MsftSme.Func2<Array<string>, Array<string>, boolean> = (a: Array<string>, b: Array<string>) => {\r\n        if (MsftSme.isNullOrUndefined(a) !== MsftSme.isNullOrUndefined(b)) {\r\n            return false;\r\n        }\r\n        return MsftSme.isNullOrUndefined(a) || a === b;\r\n    };\r\n}\r\n\r\n/**\r\n * Accessible Implementation of a form field combo box.\r\n */\r\n@SmeSchemaProperty({\r\n    type: SchemaPrimitiveType.Array,\r\n    format: 'orderedlist',\r\n    description: 'a ordered list control binding to string data.',\r\n    loaderComponent: OrderedListFormFieldLoaderComponent,\r\n    optionProperties: [\r\n        <SchemaArrayProperty>{\r\n            type: SchemaPrimitiveType.Array,\r\n            format: 'simple-list',\r\n            name: 'items',\r\n            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.StaticOptions',\r\n            item: <SchemaObjectProperty>{\r\n                type: SchemaPrimitiveType.Object,\r\n                format: 'default',\r\n                properties: [\r\n                    {\r\n                        type: SchemaPrimitiveType.String,\r\n                        format: 'resource-string-picker',\r\n                        name: 'label',\r\n                        label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.Label',\r\n                        required: true\r\n                    },\r\n                    {\r\n                        type: SchemaPrimitiveType.String,\r\n                        format: 'textbox',\r\n                        name: 'value',\r\n                        label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.Value',\r\n                        required: true\r\n                    }\r\n                ],\r\n                options: {\r\n                    columnCount: 1\r\n                }\r\n            }\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.String,\r\n            format: 'textbox',\r\n            name: 'itemsBinding',\r\n            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.DynamicOptions'\r\n        }\r\n    ]\r\n})\r\n@Component({\r\n    selector: 'sme-form-field[type=\"orderedlist\"]',\r\n    templateUrl: './ordered-list-form-field.component.html'\r\n})\r\nexport class OrderedListFormFieldComponent<TValue>\r\n    extends SmeInternalOptionsFormFieldComponent<Array<TValue>>\r\n    implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'OrderedListFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * Single selection is not supported by ordered list\r\n     */\r\n    public readonly multiple = true;\r\n\r\n    /**\r\n     * The view child component for the add button.\r\n     */\r\n    @ViewChild('addButton')\r\n    public addButton: ElementRef;\r\n\r\n    /**\r\n     * Indicates if the add and remove actions should be shown\r\n     */\r\n    @Input()\r\n    public showAddRemove: boolean;\r\n\r\n    /**\r\n     * Indicates if the move actions should be shown\r\n     */\r\n    @Input()\r\n    public showMove: boolean;\r\n\r\n    /**\r\n     * Indicates if the selection should be allowed\r\n     */\r\n    @Input()\r\n    public showSelect: boolean;\r\n\r\n    /**\r\n     * Indicates the add button inner html\r\n     */\r\n    @Input()\r\n    public addButtonText: string = this.strings.MsftSmeShell.Angular.Common.add;\r\n\r\n    /**\r\n     * Indicates the combobox searchable\r\n     */\r\n    @Input()\r\n    public searchable = false;\r\n\r\n    /**\r\n     * Indicates allow empty selection\r\n     */\r\n    @Input()\r\n    public allowEmpty = true;\r\n\r\n    /**\r\n     * This will not allow user to remove the last item in the order list\r\n     */\r\n    public get allowEmptyDisableActions(): boolean {\r\n        return !this.allowEmpty && this.value.length === 1;\r\n    }\r\n    /**\r\n     * The aria label for this instance.\r\n     */\r\n    @HostBinding('attr.aria-label')\r\n    public get ariaLabel(): string {\r\n        return this.getMergedDescriptionLabel();\r\n    }\r\n\r\n    /**\r\n     * The aria label for the add/remove button when aria label is passed in.\r\n     * The aria label needs to be in sync with the add button text so that narrator can read the correct content.\r\n     * It should also respect the required state.\r\n     */\r\n    public get addRemoveButtonArialLabel(): string {\r\n        if (this.addButtonText) {\r\n            return this.required ? this.strings.MsftSmeShell.Angular.Calendar.AriaLabel.Required.format(this.addButtonText) : this.addButtonText;\r\n        }\r\n\r\n        return this.required ? this.strings.MsftSmeShell.Angular.Calendar.AriaLabel.Required.format(\r\n            this.strings.MsftSmeShell.Angular.Form.OrderedList.addButtonAriaLabel) : this.strings.MsftSmeShell.Angular.Form.OrderedList.addButtonAriaLabel;\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the OrderedListFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector,\r\n        protected orderedListFormFieldAccessibilityManagerService: OrderedListFormFieldAccessibilityManagerService\r\n    ) {\r\n        super(injector);\r\n        this.instructions = this.strings.MsftSmeShell.Angular.Form.OrderedList.instructions;\r\n        this.showAddRemove = true;\r\n        this.showMove = true;\r\n        this.showSelect = true;\r\n    }\r\n\r\n    /**\r\n     * The method called after the component is initialized.\r\n     */\r\n    public ngOnInit(): void {\r\n        super.ngOnInit();\r\n        this.setAttribute('role', 'group');\r\n    }\r\n\r\n    /**\r\n     * Compare value inside of array.\r\n     * @param left The data to compare.\r\n     * @param right The data to compare.\r\n     * @returns true if equal.\r\n     */\r\n    public arrayValueComparator(left: TValue, right: TValue): boolean {\r\n        if (MsftSme.isNullOrUndefined(left) !== MsftSme.isNullOrUndefined(right)) {\r\n            return false;\r\n        }\r\n        return MsftSme.isNullOrUndefined(left) || left === right;\r\n    }\r\n\r\n    /**\r\n     * Display value inside of array. this.getValueDisplayString() uses TModel which is Array<TValue> wrongly.\r\n     * Re-casting to <any> making a workaround.\r\n     * @param value The value to display.\r\n     * @returns the display string.\r\n     */\r\n    public arrayGetValueDisplayString(value: TValue): string {\r\n        return this.getValueDisplayString(<any>value);\r\n    }\r\n\r\n    /**\r\n     * Adds an item to the list\r\n     */\r\n    public addListItem(value: TValue = null): boolean {\r\n        // do not add an item if we already have an option for each option or the value is already selected\r\n        if (!Array.isArray(this.value) || this.value.length >= this.options.length || this.value.some(v => v === value)) {\r\n            return false;\r\n        }\r\n\r\n        this.value = [...this.value, value];\r\n\r\n        this.orderedListFormFieldAccessibilityManagerService.add(this.value, this.addButton, this.hostElement);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * Demotes an item at the given index by 1\r\n     * @param index The index of the item being demoted.\r\n     */\r\n    public demoteItemAt(index: number): void {\r\n        if (index === this.value.length - 1) {\r\n            return;\r\n        }\r\n\r\n        this.moveItem(index, index + 1);\r\n\r\n        this.orderedListFormFieldAccessibilityManagerService.demote(this.value, this.hostElement, `#${this.idBag.demote}${index + 1}`);\r\n    }\r\n\r\n    /**\r\n     * Promotes an item at the given index by 1\r\n     * @param index The index of the item being promoted.\r\n     */\r\n    public promoteItemAt(index: number): void {\r\n        if (index === 0) {\r\n            return;\r\n        }\r\n\r\n        this.moveItem(index, index - 1);\r\n\r\n        this.orderedListFormFieldAccessibilityManagerService.promote(this.value, this.hostElement, `#${this.idBag.promote}${index - 1}`);\r\n    }\r\n\r\n    /**\r\n     * Returns the index to track items in the array.\r\n     */\r\n    public trackByIndex(index, item) { return index; }\r\n\r\n    /**\r\n     * Removes an item at the given index\r\n     */\r\n    public removeItemAt(index: number): void {\r\n        this.value.splice(index, 1);\r\n        this.triggerValueChange();\r\n\r\n        this.orderedListFormFieldAccessibilityManagerService.delete(this.value, this.addButton, this.hostElement);\r\n    }\r\n\r\n    /**\r\n     * Moves an element of an array from a starting index to a destination index.\r\n     *\r\n     * @param array The array containing the element to move.\r\n     * @param startingIndex The initial index of the element to move.\r\n     * @param destinationIndex The destination index of the moved element.\r\n     * @returns The original array with the specified element moved.\r\n     */\r\n    public moveItem(startingIndex: number, destinationIndex: number): void {\r\n        const value = [...this.value];\r\n        const targetElement = value[startingIndex];\r\n\r\n        if (startingIndex < destinationIndex) {\r\n            value.splice(destinationIndex + 1, 0, targetElement);\r\n            value.splice(startingIndex, 1);\r\n        } else {\r\n            value.splice(startingIndex, 1);\r\n            value.splice(destinationIndex, 0, targetElement);\r\n        }\r\n\r\n        this.value = value;\r\n    }\r\n\r\n    /**\r\n     * The method called when a <select> element's value changes.\r\n     */\r\n    public triggerValueChange(): void {\r\n        this.value = [...this.value];\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: '',\r\n            promote: '',\r\n            demote: ''\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control.\r\n     *\r\n     * @param c The form control attached to this instance.\r\n     * @returns Any validation alerts for this control.\r\n     */\r\n    protected validate(c: FormControl): ValidationAlerts {\r\n        if (this.required && (MsftSme.isNullOrUndefined(this.value) || this.value.length === 0)) {\r\n            return { required: true };\r\n        }\r\n\r\n        if (!MsftSme.isNullOrUndefined(this.value) && this.value.some((x) => MsftSme.isNullOrUndefined(x))) {\r\n            return {\r\n                nullValue: {\r\n                    message: this.strings.MsftSmeShell.Angular.Form.OrderedList.emptyValues\r\n                }\r\n            };\r\n        }\r\n\r\n        return super.validate(c);\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <div *ngIf=\"value\" class=\"sme-margin-bottom-xs sme-form-field-editor\">\r\n    <div *ngFor=\"let item of value; trackBy: trackByIndex; let i = index\"\r\n      class=\"sme-arrange-stack-h sme-margin-bottom-xs sme-form-field-width\"\r\n      [attr.data-uta-id]=\"item ? item.toString() + '-row' : 'new-item-row'\">\r\n      <label class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan + i\">\r\n        {{ strings.MsftSmeShell.Angular.Form.OrderedList.itemAriaDescription.format(i + 1, value.length) }}\r\n      </label>\r\n      <p *ngIf=\"!showSelect\" class=\"sme-position-flex-auto\" role=\"textbox\" [attr.aria-label]=\"idBag.detailsSpan + i\">\r\n        {{ arrayGetValueDisplayString(value[i]) }}</p>\r\n      <div class=\"sme-layout-relative sme-position-flex-auto\" [class.sme-margin-right-xs]=\"showMove || showAddRemove\">\r\n        <sme-form-field *ngIf=\"showSelect\" [utaId]=\"item ? item.toString() + '-combobox' : 'new-combobox'\"\r\n          type=\"combobox\" [hideHeader]=\"true\" [valueComparator]=\"valueComparator\" [(ngModel)]=\"value[i]\"\r\n          (ngModelChange)=\"triggerValueChange()\" [label]=\"label\"\r\n          [searchable]=\"searchable\">\r\n          <ng-container *ngFor=\"let option of options\">\r\n            <sme-option *ngIf=\"!option.isSelected || arrayValueComparator(option.value, value[i])\"\r\n              [utaId]=\"option.utaId ? option.utaId : option.value\" [value]=\"option.value\" [label]=\"option.toString()\"\r\n              [disabled]=\"option.disabled\">\r\n            </sme-option>\r\n          </ng-container>\r\n        </sme-form-field>\r\n      </div>\r\n      <button *ngIf=\"showMove\" [id]=\"idBag.promote + i\" type=\"button\"\r\n        class=\"sme-button-trigger sme-position-flex-none sme-button-auto-width sme-form-field-height\"\r\n        [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.OrderedList.promoteButtonAriaLabel\"\r\n        [title]=\"strings.MsftSmeShell.Angular.Form.OrderedList.promoteButtonTooltip\" (click)=\"promoteItemAt(i)\"\r\n        [smeDisabled]=\"loadingOrDisabled || allowEmptyDisableActions\" data-uta-id=\"promote-button\">\r\n        <span class=\"sme-icon sme-icon-up\"></span>\r\n      </button>\r\n      <button *ngIf=\"showMove\" [id]=\"idBag.demote + i\" type=\"button\"\r\n        class=\"sme-button-trigger sme-position-flex-none sme-button-auto-width sme-form-field-height\"\r\n        [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.OrderedList.demoteButtonAriaLabel\"\r\n        [title]=\"strings.MsftSmeShell.Angular.Form.OrderedList.demoteButtonTooltip\" (click)=\"demoteItemAt(i)\"\r\n        [smeDisabled]=\"loadingOrDisabled || allowEmptyDisableActions\" data-uta-id=\"demote-button\">\r\n        <span class=\"sme-icon sme-icon-down\"></span>\r\n      </button>\r\n      <button *ngIf=\"showAddRemove\" type=\"button\"\r\n        class=\"sme-button-trigger sme-position-flex-none sme-button-auto-width sme-form-field-height\"\r\n        [attr.aria-label]=\"strings.MsftSmeShell.Angular.Form.OrderedList.removeButtonAriaLabel\"\r\n        [title]=\"strings.MsftSmeShell.Angular.Form.OrderedList.removeButtonTooltip\" (click)=\"removeItemAt(i)\"\r\n        [smeDisabled]=\"loadingOrDisabled || allowEmptyDisableActions\" data-uta-id=\"remove-button\">\r\n        <span class=\"sme-icon sme-icon-cancel sme-color-red\"></span>\r\n      </button>\r\n    </div>\r\n    <button #addButton *ngIf=\"showAddRemove\" type=\"button\" [smeDisabled]=\"loadingOrDisabled || value.length === options.length\"\r\n      class=\"sme-button-trigger sme-button-auto-width sme-icon sme-icon-add sme-margin-bottom-xs\"\r\n      [attr.aria-label]=\"addRemoveButtonArialLabel\" data-uta-id=\"add-button\"\r\n      [title]=\"strings.MsftSmeShell.Angular.Form.OrderedList.addButtonTooltip\" (click)=\"addListItem()\">\r\n      {{ addButtonText }}\r\n    </button>\r\n  </div>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import { Directive, forwardRef, HostListener, Input, StaticProvider } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { Strings } from '../../../generated/strings';\r\nimport { ValidationAlerts, ValidationAlertSeverity } from '../validation-alert/validation-alert';\r\nimport { FormValidatorBase } from './base-validator';\r\nimport { SME_VALIDATORS } from './sme-validator';\r\n\r\n/**\r\n * Provider for the FormFieldValidatorDirective directive\r\n */\r\nexport const CAPSLOCK_VALIDATOR: StaticProvider = {\r\n    provide: SME_VALIDATORS,\r\n    useExisting: forwardRef(() => CapsLockValidatorDirective),\r\n    multi: true\r\n};\r\n\r\n/**\r\n * A Directive that adds the adds a warning when the CAPSLOCK key is on.\r\n * Applies to sme-form-field[type=\"password] and [smeCapsLock]\r\n */\r\n@Directive({\r\n    // eslint-disable-next-line max-len\r\n    selector: 'sme-form-field[smeCapsLock][formControlName],sme-form-field[smeCapsLock][formControl],sme-form-field[smeCapsLock][ngModel],sme-form-field[type=\"password\"][formControlName],sme-form-field[type=\"password\"][formControl],sme-form-field[type=\"password\"][ngModel]',\r\n    providers: [CAPSLOCK_VALIDATOR]\r\n})\r\nexport class CapsLockValidatorDirective extends FormValidatorBase {\r\n\r\n    /**\r\n     * Indicates that a warning should be thrown if capslock is on\r\n     */\r\n    @Input('smeCapsLock')\r\n    public get warnOnCapsLock(): boolean { return this.internalWarnOnCapsLock; }\r\n    public set warnOnCapsLock(value: boolean) {\r\n        // warn if value is undefined or truthy and not 'false' string\r\n        this.internalWarnOnCapsLock = MsftSme.isUndefined(value) || (!!value && `${value}` !== 'false');\r\n        this.revalidate();\r\n    }\r\n\r\n    /**\r\n     * Internal placeholder for warnOnCapsLock\r\n     */\r\n    private internalWarnOnCapsLock = true;\r\n\r\n    /**\r\n     * Indicates the state of the capslock key\r\n     */\r\n    private isCapsLockOn = false;\r\n\r\n    /**\r\n     * Instantiates a new instance of CapsLockValidatorDirective\r\n     */\r\n    constructor() {\r\n        super();\r\n        // Microsoft Edge looks for this value to disable the automatic capslock warning. For consistency, we want to use our own behavior;\r\n        (<any>document).msCapsLockWarningOff = true;\r\n    }\r\n\r\n    /**\r\n     * Implementation of Validator interface.\r\n     * Validates the state of the capslock key for this form control\r\n     * @param c The FormControl attached to this element\r\n     * @return null when valid, otherwise returns a validation object\r\n     */\r\n    public validate(c: FormControl): ValidationAlerts | null {\r\n        const alerts: ValidationAlerts = super.validate(c) || {};\r\n        if (this.warnOnCapsLock && this.isCapsLockOn) {\r\n            const strings = <Strings>MsftSme.self().Resources.strings;\r\n            alerts['smeCapsLock'] = {\r\n                valid: true,\r\n                message: strings.MsftSmeShell.Angular.Common.Form.Validation.Capslock.message,\r\n                severity: ValidationAlertSeverity.Warning\r\n            };\r\n        }\r\n        return this.alertsOrNull(alerts);\r\n    }\r\n\r\n    /**\r\n     * We dont have a way to truly monitor for capslock.\r\n     * The best we can do is listen to every keydown and turn the warning on if we detect that its on\r\n     * @param event the event data.\r\n     */\r\n    @HostListener('keydown', ['$event'])\r\n    public onKeydown(event: KeyboardEvent) {\r\n        if (event && event.getModifierState) {\r\n            const oldIsCapsLockOn = this.isCapsLockOn;\r\n            this.isCapsLockOn = event.getModifierState(KeyCode[KeyCode.CapsLock]);\r\n            if (oldIsCapsLockOn !== this.isCapsLockOn) {\r\n                this.revalidate();\r\n            }\r\n        }\r\n    }\r\n}\r\n","import { Component, Injector, OnInit } from '@angular/core';\r\nimport { SmeSchemaProperty } from '../../../schema/schema-decorator';\r\nimport { SimplePropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';\r\nimport { SchemaPrimitiveType } from '../../../schema/schema-models';\r\nimport { SmeInternalFormFieldComponent } from '../form-field.component';\r\n\r\n/* eslint-disable max-len */\r\n@Component({\r\n    template: `\r\n    <sme-form-field #field type=\"password\" [(ngModel)]=\"data\" [name]=\"propertySchema.name\" [label]=\"localize(propertySchema.label)\"\r\n        [required]=\"propertySchema.required\" [description]=\"localize(propertySchema.description)\"\r\n        [readonly]=\"!!evalExpression(propertySchema.readonlyCondition)\"\r\n        [disabled]=\"!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))\"\r\n        (customValidate)=\"resolveFunction(propertySchema.customValidation)($event)\"\r\n        (customAsyncValidate)=\"propertySchema.customAsyncValidation && resolveFunction(propertySchema.customAsyncValidation.handler)($event)\"\r\n        [pendingMessage]=\"propertySchema.customAsyncValidation && localize(propertySchema.customAsyncValidation.pendingMessage)\"\r\n        [customAsyncValidateDisabled]=\"shouldCustomAsyncValidationBeDisabled()\"\r\n        [customAsyncValidateDebounceTime]=\"propertySchema.customAsyncValidation && +propertySchema.customAsyncValidation.handler\"\r\n        ></sme-form-field>\r\n    `\r\n})\r\n/* eslint-enable max-len */\r\nexport class PasswordFormFieldLoaderComponent extends SimplePropertySchemaFieldLoaderComponent {\r\n}\r\n\r\n/**\r\n * Accessible password field implementation\r\n */\r\n@SmeSchemaProperty({\r\n    type: SchemaPrimitiveType.String,\r\n    format: 'password',\r\n    description: 'A password textbox binding to string data',\r\n    loaderComponent: PasswordFormFieldLoaderComponent\r\n})\r\n@Component({\r\n    selector: 'sme-form-field[type=\"password\"]',\r\n    templateUrl: './password-form-field.component.html'\r\n})\r\nexport class PasswordFormFieldComponent extends SmeInternalFormFieldComponent<any> implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'PasswordFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the PasswordFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: ''\r\n        };\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <div class=\"sme-form-field-editor\">\r\n    <input type=\"password\" [attr.aria-label]=\"label\"  [required]=\"required\"\r\n           [disabled]=\"loadingOrDisabled\" [(ngModel)]=\"value\" [placeholder]=\"placeholder\">\r\n  </div>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import { Directive, HostBinding, Injector, OnInit } from '@angular/core';\r\nimport { SmeInternalOptionsFormFieldComponent } from '../options-form-field/options-form-field.component';\r\n\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class RadioGroupFormFieldComponentBase extends SmeInternalOptionsFormFieldComponent<any> implements OnInit {\r\n    /**\r\n     * Multiple selection is not supported by radio buttons\r\n     */\r\n    public readonly multiple = false;\r\n\r\n    /**\r\n     * The aria label for this instance\r\n     */\r\n    @HostBinding('attr.aria-label')\r\n    public get ariaLabel(): string {\r\n        return this.getMergedDescriptionLabel();\r\n    }\r\n\r\n    /**\r\n     * Indicates the default value for immediateValidation.\r\n     * This is meant to be overridden by derived classes\r\n     */\r\n    protected get defaultImmediateValidation(): boolean {\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the RadioGroupFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnInit interface\r\n     */\r\n    public ngOnInit() {\r\n        super.ngOnInit();\r\n        this.setAttribute('role', 'radiogroup');\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            groupName: ''\r\n        };\r\n    }\r\n\r\n    /**\r\n     * On layout changed event handler, occurs every time the layout has been changed.\r\n     */\r\n    protected onLayoutChanged() {\r\n        super.onLayoutChanged();\r\n    }\r\n\r\n    /**\r\n     * Occurs whenever the internal value of this form control changes\r\n     */\r\n    protected onValueChanged(value: any) {\r\n        super.onValueChanged(value);\r\n    }\r\n}\r\n","import { Component, Injector, Input } from '@angular/core';\r\nimport { SmeSchemaProperty } from '../../../../schema/schema-decorator';\r\nimport { ObjectPropertySchemaFieldLoaderComponent } from '../../../../schema/schema-field-host.component';\r\nimport { SchemaArrayProperty, SchemaObjectProperty, SchemaPrimitiveType } from '../../../../schema/schema-models';\r\nimport { SchemaUtilities } from '../../../../schema/schema-utilities';\r\nimport { RadioGroupFormFieldComponentBase } from '../radio-group-form-field.component.base';\r\n\r\n@Component({\r\n    template: `\r\n    <sme-form-field #field type=\"radiogroup\" [(ngModel)]=\"data.option\" [name]=\"propertySchema.name\"\r\n        [label]=\"localize(propertySchema.label)\" [required]=\"propertySchema.required\" [description]=\"propertySchema.description\"\r\n        [readonly]=\"!!evalExpression(propertySchema.readonlyCondition)\"\r\n        [disabled]=\"!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))\"\r\n        (customValidate)=\"resolveFunction(propertySchema.customValidation)($event)\">\r\n        <ng-container *ngFor=\"let item of options\">\r\n            <sme-option *ngIf=\"!getObjectOptionByMainOption(item.value)\" [disabled]=\"shouldDisable()===item.value\"\r\n                [value]=\"item.value\" [label]=\"localize(item.label)\" [description]=\"localize(item.description)\">\r\n            </sme-option>\r\n            <sme-option *ngIf=\"getObjectOptionByMainOption(item.value)\" [disabled]=\"shouldDisable()===item.value\"\r\n                [value]=\"item.value\" [label]=\"localize(item.label)\" [description]=\"localize(item.description)\">\r\n                <ng-template>\r\n                    <sme-schema-field-host [propertySchema]=\"getObjectOptionByMainOption(item.value)\"\r\n                        [(data)]=\"data.objectOptions && data.objectOptions[item.value]\"\r\n                        [context]=\"context\">\r\n                    </sme-schema-field-host>\r\n                </ng-template>\r\n            </sme-option>\r\n        </ng-container>\r\n    </sme-form-field>\r\n    `\r\n})\r\nexport class RadioGroupFormFieldLoaderComponent extends ObjectPropertySchemaFieldLoaderComponent {\r\n    public get options(): any[] {\r\n        let result: any[] = [];\r\n        const staticOptions: any[] = this.propertySchema.options && this.propertySchema.options.items || [];\r\n        const dynamicOptions: any[] = this.resolveComponentMember(this.propertySchema.options.itemsBinding);\r\n\r\n        if (staticOptions) {\r\n            result = result.concat(staticOptions);\r\n        }\r\n        if (dynamicOptions) {\r\n            result = result.concat(dynamicOptions);\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    public getObjectOptionByMainOption(mainOptionValue: string): SchemaObjectProperty {\r\n        const objectOptions = <SchemaObjectProperty>SchemaUtilities.getPropertySchemaByName(this.propertySchema, 'objectOptions');\r\n        const objectOption: SchemaObjectProperty =\r\n            <SchemaObjectProperty>SchemaUtilities.getPropertySchemaByName(objectOptions, mainOptionValue);\r\n        return objectOption;\r\n    }\r\n\r\n    public isValid(): boolean {\r\n        let result = true;\r\n\r\n        if (this.propertySchema.required && !this.data.option) {\r\n            result = false;\r\n        }\r\n\r\n        if (result) {\r\n            const fieldHostComponents = this.fieldHostComponents.toArray();\r\n            const fieldHostComponentForSelectedOption = fieldHostComponents.find(item => item.propertySchema.name === this.data.option);\r\n            if (fieldHostComponentForSelectedOption) {\r\n                result = fieldHostComponentForSelectedOption.isValid();\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    public shouldDisable(): boolean {\r\n        let result = false;\r\n        if (this.propertySchema.options && this.propertySchema.options.optionDisableConditionHandler) {\r\n            const handler = this.resolveFunction(this.propertySchema.options.optionDisableConditionHandler);\r\n            result = handler(this.data, this.context.formData);\r\n        }\r\n\r\n        return result;\r\n    }\r\n}\r\n\r\n/**\r\n * The display type of the radio group.\r\n * - List is a vertical display of traditional radio buttons\r\n * - inline, is still traditional radio buttons but inline\r\n */\r\nexport type RadioGroupDisplayMode = 'list' | 'inline';\r\n\r\n/**\r\n * Accessible Implementation of a form field for a set of .sme-radio\r\n */\r\n@SmeSchemaProperty(\r\n    {\r\n        type: SchemaPrimitiveType.Object,\r\n        format: 'radio-group',\r\n        description: 'A radio group control binding to object data.',\r\n        loaderComponent: RadioGroupFormFieldLoaderComponent,\r\n        predefinedObjectProperties: [\r\n            {\r\n                type: SchemaPrimitiveType.String,\r\n                format: 'textbox',\r\n                name: 'option'\r\n            },\r\n            <SchemaObjectProperty>{\r\n                type: SchemaPrimitiveType.Object,\r\n                format: 'default',\r\n                name: 'objectOptions',\r\n                properties: [\r\n                    <SchemaObjectProperty>{\r\n                        type: SchemaPrimitiveType.Object,\r\n                        format: 'default',\r\n                        name: '<object data for option 1>',\r\n                        properties: []\r\n                    },\r\n                    <SchemaObjectProperty>{\r\n                        type: SchemaPrimitiveType.Object,\r\n                        format: 'default',\r\n                        name: '<object data for option 2>',\r\n                        properties: []\r\n                    },\r\n                    <SchemaObjectProperty>{\r\n                        type: SchemaPrimitiveType.Object,\r\n                        format: 'default',\r\n                        name: '<object data for option 3>',\r\n                        properties: []\r\n                    }\r\n                ]\r\n            }\r\n        ],\r\n        optionProperties: [\r\n            <SchemaArrayProperty>{\r\n                type: SchemaPrimitiveType.Array,\r\n                format: 'simple-list',\r\n                name: 'items',\r\n                label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.StaticOptions',\r\n                item: <SchemaObjectProperty>{\r\n                    type: SchemaPrimitiveType.Object,\r\n                    format: 'default',\r\n                    properties: [\r\n                        {\r\n                            type: SchemaPrimitiveType.String,\r\n                            format: 'resource-string-picker',\r\n                            name: 'label',\r\n                            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.Label',\r\n                            required: true\r\n                        },\r\n                        {\r\n                            type: SchemaPrimitiveType.String,\r\n                            format: 'resource-string-picker',\r\n                            name: 'description',\r\n                            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.Description',\r\n                            required: true\r\n                        },\r\n                        {\r\n                            type: SchemaPrimitiveType.String,\r\n                            format: 'textbox',\r\n                            name: 'value',\r\n                            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.Value',\r\n                            required: true\r\n                        }\r\n                    ],\r\n                    options: {\r\n                        columnCount: 1\r\n                    }\r\n                }\r\n            },\r\n            {\r\n                type: SchemaPrimitiveType.String,\r\n                format: 'textbox',\r\n                name: 'itemsBinding',\r\n                label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Options.DynamicOptions'\r\n            },\r\n            {\r\n                type: SchemaPrimitiveType.String,\r\n                format: 'textbox',\r\n                name: 'optionDisableConditionHandler',\r\n                label: 'actual_string:Option Disable Condition Handler'\r\n            }\r\n        ]\r\n    })\r\n@Component({\r\n    selector: 'sme-form-field[type=\"radiogroup\"]',\r\n    templateUrl: './radio-group-form-field.component.html'\r\n})\r\nexport class RadioGroupFormFieldComponent extends RadioGroupFormFieldComponentBase {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'RadioGroupFormFieldComponent';\r\n    }\r\n\r\n    @Input()\r\n    public displayMode: RadioGroupDisplayMode;\r\n\r\n    /**\r\n     * Initializes a new instance of the RadioGroupFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n        this.displayMode = 'list';\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <ng-container *ngIf=\"displayMode === 'list'\">\r\n    <ng-container *ngFor=\"let option of options; let optionIndex = index\">\r\n      <ng-container *ngIf=\"!option.hidden\">\r\n        <div class=\"sme-radio\" #zone=\"smeTooltipZone\" smeTooltipZone (click)=\"toggleOption(option, true); radioInput.focus()\">\r\n          <input #radioInput type=\"radio\" role=\"radio\" [attr.aria-label]=\"option.label\" [attr.aria-describedby]=\"option.description\"\r\n            [attr.aria-checked]=\"option.isSelected\" [attr.name]=\"idBag.groupName\" [name]=\"idBag.groupName\" [attr.data-uta-id]=\"option.utaId\"\r\n            [value]=\"option.value\" [(ngModel)]=\"value\" [attr.aria-required]=\"required\"\r\n            [disabled]=\"loadingOrDisabled || option.disabled\">\r\n          <span aria-hidden=\"true\">{{option.label}}</span>\r\n          <span *ngIf=\"!(loadingOrDisabled || option.disabled) && option.showInfoBubble\"\r\n            class=\"sme-position-flex-none sme-icon sme-info-bubble sme-icon-info sme-margin-left-xs\"\r\n            [smeTooltip]=\"option.resolvedTooltipTemplate\" [smeTooltipContext]=\"option.tooltipContext || option\"\r\n            [title]=\"option.tooltip\" [tooltipZone]=\"zone\" tabindex=\"0\"></span>\r\n          <span *ngIf=\"(loadingOrDisabled || option.disabled) && option.showInfoBubble\" tabindex=\"0\"\r\n            class=\"sme-position-flex-none sme-icon sme-info-bubble sme-icon-info sme-margin-left-xs sme-color-neutral\"></span>\r\n          <div *ngIf=\"option.description\" class=\"sme-margin-top-xxs sme-margin-left-lg sme-margin-bottom-md\">\r\n            <span aria-hidden=\"true\">{{option.description}}</span>\r\n          </div>\r\n        </div>\r\n        <fieldset class=\"sme-layout-relative sme-radio-subform\" *ngIf=\"option.subFormTemplate\"\r\n          [disabled]=\"loadingOrDisabled || option.value !== value\">\r\n          <sme-option-template-loader [template]=\"option.subFormTemplate\" [data]=\"option\" [optionIndex]=\"optionIndex\">\r\n          </sme-option-template-loader>\r\n        </fieldset>\r\n      </ng-container>\r\n    </ng-container>\r\n  </ng-container>\r\n  <ng-container *ngIf=\"displayMode === 'inline'\">\r\n    <ng-container *ngFor=\"let option of options; let optionIndex = index\">\r\n      <ng-container *ngIf=\"!option.hidden\">\r\n        <div class=\"sme-radio sme-radio-inline sme-arrange-stack-v\" #zone=\"smeTooltipZone\" smeTooltipZone>\r\n          <div>\r\n            <input #radioInput type=\"radio\" role=\"radio\" [attr.aria-label]=\"option.label\" [attr.aria-describedby]=\"option.description\"\r\n              [attr.aria-checked]=\"option.isSelected\" [attr.name]=\"idBag.groupName\" [name]=\"idBag.groupName\" [attr.data-uta-id]=\"option.utaId\"\r\n              [value]=\"option.value\" [(ngModel)]=\"value\" [attr.aria-required]=\"required\"\r\n              [disabled]=\"loadingOrDisabled || option.disabled\">\r\n            <span aria-hidden=\"true\" (click)=\"toggleOption(option, true); radioInput.focus()\">{{option.label}}</span>\r\n            <span *ngIf=\"!(loadingOrDisabled || option.disabled) && option.showInfoBubble\" tabindex=\"0\"\r\n              class=\"sme-position-flex-none sme-icon sme-info-bubble sme-icon-info sme-margin-left-xs\"\r\n              [smeTooltip]=\"option.resolvedTooltipTemplate\" [smeTooltipContext]=\"option.tooltipContext || option\"\r\n              [title]=\"option.tooltip\" [tooltipZone]=\"zone\"></span>\r\n            <span *ngIf=\"(loadingOrDisabled || option.disabled) && option.showInfoBubble\" tabindex=\"0\"\r\n              class=\"sme-position-flex-none sme-icon sme-info-bubble sme-icon-info sme-margin-left-xs sme-color-neutral\"></span>\r\n          </div>\r\n          <div *ngIf=\"option.description\" class=\"sme-margin-top-xxs sme-margin-left-lg sme-margin-bottom-md\">\r\n            <span aria-hidden=\"true\" (click)=\"toggleOption(option, true); radioInput.focus()\">\r\n              {{option.description}}\r\n            </span>\r\n          </div>\r\n        </div>\r\n      </ng-container>\r\n    </ng-container>\r\n    <div class=\"sme-layout-relative\">\r\n      <ng-container *ngFor=\"let option of options; let optionIndex = index\">\r\n        <ng-container *ngIf=\"!option.hidden\">\r\n          <fieldset *ngIf=\"option.subFormTemplate\" class=\"sme-radio-subform sme-radio-subform-inline\"\r\n            [disabled]=\"loadingOrDisabled || option.value !== value\" [class.sme-layout-none]=\"!option.isSelected\">\r\n            <sme-option-template-loader [template]=\"option.subFormTemplate\" [data]=\"option\" [optionIndex]=\"optionIndex\">\r\n            </sme-option-template-loader>\r\n          </fieldset>\r\n        </ng-container>\r\n      </ng-container>\r\n    </div>\r\n  </ng-container>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>","<sme-form-field-layout [formField]=\"this\">\r\n  <div class=\"sme-radio sme-radio-rating sme-arrange-wrapstack-h\">\r\n    <ng-container *ngFor=\"let option of options; let optionIndex = index\">\r\n      <div class=\"sme-radio-rating-wrapper\" \r\n        (click)=\"toggleOption(option, true); radioInput.focus()\">\r\n        <input #radioInput type=\"radio\" role=\"radio\" [attr.aria-label]=\"option.label\"\r\n          [attr.aria-checked]=\"option.isSelected\" [attr.name]=\"idBag.groupName + optionIndex\" \r\n          [id]=\"idBag.groupName + optionIndex\"\r\n          [value]=\"option.value\" [(ngModel)]=\"value\" [attr.aria-required]=\"required\"\r\n          [disabled]=\"loadingOrDisabled || option.disabled\" class=\"sme-radio-rating-input\">\r\n        <label class=\"sme-radio-rating-label sme-radio-label sme-padding-top-xxs\"\r\n          aria-hidden=\"true\" [for]=\"idBag.groupName + optionIndex\">\r\n          {{option.label}}\r\n        </label>\r\n      </div>\r\n   </ng-container>\r\n  </div>\r\n</sme-form-field-layout>","import { Component, Injector } from '@angular/core';\r\nimport { RadioGroupFormFieldComponentBase } from '../radio-group-form-field.component.base';\r\n\r\n@Component({\r\n    selector: 'sme-form-field[type=\"radiogroup-rating\"]',\r\n    templateUrl: './rating-radio-group-form-field.component.html'\r\n})\r\nexport class RatingRadioGroupFormFieldComponent extends RadioGroupFormFieldComponentBase {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'RatingRadioGroupFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the RadioGroupFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <!-- Display mode \"tile\" always shows subforms inline -->\r\n  <!-- Tile rendering -->\r\n  <div class=\"sme-radio-tile-container\">\r\n    <ng-container *ngFor=\"let option of visibleOptions\">\r\n      <div class=\"sme-radio sme-tile sme-radio-tile sme-radio-outer-box sme-position-flex-auto\" [ngClass]=\"{\r\n            'sme-radio-selected': option.isSelected,\r\n            'sme-radio-disabled': loadingOrDisabled || option.disabled}\"\r\n        (click)=\"toggleOption(option, true); radioInput.focus()\">\r\n        <div>\r\n          <input #radioInput type=\"radio\" role=\"radio\" [attr.aria-label]=\"option.label\"\r\n            [attr.aria-checked]=\"option.isSelected\" [attr.name]=\"idBag.groupName\" [name]=\"idBag.groupName\"\r\n            [value]=\"option.value\" [(ngModel)]=\"value\" [attr.aria-required]=\"required\"\r\n            [disabled]=\"loadingOrDisabled || option.disabled\" class=\"sme-position-align-flex-end\">\r\n        </div>\r\n        <div class=\"sme-radio-inner-box\">\r\n          <div *ngIf=\"option.displayTemplate\"\r\n            class=\"sme-radio-display-content sme-position-flex-auto sme-arrange-stack-h\">\r\n            <ng-container smeTemplateOutlet [template]=\"option.displayTemplate\" [data]=\"option\">\r\n            </ng-container>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </ng-container>\r\n  </div>\r\n  <!-- Subform rendering -->\r\n  <div class=\"sme-layout-relative\">\r\n    <ng-container *ngFor=\"let option of options; let optionIndex = index\">\r\n      <ng-container *ngIf=\"!option.hidden\">\r\n        <fieldset *ngIf=\"option.subFormTemplate\" class=\"sme-radio-subform sme-radio-subform-inline\"\r\n          [disabled]=\"loadingOrDisabled || option.value !== value\" [class.sme-layout-none]=\"!option.isSelected\">\r\n          <sme-option-template-loader [template]=\"option.subFormTemplate\" [data]=\"option\" [optionIndex]=\"optionIndex\">\r\n          </sme-option-template-loader>\r\n        </fieldset>\r\n      </ng-container>\r\n    </ng-container>\r\n  </div>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import { Component, Injector } from '@angular/core';\r\nimport { FormFieldOptionComponent } from '../../options-form-field/form-field-option.component';\r\nimport { RadioGroupFormFieldComponentBase } from '../radio-group-form-field.component.base';\r\n\r\n@Component({\r\n    selector: 'sme-form-field[type=\"radiogroup-tile\"]',\r\n    templateUrl: './tile-radio-group-form-field.component.html'\r\n})\r\nexport class TileRadioGroupFormFieldComponent extends RadioGroupFormFieldComponentBase {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'TileRadioGroupFormFieldComponent';\r\n    }\r\n\r\n    public get visibleOptions(): FormFieldOptionComponent[] {\r\n        return this.options.filter(option => !option.hidden);\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the RadioGroupFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <div class=\"sme-arrange-stack-h sme-form-field-editor\">\r\n    <sme-icon-text class=\"sme-arrange-stack-h\" [class.sme-position-stretch-h]=\"!showCopyAction && !showFieldAction && !urlIcon\" [class.sme-padding-right-lg]=\"smeIconClassName || urlIcon\"\r\n      [smeIconClassName]=\"smeIconClassName\"\r\n      [urlIcon]=\"urlIcon\"\r\n      [readOnlyFormFieldLabel]=\"label\"\r\n      [title]=\"value\"\r\n      [readOnlyFormField]=\"true\">\r\n    </sme-icon-text>\r\n    <button *ngIf=\"showCopyAction\" type=\"button\"\r\n      class=\"sme-button-read-only-copy sme-position-flex-none sme-button-auto-width sme-form-field-height sme-icon sme-icon-copy sme-margin-right-xs\"\r\n      (click)=\"copyToClipboardInternal($event)\"\r\n      (toolTipFocusEventTriggered)=\"onToolTipFocusEventTriggered($event)\"\r\n      (toolTipMouseEventTriggered)=\"onToolTipMouseEventTriggered($event)\"\r\n      [attr.aria-label]=\"fieldCopyText ? fieldCopyText : null\"\r\n      [title]=\"fieldCopyText\"\r\n      [smeTooltipEnableEvents]=\"true\">\r\n    </button>\r\n    <button *ngIf=\"showFieldAction\" type=\"button\"\r\n      class=\"sme-button-read-only-copy sme-position-flex-none sme-button-auto-width sme-form-field-height\"\r\n      (click)=\"onFieldAction()\"\r\n      [smeDisabled]=\"loadingOrDisabled || pending || !isValid()\">\r\n      <span class=\"sme-icon {{fieldActionIconClass}}\" [class.sme-margin-right-xs]=\"!!fieldActionText\"></span>\r\n      <span>{{ fieldActionText }}</span>\r\n    </button>\r\n  </div>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import { Component, EventEmitter, Injector, Input, OnInit, Output } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { ToolTipFocusEvent, ToolTipMouseEvent } from '../../../tooltip/tooltip.directive';\r\nimport { SmeInternalFormFieldComponent } from '../form-field.component';\r\n\r\n/**\r\n * Accessible Implementation of a readonly form field\r\n */\r\n@Component({\r\n    selector: 'sme-form-field[type=\"readonly\"]',\r\n    templateUrl: './readonly-form-field.component.html'\r\n})\r\nexport class ReadonlyFormFieldComponent extends SmeInternalFormFieldComponent<string> implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'ReadonlyFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * The sme icon class for MDL icons\r\n     */\r\n    @Input()\r\n    public smeIconClassName: string;\r\n\r\n    /**\r\n     * The sme icon class for URL icons\r\n     */\r\n    @Input()\r\n    public urlIcon: string;\r\n\r\n    /**\r\n     * Indicates that the copy action should be shown\r\n     */\r\n    @Input()\r\n    public showCopyAction: boolean;\r\n\r\n    /**\r\n     * The text for the copy action\r\n     */\r\n    @Input()\r\n    public fieldCopyText: string;\r\n\r\n    /**\r\n     * Indicates that the field action should be shown\r\n     */\r\n    @Input()\r\n    public showFieldAction: boolean;\r\n\r\n    /**\r\n     * The text for the field action\r\n     */\r\n    @Input()\r\n    public fieldActionText: string;\r\n\r\n    /**\r\n     * The icon class for the field action\r\n     */\r\n    @Input()\r\n    public fieldActionIconClass: string;\r\n\r\n    /**\r\n     * The output for when the field action is activated\r\n     */\r\n    @Output()\r\n    public fieldAction: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n    /**\r\n     * Timer to guarantee mouse leave time to reset context from copied to default.\r\n     */\r\n    protected readonly copiedTextToDefaultTimer = 2000;\r\n\r\n    /**\r\n     * The object to hold the setTimeout object for clearing timeout.\r\n     */\r\n    protected copiedTextToDefaultTimeoutObject: any;\r\n\r\n    /**\r\n     * The lock for dealing with clicking events that causes focus lost of the button.\r\n     */\r\n    protected focusEventLock = false;\r\n\r\n    /**\r\n     * The back-up parameter for the copy text;\r\n     */\r\n    private fieldCopyTextBackUp: string;\r\n\r\n    /**\r\n     * Initializes a new instance of the ToggleSwitchFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n        this.fieldCopyText = this.strings.MsftSmeShell.Angular.Form.Actions.copy;\r\n    }\r\n\r\n    public ngOnInit() {\r\n        this.setFieldCopyTextBackUp(this.fieldCopyText);\r\n    }\r\n\r\n    /**\r\n     * Executes the field action\r\n     */\r\n    public onFieldAction(): void {\r\n        this.fieldAction.emit(this.value);\r\n    }\r\n\r\n    /**\r\n     * On click function for copy to clipboard.\r\n     */\r\n    public copyToClipboardInternal($event): void {\r\n        if (!$event) {\r\n            return;\r\n        }\r\n\r\n        // For the keyboard press, make sure to not lost focus.\r\n        // By default the focus would be landing on the tooltip for reading the content out,\r\n        // In our case, we force the focus to stay on the button and read internal aria label.\r\n        if ($event.pointerId === -1) {\r\n            this.focusEventLock = false;\r\n            $event.preventDefault();\r\n            $event.stopPropagation();\r\n            setTimeout(() => {\r\n                $event.target.focus();\r\n                this.fieldCopyText = this.strings.MsftSmeShell.Angular.Form.Actions.copied;\r\n            });\r\n        } else {\r\n            // mouse click\r\n            this.focusEventLock = true;\r\n            setTimeout(() => {\r\n                this.fieldCopyText = this.strings.MsftSmeShell.Angular.Form.Actions.copied;\r\n            });\r\n        }\r\n\r\n        super.copyToClipboard();\r\n    }\r\n\r\n    /**\r\n     * It handles the event from the tooltip about focus in/out of bound.\r\n     * Adding debounce to only process the last signal within debounce timer.\r\n     *\r\n     * @param $event The tool tip focus in/out event.\r\n     */\r\n    @Debounce()\r\n    public onToolTipFocusEventTriggered($event: ToolTipFocusEvent): void {\r\n        if (!$event) {\r\n            return;\r\n        }\r\n\r\n        if ($event === ToolTipFocusEvent.focusOut) {\r\n            if (!this.focusEventLock) {\r\n                this.fieldCopyText = this.fieldCopyTextBackUp;\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It handles the event from the tooltip about mouse enter/leave event.\r\n     * Adding debounce to only process the last signal within debounce timer.\r\n     *\r\n     * @param $event The tool tip mouse enter/leave event.\r\n     */\r\n    @Debounce()\r\n    public onToolTipMouseEventTriggered($event: ToolTipMouseEvent): void {\r\n        if (!$event) {\r\n            return;\r\n        }\r\n\r\n        if ($event === ToolTipMouseEvent.mouseLeave) {\r\n            this.copiedTextToDefaultTimeoutObject = setTimeout(() => {\r\n                this.fieldCopyText = this.fieldCopyTextBackUp;\r\n            }, this.copiedTextToDefaultTimer);\r\n        } else if ($event === ToolTipMouseEvent.mouseEnter) {\r\n            if (this.copiedTextToDefaultTimeoutObject) {\r\n                clearTimeout(this.copiedTextToDefaultTimeoutObject);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It updates the default copy text. Can be useful when the tooltip text will change from external.\r\n     * @param input the string for the copy text\r\n     */\r\n    public setFieldCopyTextBackUp(input: string): void {\r\n        this.fieldCopyTextBackUp = input;\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: ''\r\n        };\r\n    }\r\n}\r\n","import { Component, Injector, Input, OnInit } from '@angular/core';\r\nimport { FormControl, Validators } from '@angular/forms';\r\nimport { SmeSchemaProperty } from '../../../schema/schema-decorator';\r\nimport { SimplePropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';\r\nimport { SchemaPrimitiveType } from '../../../schema/schema-models';\r\nimport { SmeInternalFormFieldComponent } from '../form-field.component';\r\n\r\n/* eslint-disable max-len */\r\n@Component({\r\n    template: `\r\n    <sme-form-field #field type=\"slider\" [(ngModel)]=\"data\" [name]=\"propertySchema.name\" [label]=\"localize(propertySchema.label)\"\r\n        [description]=\"localize(propertySchema.description)\" [required]=\"propertySchema.required\" [min]=\"propertySchema.options.min\"\r\n        [readonly]=\"!!evalExpression(propertySchema.readonlyCondition)\"\r\n        [disabled]=\"!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))\"\r\n        [max]=\"propertySchema.options.max\" [step]=\"propertySchema.options.step\"\r\n        (customValidate)=\"resolveFunction(propertySchema.customValidation)($event)\"\r\n        (customAsyncValidate)=\"propertySchema.customAsyncValidation && resolveFunction(propertySchema.customAsyncValidation.handler)($event)\"\r\n        [pendingMessage]=\"propertySchema.customAsyncValidation && localize(propertySchema.customAsyncValidation.pendingMessage)\"\r\n        [customAsyncValidateDisabled]=\"shouldCustomAsyncValidationBeDisabled()\"\r\n        [customAsyncValidateDebounceTime]=\"propertySchema.customAsyncValidation && +propertySchema.customAsyncValidation.handler\"\r\n        >\r\n    </sme-form-field>\r\n    `\r\n})\r\n/* eslint-enable max-len */\r\nexport class SliderFormFieldLoaderComponent extends SimplePropertySchemaFieldLoaderComponent {\r\n}\r\n\r\n/**\r\n * Accessible range field implementation as a slider\r\n */\r\n@SmeSchemaProperty({\r\n    type: SchemaPrimitiveType.Number,\r\n    format: 'slider',\r\n    description: 'A slider control binding to number data.',\r\n    loaderComponent: SliderFormFieldLoaderComponent,\r\n    optionProperties: [\r\n        {\r\n            type: SchemaPrimitiveType.Number,\r\n            format: 'textbox',\r\n            name: 'min',\r\n            label: 'actual_string:Min',\r\n            required: false,\r\n            options: {\r\n                multipleline: false\r\n            }\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.Number,\r\n            format: 'textbox',\r\n            name: 'max',\r\n            label: 'actual_string:Max',\r\n            defaultValue: 100,\r\n            required: false,\r\n            options: {\r\n                multipleline: false\r\n            }\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.Number,\r\n            format: 'textbox',\r\n            name: 'step',\r\n            label: 'actual_string:Step',\r\n            defaultValue: 1,\r\n            required: false,\r\n            options: {\r\n                multipleline: false\r\n            }\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.Number,\r\n            format: 'textbox',\r\n            name: 'tooMuch',\r\n            label: 'actual_string:Too much',\r\n            required: false,\r\n            options: {\r\n                multipleline: false\r\n            }\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.Number,\r\n            format: 'textbox',\r\n            name: 'tooLittle',\r\n            label: 'actual_string:Too little',\r\n            required: false,\r\n            options: {\r\n                multipleline: false\r\n            }\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.String,\r\n            format: 'textbox',\r\n            name: 'tooMuchWarning',\r\n            label: 'actual_string:Too much warning',\r\n            required: false,\r\n            options: {\r\n                multipleline: false\r\n            }\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.String,\r\n            format: 'textbox',\r\n            name: 'tooLittleWarning',\r\n            label: 'actual_string:Too little warning',\r\n            required: false,\r\n            options: {\r\n                multipleline: false\r\n            }\r\n        }\r\n    ]\r\n})\r\n@Component({\r\n    selector: 'sme-form-field[type=\"slider\"]',\r\n    templateUrl: './slider-form-field.component.html'\r\n})\r\nexport class SliderFormFieldComponent extends SmeInternalFormFieldComponent<number> implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'SliderFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * Indicates the default value for immediateValidation.\r\n     * This is meant to be overridden by derived classes\r\n     */\r\n    protected get defaultImmediateValidation(): boolean {\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * The size of each movement of the slider.\r\n     */\r\n    @Input()\r\n    public step: number;\r\n\r\n    /**\r\n     * The minimum value of the slider\r\n     */\r\n    @Input()\r\n    public min: number;\r\n\r\n    /**\r\n     * The maximum value of the slider\r\n     */\r\n    @Input()\r\n    public max: number;\r\n\r\n    /**\r\n     * Initializes a new instance of the SliderFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n        this.step = 1;\r\n        this.min = 0;\r\n        this.max = 100;\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: ''\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Determines the value to use when clearing the field based on the initial value type\r\n     */\r\n    protected getClearValue(): number {\r\n        return MsftSme.isNullOrUndefined(this.min) ? 0 : this.min;\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control\r\n     * @param c The form control attached to this instance\r\n     */\r\n    protected validate(c: FormControl) {\r\n        // shouldnt be possible by the user, but it could be a problem for\r\n        // angular's min and max validator only work via code. So we implement them here.\r\n        if (!MsftSme.isNullOrUndefined(this.min) && this.value < this.min) {\r\n            const errors = Validators.min(this.min)(c);\r\n            if (errors) { return errors; }\r\n        }\r\n\r\n        if (!MsftSme.isNullOrUndefined(this.max) && this.value > this.max) {\r\n            const errors = Validators.max(this.max)(c);\r\n            if (errors) { return errors; }\r\n        }\r\n\r\n        return super.validate(c);\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <div class=\"sme-slider sme-form-field-editor\">\r\n    <input type=\"range\" role=\"slider\" [attr.aria-label]=\"label\"  title=\"value\"\r\n           [disabled]=\"loadingOrDisabled\" [(ngModel)]=\"value\" [attr.aria-valuenow]=\"value\" [attr.aria-valuetext]=\"value\" [max]=\"max\"\r\n           [attr.aria-valuemax]=\"max\" [min]=\"min\" [attr.aria-valuemin]=\"min\" [step]=\"step\">\r\n  </div>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <div class=\"sme-tags-input sme-focus-zone\">\r\n    <div class=\"sme-tag\" *ngFor=\"let tag of value; let i = index\">\r\n      <span class=\"sme-tag-content\">{{tag}}</span>\r\n      <button type=\"button\" class=\"sme-button-trigger sme-button-auto-width sme-tag-button sme-tag-button-delete\"\r\n        role=\"button\" (click)=\"removeTag($event, i)\"\r\n        [attr.aria-label]=\"strings.MsftSmeShell.Angular.TagsInput.RemoveTag.labelFormat | smeFormat:tag\"\r\n        [title]=\"strings.MsftSmeShell.Angular.TagsInput.RemoveTag.labelFormat | smeFormat:tag\">\r\n        <span class=\"sme-icon sme-icon-clear sme-icon-size-xxs\"></span>\r\n      </button>\r\n    </div>\r\n    <div class=\"sme-tag\">\r\n      <span class=\"sme-screen-reader\" [id]=\"idBag.screenReaderInstructions\">{{instructions}}</span>\r\n      <!-- This input does not need to be in a form as this entire component is meant to be used as an element within a form. -->\r\n      <input [disabled]=\"disableInput\" #newTagInput class=\"sme-tag-input\" type=\"text\" [attr.list]=\"idBag.newTagSuggestionsList\" autocomplete=\"off\"\r\n        [(ngModel)]=\"newTags\" (keydown.enter)=\"submitTags($event)\" (blur)=\"submitTags($event)\"\r\n        (focus)=\"focusOnDataList()\" (blur)=\"onBlur($event)\" (keypress)=\"trimPlaceholderOnFirstTimeKeyPressOnDataList()\"\r\n        [attr.aria-required]=\"required\" [attr.aria-describedby]=\"idBag.screenReaderInstructions\"\r\n        [attr.aria-label]=\"strings.MsftSmeShell.Angular.TagsInput.AddTag.label\" data-uta-id=\"tag-add-input\"/>\r\n      <datalist [id]=\"idBag.newTagSuggestionsList\">\r\n        <option *ngFor=\"let suggestion of displayedSuggestions\">{{suggestion}}</option>\r\n      </datalist>\r\n      <button type=\"button\" class=\"sme-button-trigger sme-tag-button sme-button-auto-width sme-tag-button-add\"\r\n        role=\"button\" [attr.aria-label]=\"strings.MsftSmeShell.Angular.TagsInput.AddTag.label\" (click)=\"focusOnInput()\" data-uta-id=\"tag-add-button\">\r\n        <span class=\"sme-icon sme-icon-add sme-icon-size-xxs\"></span>\r\n        <span *ngIf=\"!value || value.length === 0\">{{textButton}}</span>\r\n      </button>\r\n    </div>\r\n  </div>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import { Component, ElementRef, HostBinding, Injector, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { SmeSchemaProperty } from '../../../schema/schema-decorator';\r\nimport { SimplePropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';\r\nimport { SchemaPrimitiveType } from '../../../schema/schema-models';\r\nimport { SmeInternalFormFieldComponent } from '../form-field.component';\r\n\r\n/* eslint-disable max-len */\r\n@Component({\r\n    template: `\r\n    <sme-form-field #field type=\"tags\" [(ngModel)]=\"data\" [name]=\"propertySchema.name\" [label]=\"localize(propertySchema.label)\"\r\n        [description]=\"localize(propertySchema.description)\" [required]=\"propertySchema.required\"\r\n        [readonly]=\"!!evalExpression(propertySchema.readonlyCondition)\"\r\n        [disabled]=\"!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))\"\r\n        [suggestions]=\"propertySchema.options.suggestions\"\r\n        (customValidate)=\"resolveFunction(propertySchema.customValidation)($event)\"\r\n        (customAsyncValidate)=\"propertySchema.customAsyncValidation && resolveFunction(propertySchema.customAsyncValidation.handler)($event)\"\r\n        [pendingMessage]=\"propertySchema.customAsyncValidation && localize(propertySchema.customAsyncValidation.pendingMessage)\"\r\n        [customAsyncValidateDisabled]=\"shouldCustomAsyncValidationBeDisabled()\"\r\n        [customAsyncValidateDebounceTime]=\"propertySchema.customAsyncValidation && +propertySchema.customAsyncValidation.handler\"\r\n        ></sme-form-field>\r\n    `\r\n})\r\n/* eslint-enable max-len */\r\nexport class TagsFormFieldLoaderComponent extends SimplePropertySchemaFieldLoaderComponent {\r\n}\r\n\r\n@SmeSchemaProperty({\r\n    type: SchemaPrimitiveType.Array,\r\n    format: 'tags',\r\n    description: 'A tags control binding to string array data.',\r\n    loaderComponent: TagsFormFieldLoaderComponent\r\n})\r\n@Component({\r\n    selector: 'sme-form-field[type=\"tags\"]',\r\n    templateUrl: './tags-form-field.component.html'\r\n})\r\nexport class TagsFormFieldComponent extends SmeInternalFormFieldComponent<string[]> implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'TagsFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * The current value of the new tags to add to this controls value\r\n     */\r\n    public newTags = '';\r\n\r\n    /**\r\n     * The suggestions property, but filtered to exclude existing tags.\r\n     */\r\n    public displayedSuggestions: string[] = [];\r\n\r\n    /**\r\n     * When true disables input field to prevent autofocus\r\n     */\r\n    public disableInput = true;\r\n\r\n    /**\r\n     * Indicates the character to use to split tags on.\r\n     */\r\n    @Input()\r\n    public tagSplitCharacter = ',';\r\n\r\n    /**\r\n     * Indicates the text button.\r\n     */\r\n    @Input()\r\n    public textButton = this.strings.MsftSmeShell.Angular.TagsInput.AddTag.label;\r\n\r\n    /**\r\n     * Indicates whether sme-form-field is rendered in compact\r\n     */\r\n    @Input()\r\n    declare public compact: boolean;\r\n\r\n    /**\r\n     * Suggestions for possible tags that the user could enter\r\n     */\r\n    @Input()\r\n    public get suggestions() {\r\n        return this.internalSuggestions;\r\n    }\r\n    public set suggestions(value: string[]) {\r\n        this.internalSuggestions = value;\r\n        this.updateDisplayedSuggestions();\r\n    }\r\n\r\n    /**\r\n     * internal value holder for suggestions property\r\n     */\r\n    private internalSuggestions: string[] = [];\r\n\r\n    @ViewChild('newTagInput')\r\n    public newTagInput: ElementRef;\r\n\r\n    /**\r\n     * The aria label for this instance\r\n     */\r\n    @HostBinding('attr.aria-label')\r\n    public get ariaLabel(): string {\r\n        return this.getMergedDescriptionLabel();\r\n    }\r\n\r\n    /**\r\n     * The parameters to prevent onload expanding datalist dropdown options that\r\n     * prevents user from seeing the below part of the page.\r\n     * This issue happens when the datalist is the first html components in the dialog\r\n     * The idea is when first time focusing on the datalist we\r\n     * put a placeholder on it so that it won't have matched items in order for\r\n     * the dropdown to not render\r\n     */\r\n    public isFirstTimeLoad = true;\r\n    public isFirstTimeKeyPress = true;\r\n    public readonly firstTimeLoadPlaceholder = ' ';\r\n\r\n    /**\r\n     * Initializes a new instance of the TagsInputComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n        this.instructions = this.strings.MsftSmeShell.Angular.TagsInput.Instructions.label;\r\n    }\r\n\r\n    /**\r\n     * Focus on new input directly\r\n     */\r\n    public focusOnInput() {\r\n        this.disableInput = false;\r\n        this.trimPlaceholderOnFirstTimeKeyPressOnDataList();\r\n        if (this.compact) {\r\n            this.deferredFocusOnInput();\r\n        } else {\r\n            if (this.newTagInput && this.newTagInput.nativeElement) {\r\n                this.deferredFocusOnInput();\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It handles the first time loaded inside of a dialog\r\n     */\r\n    public focusOnDataList() {\r\n        if (this.isFirstTimeLoad) {\r\n            this.isFirstTimeLoad = !this.isFirstTimeLoad;\r\n            this.newTags = this.firstTimeLoadPlaceholder;\r\n        } else {\r\n            return;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It handles the first time user is typing inside of the input\r\n     */\r\n    public trimPlaceholderOnFirstTimeKeyPressOnDataList() {\r\n        if (this.isFirstTimeKeyPress) {\r\n            this.isFirstTimeKeyPress = false;\r\n            this.newTags = this.newTags.trim();\r\n        } else {\r\n            return;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * deferred focus on new input\r\n     */\r\n    @Debounce()\r\n    public deferredFocusOnInput() {\r\n        if (document.activeElement !== this.newTagInput.nativeElement || !document.hasFocus()) {\r\n            if (this.newTagInput && this.newTagInput.nativeElement) {\r\n                this.newTagInput.nativeElement.focus();\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnInit interface\r\n     */\r\n    public ngOnInit() {\r\n        super.ngOnInit();\r\n        this.setAttribute('role', 'group');\r\n    }\r\n\r\n    /**\r\n     * @param event DOM event\r\n     */\r\n    public onBlur(event: Event) {\r\n        this.disableInput = true;\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * Removes a tag from the value of this input\r\n     * @param index the index to remove\r\n     */\r\n    public removeTag(event: MouseEvent, index: number) {\r\n        // remove the index from the array without modifying the original array.\r\n        const value = this.value.slice();\r\n        value.splice(index, 1);\r\n        // move focus to the next element, (as this one is going away)\r\n        const next = Dom.getNextFocusableElement(<HTMLElement>document.activeElement);\r\n        if (next) {\r\n            next.focus();\r\n        }\r\n        // reassign the array back to the value\r\n        this.value = value;\r\n\r\n        event.preventDefault();\r\n        event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * Submits the current newTagsInput value as new tags for our controls value.\r\n     */\r\n    public submitTags($event: Event) {\r\n        const tags = this.newTags\r\n            .split(this.tagSplitCharacter)\r\n            .map(tag => tag.trim().toLocaleLowerCase())\r\n            .filter(tag => !MsftSme.isNullOrWhiteSpace(tag));\r\n\r\n        if (tags.length > 0) {\r\n            this.value = MsftSme.unique(this.value.concat(tags).unique());\r\n        }\r\n\r\n        this.newTags = '';\r\n\r\n        $event.preventDefault();\r\n        $event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * Updates the displayed suggestions to exclude existing tags.\r\n     */\r\n    private updateDisplayedSuggestions() {\r\n        const suggestions = this.suggestions || [];\r\n        const tags = this.value || [];\r\n        this.displayedSuggestions = suggestions.filter(s => tags.every(t => s !== t));\r\n    }\r\n\r\n    /**\r\n     * Occurs every time the value of the control changes, in the UI or programmatically.\r\n     * @param value the value of the form control\r\n     */\r\n    protected onValueChanged(value: string[]) {\r\n        this.updateDisplayedSuggestions();\r\n        super.onValueChanged(value);\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            newTagSuggestionsList: '',\r\n            screenReaderInstructions: ''\r\n        };\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <!-- Single Line -->\r\n  <div class=\"sme-arrange-stack-h sme-form-field-editor\" [class.sme-actionable-textbox]=\"showFieldAction\"\r\n       *ngIf=\"!readonly && !multiline\" [class.sme-disabled]=\"loadingOrDisabled\">\r\n    <input class=\" sme-position-flex-auto\" type=\"text\" [attr.aria-label]=\"label\"\r\n            [required]=\"required\" [disabled]=\"loadingOrDisabled\"\r\n           [(ngModel)]=\"value\" [placeholder]=\"placeholder\" spellcheck=\"false\" (keydown.enter)=\"onEnterKey($event)\">\r\n\r\n    <button *ngIf=\"showFieldAction\" type=\"button\" [attr.aria-label]=\"fieldActionAriaLabel || fieldActionText\"\r\n            class=\"sme-button-primary sme-position-flex-none sme-button-auto-width sme-form-field-height\"\r\n            (click)=\"onFieldAction()\" [smeDisabled]=\"loadingOrDisabled || pending || !isValid()\">\r\n      <span class=\"sme-icon {{fieldActionIconClass}}\" [class.sme-margin-right-xs]=\"!!fieldActionText\"></span>\r\n      <span>{{ fieldActionText }}</span>\r\n    </button>\r\n  </div>\r\n  <!-- Multiple Line -->\r\n  <textarea *ngIf=\"!readonly && multiline\" class=\"sme-form-field-editor\" [attr.aria-label]=\"label\"\r\n             [required]=\"required\" [disabled]=\"loadingOrDisabled\"\r\n            [(ngModel)]=\"value\" [rows]=\"rows\" [cols]=\"columns\" [placeholder]=\"placeholder\"></textarea>\r\n  <span *ngIf=\"!compact && readonly\">{{ value }}</span>\r\n  <sme-validation-alert *ngIf=\"!compact\" [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import { Component, EventEmitter, Injector, Input, OnInit, Output } from '@angular/core';\r\nimport { SmeSchemaProperty } from '../../../schema/schema-decorator';\r\nimport { SimplePropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';\r\nimport { SchemaPrimitiveType } from '../../../schema/schema-models';\r\nimport { SmeInternalFormFieldComponent } from '../form-field.component';\r\n\r\n/* eslint-disable max-len */\r\n@Component({\r\n    template: `\r\n    <sme-form-field #field type=\"text\" [(ngModel)]=\"data\" [name]=\"propertySchema.name\" [label]=\"localize(propertySchema.label)\"\r\n        [multiline]=\"propertySchema.options && propertySchema.options.multipleline\"\r\n        [required]=\"propertySchema.required\" [description]=\"localize(propertySchema.description)\"\r\n        [readonly]=\"!!evalExpression(propertySchema.readonlyCondition)\"\r\n        [disabled]=\"!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))\"\r\n        [placeholder]=\"localize(propertySchema.options && propertySchema.options.placeholder)\"\r\n        (customValidate)=\"resolveFunction(propertySchema.customValidation)($event)\"\r\n        (customAsyncValidate)=\"propertySchema.customAsyncValidation && resolveFunction(propertySchema.customAsyncValidation.handler)($event)\"\r\n        [pendingMessage]=\"propertySchema.customAsyncValidation && localize(propertySchema.customAsyncValidation.pendingMessage)\"\r\n        [customAsyncValidateDisabled]=\"shouldCustomAsyncValidationBeDisabled()\"\r\n        [customAsyncValidateDebounceTime]=\"propertySchema.customAsyncValidation && +propertySchema.customAsyncValidation.handler\"\r\n        ></sme-form-field>\r\n    `\r\n})\r\n/* eslint-enable max-len */\r\nexport class TextFormFieldLoaderComponent extends SimplePropertySchemaFieldLoaderComponent {\r\n}\r\n\r\n/**\r\n * Accessible text field implementation\r\n */\r\n@SmeSchemaProperty({\r\n    type: SchemaPrimitiveType.String,\r\n    format: 'textbox',\r\n    isDefaultFormat: true,\r\n    description: 'A single line text box binding to string data.',\r\n    loaderComponent: TextFormFieldLoaderComponent,\r\n    optionProperties: [\r\n        {\r\n            type: SchemaPrimitiveType.Boolean,\r\n            format: 'checkbox',\r\n            name: 'multipleline',\r\n            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.MultipleLine.Title'\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.String,\r\n            format: 'resource-string-picker',\r\n            name: 'placeholder',\r\n            defaultValue: '',\r\n            label: 'actual_string:Placeholder'\r\n        }\r\n    ]\r\n})\r\n@Component({\r\n    selector: 'sme-form-field[type=\"text\"]',\r\n    templateUrl: './text-form-field.component.html'\r\n})\r\nexport class TextFormFieldComponent extends SmeInternalFormFieldComponent<any> implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'TextFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * Indicates that multiple lines should be accepted\r\n     */\r\n    @Input()\r\n    public multiline: boolean;\r\n\r\n    /**\r\n     * Indicates the number of visible rows for multiline text fields\r\n     * Not applicable to single line text\r\n     */\r\n    @Input()\r\n    public rows: number;\r\n\r\n    /**\r\n     * Indicates the number of visible columns for multiline text fields\r\n     * Not applicable to single line text\r\n     */\r\n    @Input()\r\n    public columns: number;\r\n\r\n    /**\r\n     * Indicates that the field action should be shown\r\n     */\r\n    @Input()\r\n    public showFieldAction: boolean;\r\n\r\n    /**\r\n     * The text for the field action\r\n     */\r\n    @Input()\r\n    public fieldActionText: string;\r\n\r\n    /**\r\n     * The icon class for the field action\r\n     */\r\n    @Input()\r\n    public fieldActionIconClass: string;\r\n\r\n    /**\r\n     * The aria label for the action button\r\n     */\r\n    @Input()\r\n    public fieldActionAriaLabel?: string;\r\n\r\n    /**\r\n     * The output for when the field action is activated\r\n     */\r\n    @Output()\r\n    public fieldAction: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n    /**\r\n     * Initializes a new instance of the TextFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n        // set initial values for field\r\n        this.multiline = false;\r\n        this.columns = 40;\r\n        this.rows = 5;\r\n        this.fieldActionIconClass = 'sme-icon-add';\r\n\r\n    }\r\n    /**\r\n     * Executes the field action\r\n     */\r\n    public onFieldAction() {\r\n        this.fieldAction.emit(this.value);\r\n    }\r\n\r\n    /**\r\n     * Executes the field action\r\n     */\r\n    public onEnterKey(event: Event) {\r\n        if (this.showFieldAction) {\r\n            this.onFieldAction();\r\n            event.stopPropagation();\r\n            event.preventDefault();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: ''\r\n        };\r\n    }\r\n}\r\n","import { Component, Injector, ViewChild } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { DateLike } from '@microsoft/windows-admin-center-sdk/core/base/date/date-like';\r\nimport { DateTime } from '@microsoft/windows-admin-center-sdk/core/base/date/date-time';\r\nimport { DateType } from '@microsoft/windows-admin-center-sdk/core/base/date/date-type';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { Globalization } from '@microsoft/windows-admin-center-sdk/core/data/globalization';\r\nimport { DropdownComponent } from '../../../dropdown/dropdown.component';\r\nimport { ValidationAlerts } from '../../validation-alert/validation-alert';\r\nimport { ClockFormFieldComponent } from '../clock/clock-form-field.component';\r\nimport { DateLikeFormFieldComponent } from '../date-like/date-like-form-field.component';\r\n\r\n/**\r\n * Time Form Field Component\r\n */\r\n@Component({\r\n    selector: 'sme-form-field[type=\"time\"]',\r\n    templateUrl: './time-form-field.component.html'\r\n})\r\nexport class TimeFormFieldComponent extends DateLikeFormFieldComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'TimeFormFieldComponent';\r\n    }\r\n\r\n    @ViewChild('dropDown')\r\n    public dropDown: DropdownComponent;\r\n\r\n    @ViewChild('clock')\r\n    public clock: ClockFormFieldComponent;\r\n\r\n    /**\r\n     * The current editable display value of this field\r\n     */\r\n    public displayValue: string;\r\n\r\n    /**\r\n     * indicates if the display value is valid\r\n     */\r\n    public displayValueValid: boolean;\r\n\r\n    /**\r\n     * indicates if a value change is expected\r\n     */\r\n    public expectValueChange: boolean;\r\n\r\n    /**\r\n     * Initializes a new instance of the @see TimeFormFieldComponent class.\r\n     * @param injector The angular injection service. required by @see SmeInjectableBase decorator in the @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.displayValueValid = false;\r\n    }\r\n\r\n    /**\r\n     * Handles toggled state changes\r\n     */\r\n    public onDropdownToggled(expanded: boolean) {\r\n        if (expanded) {\r\n            this.clock.focus();\r\n        } else {\r\n            this.focus();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Handles keydown events on the dropdown toggle\r\n     */\r\n    public onToggleKeydown(event: KeyboardEvent) {\r\n        switch (event.keyCode) {\r\n            case KeyCode.Enter: {\r\n                if (this.dropDown.isOpen) {\r\n                    this.clock.onAcceptClicked(event);\r\n                    return;\r\n                }\r\n                this.dropDown.onToggleClick(event, true);\r\n                event.stopImmediatePropagation();\r\n                event.stopPropagation();\r\n                event.preventDefault();\r\n                return;\r\n            }\r\n            case KeyCode.DownArrow: {\r\n                if (event.altKey) {\r\n                    this.dropDown.onToggleClick(event, true);\r\n                }\r\n                return;\r\n            }\r\n            default: { return; }\r\n        }\r\n    }\r\n\r\n    public onDateInputKeydown(event: KeyboardEvent) {\r\n        switch (event.keyCode) {\r\n            case KeyCode.Enter: {\r\n                this.commitDisplayValue();\r\n\r\n                // handle all keys\r\n                event.stopImmediatePropagation();\r\n                event.stopPropagation();\r\n                event.preventDefault();\r\n                return;\r\n            }\r\n            default: { return; }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Handles value changes from the date input\r\n     */\r\n    public commitDisplayValue() {\r\n        const displayDate = new Date(`01/01/2000 ${this.displayValue}`);\r\n        this.displayValueValid = !isNaN(displayDate.getTime());\r\n        this.expectValueChange = true;\r\n        this.markAsDirty();\r\n        if (this.displayValueValid) {\r\n            const valueAsDate = DateType.convert(this.value, DateType.Date);\r\n            DateTime.copyTime(displayDate, valueAsDate);\r\n            const dateType = MsftSme.isNullOrUndefined(this.dateType) ? this.detectedDateType : this.dateType;\r\n            this.value = DateType.convert(valueAsDate, dateType);\r\n        } else {\r\n            this.ngModel.control.updateValueAndValidity();\r\n        }\r\n\r\n    }\r\n\r\n    /**\r\n     * Occurs every time the value of the control changes, in the UI or programmatically.\r\n     * @param value the value of the form control\r\n     */\r\n    protected onValueChanged(value: DateLike) {\r\n        super.onValueChanged(value);\r\n        if (!this.expectValueChange) {\r\n            if (!value) {\r\n                this.displayValue = '';\r\n            } else {\r\n                const valueAsDate = DateType.convert(value, DateType.Date);\r\n                this.displayValue = valueAsDate.toLocaleTimeString(Globalization.localeId);\r\n            }\r\n            if (!this.displayValueValid) {\r\n                this.displayValueValid = true;\r\n                this.ngModel.control.updateValueAndValidity();\r\n            }\r\n        }\r\n        this.expectValueChange = false;\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control\r\n     * @param c The form control attached to this instance\r\n     */\r\n    protected validate(c: FormControl): ValidationAlerts {\r\n        if (!this.displayValueValid) {\r\n            return {\r\n                invalidDisplayValue: {\r\n                    message: this.strings.MsftSmeShell.Angular.Form.Time.InvalidTime\r\n                }\r\n            };\r\n        }\r\n        return this.validateAsTime(c) || super.validate(c);\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: '',\r\n            dropDownContent: ''\r\n        };\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <div class=\"sme-arrange-stack-h sme-focus-zone sme-form-field-editor\">\r\n    <sme-dropdown #dropDown [autoToggle]=\"false\" class=\"sme-combobox\" [disabled]=\"disabled\" [autoWidth]=\"true\"\r\n      (toggled)=\"onDropdownToggled($event)\">\r\n      <div #dropdownHeader class=\"sme-combobox-header sme-dropdown-toggle\" (keydown)=\"onToggleKeydown($event)\">\r\n        <input #textInput type=\"text\" role=\"combobox\" [attr.aria-required]='required' [(ngModel)]=\"displayValue\"\r\n          (ngModelChange)=\"commitDisplayValue()\" [attr.aria-controls]=\"idBag.dropDownContent\" [attr.aria-label]=\"label\"\r\n          [attr.disabled]=\"loadingOrDisabled ? true : null\" \r\n          [attr.aria-owns]=\"idBag.dropDownContent\" [attr.aria-expanded]=\"dropDown.isOpen\"\r\n          [attr.aria-autocomplete]=\"'none'\" spellcheck=\"false\" autocapitalize=\"off\" autocomplete=\"off\"\r\n          [placeholder]=\"placeholder\" />\r\n        <button #dropDownButton type=\"button\" [attr.disabled]=\"loadingOrDisabled ? true : null\" tabindex=\"-1\"\r\n          role=\"presentation\" aria-hidden=\"true\" [attr.aria-pressed]=\"dropDown.isOpen\"\r\n          [class.sme-toggled]=\"dropDown.isOpen\" class=\"sme-button-trigger sme-button-auto-width\"\r\n          (click)=\"dropDown.onToggleClick($event, true)\">\r\n          <span class=\"sme-icon sme-icon-recent\"></span>\r\n        </button>\r\n      </div>\r\n      <div class=\"sme-dropdown-content sme-dropdown-interaction-enabled\" [id]=\"idBag.dropDownContent\">\r\n        <sme-form-field #clock type=\"clock\" [(ngModel)]=\"value\" [required]=\"true\" [hideHeader]=\"true\"\r\n          (accepted)=\"dropDown.onToggleClick($event, true)\" (cleared)=\"dropDown.onToggleClick($event, true)\"\r\n          [showConfirmation]=\"true\" orientation=\"vertical\">\r\n        </sme-form-field>\r\n      </div>\r\n    </sme-dropdown>\r\n  </div>\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import { Component, HostBinding, Injector, Input, OnInit } from '@angular/core';\r\nimport { SmeSchemaProperty } from '../../../schema/schema-decorator';\r\nimport { SimplePropertySchemaFieldLoaderComponent } from '../../../schema/schema-field-host.component';\r\nimport { SchemaPrimitiveType } from '../../../schema/schema-models';\r\nimport { SmeInternalFormFieldComponent } from '../form-field.component';\r\n\r\n/* eslint-disable max-len */\r\n@Component({\r\n    template: `\r\n    <sme-form-field #field type=\"toggle-switch\" [(ngModel)]=\"data\" [name]=\"propertySchema.name\" [label]=\"localize(propertySchema.label)\"\r\n        [description]=\"localize(propertySchema.description)\" [required]=\"propertySchema.required\"\r\n        [readonly]=\"!!evalExpression(propertySchema.readonlyCondition)\"\r\n        [disabled]=\"!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))\"\r\n        (customValidate)=\"resolveFunction(propertySchema.customValidation)($event)\"\r\n        (customAsyncValidate)=\"propertySchema.customAsyncValidation && resolveFunction(propertySchema.customAsyncValidation.handler)($event)\"\r\n        [pendingMessage]=\"propertySchema.customAsyncValidation && localize(propertySchema.customAsyncValidation.pendingMessage)\"\r\n        [customAsyncValidateDisabled]=\"shouldCustomAsyncValidationBeDisabled()\"\r\n        [customAsyncValidateDebounceTime]=\"propertySchema.customAsyncValidation && +propertySchema.customAsyncValidation.handler\"\r\n        ></sme-form-field>\r\n    `\r\n})\r\n/* eslint-enable max-len */\r\nexport class ToggleSwitchFormFieldLoaderComponent extends SimplePropertySchemaFieldLoaderComponent {\r\n}\r\n\r\n@SmeSchemaProperty({\r\n    type: SchemaPrimitiveType.Boolean,\r\n    format: 'toggle-switch',\r\n    description: 'A toggle switch control binding to boolean data.',\r\n    loaderComponent: ToggleSwitchFormFieldLoaderComponent\r\n})\r\n@Component({\r\n    selector: 'sme-form-field[type=\"toggle-switch\"]',\r\n    templateUrl: './toggle-switch-form-field.component.html'\r\n})\r\nexport class ToggleSwitchFormFieldComponent extends SmeInternalFormFieldComponent<boolean> implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'ToggleSwitchFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * Indicates the default value for immediateValidation.\r\n     * This is meant to be overridden by derived classes\r\n     */\r\n    protected get defaultImmediateValidation(): boolean {\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * The label to show when the switch is on\r\n     */\r\n    @Input()\r\n    public labelOn: string;\r\n\r\n    /**\r\n     * The label to show when the switch is off\r\n     */\r\n    @Input()\r\n    public labelOff: string;\r\n\r\n    /**\r\n     * The aria label for this instance\r\n     */\r\n    @HostBinding('attr.aria-label')\r\n    public get ariaLabel(): string {\r\n        return this.getMergedDescriptionLabel();\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the ToggleSwitchFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n        this.labelOn = this.strings.MsftSmeShell.Angular.Common.on;\r\n        this.labelOff = this.strings.MsftSmeShell.Angular.Common.off;\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnInit interface\r\n     */\r\n    public ngOnInit() {\r\n        super.ngOnInit();\r\n        this.setAttribute('role', 'group');\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     * When called in the @see BaseComponent super class initialization, These classes will be automatically assigned to the host element.\r\n     */\r\n    protected getInitialHostClasses(): string[] {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-form-field-auto-height'\r\n        ]);\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            stateLabelSpan: '',\r\n            detailsSpan: ''\r\n        };\r\n    }\r\n\r\n    /**\r\n     * We only truly disable the switch if not in accessibility mode\r\n     */\r\n    public getDisabledStatus(): boolean {\r\n        return this.loadingOrDisabled && !MsftSme.self().Resources.accessibilityMode;\r\n    }\r\n\r\n    /**\r\n     * We disabled event propagation for disabled toggle switch\r\n     */\r\n    public toggleChanged(event) {\r\n        if (this.loadingOrDisabled) {\r\n            event.preventDefault();\r\n            event.stopPropagation();\r\n            event.stopImmediatePropagation();\r\n        }\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <div class=\"sme-toggle-switch sme-form-field-editor\">\r\n    <label class=\"sme-arrange-stack-h\">\r\n      <input role=\"switch\" type=\"checkbox\" [attr.aria-label]=\"ariaLabel\" [attr.aria-disabled]=\"loadingOrDisabled\"\r\n             [attr.aria-checked]=\"value\" [(ngModel)]=\"value\" [disabled]=\"getDisabledStatus()\" (keyup.Space)=\"toggleChanged($event)\">\r\n      <span class=\"sme-position-flex-auto\" [id]=\"idBag.stateLabelSpan\">{{value ? labelOn : labelOff}}</span>\r\n    </label>\r\n  </div>\r\n\r\n  <sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n</sme-form-field-layout>\r\n","import { Directive, forwardRef, Input, StaticProvider } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Strings } from '../../../generated/strings';\r\nimport { ValidationAlerts } from '../validation-alert/validation-alert';\r\nimport { FormValidatorBase } from './base-validator';\r\nimport { SME_VALIDATORS } from './sme-validator';\r\n\r\n/**\r\n * Provider for the FormFieldValidatorDirective directive\r\n */\r\n export const INPUT_VALIDATOR: StaticProvider = {\r\n    provide: SME_VALIDATORS,\r\n    useExisting: forwardRef(() => InputValidatorDirective),\r\n    multi: true\r\n};\r\n\r\n/**\r\n * A Directive that marks a field as invalid if it contains standard invalid characters. Primarily used to prevent\r\n * html tags for security reasons.\r\n */\r\n @Directive({\r\n    // eslint-disable-next-line max-len\r\n    selector: 'sme-form-field[smeInputValidation][formControlName],sme-form-field[smeInputValidation][formControl],sme-form-field[smeInputValidation][ngModel]',\r\n    providers: [INPUT_VALIDATOR]\r\n})\r\nexport class InputValidatorDirective extends FormValidatorBase {\r\n    /**\r\n     * Regex to detect invalid characters. Does not allow:\r\n     *  - backslash (\\)\r\n     *  - slash mark (/)\r\n     *  - asterisk (*)\r\n     *  - question mark (?)\r\n     *  - single quotation mark (')\r\n     *  - double quotation mark (\")\r\n     *  - less than sign (<)\r\n     *  - greater than sign (>)\r\n     *  - vertical bar (|)\r\n     */\r\n    private readonly defaultInvalidCharacters: RegExp = new RegExp(/(\\\\|\\/|\\*|\\?|'|\"|<|>|\\|)/, 'i');\r\n\r\n    @Input()\r\n    public invalidCharacters: RegExp = this.defaultInvalidCharacters;\r\n\r\n    @Input()\r\n    public errorMessage: string;\r\n\r\n    /**\r\n     * Instantiates a new instance of InputValidatorDirective\r\n     */\r\n    constructor() {\r\n        super();\r\n    }\r\n\r\n   /**\r\n     * Implementation of Validator interface.\r\n     * Validates the value of the field attached to this control to be a valid input\r\n     * @param c The FormControl attached to this element\r\n     * @return null when valid, otherwise returns a validation object\r\n     */\r\n    public validate(c: FormControl): ValidationAlerts | null {\r\n        const alerts: ValidationAlerts = super.validate(c) || {};\r\n        // Convert to string - if value is an array, will be auto-converted, but array characters ('[', ',', ']') are valid, so won't\r\n        // impact the validation.\r\n        const value: string = c.value;\r\n\r\n        // dont check for required here. The field could be optional in some forms\r\n        // if there is no value, then just skip checking\r\n        if (!value) {\r\n            return this.alertsOrNull(alerts);\r\n        }\r\n\r\n        const strings = <Strings>MsftSme.self().Resources.strings;\r\n\r\n        if (this.invalidCharacters.test(value)) {\r\n            if (!this.errorMessage) {\r\n                // change default error message depending on whether regex was provided to validate against\r\n                this.errorMessage = this.defaultInvalidCharacters.source === this.invalidCharacters.source ?\r\n                    strings.MsftSmeShell.Angular.Common.Form.Validation.Input.DefaultRegex.invalidCharacters\r\n                    : strings.MsftSmeShell.Angular.Common.Form.Validation.Input.UnknownRegex.invalidCharacters;\r\n            }\r\n\r\n            alerts['smeInput.noInvalidCharacters'] = {\r\n                message: this.errorMessage\r\n            };\r\n        }\r\n\r\n        return this.alertsOrNull(alerts);\r\n    }\r\n}\r\n","import { Directive, forwardRef, Input, StaticProvider } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Strings } from '../../../generated/strings';\r\nimport { ValidationAlerts, ValidationAlertSeverity } from '../validation-alert/validation-alert';\r\nimport { FormValidatorBase } from './base-validator';\r\nimport { SME_VALIDATORS } from './sme-validator';\r\n\r\n/**\r\n * Provider for the FormFieldValidatorDirective directive\r\n */\r\nexport const MACHINE_NAME_VALIDATOR: StaticProvider = {\r\n    provide: SME_VALIDATORS,\r\n    useExisting: forwardRef(() => MachineNameValidatorDirective),\r\n    multi: true\r\n};\r\n\r\n/**\r\n * A Directive that marks a field as invalid if it does not conform to machine naming standards\r\n */\r\n@Directive({\r\n    // eslint-disable-next-line max-len\r\n    selector: 'sme-form-field[smeMachineName][formControlName],sme-form-field[smeMachineName][formControl],sme-form-field[smeMachineName][ngModel]',\r\n    providers: [MACHINE_NAME_VALIDATOR]\r\n})\r\nexport class MachineNameValidatorDirective extends FormValidatorBase {\r\n    /**\r\n     * Regex to detect invalid characters. Does not allow:\r\n     *  - backslash (\\)\r\n     *  - slash mark (/)\r\n     *  - asterisk (*)\r\n     *  - question mark (?)\r\n     *  - single quotation mark (')\r\n     *  - double quotation mark (\")\r\n     *  - less than sign (<)\r\n     *  - greater than sign (>)\r\n     *  - vertical bar (|)\r\n     */\r\n    private invalidCharacters: RegExp;\r\n\r\n    /**\r\n     * Regex to detect invalid characters. Does not allow:\r\n     *  - everything from @see invalidCharacters\r\n     *  - space ( )\r\n     */\r\n    private invalidCharactersWithSpace: RegExp;\r\n\r\n    /**\r\n     * Indicates that the value should be trimmed before validation. Only use when trimming the value before using it.\r\n     */\r\n    @Input('smeMachineNameTrim')\r\n    public get smeMachineNameTrim(): boolean { return this.internalSmeMachineNameTrim; }\r\n    public set smeMachineNameTrim(value: boolean) {\r\n        // warn if value is undefined or truthy and not 'false' string\r\n        this.internalSmeMachineNameTrim = MsftSme.isUndefined(value) || (!!value && `${value}` !== 'false');\r\n        this.revalidate();\r\n    }\r\n\r\n    /**\r\n     * Internal placeholder for smeMachineNameTrim\r\n     */\r\n    private internalSmeMachineNameTrim = true;\r\n\r\n    /**\r\n     * Instantiates a new instance of MachineNameValidatorDirective\r\n     */\r\n    constructor() {\r\n        super();\r\n        this.invalidCharacters = new RegExp(/(\\\\|\\/|\\*|\\?|'|\"|<|>|\\|)/, 'i');\r\n        this.invalidCharactersWithSpace = new RegExp(/(\\\\|\\/|\\*|\\?|'|\"|<|>|\\||\\s)/, 'i');\r\n    }\r\n\r\n    /**\r\n     * Implementation of Validator interface.\r\n     * Validates the value of the field attached to this control to be a valid machine name\r\n     * @param c The FormControl attached to this element\r\n     * @return null when valid, otherwise returns a validation object\r\n     */\r\n    public validate(c: FormControl): ValidationAlerts | null {\r\n        const alerts: ValidationAlerts = super.validate(c) || {};\r\n        let value: string = c.value;\r\n\r\n        // dont check for required here. The field could be optional in some forms\r\n        // if there is no value, then just skip checking\r\n        if (!value) {\r\n            return this.alertsOrNull(alerts);\r\n        }\r\n        const strings = <Strings>MsftSme.self().Resources.strings;\r\n        if (this.smeMachineNameTrim) {\r\n            value = value.trim();\r\n            alerts['smeMachineName.trimWarning'] = {\r\n                valid: true,\r\n                message: strings.MsftSmeShell.Angular.Common.Form.Validation.MachineName.whitespaceWillBeTrimmed,\r\n                severity: ValidationAlertSeverity.Warning\r\n            };\r\n            if (this.invalidCharacters.test(c.value)) {\r\n                alerts['smeMachineName.noInvalidCharacters'] = {\r\n                    message: strings.MsftSmeShell.Angular.Common.Form.Validation.MachineName.invalidCharacters\r\n                };\r\n            }\r\n        } else if (this.invalidCharactersWithSpace.test(c.value)) {\r\n            alerts['smeMachineName.noInvalidCharacters'] = {\r\n                message: strings.MsftSmeShell.Angular.Common.Form.Validation.MachineName.invalidCharactersWithSpace\r\n            };\r\n        }\r\n\r\n        if (value.startsWith('.')) {\r\n            alerts['smeMachineName.noStartWithPeriod'] = {\r\n                message: strings.MsftSmeShell.Angular.Common.Form.Validation.MachineName.noStartWithPeriod\r\n            };\r\n        }\r\n\r\n        return this.alertsOrNull(alerts);\r\n    }\r\n}\r\n","import { Directive, forwardRef, Input, OnDestroy, StaticProvider } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { Strings } from '../../../generated/strings';\r\nimport { SmeInternalFormFieldComponent } from '../form-field/form-field.component';\r\nimport { ValidationAlerts } from '../validation-alert/validation-alert';\r\nimport { FormValidatorBase } from './base-validator';\r\nimport { SME_VALIDATORS } from './sme-validator';\r\n\r\n/**\r\n * Provider for the FormFieldValidatorDirective directive\r\n */\r\nexport const MATCH_FIELD_VALIDATOR: StaticProvider = {\r\n    provide: SME_VALIDATORS,\r\n    useExisting: forwardRef(() => MatchFieldValidatorDirective),\r\n    multi: true\r\n};\r\n\r\n/**\r\n * A Directive that marks a field as invalid if it does not exactly match the value of another field\r\n */\r\n@Directive({\r\n    // eslint-disable-next-line max-len\r\n    selector: 'sme-form-field[smeMatchField][formControlName],sme-form-field[smeMatchField][formControl],sme-form-field[smeMatchField][ngModel]',\r\n    providers: [MATCH_FIELD_VALIDATOR]\r\n})\r\nexport class MatchFieldValidatorDirective extends FormValidatorBase implements OnDestroy {\r\n\r\n    /**\r\n     * Indicates that field that this field should exactly match\r\n     */\r\n    @Input('smeMatchField')\r\n    public get smeMatchField(): SmeInternalFormFieldComponent<any> { return this.internalSmeMatchField; }\r\n    public set smeMatchField(value: SmeInternalFormFieldComponent<any>) {\r\n        if (this.matchFieldValueSubscription && !this.matchFieldValueSubscription.closed) {\r\n            this.matchFieldValueSubscription.unsubscribe();\r\n            this.matchFieldValueSubscription = null;\r\n        }\r\n        this.internalSmeMatchField = value;\r\n        if (value && value.ngModel) {\r\n            this.matchFieldValueSubscription = value.ngModel.valueChanges.subscribe(() => this.revalidate());\r\n        }\r\n        this.revalidate();\r\n    }\r\n\r\n    private matchFieldValueSubscription: Subscription;\r\n\r\n    /**\r\n     * Internal placeholder for smeMatchField\r\n     */\r\n    private internalSmeMatchField = null;\r\n\r\n    /**\r\n     * Instantiates a new instance of MachineNameValidatorDirective\r\n     */\r\n    constructor() { super(); }\r\n\r\n    /**\r\n     * Angular Destruction handler\r\n     */\r\n    public ngOnDestroy() {\r\n        if (this.matchFieldValueSubscription && !this.matchFieldValueSubscription.closed) {\r\n            this.matchFieldValueSubscription.unsubscribe();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Implementation of Validator interface.\r\n     * Validates the value of the field attached to this control matches the value of @see smeMatchField exactly\r\n     * @param c The FormControl attached to this element\r\n     * @return null when valid, otherwise returns a validation object\r\n     */\r\n    public validate(c: FormControl): ValidationAlerts | null {\r\n        const alerts: ValidationAlerts = super.validate(c) || {};\r\n        if (!MsftSme.isNullOrUndefined(this.smeMatchField) && c.value !== this.smeMatchField.value) {\r\n            const strings = <Strings>MsftSme.self().Resources.strings;\r\n            const fieldName = this.smeMatchField.label || this.smeMatchField.ngModel.name;\r\n            alerts['smeMatchField.noMatch'] = {\r\n                message: strings.MsftSmeShell.Angular.Common.Form.Validation.MatchField.noMatch.format(fieldName)\r\n            };\r\n        }\r\n        return this.alertsOrNull(alerts);\r\n    }\r\n}\r\n","import { Directive, forwardRef, Input, StaticProvider } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ValidationAlerts } from '../validation-alert/validation-alert';\r\nimport { FormValidatorBase } from './base-validator';\r\nimport { SME_VALIDATORS } from './sme-validator';\r\n\r\n/**\r\n * Provider for the FormFieldValidatorDirective directive\r\n */\r\nexport const REQUIRED_TRIMMED_VALIDATOR: StaticProvider = {\r\n    provide: SME_VALIDATORS,\r\n    useExisting: forwardRef(() => RequiredTrimmedValidatorDirective),\r\n    multi: true\r\n};\r\n\r\n/**\r\n * A Directive that marks a field as invalid if it is null or empty after being trimmed\r\n */\r\n@Directive({\r\n    // eslint-disable-next-line max-len\r\n    selector: 'sme-form-field[smeRequiredTrimmed][formControlName],sme-form-field[smeRequiredTrimmed][formControl],sme-form-field[smeRequiredTrimmed][ngModel]',\r\n    providers: [REQUIRED_TRIMMED_VALIDATOR]\r\n})\r\nexport class RequiredTrimmedValidatorDirective extends FormValidatorBase {\r\n\r\n    /**\r\n     * Indicates that this validator should be run\r\n     */\r\n    @Input('smeRequiredTrimmed')\r\n    public get requiredTrimmed(): boolean { return this.internalRequiredTrimmed; }\r\n    public set requiredTrimmed(value: boolean) {\r\n        // warn if value is undefined or truthy and not 'false' string\r\n        this.internalRequiredTrimmed = MsftSme.isUndefined(value) || (!!value && `${value}` !== 'false');\r\n        this.revalidate();\r\n    }\r\n\r\n    /**\r\n     * Internal placeholder for requiredTrimmed\r\n     */\r\n    private internalRequiredTrimmed = true;\r\n\r\n    /**\r\n     * Instantiates a new instance of RequiredTrimmedValidatorDirective\r\n     */\r\n    constructor() {\r\n        super();\r\n    }\r\n\r\n    /**\r\n     * Implementation of Validator interface.\r\n     * Validates that the control contains a value other than null or whitespace\r\n     * @param c The FormControl attached to this element\r\n     * @return null when valid, otherwise returns a validation object\r\n     */\r\n    public validate(c: FormControl): ValidationAlerts | null {\r\n        if (this.requiredTrimmed && MsftSme.isNullOrWhiteSpace(`${c.value}`)) {\r\n            // return an object similar to angular alert object.\r\n            return { required: true };\r\n        }\r\n        return null;\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { AutofocusModule } from '../../directives/autofocus/autofocus.module';\r\nimport { DisabledModule } from '../../directives/disabled/disabled.module';\r\nimport { MarkdownModule } from '../../directives/markdown/markdown.module';\r\nimport { TelemetryDirectiveModule } from '../../directives/telemetry/telemetry-directives.module';\r\nimport { SmeTemplateOutletModule } from '../../directives/template-outlet/template-outlet.module';\r\nimport { TileDirectivesModule } from '../../directives/tile/tile-directives.module';\r\nimport { ByteUnitConverterPipeModule } from '../../pipes/byte-unit-converter-pipe.module';\r\nimport { FormatPipeModule } from '../../pipes/format-pipe.module';\r\nimport { AccordionModule } from '../accordion/accordion.module';\r\nimport { ActionsModule } from '../actions/actions.module';\r\nimport { DropZoneModule } from '../drop-zone/drop-zone.module';\r\nimport { DropdownModule } from '../dropdown/dropdown.module';\r\nimport { IconModule } from '../icon/icon.module';\r\nimport { LayoutModule } from '../layout/layout.module';\r\nimport { LoadingWheelModule } from '../loading-wheel/loading-wheel.module';\r\nimport { SchemaFieldHostModule } from '../schema/schema-field-host.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { FieldsetDirective } from './fieldset/fieldset.directive';\r\nimport { ArrayFormFieldAccessibilityManagerService } from './form-field/array/array-form-field-accessibility-manager.service';\r\nimport { ArrayFormFieldComponent, ArrayFormFieldLoaderComponent } from './form-field/array/array-form-field.component';\r\nimport { CalendarFormFieldComponent } from './form-field/calendar/calendar-form-field.component';\r\nimport { CheckboxFormFieldComponent, CheckboxFormFieldLoaderComponent } from './form-field/checkbox/checkbox-form-field.component';\r\nimport { ChecklistFormFieldComponent, ChecklistFormFieldLoaderComponent } from './form-field/checklist/checklist-form-field.component';\r\nimport { ClockFormFieldComponent } from './form-field/clock/clock-form-field.component';\r\nimport { CodeFormFieldComponent, CodeFormFieldLoaderComponent } from './form-field/code/code-form-field.component';\r\nimport { ComboboxFormFieldComponent, ComboboxFormFieldLoaderComponent } from './form-field/combobox/combobox-form-field.component';\r\nimport { SelectFormFieldDirective } from './form-field/combobox/select-form-field.directive';\r\nimport { DateFormFieldComponent } from './form-field/date/date-form-field.component';\r\nimport { DateTimeFormFieldComponent } from './form-field/datetime/datetime-form-field.component';\r\nimport { DateTimeRangeFormFieldComponent } from './form-field/datetime-range/datetime-range-form-field.component';\r\nimport { DateTimeRangeOptionComponent } from './form-field/datetime-range/datetime-range-option.component';\r\nimport {\r\n    FileFormFieldComponent,\r\n    FileFormFieldLoaderComponent\r\n} from './form-field/file/file-form-field.component';\r\nimport { FormFieldAccessibilityManagerBaseService } from './form-field/form-field-accessibility-manager-base.service';\r\nimport { FormFieldAccessorDirective } from './form-field/form-field-accessor.directive';\r\nimport { FormFieldAsyncValidatorDirective } from './form-field/form-field-async-validator.directive';\r\nimport { FormFieldTemplateDirective } from './form-field/form-field-template.directive';\r\nimport { FormFieldValidatorDirective } from './form-field/form-field-validator.directive';\r\nimport { FormFieldIsolatorComponent } from './form-field/isolator/isolator.component';\r\nimport { JsonFormFieldComponent, JsonFormFieldLoaderComponent } from './form-field/json/json-form-field.component';\r\nimport { ListFormFieldAccessibilityManagerService } from './form-field/list/list-form-field-accessibility-manager.service';\r\nimport { ListFormFieldComponent } from './form-field/list/list-form-field.component';\r\nimport {\r\n    NumberFormFieldComponent,\r\n    NumberFormFieldLoaderComponent\r\n} from './form-field/number/number-form-field.component';\r\nimport { ObjectDefaultFormFieldLoaderComponent } from './form-field/object/object-default-form-field-loader.component';\r\nimport { FormFieldOptionComponent } from './form-field/options-form-field/form-field-option.component';\r\nimport { FormFieldOptionSubFormTemplateLoaderComponent } from './form-field/options-form-field/option-subform-template-loader.component';\r\nimport { OrderedListFormFieldAccessibilityManagerService } from './form-field/ordered-list/ordered-list-form-field-accessibility-manager.service';\r\nimport {\r\n    OrderedListFormFieldComponent,\r\n    OrderedListFormFieldLoaderComponent\r\n} from './form-field/ordered-list/ordered-list-form-field.component';\r\nimport {\r\n    PasswordFormFieldComponent,\r\n    PasswordFormFieldLoaderComponent\r\n} from './form-field/password/password-form-field.component';\r\nimport {\r\n    RadioGroupFormFieldComponent,\r\n    RadioGroupFormFieldLoaderComponent\r\n} from './form-field/radio-group/classic/radio-group-form-field.component';\r\nimport { RatingRadioGroupFormFieldComponent } from './form-field/radio-group/rating/rating-radio-group-form-field.component';\r\nimport { TileRadioGroupFormFieldComponent } from './form-field/radio-group/tile/tile-radio-group-form-field.component';\r\nimport { ReadonlyFormFieldComponent } from './form-field/readonly/readonly-form-field.component';\r\nimport { SearchFormFieldComponent } from './form-field/search/search-form-field.component';\r\nimport { SliderFormFieldComponent, SliderFormFieldLoaderComponent } from './form-field/slider/slider-form-field.component';\r\nimport { TagsFormFieldComponent, TagsFormFieldLoaderComponent } from './form-field/tags/tags-form-field.component';\r\nimport { TextFormFieldComponent, TextFormFieldLoaderComponent } from './form-field/text/text-form-field.component';\r\nimport { TimeFormFieldComponent } from './form-field/time/time-form-field.component';\r\nimport {\r\n    ToggleSwitchFormFieldComponent,\r\n    ToggleSwitchFormFieldLoaderComponent\r\n} from './form-field/toggle-switch/toggle-switch-form-field.component';\r\nimport { FormFieldLayoutComponent } from './form-field-layout/form-field-layout.component';\r\nimport { ValidationAlertComponent } from './validation-alert/validation-alert.component';\r\nimport { CapsLockValidatorDirective } from './validators/capslock.directive';\r\nimport { InputValidatorDirective } from './validators/input-validator.directive';\r\nimport { MachineNameValidatorDirective } from './validators/machine-name.directive';\r\nimport { MatchFieldValidatorDirective } from './validators/match.directive';\r\nimport { RequiredTrimmedValidatorDirective } from './validators/required-trimmed.directive';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        // Form Field Components\r\n        ArrayFormFieldComponent,\r\n        ArrayFormFieldLoaderComponent,\r\n        CalendarFormFieldComponent,\r\n        ClockFormFieldComponent,\r\n        CheckboxFormFieldComponent,\r\n        CheckboxFormFieldLoaderComponent,\r\n        ChecklistFormFieldComponent,\r\n        ChecklistFormFieldLoaderComponent,\r\n        CodeFormFieldComponent,\r\n        CodeFormFieldLoaderComponent,\r\n        ComboboxFormFieldComponent,\r\n        ComboboxFormFieldLoaderComponent,\r\n        DateFormFieldComponent,\r\n        DateTimeFormFieldComponent,\r\n        DateTimeRangeFormFieldComponent,\r\n        DateTimeRangeOptionComponent,\r\n        FileFormFieldComponent,\r\n        FileFormFieldLoaderComponent,\r\n        JsonFormFieldComponent,\r\n        JsonFormFieldLoaderComponent,\r\n        ListFormFieldComponent,\r\n        NumberFormFieldComponent,\r\n        NumberFormFieldLoaderComponent,\r\n        ObjectDefaultFormFieldLoaderComponent,\r\n        OrderedListFormFieldComponent,\r\n        OrderedListFormFieldLoaderComponent,\r\n        PasswordFormFieldComponent,\r\n        PasswordFormFieldLoaderComponent,\r\n        RadioGroupFormFieldComponent,\r\n        RadioGroupFormFieldLoaderComponent,\r\n        ReadonlyFormFieldComponent,\r\n        RatingRadioGroupFormFieldComponent,\r\n        SearchFormFieldComponent,\r\n        SelectFormFieldDirective,\r\n        SliderFormFieldComponent,\r\n        SliderFormFieldLoaderComponent,\r\n        TileRadioGroupFormFieldComponent,\r\n        TimeFormFieldComponent,\r\n        TagsFormFieldComponent,\r\n        TagsFormFieldLoaderComponent,\r\n        TextFormFieldComponent,\r\n        TextFormFieldLoaderComponent,\r\n        ToggleSwitchFormFieldComponent,\r\n        ToggleSwitchFormFieldLoaderComponent,\r\n\r\n        // Validators\r\n        CapsLockValidatorDirective,\r\n        InputValidatorDirective,\r\n        MachineNameValidatorDirective,\r\n        MatchFieldValidatorDirective,\r\n        RequiredTrimmedValidatorDirective,\r\n\r\n        // Supporting Components\r\n        FormFieldOptionSubFormTemplateLoaderComponent,\r\n        FormFieldOptionComponent,\r\n        ValidationAlertComponent,\r\n        FormFieldAccessorDirective,\r\n        FormFieldValidatorDirective,\r\n        FormFieldAsyncValidatorDirective,\r\n        FormFieldTemplateDirective,\r\n        FieldsetDirective,\r\n        FormFieldIsolatorComponent,\r\n        FormFieldLayoutComponent\r\n    ],\r\n    exports: [\r\n        // Form Field Components\r\n        ArrayFormFieldComponent,\r\n        ArrayFormFieldLoaderComponent,\r\n        CalendarFormFieldComponent,\r\n        ClockFormFieldComponent,\r\n        CheckboxFormFieldComponent,\r\n        CheckboxFormFieldLoaderComponent,\r\n        ChecklistFormFieldComponent,\r\n        ChecklistFormFieldLoaderComponent,\r\n        CodeFormFieldComponent,\r\n        CodeFormFieldLoaderComponent,\r\n        ComboboxFormFieldComponent,\r\n        ComboboxFormFieldLoaderComponent,\r\n        DateFormFieldComponent,\r\n        DateTimeFormFieldComponent,\r\n        DateTimeRangeFormFieldComponent,\r\n        DateTimeRangeOptionComponent,\r\n        FileFormFieldComponent,\r\n        FileFormFieldLoaderComponent,\r\n        JsonFormFieldComponent,\r\n        JsonFormFieldLoaderComponent,\r\n        ListFormFieldComponent,\r\n        NumberFormFieldComponent,\r\n        NumberFormFieldLoaderComponent,\r\n        ObjectDefaultFormFieldLoaderComponent,\r\n        OrderedListFormFieldComponent,\r\n        OrderedListFormFieldLoaderComponent,\r\n        PasswordFormFieldComponent,\r\n        PasswordFormFieldLoaderComponent,\r\n        RadioGroupFormFieldComponent,\r\n        RadioGroupFormFieldLoaderComponent,\r\n        ReadonlyFormFieldComponent,\r\n        RatingRadioGroupFormFieldComponent,\r\n        SearchFormFieldComponent,\r\n        SelectFormFieldDirective,\r\n        SliderFormFieldComponent,\r\n        SliderFormFieldLoaderComponent,\r\n        TileRadioGroupFormFieldComponent,\r\n        TimeFormFieldComponent,\r\n        TagsFormFieldComponent,\r\n        TagsFormFieldLoaderComponent,\r\n        TextFormFieldComponent,\r\n        TextFormFieldLoaderComponent,\r\n        ToggleSwitchFormFieldComponent,\r\n        ToggleSwitchFormFieldLoaderComponent,\r\n\r\n        // Validators\r\n        CapsLockValidatorDirective,\r\n        InputValidatorDirective,\r\n        MachineNameValidatorDirective,\r\n        MatchFieldValidatorDirective,\r\n        RequiredTrimmedValidatorDirective,\r\n\r\n        // Supporting Components\r\n        FormFieldOptionSubFormTemplateLoaderComponent,\r\n        FormFieldOptionComponent,\r\n        ValidationAlertComponent,\r\n        FormFieldAccessorDirective,\r\n        FormFieldValidatorDirective,\r\n        FormFieldAsyncValidatorDirective,\r\n        FormFieldTemplateDirective,\r\n        FieldsetDirective,\r\n        FormFieldIsolatorComponent,\r\n        FormFieldLayoutComponent\r\n    ],\r\n    imports: [\r\n        AccordionModule,\r\n        ActionsModule,\r\n        AutofocusModule,\r\n        CommonModule,\r\n        FormsModule,\r\n        ReactiveFormsModule,\r\n        ByteUnitConverterPipeModule,\r\n        FormatPipeModule,\r\n        DropdownModule,\r\n        IconModule,\r\n        LayoutModule,\r\n        SchemaFieldHostModule,\r\n        SmeTemplateOutletModule,\r\n        DisabledModule,\r\n        DropZoneModule,\r\n        LoadingWheelModule,\r\n        MarkdownModule,\r\n        TileDirectivesModule,\r\n        TooltipModule,\r\n        TelemetryDirectiveModule\r\n    ],\r\n    providers: [\r\n        // TODO: each form field should have its own accessibility manager service\r\n        ArrayFormFieldAccessibilityManagerService,\r\n        ListFormFieldAccessibilityManagerService,\r\n        OrderedListFormFieldAccessibilityManagerService,\r\n        FormFieldAccessibilityManagerBaseService\r\n    ]\r\n})\r\nexport class SmeFormsModule { }\r\n","import { Component, EventEmitter, HostBinding, HostListener, Injector, Input, OnInit, Output } from '@angular/core';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\n\r\n/**\r\n * Resizer component\r\n */\r\n@Component({\r\n    selector: 'sme-resizer',\r\n    template: ''\r\n})\r\nexport class ResizerComponent extends CoreBaseComponent implements OnInit {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'ResizerComponent';\r\n    }\r\n\r\n    private static keyboardDelta = 20;\r\n\r\n    private isResizing = false;\r\n    private resizerHostElement: Element;\r\n    private resizerHostBodyElement: HTMLElement;\r\n    private resizerIndicatorElement: HTMLElement;\r\n    private offsetX: number;\r\n    private offsetY: number;\r\n    private originalX: number;\r\n    private originalY: number;\r\n    private _orientation = 'bottom';\r\n\r\n    private onStartingResizeEventHandler: (event: MouseEvent) => void;\r\n    private onResizingEventHandler: (event: MouseEvent) => void;\r\n    private onFinishingResizeEventHandler: (event: MouseEvent) => void;\r\n\r\n    /**\r\n     * It's used to locate the resizing host which defines the area where the resizer can move around.\r\n     */\r\n    @Input()\r\n    public resizerHostSelector: string;\r\n\r\n    /**\r\n     * It indicates whether to show the half transparent cover ont he resizer host.\r\n     * In some case (like Data Table column resizer), the cover is not needed since data table would handle the UI of resizing by itself.\r\n     */\r\n    @Input()\r\n    public showResizerCover = true;\r\n\r\n    /**\r\n     * It indicates whether to let the screen reader to read this resizer control.\r\n     * In some case (like Data Table column resizer), we don't want the screen reader to read it as part of the column header.\r\n     */\r\n    @Input()\r\n    public visibleToScreenReader = true;\r\n\r\n    /**\r\n     * It defines the orientation of the element which holds the resizer in the resizing layout.\r\n     */\r\n    @Input()\r\n    public set orientation(newOrientation: string) {\r\n        if (this._orientation !== newOrientation) {\r\n            this._orientation = newOrientation;\r\n\r\n            if (this.resizerHostBodyElement?.parentNode) {\r\n                this.resizerHostBodyElement.parentNode.removeChild(this.resizerHostBodyElement);\r\n            }\r\n\r\n            if (this.resizerIndicatorElement?.parentNode) {\r\n                this.resizerIndicatorElement.parentNode.removeChild(this.resizerIndicatorElement);\r\n            }\r\n            // To support orientation changes by window size changes\r\n            // Reset all the parameters and re-build the resizer elements\r\n            setTimeout(() => {\r\n                this.resizerHostElement = undefined;\r\n                this.resizerHostBodyElement = undefined;\r\n                this.resizerIndicatorElement = undefined;\r\n                this.offsetX = undefined;\r\n                this.offsetY = undefined;\r\n                this.originalX = undefined;\r\n                this.originalY = undefined;\r\n                this.ngOnInit();\r\n            });\r\n        }\r\n    }\r\n\r\n    public get orientation(): string {\r\n        return this._orientation;\r\n    }\r\n\r\n    /**\r\n     * Determines if the resizer is accessible to the screen readers\r\n     */\r\n    @Input()\r\n    public focusable = false;\r\n\r\n    /**\r\n     * It's fired then the resizing is finished.\r\n     */\r\n    @Output()\r\n    public resized = new EventEmitter<{ x: number, y: number }>();\r\n\r\n    /**\r\n     * It's fired then the resizing is happening.\r\n     */\r\n    @Output()\r\n    public resizing = new EventEmitter<{ x: number, y: number }>();\r\n\r\n    /**\r\n     * Indicates that the resizer should be aligned to the top\r\n     */\r\n    @HostBinding('class.sme-position-top-none')\r\n    public get alignTop() {\r\n        return this.isOriented('bottom', 'left', 'right');\r\n    }\r\n\r\n    /**\r\n     * Indicates that the resizer should be aligned to the bottom\r\n     */\r\n    @HostBinding('class.sme-position-bottom-none')\r\n    public get alignBottom() {\r\n        return this.isOriented('top', 'left', 'right');\r\n    }\r\n\r\n    /**\r\n     * Indicates that the resizer should be aligned to the left\r\n     */\r\n    @HostBinding('class.sme-position-left-none')\r\n    public get alignLeft() {\r\n        return this.isOriented('top', 'bottom', 'right');\r\n    }\r\n\r\n    /**\r\n     * Indicates that the resizer should be aligned to the right\r\n     */\r\n    @HostBinding('class.sme-position-right-none')\r\n    public get alignRight() {\r\n        return this.isOriented('top', 'bottom', 'left');\r\n    }\r\n\r\n    /**\r\n     * Indicates that the resizer moves vertically\r\n     */\r\n    @HostBinding('class.sme-height-xxs')\r\n    public get isVertical() {\r\n        return this.isOriented('top', 'bottom');\r\n    }\r\n\r\n    /**\r\n     * Indicates that the resizer moves horizontally\r\n     */\r\n    @HostBinding('class.sme-width-xxs')\r\n    public get isHorizontal() {\r\n        return this.isOriented('left', 'right');\r\n    }\r\n\r\n    /**\r\n     * Describes the orientation for aria users.\r\n     */\r\n    @HostBinding('attr.aria-orientation')\r\n    public get ariaOrientation() {\r\n        return this.isVertical ? 'vertical' : 'horizontal';\r\n    }\r\n\r\n    /**\r\n     * Defines the cursor style the resizer should have\r\n     */\r\n    @HostBinding('style.cursor')\r\n    public get cursor() {\r\n        switch (this.orientation) {\r\n            case 'top':\r\n                return 'n-resize';\r\n            case 'bottom':\r\n                return 's-resize';\r\n            case 'left':\r\n                return 'e-resize';\r\n            case 'right':\r\n                return 'w-resize';\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the @see ResizerComponent class.\r\n     * @param injector The angular injection service. required by @see SmeInjectableBase decorator in the @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Angular lifecycle hook.\r\n     */\r\n    public ngOnInit(): void {\r\n        super.ngOnInit();\r\n\r\n        // This is a special implementation for Microsoft Edge.\r\n        // In Microsoft Edge, if the resizer div is transparent and it's overlay on the scrollbar,\r\n        // the mouse events will be messed up.\r\n        // So we need to apply a very transparent but not 100% transparent color to it.\r\n        // It won't impact the look and feel, when the browser renders this special color,\r\n        // basically no color will be actually rendered.\r\n        this.hostElement.nativeElement.style.background = 'rgba(255,255,255,0.003)';\r\n\r\n        if (this.visibleToScreenReader) {\r\n            this.setAttribute('role', 'separator');\r\n            this.setAttribute('aria-label', this.strings.MsftSmeShell.Angular.Resizer.Splitter);\r\n        }\r\n\r\n        this.setAttribute('tabindex', this.focusable ? '0' : '-1');\r\n        this.setAttribute('aria-hidden', this.focusable ? 'false' : 'true');\r\n\r\n        if (!this.resizerHostSelector) {\r\n            this.log('resizerHostSelector is not set.', LogLevel.Warning);\r\n        } else {\r\n            let currentParentElement = (<HTMLElement>this.hostElement.nativeElement).parentElement;\r\n            while (!this.resizerHostElement && currentParentElement) {\r\n                // Deal with nested html tag, for instance, sme-split-view contains of nested sme-split-view\r\n                // Without this if logic, the resizer will be attached to the wrong location because of the querySelector function.\r\n                if (currentParentElement.tagName.toLowerCase() === this.resizerHostSelector.toLowerCase()) {\r\n                    this.resizerHostElement = currentParentElement;\r\n                    break;\r\n                } else {\r\n                    this.resizerHostElement = currentParentElement.querySelector(this.resizerHostSelector);\r\n                    currentParentElement = currentParentElement.parentElement;\r\n                }\r\n            }\r\n\r\n            this.resizerHostBodyElement = document.createElement('DIV');\r\n            this.resizerHostBodyElement.setAttribute('role', 'presentation');\r\n            this.resizerHostBodyElement.classList.add('sme-resizer-host-body');\r\n            this.resizerHostBodyElement.classList.add('sme-layout-absolute');\r\n            this.resizerHostBodyElement.classList.add('sme-position-inset-none');\r\n            this.resizerHostBodyElement.classList.add('sme-layer-above');\r\n            this.resizerHostBodyElement.classList.add('sme-layout-none');\r\n\r\n            this.resizerIndicatorElement = document.createElement('DIV');\r\n            this.resizerIndicatorElement.classList.add('sme-resizer-indicator');\r\n            this.resizerIndicatorElement.classList.add('sme-layout-none');\r\n            this.resizerIndicatorElement.classList.add('sme-layout-absolute');\r\n            this.resizerIndicatorElement.classList.add('sme-layer-over');\r\n\r\n            if (this.showResizerCover) {\r\n                this.resizerHostBodyElement.classList.add('sme-background-color-base');\r\n                this.resizerHostBodyElement.style.opacity = '0.5';\r\n                this.resizerIndicatorElement.classList.add('sme-background-color-base-80');\r\n            }\r\n\r\n            switch (this.orientation) {\r\n                case 'top':\r\n                    this.resizerHostBodyElement.style.cursor = 'n-resize';\r\n                    this.resizerIndicatorElement.classList.add('sme-position-stretch-h');\r\n                    this.resizerIndicatorElement.classList.add('sme-height-xxs');\r\n                    break;\r\n                case 'bottom':\r\n                    this.resizerHostBodyElement.style.cursor = 's-resize';\r\n                    this.resizerIndicatorElement.classList.add('sme-position-stretch-h');\r\n                    this.resizerIndicatorElement.classList.add('sme-height-xxs');\r\n                    break;\r\n                case 'left':\r\n                    this.resizerHostBodyElement.style.cursor = 'e-resize';\r\n                    this.resizerIndicatorElement.classList.add('sme-width-xxs');\r\n                    this.resizerIndicatorElement.classList.add('sme-position-stretch-v');\r\n                    break;\r\n                case 'right':\r\n                    this.resizerHostBodyElement.style.cursor = 'w-resize';\r\n                    this.resizerIndicatorElement.classList.add('sme-width-xxs');\r\n                    this.resizerIndicatorElement.classList.add('sme-position-stretch-v');\r\n                    break;\r\n            }\r\n\r\n            let foundExistingResizerHostBody = false;\r\n            if (this.resizerHostElement && this.resizerHostElement.childElementCount) {\r\n                for (let i = 0; i < this.resizerHostElement.children.length; i++) {\r\n                    if (this.resizerHostElement.children[i].classList.contains('sme-resizer-host-body')) {\r\n                        // remove the resizer host element if it doesn't contain resizer indicator and re-create.\r\n                        // this issue mostly due to component not initialized before the resizer was initialized.\r\n                        if (!this.resizerHostBodyElement.querySelector('.sme-resizer-indicator')) {\r\n                            this.resizerHostElement.children[i].parentNode.removeChild(this.resizerHostElement.children[i]);\r\n                        } else {\r\n                            foundExistingResizerHostBody = true;\r\n                            this.resizerHostBodyElement = <HTMLElement>this.resizerHostElement.children[i];\r\n                            this.resizerIndicatorElement = this.resizerHostBodyElement.querySelector('.sme-resizer-indicator');\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (!foundExistingResizerHostBody) {\r\n                this.resizerHostElement.appendChild(this.resizerHostBodyElement);\r\n                this.resizerHostBodyElement.appendChild(this.resizerIndicatorElement);\r\n            }\r\n\r\n            this.onStartingResizeEventHandler = this.onStartingResizing.bind(this);\r\n            this.onResizingEventHandler = this.onResizing.bind(this);\r\n            this.onFinishingResizeEventHandler = this.onFinishingResizing.bind(this);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It handles the event when mouse down happens on the resizer.\r\n     */\r\n    @HostListener('mousedown')\r\n    public onResizeElementMouseDown(): void {\r\n        this.isResizing = true;\r\n        document.body.addEventListener('mousedown', this.onStartingResizeEventHandler);\r\n        document.body.addEventListener('mousemove', this.onResizingEventHandler);\r\n        document.body.addEventListener('mouseup', this.onFinishingResizeEventHandler);\r\n    }\r\n\r\n    @HostListener('keydown', ['$event'])\r\n    public onResizeElementKeyDown($event): void {\r\n        if (this.isHorizontal) {\r\n            switch ($event.keyCode) {\r\n                case KeyCode.LeftArrow:\r\n                    this.resized.emit({\r\n                        x: -ResizerComponent.keyboardDelta,\r\n                        y: 0\r\n                    });\r\n                    break;\r\n                case KeyCode.RightArrow:\r\n                    this.resized.emit({\r\n                        x: ResizerComponent.keyboardDelta,\r\n                        y: 0\r\n                    });\r\n                    break;\r\n            }\r\n        } else if (this.isVertical) {\r\n            switch ($event.keyCode) {\r\n                case KeyCode.UpArrow:\r\n                    this.resized.emit({\r\n                        x: 0,\r\n                        y: -ResizerComponent.keyboardDelta\r\n                    });\r\n                    break;\r\n                case KeyCode.DownArrow:\r\n                    this.resized.emit({\r\n                        x: 0,\r\n                        y: ResizerComponent.keyboardDelta\r\n                    });\r\n                    break;\r\n            }\r\n        }\r\n    }\r\n\r\n    private startResize(offsetX: number, offsetY: number): void {\r\n        this.isResizing = true;\r\n        this.offsetX = offsetX;\r\n        this.offsetY = offsetY;\r\n        document.body.style.userSelect = 'none';\r\n        this.resizerHostBodyElement.classList.remove('sme-layout-none');\r\n        this.resizerIndicatorElement.classList.remove('sme-layout-none');\r\n\r\n        const resizerHostRect = this.resizerHostBodyElement.getBoundingClientRect();\r\n        const resizerElementRect = this.hostElement.nativeElement.getBoundingClientRect();\r\n\r\n        this.originalX = resizerElementRect.left - resizerHostRect.left;\r\n        this.originalY = resizerElementRect.top - resizerHostRect.top;\r\n    }\r\n\r\n    private onStartingResizing(event: MouseEvent): void {\r\n        if (this.isResizing) {\r\n            this.startResize(event.clientX, event.clientY);\r\n            this.onResizing(event);\r\n            event.preventDefault();\r\n        }\r\n    }\r\n\r\n    private onResizing(event: MouseEvent): void {\r\n        if (this.isResizing) {\r\n            const resizerHostRect = this.resizerHostBodyElement.getBoundingClientRect();\r\n            let indicatorX: number;\r\n            let indicatorY: number;\r\n\r\n            let newX: number;\r\n            let newY: number;\r\n            switch (this.orientation) {\r\n                case 'top':\r\n                    newY = this.hostElement.nativeElement.offsetTop + event.clientY - this.offsetY;\r\n                    this.offsetY = event.clientY;\r\n                    this.hostElement.nativeElement.style.top = newY + 'px';\r\n                    indicatorY = resizerHostRect.top === 0 ?\r\n                        this.hostElement.nativeElement.parentElement.offsetTop + newY :\r\n                        this.hostElement.nativeElement.parentElement.getBoundingClientRect().top - resizerHostRect.top + newY;\r\n                    this.resizerIndicatorElement.style.top = indicatorY + 'px';\r\n                    break;\r\n                case 'bottom':\r\n                    newY = this.hostElement.nativeElement.offsetTop + event.clientY - this.offsetY;\r\n                    this.offsetY = event.clientY;\r\n                    this.hostElement.nativeElement.style.top = newY + 'px';\r\n                    indicatorY = this.originalY + newY;\r\n                    this.resizerIndicatorElement.style.top = indicatorY + 'px';\r\n                    break;\r\n                case 'left':\r\n                    newX = this.hostElement.nativeElement.offsetLeft + event.clientX - this.offsetX;\r\n                    this.offsetX = event.clientX;\r\n                    this.hostElement.nativeElement.style.left = newX + 'px';\r\n                    indicatorX = resizerHostRect.left === 0 ?\r\n                        this.hostElement.nativeElement.parentElement.offsetLeft + newX :\r\n                        this.hostElement.nativeElement.parentElement.getBoundingClientRect().left - resizerHostRect.left + newX;\r\n                    this.resizerIndicatorElement.style.left = indicatorX + 'px';\r\n                    break;\r\n                case 'right':\r\n                    newX = this.hostElement.nativeElement.offsetLeft + event.clientX - this.offsetX;\r\n                    this.offsetX = event.clientX;\r\n                    this.hostElement.nativeElement.style.left = newX + 'px';\r\n                    indicatorX = this.originalX + newX;\r\n                    this.resizerIndicatorElement.style.left = indicatorX + 'px';\r\n                    break;\r\n            }\r\n\r\n            this.resizing.emit({ x: indicatorX, y: indicatorY });\r\n        }\r\n    }\r\n\r\n    private onFinishingResizing(): void {\r\n        if (this.isResizing) {\r\n            document.body.removeEventListener('mousedown', this.onStartingResizeEventHandler);\r\n            document.body.removeEventListener('mousemove', this.onResizingEventHandler);\r\n            document.body.removeEventListener('mouseup', this.onFinishingResizeEventHandler);\r\n\r\n            this.isResizing = false;\r\n\r\n            let deltaX: number;\r\n            let deltaY: number;\r\n\r\n            const resizerHostRect = this.resizerHostBodyElement.getBoundingClientRect();\r\n            const resizerElementRect = this.hostElement.nativeElement.getBoundingClientRect();\r\n\r\n            const newX = resizerElementRect.left - resizerHostRect.left;\r\n            const newY = resizerElementRect.top - resizerHostRect.top;\r\n\r\n            switch (this.orientation) {\r\n                case 'left':\r\n                    deltaX = newX - this.originalX;\r\n                    deltaY = 0;\r\n                    break;\r\n                case 'right':\r\n                    deltaX = newX - this.originalX;\r\n                    deltaY = 0;\r\n                    break;\r\n                case 'top':\r\n                    deltaX = 0;\r\n                    deltaY = newY - this.originalY;\r\n                    break;\r\n                case 'bottom':\r\n                    deltaX = 0;\r\n                    deltaY = newY - this.originalY;\r\n                    break;\r\n            }\r\n\r\n            this.resized.emit({\r\n                x: deltaX,\r\n                y: deltaY\r\n            });\r\n\r\n            this.resizerHostBodyElement.classList.add('sme-layout-none');\r\n            document.body.style.userSelect = 'auto';\r\n            this.resizerHostBodyElement.classList.add('sme-layout-none');\r\n            this.resizerIndicatorElement.classList.add('sme-layout-none');\r\n\r\n            this.hostElement.nativeElement.style.left = '';\r\n            this.hostElement.nativeElement.style.top = '';\r\n        }\r\n    }\r\n\r\n    private isOriented(...orientations: string[]) {\r\n        return orientations.some(o => o === this.orientation);\r\n    }\r\n\r\n    protected getInitialHostClasses(): string[] {\r\n        return super.getInitialHostClasses()\r\n            .concat([\r\n                'sme-layout-absolute',\r\n                'sme-layer-over'\r\n            ]);\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ResizerComponent } from './resizer.component';\r\n\r\n@NgModule({\r\n    declarations: [ResizerComponent],\r\n    exports: [ResizerComponent],\r\n    imports: [CommonModule]\r\n})\r\nexport class ResizerModule {}\r\n","import { DateRange } from '@microsoft/windows-admin-center-sdk/core/base/date/date-range';\r\n\r\nexport interface QueryDataItem {\r\n    column: QueryDataItemColumn;\r\n    operand: string;\r\n    value: QueryDataItemValue;\r\n    isEditing: boolean;\r\n    irremovable?: boolean;\r\n    invalid?: boolean;\r\n    disabled?: boolean;\r\n    icon?: string;\r\n}\r\n\r\nexport interface QueryDataItemColumn {\r\n    label: string;\r\n    value: string;\r\n    uneditable?: boolean;\r\n}\r\n\r\nexport interface QueryDataItemValue {\r\n    value: any;\r\n    type: QueryDataItemValueType;\r\n    temporaryValue?: any;\r\n    options?: object;\r\n    isValueUnset?: boolean;\r\n    searchable?: boolean;\r\n    tooltip?: string;\r\n    customDisplayLabel?: string;\r\n}\r\n\r\nexport enum QueryDataItemValueType {\r\n    SingleDropdown = 'SingleDropdown',\r\n    TextInput = 'TextInput',\r\n    MultiSelectDropdown = 'MultiSelectDropdown',\r\n    TimespanDropdown = 'TimespanDropdown',\r\n    Disabled = 'Disabled'\r\n}\r\n\r\nexport interface QueryData {\r\n    contents: QueryDataItem[];\r\n}\r\n\r\nexport interface QueryDataItemPresetOptions {\r\n    contents: QueryDataItemPresetOption[];\r\n}\r\n\r\nexport interface QueryDataItemPresetOption {\r\n    fieldName: string;\r\n    fieldValue: QueryDataItemPresetOptionContent[];\r\n}\r\n\r\nexport interface QueryDataItemPresetOptionContent {\r\n    label: string;\r\n    value: DateRange;\r\n}\r\n\r\nexport enum QueryDataOperand {\r\n    Eq = '=',\r\n    Gt = '>',\r\n    Lt = '<',\r\n    Nq = '!=',\r\n    Dropdowns = ':'\r\n}\r\n\r\nexport enum ApplyMode {\r\n    'Lazy' = 0,\r\n    'Active' = 1\r\n}\r\n\r\nexport class QueryDataItemPresetGenerator {\r\n    public itemGenerator(\r\n        column: QueryDataItemColumn,\r\n        operand: QueryDataOperand,\r\n        value: QueryDataItemValue,\r\n        irremovable?: boolean,\r\n        disabled?: boolean,\r\n        icon?: string): QueryDataItem {\r\n        const res: QueryDataItem = {\r\n            column: column,\r\n            operand: operand,\r\n            value: value,\r\n            irremovable: irremovable ? irremovable : false,\r\n            isEditing: false,\r\n            disabled: disabled ? disabled : false\r\n        };\r\n        if (icon) {\r\n            res.icon = icon;\r\n        }\r\n\r\n        // validating the preset pills\r\n        res.invalid = false;\r\n        if (res.value) {\r\n            if (res.value.type === QueryDataItemValueType.TextInput || res.value.type === QueryDataItemValueType.SingleDropdown) {\r\n                if (res.value.value === '') {\r\n                    res.invalid = true;\r\n                    res.value.isValueUnset = true;\r\n                }\r\n            } else if (res.value.type === QueryDataItemValueType.MultiSelectDropdown) {\r\n                if (!res.value.value || !res.value.value.length) {\r\n                    res.invalid = true;\r\n                    res.value.isValueUnset = true;\r\n                }\r\n            } else if (res.value.type === QueryDataItemValueType.TimespanDropdown) {\r\n                if (!res.value.value) {\r\n                    res.invalid = true;\r\n                    res.value.isValueUnset = true;\r\n                }\r\n            }\r\n        }\r\n        return res;\r\n    }\r\n\r\n    public editingItem(input: QueryDataItem) {\r\n        input.isEditing = true;\r\n        return input;\r\n    }\r\n\r\n    public columnGenerator(\r\n        label: string,\r\n        value: string,\r\n        uneditable?: boolean): QueryDataItemColumn {\r\n        return {\r\n            label: label,\r\n            value: value,\r\n            uneditable: uneditable ? uneditable : false\r\n        };\r\n    }\r\n\r\n    public valueGenerator(\r\n        value: any,\r\n        type?: QueryDataItemValueType,\r\n        searchable = true,\r\n        temporaryValue?: any\r\n    ): QueryDataItemValue {\r\n        const res: QueryDataItemValue = {\r\n            value: value ? value : '',\r\n            type: type || QueryDataItemValueType.TextInput,\r\n            temporaryValue: temporaryValue ? temporaryValue : '',\r\n            isValueUnset: true\r\n        };\r\n\r\n        if (type === QueryDataItemValueType.MultiSelectDropdown || type === QueryDataItemValueType.SingleDropdown) {\r\n            res.options = [];\r\n        }\r\n\r\n        if (type === QueryDataItemValueType.TextInput || type === QueryDataItemValueType.SingleDropdown\r\n            || type === QueryDataItemValueType.MultiSelectDropdown) {\r\n            if (!value || !value.length) {\r\n                if (temporaryValue && temporaryValue.length) {\r\n                    res.value = temporaryValue;\r\n                } else {\r\n                    res.isValueUnset = true;\r\n                    if (typeof value === 'string') {\r\n                        res.value = res.temporaryValue = '';\r\n                    } else {\r\n                        res.value = res.temporaryValue = [];\r\n                    }\r\n                }\r\n            } else {\r\n                if (!temporaryValue || !temporaryValue.length) {\r\n                    res.temporaryValue = value;\r\n                } else {\r\n                    if (value !== temporaryValue) {\r\n                        res.temporaryValue = res.value;\r\n                    }\r\n                }\r\n                res.isValueUnset = false;\r\n            }\r\n        } else if (type === QueryDataItemValueType.TimespanDropdown) {\r\n            const presetLabel = value && value.label ? value.label : 'TODO: Localization Custom';\r\n            res.customDisplayLabel = presetLabel;\r\n            try {\r\n                value = value.value;\r\n                if (!value || !value.isValid()) {\r\n                    if (temporaryValue) {\r\n                        res.value = temporaryValue;\r\n                    } else {\r\n                        res.isValueUnset = true;\r\n                        res.value = res.temporaryValue = new DateRange();\r\n                    }\r\n                } else {\r\n                    res.temporaryValue = value;\r\n                    res.value = value;\r\n                    res.isValueUnset = false;\r\n                }\r\n                // Initialize the default value display on the query editor for timespan dropdown\r\n                res.tooltip = res.value.toString();\r\n            } catch (e) { }\r\n        } else {\r\n            // It deals with when 'type' is not specified\r\n            if (!MsftSme.isNullOrWhiteSpace(value) &&\r\n                !(typeof res.value === 'string' && MsftSme.isNullOrWhiteSpace(res.value)) ||\r\n                !(typeof res.value === 'object' && !res.value.length)) {\r\n                res.isValueUnset = false;\r\n            }\r\n        }\r\n\r\n        if (typeof value === 'object' && type !== QueryDataItemValueType.TimespanDropdown) {\r\n            res.type = QueryDataItemValueType.MultiSelectDropdown;\r\n        }\r\n\r\n        if (searchable && (res.type === QueryDataItemValueType.MultiSelectDropdown || res.type === QueryDataItemValueType.SingleDropdown)) {\r\n            res.searchable = true;\r\n        } else if (!searchable || res.type === QueryDataItemValueType.TextInput || res.type === QueryDataItemValueType.TimespanDropdown) {\r\n            res.searchable = false;\r\n        }\r\n\r\n        return res;\r\n    }\r\n}\r\n","export type DataTableDataItem = any;\r\n\r\nexport interface TreeNodeDataItem {\r\n    label?: string;\r\n    data: any;\r\n    children?: TreeNodeDataItem[];\r\n    expanded?: boolean;\r\n    parent?: TreeNodeDataItem;\r\n    type?: string;\r\n    isLeaf?: boolean;\r\n    canExpand?: boolean;\r\n    selected?: boolean;\r\n    isBusy?: boolean;\r\n}\r\n\r\nexport interface EditableDataItem {\r\n    id: string;\r\n    content: DataTableDataItem;\r\n    validationAlerts: { [field: string]: any };\r\n    isNewRow: boolean;\r\n}\r\n\r\nexport interface EditableDataChangeSet {\r\n    addedItems: DataTableDataItem[];\r\n    updatedItems: DataTableDataItem[];\r\n    deletedItems: DataTableDataItem[];\r\n}\r\n\r\nexport interface DataTableRenderedItem {\r\n    data: DataTableDataItem;\r\n    type: DataTableRenderedItemType;\r\n    groupExpanded?: boolean;\r\n    depth?: number;\r\n    hasChildren?: boolean;\r\n    node?: TreeNodeDataItem;\r\n    setSize?: number;\r\n    positionInSet?: number;\r\n    index: number;\r\n    validationResult?: { field: string, alert: any }[];\r\n    hovered?: boolean;\r\n}\r\n\r\nexport enum DataTableRenderedItemType {\r\n    Normal = 0,\r\n    GroupHeader = 1,\r\n    GroupItem = 2,\r\n    TreeNode = 3\r\n}\r\n\r\nexport enum DataTableMultipleSelectMode {\r\n    Single = 'single',\r\n    Multiple = 'multiple'\r\n}\r\n\r\nexport interface DataTableLazyLoadEvent {\r\n    start: number;\r\n    length: number;\r\n    finishLoadingData: (data: DataTableDataItem[], allData: DataTableDataItem[]) => void;\r\n    sortOrder: number;\r\n    sortField: string;\r\n}\r\n\r\nexport interface DataTableCustomSortEvent {\r\n    direction: number;\r\n    field: string;\r\n    fallBackToDefaultSort: () => void;\r\n}\r\n\r\nexport enum DataTableSortMode {\r\n    None = 0,\r\n    Ascend = 1,\r\n    Descend = 2\r\n}\r\n\r\nexport enum DataTableMultipleSelectMode {\r\n    Normal = 0,\r\n    Pick = 1,\r\n    Sequential = 2\r\n}\r\n\r\nexport interface NodeNavigatingTask {\r\n    isRunning: boolean;\r\n    pathSections: string[];\r\n    currentPathSectionIndex: number;\r\n    currentRenderedItemIndex: number;\r\n    onTaskFinished: (found: boolean) => void;\r\n    currentPathSectionStartTime: Date;\r\n}\r\n","import { Component, ContentChild, Input, TemplateRef } from '@angular/core';\r\nimport { QueryDataItemPresetOption, QueryDataItemValueType } from '../query-editor/query-editor-contract';\r\nimport { DataTableSortMode } from './data-table-contract';\r\n\r\n/**\r\n * DataTableColumnComponent is template to define column structure for data table. All inputs are optional for minimally functional\r\n * column.\r\n *\r\n * If getTooltipHandler is specified, the data table will use the provided function. Otherwise the default tool tip handler relies on the\r\n * field being defined, else no tooltip will show.\r\n */\r\n@Component({\r\n    selector: 'sme-data-table-column:not([type]), sme-tree-table-column:not([type])',\r\n    template: ''\r\n})\r\nexport class DataTableColumnComponent {\r\n    /**\r\n     * The UTA ID used for ui-test-automation\r\n     */\r\n    @Input()\r\n    public utaId: string;\r\n\r\n    /**\r\n     * The field from the data table item.\r\n     */\r\n    @Input()\r\n    public field: string;\r\n\r\n    /**\r\n     * The rendering header for the data table column.\r\n     */\r\n    @Input()\r\n    public header: string;\r\n\r\n    /**\r\n     * It determines whether the column is sortable.\r\n     */\r\n    @Input()\r\n    public sortable: string;\r\n\r\n    /**\r\n     * The default width.\r\n     */\r\n    @Input()\r\n    public width = '176px';\r\n\r\n    /**\r\n     * It determines whether the table column is hidden.\r\n     */\r\n    @Input()\r\n    public hidden = false;\r\n\r\n    /**\r\n     * Handler for tooltip.\r\n     */\r\n    @Input()\r\n    public getTooltipHandler: (data: any, field?: string) => string;\r\n\r\n    /**\r\n     * The custom compare function used in sorting.\r\n     */\r\n    @Input()\r\n    public compareFunction: (valueA: any, valueB: any, field: string) => number;\r\n\r\n    /**\r\n     * The override function for filtering.\r\n     */\r\n    @Input()\r\n    public filterOverridingFunction: (fieldValue: any, entity: any) => string;\r\n\r\n    /**\r\n     * The download processor function to get custom text content.\r\n     * This work with where columns are defined by ng-template.\r\n     */\r\n    @Input()\r\n    public downloadContentProcessor:\r\n        (fieldValue: any, entity?: any, contextParameters?: any) => string = this.defaultDownloadContentProcessor;\r\n\r\n    /**\r\n     * The selection mode, could be single or multiple selection.\r\n     */\r\n    @Input()\r\n    public selectionMode: string;\r\n\r\n    /**\r\n     * The custom style class that can be passed to the column.\r\n     */\r\n    @Input()\r\n    public styleClass: string;\r\n\r\n    /**\r\n     * It determines whether the column is searchable.\r\n     */\r\n    @Input()\r\n    public searchable = true;\r\n\r\n    /**\r\n     * The query editor type.\r\n     */\r\n    @Input()\r\n    public queryEditorType: QueryDataItemValueType;\r\n\r\n    /**\r\n     * The preset query editor options.\r\n     */\r\n    @Input()\r\n    public queryEditorOptions: QueryDataItemPresetOption;\r\n\r\n    /**\r\n     * By design the operator '=' that defines 'contains'\r\n     * We should also supply a way for the user to do the actual 'equal'\r\n     * It only works with queryDataItemValueType.TextInput\r\n     */\r\n    @Input()\r\n    public queryEditorEqualIsContain = true;\r\n\r\n    /**\r\n     * The sort mode, ascend or descend.\r\n     */\r\n    public sortMode: DataTableSortMode = DataTableSortMode.None;\r\n\r\n    /**\r\n     * The percentage of width that this column can render.\r\n     */\r\n    public widthPercentage: number;\r\n\r\n    /**\r\n     * The dom width that the column can render.\r\n     */\r\n    public domWidth: number;\r\n\r\n    /**\r\n     * The template reference.\r\n     */\r\n    @ContentChild(TemplateRef)\r\n    public bodyTemplate: TemplateRef<any>;\r\n\r\n    /**\r\n     * The template reference for #read.\r\n     * This is to support the editable data table.\r\n     */\r\n    @ContentChild('read')\r\n    public bodyReadTemplate: TemplateRef<any>;\r\n\r\n    /**\r\n     * The template reference for #edit.\r\n     * This is to support the editable data table.\r\n     */\r\n    @ContentChild('edit')\r\n    public bodyEditTemplate: TemplateRef<any>;\r\n\r\n    /**\r\n     * The default function for the download content processor that is just to return the real data.\r\n     * @param fieldValue the value of the table cell.\r\n     * @returns the string representation of the table cell.\r\n     */\r\n    public defaultDownloadContentProcessor(fieldValue: string): string {\r\n        return String(fieldValue);\r\n    }\r\n\r\n    /**\r\n     * It determines whether default tooltip can be used.\r\n     * @returns true if default tooltip can be used.\r\n     */\r\n    public canUseDefaultTooltip(): boolean {\r\n        return !!this.field && !this.getTooltipHandler;\r\n    }\r\n\r\n    /**\r\n     * Default tooltip handler for sme-table-cell - if field exists, return that value in data for the tooltip\r\n     * @param data  The renderedItem data\r\n     * @param field The field to use for the renderedItem data\r\n     * @returns     Tooltip string\r\n     */\r\n    public getDefaultTooltipHandler(data: any, field: string): string {\r\n        // If data[field] is falsy (i.e. 0, [], etc.) but not null or undefined, stringify so it will show in tooltip\r\n        // otherwise it will display as empty tooltip\r\n        return (MsftSme.notNullOrUndefined(data[field]) && !data[field]) ? JSON.stringify(data[field]) : data[field];\r\n    }\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { CoreBaseComponent } from './base.component';\r\n\r\n/**\r\n * The SpacerBaseDirective is the base component that defines the spacing from internal component.\r\n * It creates a shared class that our UI control can extends from and take advantage on the spacing parameters.\r\n *\r\n * Make sure to add ?: boolean to each of the parameter so that if these parameters won't exist\r\n *     if we don't initialize from child components.\r\n */\r\n@Directive()\r\nexport class SpacerBaseDirective extends CoreBaseComponent {\r\n    /**\r\n     * The log source name for the component.\r\n     */\r\n    protected get logSourceName() {\r\n        return 'SpacerBaseDirective';\r\n    }\r\n\r\n    /**\r\n     * The input parameter for determining the component to render without left padding.\r\n     * Custom implementation on control is required.\r\n     */\r\n    @Input() public noLeftPadding?: boolean;\r\n\r\n    /**\r\n     * The input parameter for determining the component to render without padding.\r\n     * Custom implementation on control is required.\r\n     */\r\n    @Input() public noPadding?: boolean;\r\n\r\n    /**\r\n     * The input parameter for determining the component to render without margin.\r\n     * Custom implementation on control is required.\r\n     */\r\n    @Input() public noHorizontalMargin?: boolean;\r\n\r\n    /**\r\n     * The input parameter for determining the component to render without margin.\r\n     * Custom implementation on control is required.\r\n     * Migrated from the master-view control.\r\n     * @deprecated since '05/01/23' Use noHorizontalMargin instead.\r\n     */\r\n    @Input() public noSideMargin?: boolean;\r\n\r\n    /**\r\n     * The internal value for showLeftMargin.\r\n     */\r\n    private showLeftMarginInternal = true;\r\n\r\n    /**\r\n     * Setter showLeftMargin.\r\n     * The input parameter for determining the component to render left margin.\r\n     * Custom implementation on control is required.\r\n     * Migrated from the data-table control, the data-table control will still accept this input but actual implementation will be noLeftMargin.\r\n     * @deprecated since '05/01/23' Use noLeftMargin instead.\r\n     */\r\n    @Input()\r\n    public set showLeftMargin(input: boolean) {\r\n        this.showLeftMarginInternal = !!input;\r\n        this.noLeftMargin = !input;\r\n    }\r\n\r\n    /**\r\n     * Getter showLeftMargin.\r\n     */\r\n    public get showLeftMargin(): boolean {\r\n        return !!this. showLeftMarginInternal;\r\n    }\r\n\r\n    /**\r\n     * The input parameter for determining the component to render without left margin.\r\n     * Custom implementation on control is required.\r\n     * Migrated from the data-table control.\r\n     */\r\n    @Input() public noLeftMargin?: boolean;\r\n}\r\n","import { ElementRef } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { ElementFocusingEvent, KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { DataTableColumnComponent } from './data-table-column.component';\r\nimport {\r\n    DataTableRenderedItem,\r\n    DataTableRenderedItemType,\r\n    DataTableSortMode\r\n} from './data-table-contract';\r\n\r\n/**\r\n * Intention is to minimize data table component code size\r\n * Eventually will move all the data table related accessibility functions here\r\n */\r\nexport class DataTableAccessibilityManager {\r\n    constructor() { }\r\n\r\n    public onContentTableKeyUp(event: KeyboardEvent, contentElement: ElementRef, editable: boolean) {\r\n        // if editable datatable and focus is already inside of a form field,\r\n        // then do not clear text selection\r\n        const fieldControl = this.isSmeFormField(<HTMLElement>event.target);\r\n        if (fieldControl && editable) {\r\n            return;\r\n        }\r\n        switch (event.keyCode) {\r\n            case KeyCode.Ctrl:\r\n                if (event.altKey) {\r\n                    break;\r\n                }\r\n                this.stopKeyboardMultipleSelect(contentElement);\r\n                event.preventDefault();\r\n                event.stopPropagation();\r\n                break;\r\n            case KeyCode.Shift:\r\n                if (event.altKey) {\r\n                    break;\r\n                }\r\n                this.stopKeyboardMultipleSelect(contentElement);\r\n                event.preventDefault();\r\n                event.stopPropagation();\r\n                break;\r\n        }\r\n    }\r\n\r\n    private stopKeyboardMultipleSelect(contentElement: ElementRef): void {\r\n        contentElement.nativeElement.classList.remove('sme-user-select-none');\r\n        this.clearTextSelection();\r\n    }\r\n\r\n    public clearTextSelection(): void {\r\n        if (window.getSelection) {\r\n            if (window.getSelection().empty) {  // Chrome, Edge\r\n                window.getSelection().empty();\r\n            } else if (window.getSelection().removeAllRanges) {  // Firefox\r\n                window.getSelection().removeAllRanges();\r\n            }\r\n        }\r\n    }\r\n\r\n    public getRoleAttributeForTreeTableRow(renderedItem: DataTableRenderedItem, showHeader: boolean): string {\r\n        let result: string;\r\n        switch (renderedItem.type) {\r\n            case DataTableRenderedItemType.TreeNode:\r\n                result = 'treeitem';\r\n                break;\r\n            default:\r\n                result = 'presentation';\r\n                break;\r\n        }\r\n        return result;\r\n    }\r\n\r\n    public getAriaSortAttributeValue(column: DataTableColumnComponent): string {\r\n        let result = 'none';\r\n        switch (column.sortMode) {\r\n            case DataTableSortMode.Ascend:\r\n                result = 'ascending';\r\n                break;\r\n            case DataTableSortMode.Descend:\r\n                result = 'descending';\r\n                break;\r\n        }\r\n        return result;\r\n    }\r\n\r\n    /**\r\n     * It helps check if the html element is a data table checkbox\r\n     */\r\n    public isDataTableCheckBoxHTMLElement(targetElement: HTMLElement): boolean {\r\n        return targetElement && targetElement.tagName === 'INPUT'\r\n            && targetElement.parentElement.classList.contains('sme-table-checkbox');\r\n    }\r\n\r\n    /**\r\n     * This is the editable data table handler on tab is pressed handler\r\n     */\r\n    public editableDataTableOnContentTablePressedHandler(\r\n        event: KeyboardEvent,\r\n        targetElement: HTMLElement,\r\n        currentRow: HTMLElement,\r\n        lastFocusableShadowElement: ElementRef): boolean {\r\n\r\n        let res = false;\r\n\r\n        const fieldControl = this.isSmeFormField(targetElement);\r\n        const isCheckBoxControl = this.isDataTableCheckBoxHTMLElement(targetElement);\r\n        if (fieldControl || isCheckBoxControl) {\r\n            // Override the left arrow, right arrow and tab function\r\n            // Fixes when typing inside of the datatable row's form field\r\n            if ([KeyCode.Tab, KeyCode.LeftArrow, KeyCode.RightArrow].includes(event.keyCode) ||\r\n                [KeyCode.Home, KeyCode.End].includes(event.keyCode) && fieldControl) {\r\n                event.stopPropagation();\r\n            }\r\n\r\n            if ([KeyCode.Space, KeyCode.Enter].includes(event.keyCode) && isCheckBoxControl) {\r\n                event.preventDefault();\r\n                event.stopPropagation();\r\n                event.stopImmediatePropagation();\r\n                const input = <HTMLInputElement>targetElement;\r\n                input.checked = !input.checked;\r\n            }\r\n            res = true;\r\n        } else {\r\n            const isFocusingOutFromLastColumn = this.getIsFocusingOutFromLastColumnInEditableDataTableRow(targetElement);\r\n            if (isFocusingOutFromLastColumn) {\r\n                if (event.keyCode === KeyCode.Tab) {\r\n                    if (event.shiftKey) {\r\n                        const previousItem = Dom.getPreviousFocusableElement(targetElement);\r\n                        previousItem.focus();\r\n                    } else {\r\n                        currentRow.focus();\r\n                    }\r\n                    event.preventDefault();\r\n                    event.stopPropagation();\r\n                }\r\n            } else if (this.isDataTableCheckBoxHTMLElement(targetElement)) {\r\n                // This handles when the focus is on the select row checkbox\r\n                if (event.shiftKey) {\r\n                    // Since this is the first column from the data table row\r\n                    // Focus on the row element instead\r\n                    currentRow.focus();\r\n                } else {\r\n                    // focus on the next focusable element from the row\r\n                    const nextElement = Dom.getNextFocusableElement(targetElement);\r\n                    nextElement.focus();\r\n                }\r\n                event.preventDefault();\r\n                event.stopPropagation();\r\n            } else {\r\n                // It handles so that 'tab' press on the row should always go to the next focusable or previous element outside of\r\n                // the editable data table\r\n                if (event.keyCode && event.keyCode === KeyCode.Tab) {\r\n                    let field;\r\n                    if (event.shiftKey) {\r\n                        if (targetElement && targetElement.classList && targetElement.classList.contains('sme-table-row')) {\r\n                            field = Dom.getPreviousZoneElement(lastFocusableShadowElement.nativeElement);\r\n                        } else {\r\n                            field = Dom.getPreviousFocusableElement(targetElement);\r\n                        }\r\n                    } else {\r\n                        if (targetElement && targetElement.classList && targetElement.classList.contains('sme-table-row')) {\r\n                            field = Dom.getNextZoneElement(lastFocusableShadowElement.nativeElement);\r\n                        } else {\r\n                            field = Dom.getNextFocusableElement(targetElement);\r\n                        }\r\n                    }\r\n                    if (field) {\r\n                        field.focus();\r\n                        event.preventDefault();\r\n                        event.stopPropagation();\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        return res;\r\n    }\r\n\r\n    /**\r\n    * Dispatch focus in to the sme-table-cell to trigger tooltip handler.\r\n    */\r\n    @Debounce()\r\n    public focusInTableCell(event: FocusEvent) {\r\n        const targetElement = <HTMLElement>event.target;\r\n        const elem = targetElement.querySelector('.sme-table-cell');\r\n        const focusinEvent = new Event('focusin', {'bubbles': true, cancelable: false});\r\n        if (!!elem) {\r\n            elem.dispatchEvent(focusinEvent);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Dispatch focus out to the sme-table-cell to trigger tooltip handler.\r\n     */\r\n    public focusOutTableCell(event: FocusEvent) {\r\n        const targetElement = <HTMLElement>event.target;\r\n        const elem = targetElement.querySelector('.sme-table-cell');\r\n        const focusoutEvent = new Event('focusout', {'bubbles': true, cancelable: false});\r\n        if (!!elem) {\r\n            elem.dispatchEvent(focusoutEvent);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Shouldn't allow to add sme-focus-zone to table cell template. Navigation inside of the table cell should be using arrow key.\r\n     * @param event The focus event.\r\n     */\r\n    public verifyDataTableColumnsViolation(event: ElementFocusingEvent) {\r\n        if (event.nativeEvent.key === 'Tab') {\r\n            const parentTableCell = Dom.getAncestor(event.targetElement, e => e.className.includes('sme-table-cell'));\r\n\r\n            if (!parentTableCell) {\r\n                return;\r\n            }\r\n\r\n            if (!!parentTableCell.querySelector('.sme-focus-zone')) {\r\n                Logging.log({\r\n                    level: LogLevel.Error,\r\n                    message: 'Not allowed to add sme-focus-zone to table cell, if you want to navigate in between table cells, please use arrow key.',\r\n                    source: 'DataTableComponent.onElementFocusing'\r\n                });\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * This is to check if the this is the last item which is the delete button from the editable\r\n     * data table row\r\n     */\r\n    private getIsFocusingOutFromLastColumnInEditableDataTableRow(targetElement: HTMLElement) {\r\n        // TODO: add more selector\r\n        if (targetElement && targetElement.tagName === 'BUTTON') {\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * This checks if the current Html element is inside of a sme-form-field\r\n     */\r\n    public isSmeFormField(targetElement: HTMLElement) {\r\n        return Dom.getSpecificAncestor(targetElement, element => element.tagName === 'SME-FORM-FIELD');\r\n    }\r\n}\r\n","import { ElementRef, Renderer2 } from '@angular/core';\r\nimport { SmeResponsiveWindowBreakpointsValue,\r\n    SmeResponsiveWindowManagerComponent } from '../common/sme-responsive-window-manager.component';\r\n\r\nexport class DataTableResponsiveWindowManager extends SmeResponsiveWindowManagerComponent {\r\n    public readonly name = 'sme-data-table';\r\n    public previousWindowHeight = -1;\r\n\r\n    public set isTableRenderedOnPhoneDownWithMinHeight(input: boolean) {\r\n        this._isTableRenderedOnPhoneDownWithMinHeight = !!input;\r\n    }\r\n\r\n    public get isTableRenderedOnPhoneDownWithMinHeight(): boolean {\r\n        return this._isTableRenderedOnPhoneDownWithMinHeight;\r\n    }\r\n\r\n    private _isTableRenderedOnPhoneDownWithMinHeight = false;\r\n\r\n    /**\r\n     * Dynamically sync the width of the table header to the table body on phone-down.\r\n     */\r\n    public updateViewPortWidthDynamicallyOnPhoneDown(scrollBodyElement: ElementRef, renderer: Renderer2,\r\n        scrollContainerElement: ElementRef, headerTableElement: ElementRef): void {\r\n\r\n        if (!this.cssV2) {\r\n            return;\r\n        }\r\n\r\n        const tableContentViewWidth = scrollBodyElement.nativeElement.style.width;\r\n        const currentWindowWidth = this.width;\r\n\r\n        if (tableContentViewWidth && currentWindowWidth > SmeResponsiveWindowBreakpointsValue.PhoneDown) {\r\n            renderer.removeStyle(scrollContainerElement.nativeElement, 'overflow-x');\r\n            scrollBodyElement.nativeElement.style.width = null;\r\n        }\r\n\r\n        if (!tableContentViewWidth && currentWindowWidth > SmeResponsiveWindowBreakpointsValue.PhoneDown) {\r\n            if (headerTableElement.nativeElement.className.includes('sme-table-row-full-width')) {\r\n                headerTableElement.nativeElement.classList.remove('sme-table-row-full-width');\r\n            }\r\n            return;\r\n        }\r\n\r\n        if (currentWindowWidth <= SmeResponsiveWindowBreakpointsValue.PhoneDown) {\r\n            renderer.setStyle(scrollContainerElement.nativeElement, 'overflow-x', `auto`);\r\n\r\n            const scrollContentFullWidth = this.getMaxChildrenWidth(scrollBodyElement.nativeElement);\r\n            // grouping data table 47px\r\n            // regular data table 26px\r\n            const tableCheckboxWidth = 47;\r\n            const headerTableElementWidth = headerTableElement.nativeElement.clientWidth;\r\n            const headerTableContainerWidth = headerTableElement.nativeElement.parentElement.clientWidth;\r\n\r\n            if (headerTableElementWidth <= tableCheckboxWidth) {\r\n                return;\r\n            }\r\n\r\n            if (headerTableElementWidth < headerTableContainerWidth) {\r\n                if (headerTableElement.nativeElement.className.includes('sme-table-auto-width-phone-down')) {\r\n                    headerTableElement.nativeElement.classList.add('sme-table-row-full-width');\r\n                }\r\n                scrollBodyElement.nativeElement.style.width = '100%';\r\n            } else {\r\n                if (headerTableElement.nativeElement.clientWidth > 0) {\r\n                    scrollBodyElement.nativeElement.style.width =\r\n                        headerTableElement.nativeElement.clientWidth + 'px';\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * This function determines whether the table is displaying with min-height 150px on phone mode.\r\n     * This is mainly for some custom logic to get the height of the table for absolute layout calculations.\r\n     */\r\n    public checkIsTableRenderedOnPhoneDownWithMinHeight(headerTableElement: ElementRef, scrollContainerElement: ElementRef): boolean {\r\n        const currentWindowWidth = this.width;\r\n        const currentWindowHeight = this.height;\r\n\r\n        if (currentWindowHeight === this.previousWindowHeight) {\r\n            this.previousWindowHeight = currentWindowHeight;\r\n            return this.setIsTableRenderedOnPhoneDownWithMinHeight(false);\r\n        }\r\n\r\n        if (currentWindowWidth > SmeResponsiveWindowBreakpointsValue.PhoneDown) {\r\n            return this.setIsTableRenderedOnPhoneDownWithMinHeight(false);\r\n        }\r\n\r\n        const headerHeight = headerTableElement.nativeElement.offsetHeight;\r\n        const contentHeight = scrollContainerElement.nativeElement.offsetHeight;\r\n\r\n        // 150px + header, generously grant 200px as limit.\r\n        if (headerHeight + contentHeight <= 200) {\r\n            return this.setIsTableRenderedOnPhoneDownWithMinHeight(true);\r\n        }\r\n\r\n        return this.setIsTableRenderedOnPhoneDownWithMinHeight(false);\r\n    }\r\n\r\n    private setIsTableRenderedOnPhoneDownWithMinHeight(input: boolean): boolean {\r\n        this.isTableRenderedOnPhoneDownWithMinHeight = input;\r\n        return input;\r\n    }\r\n\r\n    private getMaxChildrenWidth(parentElement: HTMLElement) {\r\n        if (!parentElement || !parentElement.childElementCount) {\r\n            return;\r\n        }\r\n\r\n        if (!parentElement.className.includes('sme-arrange-stack-h')) {\r\n            return parentElement.getBoundingClientRect().width;\r\n        }\r\n\r\n        // For now, only support layout inside of sme-position-stretch-h\r\n        let totalWidth = 0;\r\n        for (let i = 0; i < parentElement.childElementCount; i++) {\r\n            const child = <HTMLElement>parentElement.children[i];\r\n            totalWidth += child.offsetWidth;\r\n        }\r\n\r\n        return totalWidth;\r\n    }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const SME_FORM_FIELD_VALIDATION_ALERT_CONTAINER_PROVIDER =\r\n    new InjectionToken<FormFieldContainer>('sme.form-field.validation-alert-container');\r\n\r\nexport interface FormFieldContainer {\r\n    checkValidation: () => boolean;\r\n    /**\r\n     * Used to run immediate validation on a form, should only validate fields with immediateValidation\r\n     */\r\n    immediateValidation: () => boolean;\r\n    isDirty: () => boolean;\r\n    updateAlert(alert: any): void;\r\n    reportChange(): void;\r\n}\r\n","import {\r\n    Component,\r\n    EventEmitter,\r\n    forwardRef,\r\n    Input,\r\n    OnChanges,\r\n    Output,\r\n    ViewContainerRef\r\n} from '@angular/core';\r\nimport { TemplateContext, TemplateLoaderBaseComponent } from '../common/template-loader-base.component';\r\nimport { FormFieldContainer, SME_FORM_FIELD_VALIDATION_ALERT_CONTAINER_PROVIDER } from '../form/form-field/form-field-container';\r\nimport { DataTableDataItem, DataTableRenderedItem } from './data-table-contract';\r\n\r\nexport interface DataTableTemplateContext extends TemplateContext<DataTableDataItem> {\r\n    rowIndex: number;\r\n    renderedItem: DataTableRenderedItem;\r\n    formFieldContainer: FormFieldContainer;\r\n}\r\n\r\n@Component({\r\n    selector: 'sme-data-table-template-loader',\r\n    template: '',\r\n    providers: [\r\n        {\r\n            provide: SME_FORM_FIELD_VALIDATION_ALERT_CONTAINER_PROVIDER,\r\n            useExisting: forwardRef(() => DataTableTemplateLoaderComponent)\r\n        }\r\n    ]\r\n})\r\nexport class DataTableTemplateLoaderComponent\r\n    extends TemplateLoaderBaseComponent<DataTableDataItem, DataTableTemplateContext>\r\n    implements OnChanges, FormFieldContainer {\r\n\r\n    @Input()\r\n    public field: string;\r\n\r\n    /**\r\n     * The index of the row for this template\r\n     */\r\n    @Input()\r\n    public rowIndex: number;\r\n\r\n    @Input()\r\n    public renderedItem: DataTableRenderedItem;\r\n\r\n    @Output()\r\n    public validationAlert = new EventEmitter<{ renderedItem: DataTableRenderedItem, alert: any }>();\r\n\r\n    @Output()\r\n    public dataChanged = new EventEmitter<{ renderedItem: DataTableRenderedItem, field: string }>();\r\n\r\n    /**\r\n     * Instantiates a new instance of DataTableTemplateLoaderComponent\r\n     * @param viewContainer the reference to this elements view container\r\n     */\r\n    constructor(viewContainer: ViewContainerRef) {\r\n        super(viewContainer);\r\n    }\r\n\r\n    public updateAlert(alert: any): void {\r\n        this.validationAlert.emit({ renderedItem: this.renderedItem, alert: alert });\r\n    }\r\n\r\n    public checkValidation(): boolean {\r\n        return true;\r\n    }\r\n\r\n    public immediateValidation(): boolean {\r\n        return true;\r\n    }\r\n\r\n    public isDirty(): boolean {\r\n        return false;\r\n    }\r\n\r\n    public reportChange(): void {\r\n        this.dataChanged.emit({ renderedItem: this.renderedItem, field: this.field });\r\n    }\r\n\r\n    /**\r\n     * Creates the context for our embeded view\r\n     */\r\n    protected createContext(): DataTableTemplateContext {\r\n        return {\r\n            $implicit: this.data,\r\n            rowIndex: this.rowIndex,\r\n            renderedItem: this.renderedItem,\r\n            formFieldContainer: this\r\n        };\r\n    }\r\n}\r\n","export class PxConverter {\r\n    private preCalculated = false;\r\n\r\n    private conversionMap = {\r\n        mm2px: 1 / 25.4,\r\n        cm2px: 1 / 2.54,\r\n        pt2px: 1 / 72,\r\n        pc2px: 1 / 6,\r\n        px2px: 1,\r\n        in2px: 96\r\n    };\r\n\r\n    // Converts a value to pixel equivalent\r\n    // 'width' is used as default, but you can supply others\r\n    public convertToPx(value: string, property = 'width'): number {\r\n        const testElement: HTMLElement = document.createElement('toTestNode');\r\n\r\n        return this.convert(testElement, value, property);\r\n    }\r\n\r\n    private convert(testElement: HTMLElement | Node, value: string, property = 'width'): number {\r\n        // We first recalculate the conversionMap to work with the dimensions of the current display\r\n        if (!this.preCalculated) {\r\n            this.preCalculated = true;\r\n            this.preCalculate();\r\n        }\r\n\r\n        const convertValue = value;\r\n        const unit = convertValue.match(/^(-?[\\d+\\.\\-]+)([a-z]+|%)$/)[2];\r\n\r\n        let result;\r\n\r\n        // Currently we only support absolute units we have maps for, or font units\r\n        if (this.conversionMap[`${unit}2px`] || /r?em/i.test(unit)) {\r\n            let ratio = this.conversionMap[`${unit}2px`];\r\n            // calculate known conversions immediately\r\n            // find the correct element for absolute units or rem or fontSize + em or em\r\n            testElement = ratio\r\n                ? testElement\r\n                : unit === 'rem' || unit === 'em'\r\n                    ? document.documentElement\r\n                    : property === 'fontSize'\r\n                        ? testElement.parentNode || testElement\r\n                        : testElement;\r\n\r\n            // use the pre-calculated\r\n            // conversion or fontSize of the element for rem and em\r\n            ratio = ratio || this.computeFromFont(<HTMLElement>testElement);\r\n\r\n            // multiply the value by the conversion\r\n            result = parseFloat(value) * ratio;\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    private preCalculate(): void {\r\n        let testElement = document.createElement('test');\r\n        // create a test element\r\n        const documentElement = document.documentElement;\r\n\r\n        // add the test element to the dom\r\n        documentElement.appendChild(testElement);\r\n\r\n        // pre-calculate absolute unit conversions\r\n        [\r\n            'pc2px',\r\n            'pt2px',\r\n            'cm2px',\r\n            'mm2px'\r\n        ].forEach((conversion) => {\r\n            this.conversionMap[conversion] = this.conversionMap[conversion]\r\n                ? this.conversionMap[conversion] * this.conversionMap.in2px\r\n                : this.convert(testElement, `_${conversion}`);\r\n        });\r\n\r\n        // remove the test element from the DOM and delete it\r\n        documentElement.removeChild(testElement);\r\n        testElement = undefined;\r\n    }\r\n\r\n    // return the computed value of a CSS property\r\n    private computeFromFont(element: HTMLElement): number {\r\n        let computedValue;\r\n\r\n        if (document.defaultView && document.defaultView.getComputedStyle) {\r\n            // FireFox, Chrome/Safari/Edge, Opera and IE9+\r\n            computedValue = parseFloat(document.defaultView.getComputedStyle(element)['fontSize']);\r\n        }\r\n\r\n        return computedValue;\r\n    }\r\n\r\n}\r\n","<div role=\"presentation\" class=\"sme-table-header sme-focus-zone sme-data-table-transition\" #header\r\n  [class.sme-shadow-scrolled-content]=\"isScrolledDown\" [class.sme-table-multi-select]=\"selectionMode==='multiple'\"\r\n  [class.sme-table-selectable]=\"selectable\" [class.sme-table-indented]=\"!noLeftMargin\"\r\n  [class.sme-table-select-all-enabled]=\"selectionMode==='multiple' && showAllItemCheckbox\">\r\n  <!-- According to the accessibility team, data-table headers should be accessible by keyboard\r\n  and the resizer should also be accessed by keyboard.-->\r\n  <div #headerTable class=\"sme-table sme-table-virtualized sme-table-auto-width-phone-down\" role=\"rowgroup\">\r\n    <div class=\"sme-table-row sme-arrange-stack-h sme-position-flex-auto\" role=\"row\"\r\n      (keydown)=\"onHeaderTablePressed($event)\">\r\n      <div class=\"sme-table-caption\" [attr.role]=\"selectionMode==='multiple'?'columnheader':'presentation'\"\r\n        data-uta-id=\"checkboxColumn\">\r\n        <div class=\"sme-table-checkbox sme-table-header-checkbox\"\r\n          *ngIf=\"selectionMode==='multiple' && showAllItemCheckbox && showHeader\" role=\"presentation\">\r\n          <input sme-lint-disable-self type=\"checkbox\" [attr.aria-label]=\"getAllItemCheckBoxAriaLabel()\"\r\n            [checked]=\"shouldAllItemCheckBoxChecked()\"\r\n            [attr.aria-checked]=\"shouldAllItemCheckBoxChecked()?'true':'false'\" (change)=\"onAllItemCheckBoxClicked()\" />\r\n          <label role=\"presentation\"></label>\r\n        </div>\r\n      </div>\r\n      <div *ngFor=\"let column of actualColumns; let colIndex = index\" [attr.field]=\"column.field\"\r\n        [ngStyle]=\"{'width': column.width}\"\r\n        class=\"sme-table-caption sme-table-column-header sme-position-flex-auto {{column.styleClass}}\"\r\n        role=\"presentation\" [attr.data-uta-id]=\"column.utaId\" [attr.column-index]=\"colIndex\">\r\n        <div *ngIf=\"column.sortable && column.sortable!='false' && showHeader\"\r\n          class=\"sme-table-header-cell sme-focus-zone\" (click)=\"clickColumn(column)\" role=\"columnheader\"\r\n          [title]=\"column.header\" aria-live=\"polite\" tabindex=\"0\" [attr.aria-sort]=\"columnSortSettings[column.header]\"\r\n          [attr.aria-label]=\"column.sortable ? getSortLabel(column) : null\">\r\n          <span>{{column.header}}</span>\r\n          <span class=\"sme-icon sme-margin-left-xxs\"\r\n            [ngClass]=\"{'sme-icon-up':column.sortMode===sortModeEnum.Ascend,'sme-icon-down':column.sortMode===sortModeEnum.Descend}\">\r\n          </span>\r\n        </div>\r\n        <div *ngIf=\"!(column.sortable && column.sortable!='false') && showHeader\"\r\n          class=\"sme-table-header-cell sme-focus-zone\" role=\"columnheader\" [title]=\"column.header\" tabindex=\"0\"\r\n          [attr.aria-label]=\"column.sortable ? getSortLabel(column) : null\">\r\n          <span>{{column.header}}</span>\r\n          <span class=\"sme-icon sme-margin-left-xxs\"\r\n            [ngClass]=\"{'sme-icon-up':column.sortMode===sortModeEnum.Ascend,'sme-icon-down':column.sortMode===sortModeEnum.Descend}\"></span>\r\n        </div>\r\n        <div *ngIf=\"!showHeader\" class=\"sme-table-header-cell\" role=\"columnheader\">\r\n        </div>\r\n        <sme-resizer [focusable]=\"false\" *ngIf=\"colIndex!==actualColumns.length-1 && showHeader\"\r\n          resizerHostSelector=\"div.sme-table-header\" (resized)=\"onColumnResized(colIndex, $event)\"\r\n          [visibleToScreenReader]=\"true\" [showResizerCover]=\"false\" orientation=\"left\"\r\n          (resizing)=\"onColumnResizing($event)\" class=\"sme-focus-zone\"></sme-resizer>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n<div class=\"sme-focus-zone sme-table-container sme-data-table-transition\" #content role=\"presentation\"\r\n  [class.sme-table-multi-select]=\"selectionMode==='multiple'\" [class.sme-table-selectable]=\"selectable\"\r\n  [class.sme-margin-top-none]=\"!showHeader\" [class.sme-table-indented]=\"!noLeftMargin\"\r\n  [class.sme-table-grid-lines]=\"showGrid\"\r\n  [class.sme-table-select-all-enabled]=\"selectionMode==='multiple' && showAllItemCheckbox\"\r\n  [class.sme-table-editable]=\"editable\">\r\n  <div class=\"sme-table-scroll-container sme-layout-absolute sme-position-inset-none\"\r\n    [ngClass]=\"{'sme-layout-absolute sme-position-inset-none': scrollable, 'sme-scrollable': shouldScroll}\"\r\n    #scrollContainer role=\"rowgroup\">\r\n    <div role=\"row\" class=\"sme-table-row sme-table-row-placeholder\" #emptyMessage tabindex=\"0\"\r\n      *ngIf=\"showNoRecordsMessage()\" data-uta-id=\"empty-table-message\">\r\n      <sme-loading-wheel *ngIf=\"isLoading || !isColumnWidthCalculated\" [message]=\"loadingMessage\">\r\n      </sme-loading-wheel>\r\n      <div class=\"sme-table-cell sme-table-cell-placeholder\">&nbsp;</div>\r\n      <div role=\"gridcell\" class=\"sme-table-cell\">{{getNoRecordsMessage()}}</div>\r\n    </div>\r\n    <div class=\"sme-layout-relative sme-position-stretch-h sme-arrange-overflow-hide\" #scrollBody role=\"presentation\">\r\n      <div class=\"sme-table sme-table-scrollable sme-table-virtualized\" #scrollAboveData\r\n        [ngStyle]=\"{top: scrollAboveDataStyleTop}\" [attr.aria-hidden]=\"true\" sme-lint-disable>\r\n        <!-- Above view port -->\r\n        <div *ngFor=\"let renderedItem of renderedItemsAboveViewPort; let rowIndex = index\"\r\n          class=\"sme-table-row sme-table-row-data sme-table-row-selectable\"\r\n          [class.sme-table-row-active]=\"renderedItem.index === getActiveRenderedItemIndex()\"\r\n          [class.sme-table-row-selected]=\"renderedItem.index === getActiveRenderedItemIndex() || isItemSelected(renderedItem)\"\r\n          [class.sme-table-group-item]=\"renderedItem.type === renderedItemTypeEnum.GroupItem\"\r\n          [class.sme-table-group-header]=\"renderedItem.type === renderedItemTypeEnum.GroupHeader\"\r\n          [class.sme-checked]=\"isItemSelected(renderedItem)\">\r\n          <div class=\"sme-arrange-stack-h\">\r\n            <div class=\"sme-table-td sme-position-flex-auto\">\r\n              <div class=\"sme-table-cell\">\r\n                <div *ngIf=\"!showAsTree\" class=\"sme-table-checkbox\" role=\"presentation\">\r\n                  <input type=\"checkbox\" [checked]=\"isItemSelected(renderedItem)\" />\r\n                  <label role=\"presentation\"></label>\r\n                </div>\r\n              </div>\r\n            </div>\r\n            <div *ngFor=\"let column of actualColumns; let colIndex=index\"\r\n              [ngClass]=\"{'sme-table-column-first': isFirstDataColumn(column), 'sme-table-group-header-cell': renderedItem.type===renderedItemTypeEnum.GroupHeader}\"\r\n              [ngStyle]=\"{'width':column.domWidth+'px'}\"\r\n              class=\"sme-table-td sme-position-flex-auto {{column.styleClass}}\"\r\n              [attr.tabindex]=\"isTreeTableParentNode(renderedItem) ? -1 : 0\">\r\n              <div class=\"sme-screen-reader sme-screen-reader-disable-copy\" *ngIf=\"isFirstDataColumn(column)\">\r\n                {{getAdditionalScreenRecorderContent(renderedItem)}}</div>\r\n              <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.GroupHeader && colIndex===0\" class=\"sme-table-cell\"\r\n                (click)=\"clickGroupToggle(renderedItem)\">\r\n                <span *ngIf=\"useGroupToggle\" class=\"sme-icon sme-icon-size-xxs sme-margin-right-xxs\"\r\n                  [ngClass]=\"{'sme-icon-chevronDown':isGroupExpanded(renderedItem.data), 'sme-icon-chevronRight':!isGroupExpanded(renderedItem.data)}\">\r\n                </span>\r\n                <span *ngIf=\"!this.groupHeaderTemplate\">\r\n                  {{renderedItem.data}}\r\n                </span>\r\n                <span *ngIf=\"this.groupHeaderTemplate\">\r\n                  <sme-data-table-template-loader [template]=\"this.groupHeaderTemplate\" [data]=\"renderedItem.data\">\r\n                  </sme-data-table-template-loader>\r\n                </span>\r\n              </div>\r\n              <div\r\n                *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && !renderedItem.node.isBusy && colIndex===0\"\r\n                class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\"\r\n                [ngClass]=\"{'sme-expandable': renderedItem.hasChildren && !renderedItem.node.isLeaf}\">\r\n                <span class=\"sme-icon sme-icon-size-xxs\" role=\"button\"\r\n                  [attr.aria-expanded]=\"renderedItem.node.expanded?'true':'false'\"\r\n                  (click)=\"clickTreeToggle($event, renderedItem)\"\r\n                  [ngClass]=\"{'sme-icon-chevronDown':renderedItem.node.expanded, 'sme-icon-chevronRight':!renderedItem.node.expanded}\"\r\n                  [attr.aria-label]=\"renderedItem.node.expanded ? this.strings.MsftSmeShell.Angular.DataTable.aria.label.collapse : this.strings.MsftSmeShell.Angular.DataTable.aria.label.expand\">\r\n                </span>\r\n                <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n              </div>\r\n              <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && renderedItem.node.isBusy && colIndex===0\"\r\n                class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\">\r\n                <sme-loading-wheel size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\">\r\n                </sme-loading-wheel>\r\n                <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n              </div>\r\n              <div\r\n                *ngIf=\"showAsTree && selectionMode==='multiple' && renderedItem.type==renderedItemTypeEnum.TreeNode && colIndex==0\"\r\n                class=\"sme-table-cell sme-table-checkbox-container\" role=\"presentation\">\r\n                <div class=\"sme-table-checkbox\" role=\"presentation\">\r\n                  <input type=\"checkbox\" [checked]=\"isItemSelected(renderedItem)\"\r\n                    (change)=\"onItemCheckBoxClicked(renderedItem)\" />\r\n                  <label role=\"presentation\"></label>\r\n                </div>\r\n              </div>\r\n              <ng-container *ngIf=\"!editable\">\r\n                <div *ngIf=\"!column.bodyTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n                  class=\"sme-table-cell\" [class.sme-table-cell-full-height]=\"autoRowHeight\">\r\n                  {{renderedItem.data?resolveObjectPath(renderedItem.data,column.field):'.'}}\r\n                </div>\r\n                <div\r\n                  *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyTemplate\"\r\n                  [class.sme-table-cell-full-height]=\"autoRowHeight\" [class.sme-table-cell-height-auto]=\"autoRowHeight\"\r\n                  class=\"sme-table-cell\">\r\n                  <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n                    [template]=\"column.bodyTemplate\" [data]=\"renderedItem.data\" [rowIndex]=\"rowIndex\">\r\n                  </sme-data-table-template-loader>\r\n                </div>\r\n              </ng-container>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <div class=\"sme-table sme-table-scrollable\" #scrollData [class.sme-table-virtualized]=\"!disableUIVirtualization\"\r\n        [ngStyle]=\"{top: scrollDataStyleTop}\" sme-lint-disable role=\"presentation\">\r\n        <div *ngFor=\"let renderedItem of renderedItemsInAndBelowViewPort; let rowIndex = index\"\r\n          (keydown)=\"onContentTablePressed($event)\" (keyup)=\"onContentTableKeyUp($event)\"\r\n          (contextmenu)=\"enableRightClickSelect ? selectItem($event, renderedItem) : true\"\r\n          (click)=\"selectItem($event, renderedItem)\" class=\"sme-table-row sme-table-row-data sme-table-row-selectable\"\r\n          [class.sme-table-row-active]=\"renderedItem.index === getActiveRenderedItemIndex()\"\r\n          [class.sme-table-row-selected]=\"rowDisplayAsSelected(renderedItem)\"\r\n          [class.sme-table-group-item]=\"renderedItem.type === renderedItemTypeEnum.GroupItem\"\r\n          [class.sme-table-group-header]=\"renderedItem.type === renderedItemTypeEnum.GroupHeader\"\r\n          [class.sme-checked]=\"isItemSelected(renderedItem)\" [class.sme-table-row-editable]=\"editable\"\r\n          [class.sme-has-validation-error]=\"hasValidationError(renderedItem)\"\r\n          [class.sme-data-table-row-new-item]=\"renderedItem?.data?.isNewRow\"\r\n          [attr.tabindex]=\"renderedItem.index >= 0 ? 0 : undefined\" (dblclick)=\"doubleClickRow($event,renderedItem)\"\r\n          (focus)=\"onContentItemFocused($event, renderedItem)\" (focusin)=\"onContentItemFocused($event, renderedItem)\"\r\n          (focusout)=\"onContentItemBlurred($event, renderedItem)\" [attr.data-rendered-item-index]=\"renderedItem.index\"\r\n          [attr.aria-rowindex]=\"renderedItem.index+2\" [attr.aria-selected]=\"isItemSelected(renderedItem)?'true':'false'\"\r\n          (mouseenter)=\"setHoveredRenderedItem(renderedItem)\" (mouseleave)=\"unsetHoveredRenderedItem(renderedItem)\"\r\n          role=\"row\" [attr.aria-expanded]=\"getAriaExpandedAttributeValue(renderedItem)\"\r\n          [attr.aria-level]=\"showAsTree && renderedItem.depth ? (renderedItem.depth+1):undefined\">\r\n          <div class=\"sme-arrange-stack-h\" role=\"presentation\">\r\n            <div class=\"sme-table-td sme-position-flex-auto\"\r\n              [attr.role]=\"selectionMode === 'multiple' ? 'gridcell': 'presentation'\">\r\n              <div *ngIf=\"!showAsTree\" class=\"sme-table-cell sme-table-checkbox-container\" role=\"presentation\"\r\n                [class.sme-table-cell-full-height]=\"autoRowHeight\">\r\n                <div class=\"sme-table-checkbox\" role=\"presentation\">\r\n                  <input type=\"checkbox\" [attr.aria-checked]=\"isItemSelected(renderedItem)?'true':'false'\"\r\n                    [attr.aria-labelledby]=\"idBag.firstDataColumn + renderedItem.index\"\r\n                    [checked]=\"isItemSelected(renderedItem)\" (change)=\"onItemCheckBoxClicked(renderedItem)\" />\r\n                  <label role=\"presentation\"></label>\r\n                </div>\r\n              </div>\r\n            </div>\r\n            <div *ngFor=\"let column of actualColumns; let colIndex=index\"\r\n              [ngClass]=\"{'sme-table-column-first': isFirstDataColumn(column), 'sme-table-group-header-cell': renderedItem.type===renderedItemTypeEnum.GroupHeader}\"\r\n              [ngStyle]=\"{'width':column.domWidth+'px'}\"\r\n              class=\"sme-table-td sme-position-flex-auto {{column.styleClass}}\" role=\"gridcell\"\r\n              [attr.aria-rowindex]=\"renderedItem.index+2\"\r\n              [attr.tabindex]=\"isTreeTableParentNode(renderedItem) ? -1 : 0\">\r\n              <div class=\"sme-screen-reader sme-screen-reader-disable-copy\" *ngIf=\"isFirstDataColumn(column)\">\r\n                {{getAdditionalScreenRecorderContent(renderedItem)}}</div>\r\n              <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.GroupHeader && colIndex===0\" class=\"sme-table-cell\"\r\n                (click)=\"clickGroupToggle(renderedItem)\" [id]=\"getFirstColumnId(column, renderedItem)\">\r\n                <span *ngIf=\"useGroupToggle\" class=\"sme-icon sme-icon-size-xxs sme-margin-right-xxs\"\r\n                  [ngClass]=\"{'sme-icon-chevronDown':isGroupExpanded(renderedItem.data), 'sme-icon-chevronRight':!isGroupExpanded(renderedItem.data)}\">\r\n                </span>\r\n                <span *ngIf=\"!this.groupHeaderTemplate\">\r\n                  {{renderedItem.data}}\r\n                </span>\r\n                <span *ngIf=\"this.groupHeaderTemplate\">\r\n                  <sme-data-table-template-loader [template]=\"this.groupHeaderTemplate\" [data]=\"renderedItem.data\">\r\n                  </sme-data-table-template-loader>\r\n                </span>\r\n              </div>\r\n              <div\r\n                *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && !renderedItem.node.isBusy && colIndex===0\"\r\n                class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\"\r\n                [ngClass]=\"{'sme-expandable': renderedItem.hasChildren && !renderedItem.node.isLeaf}\">\r\n                <span class=\"sme-icon sme-icon-size-xxs\" role=\"button\"\r\n                  [attr.aria-expanded]=\"renderedItem.node.expanded?'true':'false'\"\r\n                  (click)=\"clickTreeToggle($event, renderedItem)\"\r\n                  [ngClass]=\"{'sme-icon-chevronDown':renderedItem.node.expanded, 'sme-icon-chevronRight':!renderedItem.node.expanded}\"\r\n                  [attr.aria-label]=\"renderedItem.node.expanded ? this.strings.MsftSmeShell.Angular.DataTable.aria.label.collapse : this.strings.MsftSmeShell.Angular.DataTable.aria.label.expand\">\r\n                </span>\r\n                <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n              </div>\r\n              <div *ngIf=\"renderedItem.type===renderedItemTypeEnum.TreeNode && renderedItem.node.isBusy && colIndex===0\"\r\n                class=\"sme-table-expander-cell\" [ngStyle]=\"{'padding-left':(renderedItem.depth*16+4)+'px'}\">\r\n                <sme-loading-wheel size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\">\r\n                </sme-loading-wheel>\r\n                <span class=\"sme-table-expander-cell-placeholder\"></span>\r\n              </div>\r\n              <div\r\n                *ngIf=\"showAsTree && selectionMode==='multiple' && renderedItem.type==renderedItemTypeEnum.TreeNode && colIndex==0\"\r\n                class=\"sme-table-cell sme-table-checkbox-container\" role=\"presentation\">\r\n                <div class=\"sme-table-checkbox\" role=\"presentation\">\r\n                  <input type=\"checkbox\" [attr.aria-checked]=\"isItemSelected(renderedItem)?'true':'false'\"\r\n                    [attr.aria-labelledby]=\"idBag.firstDataColumn + renderedItem.index\"\r\n                    [checked]=\"isItemSelected(renderedItem)\" (change)=\"onItemCheckBoxClicked(renderedItem)\" />\r\n                  <label role=\"presentation\"></label>\r\n                </div>\r\n              </div>\r\n              <ng-container *ngIf=\"!editable\">\r\n                <div *ngIf=\"!column.bodyTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n                  class=\"sme-table-cell\" [class.sme-table-cell-full-height]=\"autoRowHeight\"\r\n                  [id]=\"getFirstColumnId(column, renderedItem)\" [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n                  {{renderedItem.data?resolveObjectPath(renderedItem.data,column.field):'.'}}</div>\r\n                <div\r\n                  *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyTemplate\"\r\n                  class=\"sme-table-cell\" [class.sme-table-cell-height-auto]=\"autoRowHeight\"\r\n                  [class.sme-table-cell-full-height]=\"autoRowHeight\" [id]=\"getFirstColumnId(column, renderedItem)\"\r\n                  [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n                  <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n                    [template]=\"column.bodyTemplate\" [data]=\"renderedItem.data\" [rowIndex]=\"rowIndex\">\r\n                  </sme-data-table-template-loader>\r\n                </div>\r\n              </ng-container>\r\n              <ng-container *ngIf=\"editable && !column.bodyEditTemplate\">\r\n                <div *ngIf=\"!column.bodyReadTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n                  class=\"sme-table-cell\" [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n                  {{renderedItem.data?resolveObjectPath(renderedItem.data.content,column.field):'.'}}</div>\r\n                <div\r\n                  *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyReadTemplate\"\r\n                  class=\"sme-table-cell\" [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n                  <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\" [renderedItem]=\"renderedItem\"\r\n                    [template]=\"column.bodyReadTemplate\" [data]=\"renderedItem.data.content\" [rowIndex]=\"rowIndex\">\r\n                  </sme-data-table-template-loader>\r\n                </div>\r\n              </ng-container>\r\n              <ng-container *ngIf=\"editable && column.bodyEditTemplate\">\r\n                <ng-container *ngIf=\"!shouldShowEditRow(renderedItem)\">\r\n                  <div *ngIf=\"!column.bodyReadTemplate && renderedItem.type!=renderedItemTypeEnum.GroupHeader\"\r\n                    class=\"sme-table-cell\" [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n                    {{renderedItem.data?resolveObjectPath(renderedItem.data.content,column.field):'.'}}</div>\r\n                  <div\r\n                    *ngIf=\"renderedItem.type!=renderedItemTypeEnum.GroupHeader && renderedItem.data && column.bodyReadTemplate\"\r\n                    class=\"sme-table-cell\" [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n                    <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n                      [template]=\"column.bodyReadTemplate\" [data]=\"renderedItem.data.content\" [rowIndex]=\"rowIndex\">\r\n                    </sme-data-table-template-loader>\r\n                  </div>\r\n                </ng-container>\r\n                <div *ngIf=\"shouldShowEditRow(renderedItem)\" class=\"sme-table-cell sme-table-edit-container\"\r\n                  [title]=\"getColumnTooltipText(column, renderedItem)\">\r\n                  <sme-data-table-template-loader *ngIf=\"!renderedItem.data.placeholder\"\r\n                    [template]=\"column.bodyEditTemplate\" [field]=\"column.field\" [data]=\"renderedItem.data.content\"\r\n                    [rowIndex]=\"rowIndex\" [renderedItem]=\"renderedItem\"\r\n                    (validationAlert)=\"onValidationAlertHandler(renderedItem, column.field, $event.alert)\"\r\n                    (dataChanged)=\"onEditableDataChanged($event.renderedItem,$event.field)\">\r\n                  </sme-data-table-template-loader>\r\n                </div>\r\n              </ng-container>\r\n            </div>\r\n          </div>\r\n          <div *ngIf=\"hasValidationError(renderedItem)\" class=\"sme-table-row-validation\">\r\n            <div class=\"sme-table-td sme-position-flex-auto\"\r\n              [attr.role]=\"selectionMode === 'multiple' ? 'gridcell' : 'presentation'\"\r\n              [attr.tabindex]=\"selectionMode==='multiple'?'0':'undefined'\">\r\n              <div class=\"sme-table-cell\" role=\"presentation\">\r\n                <div *ngFor=\"let validationResultItem of renderedItem.validationResult\">\r\n                  <sme-validation-alert [alert]=\"validationResultItem.alert\"></sme-validation-alert>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"sme-table-row\" #tempRow>\r\n          <div class=\"sme-table-td\" tabindex=\"0\">\r\n            <div class=\"sme-table-cell\">&nbsp;</div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div *ngIf=\"shouldUseLastFocusableShadowElement\" #lastFocusableShadowElement class=\"sme-focus-zone\"\r\n      data-sme-last-focusable-shadow-element (focus)=\"onLastFocusableShadowElementFocused($event)\" tabindex=\"0\"></div>\r\n  </div>\r\n  <div class=\"sme-layout-absolute sme-position-inset-none\"\r\n    *ngIf=\"isBusy || (this.nodeNavigatingTask && this.nodeNavigatingTask.isRunning)\">\r\n    <sme-loading-wheel [isBackgroundTransparent]=\"true\"></sme-loading-wheel>\r\n  </div>\r\n</div>\r\n<div #resizerIndicator\r\n  class=\"sme-width-xxs sme-layout-absolute sme-position-stretch-v sme-background-color-base-80 sme-layer-flyout sme-layout-none\">\r\n</div>\r\n","import {\r\n    AfterViewChecked,\r\n    AfterViewInit,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ContentChild,\r\n    ContentChildren,\r\n    ElementRef,\r\n    EventEmitter,\r\n    Injector,\r\n    Input,\r\n    NgZone,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n    QueryList,\r\n    TemplateRef,\r\n    ViewChild,\r\n    ViewChildren\r\n} from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { ElementFocusingEvent, KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { CoreEnvironment } from '@microsoft/windows-admin-center-sdk/core/data/core-environment';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { fromEvent } from 'rxjs';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../common/layout';\r\nimport { SpacerBaseDirective } from '../common/spacer-base.component';\r\nimport { FormFieldContainer } from '../form/form-field/form-field-container';\r\nimport { SearchFormFieldComponent } from '../form/form-field/search/search-form-field.component';\r\nimport { QueryData, QueryDataItem, QueryDataItemValueType, QueryDataOperand } from '../query-editor/query-editor-contract';\r\nimport { DataTableAccessibilityManager } from './data-table-accessibility-manager';\r\nimport { DataTableColumnComponent } from './data-table-column.component';\r\nimport {\r\n    DataTableCustomSortEvent,\r\n    DataTableDataItem,\r\n    DataTableLazyLoadEvent,\r\n    DataTableMultipleSelectMode,\r\n    DataTableRenderedItem,\r\n    DataTableRenderedItemType,\r\n    DataTableSortMode,\r\n    EditableDataChangeSet,\r\n    EditableDataItem,\r\n    NodeNavigatingTask,\r\n    TreeNodeDataItem\r\n} from './data-table-contract';\r\nimport { DataTableResponsiveWindowManager } from './data-table-responsive-window-manager';\r\nimport { DataTableTemplateLoaderComponent } from './data-table-template-loader.component';\r\nimport { PxConverter } from './helpers/px-converter';\r\n\r\n/**\r\n * Data table component\r\n */\r\n@Component({\r\n    selector: 'sme-data-table',\r\n    templateUrl: './data-table.component.html'\r\n})\r\nexport class DataTableComponent extends SpacerBaseDirective implements OnInit, AfterViewInit, AfterViewChecked, OnDestroy {\r\n    private static minColumnWidth = 50;\r\n    private static pxConverter = new PxConverter();\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'DataTableComponent';\r\n    }\r\n\r\n    private isComponentInitialized = false;\r\n    private editableDataChangeSet: EditableDataChangeSet = {\r\n        addedItems: [],\r\n        updatedItems: [],\r\n        deletedItems: []\r\n    };\r\n\r\n    private defaultScrollPixels = 90;\r\n    private defaultScrollPercentage = 0.4;\r\n    private maxActualScrollDataElementHeight = 500000;\r\n    private filterDebounceTimeout = 300;\r\n    private keyboardNavigationDebounceTimeout = 100;\r\n    private scrollCheckIntervalDuration = 300;\r\n    private scrollCheckInterval;\r\n    private navigationKeyboardDebouncing = false;\r\n    private bufferRowRate = 1;\r\n    private eventUnregistraterHandlers: (() => void)[] = [];\r\n    private sortColumn: DataTableColumnComponent;\r\n    private previousSortColumn: DataTableColumnComponent;\r\n    private internalItems: DataTableDataItem[];\r\n    private actualItems: DataTableDataItem[];\r\n    private calculatedScrollbarWidth: number;\r\n    private currentHasVerticalOverflow: boolean;\r\n    private filterDebounceTimer;\r\n    private tryToFocusSelectedRowTimer;\r\n    private oldFilterKeyword: string;\r\n    private filterKeyword: string;\r\n    private internalGlobalFilter: any;\r\n    private scrollAboveDataElementHeight: number;\r\n    private isScrolling: boolean;\r\n    private isScrollingEventHandlerSetup: boolean;\r\n    private displayItemsTop: number;\r\n    private internalRenderedItems: DataTableRenderedItem[] = [];\r\n    private internalSelection: DataTableDataItem[] = [];\r\n    private hasLongList: boolean;\r\n    private currentStartIndexOfItemInViewPort = -1;\r\n    private dataScrollTop: number;\r\n    private currentRenderedItemInViewPort: DataTableRenderedItem;\r\n    private internalGroupColumn: DataTableColumnComponent;\r\n    private internalGroupSortMode = DataTableSortMode.None;\r\n    private internalSelectionMode: string | DataTableMultipleSelectMode;\r\n    private shadowTree: any; // This variable is used to maintain the tree to help do the \"same level only\" sort.\r\n    private activeRenderedItemIndex = -1;\r\n    private previousActiveRenderedItemIndex = -1;\r\n    private activeFocusedItemIndex = -1;\r\n    private hoveredRenderedItemIndex = -1;\r\n    private renderedItemLengthInViewPort: number;\r\n    private renderedItemStartIndexOffset = 0;\r\n    private currentColumnIndexWithFocusedElement = -1;\r\n    private unregisterOnElementFocusingEventHandler: () => void;\r\n    private contentAreaHasFocus = false;\r\n    private editableNewRowHasFocus = false;\r\n    private cancelLastFocusableShadowElementFocusOnce = false;\r\n    private layoutChangeSubscriber;\r\n    private globalFilterSubscriber;\r\n    private groupKeys: { [key: string]: DataTableRenderedItem[] } = {};\r\n    private internalColumns: QueryList<DataTableColumnComponent>;\r\n    private treeToggleStatus: { [key: string]: boolean } = {};\r\n    private shiftMultipleSelectStartIndex = -1;\r\n    private internalQueryEditor: QueryData;\r\n    private actualColumnProcessed = false;\r\n    private tryToFocusEmptyMessageCount = 3;\r\n    private accessibilityManager = CoreEnvironment.accessibilityManager;\r\n\r\n    private internalTableAriaLabelledBy: string;\r\n    public internalTableAriaLabel: string;\r\n\r\n    public scrollDataStyleTop: string;\r\n    public scrollAboveDataStyleTop: string;\r\n    public isLoading = true;\r\n    public dataTableAccessibilityManager = new DataTableAccessibilityManager();\r\n    public DataTableResponsiveWindowManager: DataTableResponsiveWindowManager;\r\n    public columnSortSettings = {};\r\n\r\n    /**\r\n     * It determines whether the selected node from the table is collapsed from the parent.\r\n     */\r\n    public selectedTreeNodeParentCollapsed = false;\r\n\r\n    @ViewChild('resizerIndicator')\r\n    private resizerIndicator: ElementRef;\r\n\r\n    @ViewChild('header')\r\n    private headerElement: ElementRef;\r\n\r\n    @ViewChild('headerTable')\r\n    private headerTableElement: ElementRef;\r\n\r\n    @ViewChild('content')\r\n    private contentElement: ElementRef;\r\n\r\n    @ViewChild('scrollContainer', { static: true })\r\n    private scrollContainerElement: ElementRef;\r\n\r\n    @ViewChild('tempRow')\r\n    private tempRowElement: ElementRef;\r\n\r\n    @ViewChild('scrollBody', { static: true })\r\n    private scrollBodyElement: ElementRef;\r\n\r\n    @ViewChild('scrollAboveData')\r\n    private scrollAboveDataElement: ElementRef;\r\n\r\n    @ViewChild('scrollData')\r\n    private scrollDataElement: ElementRef;\r\n\r\n    @ViewChild('emptyMessage')\r\n    private emptyMessageElement: ElementRef;\r\n\r\n    @ViewChild('lastFocusableShadowElement')\r\n    private lastFocusableShadowElement: ElementRef;\r\n\r\n    @ContentChild('group')\r\n    public groupHeaderTemplate: TemplateRef<any>;\r\n\r\n    /**\r\n     * @deprecated since 9/25/2019. Please use 'changesetUpdated' instead\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\r\n    @Output() public get onChangesetUpdated(): EventEmitter<EditableDataChangeSet> {\r\n        return this.changesetUpdated;\r\n    }\r\n    @Output() public changesetUpdated = new EventEmitter<EditableDataChangeSet>();\r\n\r\n    /**\r\n     * It emits the event when selection changing is happening.\r\n     */\r\n    @Output()\r\n    public selectionChange = new EventEmitter<DataTableDataItem>();\r\n\r\n    /**\r\n     * It emits true when table is rendered with min-height on phone down\r\n     */\r\n    @Output() public isTableRenderedWithMinHeightPhoneDown: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n    /**\r\n     * @deprecated since 9/25/2019. Please use 'rowDblclick' instead\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\r\n    @Output() public get onRowDblclick(): EventEmitter<{ data: DataTableDataItem }> {\r\n        return this.rowDblclick;\r\n    }\r\n    @Output() public rowDblclick = new EventEmitter<{ data: DataTableDataItem }>();\r\n\r\n    /**\r\n     * @deprecated since 9/25/2019. Please use 'groupToggleClick' instead\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\r\n    @Output() public get onGroupToggleClicked(): EventEmitter<{ groupData: DataTableDataItem }> {\r\n        return this.groupToggleClick;\r\n    }\r\n    @Output() public groupToggleClick = new EventEmitter<{ groupData: DataTableDataItem }>();\r\n\r\n    /**\r\n     * @deprecated since 9/25/2019. Please use 'editableRowAdded' instead\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\r\n    @Output() public get onNewEditableRowAdded(): EventEmitter<{ data: any, overrideNewDataHandler: (data: any) => void }> {\r\n        return this.editableRowAdded;\r\n    }\r\n    @Output() public editableRowAdded = new EventEmitter<{ data: any, overrideNewDataHandler: (data: any) => void }>();\r\n\r\n    /**\r\n     * It indicates the columns rendered on the UI.\r\n     */\r\n    public get columns(): QueryList<DataTableColumnComponent> {\r\n        return this.internalColumns;\r\n    }\r\n\r\n    @ContentChildren(DataTableColumnComponent)\r\n    public set columns(value: QueryList<DataTableColumnComponent>) {\r\n        this.internalColumns = value;\r\n        if (this.isComponentInitialized) {\r\n            setTimeout(() => {\r\n                this.processColumns();\r\n            });\r\n        }\r\n    }\r\n\r\n    @ViewChildren(DataTableTemplateLoaderComponent)\r\n    private dataTableTemplateLoaderComponents: QueryList<DataTableTemplateLoaderComponent>;\r\n\r\n    /**\r\n     * It indicates the actual columns used for rendering the table.\r\n     * In grouping data table scenario, the actual columns doesn't contain the grouping column.\r\n     */\r\n    public actualColumns: DataTableColumnComponent[];\r\n\r\n    /**\r\n     * It indicates the item rendered on the UI (including the items in and outside of view port).\r\n     */\r\n    public get renderedItems(): DataTableRenderedItem[] {\r\n        return this.internalRenderedItems;\r\n    }\r\n\r\n    public set renderedItems(value: DataTableRenderedItem[]) {\r\n        this.internalRenderedItems = value || [];\r\n        this.renderedItemsChange.emit();\r\n        setTimeout(() => {\r\n            this.hostElement.nativeElement.setAttribute('aria-rowcount', value.length);\r\n        });\r\n    }\r\n\r\n    public filteredItems: DataTableDataItem[] = [];\r\n\r\n    /**\r\n     * It indicates rendered items are changed.\r\n     */\r\n    @Output()\r\n    public renderedItemsChange = new EventEmitter<void>();\r\n\r\n    /**\r\n     * It indicates whether there are any background busy tasks.\r\n     */\r\n    @Input()\r\n    public isBusy: boolean;\r\n\r\n    /**\r\n     * It indicates whether to enable the right click select\r\n     */\r\n    @Input()\r\n    public enableRightClickSelect = false;\r\n\r\n    /**\r\n     * It indicates the message showing when the data is loading.\r\n     */\r\n    @Input()\r\n    public loadingMessage: string;\r\n\r\n    /**\r\n     * It indicates the message showing when the data loading is finished but the data is empty or no data got rendered.\r\n     */\r\n    @Input()\r\n    public noRecordMessage: string;\r\n\r\n    @Input()\r\n    public editable: boolean;\r\n\r\n    /**\r\n     * It indicates whether to expand tree node on root node checked. This parameter can only be used for tree table.\r\n     */\r\n    @Input()\r\n    public expandTreeNodeOnChecked = true;\r\n\r\n    /**\r\n     * It indicates whether all editable rows in an editable table should be visible (regardless of hover/selected state).\r\n     */\r\n    @Input()\r\n    public isAllEditableRowsVisible: boolean;\r\n\r\n    /**\r\n    * It indicates that a scrollbar can be used when the expected number of columns is huge\r\n    */\r\n    @Input()\r\n    public scrollableHorizontal = false;\r\n\r\n    /**\r\n     * It indicates that a data lazy loading needs to happen and require the consumer to provide data for the lazy loading part.\r\n     */\r\n    @Output()\r\n    public lazyLoadingData: EventEmitter<DataTableLazyLoadEvent> = new EventEmitter<DataTableLazyLoadEvent>();\r\n\r\n    /**\r\n     * It triggers when a tree node is expanded.\r\n     * @deprecated since 9/25/2019. Please use 'nodeExpanded' instead\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\r\n    @Output() public get onNodeExpand(): EventEmitter<{ node: TreeNodeDataItem }> {\r\n        return this.nodeExpanded;\r\n    }\r\n    @Output() public nodeExpanded = new EventEmitter<{ node: TreeNodeDataItem }>();\r\n\r\n    /**\r\n     * It triggers when a tree node is collapsed.\r\n     * @deprecated since 9/25/2019. Please use 'nodeCollapsed' instead\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\r\n    @Output() public get onNodeCollapsed(): EventEmitter<{ node: TreeNodeDataItem }> {\r\n        return this.nodeCollapsed;\r\n    }\r\n    @Output() public nodeCollapsed = new EventEmitter<{ node: TreeNodeDataItem }>();\r\n\r\n    /**\r\n     * It triggers when a tree node is selected.\r\n     * @deprecated since 9/25/2019. Please use 'nodeSelected' instead\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\r\n    @Output() public get onNodeSelect(): EventEmitter<{ node: TreeNodeDataItem }> {\r\n        return this.nodeSelected;\r\n    }\r\n    @Output() public nodeSelected = new EventEmitter<{ node: TreeNodeDataItem }>();\r\n\r\n    /**\r\n     * It indicates the data is loaded in lazy loading way.\r\n     */\r\n    @Input()\r\n    public lazyLoad: boolean;\r\n\r\n    /**\r\n     * It indicates whether to remember the tree toggle status.\r\n     */\r\n    @Input()\r\n    public rememberTreeNodeToggle: boolean;\r\n\r\n    /**\r\n     * It indicates whether to remember the selection then after the whole data source is refreshed the selection will still be there.\r\n     */\r\n    @Input()\r\n    public rememberSelection = true;\r\n\r\n    /**\r\n     * Normally the enter key on a row redirects to the double click behavior of the row.\r\n     * If this flag is true, then data table would do nothing for enter key on a row.\r\n     * Then you need to implement the enter key action by your self.\r\n     */\r\n    @Input()\r\n    public preventEnterKeyForDefaultAction: boolean;\r\n\r\n    /**\r\n     * It points to the external function to generate an unique identity string for any data item.\r\n     * Some scenarios like tree table would need this function to remember toggle status for any tree node by the identity.\r\n     */\r\n    @Input()\r\n    public getItemIdentityFunction: (data: any) => string;\r\n\r\n    /**\r\n     * By default natural sort is turned on.\r\n     * But for performance concern, you may want to disable natural sort and just do very simple string comparison.\r\n     */\r\n    @Input()\r\n    public disableNaturalSort = false;\r\n\r\n    /**\r\n     * Don't enable default tooltips all over WAC by default.\r\n     * TODO: Investigate each case of data table usage and see if can update as needed to allow this to be enabled by default.\r\n     * Enabling by default pre-GA is risky and may introduce regressions though.\r\n     */\r\n    @Input()\r\n    public enableDefaultTooltips = false;\r\n\r\n    /**\r\n     * It indicates the items rendered above the view port.\r\n     */\r\n    public renderedItemsAboveViewPort: DataTableRenderedItem[];\r\n\r\n    /**\r\n     * It indicates the items rendered in and below the view port.\r\n     */\r\n    public renderedItemsInAndBelowViewPort: DataTableRenderedItem[];\r\n\r\n    /**\r\n     * It indicates whether the data table is scrolled down.\r\n     */\r\n    public isScrolledDown: boolean;\r\n\r\n    /**\r\n     * It indicates whether the data table should handle scrolling for content.\r\n     */\r\n    public shouldScroll: boolean;\r\n\r\n    /**\r\n     * It indicates whether the last focusable shadow element should be used.\r\n     * Normally when the data table is the last focusable element,\r\n     * the last focusable element need to be used to handle focus movement.\r\n     */\r\n    public shouldUseLastFocusableShadowElement: boolean;\r\n\r\n    /**\r\n     * It indicates whether to scroll to selection after sorting.\r\n     */\r\n    @Input()\r\n    public shouldScrollToSelectionAfterSorting: boolean;\r\n\r\n    /**\r\n     * It gets and sets the global filter value html element.\r\n     */\r\n    @Input()\r\n    public get globalFilter(): any {\r\n        return this.internalGlobalFilter;\r\n    }\r\n\r\n    public set globalFilter(globalFilter: any) {\r\n        const eventHandler = (event => {\r\n            clearTimeout(this.filterDebounceTimer);\r\n            this.filterDebounceTimer = setTimeout(\r\n                () => {\r\n                    doSearch(globalFilter['value']);\r\n                },\r\n                this.filterDebounceTimeout);\r\n        }).bind(this);\r\n\r\n        const doSearch = (keyword: string) => {\r\n            this.filterKeyword = keyword;\r\n            if (this.filterKeyword !== this.oldFilterKeyword) {\r\n                this.clearSelection();\r\n                this.filter.emit(this.filterKeyword);\r\n                if (this.isComponentInitialized) {\r\n                    this.renderItems(false, true);\r\n                }\r\n            }\r\n            this.oldFilterKeyword = this.filterKeyword;\r\n        };\r\n\r\n        this.internalGlobalFilter = globalFilter;\r\n        if (globalFilter) {\r\n            if (globalFilter instanceof SearchFormFieldComponent) {\r\n                this.globalFilterSubscriber = globalFilter.search.subscribe(keyword => {\r\n                    globalFilter.searching = true;\r\n                    setTimeout(() => {\r\n                        doSearch(keyword);\r\n                        globalFilter.searching = false;\r\n                    });\r\n                });\r\n            } else {\r\n                globalFilter.addEventListener('keyup', eventHandler);\r\n                globalFilter.addEventListener('paste', eventHandler);\r\n\r\n                this.eventUnregistraterHandlers.push(() => {\r\n                    globalFilter.removeEventListener('keyup', eventHandler);\r\n                    globalFilter.removeEventListener('paste', eventHandler);\r\n                });\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It gets and sets the Case Sensitive flag for filtering.\r\n     */\r\n    @Input()\r\n    public caseSensitiveFilter: boolean;\r\n\r\n    /**\r\n     * It indicates whether the data table should be rendered as a tree data table.\r\n     */\r\n    @Input()\r\n    public showAsTree: boolean;\r\n\r\n    /**\r\n     * It indicates the data structure for the new item\r\n     */\r\n    @Input()\r\n    public editableNewDataItem: DataTableDataItem;\r\n\r\n    /**\r\n     * It gets and sets the data source of the data table.\r\n     */\r\n    @Input()\r\n    public get items(): DataTableDataItem[] {\r\n        return this.editable ? this.internalItems.map(item => item.content) : this.internalItems;\r\n    }\r\n\r\n    public set items(value: DataTableDataItem[]) {\r\n        if (!this.rememberSelection) {\r\n            this.removeHighlightFromRow();\r\n        }\r\n\r\n        this.actualItems = value;\r\n\r\n        let isSelectionChangedAfterRefreshing = false;\r\n\r\n        // TODO: need to refactor to reduce the nested if blocks.\r\n        if (this.getItemIdentityFunction) {\r\n            let selectionIdentityToRemember: string;\r\n            let selectionIdentitiesToRemember: string[] = [];\r\n\r\n            if (this.rememberSelection) {\r\n                if (this.selectionMode === DataTableMultipleSelectMode.Multiple) {\r\n                    if (Array.isArray(this.selection) && this.selection.length) {\r\n                        selectionIdentitiesToRemember = [];\r\n                        this.selection.forEach(item => {\r\n                            if (this.showAsTree) {\r\n                                selectionIdentitiesToRemember.push(this.getItemIdentityFunction(item.data));\r\n                            } else {\r\n                                selectionIdentitiesToRemember.push(this.getItemIdentityFunction(item));\r\n                            }\r\n                        });\r\n                    }\r\n                } else if (!MsftSme.isNullOrUndefined(this.selection)) {\r\n                    if (this.showAsTree) {\r\n                        selectionIdentityToRemember = this.getItemIdentityFunction(this.selection.data);\r\n                    } else {\r\n                        selectionIdentityToRemember = this.getItemIdentityFunction(this.selection);\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (!this.editable) {\r\n                this.internalItems = value;\r\n            } else {\r\n                this.internalItems = value.map(item => {\r\n                    return <EditableDataItem>{\r\n                        id: MsftSme.newGuid(),\r\n                        content: item,\r\n                        validationAlerts: {}\r\n                    };\r\n                });\r\n            }\r\n\r\n            if (this.items) {\r\n                if (this.rememberSelection && this.getItemIdentityFunction) {\r\n                    this.internalSelection = [];\r\n\r\n                    if (this.selectionMode === DataTableMultipleSelectMode.Multiple) {\r\n                        if (selectionIdentitiesToRemember.length) {\r\n                            if (this.showAsTree) {\r\n                                const nodesToProcess = this.items.slice(0);\r\n\r\n                                while (nodesToProcess.length) {\r\n                                    const currentNode = nodesToProcess[0];\r\n                                    nodesToProcess.splice(0, 1);\r\n\r\n                                    const index = selectionIdentitiesToRemember.indexOf(this.getItemIdentityFunction(currentNode.data));\r\n                                    if (index !== -1) {\r\n                                        this.handleTreeNodeSelection(currentNode, true, true);\r\n                                        selectionIdentitiesToRemember.splice(index, 1);\r\n                                    } else {\r\n                                        isSelectionChangedAfterRefreshing = true;\r\n                                    }\r\n                                    if (!selectionIdentitiesToRemember.length) {\r\n                                        break;\r\n                                    }\r\n\r\n                                    if (currentNode.children) {\r\n                                        currentNode.children.forEach(item => {\r\n                                            item.parent = currentNode;\r\n                                            nodesToProcess.push(item);\r\n                                        });\r\n                                    }\r\n                                }\r\n                            } else {\r\n                                for (const item of this.items) {\r\n                                    const index = selectionIdentitiesToRemember.indexOf(this.getItemIdentityFunction(item));\r\n                                    if (index !== -1) {\r\n                                        this.selection.push(item);\r\n                                        selectionIdentitiesToRemember.splice(index, 1);\r\n                                    } else {\r\n                                        isSelectionChangedAfterRefreshing = true;\r\n                                    }\r\n                                    if (!selectionIdentitiesToRemember.length) {\r\n                                        break;\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                    } else {\r\n                        isSelectionChangedAfterRefreshing = true;\r\n                        if (selectionIdentityToRemember) {\r\n                            if (this.showAsTree) {\r\n                                const nodesToProcess = this.items.slice(0);\r\n                                while (nodesToProcess.length) {\r\n                                    const currentNode = nodesToProcess[0];\r\n                                    nodesToProcess.splice(0, 1);\r\n\r\n                                    if (this.getItemIdentityFunction(currentNode.data) === selectionIdentityToRemember) {\r\n                                        this.selection = currentNode;\r\n                                        // If the selection is found in the refresh items, then it means the selection is not changed.\r\n                                        isSelectionChangedAfterRefreshing = false;\r\n                                        break;\r\n                                    }\r\n\r\n                                    if (currentNode.children) {\r\n                                        currentNode.children.forEach(item => {\r\n                                            nodesToProcess.push(item);\r\n                                        });\r\n                                    }\r\n                                }\r\n                            } else {\r\n                                this.items.forEach(item => {\r\n                                    if (this.getItemIdentityFunction(item) === selectionIdentityToRemember) {\r\n                                        this.selection = item;\r\n                                        // If the selection is found in the refresh items, then it means the selection is not changed.\r\n                                        isSelectionChangedAfterRefreshing = false;\r\n                                    }\r\n                                });\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        } else {\r\n            let selectionItemToRemember: DataTableDataItem;\r\n            let selectionItemsToRemember: DataTableDataItem[] = [];\r\n\r\n            if (this.rememberSelection) {\r\n                if (this.selectionMode === DataTableMultipleSelectMode.Multiple) {\r\n                    if (Array.isArray(this.selection) && this.selection.length) {\r\n                        selectionItemsToRemember = [];\r\n                        this.selection.forEach(item => {\r\n                            if (this.showAsTree) {\r\n                                selectionItemsToRemember.push(item.data);\r\n                            } else {\r\n                                selectionItemsToRemember.push(item);\r\n                            }\r\n                        });\r\n                    }\r\n                } else {\r\n                    if (!MsftSme.isNullOrUndefined(this.selection)) {\r\n                        if (this.showAsTree) {\r\n                            selectionItemToRemember = this.selection.data;\r\n                        } else {\r\n                            selectionItemToRemember = this.selection;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (!this.editable) {\r\n                this.internalItems = value;\r\n            } else {\r\n                this.internalItems = value.map(item => {\r\n                    return <EditableDataItem>{\r\n                        id: MsftSme.newGuid(),\r\n                        content: item,\r\n                        validationAlerts: {}\r\n                    };\r\n                });\r\n            }\r\n\r\n            if (this.items) {\r\n                if (this.rememberSelection) {\r\n                    this.internalSelection = [];\r\n\r\n                    if (this.selectionMode === DataTableMultipleSelectMode.Multiple) {\r\n                        if (selectionItemsToRemember.length) {\r\n                            if (this.showAsTree) {\r\n                                const nodesToProcess = this.internalItems.slice(0);\r\n\r\n                                while (nodesToProcess.length) {\r\n                                    const currentNode = nodesToProcess[0];\r\n                                    nodesToProcess.splice(0, 1);\r\n\r\n                                    const index = selectionItemsToRemember.indexOf(currentNode.data);\r\n                                    if (index !== -1) {\r\n                                        this.handleTreeNodeSelection(currentNode, true, true);\r\n                                        selectionItemsToRemember.splice(index, 1);\r\n                                    } else {\r\n                                        isSelectionChangedAfterRefreshing = true;\r\n                                    }\r\n                                    if (!selectionItemsToRemember.length) {\r\n                                        break;\r\n                                    }\r\n\r\n                                    if (currentNode.children) {\r\n                                        currentNode.children.forEach(item => {\r\n                                            item.parent = currentNode;\r\n                                            nodesToProcess.push(item);\r\n                                        });\r\n                                    }\r\n                                }\r\n                            } else {\r\n                                for (const item of this.items) {\r\n                                    const index = selectionItemsToRemember.indexOf(item);\r\n                                    if (index !== -1) {\r\n                                        this.selection.push(item);\r\n                                        selectionItemsToRemember.splice(index, 1);\r\n                                    } else {\r\n                                        isSelectionChangedAfterRefreshing = true;\r\n                                    }\r\n                                    if (!selectionItemsToRemember.length) {\r\n                                        break;\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                    } else {\r\n                        isSelectionChangedAfterRefreshing = true;\r\n                        if (selectionItemToRemember) {\r\n                            if (this.showAsTree) {\r\n                                const nodesToProcess = this.items.slice(0);\r\n                                while (nodesToProcess.length) {\r\n                                    const currentNode = nodesToProcess[0];\r\n                                    nodesToProcess.splice(0, 1);\r\n\r\n                                    if (currentNode.data === selectionItemToRemember) {\r\n                                        // If the selection is found in the refresh items, then it means the selection is not changed.\r\n                                        isSelectionChangedAfterRefreshing = false;\r\n                                        this.selection = currentNode;\r\n                                        break;\r\n                                    }\r\n\r\n                                    if (currentNode.children) {\r\n                                        currentNode.children.forEach(item => {\r\n                                            nodesToProcess.push(item);\r\n                                        });\r\n                                    }\r\n                                }\r\n                            } else {\r\n                                isSelectionChangedAfterRefreshing = true;\r\n                                this.items.forEach(item => {\r\n                                    if (item === selectionItemToRemember) {\r\n                                        // If the selection is found in the refresh items, then it means the selection is not changed.\r\n                                        isSelectionChangedAfterRefreshing = false;\r\n                                        this.selection = item;\r\n                                    }\r\n                                });\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        this.resetEditableDataChangeset();\r\n\r\n        if (isSelectionChangedAfterRefreshing) {\r\n            this.selectionChange.emit(this.selection);\r\n        }\r\n\r\n        if (this.isComponentInitialized) {\r\n            this.renderItems(false, true);\r\n        }\r\n    }\r\n\r\n    @Output()\r\n    public itemsChange = new EventEmitter<any>();\r\n\r\n    /**\r\n     * It exposes the enum type then in template we can directly refer to the enum value name instead of enum value number.\r\n     */\r\n    public sortModeEnum: any = DataTableSortMode;\r\n\r\n    /**\r\n     * It exposes the enum type then in template we can directly refer to the enum value name instead of enum value number.\r\n     */\r\n    public renderedItemTypeEnum: any = DataTableRenderedItemType;\r\n\r\n    /**\r\n     * It gets and sets the selection of the data source.\r\n     */\r\n    @Input()\r\n    public get selection(): DataTableDataItem | DataTableDataItem[] {\r\n        if (this.selectionMode === DataTableMultipleSelectMode.Multiple) {\r\n            return this.editable ? this.internalSelection.map(item => item.content) : this.internalSelection;\r\n        }\r\n\r\n        if (this.internalSelection.length > 0) {\r\n            return this.editable ? this.internalSelection[0].content : this.internalSelection[0];\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    public set selection(selection: DataTableDataItem | DataTableDataItem[]) {\r\n        if (this.selectionMode === DataTableMultipleSelectMode.Multiple) {\r\n            if (this.editable) {\r\n                const selectionContent = selection.map(s => s.content);\r\n                this.internalSelection = this.internalItems.filter(item => selectionContent.indexOf(item.content) !== -1);\r\n            } else {\r\n                this.internalSelection = selection || [];\r\n\r\n                if (this.showAsTree) {\r\n                    this.filteredItems.forEach(item => {\r\n                        this.handleTreeNodeSelection(\r\n                            item,\r\n                            false,\r\n                            true,\r\n                            !this.linkParentChildrenSelections,\r\n                            selection.map(selectionItem => selectionItem.data));\r\n                    });\r\n                }\r\n            }\r\n        } else {\r\n            if (this.editable) {\r\n                const actualSelection = this.internalItems.filter(item => item.content === selection)[0];\r\n                this.internalSelection = actualSelection ? [actualSelection] : [];\r\n            } else {\r\n                this.internalSelection = selection ? [selection] : [];\r\n            }\r\n        }\r\n\r\n        this.updateActiveRenderedItemIndexBySelection();\r\n        this.selectionChange.emit(selection);\r\n    }\r\n\r\n    @Input()\r\n    public get selectionMode(): string | DataTableMultipleSelectMode {\r\n        return this.internalSelectionMode;\r\n    }\r\n    public set selectionMode(value: string | DataTableMultipleSelectMode) {\r\n        this.internalSelectionMode = value;\r\n\r\n        // The following code is a temp code to solve the problem that:\r\n        // when the data table is multiple selection mode and an initial array value is assigned to the selection property,\r\n        // at that moment the selectionMode property is not set to multiple selection mode value, yet.\r\n        // So we treat the initial array value as a member of the selection array instead of the selection array.\r\n        // So we use the following code to fix this problem.\r\n        // TODO: long term wise, we need to use seperated selection properties to maintain the selections of selection\r\n        // selection and multiple selection.\r\n        // This change will happen in the coming release.\r\n        if (value === DataTableMultipleSelectMode.Multiple) {\r\n            if (Array.isArray(this.internalSelection) && this.internalSelection.length === 1 && Array.isArray(this.internalSelection[0])) {\r\n                this.internalSelection = this.internalSelection[0];\r\n            }\r\n        }\r\n    }\r\n\r\n    @Input()\r\n    public defaultSortColumn: DataTableColumnComponent;\r\n\r\n    @Input()\r\n    public defaultSortMode: DataTableSortMode;\r\n\r\n    /**\r\n     * It emits the event when filtering is happening.\r\n    /**\r\n     * It triggers when a tree node is selected.\r\n     * @deprecated since 9/25/2019. Please use 'filter' instead\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\r\n    @Output() public get onFilter(): EventEmitter<string> {\r\n        return this.filter;\r\n    }\r\n    @Output() public filter = new EventEmitter<string>();\r\n\r\n    @Output()\r\n    public doCustomSort: EventEmitter<DataTableCustomSortEvent> = new EventEmitter<DataTableCustomSortEvent>();\r\n\r\n    /**\r\n     * It emits the event when a row is selected.\r\n     * @deprecated since 9/25/2019. Please use 'rowSelected' instead\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\r\n    @Output() public get onRowSelect(): EventEmitter<{ data: DataTableDataItem }> {\r\n        return this.rowSelected;\r\n    }\r\n    @Output() public rowSelected = new EventEmitter<{ data: DataTableDataItem }>();\r\n\r\n    /**\r\n     * It emits the event when a row is unselected and no row is selected.\r\n     * @deprecated since 9/25/2019. Please use 'rowUnselected' instead\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\r\n    @Output() public get onRowUnselect(): EventEmitter<{ data: DataTableDataItem }> {\r\n        return this.rowUnselected;\r\n    }\r\n    @Output() public rowUnselected = new EventEmitter<{ data: DataTableDataItem }>();\r\n\r\n    /**\r\n     * It gets or sets the group column.\r\n     */\r\n    @Input()\r\n    public get groupColumn(): DataTableColumnComponent {\r\n        return this.internalGroupColumn;\r\n    }\r\n    public set groupColumn(value: DataTableColumnComponent) {\r\n        if (this.internalGroupColumn !== value) {\r\n            this.internalGroupColumn = value;\r\n            if (this.columnsOrder && this.columnsOrder.length > 0) {\r\n                this.processColumnsMain();\r\n            } else {\r\n                this.processColumns();\r\n            }\r\n            if (this.isComponentInitialized) {\r\n                this.renderItems(false, true);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It gets or sets the group sort mode.\r\n     */\r\n    @Input()\r\n    public get groupSortMode(): DataTableSortMode {\r\n        return this.internalGroupSortMode;\r\n    }\r\n    public set groupSortMode(value: DataTableSortMode) {\r\n        this.internalGroupSortMode = value;\r\n        if (this.isComponentInitialized) {\r\n            this.renderItems(false, true);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It indicates whether the group toggle should be used to expand or collapse the group.\r\n     */\r\n    @Input()\r\n    public useGroupToggle: boolean;\r\n\r\n    /**\r\n     * It indicates whether to show the header.\r\n     */\r\n    @Input()\r\n    public showHeader = true;\r\n\r\n    /**\r\n     * It indicates the \"aria-labelledby\" value for the table.\r\n     */\r\n    @Input()\r\n    public get tableAriaLabelledBy(): string {\r\n        return this.internalTableAriaLabelledBy;\r\n    }\r\n    public set tableAriaLabelledBy(value: string) {\r\n        this.internalTableAriaLabelledBy = value;\r\n        this.updateAriaAttributes();\r\n    }\r\n\r\n    /**\r\n     * It indicates the \"aria-label\" value for the table.\r\n     */\r\n    @Input()\r\n    public get tableAriaLabel(): string {\r\n        return this.internalTableAriaLabel;\r\n    }\r\n    public set tableAriaLabel(value: string) {\r\n        this.internalTableAriaLabel = value;\r\n        this.updateAriaAttributes();\r\n    }\r\n\r\n    /**\r\n     * It indicates should the data table has the grid.\r\n     */\r\n    @Input()\r\n    public showGrid = true;\r\n\r\n    /**\r\n     * It indicates whether to show the \"all item\" checkbox.\r\n     */\r\n    @Input()\r\n    public showAllItemCheckbox = true;\r\n\r\n    /**\r\n     * It indicates whether to check the item and uncheck other items when the current item is checked.\r\n     */\r\n    @Input()\r\n    public selectAndCheck = true;\r\n\r\n    /**\r\n     * It indicates the row height for each item.\r\n     */\r\n    @Input()\r\n    public rowHeight = 30;\r\n\r\n    /**\r\n     * It indicates whether to link the selections of parent nodes and child nodes.\r\n     * It only apply to tree table scenario.\r\n     */\r\n    @Input()\r\n    public linkParentChildrenSelections = true;\r\n\r\n    /**\r\n     * It indicates whether to select the item when navigating with the keyboard (e.g. arrow keys, home, end, page up, page down)\r\n     */\r\n    @Input()\r\n    public selectItemWhenNavigatingWithKeyboard = true;\r\n\r\n    /**\r\n     * It indicates whether the data table is scrollable.\r\n     */\r\n    @Input()\r\n    public scrollable = true;\r\n\r\n    /**\r\n     * It indicates whether the data table's UI virtualization should be disabled.\r\n     */\r\n    @Input()\r\n    public disableUIVirtualization = false;\r\n\r\n    /**\r\n     * It indicates whether the data table items are selectable\r\n     */\r\n    @Input()\r\n    public selectable = true;\r\n\r\n    /**\r\n     * It indicates whether the editable data table allow automatically adding new rows\r\n     * Setting this to false then have to create new line outside of the datatable control\r\n     */\r\n    @Input()\r\n    public editableAutoNewRow = true;\r\n\r\n    /**\r\n     * It indicates the default status of the group toggle.\r\n     */\r\n    @Input()\r\n    public defaultGroupToggleExpanded = true;\r\n\r\n    @Input()\r\n    public autoRowHeight = false;\r\n\r\n    private columnsOrder: Array<string> = [];\r\n\r\n    public groupToggleStatus: { [group: string]: boolean } = {};\r\n    public nodeNavigatingTask: NodeNavigatingTask;\r\n    public isColumnWidthCalculated = false;\r\n\r\n    private changeDetector: ChangeDetectorRef;\r\n\r\n    private ngZone: NgZone;\r\n\r\n    private layout: Layout;\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n\r\n        this.changeDetector = injector.get(ChangeDetectorRef);\r\n        this.ngZone = injector.get(NgZone);\r\n        this.layout = injector.get(SME_LAYOUT_PROVIDER, null, { optional: true });\r\n    }\r\n\r\n    public getEditableDataChangeSet(): EditableDataChangeSet {\r\n        return this.editable ? this.editableDataChangeSet : null;\r\n    }\r\n\r\n    public refreshData(): void {\r\n        if (this.isComponentInitialized) {\r\n            this.renderItems(true, true);\r\n        }\r\n    }\r\n\r\n    public resetScroll(): void {\r\n        // Set the scrollTop(distance from the element's top to its topmost visible content)\r\n        // of Scroll container to 0.\r\n        this.scrollContainerElement.nativeElement.scrollTop = 0;\r\n\r\n        // No need to reset 'this.currentStartIndexOfItemInViewPort' to 0, as it will automatically get\r\n        // adjusted to 0 in 'calculateItemInViewPort()'.\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        super.ngOnInit();\r\n\r\n        if (this.editable) {\r\n            this.disableUIVirtualization = true;\r\n            this.getItemIdentityFunction = data => {\r\n                return data.id;\r\n            };\r\n        }\r\n\r\n        if (this.showAsTree) {\r\n            this.hostElement.nativeElement.setAttribute('role', 'treegrid');\r\n        } else if (this.selectable) {\r\n            this.hostElement.nativeElement.setAttribute('role', 'grid');\r\n        } else {\r\n            this.hostElement.nativeElement.setAttribute('role', 'table');\r\n        }\r\n\r\n        if (this.layout) {\r\n            this.DataTableResponsiveWindowManager = new DataTableResponsiveWindowManager(this.layout);\r\n            // on parent layout changes, re-emit the layout change to our event\r\n            this.subscriptions.push(this.layout.layoutChanged.subscribe((() => this.onLayoutChanged())));\r\n            // on window break point changes, emit the event about critical classes and styling updates signal.\r\n            this.subscriptions.push(this.layout.windowBreakpointChanged.subscribe(() => this.onWindowBreakpointChanged()));\r\n\r\n            this.deferredOnLayoutChanged();\r\n        }\r\n\r\n        this.subscriptions.push(\r\n            /*\r\n             * As the user scrolls on the x axis of the body of the table, we\r\n             * need to move the corresponding column headers of the table into\r\n             * view.\r\n             */\r\n            fromEvent(this.scrollContainerElement.nativeElement, 'scroll')\r\n                .subscribe((event) => {\r\n                    this.renderer.setStyle(\r\n                        this.headerElement.nativeElement,\r\n                        'margin-left',\r\n                        `${-this.scrollContainerElement.nativeElement.scrollLeft}px`);\r\n                })\r\n        );\r\n\r\n        if (this.defaultSortColumn && this.defaultSortMode) {\r\n            this.sortColumn = this.defaultSortColumn;\r\n            this.sortColumn.sortMode = this.defaultSortMode;\r\n        }\r\n\r\n        this.updateActiveRenderedItemIndexBySelection();\r\n\r\n        if (this.accessibilityManager) {\r\n            this.unregisterOnElementFocusingEventHandler =\r\n                this.accessibilityManager.registerElementFocusingEvent(this.onElementFocusing.bind(this));\r\n        }\r\n\r\n        this.updateAriaAttributes();\r\n\r\n        // TODO: look into improvements, adding setTimeout here makes the component life cycle hard to manage\r\n        setTimeout(() => {\r\n            const nextElement = Dom.getNextFocusableElementInTrap(this.scrollDataElement.nativeElement);\r\n            this.shouldUseLastFocusableShadowElement = !nextElement;\r\n            this.processColumns();\r\n            this.calculateColumnDomWidths();\r\n        });\r\n    }\r\n\r\n    /**\r\n     * It calculates the actual selected row from the data table data and apply proper css class to it visually.\r\n     * @param renderedItem the rendered item for the data table.\r\n     * @returns true if the row should be displayed as selected, false otherwise.\r\n     */\r\n    public rowDisplayAsSelected(renderedItem: DataTableRenderedItem): boolean {\r\n        return renderedItem.index === this.getActiveRenderedItemIndex() && this.selectionMode === DataTableMultipleSelectMode.Single &&\r\n            (!this.showAsTree || this.showAsTree && !this.selectedTreeNodeParentCollapsed) || this.isItemSelected(renderedItem);\r\n    }\r\n\r\n    public onHeaderTablePressed(event: KeyboardEvent): void {\r\n        let shouldPreventDefaultKeyboardAction = false;\r\n\r\n        switch (event.keyCode) {\r\n            case KeyCode.DownArrow:\r\n                shouldPreventDefaultKeyboardAction = true;\r\n                this.moveToNextRenderedItem(true, -1);\r\n                break;\r\n            case KeyCode.LeftArrow:\r\n            case KeyCode.UpArrow:\r\n                shouldPreventDefaultKeyboardAction = true;\r\n                this.moveToHeadOfRenderedItems();\r\n                setTimeout(() => {\r\n                    const currentElement = <HTMLElement>event.target;\r\n                    const nextElement = Dom.getPreviousZoneElement(currentElement);\r\n                    nextElement.focus();\r\n                });\r\n                break;\r\n            case KeyCode.RightArrow:\r\n                shouldPreventDefaultKeyboardAction = true;\r\n                this.moveToHeadOfRenderedItems();\r\n                setTimeout(() => {\r\n                    const currentElement = <HTMLElement>event.target;\r\n                    const nextElement = Dom.getNextZoneElement(currentElement);\r\n                    nextElement.focus();\r\n                });\r\n                break;\r\n        }\r\n\r\n        if (shouldPreventDefaultKeyboardAction) {\r\n            event.stopPropagation();\r\n            event.preventDefault();\r\n        }\r\n    }\r\n\r\n    public onContentTableKeyUp(event: KeyboardEvent): void {\r\n        this.dataTableAccessibilityManager.onContentTableKeyUp(event, this.contentElement, this.editable);\r\n    }\r\n\r\n    private arbitraryScroll(scrollTop: number, isIncrement?: boolean) {\r\n        if (isIncrement === undefined) {\r\n            this.scrollContainerElement.nativeElement.scrollTop = scrollTop;\r\n        } else if (!isIncrement) {\r\n            const diff = this.scrollContainerElement.nativeElement.offsetHeight - this.scrollContainerElement.nativeElement.scrollTop;\r\n            if (diff > scrollTop) {\r\n                this.scrollContainerElement.nativeElement.scrollTop += scrollTop;\r\n            } else if (diff <= scrollTop) {\r\n                this.scrollContainerElement.nativeElement.scrollTop = this.scrollContainerElement.nativeElement.offsetHeight;\r\n            }\r\n        } else {\r\n            const diff = this.scrollContainerElement.nativeElement.scrollTop - scrollTop;\r\n            if (diff > scrollTop) {\r\n                this.scrollContainerElement.nativeElement.scrollTop -= scrollTop;\r\n            } else if (diff <= scrollTop) {\r\n                this.scrollContainerElement.nativeElement.scrollTop = 0;\r\n            }\r\n        }\r\n        this.calculateItemInViewPort();\r\n    }\r\n\r\n    public onContentTablePressed(event: KeyboardEvent): void {\r\n        if (event.keyCode !== KeyCode.Ctrl && event.keyCode !== KeyCode.Shift) {\r\n            CoreEnvironment.accessibilityManager.changeAccessibilityMode(true);\r\n        }\r\n\r\n        const targetElement = <HTMLElement>event.target;\r\n        const currentRow = Dom.getSpecificAncestor(targetElement, element => element.classList.contains('sme-table-row'));\r\n        // ctrlKey for single selection mode works fine\r\n        // ctrlKey for multiple selection will be regarded as select all rows that\r\n        // will be handled not here.\r\n        if (this.editable && !event.ctrlKey) {\r\n            const shouldReturn = this.dataTableAccessibilityManager\r\n                .editableDataTableOnContentTablePressedHandler(event, targetElement, currentRow, this.lastFocusableShadowElement);\r\n            if (shouldReturn) {\r\n                return;\r\n            }\r\n        }\r\n\r\n        if (event.keyCode === KeyCode.Ctrl || event.keyCode === KeyCode.Shift) {\r\n            event.stopPropagation();\r\n            return;\r\n        }\r\n        let shouldPreventDefaultKeyboardAction = false;\r\n        let shouldHandleMultipleSelection = false;\r\n\r\n        const currentRenderedItem = this.renderedItems[this.getActiveRenderedItemIndex()];\r\n\r\n        this.previousActiveRenderedItemIndex = this.activeRenderedItemIndex;\r\n        // For now assuming tree table first focus on row and then\r\n        // the user has to hit enter/space to select this focused item\r\n        // For other type of table will first select and then automatically focus by default\r\n        const selectAndFocus = !this.showAsTree;\r\n\r\n        // Only the scrolling related navigation keyboard operations need debouncing.\r\n        switch (event.keyCode) {\r\n            case KeyCode.A:\r\n                // This is the select all handler\r\n                // This should also handle when editable datatable and the focus is in sme-form-field\r\n                if (event.ctrlKey) {\r\n                    if (this.editable && this.dataTableAccessibilityManager.isSmeFormField(targetElement)) {\r\n                        event.stopPropagation();\r\n                    } else if (!event.altKey && !event.shiftKey\r\n                        && this.selectionMode === DataTableMultipleSelectMode.Multiple) {\r\n                        shouldPreventDefaultKeyboardAction = true;\r\n                        this.selectAll();\r\n                    }\r\n                }\r\n                break;\r\n            case KeyCode.Home:\r\n                shouldPreventDefaultKeyboardAction = true;\r\n                if (!this.navigationKeyboardDebouncing) {\r\n                    this.moveToHeadOfRenderedItems(selectAndFocus);\r\n                    shouldHandleMultipleSelection = true;\r\n                }\r\n                break;\r\n            case KeyCode.UpArrow:\r\n                shouldPreventDefaultKeyboardAction = true;\r\n                if (!this.navigationKeyboardDebouncing) {\r\n                    if (event.altKey && event.ctrlKey) {\r\n                        // scroll up\r\n                        this.arbitraryScroll(this.defaultScrollPixels, true);\r\n                    } else if (this.getActiveRenderedItemIndex() > 0 || this.getActiveFocusedItemIndex() > 0) {\r\n                        this.moveToPreviousRenderedItem(selectAndFocus);\r\n                        shouldHandleMultipleSelection = true;\r\n                    } else {\r\n                        setTimeout(() => {\r\n                            const currentElement = <HTMLElement>event.target;\r\n                            const previousElement = Dom.getPreviousZoneElement(currentElement);\r\n                            previousElement.focus();\r\n                        });\r\n                    }\r\n                }\r\n                break;\r\n            case KeyCode.DownArrow:\r\n                shouldPreventDefaultKeyboardAction = true;\r\n                if (!this.navigationKeyboardDebouncing) {\r\n                    if (event.altKey && event.ctrlKey) {\r\n                        // scroll down\r\n                        this.arbitraryScroll(this.defaultScrollPixels, false);\r\n                    } else {\r\n                        // if with shiftKey means needs selection\r\n                        this.moveToNextRenderedItem(event.shiftKey ? true : selectAndFocus);\r\n                        shouldHandleMultipleSelection = true;\r\n                    }\r\n                }\r\n                break;\r\n            case KeyCode.PageUp:\r\n                shouldPreventDefaultKeyboardAction = true;\r\n                if (!this.navigationKeyboardDebouncing) {\r\n                    this.moveToPreviousPageOfRenderedItems(selectAndFocus);\r\n                    shouldHandleMultipleSelection = true;\r\n                }\r\n                break;\r\n            case KeyCode.PageDown:\r\n                if ((<HTMLElement>event.srcElement).classList.contains('sme-table-row')) {\r\n                    shouldPreventDefaultKeyboardAction = true;\r\n                    if (!this.navigationKeyboardDebouncing) {\r\n                        this.moveToNextPageOfRenderedItems(selectAndFocus);\r\n                        shouldHandleMultipleSelection = true;\r\n                    }\r\n                }\r\n                break;\r\n            case KeyCode.End:\r\n                shouldPreventDefaultKeyboardAction = true;\r\n                if (!this.navigationKeyboardDebouncing) {\r\n                    this.moveToEndOfRenderedItems(selectAndFocus);\r\n                    shouldHandleMultipleSelection = true;\r\n                }\r\n                break;\r\n            case KeyCode.Space:\r\n            case KeyCode.Enter:\r\n                shouldPreventDefaultKeyboardAction = this.onContentTablePressedEnterSpace(currentRenderedItem,\r\n                    selectAndFocus, event, targetElement);\r\n                break;\r\n            case KeyCode.LeftArrow:\r\n                shouldPreventDefaultKeyboardAction = true;\r\n                this.onContentTablePressedLeftArrow(currentRenderedItem, targetElement, currentRow);\r\n                break;\r\n            case KeyCode.RightArrow:\r\n                shouldPreventDefaultKeyboardAction = true;\r\n                this.onContentTablePressedRightArrow(currentRenderedItem, targetElement, currentRow);\r\n                break;\r\n        }\r\n\r\n        if (shouldHandleMultipleSelection) {\r\n            if (event.shiftKey) {\r\n                // For the tree table now we first focus and then use the right arrow key or enter or space to select\r\n                // Because the logic before here only did an arrow up/down key, we need the selection happening as well\r\n                if (this.showAsTree) {\r\n                    this.onContentTablePressedShowAsTreeHelper();\r\n                }\r\n                this.selectItem(event, this.renderedItems[this.activeRenderedItemIndex]);\r\n                if (event.keyCode === KeyCode.UpArrow) {\r\n                    this.activeFocusedItemIndex--;\r\n                } else if (event.keyCode === KeyCode.DownArrow) {\r\n                    this.activeFocusedItemIndex++;\r\n                }\r\n            } else {\r\n                this.shiftMultipleSelectStartIndex = this.activeRenderedItemIndex;\r\n            }\r\n        }\r\n\r\n        if (shouldPreventDefaultKeyboardAction) {\r\n            event.stopPropagation();\r\n            event.preventDefault();\r\n            this.navigationKeyboardDebouncing = true;\r\n            this.changeDetector.detectChanges();\r\n            setTimeout(\r\n                () => {\r\n                    this.navigationKeyboardDebouncing = false;\r\n                },\r\n                this.keyboardNavigationDebounceTimeout);\r\n        }\r\n    }\r\n\r\n    private onContentTablePressedShowAsTreeHelper() {\r\n        // If tree table and the current focused element index is different from the selected one\r\n        // Will select the row based on focused element\r\n        if (this.activeFocusedItemIndex !== this.activeRenderedItemIndex) {\r\n            this.setActiveRenderedItemIndex(this.activeFocusedItemIndex);\r\n            this.activateRenderedItemByIndex(this.activeRenderedItemIndex, true);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It handles the keyboard press event for enter and space\r\n     * To trigger this function, either focus on table row or table row cell template and\r\n     * click the 'enter' or 'space' button.\r\n     */\r\n    private onContentTablePressedEnterSpace(currentRenderedItem: DataTableRenderedItem, selectAndFocus: boolean,\r\n        event: KeyboardEvent, targetElement: HTMLElement): boolean {\r\n        // if false, focused on table row cell template\r\n        // if true, focused on table row item component\r\n        let focusedOnRowComponent = false;\r\n        if (targetElement && targetElement.classList && targetElement.classList.contains('sme-table-row')) {\r\n            focusedOnRowComponent = true;\r\n        }\r\n        let shouldPreventDefaultKeyboardAction = false;\r\n\r\n        if (event && event.keyCode) {\r\n            if (event.keyCode === KeyCode.Space) {\r\n                // The default behavior of space on a data table is to move to the next page\r\n                // Our data table behaves exactly the same as windows 10 file explorer\r\n                // On space/enter will both select the current row.\r\n                // So always decline default function for space keyboard event as long as focus is on the row because\r\n                // we do not need the move to the next page behavior\r\n                if (focusedOnRowComponent) {\r\n                    shouldPreventDefaultKeyboardAction = true;\r\n                }\r\n            }\r\n            // If KeyCode is Enter, just remain the current value of shouldPreventDefaultKeyboardAction\r\n            // No need to disable the enter key default function\r\n        }\r\n\r\n        if (this.showAsTree) {\r\n            this.onContentTablePressedShowAsTreeHelper();\r\n            currentRenderedItem = this.renderedItems[this.getActiveRenderedItemIndex()];\r\n        }\r\n\r\n        if (this.selectionMode === DataTableMultipleSelectMode.Multiple) {\r\n            this.onItemCheckBoxClicked(currentRenderedItem, true);\r\n        } else {\r\n            // This should only select a row. not expand/collapse it\r\n            if (!this.preventEnterKeyForDefaultAction) {\r\n                if (!this.doubleClickRow) {\r\n                    Logging.log({\r\n                        level: LogLevel.Debug,\r\n                        message: 'No event handler bind to \"doubleClickRow\" event.',\r\n                        source: 'DataTableComponent.onContentTablePressed'\r\n                    });\r\n                } else {\r\n                    if (!this.navigationKeyboardDebouncing) {\r\n                        if (selectAndFocus) {\r\n                            this.doubleClickRow(null, currentRenderedItem);\r\n                        } else {\r\n                            this.tryToFocusSelectedRow(this.activeFocusedItemIndex);\r\n                        }\r\n                    }\r\n                }\r\n            } else {\r\n                if (event && event.keyCode && event.keyCode === KeyCode.Enter) {\r\n                    shouldPreventDefaultKeyboardAction = true;\r\n                }\r\n            }\r\n        }\r\n\r\n        return shouldPreventDefaultKeyboardAction;\r\n    }\r\n\r\n    private onContentTablePressedRightArrow(currentRenderedItem: DataTableRenderedItem, targetElement: HTMLElement, currentRow: any) {\r\n        if (this.showAsTree) {\r\n            this.onContentTablePressedShowAsTreeHelper();\r\n            currentRenderedItem = this.renderedItems[this.getActiveRenderedItemIndex()];\r\n        }\r\n        if (currentRenderedItem.type === DataTableRenderedItemType.GroupHeader) {\r\n            if (!this.groupToggleStatus[currentRenderedItem.data]) {\r\n                this.clickGroupToggle(currentRenderedItem, true);\r\n            } else {\r\n                for (let i = this.activeRenderedItemIndex + 1; i < this.renderedItems.length; i++) {\r\n                    if (this.renderedItems[i].type === DataTableRenderedItemType.GroupHeader) {\r\n                        this.activateRenderedItemByIndex(i, true);\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        } else if (currentRenderedItem.type === DataTableRenderedItemType.GroupItem) {\r\n            for (let i = this.activeRenderedItemIndex + 1; i < this.renderedItems.length; i++) {\r\n                if (this.renderedItems[i].type === DataTableRenderedItemType.GroupHeader) {\r\n                    this.activateRenderedItemByIndex(i, true);\r\n                    break;\r\n                }\r\n            }\r\n        } else if (this.isTreeTableParentNode(currentRenderedItem)) {\r\n            if (!currentRenderedItem.node.expanded) {\r\n                this.clickTreeToggle(null, currentRenderedItem, true);\r\n            } else {\r\n                this.moveToNextRenderedItem();\r\n            }\r\n        } else {\r\n            let nextElement = Dom.getNextFocusableElement(targetElement);\r\n            let rowForNextElement = Dom.getSpecificAncestor(nextElement, element => element.classList.contains('sme-table-row'));\r\n            let cellForNextElement = Dom.getSpecificAncestor(nextElement, element => element.classList.contains('sme-table-td'));\r\n\r\n            if (cellForNextElement) {\r\n                this.currentColumnIndexWithFocusedElement = -1;\r\n                for (let i = 0; cellForNextElement && i < cellForNextElement.parentElement.children.length; i++) {\r\n                    if (cellForNextElement.parentElement.children[i] === cellForNextElement) {\r\n                        // still remain focus on the first checkbox when it is editable mode.\r\n                        if (i === 0 && !this.editable\r\n                            && this.dataTableAccessibilityManager.isDataTableCheckBoxHTMLElement(nextElement)) {\r\n                            // If the nextElement is the checkbox in first column, move on the next candidate.\r\n                            nextElement = Dom.getNextFocusableElement(nextElement);\r\n                            rowForNextElement = Dom.getSpecificAncestor(\r\n                                nextElement,\r\n                                element => element.classList.contains('sme-table-row'));\r\n                            cellForNextElement = Dom.getSpecificAncestor(\r\n                                nextElement,\r\n                                element => element.classList.contains('sme-table-td'));\r\n                        } else {\r\n                            this.currentColumnIndexWithFocusedElement = i;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (this.currentColumnIndexWithFocusedElement !== -1\r\n                && currentRow === rowForNextElement) {\r\n                nextElement.focus();\r\n            }\r\n        }\r\n    }\r\n\r\n    private onContentTablePressedLeftArrow(currentRenderedItem: DataTableRenderedItem, targetElement: HTMLElement, currentRow: any) {\r\n        if (this.showAsTree) {\r\n            this.onContentTablePressedShowAsTreeHelper();\r\n            currentRenderedItem = this.renderedItems[this.getActiveRenderedItemIndex()];\r\n        }\r\n        if (currentRenderedItem.type === DataTableRenderedItemType.GroupHeader) {\r\n            if (this.groupToggleStatus[currentRenderedItem.data]) {\r\n                this.clickGroupToggle(currentRenderedItem, false);\r\n            } else {\r\n                for (let i = this.activeRenderedItemIndex - 1; i >= 0; i--) {\r\n                    if (this.renderedItems[i].type === DataTableRenderedItemType.GroupHeader) {\r\n                        this.activateRenderedItemByIndex(i, true);\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        } else if (currentRenderedItem.type === DataTableRenderedItemType.GroupItem) {\r\n            for (let i = this.activeRenderedItemIndex - 1; i >= 0; i--) {\r\n                if (this.renderedItems[i].type === DataTableRenderedItemType.GroupHeader) {\r\n                    this.activateRenderedItemByIndex(i, true);\r\n                    break;\r\n                }\r\n            }\r\n        } else if (this.isTreeTableParentNode(currentRenderedItem)) {\r\n            if (currentRenderedItem.node.expanded) {\r\n                this.clickTreeToggle(event, currentRenderedItem, false);\r\n            } else {\r\n                const parentNode = this.renderedItems[this.activeRenderedItemIndex].node.parent;\r\n                for (let i = this.activeRenderedItemIndex - 1; i >= 0; i--) {\r\n                    if (this.renderedItems[i].node === parentNode) {\r\n                        this.activateRenderedItemByIndex(i, false);\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        } else {\r\n            let previousElement = Dom.getPreviousFocusableElement(targetElement);\r\n            const rowForPreviousElement = Dom.getSpecificAncestor(\r\n                previousElement, element => element.classList.contains('sme-table-row'));\r\n            const cellForPreviousElement = Dom.getSpecificAncestor(\r\n                previousElement, element => element.classList.contains('sme-table-td'));\r\n            if (cellForPreviousElement) {\r\n                this.currentColumnIndexWithFocusedElement = -1;\r\n                for (let i = 0; cellForPreviousElement && i < cellForPreviousElement.parentElement.children.length; i++) {\r\n                    if (cellForPreviousElement.parentElement.children[i] === cellForPreviousElement) {\r\n                        if (i === 0 && previousElement.tagName === 'INPUT'\r\n                            && previousElement.parentElement.classList.contains('sme-table-checkbox')) {\r\n                            // If the previousElement is the checkbox is in the first column, then skip it, directly go to the row.\r\n                            previousElement = rowForPreviousElement;\r\n                        } else {\r\n                            this.currentColumnIndexWithFocusedElement = i;\r\n                        }\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            if (previousElement === currentRow || rowForPreviousElement !== currentRow) {\r\n                this.currentColumnIndexWithFocusedElement = -1;\r\n            }\r\n            if (rowForPreviousElement === currentRow) {\r\n                previousElement.focus();\r\n            }\r\n        }\r\n    }\r\n\r\n    public isTreeTableParentNode(treeNodeItem: DataTableRenderedItem): boolean {\r\n        return treeNodeItem.type === DataTableRenderedItemType.TreeNode && !treeNodeItem.node.isLeaf;\r\n    }\r\n\r\n    public onContentItemFocused(event: FocusEvent, renderedItem: DataTableRenderedItem): void {\r\n        this.contentAreaHasFocus = true;\r\n        if (this.editable) {\r\n            const editableDataItem = <EditableDataItem>renderedItem.data;\r\n            this.editableNewRowHasFocus = editableDataItem.isNewRow;\r\n        }\r\n\r\n        if (this.editable) {\r\n            const tdElement = Dom.getSpecificAncestor(\r\n                <HTMLElement>document.activeElement, element => element.classList.contains('sme-table-td'));\r\n            const trElement = Dom.getSpecificAncestor(tdElement, element => element.classList.contains('sme-table-row'));\r\n            if (trElement) {\r\n                const tdElements = trElement.querySelectorAll('.sme-table-td');\r\n                this.currentColumnIndexWithFocusedElement = -1;\r\n                for (let i = 0; i < tdElements.length; i++) {\r\n                    if (tdElements[i] === tdElement) {\r\n                        this.currentColumnIndexWithFocusedElement = i;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        this.dataTableAccessibilityManager.focusInTableCell(event);\r\n\r\n        setTimeout(() => {\r\n            this.scrollBodyElement.nativeElement.scrollTop = 0;\r\n        });\r\n    }\r\n\r\n    public onContentItemBlurred(event, renderedItem: DataTableRenderedItem): void {\r\n        this.contentAreaHasFocus = false;\r\n        this.editableNewRowHasFocus = false;\r\n        setTimeout(() => {\r\n            this.scrollBodyElement.nativeElement.scrollTop = 0;\r\n            this.dataTableAccessibilityManager.focusOutTableCell(event);\r\n\r\n            if (!this.editableNewRowHasFocus) {\r\n                this.handleRenderedItemRowFocusOut(renderedItem);\r\n            }\r\n        });\r\n    }\r\n\r\n    public deleteEditableDataRow(data: any) {\r\n        let dataExistsInInternalItems = false;\r\n        for (let i = 0; i < this.internalItems.length; i++) {\r\n            const item = <EditableDataItem>this.internalItems[i];\r\n            if (item.content === data) {\r\n                dataExistsInInternalItems = true;\r\n                let foundInAddedItems = false;\r\n                for (let j = 0; j < this.editableDataChangeSet.addedItems.length; j++) {\r\n                    if (this.editableDataChangeSet.addedItems[j] === item.content) {\r\n                        this.editableDataChangeSet.addedItems.splice(j, 1);\r\n                        foundInAddedItems = true;\r\n                        break;\r\n                    }\r\n                }\r\n                for (let j = 0; j < this.editableDataChangeSet.updatedItems.length; j++) {\r\n                    if (this.editableDataChangeSet.updatedItems[j] === item.content) {\r\n                        this.editableDataChangeSet.updatedItems.splice(j, 1);\r\n                        break;\r\n                    }\r\n                }\r\n\r\n                if (!foundInAddedItems) {\r\n                    this.editableDataChangeSet.deletedItems.push(item.content);\r\n                }\r\n\r\n                this.internalItems.splice(i, 1);\r\n                this.actualItems.splice(i, 1);\r\n\r\n                this.renderItems(true, true);\r\n                break;\r\n            }\r\n        }\r\n\r\n        // Row not yet added to internalItems, just refresh\r\n        if (!dataExistsInInternalItems) {\r\n            this.renderItems(true, true);\r\n        }\r\n    }\r\n\r\n    public onLastFocusableShadowElementFocused(event): void {\r\n        setTimeout(() => {\r\n            if (!this.cancelLastFocusableShadowElementFocusOnce) {\r\n                this.tryToFocusSelectedRow();\r\n            }\r\n            this.cancelLastFocusableShadowElementFocusOnce = false;\r\n        });\r\n    }\r\n\r\n    public generateNGClassForRenderedItem(renderedItem: DataTableRenderedItem): any {\r\n        return {\r\n            selected: renderedItem.index === this.getActiveRenderedItemIndex(),\r\n            'sme-table-group-item': renderedItem.type === DataTableRenderedItemType.GroupItem,\r\n            'sme-table-group-header': renderedItem.type === DataTableRenderedItemType.GroupHeader,\r\n            'sme-checked': this.isItemSelected(renderedItem)\r\n        };\r\n    }\r\n\r\n    public shouldAllItemCheckBoxChecked(): boolean {\r\n        let result = false;\r\n        if (this.filteredItems) {\r\n            if (!this.showAsTree) {\r\n                result = this.selection && this.selection.length > 0 && this.selection.length === this.filteredItems.length;\r\n            } else {\r\n                result = true;\r\n                for (let i = 0; i < this.filteredItems.length; i++) {\r\n                    const treeNodeDataItem = <TreeNodeDataItem>this.filteredItems[i];\r\n                    if (!treeNodeDataItem || !treeNodeDataItem.selected) {\r\n                        result = false;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    public setHoveredRenderedItem(renderedItem: DataTableRenderedItem): void {\r\n        this.hoveredRenderedItemIndex = renderedItem.index;\r\n    }\r\n\r\n    public unsetHoveredRenderedItem(renderedItem: DataTableRenderedItem): void {\r\n        if (this.hoveredRenderedItemIndex === renderedItem.index) {\r\n            this.hoveredRenderedItemIndex = -1;\r\n        }\r\n    }\r\n\r\n    private getIsFocusingOutFromLastFormField(): boolean {\r\n        let isFocusingOutFromLastFormField = false;\r\n        if (document.activeElement.hasAttribute('data-sme-last-focusable-shadow-element')) {\r\n            isFocusingOutFromLastFormField = true;\r\n        }\r\n        return isFocusingOutFromLastFormField;\r\n    }\r\n\r\n    public handleRenderedItemRowFocusOut(renderedItem: DataTableRenderedItem): void {\r\n        if (this.editable) {\r\n            const editableDataItem = <EditableDataItem>renderedItem.data;\r\n            if (editableDataItem.isNewRow) {\r\n                let shouldAddNewRow = false;\r\n\r\n                // should handle if any form field is dirty then validate\r\n                let atLeastOneFieldDirty = false;\r\n                this.dataTableTemplateLoaderComponents.forEach(loader => {\r\n                    const formFieldContainer = <FormFieldContainer>loader;\r\n                    if (loader.renderedItem) {\r\n                        const loaderDataItem = <EditableDataItem>loader.renderedItem.data;\r\n                        if (loaderDataItem.isNewRow) {\r\n                            if (formFieldContainer.isDirty()) {\r\n                                atLeastOneFieldDirty = true;\r\n                            }\r\n                        }\r\n                    }\r\n                });\r\n\r\n                // should also handle when focusing out from the last form field in the row\r\n                const isFocusingOutFromLastFormField = this.getIsFocusingOutFromLastFormField();\r\n\r\n                if (atLeastOneFieldDirty || isFocusingOutFromLastFormField) {\r\n                    shouldAddNewRow = true;\r\n                    this.dataTableTemplateLoaderComponents.forEach(loader => {\r\n                        const formFieldContainer = <FormFieldContainer>loader;\r\n                        if (loader.renderedItem) {\r\n                            const loaderDataItem = <EditableDataItem>loader.renderedItem.data;\r\n                            if (loaderDataItem.isNewRow) {\r\n                                if (!formFieldContainer.checkValidation()) {\r\n                                    shouldAddNewRow = false;\r\n                                }\r\n                            }\r\n                        }\r\n                    });\r\n                }\r\n\r\n                if (shouldAddNewRow && this.editableAutoNewRow) {\r\n                    let newDataItem = JSON.parse(JSON.stringify(renderedItem.data.content));\r\n                    const overrideNewDataHandler = data => {\r\n                        newDataItem = data;\r\n                    };\r\n                    this.editableRowAdded.emit({ data: newDataItem, overrideNewDataHandler: overrideNewDataHandler });\r\n                    renderedItem.data.content = newDataItem;\r\n                    renderedItem.data.isNewRow = false;\r\n                    this.internalItems.push(renderedItem.data);\r\n                    this.editableDataChangeSet.addedItems.push(newDataItem);\r\n                    this.changesetUpdated.emit(this.editableDataChangeSet);\r\n                    this.actualItems.push(newDataItem);\r\n                    this.refreshData();\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    public shouldShowEditRow(renderedItem: DataTableRenderedItem): boolean {\r\n        if (this.isAllEditableRowsVisible) { return true; }\r\n\r\n        const editableDataItem = <EditableDataItem>renderedItem.data;\r\n        return renderedItem.index === this.getActiveRenderedItemIndex()\r\n            || this.hasValidationError(renderedItem)\r\n            || renderedItem.index === this.hoveredRenderedItemIndex\r\n            || editableDataItem.isNewRow;\r\n    }\r\n\r\n    /**\r\n     * Retrieves the text that should be associated with the aria-label for column sort order (if sortable).\r\n     * This label is utilized by screen readers for accessibility.\r\n     * If the current sort order is Ascending, the label will indicate a button icon is present to Descend order.\r\n     * If the current sort order is Descending, the label will indicate a button icon is present to Ascend order.\r\n     * If the current sort order is None, the label is null, and the screen reader will not read anything.\r\n     * @param column the table column\r\n     * @returns the text for the aria-label on the sort icon\r\n     */\r\n    public getSortLabel(column: DataTableColumnComponent): string {\r\n        switch (column.sortMode) {\r\n            case DataTableSortMode.Ascend:\r\n                return this.strings.MsftSmeShell.Angular.DataTable.Aria.Label.descendSortOrderButton;\r\n            case DataTableSortMode.Descend:\r\n                return this.strings.MsftSmeShell.Angular.DataTable.Aria.Label.ascendSortOrderButton;\r\n            case DataTableSortMode.None:\r\n                return null;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It implements the AfterViewInit interface.\r\n     */\r\n    public ngAfterViewInit(): void {\r\n        super.ngAfterViewInit();\r\n        this.calculateScrollbarWidth();\r\n\r\n        const scrollHandler = (() => {\r\n            this.isScrolledDown = this.scrollContainerElement.nativeElement.scrollTop > 0;\r\n            this.isScrolling = true;\r\n\r\n            if (!this.isScrolledDown) {\r\n                this.renderedItemStartIndexOffset = 0;\r\n            }\r\n\r\n            if (this.lazyLoad) {\r\n                // If the lazy loading is enabled, reduce the freqency of handling scrolling\r\n                // especially doing the data lazy loading\r\n                this.isScrollingEventHandlerSetup = false;\r\n                clearInterval(this.scrollCheckInterval);\r\n            }\r\n\r\n            if (!this.isScrollingEventHandlerSetup) {\r\n                this.isScrollingEventHandlerSetup = true;\r\n                this.ngZone.runOutsideAngular(() => {\r\n                    this.scrollCheckInterval = setInterval(\r\n                        () => {\r\n                            if (this.isScrolling) {\r\n                                this.ngZone.run(() => {\r\n                                    this.calculateItemInViewPort();\r\n                                });\r\n                            }\r\n                        },\r\n                        this.scrollCheckIntervalDuration);\r\n                });\r\n            }\r\n        });\r\n\r\n        this.scrollContainerElement.nativeElement.addEventListener('scroll', scrollHandler);\r\n        this.eventUnregistraterHandlers.push(() => {\r\n            this.scrollContainerElement.nativeElement.removeEventListener('scroll', scrollHandler);\r\n        });\r\n\r\n        this.initializeUI();\r\n        this.checkImmediateValidation();\r\n\r\n        this.isComponentInitialized = true;\r\n    }\r\n\r\n    @Yield()\r\n    private checkImmediateValidation() {\r\n        if (this.editable) {\r\n            this.dataTableTemplateLoaderComponents.forEach(loader => {\r\n                const formFieldContainer = <FormFieldContainer>loader;\r\n                if (loader.renderedItem) {\r\n                    formFieldContainer.immediateValidation();\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It implements the OnDestroy interface.\r\n     */\r\n    public ngOnDestroy(): void {\r\n        super.ngOnDestroy();\r\n        clearInterval(this.scrollCheckInterval);\r\n        this.eventUnregistraterHandlers.forEach(item => {\r\n            item();\r\n        });\r\n\r\n        if (this.unregisterOnElementFocusingEventHandler) {\r\n            this.unregisterOnElementFocusingEventHandler();\r\n        }\r\n        if (this.layoutChangeSubscriber) {\r\n            this.layoutChangeSubscriber.unsubscribe();\r\n        }\r\n        if (this.globalFilterSubscriber) {\r\n            this.globalFilterSubscriber.unsubscribe();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It implements the AfterViewChecked interface.\r\n     */\r\n    public ngAfterViewChecked(): void {\r\n        super.ngAfterViewChecked();\r\n        this.alignContent();\r\n        this.alignScrollBar();\r\n    }\r\n\r\n    /**\r\n     * It handles the selection of the given data table item.\r\n     */\r\n    public selectItem(event: MouseEvent | KeyboardEvent, item: DataTableRenderedItem): void {\r\n        let multipleSelectMode = DataTableMultipleSelectMode.Normal;\r\n        if (event) {\r\n            if (event.ctrlKey) {\r\n                multipleSelectMode = DataTableMultipleSelectMode.Pick;\r\n            }\r\n            if (event.shiftKey) {\r\n                multipleSelectMode = DataTableMultipleSelectMode.Sequential;\r\n            }\r\n\r\n            if (!this.editable && (<HTMLElement>event.srcElement).tagName === 'INPUT') {\r\n                return;\r\n            }\r\n        }\r\n\r\n        this.previousActiveRenderedItemIndex = this.activeRenderedItemIndex;\r\n        this.setActiveRenderedItemIndex(item ? item.index : -1);\r\n\r\n        if (this.selectable) {\r\n            if (item.type !== DataTableRenderedItemType.GroupHeader) {\r\n                if (event && event.target['type'] === 'checkbox') {\r\n                    return;\r\n                }\r\n\r\n                if (this.showAsTree) {\r\n                    if (this.selectionMode !== DataTableMultipleSelectMode.Multiple) {\r\n                        this.selection = item.node;\r\n                        this.nodeSelected.emit({ node: item.node });\r\n                    } else {\r\n                        if (this.selectAndCheck) {\r\n                            if (multipleSelectMode === DataTableMultipleSelectMode.Normal) {\r\n                                this.items.forEach(currentItem => {\r\n                                    this.handleTreeNodeSelection(currentItem, false, true);\r\n                                });\r\n\r\n                                this.handleTreeNodeSelection(item.node, true, false, !this.linkParentChildrenSelections);\r\n                                this.nodeSelected.emit({ node: item.node });\r\n                                this.shiftMultipleSelectStartIndex = this.activeRenderedItemIndex;\r\n                            } else if (multipleSelectMode === DataTableMultipleSelectMode.Pick) {\r\n                                this.handleTreeNodeSelection(item.node, !item.node.selected, false, false);\r\n                            } else if (multipleSelectMode === DataTableMultipleSelectMode.Sequential) {\r\n                                this.contentElement.nativeElement.classList.add('sme-user-select-none');\r\n                                this.dataTableAccessibilityManager.clearTextSelection();\r\n\r\n                                if (this.previousActiveRenderedItemIndex !== -1 && this.shiftMultipleSelectStartIndex === -1) {\r\n                                    this.shiftMultipleSelectStartIndex = this.previousActiveRenderedItemIndex;\r\n                                }\r\n\r\n                                let start = this.shiftMultipleSelectStartIndex;\r\n                                let end = item.index;\r\n                                if (item.index < this.shiftMultipleSelectStartIndex) {\r\n                                    start = item.index;\r\n                                    end = this.shiftMultipleSelectStartIndex;\r\n                                }\r\n                                // Fixed a bug that tree table multiple selection will lost focus\r\n                                this.clearSelection(true);\r\n                                let lastParent: TreeNodeDataItem = null;\r\n                                for (let i = start; i <= end; i++) {\r\n                                    if (this.renderedItems[i].type !== DataTableRenderedItemType.GroupHeader) {\r\n                                        this.handleTreeNodeSelection(this.renderedItems[i].node, true, true, false);\r\n                                        lastParent = this.renderedItems[i].node.parent;\r\n                                    }\r\n                                }\r\n                                for (let i = end + 1; i < this.renderedItems.length; i++) {\r\n                                    this.handleTreeNodeSelection(this.renderedItems[i].node, false, true, false);\r\n                                }\r\n                            }\r\n                            this.selectionChange.emit(this.internalSelection);\r\n                        }\r\n                    }\r\n                } else {\r\n                    if (this.selectionMode === DataTableMultipleSelectMode.Multiple) {\r\n                        if (this.selectAndCheck) {\r\n                            if (multipleSelectMode === DataTableMultipleSelectMode.Pick) {\r\n                                this.onItemCheckBoxClicked(item);\r\n                                this.shiftMultipleSelectStartIndex = this.activeRenderedItemIndex;\r\n                            } else {\r\n                                if (multipleSelectMode === DataTableMultipleSelectMode.Sequential) {\r\n                                    this.contentElement.nativeElement.classList.add('sme-user-select-none');\r\n                                    this.dataTableAccessibilityManager.clearTextSelection();\r\n\r\n                                    if (this.previousActiveRenderedItemIndex !== -1 && this.shiftMultipleSelectStartIndex === -1) {\r\n                                        this.shiftMultipleSelectStartIndex = this.previousActiveRenderedItemIndex;\r\n                                    }\r\n\r\n                                    let start = this.shiftMultipleSelectStartIndex;\r\n                                    let end = item.index;\r\n                                    if (item.index < this.shiftMultipleSelectStartIndex) {\r\n                                        start = item.index;\r\n                                        end = this.shiftMultipleSelectStartIndex;\r\n                                    }\r\n\r\n                                    this.clearSelection(true);\r\n                                    for (let i = start; i <= end; i++) {\r\n                                        if (this.renderedItems[i].type !== DataTableRenderedItemType.GroupHeader) {\r\n                                            this.onItemCheckBoxClicked(this.renderedItems[i]);\r\n                                        }\r\n                                    }\r\n                                } else {\r\n                                    this.selection = [item.data];\r\n                                    this.shiftMultipleSelectStartIndex = this.activeRenderedItemIndex;\r\n                                }\r\n\r\n                                this.rowSelected.emit({ data: item.data });\r\n                            }\r\n                        }\r\n                    } else {\r\n                        this.selection = this.editable ? item.data.content : item.data;\r\n                        this.rowSelected.emit({ data: this.editable ? item.data.content : item.data });\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (event && !Dom.isFocusable(<HTMLElement>event.target)) {\r\n                this.tryToFocusSelectedRow();\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * function to focus on empty message when the data table is empty\r\n     */\r\n    private tryToFocusEmptyMessage() {\r\n        const item = this.emptyMessageElement && this.emptyMessageElement.nativeElement;\r\n        if (item) {\r\n            item.focus();\r\n            if (this.scrollBodyElement && this.scrollBodyElement.nativeElement && this.scrollBodyElement.nativeElement.scrollTop !== 0) {\r\n                this.scrollBodyElement.nativeElement.scrollTop = 0;\r\n            }\r\n            this.resetTryToFocusEmptyMessageCount();\r\n        } else {\r\n            this.deferredTryToFocusEmptyMessage();\r\n        }\r\n    }\r\n\r\n    @Debounce()\r\n    private deferredTryToFocusEmptyMessage() {\r\n        this.tryToFocusEmptyMessageCount--;\r\n        this.tryToFocusEmptyMessage();\r\n    }\r\n\r\n    private resetTryToFocusEmptyMessageCount() {\r\n        this.tryToFocusEmptyMessageCount = 3;\r\n    }\r\n\r\n    /**\r\n     * It returns the no records message when the data table is empty.\r\n     */\r\n    public getNoRecordsMessage(): string {\r\n        return this.noRecordMessage || this.strings.MsftSmeShell.Angular.DataTable.NoRecordsFound;\r\n    }\r\n\r\n    /**\r\n     * It determines whether to, or not to show the No-Records Message.\r\n     */\r\n    public showNoRecordsMessage(): boolean {\r\n        return (this.renderedItems.length === 0 && !this.lazyLoad) || !this.isColumnWidthCalculated ||\r\n            (this.lazyLoad && this.items && this.items.length === 0);\r\n    }\r\n\r\n    /**\r\n     * It handles the behavior that when a group toggle is clicked.\r\n     */\r\n    public clickGroupToggle(item: DataTableRenderedItem, toggleStatusOverriddenValue?: boolean): void {\r\n        this.setActiveRenderedItemIndex(item.index);\r\n        this.groupToggleStatus[item.data] = toggleStatusOverriddenValue !== undefined ?\r\n            toggleStatusOverriddenValue : !this.groupToggleStatus[item.data];\r\n        this.groupToggleClick.emit(item.data);\r\n        this.calculateColumnDomWidths();\r\n        this.renderItems(false, true);\r\n    }\r\n\r\n    /**\r\n     * It handles the behavior that when a tree node toggle is clicked.\r\n     */\r\n    public clickTreeToggle(event: Event, item: DataTableRenderedItem, toggleStatusOverriddenValue?: boolean): void {\r\n        if (event) {\r\n            event.preventDefault();\r\n            event.stopPropagation();\r\n        }\r\n\r\n        let isTreeNodeCollapsing = false;\r\n        item.node.expanded = toggleStatusOverriddenValue !== undefined ? toggleStatusOverriddenValue : !item.node.expanded;\r\n        if (item.node.expanded) {\r\n            this.nodeExpanded.emit({ node: item.node });\r\n        } else {\r\n            this.nodeCollapsed.emit({ node: item.node });\r\n            isTreeNodeCollapsing = true;\r\n        }\r\n\r\n        const identity = this.getTreeNodeDataIdentity(item.node);\r\n        this.treeToggleStatus[identity] = item.node.expanded;\r\n\r\n        this.renderItems(false, true);\r\n\r\n        // If the selected node's parent is collapsing, we need to update the active rendered item index.\r\n        if (this.showAsTree) {\r\n            this.selectedTreeNodeParentCollapsed = false;\r\n\r\n            this.updateActiveRenderedItemIndexBySelection();\r\n\r\n            if (!isTreeNodeCollapsing) {\r\n                return;\r\n            }\r\n\r\n            if (!this.treeTableCollapseHandler(item.node, this.selection)) {\r\n                return;\r\n            }\r\n\r\n            this.selectedTreeNodeParentCollapsed = true;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It expands all the groups.\r\n     */\r\n    public expandAllGroup(): void {\r\n        for (const group in this.groupToggleStatus) {\r\n            if (this.groupToggleStatus.hasOwnProperty(group)) {\r\n                this.groupToggleStatus[group] = true;\r\n            }\r\n        }\r\n        this.renderItems(false, true);\r\n    }\r\n\r\n    /**\r\n     * It collapses all the groups.\r\n     */\r\n    public collapseAllGroup(): void {\r\n        for (const group in this.groupToggleStatus) {\r\n            if (this.groupToggleStatus.hasOwnProperty(group)) {\r\n                this.groupToggleStatus[group] = false;\r\n            }\r\n        }\r\n        this.renderItems(false, true);\r\n    }\r\n\r\n    /**\r\n     * It returns the boolean to indicate whether the given column is the first data column.\r\n     * The returned value can be used to add some custom css for the first data column when grouping is enabled.\r\n     */\r\n    public isFirstDataColumn(column: DataTableColumnComponent): boolean {\r\n        let firstDataColumn = null;\r\n        this.actualColumns.forEach(currentColumn => {\r\n            if (currentColumn !== this.groupColumn && !firstDataColumn && !currentColumn.hidden) {\r\n                firstDataColumn = currentColumn;\r\n            }\r\n        });\r\n\r\n        return column === firstDataColumn;\r\n    }\r\n\r\n    /**\r\n     * Return id if the column is the first and rendered item has a valid index, otherwise return null\r\n     */\r\n    public getFirstColumnId(column: DataTableColumnComponent, renderedItem: DataTableRenderedItem) {\r\n        if (!this.isFirstDataColumn(column) ||\r\n            !(renderedItem && Number.isInteger(renderedItem.index) && renderedItem.index >= 0)) {\r\n            return null;\r\n        }\r\n\r\n        return this.idBag.firstDataColumn + renderedItem.index;\r\n    }\r\n\r\n    public onColumnResizing(event): void {\r\n        this.resizerIndicator.nativeElement.style.opacity = '0.5';\r\n        this.resizerIndicator.nativeElement.classList.remove('sme-layout-none');\r\n        this.resizerIndicator.nativeElement.style.left = event.x + 'px';\r\n    }\r\n\r\n    public onColumnResized(columnIndex: number, event): void {\r\n        this.resizerIndicator.nativeElement.classList.add('sme-layout-none');\r\n\r\n        const columnHeaderElements = this.headerTableElement.nativeElement.querySelectorAll('.sme-table-column-header');\r\n        const newColumnWidths: number[] = [];\r\n        let totalWidth = 0;\r\n        for (let i = 0; i < columnHeaderElements.length; i++) {\r\n            newColumnWidths.push(columnHeaderElements[i].offsetWidth);\r\n            totalWidth += columnHeaderElements[i].offsetWidth;\r\n        }\r\n\r\n        // The resizer is at the right border of the current column.\r\n        // When the resizing happens, it means resizing the current column with delta amount\r\n        // and resizing the next column with -delta amount.\r\n        const currentColumnHeaderElement = columnHeaderElements[columnIndex];\r\n        let newWidthForCurrentColumn = currentColumnHeaderElement.offsetWidth + event.x;\r\n\r\n        // If the nextColumnHeader is hidden, that means it's a group column header which should be hidden.\r\n        // A hidden group header's width should not be counted.\r\n        // Then set the nextColumnIndex to the next next column's index.\r\n        const nextColumnIndex = columnIndex + (columnHeaderElements[columnIndex + 1].hasAttribute('hidden') ? 2 : 1);\r\n        const nextColumnHeaderElement = columnHeaderElements[nextColumnIndex];\r\n        let newWidthForNextColumn = nextColumnHeaderElement.offsetWidth - event.x;\r\n\r\n        // If the newWidthForCurrentColumn is less then minColumnWidth, it means the user is trying to drag the resizer to very left\r\n        // to make the next column very wide.\r\n        // In this case, we will try to make sure the next column can be resized to as wide as the user wants.\r\n        // The left side columns of the next column will be shrunk based on their own original percentage width.\r\n        if (newWidthForCurrentColumn < DataTableComponent.minColumnWidth) {\r\n            let consumedWidthRightSideColumns = 0;\r\n            for (let i = nextColumnIndex + 1; i < columnHeaderElements.length; i++) {\r\n                consumedWidthRightSideColumns += columnHeaderElements[i].offsetWidth;\r\n            }\r\n\r\n            const originalWidthForLeftSideColumns = totalWidth - consumedWidthRightSideColumns - nextColumnHeaderElement.offsetWidth;\r\n            const availableWidthForLeftSideColumns = totalWidth - consumedWidthRightSideColumns - newWidthForNextColumn;\r\n\r\n            let actualWidthForLeftSideColumns = 0;\r\n            for (let i = 0; i <= columnIndex; i++) {\r\n                const newColumnWidth = Math.max(\r\n                    availableWidthForLeftSideColumns * (columnHeaderElements[i].offsetWidth / originalWidthForLeftSideColumns),\r\n                    DataTableComponent.minColumnWidth);\r\n                newColumnWidths[i] = newColumnWidth;\r\n                actualWidthForLeftSideColumns += newColumnWidth;\r\n            }\r\n            newWidthForCurrentColumn = newColumnWidths[columnIndex];\r\n            newWidthForNextColumn = totalWidth - consumedWidthRightSideColumns - actualWidthForLeftSideColumns;\r\n        }\r\n\r\n        // If the newWidthForNextColumn is less then minColumnWidth, it means the user is trying to drag the resizer to very right\r\n        // to make the current column very wide.\r\n        // In this case, we will try to make sure the current column can be resized to as wide as the user wants.\r\n        // The right side columns of the current column will be shrunk based on their own original percentage width.\r\n        if (newWidthForNextColumn < DataTableComponent.minColumnWidth) {\r\n            let consumedWidthLeftSideColumns = 0;\r\n            for (let i = 0; i <= columnIndex - 1; i++) {\r\n                consumedWidthLeftSideColumns += columnHeaderElements[i].offsetWidth;\r\n            }\r\n\r\n            const originalWidthForRightSideColumns = totalWidth - consumedWidthLeftSideColumns - currentColumnHeaderElement.offsetWidth;\r\n            const availableWidthForRightSideColumns = totalWidth - consumedWidthLeftSideColumns - newWidthForCurrentColumn;\r\n\r\n            let actualWidthForRightSideColumns = 0;\r\n            for (let i = nextColumnIndex; i < columnHeaderElements.length; i++) {\r\n                const newColumnWidth = Math.max(\r\n                    availableWidthForRightSideColumns * (columnHeaderElements[i].offsetWidth / originalWidthForRightSideColumns),\r\n                    DataTableComponent.minColumnWidth);\r\n                newColumnWidths[i] = newColumnWidth;\r\n                actualWidthForRightSideColumns += newColumnWidth;\r\n            }\r\n            newWidthForCurrentColumn = totalWidth - consumedWidthLeftSideColumns - actualWidthForRightSideColumns;\r\n            newWidthForNextColumn = newColumnWidths[nextColumnIndex];\r\n        }\r\n\r\n        newColumnWidths[columnIndex] = newWidthForCurrentColumn;\r\n        newColumnWidths[nextColumnIndex] = newWidthForNextColumn;\r\n\r\n        // Updates the column widths based on the calculation results.\r\n        let index = 0;\r\n        this.actualColumns.forEach(column => {\r\n            column.width = newColumnWidths[index] + 'px';\r\n            index++;\r\n        });\r\n\r\n        // Update the column percentages based on the new column widths.\r\n        setTimeout(() => {\r\n            index = 0;\r\n            this.actualColumns.forEach(column => {\r\n                column.widthPercentage = columnHeaderElements[index].offsetWidth / this.scrollContainerElement.nativeElement.offsetWidth;\r\n                index++;\r\n            });\r\n        });\r\n\r\n        this.calculateColumnDomWidths();\r\n    }\r\n\r\n    /**\r\n     * It handles the column clicking.\r\n     */\r\n    public clickColumn(column: DataTableColumnComponent): void {\r\n        const columnSortSettings = {};\r\n\r\n        this.actualColumns.forEach(item => {\r\n            if (column.sortable && column.sortable !== 'false') {\r\n                if (item === column) {\r\n                    if (item.sortMode === DataTableSortMode.None) {\r\n                        item.sortMode = DataTableSortMode.Ascend;\r\n                    } else if (item.sortMode === DataTableSortMode.Ascend) {\r\n                        item.sortMode = DataTableSortMode.Descend;\r\n                    } else {\r\n                        item.sortMode = DataTableSortMode.Ascend;\r\n                    }\r\n\r\n                    this.previousSortColumn = this.sortColumn;\r\n                    this.sortColumn = item;\r\n                    this.sortItems();\r\n                    if (this.shouldScrollToSelectionAfterSorting) {\r\n                        this.scrollSelectedItemIntoView(true);\r\n                    }\r\n                    this.calculateItemInViewPort(false, true);\r\n\r\n                    const element = this.headerElement.nativeElement.querySelector('th[field=\"' + column.field + '\"]');\r\n                    if (element) {\r\n                        this.headerElement.nativeElement.querySelector('tr').focus();\r\n                        setTimeout(\r\n                            () => {\r\n                                element.focus();\r\n                            },\r\n                            200);\r\n                        // 200 is a very tricky number here.\r\n                        // If the number is too small, it won't trigger the narrator.\r\n                        // If it's too big, the narrator would firstly read the content of TR partially then the content of the TH.\r\n                    }\r\n                } else {\r\n                    item.sortMode = DataTableSortMode.None;\r\n                }\r\n            }\r\n\r\n            columnSortSettings[item.header] = this.getAriaSortAttributeValue(item);\r\n        });\r\n\r\n        this.columnSortSettings = columnSortSettings;\r\n    }\r\n\r\n    /**\r\n     * It handles the row double clicking.\r\n     */\r\n    public doubleClickRow(event: MouseEvent, item: DataTableRenderedItem): void {\r\n        if (this.showAsTree) {\r\n            this.clickTreeToggle(event, item);\r\n        }\r\n        this.selectItem(event, item);\r\n        this.rowDblclick.emit({ data: item.data });\r\n    }\r\n\r\n    /**\r\n     * It scrolls the selected item into the view and\r\n     */\r\n    public scrollSelectedItemIntoView(tryToMoveToCenter?: boolean): void {\r\n        let selectionData = null;\r\n        if (this.selection) {\r\n            if (this.selectionMode !== DataTableMultipleSelectMode.Multiple) {\r\n                if (this.showAsTree) {\r\n                    selectionData = this.selection.data;\r\n                } else {\r\n                    selectionData = this.selection;\r\n                }\r\n            } else {\r\n                if (this.selection.length === 1) {\r\n                    if (this.showAsTree) {\r\n                        selectionData = this.selection[0].data;\r\n                    } else {\r\n                        selectionData = this.selection[0];\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        if (selectionData) {\r\n            for (let i = 0; i < this.renderedItems.length; i++) {\r\n                let found = false;\r\n                if (this.renderedItems[i].data === selectionData) {\r\n                    found = true;\r\n                }\r\n\r\n                if (found) {\r\n                    this.activateRenderedItemByIndex(i, false);\r\n\r\n                    if (tryToMoveToCenter) {\r\n                        setTimeout(() => {\r\n                            const scrollContainerElement = this.scrollContainerElement.nativeElement;\r\n                            const scrollDataElement = this.scrollDataElement.nativeElement;\r\n                            const selectedItemElement = scrollDataElement.querySelector('.sme-table-row.sme-table-row-selected');\r\n                            if (selectedItemElement) {\r\n                                const selectedItemTop = selectedItemElement.getBoundingClientRect().top\r\n                                    - scrollDataElement.getBoundingClientRect().top;\r\n                                scrollContainerElement.scrollTop = selectedItemTop + scrollDataElement.offsetTop\r\n                                    - scrollContainerElement.offsetHeight / 2;\r\n                            }\r\n                        });\r\n                    }\r\n\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It handles the clicking behavior of checkbox.\r\n     * Multiple selection behavior is happening here.\r\n     */\r\n    public onItemCheckBoxClicked(item: DataTableRenderedItem, isFromKeyboard?: boolean) {\r\n        // If the item is unchecked, need to set activeRenderedItemIndex to -1 then this item won't be highlighted in the UI.\r\n        if (item.type !== DataTableRenderedItemType.GroupHeader) {\r\n            if (item.type === DataTableRenderedItemType.TreeNode) {\r\n                this.handleTreeNodeSelection(item.node, !item.node.selected, false, !this.linkParentChildrenSelections);\r\n                if (item.node.selected) {\r\n                    this.nodeSelected.emit({ node: item.node });\r\n                } else {\r\n                    if (!isFromKeyboard) {\r\n                        this.setActiveRenderedItemIndex(-1);\r\n                    }\r\n                }\r\n                if (this.showAsTree && !this.editable && this.expandTreeNodeOnChecked && item.hasChildren) {\r\n                    this.clickTreeToggle(null, item, true);\r\n                }\r\n            } else {\r\n                const index = this.internalSelection.indexOf(item.data);\r\n                if (index === -1) {\r\n                    this.internalSelection.push(item.data);\r\n                    this.rowSelected.emit({ data: item.data });\r\n                } else {\r\n                    this.internalSelection.splice(index, 1);\r\n                    this.rowUnselected.emit({ data: item.data });\r\n                    if (!isFromKeyboard) {\r\n                        this.setActiveRenderedItemIndex(-1);\r\n                    }\r\n                }\r\n            }\r\n        } else {\r\n            const selected = this.isItemSelected(item);\r\n            const groupItems = this.filteredItems.filter(currentItem =>\r\n                this.resolveObjectPath(currentItem, this.groupColumn.field) === item.data);\r\n            for (let i = 0; i < groupItems.length; i++) {\r\n                const index = this.internalSelection.indexOf(groupItems[i]);\r\n                if (selected) {\r\n                    if (index !== -1) {\r\n                        this.internalSelection.splice(index, 1);\r\n                        this.rowUnselected.emit({ data: groupItems[i] });\r\n                    }\r\n                } else {\r\n                    if (index === -1) {\r\n                        this.internalSelection.push(groupItems[i]);\r\n                        this.rowSelected.emit({ data: groupItems[i] });\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (!selected && !isFromKeyboard) {\r\n                this.setActiveRenderedItemIndex(-1);\r\n            }\r\n        }\r\n\r\n        // Need to recreate the \"internalSelection\" array otherwise the change detector won't detect the change\r\n        // since the array's own reference is not changed.\r\n        this.internalSelection = this.internalSelection.slice(0, this.internalSelection.length);\r\n\r\n        this.selectionChange.emit(this.internalSelection);\r\n    }\r\n\r\n    /**\r\n     * It handles the \"check all\" checkbox behavior.\r\n     */\r\n    public onAllItemCheckBoxClicked() {\r\n        if (!this.showAsTree) {\r\n            if (this.internalSelection.length !== this.filteredItems.length) {\r\n                this.selectAll();\r\n            } else {\r\n                this.selection.forEach(item => {\r\n                    this.rowUnselected.emit({ data: item });\r\n                });\r\n                this.selection = [];\r\n            }\r\n        } else {\r\n            const shouldSelect = !this.shouldAllItemCheckBoxChecked();\r\n            this.internalSelection = [];\r\n            this.filteredItems.forEach(item => {\r\n                this.handleTreeNodeSelection(item, shouldSelect);\r\n            });\r\n            this.selectionChange.emit(this.internalSelection);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It indicates whether the given item is selected.\r\n     */\r\n    public isItemSelected(item: DataTableRenderedItem): boolean {\r\n        let selected = false;\r\n        if (!this.showAsTree) {\r\n            if (item.type !== DataTableRenderedItemType.GroupHeader) {\r\n                selected = item.data && this.internalSelection.indexOf(item.data) !== -1;\r\n            } else if (this.selectionMode === DataTableMultipleSelectMode.Multiple) {\r\n                selected = true;\r\n                const groupItems = this.filteredItems.filter(currentItem => {\r\n                    const value = this.resolveObjectPath(currentItem, this.groupColumn.field);\r\n                    return (value !== undefined && value !== null && value.toString() === item.data)\r\n                        || (value === undefined && item.data === undefined);\r\n                });\r\n\r\n                if (groupItems.length === 0) {\r\n                    selected = false;\r\n                } else {\r\n                    for (let i = 0; i < groupItems.length; i++) {\r\n                        if (this.internalSelection.indexOf(groupItems[i]) === -1) {\r\n                            selected = false;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        } else {\r\n            if (this.selectionMode === DataTableMultipleSelectMode.Multiple) {\r\n                selected = item.node && item.node.selected;\r\n            } else {\r\n                selected = item.data && this.internalSelection.map(currentItem => currentItem.data).indexOf(item.data) !== -1;\r\n            }\r\n        }\r\n\r\n        return selected;\r\n    }\r\n\r\n    /**\r\n     * It indicates whether a group with the given name is expanded.\r\n     */\r\n    public isGroupExpanded(group: string): boolean {\r\n        return this.groupToggleStatus[group];\r\n    }\r\n\r\n    /**\r\n     * It gets and sets the virtual count.\r\n     * It only works when \"lazyLoad\" is true.\r\n     */\r\n    @Input()\r\n    public get virtualCount(): number {\r\n        return this.items && this.items.length || undefined;\r\n    }\r\n    public set virtualCount(value: number) {\r\n        if (value >= 0) {\r\n            this.items = Array(value);\r\n            for (let i = 0; i < value; i++) {\r\n                this.items[i] = null;\r\n            }\r\n\r\n            this.isLoading = false;\r\n            this.renderItems();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It resolves the object properties based on the given path with multiple levels of properties.\r\n     * An example of path is \"location.zipCode\".\r\n     */\r\n    public resolveObjectPath(obj: any, path: string): any {\r\n        if (obj && path) {\r\n            const pathSegments: string[] = path.split('.');\r\n            if (pathSegments.length === 1) {\r\n                return obj[path];\r\n            }\r\n\r\n            let currentObj = obj;\r\n            for (let i = 0; i < pathSegments.length; i++) {\r\n                currentObj = currentObj[pathSegments[i]];\r\n                if (currentObj === undefined || currentObj === null) {\r\n                    break;\r\n                }\r\n            }\r\n            return currentObj;\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    /**\r\n     * It returns the active rendered item index.\r\n     */\r\n    public getActiveRenderedItemIndex(): number {\r\n        return this.activeRenderedItemIndex;\r\n    }\r\n\r\n    private setActiveRenderedItemIndex(input: number) {\r\n        this.activeRenderedItemIndex = input >= 0 ? input : -1;\r\n        this.activeFocusedItemIndex = this.activeRenderedItemIndex;\r\n    }\r\n\r\n    /**\r\n     * It returns the active focused item index.\r\n     */\r\n    public getActiveFocusedItemIndex(): number {\r\n        return this.activeFocusedItemIndex > -1 ? this.activeFocusedItemIndex : this.activeRenderedItemIndex;\r\n    }\r\n\r\n    private selectOrFocusRowByIndex(index: number, doSelection: boolean = true) {\r\n        this.activateRenderedItemByIndex(index, doSelection);\r\n    }\r\n\r\n    /**\r\n     * Gets the table cell item.\r\n     * @param rowIndex The row index for getting all the table cells\r\n     * @returns the HTML element for the table cell.\r\n     */\r\n    public getTableCells(rowIndex: number): HTMLElement {\r\n        const cells = this.hostElement.nativeElement.querySelectorAll(\r\n            // eslint-disable-next-line max-len\r\n            `.sme-table-container div[role=\"rowgroup\"] div.sme-table-row.sme-table-row-data.sme-table-row-selectable[data-rendered-item-index=\"${rowIndex}\"] div[role=\"gridcell\"] .sme-table-cell`);\r\n\r\n        return cells;\r\n    }\r\n\r\n    /**\r\n     * Moves to head of the whole rendered item list.\r\n     */\r\n    public moveToHeadOfRenderedItems(doSelection: boolean = true): void {\r\n        this.selectOrFocusRowByIndex(0, doSelection);\r\n    }\r\n\r\n    /**\r\n     * Moves to previous page of the rendered item list.\r\n     */\r\n    public moveToPreviousPageOfRenderedItems(doSelection: boolean = true): void {\r\n        const index = doSelection ? this.getActiveRenderedItemIndex() : this.getActiveFocusedItemIndex();\r\n        let newIndex = 0;\r\n        if (index >= 0) {\r\n            newIndex = index - Math.round(this.renderedItemLengthInViewPort);\r\n        }\r\n\r\n        this.selectOrFocusRowByIndex(newIndex, doSelection);\r\n    }\r\n\r\n    /**\r\n     * Moves to previous item in the rendered item list.\r\n     */\r\n    public moveToPreviousRenderedItem(doSelection: boolean = true): void {\r\n        const index = doSelection ? this.getActiveRenderedItemIndex() : this.getActiveFocusedItemIndex();\r\n\r\n        let newIndex = 0;\r\n        if (index >= 0) {\r\n            newIndex = index - 1;\r\n        }\r\n\r\n        this.selectOrFocusRowByIndex(newIndex, doSelection);\r\n    }\r\n\r\n    /**\r\n     * Moves to next item in the rendered item list.\r\n     * @param doSelection if true will do selection and focus, otherwise focus only\r\n     */\r\n\r\n    public moveToNextRenderedItem(doSelection = true, columnIndex?: number): void {\r\n        let index = doSelection ? this.getActiveRenderedItemIndex() : this.getActiveFocusedItemIndex();\r\n\r\n        if (columnIndex) {\r\n            index = columnIndex;\r\n        }\r\n\r\n        let newIndex = 0;\r\n        if (index >= 0) {\r\n            newIndex = index + 1;\r\n        }\r\n\r\n        this.selectOrFocusRowByIndex(newIndex, doSelection);\r\n    }\r\n\r\n    /**\r\n     * Moves to next page of the rendered item list.\r\n     */\r\n    public moveToNextPageOfRenderedItems(doSelection: boolean = true): void {\r\n        const index = doSelection ? this.getActiveRenderedItemIndex() : this.getActiveFocusedItemIndex();\r\n        let newIndex = 0;\r\n        newIndex = index + Math.round(this.renderedItemLengthInViewPort);\r\n\r\n        this.selectOrFocusRowByIndex(newIndex, doSelection);\r\n    }\r\n\r\n    /**\r\n     * Moves to end of the whole rendered list.\r\n     */\r\n    public moveToEndOfRenderedItems(doSelection: boolean = true): void {\r\n        this.selectOrFocusRowByIndex(this.renderedItems.length - 1, doSelection);\r\n    }\r\n\r\n    /**\r\n     * Activate the rendered item by condition.\r\n     * Activate doesn't mean select. It just indicates which item is active to received more operations especially keyboard operations.\r\n     */\r\n    public activateRenderedItemByCondition(condition: (item: DataTableDataItem) => boolean, doSelection: boolean): void {\r\n        for (let i = 0; i < this.renderedItems.length; i++) {\r\n            if (condition(this.renderedItems[i].data)) {\r\n                this.activateRenderedItemByIndex(this.renderedItems[i].index, doSelection);\r\n                break;\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Activate the rendered item by index.\r\n     * Activate doesn't mean select. It just indicates which item is active to received more operations especially keyboard operations.\r\n     */\r\n    private activateRenderedItemByIndex(index: number, doSelection: boolean, doFocus: boolean = true): void {\r\n        if (index < 0) {\r\n            index = 0;\r\n        }\r\n\r\n        if (index > this.renderedItems.length - 1) {\r\n            index = this.renderedItems.length - 1;\r\n        }\r\n\r\n        if (doSelection) {\r\n            this.setActiveRenderedItemIndex(index);\r\n        } else {\r\n            this.activeFocusedItemIndex = index;\r\n        }\r\n\r\n        if (this.filteredItems && this.filteredItems.length > 0\r\n            && this.selectionMode !== DataTableMultipleSelectMode.Multiple\r\n            && this.selectItemWhenNavigatingWithKeyboard && doSelection) {\r\n            this.selectItem(null, this.renderedItems[index]);\r\n        }\r\n\r\n        const scrollContainerElement = this.scrollContainerElement.nativeElement;\r\n        const totalScrollableSpace = scrollContainerElement.scrollHeight - scrollContainerElement.offsetHeight;\r\n        const totalScrollableItemLength = this.renderedItems.length - this.renderedItemLengthInViewPort;\r\n\r\n        const currentRenderedItemStartIndex = totalScrollableItemLength * scrollContainerElement.scrollTop / totalScrollableSpace\r\n            + this.renderedItemStartIndexOffset;\r\n\r\n        let newRenderItemStartIndex = -1;\r\n        if (index >= Math.floor(currentRenderedItemStartIndex + this.renderedItemLengthInViewPort - 1)) {\r\n            newRenderItemStartIndex = index - this.renderedItemLengthInViewPort + 1;\r\n        }\r\n\r\n        if (index <= currentRenderedItemStartIndex) {\r\n            newRenderItemStartIndex = index;\r\n        }\r\n\r\n        // If newRenderItemStartIndex >= 0, it means when the rendered item is activated, it triggers scrolling in the list.\r\n        if (newRenderItemStartIndex > 0) {\r\n            // Figure out what's the new scrollTop based on new renderedItemStartIndex.\r\n            const scrollTop = Math.floor(totalScrollableSpace * (newRenderItemStartIndex / totalScrollableItemLength));\r\n\r\n            if (this.hasLongList) {\r\n                // If it's a long list, which means one pixel of scrollbar movement causes more than one screen of the list scrolling,\r\n                // Figure out the truncated rendered item start index.\r\n                const truncatedStartIndex = Math.floor(scrollTop / totalScrollableSpace * totalScrollableItemLength);\r\n\r\n                // Since the actual position of the activated rendered item list can be more than one screen below,\r\n                // we need to figure out the offset between the newRenderItemStartIndex and truncatedStartIndex.\r\n                // Then later when we render the data table items in the view port, we will use the offset to adjust\r\n                // the item list to make sure the actual activated rendered item can show up in the view port.\r\n                this.renderedItemStartIndexOffset = newRenderItemStartIndex - truncatedStartIndex;\r\n                if (newRenderItemStartIndex + this.renderedItemStartIndexOffset + this.renderedItemLengthInViewPort\r\n                    > this.renderedItems.length - 1) {\r\n                    this.renderedItemStartIndexOffset = 0;\r\n                }\r\n            } else {\r\n                this.renderedItemStartIndexOffset = 0;\r\n            }\r\n\r\n            // Set the scrollTop and re-calculate the view port.\r\n            this.scrollContainerElement.nativeElement.scrollTop = scrollTop;\r\n            this.calculateItemInViewPort(false, true);\r\n        } else if (doFocus) {\r\n            if (doSelection) {\r\n                this.tryToFocusSelectedRow();\r\n            } else {\r\n                this.tryToFocusRowByIndex(index);\r\n            }\r\n        }\r\n    }\r\n\r\n    private tryToFocusRowByIndex(index: number) {\r\n        this.tryToFocusSelectedRow(index);\r\n    }\r\n\r\n    public getAriaExpandedAttributeValue(renderedItem: DataTableRenderedItem): string {\r\n        let result: string;\r\n\r\n        if (renderedItem.type === DataTableRenderedItemType.GroupHeader) {\r\n            const isGroupExpanded = this.isGroupExpanded(renderedItem.data);\r\n            if (isGroupExpanded !== undefined) {\r\n                result = isGroupExpanded.toString();\r\n            }\r\n        } else if (renderedItem.type === DataTableRenderedItemType.TreeNode && !renderedItem.node.isLeaf) {\r\n            result = (!!(renderedItem.node && renderedItem.node.expanded)).toString();\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    public getAdditionalScreenRecorderContent(renderedItem: DataTableRenderedItem): string {\r\n        let result: string;\r\n        switch (renderedItem.type) {\r\n            case DataTableRenderedItemType.TreeNode:\r\n                const subNodeCount = renderedItem.node.children ? renderedItem.node.children.length : 0;\r\n                result = subNodeCount === 1 ? this.strings.MsftSmeShell.Angular.DataTable.aria.label.oneSubNodeInTreeNode\r\n                    : this.strings.MsftSmeShell.Angular.DataTable.aria.label.nSubNodesInTreeNode.format(subNodeCount);\r\n                break;\r\n            case DataTableRenderedItemType.GroupHeader:\r\n                const groupItemCount = this.groupKeys[renderedItem.data].length;\r\n                result = groupItemCount === 1 ? this.strings.MsftSmeShell.Angular.DataTable.aria.label.oneItemInGroup\r\n                    : this.strings.MsftSmeShell.Angular.DataTable.aria.label.nItemsInGroup.format(groupItemCount);\r\n                break;\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    public onEditableDataChanged(renderedItem: DataTableRenderedItem, field: string) {\r\n        setTimeout(() => {\r\n            const editableDataItem = <EditableDataItem>renderedItem.data;\r\n\r\n            if (!editableDataItem.isNewRow && this.editableDataChangeSet.addedItems.indexOf(editableDataItem.content) === -1) {\r\n                const updatedItemIndex = this.editableDataChangeSet.updatedItems.indexOf(editableDataItem.content);\r\n                if (updatedItemIndex !== -1) {\r\n                    this.editableDataChangeSet.updatedItems.splice(updatedItemIndex, 1);\r\n                }\r\n                let valid = true;\r\n                for (const property in editableDataItem.validationAlerts) {\r\n                    if (editableDataItem.validationAlerts.hasOwnProperty(property)) {\r\n                        if (editableDataItem.validationAlerts[property]) {\r\n                            valid = editableDataItem.validationAlerts[property].valid;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                if (valid) {\r\n                    this.editableDataChangeSet.updatedItems.push(editableDataItem.content);\r\n                }\r\n                this.changesetUpdated.emit(this.editableDataChangeSet);\r\n            }\r\n        });\r\n    }\r\n\r\n    public resetEditableDataChangeset(): void {\r\n        this.editableDataChangeSet = {\r\n            addedItems: [],\r\n            updatedItems: [],\r\n            deletedItems: []\r\n        };\r\n        this.changesetUpdated.emit(this.editableDataChangeSet);\r\n    }\r\n\r\n    public onValidationAlertHandler(renderedItem: DataTableRenderedItem, field: string, alert: any): void {\r\n        const editableDataItem = <EditableDataItem>renderedItem.data;\r\n        editableDataItem.validationAlerts[field] = alert;\r\n\r\n        renderedItem.validationResult.length = 0;\r\n        this.columns.forEach(column => {\r\n            if (column.field && editableDataItem.validationAlerts[column.field] && !column.hidden) {\r\n                renderedItem.validationResult.push({\r\n                    field: column.header,\r\n                    alert: editableDataItem.validationAlerts[column.field]\r\n                });\r\n            }\r\n        });\r\n    }\r\n\r\n    // has validation error if there are any validation alerts\r\n    public hasValidationError(renderedItem: DataTableRenderedItem): boolean {\r\n        return renderedItem.validationResult && renderedItem.validationResult.length > 0;\r\n    }\r\n\r\n    public getRoleAttributeForTreeTableRow(renderedItem: DataTableRenderedItem): string {\r\n        return this.dataTableAccessibilityManager.getRoleAttributeForTreeTableRow(renderedItem, this.showHeader);\r\n    }\r\n\r\n    public getAriaSortAttributeValue(column: DataTableColumnComponent): string {\r\n        return this.dataTableAccessibilityManager.getAriaSortAttributeValue(column);\r\n    }\r\n\r\n    public clearSelection(keepHighlightFromRow?: boolean): void {\r\n        if (this.selectionMode === DataTableMultipleSelectMode.Multiple) {\r\n            this.selection = [];\r\n        } else {\r\n            this.selection = null;\r\n        }\r\n\r\n        if (!keepHighlightFromRow) {\r\n            this.removeHighlightFromRow();\r\n        }\r\n    }\r\n\r\n    @Debounce()\r\n    public checkIsTableRenderedOnPhoneDownWithMinHeight(shouldEmit?: boolean, forceLayout?: boolean): boolean {\r\n        if (this.DataTableResponsiveWindowManager\r\n            .checkIsTableRenderedOnPhoneDownWithMinHeight(this.headerTableElement, this.scrollContainerElement)) {\r\n\r\n            if (shouldEmit) {\r\n                this.isTableRenderedWithMinHeightPhoneDown.emit(true);\r\n            }\r\n\r\n            if (forceLayout) {\r\n                this.onLayoutChanged();\r\n            }\r\n\r\n            return true;\r\n        }\r\n\r\n        if (shouldEmit) {\r\n            this.isTableRenderedWithMinHeightPhoneDown.emit(false);\r\n        }\r\n\r\n        if (forceLayout) {\r\n            this.onLayoutChanged();\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    public removeHighlightFromRow(): void {\r\n        this.setActiveRenderedItemIndex(-1);\r\n    }\r\n\r\n    public navigateByPath(pathSections: string[],\r\n        getNodeLabelHandler: (node: TreeNodeDataItem) => string,\r\n        onTaskFinishedHandler?: (found: boolean) => void,\r\n        isNodeLoadingHandler?: (node: TreeNodeDataItem) => boolean,\r\n        timeout = 5000,\r\n        onlyTriggerSelectionForLastNode?: boolean, matchFirstAFew?: boolean): void {\r\n        if (this.nodeNavigatingTask && this.nodeNavigatingTask.isRunning) {\r\n            throw new Error('node navigation is in progress.');\r\n        }\r\n\r\n        this.nodeNavigatingTask = {\r\n            pathSections: pathSections,\r\n            isRunning: true,\r\n            currentPathSectionIndex: 0,\r\n            currentRenderedItemIndex: 0,\r\n            onTaskFinished: onTaskFinishedHandler,\r\n            currentPathSectionStartTime: new Date()\r\n        };\r\n\r\n        this.handlePathNavigation(\r\n            getNodeLabelHandler,\r\n            isNodeLoadingHandler,\r\n            timeout,\r\n            onlyTriggerSelectionForLastNode,\r\n            null,\r\n            matchFirstAFew);\r\n    }\r\n\r\n    public getAllItemCheckBoxAriaLabel(): string {\r\n        return this.shouldAllItemCheckBoxChecked() ? this.strings.MsftSmeShell.Angular.DataTable.aria.label.unselectAllItems\r\n            : this.strings.MsftSmeShell.Angular.DataTable.aria.label.selectAllItems;\r\n    }\r\n\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-data-table'\r\n        ]);\r\n    }\r\n\r\n    private handlePathNavigation(getNodeLabelHandler: (node: TreeNodeDataItem) => string,\r\n        isNodeLoadingHandler?: (node: TreeNodeDataItem) => boolean,\r\n        timeout?: number, onlyTriggerSelectionForLastNode?: boolean,\r\n        lastFoundNode?: DataTableRenderedItem, matchFirstAFew?: boolean): void {\r\n        setTimeout(\r\n            () => {\r\n                let shouldContinue = false;\r\n                let foundNode = false;\r\n                let nearMatchNode: DataTableRenderedItem = null;\r\n                if (this.nodeNavigatingTask.currentPathSectionIndex < this.nodeNavigatingTask.pathSections.length) {\r\n                    for (let i = this.nodeNavigatingTask.currentRenderedItemIndex; i < this.renderedItems.length; i++) {\r\n                        shouldContinue = true;\r\n\r\n                        const label = getNodeLabelHandler(this.renderedItems[i].node).toLocaleLowerCase();\r\n                        if (label ===\r\n                            this.nodeNavigatingTask.pathSections[this.nodeNavigatingTask.currentPathSectionIndex].toLocaleLowerCase()) {\r\n                            if (!this.renderedItems[i].node.expanded\r\n                                && this.nodeNavigatingTask.currentPathSectionIndex < this.nodeNavigatingTask.pathSections.length - 1) {\r\n                                this.clickTreeToggle(event, this.renderedItems[i], true);\r\n                            }\r\n                            foundNode = true;\r\n\r\n                            if (!onlyTriggerSelectionForLastNode) {\r\n                                this.activateRenderedItemByIndex(i, false);\r\n                            }\r\n                            lastFoundNode = this.renderedItems[i];\r\n\r\n                            if (this.nodeNavigatingTask.currentPathSectionIndex === this.nodeNavigatingTask.pathSections.length - 1) {\r\n                                this.nodeNavigatingTask.isRunning = false;\r\n                                if (this.selection !== this.renderedItems[i].node) {\r\n                                    this.selectItem(null, this.renderedItems[i]);\r\n                                }\r\n                                this.scrollSelectedItemIntoView(true);\r\n                                if (this.nodeNavigatingTask.onTaskFinished) {\r\n                                    this.nodeNavigatingTask.onTaskFinished(true);\r\n                                }\r\n                                shouldContinue = false;\r\n                                break;\r\n                            }\r\n\r\n                            if (!isNodeLoadingHandler || !isNodeLoadingHandler(this.renderedItems[i].node)) {\r\n                                this.nodeNavigatingTask.currentPathSectionIndex++;\r\n                                this.nodeNavigatingTask.currentRenderedItemIndex = i + 1;\r\n                                this.nodeNavigatingTask.currentPathSectionStartTime = new Date();\r\n                            }\r\n\r\n                            break;\r\n                        } else {\r\n                            if (!nearMatchNode\r\n                                && this.nodeNavigatingTask.pathSections[this.nodeNavigatingTask.currentPathSectionIndex]\r\n                                && label.indexOf(this.nodeNavigatingTask.pathSections[\r\n                                    this.nodeNavigatingTask.currentPathSectionIndex].toLocaleLowerCase()) === 0) {\r\n                                nearMatchNode = this.renderedItems[i];\r\n                            }\r\n                        }\r\n\r\n                        if (this.nodeNavigatingTask.currentRenderedItemIndex > 0\r\n                            && this.renderedItems[i].depth\r\n                            === this.renderedItems[this.nodeNavigatingTask.currentRenderedItemIndex - 1].depth) {\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n\r\n                if (shouldContinue) {\r\n                    const now = new Date();\r\n                    if (!foundNode && now.getTime() - this.nodeNavigatingTask.currentPathSectionStartTime.getTime() > timeout) {\r\n                        this.nodeNavigatingTask.isRunning = false;\r\n                        if (this.nodeNavigatingTask.onTaskFinished) {\r\n                            this.nodeNavigatingTask.onTaskFinished(false);\r\n                            if (nearMatchNode) {\r\n                                this.selectItem(null, nearMatchNode);\r\n                                this.scrollSelectedItemIntoView(true);\r\n                            } else if (lastFoundNode) {\r\n                                this.selectItem(null, lastFoundNode);\r\n                                this.scrollSelectedItemIntoView(true);\r\n                            }\r\n                        }\r\n                    } else {\r\n                        this.handlePathNavigation(\r\n                            getNodeLabelHandler,\r\n                            isNodeLoadingHandler,\r\n                            timeout,\r\n                            onlyTriggerSelectionForLastNode,\r\n                            lastFoundNode,\r\n                            matchFirstAFew);\r\n                    }\r\n                }\r\n            },\r\n            200);\r\n    }\r\n\r\n    private initializeUI(): void {\r\n        this.tempRowElement.nativeElement.style.display = 'none';\r\n        setTimeout(() => {\r\n            if (this.isComponentInitialized) {\r\n                this.renderItems(false, true);\r\n            }\r\n        });\r\n    }\r\n\r\n    private sortItems(): void {\r\n        if (this.renderedItems && this.sortColumn) {\r\n            const compareFunction = this.sortColumn.sortable === 'custom' ?\r\n                this.sortColumn.compareFunction.bind(this) : this.defaultSortCompareFunction.bind(this);\r\n            const sortDirection = this.sortColumn.sortMode === DataTableSortMode.Ascend ? 1 : -1;\r\n\r\n            if (!this.groupColumn) {\r\n                let editableNewRowRenderedItem = null;\r\n                if (this.editable && this.renderedItems.length) {\r\n                    const renderedItem = this.renderedItems.last();\r\n                    if (renderedItem.data.isNewRow) {\r\n                        editableNewRowRenderedItem = renderedItem;\r\n                        this.renderedItems.splice(this.renderedItems.length - 1, 1);\r\n                    }\r\n                }\r\n\r\n                let shouldFallBackToDefaultSort = false;\r\n\r\n                if (!this.showAsTree) {\r\n                    if (this.lazyLoad) {\r\n                        let alreadyLoadedAllData = true;\r\n                        for (let i = 0; i < this.renderedItems.length; i++) {\r\n                            if (!this.renderedItems[i] || !this.renderedItems[i].data) {\r\n                                alreadyLoadedAllData = false;\r\n                                break;\r\n                            }\r\n                        }\r\n                        if (this.sortColumn === this.previousSortColumn) {\r\n                            this.renderedItems = this.renderedItems.reverse();\r\n                            return;\r\n                        } else {\r\n                            if (!alreadyLoadedAllData) {\r\n                                for (let i = 0; i < this.renderedItems.length; i++) {\r\n                                    this.renderedItems[i] = { index: i, data: undefined, type: DataTableRenderedItemType.Normal };\r\n                                }\r\n                            } else {\r\n                                shouldFallBackToDefaultSort = true;\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n\r\n                this.doCustomSort.emit({\r\n                    direction: sortDirection, field: this.sortColumn.field, fallBackToDefaultSort: () => {\r\n                        shouldFallBackToDefaultSort = true;\r\n                    }\r\n                });\r\n\r\n                if (shouldFallBackToDefaultSort || this.doCustomSort.observers.length === 0) {\r\n                    if (!this.showAsTree) {\r\n                        if (!this.editable) {\r\n                            this.renderedItems = this.renderedItems.sort((a, b) => {\r\n                                return sortDirection * compareFunction(a.data, b.data, this.sortColumn.field);\r\n                            });\r\n                        } else {\r\n                            this.renderedItems = this.renderedItems.sort((a, b) => {\r\n                                return sortDirection * compareFunction(a.data.content, b.data.content, this.sortColumn.field);\r\n                            });\r\n                        }\r\n                    } else {\r\n                        // The following code in \"else\" block handles the sort in the tree nodes.\r\n                        // It sorts the tree nodes only in its own tree level.\r\n                        // If there are any nodes have sub nodes and other nodes don't have sub nodes,\r\n                        // always put the nodes with sub nodes in front of the nodes without sub nodes.\r\n                        const stack = [this.shadowTree];\r\n                        this.renderedItems = [];\r\n                        while (stack.length > 0) {\r\n                            const currentNode = stack[stack.length - 1];\r\n                            if (currentNode.data) {\r\n                                this.renderedItems.push(currentNode.data);\r\n                            }\r\n                            stack.splice(stack.length - 1, 1);\r\n                            let children = currentNode.children;\r\n                            children = children.sort((a, b) => {\r\n                                // Note that the compare result about 1 or -1 is reversed.\r\n                                // For example if a is greater than b, 1 will be returned instead of -1.\r\n                                // It's because those nodes are went though in the stack with is FIFO,\r\n                                // so the order is reversed.\r\n                                if (this.sortColumn === this.actualColumns[0]) {\r\n                                    if (a.data.hasChildren && !b.data.hasChildren) {\r\n                                        return 1;\r\n                                    } else if (!a.data.hasChildren && b.data.hasChildren) {\r\n                                        return -1;\r\n                                    }\r\n                                } else {\r\n                                    const aValue = this.resolveObjectPath(a.data.data, this.sortColumn.field);\r\n                                    const bValue = this.resolveObjectPath(b.data.data, this.sortColumn.field);\r\n\r\n                                    if (aValue === undefined && bValue !== undefined) {\r\n                                        return 1;\r\n                                    } else if (aValue !== undefined && bValue === undefined) {\r\n                                        return -1;\r\n                                    }\r\n                                }\r\n                                return -sortDirection * compareFunction(a.data.data, b.data.data, this.sortColumn.field);\r\n                            });\r\n                            children.forEach(item => {\r\n                                stack.push(item);\r\n                            });\r\n                        }\r\n                    }\r\n                }\r\n\r\n                if (editableNewRowRenderedItem && this.editableAutoNewRow) {\r\n                    this.renderedItems.push(editableNewRowRenderedItem);\r\n                }\r\n            } else {\r\n                // The following code handles the sorting when grouping is enabled.\r\n                // It sorts the group items in each of the group.\r\n                const sortedRenderedItems: DataTableRenderedItem[] = [];\r\n                let groupedRenderedItems: DataTableRenderedItem[];\r\n                for (let i = 0; i < this.renderedItems.length; i++) {\r\n                    if (this.renderedItems[i].type === DataTableRenderedItemType.GroupHeader) {\r\n                        if (groupedRenderedItems) {\r\n                            groupedRenderedItems = groupedRenderedItems.sort((a, b) => {\r\n                                return sortDirection * compareFunction(a.data, b.data, this.sortColumn.field);\r\n                            });\r\n                            groupedRenderedItems.forEach(item => {\r\n                                sortedRenderedItems.push(item);\r\n                            });\r\n                        }\r\n                        sortedRenderedItems.push(this.renderedItems[i]);\r\n                        groupedRenderedItems = [];\r\n                    } else {\r\n                        groupedRenderedItems.push(this.renderedItems[i]);\r\n                    }\r\n                }\r\n                if (groupedRenderedItems) {\r\n                    groupedRenderedItems = groupedRenderedItems.sort((a, b) => {\r\n                        return sortDirection * compareFunction(a.data, b.data, this.sortColumn.field);\r\n                    });\r\n                    groupedRenderedItems.forEach(item => {\r\n                        sortedRenderedItems.push(item);\r\n                    });\r\n                }\r\n                this.renderedItems = sortedRenderedItems;\r\n            }\r\n            this.updateActiveRenderedItemIndexBySelection();\r\n        }\r\n    }\r\n\r\n    private defaultSortCompareFunction(a: DataTableDataItem, b: DataTableDataItem, field: string): number {\r\n        let result = 0;\r\n\r\n        if (!a && !b) {\r\n            result = 0;\r\n        } else if (!a && b) {\r\n            result = 1;\r\n        } else if (a && !b) {\r\n            result = -1;\r\n        } else {\r\n            let aValue = this.resolveObjectPath(a, field);\r\n            let bValue = this.resolveObjectPath(b, field);\r\n\r\n            const dataType = typeof aValue;\r\n            if (dataType === 'number') {\r\n                aValue = aValue === 0 ? aValue : (aValue || Number.MIN_VALUE);\r\n                bValue = bValue === 0 ? bValue : (bValue || Number.MIN_VALUE);\r\n\r\n                if (aValue > bValue) {\r\n                    result = 1;\r\n                } else if (aValue < bValue) {\r\n                    result = -1;\r\n                }\r\n            } else {\r\n                aValue = aValue && aValue.toString && aValue.toString().toUpperCase() || '';\r\n                bValue = bValue && aValue.toString && bValue.toString().toUpperCase() || '';\r\n\r\n                // By default, we do natural sort here.\r\n                // Based on simple string comparison, \"a100\",\"a20\",\"a3\" will be sorted as \"a100\",\"a20\",\"a3\".\r\n                // But based on natural sort, they will be sorted as \"a3\",\"a20\",\"a100\".\r\n                if (!this.disableNaturalSort) {\r\n                    const isNumber = (text: string) => text >= '0' && text <= '9';\r\n\r\n                    // Step 1, figure out the common part of 2 strings.\r\n                    let index = 0;\r\n                    while (index < aValue.length && index < bValue.length) {\r\n                        if (aValue[index] !== bValue[index]) {\r\n                            break;\r\n                        }\r\n                        index++;\r\n                    }\r\n\r\n                    // Step 2, if the rest part of each string starts with a number, parse the rest part into float.\r\n                    // parseFloat function is very durable, it can parse \"1.5abc\" as \"1.5\" so we don't need to worry that the rest part\r\n                    // of the string is mixed with numbers and letters.\r\n                    // If the rest part of each string doesn't start with a number, then don't do natural sort, just do normal string sort.\r\n                    if (isNumber(aValue[index]) && isNumber(bValue[index])) {\r\n                        const aNumber = parseFloat(aValue.substring(index, aValue.length));\r\n                        const bNumber = parseFloat(bValue.substring(index, bValue.length));\r\n                        if (aNumber > bNumber) {\r\n                            result = 1;\r\n                        } else if (aNumber < bNumber) {\r\n                            result = -1;\r\n                        }\r\n                    } else {\r\n                        if (aValue > bValue) {\r\n                            result = 1;\r\n                        } else if (aValue < bValue) {\r\n                            result = -1;\r\n                        }\r\n                    }\r\n                } else {\r\n                    if (aValue > bValue) {\r\n                        result = 1;\r\n                    } else if (aValue < bValue) {\r\n                        result = -1;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n\r\n    private hasVerticalOverflow(): boolean {\r\n        return this.scrollBodyElement.nativeElement.clientHeight > this.scrollContainerElement.nativeElement.clientHeight;\r\n    }\r\n\r\n    private alignScrollBar(): void {\r\n        const hasVerticalOverflow = this.hasVerticalOverflow();\r\n        if (!this.calculatedScrollbarWidth) {\r\n            this.calculateScrollbarWidth();\r\n        }\r\n        if (hasVerticalOverflow !== this.currentHasVerticalOverflow && this.headerTableElement) {\r\n            if (hasVerticalOverflow) {\r\n                this.headerTableElement.nativeElement.style.width = 'calc(100% - ' + this.calculatedScrollbarWidth + 'px)';\r\n                this.scrollDataElement.nativeElement.style.right = this.calculatedScrollbarWidth + 'px';\r\n            } else {\r\n                this.headerTableElement.nativeElement.style.width = '100%';\r\n                this.scrollDataElement.nativeElement.style.right = '0px';\r\n            }\r\n        }\r\n        this.currentHasVerticalOverflow = hasVerticalOverflow;\r\n    }\r\n\r\n    private calculateScrollbarWidth(): void {\r\n        const scrollDiv = document.createElement('div');\r\n        this.scrollContainerElement.nativeElement.appendChild(scrollDiv);\r\n        scrollDiv.className = 'sme-layout-absolute sme-position-stretch sme-arrange-overflow-scroll';\r\n        scrollDiv.style.top = '-9999px';\r\n        const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\r\n        this.scrollContainerElement.nativeElement.removeChild(scrollDiv);\r\n        this.calculatedScrollbarWidth = scrollbarWidth;\r\n    }\r\n\r\n    private calculateItemInViewPort(preventScrolling?: boolean, forceUpdate?: boolean): void {\r\n        if (this.isComponentInitialized && this.renderedItems) {\r\n            // Scroll container is the div to render the view port of the data table and to provide the scroll bar.\r\n            const scrollContainerElement = this.scrollContainerElement.nativeElement;\r\n\r\n            // Calculates how many items can be rendered in the view port.\r\n            this.renderedItemLengthInViewPort = this.scrollable\r\n                ? Math.min(this.renderedItems.length, scrollContainerElement.offsetHeight / this.rowHeight)\r\n                : this.renderedItems.length;\r\n\r\n            if (scrollContainerElement.offsetHeight) {\r\n                const defaultScrollPixels = this.defaultScrollPercentage * scrollContainerElement.offsetHeight;\r\n                this.defaultScrollPixels = Math.floor(defaultScrollPixels / this.rowHeight) * this.rowHeight;\r\n            }\r\n\r\n            let startIndex = 0;\r\n            let isAtLastScreen = false;\r\n\r\n            let renderedItemStart = 0;\r\n            let renderedItemEnd = this.renderedItems.length;\r\n\r\n            if (!this.disableUIVirtualization) {\r\n                if (this.hasLongList && preventScrolling) {\r\n                    this.dataScrollTop = (scrollContainerElement.scrollHeight - scrollContainerElement.offsetHeight)\r\n                        * this.currentStartIndexOfItemInViewPort / (this.renderedItems.length - this.renderedItemLengthInViewPort);\r\n                    startIndex = this.currentStartIndexOfItemInViewPort;\r\n                    this.renderedItemStartIndexOffset = 0;\r\n                    scrollContainerElement.scrollTop = this.dataScrollTop;\r\n                } else {\r\n                    // Calculates the which item is the starting item in the view port.\r\n                    // The idea here is to calculate the percentage of how far the scrollbar moved.\r\n                    // The distance the scrollbar can move is the total height of the scrollbar minus the height of the viewport.\r\n                    if (Math.floor(this.dataScrollTop) !== scrollContainerElement.scrollTop) {\r\n                        this.dataScrollTop = scrollContainerElement.scrollTop;\r\n                    }\r\n\r\n                    const accurateStartIndex = (this.renderedItems.length - this.renderedItemLengthInViewPort) * this.dataScrollTop\r\n                        / (scrollContainerElement.scrollHeight - scrollContainerElement.offsetHeight);\r\n                    startIndex = Math.floor(accurateStartIndex + this.renderedItemStartIndexOffset);\r\n                    if (startIndex + this.renderedItemLengthInViewPort > this.renderedItems.length) {\r\n                        startIndex = this.renderedItems.length - this.renderedItemLengthInViewPort;\r\n                        isAtLastScreen = true;\r\n                    }\r\n                    this.currentStartIndexOfItemInViewPort = startIndex;\r\n                }\r\n\r\n                // If the list is short and no need to have scroll bar, just simply set the start index to 0.\r\n                if (scrollContainerElement.scrollHeight <= scrollContainerElement.offsetHeight) {\r\n                    startIndex = 0;\r\n                }\r\n\r\n                renderedItemStart = startIndex - this.renderedItemLengthInViewPort * this.bufferRowRate;\r\n                // If the list if short, renderedItemEnd should be the length of the list.\r\n                // Otherwise, it should be the start index plus the length of the list in the view port plus the length * buffer rate.\r\n                renderedItemEnd = Math.min(this.renderedItems.length, Math.ceil(startIndex + this.renderedItemLengthInViewPort\r\n                    + this.renderedItemLengthInViewPort * this.bufferRowRate));\r\n            }\r\n\r\n            let shouldLazyLoad = false;\r\n\r\n            if (this.lazyLoad) {\r\n                // The following logic calculates which part of data should be loaded with the lazy loading event.\r\n                const lazyLoadStart = Math.max(0, Math.floor(renderedItemStart));\r\n                let actualLazyLoadStart = lazyLoadStart;\r\n                const lazyLoadLength = Math.min(this.renderedItems.length, renderedItemEnd) - lazyLoadStart;\r\n                let actualLazyLoadLength = lazyLoadLength;\r\n\r\n                for (let i = lazyLoadStart; i < lazyLoadStart + lazyLoadLength; i++) {\r\n                    const renderItemFlag = (!this.renderedItems[i] || !this.renderedItems[i].data);\r\n                    if (!shouldLazyLoad && renderItemFlag) {\r\n                        shouldLazyLoad = true;\r\n                        actualLazyLoadStart = i;\r\n                    }\r\n                    if (shouldLazyLoad && !renderItemFlag) {\r\n                        break;\r\n                    }\r\n                    actualLazyLoadLength = i + 1 - actualLazyLoadStart;\r\n                }\r\n\r\n                if (actualLazyLoadLength === 0) {\r\n                    shouldLazyLoad = false;\r\n                }\r\n\r\n                if (shouldLazyLoad) {\r\n                    let sortOrder = 0;\r\n                    if (this.sortColumn) {\r\n                        switch (this.sortColumn.sortMode) {\r\n                            case DataTableSortMode.Ascend:\r\n                                sortOrder = 1;\r\n                                break;\r\n                            case DataTableSortMode.Descend:\r\n                                sortOrder = -1;\r\n                                break;\r\n                            default:\r\n                                sortOrder = 0;\r\n                                break;\r\n                        }\r\n                    }\r\n\r\n                    const lazyLoadEvent = {\r\n                        start: actualLazyLoadStart,\r\n                        length: actualLazyLoadLength,\r\n                        finishLoadingData: (items, allItems) => {\r\n                            if (items && items.length) {\r\n                                for (let i = 0; i < items.length; i++) {\r\n                                    this.renderedItems[actualLazyLoadStart + i] = {\r\n                                        index: actualLazyLoadStart + i, data: items[i], type: DataTableRenderedItemType.Normal\r\n                                    };\r\n                                }\r\n                                this.calculateItemInViewPort();\r\n\r\n                                // We set internal items so that we can select all, and so we can do filtering\r\n                                this.internalItems = allItems;\r\n                                this.processFilter();\r\n\r\n                                // Force the refresh to make the changes reflect on UI, will not be called multiple times as after first\r\n                                // load, the shouldLazyLoad will be set to false\r\n                                this.refreshData();\r\n                            }\r\n                        },\r\n                        sortOrder: sortOrder,\r\n                        sortField: this.sortColumn ? this.sortColumn.field : this.actualColumns ? this.actualColumns[0].field : null\r\n                    };\r\n                    this.lazyLoadingData.emit(lazyLoadEvent);\r\n\r\n                    if (actualLazyLoadLength >= this.renderedItemLengthInViewPort * this.bufferRowRate) {\r\n                        this.isBusy = true;\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (!shouldLazyLoad) {\r\n                // When the displaying list item in the view port is moving due to scroll bar is moving,\r\n                // we need to update the top of the scroll data element.\r\n                // The first item of the scroll data element won't always aligh to the top of the view port.\r\n                // So here we need to figure out the offset of the first item.\r\n                let offset = scrollContainerElement.scrollTop % this.rowHeight;\r\n\r\n                // Note: when the display item list is even longer than the scroll container height * row height,\r\n                // it means when we move 1 pixel of the scroll bar, the data table will move by at least one item.\r\n                // In this case, we won't need to handle offset since we don't have a chance to show \"half data table item\"\r\n                // at the top border of the scroll container by moving the scroll bar very little.\r\n                if (this.renderedItems.length > scrollContainerElement.offsetHeight * this.rowHeight) {\r\n                    offset = 0;\r\n                }\r\n\r\n                if (!this.disableUIVirtualization) {\r\n                    this.displayItemsTop = scrollContainerElement.scrollTop - offset;\r\n\r\n                    const selectedItemIndex = this.getActiveRenderedItemIndex();\r\n                    if (selectedItemIndex > startIndex + this.renderedItemLengthInViewPort - 1\r\n                        && selectedItemIndex < startIndex + this.renderedItemLengthInViewPort) {\r\n                        this.displayItemsTop = scrollContainerElement.scrollTop\r\n                            - (selectedItemIndex - startIndex - this.renderedItemLengthInViewPort + 1) * this.rowHeight;\r\n                    }\r\n\r\n                    // When the scroll bar is moved to very bottom, we just simply align the displayed data table items's bottom\r\n                    // to the bottom of the container to make sure the last data table item can be displayed completely.\r\n                    // Otherwise, when the list is super long (refer to how we calculate the top offset of the super long list),\r\n                    // the last item may not be rendered completely.\r\n                    if (this.renderedItems.length > scrollContainerElement.offsetHeight * this.rowHeight\r\n                        && scrollContainerElement.scrollTop >=\r\n                        scrollContainerElement.scrollHeight - scrollContainerElement.offsetHeight - this.rowHeight / 2\r\n                        && isAtLastScreen) {\r\n                        this.displayItemsTop = scrollContainerElement.scrollHeight\r\n                            - Math.ceil(this.renderedItemLengthInViewPort) * this.rowHeight;\r\n                    }\r\n\r\n                    this.scrollDataStyleTop = this.displayItemsTop + 'px';\r\n                    if (forceUpdate) {\r\n                        this.scrollAboveDataElementHeight = 0;\r\n                    }\r\n                    this.handleScrollAboveDataElement(Math.round(startIndex - renderedItemStart));\r\n                }\r\n\r\n                if ((!this.currentRenderedItemInViewPort || !this.renderedItems[startIndex]\r\n                    || (this.renderedItems[startIndex].data !== this.currentRenderedItemInViewPort.data))\r\n                    || forceUpdate || this.showAsTree) {\r\n                    // Prepare the display data above the view port and display data in and below the view port.\r\n                    // Note: when we push new item into the arrays, we create a new object to wrap the display item.\r\n                    // Because we want to force the ngFor to re-render all the items instead of only re-render the updated ones.\r\n                    // Otherwise, ngFor will try to adjust DOM order of those items which messes up the scroll bar position.\r\n                    this.renderedItemsAboveViewPort = [];\r\n                    this.renderedItemsInAndBelowViewPort = [];\r\n                    this.shouldScroll = this.scrollable\r\n                        && (scrollContainerElement.scrollHeight > scrollContainerElement.offsetHeight\r\n                            || this.editable || this.autoRowHeight);\r\n                    if (this.shouldScroll) {\r\n                        for (let i = renderedItemStart; i < startIndex; i++) {\r\n                            const index = Math.round(i);\r\n                            if (index < startIndex) {\r\n                                if (index >= 0 && index < this.renderedItems.length) {\r\n                                    const currentRenderedItem = this.renderedItems[index];\r\n                                    this.renderedItemsAboveViewPort.push({\r\n                                        type: currentRenderedItem.type,\r\n                                        data: this.showAsTree ? currentRenderedItem.node.data : currentRenderedItem.data,\r\n                                        depth: currentRenderedItem.depth,\r\n                                        hasChildren: currentRenderedItem.hasChildren,\r\n                                        node: currentRenderedItem.node,\r\n                                        index: index,\r\n                                        positionInSet: currentRenderedItem.positionInSet,\r\n                                        setSize: currentRenderedItem.setSize,\r\n                                        validationResult: currentRenderedItem.validationResult\r\n                                    });\r\n                                } else {\r\n                                    this.renderedItemsAboveViewPort.push({ data: { placeholder: true }, type: null, index: null });\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                    for (let i = startIndex; i < renderedItemEnd; i++) {\r\n                        const index = Math.round(i);\r\n                        if (index >= 0 && index < this.renderedItems.length) {\r\n                            const currentRenderedItem = this.renderedItems[index];\r\n                            this.renderedItemsInAndBelowViewPort.push({\r\n                                type: currentRenderedItem.type,\r\n                                data: this.showAsTree ? currentRenderedItem.node.data : currentRenderedItem.data,\r\n                                depth: currentRenderedItem.depth,\r\n                                hasChildren: currentRenderedItem.hasChildren,\r\n                                node: currentRenderedItem.node,\r\n                                index: index,\r\n                                positionInSet: currentRenderedItem.positionInSet,\r\n                                setSize: currentRenderedItem.setSize,\r\n                                validationResult: currentRenderedItem.validationResult\r\n                            });\r\n                        } else if (this.scrollable && this.renderedItems.length > this.renderedItemLengthInViewPort) {\r\n                            this.renderedItemsInAndBelowViewPort.push({ data: { placeholder: true }, type: null, index: null });\r\n                        }\r\n                    }\r\n                }\r\n                this.currentRenderedItemInViewPort = this.renderedItems[startIndex];\r\n                this.isScrolling = false;\r\n                this.isBusy = false;\r\n            }\r\n\r\n            for (let i = 0; i < this.renderedItems.length; i++) {\r\n                if (this.renderedItems[i]) {\r\n                    this.renderedItems[i].index = i;\r\n                }\r\n            }\r\n\r\n            if (this.contentAreaHasFocus) {\r\n                if (document && document.activeElement &&\r\n                    this.dataTableAccessibilityManager.isSmeFormField(<HTMLElement>document.activeElement)) {\r\n                    // Do not jump from editable form fields towards the row when re-calculating items\r\n                    // Do not reset validation errors on window resizing\r\n                    return;\r\n                }\r\n                if (this.activeRenderedItemIndex !== this.activeFocusedItemIndex) {\r\n                    this.tryToFocusSelectedRow(this.activeFocusedItemIndex);\r\n                } else {\r\n                    this.tryToFocusSelectedRow();\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    private processFilter(): void {\r\n        const validatedQueryEditorList = this.internalQueryEditor;\r\n        const hasValidQueryEditor = (validatedQueryEditorList && validatedQueryEditorList.contents &&\r\n            validatedQueryEditorList.contents.length);\r\n        if (this.internalItems) {\r\n            if (this.globalFilter) {\r\n                if (this.globalFilter instanceof SearchFormFieldComponent) {\r\n                    const searchFormField = <SearchFormFieldComponent>this.globalFilter;\r\n                    this.filterKeyword = searchFormField.value && searchFormField.value.toLocaleLowerCase().trim();\r\n                } else {\r\n                    this.filterKeyword = this.globalFilter['value'] ? this.globalFilter['value'].toLocaleLowerCase().trim() : undefined;\r\n                }\r\n            }\r\n            if (!this.filterKeyword && !hasValidQueryEditor) {\r\n                this.filteredItems = this.internalItems.map(item => item);\r\n            } else if (this.internalItems) {\r\n                // First filter by the master view filters if applicable\r\n                // Then filter by the column filters\r\n                // Note filter inside the column filters are intersections\r\n                // Column filters multiple combobox will be union\r\n                this.filteredItems = [];\r\n                for (let i = 0; i < this.internalItems.length; i++) {\r\n                    const item = this.internalItems[i];\r\n                    let found = false;\r\n                    // Do the datatable original filters only if used in master view.\r\n                    // And has valid filterKeyword\r\n                    if (this.filterKeyword && this.filterKeyword.length) {\r\n                        this.actualColumns.forEach(column => {\r\n                            if (!found && column.searchable) {\r\n                                let value = this.resolveObjectPath(item, (this.editable ? 'content.' : '') + column.field);\r\n                                if (!MsftSme.isNullOrUndefined(value)) {\r\n                                    if (column.filterOverridingFunction) {\r\n                                        value = column.filterOverridingFunction(value, item);\r\n                                    }\r\n                                    if (!this.caseSensitiveFilter) {\r\n                                        value = value.toString().toLocaleLowerCase();\r\n                                    }\r\n                                    if (value.toString().indexOf(this.filterKeyword) !== -1) {\r\n                                        found = true;\r\n                                    }\r\n                                }\r\n                            }\r\n                        });\r\n                    } else {\r\n                        // If filterKeyword is empty\r\n                        // or this datatable is not used in master view\r\n                        found = true;\r\n                    }\r\n                    // If found by datatable original filter(from master view)\r\n                    // or if original filter is empty(not in master view)\r\n                    if (found) {\r\n                        if (hasValidQueryEditor) {\r\n                            // Filter by query editor if applied\r\n                            found = this.queryEditorFilterMain(validatedQueryEditorList, item);\r\n                        }\r\n                        // Check if satisfy both original filters and the query editor filters\r\n                        if (found) {\r\n                            this.filteredItems.push(item);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        } else {\r\n            this.filteredItems = null;\r\n        }\r\n    }\r\n\r\n    private updateAriaAttributes() {\r\n        if (this.isComponentInitialized) {\r\n            if (this.tableAriaLabel) {\r\n                this.hostElement.nativeElement.setAttribute('aria-label', this.tableAriaLabel);\r\n            }\r\n            if (this.tableAriaLabelledBy) {\r\n                this.hostElement.nativeElement.setAttribute('aria-labelledby', this.tableAriaLabelledBy);\r\n            }\r\n        }\r\n\r\n        if (this.showAsTree || this.selectable) {\r\n            this.hostElement.nativeElement.setAttribute(\r\n                'aria-multiselectable',\r\n                this.selectionMode === 'multiple');\r\n        }\r\n    }\r\n\r\n    private handleTreeNode(node: TreeNodeDataItem, depth: number, parentShadowTreeNode: any, positionInSet: number, setSize: number): void {\r\n        if (this.rememberTreeNodeToggle) {\r\n            const identity = this.getTreeNodeDataIdentity(node);\r\n            if (this.treeToggleStatus.hasOwnProperty(identity)) {\r\n                node.expanded = this.treeToggleStatus[identity];\r\n            }\r\n        }\r\n\r\n        const hasChildren = node.canExpand || node.children && node.children.length > 0;\r\n        node.isLeaf = !hasChildren;\r\n\r\n        const renderedItem = {\r\n            data: node.data,\r\n            type: DataTableRenderedItemType.TreeNode,\r\n            depth: depth,\r\n            hasChildren: hasChildren,\r\n            node: node,\r\n            index: this.renderedItems.length,\r\n            positionInSet: positionInSet,\r\n            setSize: setSize\r\n        };\r\n        this.renderedItems.push(renderedItem);\r\n\r\n        const currentShadowTreeNode = {\r\n            data: renderedItem,\r\n            children: []\r\n        };\r\n\r\n        // We need to maintain a shadow tree to handle the \"same level only\" sorting.\r\n        parentShadowTreeNode.children.push(currentShadowTreeNode);\r\n\r\n        if (renderedItem.node.expanded && node.children) {\r\n            let currentPositionInSet = 1;\r\n            node.children.forEach(child => {\r\n                child.parent = node;\r\n                this.handleTreeNode(child, depth + 1, currentShadowTreeNode, currentPositionInSet, node.children.length);\r\n                currentPositionInSet++;\r\n            });\r\n        }\r\n    }\r\n\r\n    private generateRenderItems(): void {\r\n        if (this.groupColumn && this.groupColumn.field) {\r\n            this.groupKeys = {};\r\n            const groups: { group: DataTableDataItem, items: DataTableRenderedItem[] }[] = [];\r\n\r\n            if (this.groupSortMode !== DataTableSortMode.None) {\r\n                const compareFunction = this.groupColumn.sortable === 'custom' ?\r\n                    this.groupColumn.compareFunction.bind(this) : this.defaultSortCompareFunction.bind(this);\r\n                const sortDirection = this.groupSortMode === DataTableSortMode.Ascend ? 1 : -1;\r\n                if (this.filteredItems) {\r\n                    this.filteredItems = this.filteredItems.sort((a, b) => {\r\n                        return sortDirection * compareFunction(a, b, this.groupColumn.field);\r\n                    });\r\n                }\r\n            }\r\n\r\n            if (this.filteredItems) {\r\n                this.filteredItems.forEach(item => {\r\n                    const groupData = this.resolveObjectPath(item, this.groupColumn.field);\r\n                    if (!this.groupKeys[groupData]) {\r\n                        const groupItems = [];\r\n                        groups.push({ group: groupData, items: groupItems });\r\n                        this.groupKeys[groupData] = groupItems;\r\n                    }\r\n                    if (this.groupToggleStatus[groupData] === undefined) {\r\n                        this.groupToggleStatus[groupData] = this.defaultGroupToggleExpanded;\r\n                    }\r\n                    this.groupKeys[groupData].push(item);\r\n                });\r\n            }\r\n\r\n            this.renderedItems = [];\r\n            for (let i = 0; i < groups.length; i++) {\r\n                this.renderedItems.push({\r\n                    data: groups[i].group,\r\n                    type: DataTableRenderedItemType.GroupHeader,\r\n                    index: this.renderedItems.length,\r\n                    positionInSet: i + 1,\r\n                    setSize: groups.length\r\n                });\r\n                if (this.groupToggleStatus[groups[i].group]) {\r\n                    let currentPositionInSet = 1;\r\n                    groups[i].items.forEach(item => {\r\n                        this.renderedItems.push({\r\n                            data: item,\r\n                            type: DataTableRenderedItemType.GroupItem,\r\n                            index: this.renderedItems.length,\r\n                            positionInSet: currentPositionInSet,\r\n                            setSize: groups[i].items.length\r\n                        });\r\n                        currentPositionInSet++;\r\n                    });\r\n                }\r\n            }\r\n        } else if (this.showAsTree) {\r\n            this.renderedItems = [];\r\n            this.shadowTree = { data: null, children: [] };\r\n            if (this.items) {\r\n                let currentPositionInSet = 1;\r\n                this.items.forEach(node => {\r\n                    this.handleTreeNode(node, 0, this.shadowTree, currentPositionInSet, this.items.length);\r\n                    currentPositionInSet++;\r\n                });\r\n            }\r\n        } else if (this.editable) {\r\n            this.renderedItems = [];\r\n            let index = 0;\r\n            if (this.filteredItems) {\r\n                for (let i = 0; i < this.filteredItems.length; i++) {\r\n                    const renderItem = <DataTableRenderedItem>{\r\n                        index: index++,\r\n                        data: this.filteredItems[i],\r\n                        type: DataTableRenderedItemType.Normal,\r\n                        validationResult: []\r\n                    };\r\n\r\n                    this.renderedItems.push(renderItem);\r\n                }\r\n            }\r\n        } else {\r\n            if (this.filteredItems) {\r\n                let index = 0;\r\n                this.renderedItems = this.filteredItems.map(item => {\r\n                    return {\r\n                        index: index++,\r\n                        data: item,\r\n                        type: DataTableRenderedItemType.Normal\r\n                    };\r\n                });\r\n            } else {\r\n                this.renderedItems = [];\r\n            }\r\n        }\r\n    }\r\n\r\n    private renderItems(preventScrolling?: boolean, forceUpdate?: boolean): void {\r\n        this.isLoading = !this.items;\r\n\r\n        this.processFilter();\r\n        this.generateRenderItems();\r\n\r\n        // Calculates how high the scroll data div should be.\r\n        if (this.renderedItems && !this.disableUIVirtualization) {\r\n            let height = this.renderedItems.length * this.rowHeight;\r\n\r\n            // If the height is too much, we need to limited the height otherwise Microsoft Edge will crash.\r\n            // It's ok if the scroll data div height doesn't equal to the actual total data table height\r\n            // because anyway we use the ratio of scroll data div height to actual total list item height\r\n            // to calculate the scrolling position of the actual data.\r\n            this.hasLongList = false;\r\n            if (height > this.maxActualScrollDataElementHeight) {\r\n                // We need to find a height near the maxActualScrollDataElementHeight which can be divided exactly by the row height.\r\n                // Otherwise when we calcuate the scrolling position of the actual data,\r\n                // the floating part of the height will impact the accuracy of the calculation result.\r\n                this.hasLongList = true;\r\n                height = Math.floor(this.maxActualScrollDataElementHeight / this.rowHeight) * this.rowHeight;\r\n            }\r\n            this.scrollBodyElement.nativeElement.style.height = height + 'px';\r\n        }\r\n\r\n        this.sortItems();\r\n\r\n        if (this.editable && this.editableAutoNewRow) {\r\n            const renderItemForNewDataItem = <DataTableRenderedItem>{\r\n                index: this.renderedItems.length,\r\n                data: <EditableDataItem>{\r\n                    id: MsftSme.newGuid(),\r\n                    validationAlerts: {},\r\n                    content: JSON.parse(JSON.stringify(this.editableNewDataItem || {})),\r\n                    isNewRow: true\r\n                },\r\n                type: DataTableRenderedItemType.Normal,\r\n                validationResult: []\r\n            };\r\n\r\n            this.renderedItems.push(renderItemForNewDataItem);\r\n        }\r\n\r\n        this.calculateItemInViewPort(preventScrolling, forceUpdate);\r\n    }\r\n\r\n    private handleScrollAboveDataElement(renderedItemAboveViewPortLength?: number): void {\r\n        const scrollAboveDataElement = this.scrollAboveDataElement.nativeElement;\r\n\r\n        // Only display the scroll above data element when it's height is available.\r\n        // Its height may not be ready when the data table is rendered first time and the scroll top is 0.\r\n        if (!this.scrollAboveDataElementHeight && scrollAboveDataElement.offsetHeight) {\r\n            this.scrollAboveDataElementHeight = scrollAboveDataElement.offsetHeight;\r\n        }\r\n\r\n        if (renderedItemAboveViewPortLength) {\r\n            this.scrollAboveDataElementHeight = this.rowHeight * renderedItemAboveViewPortLength;\r\n        }\r\n\r\n        if (this.scrollAboveDataElementHeight) {\r\n            this.scrollAboveDataStyleTop = this.displayItemsTop - this.scrollAboveDataElementHeight + 'px';\r\n            scrollAboveDataElement.style.visibility = 'visible';\r\n        } else {\r\n            scrollAboveDataElement.style.visibility = 'hidden';\r\n        }\r\n    }\r\n\r\n    public onLayoutChangedResponsiveWindow(): void {\r\n        this.DataTableResponsiveWindowManager.updateViewPortWidthDynamicallyOnPhoneDown(\r\n            this.scrollBodyElement, this.renderer, this.scrollContainerElement, this.headerTableElement);\r\n\r\n        if (this.DataTableResponsiveWindowManager.checkIsTableRenderedOnPhoneDownWithMinHeight(\r\n            this.headerTableElement, this.scrollContainerElement)) {\r\n            this.isTableRenderedWithMinHeightPhoneDown.emit(true);\r\n        } else {\r\n            this.isTableRenderedWithMinHeightPhoneDown.emit(false);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Give the access of this function on special situation where dialog contains data-table\r\n     */\r\n    @Debounce()\r\n    public refresh(): void {\r\n        this.onWindowBreakpointChanged();\r\n        this.deferredOnLayoutChanged();\r\n    }\r\n\r\n    /**\r\n     * The on window breakpoint changed handler.\r\n     * Adding yield for component to get ElementRef after initialization.\r\n     */\r\n    @Yield()\r\n    private onWindowBreakpointChanged() {\r\n        if (!this.scrollBodyElement || !this.scrollContainerElement || !this.headerTableElement) {\r\n            return;\r\n        }\r\n\r\n        this.onLayoutChangedResponsiveWindow();\r\n    }\r\n\r\n    @Yield()\r\n    private onLayoutChanged(): void {\r\n        const zoomScaleH = (window.screen.width - window.innerWidth) / window.screen.width;\r\n\r\n        const currentWidth = this.scrollContainerElement.nativeElement.offsetWidth;\r\n        const adjustedWidth = Math.max(currentWidth + zoomScaleH * currentWidth, currentWidth);\r\n\r\n        if (this.actualColumnProcessed) {\r\n            const scrollAboveDataElement = this.scrollAboveDataElement.nativeElement;\r\n            this.calculateItemInViewPort(false, true);\r\n\r\n            if (this.scrollableHorizontal) {\r\n                // As the user zooms in and out, we need to enable horizontal scrolling in the\r\n                // container element\r\n                // To accommodate display of bigger zoomed in text, we also adjust the width of the\r\n                // inner table container\r\n                // NOTE: This technique will not work for Mozilla, whose value of window.innerWidth and window.screen.width remains\r\n                //       constant\r\n                // NOTE: Not window responsive design\r\n                this.renderer.setStyle(this.scrollContainerElement.nativeElement, 'overflow-x', `auto`);\r\n\r\n                this.renderer.setStyle(\r\n                    this.scrollBodyElement.nativeElement,\r\n                    'width',\r\n                    `${adjustedWidth}px`);\r\n\r\n                this.renderer.setStyle(\r\n                    this.headerElement.nativeElement,\r\n                    'width',\r\n                    `${adjustedWidth}px`);\r\n\r\n                const originalWidth = this.scrollBodyElement.nativeElement.offsetWidth;\r\n\r\n                // We store the original ratios of the column widths as percentages of the offsetWidth;\r\n                this.actualColumns\r\n                    .filter(column => !column.width.endsWith('%') && !column.widthPercentage)\r\n                    .forEach(column => {\r\n                        const colWidth = DataTableComponent.pxConverter.convertToPx(column.width);\r\n                        // We only get ratios for units that we can successfully convert\r\n                        if (colWidth && !isNaN(colWidth) && originalWidth > 0) {\r\n                            column.widthPercentage = colWidth / originalWidth;\r\n                        }\r\n                    });\r\n\r\n            }\r\n\r\n            // The template applies the width ratio of each column on the width of the container\r\n            this.actualColumns.forEach(column => {\r\n                if (column.widthPercentage) {\r\n                    column.width = this.scrollContainerElement.nativeElement.offsetWidth * column.widthPercentage + 'px';\r\n                }\r\n            });\r\n\r\n            // When layout is changed, the \"display above view port\" item list data source is updated\r\n            // but the html is not updated yet. So the UI of the \"display above view port\" is not good.\r\n            // So hide the UI for now and adjust it in setTimeout.\r\n            scrollAboveDataElement.style.visibility = 'hidden';\r\n            setTimeout(() => {\r\n                this.scrollAboveDataElementHeight = 0;\r\n                this.handleScrollAboveDataElement();\r\n            });\r\n\r\n            this.calculateColumnDomWidths();\r\n        }\r\n    }\r\n\r\n    @Debounce()\r\n    private deferredOnLayoutChanged(): void {\r\n        this.onLayoutChanged();\r\n    }\r\n\r\n    private handleTreeNodeSelection(node: TreeNodeDataItem, selected: boolean, skipEvent?: boolean, skipLinkSelection?: boolean,\r\n        itemsToSelect?: TreeNodeDataItem[]): void {\r\n        if (itemsToSelect) {\r\n            selected = itemsToSelect.indexOf(node.data) !== -1;\r\n        }\r\n\r\n        if (this.selectionMode !== DataTableMultipleSelectMode.Multiple ||\r\n            (skipLinkSelection || !node.children || !node.children.length)) {\r\n            const index = this.internalSelection.indexOf(node);\r\n            if (selected) {\r\n                if (index === -1) {\r\n                    this.internalSelection.push(node);\r\n                    if (!skipEvent) {\r\n                        this.rowSelected.emit({ data: node.data });\r\n                    }\r\n                }\r\n            } else {\r\n                if (index !== -1) {\r\n                    this.internalSelection.splice(this.internalSelection.indexOf(node), 1);\r\n                    if (!skipEvent) {\r\n                        this.rowUnselected.emit({ data: node.data });\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        node.selected = selected;\r\n\r\n        if (this.selectionMode === DataTableMultipleSelectMode.Multiple) {\r\n            if (!skipLinkSelection) {\r\n                let currentNode = node.parent;\r\n                while (currentNode) {\r\n                    let shouldSelect = true;\r\n                    for (let i = 0; i < currentNode.children.length; i++) {\r\n                        if (!currentNode.children[i].selected) {\r\n                            shouldSelect = false;\r\n                            break;\r\n                        }\r\n                    }\r\n                    currentNode.selected = shouldSelect;\r\n                    currentNode = currentNode.parent;\r\n                }\r\n            }\r\n            if ((!skipLinkSelection || itemsToSelect) && node.children) {\r\n                node.children.forEach(childNode => {\r\n                    if (!childNode.parent) {\r\n                        childNode.parent = node;\r\n                    }\r\n                    this.handleTreeNodeSelection(childNode, selected, skipEvent, skipLinkSelection, itemsToSelect);\r\n                });\r\n            }\r\n        }\r\n    }\r\n\r\n    private alignContent(): void {\r\n        if (this.headerTableElement) {\r\n            this.contentElement.nativeElement.style.marginTop = this.headerTableElement.nativeElement.offsetHeight + 'px';\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The try to focus on row function; if there are no records, the no records message is selected\r\n     * @param index Only pass in index if needs focus only\r\n     */\r\n    private tryToFocusSelectedRow(index?: number): void {\r\n        if (!this.renderedItems || !this.renderedItems.length) {\r\n            this.tryToFocusEmptyMessage();\r\n            return;\r\n        }\r\n        clearInterval(this.tryToFocusSelectedRowTimer);\r\n        this.tryToFocusSelectedRowTimer = setTimeout(() => {\r\n            let row: HTMLElement;\r\n            if (!MsftSme.isNullOrUndefined(index) && index >= 0) {\r\n                row = this.scrollDataElement.nativeElement\r\n                    .querySelector(`.sme-table-row.sme-table-row-data[data-rendered-item-index=\"${index}\"]`);\r\n                this.activeFocusedItemIndex = index;\r\n            }\r\n            if (MsftSme.isNullOrUndefined(row)) {\r\n                row = this.scrollDataElement.nativeElement.querySelector('.sme-table-row.sme-table-row-data.sme-table-row-active');\r\n                this.activeFocusedItemIndex = this.activeRenderedItemIndex;\r\n            }\r\n\r\n            let containerTop = 0;\r\n            let containerBottom = Number.MAX_VALUE;\r\n            const containerClientRect = this.scrollContainerElement.nativeElement.getClientRects()[0];\r\n            if (containerClientRect) {\r\n                containerTop = containerClientRect.top;\r\n                containerBottom = containerClientRect.bottom;\r\n            }\r\n\r\n            let isRowInViewPort = false;\r\n            if (row) {\r\n                let rowTop = 0;\r\n                const rowClientRect = row.getClientRects()[0];\r\n                if (rowClientRect) {\r\n                    rowTop = rowClientRect.top;\r\n                }\r\n\r\n                isRowInViewPort = rowTop >= containerTop && rowTop < containerBottom;\r\n            }\r\n            if (row && !isRowInViewPort && index === undefined) {\r\n                // If the selected row is not in viewport, just focus the first visible row in the viewport.\r\n                // Then data table will still be able to receive keyboard event.\r\n                const backupRows = this.scrollDataElement.nativeElement.querySelectorAll('.sme-table-row.sme-table-row-data');\r\n                for (let i = 0; i < backupRows.length - 1; i++) {\r\n                    const rowClientRect = backupRows[i].getClientRects()[0];\r\n                    if (rowClientRect.top > containerTop) {\r\n                        row = backupRows[i];\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (row) {\r\n                if (this.currentColumnIndexWithFocusedElement >= 0 && !this.editable) {\r\n                    const cell = <HTMLElement>row.querySelectorAll('.sme-table-td')[this.currentColumnIndexWithFocusedElement];\r\n                    const focusableElement = Dom.getFirstFocusableDescendent(cell);\r\n                    // For editable data table, because of the design\r\n                    // Always focus on the row first\r\n                    if (focusableElement) {\r\n                        focusableElement.focus();\r\n                    } else {\r\n                        row.focus();\r\n                    }\r\n                } else {\r\n                    row.focus();\r\n                }\r\n                this.scrollBodyElement.nativeElement.scrollTop = 0;\r\n            }\r\n        });\r\n    }\r\n\r\n    private onElementFocusing(event: ElementFocusingEvent) {\r\n        if (event.targetZone === this.contentElement.nativeElement) {\r\n            if (!this.contentAreaHasFocus) {\r\n                event.preventDefaultFocusBehavior();\r\n                event.preventDefaultEvent();\r\n                this.activateRenderedItemByIndex(this.activeRenderedItemIndex, true);\r\n                this.changeDetector.detectChanges();\r\n            }\r\n            this.tryToFocusSelectedRow();\r\n        } else if (event.targetElement && event.targetElement.hasAttribute('data-sme-last-focusable-shadow-element')\r\n            && event.targetElement === this.lastFocusableShadowElement.nativeElement) {\r\n            event.preventDefaultFocusBehavior();\r\n\r\n            if (event.sourceZone === this.contentElement.nativeElement || event.sourceZone === this.headerElement.nativeElement) {\r\n                const nextFocusableElement = Dom.getNextZoneElement(event.targetElement);\r\n                if (!nextFocusableElement) {\r\n                    event.targetElement.focus();\r\n                    this.cancelLastFocusableShadowElementFocusOnce = true;\r\n                } else {\r\n                    event.preventDefaultEvent();\r\n                    const actualTargetZone = Dom.getAncestorZone(nextFocusableElement);\r\n                    CoreEnvironment.accessibilityManager.processElementFocusing(\r\n                        event.nativeEvent,\r\n                        nextFocusableElement,\r\n                        event.targetZone,\r\n                        actualTargetZone);\r\n                }\r\n            } else {\r\n                event.preventDefaultEvent();\r\n                this.activateRenderedItemByIndex(this.activeRenderedItemIndex, false);\r\n                this.changeDetector.detectChanges();\r\n                this.tryToFocusSelectedRow();\r\n            }\r\n        } else {\r\n            this.dataTableAccessibilityManager.verifyDataTableColumnsViolation(event);\r\n        }\r\n    }\r\n\r\n    private processColumns(): void {\r\n        this.processActualColumns();\r\n        this.processColumnsMain();\r\n    }\r\n\r\n    private processColumnsMain() {\r\n        this.hostElement.nativeElement.setAttribute('aria-colcount',\r\n            this.actualColumns.length + (this.selectionMode === DataTableMultipleSelectMode.Multiple ? 1 : 0));\r\n        this.calculateColumnDomWidths();\r\n        this.actualColumnProcessed = true;\r\n    }\r\n\r\n    private processActualColumns() {\r\n        this.actualColumns = [];\r\n        if (this.columns) {\r\n            this.columns.forEach(sourceColumn => {\r\n                if (sourceColumn !== this.groupColumn && !sourceColumn.hidden) {\r\n                    this.actualColumns.push(sourceColumn);\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    public processColumnsByOrder(order: Array<string>): void {\r\n        this.columnsOrder = order;\r\n        this.actualColumns = [];\r\n        if (this.columns) {\r\n            order.forEach(field => {\r\n                const sourceColumn = this.columns.find(column => {\r\n                    return column.field === field;\r\n                });\r\n                if (sourceColumn && sourceColumn !== this.groupColumn && !sourceColumn.hidden) {\r\n                    this.actualColumns.push(sourceColumn);\r\n                }\r\n            });\r\n        }\r\n        if (order && order.length > 0) {\r\n            this.processColumnsMain();\r\n        } else {\r\n            this.processColumns();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Get the number of filtered items (if any) within the dataTable.\r\n     * @returns number of dataTable filtered items, zero if none.\r\n     */\r\n    public getNumberOfFilteredItems(): number {\r\n        return this.filteredItems ? this.filteredItems.length : 0;\r\n    }\r\n\r\n    /**\r\n     * Get the tooltip handler that should be used for data table column.\r\n     * @param column        Column for tooltip handler\r\n     * @param renderedItem  Data item for the row\r\n     * @returns             Tooltip string if exists.\r\n     */\r\n    public getColumnTooltipText(column: DataTableColumnComponent, renderedItem: DataTableRenderedItem): string {\r\n        if (!!column.getTooltipHandler) {\r\n            return column.getTooltipHandler(renderedItem.data, column.field);\r\n        } else {\r\n            return (this.enableDefaultTooltips && !MsftSme.isNullOrUndefined(column.field))\r\n                ? column.getDefaultTooltipHandler(renderedItem.data, column.field) : undefined;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * This function is added from upgrading data table to support editable data table\r\n     * The idea is to use the data table's header width to be applied on the data table body columns.\r\n     * When not showing headers, need to use the header's width to be applied to td as well.\r\n     */\r\n    @Yield()\r\n    private calculateColumnDomWidths(): void {\r\n        const thElements = this.headerElement.nativeElement.querySelectorAll('.sme-table-caption.sme-table-column-header');\r\n        if (thElements && thElements.length > 0) {\r\n            for (let i = 0; i < this.actualColumns.length; i++) {\r\n                this.actualColumns[i].domWidth = thElements[i].offsetWidth;\r\n            }\r\n        }\r\n        this.setIsColumnWidthCalculated(true);\r\n    }\r\n\r\n    /**\r\n     * This function gives one more tick so that the loading wheel can stand one more html rendering life cycle\r\n     * This fixes a bug related to data table on load mis-aligned\r\n     * @param input boolean\r\n     */\r\n    @Debounce()\r\n    private setIsColumnWidthCalculated(input: boolean) {\r\n        this.isColumnWidthCalculated = input;\r\n    }\r\n\r\n    private updateActiveRenderedItemIndexBySelection(): void {\r\n        if (this.selectionMode === DataTableMultipleSelectMode.Multiple) {\r\n            return;\r\n        }\r\n\r\n        for (let i = 0; i < this.renderedItems.length; i++) {\r\n            if (this.showAsTree) {\r\n                if (this.renderedItems[i].node === this.selection) {\r\n                    this.setActiveRenderedItemIndex(i);\r\n                    break;\r\n                }\r\n            } else {\r\n                if (this.editable) {\r\n                    if (this.renderedItems[i].data.content === this.selection) {\r\n                        this.setActiveRenderedItemIndex(i);\r\n                        break;\r\n                    }\r\n                } else {\r\n                    if (this.renderedItems[i].data === this.selection) {\r\n                        this.setActiveRenderedItemIndex(i);\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    private getTreeNodeDataIdentity(node: TreeNodeDataItem): string {\r\n        let currentNode = node;\r\n        let result = '';\r\n\r\n        if (this.getItemIdentityFunction) {\r\n            while (currentNode) {\r\n                result = this.getItemIdentityFunction(currentNode.data) + '\\\\' + result;\r\n                currentNode = currentNode.parent;\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    private selectAll(): void {\r\n        this.selection = this.renderedItems.slice().map(item => item.data);\r\n        this.renderedItems.forEach(item => {\r\n            this.rowSelected.emit({ data: item.data });\r\n        });\r\n    }\r\n\r\n    public applyQueryEditor(validatedQueryEditorList: QueryData): void {\r\n        this.internalQueryEditor = validatedQueryEditorList;\r\n        this.refreshData();\r\n    }\r\n\r\n    private queryEditorFilterMain(validatedQueryEditorList: QueryData, item: DataTableDataItem): boolean {\r\n        let found = true;\r\n        for (let i = 0; i < validatedQueryEditorList.contents.length; i++) {\r\n            const queryEditorItem = validatedQueryEditorList.contents[i];\r\n            if (found && this.actualColumns) {\r\n                const field = queryEditorItem.column.value;\r\n                const column = this.actualColumns.filter((col) => {\r\n                    return col.field === field;\r\n                })[0];\r\n                if (column) {\r\n                    let value = this.resolveObjectPath(item, column.field);\r\n                    if (!MsftSme.isNullOrUndefined(value)) {\r\n                        if (column.filterOverridingFunction) {\r\n                            value = column.filterOverridingFunction(value, item);\r\n                        }\r\n                        if (!this.caseSensitiveFilter) {\r\n                            value = value.toString().toLocaleLowerCase();\r\n                        }\r\n                        const targetFloatVal = parseFloat(queryEditorItem.value.value);\r\n                        const actualFloatVal = parseFloat(value.toString());\r\n                        const targetStringVal = queryEditorItem.value.value.toString().toLocaleLowerCase();\r\n                        const actualStringVal = value.toString().toLocaleLowerCase();\r\n                        if (queryEditorItem &&\r\n                            (queryEditorItem.value.type === QueryDataItemValueType.SingleDropdown\r\n                                || queryEditorItem.value.type === QueryDataItemValueType.TextInput)) {\r\n                            switch (queryEditorItem.operand) {\r\n                                case QueryDataOperand.Eq:\r\n                                    if (column.queryEditorEqualIsContain) {\r\n                                        if (actualStringVal.indexOf(targetStringVal) === -1) {\r\n                                            found = false;\r\n                                        }\r\n                                    } else {\r\n                                        // If filter string is empty then treat as 'EqualIsContain' to refresh data table\r\n                                        if (actualStringVal !== targetStringVal && !MsftSme.isEmpty(targetStringVal)) {\r\n                                            found = false;\r\n                                        }\r\n                                    }\r\n                                    break;\r\n                                case QueryDataOperand.Gt:\r\n                                    if ((targetFloatVal || targetFloatVal === 0) &&\r\n                                        (actualFloatVal || actualFloatVal === 0)) {\r\n                                        if (!(targetFloatVal <= actualFloatVal)) {\r\n                                            found = false;\r\n                                        }\r\n                                    }\r\n                                    break;\r\n                                case QueryDataOperand.Lt:\r\n                                    if ((targetFloatVal || targetFloatVal === 0)\r\n                                        && (actualFloatVal || actualFloatVal === 0)) {\r\n                                        if (!(targetFloatVal >= actualFloatVal)) {\r\n                                            found = false;\r\n                                        }\r\n                                    }\r\n                                    break;\r\n                                case QueryDataOperand.Nq:\r\n                                    if (!(actualStringVal !== targetStringVal)) {\r\n                                        found = false;\r\n                                    }\r\n                                    break;\r\n                                default:\r\n                                    // default eq\r\n                                    if (actualStringVal.indexOf(targetStringVal) === -1) {\r\n                                        found = false;\r\n                                    }\r\n                                    break;\r\n                            }\r\n                        } else if (queryEditorItem.value.type === QueryDataItemValueType.MultiSelectDropdown) {\r\n                            if (found) {\r\n                                found = this.queryEditorFilterByMultipleSelection(\r\n                                    validatedQueryEditorList, queryEditorItem, actualStringVal);\r\n                            }\r\n                        } else if (queryEditorItem.value.type === QueryDataItemValueType.TimespanDropdown) {\r\n                            if (found) {\r\n                                found = this.queryEditorFilterByTimespanDropdown(\r\n                                    validatedQueryEditorList, queryEditorItem, actualStringVal);\r\n                            }\r\n                        }\r\n                    } else {\r\n                        found = false;\r\n                    }\r\n                } else {\r\n                    found = false;\r\n                }\r\n            }\r\n        }\r\n        return found;\r\n    }\r\n\r\n    private queryEditorFilterByTimespanDropdown(\r\n        validatedQueryEditorList: QueryData, queryEditorItem: QueryDataItem, actualStringVal: string): boolean {\r\n        const field = queryEditorItem.column.value;\r\n        let res = false;\r\n        loop1:\r\n        for (let i = 0; i < validatedQueryEditorList.contents.length; i++) {\r\n            const item = validatedQueryEditorList.contents[i];\r\n            if (item && item.value.type === QueryDataItemValueType.TimespanDropdown && item.column && item.column.value === field) {\r\n                if (item.value.value && item.value.value.start && item.value.value.end) {\r\n                    const start = item.value.value.start.getTime();\r\n                    const end = item.value.value.end.getTime();\r\n                    const actual = new Date(actualStringVal).getTime();\r\n                    if (start <= actual && actual <= end) {\r\n                        res = true;\r\n                        break loop1;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return res;\r\n    }\r\n\r\n    private queryEditorFilterByMultipleSelection(\r\n        validatedQueryEditorList: QueryData, queryEditorItem: QueryDataItem, actualStringVal: string): boolean {\r\n\r\n        const field = queryEditorItem.column.value;\r\n        let res = false;\r\n        loop1:\r\n        for (let i = 0; i < validatedQueryEditorList.contents.length; i++) {\r\n            const item = validatedQueryEditorList.contents[i];\r\n            if (item && item.value.type === QueryDataItemValueType.MultiSelectDropdown && item.column && item.column.value === field) {\r\n                for (let j = 0; j < item.value.value.length; j++) {\r\n                    const targetStringVal = item.value.value[j].toString().toLocaleLowerCase();\r\n                    if (actualStringVal === targetStringVal) {\r\n                        res = true;\r\n                        break loop1;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return res;\r\n    }\r\n\r\n    /**\r\n     * The handler for collapsing, checking if node1 contains node2.\r\n     * @param node1 the node as root to check if it contains node2.\r\n     * @param node2 the node to be checked if children of node1.\r\n     * @returns true if node1 contains node2.\r\n     */\r\n    private treeTableCollapseHandler(node1: any, node2: any): boolean {\r\n        if (!node1 || !node2) {\r\n            return false;\r\n        }\r\n\r\n        // If it is a parent node, it can be without id.\r\n        if (node1.data?.id === node2.data?.id) {\r\n            return true;\r\n        }\r\n\r\n        if (node1?.children && node1.children.length) {\r\n            for (const child of node1.children) {\r\n                if (this.treeTableCollapseHandler(child, node2)) {\r\n                    return true;\r\n                }\r\n            }\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            firstDataColumn: ''\r\n        };\r\n    }\r\n}\r\n\r\n/**\r\n * the tree grid accessibility documentations: https://wiki.mozilla.org/Accessibility/TreeGrid\r\n */\r\n\r\n@Component({\r\n    selector: 'sme-tree-table',\r\n    templateUrl: './data-table.component.html'\r\n})\r\nexport class TreeTableComponent extends DataTableComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'TreeTableComponent';\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n\r\n        this.showAsTree = true;\r\n    }\r\n\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-tree-table'\r\n        ]);\r\n    }\r\n}\r\n","<ng-template #deleteTemplate let-renderedItem=\"renderedItem\">\r\n    <button *ngIf=\"showDeleteButton(renderedItem)\" role=\"button\" tabindex=\"0\"\r\n        class=\"sme-button-trigger sme-button-auto-width sme-icon sme-icon-cancel sme-layout-block\" (click)=\"delete(renderedItem.data.content)\"\r\n        [title]=\"strings.MsftSmeShell.Angular.DataTable.removeThisRow\"></button>\r\n</ng-template>","import { Component, forwardRef, Input, ViewChild } from '@angular/core';\r\nimport { DataTableRenderedItem } from '..';\r\nimport { Strings } from '../../../generated/strings';\r\nimport { DataTableColumnComponent } from '../data-table-column.component';\r\nimport { DataTableComponent } from '../data-table.component';\r\n\r\n@Component({\r\n    selector: 'sme-data-table-column[type=\"delete\"], sme-tree-table-column[type=\"delete\"]',\r\n    templateUrl: './delete-column.component.html',\r\n    providers: [{ provide: DataTableColumnComponent, useExisting: forwardRef(() => DeleteColumnComponent) }]\r\n})\r\nexport class DeleteColumnComponent extends DataTableColumnComponent {\r\n    public strings = MsftSme.getStrings<Strings>();\r\n\r\n    @Input()\r\n    public path: string;\r\n\r\n    @ViewChild('deleteTemplate')\r\n    declare public bodyTemplate;\r\n\r\n    @ViewChild('deleteTemplate')\r\n    declare public bodyReadTemplate;\r\n\r\n    constructor(private dataTable: DataTableComponent) {\r\n        super();\r\n\r\n        this.width = '50px';\r\n    }\r\n\r\n    public delete(data: any) {\r\n        this.dataTable.deleteEditableDataRow(data);\r\n    }\r\n\r\n    public showDeleteButton(renderedItem: DataTableRenderedItem): boolean {\r\n        return renderedItem && (!renderedItem.data.isNewRow || renderedItem.validationResult.length > 0);\r\n    }\r\n}\r\n","\r\n    <ng-template #tagsTemplate let-data>\r\n        <div class=\"sme-arrange-ellipsis\" *ngIf=\"resolveObjectPath(data, path); let tags\">\r\n            <span class=\"sme-tag\" [title]=\"tags?.join(', ')\" *ngFor=\"let tag of tags\">\r\n                <span class=\"sme-tag-content\">{{tag}}</span>\r\n            </span>\r\n        </div>\r\n    </ng-template>\r\n\r\n\r\n","import { Component, forwardRef, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { Strings } from '../../../generated/strings';\r\nimport { DataTableColumnComponent } from '../data-table-column.component';\r\n\r\n@Component({\r\n    selector: 'sme-data-table-column[type=\"tags\"], sme-tree-table-column[type=\"tags\"]',\r\n    templateUrl: './tags-column.component.html',\r\n    providers: [{ provide: DataTableColumnComponent, useExisting: forwardRef(() => TagsColumnComponent) }]\r\n})\r\nexport class TagsColumnComponent extends DataTableColumnComponent implements OnInit {\r\n    public strings = MsftSme.getStrings<Strings>();\r\n\r\n    /**\r\n     * The path from the data table element to the tags list\r\n     */\r\n    @Input()\r\n    public path: string;\r\n\r\n    @ViewChild('tagsTemplate')\r\n    declare public bodyTemplate;\r\n\r\n    public ngOnInit(): void {\r\n        this.header = this.strings.MsftSmeShell.Angular.DataTable.Templates.Tags.Header;\r\n    }\r\n\r\n    /**\r\n   * It resolves the object properties based on the given path with multiple levels of properties.\r\n   * An example of path is \"location.zipCode\".\r\n   */\r\n    public resolveObjectPath(obj: any, path: string): any {\r\n        return MsftSme.getValue(obj, path);\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { SmeFormsModule } from '../form/forms.module';\r\nimport { LoadingWheelModule } from '../loading-wheel/loading-wheel.module';\r\nimport { ResizerModule } from '../resizer/resizer.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { DeleteColumnComponent } from './data-table-column-template/delete-column.component';\r\nimport { TagsColumnComponent } from './data-table-column-template/tags-column.component';\r\nimport { DataTableColumnComponent } from './data-table-column.component';\r\nimport { DataTableTemplateLoaderComponent } from './data-table-template-loader.component';\r\nimport { DataTableComponent, TreeTableComponent } from './data-table.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        DataTableComponent,\r\n        DataTableColumnComponent,\r\n        DataTableTemplateLoaderComponent,\r\n        TreeTableComponent,\r\n        DeleteColumnComponent,\r\n        TagsColumnComponent\r\n    ],\r\n    exports: [\r\n        DataTableComponent,\r\n        DataTableColumnComponent,\r\n        TreeTableComponent,\r\n        DeleteColumnComponent,\r\n        TagsColumnComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        ResizerModule,\r\n        LoadingWheelModule,\r\n        TooltipModule,\r\n        SmeFormsModule\r\n    ]\r\n})\r\nexport class DataTableModule { }\r\n","import { EventEmitter, Injectable, OnDestroy } from '@angular/core';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { ClientNotificationInstance } from '@microsoft/windows-admin-center-sdk/core/index';\r\nimport { interval, Observable, throwError, timer } from 'rxjs';\r\nimport { delay, filter, take, takeUntil, takeWhile } from 'rxjs/operators';\r\nimport { AppContextService } from '../../service/app-context.service';\r\nimport { DataTableComponent } from './data-table.component';\r\n\r\nexport enum DataTableDownloadDataType {\r\n    CSV = 'text/csv',\r\n    JSON = 'application/json'\r\n}\r\n\r\n@Injectable()\r\nexport class DataTableDownloadService implements OnDestroy {\r\n    /**\r\n     * The localization strings object for master view.\r\n     */\r\n    public resourceStrings = MsftSme.self().Resources.strings.MsftSmeShell.Angular.DataTable.DownloadService;\r\n\r\n    /**\r\n     * The download finished event emitter.\r\n     */\r\n    public downloadDataFinished: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * The notification instance.\r\n     */\r\n    private notificationInstance: ClientNotificationInstance;\r\n\r\n    /**\r\n     * The download worker.\r\n     */\r\n    private worker: Worker;\r\n\r\n    /**\r\n     * The current extension/module fileName.\r\n     */\r\n    private moduleName: string;\r\n\r\n    /**\r\n     * Determines if one download service is ongoing.\r\n     */\r\n    private isBusy = false;\r\n\r\n    /**\r\n     * Adding a force delay time can help with general performance of the downloading function when dataset grows big.\r\n     * It can also help with improve granularity for notification state changes.\r\n     */\r\n    private readonly minDownloadDelayTime = 1000;\r\n\r\n    /**\r\n     * Force timeout 2mins.\r\n     */\r\n    private readonly maxDownloadTimeAllowed = 120000;\r\n\r\n    constructor(private appContextService: AppContextService) {\r\n        this.moduleName = MsftSme.self().Init.moduleName;\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.worker?.terminate();\r\n    }\r\n\r\n    /*\r\n     * The download data from data table component function.\r\n     * @param dataTable The data table component to download data from.\r\n     * @param downloadType The type of data to be downloaded.\r\n     * @param contextParameters The context parameters from outside of the data table component from the extension.\r\n     */\r\n    public downloadData(dataTable: DataTableComponent, downloadType: DataTableDownloadDataType, contextParameters?: any): void {\r\n        this.notificationInstance = this.appContextService.notification.create(this.appContextService.gateway.gatewayName);\r\n        const inProgressTitle = this.resourceStrings.inProgressTitle;\r\n        const inProgressContent = this.resourceStrings.inProgressContent.format(this.moduleName);\r\n        const successTitle = this.resourceStrings.successTitle;\r\n        const successContent = this.resourceStrings.successContent.format(this.moduleName);\r\n        const failedTitle = this.resourceStrings.failedTitle;\r\n\r\n        this.notificationInstance.showInProgress(\r\n            inProgressTitle,\r\n            inProgressContent\r\n        );\r\n\r\n        this.isBusy = true;\r\n\r\n        this.downloadDataCore(dataTable, downloadType, contextParameters).pipe(take(1)).subscribe({\r\n            error: error => {\r\n                Logging.log({\r\n                    level: LogLevel.Warning,\r\n                    message: `Download failed: ${error}`,\r\n                    source: 'MasterViewComponent.onDownloadButtonClicked()'\r\n                });\r\n\r\n                const failedContent = this.resourceStrings.failedContent.format(this.moduleName, error);\r\n\r\n                this.notificationInstance.showError(\r\n                    failedTitle,\r\n                    failedContent\r\n                );\r\n\r\n                this.worker.terminate();\r\n\r\n                this.downloadDataFinished.emit();\r\n            },\r\n            complete: () => {\r\n                this.notificationInstance.showSuccess(\r\n                    successTitle,\r\n                    successContent\r\n                );\r\n\r\n                this.downloadDataFinished.emit();\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * It guarantees the valid DataTableDownloadDataType is passed in to the worker.\r\n     * @param downloadType the downloadType passed in from client side that needs validation.\r\n     * @returns a valid downloadType that comes from DataTableDownloadDataType\r\n     */\r\n    private validateMimeType(downloadType: DataTableDownloadDataType): DataTableDownloadDataType {\r\n        return Object.values(DataTableDownloadDataType).includes(downloadType) ? downloadType : DataTableDownloadDataType.CSV;\r\n    }\r\n\r\n    /**\r\n     * The actual implementation core function for download data.\r\n     * @param dataTable the data table component reference.\r\n     * @param downloadType the downloadType passed in from client.\r\n     * @returns parsed error in string.\r\n     */\r\n    private downloadDataCore(\r\n        dataTable: DataTableComponent,\r\n        downloadType: DataTableDownloadDataType,\r\n        contextParameters?: any\r\n    ): Observable<any> {\r\n        const data = JSON.parse(JSON.stringify(dataTable.items));\r\n        const type = this.validateMimeType(downloadType);\r\n        const fileName = this.moduleName ? `${this.moduleName}-${new Date().getTime().toString()}.csv` : new Date().getTime().toString();\r\n\r\n        this.initWorker(type);\r\n\r\n        this.worker.postMessage({ data, type });\r\n\r\n        this.worker.onmessage = (event) => {\r\n            let processedData = '';\r\n            try {\r\n                if (downloadType === DataTableDownloadDataType.CSV) {\r\n                    // Download rendered content from the table in CSV.\r\n                    processedData = this.convertToCsv(event.data.processedData, dataTable, contextParameters);\r\n                } else {\r\n                    // Download RAW JSON.\r\n                    processedData = JSON.stringify(event.data.processedData);\r\n                }\r\n\r\n                this.downloadAction(processedData, type, fileName);\r\n                this.isBusy = false;\r\n            } catch (e) {\r\n                this.isBusy = false;\r\n                return throwError(() => e.toString()).pipe(delay(this.minDownloadDelayTime));\r\n            }\r\n        };\r\n\r\n        return interval(this.minDownloadDelayTime).pipe(\r\n            takeUntil(timer(this.maxDownloadTimeAllowed)),\r\n            takeWhile(() => this.isBusy, true),\r\n            filter(() => !this.isBusy)\r\n          );\r\n    }\r\n\r\n    private downloadAction(data: string, mimeType: string, fileName: string) {\r\n        const blob = new Blob([data], { type: mimeType });\r\n        const url = URL.createObjectURL(blob);\r\n        const link = document.createElement('a');\r\n\r\n        link.href = url;\r\n        link.download = fileName;\r\n        link.click();\r\n\r\n        URL.revokeObjectURL(url);\r\n    }\r\n\r\n    private convertToCsv(dataList: any[], dataTable: DataTableComponent, contextParameters?: any): string {\r\n        const columns = dataTable.actualColumns.map(column => {\r\n            return {\r\n                field: column.field,\r\n                header: column.header,\r\n                hasTemplate: !!column.bodyTemplate,\r\n                downloadContentProcessor: column.downloadContentProcessor ?? undefined\r\n            };\r\n        });\r\n        const rows = [columns.map((column) => column.header).join(',')];\r\n        const errors = [];\r\n\r\n        dataList.forEach((dataItem, rowIndex) => {\r\n            const values = columns.map((column, columnIndex) => {\r\n                // Resolve nested object and get value.\r\n                let value = dataTable.resolveObjectPath(dataItem, column.field);\r\n\r\n                if (column.hasTemplate) {\r\n                    if (column.downloadContentProcessor) {\r\n                        // Process the data by passed in function.\r\n                        value = column.downloadContentProcessor(value, dataItem, contextParameters);\r\n                        // Wrap the string with double quote and still maintain valid string to prevent\r\n                        // being recognized as separate columns from csv file.\r\n                        if (typeof value !== 'string') {\r\n                            try {\r\n                                value = this.castToString(value);\r\n                            } catch (e) {\r\n                                throw new Error(`Failed to cast ${value} to string ${e}`);\r\n                            }\r\n                        }\r\n\r\n                        value = this.preventTextContentAsSeparatedColumns(value);\r\n                    } else {\r\n                        if (!errors.includes(column['header'])) {\r\n                            errors.push(column['header']);\r\n                        }\r\n                        value = this.getTableCellRenderedString(rowIndex, columnIndex, dataTable);\r\n                    }\r\n                }\r\n\r\n                return value;\r\n            });\r\n            rows.push(values.join(','));\r\n        });\r\n\r\n        // Error handling.\r\n        if (errors && errors.length) {\r\n            throw new Error('Please add \\'downloadContentProcessor\\' function to listed field(s): ' + errors.join(','));\r\n        }\r\n\r\n        return rows.join('\\r\\n');\r\n    }\r\n\r\n    /**\r\n     * It converts any type to string.\r\n     * @param input any type of input.\r\n     * @returns the string representation for input.\r\n     */\r\n    private castToString(input: any): string {\r\n        if (input === null || typeof input === 'undefined') {\r\n            return '';\r\n        }\r\n\r\n        if (typeof input === 'object' || typeof input === 'function') {\r\n            return JSON.stringify(input);\r\n        }\r\n\r\n        return String(input);\r\n    }\r\n\r\n    /**\r\n     * Prevents space to be recognized as different columns.\r\n     * The solution is to wrap the string with double quote and still forms a valid string.\r\n     * @param value The input string that needs to wrap with double quote.\r\n     * @returns the string wrapped with double quotes and is still a valid string.\r\n     */\r\n    private preventTextContentAsSeparatedColumns(value: string): string {\r\n        if (value === undefined || value === null) {\r\n            return '\"\"'; // Return empty double quotes for undefined or null values\r\n        }\r\n        return '\"' + value.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"') + '\"';\r\n    }\r\n\r\n    /**\r\n     * It gets the rendered string from the rendered table row and cell.\r\n     * @param rowIndex the row index from the data table.\r\n     * @param columnIndex the column index from the data table.\r\n     * @param dataTable the data table component reference.\r\n     * @returns the string representing the rendered data from DOM.\r\n     */\r\n    private getTableCellRenderedString(rowIndex: number, columnIndex: number, dataTable: DataTableComponent): string {\r\n        if (!dataTable) {\r\n            return;\r\n        }\r\n\r\n        const cells = dataTable.getTableCells(rowIndex);\r\n        const cell = cells[columnIndex];\r\n        return cell?.textContent.trim() ?? '';\r\n    }\r\n\r\n    /**\r\n     * The initialization for the worker to be used for downloading data table text content.\r\n     */\r\n    private initWorker(type: string): void {\r\n        const downloadWorkerFunction = `\r\n            self.onmessage = function(event) {\r\n                const { data, type } = event.data;\r\n                const processedData = data;\r\n                self.postMessage({ processedData });\r\n            };\r\n        `;\r\n\r\n        const workerBlob = new Blob([downloadWorkerFunction], { type });\r\n        const workerUrl = URL.createObjectURL(workerBlob);\r\n        this.worker = new Worker(workerUrl);\r\n    }\r\n}\r\n","/**\r\n * Enum defining types of @see PivotTabComponent\r\n */\r\nexport enum PivotTabType {\r\n    Routed,\r\n    Static\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { PivotComponent } from './pivot.component';\r\n\r\nexport interface PivotTabContainer {\r\n    // call when tab needs to re-render\r\n    renderTab: (tab: PivotComponent) => void;\r\n    // call to apply tabStyles\r\n    applyTabStyle: (element: HTMLElement) => void;\r\n}\r\n\r\n/**\r\n * Injection token used to provide a {@link PivotTabContainer } reference\r\n */\r\nexport const SME_PIVOT_TAB_CONTAINER_PROVIDER = new InjectionToken<PivotTabContainer>('sme.pivotTabContainer');\r\n","import { Component, ContentChild, Inject, Input, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { PivotTabType } from './pivot-tab-type';\r\nimport { SME_PIVOT_TAB_CONTAINER_PROVIDER } from './pivot-tab.container';\r\n\r\n/**\r\n * Defines a tab for @see PivotComponent\r\n */\r\n\r\n@Component({\r\n    selector: 'sme-pivot-tab',\r\n    template: ''\r\n})\r\n\r\nexport class PivotTabComponent implements OnChanges {\r\n\r\n    constructor(@Inject(SME_PIVOT_TAB_CONTAINER_PROVIDER) private pivotContainer) { }\r\n\r\n    /**\r\n     * Indicates the type of this tab\r\n     */\r\n    public get type(): PivotTabType {\r\n        return this.contentTemplate ? PivotTabType.Static : PivotTabType.Routed;\r\n    }\r\n\r\n    /**\r\n     * The route of this tab\r\n     */\r\n    @Input()\r\n    public route: string;\r\n\r\n    /**\r\n     * Use the same input options as angular @see RouterLinkActive Directive\r\n     */\r\n    @Input()\r\n    public routerLinkActiveOptions: { exact: boolean } = { exact: false };\r\n\r\n    /**\r\n     * The label of this tab.\r\n     */\r\n    @Input()\r\n    public label: string;\r\n\r\n    /**\r\n     * The class for the icon to show for this tab\r\n     */\r\n    @Input()\r\n    public iconClass: string;\r\n\r\n    /**\r\n     * Indicates if this tab is disabled\r\n     */\r\n    @Input()\r\n    public disabled: boolean;\r\n\r\n    /**\r\n     * Indicates if we should show the error status icon\r\n     */\r\n    @Input()\r\n    public showErrorStatusIcon = false;\r\n\r\n    /**\r\n     * The content template ref of the tab.\r\n     */\r\n    @ContentChild(TemplateRef)\r\n    public contentTemplate: TemplateRef<any>;\r\n\r\n    /**\r\n     *  This is a property that stores the measured width of a pivot tab.\r\n     */\r\n    public width: number;\r\n\r\n    /**\r\n     * Indicates whether a tab is visible or in the tab tray.\r\n     */\r\n    public isVisible = true;\r\n\r\n    public ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.label) {\r\n            this.yieldMeasureTab();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Measures the length of the pivot tab and assigns this value to the width attribute\r\n     */\r\n    @Yield()\r\n    private yieldMeasureTab() {\r\n        const host = <HTMLElement>this.pivotContainer.hostElement.nativeElement;\r\n        const measureElement = document.createElement('button');\r\n        // position element off screen\r\n        measureElement.style.display = 'inline';\r\n        // measureElement.style.width = 'auto';\r\n        measureElement.style.visibility = 'hidden';\r\n        measureElement.style.position = 'absolute';\r\n        measureElement.style.right = '-10000px';\r\n        measureElement.style.bottom = '-10000px';\r\n        measureElement.innerHTML = this.label;\r\n        const hostStyle = getComputedStyle(host);\r\n\r\n        measureElement.style.fontFamily = hostStyle.fontFamily;\r\n        measureElement.style.fontVariant = hostStyle.fontVariant;\r\n        measureElement.style.fontSize = hostStyle.fontSize;\r\n        measureElement.style.fontStyle = hostStyle.fontStyle;\r\n        measureElement.style.fontWeight = hostStyle.fontWeight;\r\n        measureElement.style.lineHeight = hostStyle.lineHeight;\r\n        measureElement.style.letterSpacing = hostStyle.letterSpacing;\r\n        measureElement.style.padding = hostStyle.padding;\r\n\r\n        // append the measureElement to the dom\r\n        document.body.append(measureElement);\r\n        const measureWidth = measureElement.getBoundingClientRect().width;\r\n        this.width = measureWidth;\r\n\r\n        // Remember to remove element from the DOM\r\n        document.body.removeChild(measureElement);\r\n    }\r\n\r\n}\r\n","import { ElementRef, QueryList } from '@angular/core';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { SmeResponsiveWindowManagerComponent } from '../common/sme-responsive-window-manager.component';\r\n\r\nexport class PivotResponsiveWindowManager extends SmeResponsiveWindowManagerComponent {\r\n    public readonly name = 'sme-pivot';\r\n    private pivotSectionContentClassList = {\r\n        phoneUp: ['sme-arrange-overflow-auto-y'],\r\n        phoneDown: ['sme-arrange-overflow-hide-y'],\r\n        reflow: ['sme-arrange-overflow-hide-y']\r\n    };\r\n\r\n    private pivotComponentClassList = {\r\n        phoneUp: [],\r\n        phoneDown: ['sme-layout-relative'],\r\n        reflow: ['sme-layout-relative']\r\n    };\r\n\r\n    @Yield()\r\n    public onWindowSizeChanged(pivotContents: QueryList<ElementRef>, id: string): void {\r\n        if (!this.cssV2) {\r\n            return;\r\n        }\r\n\r\n        const pivotSectionContent = this.getPivotSectionContent(pivotContents, id);\r\n\r\n        const pivotComponent = this.getParentElementByTag(pivotSectionContent, ['sme-pivot']);\r\n\r\n        if (!pivotSectionContent || !pivotComponent) {\r\n            return;\r\n        }\r\n\r\n        const size = this.prevSize;\r\n\r\n        if (size.phoneDown) {\r\n            if (pivotComponent) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.pivotComponentClassList, 'phoneDown', pivotComponent);\r\n            }\r\n            if (pivotSectionContent) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.pivotSectionContentClassList, 'phoneDown', pivotSectionContent);\r\n            }\r\n        } else if (size.phoneUp) {\r\n            if (pivotComponent) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.pivotComponentClassList, 'phoneUp', pivotComponent);\r\n            }\r\n            if (pivotSectionContent) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.pivotSectionContentClassList, 'phoneUp', pivotSectionContent);\r\n            }\r\n        } else if (size.reflowMode) {\r\n            if (pivotComponent) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.pivotComponentClassList, 'reflow', pivotComponent);\r\n            }\r\n            if (pivotSectionContent) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.pivotSectionContentClassList, 'reflow', pivotSectionContent);\r\n            }\r\n        }\r\n    }\r\n\r\n    private getPivotSectionContent(pivotContents: QueryList<ElementRef>, id: string): HTMLElement {\r\n        if (!pivotContents || !id) {\r\n            return undefined;\r\n        }\r\n\r\n        const pivots = pivotContents.toArray();\r\n\r\n        let pivotContent: ElementRef;\r\n\r\n        for (let i = 0; i < pivots.length; i++) {\r\n            if (pivots[i]?.nativeElement?.id === id) {\r\n                pivotContent = pivots[i];\r\n                break;\r\n            } else if (i === pivots.length - 1) {\r\n                pivotContent = pivots[i];\r\n            }\r\n        }\r\n\r\n        // The first children of the pivotContent is always the section from design.\r\n        const pivotSectionContent = pivotContent?.nativeElement;\r\n\r\n        if (!pivotSectionContent || !pivotSectionContent.tagName || pivotSectionContent.tagName !== 'SECTION') {\r\n            return undefined;\r\n        }\r\n\r\n        return pivotSectionContent;\r\n    }\r\n}\r\n","<div class=\"sme-arrange-stack-h\">\r\n  <h4 *ngIf=\"headerText\" class=\"sme-position-flex-auto\">{{headerText}}</h4>\r\n\r\n  <header [class.sme-pivot-reverse-header]=\"alignTabs === 'right'\" [class.sme-position-stretch-h]=\"!headerText\" [style.paddingLeft]=\"noLeftPadding ? 0 : null\">\r\n    <!-- Cannot use \"sme-padding-left-none\" CSS class in <header> above since sme-padding-left-none doesn't have enough selector weight to override sme-pivot>[role=\"tablist\"] selector -->\r\n    <div role=\"tablist\">\r\n      <ng-container *ngFor=\"let tab of visibleTabs; let i = index\">\r\n        <!-- Routed Tab item -->\r\n        <button *ngIf=\"tab.type === pivotTabType.Routed\" role=\"tab\" [routerLink]=\"tab.route\" class=\"sme-layout-relative\"\r\n          [attr.aria-controls]=\"idBag.tabPanel\" [attr.aria-disabled]=\"disabled || tab.disabled\"\r\n          [disabled]=\"disabled || tab.disabled\" [class.sme-disabled]=\"disabled || tab.disabled\"\r\n          [attr.aria-selected]=\"isSelected(tab)\" [routerLinkActiveOptions]=\"tab.routerLinkActiveOptions\"\r\n          [class.sme-active]=\"isSelected(tab)\" (smeRouterLinkActivated)=\"select(tab)\">\r\n          <span *ngIf=\"tab.iconClass\" [class]=\"tab.iconClass\"></span>\r\n          <span>{{tab.label}}</span>\r\n          <span *ngIf=\"tab.showErrorStatusIcon\"\r\n            class=\"sme-icon sme-icon-size-xxxs sme-icon-statusCircleInner sme-color-error sme-layout-absolute sme-padding-inset-none\"></span>\r\n        </button>\r\n\r\n        <!-- Static Tab Item -->\r\n        <button *ngIf=\"tab.type === pivotTabType.Static\" tabindex=\"0\" role=\"tab\" class=\"sme-layout-relative\"\r\n          [attr.aria-controls]=\"idBag.tabPanel + i\" [attr.aria-disabled]=\"disabled || tab.disabled\"\r\n          [attr.aria-description]=\"tab.showErrorStatusIcon ? strings.MsftSmeShell.Angular.PivotTab.HasError : null\"\r\n          [disabled]=\"disabled || tab.disabled\" [class.sme-disabled]=\"disabled || tab.disabled\"\r\n          [attr.aria-selected]=\"isSelected(tab)\" [class.sme-active]=\"isSelected(tab)\"\r\n          (click)=\"select(tab)\">\r\n          <span *ngIf=\"tab.iconClass\" [class]=\"tab.iconClass\"></span>\r\n          <span>{{tab.label}}</span>\r\n          <span *ngIf=\"tab.showErrorStatusIcon\"\r\n            class=\"sme-icon sme-icon-size-xxxs sme-icon-statusCircleInner sme-color-error sme-layout-absolute sme-padding-inset-none\"></span>\r\n        </button>\r\n      </ng-container>\r\n      <div role=\"menu\">\r\n        <sme-dropdown #dropDown role=\"presentation\" class=\"sme-position-flex-none\"\r\n          [class.sme-layout-hidden]=\"trayTabs.length === 0\" [class.sme-layout-none]=\"trayTabs.length === 0\">\r\n          <button #dropDownButton type=\"button\" [attr.aria-label]=\"moreTabsDisplay\" role=\"menuitem\"\r\n            class=\"sme-layout-relative\"\r\n            class=\"sme-button-trigger sme-layout-action-bar-item-height sme-button-auto-width sme-dropdown-toggle\"\r\n            [class.sme-toggled]=\"dropDown.isOpen\" [attr.aria-expanded]=\"dropDown.isOpen\" aria-haspopup=\"true\">\r\n            <span>{{ moreTabsDisplay }}</span>\r\n            <span class=\"sme-icon sme-icon-size-xxs sme-icon-chevronDown sme-margin-left-xs\"></span>\r\n          </button>\r\n          <div role=\"menu\" class=\"sme-dropdown-content sme-arrange-stack-v sme-position-stretch-h\">\r\n            <div class=\"sme-arrange-stack-h\" *ngFor=\"let tab of trayTabs; let i = index\">\r\n              <button *ngIf=\"tab.type === pivotTabType.Routed\" role=\"menuitem\" [routerLink]=\"tab.route\"\r\n                class=\"sme-layout-relative\" class=\"sme-position-stretch-h\"\r\n                [class.sme-disabled]=\"disabled || tab.disabled\" (smeRouterLinkActivated)=\"select(tab)\"\r\n                [routerLinkActiveOptions]=\"tab.routerLinkActiveOptions\">\r\n                <span *ngIf=\"tab.iconClass\" [class]=\"tab.iconClass\"></span>\r\n                <span>{{tab.label}}</span>\r\n              </button>\r\n              <button *ngIf=\"tab.type === pivotTabType.Static\" role=\"menuitem\"\r\n                [attr.aria-description]=\"tab.showErrorStatusIcon ? strings.MsftSmeShell.Angular.PivotTab.HasError : null\" class=\"sme-position-stretch-h\"\r\n                [class.sme-disabled]=\"disabled || tab.disabled\" (click)=\"select(tab)\">\r\n                <span *ngIf=\"tab.iconClass\" [class]=\"tab.iconClass\"></span>\r\n                <span>{{tab.label}}</span>\r\n                <span *ngIf=\"tab.showErrorStatusIcon\"\r\n                  class=\"sme-icon sme-icon-size-xxxs sme-icon-statusCircleInner sme-color-error sme-layout-absolute sme-padding-inset-none\"></span>\r\n              </button>\r\n            </div>\r\n          </div>\r\n        </sme-dropdown>\r\n      </div>\r\n    </div>\r\n  </header>\r\n</div>\r\n\r\n<!-- Routed Tab Content -->\r\n<section #pivotContents *ngIf=\"hasRoutedTabs\" role=\"tabpanel\" [id]=\"idBag.tabPanel\" [class.sme-layout-none]=\"!selectionIsRouted\"\r\n  [attr.aria-hidden]=\"!selectionIsRouted\">\r\n  <router-outlet></router-outlet>\r\n</section>\r\n\r\n<!-- Static Tab Content -->\r\n<ng-container *ngIf=\"hasStaticTabs\">\r\n  <ng-container *ngFor=\"let tab of visibleTabs; let i = index\">\r\n    <ng-container *ngIf=\"tab.type === pivotTabType.Static\">\r\n      <section #pivotContents role=\"tabpanel\" [id]=\"idBag.tabPanel + i\" [class.sme-layout-none]=\"!isSelected(tab)\"\r\n        [attr.aria-hidden]=\"!isSelected(tab)\" class=\"sme-focus-zone\">\r\n        <ng-container *ngTemplateOutlet=\"(switchTabByShowHide || isSelected(tab)) ? tab.contentTemplate : null\">\r\n        </ng-container>\r\n      </section>\r\n    </ng-container>\r\n  </ng-container>\r\n</ng-container>\r\n","import {\r\n    AfterContentChecked,\r\n    AfterContentInit,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ContentChildren,\r\n    ElementRef,\r\n    EventEmitter,\r\n    forwardRef,\r\n    HostBinding,\r\n    Inject,\r\n    Injector,\r\n    Input,\r\n    Optional,\r\n    Output,\r\n    QueryList,\r\n    SkipSelf,\r\n    ViewChild,\r\n    ViewChildren\r\n} from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { Strings } from '../../generated/strings';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../common/layout';\r\nimport { SpacerBaseDirective } from '../common/spacer-base.component';\r\nimport { PivotResponsiveWindowManager } from './pivot-responsive-window-manager';\r\nimport { PivotTabType } from './pivot-tab-type';\r\nimport { PivotTabComponent } from './pivot-tab.component';\r\nimport { SME_PIVOT_TAB_CONTAINER_PROVIDER } from './pivot-tab.container';\r\n/**\r\n * @smeDoc {@label Pivot @id sme-pivot-component}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/overview.md}\r\n *\r\n * @example {@label Static Tab @id static-tab}\r\n * @file {@filename component.html @filepath ./examples/static-tab.component.html}\r\n *\r\n * @example {@label Routed Tab @id routed-tab}\r\n * @file {@filename component.html @filepath ./examples/routed-tab.component.html}\r\n */\r\n@Component({\r\n    selector: 'sme-pivot',\r\n    templateUrl: './pivot.component.html',\r\n    providers: [\r\n        { provide: SME_LAYOUT_PROVIDER, useExisting: forwardRef(() => PivotComponent) },\r\n        { provide: SME_PIVOT_TAB_CONTAINER_PROVIDER, useExisting: forwardRef(() => PivotComponent) }\r\n    ]\r\n})\r\nexport class PivotComponent extends SpacerBaseDirective implements AfterContentChecked, AfterContentInit, Layout {\r\n    public visibleTabs: PivotTabComponent[]; // Regulates the tabs that get displayed.\r\n    public trayTabs = []; // Regulates the tabs that are added to the dropdown if necessary.\r\n    public moreTabsDisplay = 'More'; // Label for the dropdown menu tabs\r\n\r\n    /**\r\n     * Localized set of strings.\r\n     */\r\n    public strings = MsftSme.getStrings<Strings>();\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'PivotComponent';\r\n    }\r\n\r\n    /**\r\n     * The selected tab\r\n     */\r\n    @Input()\r\n    public selection: PivotTabComponent;\r\n\r\n    /**\r\n     * It indicates whether to show/hide or load/unload the tabs to do tab switching\r\n     */\r\n    @Input()\r\n    public switchTabByShowHide: boolean;\r\n\r\n    /**\r\n     * Text for a header to show with the pivot tabs. Displayed as h4 with tabs on the right.\r\n     */\r\n    @Input()\r\n    public headerText: string;\r\n\r\n    /**\r\n     * @deprecated since 08/30/19. Please use alignTabs instead\r\n     */\r\n    @Input()\r\n    public set alignHeader(value: 'right' | 'left') {\r\n        this.alignTabs = value;\r\n    }\r\n\r\n    /**\r\n     * Where to align tabs, left or right\r\n     */\r\n    @Input()\r\n    public alignTabs: 'right' | 'left';\r\n\r\n    /**\r\n     * The selected tab changed event\r\n     */\r\n    @Output()\r\n    public selectionChange = new EventEmitter<PivotTabComponent>();\r\n\r\n    /**\r\n     * The selected tab changed event triggered by click or keyboard navigation.\r\n     */\r\n    @Output()\r\n    public selectionChangeByClick: EventEmitter<PivotTabComponent> = new EventEmitter<PivotTabComponent>();\r\n\r\n    /**\r\n     * Implementation of the Layout interface\r\n     */\r\n    @Output()\r\n    public layoutChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * Implementation of the Layout interface\r\n     */\r\n    @Output()\r\n    public windowBreakpointChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * The Tabs of the Pivot\r\n     */\r\n    @ContentChildren(PivotTabComponent)\r\n    public tabs: QueryList<PivotTabComponent>;\r\n\r\n    @ContentChildren(PivotTabComponent)\r\n    public visibleTabsQL: QueryList<PivotTabComponent>;\r\n\r\n    /**\r\n     * Bindable property for tab types\r\n     */\r\n    public pivotTabType = PivotTabType;\r\n\r\n    /**\r\n     * Indicates if this pivot is disabled\r\n     */\r\n    @HostBinding('class.sme-disabled')\r\n    @Input()\r\n    public disabled: boolean;\r\n\r\n    /**\r\n     * Indicates that routed tabs have been provided\r\n     */\r\n    public get hasRoutedTabs(): boolean {\r\n        return this.tabs && this.tabs.some(t => t.type === PivotTabType.Routed);\r\n    }\r\n\r\n    /**\r\n     * Indicates that static tabs have been provided\r\n     */\r\n    public get hasStaticTabs(): boolean {\r\n        return this.tabs && this.tabs.some(t => t.type === PivotTabType.Static);\r\n    }\r\n\r\n    public get visiTabs(): PivotTabComponent[] {\r\n        return this.tabs.filter(tab => tab.isVisible);\r\n    }\r\n\r\n    /**\r\n     * Indicates that static tabs have been provided\r\n     */\r\n    public get selectionIsRouted(): boolean {\r\n        return this.selection && this.selection.type === PivotTabType.Routed;\r\n    }\r\n\r\n    private changeDetectorRef: ChangeDetectorRef;\r\n\r\n    /**\r\n     * This dropdown element that contains pivotTabs only if the screen size doesn't allow.\r\n     */\r\n    @ViewChild('dropDownButton') private dropDownButtonElement: ElementRef;\r\n\r\n    @ViewChildren('pivotContents')\r\n    public pivotContents: QueryList<ElementRef>;\r\n\r\n    private pivotResponsiveWindowManager: PivotResponsiveWindowManager;\r\n\r\n    /**\r\n     * Initializes a new instance of the @see PivotComponent class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator in the base @see BaseComponent class\r\n     */\r\n    constructor(\r\n        injector: Injector,\r\n        @SkipSelf() @Optional() @Inject(SME_LAYOUT_PROVIDER) layout: Layout) {\r\n        super(injector);\r\n\r\n        this.changeDetectorRef = injector.get(ChangeDetectorRef);\r\n\r\n        if (layout) {\r\n            this.pivotResponsiveWindowManager = new PivotResponsiveWindowManager(layout);\r\n            // on parent layout changes, re-emit the layout change to our event\r\n            this.subscriptions.push(layout.layoutChanged.subscribe((() => this.onLayoutChanged())));\r\n            // on window break point changes, emit the event about critical classes and styling updates signal.\r\n            this.subscriptions.push(layout.windowBreakpointChanged.subscribe(() => this.onWindowBreakpointChanged()));\r\n\r\n            this.deferredOnLayoutChanged();\r\n        }\r\n    }\r\n\r\n    public ngAfterContentInit() {\r\n        if (this.tabs && this.tabs.first && !this.selection) {\r\n            this.selection = this.tabs.first;\r\n        }\r\n        if (this.tabs.length < 1) {\r\n            throw new Error(\r\n                'Pivot must contain child tabs. Expected at least one (1) tab'\r\n            );\r\n        }\r\n        this.visibleTabs = this.tabs.toArray();\r\n    }\r\n\r\n    public ngAfterContentChecked(): void {\r\n        this.changeDetectorRef.detectChanges();\r\n    }\r\n\r\n    /**\r\n     * Indicates of a given tab is selected\r\n     * @param tab The tab to compare with\r\n     */\r\n    public isSelected(tab: PivotTabComponent): boolean {\r\n        return this.selection && this.selection === tab;\r\n    }\r\n\r\n    /**\r\n     * Force refresh for the pivot tabs.\r\n     */\r\n    @Debounce()\r\n    public refresh(shouldEmit = false, byWindowSize = false) {\r\n        this.updatePivotTabs(shouldEmit, byWindowSize);\r\n    }\r\n\r\n    /**\r\n     * Selects a tab by clicking or keyboard navigation.\r\n     * @param tab The tab to select by clicking or keyboard navigation.\r\n     */\r\n    public onClick(tab: PivotTabComponent): void {\r\n        this.select(tab);\r\n        this.selectionChangeByClick.emit(tab);\r\n    }\r\n\r\n    /**\r\n     * Selects a tab\r\n     * @param tab The tab to select\r\n     */\r\n    public select(tab: PivotTabComponent): void {\r\n        // At any given time we should have an attribute that lets us know if a tab is visible or not.\r\n        if (tab) {\r\n            for (let i = 0; i < this.trayTabs.length; i++) {\r\n                if (this.trayTabs[i] === tab) {\r\n                    if (this.visibleTabs && this.visibleTabs.length > 0) {\r\n                        const hiddenTab = this.visibleTabs.pop();\r\n                        hiddenTab.isVisible = false;\r\n                        this.trayTabs.push(hiddenTab);\r\n                    }\r\n                    this.visibleTabs.push(tab);\r\n                    tab.isVisible = true;\r\n                    this.trayTabs.splice(i, 1);\r\n                    break;\r\n                }\r\n            }\r\n\r\n            this.selection = tab;\r\n            this.selectionChange.emit(tab);\r\n            this.changeDetectorRef.detectChanges();\r\n            this.emitLayoutChanged();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The on window breakpoint changed handler.\r\n     * Adding yield for component to get ElementRef after initialization.\r\n     */\r\n    @Yield()\r\n    public onWindowBreakpointChanged() {\r\n        if (!this.tabs || !this.tabs.toArray()) {\r\n            return;\r\n        }\r\n\r\n        this.pivotResponsiveWindowManager.onWindowSizeChanged(this.pivotContents,\r\n            this.idBag.tabPanel + this.tabs.toArray().indexOf(this.selection));\r\n    }\r\n\r\n    /**\r\n     * Emits the layout changed event to notify children about layout changed.\r\n     */\r\n    private emitLayoutChanged(): void {\r\n        this.layoutChanged.emit();\r\n    }\r\n\r\n    /**\r\n     * On layout changed event handler, occurs every time the layout has been changed.\r\n     */\r\n    @Yield()\r\n    private onLayoutChanged() {\r\n        this.updatePivotTabs();\r\n    }\r\n\r\n    /**\r\n     * The deferred layout changed handler.\r\n     */\r\n    @Debounce()\r\n    private deferredOnLayoutChanged() {\r\n        this.onLayoutChanged();\r\n    }\r\n\r\n    /**\r\n     * It gets the label from the pivot tab component.\r\n     * @returns array of labels representing the pivot tabs.\r\n     */\r\n    public getLabels(): string[] {\r\n        if (!this.tabs || !this.tabs.toArray()) {\r\n            return [];\r\n        }\r\n\r\n        return this.tabs.toArray().map((a) => a.label);\r\n    }\r\n\r\n    /**\r\n     * It handles the selection of pivot tab by label.\r\n     * @param label the label for pivot tab to be selected.\r\n     * @returns void.\r\n     */\r\n    public selectTabByLabel(label: string): void {\r\n        const tabComponent = this.getPivotTabComponentByLabel(label);\r\n        if (!tabComponent) {\r\n            return;\r\n        }\r\n\r\n        this.select(tabComponent);\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned by the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            tabPanel: ''\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses(): string[] {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-pivot'\r\n        ]);\r\n    }\r\n\r\n    /**\r\n     * Gets the pivot tab component by pivot tab label.\r\n     * @param label the label string.\r\n     * @returns the pivot tab component with the specific label.\r\n     */\r\n    private getPivotTabComponentByLabel(label: string): PivotTabComponent {\r\n        if (!this.tabs || !this.tabs.toArray() || !this.tabs.toArray().length) {\r\n            return;\r\n        }\r\n\r\n        const tabs = this.tabs.toArray();\r\n\r\n        for (let i = 0; i < tabs.length; i++) {\r\n            if (tabs[i].label === label) {\r\n                return tabs[i];\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Main rendering functionality for the pivot tab\r\n     * @param shouldEmit It indicates whether the layout changed event should be fired.\r\n     * @param byWindowSize It indicates whether to use the window width when the hostElement width is 0.\r\n     */\r\n    private updatePivotTabs(shouldEmit = true, byWindowSize = false) {\r\n        let currentFill = 0;\r\n        this.visibleTabs = [];\r\n        this.trayTabs = [];\r\n\r\n        const host = <HTMLElement>this.hostElement.nativeElement;\r\n        let tabBarWidth = host.offsetWidth;\r\n\r\n        if (tabBarWidth === 0 && byWindowSize) {\r\n            tabBarWidth = window.innerWidth;\r\n        }\r\n\r\n        let totalTabWidth = 0;\r\n        const tabList = this.tabs.toArray();\r\n        for (let i = 0; i < this.tabs.length; i++) {\r\n            const tab: PivotTabComponent = tabList[i];\r\n            const tabWidth = tab.width;\r\n            totalTabWidth += tabWidth;\r\n        }\r\n\r\n        if (totalTabWidth <= tabBarWidth) {\r\n            for (let i = 0; i < this.tabs.length; ++i) {\r\n                tabList[i].isVisible = true;\r\n                this.visibleTabs.push(tabList[i]);\r\n            }\r\n        } else {\r\n            let isMoreButtonWidthAdded = false;\r\n            const visibleTabBarWidth = tabBarWidth;\r\n\r\n            // Get the current selection if applicable. On window resize, the selection cannot lost target.\r\n            let indexForSelection = -1;\r\n            for (let i = 0; i < this.tabs.length; i++) {\r\n                const tab = tabList[i];\r\n                if (tab === this.selection) {\r\n                    indexForSelection = i;\r\n                    break;\r\n                }\r\n            }\r\n\r\n            // Force fit in the selection\r\n            if (indexForSelection >= 0) {\r\n                tabList[indexForSelection].isVisible = true;\r\n                const tabWidth = tabList[indexForSelection].width;\r\n                currentFill += tabWidth;\r\n            }\r\n\r\n            let prevWidth = 0;\r\n            for (let i = 0; i < this.tabs.length; ++i) {\r\n                const tab = tabList[i];\r\n\r\n                if (indexForSelection === i) {\r\n                    this.visibleTabs.push(tab);\r\n                } else {\r\n                    const tabWidth = tab.width;\r\n                    prevWidth = tabWidth;\r\n                    if (currentFill + tabWidth > visibleTabBarWidth) {\r\n                        tab.isVisible = false;\r\n                        this.trayTabs.push(tab);\r\n\r\n                        if (!isMoreButtonWidthAdded) {\r\n                            isMoreButtonWidthAdded = true;\r\n                            // Pop the prev visible tab due to not compatible after adding the 'More' dropdown.\r\n                            // Guarantee that at least one tab will be shown at minimum.\r\n                            // If the prev item is selected, should not backtracking pop.\r\n                            if (this.selection && this.visibleTabs.length > 1 &&\r\n                                this.selection !== this.visibleTabs[this.visibleTabs.length - 1]) {\r\n                                const poppedTab = this.visibleTabs.pop();\r\n                                this.trayTabs.push(poppedTab);\r\n                                currentFill -= prevWidth;\r\n                            }\r\n                            // The actual width for the dropdown\r\n                            currentFill += this.dropDownButtonElement.nativeElement.offsetWidth;\r\n                        }\r\n                    } else {\r\n                        tab.isVisible = true;\r\n                        this.visibleTabs.push(tab);\r\n                        currentFill += tabWidth;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        if (shouldEmit) {\r\n            this.emitLayoutChanged();\r\n        }\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { SmeRouterModule } from '../../directives/router/router.module';\r\nimport { DropdownModule } from '../dropdown/dropdown.module';\r\nimport { PivotTabComponent } from './pivot-tab.component';\r\nimport { PivotComponent } from './pivot.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        PivotComponent,\r\n        PivotTabComponent\r\n    ],\r\n    declarations: [\r\n        PivotComponent,\r\n        PivotTabComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        SmeRouterModule,\r\n        RouterModule,\r\n        DropdownModule\r\n    ]\r\n})\r\nexport class PivotModule { }\r\n","import { AfterViewInit, Directive, EventEmitter, Output } from '@angular/core';\r\n\r\n/**\r\n * This class handles where the ng-content passed in directly to the master view content loses track of data-table.\r\n * Due to content child can only work with direct parent-child, not parent-some template-child scenario.\r\n * This can be used for supporting other components to be the content of the master view if needed.\r\n */\r\n@Directive({\r\n    selector: '[smeMasterViewContentDirective]'\r\n})\r\nexport class MasterViewContentDirective implements AfterViewInit {\r\n    @Output() public smeDataTableFromTemplateReady: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n    ngAfterViewInit() {\r\n        this.smeDataTableFromTemplateReady.emit();\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MasterViewContentDirective } from './master-view-content.component';\r\n\r\n@NgModule({\r\n  declarations: [MasterViewContentDirective],\r\n  imports: [CommonModule],\r\n  exports: [MasterViewContentDirective]\r\n})\r\nexport class MasterViewContentModule {}\r\n","import { ElementRef } from '@angular/core';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { SmeResponsiveWindowBreakpoints,\r\n    SmeResponsiveWindowManagerComponent } from '../common/sme-responsive-window-manager.component';\r\n\r\nexport interface SplitViewResizerMargin {\r\n    lower: number;\r\n    upper: number;\r\n}\r\n\r\nexport class SplitViewResponsiveWindowManager extends SmeResponsiveWindowManagerComponent {\r\n    public readonly name = 'sme-split-view';\r\n    /**\r\n     * The orientation parameter last set from the resizer component.\r\n     */\r\n    public previousOrientation = 'bottom';\r\n\r\n    /**\r\n     * Getter for orientation.\r\n     */\r\n    public get orientation(): string {\r\n        if (this.cssV2) {\r\n            const size = this.prevSize;\r\n            // before responsive window manager initialization\r\n            if (!size) {\r\n                return this.previousOrientation;\r\n            }\r\n\r\n            if ([SmeResponsiveWindowBreakpoints.Reflow, SmeResponsiveWindowBreakpoints.PhoneDown].includes(size.size)) {\r\n                if (this.previousOrientation === 'left') {\r\n                    return 'top';\r\n                }\r\n                if (this.previousOrientation === 'right') {\r\n                    return 'bottom';\r\n                }\r\n            }\r\n        }\r\n\r\n        return this.previousOrientation;\r\n    }\r\n\r\n    protected readonly splitViewResizerPresetMargin = {\r\n        Reflow: {\r\n            lower: undefined,\r\n            upper: undefined\r\n        },\r\n        PhoneDown: {\r\n            lower: undefined,\r\n            upper: undefined\r\n        },\r\n        PhoneUp: {\r\n            lower: 100,\r\n            upper: 100\r\n        }\r\n    };\r\n\r\n    protected readonly splitViewResizerPresetPaneDistance = {\r\n        Reflow: undefined,\r\n        PhoneDown: undefined,\r\n        PhoneUp: 200\r\n    };\r\n\r\n    private smeSplitViewClassList = {\r\n        phoneUp: ['sme-arrange-stack-v', 'sme-layout-absolute', 'sme-position-inset-none', 'sme-arrange-overflow-hide'],\r\n        phoneDown: ['sme-position-flex-none', 'sme-layout-relative'],\r\n        reflow: ['sme-position-flex-none', 'sme-layout-relative']\r\n    };\r\n\r\n    private smeSplitViewPaneClassList = {\r\n        phoneUp: [],\r\n        phoneDown: ['sme-position-flex-none', 'sme-layout-relative'],\r\n        reflow: ['sme-position-flex-none', 'sme-layout-relative']\r\n    };\r\n\r\n    private smeSplitViewContentClassList = {\r\n        phoneUp: [],\r\n        phoneDown: ['sme-position-flex-none', 'sme-layout-relative'],\r\n        reflow: ['sme-position-flex-none', 'sme-layout-relative']\r\n    };\r\n\r\n    private smeSplitViewContentContainerClassList = {\r\n        phoneUp: ['sme-arrange-overflow-auto'],\r\n        phoneDown: [],\r\n        reflow: []\r\n    };\r\n\r\n    private smeSplitViewPaneContainerClassList = {\r\n        phoneUp: ['sme-arrange-overflow-auto'],\r\n        phoneDown: [],\r\n        reflow: []\r\n    };\r\n\r\n    public paneDistance(currentPaneDistance: number): number {\r\n        if (this?.cssV2) {\r\n            const size = this.prevSize;\r\n\r\n            if (!size) {\r\n                return currentPaneDistance;\r\n            }\r\n\r\n            switch (size.size) {\r\n                case SmeResponsiveWindowBreakpoints.Reflow:\r\n                    return this.splitViewResizerPresetPaneDistance.Reflow;\r\n                case SmeResponsiveWindowBreakpoints.PhoneDown:\r\n                    return this.splitViewResizerPresetPaneDistance.PhoneDown;\r\n                case SmeResponsiveWindowBreakpoints.PhoneUp:\r\n                default:\r\n                    return currentPaneDistance;\r\n            }\r\n        }\r\n\r\n        return currentPaneDistance;\r\n    }\r\n\r\n    public splitViewResizerMargin(presetLower: number, presetUpper: number): SplitViewResizerMargin {\r\n        if (!presetLower) {\r\n            presetLower = this.splitViewResizerPresetMargin.PhoneUp.lower;\r\n        }\r\n\r\n        if (!presetUpper) {\r\n            presetUpper = this.splitViewResizerPresetMargin.PhoneUp.upper;\r\n        }\r\n\r\n        if (!this || !this.cssV2) {\r\n            return this.splitViewResizerMarginPhoneUp(presetLower, presetUpper);\r\n        }\r\n\r\n        switch (this.size) {\r\n            case SmeResponsiveWindowBreakpoints.Reflow:\r\n                return this.splitViewResizerPresetMargin.Reflow;\r\n            case SmeResponsiveWindowBreakpoints.PhoneDown:\r\n                return this.splitViewResizerPresetMargin.PhoneDown;\r\n            case SmeResponsiveWindowBreakpoints.PhoneUp:\r\n                return this.splitViewResizerMarginPhoneUp(presetLower, presetUpper);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Split view on window size changed event.\r\n     * @param contentContainer section class relative under sme-split-view wrapped with content\r\n     * @param paneContainer section class relative under sme-split-view wrapped with pane\r\n     * @returns void\r\n     */\r\n    @Yield()\r\n    public onWindowSizeChanged(contentContainer: ElementRef, paneContainer: ElementRef): void {\r\n        if (!this.cssV2) {\r\n            return;\r\n        }\r\n\r\n        if (!contentContainer || !paneContainer) {\r\n            return;\r\n        }\r\n\r\n        const splitViewElement = contentContainer.nativeElement.parentElement;\r\n        if (!splitViewElement || splitViewElement.tagName.toLocaleLowerCase() !== 'sme-split-view') {\r\n            return;\r\n        }\r\n\r\n        const splitViewPane = paneContainer.nativeElement.querySelector('sme-split-view-pane');\r\n        if (!splitViewPane) {\r\n            return;\r\n        }\r\n\r\n        const splitViewContent = contentContainer.nativeElement.querySelector('sme-split-view-content');\r\n        if (!splitViewContent) {\r\n            return;\r\n        }\r\n\r\n        // Do not mess up with the side nav\r\n        if (paneContainer.nativeElement.querySelector('nav[role=\"navigation\"]')) {\r\n            return;\r\n        }\r\n\r\n        const size = this.prevSize;\r\n\r\n        // Calculates the height for the master view component.\r\n        if (!size.phoneDown && !size.reflowMode) {\r\n\r\n            if (contentContainer) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSplitViewContentContainerClassList, 'phoneUp', contentContainer.nativeElement);\r\n            }\r\n\r\n            if (paneContainer) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSplitViewPaneContainerClassList, 'phoneUp', paneContainer.nativeElement);\r\n            }\r\n\r\n            if (splitViewElement) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSplitViewClassList, 'phoneUp', splitViewElement);\r\n            }\r\n\r\n            if (splitViewPane) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSplitViewPaneClassList, 'phoneUp', splitViewPane);\r\n            }\r\n\r\n            if (splitViewContent) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSplitViewContentClassList, 'phoneUp', splitViewContent);\r\n            }\r\n        } else if (size.phoneDown) {\r\n            if (contentContainer) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSplitViewContentContainerClassList, 'phoneDown', contentContainer.nativeElement);\r\n            }\r\n\r\n            if (paneContainer) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSplitViewPaneContainerClassList, 'phoneDown', paneContainer.nativeElement);\r\n            }\r\n\r\n            if (splitViewElement) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSplitViewClassList, 'phoneDown', splitViewElement);\r\n            }\r\n            if (splitViewPane) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSplitViewPaneClassList, 'phoneDown', splitViewPane);\r\n            }\r\n            if (splitViewContent) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSplitViewContentClassList, 'phoneDown', splitViewContent);\r\n            }\r\n        } else if (size.reflowMode) {\r\n            if (contentContainer) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSplitViewContentContainerClassList, 'reflow', contentContainer.nativeElement);\r\n            }\r\n\r\n            if (paneContainer) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSplitViewPaneContainerClassList, 'reflow', paneContainer.nativeElement);\r\n            }\r\n\r\n            if (splitViewElement) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSplitViewClassList, 'reflow', splitViewElement);\r\n            }\r\n            if (splitViewPane) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSplitViewPaneClassList, 'reflow', splitViewPane);\r\n            }\r\n            if (splitViewContent) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSplitViewContentClassList, 'reflow', splitViewContent);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Returns the section wrapped the split view content or pane\r\n     * @param children the children html content for selection\r\n     * @param type either it is pane or content\r\n     * @returns the split view content or pane sections\r\n     */\r\n    public getPaneContext(children: HTMLCollection, type: string) {\r\n        if (!['sme-split-view-content', 'sme-split-view-pane'].includes(type)) {\r\n            return;\r\n        }\r\n\r\n        let result: ElementRef;\r\n        for (let i = 0; i < children.length; i++) {\r\n            if (children[i] && children[i].tagName && children[i].tagName.toLowerCase() === 'section') {\r\n                // Finds the nearest and return.\r\n                const target = children[i].querySelector(type);\r\n\r\n                if (target) {\r\n                    result = <ElementRef>{\r\n                        nativeElement: children[i]\r\n                    };\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    private splitViewResizerMarginPhoneUp(presetLower: number, presetUpper: number) {\r\n        let res: SplitViewResizerMargin;\r\n        if (presetLower === this.splitViewResizerPresetMargin.PhoneUp.lower &&\r\n            presetUpper === this.splitViewResizerPresetMargin.PhoneUp.upper) {\r\n                res = this.splitViewResizerPresetMargin.PhoneUp;\r\n        } else {\r\n            res = {\r\n                lower: presetLower,\r\n                upper: presetUpper\r\n            };\r\n        }\r\n\r\n        return res;\r\n    }\r\n}\r\n","<ng-container *ngIf=\"orientationResponsiveWindow==='bottom' || orientationResponsiveWindow==='right'\">\r\n  <section #contentContainer class=\"sme-layout-relative sme-position-flex-auto\" [class.sme-arrange-overflow-auto]=\"showScrollbar\">\r\n    <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n  </section>\r\n  <section #paneContainer [class.sme-layout-none]=\"hideSplitViewPane\"\r\n    class=\"sme-layout-relative sme-position-flex-none sme-border-color-base-80\"\r\n    [class.sme-border-left-sm]=\"showSplitterBorder && orientationResponsiveWindow === 'right'\"\r\n    [class.sme-border-top-sm]=\"showSplitterBorder && orientationResponsiveWindow === 'bottom'\"\r\n    [class.sme-arrange-overflow-auto]=\"showScrollbar\">\r\n    <!-- TODO: hide resizer on phone down temporarily, needs special design -->\r\n    <sme-resizer *ngIf=\"isExpanded\" class=\"sme-layout-hide-phone-down\" [tabindex]=\"[isExpanded?0:null]\"\r\n      [class.sme-focus-zone]=\"isExpanded\" resizerHostSelector=\"sme-split-view\"\r\n      (resized)=\"onResized($event)\" [orientation]=\"orientationResponsiveWindow\">\r\n    </sme-resizer>\r\n    <ng-container *ngTemplateOutlet=\"pane\"></ng-container>\r\n  </section>\r\n</ng-container>\r\n<ng-container *ngIf=\"orientationResponsiveWindow==='top' || orientationResponsiveWindow==='left'\">\r\n  <section #paneContainer [class.sme-layout-none]=\"hideSplitViewPane\"\r\n    class=\"sme-layout-relative sme-position-flex-none sme-border-color-base-80\"\r\n    [class.sme-border-right-sm]=\"showSplitterBorder && orientationResponsiveWindow === 'left'\"\r\n    [class.sme-border-bottom-sm]=\"showSplitterBorder && orientationResponsiveWindow === 'top'\"\r\n    [class.sme-arrange-overflow-auto]=\"showScrollbar\">\r\n    <ng-container *ngTemplateOutlet=\"pane\"></ng-container>\r\n    <!-- TODO: hide resizer on phone down temporarily, needs special design -->\r\n    <sme-resizer *ngIf=\"isExpanded\" class=\"sme-layout-hide-phone-down\" [tabindex]=\"[isExpanded?0:null]\"\r\n      [class.sme-focus-zone]=\"isExpanded\" resizerHostSelector=\"sme-split-view\"\r\n      (resized)=\"onResized($event)\" [orientation]=\"orientationResponsiveWindow\" [attr.aria-valuenow]=\"getAriaValueNow()\">\r\n    </sme-resizer>\r\n  </section>\r\n  <section #contentContainer class=\"sme-layout-relative sme-position-flex-auto\" [class.sme-arrange-overflow-auto]=\"showScrollbar\">\r\n    <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n  </section>\r\n</ng-container>\r\n\r\n<ng-template #content>\r\n  <ng-content select=\"sme-split-view-content\"></ng-content>\r\n</ng-template>\r\n<ng-template #pane>\r\n  <ng-content select=\"sme-split-view-pane\"></ng-content>\r\n</ng-template>\r\n<!-- The reason to use ng-template to wrap the ng-content element instead of directly to use ng-content in both two ng-containers above is:\r\nIf we use ng-content elements directly in both 2 ng-containers, there will be 2 ng-content elements with the same selector. But Angular will only\r\nresolve the first ng-content in multiple ng-content elements with same selector even the first one is in a ngIf false block.\r\nSo when the orientation is \"top\" or \"left\", no ng-content element will be resolved then nothing would render.\r\nIn order to solve this problem, we have to use ng-template to wrap the ng-content to make sure one selector maps to one ng-content.\r\nThen we use ng-container and ngTemplateOutlet to call the ng-template.\r\nThx for reading till here...... -->\r\n","import {\r\n    AfterContentInit,\r\n    Component,\r\n    ContentChild,\r\n    ElementRef,\r\n    EventEmitter,\r\n    forwardRef,\r\n    HostBinding,\r\n    Inject,\r\n    Injector,\r\n    Input,\r\n    OnDestroy,\r\n    OnInit,\r\n    Optional,\r\n    Output,\r\n    SkipSelf,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { Subscription } from 'rxjs';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../common/layout';\r\nimport { SplitViewResizerMargin, SplitViewResponsiveWindowManager } from './split-view-responsive-window-manager';\r\n\r\n/**\r\n * The pane orientation of the split view.\r\n */\r\nexport type SplitViewOrientation = 'top' | 'left' | 'right' | 'bottom';\r\n\r\n/**\r\n * The component definition of the split view content.\r\n */\r\n@Component({\r\n    selector: 'sme-split-view-content',\r\n    template: '<ng-content></ng-content>'\r\n})\r\nexport class SplitViewContentComponent { }\r\n\r\n/**\r\n * The component definition of the split view pane.\r\n */\r\n@Component({\r\n    selector: 'sme-split-view-pane',\r\n    template: '<ng-content></ng-content>'\r\n})\r\nexport class SplitViewPaneComponent { }\r\n\r\n/**\r\n * The component definition of the split view.\r\n */\r\n@Component({\r\n    selector: 'sme-split-view',\r\n    templateUrl: './split-view.component.html',\r\n    providers: [\r\n        { provide: SME_LAYOUT_PROVIDER, useExisting: forwardRef(() => SplitViewComponent) }\r\n    ]\r\n})\r\nexport class SplitViewComponent extends CoreBaseComponent implements AfterContentInit, Layout, OnInit, OnDestroy {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n     protected get logSourceName() {\r\n        return 'SplitViewComponent';\r\n    }\r\n\r\n    /**\r\n     * Container for active subscriptions that should be cleaned up in the OnDestroy call.\r\n     */\r\n    protected subscriptions: Subscription[] = [];\r\n\r\n    /**\r\n     * It defines the actual pane distance that the control uses for rendering.\r\n     */\r\n    private internalPaneDistance: number;\r\n\r\n    /**\r\n     * It defines whether the pane distance value is set.\r\n     * It will not set it twice if set because only need to remember the initial value.\r\n     */\r\n    private isPaneDistanceSet = false;\r\n\r\n    /**\r\n     * It remembers the pane distance that has been set initially.\r\n     * The intention is for recovering the value on window size changes and layout changes.\r\n     */\r\n    private defaultPaneDistance: number;\r\n\r\n    /**\r\n     * It defines whether the split view has been expanded.\r\n     */\r\n    private internalIsExpanded = false;\r\n\r\n    /**\r\n     * Defines whether the split view component has been initialized.\r\n     */\r\n    private isComponentInitialized = false;\r\n\r\n    /**\r\n     * The window responsive manager for the split view.\r\n     */\r\n    private splitViewResponsiveWindowManager: SplitViewResponsiveWindowManager;\r\n\r\n    /**\r\n     * The orientation of the pane.\r\n     */\r\n    private internalOrientation: SplitViewOrientation = 'bottom';\r\n\r\n    /**\r\n     * It implements the ILayout interface. It's triggered when the layout is changed.\r\n     * It's used to tell the child components to coordinate with the layout change.\r\n     */\r\n    @Output()\r\n    public layoutChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * Implementation of the Layout interface\r\n     */\r\n    @Output()\r\n    public windowBreakpointChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * The content of the component.\r\n     */\r\n    @ContentChild(SplitViewContentComponent)\r\n    public content: SplitViewContentComponent;\r\n\r\n    /**\r\n     * The pane of the component.\r\n     */\r\n    @ContentChild(SplitViewPaneComponent)\r\n    public pane: SplitViewPaneComponent;\r\n\r\n    /**\r\n     * The section html element that wraps the sme-split-view-pane\r\n     */\r\n    @ViewChild('paneContainer')\r\n    public paneContainerElement: ElementRef;\r\n\r\n    /**\r\n     * The section html element that wraps the sme-split-view-container\r\n     */\r\n    @ViewChild('contentContainer')\r\n    public contentContainerElement: ElementRef;\r\n\r\n    /**\r\n     * It indicates whether to show the scrollbar when it's needed.\r\n     */\r\n    @Input()\r\n    public showScrollbar = false;\r\n\r\n    /**\r\n     * It indicates whether to show the border for the splitter.\r\n     */\r\n    @Input()\r\n    public showSplitterBorder = true;\r\n\r\n    /**\r\n     * Set this to true means on smaller window, will respect the original pane value\r\n     * It is not suggested to be used other than the shell side nav bar.\r\n     */\r\n    @Input()\r\n    public disablePaneDistanceResponsiveWindow = false;\r\n\r\n    /**\r\n     * It indicates the distance between the start and end of the pane.\r\n     * It is a hardcoded value, not fully working on window responsive design.\r\n     * By design, this value will not be respected on smaller screen, phone down.\r\n     */\r\n    public get paneDistance(): number {\r\n        return this.internalPaneDistance;\r\n    }\r\n\r\n    @Input()\r\n    public set paneDistance(value: number) {\r\n        if (this.internalPaneDistance === value) {\r\n            return;\r\n        }\r\n\r\n        this.internalPaneDistance = value;\r\n\r\n        if (!this.isPaneDistanceSet) {\r\n            this.defaultPaneDistance = value;\r\n        }\r\n        this.isPaneDistanceSet = true;\r\n    }\r\n\r\n    /**\r\n     * Set to true to disable the resize margin to go window responsive.\r\n     */\r\n    @Input()\r\n    public disabledResizeMarginResponsiveWindow = false;\r\n\r\n    /**\r\n     * It indicates the min value of the pane size.\r\n     */\r\n    @Input()\r\n    public resizeLowerMargin = 100;\r\n\r\n    /**\r\n     * It indicates the min value of the content size.\r\n     */\r\n    @Input()\r\n    public resizeUpperMargin = 100;\r\n\r\n    /**\r\n     * It defines the orientation of the element which holds the resizer in the resizing layout.\r\n     */\r\n    @Input()\r\n    public set orientation(input: SplitViewOrientation) {\r\n        this.internalOrientation = input;\r\n        if (!this.splitViewResponsiveWindowManager) {\r\n            return;\r\n        }\r\n\r\n        const previousOrientation = this.splitViewResponsiveWindowManager.previousOrientation;\r\n        if (previousOrientation !== this.internalOrientation) {\r\n            this.splitViewResponsiveWindowManager.previousOrientation = this.internalOrientation;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Set this to true to disable the orientation change on window size change.\r\n     */\r\n    @Input()\r\n    public disableOrientationResponsiveWindow = false;\r\n\r\n    /**\r\n     * Hides the split view pane\r\n     */\r\n    @Input()\r\n    public hideSplitViewPane = false;\r\n\r\n    /**\r\n     * Getter for orientation\r\n     */\r\n    public get orientation(): SplitViewOrientation {\r\n        return this.internalOrientation;\r\n    }\r\n\r\n    /**\r\n     * Remember the previous window responsive value for orientation for the on orientation changed event.\r\n     */\r\n    private previousOrientationResponsiveWindow = 'bottom';\r\n\r\n    /**\r\n     * Getter for the window responsive value for the orientation\r\n     */\r\n    public get orientationResponsiveWindow() {\r\n        // If opt-out, should use the original orientation\r\n        if (this.disableOrientationResponsiveWindow) {\r\n            return this.orientation;\r\n        }\r\n        if (!this.splitViewResponsiveWindowManager) {\r\n            return this.orientation;\r\n        } else {\r\n            const cur = this.splitViewResponsiveWindowManager.orientation;\r\n            if (cur !== this.previousOrientationResponsiveWindow) {\r\n                this.onOrientationChanged(cur);\r\n                this.previousOrientationResponsiveWindow = cur;\r\n            }\r\n\r\n            return this.splitViewResponsiveWindowManager.orientation;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The event fired when the pane's expanded state is being toggled.\r\n     */\r\n    @Output()\r\n    public paneToggling: EventEmitter<{ isExpanded: boolean }> = new EventEmitter<{ isExpanded: boolean }>();\r\n\r\n    /**\r\n     * The event fired when the pane's expanded state has been toggled.\r\n     */\r\n    @Output()\r\n    public paneToggled: EventEmitter<{ isExpanded: boolean }> = new EventEmitter<{ isExpanded: boolean }>();\r\n\r\n    constructor( injector: Injector,\r\n        private elementReference: ElementRef,\r\n        @SkipSelf() @Optional() @Inject(SME_LAYOUT_PROVIDER) layout: Layout) {\r\n\r\n        super(injector);\r\n\r\n        if (layout) {\r\n            this.splitViewResponsiveWindowManager = new SplitViewResponsiveWindowManager(layout);\r\n            // on parent layout changes, re-emit the layout change to our event\r\n            this.subscriptions.push(layout.layoutChanged.subscribe((() => this.onParentLayoutChanged())));\r\n            // on window break point changes, emit the event about critical classes and styling updates signal.\r\n            this.subscriptions.push(layout.windowBreakpointChanged.subscribe(() => this.onWindowBreakpointChanged()));\r\n\r\n            this.deferredOnLayoutChanged();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Gets the CSS classes of the component.\r\n     *\r\n     * TODO: setting the class this way prevent any custom class from being applied.\r\n     * Change to setting class in the constructor using Renderer2 and ElementRef\r\n     *\r\n     * On phone down, the layout for split view can only be top and bottom, in this case, we will allow y scroll.\r\n     */\r\n    @HostBinding('class')\r\n    public get hostClass(): string {\r\n        return 'sme-layout-absolute sme-position-inset-none sme-arrange-stack-v sme-arrange-overflow-hide';\r\n    }\r\n\r\n    /**\r\n     * Gets the flex direction of the component.\r\n     */\r\n    @HostBinding('style.flex-direction')\r\n    public get flexDirection(): string {\r\n        switch (this.orientationResponsiveWindow) {\r\n            case 'left':\r\n                return 'row';\r\n            case 'top':\r\n                return 'column';\r\n            case 'right':\r\n                return 'row';\r\n            case 'bottom':\r\n            default:\r\n                return 'column';\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Gets whether the pane has been expanded.\r\n     */\r\n    @Input()\r\n    public get isExpanded(): boolean {\r\n        return this.internalIsExpanded;\r\n    }\r\n\r\n    /**\r\n     * Sets whether the pane has been expanded.\r\n     */\r\n    public set isExpanded(value: boolean) {\r\n        if (value === this.internalIsExpanded) {\r\n            return;\r\n        }\r\n\r\n        this.internalIsExpanded = value;\r\n        this.paneToggling.emit({\r\n            isExpanded: this.internalIsExpanded\r\n        });\r\n        this.refreshUI();\r\n        this.paneToggled.emit({\r\n            isExpanded: this.internalIsExpanded\r\n        });\r\n\r\n        this.layoutChanged.emit();\r\n    }\r\n\r\n    /**\r\n     * The Angular ngOnInit function.\r\n     */\r\n    public ngOnInit(): void {\r\n        this.isComponentInitialized = true;\r\n        this.refreshUI();\r\n    }\r\n\r\n    /**\r\n     * The Angular ngOnDestroy function.\r\n     */\r\n    public ngOnDestroy(): void {\r\n        this.subscriptions.forEach(sub => sub?.unsubscribe());\r\n    }\r\n\r\n    /**\r\n     * The method called after content is initialized.\r\n     */\r\n    public ngAfterContentInit(): void {\r\n        if (this.content == null) {\r\n            Logging.log({\r\n                level: LogLevel.Error,\r\n                message: `The value of 'content' is either null or undefined.`,\r\n                params: {\r\n                    content: this.content\r\n                },\r\n                source: 'SplitViewComponent.ngAfterContentInit'\r\n            });\r\n        }\r\n\r\n        if (this.pane == null) {\r\n            Logging.log({\r\n                level: LogLevel.Error,\r\n                message: `The value of 'pane' is either null or undefined.`,\r\n                params: {\r\n                    pane: this.pane\r\n                },\r\n                source: 'SplitViewComponent.ngAfterContentInit'\r\n            });\r\n        }\r\n\r\n        if (!this.isPaneDistanceSet) {\r\n            this.resetPaneMaxSize();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Gets the window responsive value for the pane distance.\r\n     */\r\n    public getPaneDistanceResponsiveWindow(): number {\r\n        // If opt-out, should use the original pane distance.\r\n        if (this.disablePaneDistanceResponsiveWindow || !this.splitViewResponsiveWindowManager) {\r\n            return this.paneDistance;\r\n        }\r\n\r\n        return this.splitViewResponsiveWindowManager.paneDistance(this.paneDistance);\r\n    }\r\n\r\n    /**\r\n     * Gets the window responsive value for the resizer margin.\r\n     */\r\n    public getSplitViewResizerMarginResponsiveWindow(): SplitViewResizerMargin {\r\n        // If opt-out, should use the original margin size.\r\n        if (this.disabledResizeMarginResponsiveWindow || !this.splitViewResponsiveWindowManager) {\r\n            return {\r\n                lower: this.resizeLowerMargin,\r\n                upper: this.resizeUpperMargin\r\n            };\r\n        }\r\n\r\n        return this.splitViewResponsiveWindowManager.splitViewResizerMargin(\r\n            this.resizeLowerMargin, this.resizeUpperMargin);\r\n    }\r\n\r\n    /**\r\n     * The on window breakpoint changed handler.\r\n     * Adding yield for component to get ElementRef after initialization.\r\n     */\r\n    @Yield()\r\n    public onWindowBreakpointChanged() {\r\n        if (!this.contentContainerElement || !this.paneContainerElement) {\r\n            return;\r\n        }\r\n\r\n        this.splitViewResponsiveWindowManager.onWindowSizeChanged(this.contentContainerElement, this.paneContainerElement);\r\n    }\r\n\r\n    /**\r\n     * The deferred layout changed handler.\r\n     */\r\n    @Debounce()\r\n    private deferredOnLayoutChanged() {\r\n        this.onParentLayoutChanged();\r\n    }\r\n\r\n    /**\r\n     * Handles the change event coming from parent control from the layout component.\r\n     */\r\n    private onParentLayoutChanged() {\r\n        if (!this.isComponentInitialized) {\r\n            return;\r\n        }\r\n\r\n        if (this.isPaneDistanceSet) {\r\n            this.resetPaneMaxSize();\r\n\r\n            const resizeMargin: SplitViewResizerMargin = this.getSplitViewResizerMarginResponsiveWindow();\r\n            const orientationResponsiveWindow = this.orientationResponsiveWindow;\r\n            const paneContainer = this.paneContainerElement.nativeElement;\r\n\r\n            if (resizeMargin.lower === undefined && resizeMargin.upper === undefined) {\r\n                if (orientationResponsiveWindow === 'bottom' || orientationResponsiveWindow === 'top') {\r\n                    paneContainer.style.height = '';\r\n                    paneContainer.style.width = '100%';\r\n                } else if (orientationResponsiveWindow === 'left' || orientationResponsiveWindow === 'right') {\r\n                    paneContainer.style.width = '';\r\n                    paneContainer.style.height = '100%';\r\n                }\r\n            } else {\r\n                if ((orientationResponsiveWindow === 'bottom' || orientationResponsiveWindow === 'top')\r\n                    && this.elementReference.nativeElement.offsetHeight) {\r\n                        this.paneDistance = Math.min(\r\n                            this.paneDistance,\r\n                            this.elementReference.nativeElement.offsetHeight - resizeMargin.upper);\r\n                        this.paneDistance = Math.max(this.paneDistance, resizeMargin.lower);\r\n\r\n                        paneContainer.style.height = this.isExpanded && this.paneDistance ? (this.paneDistance + 'px') : '';\r\n                        paneContainer.style.width = '100%';\r\n                } else if ((orientationResponsiveWindow === 'left' || orientationResponsiveWindow === 'right')\r\n                    && this.elementReference.nativeElement.offsetWidth) {\r\n                        this.paneDistance = Math.min(\r\n                            this.paneDistance,\r\n                            this.elementReference.nativeElement.offsetWidth - resizeMargin.upper);\r\n                        this.paneDistance = Math.max(this.paneDistance, resizeMargin.lower);\r\n\r\n                        paneContainer.style.width = this.isExpanded && this.paneDistance ? (this.paneDistance + 'px') : '';\r\n                        paneContainer.style.height = '100%';\r\n                }\r\n            }\r\n        } else {\r\n            if (this.isExpanded) {\r\n                this.setPaneMaxSize();\r\n            }\r\n        }\r\n\r\n        this.layoutChanged.emit();\r\n    }\r\n\r\n    /**\r\n     * Toggles the expanded state of the pane.\r\n     */\r\n    public togglePane(): void {\r\n        this.isExpanded = !this.isExpanded;\r\n    }\r\n\r\n    /**\r\n     * The implementation for after the control gets signal for confirmation for resize.\r\n     * @param $event the event for resizing\r\n     */\r\n    public onResized($event): void {\r\n        this.resetPaneMaxSize();\r\n\r\n        const resizeMargin: SplitViewResizerMargin = this.getSplitViewResizerMarginResponsiveWindow();\r\n        const orientationResponsiveWindow = this.orientationResponsiveWindow;\r\n        const paneContainer = this.paneContainerElement.nativeElement;\r\n\r\n        this.isPaneDistanceSet = true;\r\n\r\n        if (resizeMargin.lower === undefined && resizeMargin.upper === undefined) {\r\n            if (orientationResponsiveWindow === 'bottom' || orientationResponsiveWindow === 'top') {\r\n                paneContainer.style.height = '';\r\n                paneContainer.style.width = '100%';\r\n            } else if (orientationResponsiveWindow === 'left' || orientationResponsiveWindow === 'right') {\r\n                paneContainer.style.width = '';\r\n                paneContainer.style.height = '100%';\r\n            }\r\n        } else {\r\n            if (orientationResponsiveWindow === 'bottom' || orientationResponsiveWindow === 'top') {\r\n                const resizedHeight = orientationResponsiveWindow === 'bottom' ?\r\n                    paneContainer.offsetHeight - $event.y :\r\n                    paneContainer.offsetHeight + $event.y;\r\n\r\n                this.paneDistance = Math.max(resizedHeight, resizeMargin.lower);\r\n                this.paneDistance  = Math.min(\r\n                    this.paneDistance,\r\n                    this.elementReference.nativeElement.offsetHeight - resizeMargin.upper);\r\n\r\n                paneContainer.style.height = this.paneDistance ? this.paneDistance + 'px' : '';\r\n            } else if (orientationResponsiveWindow === 'left' || orientationResponsiveWindow === 'right') {\r\n                const resizedWidth = orientationResponsiveWindow === 'right' ?\r\n                    paneContainer.offsetWidth - $event.x :\r\n                    paneContainer.offsetWidth + $event.x;\r\n\r\n                this.paneDistance = Math.max(resizedWidth, resizeMargin.lower);\r\n                this.paneDistance = Math.min(\r\n                    this.paneDistance,\r\n                    this.elementReference.nativeElement.offsetWidth - resizeMargin.upper);\r\n\r\n                paneContainer.style.width = this.paneDistance ? this.paneDistance + 'px' : '';\r\n            }\r\n        }\r\n\r\n        this.layoutChanged.emit();\r\n    }\r\n\r\n    /**\r\n     * Gets the value for the pane's distance for accessibility purposes.\r\n     * @returns number that indicates the pane's rendering value.\r\n     */\r\n    public getAriaValueNow() {\r\n        return this.isExpanded && this.paneDistance ? Math.round(this.paneDistance) : null;\r\n    }\r\n\r\n    /**\r\n     * Handles the orientation changed events. This usually happens on layout change behavior such as resizing the window.\r\n     * This function has to be called with component initialized.\r\n     * @param cur the current layout, could be top, bottom, left, right.\r\n     * @returns void.\r\n     */\r\n    private onOrientationChanged(cur: string): void {\r\n        // Ignore if the container is not yet initialized.\r\n        if (!this.isComponentInitialized || !this.paneContainerElement || !this.paneContainerElement.nativeElement) {\r\n            return;\r\n        }\r\n\r\n        const container = this.paneContainerElement.nativeElement;\r\n\r\n        if (cur === 'top' || cur === 'bottom' ) {\r\n            container.style.width = '100%';\r\n            container.style.height = this.getPaneDistanceResponsiveWindow() + 'px';\r\n            this.paneDistance = this.defaultPaneDistance;\r\n        } else if (cur === 'left' || cur === 'right') {\r\n            container.style.width = this.getPaneDistanceResponsiveWindow() + 'px';\r\n            container.style.height = '100%';\r\n        }\r\n\r\n        this.deferredRefreshUI();\r\n    }\r\n\r\n    /**\r\n     * It has to be a debounce value in between 0 - 250 to wait for children component.\r\n     * Ideally should be promise implemented.\r\n     */\r\n    @Debounce(10)\r\n    private deferredRefreshUI(): void {\r\n        this.refreshUI();\r\n    }\r\n\r\n    /**\r\n     * The function to refresh the split view from UI.\r\n     * @returns void\r\n     */\r\n    private refreshUI(): void {\r\n        if (!this.isComponentInitialized || !this.paneContainerElement || !this.paneContainerElement.nativeElement) {\r\n            return;\r\n        }\r\n\r\n        const paneDistanceResponsiveWindow = this.getPaneDistanceResponsiveWindow();\r\n        const orientationResponsiveWindow = this.orientationResponsiveWindow;\r\n        const paneContainer = this.paneContainerElement.nativeElement;\r\n\r\n        if (this.internalIsExpanded) {\r\n            if (this.paneDistance) {\r\n                let paneDistance = this.paneDistance > paneDistanceResponsiveWindow\r\n                    ? paneDistanceResponsiveWindow : this.paneDistance;\r\n                // On phone-down, get rid of the scrollbar vertically.\r\n                if (paneDistanceResponsiveWindow === undefined) {\r\n                    paneDistance = paneDistanceResponsiveWindow;\r\n                }\r\n\r\n                if (orientationResponsiveWindow === 'top' || orientationResponsiveWindow === 'bottom') {\r\n                    paneContainer.style.height = paneDistance ? paneDistance + 'px' : '';\r\n                    paneContainer.style.width = '100%';\r\n                } else if (orientationResponsiveWindow === 'left' || orientationResponsiveWindow === 'right') {\r\n                    paneContainer.style.width = paneDistance ? paneDistance + 'px' : '';\r\n                    paneContainer.style.height = '';\r\n                }\r\n            }\r\n        } else {\r\n            if (orientationResponsiveWindow === 'top' || orientationResponsiveWindow === 'bottom') {\r\n                paneContainer.style.height = '';\r\n            } else if (orientationResponsiveWindow === 'left' || orientationResponsiveWindow === 'right') {\r\n                paneContainer.style.width = '';\r\n            }\r\n        }\r\n\r\n        this.setInternalPaneDistance();\r\n    }\r\n\r\n    /**\r\n     * Sets the pane distance that would be used for rendering the pane.\r\n     * pane's height on top, bottom layout.\r\n     * pane's width on left, right layout.\r\n     * @returns void;\r\n     */\r\n    @Debounce()\r\n    private setInternalPaneDistance(): void {\r\n        if (!this.paneContainerElement || !this.paneContainerElement.nativeElement) {\r\n            return;\r\n        }\r\n\r\n        if (!this.internalIsExpanded) {\r\n            return;\r\n        }\r\n\r\n        const orientationResponsiveWindow = this.orientationResponsiveWindow;\r\n        const paneContainer = this.paneContainerElement.nativeElement;\r\n\r\n        if (orientationResponsiveWindow === 'top' || orientationResponsiveWindow === 'bottom') {\r\n            this.paneDistance = paneContainer.offsetHeight;\r\n        } else if (orientationResponsiveWindow === 'left' || orientationResponsiveWindow === 'right') {\r\n            this.paneDistance = paneContainer.offsetWidth;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Sets the max value that the pane can grow.\r\n     * Sets pane's height value on top, bottom layout.\r\n     * Sets pane's width value on left, right layout.\r\n     * @returns void.\r\n     */\r\n    private setPaneMaxSize(): void {\r\n        if (!this.paneContainerElement || !this.paneContainerElement.nativeElement) {\r\n            return;\r\n        }\r\n\r\n        const resizeMargin: SplitViewResizerMargin = this.getSplitViewResizerMarginResponsiveWindow();\r\n        const orientationResponsiveWindow = this.orientationResponsiveWindow;\r\n        const paneContainer = this.paneContainerElement.nativeElement;\r\n\r\n        if (resizeMargin.lower === undefined && resizeMargin.upper === undefined) {\r\n            if (orientationResponsiveWindow === 'bottom' || orientationResponsiveWindow === 'top') {\r\n                paneContainer.style.minHeight = '';\r\n                paneContainer.style.maxHeight = '100%';\r\n            } else if (orientationResponsiveWindow === 'left' || orientationResponsiveWindow === 'right') {\r\n                paneContainer.style.minWidth = '';\r\n                paneContainer.style.maxWidth = '100%';\r\n            }\r\n        } else {\r\n            if (orientationResponsiveWindow === 'top' || orientationResponsiveWindow === 'bottom') {\r\n                if (!this.disabledResizeMarginResponsiveWindow) {\r\n                    paneContainer.style.minHeight = resizeMargin.lower + 'px';\r\n                    paneContainer.style.maxHeight = (this.elementReference.nativeElement.offsetHeight - resizeMargin.upper) + 'px';\r\n                }\r\n            } else if (orientationResponsiveWindow === 'left' || orientationResponsiveWindow === 'right') {\r\n                paneContainer.style.minWidth =  resizeMargin.lower + 'px';\r\n                paneContainer.style.maxWidth = (this.elementReference.nativeElement.offsetWidth - resizeMargin.upper) + 'px';\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Resets the max value that the pane can grow.\r\n     * @returns void.\r\n     */\r\n    private resetPaneMaxSize(): void {\r\n        if (!this.paneContainerElement || !this.paneContainerElement.nativeElement) {\r\n            return;\r\n        }\r\n\r\n        const paneContainer = this.paneContainerElement.nativeElement;\r\n\r\n        paneContainer.style.maxWidth = '';\r\n        paneContainer.style.maxHeight = '';\r\n    }\r\n}\r\n","import { Inject, Optional, SkipSelf } from '@angular/core';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../common/layout';\r\nimport { SmeResponsiveWindowBreakpoints, SmeResponsiveWindowData, SmeResponsiveWindowManagerComponent } from '../common/sme-responsive-window-manager.component';\r\n\r\nexport interface DataTablePresetMinWidth {\r\n    key: string;\r\n    value: number;\r\n}\r\n\r\nexport class MasterViewResponsiveWindowManager extends SmeResponsiveWindowManagerComponent {\r\n\r\n    /**\r\n     * The name of the control.\r\n     */\r\n    public readonly name = 'sme-master-view';\r\n\r\n    /**\r\n     * The parameter to determine whether to wrap the search box based on window size changes.\r\n     * On phone down and 400% zoom will wrap.\r\n     */\r\n    public searchBoxAutoWrapOnWindowSizeChanges = false;\r\n\r\n    /**\r\n     * The parameter to determine whether to show or hide the scroll bar vertically based on window size.\r\n     */\r\n    public shouldHideYScroll = false;\r\n\r\n    /**\r\n     * The parameter to determine whether to set the overflow or not based on window size.\r\n     */\r\n    public shouldDataTableParentOverflowHide = false;\r\n\r\n    /**\r\n     * The parameter to determine whether the data table will be wrapped with horizontal padding on window size.\r\n     */\r\n    public shouldDataTableSlim = false;\r\n\r\n    /**\r\n     * The parameter to determine whether to render the data table's bottom margin on window size.\r\n     */\r\n    public shouldDataTableRenderWithBottomMargin = false;\r\n\r\n    /**\r\n     * The parameter to determine the data table's min width class in string on window size.\r\n     */\r\n    public dataTableMinWidthClassString = '';\r\n\r\n    /**\r\n     * The minimum width that the data table can reach.\r\n     * This is the parameter that passed in from the master view for the hard constraint.\r\n     * Should only be set at initialization\r\n     */\r\n    private dataTablePresetMinWidth: DataTablePresetMinWidth;\r\n\r\n    /**\r\n     * This design purely won't break the original design for the class.\r\n     * Ideally we should never use the class representation.\r\n     * The values are coming from the class for sme-layout-minwidth-sm and sme-layout-minwidth-md with old design.\r\n     * For phone down, always set to sme-layout-minwidth-sm, otherwise respect the dataTablePresetMinWidth\r\n     * To make it work better on dialog. Should not have any effect on data table.\r\n    */\r\n    private dataTableMinWidthValues = {\r\n        Reflow: {\r\n            key: 'xs',\r\n            value: 100\r\n        },\r\n        PhoneDown: {\r\n            key: 'xsm',\r\n            value: 200\r\n        },\r\n        PhoneUp: {\r\n            key: 'md',\r\n            value: 450\r\n        }\r\n    };\r\n\r\n    /**\r\n     * The master view component classes on window size changed object.\r\n     */\r\n    private smeMasterViewClassList = {\r\n        phoneUp: ['sme-arrange-stack-v', 'sme-layout-absolute'],\r\n        phoneDown: ['sme-arrange-stack-v', 'sme-layout-relative'],\r\n        reflow: ['sme-arrange-stack-v', 'sme-layout-relative']\r\n    };\r\n\r\n    /**\r\n     * The data table's wrapper's classes on window size changed object.\r\n     */\r\n    private smeDataTableWrapperDivClassList = {\r\n        phoneUp: [],\r\n        phoneDown: ['sme-position-stretch-v'],\r\n        reflow: []\r\n    };\r\n\r\n    constructor(@SkipSelf() @Optional() @Inject(SME_LAYOUT_PROVIDER) layout: Layout, dataTableMaxWidth?: string) {\r\n        super(layout);\r\n        if (dataTableMaxWidth) {\r\n            const keys = Object.keys(this.dataTableMinWidthValues);\r\n            for (const key in keys) {\r\n                if (this.dataTableMinWidthValues[key].key === dataTableMaxWidth) {\r\n                    this.dataTablePresetMinWidth = this.dataTableMinWidthValues[key];\r\n                }\r\n            }\r\n        } else {\r\n            this.dataTablePresetMinWidth = this.dataTableMinWidthValues.PhoneUp;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Checks the actual window size and the preset window size.\r\n     * The intention is that the preset size cannot go beyond actual window size to prevent additional horizontal scroll bar.\r\n     * @param size the object settings for specific window size\r\n     * @returns a string representation for window size string, 'md' or 'sm'\r\n     */\r\n    public checkWindowSize(size: DataTablePresetMinWidth): string {\r\n        if (this.dataTablePresetMinWidth.value < size.value) {\r\n            return this.dataTablePresetMinWidth.key;\r\n        } else {\r\n            return size.key;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The implementation for the on window size changed event.\r\n     * @param masterViewElement the html element for the master view element.\r\n     * @returns void.\r\n     */\r\n    public onWindowSizeChanged(masterViewElement: HTMLElement, stretchToAbsolute = true): void {\r\n        if (!this.cssV2) {\r\n            return;\r\n        }\r\n\r\n        if (!masterViewElement) {\r\n            return;\r\n        }\r\n\r\n        const size = this.prevSize;\r\n\r\n        if (!size) {\r\n            return;\r\n        }\r\n\r\n        this.updateParameters(size);\r\n\r\n        const dataTableElement = masterViewElement.querySelector('sme-data-table, sme-tree-table');\r\n        let dataTableWrapperDiv;\r\n\r\n        if (dataTableElement) {\r\n            dataTableWrapperDiv = dataTableElement.parentElement;\r\n        }\r\n\r\n        if (size.phoneDown) {\r\n            if (masterViewElement && stretchToAbsolute) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeMasterViewClassList, 'phoneDown', masterViewElement);\r\n            }\r\n\r\n            if (dataTableWrapperDiv) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeDataTableWrapperDivClassList, 'phoneDown', dataTableWrapperDiv);\r\n            }\r\n        } else if (size.reflowMode) {\r\n            if (masterViewElement && stretchToAbsolute) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeMasterViewClassList, 'reflow', masterViewElement);\r\n            }\r\n\r\n            if (dataTableWrapperDiv) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeDataTableWrapperDivClassList, 'reflow', dataTableWrapperDiv);\r\n            }\r\n        } else if (size.phoneUp) {\r\n            if (masterViewElement && stretchToAbsolute) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeMasterViewClassList, 'phoneUp', masterViewElement);\r\n            }\r\n\r\n            if (dataTableWrapperDiv) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeDataTableWrapperDivClassList, 'phoneUp', dataTableWrapperDiv);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Updates the parameters used for the data table on window size changes.\r\n     * @param size the current size object for the window.\r\n     */\r\n    private updateParameters(size: SmeResponsiveWindowData) {\r\n        this.searchBoxAutoWrapOnWindowSizeChanges = size &&\r\n            (size.size === SmeResponsiveWindowBreakpoints.Reflow || size.size === SmeResponsiveWindowBreakpoints.PhoneDown);\r\n        this.shouldHideYScroll = size && size.phoneUp;\r\n        this.shouldDataTableParentOverflowHide = size && size.phoneUp;\r\n        this.shouldDataTableSlim = size && (size.phoneDown || size.reflowMode);\r\n        this.shouldDataTableRenderWithBottomMargin = size && (size.phoneDown || size.reflowMode);\r\n        this.dataTableMinWidthClassString = this.getDataTableMinWidthClassString(size);\r\n    }\r\n\r\n    /**\r\n     * Gets the data table's min-width string.\r\n     * @param size the current size object for the window.\r\n     * @returns string representing data-table's min-width\r\n     */\r\n    private getDataTableMinWidthClassString(size: SmeResponsiveWindowData): string {\r\n        switch (size?.size) {\r\n            case SmeResponsiveWindowBreakpoints.Reflow:\r\n                return this.checkWindowSize(this.dataTableMinWidthValues[SmeResponsiveWindowBreakpoints.Reflow]);\r\n            case SmeResponsiveWindowBreakpoints.PhoneDown:\r\n                return this.checkWindowSize(this.dataTableMinWidthValues[SmeResponsiveWindowBreakpoints.PhoneDown]);\r\n            case SmeResponsiveWindowBreakpoints.PhoneUp:\r\n                return this.checkWindowSize(this.dataTableMinWidthValues[SmeResponsiveWindowBreakpoints.PhoneUp]);\r\n            default:\r\n                return this.checkWindowSize(this.dataTableMinWidthValues[SmeResponsiveWindowBreakpoints.PhoneUp]);\r\n        }\r\n    }\r\n}\r\n","<h2 class=\"sme-position-flex-none sme-padding-squish-v-lg sme-arrange-word-wrap-break-word sme-font-h3\" *ngIf=\"header\"\r\n  [hidden]=\"hideHeader\" [id]='headerId'>{{ header }}</h2>\r\n<sme-layout #layout (layoutChanged)=\"updateActionBar()\">\r\n  <sme-layout-definition name=\"narrow\" [until]=\"768\"></sme-layout-definition>\r\n</sme-layout>\r\n<div *ngIf=\"enableQueryEditor\" class=\"sme-position-flex-none\" [class.sme-padding-horizontal-sm]=\"!noSideMargin\">\r\n  <!-- Query Editor -->\r\n  <ng-content select='sme-query-editor'></ng-content>\r\n</div>\r\n<div class=\"sme-position-flex-none sme-arrange-stack-reversed\" #container\r\n  [class.sme-padding-horizontal-sm]=\"!noSideMargin\"\r\n  [class.sme-arrange-stack-h]=\"!(layout.currentLayoutDefinitionName==='narrow')\">\r\n  <!-- Actions -->\r\n  <ng-content select='sme-action-bar,.action-bar'></ng-content>\r\n\r\n  <div class=\"sme-position-flex-none sme-arrange-stack-h\" [class.sme-padding-horizontal-sm]=\"!noSideMargin\"\r\n    [class.sme-padding-left-sm]=\"noSideMargin\" [class.sme-arrange-stack-wrap]=\"searchBoxAutoWrapOnWindowSizeChanges\">\r\n    <!-- Counts -->\r\n    <div\r\n      class=\"sme-focus-zone sme-position-flex-none sme-arrange-stack-h sme-arrange-ws-nowrap sme-scheme-secondary-text\"\r\n      [class.sme-padding-right-xs]=\"selectedItemCount === 0 || !showSelection\">\r\n      <i role=\"status\" [id]=\"idBag.itemCountLabel\" class=\"sme-layout-action-bar-item sme-padding-horizontal-sm\">{{\r\n        getItemCountText() }}</i>\r\n      <button type=\"button\" role=\"button\"\r\n        class=\"sme-button-trigger sme-layout-action-bar-item-height sme-scheme-secondary-text sme-button-auto-width\"\r\n        *ngIf=\"selectedItemCount > 0 && showSelection\" (click)=\"doClearSelection($event)\">\r\n        <i aria-hidden=\"true\">{{ getSelectedCountText() }}</i>\r\n        <i class=\"sme-screen-reader\">{{ getSelectedCountAriaText() }}</i>\r\n        <i aria-hidden=\"true\" class=\"sme-icon sme-icon-clear sme-margin-left-xs\"\r\n          [title]=\"resourceStrings.selectedTitle\"></i>\r\n      </button>\r\n    </div>\r\n    <!-- Common Actions -->\r\n    <div class=\"sme-focus-zone sme-arrange-ws-nowrap\">\r\n      <button *ngIf=\"showDownloadButton\" (click)=\"onDownloadButtonClicked($event)\" type=\"button\" role=\"button\"\r\n        title=\"Download\" class=\"sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width\"\r\n        [class.sme-toggled]=\"downloadActive\" data-uta-id=\"download-button\">\r\n        <span class=\"sme-icon sme-icon-download\"></span>\r\n      </button>\r\n      <button *ngIf=\"showColumnPicker\" (click)=\"columnPicker.next();\" type=\"button\" role=\"button\"\r\n        [title]=\"resourceStrings.columnPicker.title\" [attr.aria-label]=\"getFilterAriaLabel()\"\r\n        class=\"sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width\"\r\n        [class.sme-toggled]=\"columnPickerActive\" data-uta-id=\"column-picker-button\">\r\n        <span class=\"sme-icon sme-icon-tripleColumn\"></span>\r\n      </button>\r\n      <button aria-live=\"polite\" *ngIf=\"showRefresh\" [attr.aria-disabled]=\"disableRefresh\"\r\n        (click)=\"refreshButtonClicked()\" type=\"button\" role=\"button\" [title]=\"refreshTooltipText || resourceStrings.refresh.title\"\r\n        [attr.aria-label]=\"refreshTooltipText || refreshButtonAriaLabel\"\r\n        class=\"sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width\">\r\n        <span class=\"sme-icon sme-icon-refresh\"></span>\r\n      </button>\r\n      <button *ngIf=\"showFilter\" (click)=\"filter.next();\" type=\"button\" role=\"button\"\r\n        [title]=\"resourceStrings.filter.title\" [attr.aria-label]=\"getFilterAriaLabel()\"\r\n        class=\"sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width\"\r\n        [class.sme-toggled]=\"filterActive\">\r\n        <span class=\"sme-icon sme-icon-filter\"></span>\r\n      </button>\r\n      <button *ngIf=\"showGroup\" (click)=\"group.next()\" type=\"button\" role=\"button\" [title]=\"resourceStrings.group.title\"\r\n        [attr.aria-label]=\"resourceStrings.group.title\"\r\n        class=\"sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width\"\r\n        [class.sme-toggled]=\"groupActive\">\r\n        <!-- TODO: use grouping icon when available. -->\r\n        <span class=\"sme-icon sme-icon-groupedList\"></span>\r\n      </button>\r\n    </div>\r\n    <!-- Grouping (Deprecated) -->\r\n    <div class=\"sme-focus-zone\">\r\n      <div *ngIf=\"showCustomFilter\" class=\"sme-margin-horizontal-sm\">\r\n        <ng-content select='.sme-master-view-custom-filter'></ng-content>\r\n      </div>\r\n    </div>\r\n    <!-- Search Box -->\r\n    <form *ngIf=\"useSearch\" style=\"position: relative;\">\r\n      <div class=\"sme-position-flex-none sme-layout-action-bar-item\">\r\n        <ng-content select='sme-form-field[type=\"search\"]'></ng-content>\r\n      </div>\r\n    </form>\r\n  </div>\r\n</div>\r\n<div #dataView smeMasterViewContentDirective (smeDataTableFromTemplateReady)=\"onSmeDataTableFromTemplateReady()\"\r\n  [class.sme-margin-horizontal-lg]=\"shouldDataTableSlim\"\r\n  [class.sme-padding-bottom-md]=\"shouldDataTableRenderWithBottomMargin\"\r\n  [class.sme-arrange-overflow-hide]=\"shouldDataTableParentOverflowHide\"\r\n  class=\"sme-layout-relative sme-position-flex-auto sme-arrange-stack-h sme-layout-minwidth-{{dataTableMinWidthClassString}}\"\r\n  [class.sme-shadow-scrolled-content]=\"!isDataListScrolledToTop\">\r\n    <ng-content></ng-content>\r\n</div>\r\n","import {\r\n    AfterViewInit,\r\n    Component,\r\n    ContentChild,\r\n    DoCheck,\r\n    ElementRef,\r\n    EventEmitter,\r\n    forwardRef,\r\n    Inject,\r\n    Injector,\r\n    Input,\r\n    OnChanges,\r\n    OnDestroy,\r\n    OnInit,\r\n    Optional,\r\n    Output,\r\n    SimpleChanges,\r\n    SkipSelf,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { Subscription } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\nimport { ActionBarComponent } from '../actions/containers/action-bar/action-bar.component';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../common/layout';\r\nimport { SpacerBaseDirective } from '../common/spacer-base.component';\r\nimport { DataTableDownloadDataType, DataTableDownloadService } from '../data-table/data-table-download.service';\r\nimport { DataTableComponent, TreeTableComponent } from '../data-table/data-table.component';\r\nimport { SearchFormFieldComponent } from '../form/form-field/search/search-form-field.component';\r\nimport { PivotComponent } from '../pivot/pivot.component';\r\nimport { SplitViewComponent } from '../split-view/split-view.component';\r\nimport { MasterViewContentDirective } from './master-view-content/master-view-content.component';\r\nimport { MasterViewResponsiveWindowManager } from './master-view-responsive-window-manager';\r\n\r\n@Component({\r\n    selector: 'sme-master-view',\r\n    templateUrl: './master-view.component.html',\r\n    providers: [\r\n        { provide: SME_LAYOUT_PROVIDER, useExisting: forwardRef(() => MasterViewComponent) }\r\n    ]\r\n})\r\nexport class MasterViewComponent extends SpacerBaseDirective implements AfterViewInit, DoCheck, OnChanges, OnDestroy, OnInit {\r\n\r\n    /**\r\n     * Getter for data table minimum width class in string.\r\n     */\r\n    public get dataTableMinWidthClassString() {\r\n        return this.masterViewResponsiveWindowManager.dataTableMinWidthClassString;\r\n    }\r\n\r\n    /**\r\n     * Getter for whether to render the search box based on window size.\r\n     */\r\n    public get searchBoxAutoWrapOnWindowSizeChanges() {\r\n        return this.masterViewResponsiveWindowManager.searchBoxAutoWrapOnWindowSizeChanges;\r\n    }\r\n\r\n    /**\r\n     * Getter for whether to set the overflow or not based on window size.\r\n     */\r\n    public get shouldDataTableParentOverflowHide() {\r\n        return this.masterViewResponsiveWindowManager.shouldDataTableParentOverflowHide;\r\n    }\r\n\r\n    /**\r\n     * Getter for whether the table would be rendered with padding horizontally.\r\n     */\r\n    public get shouldDataTableSlim() {\r\n        return this.masterViewResponsiveWindowManager.shouldDataTableSlim;\r\n    }\r\n\r\n    /**\r\n     * Getter for whether teh table would be rendered with bottom margin.\r\n     */\r\n    public get shouldDataTableRenderWithBottomMargin() {\r\n        return this.masterViewResponsiveWindowManager.shouldDataTableRenderWithBottomMargin;\r\n    }\r\n\r\n    /**\r\n     * The localization strings object for master view.\r\n     */\r\n    public resourceStrings = this.strings.MsftSmeShell.Angular.MasterView;\r\n\r\n    /**\r\n     * The localization strings object from angular common.\r\n     */\r\n    public commonStrings = this.strings.MsftSmeShell.Angular.Common;\r\n\r\n    /**\r\n     * The content child reference for the search element.\r\n     */\r\n    @ContentChild('search')\r\n    public searchElement: SearchFormFieldComponent;\r\n\r\n    /**\r\n     * The content child reference for the action bar element.\r\n     */\r\n    @ContentChild(ActionBarComponent)\r\n    public actionBarComponent: ActionBarComponent;\r\n\r\n    /**\r\n     * The view child reference for the main content div wrapper.\r\n     */\r\n    @ViewChild('container')\r\n    public containerElement: ElementRef;\r\n\r\n    /**\r\n     * The view child reference for the main data view that normally contains a data-table component.\r\n     */\r\n    @ViewChild('dataView')\r\n    public dataView: ElementRef;\r\n\r\n    /**\r\n     * The directive component for the master view data view where normally a data-table exists.\r\n     */\r\n    @ViewChild(MasterViewContentDirective, { static: false })\r\n    public smeMasterViewContentDirective: MasterViewContentDirective;\r\n\r\n    /**\r\n     * The getter content child reference for the data-table component.\r\n     */\r\n    @ContentChild(DataTableComponent)\r\n    public get smeDataTable(): DataTableComponent {\r\n        return this.internalSmeDataTable;\r\n    }\r\n\r\n    /**\r\n     * The setter for the data table.\r\n     */\r\n    public set smeDataTable(value: DataTableComponent) {\r\n        this.internalSmeDataTable = value;\r\n        if (this.isInitialized) {\r\n            this.setupDataTableAccessibility();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The content child reference for the tree table component.\r\n     */\r\n    @ContentChild('smeTreeTable')\r\n    public smeTreeTable: TreeTableComponent;\r\n\r\n    /**\r\n     * True is to show the header.\r\n     */\r\n    @Input() public hideHeader = false;\r\n\r\n    /**\r\n     * The value of the header in string.\r\n     */\r\n    @Input() public header = '';\r\n\r\n    /**\r\n     * The total count of table items in number.\r\n     */\r\n    @Input() public total = 0;\r\n\r\n    /**\r\n     * It determines whether to show the number of selections.\r\n     */\r\n    @Input() public showSelection = true;\r\n\r\n    /**\r\n     * It determine whether to show the column picker.\r\n     */\r\n    @Input() public showColumnPicker = false;\r\n\r\n    /**\r\n     * True is to show the download button.\r\n     */\r\n    @Input() public showDownloadButton = false;\r\n\r\n    /**\r\n     * It determines whether extra context parameter will be used for the download.\r\n     * This usually associates with the 'download' emitter.\r\n     */\r\n    @Input() public getDownloadContextParameters = false;\r\n\r\n    /**\r\n     * It determines the state when the column picker dialog is opened.\r\n     */\r\n    @Input() public columnPickerActive = false;\r\n\r\n    /**\r\n     * It determines whether to show the refresh button.\r\n     */\r\n    @Input() public showRefresh = true;\r\n\r\n    /**\r\n     * It determines whether to disable the refresh button.\r\n     */\r\n    @Input() public disableRefresh = false;\r\n\r\n    /**\r\n     * It determines the data table min width level.\r\n     */\r\n    @Input() public dataTableMinWidth = 'md';\r\n\r\n    /**\r\n     * It determines whether to show the filter button.\r\n     */\r\n    @Input() public showFilter = true;\r\n\r\n    /**\r\n     * It determines whether the filter dialog is opened.\r\n     */\r\n    @Input() public filterActive = false;\r\n\r\n    /**\r\n     * It determines there is a worker downloading in progress.\r\n     */\r\n    @Input() public downloadActive = false;\r\n\r\n    /**\r\n     * It determines whether to show up the query editor extension.\r\n     */\r\n    @Input() public enableQueryEditor = false;\r\n\r\n    /**\r\n     * Setter for the selection count for the data-table.\r\n     */\r\n    @Input() public set selection(selection: any) {\r\n        let count = 0;\r\n        if (Array.isArray(selection)) {\r\n            count = selection.length;\r\n        } else if (!!selection) {\r\n            count = 1;\r\n        }\r\n        this.selectedItemCount = count;\r\n    }\r\n\r\n    /**\r\n     * The event emitter when selection(s) changed.\r\n     */\r\n    @Output()\r\n    public selectionChange = new EventEmitter<any>();\r\n\r\n    /**\r\n     * It determines whether the data-table should respect the same item as two different rows.\r\n     */\r\n    @Input()\r\n    public requireDataItemUniqueId: (item: any) => string;\r\n\r\n    /**\r\n     * @deprecated since 7/13/18. Please use [showGroup], [groupActive], and (group) instead\r\n     */\r\n    @Input()\r\n    public set showCustomFilter(value: boolean) {\r\n        this.internalShowCustomFilter = value;\r\n    }\r\n    public get showCustomFilter(): boolean {\r\n        return this.internalShowCustomFilter;\r\n    }\r\n\r\n    private internalShowCustomFilter: boolean;\r\n\r\n    /**\r\n     * It determines the group button has been clicked.\r\n     */\r\n    @Input() public groupActive = false;\r\n\r\n    /**\r\n     * If the value is false, the master view always renders in relative layout regardless of window size changes.\r\n     */\r\n    @Input()\r\n    public stretchToAbsolute = true;\r\n\r\n    /**\r\n     * It determines whether to expand the details pane on first time landing on the page.\r\n     */\r\n    @Input()\r\n    public autoExpandDetailsPane = true;\r\n\r\n    /**\r\n     * It determines whether to show up the group button.\r\n     */\r\n    @Input()\r\n    public showGroup?: boolean;\r\n\r\n    /**\r\n     * It determines the download data type.\r\n     */\r\n    @Input()\r\n    public downloadDataType: DataTableDownloadDataType = DataTableDownloadDataType.CSV;\r\n\r\n    /**\r\n     * Used to set the tooltip text for the refresh button\r\n     */\r\n    @Input()\r\n    public refreshTooltipText: string;\r\n\r\n    /**\r\n     * The event emitter for download has been prompted.\r\n     */\r\n    @Output()\r\n    public downloadPrompted: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * The event emitter for when the download has been finished.\r\n     */\r\n    @Output()\r\n    public downloadFinished: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * The event emitter for the column picker to render a dialog.\r\n     */\r\n    @Output()\r\n    public columnPicker: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * The event emitter for the refreshing function to happen.\r\n     */\r\n    @Output()\r\n    public refresh: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * The event emitter for the filter dialog to open.\r\n     */\r\n    @Output()\r\n    public filter: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * The event emitter for the grouping dialog to open.\r\n     */\r\n    @Output()\r\n    public group: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * The event emitter for the clear selection from the table to happen.\r\n     */\r\n    @Output()\r\n    public clearSelection: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * The event emitter for when the data-view has been ready after ngAfterViewInit life cycle.\r\n     */\r\n    @Output()\r\n    public smeDataTableFromTemplateReady: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n    /**\r\n     * It implements the ILayout interface. It's triggered when the layout is changed.\r\n     * It's used to tell the child components to coordinate with the layout change.\r\n    */\r\n    @Output()\r\n    public layoutChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * Implementation of the Layout interface\r\n     */\r\n    @Output()\r\n    public windowBreakpointChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    public useSearch = false;\r\n    public selectedItemCount = 0;\r\n    public dataViewHeight = 0;\r\n    public isDataListScrolledToTop = true;\r\n    public headerId: string;\r\n    public refreshButtonAriaLabel: string;\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'MasterViewComponent';\r\n    }\r\n\r\n    private splitViewPaneToggledSubscription: Subscription;\r\n    private dataTableOnFilterSubscription: Subscription;\r\n    private masterViewResponsiveWindowManager: MasterViewResponsiveWindowManager;\r\n    private isInitialized = false;\r\n    private currentDataSelection: any;\r\n    private internalSmeDataTable: DataTableComponent;\r\n\r\n    constructor(\r\n        injector: Injector,\r\n        public hostElement: ElementRef,\r\n        @Optional() private dataTableDownloadService: DataTableDownloadService,\r\n        @Optional() private splitView: SplitViewComponent,\r\n        @Optional() private pivotComponent: PivotComponent,\r\n        @SkipSelf() @Optional() @Inject(SME_LAYOUT_PROVIDER) layout: Layout\r\n    ) {\r\n        // After the discussion, the plan is still have master view to coordinate with split view as well as tree table and data table.\r\n        // It's a little tricky to let master view to talk to its parent which is the split view.\r\n        // But we do need a component to implement the common behavior on the UI to avoid duplicate code in each tool.\r\n        // At this moment, master view is the most proper component.\r\n        // Long term wise, we will figure out a better component sitting in the top level of the UI to coordinate with other components\r\n        // and implement common behaviors.\r\n        super(injector);\r\n        // setup host classes\r\n        this.addClass('sme-arrange-stack-v');\r\n        this.addClass('sme-arrange-overflow-hide-y');\r\n        this.addClass('sme-arrange-overflow-auto-x');\r\n        this.headerId = 'master-view-header' + this.componentId;\r\n\r\n        if (layout) {\r\n            this.masterViewResponsiveWindowManager = new MasterViewResponsiveWindowManager(layout);\r\n            // on parent layout changes, re-emit the layout change to our event\r\n            this.subscriptions.push(layout.layoutChanged.subscribe((() => this.onLayoutChanged())));\r\n            // on window break point changes, emit the event about critical classes and styling updates signal.\r\n            this.subscriptions.push(layout.windowBreakpointChanged.subscribe(() => this.onWindowBreakpointChanged()));\r\n\r\n            this.deferredOnLayoutChanged();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The method to run after the component view initialized\r\n     */\r\n    public ngAfterViewInit(): void {\r\n        setTimeout(() => {\r\n            // The \"ngAfterViewInit\" is still in current check cycle so we should not update the following UI information immediately.\r\n            // So we use setTimeout to defer the following operations to next check cycle.\r\n            this.useSearch = !!this.searchElement;\r\n            this.updateLayout();\r\n        });\r\n\r\n        if (this.splitView) {\r\n            this.splitViewPaneToggledSubscription = this.splitView.paneToggled.subscribe(() => {\r\n                if (this.dataView && this.dataViewHeight !== this.dataView.nativeElement.clientHeight) {\r\n                    this.updateLayout();\r\n                }\r\n            });\r\n        }\r\n\r\n        if (this.smeDataTable) {\r\n            this.dataTableOnFilterSubscription = this.smeDataTable.filter.subscribe(() => {\r\n                if (this.smeDataTable.selection) {\r\n                    let shouldClearSelection = true;\r\n                    if (!this.requireDataItemUniqueId) {\r\n                        if (this.smeDataTable.renderedItems.indexOf(this.smeDataTable.selection) !== -1) {\r\n                            shouldClearSelection = false;\r\n                        }\r\n                    } else {\r\n                        const selectedItemId = this.requireDataItemUniqueId(this.smeDataTable.selection);\r\n                        for (let i = 0; i < this.smeDataTable.renderedItems.length; i++) {\r\n                            const item = this.smeDataTable.renderedItems[i];\r\n                            const itemId = this.requireDataItemUniqueId(item);\r\n                            if (itemId === selectedItemId) {\r\n                                shouldClearSelection = false;\r\n                                break;\r\n                            }\r\n                        }\r\n                    }\r\n\r\n                    if (shouldClearSelection) {\r\n                        this.clearSelection.emit();\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.isInitialized = true;\r\n\r\n        if (this.stretchToAbsolute) {\r\n            this.addClass('sme-layout-absolute-phone-up');\r\n            this.addClass('sme-position-inset-none');\r\n        }\r\n\r\n        this.setupDataTableAccessibility();\r\n        if (this.header) {\r\n            this.refreshButtonAriaLabel = this.resourceStrings.refresh.ariaLabel.header.format(this.header);\r\n        } else {\r\n            this.refreshButtonAriaLabel = this.resourceStrings.refresh.ariaLabel.noHeader;\r\n        }\r\n    }\r\n\r\n    // Note: this is a bandaid fix to this bug: https://microsoft.visualstudio.com/OS/_workitems/edit/33031791/.\r\n    // The screen reader doesn't announce when aria-disabled changes and the exact reason for that is unknown.\r\n    // It's not best practice to be adjusting the aria-label to achieve the effect but that's the best we came up with.\r\n    // TODO: fix the real issue why the screen reader doesn't announce the aria-disabled changes\r\n    public ngOnChanges(changes: SimpleChanges): void {\r\n        let refreshButtonLabel = this.resourceStrings.refresh.ariaLabel.noHeader;\r\n\r\n        if (this.header) {\r\n            refreshButtonLabel = this.resourceStrings.refresh.ariaLabel.header.format(this.header);\r\n        }\r\n\r\n        if (changes.disableRefresh?.currentValue === true) {\r\n            this.refreshButtonAriaLabel = `${this.commonStrings.disabled} ${refreshButtonLabel}`;\r\n        } else {\r\n            this.refreshButtonAriaLabel = `${this.commonStrings.enabled} ${refreshButtonLabel}`;\r\n        }\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        if (this.splitView && this.splitViewPaneToggledSubscription) {\r\n            this.splitViewPaneToggledSubscription.unsubscribe();\r\n        }\r\n\r\n        if (this.smeDataTable && this.dataTableOnFilterSubscription) {\r\n            this.dataTableOnFilterSubscription.unsubscribe();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Emit the event from the master view for the readiness of the templates passed in to the master view content.\r\n     * This can better handling the rendering life cycle from child to parent.\r\n     */\r\n    public onSmeDataTableFromTemplateReady(): void {\r\n        this.smeDataTableFromTemplateReady.emit();\r\n    }\r\n\r\n    /**\r\n     * The on window breakpoint changed handler.\r\n     * Adding yield for component to get ElementRef after initialization.\r\n     */\r\n    @Yield()\r\n    private onLayoutChanged(): void {\r\n        this.updateLayout();\r\n    }\r\n\r\n    /**\r\n     * The deferred layout changed handler.\r\n     */\r\n    @Debounce()\r\n    private deferredOnLayoutChanged(): void {\r\n        this.onLayoutChanged();\r\n    }\r\n\r\n    /**\r\n     * The implementation after interaction with the download button from the master view.\r\n     * @param $event the button clicked event.\r\n     */\r\n    public onDownloadButtonClicked($event): void {\r\n        if (!$event || this.downloadActive || this.smeDataTable && this.smeDataTable.isBusy) {\r\n            return;\r\n        }\r\n\r\n        $event.preventDefault();\r\n\r\n        this.downloadActive = true;\r\n\r\n        this.downloadPrompted.next();\r\n\r\n        if (!this.smeDataTable || !this.smeDataTable.items) {\r\n            Logging.log({\r\n                level: LogLevel.Warning,\r\n                message: `Data table is not detected in the master view, custom template may be used.`,\r\n                source: 'MasterViewComponent.onDownloadButtonClicked()'\r\n            });\r\n\r\n            return;\r\n        }\r\n\r\n        if (!this.getDownloadContextParameters) {\r\n            this.onDownloadPrompted();\r\n        }\r\n\r\n        this.downloadFinished.next();\r\n    }\r\n\r\n    /**\r\n     * The function for executing the download context from data-table.\r\n     * @param contextParameters the context parameter passed in from extension from outer scope.\r\n     */\r\n    public onDownloadPrompted(contextParameters?: any): void {\r\n        try {\r\n            this.dataTableDownloadService.downloadDataFinished.pipe(take(1)).subscribe(() => {\r\n                this.downloadActive = false;\r\n            });\r\n            this.dataTableDownloadService.downloadData(this.smeDataTable, this.downloadDataType, contextParameters);\r\n        } catch (error) {\r\n            Logging.log({\r\n                level: LogLevel.Error,\r\n                message: `Failed to download '${error}'`,\r\n                source: 'MasterViewComponent.onDownloadButtonClicked()'\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The on window breakpoint changed handler.\r\n     * Adding yield for component to get ElementRef after initialization.\r\n     */\r\n    public onWindowBreakpointChanged(): void {\r\n        this.masterViewResponsiveWindowManager.onWindowSizeChanged(this.hostElement?.nativeElement, this.stretchToAbsolute);\r\n    }\r\n\r\n    /**\r\n     * It updates the master view's layout and emits layout changed event to children.\r\n     */\r\n    public updateLayout(): void {\r\n        if (!this.dataView || !this.dataView.nativeElement) {\r\n            return;\r\n        }\r\n\r\n        this.dataViewHeight = this.dataView.nativeElement.clientHeight;\r\n\r\n        this.removeClass('sme-arrange-overflow-hide-y');\r\n        if (this.masterViewResponsiveWindowManager.shouldHideYScroll) {\r\n            this.addClass('sme-arrange-overflow-hide-y');\r\n        }\r\n\r\n        this.layoutChanged.emit();\r\n    }\r\n\r\n    public ngDoCheck(): void {\r\n        if (this.autoExpandDetailsPane) {\r\n            if (this.smeDataTable) {\r\n                this.handleDetailPaneExpanding(this.smeDataTable);\r\n            } else if (this.smeTreeTable) {\r\n                this.handleDetailPaneExpanding(this.smeTreeTable);\r\n            }\r\n        }\r\n    }\r\n\r\n    public doClearSelection(event: MouseEvent): void {\r\n        const next = Dom.getNextZoneElement(<HTMLElement>event.target);\r\n        if (next) {\r\n            next.focus();\r\n        }\r\n        this.clearSelection.next();\r\n    }\r\n\r\n    /**\r\n     * Gets the item count in string.\r\n     * @returns string value for the total count.\r\n     */\r\n    public getItemCountText(): string {\r\n        return this.total === 1 ? this.resourceStrings.oneItem : this.resourceStrings.items.format(this.total);\r\n    }\r\n\r\n    /**\r\n     * Gets selected item count in string.\r\n     * @returns string value for the selected count.\r\n     */\r\n    public getSelectedCountText(): string {\r\n        return this.resourceStrings.selected.format(this.selectedItemCount);\r\n    }\r\n\r\n    /**\r\n     * Gets selected item count in string for aria support.\r\n     * @returns string value for the selected count.\r\n     */\r\n    public getSelectedCountAriaText(): string {\r\n        return this.resourceStrings.selectedAria.format(this.selectedItemCount);\r\n    }\r\n\r\n    /**\r\n     * Gets filter item count in string for aria support.\r\n     * @returns string value for the filtered count.\r\n     */\r\n    public getFilterAriaLabel(): string {\r\n        return `${this.resourceStrings.filter.title} ${this.total ? this.resourceStrings.results.format(this.total) :\r\n            this.resourceStrings.results.format(0)}`;\r\n    }\r\n\r\n    public getColumnPickerAriaLabel(): string {\r\n        return `${this.resourceStrings.columnPicker.title} ${this.total\r\n            ? this.resourceStrings.results.format(this.total) : this.resourceStrings.results.format(0)}`;\r\n    }\r\n\r\n    /**\r\n     * Update the action bar\r\n     */\r\n    public updateActionBar(): void {\r\n        if (this.actionBarComponent) {\r\n            this.actionBarComponent.updateActionBar();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Handles clicking on the refresh button\r\n     */\r\n    public refreshButtonClicked(): void {\r\n        if (this.disableRefresh) {\r\n            return;\r\n        }\r\n\r\n        this.refresh.next();\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this master view to store unique element ids.\r\n     * id values will be assigned be the @see MasterViewComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            filterLabel: '',\r\n            columnPickerLabel: '',\r\n            itemCountLabel: ''\r\n        };\r\n    }\r\n\r\n    private handleDetailPaneExpanding(dataViewControl: DataTableComponent): void {\r\n        if (this.splitView) {\r\n            let newDataSelection = null;\r\n            newDataSelection = dataViewControl.renderedItems[dataViewControl.getActiveRenderedItemIndex()];\r\n\r\n            const hasItemSelected = !!newDataSelection;\r\n\r\n            if (hasItemSelected && newDataSelection !== this.currentDataSelection) {\r\n                if (!this.currentDataSelection || this.currentDataSelection.length === 0) {\r\n                    setTimeout(() => {\r\n                        if (!this.splitView.isExpanded) {\r\n                            this.splitView.togglePane();\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n\r\n            this.currentDataSelection = newDataSelection;\r\n        }\r\n    }\r\n\r\n    private setupDataTableAccessibility(): void {\r\n        if (this.internalSmeDataTable) {\r\n            if (this.header) {\r\n                this.internalSmeDataTable.tableAriaLabelledBy = this.headerId;\r\n            } else if (this.pivotComponent) {\r\n                const selectedTab = this.pivotComponent.tabs.toArray().filter(item => this.pivotComponent.isSelected(item))[0];\r\n                if (selectedTab) {\r\n                    this.internalSmeDataTable.tableAriaLabel = selectedTab.label;\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { DataTableDownloadService } from '../data-table/data-table-download.service';\r\nimport { LayoutModule } from '../layout/layout.module';\r\nimport { PivotModule } from '../pivot/pivot.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { MasterViewContentModule } from './master-view-content/master-view-content.module';\r\nimport { MasterViewComponent } from './master-view.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        MasterViewComponent\r\n    ],\r\n    declarations: [\r\n        MasterViewComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        LayoutModule,\r\n        MasterViewContentModule,\r\n        PivotModule,\r\n        TooltipModule\r\n    ],\r\n    providers: [\r\n        DataTableDownloadService\r\n    ]\r\n})\r\nexport class MasterViewModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { ActiveDirectory } from '@microsoft/windows-admin-center-sdk/core/data/active-directory/active-directory';\r\nimport { GatewayService } from '../../service/gateway.service';\r\n\r\n@Injectable()\r\n/**\r\n * The Active Directory service class.\r\n */\r\nexport class ActiveDirectoryService extends ActiveDirectory {\r\n    /**\r\n     * Initializes a new instance of the ActiveDirectoryService class.\r\n     *\r\n     * @param http the Http object.\r\n     * @param rpcService the RPC service.\r\n     */\r\n    constructor(gateway: GatewayService) {\r\n        super(gateway);\r\n    }\r\n}\r\n","import { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { ColumnPickerDialogResponseParameters, DataTableColumn } from '@microsoft/windows-admin-center-sdk/core/data/column-picker';\r\nimport { DataTableComponent } from '../data-table.component';\r\n\r\nexport class DataTableColumnPickerExtension {\r\n    constructor(private dataTable: DataTableComponent) { }\r\n\r\n    public applyColumnPickerChange(result: ColumnPickerDialogResponseParameters) {\r\n        if (result.chooseColumnData || result.groupByColumnData) {\r\n            const chooseColumnData = result.chooseColumnData;\r\n            const groupByColumnData = result.groupByColumnData;\r\n            if (chooseColumnData && chooseColumnData.length > 0) {\r\n                const unselected = [];\r\n                if (this.dataTable && this.dataTable.columns && this.dataTable.columns.length > 0) {\r\n                    const columns = this.dataTable.columns.toArray().map(item => item.field);\r\n                    for (let i = 0; i < columns.length; i++) {\r\n                        if (!chooseColumnData.includes(columns[i])) {\r\n                            unselected.push(columns[i]);\r\n                        }\r\n                    }\r\n                    this.dataTable.columns.map((item) => {\r\n                        item.hidden = false;\r\n                        if (unselected.includes(item.field)) {\r\n                            item.hidden = true;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            this.onGroupColumnChanged(groupByColumnData);\r\n            this.dataTable.processColumnsByOrder(chooseColumnData);\r\n            this.refreshDataTable();\r\n        }\r\n    }\r\n\r\n    public onGroupColumnChanged(input: string): void {\r\n        if (this.dataTable) {\r\n            const column = this.dataTable.columns.filter(currentColumn => currentColumn.field === input)[0];\r\n            this.dataTable.groupColumn = column;\r\n            this.dataTable.isColumnWidthCalculated = false;\r\n            if (column) {\r\n                if (!this.dataTable.useGroupToggle) {\r\n                    this.dataTable.useGroupToggle = true;\r\n                }\r\n                if (!this.dataTable.defaultGroupToggleExpanded) {\r\n                    this.dataTable.defaultGroupToggleExpanded = true;\r\n                }\r\n            } else {\r\n                this.dataTable.useGroupToggle = undefined;\r\n                this.dataTable.defaultGroupToggleExpanded = undefined;\r\n            }\r\n        }\r\n    }\r\n\r\n    @Debounce()\r\n    public refreshDataTable() {\r\n        if (this.dataTable) {\r\n            this.dataTable.refreshData();\r\n        }\r\n    }\r\n\r\n    public mapColumn(): Array<DataTableColumn> {\r\n        const allColumns = this.dataTable.columns ? this.dataTable.columns.toArray() : [];\r\n        const dataTableAllColumns: Array<DataTableColumn> = allColumns.map((item) => {\r\n            return {\r\n                'utaId': item.utaId,\r\n                'field': item.field,\r\n                'header': item.header,\r\n                'hidden': item.hidden,\r\n                'queryEditorType': item.queryEditorType,\r\n                'searchable': item.searchable,\r\n                'sortMode': item.sortMode,\r\n                'sortable': item.sortable\r\n            };\r\n        });\r\n        return dataTableAllColumns;\r\n    }\r\n}\r\n","<sme-form-field-layout [formField]=\"this\">\r\n  <p *ngIf=\"!isGatewayDomainJoined\">{{notAvailableMessage}}</p>\r\n  <div *ngIf=\"isGatewayDomainJoined\" class=\"sme-arrange-stack-v sme-layout-absolute-phone-up sme-position-inset-none\">\r\n    <div class=\"sme-layout-relative sme-position-flex-none sme-padding-top-sm sme-arrange-stack-h\">\r\n      <input class=\"sme-position-flex-auto\" type=\"text\"  [(ngModel)]=\"searchString\" [placeholder]=\"searchPlaceHolder\"\r\n        [autofocus]=\"autofocus\" [attr.aria-label]=\"searchPlaceHolder\" (keydown.enter)=\"searchFromActiveDirectory()\">\r\n      <button #searchButton type=\"button\" class=\"sme-layout-relative sme-position-left-xs sme-layout-inline-block sme-button-primary\"\r\n        [disabled]=\"!searchString || searchingAdInProgress\" (click)=\"searchFromActiveDirectory()\">{{searchButtonLabel}}</button>\r\n      <sme-loading-wheel *ngIf=\"searchingAdInProgress\" size=\"medium\" [message]=\"searchActiveDirectoryMessage\"></sme-loading-wheel>\r\n    </div>\r\n    <sme-alert *ngIf=\"directorySearchError\" [alert]=\"directorySearchError\"></sme-alert>\r\n    <sme-master-view *ngIf=\"showAccountList\" class=\"sme-layout-relative-all-screens sme-position-flex-auto\" [showGroup]=\"false\" [showFilter]=\"false\"\r\n      [showRefresh]=\"false\" [selection]=\"value\" [total]=\"smeDataTable.renderedItems.length\" (clearSelection)=\"value=[]\"\r\n      dataTableMinWidth=\"sm\">\r\n      <sme-data-table #smeDataTable [items]=\"accounts\" selectionMode=\"{{selectionMode}}\" [(selection)]=\"value\" [scrollable]=\"true\"\r\n        [defaultSortColumn]=\"defaultSortColumn\" [defaultSortMode]=\"1\">\r\n        <sme-data-table-column #defaultSortColumn field=\"name\" header=\"{{resultNameColumnHeader}}\" sortable=\"true\"></sme-data-table-column>\r\n        <sme-data-table-column field=\"type\" header=\"{{resultTypeColumnHeader}}\" sortable=\"true\"></sme-data-table-column>\r\n        <sme-data-table-column field=\"loginName\" header=\"{{resultLoginNameColumnHeader}}\" sortable=\"true\"></sme-data-table-column>\r\n      </sme-data-table>\r\n    </sme-master-view>\r\n    <sme-alert *ngIf=\"showSizeLimitWarning\" [alert]=\"directorySearchSizeLimitWarning\"></sme-alert>\r\n  </div>\r\n</sme-form-field-layout>\r\n","import { Component, ElementRef, Injector, Input, OnDestroy, ViewChild } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { AccountInfo } from '@microsoft/windows-admin-center-sdk/core/data/active-directory/models/account-info';\r\nimport { ActiveDirectorySearchOptions } from '@microsoft/windows-admin-center-sdk/core/data/active-directory/models/active-directory-search-options';\r\nimport { SearchType } from '@microsoft/windows-admin-center-sdk/core/data/active-directory/models/search-type';\r\nimport { Net } from '@microsoft/windows-admin-center-sdk/core/data/net';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { Subscription } from 'rxjs';\r\nimport { AjaxError } from 'rxjs/ajax';\r\nimport { DataTableMultipleSelectMode } from '../../data-table';\r\nimport { SmeInternalFormFieldComponent } from '../../form/form-field/form-field.component';\r\nimport { ValidationAlert, ValidationAlertSeverity } from '../../form/validation-alert/validation-alert';\r\nimport { ActiveDirectoryService } from '../active-directory.service';\r\n\r\n/**\r\n * Form field for selecting ad objects from a search query\r\n */\r\n@Component({\r\n    selector: 'sme-form-field[type=\"adSearch\"]',\r\n    templateUrl: './active-directory-search-form-field.component.html'\r\n})\r\nexport class ActiveDirectorySearchFormFieldComponent extends SmeInternalFormFieldComponent<AccountInfo[]> implements OnDestroy {\r\n    public searchingAdInProgress: boolean;\r\n    public searchActiveDirectoryMessage: string;\r\n    public showAccountList: boolean;\r\n    public showSizeLimitWarning: boolean;\r\n    public accounts: AccountInfo[];\r\n    public isGatewayDomainJoined: boolean;\r\n\r\n    @ViewChild('searchButton')\r\n    public searchButtonRef: ElementRef;\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'ActiveDirectorySearchFormFieldComponent';\r\n    }\r\n\r\n    /**\r\n     * Indicates that multiple selections are allowed\r\n     * Default is true\r\n     */\r\n    @Input()\r\n    public multiple = true;\r\n\r\n    /**\r\n     * The text message for the Active Directory is not available.\r\n     * In not provide, use the default one\r\n     * @example \"Search in Active Directory is not available\"\r\n     */\r\n    @Input()\r\n    public notAvailableMessage?: string;\r\n\r\n    /**\r\n     * The text for the search button in the control.\r\n     * @example \"Search\"\r\n     */\r\n    @Input()\r\n    public searchButtonLabel?: string;\r\n\r\n    /**\r\n     * The place holder in search text box.\r\n     * @example enter any text for computer, user or group\r\n     */\r\n    @Input()\r\n    public searchPlaceHolder?: string;\r\n\r\n    /**\r\n     * The text for the search result table Name column.\r\n     * @example \"Name\"\r\n     */\r\n    @Input()\r\n    public resultNameColumnHeader?: string;\r\n\r\n    /**\r\n     * The text for the search result table Type column.\r\n     * @example \"Type\"\r\n     */\r\n    @Input()\r\n    public resultTypeColumnHeader?: string;\r\n\r\n    /**\r\n     * The text for the search result table Type column.\r\n     * @example \"Login Name\"\r\n     */\r\n    public resultLoginNameColumnHeader?: string;\r\n\r\n    /**\r\n     * The type of search class&category.\r\n     * @example SearchType.Computer\r\n     */\r\n    @Input()\r\n    public searchOn?: SearchType | string;\r\n\r\n    public searchString;\r\n\r\n    public directorySearchSizeLimitWarning: ValidationAlert;\r\n    public directorySearchError: ValidationAlert = null;\r\n\r\n    public get selectionMode(): string {\r\n        return this.multiple ? DataTableMultipleSelectMode.Multiple : DataTableMultipleSelectMode.Single;\r\n    }\r\n\r\n    /**\r\n     * Tracking member for ad search\r\n     */\r\n    private searchADSubscription: Subscription;\r\n\r\n    /**\r\n     * Initializes a new instance of the ActiveDirectoryFormFieldFormFieldComponent\r\n     */\r\n    constructor(injector: Injector, public ADService: ActiveDirectoryService) {\r\n        super(injector);\r\n        this.searchOn = SearchType.Any;\r\n        this.searchButtonLabel = this.strings.MsftSmeShell.Angular.ActiveDirectoryFormField.Button.Search.Label;\r\n        this.searchPlaceHolder = this.strings.MsftSmeShell.Angular.ActiveDirectoryFormField.Button.Search.PlaceHolder;\r\n        this.resultNameColumnHeader = this.strings.MsftSmeShell.Angular.ActiveDirectoryFormField.ResultTable.NameColumnHeader;\r\n        this.resultTypeColumnHeader = this.strings.MsftSmeShell.Angular.ActiveDirectoryFormField.ResultTable.TypeColumnHeader;\r\n        this.resultLoginNameColumnHeader = this.strings.MsftSmeShell.Angular.ActiveDirectoryFormField.ResultTable.LoginNameColumnHeader;\r\n        this.notAvailableMessage = this.strings.MsftSmeShell.Angular.ActiveDirectoryFormField.ActiveDirectorySearchNotAvailable.message;\r\n        this.searchActiveDirectoryMessage = '';\r\n        this.searchString = '';\r\n        this.searchingAdInProgress = false;\r\n        this.showAccountList = false;\r\n        this.showSizeLimitWarning = false;\r\n        this.accounts = [];\r\n        this.directorySearchSizeLimitWarning = {\r\n            message: '',\r\n            severity: ValidationAlertSeverity.Warning\r\n        };\r\n        this.subscriptions.push(this.ADService.isGatewayDomainJoined.subscribe(domainJoined => this.isGatewayDomainJoined = domainJoined));\r\n    }\r\n\r\n    public ngOnDestroy() {\r\n        super.ngOnDestroy();\r\n        if (this.searchADSubscription && !this.searchADSubscription.closed) {\r\n            this.searchADSubscription.unsubscribe();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * search computer list from active directory through gateway api\r\n     */\r\n    @Debounce()\r\n    public searchFromActiveDirectory() {\r\n        // initial values\r\n        this.showAccountList = false;\r\n        this.showSizeLimitWarning = false;\r\n        this.searchingAdInProgress = true;\r\n        this.directorySearchError = null;\r\n        this.accounts = [];\r\n        const searchStr = this.searchString;\r\n        this.searchActiveDirectoryMessage =\r\n            this.strings.MsftSmeShell.Angular.ActiveDirectoryFormField.Search.Progress.format(searchStr);\r\n\r\n        if (this.searchADSubscription && !this.searchADSubscription.closed) {\r\n            this.searchADSubscription.unsubscribe();\r\n        }\r\n\r\n        const options: ActiveDirectorySearchOptions = {\r\n            searchString: searchStr,\r\n            searchOn: this.searchOn,\r\n            sizeLimit: this.ADService.defaultDirectorySearchSizeLimit\r\n        };\r\n\r\n        this.searchADSubscription = this.ADService.search(options).subscribe({\r\n            next: (response: AccountInfo[]) => {\r\n                if (response.length > 0) {\r\n                    this.accounts = response;\r\n                    this.showSizeLimitWarning = response.length === options.sizeLimit;\r\n                    if (this.showSizeLimitWarning) {\r\n                        const format = this.strings.MsftSmeShell.Angular.ActiveDirectoryFormField.SizeLimit.Warning;\r\n                        this.directorySearchSizeLimitWarning.message = format.format(options.sizeLimit);\r\n                    }\r\n                }\r\n                this.showAccountList = true;\r\n                this.searchingAdInProgress = false;\r\n                this.yieldFocusOnSearchButton();\r\n            },\r\n            error: (error: AjaxError) => {\r\n                this.directorySearchError = {\r\n                    message: this.strings.MsftSmeShell.Angular.ActiveDirectoryFormField.Error.message\r\n                        .format(searchStr, Net.getErrorMessage(error)),\r\n                    severity: ValidationAlertSeverity.Error\r\n                };\r\n                this.showAccountList = false;\r\n                this.searchingAdInProgress = false;\r\n                this.yieldFocusOnSearchButton();\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: ''\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Focus on search button\r\n     */\r\n    @Yield()\r\n    private yieldFocusOnSearchButton() {\r\n        if (this.searchButtonRef && Dom.isFocusable(this.searchButtonRef.nativeElement)) {\r\n            this.searchButtonRef.nativeElement.focus();\r\n        }\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AutofocusModule } from '../../directives/autofocus/autofocus.module';\r\nimport { DisabledModule } from '../../directives/disabled/disabled.module';\r\nimport { DataTableModule } from '../data-table/data-table.module';\r\nimport { SmeFormsModule } from '../form/forms.module';\r\nimport { LoadingWheelModule } from '../loading-wheel/loading-wheel.module';\r\nimport { MasterViewModule } from '../master-view/master-view.module';\r\nimport { ActiveDirectoryService } from './active-directory.service';\r\nimport { ActiveDirectorySearchFormFieldComponent } from './search-form-field/active-directory-search-form-field.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        ActiveDirectorySearchFormFieldComponent\r\n    ],\r\n    imports: [\r\n        AutofocusModule,\r\n        CommonModule,\r\n        DataTableModule,\r\n        DisabledModule,\r\n        FormsModule,\r\n        LoadingWheelModule,\r\n        MasterViewModule,\r\n        SmeFormsModule\r\n    ],\r\n    exports: [\r\n        ActiveDirectorySearchFormFieldComponent\r\n    ]\r\n})\r\nexport class ActiveDirectoryModule {\r\n    /**\r\n     * Angular convention for singleton services.\r\n     * @see https://angular.io/guide/singleton-services\r\n     */\r\n    public static forRoot(): ModuleWithProviders<ActiveDirectoryModule> {\r\n        return {\r\n            ngModule: ActiveDirectoryModule,\r\n            providers: [\r\n                ActiveDirectoryService\r\n            ]\r\n        };\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NotificationState } from '@microsoft/windows-admin-center-sdk/core/notification/notification-state';\r\nimport { AppContextService } from '../../service/app-context.service';\r\n\r\n/**\r\n * The typed interface for an alert.\r\n */\r\nexport interface Alert {\r\n    /**\r\n     * The links to include on the alert.\r\n     */\r\n    links?: AlertLink[];\r\n\r\n    /**\r\n     * The message of the alert.\r\n     */\r\n    message: string;\r\n\r\n    /**\r\n     * The severity of the alert.\r\n     */\r\n    severity: AlertSeverity;\r\n\r\n    /**\r\n     * The title of the alert.\r\n     */\r\n    title?: string;\r\n\r\n    /**\r\n     * true if the alert message is expanded\r\n     */\r\n    isExpanded?: boolean;\r\n\r\n    /**\r\n     * True if message content exceeds the specified number of lines\r\n     */\r\n    needsClamp?: boolean;\r\n\r\n    /**\r\n     * the formatted timestamp string\r\n     */\r\n    timestamp?: string;\r\n\r\n    /**\r\n     * the name of the node\r\n     */\r\n    nodeName?: string;\r\n\r\n    /**\r\n     * the id of the alert\r\n     */\r\n    id?: string;\r\n\r\n    /**\r\n     * setTimeout dismiss object.\r\n     */\r\n    setTimeout?: any;\r\n}\r\n\r\n/**\r\n * The levels of severity that are able to be portrayed by an alert.\r\n */\r\nexport enum AlertSeverity {\r\n    Informational = 0,\r\n    Warning = 1,\r\n    Error = 2,\r\n    Success = 3,\r\n    InProgress = 4\r\n}\r\n\r\n/**\r\n * The typed interface of an alert link.\r\n */\r\nexport interface AlertLink {\r\n    /**\r\n     * The display text of the link\r\n     */\r\n    displayText: string;\r\n\r\n    /**\r\n     * The event to invoke when the link is clicked.\r\n     * If an event is added uri will not be used\r\n     */\r\n    event?: (() => void);\r\n\r\n    /**\r\n     * The uri to navigate to when the link is clicked\r\n     */\r\n    uri?: string;\r\n\r\n    /**\r\n     * If a link is being used, specifies if it is an external link\r\n     * if true, link will open in a new tab, otherwise will route internally\r\n     */\r\n    isExternalLink?: boolean;\r\n}\r\n\r\nexport interface AlertInfo {\r\n    /**\r\n     * The @Alert Object.\r\n     */\r\n    alert: Alert;\r\n\r\n    /**\r\n     * Ref count of how many times the show() was invoked for the alert.\r\n     */\r\n    refCount: number;\r\n}\r\n\r\nexport interface AlertBar {\r\n    show(alert: Alert): void;\r\n }\r\n\r\n@Injectable()\r\nexport class AlertBarService {\r\n    private componentMap: { [index: string]: AlertBar } = {};\r\n\r\n    constructor(private appContextService: AppContextService) {}\r\n\r\n    /**\r\n     * Registers an alert bar with the service.\r\n     *\r\n     * @param component The alert bar component.\r\n     * @param [id] The unique identifier of the alert bar.\r\n     */\r\n    public register(component: AlertBar, id?: string): void {\r\n        if (!component) {\r\n            throw new Error('AlertBarService.register: \\'component\\' is required to register an alert bar component.');\r\n        }\r\n\r\n        /**\r\n         * Commenting out the below sections until we understand cases where angular can call ngOnInit twice.\r\n         * see: http://stackoverflow.com/questions/42700116/angular2-routing-issue-and-ngoninit-called-twice\r\n         */\r\n\r\n        if (id && !this.componentMap.hasOwnProperty(id)) {\r\n            this.componentMap[id] = component;\r\n        } else if (id) {\r\n            // throw new Error(`AlertBarService.register: Attempted to register alert with ID '${id}' but ID was already found.`);\r\n            this.componentMap[id] = component;\r\n        } else if (!this.componentMap.hasOwnProperty('')) {\r\n            this.componentMap[''] = component;\r\n        } else {\r\n            // throw new Error('AlertBarService.register: Attempted to register alert with no ID, but one was already found.');\r\n            this.componentMap[''] = component;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Unregisters an alert bar with the service.\r\n     *\r\n     * @param [id] The unique identifier of the alert bar.\r\n     */\r\n    public unregister(id?: string): void {\r\n        if (id) {\r\n            delete this.componentMap[id];\r\n        } else {\r\n            delete this.componentMap[''];\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Shows an alert.\r\n     *\r\n     * @param alert The alert to show.\r\n     * @param [id] The unique identifier of the alert bar to show the alert in.\r\n     */\r\n    public showAlert(item: Alert, id?: string): void {\r\n        let component: AlertBar;\r\n\r\n        if (id && this.componentMap.hasOwnProperty(id)) {\r\n            component = this.componentMap[id];\r\n        } else if (id) {\r\n            throw new Error(`AlertBarService.show: No alert bar component with ID '${id}' was found.`);\r\n        } else if (this.componentMap.hasOwnProperty('')) {\r\n            component = this.componentMap[''];\r\n        } else {\r\n            throw new Error('AlertBarService.show: No registered alert bar component was found with no ID.');\r\n        }\r\n\r\n        component.show(item);\r\n    }\r\n\r\n    /**\r\n     * @deprecated\r\n     * Shows an alert.\r\n     *\r\n     * Use ClientNotificationInstance class or appContextService.notification.notify() instead.\r\n     *\r\n     * @param alert The alert to show.\r\n     * @param [id] The unique identifier of the alert bar to show the alert in.\r\n     */\r\n    public show(item: Alert, id?: string): void {\r\n        if (id || item.links) {\r\n            this.showAlert(item, id);\r\n            return;\r\n        }\r\n\r\n        let state: NotificationState;\r\n        switch (item.severity) {\r\n            case AlertSeverity.Error:\r\n                state = NotificationState.Error;\r\n                break;\r\n            case AlertSeverity.Warning:\r\n                state = NotificationState.Warning;\r\n                break;\r\n            case AlertSeverity.Informational:\r\n            default:\r\n                state = NotificationState.Informational;\r\n                break;\r\n        }\r\n\r\n        this.appContextService.notification.notify(\r\n            null,\r\n            {\r\n                id: MsftSme.newGuid(),\r\n                state,\r\n                message: item.message,\r\n                title: item.title\r\n            });\r\n    }\r\n}\r\n","<div class=\"sme-layer-notification sme-layout-absolute sme-layout-notification-popup-list\">\r\n\r\n  <div *ngFor=\"let alert of alerts\" tabindex=\"0\" (click)=\"openNotificationDetails(alert)\"\r\n    class=\"sme-layout-notification-popup sme-shadow-notification-popup sme-margin-right-sm sme-margin-top-sm sme-arrange-stack-h\r\n    sme-background-color-alt-5 sme-border-color-alt-5 sme-padding-top-xs sme-padding-left-sm sme-padding-right-xs sme-padding-bottom-xs sme-behavior-hover-trigger\">\r\n\r\n    <div class=\"sme-arrange-stack-v\">\r\n      <sme-status-icon class=\"sme-padding-right-xs sme-padding-top-xxxs\" [status]=\"getStatusString(alert)\" size=\"16px\"\r\n        [title]=\"getIconTitle(alert)\"></sme-status-icon>\r\n      <span role=\"button\" *ngIf=\"alert.title && alert.needsClamp\" (click)=\"clickExpand($event, alert)\"\r\n        class=\"sme-button-trigger sme-button-auto-width sme-position-flex-none sme-padding-inset-none sme-icon sme-padding-top-xxs sme-behavior-hover-target-show\"\r\n        [ngClass]=\"{'sme-icon-chevronDown':alert.isExpanded, 'sme-icon-chevronRight': !alert.isExpanded}\"\r\n        [title]=\"strings.MsftSmeShell.Angular.AlertBar.Expand\"></span>\r\n    </div>\r\n\r\n    <div role=\"alert\" id=\"sme-alert-bar-content\"\r\n      class=\"sme-arrange-stack-v sme-arrange-overflow-hide-x sme-arrange-word-wrap-break-word sme-position-stretch-h\">\r\n\r\n      <div class=\"sme-layout-notification-message\">\r\n        <div class=\"sme-arrange-stack-h\">\r\n          <p class=\"sme-screen-reader\">{{ getIconTitle(alert) }}</p>\r\n          <p class=\"sme-font-family-bold sme-font-label sme-margin-inset-none sme-padding-top-xxxs sme-position-stretch-h sme-position-left-inline\"\r\n            [attr.aria-label]=\"alert.title || alert.message\">{{ alert.title || alert.message }}</p>\r\n        </div>\r\n        <div class=\"sme-arrange-stack-v\">\r\n          <p *ngIf=\"alert.title && !alert.isExpanded\" class=\"sme-font-label\" [attr.aria-label]=\"alert.message\">\r\n            {{ alert.message }}\r\n          </p>\r\n          <p *ngIf=\"alert.title && alert.isExpanded\" class=\"sme-font-label\" [attr.aria-label]=\"alert.message\">\r\n            {{ alert.message }}\r\n          </p>\r\n\r\n          <label *ngIf=\"alert.links\">\r\n            <div *ngFor=\"let link of alert.links\">\r\n              <a *ngIf=\"link.event\" class=\"sme-link\" (click)=\"link.event();stopClickPropagation($event)\">\r\n                {{ link.displayText }}\r\n              </a>\r\n              <div *ngIf=\"!link.event && link.uri\" (click)=\"stopClickPropagation($event)\">\r\n                <a *ngIf=\"link.isExternalLink\" class=\"sme-link\" [href]=\"link.uri\" target=\"_blank\">\r\n                  {{ link.displayText }}\r\n                </a>\r\n                <a *ngIf=\"!link.isExternalLink\" class=\"sme-link\" [routerLink]=\"link.uri\">\r\n                  {{ link.displayText }}\r\n                </a>\r\n              </div>\r\n            </div>\r\n          </label>\r\n        </div>\r\n      </div>\r\n      <div class=\"sme-arrange-stack-h sme-font-label sme-color-base-40\">\r\n        <div class=\"sme-position-flex-auto sme-arrange-ellipsis\">{{ alert.nodeName }}</div>\r\n        <div class=\"sme-position-flex-none sme-margin-left-xxs\"> {{ alert.timestamp }}</div>\r\n      </div>\r\n\r\n    </div>\r\n\r\n    <div class=\"sme-arrange-stack-v\">\r\n      <button\r\n        class=\"sme-button-trigger sme-button-auto-width sme-position-flex-none sme-padding-inset-none sme-padding-left-xxs sme-padding-right-xxs\"\r\n        (click)=\"dismiss(alert)\" [attr.aria-label]=\"strings.MsftSmeShell.Angular.AlertBar.DismissAriaLabel\"\r\n        data-uta-id=\"cancel-alert\" aria-describedby=\"sme-alert-bar-content\">\r\n        <span class=\"sme-icon sme-icon-cancel\" [title]=\"strings.MsftSmeShell.Angular.AlertBar.Dismiss\"></span>\r\n      </button>\r\n    </div>\r\n\r\n  </div>\r\n</div>\r\n","import { Component, Injector, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Subscription } from 'rxjs';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { DialogChangeEvent, DialogService } from '../dialog/dialog.service';\r\nimport { StatusIconType } from '../icon/layered-icon/status/status-icon.component';\r\nimport { Alert, AlertBar, AlertBarService, AlertSeverity } from './alert-bar.service';\r\n\r\n@Component({\r\n    selector: 'sme-alert-bar',\r\n    templateUrl: './alert-bar.component.html'\r\n})\r\nexport class AlertBarComponent extends CoreBaseComponent implements OnInit, OnDestroy, AlertBar {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'AlertBarComponent';\r\n    }\r\n\r\n    @Input()\r\n    public id: string;\r\n    private dialogSubscriptions: Subscription[] = [];\r\n\r\n    // Keep the array to maintain the order of Alerts received.\r\n    public alerts: Alert[];\r\n\r\n    /**\r\n     * Initializes a new instance of the {AlertBarComponent} class.\r\n     *\r\n     * @param alertBarService The alert service.\r\n     * @param router The router.\r\n     * @param activatedRoute The activated route.\r\n     */\r\n    public constructor(\r\n        injector: Injector,\r\n        private alertBarService: AlertBarService,\r\n        private dialogService: DialogService) {\r\n            super(injector);\r\n    }\r\n\r\n    /**\r\n     * The method to run when the component is initialized.\r\n     */\r\n    public ngOnInit(): void {\r\n        this.alerts = [];\r\n        this.alertBarService.register(this, this.id);\r\n\r\n        this.dialogSubscriptions.push(this.dialogService.changed.subscribe(event => {\r\n            // clear all alerts if the notification dialog opens\r\n            if (event.dialogId === this.dialogService.commonIds.notificationsPane && event.changeEvent === DialogChangeEvent.Show) {\r\n                this.alerts = [];\r\n            }\r\n        }));\r\n    }\r\n\r\n    /**\r\n     * The method to run when the component is destroyed.\r\n     */\r\n    public ngOnDestroy(): void {\r\n        this.alertBarService.unregister(this.id);\r\n        if (this.dialogSubscriptions) {\r\n            this.dialogSubscriptions.forEach(sub => sub?.unsubscribe());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Open details view in notification pane\r\n     * @param alert the alert clicked\r\n     */\r\n    public openNotificationDetails(alert: Alert) {\r\n        this.dialogSubscriptions.push(\r\n            this.dialogService.show(this.dialogService.commonIds.notificationsPane, { id: alert.id }).subscribe()\r\n        );\r\n    }\r\n\r\n    /**\r\n     * click the message expand button\r\n     * @param event the event\r\n     * @param alert the alert clicked\r\n     */\r\n    public clickExpand(event: Event, alert: Alert) {\r\n        alert.isExpanded = !alert.isExpanded;\r\n        this.stopClickPropagation(event);\r\n    }\r\n\r\n    /**\r\n     * stop propagation on the event\r\n     * @param event the event to stop\r\n     */\r\n    public stopClickPropagation(event: Event) {\r\n        event.stopPropagation();\r\n    }\r\n\r\n    /**\r\n     * Assigns needsClamp properly to given alert\r\n     * @param alert the alert\r\n     * @param event the clamped event\r\n     */\r\n    @Debounce()\r\n    public assignClamped(alert: Alert, event: any) {\r\n        alert.needsClamp = event.clamped;\r\n    }\r\n\r\n    /**\r\n     * Gets the status string for the status icon\r\n     *\r\n     * @param alert The alert.\r\n     */\r\n    public getStatusString(alert: Alert): StatusIconType {\r\n        switch (alert.severity) {\r\n            case AlertSeverity.Error:\r\n                return StatusIconType.Error;\r\n            case AlertSeverity.Warning:\r\n                return StatusIconType.Warning;\r\n            case AlertSeverity.Success:\r\n                return StatusIconType.Success;\r\n            case AlertSeverity.InProgress:\r\n                return StatusIconType.Progress;\r\n            case AlertSeverity.Informational:\r\n            default:\r\n                return StatusIconType.Info;\r\n        }\r\n    }\r\n\r\n    public getIconTitle(alert: Alert): string {\r\n        switch (alert.severity) {\r\n            case AlertSeverity.Error:\r\n                return this.strings.MsftSmeShell.Angular.AlertBar.Error;\r\n            case AlertSeverity.Warning:\r\n                return this.strings.MsftSmeShell.Angular.AlertBar.Warning;\r\n            case AlertSeverity.Success:\r\n                return this.strings.MsftSmeShell.Angular.AlertBar.Success;\r\n            case AlertSeverity.InProgress:\r\n                return this.strings.MsftSmeShell.Angular.AlertBar.InProgress;\r\n            case AlertSeverity.Informational:\r\n            default:\r\n                return this.strings.MsftSmeShell.Angular.AlertBar.Information;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Shows an alert.\r\n     *\r\n     * @param alert The alert to show.\r\n     */\r\n    public show(alert: Alert): void {\r\n        // don't show popup if notifications are already open\r\n        if (!MsftSme.find(this.dialogService.activeDialogsStack, dialog => dialog.id === this.dialogService.commonIds.notificationsPane)) {\r\n            const existingAlert = this.alerts.find(x => x.id === alert.id || this.indexName(x) === this.indexName(alert));\r\n            if (existingAlert) {\r\n                if (existingAlert.setTimeout) {\r\n                    clearTimeout(existingAlert.setTimeout);\r\n                    existingAlert.setTimeout = null;\r\n                }\r\n\r\n                this.dismiss(existingAlert);\r\n            }\r\n\r\n            if (alert.setTimeout) {\r\n                clearTimeout(alert.setTimeout);\r\n                alert.setTimeout = null;\r\n            }\r\n\r\n            this.alerts.unshift(alert);\r\n            alert.setTimeout = setTimeout(() => { this.dismiss(alert); }, 7000);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Dismisses an alert.\r\n     *\r\n     * @param alert The alert to dismiss.\r\n     */\r\n    public dismiss(alert: Alert): void {\r\n        MsftSme.remove(this.alerts, alert);\r\n    }\r\n\r\n    /**\r\n     * Create the index name in map collection.\r\n     *\r\n     * @param alert the alert\r\n     */\r\n    private indexName(alert: Alert): string {\r\n        return alert.severity + ':' + alert.title + ':' + alert.message + ':' + alert.nodeName;\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ClampModule } from '../../directives/clamp/clamp.module';\r\nimport { IconModule } from '../icon/icon.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { AlertBarComponent } from './alert-bar.component';\r\nimport { AlertBarService } from './alert-bar.service';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        AlertBarComponent\r\n    ],\r\n    exports: [\r\n        AlertBarComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        RouterModule,\r\n        IconModule,\r\n        ClampModule,\r\n        TooltipModule\r\n    ],\r\n    providers: [\r\n        AlertBarService\r\n    ]\r\n})\r\nexport class AlertBarModule { }\r\n","import { Url } from 'url';\r\nimport { Directive, Injector, Input, TemplateRef, ViewChild } from '@angular/core';\r\nimport { SafeUrl } from '@angular/platform-browser';\r\nimport { Strings } from '../../generated/strings';\r\nimport { BaseComponent } from '../common/base.component';\r\n\r\n/**\r\n * The levels of severity dictates the icon and aria label that\r\n * will be used.\r\n */\r\nexport enum BadgeSeverity {\r\n    Informational = 0,\r\n    Warning = 1,\r\n    Critical = 2\r\n}\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Badge @id sme-badge-component}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/badge-overview.md}\r\n *\r\n * @example {@label Basic Usage @id basic-usage}\r\n * @file {@filename component.html @filepath ./examples/basic-usage.component.html}\r\n *\r\n * @example {@label Badge with link in Tooltip @id link-tooltip}\r\n * @file {@filename component.html @filepath ./examples/link-tooltip-badge.component.html}\r\n *\r\n * @example {@label Badge with Header @id header-badge}\r\n * @file {@filename component.html @filepath ./examples/header-badge.component.html}\r\n */\r\n\r\n/**\r\n * Defines a base component for badges\r\n */\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class BadgeBaseComponent<TStrings> extends BaseComponent<TStrings> {\r\n    /**\r\n     * The title displayed for the badge component.\r\n     */\r\n    @Input()\r\n    public label: string;\r\n\r\n    /**\r\n     * A sentence of text that will be displayed in a tooltip and used for aria-describedby.\r\n     */\r\n    @Input()\r\n    public description: string;\r\n\r\n    /**\r\n     * The tooltip of the badge\r\n     */\r\n    @Input()\r\n    public tooltip: TemplateRef<any>;\r\n\r\n    /**\r\n     * For the default tooltip, a link for an optional hyperlinked text\r\n     * labeled 'Learn More' that will be displayed.\r\n     */\r\n    @Input()\r\n    public learnMoreLink: string | Url | SafeUrl;\r\n\r\n    /**\r\n     * Uses specific feedback link to UserVoice in the tooltip.\r\n     */\r\n    @Input()\r\n    public showFeedbackLink: boolean;\r\n\r\n    /**\r\n     * Feedback link that is shown in the tooltip. Defaulted to a link for UserVoice feedback.\r\n     */\r\n    @Input()\r\n    public feedbackLink: string | Url | SafeUrl = 'https://go.microsoft.com/fwlink/?linkid=2033442';\r\n\r\n    /**\r\n     * Used to indicate the importance of the component being displayed.\r\n     * Defaults to informational. Icon and aria-label will be updated based on\r\n     * severity that is applied.\r\n     */\r\n    @Input()\r\n    public severity: BadgeSeverity;\r\n\r\n    /**\r\n     * The title that we actually bind to\r\n     */\r\n    public get ariaLabel(): string {\r\n        // we dont have proper typing for shell strings here, so we cast it to any then to strings.\r\n        const badgeStrings = MsftSme.getStrings<Strings>().MsftSmeShell.Angular.Badges.Common;\r\n        let severityLabel = '';\r\n        switch (this.severity) {\r\n            case BadgeSeverity.Warning: {\r\n                severityLabel = badgeStrings.Severities.warn;\r\n                break;\r\n            }\r\n            case BadgeSeverity.Critical: {\r\n                severityLabel = badgeStrings.Severities.critical;\r\n                break;\r\n            }\r\n            default: {\r\n                return this.label;\r\n            }\r\n        }\r\n        return badgeStrings.Aria.labelFormat.format(severityLabel, this.label);\r\n    }\r\n\r\n    /**\r\n     * The title that we actually bind to\r\n     */\r\n    public get icon(): string {\r\n        switch (this.severity) {\r\n            case BadgeSeverity.Warning: {\r\n                return 'sme-icon-warning';\r\n            }\r\n            case BadgeSeverity.Critical: {\r\n                return 'sme-icon-error';\r\n            }\r\n            default: {\r\n                return 'sme-icon-info';\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The title that we actually bind to\r\n     */\r\n    public get resolvedTooltip(): TemplateRef<any> {\r\n        // if we have a custom tooltip, then use it\r\n        if (this.tooltip) {\r\n            return this.tooltip;\r\n        }\r\n\r\n        return this.defaultTooltip;\r\n    }\r\n\r\n    /**\r\n     * The default tooltip template\r\n     */\r\n    @ViewChild('defaultTooltip', { static: true })\r\n    public defaultTooltip: TemplateRef<any>;\r\n\r\n    /**\r\n     * Initializes a new instance of the @see BadgeComponent class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator in the base @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.severity = BadgeSeverity.Informational;\r\n        this.description = null;\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-badge',\r\n            'sme-focus-zone'\r\n        ]);\r\n    }\r\n}\r\n\r\n/**\r\n * Internal base component for SME Core controls. It simply removes the need to supply the string type parameter\r\n * This class is exported from this file, but not meant to be exported from index.ts bundles.\r\n */\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class CoreBadgeBaseComponent extends BadgeBaseComponent<Strings> {\r\n    // Should Remain Empty.\r\n}\r\n","<p role=\"button\" tabindex=\"0\" [smeTooltip]=\"resolvedTooltip\">\r\n  <span class=\"sme-screen-reader\">{{ ariaLabel }}</span>\r\n  <span aria-hidden=\"true\">{{ label }}</span>\r\n  <span aria-hidden=\"true\" [ngClass]=\"['sme-icon', icon]\"></span>\r\n</p>\r\n<ng-template #defaultTooltip let-hostData=\"hostData\" class=\"sme-arrange-stack-v\">\r\n  <p class=\"sme-margin-bottom-xs sme-font-label\">{{description}}</p>\r\n  <div class=\"sme-position-stretch-h\">\r\n    <a *ngIf=\"!!learnMoreLink\" target=\"about:blank\" [href]=\"learnMoreLink.toString()\" class=\"sme-link\">{{strings.MsftSmeShell.Angular.Badges.Common.learnMore}}</a>\r\n  </div>\r\n  <div class=\"sme-position-stretch-h\">\r\n    <a *ngIf=\"showFeedbackLink\" target=\"about:blank\" [href]=\"feedbackLink.toString()\" class=\"sme-link\">{{strings.MsftSmeShell.Angular.Badges.Common.feedback}}</a>\r\n  </div>\r\n</ng-template>\r\n","import { Component, Injector } from '@angular/core';\r\nimport { CoreBadgeBaseComponent } from './badge-base.component';\r\n\r\n/**\r\n * Defines a coming soon badge\r\n */\r\n@Component({\r\n    selector: 'sme-badge[type=\"comingSoon\"]',\r\n    templateUrl: './badge.component.html'\r\n})\r\nexport class ComingSoonBadgeComponent extends CoreBadgeBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'ComingSoonBadgeComponent';\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the @see ComingSoonBadgeComponent class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator in the base @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.label = this.strings.MsftSmeShell.Angular.Badges.ComingSoon.label;\r\n        this.description = this.strings.MsftSmeShell.Angular.Badges.ComingSoon.tooltip;\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-badge-coming-soon'\r\n        ]);\r\n    }\r\n}\r\n","import { Component, Injector } from '@angular/core';\r\nimport { CoreBadgeBaseComponent } from './badge-base.component';\r\n\r\n/**\r\n * Defines a custom badge\r\n */\r\n@Component({\r\n    selector: 'sme-badge[type=\"custom\"]',\r\n    templateUrl: './badge.component.html'\r\n})\r\nexport class CustomBadgeComponent extends CoreBadgeBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'CustomBadgeComponent';\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the @see CustomBadgeComponent class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator in the base @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-badge-custom'\r\n        ]);\r\n    }\r\n}\r\n","import { Component, Injector } from '@angular/core';\r\nimport { CoreBadgeBaseComponent } from './badge-base.component';\r\n\r\n/**\r\n * Defines a feedback badge\r\n */\r\n@Component({\r\n    selector: 'sme-badge[type=\"feedback\"]',\r\n    templateUrl: './badge.component.html'\r\n})\r\nexport class FeedbackBadgeComponent extends CoreBadgeBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'FeedbackBadgeComponent';\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the @see FeedbackBadgeComponent class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator in the base @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.showFeedbackLink = true;\r\n        this.label = this.strings.MsftSmeShell.Angular.Badges.Feedback.label;\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-badge-feedback'\r\n        ]);\r\n    }\r\n}\r\n","import { Component, Injector } from '@angular/core';\r\nimport { CoreBadgeBaseComponent } from './badge-base.component';\r\n\r\n/**\r\n * Defines a 'new' badge\r\n */\r\n@Component({\r\n    selector: 'sme-badge[type=\"new\"]',\r\n    templateUrl: './badge.component.html'\r\n})\r\nexport class NewBadgeComponent extends CoreBadgeBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'NewBadgeComponent';\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the @see NewBadgeComponent class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator in the base @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.label = this.strings.MsftSmeShell.Angular.Badges.New.label;\r\n        this.description = this.strings.MsftSmeShell.Angular.Badges.New.tooltip;\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-badge-new'\r\n        ]);\r\n    }\r\n}\r\n","import { Component, Injector } from '@angular/core';\r\nimport { CoreBadgeBaseComponent } from './badge-base.component';\r\n\r\n/**\r\n * Defines a preview badge\r\n */\r\n@Component({\r\n    selector: 'sme-badge[type=\"preview\"]',\r\n    templateUrl: './badge.component.html'\r\n})\r\nexport class PreviewBadgeComponent extends CoreBadgeBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'PreviewBadgeComponent';\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the @see PreviewBadgeComponent class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator in the base @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.showFeedbackLink = true;\r\n        this.label = this.strings.MsftSmeShell.Angular.Badges.Preview.label;\r\n        this.description = this.strings.MsftSmeShell.Angular.Badges.Preview.tooltip;\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-badge-preview'\r\n        ]);\r\n    }\r\n}\r\n","import { Component, Injector } from '@angular/core';\r\nimport { CoreBadgeBaseComponent } from './badge-base.component';\r\n\r\n/**\r\n * Defines an 'improvement-feature' badge\r\n */\r\n@Component({\r\n    selector: 'sme-badge[type=\"bugfixes-feature\"]',\r\n    templateUrl: './badge.component.html'\r\n})\r\nexport class BugFixesFeatureBadgeComponent extends CoreBadgeBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'BugFixesFeatureBadgeComponent';\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the @see BugFixesFeatureBadgeComponent class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator in the base @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.label = this.strings.MsftSmeShell.Angular.Badges.BugFixes.Feature.label;\r\n        this.description = null;\r\n        this.tooltip = null;\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-padding-horizontal-sm',\r\n            'sme-badge-feature',\r\n            'sme-badge-bugfixes-feature'\r\n        ]);\r\n    }\r\n}\r\n","import { Component, Injector } from '@angular/core';\r\nimport { CoreBadgeBaseComponent } from './badge-base.component';\r\n\r\n/**\r\n * Defines a preview badge\r\n */\r\n@Component({\r\n    selector: 'sme-badge[type=\"credsspenabled\"]',\r\n    templateUrl: './badge.component.html'\r\n})\r\nexport class CredSSPEnabledBadgeComponent extends CoreBadgeBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'CredSSPEnabledBadgeComponent';\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the @see CredSSPEnabledBadgeComponent class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator in the base @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.label = this.strings.MsftSmeShell.Angular.Badges.CredSSPEnabled.label;\r\n        this.description = this.strings.MsftSmeShell.Angular.Badges.CredSSPEnabled.tooltip;\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-badge-credsspenabled'\r\n        ]);\r\n    }\r\n}\r\n","import { Component, Injector } from '@angular/core';\r\nimport { BadgeSeverity, CoreBadgeBaseComponent } from './badge-base.component';\r\n\r\n/**\r\n * Defines the critical badge.\r\n */\r\n@Component({\r\n    selector: 'sme-badge[type=\"critical\"]',\r\n    templateUrl: './badge.component.html'\r\n})\r\nexport class CriticalBadgeComponent extends CoreBadgeBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'CriticalBadgeComponent';\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the @see CriticalBadgeComponent class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator in the base @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.severity = BadgeSeverity.Critical;\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-badge-critical'\r\n        ]);\r\n    }\r\n}\r\n","import { Component, Injector } from '@angular/core';\r\nimport { CoreBadgeBaseComponent } from './badge-base.component';\r\n\r\n/**\r\n * Defines an 'improvement-feature' badge\r\n */\r\n@Component({\r\n    selector: 'sme-badge[type=\"improvement-feature\"]',\r\n    templateUrl: './badge.component.html'\r\n})\r\nexport class ImprovementFeatureBadgeComponent extends CoreBadgeBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'ImprovementFeatureBadgeComponent';\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the @see ImprovementFeatureBadgeComponent class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator in the base @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.label = this.strings.MsftSmeShell.Angular.Badges.Improvement.Feature.label;\r\n        this.description = null;\r\n        this.tooltip = null;\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-padding-horizontal-sm',\r\n            'sme-badge-feature',\r\n            'sme-badge-improvement-feature'\r\n        ]);\r\n    }\r\n}\r\n","import { Component, Injector } from '@angular/core';\r\nimport { CoreBadgeBaseComponent } from './badge-base.component';\r\n\r\n/**\r\n * Defines a 'new-feature' badge\r\n */\r\n@Component({\r\n    selector: 'sme-badge[type=\"new-feature\"]',\r\n    templateUrl: './badge.component.html'\r\n})\r\nexport class NewFeatureBadgeComponent extends CoreBadgeBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'NewFeatureBadgeComponent';\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the @see NewFeatureBadgeComponent class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator in the base @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.label = this.strings.MsftSmeShell.Angular.Badges.New.Feature.label;\r\n        this.description = null;\r\n        this.tooltip = null;\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-padding-horizontal-sm',\r\n            'sme-badge-feature',\r\n            'sme-badge-new-feature'\r\n        ]);\r\n    }\r\n}\r\n","import { Component, Injector } from '@angular/core';\r\nimport { BadgeSeverity, CoreBadgeBaseComponent } from './badge-base.component';\r\n\r\n/**\r\n * Defines the rbac badge.\r\n */\r\n@Component({\r\n    selector: 'sme-badge[type=\"warning\"]',\r\n    templateUrl: './badge.component.html'\r\n})\r\nexport class WarningBadgeComponent extends CoreBadgeBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'WarningBadgeComponent';\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the @see WarningBadgeComponent class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator in the base @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.severity = BadgeSeverity.Warning;\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-badge-warning'\r\n        ]);\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { BugFixesFeatureBadgeComponent } from './bugfixes-feature-badge.component';\r\nimport { ComingSoonBadgeComponent } from './coming-soon-badge.component';\r\nimport { CredSSPEnabledBadgeComponent } from './credssp-enabled-badge.component';\r\nimport { CriticalBadgeComponent } from './critical-badge.component';\r\nimport { CustomBadgeComponent } from './custom-badge.component';\r\nimport { FeedbackBadgeComponent } from './feedback-badge.component';\r\nimport { ImprovementFeatureBadgeComponent } from './improvement-feature-badge.component';\r\nimport { NewBadgeComponent } from './new-badge.component';\r\nimport { NewFeatureBadgeComponent } from './new-feature-badge.component';\r\nimport { PreviewBadgeComponent } from './preview-badge.component';\r\nimport { WarningBadgeComponent } from './warning-badge.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        ComingSoonBadgeComponent,\r\n        CustomBadgeComponent,\r\n        FeedbackBadgeComponent,\r\n        NewBadgeComponent,\r\n        PreviewBadgeComponent,\r\n        WarningBadgeComponent,\r\n        CriticalBadgeComponent,\r\n        CredSSPEnabledBadgeComponent,\r\n        NewFeatureBadgeComponent,\r\n        ImprovementFeatureBadgeComponent,\r\n        BugFixesFeatureBadgeComponent\r\n    ],\r\n    declarations: [\r\n        ComingSoonBadgeComponent,\r\n        CustomBadgeComponent,\r\n        FeedbackBadgeComponent,\r\n        NewBadgeComponent,\r\n        PreviewBadgeComponent,\r\n        WarningBadgeComponent,\r\n        CriticalBadgeComponent,\r\n        CredSSPEnabledBadgeComponent,\r\n        NewFeatureBadgeComponent,\r\n        ImprovementFeatureBadgeComponent,\r\n        BugFixesFeatureBadgeComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        TooltipModule\r\n    ]\r\n})\r\nexport class BadgeModule { }\r\n","export enum BadgeFeatureTypes {\r\n    New = 'New',\r\n    Improvement = 'Improvement',\r\n    BugFixes = 'BugFixes'\r\n}\r\n","<div *ngIf=\"items && items.length > 0\" tabindex=\"0\" role=\"region\"\r\n  class=\"sme-position-stretch-h sme-arrange-stack-h sme-padding-left-xl sme-height-xxl sme-border-vertical-sm sme-border-color-base-90 sme-focus-zone\"\r\n  [attr.aria-label]=\"currentItem.title\">\r\n  <div *ngIf=\"items && items.length > 1\"\r\n    class=\"sme-arrange-stack-h sme-position-flex-none sme-position-flex-align-center sme-margin-right-xs\">\r\n    <button class=\"sme-button-trigger sme-button-auto-width\" (click)=\"onCarouselLeftArrowButtonClick()\"\r\n      [attr.aria-label]=\"strings.MsftSmeShell.Angular.Banner.ChevronLeft.label\"\r\n      [title]=\"strings.MsftSmeShell.Angular.Banner.ChevronLeft.label\">\r\n      <span class=\"sme-icon sme-icon-chevronLeft\"></span>\r\n    </button>\r\n    <span\r\n      class=\"sme-arrange-stack-h sme-margin-horizontal-xxs sme-position-flex-align-center\">{{ carouselPosition }}</span>\r\n    <button class=\"sme-button-trigger sme-button-auto-width\" (click)=\"onCarouselRightArrowButtonClick()\"\r\n      [attr.aria-label]=\"strings.MsftSmeShell.Angular.Banner.ChevronRight.label\"\r\n      [title]=\"strings.MsftSmeShell.Angular.Banner.ChevronRight.label\">\r\n      <span class=\"sme-icon sme-icon-chevronRight\"></span>\r\n    </button>\r\n  </div>\r\n\r\n  <div #carouselContent\r\n    class=\"sme-arrange-overflow-hide sme-arrange-stack-h sme-position-flex-auto sme-position-stretch-v\">\r\n    <div *ngIf=\"currentFontIcon\"\r\n      class=\"sme-square-xxl sme-margin-right-xs sme-background-color-accent sme-layout-relative\">\r\n      <div [ngClass]=\"currentFontIcon\"\r\n        class=\"sme-icon sme-icon-sm sme-color-base sme-position-center sme-layout-absolute\"></div>\r\n    </div>\r\n    <div *ngIf=\"!currentFontIcon\" [style.background-image]=\"currentExternalIcon\"\r\n      class=\"sme-square-xxl sme-margin-right-xs sme-url-icon\"></div>\r\n\r\n    <div class=\"sme-arrange-stack-h sme-position-flex-auto sme-arrange-overflow-hide\" style=\"min-width: 35px\">\r\n      <span [title]=\"currentItem.title\"\r\n        class=\"sme-font-body sme-position-flex-align-center sme-arrange-ellipsis\" style=\"min-width: 15px\">{{ currentItem.title }}</span>\r\n      <a tabindex=\"0\" role=\"link\" *ngIf=\"currentItem.rpcShellNavigate || currentItem.setUpFunction\"\r\n        [title]=\"currentItem.actionText ? currentItem.actionText : strings.MsftSmeShell.Angular.Banner.SetUpNow.label\"\r\n        (click)=\"onSetUpClick(currentItem)\" style=\"min-width: 15px\"\r\n        class=\"sme-link sme-margin-horizontal-xs sme-position-flex-align-center sme-arrange-ws-nowrap sme-arrange-ellipsis\">\r\n        <span>{{ currentItem.actionText ? currentItem.actionText : strings.MsftSmeShell.Angular.Banner.SetUpNow.label }}</span>\r\n      </a>\r\n    </div>\r\n\r\n    <a *ngIf=\"currentItem.externalLink\"  target=\"_blank\" [attr.aria-label]=\"currentItem.linkDescription\" [href]=\"currentItem.externalLink\" [title]=\"currentItem.linkDescription\"\r\n      class=\"sme-link sme-margin-horizontal-xs sme-position-flex-align-center sme-arrange-ws-nowrap sme-arrange-ellipsis sme-icon sme-icon-openInNewWindow sme-icon-after\"\r\n      (click)=\"onExternalLinkClick(currentItem)\">\r\n      <span class=\"sme-arrange-ellipsis\">{{ strings.MsftSmeShell.Angular.Banner.LearnMore.label }}</span>\r\n    </a>\r\n  </div>\r\n\r\n  <button class=\"sme-button-trigger sme-button-auto-width\" (click)=\"onDismissItemButtonClick()\"\r\n    [attr.aria-label]=\"strings.MsftSmeShell.Angular.Banner.ButtonClose.label\"\r\n    [title]=\"strings.MsftSmeShell.Angular.Banner.ButtonClose.label\">\r\n    <span class=\"sme-icon sme-icon-cancel\"></span>\r\n  </button>\r\n</div>\r\n","import { Component, ElementRef, Injector, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { Animator, Duration as AnimationDuration } from '@microsoft/windows-admin-center-sdk/core/data/animation';\r\nimport { BannerHideType, CommonUserSettings } from '@microsoft/windows-admin-center-sdk/core/data/settings-manager';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { TelemetryControlType } from '@microsoft/windows-admin-center-sdk/core/diagnostics/telemetry-control-type';\r\nimport { EnvironmentModule } from '@microsoft/windows-admin-center-sdk/core/manifest/environment-modules';\r\nimport { RpcDialogChoiceResponse } from '@microsoft/windows-admin-center-sdk/core/rpc/dialog/rpc-dialog-model';\r\nimport { RpcShellNavigateClient } from '@microsoft/windows-admin-center-sdk/core/rpc/shell-navigate/rpc-shell-navigate-client';\r\nimport { Observable, of } from 'rxjs';\r\nimport { first, map, mergeMap } from 'rxjs/operators';\r\nimport { Strings } from '../../generated/strings';\r\nimport { AppContextService } from '../../service/app-context.service';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { ChoiceDialogResult } from '../dialog/choice-dialog/choice-dialog.component';\r\nimport { DialogService } from '../dialog/dialog.service';\r\nimport { BannerItem } from './models/banner-item';\r\n\r\n/**\r\n * An enumeration of the possible choices from the dismissal dialog.\r\n */\r\nenum BannerDismissChoice {\r\n    /**\r\n     * Dismiss the banner for the session.\r\n     */\r\n    Session = 0,\r\n\r\n    /**\r\n     * Save the preference to never see the banner.\r\n     */\r\n    Permanent = 1\r\n}\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Banner @id sme-banner}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/banner-overview.md}\r\n *\r\n * @example {@label Basic Usage @id basic-usage}\r\n * @file {@filename component.ts @filepath ./examples/banner-example.component.ts}\r\n * @file {@filename component.html @filepath ./examples/banner-example.component.html}\r\n *\r\n */\r\n/**\r\n * The component definition of the banner control.\r\n */\r\n@Component({\r\n    selector: 'sme-banner',\r\n    templateUrl: './banner.component.html'\r\n})\r\nexport class BannerComponent extends CoreBaseComponent implements OnInit {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'BannerComponent';\r\n    }\r\n\r\n    /**\r\n     * The carousel content view child.\r\n     */\r\n    @ViewChild('carouselContent')\r\n    public carouselContentViewChild: ElementRef;\r\n\r\n    /**\r\n     * The banner items to display.\r\n     */\r\n    @Input()\r\n    public items: BannerItem[];\r\n\r\n    /**\r\n     * Gets the position in the carousel.\r\n     */\r\n    public get carouselPosition(): string {\r\n        return '{0}/{1}'.format(this.carouselIndex + 1, this.items.length);\r\n    }\r\n\r\n    /**\r\n     * Gets the external icon of the current banner item.\r\n     */\r\n    public get currentExternalIcon(): string {\r\n        return `url(${this.currentItem.icon})`;\r\n    }\r\n\r\n    /**\r\n     * Gets the current banner item's font icon, if available.\r\n     */\r\n    public get currentFontIcon(): string {\r\n        return EnvironmentModule.getSmeIconClassFromRef(this.currentItem.icon);\r\n    }\r\n\r\n    /**\r\n     * Gets the current banner item being displayed.\r\n     */\r\n    public get currentItem(): BannerItem {\r\n        return this.items.length === 0 ? null : this.items[this.carouselIndex];\r\n    }\r\n\r\n    /**\r\n     * Resource strings.\r\n     */\r\n    public strings = MsftSme.getStrings<Strings>();\r\n\r\n    /**\r\n     * Gets the content of the carousel.\r\n     */\r\n    private get carouselContent(): HTMLElement {\r\n        return (<HTMLElement>this.carouselContentViewChild.nativeElement);\r\n    }\r\n\r\n    /**\r\n     * Whether the component is currently animating.\r\n     */\r\n    private animating = false;\r\n\r\n    /**\r\n     * The index of the current banner item.\r\n     */\r\n    private carouselIndex = 0;\r\n\r\n    /**\r\n     * Initializes a new instance of the BannerComponent class.\r\n     *\r\n     * @param appContextService The app context service.\r\n     * @param dialogService The dialog service.\r\n     * @param injector The injector\r\n     */\r\n    constructor(\r\n        private appContextService: AppContextService,\r\n        private dialogService: DialogService,\r\n        injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * The method called after the component inputs are set.\r\n     */\r\n    public ngOnInit(): void {\r\n\r\n        if (MsftSme.isNullOrUndefined(this.items)) {\r\n            throw new Error(`BannerComponent initialization failed. Input 'items' is null or undefined.`);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The method called when the carousel left arrow button button is clicked.\r\n     */\r\n    public onCarouselLeftArrowButtonClick(): void {\r\n        if (this.animating) {\r\n            return;\r\n        }\r\n\r\n        const subscription = this.animateCarouselBackward()\r\n            .pipe(first())\r\n            .subscribe(() => {\r\n                if (!MsftSme.isNullOrUndefined(subscription)) {\r\n                    subscription.unsubscribe();\r\n                }\r\n            });\r\n    }\r\n\r\n    /**\r\n     * The method called when the carousel right arrow button is clicked.\r\n     */\r\n    public onCarouselRightArrowButtonClick(): void {\r\n        if (this.animating) {\r\n            return;\r\n        }\r\n\r\n        const subscription = this.animateCarouselForward()\r\n            .pipe(first())\r\n            .subscribe(() => {\r\n                if (!MsftSme.isNullOrUndefined(subscription)) {\r\n                    subscription.unsubscribe();\r\n                }\r\n            });\r\n    }\r\n\r\n    /**\r\n     * The method called when the dismiss button is clicked.\r\n     */\r\n    public onDismissItemButtonClick(): void {\r\n        if (this.animating) {\r\n            return;\r\n        }\r\n\r\n        const dialogOptions = {\r\n            cancelButtonText: this.strings.MsftSmeShell.Angular.Common.close,\r\n            choices: [\r\n                {\r\n                    name: this.strings.MsftSmeShell.Angular.Banner.DismissalDialog.Choices.Session.label,\r\n                    value: BannerDismissChoice.Session\r\n                },\r\n                {\r\n                    name: this.strings.MsftSmeShell.Angular.Banner.DismissalDialog.Choices.Permanent.label.format(\r\n                        this.currentItem.serviceName\r\n                    ),\r\n                    value: BannerDismissChoice.Permanent\r\n                }\r\n            ],\r\n            confirmButtonText: this.strings.MsftSmeShell.Angular.Common.save,\r\n            footnote: this.strings.MsftSmeShell.Angular.Banner.DismissalDialog.footnote,\r\n            title: this.strings.MsftSmeShell.Angular.Banner.DismissalDialog.title.format(this.currentItem.serviceName),\r\n            message: ''\r\n        };\r\n\r\n        const subscription = this.dialogService.showChoice(dialogOptions).pipe(\r\n            mergeMap((dialogResult: ChoiceDialogResult | RpcDialogChoiceResponse) => {\r\n                if (dialogResult && dialogResult.confirmed) {\r\n                    const hideType = dialogResult.choice.value === BannerDismissChoice.Permanent ?\r\n                        BannerHideType.Permanent : BannerHideType.Session;\r\n\r\n                    this.trace(\r\n                        'Suggestion setting',\r\n                        this.currentItem.id, {\r\n                        controlText: this.currentItem.title,\r\n                        controlServiceName: this.currentItem.serviceName,\r\n                        controlSuggestionSetting: hideType\r\n                    }\r\n                    );\r\n                    return this.updateBannerHideSettings(hideType).pipe(map(() => dialogResult));\r\n                } else {\r\n                    return of(dialogResult);\r\n                }\r\n            }))\r\n            .subscribe({\r\n                next: (dialogResult) => {\r\n                    if (dialogResult && dialogResult.confirmed) {\r\n                        if (this.items.length === 1) {\r\n                            MsftSme.remove(this.items, this.currentItem);\r\n\r\n                            if (!MsftSme.isNullOrUndefined(subscription)) {\r\n                                subscription.unsubscribe();\r\n                            }\r\n                        } else if (this.carouselIndex === 0) {\r\n                            const animateSubscription = this.animateCarouselForward()\r\n                                .pipe(first())\r\n                                .subscribe(() => {\r\n                                    MsftSme.remove(this.items, MsftSme.first(this.items));\r\n                                    this.carouselIndex = 0;\r\n\r\n                                    if (!MsftSme.isNullOrUndefined(animateSubscription)) {\r\n                                        animateSubscription.unsubscribe();\r\n                                    }\r\n\r\n                                    if (!MsftSme.isNullOrUndefined(subscription)) {\r\n                                        subscription.unsubscribe();\r\n                                    }\r\n                                });\r\n                        } else {\r\n                            const oldIndex = this.carouselIndex;\r\n                            const animateSubscription = this.animateCarouselBackward()\r\n                                .pipe(first())\r\n                                .subscribe(() => {\r\n                                    MsftSme.remove(this.items, this.items[oldIndex]);\r\n                                    if (!MsftSme.isNullOrUndefined(animateSubscription)) {\r\n                                        animateSubscription.unsubscribe();\r\n                                    }\r\n\r\n                                    if (!MsftSme.isNullOrUndefined(subscription)) {\r\n                                        subscription.unsubscribe();\r\n                                    }\r\n                                });\r\n                        }\r\n                    }\r\n                },\r\n                error: (error) => {\r\n                    Logging.log({\r\n                        consoleGroupHeader: 'Banner Component',\r\n                        level: LogLevel.Error,\r\n                        message: `BannerComponent failed to update the hide settings for banner with ID '${this.currentItem.id}'`,\r\n                        params: {\r\n                            error: error,\r\n                            currentItem: this.currentItem\r\n                        },\r\n                        source: 'BannerComponent.onDismissItemButtonClick()'\r\n                    });\r\n                }\r\n            });\r\n    }\r\n\r\n    /**\r\n     * The method called when the set up link is clicked.\r\n     */\r\n    public onSetUpClick(item: BannerItem): void {\r\n        if (!MsftSme.isNullOrUndefined(this.currentItem.rpcShellNavigate)) {\r\n            RpcShellNavigateClient.shellNavigate(this.appContextService.rpc, this.currentItem.rpcShellNavigate);\r\n        } else if (!MsftSme.isNullOrUndefined(this.currentItem.setUpFunction)) {\r\n            this.currentItem.setUpFunction();\r\n        }\r\n\r\n        this.trace('Update now', item.id, {\r\n            controlText: item.title,\r\n            controlServiceName: item.serviceName\r\n        });\r\n    }\r\n\r\n    /**\r\n     * The method called when the learn more link is clicked.\r\n     */\r\n    public onExternalLinkClick(item: BannerItem): void {\r\n\r\n        this.trace('Learn more', item.id, {\r\n            hint: item.externalLink\r\n        });\r\n\r\n    }\r\n\r\n    /**\r\n     * The method called when the learn more link is hovered on.\r\n     */\r\n    public onExternalLinkHover(item: BannerItem): void {\r\n\r\n        this.trace('Learn more', item.id, {\r\n            hint: item.externalLink\r\n        });\r\n\r\n    }\r\n\r\n    /**\r\n     * Wrapper method for banner telemetry traces.\r\n     */\r\n    private trace(controlName: string, controlId: string, additionalData: any) {\r\n\r\n        // Capture node information if connected\r\n        if (this.appContextService.activeConnection\r\n            && this.appContextService.connectionManager.activeConnection\r\n            && this.appContextService.connectionManager.activeConnection.type) {\r\n\r\n            Logging.traceControl(\r\n                TelemetryControlType.Banner,\r\n                controlName,\r\n                controlId,\r\n                additionalData,\r\n                this.appContextService.activeConnection.nodeName,\r\n                this.appContextService.connectionManager.activeConnection.type\r\n            );\r\n        } else {\r\n            Logging.traceControl(\r\n                TelemetryControlType.Banner,\r\n                controlName,\r\n                controlId,\r\n                additionalData\r\n            );\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Animates the carousel for going backward.\r\n     *\r\n     * @returns A void observable of the animation event.\r\n     */\r\n    private animateCarouselBackward(): Observable<void> {\r\n        this.animating = true;\r\n        return Animator.slideOutToRight(this.carouselContent, AnimationDuration.Xs, true)\r\n            .pipe(mergeMap(() => {\r\n                if (this.carouselIndex === 0) {\r\n                    this.carouselIndex = this.items.length - 1;\r\n                } else {\r\n                    this.carouselIndex--;\r\n                }\r\n\r\n                return Animator.slideInToRight(this.carouselContent, AnimationDuration.Xs, true);\r\n            }),\r\n                map(() => {\r\n                    this.animating = false;\r\n                    return null;\r\n                }));\r\n    }\r\n\r\n    /**\r\n     * Animates the carousel for going forward.\r\n     *\r\n     * @returns A void observable of the animation event.\r\n     */\r\n    private animateCarouselForward(): Observable<void> {\r\n        this.animating = true;\r\n        return Animator.slideOutToLeft(this.carouselContent, AnimationDuration.Xs, true)\r\n            .pipe(mergeMap(() => {\r\n                if (this.carouselIndex === this.items.length - 1) {\r\n                    this.carouselIndex = 0;\r\n                } else {\r\n                    this.carouselIndex++;\r\n                }\r\n\r\n                return Animator.slideInToLeft(this.carouselContent, AnimationDuration.Xs, true);\r\n            }),\r\n                map(() => {\r\n                    this.animating = false;\r\n                }));\r\n    }\r\n\r\n    /**\r\n     * Updates the hide settings of the current banner item.\r\n     *\r\n     * @param hideType The preferred settings of hiding the current banner from the user.\r\n     * @returns A void observable of updating the banner setting.\r\n     */\r\n    private updateBannerHideSettings(hideType: BannerHideType): Observable<void> {\r\n        return this.appContextService.settingsManager.getCommonUserSettings()\r\n            .pipe(mergeMap((userSettings: CommonUserSettings) => {\r\n                return userSettings.trySave(() => {\r\n                    const bannerSetting = MsftSme.find(userSettings.banners, (x) => x.id === this.currentItem.id);\r\n\r\n                    if (MsftSme.isNullOrUndefined(bannerSetting)) {\r\n                        userSettings.banners.push({ id: this.currentItem.id, hideType: hideType });\r\n                    } else {\r\n                        bannerSetting.hideType = hideType;\r\n                    }\r\n                });\r\n            }));\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { BannerComponent } from './banner.component';\r\n\r\n@NgModule({\r\n    declarations: [BannerComponent],\r\n    exports: [BannerComponent],\r\n    imports: [\r\n        CommonModule,\r\n        TooltipModule\r\n    ]\r\n})\r\nexport class BannerModule { }\r\n","export enum BreadcrumbSeparator {\r\n    Slash = 0,\r\n    BackSlash = 1,\r\n    ChevronRight = 2,\r\n    Comma = 3\r\n}\r\n","<div class=\"tool-header-box\" [style.paddingLeft]=\"noLeftPadding ? 0 : null\" *ngIf=\"breadcrumbItems.length > 0\">\r\n  <h3 *ngIf=\"!useToolTitleStyle\" class=\"sme-position-flex-none\">\r\n    <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n  </h3>\r\n  <h4 *ngIf=\"useToolTitleStyle\" class=\"tool-header sme-position-flex-none\">\r\n    <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n  </h4>\r\n</div>\r\n\r\n<ng-template #content>\r\n  <span class=\"sme-behavior-hover-trigger\" *ngFor=\"let item of breadcrumbItems; let last = last\">\r\n    <a class=\"sme-behavior-hover-target-underline sme-focus-zone\" tabindex=\"0\" role=\"link\" *ngIf=\"item.clickable\" (click)=\"item.command($event)\" [class.sme-font-family-normal]=\"!item.bold\">{{item.label}}</a>\r\n    <span *ngIf=\"!item.clickable\" [attr.aria-label]=\"item.label\" [class.sme-font-family-normal]=\"!item.bold\">{{item.label}}</span>\r\n\r\n    <!-- separator -->\r\n    <span *ngIf=\"!last\" [ngSwitch]=breadcrumbSeparator class=\"sme-font-family-normal\">\r\n      <span *ngSwitchCase=\"0\">&nbsp;\\&nbsp;</span>\r\n      <span *ngSwitchCase=\"1\">&nbsp;/&nbsp;</span>\r\n      <span *ngSwitchCase=\"2\" class=\"sme-icon sme-icon-chevronRight sme-icon-size-sm\"></span>\r\n    </span>\r\n  </span>\r\n</ng-template>\r\n","import { Component, Injector, Input } from '@angular/core';\r\nimport { BreadcrumbSeparator } from '../breadcrumb/models/breadcrumb-separator';\r\nimport { SpacerBaseDirective } from '../common/spacer-base.component';\r\nimport { BreadcrumbItem } from './models/breadcrumb-item';\r\n\r\n@Component({\r\n    selector: 'sme-breadcrumb-header',\r\n    templateUrl: './breadcrumb-header.component.html'\r\n})\r\n/**\r\n * @deprecated since '09/01/18'\r\n */\r\nexport class BreadcrumbHeaderComponent extends SpacerBaseDirective {\r\n    /**\r\n     * List of items to be shown on the breadcrumb.\r\n     */\r\n    @Input() public breadcrumbItems: BreadcrumbItem[] = [];\r\n\r\n    /**\r\n     * Separator to be use to separate breadcrumb items.\r\n     */\r\n    @Input() public breadcrumbSeparator: BreadcrumbSeparator;\r\n\r\n    /**\r\n     * It indicates whether to use tool title style.\r\n     */\r\n    @Input()\r\n    public useToolTitleStyle = false;\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    protected get logSourceName() {\r\n        return 'BreadcrumbHeaderComponent';\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { BreadcrumbHeaderComponent } from './breadcrumb-header.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        BreadcrumbHeaderComponent\r\n    ],\r\n    declarations: [\r\n        BreadcrumbHeaderComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        TooltipModule\r\n    ]\r\n})\r\nexport class BreadcrumbHeaderModule { }\r\n","<span *ngFor=\"let item of breadcrumbs; let last = last\">\r\n  <!-- label -->\r\n  <span class=\"sme-behavior-hover-trigger\" [class.sme-font-family-bold]=\"item.emphasized\">\r\n    <a *ngIf=\"item.action\" class=\"sme-behavior-hover-target-underline sme-focus-zone\" tabindex=\"0\" role=\"link\" (click)=\"item.action($event)\">{{item.label}}</a>\r\n    <span tabindex=\"0\" [attr.aria-label]=\"item.label\" *ngIf=\"!item.action\">{{item.label}}</span>\r\n  </span>\r\n\r\n  <!-- separator -->\r\n  <span *ngIf=\"!last\" [ngSwitch]=\"separator\" class=\"sme-breadcrumb-separator\">\r\n    <span *ngSwitchCase=\"0\" aria-hidden=\"true\">&nbsp;\\&nbsp;</span>\r\n    <span *ngSwitchCase=\"1\" aria-hidden=\"true\">&nbsp;/&nbsp;</span>\r\n    <span *ngSwitchCase=\"2\" class=\"sme-icon sme-icon-chevronRight\" aria-hidden=\"true\"></span>\r\n    <span *ngSwitchCase=\"3\" aria-hidden=\"true\">&nbsp;,&nbsp;</span>\r\n  </span>\r\n</span>\r\n","import { Component, Injector, Input } from '@angular/core';\r\n\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { Breadcrumb } from './models/breadcrumb';\r\nimport { BreadcrumbSeparator } from './models/breadcrumb-separator';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Breadcrumb @id sme-breadcrumb}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/breadcrumb-overview.md}\r\n *\r\n * @example {@label Basic Usage @id sme-dev-guide-controls-breadcrumb}\r\n * @file {@filename component.html @filepath ./examples/breadcrumb-example.component.html}\r\n * @file {@filename component.ts @filepath ./examples/breadcrumb-example.component.ts}\r\n *\r\n */\r\n@Component({\r\n    selector: 'sme-breadcrumb',\r\n    templateUrl: './breadcrumb.component.html'\r\n})\r\nexport class BreadcrumbComponent extends CoreBaseComponent {\r\n\r\n    private static separators = {\r\n        slash: BreadcrumbSeparator.Slash,\r\n        backSlash: BreadcrumbSeparator.BackSlash,\r\n        chevronRight: BreadcrumbSeparator.ChevronRight,\r\n        comma: BreadcrumbSeparator.Comma\r\n    };\r\n\r\n    public get separators() {\r\n        return BreadcrumbComponent.separators;\r\n    }\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'BreadcrumbComponent';\r\n    }\r\n\r\n    /**\r\n     * List of items to be shown on the breadcrumb.\r\n     */\r\n    @Input() public breadcrumbs: Breadcrumb[];\r\n\r\n    /**\r\n     * Separator to be use to separate breadcrumb items.\r\n     */\r\n    @Input() public separator: BreadcrumbSeparator;\r\n\r\n    /**\r\n     * Initializes a new instance of the @see BreadcrumbComponent class.\r\n     * @param injector The angular injection service. required by @SmeInjectableBase() decorator in the base @see BaseComponent class\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.breadcrumbs = [];\r\n        this.separator = BreadcrumbSeparator.Slash;\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-layout-breadcrumb',\r\n            'sme-focus-zone',\r\n            'sme-font-family-normal'\r\n        ]);\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { BreadcrumbComponent } from './breadcrumb.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        BreadcrumbComponent\r\n    ],\r\n    declarations: [\r\n        BreadcrumbComponent\r\n    ],\r\n    imports: [\r\n        CommonModule\r\n    ]\r\n})\r\nexport class BreadcrumbModule { }\r\n","<div sme-lint-disable class=\"sme-layout-relative\" [style.width]=\"setWidth\" [style.height]=\"setHeight\">\r\n  <canvas aria-hidden=\"true\" *ngIf=\"useParentHeightAndWidth\" width=\"100%\" height=\"100%\" (click)=\"onCanvasClick($event)\"></canvas>\r\n  <canvas aria-hidden=\"true\" *ngIf=\"!useParentHeightAndWidth\" (click)=\"onCanvasClick($event)\"></canvas>\r\n</div>\r\n","import {\r\n    AfterViewInit,\r\n    Component,\r\n    EventEmitter,\r\n    Injector,\r\n    Input,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output\r\n} from '@angular/core';\r\nimport { Chart, ChartOptions } from 'chart.js';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\n\r\n@Component({\r\n    selector: 'sme-chart',\r\n    templateUrl: './chart.component.html'\r\n})\r\nexport class ChartComponent extends CoreBaseComponent implements AfterViewInit, OnDestroy, OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'ChartComponent';\r\n    }\r\n\r\n    /**\r\n     * Input for chart.js chart type.\r\n     */\r\n    @Input()\r\n    public type: string;\r\n\r\n    /**\r\n     * Input for chart.js configuration options\r\n     */\r\n    @Input()\r\n    public options: ChartOptions = {};\r\n\r\n    /**\r\n     * The width of the chart. Used only if responsive is false.\r\n     */\r\n    @Input()\r\n    public width: string;\r\n\r\n    /**\r\n     * Gets the configured width or null if the chart is responsive.\r\n     */\r\n    public get setWidth() {\r\n        return this.responsive ? null : this.width;\r\n    }\r\n\r\n    /**\r\n     * The height of the chart. Used only if responsive is false.\r\n     */\r\n    @Input()\r\n    public height: string;\r\n\r\n    /**\r\n     * Gets the configured height or null if the chart is responsive.\r\n     */\r\n    public get setHeight() {\r\n        return this.responsive ? null : this.height;\r\n    }\r\n\r\n    /**\r\n     * Indicates that this chart should use responsive sizing.\r\n     */\r\n    @Input()\r\n    public responsive = true;\r\n\r\n    /**\r\n     * Output that emits when a data element is selected in the chart\r\n     * @deprecated since 9/25/2019. Please use 'dataSelected' instead\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\r\n    @Output() public get onDataSelect(): EventEmitter<any> {\r\n        return this.dataSelected;\r\n    }\r\n    @Output() public dataSelected = new EventEmitter<any>();\r\n\r\n    /**\r\n     * Surfaces the internal chart canvas for direct modification\r\n     */\r\n    public get canvas() {\r\n        return this.hostElement.nativeElement.querySelector('canvas');\r\n    }\r\n\r\n    /**\r\n     * Surfaces the internal chart.js control for direct modification\r\n     */\r\n    public chart: Chart;\r\n\r\n    /**\r\n     * Input for data for the chart\r\n     */\r\n    @Input()\r\n    public get data(): any {\r\n        return this.internalData;\r\n    }\r\n    public set data(val: any) {\r\n        this.internalData = val;\r\n        this.initialize();\r\n    }\r\n\r\n    /**\r\n     * Indicates that the chart has been initialized and is ready for consumption\r\n     */\r\n    public initialized: boolean;\r\n\r\n    /**\r\n     * Internal backing for the data property\r\n     */\r\n    private internalData: any;\r\n\r\n    /**\r\n     * use width=\"100%\" and height=\"100%\" on the canvas\r\n     * required for doughnut chartss\r\n     */\r\n    public useParentHeightAndWidth = false;\r\n\r\n    /**\r\n     * Constructs a new instance of @see ChartComponent\r\n     * @param injector the injector service for the base class of this component\r\n     */\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular ngOnInit interface\r\n     * sets height and width settings\r\n     */\r\n    public ngOnInit(): void {\r\n        if (this.type === 'doughnut') {\r\n            this.useParentHeightAndWidth = true;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular ngAfterViewInit interface\r\n     */\r\n    public ngAfterViewInit() {\r\n        super.ngAfterViewInit();\r\n        this.initialize();\r\n        this.initialized = true;\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular ngOnDestroy interface\r\n     */\r\n    public ngOnDestroy() {\r\n        super.ngOnDestroy();\r\n        if (this.chart) {\r\n            this.chart.destroy();\r\n            this.initialized = false;\r\n            this.chart = null;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Occurs when the canvas is clicked.\r\n     * Emits dataSelected if a data element was clicked.\r\n     */\r\n    public onCanvasClick(event) {\r\n        if (this.chart) {\r\n            const element = this.chart.getElementAtEvent(event);\r\n            const dataset = this.chart.getDatasetAtEvent(event);\r\n            if (element && element[0] && dataset) {\r\n                this.dataSelected.emit({ originalEvent: event, element: element[0], dataset: dataset });\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Initializes the chart. If the chart was previously initialized, it is first destroyed.\r\n     */\r\n    public initialize() {\r\n        // destroy chart if previously created\r\n        if (this.chart) {\r\n            this.chart.destroy();\r\n        }\r\n        // preserve options referential integrety\r\n        const originalOptions = this.options || {};\r\n        const options = MsftSme.deepCopy(originalOptions);\r\n        MsftSme.deepAssign(originalOptions, { responsive: this.responsive }, options);\r\n\r\n        // create new\r\n        if (this.canvas) {\r\n            this.chart = new Chart(\r\n                this.canvas,\r\n                {\r\n                    type: this.type,\r\n                    data: this.data,\r\n                    options: originalOptions\r\n                }\r\n            );\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Refreshes and redraws the chart\r\n     */\r\n    public refresh() {\r\n        if (this.chart) {\r\n            this.chart.update();\r\n        }\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ChartComponent } from './chart.component';\r\n\r\n@NgModule({\r\n    imports: [CommonModule],\r\n    exports: [ChartComponent],\r\n    declarations: [ChartComponent]\r\n})\r\nexport class ChartModule { }\r\n","import { Directive, Injector, Input } from '@angular/core';\r\nimport { CoreBaseComponent } from './base.component';\r\n\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class CapacityBase extends CoreBaseComponent {\r\n\r\n    public static readonly defaults = {\r\n        warningThreshold: 0.75,\r\n        criticalThreshold: 0.9,\r\n        greenColorScheme: ['#02a28c', '#1bdbb6'],\r\n        redColorScheme: ['#f64747', '#ffb6b6'],\r\n        yellowColorScheme: ['#Fbbc05', '#FFEB4D'],\r\n        freeColor: '#DDD'\r\n    };\r\n\r\n    /**\r\n     * Sets the yellow threshold. Default is 0.75, use yellowThreshold='disabled' to disable\r\n     * @deprecated since 07/23/18. Please use 'CapacityBase.warningThreshold' instead\r\n     */\r\n    @Input()\r\n    public set yellowThreshold(value: number | string) {\r\n        this.internalYellowThreshold = value;\r\n    }\r\n    public get yellowThreshold(): number | string {\r\n        return this.internalYellowThreshold;\r\n    }\r\n\r\n    /**\r\n     * Sets the red threshold. Default is 0.9, use redThreshold='disabled' to disable\r\n     * @deprecated since 07/23/18. Please use 'CapacityBase.criticalThreshold' instead\r\n     */\r\n    @Input()\r\n    public set redThreshold(value: number | string) {\r\n        this.internalRedThreshold = value;\r\n    }\r\n    public get redThreshold(): number | string {\r\n        return this.internalRedThreshold;\r\n    }\r\n\r\n    /**\r\n     * Sets the warning threshold. Default is 0.75, use warningThreshold='disabled' to disable\r\n     */\r\n    @Input()\r\n    public warningThreshold?: number | string;\r\n\r\n    /**\r\n     * Sets the critical threshold. Default is 0.9, use criticalThreshold='disabled' to disable\r\n     */\r\n    @Input()\r\n    public criticalThreshold?: number | string;\r\n\r\n    /**\r\n     * Sets the color change thresholds in reverse order (red is low and green is high)\r\n     */\r\n    @Input() public reverseThresholdOrder?: boolean;\r\n\r\n    /**\r\n     * The total capacity of the chart\r\n     */\r\n    @Input() public total?: number;\r\n\r\n    /**\r\n     * The the color scheme for values less than the yellow threshold value. Defaults to default green color scheme\r\n     */\r\n    @Input() public normalColorScheme?: string[];\r\n\r\n    /**\r\n     * The the color scheme for values greater than the yellow threshold value but ess than the red threshold.\r\n     * Defaults to default yellow color scheme\r\n     */\r\n    @Input() public warningColorScheme?: string[];\r\n\r\n    /**\r\n     * The the color scheme for values greater than than the yellow threshold value.\r\n     * Defaults to default red color scheme\r\n     */\r\n    @Input() public criticalColorScheme?: string[];\r\n\r\n    /**\r\n     * The the color scheme for the background bar color\r\n     * Defaults to default free color\r\n     */\r\n    @Input() public freeColor?: string;\r\n\r\n    public internalRedThreshold: number | string;\r\n    public internalYellowThreshold: number | string;\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.warningThreshold = CapacityBase.defaults.warningThreshold;\r\n        this.criticalThreshold = CapacityBase.defaults.criticalThreshold;\r\n        this.normalColorScheme = CapacityBase.defaults.greenColorScheme;\r\n        this.warningColorScheme = CapacityBase.defaults.yellowColorScheme;\r\n        this.criticalColorScheme = CapacityBase.defaults.redColorScheme;\r\n        this.freeColor = CapacityBase.defaults.freeColor;\r\n    }\r\n\r\n    protected getColorScheme(amountUsed: number): string[] {\r\n        if (this.isAboveThreshold(amountUsed, this.redThreshold || this.criticalThreshold)) {\r\n            return this.reverseThresholdOrder ? this.normalColorScheme : this.criticalColorScheme;\r\n        }\r\n\r\n        if (this.isAboveThreshold(amountUsed, this.yellowThreshold || this.warningThreshold)) {\r\n            return this.warningColorScheme;\r\n        }\r\n\r\n        return this.reverseThresholdOrder ? this.criticalColorScheme : this.normalColorScheme;\r\n    }\r\n\r\n    protected getStateString(amountUsed: number): string {\r\n        if (this.isAboveThreshold(amountUsed, this.redThreshold || this.criticalThreshold)) {\r\n            return this.reverseThresholdOrder ?\r\n                this.strings.MsftSmeShell.Angular.Common.Capacity.normalState\r\n                : this.strings.MsftSmeShell.Angular.Common.Capacity.criticalState;\r\n        }\r\n        if (this.isAboveThreshold(amountUsed, this.yellowThreshold || this.warningThreshold)) {\r\n            return this.strings.MsftSmeShell.Angular.Common.Capacity.warningState;\r\n        }\r\n\r\n        return this.reverseThresholdOrder ?\r\n            this.strings.MsftSmeShell.Angular.Common.Capacity.criticalState\r\n            : this.strings.MsftSmeShell.Angular.Common.Capacity.normalState;\r\n    }\r\n\r\n    private isAboveThreshold(amountUsed: number, threshold: number | string): boolean {\r\n        return threshold !== 'disabled' && amountUsed / this.total > threshold;\r\n    }\r\n\r\n}\r\n","import { Debounce as CoreDebounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\n\r\n/*\r\n * @Debounce() Method Decorator\r\n */\r\nexport function Debounce(delay: number = 200, immediateExecution = false): MethodDecorator {\r\n    return CoreDebounce(delay, immediateExecution);\r\n}\r\n","import { ActivatedRouteSnapshot } from '@angular/router';\r\nimport { createUniversalDecorator } from '@microsoft/windows-admin-center-sdk/core/base/decorators/base';\r\nimport { AppContextService } from '../../../service/app-context.service';\r\nimport { NavigationTitle, navigationTitleFunctionName } from '../../../service/navigation';\r\n\r\n/**\r\n * Defines the options for the navigation title decorator\r\n */\r\nexport interface NavigationTitleDecoratorOptions {\r\n    /**\r\n     * Gets the navigation title\r\n     */\r\n    getTitle: (appContextService?: AppContextService, snapshot?: ActivatedRouteSnapshot) => NavigationTitle;\r\n}\r\n\r\nclass NavigationTitleDecorator {\r\n    constructor(private options: NavigationTitleDecoratorOptions) { }\r\n\r\n    public class(target: Function): void {\r\n        if (target[navigationTitleFunctionName]) {\r\n            throw new Error(`${navigationTitleFunctionName} is already defined on decorated class: ${target.name}`);\r\n        }\r\n        // add static navigationTitle property to the class.\r\n        target[navigationTitleFunctionName] =\r\n            (appContextService, snapshot) => this.options.getTitle(appContextService, snapshot);\r\n    }\r\n}\r\n\r\n/**\r\n * Decorator for adding a navigation title to a component (adds a static navigationTitle method to the component)\r\n * @param options The options for the decorator\r\n * @return a typescript decorator function (depends on the member type being decorated)\r\n */\r\nexport function NavigationTitle(options: NavigationTitleDecoratorOptions): any {\r\n    const decorator = new NavigationTitleDecorator(options);\r\n    // Create as a decorator that supports Classes. Accessors, Methods, Properties and Parameters are not supported.\r\n    return createUniversalDecorator({\r\n        name: 'NavigationTitle',\r\n        classDecorator: decorator.class.bind(decorator)\r\n    });\r\n}\r\n","import { Yield as CoreYield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\n\r\n/* eslint-disable */\r\n\r\n/*\r\n * @Yield() Method Decorator\r\n */\r\nexport function Yield(): MethodDecorator {\r\n    return CoreYield();\r\n}\r\n","import { AbstractControl, AsyncValidatorFn, FormControl, FormGroup, ValidatorFn } from '@angular/forms';\r\nimport { createUniversalDecorator } from '@microsoft/windows-admin-center-sdk/core/base/decorators/base';\r\n\r\n/**\r\n* Defines the options for the form field decorator\r\n*/\r\nexport interface FormFieldDecoratorOptions<T> {\r\n    /**\r\n     * The initial value of the form field when it is pristine\r\n     */\r\n    initialValue?: T;\r\n\r\n    /**\r\n     * an array of validators to setup for the form field\r\n     */\r\n    validators?: ValidatorFn[];\r\n\r\n    /**\r\n     * an array of async validators to setup for the form field\r\n     */\r\n    asyncValidators?: AsyncValidatorFn[];\r\n}\r\n\r\n/**\r\n* A helper class for accessing a form field\r\n*/\r\nexport class FormFieldAccessor<T> {\r\n    /**\r\n     * Gets the form fields underlying control\r\n     */\r\n    public get control(): AbstractControl {\r\n        const form = this.getForm();\r\n        return form ? form.controls[this.field] : null;\r\n    }\r\n\r\n    /**\r\n     * Gets the form fields value\r\n     */\r\n    public get value(): T {\r\n        const control = this.control;\r\n        return control ? control.value : null;\r\n    }\r\n\r\n    /**\r\n     * Sets the form fields value\r\n     */\r\n    public set value(value: T) {\r\n        if (this.control) {\r\n            this.control.setValue(value);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the FormFieldAccessor\r\n     * @param field the name of the form field\r\n     * @param getForm a getter for the form that our field belongs too\r\n     * @param options the form creation options passed to the form field decorator\r\n     */\r\n    constructor(private field: string, private getForm: () => FormGroup, public options: FormFieldDecoratorOptions<T>) { }\r\n}\r\n\r\n/**\r\n* A helper class for accessing a reactive form\r\n*/\r\nexport class ReactiveFormAccessor<T> {\r\n    /**\r\n     * Gets the forms underlying control\r\n     */\r\n    public get control(): FormGroup {\r\n        return this.internalControl;\r\n    }\r\n\r\n    /**\r\n     * Gets the forms value\r\n     */\r\n    public get value(): T {\r\n        const control = this.control;\r\n        return control ? control.value : null;\r\n    }\r\n\r\n    /**\r\n     * Sets the forms value\r\n     */\r\n    public set value(value: T) {\r\n        if (this.control) {\r\n            this.control.setValue(value);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Internal placeholder for the forms underlying control\r\n     */\r\n    private internalControl: FormGroup;\r\n\r\n    /**\r\n     * Initializes a new instance of the ReactiveFormAccessor\r\n     * @param fields a getter for the map of field accessors created by the FormField decorator\r\n     */\r\n    constructor(private fields: () => MsftSme.StringMap<FormFieldAccessor<any>>) { }\r\n\r\n    /**\r\n     * Initializes our reactive form control with registers fields from our fields map.\r\n     */\r\n    public initialize() {\r\n        this.internalControl = new FormGroup({});\r\n        const fields = this.fields();\r\n        Object.keys(fields).forEach(key => {\r\n            const field = fields[key];\r\n            this.control.addControl(\r\n                key,\r\n                new FormControl(field.options.initialValue, field.options.validators, field.options.asyncValidators)\r\n            );\r\n        });\r\n    }\r\n}\r\n\r\n/**\r\n* Constant key for the managing the form decoration properties\r\n*/\r\nexport const smeFormDecoratorKey = '__SmeFormDecorator__';\r\n\r\n/**\r\n* Helper class to manage our form decorators on a class instance\r\n*/\r\nexport class FormDecorator {\r\n    /**\r\n     * map of field accessors created by the FormField decorator\r\n     */\r\n    public fields: MsftSme.StringMap<FormFieldAccessor<any>>;\r\n\r\n    /**\r\n     * the form accessor created by the ReactiveForm Decorator\r\n     */\r\n    public form: ReactiveFormAccessor<any> = new ReactiveFormAccessor<any>(() => this.fields);\r\n\r\n    /**\r\n     * Registers a form field accessor using the options created by a form field decorator\r\n     */\r\n    public registerField<T>(key: string, options: FormFieldDecoratorOptions<T>): FormFieldAccessor<T> {\r\n        if (!this.fields) { this.fields = {}; }\r\n        this.fields[key] = new FormFieldAccessor(key, () => this.form.control, options);\r\n        return this.fields[key];\r\n    }\r\n}\r\n\r\n/**\r\n* Helper class to manage our form decorators on a class instance\r\n*/\r\nexport class FormDecoratorCreator {\r\n    /**\r\n     * Gets (or creates) the instance of this helper class on the class of a decorated property\r\n     */\r\n    private getFormDecorator(target: any): FormDecorator {\r\n        if (!target[smeFormDecoratorKey]) {\r\n            target[smeFormDecoratorKey] = new FormDecorator();\r\n        }\r\n        return target[smeFormDecoratorKey];\r\n    }\r\n    /**\r\n     * Gets the form field property decorator\r\n     */\r\n    public formField<T>(options: FormFieldDecoratorOptions<T>, target: any, propertyKey: string) {\r\n        const decorator = this.getFormDecorator(target);\r\n        target[propertyKey] = decorator.registerField(propertyKey, options);\r\n    }\r\n\r\n    /**\r\n     * Gets the Reactive Form property decorator\r\n     */\r\n    public reactiveForm<T>(target: any, propertyKey: string) {\r\n        const decorator = this.getFormDecorator(target);\r\n        target[propertyKey] = decorator.form;\r\n    }\r\n}\r\n\r\n/**\r\n* Decorator for simplifying the usage of reactive forms by abstracting the form field accessors into a single property\r\n*/\r\nexport function FormField<T>(options?: FormFieldDecoratorOptions<T>) {\r\n    const decorator = new FormDecoratorCreator();\r\n    return createUniversalDecorator({\r\n        name: 'FormField',\r\n        propertyDecorator: decorator.formField.bind(decorator, options)\r\n    });\r\n}\r\n\r\n/**\r\n* Decorator for simplifying the usage of reactive forms by abstracting the reactive form (FormGroup) accessors into a single property\r\n*/\r\nexport function ReactiveForm() {\r\n    const decorator = new FormDecoratorCreator();\r\n    return createUniversalDecorator({\r\n        name: 'FormField',\r\n        propertyDecorator: decorator.reactiveForm.bind(decorator)\r\n    });\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { ActionItem } from '../actions';\r\n\r\n@Component({\r\n    selector: 'sme-context-dropdown',\r\n    templateUrl: './context-dropdown.component.html'\r\n})\r\n\r\nexport class ContextDropdownComponent {\r\n\r\n    @Input()\r\n    public actionGroupTitle: string;\r\n\r\n    @Input()\r\n    public actions: ActionItem[] = [];\r\n\r\n}\r\n","<sme-dropdown #dropDown class=\"sme-position-flex-none\" role=\"presentation\" [displayToSide]=\"true\">\r\n  <button #dropDownButton role=\"menuitem\" type=\"button\"\r\n    class=\"sme-button-trigger sme-layout-action-bar-item-height sme-button-auto-width sme-button-align-left sme-position-stretch-h sme-dropdown-toggle\">\r\n    <span>{{ actionGroupTitle }}</span>\r\n    <span class=\"sme-icon sme-icon-size-xxs sme-icon-chevronRight sme-position-right-inline\"></span>\r\n  </button>\r\n  <sme-action-menu [actions]=\"actions\" role=\"menu\" class=\"sme-dropdown-content\"></sme-action-menu>\r\n</sme-dropdown>","  <sme-dropdown *ngIf=\"isOpen\"  [isContextMenu]=\"true\" class=\"sme-layout-fixed sme-layer-dialog sme-focus-zone\"  [ngStyle]=\"getMenuPosition()\">\r\n    <div role=\"menu\" class=\"sme-dropdown-content\">\r\n       <ng-content></ng-content>\r\n       <sme-action-menu #actionBar [actions]=\"contextMenuItems\" [target]=\"target\" role=\"menu\"></sme-action-menu>\r\n    </div>\r\n</sme-dropdown>\r\n","import { ElementRef, EventEmitter, Injector, Input, Output, Component } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { ActionItem } from '../actions';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Context-Menu @id sme-context-menu}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/context-menu-overview.md}\r\n *\r\n * @example {@label Basic Usage @id sme-dev-guide-controls-context-menu}\r\n * @file {@filename component.html @filepath ./examples/context-menu-example.component.html}\r\n * @file {@filename component.ts @filepath ./examples/context-menu-example.component.ts}\r\n *\r\n * @example {@label Nested Actions Usage @id sme-nested-actions-guide}\r\n * @file {@filename component.html @filepath ./examples/nested-context-menu-example.component.html}\r\n * @file {@filename component.ts @filepath ./examples/context-menu-example.component.ts}\r\n */\r\n\r\n@Component({\r\n  selector: 'sme-context-menu',\r\n  templateUrl: './context-menu.component.html'\r\n})\r\n\r\nexport class ContextMenuComponent extends CoreBaseComponent {\r\n\r\n  /**\r\n   * The source name to use for logging\r\n   */\r\n  protected get logSourceName() {\r\n    return 'ContextMenuComponent';\r\n  }\r\n\r\n  /**\r\n   * Gets the items to display in the contextmenu -they should of type actionItem\r\n  */\r\n  @Input()\r\n  public contextMenuItems: ActionItem[] = [];\r\n\r\n  /**\r\n   * Gets the mouse right-click event for positioning\r\n  */\r\n  @Input()\r\n  public mouseEventData: MouseEvent;\r\n\r\n  /**\r\n   * Target data model for app bar passed to all contained actions when any action executes or app bar changes states\r\n   * (e.g. on enabled/disabled)\r\n   */\r\n  @Input()\r\n  public target: any;\r\n\r\n  /**\r\n   *Takes in a function that is executed once an actionItem is clicked\r\n  */\r\n  @Output()\r\n  public contextMenuItemClick: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  /**\r\n   * Value that toggles the contextmenu\r\n  */\r\n  public isOpen = false;\r\n\r\n  constructor(injector: Injector, private element: ElementRef) {\r\n    super(injector);\r\n  }\r\n\r\n  /**\r\n   * Function that does the positioning of the contextmenu depending on the right-click\r\n  */\r\n  public getMenuPosition() {\r\n    if (this.mouseEventData) {\r\n      return {\r\n        top: `${this.mouseEventData.clientY}px`,\r\n        left: `${this.mouseEventData.clientX}px`\r\n      };\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Function that adds focus to the element when using the keyboard\r\n  */\r\n  @Debounce(1)\r\n  public autoFocus() {\r\n    if (this.element.nativeElement) {\r\n      const firstFocusable = Dom.getFirstFocusableDescendent(this.element.nativeElement);\r\n      if (firstFocusable) {\r\n        firstFocusable.focus();\r\n      }\r\n    }\r\n  }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\nimport { KeyCode } from '@microsoft/windows-admin-center-sdk/core/data/accessibility-manager';\r\nimport { ContextMenuComponent } from './context-menu.component';\r\n\r\n/**\r\n * Directive that controls the opening and the closing of the context-menu,\r\n * once the host element is right-clicked\r\n*/\r\n@Directive({\r\n    selector: '[smeContextMenu]'\r\n})\r\nexport class ContextMenuDirective {\r\n\r\n    @Input()\r\n    public smeContextMenu: ContextMenuComponent;\r\n\r\n    public constructor(public el: ElementRef) {\r\n    }\r\n\r\n    /**\r\n     * Listens for the right-click event on the host\r\n     * Opens custom contextmenu except when text is highlighted or link is clicked\r\n    */\r\n    @HostListener('contextmenu', ['$event']) onClick(event: Event) {\r\n        const tagElement = event.target as HTMLElement;\r\n        if (tagElement.tagName.toUpperCase() === 'A' || window.getSelection().toString() !== '') {\r\n            this.el.nativeElement.enableRightClickSelect = false;\r\n        } else {\r\n            event.preventDefault();\r\n            this.el.nativeElement.enableRightClickSelect = true;\r\n            this.openContextMenu(event);\r\n        }\r\n\r\n    }\r\n\r\n    // Closes the context menu when a click event is fired\r\n    @HostListener('document:click')\r\n    documentClick(): void {\r\n        this.smeContextMenu.isOpen = false;\r\n    }\r\n\r\n    // Prevents tab key event from closing the context menu\r\n    @HostListener('keyup', ['$event'])\r\n    public onKeyup(event: KeyboardEvent) {\r\n        if (event.keyCode === KeyCode.Tab) {\r\n            event.preventDefault();\r\n            event.stopPropagation();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Called once right-click is triggered and toggles the isOpen from the contextMenu\r\n     * It controls the opening and closing of contextMenu\r\n    */\r\n    public openContextMenu($event): void {\r\n        this.smeContextMenu.autoFocus();\r\n        if (this.smeContextMenu.isOpen) {\r\n            this.smeContextMenu.isOpen = false;\r\n        }\r\n        setTimeout(() => {\r\n            this.smeContextMenu.mouseEventData = $event;\r\n            this.smeContextMenu.isOpen = true;\r\n        });\r\n    }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ActionsModule } from '../actions/actions.module';\r\nimport { DataTableModule } from '../data-table/data-table.module';\r\nimport { DropdownModule } from '../dropdown/dropdown.module';\r\nimport { ContextDropdownComponent } from './context-dropdown.component';\r\nimport { ContextMenuComponent } from './context-menu.component';\r\nimport { ContextMenuDirective } from './context-menu.directive';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    ContextMenuComponent,\r\n    ContextMenuDirective,\r\n    ContextDropdownComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    ActionsModule,\r\n    DropdownModule,\r\n    DataTableModule\r\n  ],\r\n  exports: [\r\n    ContextMenuComponent,\r\n    ContextMenuDirective,\r\n    ContextDropdownComponent\r\n  ]\r\n})\r\nexport class ContextMenuModule { }\r\n","import { Component, EventEmitter, Injector, Output } from '@angular/core';\r\nimport { EnvironmentModule } from '@microsoft/windows-admin-center-sdk/core/manifest/environment-modules';\r\nimport { Strings } from '../../generated/strings';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\n\r\n@Component({\r\n    selector: 'sme-copilot',\r\n    templateUrl: './copilot.component.html'\r\n})\r\nexport class CopilotComponent extends CoreBaseComponent {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'CopilotComponent';\r\n    }\r\n\r\n    /**\r\n     * Localized set of strings.\r\n     */\r\n    public strings = MsftSme.getStrings<Strings>();\r\n\r\n    /**\r\n     * The text for the copilot.\r\n     */\r\n    public text: string;\r\n\r\n    /**\r\n     * The clicked function for the copilot.\r\n     */\r\n    @Output()\r\n    public copilotButtonClicked: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    public copilotIconUrl: string;\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n\r\n        this.text = this.strings.MsftSmeShell.Angular.Copilot.text;\r\n        this.copilotIconUrl = EnvironmentModule.getFormattedIconRefUrl('/assets/icons/copilot.svg?v=1');\r\n    }\r\n\r\n    /**\r\n     * Handles the click event for the copilot.\r\n     * @param $event the click event.\r\n     */\r\n    public click($event) {\r\n        if ($event) {\r\n            $event.preventDefault();\r\n        }\r\n\r\n        this.copilotButtonClicked.emit();\r\n    }\r\n}\r\n","<!-- The first component for copilot entry point, there will be more -->\r\n<button role=\"menuitem\" type=\"button\" class=\"sme-copilot-button\" (click)=\"click($event)\">\r\n  <span [style.background-image]=\"copilotIconUrl\"></span>\r\n  {{ text }}\r\n</button>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { CopilotComponent } from './copilot.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        CopilotComponent\r\n    ],\r\n    declarations: [\r\n        CopilotComponent\r\n    ],\r\n    imports: [\r\n        CommonModule\r\n    ]\r\n})\r\nexport class CopilotModule { }\r\n","import { SmeResponsiveWindowBreakpoints, SmeResponsiveWindowData, SmeResponsiveWindowManagerComponent } from '../common/sme-responsive-window-manager.component';\r\n\r\nexport interface DetailContentHeight {\r\n    min: number;\r\n    max: number;\r\n    phoneDown: boolean;\r\n}\r\n\r\nexport class DetailsResponsiveWindowManager extends SmeResponsiveWindowManagerComponent {\r\n\r\n    public readonly name = 'sme-details';\r\n\r\n    public shouldContentSlim = false;\r\n    public detailContentHeight: DetailContentHeight;\r\n    public minExpanderHeight: string;\r\n\r\n    private minExpanderHeightValues = {\r\n        Reflow: '32px',\r\n        PhoneDown: '32px',\r\n        PhoneUp: '48px'\r\n    };\r\n\r\n    // TODO: height percentage with min-height will be more precise.\r\n    private maxDetailContentHeightPreset = 600;\r\n\r\n    // TODO: height percentage with min-height will be more precise.\r\n    private minDetailContentHeightPreset = 200;\r\n\r\n    public onWindowSizeChanged(detailsElement: HTMLElement): void {\r\n        if (!detailsElement) {\r\n            return;\r\n        }\r\n\r\n        const size = this.prevSize;\r\n\r\n        if (!size) {\r\n            return;\r\n        }\r\n\r\n        this.updateParameters(size);\r\n\r\n        return;\r\n    }\r\n\r\n    /**\r\n     * Updates the parameters used for the detail view on window size changes.\r\n     * @param size the current size object for the window.\r\n     */\r\n    private updateParameters(size: SmeResponsiveWindowData) {\r\n        this.detailContentHeight = this.getDetailContentHeight(size);\r\n        this.shouldContentSlim = size && (size.phoneDown || size.reflowMode);\r\n        this.minExpanderHeight = this.getMinExpanderHeight(size);\r\n    }\r\n\r\n    private getMinExpanderHeight(size: SmeResponsiveWindowData) {\r\n        switch (size?.size) {\r\n            case SmeResponsiveWindowBreakpoints.Reflow:\r\n                return this.minExpanderHeightValues[SmeResponsiveWindowBreakpoints.Reflow];\r\n            case SmeResponsiveWindowBreakpoints.PhoneDown:\r\n                return this.minExpanderHeightValues[SmeResponsiveWindowBreakpoints.PhoneDown];\r\n            case SmeResponsiveWindowBreakpoints.PhoneUp:\r\n                return this.minExpanderHeightValues[SmeResponsiveWindowBreakpoints.PhoneUp];\r\n            default:\r\n                return this.minExpanderHeightValues[SmeResponsiveWindowBreakpoints.PhoneUp];\r\n        }\r\n    }\r\n\r\n    private getDetailContentHeight(size: SmeResponsiveWindowData): DetailContentHeight {\r\n        return {\r\n            min: this.minDetailContentHeightPreset,\r\n            max: this.maxDetailContentHeightPreset,\r\n            phoneDown: size && (size.phoneDown || size.reflowMode)\r\n        };\r\n    }\r\n}\r\n","<div #expander\r\n  class=\"sme-button sme-button-trigger sme-button-auto-width sme-position-flex-none sme-padding-squish-v-md sme-padding-horizontal-lg sme-position-stretch-h sme-position-left-inline sme-arrange-stack-h sme-focus-zone\"\r\n  role=\"button\" tabindex=\"0\" (click)=\"toggleExpansion()\" [style.min-height]=\"minExpanderHeight\"\r\n  [attr.aria-expanded]=\"!!isExpanded\" [attr.aria-describedBy]=\"idBag.detailsSpan\">\r\n    <ng-container *ngIf=\"showInfoIcon\">\r\n      <sme-layered-icon size=\"16px\" class=\"sme-margin-inset-xxs\">\r\n        <sme-icon-layer class=\"sme-icon sme-icon-infoSolid\"></sme-icon-layer>\r\n      </sme-layered-icon>\r\n    </ng-container>\r\n    <div class=\"sme-arrange-stack-v sme-arrange-line-clamp\">\r\n      <span class=\"sme-font-h3 sme-position-flex-auto sme-arrange-ws-wrap\">{{ header }}</span>\r\n      <ng-container *ngIf=\"!!subHeader\">\r\n        <span class=\"sme-font-body sme-font-family-light sme-position-flex-auto sme-arrange-ellipsis\">{{ subHeader }}</span>\r\n      </ng-container>\r\n    </div>\r\n    <span [style.order]=\"chevronPosition\" *ngIf=\"!chevronInverted\" class=\"sme-icon sme-position-flex-none sme-font-h3\"\r\n      [ngClass]=\"{'sme-icon-chevronUpMed': !isExpanded, 'sme-icon-chevronDownMed': isExpanded}\" [class.sme-chevron-margin-left-auto]=\"pushChevronFarRight\"\r\n      [class.sme-margin-horizontal-xs]=\"!pushChevronFarRight\"\r\n      aria-hidden=\"true\"></span>\r\n    <span [style.order]=\"chevronPosition\" *ngIf=\"chevronInverted\" class=\"sme-icon sme-position-flex-none sme-font-h3\"\r\n      [ngClass]=\"{'sme-icon-chevronUpMed': isExpanded, 'sme-icon-chevronDownMed': !isExpanded}\" [class.sme-chevron-margin-left-auto]=\"pushChevronFarRight\"\r\n      [class.sme-margin-horizontal-xs]=\"!pushChevronFarRight\"\r\n      aria-hidden=\"true\"></span>\r\n    <div class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan\"> {{ resourceStrings.AriaDescription }}</div>\r\n</div>\r\n\r\n<div class=\"sme-position-flex-auto sme-layout-relative sme-focus-zone\" [class.sme-margin-horizontal-lg]=\"shouldContentSlim\" [class.sme-position-stretch-v]=\"autoHeight\">\r\n  <div [ngClass]=\"{'sme-layout-absolute-phone-up sme-position-inset-none sme-padding-bottom-sm sme-arrange-overflow-auto': !autoHeight, 'sme-layout-relative sme-position-stretch-v': autoHeight}\"\r\n    [class.sme-layout-none]=\"!isExpanded\">\r\n    <ng-content></ng-content>\r\n  </div>\r\n</div>\r\n\r\n<hr *ngIf=\"addBottomBorder\">\r\n","import {\r\n    Component,\r\n    ElementRef,\r\n    EventEmitter,\r\n    Inject,\r\n    Injector,\r\n    Input,\r\n    OnChanges,\r\n    Optional,\r\n    Output,\r\n    SimpleChanges,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { Strings } from '../../generated/strings';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../common/layout';\r\nimport { DetailsResponsiveWindowManager } from './details-responsive-window-manager';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Details @id sme-details}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/details-overview.md}\r\n *\r\n * @example {@label Basic Usage @id basic-usage}\r\n * @file {@filename component.ts @filepath ./examples/details-example.component.ts}\r\n * @file {@filename component.html @filepath ./examples/details-example.component.html}\r\n *\r\n */\r\n\r\nexport enum ChevronPosition {\r\n    Left = '-1',\r\n    Right = '0'\r\n}\r\n@Component({\r\n    selector: 'sme-details',\r\n    templateUrl: './details.component.html'\r\n})\r\nexport class DetailsComponent extends CoreBaseComponent implements OnChanges {\r\n\r\n    public get minExpanderHeight() {\r\n        return this.detailsResponsiveWindowManager.minExpanderHeight;\r\n    }\r\n\r\n    public get shouldContentSlim() {\r\n        return this.detailsResponsiveWindowManager.shouldContentSlim;\r\n    }\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'DetailsComponent';\r\n    }\r\n    public resourceStrings = MsftSme.getStrings<Strings>().MsftSmeShell.Angular.Details;\r\n\r\n    @ViewChild('expander')\r\n    public expander: ElementRef;\r\n\r\n    @Input()\r\n    public initialHeightPercentage: number;\r\n\r\n    @Input()\r\n    public header: string;\r\n\r\n    @Input()\r\n    public subHeader: string;\r\n\r\n    @Input()\r\n    public chevronInverted: boolean;\r\n\r\n    @Input()\r\n    public chevronPosition: string;\r\n\r\n    @Input()\r\n    public pushChevronFarRight;\r\n\r\n    @Input()\r\n    public addBottomBorder: boolean;\r\n\r\n    @Input()\r\n    public showInfoIcon: boolean;\r\n    /**\r\n     * The detail component's height will be determined on the whole children's height.\r\n     */\r\n    @Input()\r\n    public autoHeight = false;\r\n\r\n    /**\r\n     * @deprecated since 02/25/2019. Please use 'header' instead\r\n     */\r\n    @Input()\r\n    public set title(value: string) {\r\n        this.header = value;\r\n    }\r\n\r\n    public get title(): string {\r\n        return this.header;\r\n    }\r\n\r\n    @Input()\r\n    public isExpanded: boolean;\r\n\r\n    @Output()\r\n    public isExpandedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n    public layoutChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    public chevronLeftMargin = '0';\r\n\r\n    private detailsResponsiveWindowManager: DetailsResponsiveWindowManager;\r\n\r\n    constructor(injector: Injector, @Optional() @Inject(SME_LAYOUT_PROVIDER) layout: Layout) {\r\n        super(injector);\r\n        this.initialHeightPercentage = 30;\r\n        if (layout) {\r\n            this.detailsResponsiveWindowManager = new DetailsResponsiveWindowManager(layout);\r\n            // on parent layout changes, re-emit the layout change to our event\r\n            this.subscriptions.push(layout.layoutChanged.subscribe((() => this.onLayoutChanged())));\r\n            // on window break point changes, emit the event about critical classes and styling updates signal.\r\n            this.subscriptions.push(layout.windowBreakpointChanged.subscribe(() => this.onWindowBreakpointChanged()));\r\n\r\n            this.deferredOnLayoutChanged();\r\n        }\r\n    }\r\n\r\n    public ngOnChanges(changes: SimpleChanges): void {\r\n        super.ngOnChanges(changes);\r\n        if (changes.isExpanded) {\r\n            this.onLayoutChanged();\r\n        }\r\n    }\r\n\r\n    public toggleExpansion(): void {\r\n        this.isExpanded = !this.isExpanded;\r\n        this.isExpandedChange.emit(this.isExpanded);\r\n        this.onLayoutChanged();\r\n    }\r\n\r\n    public refresh(): void {\r\n        this.onLayoutChanged();\r\n    }\r\n\r\n    /**\r\n     * The on window breakpoint changed handler.\r\n     * Adding yield for component to get ElementRef after initialization.\r\n     */\r\n    @Yield()\r\n    public onWindowBreakpointChanged() {\r\n        this.detailsResponsiveWindowManager.onWindowSizeChanged(this.hostElement?.nativeElement);\r\n    }\r\n\r\n    /**\r\n     * The deferred layout changed handler.\r\n     */\r\n    @Debounce()\r\n    private deferredOnLayoutChanged() {\r\n        this.onLayoutChanged();\r\n    }\r\n\r\n    /**\r\n     * The layout changed event handler.\r\n     */\r\n    @Yield()\r\n    private onLayoutChanged(): void {\r\n        if (!this.hostElement || !this.hostElement.nativeElement) {\r\n            return;\r\n        }\r\n\r\n        const expanderOffsetHeight = MsftSme.getValue<number>(this.expander, 'nativeElement.offsetHeight') || 0;\r\n        const expanderHeight = expanderOffsetHeight > 0 ? `{0}px`.format(expanderOffsetHeight) : this.minExpanderHeight;\r\n        if (!this.isExpanded) {\r\n            this.hostElement.nativeElement.style.height = expanderHeight;\r\n            this.hostElement.nativeElement.style.minHeight = '';\r\n            return;\r\n        }\r\n\r\n        let potentialHeight = this.hostElement.nativeElement.offsetParent.offsetHeight || 0;\r\n        const parentOffsetTop = this.hostElement.nativeElement.offsetParent.offsetTop || 0;\r\n        const totalHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\r\n\r\n        const detailContentHeight = this.detailsResponsiveWindowManager.detailContentHeight;\r\n\r\n        // Enforces a max height when setting the default height.\r\n        const maxHeight = detailContentHeight.max;\r\n        const minHeight = detailContentHeight.min;\r\n        const phoneDown = detailContentHeight.phoneDown;\r\n\r\n        // On small window height, the detail pane height would be the smaller value [window height * 0.6, maxHeight]\r\n        if (phoneDown) {\r\n            potentialHeight = Math.min(totalHeight - parentOffsetTop, potentialHeight);\r\n            // Prevents the initial size exceed max height\r\n            potentialHeight = Math.min(potentialHeight, maxHeight);\r\n            potentialHeight = Math.max(potentialHeight, minHeight);\r\n\r\n            const portHeight = window.innerHeight;\r\n            if (portHeight < minHeight) {\r\n                potentialHeight = minHeight;\r\n            } else if (portHeight > minHeight && portHeight < maxHeight) {\r\n                // Math.ceil can make calculation without rounding issues.\r\n                potentialHeight = Math.ceil(portHeight * 0.6);\r\n            } else if (portHeight > maxHeight && portHeight * 0.4 > maxHeight) {\r\n                potentialHeight = Math.ceil(maxHeight);\r\n            } else if (portHeight > maxHeight && portHeight * 0.4 > minHeight) {\r\n                potentialHeight = Math.ceil(portHeight * 0.4);\r\n            }\r\n\r\n            this.hostElement.nativeElement.style.height = '';\r\n        } else {\r\n            // Shrink only if exceeds parents offset height;\r\n            if (potentialHeight > this.hostElement.nativeElement.offsetParent.offsetHeight) {\r\n                // Set initial expanded height to 30vh.\r\n                // Poor design that needs to re-visit.\r\n                const oneVh = totalHeight / 100;\r\n                potentialHeight = oneVh * this.initialHeightPercentage;\r\n            } else {\r\n                // sme-border-top-sm on the details resizer border.\r\n                // minus the border height to get rid of the extra scroll bar.\r\n                potentialHeight -= 1;\r\n            }\r\n\r\n            potentialHeight = Math.min(potentialHeight, maxHeight);\r\n            potentialHeight = Math.max(potentialHeight, minHeight);\r\n\r\n            this.hostElement.nativeElement.style.minHeight = '';\r\n\r\n            if (!this.autoHeight) {\r\n                this.hostElement.nativeElement.style.height = `{0}px`.format(potentialHeight);\r\n            } else {\r\n                this.hostElement.nativeElement.style.height = '';\r\n            }\r\n        }\r\n\r\n        setTimeout(() => {\r\n            // the height would be changed on window height or width change\r\n            // re-calculate the potential height should be notifying parents.\r\n            this.layoutChanged.emit();\r\n        });\r\n    }\r\n\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-arrange-stack-v'\r\n        ]);\r\n    }\r\n\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: ''\r\n        };\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { IconModule } from '../icon';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { DetailsComponent } from './details.component';\r\n\r\n@NgModule({\r\n    declarations: [DetailsComponent],\r\n    exports: [DetailsComponent],\r\n    imports: [\r\n        CommonModule,\r\n        IconModule,\r\n        TooltipModule\r\n    ]\r\n})\r\nexport class DetailsModule { }\r\n","import { AfterViewInit, Directive, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { DialogCloseReason, DialogComponent } from './dialog.component';\r\nimport { DialogChangeEvent, DialogService } from './dialog.service';\r\n\r\n/**\r\n * The default dialog options.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\nexport interface DialogOptions {\r\n}\r\n\r\n/**\r\n * The default dialog result.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\nexport interface DialogResult {\r\n}\r\n\r\n/**\r\n * The base dialog component for extending.\r\n */\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport class BaseDialogComponent<TOptions extends DialogOptions, TResult extends DialogResult> implements AfterViewInit, OnInit, OnDestroy {\r\n    @Input()\r\n    public id: string;\r\n\r\n    @ViewChild('dialog')\r\n    public dialog: DialogComponent;\r\n\r\n    public dialogResult: Subject<TResult>;\r\n\r\n    /**\r\n     * Keeps the dialog open when another dialog pops up\r\n     * by default the dialog will be closed if another dialog opens while this dialog is visible\r\n     */\r\n    public keepOpen = false;\r\n\r\n    private closeSubscription: Subscription;\r\n\r\n    private set level(value: number) {\r\n        if (this.dialog) {\r\n            this.dialog.dialogLevel = value;\r\n        }\r\n        this.internalLevel = value;\r\n    }\r\n\r\n    private internalLevel = 1;\r\n\r\n    /**\r\n     * Initializes a new instance of the BaseDialogComponent class.\r\n     */\r\n    constructor(protected dialogService: DialogService) {\r\n    }\r\n\r\n    /**\r\n     * The method to run when the component initialized.\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\r\n    public ngOnInit(): void {\r\n        /* empty */\r\n    }\r\n\r\n    /**\r\n     * The method to run after the component view initialized\r\n     */\r\n    public ngAfterViewInit(): void {\r\n        if (!this.dialog) {\r\n            throw new Error('BaseDialogComponent.ngOnInit: Dialog is not defined');\r\n        }\r\n\r\n        if (!this.id) {\r\n            throw new Error('BaseDialogComponent.ngOnInit: ID is not defined');\r\n        }\r\n\r\n        this.level = this.internalLevel;\r\n\r\n        this.dialogService.register(this.id, this);\r\n        this.closeSubscription = this.dialog.closeRequested.subscribe(reason => {\r\n            this.closeRequested(reason);\r\n        });\r\n    }\r\n\r\n    /**\r\n     * The method to run when the component is destroyed.\r\n     */\r\n    public ngOnDestroy(): void {\r\n        this.dialogService?.unregister(this.id);\r\n        this.closeSubscription?.unsubscribe();\r\n    }\r\n\r\n    /**\r\n     * handler for when a close is requested\r\n     * by default this closes the dialog with no result.\r\n     * override this function to prevent this behavior\r\n     * @param reason - reason for the close following DialogCloseReason\r\n     */\r\n    public closeRequested(reason: DialogCloseReason) {\r\n        this.hide();\r\n    }\r\n\r\n    /**\r\n     * Shows the dialog.\r\n     *\r\n     * @param options The options for the dialog.\r\n     * @return The dialog result subject.\r\n     */\r\n    public show(options: TOptions): Subject<TResult> {\r\n        this.dialog.show();\r\n        this.dialogResult = new Subject<TResult>();\r\n        this.dialogService.emitDialogChangeEvent(this.id, DialogChangeEvent.Show);\r\n        return this.dialogResult;\r\n    }\r\n\r\n    /**\r\n     * Sets the level of the dialogso it overlays on top of anything else\r\n     * This is set by the dialog service when a dialog opens another dialog\r\n     * @param level The level of the dialog so it shows up on top of other items. this should be a number greater than 0\r\n     */\r\n    public setLevel(level: number) {\r\n        this.level = level;\r\n    }\r\n\r\n    /**\r\n     * refocuses the keyboard on the dialog\r\n     */\r\n    public autoFocus() {\r\n        this.dialog.autoFocus();\r\n    }\r\n\r\n    /**\r\n     * Hides the dialog.\r\n     *\r\n     * @param result The result of the dialog action.\r\n     */\r\n    public hide(result?: TResult): void {\r\n        this.dialog.hide();\r\n        this.dialogResult.next(result);\r\n        this.dialogResult.complete();\r\n        this.dialogService.resumeFocus(this.id);\r\n        this.dialogService.emitDialogChangeEvent(this.id, DialogChangeEvent.Hide);\r\n    }\r\n\r\n    /**\r\n     * Handles clicking on background\r\n     */\r\n    public onBackgroundClicked() {\r\n        if (this.dialog.clickBackdrop) {\r\n            this.dialog.onBackgroundClicked();\r\n        }\r\n    }\r\n}\r\n","// Module\r\nexport { SmeFormsModule } from './forms.module';\r\n\r\n// Validation Alert\r\nexport { ValidationAlert, ValidationAlerts, ValidationAlertSeverity, ValidationResult } from './validation-alert/validation-alert';\r\nexport { ValidationAlertComponent } from './validation-alert/validation-alert.component';\r\nexport { SME_FORM_FIELD_VALIDATION_ALERT_CONTAINER_PROVIDER, FormFieldContainer } from './form-field/form-field-container';\r\n\r\n// Validators\r\nexport { FormValidatorBase } from './validators/base-validator';\r\nexport { FormAsyncValidatorBase } from './validators/base-async-validator';\r\nexport { CapsLockValidatorDirective, CAPSLOCK_VALIDATOR } from './validators/capslock.directive';\r\nexport { RequiredTrimmedValidatorDirective } from './validators/required-trimmed.directive';\r\nexport { MatchFieldValidatorDirective } from './validators/match.directive';\r\nexport { InputValidatorDirective } from './validators/input-validator.directive';\r\nexport { MachineNameValidatorDirective } from './validators/machine-name.directive';\r\nexport { SME_VALIDATORS, SmeValidator } from './validators/sme-validator';\r\nexport { SME_ASYNC_VALIDATORS, SmeAsyncValidator } from './validators/sme-async-validator';\r\n\r\n// Form Fields\r\nexport { FormFieldComponent, SmeInternalFormFieldComponent } from './form-field/form-field.component';\r\nexport { FormFieldAccessorDirective } from './form-field/form-field-accessor.directive';\r\nexport { FormFieldTemplateDirective } from './form-field/form-field-template.directive';\r\nexport { FormFieldOrientation } from './form-field/form-field-orientation';\r\nexport { DateTimeRangeFormFieldComponent } from './form-field/datetime-range/datetime-range-form-field.component';\r\nexport { DateTimeRangeOptionComponent } from './form-field/datetime-range/datetime-range-option.component';\r\nexport { CheckValidationEventArgs, FormFieldValidatorDirective } from './form-field/form-field-validator.directive';\r\nexport { CheckAsyncValidationEventArgs, FormFieldAsyncValidatorDirective } from './form-field/form-field-async-validator.directive';\r\nexport { TagsFormFieldComponent, TagsFormFieldLoaderComponent } from './form-field/tags/tags-form-field.component';\r\nexport { AskForNewItemEventArgs } from './form-field/array/array-form-field.component';\r\nexport { AskForItemHeaderArgs } from './form-field/array/array-form-field.component';\r\nexport { AskForRemoveEvalFuncArgs } from './form-field/array/array-form-field.component';\r\nexport { CheckboxFormFieldComponent, CheckboxFormFieldLoaderComponent } from './form-field/checkbox/checkbox-form-field.component';\r\nexport { ChecklistFormFieldComponent, ChecklistFormFieldLoaderComponent } from './form-field/checklist/checklist-form-field.component';\r\nexport { CodeFormFieldComponent, CodeFormFieldLoaderComponent } from './form-field/code/code-form-field.component';\r\nexport { CalendarFormFieldComponent } from './form-field/calendar/calendar-form-field.component';\r\nexport { DateFormFieldComponent } from './form-field/date/date-form-field.component';\r\nexport { TimeFormFieldComponent } from './form-field/time/time-form-field.component';\r\nexport { DateTimeFormFieldComponent } from './form-field/datetime/datetime-form-field.component';\r\nexport { ClockFormFieldComponent } from './form-field/clock/clock-form-field.component';\r\nexport { Monaco } from './form-field/code/monaco';\r\nexport { ComboboxFormFieldComponent, ComboboxFormFieldLoaderComponent } from './form-field/combobox/combobox-form-field.component';\r\nexport { FileFormFieldComponent, FileFormFieldLoaderComponent } from './form-field/file/file-form-field.component';\r\nexport { NumberFormFieldComponent, NumberFormFieldLoaderComponent } from './form-field/number/number-form-field.component';\r\nexport {\r\n    OrderedListFormFieldComponent,\r\n    OrderedListFormFieldLoaderComponent\r\n} from './form-field/ordered-list/ordered-list-form-field.component';\r\nexport { PasswordFormFieldComponent, PasswordFormFieldLoaderComponent } from './form-field/password/password-form-field.component';\r\nexport {\r\n    RadioGroupFormFieldComponent,\r\n    RadioGroupFormFieldLoaderComponent\r\n} from './form-field/radio-group/classic/radio-group-form-field.component';\r\nexport { RatingRadioGroupFormFieldComponent } from './form-field/radio-group/rating/rating-radio-group-form-field.component';\r\nexport { TileRadioGroupFormFieldComponent } from './form-field/radio-group/tile/tile-radio-group-form-field.component';\r\nexport { ReadonlyFormFieldComponent } from './form-field/readonly/readonly-form-field.component';\r\nexport { SearchFormFieldComponent } from './form-field/search/search-form-field.component';\r\nexport { SelectFormFieldDirective } from './form-field/combobox/select-form-field.directive';\r\nexport { SliderFormFieldComponent, SliderFormFieldLoaderComponent } from './form-field/slider/slider-form-field.component';\r\nexport { TextFormFieldComponent, TextFormFieldLoaderComponent } from './form-field/text/text-form-field.component';\r\nexport {\r\n    ToggleSwitchFormFieldComponent,\r\n    ToggleSwitchFormFieldLoaderComponent\r\n} from './form-field/toggle-switch/toggle-switch-form-field.component';\r\nexport { ObjectDefaultFormFieldLoaderComponent } from './form-field/object/object-default-form-field-loader.component';\r\nexport { ListFormFieldComponent } from './form-field/list/list-form-field.component';\r\nexport { JsonFormFieldComponent, JsonFormFieldLoaderComponent } from './form-field/json/json-form-field.component';\r\nexport * from './form-field/array/array-form-field.component';\r\n\r\n// Form Field Options\r\nexport { FormFieldOptionComponent } from './form-field/options-form-field/form-field-option.component';\r\nexport {\r\n    FormFieldOptionSubFormTemplateContext,\r\n    FormFieldOptionSubFormTemplateLoaderComponent\r\n} from './form-field/options-form-field/option-subform-template-loader.component';\r\nexport { OptionsFormFieldComponent } from './form-field/options-form-field/options-form-field.component';\r\n\r\n// Other\r\nexport { FormFieldLayoutComponent } from './form-field-layout/form-field-layout.component';\r\nexport { FormFieldIsolatorComponent } from './form-field/isolator/isolator.component';\r\nexport { FieldsetDirective } from './fieldset/fieldset.directive';\r\n","<sme-dialog #dialog dialogMode=\"centered\" [clickBackdrop]='false'>\r\n  <sme-dialog-header>\r\n    <h2 id=\"sme-dialog-title\">{{ title }}</h2>\r\n  </sme-dialog-header>\r\n  <sme-dialog-content>\r\n    <form id=\"sme-confirmation-dialog-form\">\r\n      <p id=\"sme-dialog-desc\">{{ message }}</p>\r\n      <a *ngIf=\"externalLink\" class=\"sme-link\" href=\"{{externalLink.url}}\" target=\"_blank\">{{externalLink.title}}</a>\r\n      <div class=\"sme-margin-top-sm\" *ngIf=\"checkboxText\">\r\n        <sme-form-field type=\"checkbox\" [(ngModel)]=\"checked\" name=\"checked\" [label]=\"checkboxText\">\r\n        </sme-form-field>\r\n      </div>\r\n      <div class=\"sme-margin-top-xs\" *ngIf=\"doubleCheckText\">\r\n        <sme-form-field type=\"checkbox\" [(ngModel)]=\"doubleChecked\" name=\"doubleChecked\" [label]=\"doubleCheckText\">\r\n        </sme-form-field>\r\n      </div>\r\n      <sme-alert *ngIf=\"alert\" class=\"sme-margin-vertical-sm\" [alert]=\"alert\"></sme-alert>\r\n    </form>\r\n  </sme-dialog-content>\r\n  <sme-dialog-footer>\r\n    <button type=\"submit\" form=\"sme-confirmation-dialog-form\" [class.sme-button-critical]=\"isCritical\"\r\n      [class.sme-button-warning]=\"isWarning\" class=\"sme-button-primary sme-focus-zone\"\r\n      [disabled]=\"doubleCheckText && !doubleChecked\" (click)=\"onConfirm()\" data-uta-id=\"dialog-confirm-button\">{{ confirmButtonText }}</button>\r\n    <button class=\"sme-focus-zone\" type=\"button\" (click)=\"onCancel()\" data-uta-id=\"dialog-cancel-button\">{{ cancelButtonText }}</button>\r\n  </sme-dialog-footer>\r\n</sme-dialog>\r\n","import { Component } from '@angular/core';\r\nimport { RpcAlert, RpcAlertSeverity } from '@microsoft/windows-admin-center-sdk/core/rpc/dialog/rpc-dialog-model';\r\nimport { Subject } from 'rxjs';\r\nimport { ValidationAlert, ValidationAlertSeverity } from '../../form';\r\nimport { BaseDialogComponent, DialogOptions, DialogResult } from '../base-dialog.component';\r\nimport { DialogCloseReason } from '../dialog.component';\r\nimport { DialogService } from '../dialog.service';\r\nimport { MessageDialogLink } from '../message-dialog/message-dialog.component';\r\n\r\n/**\r\n * The confirmation dialog options.\r\n */\r\nexport interface ConfirmationDialogOptions extends DialogOptions {\r\n    /**\r\n     * The text for the dialog cancel button.\r\n     */\r\n    cancelButtonText: string;\r\n\r\n    /**\r\n     * The text for the dialog checkbox.\r\n     */\r\n    checkboxText?: string;\r\n\r\n    /**\r\n     * The text for the doubleCheck checkbox\r\n     */\r\n    doubleCheckText?: string;\r\n\r\n    /**\r\n     * The text for the dialog confirm button.\r\n     */\r\n    confirmButtonText: string;\r\n\r\n    /**\r\n     * The message of the dialog body.\r\n     */\r\n    message: string;\r\n\r\n    /**\r\n     * The title of the dialog.\r\n     */\r\n    title: string;\r\n\r\n    /**\r\n     * (Optional) The link to open referenced information on new tab.\r\n     */\r\n    externalLink?: MessageDialogLink;\r\n\r\n    /**\r\n     * If the dialog is opened from Rpc\r\n     */\r\n    isFromRpc?: boolean;\r\n\r\n    /**\r\n     * The alert of the dialog.\r\n     */\r\n    alert?: RpcAlert;\r\n\r\n    /**\r\n     * Set an RpcAlertSeverity value to show a critical or warning button color.\r\n     */\r\n    alertButtonStyle?: RpcAlertSeverity;\r\n}\r\n\r\n/**\r\n * The confirmation dialog result.\r\n */\r\nexport interface ConfirmationDialogResult extends DialogResult {\r\n    /**\r\n     * The result of the dialog confirmation.\r\n     */\r\n    confirmed: boolean;\r\n\r\n    /**\r\n     * The result of the dialog checkbox.\r\n     */\r\n    checkboxResult?: boolean;\r\n}\r\n\r\n/**\r\n * The Confirmation Dialog Component\r\n * @deprecated since 02/20/18. Please use AppContextService.frame.showDialogConfirmation instead\r\n */\r\n@Component({\r\n    selector: 'sme-confirmation-dialog',\r\n    templateUrl: './confirmation-dialog.component.html'\r\n})\r\nexport class ConfirmationDialogComponent extends BaseDialogComponent<ConfirmationDialogOptions, ConfirmationDialogResult> {\r\n\r\n    public alertButtonStyle: RpcAlertSeverity;\r\n    public cancelButtonText: string;\r\n    public checkboxText: string;\r\n    public doubleCheckText: string;\r\n    public checked: boolean;\r\n    public confirmButtonText: string;\r\n    public message: string;\r\n    public title: string;\r\n    public externalLink: MessageDialogLink;\r\n    public alert: ValidationAlert;\r\n\r\n    /**\r\n     *  false value disables confirm button\r\n     */\r\n    public doubleChecked;\r\n\r\n    /**\r\n     * Initializes a new instance of the ConfirmationDialogComponent class.\r\n     */\r\n    constructor(dialogService: DialogService) {\r\n        super(dialogService);\r\n        this.keepOpen = true;\r\n    }\r\n\r\n    /**\r\n     * handler for when a close is requested\r\n     * this override cancels the confirmation when requested to close\r\n     * @param reason - reason for the close following DialogCloseReason\r\n     */\r\n    public closeRequested(reason: DialogCloseReason) {\r\n        this.onCancel();\r\n    }\r\n\r\n    /**\r\n     * Shows the dialog.\r\n     *\r\n     * @param options The options for the dialog.\r\n     * @return The dialog result subject.\r\n     */\r\n    public show(options: ConfirmationDialogOptions): Subject<ConfirmationDialogResult> {\r\n        if (!options) {\r\n            throw new Error('ConfirmationDialogComponent.show: Options are required to show the dialog.');\r\n        }\r\n\r\n        const result = super.show(options);\r\n        this.cancelButtonText = options.cancelButtonText;\r\n        this.checkboxText = options.checkboxText;\r\n        this.doubleCheckText = options.doubleCheckText;\r\n        this.checked = false;\r\n        this.doubleChecked = false;\r\n        this.confirmButtonText = options.confirmButtonText;\r\n        this.message = options.message;\r\n        this.title = options.title;\r\n        this.externalLink = options.externalLink;\r\n        this.alert = options.alert ? {\r\n            message: options.alert.message,\r\n            severity: ValidationAlertSeverity[options.alert.severity.toString()]\r\n        } : null;\r\n        this.alertButtonStyle = options.alertButtonStyle;\r\n\r\n        return result;\r\n    }\r\n\r\n    public get isCritical() {\r\n        return this.alertButtonStyle === RpcAlertSeverity.Error;\r\n    }\r\n    public get isWarning() {\r\n        return this.alertButtonStyle === RpcAlertSeverity.Warning;\r\n    }\r\n\r\n    /**\r\n     * The method to call when the confirm button is clicked.\r\n     */\r\n    public onConfirm(): void {\r\n        this.hide({\r\n            confirmed: true,\r\n            checkboxResult: (this.checkboxText) ? this.checked : null\r\n        });\r\n    }\r\n\r\n    /**\r\n     * The method to call when the cancel button is clicked.\r\n     */\r\n    public onCancel(): void {\r\n        this.hide({\r\n            confirmed: false\r\n        });\r\n    }\r\n}\r\n","<sme-dialog #dialog dialogMode=\"centered\" [clickBackdrop]='false'>\r\n  <sme-dialog-header>\r\n    <h2>{{ title }}</h2>\r\n  </sme-dialog-header>\r\n  <sme-dialog-content>\r\n    <form>\r\n      <sme-form-field type=\"radiogroup\" name=\"choice\" [(ngModel)]=\"selection\" [label]=\"message\">\r\n        <sme-option *ngFor=\"let choice of choices\" [value]=\"choice.value\" [label]=\"choice.name\"></sme-option>\r\n      </sme-form-field>\r\n      <sme-alert [alert]=\"footnoteAlert\"></sme-alert>\r\n    </form>\r\n\r\n  </sme-dialog-content>\r\n  <sme-dialog-footer>\r\n    <button type=\"button\" class=\"sme-button-primary\" (click)=\"onConfirm()\">{{ confirmButtonText }}</button>\r\n    <button type=\"button\" (click)=\"onCancel()\">{{ cancelButtonText }}</button>\r\n  </sme-dialog-footer>\r\n</sme-dialog>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { ValidationAlert, ValidationAlertSeverity } from '../../form/validation-alert/validation-alert';\r\nimport { BaseDialogComponent, DialogOptions, DialogResult } from '../base-dialog.component';\r\nimport { DialogCloseReason } from '../dialog.component';\r\nimport { DialogService } from '../dialog.service';\r\n\r\n/**\r\n * The choice dialog options.\r\n */\r\nexport interface ChoiceDialogOptions extends DialogOptions {\r\n    /**\r\n     * The text for the dialog cancel button.\r\n     */\r\n    cancelButtonText: string;\r\n\r\n    /**\r\n     * The choices of the\r\n     */\r\n    choices: { name: string, value: any }[];\r\n\r\n    /**\r\n     * The text for the dialog confirm button.\r\n     */\r\n    confirmButtonText: string;\r\n\r\n    /**\r\n     * The text at the bottom of the dialog content.\r\n     */\r\n    footnote: string;\r\n\r\n    /**\r\n     * The message of the dialog body.\r\n     */\r\n    message: string;\r\n\r\n    /**\r\n     * The title of the dialog.\r\n     */\r\n    title: string;\r\n}\r\n\r\n/**\r\n * The choice dialog result.\r\n */\r\nexport interface ChoiceDialogResult extends DialogResult {\r\n    /**\r\n     * The result of the dialog confirmation.\r\n     */\r\n    confirmed: boolean;\r\n\r\n    /**\r\n     * The result of the dialog checkbox.\r\n     */\r\n    choice: { name: string, value: any };\r\n}\r\n\r\n/**\r\n * The Choice Dialog Component\r\n * @deprecated since 02/20/18. Please use AppContextService.frame.showDialogChoice instead\r\n */\r\n@Component({\r\n    selector: 'sme-choice-dialog',\r\n    templateUrl: './choice-dialog.component.html'\r\n})\r\nexport class ChoiceDialogComponent extends BaseDialogComponent<ChoiceDialogOptions, ChoiceDialogResult> implements OnInit {\r\n    /**\r\n     * The cancel button text.\r\n     */\r\n    public cancelButtonText: string;\r\n\r\n    /**\r\n     * The choices to display.\r\n     */\r\n    public choices: { name: string, value: any }[];\r\n\r\n    /**\r\n     * The confirm button text.\r\n     */\r\n    public confirmButtonText: string;\r\n\r\n    /**\r\n     * The footnote.\r\n     */\r\n    public footnoteAlert: ValidationAlert;\r\n\r\n    /**\r\n     * The message.\r\n     */\r\n    public message: string;\r\n\r\n    /**\r\n     * The selected choice.\r\n     */\r\n    public selection: any;\r\n\r\n    /**\r\n     * The title.\r\n     */\r\n    public title: string;\r\n\r\n    /**\r\n     * Initializes a new instance of the ConfirmationDialogComponent class.\r\n     */\r\n    constructor(dialogService: DialogService) {\r\n        super(dialogService);\r\n    }\r\n\r\n    /**\r\n     * The method called after the component inputs are set.\r\n     */\r\n    public ngOnInit(): void {\r\n        super.ngOnInit();\r\n    }\r\n\r\n    /**\r\n     * handler for when a close is requested\r\n     * this override cancels the confirmation when requested to close\r\n     * @param reason - reason for the close following DialogCloseReason\r\n     */\r\n    public closeRequested(reason: DialogCloseReason) {\r\n        this.onCancel();\r\n    }\r\n\r\n    /**\r\n     * The method to call when the confirm button is clicked.\r\n     */\r\n    public onConfirm(): void {\r\n        this.hide({\r\n            confirmed: true,\r\n            choice: this.choices.first((choice) => choice.value === this.selection)\r\n        });\r\n    }\r\n\r\n    /**\r\n     * The method to call when the cancel button is clicked.\r\n     */\r\n    public onCancel(): void {\r\n        this.hide({\r\n            confirmed: false,\r\n            choice: null\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Shows the dialog.\r\n     *\r\n     * @param options The options for the dialog.\r\n     * @return The dialog result subject.\r\n     */\r\n    public show(options: ChoiceDialogOptions): Subject<ChoiceDialogResult> {\r\n        if (!options) {\r\n            throw new Error('ConfirmationDialogComponent.show: Options are required to show the dialog.');\r\n        }\r\n\r\n        const result = super.show(options);\r\n        this.cancelButtonText = options.cancelButtonText;\r\n        this.confirmButtonText = options.confirmButtonText;\r\n        this.message = options.message;\r\n        this.title = options.title;\r\n        this.footnoteAlert = { severity: ValidationAlertSeverity.Informational, valid: true, message: options.footnote };\r\n        this.choices = options.choices;\r\n\r\n        this.selection = this.choices[0].value;\r\n\r\n        return result;\r\n    }\r\n}\r\n","<sme-dialog #dialog dialogMode=\"centered\" [clickBackdrop]='false'>\r\n  <sme-dialog-header>\r\n    <h2 id=\"sme-dialog-title\">{{title}}</h2>\r\n  </sme-dialog-header>\r\n  <sme-dialog-content>\r\n    <form id=\"sme-confirmation-list-dialog-form\">\r\n      <sme-loading-wheel *ngIf=\"loading\" size=\"medium\"></sme-loading-wheel>\r\n      <p *ngIf=\"listHeaderText\">{{listHeaderText}}</p>\r\n\r\n      <ul *ngIf=\"!listType || listType === 'list'\" class=\"sme-list sme-position-flex-auto sme-margin-top-xxs\">\r\n        <li *ngFor=\"let item of listData\" [title]=\"item?.title || ''\">\r\n          {{ item?.value || item }}\r\n        </li>\r\n      </ul>\r\n\r\n      <div *ngIf=\"listType === 'radio'\">\r\n        <div *ngFor=\"let item of listData; let i = index\" class=\"sme-radio sme-position-flex-auto sme-margin-top-xxs\">\r\n          <label class=\"sme-font-body\" [title]=\"item?.title || ''\">\r\n            <input type=\"radio\" name=\"selection\" [value]=\"item\" [(ngModel)]=\"radioSelectionResult\">\r\n            <span aria-hidden=\"true\">{{item?.value || item}}</span>\r\n          </label>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"sme-checkbox sme-position-flex-none sme-margin-top-xxs\" *ngIf=\"checkboxText\">\r\n        <label class=\"sme-font-body\">\r\n          <input type=\"checkbox\" [(ngModel)]=\"checked\" />\r\n          <span>{{checkboxText}}</span>\r\n        </label>\r\n      </div>\r\n    </form>\r\n    <p *ngIf=\"listFooterText\">{{listFooterText}}</p>\r\n  </sme-dialog-content>\r\n  <sme-dialog-footer>\r\n    <button type=\"submit\" class=\"sme-button-primary\" form=\"sme-confirmation-list-dialog-form\" [disabled]=\"loading\"\r\n      (click)=\"onConfirm()\" data-uta-id=\"dialog-list-confirm-button\">{{confirmButtonText}}</button>\r\n    <button type=\"button\" (click)=\"onCancel()\" data-uta-id=\"dialog-list-cancel-button\">{{cancelButtonText}}</button>\r\n  </sme-dialog-footer>\r\n</sme-dialog>\r\n","import { Component } from '@angular/core';\r\nimport { Observable, Subject, Subscription } from 'rxjs';\r\nimport { BaseDialogComponent, DialogOptions, DialogResult } from '../base-dialog.component';\r\nimport { DialogCloseReason } from '../dialog.component';\r\nimport { DialogService } from '../dialog.service';\r\n\r\n/**\r\n * The confirmation list dialog options.\r\n */\r\nexport interface ConfirmationListDialogOptions extends DialogOptions {\r\n    /**\r\n     * The cancel button text.\r\n     */\r\n    cancelButtonText: string;\r\n\r\n    /**\r\n     * The checkbox text.\r\n     */\r\n    checkboxText?: string;\r\n\r\n    /**\r\n     * The confirmation button text.\r\n     */\r\n    confirmButtonText: string;\r\n\r\n    /**\r\n     * The list footer text.\r\n     */\r\n    listFooterText: string;\r\n\r\n    /**\r\n     * The observable of data source.\r\n     */\r\n    listDataSource: Observable<any[]>;\r\n\r\n    /**\r\n     * List type (list, radio).\r\n     */\r\n    listType?: string;\r\n\r\n    /**\r\n     * The list header text.\r\n     */\r\n    listHeaderText: string;\r\n\r\n    /**\r\n     * The title text.\r\n     */\r\n    title: string;\r\n    /**\r\n     * If the dialog is opened from Rpc\r\n     */\r\n    isFromRpc?: boolean;\r\n}\r\n\r\n/**\r\n * The confirmation list dialog result.\r\n */\r\nexport interface ConfirmationListDialogResult extends DialogResult {\r\n    /**\r\n     * The result of the dialog confirmation.\r\n     */\r\n    confirmed: boolean;\r\n\r\n    /**\r\n     * The checkbox result.\r\n     */\r\n    checkboxResult?: boolean;\r\n\r\n    /**\r\n     * The selection result.\r\n     */\r\n    radioSelectionResult?: string;\r\n\r\n    /**\r\n     * The observable error object.\r\n     */\r\n    observableError?: any;\r\n}\r\n\r\n@Component({\r\n    templateUrl: './confirmation-list-dialog.component.html',\r\n    selector: 'sme-confirmation-list-dialog'\r\n})\r\nexport class ConfirmationListDialogComponent\r\n    extends BaseDialogComponent<ConfirmationListDialogOptions, ConfirmationListDialogResult> {\r\n    public cancelButtonText: string;\r\n    public checked: boolean;\r\n    public radioSelectionResult: any;\r\n    public checkboxText: string;\r\n    public confirmButtonText: string;\r\n    public listFooterText: string;\r\n    public listData: any[];\r\n    public listType: string;\r\n    public listHeaderText: string;\r\n    public title: string;\r\n    public loading: boolean;\r\n\r\n    private dataSourceSubscription: Subscription;\r\n\r\n    constructor(dialogService: DialogService) {\r\n        super(dialogService);\r\n    }\r\n\r\n    public closeRequested(reason: DialogCloseReason) {\r\n        this.onCancel();\r\n    }\r\n\r\n    public show(options: ConfirmationListDialogOptions): Subject<ConfirmationListDialogResult> {\r\n        if (!options) {\r\n            throw new Error('ConfirmationListDialogComponent.show: Options are required to show the dialog.');\r\n        }\r\n\r\n        const result = super.show(options);\r\n        this.cancelButtonText = options.cancelButtonText;\r\n        this.checkboxText = options.checkboxText;\r\n        this.checked = false;\r\n        this.confirmButtonText = options.confirmButtonText;\r\n        this.listFooterText = options.listFooterText;\r\n        this.listData = [];\r\n        this.radioSelectionResult = null;\r\n        this.listType = options.listType;\r\n        this.listHeaderText = options.listHeaderText;\r\n        this.title = options.title;\r\n        this.loading = true;\r\n        this.dataSourceSubscription = options.listDataSource.subscribe(\r\n            strings => {\r\n                this.loading = false;\r\n                this.listData = strings;\r\n                this.radioSelectionResult = this.listData ? this.listData[0] : '';\r\n            },\r\n            (error) => {\r\n                this.hide({\r\n                    confirmed: false,\r\n                    observableError: error\r\n                });\r\n            });\r\n\r\n        return result;\r\n    }\r\n\r\n    public hide(result?: ConfirmationListDialogResult) {\r\n        this.dataSourceSubscription?.unsubscribe();\r\n        super.hide(result);\r\n    }\r\n\r\n    public onConfirm(): void {\r\n        this.hide({\r\n            confirmed: true,\r\n            checkboxResult: (this.checkboxText) ? this.checked : null,\r\n            radioSelectionResult: this.radioSelectionResult\r\n        });\r\n    }\r\n\r\n    public onCancel(): void {\r\n        this.hide({\r\n            confirmed: false\r\n        });\r\n    }\r\n\r\n}\r\n","<sme-dialog #dialog [dialogMode]=\"dialogMode\" [clickBackdrop]=\"false\">\r\n  <sme-dialog-header>\r\n    <h2 id=\"sme-dialog-title\">{{title}}</h2>\r\n  </sme-dialog-header>\r\n  <sme-dialog-content>\r\n    <form id=\"sme-message-dialog-form\">\r\n      <sme-loading-wheel *ngIf=\"loading\" size=\"medium\"></sme-loading-wheel>\r\n      <p id=\"sme-dialog-desc\">{{message}}</p>\r\n      <a *ngIf=\"externalLink\" class=\"sme-link\" href=\"{{externalLink.url}}\" target=\"_blank\">{{externalLink.title}}</a>\r\n      <sme-form-field class=\"sme-margin-top-sm\" *ngIf=\"checkboxText\" type=\"checkbox\" [label]=\"checkboxText\" name=\"checkboxResult\"\r\n                      [(ngModel)]=\"checkboxResult\"></sme-form-field>\r\n    </form>\r\n  </sme-dialog-content>\r\n  <sme-dialog-footer>\r\n    <button type=\"submit\" *ngIf=\"buttonText\" form=\"sme-message-dialog-form\" class=\"sme-button-primary\" (click)=\"onClick()\">{{buttonText}}</button>\r\n  </sme-dialog-footer>\r\n</sme-dialog>\r\n","import { Component } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { BaseDialogComponent, DialogOptions, DialogResult } from '../base-dialog.component';\r\nimport { DialogService } from '../dialog.service';\r\n\r\nexport interface MessageDialogLink {\r\n    /**\r\n     * The link title.\r\n     */\r\n    title: string;\r\n\r\n    /**\r\n     * The link url.\r\n     */\r\n    url: string;\r\n}\r\n\r\n/**\r\n * The message dialog options.\r\n */\r\nexport interface MessageDialogOptions extends DialogOptions {\r\n    /**\r\n     * (Optional) The button text of the dialog.\r\n     */\r\n    buttonText?: string;\r\n\r\n    /**\r\n     * The message of the dialog body.\r\n     */\r\n    message: string;\r\n\r\n    /**\r\n     * The title of the dialog.\r\n     */\r\n    title: string;\r\n\r\n    /**\r\n     * (Optional) The text of the checkbox.\r\n     */\r\n    checkboxText?: string;\r\n\r\n    /**\r\n     * (Optional) The link to open referenced information on new tab.\r\n     */\r\n    externalLink?: MessageDialogLink;\r\n\r\n    /**\r\n     * If the dialog is opened from Rpc\r\n     */\r\n    isFromRpc?: boolean;\r\n}\r\n\r\n/**\r\n * The message dialog result.\r\n */\r\nexport interface MessageDialogResult extends DialogResult {\r\n    /**\r\n     * The result of the dialog checkbox.\r\n     */\r\n    checkboxResult?: boolean;\r\n}\r\n\r\n/**\r\n * The Message Dialog Component\r\n * @deprecated since 02/20/18. Please use AppContextService.frame.showDialogMessage instead\r\n */\r\n@Component({\r\n    selector: 'sme-message-dialog',\r\n    templateUrl: './message-dialog.component.html'\r\n})\r\nexport class MessageDialogComponent extends BaseDialogComponent<MessageDialogOptions, MessageDialogResult> {\r\n    /**\r\n     * The text for the dialog button.\r\n     */\r\n    public buttonText: string;\r\n\r\n    /**\r\n     * The text to display next to the checkbox.\r\n     */\r\n    public checkboxText: string;\r\n\r\n    /**\r\n     * Whether or not the checkbox is checked.\r\n     */\r\n    public checkboxResult: boolean;\r\n\r\n    /**\r\n     * The message to display on the dialog.\r\n     */\r\n    public message: string;\r\n\r\n    /**\r\n     * The title of the dialog.\r\n     */\r\n    public title: string;\r\n\r\n    /**\r\n     * The hyperlink to display on the dialog.\r\n     */\r\n    public externalLink: MessageDialogLink;\r\n    public loading: boolean;\r\n    public dialogMode: string;\r\n\r\n    /**\r\n     * Initializes a new instance of the MessageDialogComponent class.\r\n     */\r\n    constructor(dialogService: DialogService) {\r\n        super(dialogService);\r\n    }\r\n\r\n    /**\r\n     * Shows the dialog.\r\n     *\r\n     * @param options The options for the dialog.\r\n     * @return The dialog result subject.\r\n     */\r\n    public show(options: MessageDialogOptions): Subject<DialogResult> {\r\n        if (!options) {\r\n            throw new Error('MessageDialogComponent.show: Options are required to show the dialog.');\r\n        }\r\n\r\n        const result = super.show(options);\r\n        this.checkboxResult = false;\r\n        this.buttonText = options.buttonText;\r\n        this.checkboxText = options.checkboxText;\r\n        this.message = options.message;\r\n        this.title = options.title;\r\n        this.externalLink = options.externalLink;\r\n        this.loading = !!options['loading'];\r\n        this.dialogMode = options['dialogMode'] || 'centered';\r\n        return result;\r\n    }\r\n\r\n    /**\r\n     * The method to call when the dialog button is clicked.\r\n     */\r\n    public onClick(): void {\r\n        this.hide({\r\n            checkboxResult: this.checkboxResult\r\n        });\r\n    }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { DialogService } from '../dialog.service';\r\n\r\n/**\r\n * The Choice Dialog Component\r\n * @deprecated since 02/20/18. Please use AppContextService.frame.showDialog* methods instead\r\n */\r\n@Component({\r\n    selector: 'sme-common-dialogs',\r\n    templateUrl: './common-dialogs.component.html'\r\n})\r\nexport class CommonDialogsComponent {\r\n\r\n    /**\r\n     * Initializes a new instance of the CommonDialogsComponent class.\r\n     */\r\n    constructor(public dialogService: DialogService) {\r\n    }\r\n}\r\n","<sme-message-dialog [id]=\"dialogService.commonIds.message\"></sme-message-dialog>\r\n<sme-confirmation-dialog [id]=\"dialogService.commonIds.confirmation\"></sme-confirmation-dialog>\r\n<sme-confirmation-list-dialog [id]=\"dialogService.commonIds.confirmationList\"></sme-confirmation-list-dialog>","<div [ngClass]=\"dialogClasses\" class=\"sme-position-stretch-h sme-position-stretch-v\" [attr.role]=\"dialogRole\"\r\n  [attr.aria-labelledby]=\"ariaLabel ? idBag.ariaLabelSpan :null\"\r\n  [attr.aria-describedby]=\"ariaDescription ? idBag.ariaDescriptionSpan : null\" aria-modal=\"true\">\r\n  <div class=\"sme-position-flex-none sme-focus-zone\">\r\n    <ng-content select=\"sme-dialog-header\"></ng-content>\r\n  </div>\r\n  <div\r\n    class=\"sme-layout-relative sme-position-flex-auto sme-padding-horizontal-lg sme-arrange-overflow-auto-y sme-arrange-overflow-hide-x sme-focus-zone sme-layout-responsive-zone-xs\">\r\n    <ng-content select=\"sme-dialog-content\"></ng-content>\r\n  </div>\r\n  <div class=\"sme-position-flex-none sme-focus-zone sme-padding-horizontal-lg sme-padding-vertical-sm\">\r\n    <ng-content select=\"sme-dialog-footer\"></ng-content>\r\n  </div>\r\n\r\n  <span *ngIf=\"ariaLabel\" class=\"sme-screen-reader\" [id]=\"idBag.ariaLabelSpan\">{{ariaLabel}}</span>\r\n  <span *ngIf=\"ariaDescription\" class=\"sme-screen-reader\" [id]=\"idBag.ariaDescriptionSpan\">{{ariaDescription}}</span>\r\n</div>\r\n","import {\r\n    Component\r\n} from '@angular/core';\r\nimport { DialogComponent } from '../dialog.component';\r\n\r\n@Component({\r\n    selector: 'sme-extension-dialog',\r\n    templateUrl: './extension-dialog.component.html'\r\n})\r\nexport class ExtensionDialogComponent extends DialogComponent { }\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BackdropModule } from '../backdrop/backdrop.module';\r\nimport { SmeFormsModule } from '../form/forms.module';\r\nimport { LoadingWheelModule } from '../loading-wheel/loading-wheel.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { ChoiceDialogComponent } from './choice-dialog/choice-dialog.component';\r\nimport { CommonDialogsComponent } from './common-dialogs/common-dialogs.component';\r\nimport { ConfirmationDialogComponent } from './confirmation-dialog/confirmation-dialog.component';\r\nimport { ConfirmationListDialogComponent } from './confirmation-list-dialog/confirmation-list-dialog.component';\r\nimport {\r\n    DialogComponent,\r\n    DialogContentComponent,\r\n    DialogFooterComponent,\r\n    DialogHeaderComponent\r\n} from './dialog.component';\r\nimport { DialogService } from './dialog.service';\r\nimport { ExtensionDialogComponent } from './extension-dialog/extension-dialog.component';\r\nimport { MessageDialogComponent } from './message-dialog/message-dialog.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        ChoiceDialogComponent,\r\n        CommonDialogsComponent,\r\n        ConfirmationDialogComponent,\r\n        ConfirmationListDialogComponent,\r\n        DialogComponent,\r\n        DialogContentComponent,\r\n        DialogFooterComponent,\r\n        DialogHeaderComponent,\r\n        MessageDialogComponent,\r\n        ExtensionDialogComponent\r\n    ],\r\n    exports: [\r\n        ChoiceDialogComponent,\r\n        CommonDialogsComponent,\r\n        ConfirmationDialogComponent,\r\n        ConfirmationListDialogComponent,\r\n        DialogComponent,\r\n        DialogContentComponent,\r\n        DialogFooterComponent,\r\n        DialogHeaderComponent,\r\n        MessageDialogComponent,\r\n        ExtensionDialogComponent\r\n    ],\r\n    imports: [\r\n        BackdropModule,\r\n        CommonModule,\r\n        FormsModule,\r\n        LoadingWheelModule,\r\n        SmeFormsModule,\r\n        TooltipModule\r\n    ],\r\n    providers: [\r\n        DialogService\r\n    ]\r\n})\r\nexport class DialogModule { }\r\n","<div *ngIf=\"type === 'tool-header'\" class=\"sme-layout-flex sme-position-flex-align-center sme-layout-tool-header\"\r\n  [class.sme-layout-tool-header-no-padding]=\"noPadding\">\r\n  <span [ngClass]=\"level === '' ? 'sme-font-h3' : styleTo\" class=\"sme-arrange-stack-h\">\r\n    <sme-icon-text [smeIconClassName]=\"smeIconClassName\" [urlIcon]=\"urlIcon\" [showTitle]=\"!subtitle\" [title]=\"text\"></sme-icon-text>\r\n    <div class=\"sme-arrange-stack-v sme-layout-inline-block\" [class.sme-padding-left-xs]=\"urlIcon || smeIconClassName\" *ngIf=\"subtitle\">\r\n      <div>{{ text }}</div>\r\n      <div class=\"sme-font-label\">{{ subtitle }}</div>\r\n    </div>\r\n  </span>\r\n  <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n</div>\r\n\r\n<h2 *ngIf=\"type === 'dialog-header'\" id=\"sme-dialog-title\" [ngClass]=\"level === '' ? 'sme-font-h3' : styleTo\">\r\n  {{ text }}\r\n</h2>\r\n\r\n<div *ngIf=\"type === 'settings-page-header'\" class=\"sme-position-flex-none sme-layout-settings-header\">\r\n  <h3 [ngClass]=\"level !== '' ? styleTo : ''\">{{ text }}</h3>\r\n  <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n</div>\r\n\r\n<ng-template #contentTemplate class=\"sme-padding-left-xs\">\r\n  <ng-content></ng-content>\r\n</ng-template>\r\n","import { Component, Injector, Input, OnInit } from '@angular/core';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { SpacerBaseDirective } from '../common/spacer-base.component';\r\n\r\nexport class SmeHeaderData {\r\n    text: string;\r\n    subtitle?: string;\r\n    smeIconClassName?: string;\r\n    urlIcon?: string;\r\n    level?: string;\r\n}\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Header @id sme-header}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/header-overview.md}\r\n *\r\n * @example {@label Basic Usage @id basic-usage}\r\n * @file {@filename component.ts @filepath ./examples/header-example.component.ts}\r\n * @file {@filename component.html @filepath ./examples/header-example.component.html}\r\n *\r\n */\r\n@Component({\r\n    selector: 'sme-header',\r\n    templateUrl: './header.component.html'\r\n})\r\nexport class HeaderComponent extends SpacerBaseDirective implements OnInit {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'HeaderComponent';\r\n    }\r\n    private static tool = 'tool-header';  // default\r\n\r\n    private static h1style = 'sme-font-h1';\r\n    private static h2style = 'sme-font-h2';\r\n    private static h3style = 'sme-font-h3';\r\n    private static h4style = 'sme-font-h4 sme-font-h4-no-spacing';\r\n\r\n    public styleTo = '';\r\n\r\n    /**\r\n     * The header type\r\n     */\r\n    @Input()\r\n    public type = HeaderComponent.tool;\r\n\r\n    /**\r\n     * The font text for the main header\r\n     */\r\n    @Input()\r\n    public text = '';\r\n\r\n    /**\r\n     * The font size level for the main header\r\n     */\r\n    @Input()\r\n    public level = '';\r\n\r\n    /**\r\n     * The sme icon class for MDL icons\r\n     */\r\n    @Input()\r\n    public smeIconClassName: string;\r\n\r\n    /**\r\n     * The sme icon class for URL icons\r\n     */\r\n    @Input()\r\n    public urlIcon: string;\r\n\r\n    /**\r\n     * The subtitle of the header\r\n     */\r\n    @Input()\r\n    public subtitle: string;\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n\r\n        if (this.smeIconClassName && this.urlIcon) {\r\n            Logging.log({\r\n                level: LogLevel.Warning,\r\n                message: 'Either sme icon or url icon is accepted.',\r\n                source: `${this.logSourceName}.constructor`\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The method run when the component is initialized\r\n     */\r\n    public ngOnInit() {\r\n        switch (this.level) {\r\n            case '1': {\r\n                this.styleTo = HeaderComponent.h1style;\r\n                break;\r\n            }\r\n            case '2': {\r\n                this.styleTo = HeaderComponent.h2style;\r\n                break;\r\n            }\r\n            case '3': {\r\n                this.styleTo = HeaderComponent.h3style;\r\n                break;\r\n            }\r\n            case '4': {\r\n                this.styleTo = HeaderComponent.h4style;\r\n                break;\r\n            }\r\n            default: {\r\n                this.styleTo = '';\r\n            }\r\n        }\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { IconModule } from '../icon/icon.module';\r\nimport { HeaderComponent } from './header.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        HeaderComponent\r\n    ],\r\n    declarations: [\r\n        HeaderComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        IconModule\r\n    ]\r\n})\r\nexport class HeaderModule { }\r\n","<div class=\"sme-layout-main-content-padding\">\r\n  <sme-header *ngIf=\"document?.name\" type=\"tool-header\" [text]=\"document?.name\"></sme-header>\r\n  <sme-pivot class=\"sme-position-flex-auto\">\r\n    <sme-pivot-tab [label]=\"strings.MsftSmeShell.Angular.Documentation.Tabs.Overview.label\">\r\n      <ng-template>\r\n        <div class=\"sme-padding-horizontal-lg\">\r\n          <div *ngIf=\"document?.overview\" [smeMarkdown]=\"document?.overview\"></div>\r\n          <h4>{{strings.MsftSmeShell.Angular.Documentation.Overview.liveExampleHeader}}</h4>\r\n            <ng-content></ng-content>\r\n        </div>\r\n      </ng-template>\r\n    </sme-pivot-tab>\r\n    <sme-pivot-tab *ngIf=\"document?.api\" [label]=\"strings.MsftSmeShell.Angular.Documentation.Tabs.API.label\">\r\n      <ng-template>\r\n        <div class=\"sme-padding-horizontal-lg\">\r\n          <!-- TODO: Currently this tab will never show. We will figure it out when we start generating API documentation. -->\r\n        </div>\r\n      </ng-template>\r\n    </sme-pivot-tab>\r\n    <sme-pivot-tab *ngIf=\"examples.length > 0\" [label]=\"strings.MsftSmeShell.Angular.Documentation.Tabs.Examples.label\">\r\n      <ng-template>\r\n        <div class=\"sme-padding-horizontal-lg\">\r\n          <ng-container *ngFor=\"let example of document.examples | keyvalue\">\r\n            <h4 class=\"sme-example-header\">{{example.value.name}}</h4>\r\n            <sme-pivot class=\"sme-position-flex-auto sme-example-content\">\r\n              <sme-pivot-tab *ngFor=\"let file of example.value.files\" [label]=\"file.name || file.language\">\r\n                <ng-template>\r\n                  <!-- TODO: use code editor to display code in the right language with syntax highlighting -->\r\n                  <sme-form-field type=\"code\" name=\"code\" [(ngModel)]=\"file.contents\" [label]=\"file.name || file.language\" [hideHeader]=\"true\" orientation=\"vertical\" [language]=\"file.language\" [readonly]=\"true\">\r\n                  </sme-form-field>\r\n                </ng-template>\r\n              </sme-pivot-tab>\r\n            </sme-pivot>\r\n          </ng-container>\r\n        </div>\r\n      </ng-template>\r\n    </sme-pivot-tab>\r\n  </sme-pivot>\r\n</div>\r\n","import { Component, Injector, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { DocumentationDocument } from './models';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Documentation @id sme-documentation-component}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/documentation-overview.md}\r\n *\r\n * @example {@label Basic Usage @id basic-usage}\r\n * @file {@filename component.ts @filepath ./examples/documentation-basic-usage.component.ts}\r\n * @file {@filename component.html @filepath ./examples/documentation-basic-usage.component.html}\r\n *\r\n */\r\n@Component({\r\n    selector: 'sme-documentation',\r\n    templateUrl: './documentation.component.html'\r\n})\r\nexport class DocumentationComponent extends CoreBaseComponent implements OnChanges {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'DocumentationComponent';\r\n    }\r\n\r\n    /**\r\n     * The document to show\r\n     */\r\n    @Input()\r\n    public document: DocumentationDocument;\r\n\r\n    public examples: string[];\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n        this.examples = [];\r\n    }\r\n\r\n    public ngOnChanges(changes: SimpleChanges) {\r\n        super.ngOnChanges(changes);\r\n        if (changes.document) {\r\n            this.examples = this.document.examples ? Object.keys(this.document.examples) : [];\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-documentation-presenter'\r\n        ]);\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MarkdownModule } from '../../directives/markdown/markdown.module';\r\nimport { SmeFormsModule } from '../form/forms.module';\r\nimport { HeaderModule } from '../header/header.module';\r\nimport { PivotModule } from '../pivot/pivot.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { DocumentationComponent } from './documentation.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        DocumentationComponent\r\n    ],\r\n    declarations: [\r\n        DocumentationComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        PivotModule,\r\n        HeaderModule,\r\n        MarkdownModule,\r\n        TooltipModule,\r\n        FormsModule,\r\n        SmeFormsModule\r\n    ]\r\n})\r\nexport class DocumentationModule { }\r\n","export enum LegendPosition {\r\n    Top = 'top',\r\n    Right = 'right'\r\n}\r\n\r\nexport module LegendPosition {\r\n    export type Bindable = LegendPosition | 'top' | 'right';\r\n\r\n    const legendPositions = [\r\n        LegendPosition.Top,\r\n        LegendPosition.Right\r\n    ];\r\n\r\n    function fromString(value: string): LegendPosition {\r\n        const defaultLegendPosition = LegendPosition.Top;\r\n\r\n        if (MsftSme.isNullOrWhiteSpace(value)) {\r\n            return defaultLegendPosition;\r\n        }\r\n\r\n        value = value.toLowerCase();\r\n        return legendPositions.find(position => position.toLowerCase() === value) || defaultLegendPosition;\r\n    }\r\n\r\n    export function fromBindableType(value: Bindable): LegendPosition {\r\n        if (typeof (value) === 'string') {\r\n            return fromString(value);\r\n        }\r\n        return value;\r\n    }\r\n}\r\n","<div *ngIf=\"data\" class=\"sme-arrange-stack-h\" [class.sme-margin-right-sm]=\"!lastEntry\"\r\n  [class.sme-position-right-inline]=\"rightAlign\" [class.sme-cursor-pointer]=\"data.action\">\r\n\r\n  <div *ngIf=\"color && !svgLegendColorIndicator\"\r\n    class=\"sme-margin-right-xs sme-width-xxs sme-layout-relative {{hideInHighContrastClass}}\"\r\n    [ngStyle]=\"{'background-color': color}\">\r\n    <div *ngIf=\"stripeClass\"\r\n      class=\"sme-layout-absolute sme-width-xxs sme-position-stretch-v sme-layer-above {{stripeClass}}\"></div>\r\n  </div>\r\n\r\n  <div *ngIf=\"color && svgLegendColorIndicator\"\r\n    class=\"sme-margin-right-xs sme-width-xxs sme-layout-relative {{hideInHighContrastClass}}\">\r\n    <svg class=\"sme-position-stretch\" role=\"presentation\" preserveAspectRatio=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 4 56\">\r\n      <rect *ngIf=\"!stripeClass\" width=\"4\" height=\"56\" [attr.fill]=\"color\" />\r\n      <rect *ngIf=\"stripeClass\" width=\"4\" height=\"56\" [ngClass]=\"stripeClass\" />\r\n    </svg>\r\n  </div>\r\n\r\n  <div tabindex=\"0\" [attr.role]=\"data.action ? 'button' : null\" [id]=\"entryId\"\r\n    class=\"sme-arrange-stack-v sme-position-flex-auto\"\r\n    [attr.aria-labelledby]=\"idBag.dataLabel + ' ' + idBag.dataDisplayValue\" #zone=\"smeTooltipZone\" smeTooltipZone\r\n    (focus)=\"enableAriaLiveUpdates()\" (blur)=\"disableAriaLiveUpdates()\">\r\n    <div class=\"sme-margin-bottom-xs\" [attr.aria-live]=\"ariaLiveValue\">\r\n      <span [id]=\"idBag.dataLabel\">{{data.label}}</span>\r\n\r\n      <span *ngIf=\"data.tooltipContext && !data.tooltipContext.linkUrl\"\r\n        class=\"sme-icon sme-info-bubble sme-icon-info sme-padding-left-xxs\" [title]=\"data.tooltipContext.text\"\r\n        [tooltipZone]=\"zone\" tabindex=\"0\"></span>\r\n\r\n      <span *ngIf=\"data.tooltipContext && data.tooltipContext.linkUrl\" tabindex=\"0\"\r\n        class=\"sme-icon sme-info-bubble sme-icon-info sme-padding-left-xxs\" [smeTooltip]=\"template\"\r\n        [smeTooltipContext]=\"data.tooltipContext\" [tooltipZone]=\"zone\"></span>\r\n      <ng-template #template let-data>\r\n        <div>{{data.text}}</div>\r\n        <a class=\"sme-link\" target=\"_blank\" [href]=\"data.linkUrl\">{{data.linkText}}<span\r\n            class=\"sme-icon sme-icon-openInNewWindow sme-margin-left-xs\"></span></a>\r\n      </ng-template>\r\n    </div>\r\n    <span *ngIf=\"!!data.iconClass\" class=\"sme-margin-right-xs sme-icon {{data.iconClass}}\"></span>\r\n    <p [id]=\"idBag.dataDisplayValue\" class=\"{{textColorClass}} sme-font-h2\"\r\n      [ngClass]=\"{'sme-color-alt-30': data.fadedText}\">\r\n      <sme-status-icon *ngIf=\"data.status !== null && !data.iconClass && data.status\"\r\n        class=\"sme-layout-inline-block sme-margin-right-xxs\" [status]=\"data.status\" size=\"24px\"></sme-status-icon>\r\n      {{data.displayValue}}\r\n    </p>\r\n  </div>\r\n</div>\r\n","import { Component, ElementRef, Injector, Input, OnInit } from '@angular/core';\r\nimport { CapacityBase } from '../../common/capacity-base.component';\r\nimport { StatusIconType } from '../../icon/layered-icon/status/status-icon.component';\r\n\r\nexport interface LegendEntryTooltipContext {\r\n    /**\r\n     * The text to display\r\n     */\r\n    text?: string;\r\n    /**\r\n     * The text to display for a link\r\n     */\r\n    linkText?: string;\r\n    /**\r\n     * The url for a link that takes user outside of Windows Admin Center (will display the open in new tab icon)\r\n     */\r\n    linkUrl?: string;\r\n}\r\n\r\nexport interface LegendEntryData {\r\n    /**\r\n     * The label text to appear above the value\r\n     */\r\n    label: string;\r\n\r\n    /**\r\n     * The value to display\r\n     */\r\n    displayValue: any;\r\n\r\n    /**\r\n     * The optional unformatted value for use in capacity situations.\r\n     * The value will divided by the total and the result compared to the red/yellow threshold values.\r\n     * This is used to determine which color scheme to use in capacity situations.\r\n     * If color property is specified then this value is not used.\r\n     */\r\n    rawValue?: number;\r\n\r\n    /**\r\n     * The optional color to use. Value must be supplied if this component is used outside of Legend component.\r\n     * If no color is specified, then the color will be specified by the color scheme (default values in capacity case).\r\n     * This defaults to CapacityBase default greenColorScheme.\r\n     * Value specified here overrides any color scheme value that would be calculated if rawValue is given.\r\n     */\r\n    color?: string;\r\n\r\n    /**\r\n     * Set true to have no color bar rendered\r\n     */\r\n    noColor?: boolean;\r\n\r\n    /**\r\n     * whether or not to use greyed-out text color\r\n     */\r\n    fadedText?: boolean;\r\n\r\n    /**\r\n     * Color of optional stripes. Use one of the standard SME color values.\r\n     */\r\n    stripeColor?: string;\r\n\r\n    /**\r\n     * The opacity of the stripe color. Use one of the standard SME color opacity values\r\n     */\r\n    stripeAlpha?: number;\r\n\r\n    /**\r\n     * object to specify tooltip data\r\n     */\r\n    tooltipContext?: LegendEntryTooltipContext;\r\n\r\n    /**\r\n     * Use true to have text be right-aligned\r\n     */\r\n    rightAlign?: boolean;\r\n\r\n    /**\r\n     * the action to take when you click a legend item\r\n     */\r\n    action?: MsftSme.Action1<MouseEvent>;\r\n\r\n    /**\r\n     * Specify any custom icon class to use instead of status\r\n     */\r\n    iconClass?: string;\r\n\r\n    /**\r\n     * Status icon to display\r\n     */\r\n    status?: StatusIconType;\r\n}\r\n\r\nexport enum AriaLiveOptions {\r\n    Polite = 'polite',\r\n    Off = 'off'\r\n}\r\n\r\n@Component({\r\n    selector: 'sme-legend-entry',\r\n    templateUrl: './legend-entry.component.html'\r\n})\r\nexport class LegendEntryComponent extends CapacityBase implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'LegendEntryComponent';\r\n    }\r\n\r\n    @Input() public data: LegendEntryData;\r\n    @Input() public entryId: string;\r\n    @Input() public entries: LegendEntryData[];\r\n    @Input() public index: number;\r\n    @Input() public rightAlign: boolean;\r\n    @Input() public noColor: boolean;\r\n\r\n    /**\r\n     * Whether or not to hide the legend control color indicator in high contrast layout\r\n     */\r\n    @Input() public hideInHighContrast = false;\r\n\r\n    /**\r\n     * Whether or not the legend color indicator should use svg\r\n     */\r\n    @Input() public svgLegendColorIndicator = true;\r\n\r\n    public lastEntry: boolean;\r\n    public stripeClass: string;\r\n    public color: string;\r\n    public hideInHighContrastClass = '';\r\n    public textColorClass: string;\r\n    public ariaLiveValue = AriaLiveOptions.Off;\r\n\r\n    constructor(injector: Injector, private elementRef: ElementRef) {\r\n        super(injector);\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.color = this.getColor();\r\n        this.textColorClass = this.getTextColorClass();\r\n        if (this.data && this.data.stripeColor && this.data.stripeAlpha) {\r\n            this.stripeClass = 'sme-background-stripes-{0}-{1}'.format(this.data.stripeColor, this.data.stripeAlpha);\r\n        }\r\n        this.lastEntry = this.data === MsftSme.last(this.entries);\r\n        if (this.hideInHighContrast) {\r\n            this.hideInHighContrastClass = 'sme-high-contrast-layout-none';\r\n        }\r\n\r\n        if (this.data.action) {\r\n            (<HTMLElement>this.elementRef.nativeElement).addEventListener('click', event => {\r\n                this.data.action(event);\r\n            });\r\n        }\r\n    }\r\n\r\n    public disableAriaLiveUpdates(): void {\r\n        this.ariaLiveValue = AriaLiveOptions.Off;\r\n    }\r\n\r\n    public enableAriaLiveUpdates(): void {\r\n        this.ariaLiveValue = AriaLiveOptions.Polite;\r\n    }\r\n\r\n    public getColor(): string {\r\n\r\n        // if user specifies a color, use that color. Otherwise use the color scheme\r\n        if (!MsftSme.isNullOrUndefined(this.data.color)) {\r\n            return this.data.color;\r\n        }\r\n\r\n        // no color bar will be rendered\r\n        if (this.noColor) {\r\n            return null;\r\n        }\r\n\r\n        // if user does not specify color or explicitly no color then color is determined by the color scheme\r\n        if (this.entries) {\r\n            let entriesTotal = 0;\r\n            for (const entry of this.entries) {\r\n                const entryValue = entry.rawValue ? entry.rawValue : entry.displayValue;\r\n                // sum up all the entry values for which we need to calculate color so we know if we have surpassed the red\\yellow threshold\r\n                if (!entry.color && !entry.noColor) {\r\n                    entriesTotal += entryValue;\r\n                }\r\n            }\r\n            const colorScheme = this.getColorScheme(entriesTotal);\r\n\r\n            if (MsftSme.isNullOrUndefined(colorScheme[this.index])) {\r\n                // eslint-disable-next-line max-len\r\n                throw new Error('Color property must be set on LegendEntryData input if the Legend Value component is used outside of a Legend component. Or the color scheme value is not defined for this index.');\r\n            } else {\r\n                return colorScheme[this.index];\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n    // adds classes listed to the root component\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-layout-legend-entry'\r\n        ]);\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            dataLabel: '',\r\n            dataDisplayValue: ''\r\n        };\r\n    }\r\n\r\n    public getTextColorClass(): string {\r\n        if (MsftSme.isNullOrUndefined(this.data.status)) {\r\n            return null;\r\n        }\r\n\r\n        switch (this.data.status) {\r\n            case StatusIconType.Critical:\r\n                return 'sme-color-critical';\r\n            case StatusIconType.Error:\r\n                return 'sme-color-error';\r\n            case StatusIconType.Warning:\r\n                return 'sme-color-warning';\r\n            case StatusIconType.Info:\r\n                return 'sme-color-info';\r\n            case StatusIconType.Progress:\r\n                return 'sme-color-progress';\r\n            case StatusIconType.Success:\r\n                return 'sme-color-success';\r\n            case StatusIconType.Unknown:\r\n                return 'sme-color-neutral';\r\n            default:\r\n                return null;\r\n        }\r\n    }\r\n}\r\n","<sme-legend-entry *ngFor=\"let data of legendData; let i = index;\" class=\"sme-padding-bottom-sm\" [entryId]=\"idBag.legendEntry + i\"\r\n  [normalColorScheme]=\"normalColorScheme\" [warningColorScheme]=\"warningColorScheme\" [criticalColorScheme]=\"criticalColorScheme\"\r\n  [entries]=\"legendData\" [data]=\"data\" [index]=\"i\" [total]=\"total\" [criticalThreshold]=\"criticalThreshold\"\r\n  [warningThreshold]=\"warningThreshold\" [reverseThresholdOrder]=\"reverseThresholdOrder\" [rightAlign]=\"data.rightAlign\"\r\n  [noColor]=\"data.noColor\" [hideInHighContrast]=\"hideInHighContrast\" [svgLegendColorIndicator]=\"svgLegendColorIndicator\"></sme-legend-entry>\r\n","import { Component, Injector, Input } from '@angular/core';\r\nimport { CapacityBase } from '../common/capacity-base.component';\r\nimport { LegendEntryData } from './legend-entry/legend-entry.component';\r\n\r\n@Component({\r\n    selector: 'sme-legend',\r\n    templateUrl: './legend.component.html'\r\n})\r\nexport class LegendComponent extends CapacityBase {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'LegendComponent';\r\n    }\r\n\r\n    /**\r\n     * Whether or not to hide the legend control color indicator in high contrast layout\r\n     */\r\n    @Input() public hideInHighContrast = false;\r\n\r\n    /**\r\n     * Whether or not the legend color indicator should use svg\r\n     */\r\n    @Input() public svgLegendColorIndicator = true;\r\n\r\n    @Input()\r\n    public get legendData(): LegendEntryData[] {\r\n        return this.internalLegendData;\r\n    }\r\n\r\n    public set legendData(data: LegendEntryData[]) {\r\n        const activeElement = document.activeElement as HTMLElement;\r\n        this.internalLegendData = data;\r\n        // preserve focus if activeElement is in the legend\r\n        if (activeElement.id.startsWith(this.componentId)) {\r\n            setTimeout(\r\n                () => {\r\n                    for (let i = 0; i < data.length; i++) {\r\n                        const currentId = this.idBag.legendEntry + i;\r\n                        if (activeElement.id === currentId) {\r\n                            const legendEntry = document.getElementById(currentId);\r\n                            if (legendEntry) {\r\n                                legendEntry.focus();\r\n                            }\r\n                        }\r\n                    }\r\n                },\r\n                0);\r\n        }\r\n    }\r\n    public internalLegendData: LegendEntryData[];\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    // adds classes listed to the root component\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-arrange-wrapstack-h',\r\n            'sme-margin-top-sm'\r\n        ]);\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            legendEntry: ''\r\n        };\r\n    }\r\n}\r\n","<figure class=\"sme-focus-zone sme-position-flex-auto sme-arrange-stack-v\" tabindex=\"0\" [attr.aria-label]=\"chartTitle\" #zone=\"smeTooltipZone\" smeTooltipZone>\r\n  <div *ngIf=\"chartTitle && showTitle\" class=\"sme-arrange-stack-h\">\r\n    <div class=\"sme-font-family-bold sme-layout-float-left\">\r\n      {{ chartTitle }}\r\n      <span *ngIf=\"tooltipTitle\" class=\"sme-icon sme-icon-info sme-info-bubble sme-margin-left-xs\"\r\n        [title]=\"tooltipTitle\" [tooltipZone]=\"zone\" tabindex=\"0\"></span>\r\n      <div *ngIf=\"refreshIntervalString\" class=\"sme-screen-reader\">{{\r\n        strings.MsftSmeShell.Angular.DoughnutChart.Aria.RefreshInterval.format(refreshIntervalString) }}</div>\r\n      <div *ngIf=\"stateString\" class=\"sme-screen-reader\">{{ stateString }}</div>\r\n    </div>\r\n  </div>\r\n\r\n  <div *ngIf=\"legendPosition === 'right'\" class=\"sme-arrange-stack-h\">\r\n    <div class=\"sme-layout-relative sme-margin-inset-lg\" [ngStyle]=\"{'width': width}\"\r\n      [class.sme-margin-top-sm]=\"legendData.length === 0\">\r\n      <ng-container *ngTemplateOutlet=\"chartTemplate\"></ng-container>\r\n    </div>\r\n    <div *ngIf=\"legendData.length > 0\">\r\n      <sme-legend class=\"sme-margin-top-lg\" [legendData]=\"legendData\"></sme-legend>\r\n    </div>\r\n  </div>\r\n\r\n  <div *ngIf=\"legendPosition === 'top'\">\r\n    <div *ngIf=\"legendData.length > 0\">\r\n      <sme-legend [legendData]=\"legendData\"></sme-legend>\r\n    </div>\r\n    <div class=\"sme-layout-relative sme-margin-bottom-sm sme-margin-horizontal-lg\" [ngStyle]=\"{'width': width}\"\r\n      [class.sme-margin-top-sm]=\"legendData.length === 0\">\r\n      <ng-container *ngTemplateOutlet=\"chartTemplate\"></ng-container>\r\n    </div>\r\n  </div>\r\n</figure>\r\n\r\n<ng-template #chartTemplate>\r\n  <sme-chart class=\"sme-position-flex-auto\" #chart type=\"doughnut\" [data]=\"data\" [options]=\"options\"></sme-chart>\r\n  <div [id]=\"idBag.chartCenterText\" tabindex=\"0\" class=\"sme-layout-absolute sme-position-center\"\r\n    [attr.aria-labelledby]=\"idBag.chartCenterText\">\r\n    <div class=\"sme-screen-reader\">{{ strings.MsftSmeShell.Angular.DoughnutChart.Aria.CenterText }}</div>\r\n    <p class=\"sme-position-center-h-inline sme-font-h2\">{{ centerChartText }}</p>\r\n    <div class=\"sme-margin-top-xxs sme-color-base-40 sme-position-center-h-inline\">{{ centerChartSubtext }}</div>\r\n  </div>\r\n</ng-template>\r\n","import { ChangeDetectorRef, Component, Injector, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { ChartData } from 'chart.js';\r\nimport { ChartComponent } from '../chart/chart.component';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { LegendEntryData } from '../legend/legend-entry/legend-entry.component';\r\nimport { LegendPosition } from './legend-position';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Doughnut Chart @id sme-doughnut-chart-component}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/doughnut-chart-overview.md}\r\n *\r\n * @example {@label Doughnut Chart @id doughnut-chart}\r\n * @file {@filename component.html @filepath ./examples/doughnut-chart-example.component.html}\r\n * @file {@filename component.ts @filepath ./examples/doughnut-chart-example.component.ts}\r\n *\r\n * @example {@label Capacity Doughnut Chart @id capacity-doughnut-chart}\r\n * @file {@filename component.html @filepath ./examples/capacity-doughnut-chart-example.component.html}\r\n * @file {@filename component.ts @filepath ./examples/doughnut-chart-example.component.ts}\r\n */\r\n\r\nexport interface DoughnutChartData {\r\n    /**\r\n     * The label for the data segment\r\n     */\r\n    label: string;\r\n\r\n    /**\r\n     * The value of the data segment\r\n     */\r\n    value: number;\r\n\r\n    /**\r\n     * The display value to show in legends and tool tips\r\n     * example: value = 80 but displayValue = \"80%\"\r\n     * If not specified, value field will be used for labeling\r\n     */\r\n    displayValue?: string;\r\n\r\n    /**\r\n     * The color to use for the data segment\r\n     */\r\n    color: string;\r\n\r\n    /**\r\n     * True to show legend\r\n     */\r\n    showLegend?: boolean;\r\n}\r\n\r\n@Component({\r\n    selector: 'sme-doughnut-chart',\r\n    templateUrl: './doughnut-chart.component.html'\r\n})\r\nexport class DoughnutChartComponent extends CoreBaseComponent implements OnInit, OnDestroy {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'DoughnutChartComponent';\r\n    }\r\n\r\n    /**\r\n     * Whether or not to use a generated legend\r\n     * If legendData is specified, a legend will be shown regardless of showLegend value\r\n     */\r\n    @Input() public showLegend: boolean;\r\n\r\n    /**\r\n     * The legend data to put into the legend\r\n     * If legend is not specified, it will automatically be generated\r\n     */\r\n    @Input() public legendData: LegendEntryData[] = [];\r\n\r\n    /**\r\n     * List of data to be shown on the chart\r\n     */\r\n    @Input() public doughnutChartData: DoughnutChartData[] = [];\r\n\r\n    /**\r\n     * Title shown for the chart\r\n     */\r\n    @Input() public chartTitle: string;\r\n\r\n    /**\r\n     * Whether to display the chart title\r\n     * Defaults to true\r\n     */\r\n    @Input() public showTitle = true;\r\n\r\n    /**\r\n     * Text in the center of the doughnut chart\r\n     */\r\n    @Input() public centerChartText: string;\r\n\r\n    /**\r\n     * Subtext in the center of the doughnut chart\r\n     */\r\n    @Input() public centerChartSubtext: string;\r\n\r\n    /**\r\n     * Text that can be provided to give additional optional information about the doughnut chart\r\n     */\r\n    @Input() public tooltipTitle: string;\r\n\r\n    /**\r\n     * Sets the width of the chart. Can be any valid css width value. Defaults to 180px\r\n     */\r\n    @Input() public width: string;\r\n\r\n    /**\r\n     * A string explaining the how often the chart refreshes, if applicable\r\n     * Expect strings like \"3 minutes\" and \"30 seconds\"\r\n     * Used for aria-label of chart in sentence \"Chart refreshes every <refreshIntervalString>\"\r\n     */\r\n    @Input() public refreshIntervalString?: string;\r\n\r\n    /**\r\n     * A string explaining the current state of the chart, if applicable\r\n     * Expect strings like \"Critical State\" and \"Warning State\"\r\n     * Used for aria-label of chart to describe state\r\n     */\r\n    @Input() public stateString?: string;\r\n\r\n    /**\r\n     * The position of the legend relative to the chart.\r\n     */\r\n    @Input() public legendPosition?: LegendPosition.Bindable;\r\n\r\n    @ViewChild('chart') public chart: ChartComponent;\r\n    public options: any;\r\n    public data: ChartData;\r\n    public legendIsGenerated = false;\r\n\r\n    constructor(private changeDetectorRef: ChangeDetectorRef, injector: Injector) {\r\n        super(injector);\r\n        this.showLegend = true;\r\n        // TODO: cleanup\r\n        this.width = '180px';\r\n        this.legendPosition = LegendPosition.Top;\r\n    }\r\n\r\n    private validateLegendPosition(): void {\r\n        if (LegendPosition.fromBindableType(this.legendPosition) !== LegendPosition.Top &&\r\n            LegendPosition.fromBindableType(this.legendPosition) !== LegendPosition.Right) {\r\n            throw new Error('Currently accepted doughnut chart legendPosition input values are \"top\" and \"right\"');\r\n        }\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.validateLegendPosition();\r\n        this.options = {\r\n            animation: false,\r\n            cutoutPercentage: 87.5, // percent of circle to remove in center (affects line thickness)\r\n            tooltips: {\r\n                enabled: false\r\n            },\r\n            maintainAspectRatio: true,\r\n            responsive: true,\r\n            title: {\r\n                display: false\r\n            },\r\n            legend: {\r\n                display: false\r\n            }\r\n        };\r\n        this.updateChartData();\r\n    }\r\n\r\n    public updateChartData() {\r\n        const labels = [];\r\n        const values = [];\r\n        const colors = [];\r\n        const borderwidth = [];\r\n\r\n        // Check doughnutChartData is defined and contains elements avoid TypeError: Cannot read property 'foreach' of undefined\r\n        if (this.doughnutChartData && this.doughnutChartData.length > 0) {\r\n            this.doughnutChartData.forEach(chartData => {\r\n                labels.push(chartData.label);\r\n                values.push(chartData.value);\r\n                colors.push(chartData.color);\r\n                borderwidth.push(0);\r\n            });\r\n            this.data = {\r\n                labels: labels,\r\n                datasets: [\r\n                    {\r\n                        backgroundColor: colors,\r\n                        borderWidth: borderwidth,\r\n                        data: values\r\n                    }\r\n                ]\r\n            };\r\n        }\r\n\r\n        // automatically set legend data if showLegend is true\r\n        if (this.showLegend && (this.legendData.length === 0 || this.legendIsGenerated)) {\r\n            this.legendData = [];\r\n            for (let i = 0; i < this.doughnutChartData.length; i++) {\r\n                const data = this.doughnutChartData[i];\r\n                if (data.showLegend) {\r\n                    this.legendData.push({\r\n                        label: data.label,\r\n                        displayValue: data.displayValue || data.value,\r\n                        color: data.color\r\n                    });\r\n                }\r\n            }\r\n            this.legendIsGenerated = true;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * refreshed the chart data\r\n     */\r\n    public refresh() {\r\n        this.updateChartData();\r\n        // TODO: figure out if there is a way to reliably refresh without detect changes\r\n        this.changeDetectorRef.detectChanges();\r\n        this.chart.refresh();\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.changeDetectorRef.detach();\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            chartCenterText: ''\r\n        };\r\n    }\r\n\r\n}\r\n","import { ChangeDetectorRef, Component, EventEmitter, Injector, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { CapacityBase } from '../../common/capacity-base.component';\r\nimport { LegendEntryData } from '../../legend/legend-entry/legend-entry.component';\r\nimport { DoughnutChartComponent, DoughnutChartData } from '../doughnut-chart.component';\r\nimport { LegendPosition } from '../legend-position';\r\n\r\nexport interface CapacityDoughnutChartData {\r\n    /**\r\n     * The label for the data segment\r\n     */\r\n    label: string;\r\n\r\n    /**\r\n     * The value of the data segment\r\n     */\r\n    value: number;\r\n}\r\n\r\n@Component({\r\n    selector: 'sme-capacity-doughnut-chart',\r\n    templateUrl: './capacity-doughnut-chart.component.html'\r\n})\r\nexport class CapacityDoughnutChartComponent extends CapacityBase implements OnInit, OnDestroy {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'CapacityDoughnutChartComponent';\r\n    }\r\n\r\n    /**\r\n     * Whether or not to use a generated legend\r\n     * If legendData is specified, a legend will be shown regardless of showLegend value\r\n     */\r\n    @Input() public showLegend: boolean;\r\n\r\n    /**\r\n     * The legend data to put into the legend\r\n     * If legend is not specified, it will automatically be generated\r\n     */\r\n    @Input() public legendData: LegendEntryData[] = [];\r\n\r\n    /**\r\n     * Title shown for the chart\r\n     */\r\n    @Input() public chartTitle: string;\r\n\r\n    /**\r\n     * Whether to display the chart title\r\n     * Defaults to true\r\n     */\r\n    @Input() public showTitle = true;\r\n\r\n    /**\r\n     * List of data for the doughnut chart\r\n     */\r\n    @Input() public capacityChartData: CapacityDoughnutChartData[] = [];\r\n\r\n    /**\r\n     * Subtext to be shown in the center of the chart\r\n     */\r\n    @Input() public centerChartSubtext: string;\r\n\r\n    /**\r\n     * Text that can be provided to give additional optional information about the doughnut chart\r\n     */\r\n    @Input() public tooltipTitle: string;\r\n\r\n    /**\r\n     * Sets the width of the chart. Can be any valid css width value. Defaults to 180px\r\n     */\r\n    @Input() public width: string;\r\n\r\n    /**\r\n     * A string explaining the how often the chart refreshes, if applicable\r\n     * Expect strings like \"3 minutes\" and \"30 seconds\"\r\n     * Used for aria-label of chart in sentence \"Chart refreshes every <refreshIntervalString>\"\r\n     */\r\n    @Input() public refreshIntervalString?: string;\r\n\r\n    /**\r\n     * The position of the legend relative to the chart. Currently supported options are 'top' and 'right'\r\n     */\r\n    @Input() public legendPosition?: LegendPosition.Bindable;\r\n\r\n    /**\r\n     * Emits tool tip toggled event\r\n     * @deprecated since 9/25/2019. Please use 'tooltipToggled' instead\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\r\n    @Output() public get onTooltipToggle(): EventEmitter<void> {\r\n        return this.tooltipToggled;\r\n    }\r\n    @Output() public tooltipToggled = new EventEmitter<void>();\r\n    @ViewChild('chart') public chart: DoughnutChartComponent;\r\n\r\n    public percentUsedText: string;\r\n    public doughnutChartData: DoughnutChartData[] = [];\r\n    public stateString: string;\r\n\r\n    constructor(injector: Injector, private changeDetectorRef: ChangeDetectorRef) {\r\n        super(injector);\r\n        this.showLegend = true;\r\n        this.width = '180px';\r\n        this.legendPosition = LegendPosition.Top;\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.updateChartData();\r\n    }\r\n\r\n    private updateChartData() {\r\n\r\n        let amountUsed = 0;\r\n\r\n        // Check if capacityChartData is defined and contains elements avoid TypeError: Cannot read property 'foreach' of undefined\r\n        if (this.capacityChartData && this.capacityChartData.length > 0) {\r\n            this.capacityChartData.forEach(x => amountUsed += x.value);\r\n\r\n            // Default total when not provided to sum of capacityChartData\r\n            this.total = !this.total ? amountUsed : this.total;\r\n            if (!this.total || this.total <= 0 || this.total < amountUsed) {\r\n                throw new Error('Total must be defined as greater than both zero and the sum of values in the chart');\r\n            }\r\n        }\r\n\r\n        const amountFree = this.total - amountUsed;\r\n\r\n        // 0/0 evaluates to NaN. Condition added to set value to 0 when this is encountered\r\n        const fractionUsed = amountUsed > 0 ? amountUsed / this.total : 0;\r\n        const percentUsed = MsftSme.round(fractionUsed * 100, 1);\r\n        this.percentUsedText = '{0}%'.format(percentUsed);\r\n\r\n        const colorScheme = this.getColorScheme(amountUsed);\r\n        if (this.capacityChartData.length > colorScheme.length) {\r\n            throw new Error(\r\n                'Too many data entries for a capacity doughnut chart. Please use a generic doughnut chart with color scheme specified.');\r\n        }\r\n\r\n        this.stateString = this.getStateString(amountUsed);\r\n\r\n        this.doughnutChartData = [];\r\n        for (let i = 0; i < this.capacityChartData.length; i++) {\r\n            const valuePercent = MsftSme.round(this.capacityChartData[i].value / this.total * 100, 1);\r\n            this.doughnutChartData.push({\r\n                label: this.capacityChartData[i].label,\r\n                value: this.capacityChartData[i].value,\r\n                displayValue: '{0}%'.format(valuePercent),\r\n                color: colorScheme[i],\r\n                showLegend: true\r\n            });\r\n        }\r\n\r\n        // 0/0 evaluates to NaN. Condition added to set value to 0 when this is encountered\r\n        const fractionFree = amountFree > 0 ? amountFree / this.total : 0;\r\n        const percentFree = MsftSme.round(fractionFree * 100, 1);\r\n        this.doughnutChartData.push({\r\n            label: this.strings.MsftSmeShell.Angular.Common.free,\r\n            value: amountFree,\r\n            displayValue: '{0}%'.format(percentFree),\r\n            color: CapacityDoughnutChartComponent.defaults.freeColor,\r\n            showLegend: false\r\n        });\r\n    }\r\n\r\n    /**\r\n     * emit tool tip event\r\n     */\r\n    public toggleTooltip() {\r\n        this.tooltipToggled.emit();\r\n    }\r\n\r\n    /**\r\n     * refresh the chart data\r\n     */\r\n    public refresh() {\r\n        this.updateChartData();\r\n\r\n        // TODO: figure out if there is a way to reliably refresh without detect changes\r\n        this.changeDetectorRef.detectChanges();\r\n        this.chart.refresh();\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.changeDetectorRef.detach();\r\n    }\r\n}\r\n","<sme-doughnut-chart #chart [legendData]=\"legendData\" [showLegend]=\"showLegend\" [legendPosition]=\"legendPosition\" [chartTitle]=\"chartTitle\" [showTitle]=\"showTitle\" [doughnutChartData]=\"doughnutChartData\" [centerChartText]=\"percentUsedText\"\r\n  [centerChartSubtext]=\"centerChartSubtext\" [tooltipTitle]=\"tooltipTitle\" [width]=\"width\" [refreshIntervalString]=\"refreshIntervalString\" [stateString]=\"stateString\"></sme-doughnut-chart>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { IconModule } from '../icon/icon.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { LegendEntryComponent } from './legend-entry/legend-entry.component';\r\nimport { LegendComponent } from './legend.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        LegendComponent,\r\n        LegendEntryComponent\r\n    ],\r\n    declarations: [\r\n        LegendComponent,\r\n        LegendEntryComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        TooltipModule,\r\n        IconModule\r\n    ]\r\n})\r\nexport class LegendModule { }\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ChartModule } from '../chart/chart.module';\r\nimport { LegendModule } from '../legend/legend.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { CapacityDoughnutChartComponent } from './capacity-doughnut-chart/capacity-doughnut-chart.component';\r\nimport { DoughnutChartComponent } from './doughnut-chart.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        DoughnutChartComponent,\r\n        CapacityDoughnutChartComponent\r\n    ],\r\n    declarations: [\r\n        DoughnutChartComponent,\r\n        CapacityDoughnutChartComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        ChartModule,\r\n        LegendModule,\r\n        TooltipModule\r\n    ]\r\n})\r\nexport class DoughnutChartModule { }\r\n","<div *ngIf=\"active\" class=\"sme-layout-absolute-phone-up sme-position-inset-none sme-arrange-stack-v\">\r\n    <ng-content></ng-content>\r\n</div>","import { Component, HostBinding, Input } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'sme-guided-pane',\r\n    templateUrl: './guided-pane.component.html'\r\n})\r\nexport class GuidedPaneComponent {\r\n    @Input()\r\n    public paneId: string;\r\n    public active = false;\r\n\r\n    /**\r\n     * Host element binding for the display of the pane\r\n     */\r\n    @HostBinding('style.display') get getTop() {\r\n        return this.active ? 'block' : 'none';\r\n    }\r\n\r\n    /**\r\n     * Host element binding for the height of the pane\r\n     */\r\n    @HostBinding('style.height') get fullHeight() {\r\n        return '100%';\r\n    }\r\n}\r\n","import { AfterContentInit, Component, ContentChildren, ElementRef, Injector, Input, QueryList } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { GuidedPaneComponent } from './guided-pane/guided-pane.component';\r\n@Component({\r\n    selector: 'sme-guided-panel',\r\n    templateUrl: './guided-panel.component.html'\r\n})\r\nexport class GuidedPanelComponent extends CoreBaseComponent implements AfterContentInit {\r\n    /**\r\n * The source name to use for logging\r\n */\r\n    protected get logSourceName() {\r\n        return 'GuidedPanelComponent';\r\n    }\r\n\r\n    @ContentChildren('pane')\r\n    public panes: QueryList<GuidedPaneComponent>;\r\n\r\n    @Input()\r\n    public firstPaneId: string;\r\n\r\n    public paneHistory: string[] = [];\r\n\r\n    public activePane: GuidedPaneComponent;\r\n\r\n    /**\r\n     * Constructs a new instance of @see GuidedPanelComponent\r\n     * @param injector the injector service for the base class of this component\r\n     */\r\n    constructor(injector: Injector, private elementRef: ElementRef) {\r\n        super(injector);\r\n    }\r\n\r\n    public ngAfterContentInit() {\r\n        this.reset();\r\n    }\r\n\r\n    /**\r\n     * Resets the panel to the first pane\r\n     */\r\n    public reset() {\r\n        if (!this.firstPaneId) {\r\n            throw new Error(`No firstPaneId Defined. Please set the firstPaneId attribute on sme-guided-panel`);\r\n        }\r\n        this.activate(this.firstPaneId);\r\n    }\r\n\r\n    /**\r\n     * deactivates the currently active pane\r\n     * @param modifyHistory If true, adds the active pane to history before deactivating it\r\n     */\r\n    private deactivate(modifyHistory: boolean) {\r\n        if (this.activePane) {\r\n            if (modifyHistory) {\r\n                this.paneHistory.push(this.activePane.paneId);\r\n            }\r\n            this.activePane.active = false;\r\n            this.activePane = null;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Find a pane by its id\r\n     * @param id The id of the pane\r\n     */\r\n    private find(id: string): GuidedPaneComponent {\r\n        const pane = this.panes.find(p => p.paneId === id);\r\n        if (!pane) {\r\n            throw new Error(`Cannot find a guided pane with the id: ${id}.`);\r\n        }\r\n        return pane;\r\n    }\r\n\r\n    /**\r\n     * Activate a pane by its id\r\n     * @param id The id of the pane\r\n     */\r\n    public activate(id: string) {\r\n        const currentElement = document.activeElement;\r\n        // deactivate the current pane\r\n        this.deactivate(true);\r\n        // set the new active pane\r\n        this.activePane = this.find(id);\r\n        // set the new active panes state to active\r\n        this.activePane.active = true;\r\n        // reset history if we are back at the first pane\r\n        if (id === this.firstPaneId) {\r\n            this.paneHistory = [];\r\n        }\r\n\r\n        this.focusOnPaneElement(currentElement);\r\n    }\r\n\r\n    /**\r\n     * navigates back in the pane history\r\n     */\r\n    public back() {\r\n        if (!this.paneHistory || this.paneHistory.length === 0) {\r\n            throw new Error(`Cannot go back. Pane history is empty.`);\r\n        }\r\n        // get the previous id off the stack\r\n        const previous = this.paneHistory.pop();\r\n        // deactivate the current pane\r\n        this.deactivate(false);\r\n        // activate the previous panel\r\n        this.activate(previous);\r\n    }\r\n\r\n    /**\r\n     * If pane activation made us lose focus, refocus on first thing in the pane\r\n     * @param previousElement the element that was active before activating the new pane\r\n     */\r\n    @Debounce()\r\n    private focusOnPaneElement(previousElement: Element) {\r\n        if (!document.activeElement.isSameNode(previousElement)) {\r\n            const next = Dom.getNextFocusableElement(this.elementRef.nativeElement);\r\n            if (next) {\r\n                next.focus();\r\n            }\r\n        }\r\n    }\r\n}\r\n","<div class=\"sme-layout-absolute-phone-up sme-position-inset-none sme-arrange-stack-v\">\r\n    <div class=\"sme-layout-relative sme-position-flex-auto\">\r\n        <ng-content></ng-content>\r\n    </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { GuidedPaneComponent } from './guided-pane/guided-pane.component';\r\nimport { GuidedPanelComponent } from './guided-panel.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        GuidedPanelComponent,\r\n        GuidedPaneComponent\r\n    ],\r\n    declarations: [\r\n        GuidedPanelComponent,\r\n        GuidedPaneComponent\r\n    ],\r\n    imports: [\r\n        CommonModule\r\n    ]\r\n})\r\nexport class GuidedPanelModule { }\r\n","import { AfterViewInit, Component, Injector, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { ChartAnimationOptions, ChartLegendOptions, ChartOptions, ChartTooltipOptions } from 'chart.js';\r\nimport { ChartComponent } from '../chart/chart.component';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { CustomHorizontalBarChartData } from './custom-horizontal-bar-chart-data.interface';\r\n\r\n@Component({\r\n    selector: 'sme-horizontal-bar-chart',\r\n    templateUrl: './horizontal-bar-chart.component.html',\r\n    styleUrls: ['./horizontal-bar-chart.component.css']\r\n})\r\n/**\r\n * @deprecated 'Please use StackedHorizontalBarChartComponent instead'\r\n */\r\nexport class HorizontalBarChartComponent extends CoreBaseComponent implements OnInit, AfterViewInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'HorizontalBarChartComponent';\r\n    }\r\n    /**\r\n     * Input binding for optional chart.js legend option object - default is no legend.\r\n     *  See http://www.chartjs.org/docs/ for a complete list of  legend, tooltips, and animation options.\r\n     */\r\n    @Input() public legend?: ChartLegendOptions;\r\n\r\n    /**\r\n     * Input binding for optional chart.js tooltips option object - default is no tooltips\r\n     */\r\n    @Input() public tooltips?: ChartTooltipOptions;\r\n\r\n    /**\r\n     *  Input binding for optional chart.js animation object - default to no animation\r\n     */\r\n    @Input() public animation?: ChartAnimationOptions;\r\n\r\n    /**\r\n     * Input binding for data object similar to a chart.js LinearChartData object.\r\n     * This is similar to the data object that includes one additional parameter: total sum of all data.\r\n     * data.total is used to generate the maximum axis size so that all bars on the chart sum up to the same absolute\r\n     * width regardless of the total value.\r\n     */\r\n    @Input() public data: CustomHorizontalBarChartData;\r\n\r\n    /**\r\n     *  Input binding for height of bar chart in pixels. Default value is 50;\r\n     */\r\n    @Input() public height: number;\r\n\r\n    /**\r\n     * chart.js options object. Other than the optional legend, tooltips, and animation, these are pre-set and should not be altered.\r\n     */\r\n    public options: ChartOptions;\r\n\r\n    public initialized = false;\r\n\r\n    @ViewChild('horizontalBarChart') public horizontalBarChart: ChartComponent;\r\n\r\n    public update(pData: number[]) {\r\n        if (this.initialized) {\r\n            this.data.datasets.forEach((dataset, index) => {\r\n                dataset.data = [pData[index]];\r\n            });\r\n\r\n            this.horizontalBarChart.refresh();\r\n        }\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    public ngOnInit() {\r\n        // set 50px as default height. Must be set here in the init.\r\n        if (!this.height) {\r\n            this.height = 50;\r\n        }\r\n        this.options = <ChartOptions>{\r\n            legend: this.legend || { display: false },\r\n            tooltips: this.tooltips || { enabled: false },\r\n            animation: this.animation || false,\r\n\r\n            // do not change these options:\r\n            maintainAspectRatio: false,\r\n            responsive: true,\r\n            scales: {\r\n                xAxes: [{\r\n                    stacked: true,\r\n                    // do not display the axes or tick marks!\r\n                    display: false,\r\n                    ticks: {\r\n                        // only 2 tick marks: 0 and max, but not displayed at all so no padding, etc. the graph goes end to end!\r\n                        maxTicksLimit: 2,\r\n                        // max is total amount so the two (or more) segments always add up to full width\r\n                        max: this.data.total\r\n                    }\r\n                }],\r\n                yAxes: [{\r\n                    display: false\r\n                }]\r\n            }\r\n        };\r\n\r\n    }\r\n\r\n    public ngAfterViewInit(): void {\r\n        this.initialized = true;\r\n    }\r\n}\r\n","<sme-chart #horizontalBarChart class=\"sme-position-flex-auto bar-chart\" type=\"horizontalBar\" height=\"height\" [data]=\"data\" [options]=\"options\"></sme-chart>","<div *ngIf=\"chartTitle\" class=\"sme-layout-float-left stat-title\">{{ chartTitle }}</div>\r\n<div *ngIf=\"totalLabel\" class=\"sme-layout-float-right\">\r\n  {{ totalMessage }}\r\n  <span *ngIf=\"labelTooltip\" class=\"sme-icon sme-icon-unknown button-icon\" (mouseover)=\"toggleLabelTooltip()\" (mouseleave)=\"toggleLabelTooltip()\"></span>\r\n</div>\r\n\r\n<div class=\"divchart sme-background-color-base-80\" [style.height]=\"heightStyle\">\r\n  <div class=\"divchart-bar\" [style.transition]=\"widthTransitionStyle\" [style.width]=\"displayPercentCapacity\" [style.background-color]=\"usedBarColor\"></div>\r\n</div>\r\n\r\n<div *ngIf=\"usedLabel\" class=\"sme-layout-float-left\">{{ usedMessage }}</div>\r\n<div *ngIf=\"freeLabel\" class=\"sme-layout-float-right\">{{ freeMessage }}</div>\r\n","import { Component, EventEmitter, Injector, Input, OnChanges, OnInit, Output } from '@angular/core';\r\nimport { Strings } from '../../generated/Strings';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { CapacityBarChartUpdateData, CustomHorizontalBarChartData } from './custom-horizontal-bar-chart-data.interface';\r\n\r\n/**\r\n * This component will create a horizontal bar chart two segments.\r\n *  The first segment represents the amount of total currently used, and the other repressing the free amount left out of  the total.\r\n *  They will completely fill the width of the chart.\r\n */\r\n@Component({\r\n    selector: 'sme-capacity-bar-chart',\r\n    templateUrl: './capacity-bar-chart.component.html',\r\n    styleUrls: ['./horizontal-bar-chart.component.css']\r\n})\r\nexport class CapacityBarChartComponent extends CoreBaseComponent implements OnInit, OnChanges {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'CapacityBarChartComponent';\r\n    }\r\n    /**\r\n     *  Input binding for CSS width animation time in ms. Default if omitted is no animation.\r\n     */\r\n    @Input() public animationTime?: number;\r\n\r\n    /**\r\n     *  Input binding for height of bar chart in pixels\r\n     */\r\n    @Input() public height?: number;\r\n\r\n    /**\r\n     *  Input binding for number representing current amount (of total)\r\n     */\r\n    @Input() public capacityUsed: number;\r\n\r\n    /**\r\n     *  Input binding for number representing total amount possible\r\n     */\r\n    @Input() public totalCapacity: number;\r\n\r\n    /**\r\n     *  Input binding for optional percent (as a decimal) full at which the color turns from yellow to red (default is 0.9)\r\n     */\r\n    @Input() public warningAt?: number | string;\r\n\r\n    /**\r\n     *  Input binding for optional percent (as a decimal) full at which the color turns from blue to yellow (default is 0.8).\r\n     *  Use 'disabled' to disable warning and critical colors.\r\n     */\r\n    @Input() public criticalAt?: number | string;\r\n\r\n    /**\r\n     *  Input binding for optional title of chart.\r\n     *  Use 'disabled' to disable warning and critical colors.\r\n     */\r\n    @Input() public chartTitle?: string;\r\n\r\n    /**\r\n     *  Input binding for option to display total amount label.\r\n     */\r\n    @Input() public totalLabel?: string;\r\n\r\n    /**\r\n     *  Input binding for option to display used amount and percent used label.\r\n     */\r\n    @Input() public usedLabel?: string;\r\n\r\n    /**\r\n     *  Input binding for option to display free amount label.\r\n     */\r\n    @Input() public freeLabel?: string;\r\n\r\n    @Input() public labelTooltip?: boolean;\r\n\r\n    /**\r\n     * @deprecated since 9/25/2019. Please use 'tooltipToggled' instead\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\r\n    @Output() public get onTooltipToggle(): EventEmitter<void> {\r\n        return this.tooltipToggled;\r\n    }\r\n    @Output() public tooltipToggled = new EventEmitter<void>();\r\n\r\n    public displayPercentCapacity: string;\r\n    public freeCapacity: number;\r\n    public usedBarColor: string;\r\n    public data: CustomHorizontalBarChartData;\r\n    public percentCapacity: number;\r\n    public totalMessage: string;\r\n    public freeMessage: string;\r\n    public usedMessage: string;\r\n    public widthTransitionStyle: string;\r\n    public heightStyle: string;\r\n\r\n    public strings: Strings = MsftSme.getStrings<Strings>();\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    public getColor(yellowThreshold: string | number = 0.8, redThreshold: string | number = 0.9) {\r\n        const redColor = '#f64747';\r\n        const yellowColor = '#fbbc05';\r\n        const greenColor = '#02a28c';\r\n        if (yellowThreshold === 'disabled' || redThreshold === 'disabled') {\r\n            return greenColor;\r\n        }\r\n        // determine the color for the bar chart based on capacity used\r\n        if (this.percentCapacity >= parseFloat(redThreshold.toString())) {\r\n            return redColor;\r\n        }\r\n\r\n        if (this.percentCapacity >= parseFloat(yellowThreshold.toString())) {\r\n            return yellowColor;\r\n        }\r\n\r\n        return greenColor;\r\n    }\r\n\r\n    private updateChart() {\r\n        this.freeCapacity = this.totalCapacity - this.capacityUsed;\r\n        this.percentCapacity = this.totalCapacity > 0 ? this.capacityUsed / this.totalCapacity : 0;\r\n        this.displayPercentCapacity = '{0}%'.format(Math.round(this.percentCapacity * 100));\r\n\r\n        // update the chart used and free labels if it has them already\r\n        this.usedLabel = this.usedLabel ? this.usedLabel : '';\r\n        this.freeLabel = this.freeLabel ? this.freeLabel : '';\r\n        this.totalLabel = this.totalLabel ? this.totalLabel : '';\r\n\r\n        this.totalMessage = this.strings.MsftSmeShell.Angular.CapacityBarChart.totalFormat.format(this.totalLabel);\r\n        this.usedMessage = this.strings.MsftSmeShell.Angular.CapacityBarChart.usedFormat.format(\r\n            this.usedLabel,\r\n            this.displayPercentCapacity\r\n        );\r\n\r\n        this.freeMessage = this.strings.MsftSmeShell.Angular.CapacityBarChart.freeFormat.format(this.freeLabel);\r\n        this.usedBarColor = this.getColor(this.warningAt, this.criticalAt);\r\n    }\r\n\r\n    public ngOnChanges(): void {\r\n        this.updateChart();\r\n    }\r\n\r\n    public toggleLabelTooltip(): void {\r\n        this.tooltipToggled.emit();\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.height = this.height ? this.height : 36; // set default height\r\n        this.animationTime = this.animationTime ? this.animationTime : 0;  // set no animation as default\r\n        this.widthTransitionStyle = 'width {0}ms'.format(this.animationTime);\r\n        this.heightStyle = '{0}px'.format(this.height);\r\n    }\r\n\r\n    /**\r\n     * @deprecated since 03/14/18. CapacityBarChart now uses ngOnChanges to automatically update.\r\n     * Calling CapacityBarChart.update() is no longer required.\r\n     */\r\n    public update(pData: CapacityBarChartUpdateData) {\r\n        this.prepareInputDataForUX(pData);\r\n    }\r\n\r\n    /**\r\n     * @deprecated since 03/14/18. CapacityBarChart now uses ngOnChanges to automatically update.\r\n     * Calling CapacityBarChart.update() is no longer required.\r\n     */\r\n    private prepareInputDataForUX(pData: CapacityBarChartUpdateData) {\r\n        this.freeCapacity = pData.totalCapacity - pData.capacityUsed;\r\n        this.percentCapacity = pData.totalCapacity > 0 ? pData.capacityUsed / pData.totalCapacity : 0;\r\n        this.displayPercentCapacity = '{0}%'.format(Math.round(this.percentCapacity * 100));\r\n\r\n        // update the chart used and free labels if it has them already\r\n        this.usedLabel = this.usedLabel ? pData.usedLabel : '';\r\n        this.freeLabel = this.freeLabel ? pData.freeLabel : '';\r\n        this.totalLabel = this.totalLabel ? pData.totalLabel : '';\r\n\r\n        this.totalMessage = this.strings.MsftSmeShell.Angular.CapacityBarChart.totalFormat.format(this.totalLabel);\r\n        this.usedMessage = this.strings.MsftSmeShell.Angular.CapacityBarChart.usedFormat.format(\r\n            this.usedLabel,\r\n            this.displayPercentCapacity\r\n        );\r\n\r\n        this.freeMessage = this.strings.MsftSmeShell.Angular.CapacityBarChart.freeFormat.format(this.freeLabel);\r\n        this.usedBarColor = this.getColor(this.warningAt, this.criticalAt);\r\n    }\r\n}\r\n","import { Component, Injector, Input, OnInit } from '@angular/core';\r\nimport { CapacityBase } from '../common/capacity-base.component';\r\nimport { HorizontalBar } from './custom-horizontal-bar-chart-data.interface';\r\n\r\n@Component({\r\n    selector: 'sme-stacked-bar',\r\n    template: ''\r\n})\r\nexport class StackedBarComponent extends CapacityBase implements OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'StackedBarComponent';\r\n    }\r\n\r\n    /**\r\n     *  Input binding for this bar instance\r\n     */\r\n    @Input() public bar: HorizontalBar;\r\n\r\n    /**\r\n     *  Input binding for index of this bar instance in the HorizontalBars array\r\n     */\r\n    @Input() public index: number;\r\n\r\n    /**\r\n     *  Input binding for capacity bars data\r\n     */\r\n    @Input() public bars: HorizontalBar[] = [];\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.addClasses();\r\n        this.addStyles();\r\n    }\r\n\r\n    public addClasses() {\r\n        const color = this.bar.color ? this.bar.color : 'base';\r\n\r\n        if (this.bar.stripeAlpha) {\r\n            this.addClass('sme-background-stripes-{0}-{1}'.format(color, this.bar.stripeAlpha));\r\n        }\r\n    }\r\n\r\n    private getValue(bar: HorizontalBar): number {\r\n        return this.total ? (bar.value / this.total) * 100 : bar.value;\r\n    }\r\n\r\n    public getWidth(bar: HorizontalBar): string {\r\n        const value = this.getValue(bar);\r\n        return '{0}%'.format(value);\r\n    }\r\n\r\n    public getColor(bar: HorizontalBar): string {\r\n        // if user specifies a color, use that color. Otherwise use the color scheme\r\n        if (!MsftSme.isNullOrUndefined(this.bar.color)) {\r\n            return this.bar.color;\r\n        }\r\n\r\n        // ensure both bars have the same color scheme - sum will be used to determine if the amount exceeds the red/yellow threshold\r\n        let barTotal = 0;\r\n        for (const tmpBar of this.bars) {\r\n            barTotal += tmpBar.value;\r\n        }\r\n        const colorScheme = this.getColorScheme(barTotal);\r\n\r\n        if (MsftSme.isNullOrUndefined(colorScheme[this.index])) {\r\n            // eslint-disable-next-line max-len\r\n            throw new Error('Color property must be set on HorizontalBar input if the StackedBarComponent is used outside of a StackedBarChartComponent. Or the color scheme value is not defined for this index.');\r\n        } else {\r\n            return colorScheme[this.index];\r\n        }\r\n    }\r\n\r\n    public addStyles() {\r\n        this.setStyle('width', this.getWidth(this.bar));\r\n\r\n        // stripeAlpha indicates intent to use striped color instead of solid color\r\n        if (!this.bar.stripeAlpha) {\r\n            this.setStyle('background-color', this.getColor(this.bar));\r\n        }\r\n\r\n        if (this.bar.right) {\r\n            this.setStyle('right', this.getOffset(this.index, this.bar.right));\r\n        } else {\r\n            this.setStyle('left', this.getOffset(this.index));\r\n        }\r\n    }\r\n\r\n    public getOffset(index: number, rightSideBar?: boolean): string {\r\n        let offset = 0;\r\n\r\n        this.bars.forEach((bar, tmpIndex) => {\r\n            const isMatchingSide = rightSideBar ? bar.right : !bar.right;\r\n            if (tmpIndex < index && isMatchingSide) {\r\n                const value = this.getValue(bar);\r\n                offset += value;\r\n            }\r\n        });\r\n        return '{0}%'.format(offset);\r\n    }\r\n\r\n        /**\r\n     * Gets the initial host classes to be applied to this element\r\n     * Derived classes are always expected to call super.getInitialHostClasses() when overriding\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-position-flex-none'\r\n        ]);\r\n    }\r\n}\r\n","<figure class=\"sme-focus-zone\" tabindex=\"0\">\r\n\r\n  <div *ngIf=\"chartTitle && showTitle\" class=\"sme-height-lg\" aria-hidden=\"true\">\r\n    <div class=\"sme-font-family-bold sme-position-center-h-inline sme-layout-float-left\">{{chartTitle}}</div>\r\n  </div>\r\n\r\n  <div class=\"sme-arrange-stack-h sme-background-color-base-80 sme-high-contrast-layout-none sme-margin-top-xs\"\r\n    [style.height]=\"heightStyle\">\r\n    <div class=\"sme-position-flex-none sme-position-stretch-h sme-arrange-stack-h\">\r\n      <ng-container *ngFor=\"let bar of bars; let i = index;\">\r\n        <sme-stacked-bar *ngIf=\"!bar.right\"  [normalColorScheme]=\"normalColorScheme\"\r\n          [warningColorScheme]=\"warningColorScheme\" [criticalColorScheme]=\"criticalColorScheme\"\r\n          [criticalThreshold]=\"criticalThreshold\" [warningThreshold]=\"warningThreshold\" [bar]=\"bar\" [index]=\"i\"\r\n          [bars]=\"bars\" [total]=\"total\" [style.height]=\"heightStyle\"></sme-stacked-bar>\r\n      </ng-container>\r\n    </div>\r\n    <!-- Explanation: margin-left:-100% To have the stripped bars overlap the solid bars, we place this\r\n         stack of bars to be directly over the last set and have them arranged to be starting on the right-->\r\n    <div class=\"sme-position-flex-none sme-position-stretch-h sme-arrange-stack-h-reversed\" style=\"margin-left:-100%\">\r\n      <ng-container *ngFor=\"let bar of bars; let i = index;\">\r\n        <sme-stacked-bar *ngIf=\"bar.right\"  [normalColorScheme]=\"normalColorScheme\"\r\n          [warningColorScheme]=\"warningColorScheme\" [criticalColorScheme]=\"criticalColorScheme\"\r\n          [criticalThreshold]=\"criticalThreshold\" [warningThreshold]=\"warningThreshold\" [bar]=\"bar\" [index]=\"i\"\r\n          [bars]=\"bars\" [total]=\"total\" [style.height]=\"heightStyle\"></sme-stacked-bar>\r\n      </ng-container>\r\n    </div>\r\n  </div>\r\n\r\n  <div *ngIf=\"legendData.length > 0 && showLegend\">\r\n    <div class=\"sme-position-flex-auto sme-arrange-stack-h\">\r\n      <sme-legend class=\"sme-position-flex-auto\" [normalColorScheme]=\"normalColorScheme\"\r\n        [warningColorScheme]=\"warningColorScheme\" [criticalColorScheme]=\"criticalColorScheme\"\r\n        [criticalThreshold]=\"criticalThreshold\" [warningThreshold]=\"warningThreshold\" [legendData]=\"legendData\"\r\n        [total]=\"total\" [hideInHighContrast]=\"true\" [svgLegendColorIndicator]=\"false\"></sme-legend>\r\n\r\n      <div *ngIf=\"legendTotalData\">\r\n        <sme-legend [normalColorScheme]=\"normalColorScheme\" [warningColorScheme]=\"warningColorScheme\"\r\n          [criticalColorScheme]=\"criticalColorScheme\" [criticalThreshold]=\"criticalThreshold\"\r\n          [warningThreshold]=\"warningThreshold\" [legendData]=\"legendTotalData\" [hideInHighContrast]=\"true\"\r\n          [svgLegendColorIndicator]=\"false\"></sme-legend>\r\n      </div>\r\n    </div>\r\n  </div>\r\n\r\n</figure>","import { Component, Injector, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { Strings } from '../../generated/Strings';\r\nimport { CapacityBase } from '../common/capacity-base.component';\r\nimport { LegendEntryData } from '../legend/legend-entry/legend-entry.component';\r\nimport { HorizontalBar } from './custom-horizontal-bar-chart-data.interface';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Stacked Horizontal Bar Chart @id sme-stacked-horizontal-bar-chart-dev-guide}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/overview.md}\r\n *\r\n * @example {@label Stacked horizontal bar chart @id horizontal-bar-chart}\r\n * @file {@filename component.html @filepath ./examples/horizontal-bar-chart.component.html}\r\n * @file {@filename component.ts @filepath ./examples/horizontal-bar-chart.component.ts}\r\n *\r\n * @example {@label Stacked horizontal bar chart with custom color @id horizontal-bar-chart-custom-color}\r\n * @file {@filename component.html @filepath ./examples/horizontal-bar-chart-custom-color.component.html}\r\n * @file {@filename component.ts @filepath ./examples/horizontal-bar-chart-custom-color.component.ts}\r\n *\r\n */\r\n@Component({\r\n    selector: 'sme-stacked-horizontal-bar-chart',\r\n    templateUrl: './stacked-horizontal-bar-chart.component.html'\r\n})\r\nexport class StackedHorizontalBarChartComponent extends CapacityBase\r\n    implements OnInit, OnChanges {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'StackedHorizontalBarChartComponent';\r\n    }\r\n\r\n    /**\r\n     *  Input binding for height of bar chart in pixels\r\n     */\r\n    @Input() public height?: number;\r\n\r\n    /**\r\n     *  Input binding for capacity bars data\r\n     */\r\n    @Input() public bars: HorizontalBar[] = [];\r\n\r\n    /**\r\n     * Whether or not to use a generated legend\r\n     * If legendData is specified a legend will be shown regardless of showLegend value\r\n     */\r\n    @Input() public showLegend ? = true;\r\n\r\n    /**\r\n     * the legend data to put into the legend\r\n     */\r\n    @Input() public legendData?: LegendEntryData[] = [];\r\n\r\n    /**\r\n     * the total legend value\r\n     * The color and right alignment are handled in the bar chart itself.\r\n     */\r\n    @Input() public legendTotalValue?: any;\r\n\r\n    /**\r\n     * the total legend label\r\n     */\r\n    @Input() public legendTotalLabel?: string;\r\n\r\n    /**\r\n     * Title shown for the chart\r\n     */\r\n    @Input() public chartTitle?: string;\r\n\r\n    /**\r\n     * True to display the chart title\r\n     */\r\n    @Input() public showTitle ? = true;\r\n\r\n    /**\r\n     * Legend data for the total of the chart.\r\n     * This data will take priority over legendTotalValue & legendTotalLabel.\r\n     */\r\n    @Input() public legendTotalData?: LegendEntryData[];\r\n\r\n    /**\r\n     * Aria description for the bar chart\r\n     */\r\n    @Input() public description?: string;\r\n\r\n    public heightStyle: string;\r\n    public strings: Strings = MsftSme.getStrings<Strings>();\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Angular lifecycle hook, called after the component is initialized\r\n     */\r\n    public ngOnInit(): void {\r\n        super.ngOnInit();\r\n        this.height = this.height ? this.height : 36; // set default height\r\n        this.heightStyle = '{0}px'.format(this.height);\r\n        this.updateLegendTotal();\r\n        this.setAriaLabel();\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular OnChanges interface\r\n     * @param changes - the changes that occurred\r\n     */\r\n    public ngOnChanges(changes: SimpleChanges) {\r\n        super.ngOnChanges(changes);\r\n        if (changes.legendTotalValue) {\r\n            this.legendTotalData = null;\r\n            this.updateLegendTotal();\r\n        } else if (changes.chartTitle || changes.description) {\r\n            this.setAriaLabel();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Update the total legend entry\r\n     */\r\n    public updateLegendTotal() {\r\n        if (MsftSme.isNullOrUndefined(this.legendTotalData) && !MsftSme.isNullOrUndefined(this.legendTotalValue)) {\r\n                const legendTotalEntry = {\r\n                    displayValue: this.legendTotalValue,\r\n                    label: this.strings.MsftSmeShell.Angular.StackedHorizontalBarChart.totalLabel,\r\n                    rightAlign: true,\r\n                    noColor: true\r\n                };\r\n                if (this.legendTotalLabel) {\r\n                    legendTotalEntry.label = this.legendTotalLabel;\r\n                }\r\n                this.legendTotalData = [legendTotalEntry];\r\n        }\r\n    }\r\n\r\n    private setAriaLabel() {\r\n        let ariaLabel = '';\r\n        if (this.hostElement.nativeElement.childNodes.length > 0) {\r\n            const rootElement = this.hostElement.nativeElement.childNodes[0];\r\n            rootElement.setAttribute('aria-label', ariaLabel);\r\n\r\n            if (this.chartTitle) {\r\n                ariaLabel = this.chartTitle;\r\n                if (this.description) {\r\n                    ariaLabel += ' ' + this.description;\r\n                }\r\n            } else if (this.description) {\r\n                ariaLabel = this.description;\r\n            }\r\n            ariaLabel += ' ' + this.strings.MsftSmeShell.Angular.StackedHorizontalBarChart.Aria.roleDescription;\r\n            rootElement.setAttribute('aria-label', ariaLabel);\r\n        }\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ChartModule } from '../chart/chart.module';\r\nimport { LegendModule } from '../legend/legend.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { CapacityBarChartComponent } from './capacity-bar-chart.component';\r\nimport { HorizontalBarChartComponent } from './horizontal-bar-chart.component';\r\nimport { StackedBarComponent } from './stacked-bar.component';\r\nimport { StackedHorizontalBarChartComponent } from './stacked-horizontal-bar-chart.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        HorizontalBarChartComponent,\r\n        CapacityBarChartComponent,\r\n        StackedBarComponent,\r\n        StackedHorizontalBarChartComponent\r\n    ],\r\n    declarations: [\r\n        HorizontalBarChartComponent,\r\n        CapacityBarChartComponent,\r\n        StackedBarComponent,\r\n        StackedHorizontalBarChartComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        ChartModule,\r\n        LegendModule,\r\n        TooltipModule\r\n    ]\r\n})\r\nexport class HorizontalBarChartModule { }\r\n","<div *ngIf=\"lineChartData\" class=\"sme-focus-zone\">\r\n  <div *ngIf=\"lineChartData.title\" [attr.aria-hidden]=\"showLegend\"> {{ lineChartData.title }}</div>\r\n\r\n  <sme-legend *ngIf=\"showLegend\"\r\n    [legendData]=\"(!chartLegendData || chartLegendData.length === 0) ? generatedLegendData : chartLegendData\"\r\n    [attr.aria-label]=\"lineChartData.title\">\r\n  </sme-legend>\r\n\r\n  <div class=\"sme-arrange-stack-h sme-arrange-overflow-show\">\r\n    <div class=\"sme-position-stretch-h\">\r\n      <sme-chart\r\n        class=\"sme-position-flex-none sme-layout-block sme-border-bottom-sm sme-border-right-sm sme-border-color-base-80\"\r\n        #linechart [type]=\"getTypeString(lineChartData.type)\" [data]=\"lineChartData.chartData\"\r\n        [options]=\"chartOptions\"></sme-chart>\r\n      <div class=\"sme-margin-top-xxs sme-color-black-60\">\r\n        <div class=\"sme-layout-float-left sme-font-label\">{{ lineChartData.xAxisMaxLabel }}</div>\r\n        <div class=\"sme-layout-float-right sme-font-label\">{{ lineChartData.xAxisMinLabel }}</div>\r\n      </div>\r\n    </div>\r\n    <div\r\n      class=\"sme-position-flex-auto sme-arrange-stack-v sme-margin-left-xxs sme-margin-bottom-md sme-arrange-stack-v sme-color-black-60\">\r\n      <div class=\"sme-font-label sme-position-flex-auto sme-layout-line-chart-y-axis\">\r\n        {{ lineChartData.yAxisMaxLabel }}</div>\r\n      <div class=\"sme-font-label sme-position-flex-none sme-layout-line-chart-y-axis\">\r\n        {{ lineChartData.yAxisMinLabel }}</div>\r\n    </div>\r\n  </div>\r\n\r\n</div>","import { DatePipe } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectorRef, Component, Injector, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Globalization } from '@microsoft/windows-admin-center-sdk/core/data/globalization';\r\nimport { ChartData, ChartDataSets, ChartOptions } from 'chart.js';\r\nimport { ChartComponent } from '../chart/chart.component';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { LegendEntryData } from '../legend/legend-entry/legend-entry.component';\r\n\r\nexport enum LineChartType {\r\n    /**\r\n     * Line chart takes in data as number[]\r\n     */\r\n    Line = 1,\r\n\r\n    /**\r\n     * Scatter chart takes in data as ChartPoint[] with x and y coordinates\r\n     */\r\n    Scatter = 2,\r\n\r\n    /**\r\n     * Historical chart takes in data at ChartPoint[] with x and y coordinates\r\n     * x coordinates or historical chart are in the format of an integer timestamp\r\n     * so that the tooltips can format the appropriate date\r\n     */\r\n    Historical = 3\r\n}\r\n\r\nexport interface LineChartData {\r\n    title: string;\r\n    chartData: ChartData;\r\n    currentValueLabel?: string;\r\n    firstCurrentValueLabel?: string;\r\n    secondCurrentValueLabel?: string;\r\n    totalCurrentValueLabel?: string;\r\n    firstLabel?: string;\r\n    secondLabel?: string;\r\n    totalLabel?: string;\r\n    yAxisMinLabel?: string;\r\n    yAxisMaxLabel?: string;\r\n    xAxisMaxLabel?: string;\r\n    xAxisMinLabel?: string;\r\n    ymaxValue?: number;\r\n    type?: LineChartType;\r\n    xAxisMin?: number;\r\n    xAxisMax?: number;\r\n    unitLabel?: string;\r\n    isLoading?: boolean;\r\n}\r\n\r\n@Component({\r\n    selector: 'sme-line-chart',\r\n    templateUrl: './line-chart.component.html',\r\n    providers: [DatePipe]\r\n})\r\nexport class LineChartComponent extends CoreBaseComponent implements OnInit, AfterViewInit, OnDestroy {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'LineChartComponent';\r\n    }\r\n    @ViewChild('linechart') public chart: ChartComponent;\r\n    /**\r\n     *  Function to apply to tooltip data for pretty-printing the value\r\n     */\r\n    @Input() public tooltipFormatter: Function;\r\n    @Input() public lineChartData: LineChartData;\r\n    @Input() public useCustomSettings?: boolean;\r\n    @Input() public chartLegendData: LegendEntryData[];\r\n    @Input() public chartOptions: ChartOptions;\r\n\r\n    public generatedLegendData: LegendEntryData[];\r\n\r\n    // blue 80\r\n    private readonly primaryLineColor = 'rgba(51, 133, 198, 1.0)';\r\n    private readonly primaryBackgroundColor = 'rgba(51, 133, 198, 0.1)';\r\n\r\n    // magenta\r\n    private readonly secondaryLineColor = 'rgba(180, 0, 158, 1.0)';\r\n    private readonly secondaryBackgroundColor = 'rgba(180, 0, 158, 0.1)';\r\n\r\n    // teal 80\r\n    private readonly tertiaryLineColor = 'rgba(51, 155, 142, 1.0)';\r\n    private readonly tertiaryBackgroundColor = 'rgba(51, 155, 142, 0.1)';\r\n\r\n    private readonly defaultSettings: ChartDataSets[] = [\r\n        {\r\n            borderColor: this.primaryLineColor,\r\n            backgroundColor: this.primaryBackgroundColor,\r\n            pointHoverBackgroundColor: this.primaryLineColor\r\n        },\r\n        {\r\n            borderColor: this.secondaryLineColor,\r\n            backgroundColor: this.secondaryBackgroundColor,\r\n            pointHoverBackgroundColor: this.secondaryLineColor\r\n        },\r\n        {\r\n            borderColor: this.tertiaryLineColor,\r\n            backgroundColor: this.tertiaryBackgroundColor,\r\n            pointHoverBackgroundColor: this.tertiaryLineColor\r\n        }\r\n    ];\r\n\r\n    public get showLegend(): boolean {\r\n        const legendData = this.chartLegendData || this.generatedLegendData;\r\n        return !!(legendData && legendData.length);\r\n    }\r\n\r\n    /**\r\n     * Constructs a new instance of @see LineChartComponent\r\n     * @param injector the injector service for the base class of this component\r\n     * @param changeDetectorRef provides data change detection to the line chart\r\n     */\r\n    constructor(injector: Injector, private changeDetectorRef: ChangeDetectorRef) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Angular lifecycle hook, called after the component is initialized\r\n     */\r\n    public ngOnInit(): void {\r\n        this.validateChartType();\r\n        // preserve options referential integrity\r\n        const originalOptions = this.chartOptions || {};\r\n        const options = MsftSme.deepCopy(originalOptions);\r\n        this.chartOptions = MsftSme.deepAssign(originalOptions, this.getDefaultOptions(), options);\r\n    }\r\n\r\n    private getDefaultOptions() {\r\n        return {\r\n            tooltips: {\r\n                callbacks: {\r\n                    label: (tooltipItem, data) => {\r\n                        return this.getTooltipLabel(tooltipItem, data);\r\n                    }\r\n                }\r\n            },\r\n            scales: {\r\n                yAxes: [{\r\n                    display: false,\r\n                    ticks: {\r\n                        display: false,\r\n                        min: 0,\r\n                        max: this.lineChartData ? this.lineChartData.ymaxValue : undefined,\r\n                        maxTicksLimit: 1\r\n                    }\r\n                }],\r\n                xAxes: [{\r\n                    display: false,\r\n                    ticks: {\r\n                        min: this.lineChartData ? this.lineChartData.xAxisMin : undefined,\r\n                        max: this.lineChartData ? this.lineChartData.xAxisMax : undefined\r\n                    },\r\n                    gridLines: {\r\n                        display: false\r\n                    }\r\n                }\r\n                ]\r\n            },\r\n            animation: {\r\n                duration: 0\r\n            },\r\n            title: {\r\n                display: false\r\n            },\r\n            legend: {\r\n                display: false\r\n            }\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Angular lifecycle hook, called after the view is initialized\r\n     */\r\n    public ngAfterViewInit() {\r\n        this.refresh();\r\n        this.changeDetectorRef.detectChanges();\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.changeDetectorRef.detach();\r\n    }\r\n\r\n    // give the charts standard appearance across the whole application unless user sets useCustomSettings\r\n    private useDefaultSettings() {\r\n        if (!this.chart || !this.lineChartData || !this.lineChartData.chartData || !this.lineChartData.chartData.datasets) {\r\n            return;\r\n        }\r\n\r\n        const dataSets = this.lineChartData.chartData.datasets;\r\n        for (let i = 0; i < Math.min(dataSets.length, 3); i++) {\r\n            const dataset = dataSets[i];\r\n            dataset.borderColor = this.defaultSettings[i].borderColor;\r\n            dataset.backgroundColor = dataSets.length < 3 ? this.defaultSettings[i].backgroundColor : 'rgba(0,0,0,0)';\r\n            dataset.borderWidth = 2;\r\n            dataset.pointHoverBackgroundColor = this.defaultSettings[i].pointHoverBackgroundColor;\r\n            dataset.pointRadius = 0;\r\n            dataset.pointHitRadius = 5;\r\n            dataset.showLine = true;\r\n            dataset.lineTension = 0;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * generate legend data if currentValueLabelData is given\r\n     */\r\n    public generateLegendData() {\r\n        this.generatedLegendData = [];\r\n        const dataSets = this.lineChartData.chartData.datasets;\r\n        if (!MsftSme.isNullOrUndefined(this.lineChartData.currentValueLabel) && dataSets.length > 0) {\r\n            const unitLabel = this.lineChartData.unitLabel || '';\r\n            this.generatedLegendData.push({\r\n                label: '',\r\n                displayValue: this.lineChartData.currentValueLabel + ' ' + unitLabel,\r\n                color: dataSets[0].borderColor.toString()\r\n            });\r\n        } else {\r\n            this.chartLegendData = [];\r\n            if (!MsftSme.isNullOrUndefined(this.lineChartData.currentValueLabel) && this.lineChartData.firstLabel && dataSets.length > 0) {\r\n                this.chartLegendData.push({\r\n                    label: this.lineChartData.firstLabel,\r\n                    displayValue: this.lineChartData.firstCurrentValueLabel,\r\n                    color: dataSets[0].borderColor.toString()\r\n                });\r\n            }\r\n            if (!MsftSme.isNullOrUndefined(this.lineChartData.currentValueLabel) && this.lineChartData.secondLabel && dataSets.length > 1) {\r\n                this.chartLegendData.push({\r\n                    label: this.lineChartData.secondLabel,\r\n                    displayValue: this.lineChartData.secondCurrentValueLabel,\r\n                    color: dataSets[1].borderColor.toString()\r\n                });\r\n            }\r\n            if (!MsftSme.isNullOrUndefined(this.lineChartData.currentValueLabel) && this.lineChartData.totalLabel && dataSets.length > 2) {\r\n                this.chartLegendData.push({\r\n                    label: this.lineChartData.totalLabel,\r\n                    displayValue: this.lineChartData.totalCurrentValueLabel,\r\n                    color: dataSets[2].borderColor.toString()\r\n                });\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Throw error if consumer is trying to graph a scatter plot without x y coordinates\r\n     */\r\n    private validateChartType() {\r\n        if (!this.lineChartData) {\r\n            return;\r\n        }\r\n\r\n        this.lineChartData.chartData.datasets.forEach(dataset => {\r\n            // Note: this would be better written with a check on every element of the array,\r\n            // However tsc is unable to typecheck Array.every on a union of array types.\r\n            // So we assume the type is number[] if the first element is a number.\r\n            const isNumArray = dataset.data && dataset.data.length > 0 && typeof dataset.data[0] === 'number';\r\n\r\n            if (isNumArray && this.lineChartData && this.lineChartData.type && this.lineChartData.type !== LineChartType.Line) {\r\n                throw new Error('Historical and Scatter chart types require all dataset data to be of type ChartPoint[]');\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * return the string for the type of line chart\r\n     * @param type the type of line chart\r\n     */\r\n    public getTypeString(type: LineChartType): string {\r\n        return type === LineChartType.Scatter || type === LineChartType.Historical ? 'scatter' : 'line';\r\n    }\r\n\r\n    /**\r\n     * Returns tool tip label according to the type of chart being used\r\n     * @param tooltipItem - the specific item that needs a tooltip\r\n     * @param data - the linearchartdata object\r\n     */\r\n    private getTooltipLabel(tooltipItem, data): string {\r\n        const dataset = data.datasets[tooltipItem.datasetIndex];\r\n        const dataPoint = dataset.data[tooltipItem.index];\r\n        const title = dataset.label;\r\n        let value = '';\r\n        let label = '';\r\n        if (this.lineChartData.type === LineChartType.Historical) {\r\n            // this is where tooltip pretty printing needs to happen\r\n            value = this.tooltipFormatter ?\r\n                this.tooltipFormatter(dataPoint.y)\r\n                : Globalization.number(dataPoint.y, { maximumFractionDigits: 2 });\r\n            label = Globalization.dateTimeOnly(new Date(dataPoint.x));\r\n        } else if (this.lineChartData.type === LineChartType.Scatter) {\r\n            value = this.tooltipFormatter ?\r\n                this.tooltipFormatter(dataPoint.y)\r\n                : Globalization.number(dataPoint.y, { maximumFractionDigits: 2 });\r\n            label = dataPoint.x;\r\n        } else {\r\n            const tmpValue = dataPoint.y ? dataPoint.y : dataPoint;\r\n            value = this.tooltipFormatter ? this.tooltipFormatter(tmpValue) : Globalization.number(tmpValue, { maximumFractionDigits: 2 });\r\n        }\r\n\r\n        return label ? '{0} {1}: {2}'.format(title, label, value) : '{0}: {1}'.format(title, value);\r\n    }\r\n\r\n    /**\r\n     * Refresh the chart when new data is added to lineChartData input\r\n     */\r\n    public refresh() {\r\n        if (!this.useCustomSettings) {\r\n            this.useDefaultSettings();\r\n        }\r\n\r\n        if (!this.chartLegendData || this.chartLegendData.length === 0) {\r\n            this.generateLegendData();\r\n        }\r\n\r\n        if (this.lineChartData && this.chartOptions) {\r\n            const scalesChanged = this.chartOptions.scales.yAxes[0].ticks.max !== this.lineChartData.ymaxValue\r\n                || this.chartOptions.scales.xAxes[0].ticks.min !== this.lineChartData.xAxisMin\r\n                || this.chartOptions.scales.xAxes[0].ticks.max !== this.lineChartData.xAxisMax;\r\n\r\n            if (scalesChanged) {\r\n                this.chartOptions.scales.yAxes[0].ticks.max = this.lineChartData.ymaxValue;\r\n                this.chartOptions.scales.xAxes[0].ticks.min = this.lineChartData.xAxisMin;\r\n                this.chartOptions.scales.xAxes[0].ticks.max = this.lineChartData.xAxisMax;\r\n\r\n                if (this.chart) {\r\n                    this.chart.initialize();\r\n                }\r\n            }\r\n        }\r\n\r\n        if (this.chart) {\r\n            this.chart.refresh();\r\n        }\r\n    }\r\n}\r\n","<sme-pivot *ngIf=\"tabList.length > 1\" alignTabs=\"right\" (selectionChange)=\"tabChanged($event)\" [headerText]=\"groupTitle\" [noLeftPadding]=\"true\">\r\n  <sme-pivot-tab *ngFor=\"let tab of tabList\" [label]=\"tab\">\r\n    <ng-template></ng-template>\r\n  </sme-pivot-tab>\r\n</sme-pivot>\r\n<div class=\"sme-layout-relative sme-position-inset-none sme-padding-inset-none sme-arrange-wrapstack-h sme-arrange-overflow-auto-y sme-arrange-overflow-hide-x\"\r\n    [class.sme-margin-left-xxl]=\"noLeftMargin?0:null\">\r\n  <sme-layout #layout class=\"sme-position-flex-auto sme-arrange-overflow-auto\" [itemHorizontalSpace]=\"chartPadding\" [padLastItem]=\"true\" [noExtraRightPaddingOneItemPerRow]=\"true\">\r\n    <sme-layout-definition *ngIf=\"chartsPerRow >= 1\" name=\"narrow\" [until]=\"chartsPerRow === 1 ? maxNumber : minChartWidth * 2 + chartPadding\"\r\n      [columns]=\"1\"></sme-layout-definition>\r\n    <sme-layout-definition *ngIf=\"chartsPerRow >= 2\" name=\"medium\" [until]=\"chartsPerRow === 2 ? maxNumber : minChartWidth * 3 + chartPadding\"\r\n      [columns]=\"2\"></sme-layout-definition>\r\n    <sme-layout-definition *ngIf=\"chartsPerRow >= 3\" name=\"wide\" [columns]=\"3\"></sme-layout-definition>\r\n    <sme-layout-item *ngFor=\"let tabChartData of groupData; let i = index;trackBy: trackByTitle\" [maxWidth]=\"maxChartWidth\" class=\"sme-focus-zone\" tabindex=\"0\">\r\n      <sme-loading-wheel *ngIf=\"loadingWheels && dataIsLoading(tabChartData)\" [message]=\"loadingMessage\"></sme-loading-wheel>\r\n        <sme-line-chart class=\"sme-position-flex-none\" [chartLegendData]=\"chartLegendData[i]\" [useCustomSettings]=\"useCustomSettings\"\r\n          [tooltipFormatter]=\"tooltipFormatters[i]\" [lineChartData]=\"getLineChartData(tabChartData)\"></sme-line-chart>\r\n    </sme-layout-item>\r\n  </sme-layout>\r\n</div>\r\n","import {\r\n    ChangeDetectorRef,\r\n    Component,\r\n    EventEmitter,\r\n    Injector,\r\n    Input,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n    QueryList,\r\n    ViewChildren\r\n} from '@angular/core';\r\nimport { CoreBaseComponent } from '../../common/base.component';\r\nimport { LegendEntryData } from '../../legend/legend-entry/legend-entry.component';\r\nimport { PivotTabComponent } from '../../pivot/pivot-tab.component';\r\nimport { LineChartComponent, LineChartData } from '../line-chart.component';\r\n\r\n@Component({\r\n    selector: 'sme-tabbed-line-chart-group',\r\n    templateUrl: './tabbed-line-chart-group.component.html'\r\n})\r\nexport class TabbedLineChartGroupComponent extends CoreBaseComponent implements OnInit, OnDestroy {\r\n\r\n    protected get logSourceName() {\r\n        return 'TabbedLineChartGroupComponent';\r\n    }\r\n\r\n    @ViewChildren(LineChartComponent) public lineChartComponents: QueryList<LineChartComponent>;\r\n    @Input() public groupData: Map<string, LineChartData>[];\r\n    @Input() public tabList: string[];\r\n    @Input() public noLeftMargin = false;\r\n    @Input() public groupTitle: string;\r\n\r\n    /**\r\n     * Currently support 1, 2, and 3 charts per row\r\n     * Default is 3 charts.\r\n     * Chart layout will scale automatically according to width of parent element\r\n     */\r\n    @Input() public chartsPerRow = 3;\r\n    @Input() public loadingWheels?: boolean;\r\n    @Input() public loadingMessage?: string;\r\n    @Input() public useCustomSettings?: boolean;\r\n    @Input() public chartLegendData: LegendEntryData[][];\r\n\r\n    /**\r\n     * Array of functions to apply to each chart in turn. Functions will modify tooltip data value for pretty printing\r\n     */\r\n    @Input() public tooltipFormatters?: Function[];\r\n\r\n    /**\r\n     * The minimum chart width you want to allow for scaling purposes,\r\n     * If not specified, this is 420\r\n     */\r\n    @Input() public minChartWidth = 420;\r\n\r\n    /**\r\n     * The max chart width you want to allow for scaling purposes.\r\n     * If not specified, this is 840\r\n     */\r\n    @Input() public maxChartWidth = 840;\r\n\r\n    /**\r\n     * @deprecated since 9/25/2019. Please use 'tabClicked' instead\r\n     */\r\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\r\n    @Output() public get onTabClick() {\r\n        return this.tabClicked;\r\n    }\r\n    @Output() public tabClicked = new EventEmitter<number>();\r\n\r\n    public tabGroupWidth: string;\r\n    public selectedTab: string;\r\n    public maxNumber = Number.MAX_VALUE;\r\n    public chartPadding = 40;\r\n\r\n    constructor(injector: Injector, private changeDetectorRef: ChangeDetectorRef) {\r\n        super(injector);\r\n        this.chartLegendData = [];\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        if (this.tabList) {\r\n            this.selectedTab = MsftSme.first(this.tabList);\r\n\r\n            // tooltip formatting functions\r\n            this.tooltipFormatters = this.tooltipFormatters ? this.tooltipFormatters : [];\r\n\r\n            for (let i = 0; i < this.groupData.length; i++) {\r\n                if (!this.tooltipFormatters[i]) {\r\n                    // if no formatting funcion is supplied, then null ensures the data will not be formatted\r\n                    this.tooltipFormatters[i] = null;\r\n                }\r\n            }\r\n        } else {\r\n            throw new Error('tabList input is required to render tabbed line chart group');\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Set selected tab and emit this event\r\n     */\r\n    public tabChanged(tab: PivotTabComponent) {\r\n        const index = this.tabList.indexOf(tab.label);\r\n        this.selectedTab = tab.label;\r\n        this.tabClicked.emit(index);\r\n        this.refresh();\r\n    }\r\n\r\n    /**\r\n     * Refresh all of the charts when new data is added to lineChartData input\r\n     */\r\n    public refresh() {\r\n        if (!this.changeDetectorRef['destroyed']) {\r\n            this.changeDetectorRef.detectChanges();\r\n        }\r\n        if (this.lineChartComponents) {\r\n            this.lineChartComponents.forEach(lineChart => {\r\n                lineChart.refresh();\r\n            });\r\n        }\r\n\r\n        if (MsftSme.isNullOrUndefined(this.tabList.first(x => x === this.selectedTab))) {\r\n            this.selectedTab = MsftSme.first(this.tabList);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Get line chart data for selected tab\r\n     */\r\n    public getLineChartData(tabChartData: any): LineChartData {\r\n        return tabChartData.get(this.selectedTab);\r\n    }\r\n\r\n    /**\r\n     * Returns the title of the current chart to track adn reuse  the chart object\r\n     * @param index the index of the item\r\n     * @param item the item\r\n     */\r\n    public trackByTitle(index, item) {\r\n        return this.selectedTab ? item.get(this.selectedTab).title : '';\r\n    }\r\n\r\n    /**\r\n     * Check whether the LineChartData.isLoading for that tab is set to  true or false\r\n     */\r\n    public dataIsLoading(tabChartData: any): boolean {\r\n        return this.getLineChartData(tabChartData).isLoading;\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.changeDetectorRef.detach();\r\n    }\r\n}\r\n","import { CommonModule, DatePipe } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ChartModule } from '../chart/chart.module';\r\nimport { LayoutModule } from '../layout/layout.module';\r\nimport { LegendModule } from '../legend/legend.module';\r\nimport { LoadingWheelModule } from '../loading-wheel/loading-wheel.module';\r\nimport { PivotModule } from '../pivot/pivot.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { LineChartComponent } from './line-chart.component';\r\nimport { TabbedLineChartGroupComponent } from './tabbed-line-chart-group/tabbed-line-chart-group.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        LineChartComponent,\r\n        TabbedLineChartGroupComponent\r\n    ],\r\n    declarations: [\r\n        LineChartComponent,\r\n        TabbedLineChartGroupComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        ChartModule,\r\n        LegendModule,\r\n        LoadingWheelModule,\r\n        LayoutModule,\r\n        PivotModule,\r\n        TooltipModule\r\n    ],\r\n    providers: [\r\n        DatePipe\r\n    ]\r\n})\r\nexport class LineChartModule { }\r\n","<form name=\"manageAs\" [id]=\"formId\" #manageAsForm=\"ngForm\">\r\n    <ng-template [ngIf]=\"!noChoice\">\r\n        <sme-form-field type=\"radiogroup\" name=\"authType\" [(ngModel)]=\"useGlobalAuth\" (customValidate)=\"validateAuthType($event)\" [immediateValidation]=\"true\">\r\n            <sme-option [value]=\"true\" [label]=\"strings.UseGlobalAuth.labelFormat | smeFormat:(globalUsername || myAccount)\">\r\n                <ng-template>\r\n                    <sme-form-field *ngIf=\"!isServiceMode\" type=\"checkbox\" name=\"useLaps\" [(ngModel)]=\"useLaps\" [label]=\"strings.UseLaps.label\"></sme-form-field>\r\n                    <fieldset *ngIf=\"!isServiceMode\" [disabled]=\"!useLaps\">\r\n                        <sme-form-field type=\"text\" name=\"lapsLocalAdminName\" [(ngModel)]=\"lapsLocalAdminName\" [label]=\"strings.lapsLocalAdminName.label\" [placeholder]=\"strings.lapsLocalAdminName.placeholder\"></sme-form-field>\r\n                    </fieldset>\r\n                </ng-template>\r\n            </sme-option>\r\n            <sme-option [value]=\"false\" [label]=\"strings.UsePerNodeAuth.label\">\r\n                <ng-template>\r\n                    <sme-form-field type=\"text\" name=\"username\" [(ngModel)]=\"username\" [required]=\"true\" [label]=\"strings.Username.label\" [placeholder]=\"strings.Username.placeholder\"></sme-form-field>\r\n                    <sme-form-field type=\"password\" name=\"password\" [(ngModel)]=\"password\" [required]=\"true\" [label]=\"strings.Password.label\" [placeholder]=\"strings.Password.placeholder\"></sme-form-field>\r\n                    <sme-form-field *ngIf=\"showApplyToAll\" type=\"checkbox\" name=\"applyToAll\" [(ngModel)]=\"applyToAll\" [label]=\"strings.ApplyToAll.label\" (customValidate)=\"validateApplyToAll($event)\"></sme-form-field>\r\n                </ng-template>\r\n            </sme-option>\r\n        </sme-form-field>\r\n    </ng-template>\r\n    <ng-template [ngIf]=\"noChoice\">\r\n        <div class=\"sme-padding-top-sm\">\r\n            <sme-form-field type=\"text\" name=\"username\" [(ngModel)]=\"username\" [required]=\"true\" [label]=\"strings.Username.label\" [placeholder]=\"strings.Username.placeholder\"></sme-form-field>\r\n            <sme-form-field type=\"password\" name=\"password\" [(ngModel)]=\"password\" [required]=\"true\" [label]=\"strings.Password.label\" [placeholder]=\"strings.Password.placeholder\"></sme-form-field>\r\n            <sme-form-field *ngIf=\"showApplyToAll\" type=\"checkbox\" name=\"applyToAll\" [(ngModel)]=\"applyToAll\" [label]=\"strings.ApplyToAll.label\" (customValidate)=\"validateApplyToAll($event)\"></sme-form-field>\r\n        </div>\r\n    </ng-template>\r\n</form>","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\nimport { EnvironmentModule } from '@microsoft/windows-admin-center-sdk/core/manifest/environment-modules';\r\nimport { AuthorizationCredentials, AuthorizationManager } from '@microsoft/windows-admin-center-sdk/core/security/authorization-manager';\r\nimport { Strings } from '../../generated/strings';\r\nimport { AppContextService } from '../../service/app-context.service';\r\nimport { CheckValidationEventArgs } from '../form/form-field/form-field-validator.directive';\r\nimport { ValidationAlerts, ValidationAlertSeverity } from '../form/validation-alert/validation-alert';\r\n\r\n@Component({\r\n    selector: 'sme-node-credentials-form',\r\n    templateUrl: './node-credentials-form.component.html'\r\n})\r\n/**\r\n * Credentials Form Component:\r\n *\r\n * TODO:\r\n * 1. Convert to using angular form controls\r\n * 2. Convert to be a form control\r\n * 3. The authentication flow is expected to change drastically between now and GA.\r\n *    It doesn't make sense to put much effort into this control at this time\r\n */\r\nexport class NodeCredentialsFormComponent {\r\n    public strings = MsftSme.getStrings<Strings>().MsftSmeShell.Angular.NodeCredentialsForm;\r\n    public hasPerNodeCredentials = false;\r\n    public globalUsername: string;\r\n    public myAccount: string;\r\n\r\n    /**\r\n     * Gets or sets the Username\r\n     */\r\n    public set username(value: string) {\r\n        this.model.username = value;\r\n        this.updateAuthorizationCredentials();\r\n    }\r\n    public get username(): string {\r\n        return this.model.username;\r\n    }\r\n\r\n    /**\r\n     * Gets or sets the password\r\n     */\r\n    public set password(value: string) {\r\n        this.model.password = value;\r\n        this.updateAuthorizationCredentials();\r\n    }\r\n    public get password(): string {\r\n        return this.model.password;\r\n    }\r\n\r\n    /**\r\n     * Gets or sets a value indicating if these settings should be applied to all nodes\r\n     */\r\n    public set applyToAll(value: boolean) {\r\n        this.model.applyToAll = value;\r\n        this.updateAuthorizationCredentials();\r\n    }\r\n    public get applyToAll(): boolean {\r\n        return this.model.applyToAll;\r\n    }\r\n\r\n    /**\r\n     * Gets or sets a value indicating if LAPS should be used\r\n     */\r\n    public set useLaps(value: boolean) {\r\n        this.model.useLaps = value;\r\n        this.updateAuthorizationCredentials();\r\n    }\r\n    public get useLaps(): boolean {\r\n        return this.model.useLaps;\r\n    }\r\n\r\n    /**\r\n     * Gets or sets the laps Local Admin Name\r\n     */\r\n    public set lapsLocalAdminName(value: string) {\r\n        this.model.lapsLocalAdminName = value;\r\n        this.updateAuthorizationCredentials();\r\n    }\r\n    public get lapsLocalAdminName(): string {\r\n        return this.model.lapsLocalAdminName;\r\n    }\r\n\r\n    /**\r\n     * Gets or sets a value indicating if global auth should be used\r\n     */\r\n    public set useGlobalAuth(value: boolean) {\r\n        this.model.useGlobalAuth = value;\r\n        this.updateAuthorizationCredentials();\r\n    }\r\n    public get useGlobalAuth(): boolean {\r\n        return this.model.useGlobalAuth;\r\n    }\r\n\r\n    /**\r\n     * Model to hold internal form field values;\r\n     */\r\n    private model = {\r\n        username: '',\r\n        password: '',\r\n        applyToAll: false,\r\n        useLaps: false,\r\n        lapsLocalAdminName: '',\r\n        useGlobalAuth: false\r\n    };\r\n\r\n    @Output()\r\n    public credentialsChanged = new EventEmitter<AuthorizationCredentials>();\r\n\r\n    @Output()\r\n    public authorizationMethodChanged = new EventEmitter<Boolean>();\r\n\r\n    @Input()\r\n    public showApplyToAll = true;\r\n\r\n    @Input()\r\n    public isServiceMode = false;\r\n\r\n    @Input()\r\n    public formId: string;\r\n\r\n    @Input()\r\n    public noChoice = false;\r\n\r\n    @ViewChild('manageAsForm')\r\n    public manageAsForm: NgForm;\r\n\r\n    /**\r\n     * Initializes a new instance of the NodeCredentialsForm class.\r\n     */\r\n    constructor(private appContextService: AppContextService) {\r\n        this.myAccount = EnvironmentModule.isGatewayLinux ?\r\n            this.strings.UseGlobalAuth.myLinuxAccount : this.strings.UseGlobalAuth.myWindowsAccount;\r\n    }\r\n\r\n    public reset(nodeName: string): void {\r\n        // TODO: handle no nodeNames provided\r\n        this.applyToAll = false;\r\n        this.manageAsForm.form.controls.username.reset();\r\n        this.manageAsForm.form.controls.password.reset();\r\n        this.useLaps = false;\r\n        this.lapsLocalAdminName = AuthorizationManager.defaultLapsLocalAdminName; // Show default value, users can change.\r\n        this.useGlobalAuth = true;\r\n        this.hasPerNodeCredentials = Object.keys(this.appContextService.authorizationManager.nodeTokens).length > 0;\r\n\r\n        const nodeToken = this.appContextService.authorizationManager.nodeTokens[nodeName];\r\n        const globalToken = this.appContextService.authorizationManager.manageAsToken;\r\n\r\n        if (nodeToken) {\r\n            this.useGlobalAuth = false;\r\n            this.username = nodeToken.username;\r\n        }\r\n\r\n        if (globalToken) {\r\n            this.globalUsername = globalToken.username;\r\n        }\r\n    }\r\n\r\n    public updateAuthorizationCredentials(): void {\r\n        const authCreds: AuthorizationCredentials = {\r\n            username: this.username,\r\n            password: this.password,\r\n            applyToAllNodes: this.applyToAll,\r\n            useLaps: false, // By default useLaps should be false\r\n            lapsLocalAdminName: this.lapsLocalAdminName\r\n        };\r\n\r\n        if (!this.noChoice && this.useGlobalAuth) {\r\n            authCreds.username = null;\r\n            authCreds.password = null;\r\n            authCreds.applyToAllNodes = false;\r\n            authCreds.useLaps = this.useLaps;\r\n            authCreds.lapsLocalAdminName = this.lapsLocalAdminName;\r\n        }\r\n\r\n        this.credentialsChanged.next(authCreds);\r\n        // capture whether the form has a \"Local administrator password\" form fields\r\n        this.authorizationMethodChanged.emit(this.useGlobalAuth);\r\n    }\r\n\r\n    /**\r\n     * Validate the auth type field\r\n     * @param event the validation event\r\n     */\r\n    public validateAuthType(event: CheckValidationEventArgs) {\r\n        const alerts: ValidationAlerts = {};\r\n\r\n        if (!this.useGlobalAuth) {\r\n            alerts['useGlobalAuth'] = {\r\n                valid: true,\r\n                message: this.strings.UseGlobalAuth.warning,\r\n                severity: ValidationAlertSeverity.Warning\r\n            };\r\n        } else if (this.isServiceMode) {\r\n            alerts['serviceMode'] = {\r\n                valid: true,\r\n                message: this.strings.deploymentGuideMessage,\r\n                severity: ValidationAlertSeverity.Warning\r\n            };\r\n        }\r\n\r\n        MsftSme.deepAssign(event.alerts, alerts);\r\n    }\r\n\r\n    /**\r\n     * Validate the apply to all field\r\n     * @param event the validation event\r\n     */\r\n    public validateApplyToAll(event: CheckValidationEventArgs) {\r\n        const alerts: ValidationAlerts = {};\r\n        if (!this.useGlobalAuth && this.hasPerNodeCredentials && this.applyToAll) {\r\n            alerts['hasPerNodeCredentials'] = {\r\n                valid: true,\r\n                message: this.strings.ApplyToAll.warning,\r\n                severity: ValidationAlertSeverity.Warning\r\n            };\r\n        }\r\n\r\n        MsftSme.deepAssign(event.alerts, alerts);\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FormatPipeModule } from '../../pipes/format-pipe.module';\r\nimport { DialogModule } from '../dialog/dialog.module';\r\nimport { SmeFormsModule } from '../form/forms.module';\r\nimport { NodeCredentialsFormComponent } from './node-credentials-form.component';\r\n\r\n@NgModule({\r\n  declarations: [ NodeCredentialsFormComponent ],\r\n  imports: [ CommonModule, FormsModule, DialogModule, FormatPipeModule, SmeFormsModule ],\r\n  exports: [ NodeCredentialsFormComponent ]\r\n})\r\nexport class NodeCredentialsFormModule { }\r\n","/**\r\n * The levels of severity that are able to be portrayed by an page alert.\r\n */\r\nexport enum HealthAlertSeverity {\r\n    // NOTE: these are out of order on purpose. Legacy enum values are being mapped to new status values.\r\n    Critical = 0,\r\n    Error = 1,\r\n    Warning = 2,\r\n    Progress = 5,\r\n    Info = 3,\r\n    Success = 6,\r\n    Neutral = 4,\r\n    Upsell = 7\r\n}\r\n\r\n/**\r\n * The External Link Interface.\r\n */\r\nexport interface ExternalLink {\r\n    /**\r\n     * The link title.\r\n     */\r\n    title: string;\r\n    /**\r\n     * The link url.\r\n     */\r\n    url: string;\r\n    /**\r\n     * The class for sme-icon.\r\n     */\r\n    iconClass?: string;\r\n}\r\n\r\n/**\r\n * The Page Alert.\r\n */\r\nexport interface PageAlert {\r\n    /**\r\n     * The severity of the alert which dictates how it will be displayed.\r\n     */\r\n    severity: HealthAlertSeverity;\r\n    /**\r\n     * Optional icon class that can be specified to override default set by severity.\r\n     */\r\n    iconClass?: string;\r\n    /**\r\n     * String that will be displayed on the alert.\r\n     */\r\n    message: string;\r\n    /**\r\n     * Optional additional data that will be shown on hover of action.\r\n     */\r\n    detailsCaption?: string;\r\n    /**\r\n     * String that will be the title of the action, defaults to 'Details'.\r\n     */\r\n    detailsLabel?: string;\r\n    /**\r\n     * An optional external link that can be used inplace of a custom action.\r\n     */\r\n    externalLink?: ExternalLink;\r\n    /**\r\n     * A custom action for the details link.\r\n     * @param event any information that needs to be passed into the command.\r\n     */\r\n    detailsCommand?(event: any): void;\r\n}\r\n","<span class=\"sme-margin-right-xs sme-position-flex-none {{iconClass}}\" [class.sme-icon]=\"!!iconClass\">\r\n  <sme-status-icon *ngIf=\"statusIcon !== null\" class=\"sme-layout-inline-block\" [status]=\"statusIcon\" size=\"16px\">\r\n  </sme-status-icon>\r\n</span>\r\n\r\n<span>\r\n  {{ alert.message }}\r\n  <a *ngIf=\"alert.externalLink\" class=\"sme-link sme-focus-zone sme-icon-after\" [class]=\"alert?.externalLink?.iconClass\"\r\n    [class.sme-icon]=\"!!alert?.externalLink?.iconClass\" href=\"{{alert.externalLink.url}}\" target=\"_blank\">{{\r\n    alert.externalLink.title }}</a>\r\n  <a *ngIf=\"!!alert.detailsCommand\" class=\"sme-margin-left-xs sme-position-flex-none sme-link sme-focus-zone\"\r\n    tabindex=\"0\" role=\"link\" [title]=\"!!alert.detailsCaption ? alert.detailsCaption : defaultDetailsLabel\"\r\n    (click)=\"alert.detailsCommand($event)\">\r\n    {{ !!alert.detailsLabel ? alert.detailsLabel : defaultDetailsLabel }}\r\n  </a>\r\n</span>\r\n","import { Component, HostBinding, Injector, Input } from '@angular/core';\r\nimport { SpacerBaseDirective } from '../common/spacer-base.component';\r\nimport { StatusIconType } from '../icon/layered-icon/status/status-icon.component';\r\nimport { HealthAlertSeverity, PageAlert } from './models/page-alert';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Page Alert Bar @id sme-page-alert-bar-component}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/page-alert-bar-overview.md}\r\n *\r\n * @example {@label Basic Usage @id basic-usage}\r\n * @file {@filename component.html @filepath ./examples/basic-usage.component.html}\r\n * @file {@filename component.ts @filepath ./examples/basic-usage.component.ts}\r\n *\r\n * @example {@label Custom Usage @id custom-usage}\r\n * @file {@filename component.html @filepath ./examples/custom-usage.component.html}\r\n * @file {@filename component.ts @filepath ./examples/custom-usage.component.ts}\r\n */\r\n\r\n@Component({\r\n    selector: 'sme-page-alert-bar',\r\n    templateUrl: './page-alert-bar.component.html'\r\n})\r\nexport class PageAlertBarComponent extends SpacerBaseDirective {\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'PageAlertBarComponent';\r\n    }\r\n\r\n    public defaultDetailsLabel = this.strings.MsftSmeShell.Angular.Common.details;\r\n\r\n    /**\r\n     * It indicates whether the alert bar is transparent or not.\r\n     */\r\n    @Input()\r\n    public isBackgroundTransparent = false;\r\n\r\n    /**\r\n     * Critical alerts.\r\n     */\r\n    @HostBinding('class.sme-alert-critical')\r\n    public get isCritical(): boolean {\r\n        return this.alert && this.alert.severity === HealthAlertSeverity.Critical;\r\n    }\r\n\r\n    /**\r\n     * Error alerts.\r\n     */\r\n    @HostBinding('class.sme-alert-error')\r\n    public get isError(): boolean {\r\n        return this.alert && this.alert.severity === HealthAlertSeverity.Error;\r\n    }\r\n\r\n    /**\r\n     * Warning alerts.\r\n     */\r\n    @HostBinding('class.sme-alert-warning')\r\n    public get isWarning(): boolean {\r\n        return this.alert && this.alert.severity === HealthAlertSeverity.Warning;\r\n    }\r\n\r\n    /**\r\n     * Progress alerts.\r\n     */\r\n    @HostBinding('class.sme-alert-pending')\r\n    public get isPending(): boolean {\r\n        return this.alert && this.alert.severity === HealthAlertSeverity.Progress;\r\n    }\r\n\r\n    /**\r\n     * Informational alerts.\r\n     */\r\n    @HostBinding('class.sme-alert-informational')\r\n    public get isInformational(): boolean {\r\n        return this.alert && this.alert.severity === HealthAlertSeverity.Info;\r\n    }\r\n\r\n    /**\r\n     * Success alerts.\r\n     */\r\n    @HostBinding('class.sme-alert-success')\r\n    public get isSuccessful(): boolean {\r\n        return this.alert && this.alert.severity === HealthAlertSeverity.Success;\r\n    }\r\n\r\n    /**\r\n     * Upsell alerts.\r\n     */\r\n    @HostBinding('class.sme-alert-upsell')\r\n    public get isUpsell(): boolean {\r\n        return this.alert && this.alert.severity === HealthAlertSeverity.Upsell;\r\n    }\r\n\r\n    /**\r\n     * Neutral alerts.\r\n     */\r\n    @HostBinding('class.sme-alert-neutral')\r\n    public get isNeutral(): boolean {\r\n        return this.alert && this.alert.severity === HealthAlertSeverity.Neutral;\r\n    }\r\n\r\n    /**\r\n     * Transparent alerts.\r\n     */\r\n    @HostBinding('class.sme-alert-transparent')\r\n    public get isTransparent(): boolean {\r\n        return this.alert && this.isBackgroundTransparent;\r\n    }\r\n\r\n    /**\r\n     * When the background is transparent, we can optionally remove the left padding for allignment with other UI elements.\r\n     * When with the backgound color, we need to keep the left padding for visually bordering the alert.\r\n     */\r\n    @HostBinding('class.sme-override-padding-left-none')\r\n    public get isNoLeftPadding(): boolean {\r\n        return this.alert && this.isBackgroundTransparent && this.noLeftPadding;\r\n    }\r\n\r\n    /**\r\n     * An interface that dictates how to display the alert.\r\n     */\r\n    @Input() public alert: PageAlert;\r\n\r\n    public get iconClass(): string {\r\n        if (!this.alert) {\r\n            return '';\r\n        }\r\n        if (this.alert.iconClass) {\r\n            return this.alert.iconClass;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Gets the status icon type based on the alert severity.\r\n     */\r\n    public get statusIcon(): StatusIconType {\r\n        if (!this.alert) {\r\n            return null;\r\n        }\r\n        if (this.alert.iconClass) {\r\n            return null;\r\n        }\r\n\r\n        switch (this.alert.severity) {\r\n            case HealthAlertSeverity.Critical:\r\n                return StatusIconType.Critical;\r\n            case HealthAlertSeverity.Error:\r\n                return StatusIconType.Error;\r\n            case HealthAlertSeverity.Warning:\r\n                return StatusIconType.Warning;\r\n            case HealthAlertSeverity.Info:\r\n                return StatusIconType.Info;\r\n            case HealthAlertSeverity.Progress:\r\n                return StatusIconType.Progress;\r\n            case HealthAlertSeverity.Success:\r\n                return StatusIconType.Success;\r\n            case HealthAlertSeverity.Neutral:\r\n                return StatusIconType.Unknown;\r\n            default:\r\n                return null;\r\n        }\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-alert',\r\n            'sme-page-alert',\r\n            'sme-alert-background'\r\n        ]);\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { IconModule } from '../icon/icon.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { PageAlertBarComponent } from './page-alert-bar.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        PageAlertBarComponent\r\n    ],\r\n    declarations: [\r\n        PageAlertBarComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        IconModule,\r\n        TooltipModule\r\n    ]\r\n})\r\nexport class PageAlertBarModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { StatusIconType } from '../icon/layered-icon/status/status-icon.component';\r\n\r\n@Component({\r\n    selector: 'sme-property-grid-item',\r\n    template: ''\r\n})\r\nexport class PropertyGridItemComponent implements OnInit {\r\n    /**\r\n     * The internal value/context for the property grid item.\r\n     */\r\n    private internalValue: any;\r\n    /**\r\n     * The label for the property grid item.\r\n     */\r\n    @Input()\r\n    public label: string;\r\n\r\n    /**\r\n     * The plain string content for value when value is link or action.\r\n     */\r\n    @Input()\r\n    public prefixString: string;\r\n\r\n    /**\r\n     * The setter for value/context.\r\n     */\r\n    @Input()\r\n    public set value(input: any) {\r\n        if (this.isAsync && this.loading) {\r\n            this.loading = false;\r\n        }\r\n\r\n        this.internalValue = input;\r\n    }\r\n\r\n    /**\r\n     * The getter for value/context.\r\n     */\r\n    public get value(): any {\r\n        return this.internalValue;\r\n    }\r\n\r\n    /**\r\n     * It indicates the action for the property grid item.\r\n     */\r\n    @Input()\r\n    public action: MsftSme.Action1<PropertyGridItemComponent>;\r\n\r\n    /**\r\n     * The link for the property grid item.\r\n     */\r\n    @Input()\r\n    public link: string;\r\n\r\n    /**\r\n     * The tooltip for the property grid item.\r\n     */\r\n    @Input()\r\n    public tooltip: string;\r\n\r\n    /**\r\n     * It indicates whether the property grid item is external link.\r\n     */\r\n    @Input()\r\n    public isExternalLink: boolean;\r\n\r\n    /**\r\n     * The icon class for the property grid item.\r\n     */\r\n    @Input()\r\n    public iconClass: string;\r\n\r\n    /**\r\n     * The status for the property grid item.\r\n     */\r\n    @Input()\r\n    public status: StatusIconType.Bindable = null;\r\n\r\n    /**\r\n     * It indicates the column span for the layout.\r\n     */\r\n    @Input()\r\n    public columnSpan = 1;\r\n\r\n    /**\r\n     * It indicates the rendering of loading wheel when data unloaded.\r\n     */\r\n    @Input()\r\n    public isAsync = false;\r\n\r\n    /**\r\n     * It indicates whether the property grid is loading.\r\n     * This parameter has to have isAsync set to true to use.\r\n     */\r\n    public loading = true;\r\n\r\n    /**\r\n     * Gets the status class to apply to this components value section\r\n     */\r\n    public get statusClass(): string {\r\n        if (MsftSme.isNullOrUndefined(this.status)) {\r\n            return null;\r\n        }\r\n\r\n        const statusValue = StatusIconType.fromBindableType(this.status);\r\n\r\n        switch (statusValue) {\r\n            case StatusIconType.Critical:\r\n                return 'sme-color-critical';\r\n            case StatusIconType.Error:\r\n                return 'sme-color-error';\r\n            case StatusIconType.Warning:\r\n                return 'sme-color-warning';\r\n            case StatusIconType.Info:\r\n                return 'sme-color-info';\r\n            case StatusIconType.Progress:\r\n                return 'sme-color-progress';\r\n            case StatusIconType.Success:\r\n                return 'sme-color-success';\r\n            case StatusIconType.Unknown:\r\n                return 'sme-color-neutral';\r\n            default:\r\n                return null;\r\n        }\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        // Edge case when the data has been assigned before the UI renders,\r\n        // the functionality to make sure the data is actually loaded.\r\n        // Basically in this case the set function will be skipped.\r\n        if (this.isAsync && this.loading && this.value !== undefined) {\r\n            this.loading = false;\r\n        }\r\n\r\n        if (!this.link && !this.isExternalLink && !this.action && this.prefixString) {\r\n            Logging.log({\r\n                level: LogLevel.Warning,\r\n                message: 'prefixString is set but will not be respected because property grid item is not a link or action',\r\n                source: 'PropertyGridItem.ngOnInit'\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Give the ability to reset loading.\r\n     */\r\n    public resetLoading() {\r\n        if (!this.loading) {\r\n            this.loading = true;\r\n        }\r\n    }\r\n}\r\n","import { SmeResponsiveWindowManagerComponent } from '../common/sme-responsive-window-manager.component';\r\n\r\nexport class PropertyGridResponsiveWindowManager extends SmeResponsiveWindowManagerComponent {\r\n\r\n    public readonly name = 'sme-property-grid';\r\n\r\n    public onWindowSizeChanged(propertyGridElement: HTMLElement): void {\r\n        if (!this.cssV2) {\r\n            return;\r\n        }\r\n\r\n        return;\r\n    }\r\n}\r\n","<sme-layout #layout [padLastItem]=\"true\" class=\"sme-position-inset-none sme-position-stretch-h\" [oneColumn]=\"orientation === 'vertical'\">\r\n  <sme-layout-definition name=\"narrow\" [until]=\"layoutItemWidth\" [columns]=\"1\"></sme-layout-definition>\r\n  <sme-layout-definition *ngIf=\"orientation !== 'vertical'\" name=\"medium\" [until]=\"layoutItemWidth*2\" [columns]=\"2\"></sme-layout-definition>\r\n  <sme-layout-definition *ngIf=\"orientation !== 'vertical'\" name=\"wide\" [columns]=\"3\"></sme-layout-definition>\r\n  <sme-layout-item *ngFor=\"let item of items; index as i\" [columnSpan]=\"item.columnSpan\"\r\n    [maxWidth]=\"orientation === 'vertical' ? null : item.columnSpan * layoutItemWidth\">\r\n    <div class=\"sme-property-grid-item\" tabindex=\"0\" aria-live=\"polite\" aria-atomic=\"true\" #zone=\"smeTooltipZone\" smeTooltipZone>\r\n      <label class=\"sme-arrange-stack-h\">\r\n        <span>{{ item.label }}</span>\r\n        <span *ngIf=\"item.tooltip\" class=\"sme-position-flex-none sme-icon sme-icon-info sme-info-bubble sme-margin-left-xs\"\r\n          [title]=\"item.tooltip\" [tooltipZone]=\"zone\" aria-hidden=\"true\" tabindex=\"0\"></span>\r\n        <!-- in scan mode screen reader does not focus on the info icon properly to read the title -->\r\n        <span class=\"sme-screen-reader\">{{ item.tooltip }}</span>\r\n      </label>\r\n      <ng-container *ngTemplateOutlet=\"getTemplate(item);context:{$implicit:item, index: i}\"></ng-container>\r\n    </div>\r\n  </sme-layout-item>\r\n</sme-layout>\r\n\r\n<!-- Read only -->\r\n<ng-template #readonlyTemplate let-item let-i=\"index\">\r\n  <sme-loading-wheel *ngIf=\"item.loading && item.isAsync\" size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\"></sme-loading-wheel>\r\n  <ng-container *ngIf=\"!item.loading || !item.isAsync\">\r\n    <p class=\"sme-read-only-template\" [attr.aria-labelledby]=\"idBag.labelSpan + i\" [attr.aria-describedby]=\"idBag.detailsSpan + i\">\r\n      <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n      <span *ngIf=\"!item.link && !item.action\">{{ stringifyValue(item.value) }}</span>\r\n    </p>\r\n  </ng-container>\r\n</ng-template>\r\n\r\n<!-- Action link (role button) -->\r\n<ng-template #actionLinkTemplate let-item let-i=\"index\">\r\n  <p>\r\n    <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n    <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n    <a tabindex=\"0\" class=\"sme-link sme-focus-zone sme-action-link-template\" role=\"link\" (click)=\"item.action(item)\"\r\n      [attr.aria-labelledby]=\"(idBag.labelSpan + i) + ' ' + (idBag.valueSpan + i)\"\r\n      [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n  </p>\r\n</ng-template>\r\n\r\n<!-- Internal link -->\r\n<ng-template #internalLinkTemplate let-item let-i=\"index\">\r\n  <p>\r\n    <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n    <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n    <a class=\"sme-link sme-focus-zone\" role=\"link\" [routerLink]=\"item.link\"\r\n      [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n    <span class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan + i\">{{ getInternalLinkDescription(item) }}</span>\r\n  </p>\r\n</ng-template>\r\n\r\n<!-- External link -->\r\n<ng-template #externalLinkTemplate let-item let-i=\"index\">\r\n  <p>\r\n    <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n    <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n    <a class=\"sme-link sme-focus-zone sme-icon sme-icon-after sme-icon-openInNewWindow\" role=\"link\" [href]=\"item.link\" target=\"_blank\"\r\n      [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n    <span class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan + i\">{{ getExternalLinkDescription(item) }}</span>\r\n  </p>\r\n</ng-template>\r\n\r\n<!-- Icon Template -->\r\n<ng-template #iconTemplate let-item let-i=\"index\">\r\n  <span *ngIf=\"!!item.iconClass\" class=\"sme-margin-right-xs sme-icon {{item.iconClass}}\"></span>\r\n  <sme-status-icon *ngIf=\"item.status !== undefined && item.status !== null && !item.iconClass\" class=\"sme-layout-inline-block sme-margin-right-xs \"\r\n    [status]=\"item.status\" size=\"16px\"></sme-status-icon>\r\n</ng-template>\r\n","import {\r\n    Component,\r\n    ContentChildren,\r\n    EventEmitter,\r\n    forwardRef,\r\n    Inject,\r\n    Injector,\r\n    Input,\r\n    OnChanges,\r\n    Optional,\r\n    Output,\r\n    QueryList,\r\n    SimpleChanges,\r\n    SkipSelf,\r\n    TemplateRef,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../common/layout';\r\nimport { PropertyGridItemComponent } from './property-grid-item.component';\r\nimport { PropertyGridResponsiveWindowManager } from './property-grid-responsive-window-manager';\r\n\r\n/**\r\n * The pane orientation of the split view.\r\n */\r\nexport type PropertyGridOrientation = 'vertical' | 'horizontal';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Property Grid @id sme-property-grid-component}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/overview.md}\r\n *\r\n * @example {@label Basic Usage @id basic-usage}\r\n * @file {@filename component.html @filepath ./examples/basic-usage.component.html}\r\n *\r\n * @example {@label Vertical Orientation @id vertical-orientation}\r\n * @file {@filename component.html @filepath ./examples/vertical-orientation.component.html}\r\n *\r\n * @example {@label Item with a Link @id link-item}\r\n * @file {@filename component.html @filepath ./examples/link-item.component.html}\r\n *\r\n * @example {@label Item with a Tooltip @id tooltip-item}\r\n * @file {@filename component.html @filepath ./examples/tooltip-item.component.html}\r\n *\r\n * @example {@label Item with a Action @id action-item}\r\n * @file {@filename component.ts @filepath ./examples/action-item.component.ts}\r\n * @file {@filename component.html @filepath ./examples/action-item.component.html}\r\n *\r\n * @example {@label Item Spanning Multiple Columns @id multi-column}\r\n * @file {@filename component.html @filepath ./examples/multi-column-item.component.html}\r\n *\r\n * @example {@label Items with Status and Icons @id status-and-icons}\r\n * @file {@filename component.html @filepath ./examples/status-item.component.html}\r\n *\r\n * @example {@label Items with complex value types @id complex-value}\r\n * @file {@filename component.html @filepath ./examples/complex-values.component.html}\r\n *\r\n */\r\n@Component({\r\n    selector: 'sme-property-grid',\r\n    templateUrl: './property-grid.component.html',\r\n    providers: [\r\n        { provide: SME_LAYOUT_PROVIDER, useExisting: forwardRef(() => PropertyGridComponent) }\r\n    ]\r\n})\r\nexport class PropertyGridComponent extends CoreBaseComponent implements Layout, OnChanges {\r\n    /**\r\n     * The basic column width for the property grid items.\r\n     */\r\n    public layoutItemWidth = 300;\r\n\r\n    @ContentChildren(PropertyGridItemComponent)\r\n    public items: QueryList<PropertyGridItemComponent>;\r\n\r\n    @ViewChild('readonlyTemplate', { static: true })\r\n    public readonlyTemplate: TemplateRef<PropertyGridItemComponent>;\r\n\r\n    @ViewChild('actionLinkTemplate', { static: true })\r\n    public actionLinkTemplate: TemplateRef<PropertyGridItemComponent>;\r\n\r\n    @ViewChild('internalLinkTemplate', { static: true })\r\n    public internalLinkTemplate: TemplateRef<PropertyGridItemComponent>;\r\n\r\n    @ViewChild('externalLinkTemplate', { static: true })\r\n    public externalLinkTemplate: TemplateRef<PropertyGridItemComponent>;\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'PropertyGridComponent';\r\n    }\r\n\r\n    /**\r\n     * The orientation for the property grid\r\n     */\r\n    @Input()\r\n    public orientation: PropertyGridOrientation = 'horizontal';\r\n\r\n    /**\r\n     * Implementation of the Layout interface\r\n     */\r\n    @Output()\r\n    public layoutChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * Implementation of the Layout interface\r\n     */\r\n    @Output()\r\n    public windowBreakpointChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    private propertyGridResponsiveWindowManager = new PropertyGridResponsiveWindowManager();\r\n\r\n    constructor(injector: Injector, @SkipSelf() @Optional() @Inject(SME_LAYOUT_PROVIDER) layout: Layout) {\r\n        super(injector);\r\n        // old style supported sme-property-grid-arrange-vertical class. default to vertical orientation if this class is applied.\r\n        const hasVerticalClass = (<HTMLElement>this.hostElement.nativeElement).classList.contains('sme-property-grid-arrange-vertical');\r\n        this.orientation = hasVerticalClass ? 'vertical' : 'horizontal';\r\n\r\n        // on parent layout changes, re-emit the layout change to our event\r\n        if (layout) {\r\n            this.subscriptions.push(\r\n                layout.layoutChanged.subscribe(() => {\r\n                    this.layoutChanged.emit();\r\n                    setTimeout(() => {\r\n                        this.propertyGridResponsiveWindowManager.onWindowSizeChanged(this.hostElement.nativeElement);\r\n                    });\r\n                })\r\n            );\r\n        }\r\n    }\r\n\r\n    public stringifyValue(value: any) {\r\n        if (MsftSme.isNullOrWhiteSpace(value)) {\r\n            return '-';\r\n        }\r\n        if (Array.isArray(value)) {\r\n            return value.map(v => this.stringifyValue(v)).join(',\\n');\r\n        }\r\n        if (MsftSme.isObject(value)) {\r\n            try {\r\n                return JSON.stringify(value, null, 2);\r\n            } catch (error) {\r\n                return value;\r\n            }\r\n        }\r\n        return `${value}`;\r\n    }\r\n\r\n    public getTemplate(item: PropertyGridItemComponent) {\r\n        if (item.action) {\r\n            return this.actionLinkTemplate;\r\n        }\r\n        if (item.link) {\r\n            if (item.isExternalLink) {\r\n                return this.externalLinkTemplate;\r\n            } else {\r\n                return this.internalLinkTemplate;\r\n            }\r\n        }\r\n        return this.readonlyTemplate;\r\n    }\r\n\r\n    public ngOnChanges(changes: SimpleChanges) {\r\n        super.ngOnChanges(changes);\r\n        if (changes.orientation) {\r\n            this.layoutChanged.emit();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It handles the undefined value won't be updated situation for async property item.\r\n     * Angular issue that the property item value initialized with undefined, if after async time, the value being set is still undefined,\r\n     * Angular will not be able to trigger the value on changed event. Thus we have to manually call to refresh it.\r\n     *\r\n     * @param index The index that needs to hard refresh.\r\n     */\r\n    public hardRefreshItem(index: number): void {\r\n        if (!this.items) {\r\n            return;\r\n        }\r\n\r\n        const items = this.items.toArray();\r\n        if (!items[index]) {\r\n            return;\r\n        }\r\n\r\n        const item = items[index];\r\n        if (item.isAsync && item.value === undefined) {\r\n            item.loading = false;\r\n        }\r\n    }\r\n\r\n    public getInternalLinkDescription(item: PropertyGridItemComponent) {\r\n        return this.strings.MsftSmeShell.Angular.PropertyGrid.InternalLink.label.format(item.link);\r\n    }\r\n\r\n    public getExternalLinkDescription(item: PropertyGridItemComponent) {\r\n        return this.strings.MsftSmeShell.Angular.PropertyGrid.ExternalLink.label.format(item.link);\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: '',\r\n            labelSpan: '',\r\n            valueSpan: ''\r\n        };\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-property-grid',\r\n            'sme-layout-relative',\r\n            'sme-focus-zone'\r\n        ]);\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { IconModule } from '../icon/icon.module';\r\nimport { LayoutModule } from '../layout/layout.module';\r\nimport { LoadingWheelModule } from '../loading-wheel/loading-wheel.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { PropertyGridItemComponent } from './property-grid-item.component';\r\nimport { PropertyGridComponent } from './property-grid.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        PropertyGridComponent,\r\n        PropertyGridItemComponent\r\n    ],\r\n    declarations: [\r\n        PropertyGridComponent,\r\n        PropertyGridItemComponent\r\n    ],\r\n    imports: [\r\n        RouterModule,\r\n        CommonModule,\r\n        LayoutModule,\r\n        LoadingWheelModule,\r\n        IconModule,\r\n        TooltipModule\r\n    ]\r\n})\r\nexport class PropertyGridModule { }\r\n","<ng-container *ngIf=\"!isLoading\">\r\n  <ng-container *ngIf=\"queryEditor&&queryEditor.contents\">\r\n    <div *ngFor=\"let item of queryEditor.contents; let index = index\" class=\"sme-query-editor-pill\"\r\n      [class.sme-disabled]=\"item.disabled\" [class.sme-invalid]=\"item.invalid&&!item.isEditing\"\r\n      [class.sme-irremovable]=\"item.irremovable\" [class.sme-focus-trap]=\"item.isEditing\"\r\n      (keydown.Delete)=\"removeQueryEditorItem($event, index, true)\" (focus)=\"setSelectedHtml()\" role=\"menuitem\"\r\n      [attr.aria-labelledby]=\"getMenuItemLabel(index)\" (keydown.Enter)=\"onPillEnterTrap($event, item, index)\"\r\n      tabindex=\"0\">\r\n      <div *ngIf=\"!item.isEditing\" [smeTooltip]=\"tooltip\"\r\n        class=\"sme-query-editor-pill-content sme-query-editor-pill-content-preview\"\r\n        (click)=\"onPillClick(item, index)\" [id]=\"idBag.pillLabel + index\">\r\n        <!-- Icon -->\r\n        <span role=\"presentation\" *ngIf=\"item.icon\" class=\"sme-query-editor-icon\" [ngClass]=\"item.icon\"></span>\r\n        <!-- Key -->\r\n        <span class=\"sme-query-editor-column\">{{item.column.label}}</span>\r\n        <sme-loading-wheel *ngIf=\"isColumnDropdownBusy\" [isBackgroundTransparent]=\"true\" size=\"extra-small\">\r\n        </sme-loading-wheel>\r\n        <!-- Operator -->\r\n        <span class=\"sme-query-editor-operator\">{{getItemOperatorDisplayValue(item)}}</span>\r\n        <!-- Value -->\r\n        <span class=\"sme-query-editor-value\">\r\n          <strong>\r\n            <span>{{getItemDisplayValue(item)}}</span>\r\n            <i\r\n              *ngIf=\"item.invalid&&(item.value.type===queryDataItemValueType.TextInput||item.value.type===queryDataItemValueType.SingleDropdown||item.value.type===queryDataItemValueType.TimespanDropdown)\">{{resourceStrings.Unset}}</i>\r\n            <!-- [ngClass]=\"checkValueFieldTruncated(idBag.pillLabel + index) ? 'sme-query-editor-column-ellipsis': ''\"><strong>{{item.value.value}}</strong></span> -->\r\n          </strong>\r\n        </span>\r\n        <span class=\"sme-screen-reader\">\r\n          <span *ngIf=\"!!item.disabled\" [id]=\"idBag.disabledLabel + index\">{{resourceStrings.ReadOnly}}</span>\r\n\r\n          <span *ngIf=\"!!item.irremovable\"\r\n            [id]=\"idBag.irremovableLabel + index\">{{resourceStrings.Irremovable}}</span>\r\n\r\n          <span *ngIf=\"!item.irremovable\"\r\n            [id]=\"idBag.removableLabel + index\">{{resourceStrings.RemovableHint}}</span>\r\n        </span>\r\n        <button *ngIf=\"!item.irremovable\" (mouseup)=\"removeQueryEditorItem($event, index)\"\r\n          (keydown.Enter)=\"removeQueryEditorItem($event, index, true)\" role=\"button\"\r\n          [attr.aria-label]=\"resourceStrings.Delete\" class=\"sme-query-editor-remove-button\"\r\n          [tabindex]=\"item.isEditing ? 0 : -1\">\r\n          <span class=\"sme-icon sme-query-editor-remove-button-icon\"></span>\r\n        </button>\r\n      </div>\r\n      <ng-template #tooltip>\r\n        <div class=\"sme-query-editor-tooltip\">{{item.column.label}} {{item.operand}}\r\n          <strong *ngIf=\"item.value.type!==queryDataItemValueType.TimespanDropdown\">\r\n            {{item.value.isValueUnset ? this.resourceStrings.Unset : item.value.value}}</strong>\r\n          <strong *ngIf=\"item.value.type===queryDataItemValueType.TimespanDropdown\">\r\n            {{item.value.isValueUnset ? this.resourceStrings.Unset : item.value.tooltip}}</strong>\r\n        </div>\r\n      </ng-template>\r\n      <form *ngIf=\"item.isEditing\"\r\n        class=\"sme-query-editor-pill-content sme-query-editor-pill-content-editing sme-focus-trap\"\r\n        (keydown.Enter)=\"onPillExitTrap($event)\" (keydown.Esc)=\"onPillExitTrap($event)\">\r\n        <div class=\"sme-query-editor-column\">\r\n          <sme-form-field type=\"combobox\" name=\"value\" [(ngModel)]=\"item.column.value\"\r\n            (ngModelChange)=\"onQueryEditorChange(index, true, null, true)\" class=\"sme-query-editor-column\"\r\n            [compact]=\"true\" [minimal]=\"true\" [class.sme-focus-zone]=\"item.isEditing\"\r\n            *ngIf=\"!(item.column&&item.column.uneditable)\" [placeholder]=\"resourceStrings.SelectKey\"\r\n            [dropdownApplyFormFieldOffsetWidth]=\"false\">\r\n            <sme-option *ngFor=\"let option of internalColumnList\" [value]=\"option.value\"\r\n              [label]=\"option.label\">\r\n            </sme-option>\r\n          </sme-form-field>\r\n          <span *ngIf=\"item.column&&item.column.uneditable\">{{item.column.label}}</span>\r\n          <sme-loading-wheel *ngIf=\"isColumnDropdownBusy\" [isBackgroundTransparent]=\"true\" size=\"extra-small\">\r\n          </sme-loading-wheel>\r\n        </div>\r\n        <ng-container *ngIf=\"!isColumnDropdownBusy\">\r\n          <div class=\"sme-query-editor-operator\">\r\n            <span class=\"sme-query-editor-operator\"\r\n              *ngIf=\"!!item.column.value&&(item.value.type===queryDataItemValueType.SingleDropdown||item.value.type===queryDataItemValueType.MultiSelectDropdown||item.value.type===queryDataItemValueType.TimespanDropdown)\">\r\n              {{queryDataOperand.Dropdowns}} </span>\r\n            <sme-form-field\r\n              *ngIf=\"!!item.column.value&&(item.value.type===queryDataItemValueType.TextInput)\"\r\n              type=\"combobox\" name=\"operand\" [(ngModel)]=\"item.operand\"\r\n              (ngModelChange)=\"onQueryEditorChange(index, null, null, true)\"\r\n              class=\"sme-query-editor-operator sme-focus-zone\"\r\n              [class.sme-query-editor-value-irremovable]=\"!!item.irremovable\" [compact]=\"true\"\r\n              [minimal]=\"true\" [dropdownApplyFormFieldOffsetWidth]=\"false\">\r\n              <sme-option *ngFor=\"let operand of operands\" [value]=\"operand.value\" [label]=\"operand.value\">\r\n              </sme-option>\r\n            </sme-form-field>\r\n          </div>\r\n          <div *ngIf=\"!!item?.column?.value\" class=\"sme-query-editor-value sme-focus-zone\">\r\n            <ng-container *ngTemplateOutlet=\"getTemplate(item);context:{$implicit:item, index: index}\">\r\n            </ng-container>\r\n          </div>\r\n          <button type=\"button\" *ngIf=\"!item.irremovable\" (mouseup)=\"removeQueryEditorItem($event, index)\"\r\n            role=\"button\" [attr.aria-label]=\"resourceStrings.Delete\"\r\n            (keydown.Enter)=\"removeQueryEditorItem($event, index, true)\"\r\n            class=\"sme-query-editor-remove-button sme-focus-zone\" [tabindex]=\"item.isEditing ? 0 : -1\">\r\n            <span class=\"sme-icon sme-query-editor-remove-button-icon\"></span>\r\n          </button>\r\n        </ng-container>\r\n      </form>\r\n    </div>\r\n  </ng-container>\r\n  <div *ngIf=\"showAddButton\" (mouseup)=\"newQueryEditor($event)\" (keydown.Enter)=\"newQueryEditor($event, true)\"\r\n    class=\"sme-query-editor-pill sme-irremovable\" role=\"menuitem\">\r\n    <div class=\"sme-query-editor-pill-content\" tabindex=\"0\" role=\"button\">\r\n      <span class=\"sme-icon sme-icon-filter sme-query-editor-icon\"></span>\r\n      <span class=\"sme-query-editor-value\">{{resourceStrings.New}}</span></div>\r\n  </div>\r\n  <button *ngIf=\"showResetButton\" type=\"button\" (click)=\"resetQueryEditor()\" class=\"sme-button-trigger\"\r\n    tabindex=\"0\" [disabled]=\"disableResetButton\">{{resourceStrings.Reset}}\r\n  </button>\r\n</ng-container>\r\n<div class=\"sme-layout-relative\" *ngIf=\"isLoading\">\r\n  <sme-loading-wheel [isBackgroundTransparent]=\"true\" size=\"small\"></sme-loading-wheel>\r\n</div>\r\n\r\n<ng-template #multiSelectTemplate let-item let-index=\"index\">\r\n  <sme-form-field type=\"combobox\" name=\"temporaryValue\" [(ngModel)]=\"item.value.temporaryValue\"\r\n    (ngModelChange)=\"onQueryEditorChange(index, null, true)\" [multiple]=\"true\" [minimal]=\"true\" [compact]=\"true\"\r\n    [placeholder]=\"resourceStrings.SelectValue\" (keydown.Enter)=\"onValueFieldEnterKeydown($event, index)\"\r\n    [searchable]=\"!!item.value.searchable\" [dropdownApplyFormFieldOffsetWidth]=\"false\">\r\n    <ng-container *ngIf=\"columnDropdownData && columnDropdownData.length > 0\">\r\n      <sme-option *ngFor=\"let option of columnDropdownData\" [value]=\"option\" [label]=\"option\">\r\n      </sme-option>\r\n    </ng-container>\r\n  </sme-form-field>\r\n</ng-template>\r\n\r\n<ng-template #textTemplate let-item let-index=\"index\">\r\n  <sme-form-field type=\"text\" name=\"temporaryValue\" [(ngModel)]=\"item.value.temporaryValue\"\r\n    (ngModelChange)=\"onQueryEditorChange(index, null, true)\" [minimal]=\"true\" [compact]=\"true\"\r\n    (keydown.Enter)=\"onValueFieldEnterKeydown($event, index)\" [placeholder]=\"resourceStrings.SelectValue\">\r\n  </sme-form-field>\r\n</ng-template>\r\n\r\n<ng-template #singleSelectTemplate let-item let-index=\"index\">\r\n  <sme-form-field type=\"combobox\" name=\"temporaryValue\" [(ngModel)]=\"item.value.temporaryValue\"\r\n    (ngModelChange)=\"onQueryEditorChange(index, null, true)\" [minimal]=\"true\" [compact]=\"true\"\r\n    [placeholder]=\"resourceStrings.SelectValue\" (keydown.Enter)=\"onValueFieldEnterKeydown($event, index)\"\r\n    [searchable]=\"!!item.value.searchable\" [dropdownApplyFormFieldOffsetWidth]=\"false\">\r\n    <ng-container *ngIf=\"columnDropdownData && columnDropdownData.length > 0\">\r\n      <sme-option *ngFor=\"let option of columnDropdownData\" [value]=\"option\" [label]=\"option\">\r\n      </sme-option>\r\n    </ng-container>\r\n  </sme-form-field>\r\n</ng-template>\r\n\r\n<ng-template #timespanSelectTemplate let-item let-index=\"index\">\r\n  <sme-form-field type=\"datetimerange\" name=\"temporaryValue\" [(ngModel)]=\"item.value.temporaryValue\"\r\n    (ngModelChange)=\"onQueryEditorChange(index, null, true)\" [minimal]=\"true\" [compact]=\"true\"\r\n    [placeholder]=\"resourceStrings.SelectValue\" (keydown.Enter)=\"onValueFieldEnterKeydown($event, index)\"\r\n    [dropdownApplyFormFieldOffsetWidth]=\"false\" (customLabelEmitter)=\"onCustomLabelEmit($event)\">\r\n    <ng-container *ngIf=\"columnDropdownData && columnDropdownData.length > 0\">\r\n      <sme-date-range-option *ngFor=\"let option of columnDropdownData\" [value]=\"option.value\"\r\n        [label]=\"option.label\">\r\n      </sme-date-range-option>\r\n    </ng-container>\r\n  </sme-form-field>\r\n</ng-template>\r\n","import {\r\n    Component,\r\n    HostBinding,\r\n    HostListener,\r\n    Injector,\r\n    Input,\r\n    OnDestroy,\r\n    OnInit,\r\n    QueryList,\r\n    TemplateRef,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport { DateRange } from '@microsoft/windows-admin-center-sdk/core/base/date/date-range';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { Strings } from '../../generated/strings';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { DataTableColumnComponent } from '../data-table/data-table-column.component';\r\nimport { DataTableComponent } from '../data-table/data-table.component';\r\nimport {\r\n    ApplyMode,\r\n    QueryData,\r\n    QueryDataItem,\r\n    QueryDataItemPresetOptionContent,\r\n    QueryDataItemValueType,\r\n    QueryDataOperand\r\n} from './query-editor-contract';\r\n\r\nexport interface QueryEditorDataTableColumnListItem {\r\n    label: string;\r\n    value: string;\r\n    queryEditorType: QueryDataItemValueType;\r\n    presetOptions?: QueryDataItemPresetOptionContent[];\r\n}\r\n\r\nexport interface QueryEditorColumnDropdownData {\r\n    field: string;\r\n    isDropdown: boolean;\r\n    queryEditorType: QueryDataItemValueType;\r\n    options?: string[];\r\n    presetOptions?: QueryDataItemPresetOptionContent[];\r\n}\r\n@Component({\r\n    selector: 'sme-query-editor',\r\n    templateUrl: './query-editor.component.html'\r\n})\r\nexport class QueryEditorComponent extends CoreBaseComponent implements OnInit, OnDestroy {\r\n    public queryEditor: QueryData;\r\n    public internalColumnList: QueryEditorDataTableColumnListItem[];\r\n    public operands = [];\r\n    public columnsDropdownData: Array<QueryEditorColumnDropdownData> = [];\r\n    public columnDropdownData: Array<any> = [];\r\n    public columnDropdownField: string;\r\n    public isColumnDropdownBusy: boolean;\r\n    public currentModifyingIndex: number;\r\n    public resourceStrings = MsftSme.getStrings<Strings>().MsftSmeShell.Angular.QueryEditor;\r\n    public isLoading = false;\r\n    public selectedHtml: HTMLElement;\r\n    public postSelectedHtml: HTMLElement;\r\n    public get queryDataItemValueType() {\r\n        return QueryDataItemValueType;\r\n    }\r\n    public get queryDataOperand() {\r\n        return QueryDataOperand;\r\n    }\r\n\r\n    @HostBinding('attr.role')\r\n    public get role() {\r\n        if (!this.queryEditor || !this.queryEditor.contents) {\r\n            return null;\r\n        }\r\n\r\n        return 'menubar';\r\n    }\r\n\r\n    @HostBinding('attr.aria-label')\r\n    public get ariaLabel() {\r\n        return this.resourceStrings.ColumnFilter;\r\n    }\r\n\r\n    @ViewChild('multiSelectTemplate')\r\n    public multiSelectTemplate: TemplateRef<QueryDataItem>;\r\n\r\n    @ViewChild('textTemplate')\r\n    public textTemplate: TemplateRef<QueryDataItem>;\r\n\r\n    @ViewChild('singleSelectTemplate')\r\n    public singleSelectTemplate: TemplateRef<QueryDataItem>;\r\n\r\n    @ViewChild('timespanSelectTemplate')\r\n    public timespanSelectTemplate: TemplateRef<QueryDataItem>;\r\n\r\n    private enableGetDataTableUniqueValues = false;\r\n    private isFocusInsideComponent = false;\r\n    private isComponentClicked = false;\r\n    private selectedItem: QueryDataItem;\r\n    private isEditing = false;\r\n    private checkValueFieldTruncatedRecords = new Array();\r\n\r\n    @Input()\r\n    public applyMode: ApplyMode = ApplyMode.Active;\r\n\r\n    private internalPresetQueryEditor;\r\n    @Input()\r\n    public set presetQueryEditor(input: QueryData) {\r\n        this.internalPresetQueryEditor = input;\r\n        this.updatePresetQueryEditorCustomLabels();\r\n    }\r\n\r\n    public get presetQueryEditor() {\r\n        return this.internalPresetQueryEditor;\r\n    }\r\n\r\n    @Input()\r\n    public showAddButton = true;\r\n\r\n    @Input()\r\n    public showResetButton = true;\r\n\r\n    public disableResetButton = false;\r\n\r\n    @Input()\r\n    public dataTable: DataTableComponent;\r\n\r\n    protected get logSourceName() {\r\n        return 'QueryEditorComponent';\r\n    }\r\n\r\n    /**\r\n     * Set disableResetButton value\r\n     * disableResetButton = true if queryEditor.contents == 0\r\n     */\r\n    private setDisableResetButton(): void {\r\n        if (MsftSme.isNullOrUndefined(this.queryEditor)) {\r\n            this.disableResetButton = true;\r\n        } else {\r\n            this.disableResetButton = this.queryEditor.contents.length === 0;\r\n        }\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    public ngOnInit() {\r\n        this.initializeOperandsList();\r\n        this.isLoading = true;\r\n\r\n        // Set disableResetButton value\r\n        this.setDisableResetButton();\r\n    }\r\n\r\n    public getTemplate(item: QueryDataItem) {\r\n        switch (item.value.type) {\r\n            case QueryDataItemValueType.MultiSelectDropdown:\r\n                return this.multiSelectTemplate;\r\n            case QueryDataItemValueType.SingleDropdown:\r\n                return this.singleSelectTemplate;\r\n            case QueryDataItemValueType.TimespanDropdown:\r\n                return this.timespanSelectTemplate;\r\n            case QueryDataItemValueType.TextInput:\r\n            default:\r\n                return this.textTemplate;\r\n        }\r\n    }\r\n\r\n    public getItemDisplayValue(item: QueryDataItem) {\r\n        switch (item.value.type) {\r\n            case QueryDataItemValueType.MultiSelectDropdown:\r\n                return this.resourceStrings.Selected.format(item.value.value.length);\r\n            case QueryDataItemValueType.SingleDropdown:\r\n                return item.value.value;\r\n            case QueryDataItemValueType.TextInput:\r\n                return item.value.value;\r\n            case QueryDataItemValueType.TimespanDropdown:\r\n                if (item.value.value && Object.keys(item.value.value).length > 0) {\r\n                    return item.value.customDisplayLabel ?\r\n                        item.value.customDisplayLabel : this.strings.MsftSmeShell.Angular.Form.DateTimeRange.Custom.label;\r\n                }\r\n        }\r\n    }\r\n\r\n    public getItemOperatorDisplayValue(item: QueryDataItem) {\r\n        switch (item.value.type) {\r\n            case QueryDataItemValueType.MultiSelectDropdown:\r\n                return this.queryDataOperand.Dropdowns;\r\n            case QueryDataItemValueType.SingleDropdown:\r\n                return this.queryDataOperand.Dropdowns;\r\n            case QueryDataItemValueType.TimespanDropdown:\r\n                return this.queryDataOperand.Dropdowns;\r\n            case QueryDataItemValueType.TextInput:\r\n            default:\r\n                return item.operand;\r\n        }\r\n    }\r\n\r\n    private getUniqueTableValue() {\r\n        if (this.dataTable && this.dataTable.items) {\r\n            this.columnsDropdownData.forEach((item, index) => {\r\n                // Ignore disabled ones\r\n                if (item.queryEditorType === this.queryDataItemValueType.Disabled) {\r\n                    return;\r\n                }\r\n                this.columnsDropdownData[index].options = [];\r\n                if (item.queryEditorType === QueryDataItemValueType.SingleDropdown ||\r\n                    item.queryEditorType === QueryDataItemValueType.MultiSelectDropdown ||\r\n                    item.queryEditorType === QueryDataItemValueType.TimespanDropdown) {\r\n                    // Guarantee if there are already existed preset options for timespan dropdown\r\n                    // Only display the preset ones;\r\n                    if (this.columnsDropdownData[index] && this.columnsDropdownData[index].presetOptions\r\n                        && this.columnsDropdownData[index].presetOptions.length > 0) {\r\n                        return;\r\n                    }\r\n\r\n                    loop1:\r\n                    for (let i = 0; i < this.dataTable.items.length; i++) {\r\n                        const row = this.dataTable.items[i];\r\n                        const field = item.field;\r\n                        // extend to support nested field\r\n                        const nestedStructure = field.split('.');\r\n                        let target = row;\r\n                        for (let j = 0; j < nestedStructure.length; j++) {\r\n                            const structure = nestedStructure[j];\r\n                            try {\r\n                                target = target[structure];\r\n                            } catch (e) {\r\n                                Logging.log({\r\n                                    level: LogLevel.Error,\r\n                                    message: 'Error parsing the nested: ' + e,\r\n                                    source: 'QueryEditorComponent.getUniqueTableValue'\r\n                                });\r\n                                break loop1;\r\n                            }\r\n                        }\r\n                        // Supports with one data model property being used across different datatable columns\r\n                        if (target && !this.columnsDropdownData[index].options.includes(target)) {\r\n                            this.columnsDropdownData[index].options.push(target);\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    @Input()\r\n    public set columnList(columnList: QueryList<DataTableColumnComponent>) {\r\n        if (columnList) {\r\n            // If column applied QueryDataItemValueType.Disabled will not be able to filter with\r\n            this.internalColumnList = this.columnListConstructor(columnList.toArray());\r\n            if (this.internalColumnList) {\r\n                let shouldEnableGetDataTableUniqueValues = false;\r\n                for (let i = 0; i < this.internalColumnList.length; i++) {\r\n                    const type = this.internalColumnList[i].queryEditorType;\r\n                    if (type) {\r\n                        if (type === QueryDataItemValueType.SingleDropdown\r\n                            || type === QueryDataItemValueType.MultiSelectDropdown\r\n                            || type === QueryDataItemValueType.TimespanDropdown) {\r\n                            const target: QueryEditorColumnDropdownData = {\r\n                                field: this.internalColumnList[i].value,\r\n                                isDropdown: true,\r\n                                queryEditorType: type\r\n                            };\r\n                            if (type === QueryDataItemValueType.TimespanDropdown) {\r\n                                // TODO: for now only allow user to use preset and custom datepickers\r\n                                // Later on can upgrade to support using unique timestamps from the datatable columns\r\n                                target.presetOptions = this.internalColumnList[i].presetOptions;\r\n                            }\r\n                            this.columnsDropdownData.push(target);\r\n                            if (!shouldEnableGetDataTableUniqueValues) {\r\n                                shouldEnableGetDataTableUniqueValues = true;\r\n                            }\r\n                        } else if (type === QueryDataItemValueType.TextInput) {\r\n                            this.columnsDropdownData.push({\r\n                                field: this.internalColumnList[i].value,\r\n                                isDropdown: false,\r\n                                queryEditorType: type\r\n                            });\r\n                        } else if (type === QueryDataItemValueType.Disabled) {\r\n                            shouldEnableGetDataTableUniqueValues = false;\r\n                        }\r\n                    }\r\n                }\r\n\r\n                if (shouldEnableGetDataTableUniqueValues) {\r\n                    this.enableGetDataTableUniqueValues = true;\r\n                }\r\n            }\r\n            this.getUniqueTableValue();\r\n            this.resetQueryEditor();\r\n            this.applyTmpTextValueToValue();\r\n            this.queryEditor = this.validateQueryEditor();\r\n            this.applyQueryEditorToDatatable();\r\n            this.isLoading = false;\r\n        }\r\n    }\r\n\r\n    @Debounce()\r\n    public onQueryEditorChange(index: number, isColumnUpdate?: boolean, needsUpdateIsValid?: boolean, isOperatorUpdate?: boolean): void {\r\n        if (this.dataTable) {\r\n            if (this.queryEditor && this.queryEditor.contents && this.queryEditor.contents.length\r\n                && this.queryEditor.contents[index]\r\n                && !MsftSme.isNullOrWhiteSpace(this.queryEditor.contents[index].column.value)) {\r\n\r\n                const columnsDropdownDataItem = this.columnsDropdownData.find((i) => {\r\n                    return i.field === this.selectedItem.column.value;\r\n                });\r\n\r\n                if (needsUpdateIsValid) {\r\n                    if (this.selectedItem.value.isValueUnset) {\r\n                        this.selectedItem.value.isValueUnset = false;\r\n                    }\r\n                    if (this.applyMode === ApplyMode.Active) {\r\n                        this.setUnsetProperty();\r\n                        this.setEditingItemValidProperty();\r\n                        this.applyTmpTextValueToValue(true);\r\n                        const queryEditor = this.validateQueryEditor();\r\n                        this.applyQueryEditorToDatatable(queryEditor);\r\n                    }\r\n                    return;\r\n                }\r\n\r\n                this.updateQueryEditorLabel(this.selectedItem);\r\n                if (columnsDropdownDataItem.queryEditorType === QueryDataItemValueType.SingleDropdown ||\r\n                    columnsDropdownDataItem.queryEditorType === QueryDataItemValueType.MultiSelectDropdown) {\r\n                    this.selectedItem.value.type =\r\n                        columnsDropdownDataItem.queryEditorType ?\r\n                            columnsDropdownDataItem.queryEditorType : QueryDataItemValueType.SingleDropdown;\r\n\r\n                    if (!this.enableGetDataTableUniqueValues) {\r\n                        this.enableGetDataTableUniqueValues = true;\r\n                    }\r\n                    if (isColumnUpdate) {\r\n                        this.isColumnDropdownBusy = true;\r\n                        this.columnDropdownField = columnsDropdownDataItem.field;\r\n                        this.selectedItem.operand = QueryDataOperand.Eq;\r\n                        if (columnsDropdownDataItem.queryEditorType === QueryDataItemValueType.SingleDropdown) {\r\n                            this.setSelectedItemValue(this.selectedItem, '');\r\n                            this.selectedItem.value.searchable = true;\r\n                        } else if (columnsDropdownDataItem.queryEditorType === QueryDataItemValueType.MultiSelectDropdown) {\r\n                            this.setSelectedItemValue(this.selectedItem, []);\r\n                            this.selectedItem.value.searchable = true;\r\n                        } else {\r\n                            this.selectedItem.value.searchable = false;\r\n                        }\r\n\r\n                        this.updateColumnDropdownData(columnsDropdownDataItem.field);\r\n                    }\r\n                } else if (columnsDropdownDataItem.queryEditorType === QueryDataItemValueType.TextInput) {\r\n                    this.selectedItem.value.type = QueryDataItemValueType.TextInput;\r\n                } else if (columnsDropdownDataItem.queryEditorType === QueryDataItemValueType.TimespanDropdown) {\r\n                    this.selectedItem.value.type = QueryDataItemValueType.TimespanDropdown;\r\n                    if (isColumnUpdate) {\r\n                        this.selectedItem.operand = QueryDataOperand.Eq;\r\n                        this.setSelectedItemValue(this.selectedItem, new DateRange());\r\n                        this.selectedItem.value.searchable = false;\r\n                        this.updateColumnDropdownData(columnsDropdownDataItem.field);\r\n                        this.selectedItem.value.customDisplayLabel = this.strings.MsftSmeShell.Angular.Form.DateTimeRange.Custom.label;\r\n                    }\r\n                }\r\n\r\n                if (isOperatorUpdate) {\r\n                    if (this.selectedItem.value.type === QueryDataItemValueType.TextInput) {\r\n                        if (this.applyMode === ApplyMode.Active) {\r\n                            this.setUnsetProperty();\r\n                            this.setEditingItemValidProperty();\r\n                            this.applyTmpTextValueToValue(true);\r\n                            const queryEditor = this.validateQueryEditor();\r\n                            this.applyQueryEditorToDatatable(queryEditor);\r\n                        }\r\n                    } else if (columnsDropdownDataItem.queryEditorType === QueryDataItemValueType.SingleDropdown ||\r\n                        columnsDropdownDataItem.queryEditorType === QueryDataItemValueType.MultiSelectDropdown) {\r\n                        this.selectedItem.operand = QueryDataOperand.Eq;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        // Set disableResetButton value\r\n        this.setDisableResetButton();\r\n    }\r\n\r\n    private updateColumnDropdownData(field: string): Promise<void> {\r\n        return new Promise<void>((resolve, reject) => {\r\n            if (this.columnsDropdownData) {\r\n                const target = this.columnsDropdownData.filter((item) => {\r\n                    return item.field === field;\r\n                })[0];\r\n                if (target) {\r\n                    if (target.presetOptions && target.presetOptions.length) {\r\n                        this.columnDropdownData = target.presetOptions;\r\n                    } else if (target.options && target.options.length) {\r\n                        this.columnDropdownData = target.options;\r\n                    } else {\r\n                        this.columnDropdownData = [];\r\n                    }\r\n                } else {\r\n                    this.columnDropdownData = [];\r\n                }\r\n            } else {\r\n                this.isColumnDropdownBusy = false;\r\n                reject();\r\n            }\r\n            this.isColumnDropdownBusy = false;\r\n            resolve();\r\n        });\r\n    }\r\n\r\n    @HostListener('mouseup')\r\n    mouseupInside() {\r\n        this.isFocusInsideComponent = true;\r\n        this.isComponentClicked = true;\r\n    }\r\n\r\n    @HostListener('document:mouseup')\r\n    mouseupOut() {\r\n        if (!this.isFocusInsideComponent && this.isComponentClicked) {\r\n            this.applyWorkflow();\r\n            this.isComponentClicked = false;\r\n        }\r\n        this.isFocusInsideComponent = false;\r\n    }\r\n\r\n    @Debounce()\r\n    public onValueFieldEnterKeydown($event, index): void {\r\n        $event.preventDefault();\r\n        if (this.queryEditor.contents && this.queryEditor.contents[index]) {\r\n            if (this.queryEditor.contents[index].isEditing) {\r\n                this.applyWorkflow();\r\n                this.focusOnSelectedHtml();\r\n            }\r\n        }\r\n    }\r\n\r\n    @Debounce()\r\n    private focusOnSelectedHtml() {\r\n        let selectFromAddButton = false;\r\n        if (this.selectedHtml.classList && this.selectedHtml.className.includes('sme-query-editor-new-item')) {\r\n            selectFromAddButton = true;\r\n        }\r\n        this.focusOnSelectedHtmlHelper(selectFromAddButton);\r\n    }\r\n\r\n    @Yield()\r\n    private focusOnSelectedHtmlHelper(selectFromAddButton: boolean) {\r\n        if (selectFromAddButton) {\r\n            const d = Dom;\r\n            const tmpSelectedItem = d.getPreviousFocusableElement(this.selectedHtml);\r\n            this.selectedHtml = tmpSelectedItem;\r\n            if (this.selectedHtml) {\r\n                this.selectedHtml.focus();\r\n            }\r\n        } else {\r\n            if (this.selectedHtml) {\r\n                this.selectedHtml.focus();\r\n            }\r\n        }\r\n    }\r\n\r\n    public onPillEnterTrap($event, item: QueryDataItem, index: number) {\r\n        if (!($event.target && $event.target && $event.target.type && $event.target.type.toLowerCase() === 'button')) {\r\n            this.onPillClick(item, index);\r\n            this.focusOnElementInTrap();\r\n        }\r\n        this.isFocusInsideComponent = true;\r\n        this.isComponentClicked = true;\r\n    }\r\n\r\n    @Yield()\r\n    private focusOnElementInTrap() {\r\n        const nextFocusableElementInTrap = Dom.getNextFocusableElementInTrap(this.selectedHtml);\r\n        if (nextFocusableElementInTrap) {\r\n            nextFocusableElementInTrap.focus();\r\n        }\r\n    }\r\n\r\n    @Debounce()\r\n    public onPillExitTrap($event) {\r\n        if (!($event.keyCode === 13 && $event.target && $event.target.type.toLowerCase() === 'button')) {\r\n            this.applyWorkflow();\r\n            this.focusOnSelectedHtml();\r\n        }\r\n        this.isFocusInsideComponent = false;\r\n        this.isComponentClicked = false;\r\n    }\r\n\r\n    public onPillClick(item: QueryDataItem, index: number) {\r\n        if (this.isEditing) {\r\n            this.applyWorkflow();\r\n        }\r\n        this.selectedItem = this.queryEditor.contents[index];\r\n        if (!item.disabled) {\r\n            if (item.value.type !== QueryDataItemValueType.TextInput) {\r\n                this.updateColumnDropdownData(item.column.value).then(() => {\r\n                    this.setIsEditing(item, true);\r\n                    this.currentModifyingIndex = index;\r\n                });\r\n            } else {\r\n                this.setIsEditing(item, true);\r\n                this.currentModifyingIndex = index;\r\n            }\r\n        }\r\n    }\r\n\r\n    public applyTmpTextValueToValue(doNotSetTemporaryToFalse?: boolean): void {\r\n        if (this.dataTable) {\r\n            if (this.queryEditor && this.queryEditor.contents && this.queryEditor.contents.length) {\r\n                this.updateQueryEditorLabel(this.selectedItem);\r\n                const item = this.selectedItem;\r\n                if (item) {\r\n                    this.setSelectedItemValue(item, item.value.temporaryValue);\r\n                    if (!doNotSetTemporaryToFalse) {\r\n                        this.setIsEditing(this.selectedItem, false);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    private applyWorkflow() {\r\n        this.setUnsetProperty();\r\n        this.setEditingItemValidProperty();\r\n        this.filterUnsetValueItemAndSetInvalid();\r\n        this.applyTmpTextValueToValue();\r\n        if (this.applyMode === ApplyMode.Lazy) {\r\n            const queryEditor = this.validateQueryEditor();\r\n            this.applyQueryEditorToDatatable(queryEditor);\r\n        }\r\n    }\r\n\r\n    private validateQueryEditor(index?: number) {\r\n        const res = {\r\n            contents: new Array<QueryDataItem>()\r\n        };\r\n        if (this.queryEditor.contents && this.queryEditor.contents.length) {\r\n            if (index >= 0) {\r\n                const item = this.selectedItem;\r\n                if (item) {\r\n                    if (!MsftSme.isNullOrWhiteSpace(item.column.value) &&\r\n                        !(typeof item.value.value === 'string' && MsftSme.isNullOrWhiteSpace(item.value.value)) ||\r\n                        !(typeof item.value.value === 'object' && !item.value.value.length)) {\r\n                        res.contents.push(item);\r\n                    } else {\r\n                        item.value.isValueUnset = true;\r\n                    }\r\n                }\r\n            } else {\r\n                this.queryEditor.contents.forEach((item: QueryDataItem) => {\r\n                    if (!MsftSme.isNullOrWhiteSpace(item.column.value) &&\r\n                        !(typeof item.value.value === 'string' && MsftSme.isNullOrWhiteSpace(item.value.value)) ||\r\n                        !(typeof item.value.value === 'object' && !item.value.value.length)) {\r\n                        res.contents.push(item);\r\n                    } else {\r\n                        item.value.isValueUnset = true;\r\n                    }\r\n                });\r\n            }\r\n        }\r\n        return res;\r\n    }\r\n\r\n    public applyQueryEditorToDatatable(input?: QueryData) {\r\n        if (this.dataTable) {\r\n            this.dataTable.applyQueryEditor(input ? input : this.queryEditor);\r\n        }\r\n    }\r\n\r\n    public newQueryEditor($event, isKeyEnterPressed?: boolean) {\r\n        $event.preventDefault();\r\n        this.isComponentClicked = false;\r\n        this.isFocusInsideComponent = false;\r\n        if (this.isEditing) {\r\n            this.applyWorkflow();\r\n        }\r\n        this.queryEditor.contents.push(this.newQueryEditorHelper('', ''));\r\n        this.isEditing = true;\r\n        this.selectedItem = this.queryEditor.contents[this.queryEditor.contents.length - 1];\r\n\r\n        if (isKeyEnterPressed) {\r\n            this.selectedHtml = <HTMLElement>event.target;\r\n            this.focusOnNewQueryPill();\r\n        }\r\n\r\n        // Set disableResetButton value\r\n        this.setDisableResetButton();\r\n    }\r\n\r\n    @Yield()\r\n    private focusOnNewQueryPill() {\r\n        const d = Dom;\r\n        const lastFocusablePillRemoveButton = d.getPreviousFocusableElement(this.selectedHtml);\r\n        if (lastFocusablePillRemoveButton) {\r\n            const lastFocusablePillKeyDropdown = d.getPreviousFocusableElementInTrap(lastFocusablePillRemoveButton);\r\n            if (lastFocusablePillKeyDropdown) {\r\n                lastFocusablePillKeyDropdown.focus();\r\n            }\r\n        }\r\n    }\r\n\r\n    public getMenuItemLabel(index: number) {\r\n        return [this.idBag.pillLabel, this.idBag.disabledLabel, this.idBag.irremovableLabel, this.idBag.removableLabel]\r\n            .map(l => `${l}${index}`)\r\n            .join(' ');\r\n    }\r\n\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            pillLabel: '',\r\n            disabledLabel: '',\r\n            irremovableLabel: '',\r\n            removableLabel: ''\r\n        };\r\n    }\r\n\r\n    private setUnsetProperty() {\r\n        if (this.isEditing && this.queryEditor.contents && this.queryEditor.contents.length) {\r\n            const item = this.selectedItem;\r\n            if ((!item.column.value || MsftSme.isNullOrWhiteSpace(item.column.value) ||\r\n                !item.value.temporaryValue || MsftSme.isNullOrWhiteSpace(item.value.temporaryValue))) {\r\n                item.value.isValueUnset = true;\r\n            } else {\r\n                item.value.isValueUnset = false;\r\n                this.updateQueryEditorLabel(item);\r\n            }\r\n        }\r\n    }\r\n\r\n    public setSelectedHtml() {\r\n        this.selectedHtml = <HTMLElement>event.target;\r\n        const d = Dom;\r\n        this.postSelectedHtml = d.getNextFocusableElement(this.selectedHtml);\r\n    }\r\n\r\n    private setEditingItemValidProperty() {\r\n        if (this.selectedItem && (this.isEditing && this.applyMode === ApplyMode.Active)) {\r\n            if (this.selectedItem.value.isValueUnset) {\r\n                this.selectedItem.invalid = true;\r\n            } else {\r\n                if (this.selectedItem.value.type === QueryDataItemValueType.TextInput ||\r\n                    this.selectedItem.value.type === QueryDataItemValueType.SingleDropdown) {\r\n                    let isEmptyValue = false;\r\n                    if (!this.selectedItem.value.temporaryValue || !this.selectedItem.value.temporaryValue.length) {\r\n                        isEmptyValue = true;\r\n                    }\r\n                    if (isEmptyValue) {\r\n                        this.selectedItem.invalid = true;\r\n                    } else {\r\n                        this.selectedItem.invalid = false;\r\n                    }\r\n                } else if (this.selectedItem.value.type === QueryDataItemValueType.MultiSelectDropdown) {\r\n                    if (!this.selectedItem.value.temporaryValue || !this.selectedItem.value.temporaryValue.length) {\r\n                        this.selectedItem.invalid = true;\r\n                    } else {\r\n                        this.selectedItem.invalid = false;\r\n                    }\r\n                } else if (this.selectedItem.value.type === QueryDataItemValueType.TimespanDropdown) {\r\n                    if (!this.selectedItem.value.temporaryValue) {\r\n                        this.selectedItem.invalid = true;\r\n                    } else {\r\n                        this.selectedItem.invalid = false;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    private filterUnsetValueItemAndSetInvalid() {\r\n        this.queryEditor.contents = this.queryEditor.contents.filter((item: QueryDataItem) => {\r\n            return !(item.invalid && item.value.isValueUnset) || item.irremovable;\r\n        });\r\n    }\r\n\r\n    public removeQueryEditorItem($event, index, isFromKeyboardPress?: boolean) {\r\n        if ($event) {\r\n            $event.preventDefault();\r\n        }\r\n        const nextFocusablePill = this.findNextFocusablePill(index);\r\n        if (this.queryEditor && this.queryEditor.contents && this.queryEditor.contents[index] &&\r\n            !this.queryEditor.contents[index].irremovable) {\r\n            this.queryEditor.contents.splice(index, 1);\r\n            const queryEditor = this.validateQueryEditor();\r\n            this.applyQueryEditorToDatatable(queryEditor);\r\n        }\r\n        this.focusOnTheNextPillAfterRemove(index, isFromKeyboardPress, nextFocusablePill);\r\n\r\n        // Set disableResetButton value\r\n        this.setDisableResetButton();\r\n    }\r\n\r\n    @Yield()\r\n    private focusOnTheNextPillAfterRemove(index: number, isFromKeyboardPress: boolean, nextFocusablePill: HTMLElement) {\r\n        if (!this.selectedItem) {\r\n            this.selectedItem = this.queryEditor.contents[index];\r\n        }\r\n        if (isFromKeyboardPress && nextFocusablePill && !this.selectedItem.irremovable) {\r\n            nextFocusablePill.focus();\r\n        }\r\n    }\r\n\r\n    private findNextFocusablePill(index) {\r\n        const queryEditorLength = this.queryEditor && this.queryEditor.contents\r\n            ? this.queryEditor.contents.length : 0;\r\n        const d = Dom;\r\n        let postFocusableElement, preFocusableElement;\r\n        if (this.isEditing) {\r\n            postFocusableElement = this.postSelectedHtml;\r\n            if (postFocusableElement) {\r\n                preFocusableElement = d.getPreviousFocusableElement(this.selectedHtml);\r\n            }\r\n        } else {\r\n            postFocusableElement = d.getNextFocusableElement(this.selectedHtml);\r\n            preFocusableElement = d.getPreviousFocusableElement(this.selectedHtml);\r\n        }\r\n        if (!queryEditorLength) {\r\n            return null;\r\n        } else if (queryEditorLength === 1) {\r\n            return postFocusableElement;\r\n        } else {\r\n            if (index === queryEditorLength - 1) {\r\n                return preFocusableElement;\r\n            } else {\r\n                return postFocusableElement;\r\n            }\r\n        }\r\n    }\r\n\r\n    public resetQueryEditor() {\r\n        if (!this.queryEditor) {\r\n            if (!this.presetQueryEditor || !this.presetQueryEditor.contents) {\r\n                this.presetQueryEditor = {\r\n                    contents: []\r\n                };\r\n            }\r\n            this.queryEditor = this.customDeepCloneQueryEditor(this.presetQueryEditor);\r\n            if (!this.queryEditor || !this.queryEditor.contents) {\r\n                this.queryEditor = {\r\n                    contents: []\r\n                };\r\n            }\r\n        } else {\r\n            const temp = this.customDeepCloneQueryEditor(this.presetQueryEditor);\r\n            this.queryEditor = temp;\r\n        }\r\n        const queryEditor = this.validateQueryEditor();\r\n        this.applyQueryEditorToDatatable(queryEditor);\r\n\r\n        // Set disableResetButton value\r\n        this.disableResetButton = true;\r\n    }\r\n\r\n    private customDeepCloneQueryEditor(input: QueryData) {\r\n        const res = {\r\n            contents: []\r\n        };\r\n\r\n        if (input && input.contents && input.contents.length > 0) {\r\n            input.contents.forEach((item, index) => {\r\n                if (item && item.value && item.value.type && item.value.type === QueryDataItemValueType.TimespanDropdown) {\r\n                    res.contents[index] = JSON.parse(JSON.stringify(item));\r\n                    const value = item.value;\r\n                    if (value.value && value.value.isValid()) {\r\n                        res.contents[index].value.value = new DateRange(value.value.start, value.value.end);\r\n                    }\r\n                    if (value.temporaryValue && value.temporaryValue.isValid()) {\r\n                        res.contents[index].value.temporaryValue = new DateRange(value.temporaryValue.start, value.temporaryValue.end);\r\n                    }\r\n                } else {\r\n                    res.contents[index] = JSON.parse(JSON.stringify(item));\r\n                }\r\n            });\r\n        }\r\n\r\n        return res;\r\n    }\r\n\r\n    @Debounce()\r\n    public getTimerangeDisplayValue(value: DateRange) {\r\n        return value.toString();\r\n    }\r\n\r\n    private initializeOperandsList() {\r\n        const res = new Array();\r\n        const keys = Object.keys(QueryDataOperand);\r\n        if (keys && keys.length) {\r\n            keys.forEach((key) => {\r\n                if (QueryDataOperand[key] === ':') {\r\n                    return;\r\n                }\r\n                const item = {\r\n                    label: key,\r\n                    value: QueryDataOperand[key]\r\n                };\r\n                res.push(item);\r\n            });\r\n        }\r\n        this.operands = res;\r\n    }\r\n\r\n    private updateQueryEditorLabel(item: QueryDataItem): void {\r\n        if (item && item.column.value) {\r\n            const column = this.internalColumnList.find((i) => {\r\n                return i.value === item.column.value;\r\n            });\r\n            item.column.label = column.label;\r\n        }\r\n    }\r\n\r\n    private newQueryEditorHelper(\r\n        column: string,\r\n        value: string,\r\n        operand?: string,\r\n        valueType?: QueryDataItemValueType): QueryDataItem {\r\n\r\n        const res = {\r\n            column: {\r\n                label: '',\r\n                value: column\r\n            },\r\n            operand: operand ? operand : QueryDataOperand.Eq,\r\n            value: {\r\n                value: value ? value : '',\r\n                temporaryValue: '',\r\n                tooltip: value ? value : '',\r\n                type: valueType ? valueType : QueryDataItemValueType.TextInput,\r\n                isValueUnset: true,\r\n                searchable: (valueType === QueryDataItemValueType.SingleDropdown\r\n                    || valueType === QueryDataItemValueType.MultiSelectDropdown) ? true : false\r\n            },\r\n            isEditing: true,\r\n            invalid: true\r\n        };\r\n\r\n        return res;\r\n    }\r\n\r\n    private columnListConstructor(columnList: DataTableColumnComponent[]) {\r\n        const res: QueryEditorDataTableColumnListItem[] = [];\r\n        for (let i = 0; i < columnList.length; i++) {\r\n            // Filter out disabled ones\r\n            const column = columnList[i];\r\n            if (column && column.queryEditorType\r\n                && column.queryEditorType === this.queryDataItemValueType.Disabled) {\r\n                continue;\r\n            }\r\n            res.push(this.columnListHelper(columnList[i]));\r\n        }\r\n        return res;\r\n    }\r\n\r\n    private columnListHelper(columnListItem: DataTableColumnComponent): QueryEditorDataTableColumnListItem {\r\n        const res: QueryEditorDataTableColumnListItem = {\r\n            label: columnListItem.header,\r\n            value: columnListItem.field,\r\n            queryEditorType: columnListItem.queryEditorType ? columnListItem.queryEditorType :\r\n                QueryDataItemValueType.TextInput\r\n        };\r\n        if (res.queryEditorType === QueryDataItemValueType.TimespanDropdown) {\r\n            if (columnListItem.queryEditorOptions && columnListItem.queryEditorOptions.fieldValue.length > 0\r\n                && columnListItem.queryEditorOptions.fieldName === res.value) {\r\n                res.presetOptions = columnListItem.queryEditorOptions.fieldValue;\r\n            } else {\r\n                res.presetOptions = [];\r\n            }\r\n        }\r\n\r\n        return res;\r\n    }\r\n\r\n    private setIsEditing(item: QueryDataItem, isEditing: boolean) {\r\n        if (item) {\r\n            item.isEditing = isEditing;\r\n        }\r\n        this.isEditing = isEditing;\r\n    }\r\n\r\n    // This function will potentially used for checking if the pill reaches 300px max and also value field display is in ellepsis\r\n    @Yield()\r\n    public checkValueFieldTruncated(input): boolean {\r\n        // checkValueFieldTruncatedRecords helps rendering for those preset pills to render properly.\r\n        // if reaches limit 300px and value has ellipsis will update the css so that value can take 70% width\r\n        // By design.\r\n        if (this.checkValueFieldTruncatedRecords && this.checkValueFieldTruncatedRecords.includes(input)) {\r\n            return;\r\n        } else {\r\n            this.checkValueFieldTruncatedRecords.push(input);\r\n        }\r\n        let res = false, valueHtml;\r\n        const targetPill = document.getElementById(input);\r\n        if (targetPill && targetPill.children && targetPill.children.length) {\r\n            for (let i = 0; i < targetPill.children.length; i++) {\r\n                const child = targetPill.children[i];\r\n                if (child.className && child.className.match(/sme-query-editor-value/)) {\r\n                    valueHtml = child;\r\n                    break;\r\n                }\r\n            }\r\n            if (valueHtml) {\r\n                if (valueHtml.scrollWidth > valueHtml.offsetWidth) {\r\n                    res = true;\r\n                }\r\n            }\r\n        }\r\n        return res;\r\n    }\r\n\r\n    protected getInitialHostClasses(): string[] {\r\n        return super.getInitialHostClasses().concat(\r\n            'sme-query-editor',\r\n            'sme-layout-query-editor',\r\n            'sme-focus-zone'\r\n        );\r\n    }\r\n\r\n    private setSelectedItemValue(item: QueryDataItem, target: any) {\r\n        item.value.value = target;\r\n        item.value.tooltip = item.value.value.toString();\r\n        if (item.value.type === QueryDataItemValueType.TimespanDropdown) {\r\n            item.value.temporaryValue = target;\r\n        }\r\n    }\r\n\r\n    public onCustomLabelEmit(label: string) {\r\n        this.selectedItem.value.customDisplayLabel = label;\r\n    }\r\n\r\n    // TODO: considering the cube complexity, one option is to require the user to pass in the preselected object as well.\r\n    private updatePresetQueryEditorCustomLabels() {\r\n        if (this.presetQueryEditor && this.presetQueryEditor.contents && this.presetQueryEditor.contents.length > 0) {\r\n            for (let i = 0; i < this.presetQueryEditor.contents.length; i++) {\r\n                const pill = this.presetQueryEditor.contents[i];\r\n                if (pill && pill.value && pill.value.type === QueryDataItemValueType.TimespanDropdown) {\r\n                    for (let j = 0; j < this.internalColumnList.length; j++) {\r\n                        const target = this.internalColumnList[j];\r\n                        if (target && target.presetOptions && target.presetOptions.length > 0) {\r\n                            const targetOption = target.presetOptions.find((item) => {\r\n                                return item.value.isEqualTo(pill.value.value);\r\n                            });\r\n                            pill.value.customDisplayLabel = targetOption.label;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DropdownModule } from '../dropdown/dropdown.module';\r\nimport { SmeFormsModule } from '../form/forms.module';\r\nimport { LoadingWheelModule } from '../loading-wheel/loading-wheel.module';\r\nimport { ResizerModule } from '../resizer/resizer.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { QueryEditorComponent } from './query-editor.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        QueryEditorComponent],\r\n    exports: [\r\n        QueryEditorComponent],\r\n    imports: [\r\n        CommonModule,\r\n        DropdownModule,\r\n        FormsModule,\r\n        ResizerModule,\r\n        LoadingWheelModule,\r\n        TooltipModule,\r\n        SmeFormsModule,\r\n        ReactiveFormsModule\r\n    ]\r\n})\r\nexport class QueryEditorModule { }\r\n","<div *ngIf=\"schema\" class=\"form-content\">\r\n    <sme-schema-field-host [propertySchema]=\"schema\" [(data)]=\"data\" [context]=\"context\" (formActionExecuted)=\"onFormActionExecuted($event.action, $event.data)\"></sme-schema-field-host>\r\n</div>","import {\r\n    Component, EventEmitter, Input, OnInit, Output, ViewChild\r\n} from '@angular/core';\r\nimport { SchemaFieldHostComponent, SchemaFieldLoaderComponentBase } from '../schema/schema-field-host.component';\r\nimport { DataSchema, FormData, SchemaFieldContext } from '../schema/schema-models';\r\n\r\n/**\r\n * Schema Form Component\r\n * It takes the schema and data and other necessary inputs then dynamically renders the form UI.\r\n */\r\n@Component({\r\n    selector: 'sme-schema-form-content',\r\n    templateUrl: './schema-form-content.component.html'\r\n})\r\nexport class SchemaFormContentComponent implements OnInit {\r\n    private internalSchema: DataSchema;\r\n    private internalData: FormData;\r\n\r\n    @ViewChild(SchemaFieldHostComponent)\r\n    public fieldHostComponent: SchemaFieldHostComponent;\r\n\r\n    /**\r\n     * It gets and sets the schema.\r\n     */\r\n    @Input()\r\n    public get schema(): DataSchema {\r\n        return this.internalSchema;\r\n    }\r\n    public set schema(value: DataSchema) {\r\n        this.internalSchema = value;\r\n    }\r\n\r\n    /**\r\n     * It gets and sets the form data.\r\n     */\r\n    @Input()\r\n    public get data(): FormData {\r\n        return this.internalData;\r\n    }\r\n    public set data(value: FormData) {\r\n        this.internalData = value;\r\n        this.dataChange.emit(this.internalData);\r\n        if (this.context) {\r\n            this.context.formData = value;\r\n        }\r\n    }\r\n\r\n    @Output()\r\n    public dataChange = new EventEmitter<FormData>();\r\n\r\n    public context: SchemaFieldContext;\r\n\r\n    /**\r\n     * The form controller  which is used to provide some behaviors from the host of the form.\r\n     * Custom validation methods can be provided by it.\r\n     */\r\n    @Input()\r\n    public formController: any;\r\n\r\n    @Input()\r\n    public isEditorMode: boolean;\r\n\r\n    @Output()\r\n    public formActionExecuted: EventEmitter<{ action: string, data: any }> = new EventEmitter<{ action: string, data: any }>();\r\n\r\n    public get isFormValid(): boolean {\r\n        return !!this.fieldHostComponent && this.fieldHostComponent.isValid();\r\n    }\r\n\r\n    public get isFormDirty(): boolean {\r\n        return !!this.fieldHostComponent && this.fieldHostComponent.isDirty();\r\n    }\r\n    public onFormActionExecuted(action: string, data: any): void {\r\n        this.formActionExecuted.emit({ action: action, data: data });\r\n    }\r\n    public ngOnInit(): void {\r\n        this.context = new SchemaFieldContext();\r\n        this.context.isEditorMode = this.isEditorMode;\r\n        this.context.formData = this.data;\r\n        this.context.formController = this.formController;\r\n    }\r\n    public getFormContainerLoaderComponent(): SchemaFieldLoaderComponentBase {\r\n        if (this.fieldHostComponent) {\r\n            return this.fieldHostComponent.getFormFieldLoaderComponent();\r\n        }\r\n\r\n        return null;\r\n    }\r\n}\r\n","export class SchemaFormEditorUtilities {\r\n    public static deepCopy(object: any): any {\r\n        return JSON.parse(JSON.stringify(object));\r\n    }\r\n\r\n    public static getIndentText(length: number): string {\r\n        let result = '';\r\n        for (let i = 0; i < length * 4; i++) {\r\n            result += '&nbsp;';\r\n        }\r\n        return result;\r\n    }\r\n}\r\n","import { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Strings } from '../../generated/strings';\r\nimport { DataSchema, SchemaPrimitiveType } from '../schema/schema-models';\r\nimport { SchemaFormEditorUtilities } from './schema-form-editor-utilities';\r\n\r\n@Component({\r\n    selector: 'sme-schema-form-editor-schema-text',\r\n    styleUrls: ['./schema-form-editor.component.css'],\r\n    templateUrl: './schema-form-editor-schema-text.component.html'\r\n})\r\nexport class SchemaFormEditorSchemaTextComponent implements OnInit, OnDestroy {\r\n    public strings = MsftSme.getStrings<Strings>().MsftSmeShell.Angular.SchemaForm.Editor;\r\n\r\n    private isInitialized = false;\r\n    private timer;\r\n    private internalSchema: DataSchema;\r\n\r\n    private editingSchemaHTMLOld: string;\r\n    private editingSchemaHTML: string;\r\n\r\n    @ViewChild('schemaTextEditor')\r\n    private schemaTextEditorElement: ElementRef;\r\n\r\n    @Input()\r\n    public get schema(): DataSchema {\r\n        return this.internalSchema;\r\n    }\r\n    public set schema(value: DataSchema) {\r\n        this.internalSchema = value;\r\n        if (this.isInitialized) {\r\n            this.refreshSchema();\r\n        }\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        this.timer = setInterval(\r\n            () => {\r\n                this.handleEditingSchemaTextHTMLChange();\r\n            },\r\n            1500);\r\n        this.isInitialized = true;\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        clearInterval(this.timer);\r\n    }\r\n\r\n    public generateSchema(): DataSchema {\r\n        let schema: DataSchema;\r\n        const schemaTextEditorHTMLElement = <HTMLDivElement>this.schemaTextEditorElement.nativeElement;\r\n        let text = schemaTextEditorHTMLElement.innerText;\r\n        text = text.replace(/<SchemaObjectProperty>/g, '').replace(/<SchemaArrayProperty>/g, '');\r\n        for (const item in SchemaPrimitiveType) {\r\n            if (isNaN(parseInt(SchemaPrimitiveType[item], 0))) {\r\n                text = text.replace(new RegExp('SchemaPrimitiveType.' + SchemaPrimitiveType[item], 'g'), item);\r\n            }\r\n        }\r\n\r\n        // The schema form editor is only available in debug mode, not in prod mode.\r\n        // The security wise the following code should be fine.\r\n        schema = (new Function('return ' + text.replace(/\\n/g, '').replace(/\\r/g, '')))();\r\n\r\n        return schema;\r\n    }\r\n\r\n    public copySchemaToClipboard(): void {\r\n        const schemaTextEditorHTMLElement = <HTMLDivElement>this.schemaTextEditorElement.nativeElement;\r\n\r\n        let sel;\r\n        let range;\r\n        if (window.getSelection && document.createRange) {\r\n            range = document.createRange();\r\n            range.selectNodeContents(schemaTextEditorHTMLElement);\r\n            sel = window.getSelection();\r\n            sel.removeAllRanges();\r\n            sel.addRange(range);\r\n        } else if (document.body['createTextRange']) {\r\n            range = document.body['createTextRange']();\r\n            range.moveToElementText(schemaTextEditorHTMLElement);\r\n            range.select();\r\n        }\r\n        document.execCommand('copy');\r\n    }\r\n\r\n    private refreshSchema(): void {\r\n        this.editingSchemaHTML = '';\r\n        this.editingSchemaHTML += this.convertDataToText(this.schema, 0);\r\n        const schemaTextEditorHTMLElement = <HTMLDivElement>this.schemaTextEditorElement.nativeElement;\r\n        schemaTextEditorHTMLElement.innerHTML = this.editingSchemaHTML;\r\n    }\r\n\r\n    private convertDataToText(data: any, level: number): string {\r\n        let result = '';\r\n\r\n        switch (typeof data) {\r\n            case 'number':\r\n            case 'boolean':\r\n                result += data;\r\n                break;\r\n            case 'string':\r\n                result += '\\'' + data.replace(/\\'/g, '\\\\\\'') + '\\'';\r\n                break;\r\n            case 'object':\r\n                if (Array.isArray(data)) {\r\n                    result += '[';\r\n                    for (let i = 0; i < data.length; i++) {\r\n                        if (i !== 0) {\r\n                            result += ',';\r\n                        }\r\n                        result += '<br/>';\r\n                        result += SchemaFormEditorUtilities.getIndentText(level + 1) + this.convertDataToText(data[i], level + 1);\r\n                    }\r\n                    result += '<br/>';\r\n                    result += SchemaFormEditorUtilities.getIndentText(level) + ']';\r\n                } else {\r\n                    result += this.getTypeScriptInterfaceForSchemaObject(data) + '{';\r\n                    let isFirstProperty = true;\r\n                    for (const property in data) {\r\n                        if (data.hasOwnProperty(property) && !MsftSme.isNullOrUndefined(data[property]) && data[property] !== '') {\r\n                            if (!isFirstProperty) {\r\n                                result += ',';\r\n                            }\r\n                            result += '<br/>';\r\n                            result += SchemaFormEditorUtilities.getIndentText(level + 1)\r\n                                + '<span class=\"property\">' + property + '</span>: ';\r\n                            if (property === 'type') {\r\n                                result += 'SchemaPrimitiveType.' + SchemaPrimitiveType[data[property]];\r\n                            } else {\r\n                                result += this.convertDataToText(data[property], level + 1);\r\n                            }\r\n                            isFirstProperty = false;\r\n                        }\r\n                    }\r\n                    result += '<br/>';\r\n                    result += SchemaFormEditorUtilities.getIndentText(level) + '}';\r\n                    break;\r\n                }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    private getTypeScriptInterfaceForSchemaObject(object: any): string {\r\n        let propertyType = '';\r\n        if (object.type && object.type === SchemaPrimitiveType.Object) {\r\n            propertyType = 'SchemaObjectProperty';\r\n        } else if (object.type && object.type === SchemaPrimitiveType.Array) {\r\n            propertyType = 'SchemaArrayProperty';\r\n        }\r\n\r\n        if (propertyType) {\r\n            propertyType = '&lt;<span class=\"property-type\">' + propertyType + '</span>&gt;';\r\n        }\r\n\r\n        return propertyType;\r\n    }\r\n\r\n    private handleEditingSchemaTextHTMLChange(): void {\r\n        const schemaTextEditorHTMLElement = <HTMLDivElement>this.schemaTextEditorElement.nativeElement;\r\n        this.editingSchemaHTML = schemaTextEditorHTMLElement.innerHTML;\r\n        this.editingSchemaHTMLOld = this.editingSchemaHTML;\r\n    }\r\n}\r\n","<div class=\"sme-layout-absolute-phone-up sme-position-inset-none sme-arrange-stack-v\">\r\n    <div class=\"sme-position-flex-none sme-padding-bottom-xxs\">\r\n        <p>{{strings.SchemaText.Message1}}</p>\r\n        <p>{{strings.SchemaText.Message2}}\r\n            <button (click)=\"copySchemaToClipboard()\">{{strings.SchemaText.CopyToClipboardButton.Text}}</button>\r\n        </p>\r\n    </div>\r\n    <div #schemaTextEditor contenteditable=\"true\" class=\"syntax-editor sme-position-flex-auto sme-background-color-base sme-arrange-overflow-auto sme-font-label\"></div>\r\n    <div class=\"sme-position-none sme-padding-top-xxs\">\r\n        <span>{{strings.SchemaText.LintMessage}}</span>\r\n        <span class=\"sme-border-inset-sm sme-border-color-white-50 sme-color-green sme-padding-inset-xxxs sme-padding-horizontal-sm\">// tslint:disable:max-line-length</span>\r\n    </div>\r\n</div>","import { DataSchema, SchemaObjectProperty, SchemaPrimitiveType } from '../schema/schema-models';\r\n\r\n/* eslint-disable max-len */\r\nexport const propertyFormSchema: DataSchema = {\r\n    properties: [\r\n        <SchemaObjectProperty>{\r\n            type: SchemaPrimitiveType.Object,\r\n            format: 'default',\r\n            name: 'dataType',\r\n            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.DataType',\r\n            options: {\r\n                columnCount: 2,\r\n                collapsible: {\r\n                    yes: true,\r\n                    state: 'expanded'\r\n                }\r\n            },\r\n            properties: [\r\n                {\r\n                    type: SchemaPrimitiveType.String,\r\n                    format: 'combobox',\r\n                    name: 'type',\r\n                    label: 'actual_string:Type',\r\n                    required: true,\r\n                    disabledCondition: 'formController.isRootNodeSelected',\r\n                    description: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Type.Description',\r\n                    options: {\r\n                        items: [\r\n                        ],\r\n                        itemsBinding: 'formData.dataType.types'\r\n                    }\r\n                },\r\n                {\r\n                    type: SchemaPrimitiveType.String,\r\n                    format: 'combobox',\r\n                    name: 'format',\r\n                    label: 'actual_string:Format',\r\n                    required: true,\r\n                    description: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Format.Description',\r\n                    options: {\r\n                        itemsBinding: 'formData.dataType.formats'\r\n                    }\r\n                }\r\n            ]\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.String,\r\n            format: 'textbox',\r\n            name: 'name',\r\n            label: 'actual_string:Name',\r\n            description: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Name.Description',\r\n            hideCondition: 'formController.isRootNodeSelected',\r\n            options: {\r\n                multipleline: false\r\n            }\r\n        },\r\n        {\r\n            type: SchemaPrimitiveType.String,\r\n            format: 'resource-string-picker',\r\n            name: 'label',\r\n            label: 'actual_string:Label',\r\n            description: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Label.Description',\r\n            options: {\r\n                multipleline: false\r\n            }\r\n        },\r\n        <SchemaObjectProperty>{\r\n            type: SchemaPrimitiveType.Object,\r\n            format: 'default',\r\n            name: 'advanceProperties',\r\n            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Advance',\r\n            hideCondition: 'formController.isRootNodeSelected',\r\n            options: {\r\n                collapsible: {\r\n                    yes: true,\r\n                    state: 'collapsed'\r\n                }\r\n            },\r\n            properties: [\r\n                {\r\n                    type: SchemaPrimitiveType.Boolean,\r\n                    format: 'checkbox',\r\n                    name: 'required',\r\n                    label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Required',\r\n                    options: {\r\n                    }\r\n                },\r\n                {\r\n                    type: SchemaPrimitiveType.String,\r\n                    format: 'textbox',\r\n                    name: 'defaultValue',\r\n                    label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.DefaultValue',\r\n                    options: {\r\n                        multipleline: false\r\n                    }\r\n                },\r\n                {\r\n                    type: SchemaPrimitiveType.String,\r\n                    format: 'resource-string-picker',\r\n                    name: 'description',\r\n                    label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.Description',\r\n                    options: {\r\n                        multipleline: false\r\n                    }\r\n                },\r\n                {\r\n                    type: SchemaPrimitiveType.String,\r\n                    format: 'textbox',\r\n                    name: 'hideCondition',\r\n                    label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.HideCondition',\r\n                    options: {\r\n                        multipleline: false\r\n                    }\r\n                },\r\n                {\r\n                    type: SchemaPrimitiveType.String,\r\n                    format: 'textbox',\r\n                    name: 'disabledCondition',\r\n                    label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.ConditionForDisabled',\r\n                    options: {\r\n                        multipleline: false\r\n                    }\r\n                },\r\n                {\r\n                    type: SchemaPrimitiveType.String,\r\n                    format: 'textbox',\r\n                    name: 'readonlyCondition',\r\n                    label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.ReadonlyCondition',\r\n                    options: {\r\n                        multipleline: false\r\n                    }\r\n                },\r\n                {\r\n                    type: SchemaPrimitiveType.Boolean,\r\n                    format: 'checkbox',\r\n                    name: 'emptyByDefault',\r\n                    label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.EmptyByDefault',\r\n                    hideCondition: 'formController.isNotObjectType'\r\n                },\r\n                {\r\n                    type: SchemaPrimitiveType.String,\r\n                    format: 'textbox',\r\n                    name: 'customValidation',\r\n                    label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.CustomValidation',\r\n                    options: {\r\n                        multipleline: false\r\n                    }\r\n                },\r\n                <SchemaObjectProperty>{\r\n                    type: SchemaPrimitiveType.Object,\r\n                    format: 'default',\r\n                    name: 'customAsyncValidation',\r\n                    label: 'actual_string:Custom Async Validation',\r\n                    required: false,\r\n                    options: {\r\n                        columnCount: 1,\r\n                        hideHeader: false,\r\n                        collapsible: {\r\n                            yes: true,\r\n                            state: 'collapsed'\r\n                        }\r\n                    },\r\n                    properties: [\r\n                        {\r\n                            type: SchemaPrimitiveType.String,\r\n                            format: 'textbox',\r\n                            name: 'handler',\r\n                            label: 'actual_string:Handler',\r\n                            required: false,\r\n                            options: {\r\n                                multipleline: false\r\n                            }\r\n                        },\r\n                        {\r\n                            type: SchemaPrimitiveType.String,\r\n                            format: 'resource-string-picker',\r\n                            name: 'pendingMessage',\r\n                            label: 'actual_string:Pending Message',\r\n                            required: false,\r\n                            options: {\r\n                                multipleline: false\r\n                            }\r\n                        },\r\n                        {\r\n                            type: SchemaPrimitiveType.Number,\r\n                            format: 'textbox',\r\n                            name: 'debounceTime',\r\n                            label: 'actual_string:Debounce Time',\r\n                            defaultValue: 800,\r\n                            required: false,\r\n                            options: {\r\n                                min: 0,\r\n                                max: 9999999,\r\n                                step: 1\r\n                            }\r\n                        }\r\n                    ],\r\n                    emptyByDefault: false\r\n                }\r\n            ]\r\n        },\r\n        <SchemaObjectProperty>{\r\n            type: SchemaPrimitiveType.Object,\r\n            format: 'json-text-editor',\r\n            name: 'options',\r\n            label: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.MoreOptions',\r\n            description: 'resources:strings:MsftSmeShell.Angular.SchemaForm.Editor.PropertyForm.NoOptionSchema',\r\n            options: {\r\n            },\r\n            properties: [\r\n            ]\r\n        }\r\n    ]\r\n};\r\n","<sme-split-view #editingSplitView orientation=\"left\" [isExpanded]=\"true\" [paneDistance]=\"treeWidth\">\r\n  <sme-split-view-pane>\r\n    <div class=\"sme-layout-absolute-phone-up sme-position-inset-none sme-padding-inset-xs\">\r\n      <sme-tree-table #schemaTree [items]=\"schemaTreeData\" class=\"sme-layout-absolute-phone-up sme-position-inset-none\"\r\n        [showHeader]=\"false\" [showGrid]=\"false\" [showLeftMargin]=\"false\" [getItemIdentityFunction]=\"getItemIdentityFunction\"\r\n        [(selection)]=\"selectedSchemaTreeNode\">\r\n        <sme-tree-table-column field=\"label\" header=\"Name\" sortable=\"true\">\r\n          <ng-template let-data>\r\n            {{getSchemaTreeNodeDisplayText(data)}}\r\n          </ng-template>\r\n        </sme-tree-table-column>\r\n        <sme-tree-table-column field=\"label\" header=\"Name\" sortable=\"true\" width=\"100px\">\r\n          <ng-template let-data>\r\n            <div class='toolbar sme-position-right-inline'>\r\n              <div *ngIf=\"getPropertyTreeNodeType(data)=='root'\">\r\n                <button class=\"sme-button-trigger\" (click)=\"addProperty()\" title=\"Add a property\">\r\n                  <span class=\"sme-icon sme-icon-add\"></span>\r\n                </button>\r\n              </div>\r\n              <div *ngIf=\"getPropertyTreeNodeType(data)=='normal'\">\r\n                <button class=\"sme-button-trigger\" (click)=\"moveUp()\" title=\"Move a property up\">\r\n                  <span class=\"sme-icon sme-icon-up\"></span>\r\n                </button>\r\n                <button class=\"sme-button-trigger\" (click)=\"moveDown()\" title=\"Move a property down\">\r\n                  <span class=\"sme-icon sme-icon-down\"></span>\r\n                </button>\r\n                <button class=\"sme-button-trigger\" (click)=\"delete()\" title=\"Delete a property\">\r\n                  <span class=\"sme-icon sme-icon-cancel sme-color-red\"></span>\r\n                </button>\r\n              </div>\r\n              <div *ngIf=\"getPropertyTreeNodeType(data)=='object'\">\r\n                <button class=\"sme-button-trigger\" (click)=\"addProperty()\" title=\"Add a property\">\r\n                  <span class=\"sme-icon sme-icon-add\"></span>\r\n                </button>\r\n                <button class=\"sme-button-trigger\" (click)=\"moveUp()\" title=\"Move a property up\">\r\n                  <span class=\"sme-icon sme-icon-up\"></span>\r\n                </button>\r\n                <button class=\"sme-button-trigger\" (click)=\"moveDown()\" title=\"Move a property down\">\r\n                  <span class=\"sme-icon sme-icon-down\"></span>\r\n                </button>\r\n                <button class=\"sme-button-trigger\" (click)=\"delete()\" title=\"Delete a property\">\r\n                  <span class=\"sme-icon sme-icon-cancel sme-color-red\"></span>\r\n                </button>\r\n              </div>\r\n              <div *ngIf=\"getPropertyTreeNodeType(data)=='array'\">\r\n                <button class=\"sme-button-trigger\" (click)=\"moveUp()\" title=\"Move a property up\">\r\n                  <span class=\"sme-icon sme-icon-up\"></span>\r\n                </button>\r\n                <button class=\"sme-button-trigger\" (click)=\"moveDown()\" title=\"Move a property down\">\r\n                  <span class=\"sme-icon sme-icon-down\"></span>\r\n                </button>\r\n                <button class=\"sme-button-trigger\" (click)=\"delete()\" title=\"Delete a property\">\r\n                  <span class=\"sme-icon sme-icon-cancel sme-color-red\"></span>\r\n                </button>\r\n              </div>\r\n              <div *ngIf=\"getPropertyTreeNodeType(data)=='array-item'\">\r\n                <button class=\"sme-button-trigger\" (click)=\"addProperty()\" title=\"Add a property\">\r\n                  <span class=\"sme-icon sme-icon-add\"></span>\r\n                </button>\r\n              </div>\r\n            </div>\r\n          </ng-template>\r\n        </sme-tree-table-column>\r\n      </sme-tree-table>\r\n      <div *ngIf=\"shouldShowWelcomeTextForSchemaTree()\" class=\"sme-layout-absolute-phone-up sme-position-bottom-none sme-arrange-overflow-auto\">\r\n        <ul>\r\n          <li>{{strings.SchemaTree.Welcome.Row1}}</li>\r\n          <li>{{strings.SchemaTree.Welcome.Row2}}</li>\r\n          <li>{{strings.SchemaTree.Welcome.Row3}}</li>\r\n          <li>{{strings.SchemaTree.Welcome.Row4}}</li>\r\n          <li><strong>{{strings.SchemaTree.Welcome.Row5}}</strong></li>\r\n        </ul>\r\n      </div>\r\n    </div>\r\n  </sme-split-view-pane>\r\n  <sme-split-view-content>\r\n    <div class=\"sme-layout-absolute-phone-up sme-position-inset-none sme-padding-inset-xs sme-arrange-overflow-auto\">\r\n      <div *ngIf=\"selectedSchemaTreeNode && selectedSchemaTreeNode.data.schema\">\r\n        <h3 class=\"sme-margin-bottom-lg\">{{strings.PropertyForm.Header}}</h3>\r\n        <sme-schema-form-content #propertyForm [schema]=\"currentPropertyFormSchema\" [(data)]=\"selectedSchemaTreeNode.data.schema\"\r\n          [formController]=\"propertyFormController\"></sme-schema-form-content>\r\n        <i class=\"sme-layout-block sme-margin-top-xxl\">{{strings.PropertyForm.Footer}}</i>\r\n      </div>\r\n      <div *ngIf=\"!(selectedSchemaTreeNode && selectedSchemaTreeNode.data.schema)\">\r\n        <ul>\r\n          <li>\r\n            <strong>{{strings.PropertyForm.Welcome.Row1}}</strong>\r\n          </li>\r\n          <li *ngIf=\"schemaTreeData && schemaTreeData[0] &&schemaTreeData[0].children.length>0\">\r\n            <strong>{{strings.PropertyForm.Welcome.Row2}}</strong>\r\n          </li>\r\n          <li>{{strings.PropertyForm.Welcome.Row3}}</li>\r\n          <li>{{strings.PropertyForm.Welcome.Row4}}</li>\r\n          <li>{{strings.PropertyForm.Welcome.Row5}}</li>\r\n          <li>{{strings.PropertyForm.Welcome.Row6}}</li>\r\n          <li>{{strings.PropertyForm.Welcome.Row7}}</li>\r\n        </ul>\r\n      </div>\r\n    </div>\r\n  </sme-split-view-content>\r\n</sme-split-view>\r\n","import { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { TreeNodeDataItem } from '../../controls/data-table/data-table-contract';\r\nimport { TreeTableComponent } from '../../controls/data-table/data-table.component';\r\nimport { Strings } from '../../generated/strings';\r\nimport {\r\n    DataSchema, SchemaArrayProperty, SchemaFieldContext,\r\n    SchemaObjectProperty, SchemaPrimitiveType, SchemaProperty\r\n} from '../schema/schema-models';\r\nimport { DataTypeRegistration, SchemaDataTypeStore } from '../schema/schema-store';\r\nimport { SchemaUtilities } from '../schema/schema-utilities';\r\nimport { SchemaFormContentComponent } from './schema-form-content.component';\r\nimport { propertyFormSchema } from './schema-form-editor-schema-tree.constants';\r\nimport { SchemaFormEditorUtilities } from './schema-form-editor-utilities';\r\n\r\n@Component({\r\n    selector: 'sme-schema-form-editor-schema-tree',\r\n    styleUrls: ['./schema-form-editor-schema-tree.component.css'],\r\n    templateUrl: './schema-form-editor-schema-tree.component.html'\r\n})\r\nexport class SchemaFormEditorSchemaTreeComponent implements OnInit, OnDestroy {\r\n    public strings = MsftSme.getStrings<Strings>().MsftSmeShell.Angular.SchemaForm.Editor;\r\n\r\n    private timer;\r\n    private isInitialized = false;\r\n    private internalSchema: DataSchema;\r\n    private currentSelectedPropertyFullType: string;\r\n    private schemaDataTypeStore = new SchemaDataTypeStore();\r\n    private propertyFormSchema = <DataSchema>SchemaFormEditorUtilities.deepCopy(propertyFormSchema);\r\n    private availableDataTypes: { value: string, label: string }[];\r\n\r\n    @ViewChild('propertyForm')\r\n    private propertyForm: SchemaFormContentComponent;\r\n\r\n    @ViewChild('schemaTree')\r\n    private schemaTree: TreeTableComponent;\r\n\r\n    private internalSelectedSchemaTreeNode: TreeNodeDataItem;\r\n\r\n    /**\r\n     * The data bind to the schema tree.\r\n     * It describes the data schema in a tree visual style.\r\n     */\r\n    public schemaTreeData: TreeNodeDataItem[] = [];\r\n\r\n    /**\r\n     * The form schema used to render the form for the individual property.\r\n     * Some of its content (e.g. schema of \"options\" property) is constructed dynamically per each individual property.\r\n     */\r\n    public currentPropertyFormSchema: DataSchema;\r\n\r\n    public get isPropertyFormValid(): boolean {\r\n        return !this.propertyForm || this.propertyForm.isFormValid;\r\n    }\r\n\r\n    public treeWidth: number;\r\n\r\n    public propertyFormController = {\r\n        isRootNodeSelected: (): boolean => {\r\n            return this.selectedSchemaTreeNode.data.tag === 'root';\r\n        },\r\n        isNotObjectType: (context: SchemaFieldContext) => context.formData.dataType.type !== 'Object'\r\n    };\r\n\r\n    /**\r\n     * The schema from the form to be edited.\r\n     */\r\n    @Input()\r\n    public get schema(): DataSchema {\r\n        return this.internalSchema;\r\n    }\r\n    public set schema(value: DataSchema) {\r\n        this.internalSchema = value;\r\n        if (this.isInitialized) {\r\n            this.refreshSchemaTreeData();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The selected schema tree node.\r\n     * Every time when it's selected, the form schema for the property related tree node will be constructed dynamically\r\n     * and the property form will be rendered based on the form schema.\r\n     */\r\n    public get selectedSchemaTreeNode(): TreeNodeDataItem {\r\n        return this.internalSelectedSchemaTreeNode;\r\n    }\r\n    public set selectedSchemaTreeNode(value: TreeNodeDataItem) {\r\n        this.internalSelectedSchemaTreeNode = value;\r\n        if (this.selectedSchemaTreeNode && this.selectedSchemaTreeNode.data\r\n            && this.selectedSchemaTreeNode.data.schema) {\r\n            this.currentSelectedPropertyFullType =\r\n                SchemaUtilities.generateFullTypeStringByPropertySchema(this.selectedSchemaTreeNode.data.schema.toPropertySchemaModel());\r\n            this.currentPropertyFormSchema = this.getPropertyFormSchema();\r\n            this.selectedSchemaTreeNode.data.schema =\r\n                SchemaUtilities.setUpFormData(this.selectedSchemaTreeNode.data.schema, this.currentPropertyFormSchema);\r\n            this.selectedSchemaTreeNode.data.schema.dataType.isInitialized = false;\r\n            setTimeout(() => {\r\n                if (this.selectedSchemaTreeNode) {\r\n                    this.selectedSchemaTreeNode.data.schema.dataType.isInitialized = true;\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    constructor(private elementRef: ElementRef) {\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        // Collect the available data types for the form to be edited.\r\n        const allRegistrations = this.schemaDataTypeStore.getAllRegistrations();\r\n        this.availableDataTypes = [];\r\n        allRegistrations.forEach(registration => {\r\n            if (this.availableDataTypes.filter(item => item.value === SchemaPrimitiveType[registration.type]).length === 0) {\r\n                this.availableDataTypes.push({\r\n                    value: SchemaPrimitiveType[registration.type],\r\n                    label: 'actual_string:' + SchemaPrimitiveType[registration.type]\r\n                });\r\n            }\r\n        });\r\n\r\n        this.timer = setInterval(\r\n            () => {\r\n                this.handleSchemaFormChange();\r\n            },\r\n            1500);\r\n\r\n        // Construct the root node of the schema tree.\r\n        this.refreshSchemaTreeData();\r\n        this.isInitialized = true;\r\n\r\n        setTimeout(() => {\r\n            this.treeWidth = this.elementRef.nativeElement.querySelector('sme-split-view').offsetWidth * 0.5;\r\n        });\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        clearInterval(this.timer);\r\n    }\r\n\r\n    private getPropertyFormSchema(): DataSchema {\r\n        if (this.selectedSchemaTreeNode) {\r\n            // Get the schema from the selected tree node.\r\n            const schema = <PropertySchemaViewModel>this.selectedSchemaTreeNode.data.schema;\r\n\r\n            // Set the \"options\" property schema to default to json object editor.\r\n            const currentOptionsPropertySchema = <SchemaObjectProperty>SchemaUtilities.getPropertySchemaByName(\r\n                this.propertyFormSchema, 'options');\r\n            currentOptionsPropertySchema.format = 'json-text-editor';\r\n            currentOptionsPropertySchema.properties = [];\r\n\r\n            // If the specific data type registration has its own \"options\" schema, use it.\r\n            const type = SchemaPrimitiveType[schema.dataType.type];\r\n            const dataTypeRegistration = this.schemaDataTypeStore.getDataTypeRegistration(type, schema.dataType.format);\r\n            if (dataTypeRegistration && dataTypeRegistration.optionProperties) {\r\n                currentOptionsPropertySchema.format = 'default';\r\n                currentOptionsPropertySchema.properties = SchemaFormEditorUtilities.deepCopy(dataTypeRegistration.optionProperties);\r\n            }\r\n\r\n            this.propertyFormSchema.properties[this.propertyFormSchema.properties.indexOf(currentOptionsPropertySchema)] =\r\n                SchemaFormEditorUtilities.deepCopy(currentOptionsPropertySchema);\r\n\r\n            // Setup the schema data based on current property form schema.\r\n            // It helps construct some default values based on the schema if the current schema data misses some property values.\r\n            this.selectedSchemaTreeNode.data.schema = SchemaUtilities.setUpFormData(\r\n                this.selectedSchemaTreeNode.data.schema, this.propertyFormSchema);\r\n        }\r\n\r\n        // return SchemaFormEditorUtilities.deepCopy(this.propertyFormSchema);\r\n        return this.propertyFormSchema;\r\n    }\r\n\r\n    public getPropertyTreeNodeType(nodeData: SchemaTreeNodeData): string {\r\n        let result = 'normal';\r\n\r\n        if (nodeData.tag === 'root') {\r\n            result = 'root';\r\n        } else {\r\n            // \"array-item\" is a special tree node because it only appears under array data and cannot be deleted.\r\n            if (nodeData.tag === 'array-item') {\r\n                result = 'array-item';\r\n            } else if (nodeData.schema.dataType.type === SchemaPrimitiveType[SchemaPrimitiveType.Object]) {\r\n                result = 'object';\r\n            } else if (nodeData.schema.dataType.type === SchemaPrimitiveType[SchemaPrimitiveType.Array]) {\r\n                result = 'array';\r\n            }\r\n        }\r\n\r\n        return result;\r\n    }\r\n\r\n    public getItemIdentityFunction(data: SchemaTreeNodeData): string {\r\n        return data.schema && data.schema.name;\r\n    }\r\n\r\n    public getSchemaTreeNodeDisplayText(schemaTreeData: SchemaTreeNodeData): string {\r\n        let prefix = '';\r\n\r\n        if (schemaTreeData.schema) {\r\n            if (schemaTreeData.schema.dataType.type === SchemaPrimitiveType[SchemaPrimitiveType.Object]) {\r\n                prefix = '[Object]';\r\n            } else if (schemaTreeData.schema.dataType.type === SchemaPrimitiveType[SchemaPrimitiveType.Array]) {\r\n                prefix = '[Array]';\r\n            } else {\r\n                prefix = '';\r\n            }\r\n        }\r\n\r\n        let text = schemaTreeData.schema && schemaTreeData.schema.name;\r\n\r\n        if (!text) {\r\n            if (schemaTreeData.tag === 'root') {\r\n                prefix = '';\r\n                text = 'Schema';\r\n            } else if (schemaTreeData.tag === 'array-item') {\r\n                text = 'Array Item';\r\n            } else {\r\n                text = '<new property>';\r\n            }\r\n        }\r\n\r\n        if (prefix) {\r\n            prefix += ' ';\r\n        }\r\n        return prefix + text;\r\n    }\r\n\r\n    private handleSchemaFormChange(): void {\r\n        if (this.selectedSchemaTreeNode) {\r\n            const newSelectedProperty = <SchemaProperty>(this.selectedSchemaTreeNode && this.selectedSchemaTreeNode.data\r\n                && this.selectedSchemaTreeNode.data.schema && this.selectedSchemaTreeNode.data.schema.toPropertySchemaModel());\r\n\r\n            const newPropertyFullType = SchemaUtilities.generateFullTypeStringByPropertySchema(newSelectedProperty);\r\n            const selectedSchemaTreeNodeData = <SchemaTreeNodeData>this.selectedSchemaTreeNode.data;\r\n\r\n            // If the user changes the type or format for the current property, then we need to do something here.\r\n            if (this.currentSelectedPropertyFullType\r\n                && newPropertyFullType && newPropertyFullType !== this.currentSelectedPropertyFullType) {\r\n                if (this.currentSelectedPropertyFullType) {\r\n                    // Put all the child schema tree nodes of the current selected tree node in to \"previousChildren\"\r\n                    // Later if the user switch back from new full type to current full type, we will restore the previous\r\n                    // child schema tree nodes back.\r\n                    if (selectedSchemaTreeNodeData.previousChildren) {\r\n                        selectedSchemaTreeNodeData.previousChildren[this.currentSelectedPropertyFullType] = [];\r\n                        this.selectedSchemaTreeNode.children.forEach(item => {\r\n                            selectedSchemaTreeNodeData.previousChildren[this.currentSelectedPropertyFullType].push(item);\r\n                        });\r\n                    }\r\n\r\n                    if (selectedSchemaTreeNodeData.previousOptions) {\r\n                        selectedSchemaTreeNodeData.previousOptions[this.currentSelectedPropertyFullType] =\r\n                            selectedSchemaTreeNodeData.schema.options;\r\n                    }\r\n                }\r\n\r\n                // If the new type is object, we will automatically add some child schema tree nodes based on\r\n                // the \"predefinedObjectProperties\" defined in the data type registration.\r\n                // In some object type data type registration (not default format), the data type may requires some fixed property\r\n                // structure. For example a \"image\" object type (type:'object', format:'image) may have properties like \"url\",\r\n                // \"title\", \"width\", \"height\". Then those properties can be defined in \"predefinedObjectProperties\".\r\n                // When the user use 'object' type 'image' format, the editor will automatically add those properties\r\n                // as the child schema tree nodes.\r\n                if (newSelectedProperty.type === SchemaPrimitiveType.Object) {\r\n                    const predefinedObjectProperties =\r\n                        this.schemaDataTypeStore.getDataTypeRegistration(\r\n                            newSelectedProperty.type, newSelectedProperty.format\r\n                        ).predefinedObjectProperties;\r\n                    let predefinedPropertySchemaTreeNodes = null;\r\n                    if (predefinedObjectProperties) {\r\n                        predefinedPropertySchemaTreeNodes = [];\r\n                        predefinedObjectProperties.forEach(item => {\r\n                            predefinedPropertySchemaTreeNodes.push(this.generateSchemaTreeNodeInternal(item));\r\n                        });\r\n                    }\r\n\r\n                    this.selectedSchemaTreeNode.children =\r\n                        selectedSchemaTreeNodeData.previousChildren[SchemaUtilities.generateFullTypeString(\r\n                            newSelectedProperty.type, newSelectedProperty.format)]\r\n                        || predefinedPropertySchemaTreeNodes || [];\r\n                } else if (newSelectedProperty.type === SchemaPrimitiveType.Array) {\r\n                    this.selectedSchemaTreeNode.children =\r\n                        selectedSchemaTreeNodeData.previousChildren[SchemaUtilities.generateFullTypeString(\r\n                            newSelectedProperty.type, newSelectedProperty.format)] || [\r\n                            {\r\n                                data: {\r\n                                    schema: new PropertySchemaViewModel(\r\n                                        {\r\n                                            type: SchemaPrimitiveType.Object,\r\n                                            format: 'default',\r\n                                            name: '',\r\n                                            label: ''\r\n                                        },\r\n                                        this.availableDataTypes),\r\n                                    tag: 'array-item'\r\n                                },\r\n                                children: [],\r\n                                expanded: true\r\n                            }\r\n                        ];\r\n                } else {\r\n                    this.selectedSchemaTreeNode.children = [];\r\n                }\r\n\r\n                selectedSchemaTreeNodeData.schema.options = selectedSchemaTreeNodeData.previousOptions[newPropertyFullType];\r\n\r\n                this.currentPropertyFormSchema = this.getPropertyFormSchema();\r\n\r\n                const defaultData = SchemaUtilities.generateDataBasedOnSchema(this.currentPropertyFormSchema);\r\n                for (const property in defaultData) {\r\n                    if (defaultData.hasOwnProperty(property)) {\r\n                        if (!selectedSchemaTreeNodeData.schema[property]) {\r\n                            selectedSchemaTreeNodeData.schema[property] = SchemaFormEditorUtilities.deepCopy(defaultData[property]);\r\n                        }\r\n                    }\r\n                }\r\n\r\n                this.schemaTree.refreshData();\r\n            }\r\n\r\n            this.currentSelectedPropertyFullType = SchemaUtilities.generateFullTypeStringByPropertySchema(newSelectedProperty);\r\n        }\r\n    }\r\n\r\n    private refreshSchemaTreeData(): void {\r\n        const rootPropertySchemaViewModel = new PropertySchemaViewModel(this.schema, this.availableDataTypes, true);\r\n        const root: TreeNodeDataItem = {\r\n            data: <SchemaTreeNodeData>{\r\n                schema: rootPropertySchemaViewModel,\r\n                previousChildren: {},\r\n                previousOptions: {},\r\n                tag: 'root'\r\n            },\r\n            children: [],\r\n            expanded: true\r\n        };\r\n\r\n        if (!root.data.schema.dataType.type) {\r\n            root.data.schema.dataType.type = 'Object';\r\n        }\r\n        if (!root.data.schema.dataType.format) {\r\n            root.data.schema.dataType.format = 'basic-form';\r\n        }\r\n        const formats = [];\r\n        const allRegistrations = this.schemaDataTypeStore.getAllRegistrations();\r\n        allRegistrations.forEach(registration => {\r\n            if (registration.tags && registration.tags.indexOf('form-container') !== -1) {\r\n                formats.push({ value: registration.format, label: 'actual_string:' + registration.format });\r\n            }\r\n        });\r\n        rootPropertySchemaViewModel.dataType.formats = formats;\r\n\r\n        if (this.schema.properties) {\r\n            this.schema.properties.forEach(property => {\r\n                const schema = this.generateSchemaTreeNodeInternal(property);\r\n                root.children.push(schema);\r\n            });\r\n        }\r\n\r\n        this.schemaTreeData = [root];\r\n\r\n        if (this.schemaTree) {\r\n            setTimeout(() => {\r\n                this.schemaTree.refreshData();\r\n            });\r\n        }\r\n    }\r\n\r\n    private generateSchemaTreeNodeInternal(property: SchemaProperty): TreeNodeDataItem {\r\n        let schemaChild: TreeNodeDataItem = null;\r\n        if (property.type === SchemaPrimitiveType.Object) {\r\n            schemaChild = {\r\n                data: <SchemaTreeNodeData>{\r\n                    schema: new PropertySchemaViewModel(property, this.availableDataTypes),\r\n                    previousChildren: {},\r\n                    previousOptions: {}\r\n                },\r\n                children: [],\r\n                expanded: true\r\n            };\r\n            const objectProperty = <SchemaObjectProperty>property;\r\n            objectProperty.properties.forEach(subProperty => {\r\n                const result = this.generateSchemaTreeNodeInternal(subProperty);\r\n                schemaChild.children.push(result);\r\n            });\r\n        } else if (property.type === SchemaPrimitiveType.Array) {\r\n            schemaChild = {\r\n                data: <SchemaTreeNodeData>{\r\n                    schema: new PropertySchemaViewModel(property, this.availableDataTypes),\r\n                    previousChildren: {},\r\n                    previousOptions: {}\r\n                },\r\n                children: [],\r\n                expanded: true\r\n            };\r\n            const arrayProperty = <SchemaArrayProperty>property;\r\n            const result = this.generateSchemaTreeNodeInternal(arrayProperty.item);\r\n            result.data.tag = 'array-item';\r\n            schemaChild.children.push(result);\r\n        } else {\r\n            schemaChild = {\r\n                data: <SchemaTreeNodeData>{\r\n                    schema: new PropertySchemaViewModel(property, this.availableDataTypes),\r\n                    previousChildren: {},\r\n                    previousOptions: {}\r\n                },\r\n                children: [],\r\n                expanded: true\r\n            };\r\n        }\r\n\r\n        return schemaChild;\r\n    }\r\n\r\n    public generateSchema(): DataSchema {\r\n        const schema = <DataSchema>this.generatePropertyInternal(this.schemaTreeData[0]);\r\n        return schema;\r\n    }\r\n\r\n    public addProperty(): void {\r\n        setTimeout(() => {\r\n            let child: any = {\r\n                data: <SchemaTreeNodeData>{\r\n                    schema: new PropertySchemaViewModel(\r\n                        {\r\n                            type: SchemaPrimitiveType.String,\r\n                            format: 'textbox',\r\n                            name: '',\r\n                            label: ''\r\n                        },\r\n                        this.availableDataTypes),\r\n                    previousChildren: {},\r\n                    previousOptions: {}\r\n                },\r\n                children: [],\r\n                expanded: true\r\n            };\r\n\r\n            if (this.getPropertyTreeNodeType(this.selectedSchemaTreeNode.data) === 'array') {\r\n                const arrayChildren = [\r\n                    {\r\n                        schema: new PropertySchemaViewModel(\r\n                            {\r\n                                type: SchemaPrimitiveType.Object,\r\n                                format: 'textbox',\r\n                                name: '',\r\n                                label: ''\r\n                            },\r\n                            this.availableDataTypes),\r\n                        tag: 'array-item'\r\n                    }];\r\n\r\n                child = {\r\n                    data: <SchemaTreeNodeData>{\r\n                        schema: new PropertySchemaViewModel(\r\n                            {\r\n                                type: SchemaPrimitiveType.String,\r\n                                format: 'textbox',\r\n                                name: '',\r\n                                label: ''\r\n                            },\r\n                            this.availableDataTypes)\r\n                    },\r\n                    children: arrayChildren,\r\n                    expanded: true\r\n                };\r\n            }\r\n\r\n            this.selectedSchemaTreeNode.children.push(child);\r\n            this.schemaTree.refreshData();\r\n        });\r\n    }\r\n\r\n    public moveUp(): void {\r\n        setTimeout(() => {\r\n            const parentNode = this.selectedSchemaTreeNode.parent;\r\n            const index = parentNode.children.indexOf(this.selectedSchemaTreeNode);\r\n            if (index > 0) {\r\n                const temp = { ...parentNode.children[index] };\r\n                parentNode.children[index] = { ...parentNode.children[index - 1] };\r\n                parentNode.children[index - 1] = temp;\r\n\r\n                this.selectedSchemaTreeNode = null;\r\n                this.selectedSchemaTreeNode = parentNode.children[index - 1];\r\n\r\n                this.schemaTree.refreshData();\r\n            }\r\n        });\r\n    }\r\n\r\n    public moveDown(): void {\r\n        setTimeout(() => {\r\n            const parentNode = this.selectedSchemaTreeNode.parent;\r\n            const index = parentNode.children.indexOf(this.selectedSchemaTreeNode);\r\n            if (index < parentNode.children.length - 1) {\r\n                const temp = { ...parentNode.children[index] };\r\n                parentNode.children[index] = { ...parentNode.children[index + 1] };\r\n                parentNode.children[index + 1] = temp;\r\n\r\n                this.selectedSchemaTreeNode = null;\r\n                this.selectedSchemaTreeNode = parentNode.children[index + 1];\r\n\r\n                this.schemaTree.refreshData();\r\n            }\r\n        });\r\n    }\r\n\r\n    public delete(): void {\r\n        setTimeout(() => {\r\n            const parentNode = this.selectedSchemaTreeNode.parent;\r\n            const index = parentNode.children.indexOf(this.selectedSchemaTreeNode);\r\n            parentNode.children.splice(index, 1);\r\n            this.selectedSchemaTreeNode = null;\r\n            this.schemaTree.clearSelection();\r\n            this.schemaTree.refreshData();\r\n        });\r\n    }\r\n\r\n    public shouldShowWelcomeTextForSchemaTree(): boolean {\r\n        return !(this.schemaTreeData && this.schemaTreeData[0] && this.schemaTreeData[0].children.length > 0);\r\n    }\r\n\r\n    private generatePropertyInternal(schemaTreeNode: any): SchemaProperty {\r\n        let property: SchemaProperty;\r\n\r\n        const schemaTreeNodeData: SchemaTreeNodeData = schemaTreeNode.data;\r\n        const propertySchemaModel = schemaTreeNodeData.schema.toPropertySchemaModel();\r\n        if (schemaTreeNodeData.schema\r\n            && schemaTreeNodeData.schema.dataType.type === SchemaPrimitiveType[SchemaPrimitiveType.Object]) {\r\n            let objectProperty: SchemaObjectProperty;\r\n            if (schemaTreeNodeData.tag === 'root') {\r\n                objectProperty = {\r\n                    properties: []\r\n                };\r\n                if (propertySchemaModel.format !== 'default') {\r\n                    objectProperty.format = propertySchemaModel.format;\r\n                }\r\n                objectProperty.options = propertySchemaModel.options;\r\n                objectProperty.label = propertySchemaModel.label;\r\n            } else {\r\n                objectProperty = {\r\n                    ...propertySchemaModel,\r\n                    properties: []\r\n                };\r\n            }\r\n\r\n            schemaTreeNode.children.forEach(child => {\r\n                objectProperty.properties.push(this.generatePropertyInternal(child));\r\n            });\r\n\r\n            property = objectProperty;\r\n        } else if (this.getPropertyTreeNodeType(schemaTreeNodeData) === 'array') {\r\n            const arrayProperty: SchemaArrayProperty = {\r\n                ...schemaTreeNode.data.schema.toPropertySchemaModel(),\r\n                item: this.generatePropertyInternal(schemaTreeNode.children[0])\r\n            };\r\n            property = arrayProperty;\r\n        } else {\r\n            property = { ...propertySchemaModel };\r\n        }\r\n\r\n        return property;\r\n    }\r\n}\r\n\r\nexport interface SchemaTreeNodeData {\r\n    schema?: PropertySchemaViewModel;\r\n    tag?: string;\r\n    previousChildren?: { [fullType: string]: TreeNodeDataItem[] };\r\n    previousOptions?: any;\r\n}\r\n\r\nexport class PropertySchemaDataTypePropertiesViewModel {\r\n    private dataTypeStore: SchemaDataTypeStore = new SchemaDataTypeStore();\r\n    private isInitialized = false;\r\n    private internalType: string;\r\n\r\n    public isRoot = false;\r\n    public types: { value: string, label: string }[];\r\n    public formats: { value: string, label: string }[];\r\n\r\n    public get type(): string {\r\n        return this.internalType;\r\n    }\r\n    public set type(value: string) {\r\n        this.internalType = value;\r\n\r\n        this.formats = [];\r\n        const allRegistrations = this.dataTypeStore.getAllRegistrations();\r\n\r\n        let dataOnlyRegistration: DataTypeRegistration;\r\n\r\n        allRegistrations.forEach(registration => {\r\n            if (!(registration.tags && registration.tags.indexOf('form-editor') !== -1)\r\n                && SchemaPrimitiveType[value] === registration.type\r\n                && (\r\n                    (!this.isRoot && !(registration.tags && registration.tags.indexOf('form-container') !== -1))\r\n                    || (this.isRoot && registration.tags && registration.tags.indexOf('form-container') !== -1)\r\n                )) {\r\n                if (registration.format === '*data-only') {\r\n                    dataOnlyRegistration = registration;\r\n                } else {\r\n                    if (registration.isDefaultFormat) {\r\n                        this.formats.splice(0, 0, {\r\n                            value: registration.format, label: 'actual_string:' + registration.format + ' (default)'\r\n                        });\r\n                    } else {\r\n                        this.formats.push({ value: registration.format, label: 'actual_string:' + registration.format });\r\n                    }\r\n                }\r\n            }\r\n        });\r\n        if (dataOnlyRegistration) {\r\n            this.formats.push({ value: dataOnlyRegistration.format, label: 'actual_string:' + dataOnlyRegistration.format });\r\n        }\r\n\r\n        if (this.isInitialized) {\r\n            const defaultFormat = this.formats.filter(item => item.value === 'default')[0];\r\n            this.format = defaultFormat ? defaultFormat.value : this.formats[0].value;\r\n        }\r\n    }\r\n\r\n    private internalFormat: string;\r\n    public format: string;\r\n\r\n    constructor(types: { value: string, label: string }[]) {\r\n        this.types = types;\r\n    }\r\n}\r\n\r\nexport class PropertySchemaAdvancePropertiesViewModel {\r\n    public required: boolean;\r\n    public defaultValue: string;\r\n    public description: string;\r\n    public hideCondition: string;\r\n    public disabledCondition: string;\r\n    public readonlyCondition: string;\r\n    public customValidation: string;\r\n    public customAsyncValidation: {\r\n        handler: string,\r\n        pendingMessage: string,\r\n        debounceTime: number\r\n    };\r\n    public emptyByDefault: boolean;\r\n}\r\n\r\nexport class PropertySchemaViewModel {\r\n    public dataType: PropertySchemaDataTypePropertiesViewModel;\r\n    public name: string;\r\n    public label: string;\r\n    public advanceProperties: PropertySchemaAdvancePropertiesViewModel;\r\n    public options: any;\r\n    public properties: SchemaProperty[];\r\n    public item: SchemaProperty;\r\n\r\n    constructor(propertySchemaModel: SchemaProperty, avaiableTypes: { value: string, label: string }[], isRoot?: boolean) {\r\n        this.dataType = new PropertySchemaDataTypePropertiesViewModel(avaiableTypes);\r\n        this.dataType.isRoot = isRoot;\r\n\r\n        this.advanceProperties = new PropertySchemaAdvancePropertiesViewModel();\r\n\r\n        this.dataType.type = SchemaPrimitiveType[propertySchemaModel.type];\r\n        this.dataType.format = propertySchemaModel.format;\r\n        this.name = propertySchemaModel.name;\r\n        this.label = propertySchemaModel.label;\r\n        this.advanceProperties.required = propertySchemaModel.required;\r\n        this.advanceProperties.defaultValue = propertySchemaModel.defaultValue;\r\n        this.advanceProperties.description = propertySchemaModel.description;\r\n        this.advanceProperties.hideCondition = propertySchemaModel.hideCondition;\r\n        this.advanceProperties.disabledCondition = propertySchemaModel.disabledCondition;\r\n        this.advanceProperties.customValidation = propertySchemaModel.customValidation;\r\n        this.advanceProperties.customAsyncValidation = SchemaUtilities.deepCopy(propertySchemaModel.customAsyncValidation);\r\n        this.advanceProperties.readonlyCondition = propertySchemaModel.readonlyCondition;\r\n\r\n        if (propertySchemaModel.type === SchemaPrimitiveType.Object) {\r\n            this.advanceProperties.emptyByDefault = (<SchemaObjectProperty>propertySchemaModel).emptyByDefault;\r\n        }\r\n\r\n        this.options = propertySchemaModel.options;\r\n\r\n        if (SchemaPrimitiveType[this.dataType.type] === SchemaPrimitiveType.Object) {\r\n            this.properties = (<SchemaObjectProperty>propertySchemaModel).properties;\r\n        } else if (SchemaPrimitiveType[this.dataType.type] === SchemaPrimitiveType.Array) {\r\n            this.item = (<SchemaArrayProperty>propertySchemaModel).item;\r\n        }\r\n    }\r\n\r\n    public toPropertySchemaModel(): SchemaProperty {\r\n        const result: any = {\r\n            type: SchemaPrimitiveType[this.dataType.type],\r\n            format: this.dataType.format,\r\n            name: this.name,\r\n            label: this.label,\r\n            required: this.advanceProperties.required,\r\n            defaultValue: this.advanceProperties.defaultValue,\r\n            description: this.advanceProperties.description,\r\n            hideCondition: this.advanceProperties.hideCondition,\r\n            disabledCondition: this.advanceProperties.disabledCondition,\r\n            customValidation: this.advanceProperties.customValidation,\r\n            customAsyncValidation: SchemaUtilities.deepCopy(this.advanceProperties.customAsyncValidation),\r\n            readonlyCondition: this.advanceProperties.readonlyCondition,\r\n            options: this.options\r\n        };\r\n\r\n        if (SchemaPrimitiveType[this.dataType.type] === SchemaPrimitiveType.Object) {\r\n            result.properties = this.properties;\r\n            result.emptyByDefault = this.advanceProperties.emptyByDefault;\r\n        } else if (SchemaPrimitiveType[this.dataType.type] === SchemaPrimitiveType.Array) {\r\n            result.item = this.item;\r\n        }\r\n\r\n        return result;\r\n    }\r\n}\r\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'sme-schema-form-editor-data',\r\n    templateUrl: './schema-form-editor-data.component.html'\r\n})\r\nexport class SchemaFormEditorDataComponent implements OnInit, OnDestroy {\r\n    private timer;\r\n    private formDataJsonSyncMode = 'FormDataToJson';\r\n\r\n    public dataText: string;\r\n\r\n    @Input()\r\n    public data: FormData;\r\n\r\n    @Output()\r\n    public dataChange: EventEmitter<FormData> = new EventEmitter<FormData>();\r\n\r\n    public ngOnInit(): void {\r\n        this.startSyncFormDataToJson();\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        clearInterval(this.timer);\r\n    }\r\n\r\n    public onDataTextBoxFocused(): void {\r\n        this.sync();\r\n        this.formDataJsonSyncMode = 'JsonToFormData';\r\n    }\r\n\r\n    public onDataTextBoxBlurred(): void {\r\n        this.sync();\r\n        this.formDataJsonSyncMode = 'FormDataToJson';\r\n    }\r\n\r\n    private startSyncFormDataToJson(): void {\r\n        this.timer = setInterval(\r\n            () => {\r\n                this.sync();\r\n            },\r\n            1500);\r\n    }\r\n\r\n    private sync(): void {\r\n        if (this.formDataJsonSyncMode === 'FormDataToJson') {\r\n            this.dataText = JSON.stringify(this.data, null, 4);\r\n        } else {\r\n            try {\r\n                const parsedData = JSON.parse(this.dataText);\r\n                // Only copy the properties from the JSON text parsed object to the actual data object.\r\n                // Then all the existing functions in the actual data object won't be erased.\r\n                for (const key in parsedData) {\r\n                    if (parsedData.hasOwnProperty(key)) {\r\n                        this.data[key] = parsedData[key];\r\n                    }\r\n                }\r\n                this.dataChange.emit(this.data);\r\n            } catch (e) {\r\n                // eslint-disable-next-line no-console\r\n                console.warn('JSON parse error.');\r\n            }\r\n        }\r\n    }\r\n}\r\n","<textarea class=\"sme-layout-absolute-phone-up sme-position-inset-none\" style=\"max-width:none\" [(ngModel)]=\"dataText\" (focus)=\"onDataTextBoxFocused()\"\r\n    (blur)=\"onDataTextBoxBlurred()\"></textarea>\r\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\r\nimport { Strings } from '../../generated/strings';\r\nimport { DataSchema, SchemaArrayProperty, SchemaObjectProperty, SchemaPrimitiveType, SchemaProperty } from '../schema/schema-models';\r\nimport { SchemaFormEditorUtilities } from './schema-form-editor-utilities';\r\n\r\n@Component({\r\n    selector: 'sme-schema-form-editor-form-view-model',\r\n    styleUrls: ['./schema-form-editor.component.css'],\r\n    templateUrl: './schema-form-editor-form-view-model.component.html'\r\n})\r\nexport class SchemaFormEditorFormViewModelComponent {\r\n    public strings = MsftSme.getStrings<Strings>().MsftSmeShell.Angular.SchemaForm.Editor.ViewModel;\r\n\r\n    @ViewChild('viewModelDiv')\r\n    private viewModelDivElement: ElementRef;\r\n\r\n    @Input()\r\n    public schema: DataSchema;\r\n\r\n    public convertEditingSchemaObjectToTypeScriptSchema(): void {\r\n        let result = '{<br/>';\r\n\r\n        let isFirstProperty = true;\r\n        this.schema.properties.forEach(property => {\r\n            if (!isFirstProperty) {\r\n                result += ',<br/>';\r\n            }\r\n            isFirstProperty = false;\r\n\r\n            result += this.convertEditingSchemaPropertyToTypeScriptSchema(property, 1);\r\n        });\r\n\r\n        result += '<br/>}';\r\n\r\n        const viewModelDivElement = <HTMLDivElement>this.viewModelDivElement.nativeElement;\r\n        viewModelDivElement.innerHTML = result;\r\n    }\r\n\r\n    private convertEditingSchemaPropertyToTypeScriptSchema(property: SchemaProperty, level: number): string {\r\n        let result = '';\r\n\r\n        if (property.name) {\r\n            result += SchemaFormEditorUtilities.getIndentText(level);\r\n            result += '<span class=\"property\">' + property.name + '</span>: ';\r\n        }\r\n\r\n        if (property.type === SchemaPrimitiveType.Array) {\r\n            const arrayProperty = <SchemaArrayProperty>property;\r\n            result += this.convertEditingSchemaPropertyToTypeScriptSchema(arrayProperty.item, level + 1);\r\n            result += '[]';\r\n        } else if (property.type === SchemaPrimitiveType.Object) {\r\n            const objectProperty = <SchemaObjectProperty>property;\r\n            result += '{<br/>';\r\n            let isFirstProperty = true;\r\n            objectProperty.properties.forEach(subProperty => {\r\n                if (!isFirstProperty) {\r\n                    result += ',<br/>';\r\n                }\r\n                isFirstProperty = false;\r\n                result += this.convertEditingSchemaPropertyToTypeScriptSchema(subProperty, level + 1);\r\n            });\r\n            result += '<br/>' + SchemaFormEditorUtilities.getIndentText(level + 1) + '}';\r\n        } else {\r\n            let type = SchemaPrimitiveType[property.type].toLowerCase();\r\n            if (property.type === SchemaPrimitiveType.File) {\r\n                type = 'Blob';\r\n            }\r\n            result += '<span class=\"property-type\">' + type + '</span>';\r\n        }\r\n\r\n        return result;\r\n    }\r\n}\r\n","<div class=\"sme-layout-absolute-phone-up sme-position-inset-none sme-arrange-stack-v\">\r\n    <div class=\"sme-position-flex-none\">\r\n        <button (click)=\"convertEditingSchemaObjectToTypeScriptSchema()\">{{strings.GenerateButton.Text}}</button>\r\n        <br/>\r\n        <i>{{strings.Message}}</i>\r\n    </div>\r\n    <div class=\"sme-position-flex-auto sme-layout-relative\">\r\n        <div #viewModelDiv contenteditable=\"true\" class=\"syntax-editor sme-layout-absolute-phone-up sme-position-inset-none\" style=\"max-width:none;background:white;overflow:auto;font-size:80%\"></div>\r\n    </div>\r\n</div>\r\n","<sme-dialog #dialog dialogMode=\"fullscreen\" sme-lint-disable>\r\n  <sme-dialog-header>\r\n    <h3 id=\"sme-dialog-title\">{{ strings.Title }}</h3>\r\n  </sme-dialog-header>\r\n  <sme-dialog-content>\r\n    <sme-loading-wheel *ngIf=\"showLoading\"></sme-loading-wheel>\r\n    <sme-split-view orientation=\"left\" [isExpanded]=\"true\" [paneDistance]=\"previewFormWidth\" *ngIf=\"dialog.visible\">\r\n      <sme-split-view-pane>\r\n        <div *ngIf=\"!shouldShowWelcomeText()\" class=\"sme-layout-absolute-phone-up sme-position-inset-none sme-arrange-stack-v sme-padding-horizontal-xs sme-margin-left-sm\">\r\n          <div class=\"sme-position-flex-none sme-padding-vertical-xs sme-arrange-stack-h sme-padding-right-lg\">\r\n            <div class=\"sme-position-flex-auto\">{{strings.PreviewForm.Title}}</div>\r\n            <div class=\"sme-position-flex-none\">{{strings.PreviewForm.ValidationResult.Title}}<span class=\"sme-schema-form-editor-preview-form-validation-result\">{{getPreviewFormValidationResult()}}</span></div>\r\n          </div>\r\n          <div class=\"sme-position-flex-auto sme-layout-relative\">\r\n            <div class=\"sme-layout-absolute-phone-up sme-position-inset-none sme-arrange-overflow-auto\">\r\n              <sme-schema-form-content #previewForm class=\"previewForm\" [schema]=\"schema\" [data]=\"data\" [formController]=\"formController\"\r\n                                       [isEditorMode]=\"true\"></sme-schema-form-content>\r\n              <div *ngIf=\"shouldShowEmptySchemaText()\">\r\n                <i>{{strings.PreviewForm.EmptySchemaMessage}}</i>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div *ngIf=\"shouldShowWelcomeText()\" class=\"sme-layout-absolute-phone-up sme-position-inset-none sme-arrange-stack-v sme-padding-horizontal-xs sme-margin-left-sm sme-arrange-overflow-auto\">\r\n          <h3>{{strings.Welcome.Title}}</h3>\r\n          <ul>\r\n            <li>{{strings.Welcome.Row1}}</li>\r\n            <li>{{strings.Welcome.Row2}}</li>\r\n            <li>{{strings.Welcome.Row3}}</li>\r\n            <li>{{strings.Welcome.Row4}}</li>\r\n            <li>{{strings.Welcome.Row5}}</li>\r\n            <li><strong>{{strings.Welcome.Row6}}</strong></li>\r\n            <li><strong>{{strings.Welcome.Row7}}</strong></li>\r\n            <li><strong>{{strings.Welcome.Row8}}</strong></li>\r\n            <li>{{strings.Welcome.Row9}}</li>\r\n            <li>{{strings.Welcome.Row10}}</li>\r\n            <li>{{strings.Welcome.Row11}}</li>\r\n          </ul>\r\n        </div>\r\n      </sme-split-view-pane>\r\n      <sme-split-view-content>\r\n        <sme-pivot [selection]=\"ex1Tab1\" [switchTabByShowHide]=\"true\" class=\"sme-layout-absolute-phone-up sme-position-inset-none sme-position-stretch-v sme-padding-horizontal-xs sme-margin-right-sm\">\r\n          <sme-pivot-tab #ex1Tab1 label=\"Schema\">\r\n            <ng-template>\r\n              <div class=\"sme-layout-absolute-phone-up sme-position-inset-none sme-arrange-stack-v\">\r\n                <div class=\"sme-position-flex-auto sme-layout-relative\">\r\n                  <sme-schema-form-editor-schema-tree #schemaTree [schema]=\"editingSchema\" [hidden]=\"schemaView!='visual'\"></sme-schema-form-editor-schema-tree>\r\n                  <sme-schema-form-editor-schema-text #schemaText [schema]=\"editingSchema\" [hidden]=\"schemaView!='code'\"></sme-schema-form-editor-schema-text>\r\n                </div>\r\n                <div class=\"sme-position-flex-none sme-arrange-stack-h\">\r\n                  <div class=\"sme-position-flex-align-center sme-padding-inset-xs\">\r\n                    <span>{{strings.SchemaView.Title}}</span>\r\n                  </div>\r\n                  <div class=\"sme-position-flex-align-center sme-padding-inset-xs\">\r\n                    <select [(ngModel)]=\"schemaView\" class='sme-schema-form-editor-schema-view-dropdown'>\r\n                      <option value=\"visual\">{{strings.SchemaView.Visual}}</option>\r\n                      <option value=\"code\">{{strings.SchemaView.Code}}</option>\r\n                    </select>\r\n                  </div>\r\n                  <div class=\"sme-position-flex-align-center sme-padding-inset-xs\">\r\n                    <button (click)=\"applySchema()\" [disabled]=\"!shouldEnableApplySchemaButton()\">{{strings.ApplySchemaButton.Text}}</button>\r\n                  </div>\r\n                  <div class=\"sme-padding-inset-xs sme-arrange-stack-h sme-position-flex-auto sme-arrange-overflow-hide-x\">\r\n                    <span class=\"sme-position-flex-align-center sme-arrange-overflow-hide-x sme-arrange-ws-nowrap sme-arrange-ellipsis sme-margin-right-sm\">{{strings.SwitchToCodeViewMessage}}</span>\r\n                    <button class=\"sme-position-flex-none sme-margin-left-sm\" (click)=\"goToCodeView()\">{{strings.GoToCodeViewButton.Text}}</button>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </ng-template>\r\n          </sme-pivot-tab>\r\n          <sme-pivot-tab label=\"Data\">\r\n            <ng-template>\r\n              <div class=\"sme-layout-absolute-phone-up sme-position-inset-none sme-arrange-stack-v\">\r\n                <div class=\"sme-position-flex-auto sme-layout-relative\">\r\n                  <sme-schema-form-editor-data [(data)]=\"data\"></sme-schema-form-editor-data>\r\n                </div>\r\n              </div>\r\n            </ng-template>\r\n          </sme-pivot-tab>\r\n          <sme-pivot-tab label=\"Form View Model Contract\">\r\n            <ng-template>\r\n              <sme-schema-form-editor-form-view-model [schema]=\"editingSchema\"></sme-schema-form-editor-form-view-model>\r\n            </ng-template>\r\n          </sme-pivot-tab>\r\n        </sme-pivot>\r\n      </sme-split-view-content>\r\n    </sme-split-view>\r\n  </sme-dialog-content>\r\n  <sme-dialog-footer>\r\n    <div class=\"sme-layout-float-right\">\r\n      <button type=\"button\" (click)=\"onClose()\">{{ strings.CloseButton.Text }}</button>\r\n    </div>\r\n  </sme-dialog-footer>\r\n</sme-dialog>\r\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { BaseDialogComponent, DialogOptions, DialogResult } from '../../controls/dialog/base-dialog.component';\r\nimport { DialogService } from '../../controls/dialog/dialog.service';\r\nimport { Strings } from '../../generated/strings';\r\nimport { DataSchema, FormData } from '../schema/schema-models';\r\nimport { SchemaUtilities } from '../schema/schema-utilities';\r\nimport { SchemaFormContentComponent } from './schema-form-content.component';\r\nimport { SchemaFormEditorSchemaTextComponent } from './schema-form-editor-schema-text.component';\r\nimport { SchemaFormEditorSchemaTreeComponent } from './schema-form-editor-schema-tree.component';\r\nimport { SchemaFormEditorUtilities } from './schema-form-editor-utilities';\r\n\r\n/**\r\n * The confirmation dialog result.\r\n */\r\nexport interface EditorResult extends DialogResult {\r\n    /**\r\n     * Was the dialog submit button clicked?\r\n     */\r\n    confirmed: boolean;\r\n}\r\n\r\n@Component({\r\n    selector: 'sme-schema-form-editor',\r\n    styleUrls: ['./schema-form-editor.component.css'],\r\n    templateUrl: './schema-form-editor.component.html'\r\n})\r\nexport class SchemaFormEditorComponent extends BaseDialogComponent<DialogOptions, EditorResult> {\r\n    public strings = MsftSme.getStrings<Strings>().MsftSmeShell.Angular.SchemaForm.Editor;\r\n\r\n    private isInitialized = false;\r\n    private internalSchemaView = 'visual';\r\n    private internalData: FormData;\r\n    private applySchemaButtonHasBeenClicked = false;\r\n\r\n    @ViewChild('previewForm')\r\n    private previewFormComponent: SchemaFormContentComponent;\r\n\r\n    @ViewChild('schemaTree')\r\n    private schemaTreeComponent: SchemaFormEditorSchemaTreeComponent;\r\n\r\n    @ViewChild('schemaText')\r\n    private schemaTextComponent: SchemaFormEditorSchemaTextComponent;\r\n\r\n    public showLoading = true;\r\n    public editingSchema: DataSchema;\r\n    public previewFormWidth = 570;\r\n\r\n    public isOpen = false;\r\n\r\n    public get schemaView(): string {\r\n        return this.internalSchemaView;\r\n    }\r\n    public set schemaView(value: string) {\r\n        this.internalSchemaView = value;\r\n\r\n        if (this.isInitialized) {\r\n            if (value === 'code') {\r\n                this.editingSchema = this.schemaTreeComponent.generateSchema();\r\n            } else {\r\n                this.editingSchema = this.schemaTextComponent.generateSchema();\r\n            }\r\n        }\r\n    }\r\n\r\n    @Input()\r\n    public schema: DataSchema;\r\n\r\n    @Output()\r\n    public schemaChange: EventEmitter<DataSchema> = new EventEmitter<DataSchema>();\r\n\r\n    @Input()\r\n    public get data(): FormData {\r\n        return this.internalData;\r\n    }\r\n    public set data(value: FormData) {\r\n        this.internalData = value;\r\n        this.dataChange.emit(value);\r\n    }\r\n\r\n    @Output()\r\n    public dataChange: EventEmitter<FormData> = new EventEmitter<FormData>();\r\n\r\n    @Input()\r\n    public formController: any;\r\n\r\n    constructor(dialogService: DialogService, private elementRef: ElementRef) {\r\n        super(dialogService);\r\n\r\n        this.id = 'schema-form-editor' + MsftSme.getUniqueId();\r\n    }\r\n\r\n    /**\r\n     * Shows the dialog.\r\n     *\r\n     * @param options The options for the dialog.\r\n     * @return The dialog result subject.\r\n     */\r\n    public show(options: DialogOptions): Subject<EditorResult> {\r\n        if (!options) {\r\n            throw new Error('ConfirmationDialogComponent.show: Options are required to show the dialog.');\r\n        }\r\n\r\n        if (!this.schema) {\r\n            this.schema = {\r\n                properties: []\r\n            };\r\n        }\r\n\r\n        if (!this.data) {\r\n            this.data = {};\r\n        }\r\n\r\n        const result = super.show(options);\r\n        this.editingSchema = SchemaFormEditorUtilities.deepCopy(this.schema);\r\n\r\n        this.internalSchemaView = 'visual';\r\n        this.isInitialized = true;\r\n        this.showLoading = true;\r\n        this.isOpen = true;\r\n\r\n        setTimeout(() => {\r\n            const splitViewElement = this.elementRef.nativeElement.querySelector('sme-dialog-content sme-split-view');\r\n            if (splitViewElement) {\r\n                this.previewFormWidth =\r\n                    splitViewElement.offsetWidth / 3 + 20;\r\n            }\r\n            setTimeout(() => {\r\n                this.showLoading = false;\r\n            });\r\n        });\r\n\r\n        return result;\r\n    }\r\n\r\n    /**\r\n     * The method to call when the close button is clicked.\r\n     */\r\n    public onClose(): void {\r\n        this.isOpen = false;\r\n        this.hide();\r\n    }\r\n\r\n    public applySchema(): void {\r\n        if (this.schemaView === 'code') {\r\n            this.editingSchema = SchemaFormEditorUtilities.deepCopy(this.schemaTextComponent.generateSchema());\r\n        } else {\r\n            this.editingSchema = SchemaFormEditorUtilities.deepCopy(this.schemaTreeComponent.generateSchema());\r\n        }\r\n\r\n        this.schema = SchemaFormEditorUtilities.deepCopy(this.editingSchema);\r\n        this.data = SchemaUtilities.setUpFormData(this.data, this.schema);\r\n        this.dataChange.emit(this.data);\r\n        this.schemaChange.emit(this.schema);\r\n\r\n        this.applySchemaButtonHasBeenClicked = true;\r\n    }\r\n\r\n    public shouldEnableApplySchemaButton(): boolean {\r\n        return this.schemaView === 'code' || (this.schemaTreeComponent && this.schemaTreeComponent.isPropertyFormValid);\r\n    }\r\n\r\n    public getPreviewFormValidationResult(): string {\r\n        return (this.previewFormComponent && this.previewFormComponent.isFormValid)\r\n            ? this.strings.PreviewForm.ValidationResult.Passed : this.strings.PreviewForm.ValidationResult.Failed;\r\n    }\r\n\r\n    public goToCodeView(): void {\r\n        this.schemaView = 'code';\r\n    }\r\n\r\n    public shouldShowWelcomeText(): boolean {\r\n        return !this.applySchemaButtonHasBeenClicked\r\n            && !(this.schema && this.schema.properties && this.schema.properties.length > 0)\r\n            && !this.schema.options;\r\n    }\r\n\r\n    public shouldShowEmptySchemaText(): boolean {\r\n        return this.applySchemaButtonHasBeenClicked && this.schema && this.schema.properties\r\n            && this.schema.properties.length === 0 && !this.schema.options;\r\n    }\r\n}\r\n","<sme-schema-form-content #formContent *ngIf=\"schema\" [schema]=\"schema\" [(data)]=\"data\" [isEditorMode]=\"!!(editor&&editor.isOpen)\" [formController]=\"formController\" (formActionExecuted)=\"onFormActionExecuted($event.action, $event.data)\"></sme-schema-form-content>\r\n<div *ngIf=\"!schema || ((schema.properties && schema.properties.length===0)&&!schema.options)\" class=\"sme-padding-inset-sm sme-border-inset-sm sme-border-color-white-90\">\r\n    <p>{{strings.NoSchemaMessage.Row1}}</p>\r\n    <p>{{strings.NoSchemaMessage.Row2}}</p>\r\n    <p>{{strings.NoSchemaMessage.Row3}}</p>\r\n</div>\r\n<div class=\"editor sme-layout-relative sme-position-right-inline sme-padding-right-xl sme-layout-float-right\" *ngIf=\"isDevMode\">\r\n  <button class=\"sme-button-trigger sme-button-auto-width sme-button-align-left sme-icon sme-icon-edit sme-icon sme-icon-edit\" (click)=\"showEditor()\">{{strings.EditButton.Text}}</button>\r\n</div>\r\n<sme-schema-form-editor *ngIf=\"isDevMode\" #editor [(schema)]=\"schema\" [(data)]=\"data\" [formController]=\"formController\"></sme-schema-form-editor>","import {\r\n    Component, EventEmitter, Input, isDevMode, OnInit, Output, QueryList, ViewChild, ViewChildren\r\n} from '@angular/core';\r\nimport { take } from 'rxjs/operators';\r\nimport { DialogOptions, DialogResult } from '../../controls/dialog/base-dialog.component';\r\nimport { DialogService } from '../../controls/dialog/dialog.service';\r\nimport { Strings } from '../../generated/strings';\r\nimport { SchemaFieldLoaderComponentBase } from '../schema/schema-field-host.component';\r\nimport { DataSchema, FormData } from '../schema/schema-models';\r\nimport { SchemaUtilities } from '../schema/schema-utilities';\r\nimport { SchemaFormContentComponent } from './schema-form-content.component';\r\nimport { SchemaFormEditorComponent } from './schema-form-editor.component';\r\n\r\n/**\r\n * Schema Form Component\r\n * It takes the schema and data and other necessary inputs then dynamically renders the form UI.\r\n */\r\n@Component({\r\n    selector: 'sme-form[schema], sme-schema-form',\r\n    templateUrl: './schema-form.component.html'\r\n})\r\nexport class SchemaFormComponent implements OnInit {\r\n    public strings = MsftSme.getStrings<Strings>().MsftSmeShell.Angular.SchemaForm;\r\n\r\n    private internalSchema: DataSchema;\r\n    private internalData: FormData;\r\n\r\n    @ViewChild('editor')\r\n    public editor: SchemaFormEditorComponent;\r\n\r\n    @ViewChildren('formContent')\r\n    private formContentQueryList: QueryList<SchemaFormContentComponent>;\r\n\r\n    /**\r\n     * It gets and sets the schema.\r\n     */\r\n    @Input()\r\n    public get schema(): DataSchema {\r\n        return this.internalSchema;\r\n    }\r\n    public set schema(value: DataSchema) {\r\n        this.internalSchema = value;\r\n    }\r\n\r\n    /**\r\n     * It gets and sets the form data.\r\n     */\r\n    @Input()\r\n    public get data(): FormData {\r\n        return this.internalData;\r\n    }\r\n    public set data(value: FormData) {\r\n        this.internalData = value;\r\n        this.dataChange.emit(value);\r\n    }\r\n\r\n    @Output()\r\n    public dataChange: EventEmitter<FormData> = new EventEmitter<FormData>();\r\n\r\n    @Output()\r\n    public formActionExecuted: EventEmitter<{ action: string, data: any }> = new EventEmitter<{ action: string, data: any }>();\r\n\r\n    /**\r\n     * The host context which is used to provide some behaviors from the host of the form.\r\n     * Custom validation methods will be provided by it.\r\n     */\r\n    @Input()\r\n    public formController: any;\r\n\r\n    public get isFormValid(): boolean {\r\n        return this.getFormContentComponent() && this.getFormContentComponent().isFormValid;\r\n    }\r\n\r\n    public get isFormDirty(): boolean {\r\n        return this.getFormContentComponent() && this.getFormContentComponent().isFormDirty;\r\n    }\r\n\r\n    public get isFormReadyToSubmit(): boolean {\r\n        return this.isFormValid && this.isFormDirty;\r\n    }\r\n\r\n    /**\r\n     * It indicates whether the form is rendered as dev mode.\r\n     */\r\n    public isDevMode: boolean;\r\n\r\n    constructor(private dialogService: DialogService) {\r\n    }\r\n\r\n    /**\r\n     * Angular life cycle hooks.\r\n     */\r\n    public ngOnInit(): void {\r\n        if (isDevMode()) {\r\n            this.isDevMode = true;\r\n        }\r\n\r\n        if (!this.data) {\r\n            this.data = SchemaUtilities.generateDataBasedOnSchema(this.schema);\r\n        }\r\n    }\r\n\r\n    public showEditor(): void {\r\n        this.dialogService.show<DialogOptions, DialogResult>(this.editor.id, {})\r\n            .pipe(take(1))\r\n            .subscribe();\r\n    }\r\n\r\n    public markAsPristine(): void {\r\n        this.getFormContainerLoaderComponent().markAsPristine();\r\n    }\r\n\r\n    public onFormActionExecuted(action: string, data: any): void {\r\n        this.formActionExecuted.emit({ action: action, data: data });\r\n    }\r\n    public getFormContainer(): SchemaFieldLoaderComponentBase {\r\n        return this.getFormContentComponent().getFormContainerLoaderComponent();\r\n    }\r\n    public getFormContentComponent(): SchemaFormContentComponent {\r\n        return this.formContentQueryList && this.formContentQueryList.first;\r\n    }\r\n\r\n    public getFormContainerLoaderComponent(): SchemaFieldLoaderComponentBase {\r\n        return this.getFormContentComponent().fieldHostComponent.getFormFieldLoaderComponent();\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ResizerModule } from '../resizer/resizer.module';\r\nimport { SplitViewComponent, SplitViewContentComponent, SplitViewPaneComponent } from './split-view.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        SplitViewComponent,\r\n        SplitViewContentComponent,\r\n        SplitViewPaneComponent\r\n    ],\r\n    exports: [\r\n        SplitViewComponent,\r\n        SplitViewContentComponent,\r\n        SplitViewPaneComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        ResizerModule\r\n    ]\r\n})\r\nexport class SplitViewModule { }\r\n","<label class=\"sme-arrange-stack-h\" aria-hidden=\"true\">\r\n    <span class=\"sme-position-flex-auto\">{{label}}</span>\r\n    <span class=\"sme-position-flex-none sme-margin-left-xs\" *ngIf=\"required\">{{strings.MsftSmeShell.Angular.Common.Form.Validation.required}}</span>\r\n    <span class=\"sme-position-flex-none sme-icon sme-icon-info sme-margin-left-xs\" *ngIf=\"details\" [title]=\"details\"> </span>\r\n</label>\r\n<div class=\"sme-resource-string-picker\">\r\n    <sme-dropdown #dropDown [autoToggle]=\"false\" class=\"sme-combobox sme-focus-zone\" [disabled]=\"disabled\">\r\n        <div #dropdownHeader role=\"combobox\" class=\"sme-combobox-header sme-dropdown-toggle\"\r\n            [attr.aria-owns]=\"idBag.dropDownContent\" [attr.aria-expanded]=\"dropDown.isOpen\">\r\n            <input #textInput type=\"text\" [(ngModel)]=\"displayValue\" [attr.aria-controls]=\"idBag.dropDownContent\" [attr.aria-label]=\"label\"\r\n                [attr.disabled]=\"disabled ? true : null\" [attr.aria-describedby]=\"idBag.detailsSpan\" [attr.aria-autocomplete]=\"'none'\"\r\n                spellcheck=\"false\" autocapitalize=\"off\" autocomplete=\"off\" (focus)=\"onTextBoxFocused()\" (blur)=\"onTextBoxBlurred()\"\r\n                [title]=\"getTextBoxTooltip()\" (input)=\"onTextChange($event)\"/>\r\n            <button type=\"button\" [attr.disabled]=\"disabled ? true : null\" tabindex=\"-1\" role=\"presentation\" aria-hidden=\"true\" [attr.aria-pressed]=\"dropDown.isOpen\"\r\n                [class.sme-toggled]=\"dropDown.isOpen\" class=\"sme-button-trigger sme-button-auto-width\" (click)=\"openDropdown($event)\">\r\n                <span class=\"sme-icon sme-icon-chevronDown\"></span>\r\n            </button>\r\n        </div>\r\n        <div class=\"sme-dropdown-content sme-theme-light sme-border-inset-sm sme-border-color-white-80\" [id]=\"idBag.dropDownContent\">\r\n            <div class=\"sme-resource-string-picker-tree sme-layout-relative\">\r\n                <sme-tree-table #tree *ngIf=\"dropDown.isOpen\" [items]=\"treeData\" class=\"sme-layout-absolute-phone-up sme-position-inset-none\" [showLeftMargin]=\"false\"\r\n                    [(selection)]=\"treeSelection\" [defaultSortColumn]=\"defaultSortColumn\" [defaultSortMode]=\"1\">\r\n                    <sme-tree-table-column #defaultSortColumn field=\"key\" header=\"Key\" sortable=\"true\" width=\"60%\" [getTooltipHandler]=\"getKeyColumnTooltip\">\r\n                    </sme-tree-table-column>\r\n                    <sme-tree-table-column field=\"value\" header=\"Value\" sortable=\"true\" [getTooltipHandler]=\"getValueColumnTooltip\">\r\n                    </sme-tree-table-column>\r\n                </sme-tree-table>\r\n            </div>\r\n        </div>\r\n    </sme-dropdown>\r\n</div>\r\n<span class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan\">{{details}}</span>\r\n<sme-validation-alert [alert]=\"alert\"></sme-validation-alert>\r\n","import { Component, Injector, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';\r\nimport { FormControl, ValidationErrors } from '@angular/forms';\r\nimport { Strings } from '../../generated/strings';\r\nimport { TreeNodeDataItem } from '../data-table/data-table-contract';\r\nimport { TreeTableComponent } from '../data-table/data-table.component';\r\nimport { DropdownComponent } from '../dropdown/dropdown.component';\r\nimport { SmeInternalFormFieldComponent } from '../form/form-field/form-field.component';\r\nimport { ValidationAlertSeverity } from '../form/validation-alert/validation-alert';\r\nimport { SmeSchemaProperty } from '../schema/schema-decorator';\r\nimport { SchemaFieldLoaderComponentBase, SimplePropertySchemaFieldLoaderComponent } from '../schema/schema-field-host.component';\r\nimport { SchemaPrimitiveType } from '../schema/schema-models';\r\n\r\n/* eslint-disable max-len */\r\n@Component({\r\n    template: `\r\n    <sme-form-field #field type=\"resource-string-picker\" [(ngModel)]=\"data\" [name]=\"propertySchema.name\"\r\n        [label]=\"localize(propertySchema.label)\"\r\n        (customValidate)=\"resolveFunction(propertySchema.customValidation)($event)\"\r\n        [readonly]=\"!!evalExpression(propertySchema.readonlyCondition)\"\r\n        [disabled]=\"!!(propertySchema.disabledCondition && evalExpression(propertySchema.disabledCondition))\"\r\n        [required]=\"propertySchema.required\" [description]=\"localize(propertySchema.description)\"\r\n        (customAsyncValidate)=\"propertySchema.customAsyncValidation && resolveFunction(propertySchema.customAsyncValidation.handler)($event)\"\r\n        [pendingMessage]=\"propertySchema.customAsyncValidation && localize(propertySchema.customAsyncValidation.pendingMessage)\"\r\n        [customAsyncValidateDisabled]=\"shouldCustomAsyncValidationBeDisabled()\"\r\n        [customAsyncValidateDebounceTime]=\"propertySchema.customAsyncValidation && +propertySchema.customAsyncValidation.handler\"\r\n        ></sme-form-field>\r\n    `\r\n})\r\n/* eslint-enable max-len */\r\nexport class ResourceStringPickerLoaderComponent extends SimplePropertySchemaFieldLoaderComponent {\r\n}\r\n\r\n/**\r\n * Accessible json field implementation\r\n */\r\n@SmeSchemaProperty({\r\n    type: SchemaPrimitiveType.String,\r\n    format: 'resource-string-picker',\r\n    description: 'A form editor field control used to pick up resource string',\r\n    loaderComponent: ResourceStringPickerLoaderComponent,\r\n    tags: ['form-editor']\r\n})\r\n@Component({\r\n    selector: 'sme-form-field[type=\"resource-string-picker\"]',\r\n    styleUrls: ['./resource-string-picker.component.css'],\r\n    templateUrl: './resource-string-picker.component.html'\r\n})\r\nexport class ResourceStringPickerComponent extends SmeInternalFormFieldComponent<string> implements OnInit {\r\n    private static resourceCache: { [key: string]: string } = {};\r\n\r\n    public resourceStrings = MsftSme.getStrings<Strings>().MsftSmeShell.Angular.SchemaForm.Editor.ResourceStringPicker;\r\n\r\n    private internalDisplayValue: string;\r\n    private isTreeJustOpen = true;\r\n    private textBoxHasFocus = false;\r\n\r\n    private pathToNavigateWhichMissedDueToTreeWasBusy = '';\r\n    private internalTreeSelection: TreeNodeDataItem;\r\n\r\n    public get treeSelection(): TreeNodeDataItem {\r\n        return this.internalTreeSelection;\r\n    }\r\n    public set treeSelection(treeNodeDataItem: TreeNodeDataItem) {\r\n        this.internalTreeSelection = treeNodeDataItem;\r\n\r\n        if (!this.isTreeJustOpen && treeNodeDataItem && !this.textBoxHasFocus) {\r\n            this.displayValue = treeNodeDataItem.data.path;\r\n        }\r\n    }\r\n\r\n    @ViewChild('dropDown')\r\n    private dropDownComponent: DropdownComponent;\r\n\r\n    @ViewChildren('tree')\r\n    private treeTableComponents: QueryList<TreeTableComponent>;\r\n\r\n    public treeData: TreeNodeDataItem[] = [];\r\n\r\n    public get displayValue(): string {\r\n        return this.internalDisplayValue;\r\n    }\r\n    public set displayValue(value: string) {\r\n        this.internalDisplayValue = value;\r\n        if (this.ngIsInitialized) {\r\n            if (value) {\r\n                if (value.indexOf('!') === 0) {\r\n                    this.value = SchemaFieldLoaderComponentBase.resourceActualTextPrefix + value.substring(1);\r\n                } else {\r\n                    this.value = SchemaFieldLoaderComponentBase.resourceKeyPrefix + value;\r\n                }\r\n            } else {\r\n                this.value = '';\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'ResouceStringPickerComponent';\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the JsonFormFieldComponent\r\n     */\r\n    constructor(\r\n        injector: Injector\r\n    ) {\r\n        super(injector);\r\n    }\r\n\r\n    public onTextBoxFocused(): void {\r\n        this.textBoxHasFocus = true;\r\n    }\r\n\r\n    public onTextBoxBlurred(): void {\r\n        this.textBoxHasFocus = false;\r\n    }\r\n\r\n    public onTextChange(text: any): void {\r\n        this.navigateToTree(text.target.value);\r\n    }\r\n\r\n    protected onValueChanged(value: string) {\r\n        if (value) {\r\n            if (value.indexOf(SchemaFieldLoaderComponentBase.resourceKeyPrefix) === 0) {\r\n                this.internalDisplayValue = value.substring(SchemaFieldLoaderComponentBase.resourceKeyPrefix.length);\r\n            } else if (value.indexOf(SchemaFieldLoaderComponentBase.resourceActualTextPrefix) === 0) {\r\n                let actualText = value.substring(SchemaFieldLoaderComponentBase.resourceActualTextPrefix.length);\r\n                if (actualText[0] !== '!') {\r\n                    actualText = '!' + actualText;\r\n                }\r\n                this.internalDisplayValue = actualText;\r\n            } else {\r\n                this.internalDisplayValue = 'Error:' + value;\r\n            }\r\n        } else {\r\n            this.internalDisplayValue = '';\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: ''\r\n        };\r\n    }\r\n\r\n    public ngOnInit(): void {\r\n        super.ngOnInit();\r\n        this.loadResourceStringData(this.strings, this.treeData, '');\r\n        this.isTreeJustOpen = true;\r\n    }\r\n\r\n    public getTextBoxTooltip(): string {\r\n        if (this.displayValue) {\r\n            if (this.displayValue[0] === '!') {\r\n                return this.resourceStrings.ActualTextPrefix + this.displayValue;\r\n            } else {\r\n                const localizedText = this.getActualTextByResourceStringKey(this.displayValue);\r\n                return this.displayValue + ': ' + (localizedText || '[' + this.resourceStrings.InvalidResourceKey + ']');\r\n            }\r\n        }\r\n\r\n        return '[' + this.resourceStrings.NoResourceKeyMessage + ']';\r\n    }\r\n\r\n    public getKeyColumnTooltip(data: any): string {\r\n        return data.key;\r\n    }\r\n\r\n    public getValueColumnTooltip(data: any): string {\r\n        return data.value || '';\r\n    }\r\n\r\n    public openDropdown(event: any): void {\r\n        this.dropDownComponent.onToggleClick(event, true);\r\n        this.isTreeJustOpen = true;\r\n        setTimeout(() => {\r\n            this.navigateToTree(this.displayValue);\r\n            this.isTreeJustOpen = false;\r\n        });\r\n    }\r\n\r\n    public navigateToTree(path: string): void {\r\n        const treeTableComponent = this.treeTableComponents.toArray()[0];\r\n        if (treeTableComponent) {\r\n            if (!(treeTableComponent.nodeNavigatingTask && treeTableComponent.nodeNavigatingTask.isRunning)) {\r\n                treeTableComponent.navigateByPath(\r\n                    path.split('.'),\r\n                    node => node.data.key, () => {\r\n                        if (this.pathToNavigateWhichMissedDueToTreeWasBusy) {\r\n                            const newPath = this.pathToNavigateWhichMissedDueToTreeWasBusy;\r\n                            this.pathToNavigateWhichMissedDueToTreeWasBusy = '';\r\n                            this.navigateToTree(newPath);\r\n                        }\r\n                    },\r\n                    null,\r\n                    0,\r\n                    true,\r\n                    true);\r\n            } else {\r\n                this.pathToNavigateWhichMissedDueToTreeWasBusy = path;\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Performs validation that is internal to this control\r\n     * @param c The form control attached to this instance\r\n     */\r\n    protected validate(c: FormControl): ValidationErrors {\r\n        if (this.value) {\r\n            if (this.value.indexOf(SchemaFieldLoaderComponentBase.resourceKeyPrefix) === 0) {\r\n                const resourceKey = this.value.replace(SchemaFieldLoaderComponentBase.resourceKeyPrefix, '');\r\n                if (resourceKey && !this.getActualTextByResourceStringKey(resourceKey)) {\r\n                    return {\r\n                        cannotFindResourceKey: {\r\n                            valid: false,\r\n                            message: this.resourceStrings.CannotFindResourceKey.format(resourceKey),\r\n                            severity: ValidationAlertSeverity.Error\r\n                        }\r\n                    };\r\n                }\r\n            } else if (this.value.indexOf(SchemaFieldLoaderComponentBase.resourceActualTextPrefix) !== 0) {\r\n                return {\r\n                    notANumber: {\r\n                        valid: false,\r\n                        message: this.resourceStrings.WrongFormatActualText,\r\n                        severity: ValidationAlertSeverity.Error\r\n                    }\r\n                };\r\n            }\r\n        }\r\n\r\n        return super.validate(c);\r\n    }\r\n\r\n    private loadResourceStringData(resourceStringObject: any, nodeList: TreeNodeDataItem[], path: string): void {\r\n        for (const key in resourceStringObject) {\r\n            if (resourceStringObject.hasOwnProperty(key)) {\r\n                const node: TreeNodeDataItem = {\r\n                    data: {\r\n                        key: key,\r\n                        path: path + key\r\n                    }\r\n                };\r\n\r\n                if (typeof resourceStringObject[key] === 'object') {\r\n                    node.children = [];\r\n                    this.loadResourceStringData(resourceStringObject[key], node.children, node.data.path + '.');\r\n                } else {\r\n                    node.data.value = resourceStringObject[key];\r\n                    ResourceStringPickerComponent.resourceCache[node.data.path] = node.data.value;\r\n                }\r\n\r\n                nodeList.push(node);\r\n            }\r\n        }\r\n    }\r\n\r\n    private getActualTextByResourceStringKey(key: string): string {\r\n        let result = '';\r\n\r\n        if (key) {\r\n            result = ResourceStringPickerComponent.resourceCache[key];\r\n        }\r\n\r\n        return result;\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SmeTemplateOutletModule } from '../../directives/template-outlet/template-outlet.module';\r\nimport { DataTableModule } from '../data-table/data-table.module';\r\nimport { DialogModule } from '../dialog/dialog.module';\r\nimport { DropdownModule } from '../dropdown/dropdown.module';\r\nimport { SmeFormsModule } from '../form/forms.module';\r\nimport { LoadingWheelModule } from '../loading-wheel/loading-wheel.module';\r\nimport { PivotModule } from '../pivot/pivot.module';\r\nimport { SchemaFieldHostModule } from '../schema/schema-field-host.module';\r\nimport { SplitViewModule } from '../split-view/split-view.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { ResourceStringPickerComponent, ResourceStringPickerLoaderComponent } from './resource-string-picker.component';\r\nimport { SchemaFormContentComponent } from './schema-form-content.component';\r\nimport { SchemaFormEditorDataComponent } from './schema-form-editor-data.component';\r\nimport { SchemaFormEditorFormViewModelComponent } from './schema-form-editor-form-view-model.component';\r\nimport { SchemaFormEditorSchemaTextComponent } from './schema-form-editor-schema-text.component';\r\nimport { SchemaFormEditorSchemaTreeComponent } from './schema-form-editor-schema-tree.component';\r\nimport { SchemaFormEditorComponent } from './schema-form-editor.component';\r\nimport { SchemaFormComponent } from './schema-form.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        SchemaFormComponent,\r\n        SchemaFormContentComponent,\r\n        SchemaFormEditorComponent,\r\n        SchemaFormEditorDataComponent,\r\n        SchemaFormEditorFormViewModelComponent,\r\n        SchemaFormEditorSchemaTreeComponent,\r\n        SchemaFormEditorSchemaTextComponent,\r\n        ResourceStringPickerComponent,\r\n        ResourceStringPickerLoaderComponent\r\n    ],\r\n    exports: [\r\n        SchemaFormComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        DropdownModule,\r\n        FormsModule,\r\n        ReactiveFormsModule,\r\n        SmeTemplateOutletModule,\r\n        SmeFormsModule,\r\n        DataTableModule,\r\n        LoadingWheelModule,\r\n        DialogModule,\r\n        PivotModule,\r\n        SplitViewModule,\r\n        SchemaFieldHostModule,\r\n        TooltipModule\r\n    ]\r\n})\r\nexport class SchemaFormModule {\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RpcOverlayOpenSubject, RpcOverlayOpenSubjectServer } from '@microsoft/windows-admin-center-sdk/core/rpc/overlay/rpc-overlay-open-subject-server';\r\nimport { RpcService } from './rpc.service';\r\n\r\n@Injectable()\r\n/**\r\n * The Rpc shell service class.\r\n */\r\nexport class RpcShellService {\r\n    private overlayOpenSubjectServer: RpcOverlayOpenSubjectServer;\r\n\r\n    /**\r\n     * Initializes a new instance of the RpcShellService class.\r\n     *\r\n     * @param rpcService the gateway service.\r\n     */\r\n    constructor(private rpcService: RpcService) {\r\n        this.overlayOpenSubjectServer = new RpcOverlayOpenSubjectServer(rpcService);\r\n    }\r\n\r\n    public get overlayOpenSubject(): RpcOverlayOpenSubject {\r\n        return this.overlayOpenSubjectServer.subject;\r\n    }\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Observable, Subject, Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nexport interface UpdateFormValueData {\r\n    formGroupToUpdate: FormGroup;\r\n    formGroupNewData: any;\r\n}\r\n\r\nexport interface FormAddedData {\r\n    formGroup: FormGroup;\r\n    updateValueInComponent: boolean;\r\n}\r\n\r\n@Injectable()\r\nexport class SettingsFormService implements OnDestroy {\r\n\r\n    public allForms: FormGroup[] = [];\r\n\r\n    private formAddedSubject: Subject<FormAddedData> = new Subject<FormAddedData>();\r\n    private formRemovedSubject: Subject<FormGroup> = new Subject<FormGroup>();\r\n    private updateFormValueData: Subject<UpdateFormValueData> = new Subject<UpdateFormValueData>();\r\n\r\n    private routerSubscription: Subscription;\r\n    private backRoute: string;\r\n    private nextBackRoute: string;\r\n    private freezeBackRoute: boolean;\r\n\r\n    constructor(private router: Router) {\r\n        this.routerSubscription = this.router.events\r\n            .pipe(\r\n                filter(event => event instanceof NavigationEnd))\r\n            .subscribe(event => {\r\n                if (this.freezeBackRoute) {\r\n                    this.nextBackRoute = this.router.url;\r\n                } else {\r\n                    this.backRoute = this.router.url;\r\n                }\r\n            });\r\n    }\r\n\r\n    public addForm(form: FormGroup, updateDataInComponent: boolean) {\r\n        if (form) {\r\n            this.formAddedSubject.next({\r\n                formGroup: form,\r\n                updateValueInComponent: updateDataInComponent\r\n            });\r\n\r\n            if (this.allForms.indexOf(form) < 0) {\r\n                this.allForms.push(form);\r\n            }\r\n        }\r\n    }\r\n\r\n    public removeForm(form: FormGroup) {\r\n        if (form) {\r\n            this.formRemovedSubject.next(form);\r\n            MsftSme.remove(this.allForms, form);\r\n        }\r\n    }\r\n\r\n    public newFormValue(form: FormGroup, newValue: any): void {\r\n        this.updateFormValueData.next({\r\n            formGroupToUpdate: form,\r\n            formGroupNewData: newValue\r\n        });\r\n    }\r\n\r\n    public formAdded(): Observable<FormAddedData> {\r\n        return this.formAddedSubject.asObservable();\r\n    }\r\n\r\n    public formRemoved(): Observable<FormGroup> {\r\n        return this.formRemovedSubject.asObservable();\r\n    }\r\n\r\n    public updateFormValue(): Observable<UpdateFormValueData> {\r\n        return this.updateFormValueData.asObservable();\r\n    }\r\n\r\n    public stopProcessingEvents() {\r\n        this.freezeBackRoute = true;\r\n    }\r\n\r\n    public startProcessingEvents() {\r\n        this.freezeBackRoute = false;\r\n        this.backRoute = this.nextBackRoute;\r\n    }\r\n\r\n    public getBackRoute(fallBackRoute: string = '/') {\r\n        if (this.backRoute) {\r\n            return this.backRoute;\r\n        }\r\n\r\n        return fallBackRoute;\r\n    }\r\n\r\n    public ngOnDestroy() {\r\n        this.routerSubscription?.unsubscribe();\r\n    }\r\n}\r\n","<div class=\"sme-arrange-stack-v sme-layout-relative sme-arrange-overflow-auto-y-phone-up sme-position-stretch\">\r\n  <div class=\"sme-layout-tool-header sme-position-flex-none sme-arrange-ellipsis sme-padding-bottom-none sme-padding-left-md\" *ngIf=\"settingsTitle\">\r\n    <h2 [title]=\"fullSettingsTitle\" [attr.aria-label]=\"fullSettingsTitle\" class=\"sme-font-h3 sme-arrange-ellipsis sme-position-stretch-h\">\r\n      {{ settingsTitle }}\r\n      <span *ngIf=\"selectedSettingsTitle\" class=\"sme-padding-horizontal-sm sme-font-family-normal\">{{ headerSeparator }}</span>\r\n      <span *ngIf=\"selectedSettingsTitle\" class=\"sme-font-family-normal\">{{ selectedSettingsTitle }}</span>\r\n    </h2>\r\n  </div>\r\n  <sme-layout #layout class=\"sme-position-flex-auto sme-arrange-overflow-auto\" [padLastItem]=\"false\" [layoutConfig]=\"currentLayoutConfig\" [itemHorizontalSpace]=\"36\">\r\n    <sme-layout-definition name=\"narrow\" [until]=\"768\" [columns]=\"1\"></sme-layout-definition>\r\n    <sme-layout-definition name=\"wide\" [columns]=\"5\"></sme-layout-definition>\r\n    <sme-layout-item [columnSpan]=\"1\" [ngClass]=\"layout.currentLayoutDefinitionName==='narrow' ? '' : 'sme-position-stretch-v'\">\r\n      <ng-content select=\"sme-settings-navigation\"></ng-content>\r\n    </sme-layout-item>\r\n    <sme-layout-item [columnSpan]=\"4\" class=\"sme-position-stretch sme-padding-left-xl sme-padding-top-xs\">\r\n      <ng-content select=\"sme-settings-header\"></ng-content>\r\n      <ng-content select=\"sme-settings-content\"></ng-content>\r\n      <ng-content select=\"sme-settings-footer\"></ng-content>\r\n    </sme-layout-item>\r\n  </sme-layout>\r\n</div>\r\n","import { AfterViewChecked, Component, Injector, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ActivatedRouteSnapshot, NavigationExtras, RouterStateSnapshot } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { DialogService } from '../dialog/dialog.service';\r\nimport { LayoutConfig, LayoutConfigGenerator } from '../layout/layout-config';\r\nimport { CanComponentDeactivate } from './settings-can-deactivate-guard.service';\r\nimport { SettingsFormService } from './settings-form.service';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Settings @id sme-settings}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/settings-overview.md}\r\n *\r\n * @example {@label Basic Multi-Form Usage @id basic-multi}\r\n * @file {@filename component.html @filepath ./examples/multi-form-example/component.html}\r\n * @file {@filename component.ts @filepath ./examples/multi-form-example/component.ts}\r\n * @file {@filename panel1.ts @filepath ./examples/multi-form-example/panel1.ts}\r\n * @file {@filename panel1.html @filepath ./examples/multi-form-example/panel1.html}\r\n * @file {@filename panel2.ts @filepath ./examples/multi-form-example/panel2.ts}\r\n * @file {@filename panel2.html @filepath ./examples/multi-form-example/panel2.html}\r\n * @file {@filename component-routing.module @filepath ./examples/multi-form-example/routing.module.ts}\r\n *\r\n * @example {@label Basic Single-Form Usage @id basic-single}\r\n * @file {@filename component.html @filepath ./examples/single-form-example/component.html}\r\n * @file {@filename component.ts @filepath ./examples/single-form-example/component.ts}\r\n * @file {@filename panel.ts @filepath ./examples/single-form-example/panel.ts}\r\n * @file {@filename panel.html @filepath ./examples/single-form-example/panel.html}\r\n * @file {@filename component-routing.module @filepath ./examples/single-form-example/routing.module.ts}\r\n *\r\n */\r\n\r\n /**\r\n  * Defines base settings component, implements core functionality + settings form.\r\n  */\r\n@Component({\r\n    selector: 'sme-settings',\r\n    templateUrl: './settings.component.html'\r\n})\r\nexport class SettingsComponent extends CoreBaseComponent implements OnInit, OnDestroy, AfterViewChecked {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'SettingsComponent';\r\n    }\r\n\r\n    public allForms: FormGroup[] = [];\r\n\r\n    /**\r\n     * @deprecated since 05/23/22. Please remove this parameter from passing in to this control.\r\n     */\r\n    @Input()\r\n    public addPadding: boolean;\r\n\r\n    /**\r\n     * Separator used in sticky header on top of Settings page\r\n     */\r\n    public readonly headerSeparator = '|';\r\n\r\n    /**\r\n     * @deprecated Add your own custom back button in the form\r\n     */\r\n    @Input()\r\n    public backRoute: { commands: any[], extras?: NavigationExtras };\r\n\r\n    @Input()\r\n    public settingsTitle: string;\r\n\r\n    /**\r\n     * Store the currently selected settings title\r\n     */\r\n    @Input()\r\n    public selectedSettingsTitle: string;\r\n\r\n    /**\r\n     * Store the concatenation of settingsTitle, headerSeparator & selectedSettingsTitle\r\n     * Used for tool tip when hover over header\r\n     */\r\n    public fullSettingsTitle: string;\r\n\r\n    public settingsForms: SettingsFormService;\r\n\r\n    public dialogService: DialogService;\r\n\r\n    /**\r\n     * The current layout config for custom config 1.\r\n     */\r\n    public currentLayoutConfig: LayoutConfig;\r\n\r\n    /**\r\n     * The generator for layout config.\r\n     */\r\n    public layoutConfigGenerator: LayoutConfigGenerator = new LayoutConfigGenerator();\r\n\r\n    private autoFocus = true;\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n\r\n        this.settingsForms = injector.get(SettingsFormService);\r\n        this.dialogService = injector.get(DialogService);\r\n    }\r\n\r\n    public ngOnInit() {\r\n        super.ngOnInit();\r\n\r\n        this.settingsForms.stopProcessingEvents();\r\n        this.settingsForms.allForms.forEach((form) => this.allForms.push(form));\r\n        this.subscriptions.push(\r\n            this.settingsForms.formAdded().subscribe((formAddedData) => {\r\n                // to avoid duplicates we first remove the form if it exists\r\n                MsftSme.remove(this.allForms, formAddedData.formGroup);\r\n                this.allForms.push(formAddedData.formGroup);\r\n\r\n                // If we have a new form, it means the user navigated so we reset the autofocus\r\n                this.autoFocus = true;\r\n\r\n            }),\r\n            this.settingsForms.formRemoved().subscribe(\r\n                (form) => { MsftSme.remove(this.allForms, form); }\r\n            )\r\n        );\r\n        this.fullSettingsTitle = this.settingsTitle;\r\n        this.currentLayoutConfig = this.layoutConfigGenerator.initialize([300, '100']);\r\n    }\r\n\r\n    public ngOnDestroy() {\r\n        super.ngOnDestroy();\r\n        this.settingsForms.startProcessingEvents();\r\n    }\r\n\r\n    public canDeactivate(\r\n        component: CanComponentDeactivate,\r\n        route: ActivatedRouteSnapshot,\r\n        state: RouterStateSnapshot\r\n    ): Observable<boolean> | Promise<boolean> | boolean {\r\n        let continueNavigation: Observable<boolean> | Promise<boolean> | boolean = true;\r\n        this.allForms.first((form) => {\r\n            if (form.dirty) {\r\n                continueNavigation = this.dialogService\r\n                    .showConfirmation(component.confirmContinueEditingDialogOptions(form, this.allForms))\r\n                    .pipe(\r\n                        map((result) => {\r\n                            // The default is to continue editing\r\n                            const discardChanges = !result.confirmed;\r\n                            if (discardChanges) {\r\n                                this.settingsForms.allForms = [];\r\n                            }\r\n\r\n                            return discardChanges;\r\n                        }));\r\n\r\n                // with one dirty form is enough to show the dialog, no need to iterate over all the other dialogs\r\n                return true;\r\n            }\r\n\r\n            return false;\r\n        });\r\n\r\n        return continueNavigation;\r\n    }\r\n\r\n    /**\r\n     * Angular Life Cycle hook for After View Checked.\r\n     * When the visibility changes, we are going to focus on the first element that has the autofocus attribute\r\n     */\r\n    public ngAfterViewChecked() {\r\n        super.ngAfterViewChecked();\r\n        if (this.autoFocus) {\r\n            const autofocusElement = this.hostElement.nativeElement.querySelector('[autofocus]');\r\n            if (autofocusElement) {\r\n                this.autoFocus = false;\r\n                autofocusElement.focus();\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-settings'\r\n        ]);\r\n    }\r\n\r\n    /**\r\n     * Update this.settingsTitle (header of the setting page) to newly selected setting item\r\n     */\r\n    public updateSelectedSettingTitle(newSelectedSettingTitle: string): void {\r\n        this.selectedSettingsTitle = newSelectedSettingTitle;\r\n        const fullSettingsTitlePostFix = this.selectedSettingsTitle ? this.headerSeparator + ' ' + this.selectedSettingsTitle : '';\r\n        this.fullSettingsTitle = this.settingsTitle + ' ' + fullSettingsTitlePostFix;\r\n    }\r\n}\r\n","import { ElementRef } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { SmeResponsiveWindowBreakpoints, SmeResponsiveWindowManagerComponent } from '../../common/sme-responsive-window-manager.component';\r\n\r\n/**\r\n * The class for the settings window responsive manager\r\n * The usage is bound to the sme-settings-page as all the settings page needs it.\r\n */\r\nexport class SettingsResponsiveWindowManager extends SmeResponsiveWindowManagerComponent {\r\n    public readonly name = 'sme-settings';\r\n    private smeLayoutClassList = {\r\n        phoneUp: ['sme-arrange-wrapstack-h', 'sme-position-flex-auto', 'sme-arrange-overflow-auto'],\r\n        phoneDown: ['sme-layout-phone-down'],\r\n        reflow: ['sme-layout-phone-down']\r\n    };\r\n\r\n    private smeSettingsPageContentClassList = {\r\n        phoneUp: ['sme-position-stretch'],\r\n        phoneDown: ['sme-position-flex-none', 'sme-position-stretch-h'],\r\n        reflow: ['sme-position-flex-none', 'sme-position-stretch-h']\r\n    };\r\n\r\n    private smeSettingsPageClassList = {\r\n        phoneUp: [],\r\n        phoneDown: ['sme-layout-relative'],\r\n        reflow: ['sme-layout-relative']\r\n    };\r\n\r\n    private smeCommonSettingContentClassList = {\r\n        phoneUp: ['sme-position-stretch'],\r\n        phoneDown: ['sme-position-stretch-h', 'sme-layout-responsive-zone-xs'],\r\n        reflow: ['sme-position-stretch-h', 'sme-layout-responsive-zone-xs']\r\n    };\r\n\r\n    private smeLayoutItemContentClassList = {\r\n        phoneUp: ['sme-position-stretch'],\r\n        phoneDown: ['sme-position-relative', 'sme-arrange-stack-v'],\r\n        reflow: ['sme-position-relative', 'sme-arrange-stack-v']\r\n    };\r\n\r\n    private readonly iframeHeightMappings = {\r\n        'msft-sme-file-explorer-smbServerSettings': '900'\r\n    };\r\n\r\n    /**\r\n    * Waits for the iframe to load and set iframe's height to avoid unexpected scroll bars.\r\n    * This will be triggered on layout changed or on selected settings changed.\r\n    */\r\n   @Debounce()\r\n   public setIframeHeight(connectionSettings: boolean, hostElement: ElementRef) {\r\n       if (!connectionSettings) {\r\n           return;\r\n       }\r\n\r\n       if (!hostElement) {\r\n           return;\r\n       }\r\n\r\n       const mappings = this.iframeHeightMappings;\r\n\r\n       const commonSettingsContent =  hostElement.nativeElement.querySelector('sme-settings-content');\r\n       if (!commonSettingsContent) {\r\n           return;\r\n       }\r\n\r\n       const size = this.prevSize;\r\n\r\n       // on phone up, do not override min-height\r\n       if (size.size === SmeResponsiveWindowBreakpoints.PhoneUp) {\r\n            commonSettingsContent.style.minHeight = '';\r\n            return;\r\n       }\r\n\r\n       // defined from the custom.scss\r\n       if (commonSettingsContent.clientHeight >= 500) {\r\n           const iframe = commonSettingsContent.querySelector('iframe[id]:not(.sme-layout-none)');\r\n           if (!iframe) {\r\n               return;\r\n           }\r\n\r\n           const id = iframe.id;\r\n\r\n           if (!mappings.hasOwnProperty(id)) {\r\n               // By default from the custom.scss, the definition is 500px height.\r\n               // For contents that would be greater than 500, please manually update the iframeHeightMappings object.\r\n               // reset override\r\n               commonSettingsContent.style.minHeight = '';\r\n               return;\r\n           }\r\n\r\n           commonSettingsContent.style.minHeight = mappings[id] + 'px';\r\n       }\r\n   }\r\n\r\n   /**\r\n    * The on window sized changed event handler for the common settings with iframe as content.\r\n    * @param connectionSettings whether it is connection settings page.\r\n    * @param smeCommonSettings the host element for the sme common settings.\r\n    * @returns void\r\n    */\r\n    public onWindowSizeChangedCommonSettings(connectionSettings: boolean, smeCommonSettings: ElementRef): void {\r\n        if (!this.cssV2) {\r\n            return;\r\n        }\r\n\r\n        if (!connectionSettings) {\r\n            return;\r\n        }\r\n\r\n        if (!smeCommonSettings || !smeCommonSettings.nativeElement) {\r\n            return;\r\n        }\r\n\r\n        this.setIframeHeight(connectionSettings, smeCommonSettings);\r\n    }\r\n\r\n    /**\r\n     * The on window sized changed event handler for the common settings in general.\r\n     * @param smeSettingsPage the sme settings page element.\r\n     * @returns void\r\n     */\r\n    public onWindowSizeChanged(smeSettingsPage: ElementRef): void {\r\n        if (!this.cssV2) {\r\n            return;\r\n        }\r\n\r\n        if (!smeSettingsPage || !smeSettingsPage.nativeElement) {\r\n            return;\r\n        }\r\n\r\n        if (smeSettingsPage?.nativeElement?.childElementCount === 0) {\r\n            // Waits until components initialized.\r\n            setTimeout(() => {\r\n                this.onWindowSizeChanged(smeSettingsPage);\r\n            }, 250);\r\n\r\n            return;\r\n        }\r\n\r\n        // Special case for ng-templates wrapped with account.component.html after logged in.\r\n        if (smeSettingsPage.nativeElement.parentElement && smeSettingsPage.nativeElement.parentElement.tagName) {\r\n            const parentTagName = smeSettingsPage.nativeElement.parentElement.tagName.toLowerCase();\r\n            if (parentTagName === 'ng-component' && !smeSettingsPage.nativeElement.parentElement.parentElement) {\r\n                // eslint-disable-next-line no-console\r\n                console.log('ignoring account.component.html');\r\n                return;\r\n            }\r\n        }\r\n\r\n        const layoutItemContent = this.getLayoutItemAncestor(smeSettingsPage);\r\n\r\n        let smeLayout;\r\n\r\n        let commonSettingHeader, commonSettingContent, commonSettingFooter;\r\n\r\n        let layoutItemStretchH;\r\n        // If settings page not in an iframe, layoutItemContent will always be there.\r\n        // If settings page inside of an iframe, layoutItemContent cannot be found due to not in the same context.\r\n        if (layoutItemContent) {\r\n            layoutItemStretchH = this.layoutItemStretchWidth(layoutItemContent);\r\n\r\n            commonSettingHeader = this.getSettingsContent(layoutItemContent, 'sme-settings-header');\r\n            commonSettingContent = this.getSettingsContent(layoutItemContent, 'sme-settings-content');\r\n            commonSettingFooter = this.getSettingsContent(layoutItemContent, 'sme-settings-footer');\r\n        }\r\n\r\n        let commonSettingsFound = true;\r\n\r\n        // If not existed, return.\r\n        if (!commonSettingContent && !commonSettingFooter && !commonSettingHeader) {\r\n            commonSettingsFound = false;\r\n            // eslint-disable-next-line no-console\r\n            console.log('common settings not found');\r\n        }\r\n\r\n        const settingsPageHeader = this.getSettingsContent(smeSettingsPage.nativeElement, 'sme-settings-header');\r\n        const settingsPageContent = this.getSettingsContent(smeSettingsPage.nativeElement, 'sme-settings-content');\r\n        const settingsPageFooter = this.getSettingsContent(smeSettingsPage.nativeElement, 'sme-settings-footer');\r\n\r\n        if (!settingsPageHeader && !settingsPageContent && !settingsPageFooter) {\r\n            return;\r\n        }\r\n\r\n        const size = this.getSmeResponsiveWindowData();\r\n\r\n        if (commonSettingsFound && layoutItemContent) {\r\n            smeLayout = this.getParentElementByTag(smeSettingsPage.nativeElement,\r\n                ['sme-layout']);\r\n        }\r\n\r\n        // layoutItemStretchH: if the settings content from the settings page is rendering in 100%.\r\n        // meaning the content has been moved to the bottom of the settings nav due to small window.\r\n        // otherwise we just clean up the height and return.\r\n        if (size.phoneDown) {\r\n            if (smeSettingsPage?.nativeElement) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSettingsPageClassList, 'phoneDown', smeSettingsPage.nativeElement);\r\n            }\r\n\r\n            if (settingsPageContent) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSettingsPageContentClassList, 'phoneDown', settingsPageContent);\r\n            }\r\n\r\n            if (commonSettingsFound) {\r\n                if (commonSettingHeader) {\r\n                }\r\n\r\n                if (commonSettingContent) {\r\n                    this.updateClassArrayOnWindowSize(\r\n                        this.smeCommonSettingContentClassList, 'phoneDown', commonSettingContent);\r\n                }\r\n\r\n                if (commonSettingFooter) {\r\n                }\r\n\r\n                if (layoutItemContent) {\r\n                    this.updateClassArrayOnWindowSize(\r\n                        this.smeLayoutItemContentClassList, 'phoneDown', layoutItemContent);\r\n\r\n                    if (smeLayout) {\r\n                        this.updateClassArrayOnWindowSize(\r\n                            this.smeLayoutClassList, 'phoneDown', smeLayout);\r\n                    }\r\n                }\r\n            }\r\n        } else if (size.reflowMode) {\r\n            if (smeSettingsPage?.nativeElement) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSettingsPageClassList, 'reflow', smeSettingsPage.nativeElement);\r\n            }\r\n\r\n            if (smeLayout) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeLayoutClassList, 'reflow', smeLayout);\r\n            }\r\n\r\n            if (settingsPageContent) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSettingsPageContentClassList, 'reflow', settingsPageContent);\r\n            }\r\n\r\n            if (commonSettingContent) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeCommonSettingContentClassList, 'reflow', commonSettingContent);\r\n            }\r\n\r\n            if (layoutItemContent) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeLayoutItemContentClassList, 'reflow', layoutItemContent);\r\n            }\r\n        } else if (size.phoneUp) {\r\n            if (smeSettingsPage?.nativeElement) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSettingsPageClassList, 'phoneUp', smeSettingsPage.nativeElement);\r\n            }\r\n\r\n            if (smeLayout) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeLayoutClassList, 'phoneUp', smeLayout);\r\n            }\r\n\r\n            if (settingsPageContent) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeSettingsPageContentClassList, 'phoneUp', settingsPageContent);\r\n            }\r\n\r\n            if (commonSettingContent) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeCommonSettingContentClassList, 'phoneUp', commonSettingContent);\r\n            }\r\n\r\n            if (layoutItemContent) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeLayoutItemContentClassList, 'phoneUp', layoutItemContent);\r\n            }\r\n        }\r\n    }\r\n\r\n    private getLayoutItemAncestor(smeSettingsPage: ElementRef): HTMLElement {\r\n        let level = 10;\r\n        const smeSettingsPageNativeElement = smeSettingsPage.nativeElement;\r\n        let found = false;\r\n        let parent = smeSettingsPageNativeElement;\r\n        while (level > 0 && !found) {\r\n            if (parent) {\r\n                parent = parent.parentElement;\r\n            }\r\n\r\n            if (parent && parent.tagName && parent.tagName.toLocaleLowerCase() === 'sme-layout-item') {\r\n                found = true;\r\n                break;\r\n            }\r\n            level -= 1;\r\n        }\r\n\r\n        return parent;\r\n    }\r\n\r\n    private layoutItemStretchWidth(layoutItemContent: HTMLElement): boolean {\r\n        if (!layoutItemContent) {\r\n            return false;\r\n        }\r\n\r\n        const width = layoutItemContent?.style?.width;\r\n        if (width === '100%') {\r\n            return true;\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    private getSettingsContent(layoutItemContent: HTMLElement, target: string): HTMLElement {\r\n        if (!layoutItemContent.childElementCount) {\r\n            return;\r\n        }\r\n\r\n        for (let i = 0; i < layoutItemContent.childElementCount; i++) {\r\n            if (layoutItemContent.children[i].tagName.toLocaleLowerCase() === target) {\r\n                return <HTMLElement>layoutItemContent.children[i];\r\n            }\r\n        }\r\n\r\n        return undefined;\r\n    }\r\n}\r\n","import { Component, Injector, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\n\r\n@Component({\r\n    selector: 'sme-settings-footer',\r\n    template: '<ng-content></ng-content>'\r\n})\r\nexport class SettingsFooterComponent extends CoreBaseComponent implements OnChanges, OnInit {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'SettingsFooterComponent';\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    public ngOnInit() {\r\n        super.ngOnInit();\r\n        this.ngOnChanges(null);\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-settings-footer',\r\n            'sme-focus-zone'\r\n        ]);\r\n    }\r\n\r\n    public ngOnChanges(changes: SimpleChanges) {\r\n        super.ngOnChanges(changes);\r\n        if (this.hostElement.nativeElement) {\r\n            const element = (<HTMLUnknownElement>this.hostElement.nativeElement);\r\n            if (element.childElementCount === 0) {\r\n                if (!element.classList.contains('sme-layout-none')) {\r\n                    element.classList.add('sme-layout-none');\r\n                }\r\n            } else {\r\n                if (element.classList.contains('sme-layout-none')) {\r\n                    element.classList.remove('sme-layout-none');\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\n","import { Component, Injector } from '@angular/core';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\n\r\n@Component({\r\n    selector: 'sme-settings-header',\r\n    template: '<ng-content></ng-content>'\r\n})\r\nexport class SettingsHeaderComponent extends CoreBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'SettingsHeaderComponent';\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-settings-header'\r\n        ]);\r\n    }\r\n}\r\n","import { Component, Injector } from '@angular/core';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\n\r\n@Component({\r\n    selector: 'sme-settings-content',\r\n    template: '<ng-content></ng-content>'\r\n})\r\nexport class SettingsContentComponent extends CoreBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'SettingsContentComponent';\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-settings-content',\r\n            'sme-position-stretch'\r\n        ]);\r\n    }\r\n}\r\n","import { Component, Injector } from '@angular/core';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\n\r\n@Component({\r\n    selector: 'sme-settings-navigation',\r\n    template: '<ng-content></ng-content>'\r\n})\r\nexport class SettingsNavigationComponent extends CoreBaseComponent {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'SettingsNavigationComponent';\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-settings-navigation'\r\n        ]);\r\n    }\r\n}\r\n","<sme-settings [settingsTitle]=\"hackToolHeader ? '' : settingsTitle\" [class.sme-settings-external-header]=\"externalHeader\">\r\n  <sme-settings-navigation class=\"sme-position-stretch-v-phone-up sme-position-stretch-h\" style=\"min-width: 160px\">\r\n    <header class=\"sme-layout-tool-header\" *ngIf=\"hackToolHeader\">\r\n      <h2 class=\"sme-position-flex-none sme-font-h3\" [attr.aria-label]=\"settingsTitle\">{{settingsTitle}}</h2>\r\n    </header>\r\n    <div role=\"region\" [attr.aria-label]=\"settingsTitle\" class=\"sme-position-stretch sme-arrange-stack-v\">\r\n      <div class=\"sme-position-flex-none sme-focus-zone\">\r\n        <form class=\"sme-margin-squish-v-sm\">\r\n          <sme-form-field #searchTextBox type=\"search\" name=\"toolsListSearch\" [(ngModel)]=\"filter\" [placeholder]=\"searchBoxPlaceholder\"\r\n            [autofocus]=\"true\" [count]=\"filteredSettings ? filteredSettings.length : 0\"\r\n            (search)=\"onSearch()\"></sme-form-field>\r\n        </form>\r\n      </div>\r\n      <nav role=\"tablist\" class=\"sme-arrange-stack-v sme-focus-zone\"\r\n          [ngClass]=\"scrollableSecondaryNav ? 'sme-position-flex-auto sme-arrange-overflow-auto-y' : ''\">\r\n        <ul class=\"sme-position-flex-auto sme-arrange-stack-v sme-arrange-overflow-hide-x sme-arrange-overflow-auto-y\"\r\n          role=\"presentation\">\r\n          <li *ngFor=\"let group of groupTools; let j = index\" class=\"sme-margin-inset-none\" role=\"presentation\">\r\n            <div [id]=\"idBag.group + '-' + j\" class=\"sme-font-h4 sme-font-h4-settings\" *ngIf=\"group.group!==defaultGroup\"\r\n              [title]=\"group.group\">{{ group.group }}</div>\r\n            <a *ngFor=\"let setting of group.options; let i = index\"\r\n              class=\"sme-padding-squish-v-sm sme-arrange-stack-h sme-arrange-stack-centered-v sme-scheme-nav-item\" role=\"tab\"\r\n              href=\"setting.routeParams.extras && setting.routeParams.extras.replaceUrl\"\r\n              [attr.aria-selected]=\"selectedSetting === setting\"\r\n              [routerLink]=\"setting.routeParams.commands\" routerLinkActive=\"sme-active\"\r\n              (smeRouterLinkActivated)=\"onSmeRouterLinkActivated(setting)\"\r\n              [preserveFragment]=\"setting.routeParams.extras && setting.routeParams.extras.preserveFragment\"\r\n              [skipLocationChange]=\"setting.routeParams.extras && setting.routeParams.extras.skipLocationChange\"\r\n              [replaceUrl]=\"setting.routeParams.extras && setting.routeParams.extras.replaceUrl\"\r\n              [queryParams]=\"setting.routeParams.extras && setting.routeParams.extras.queryParams\"\r\n              [title]=\"setting.label\" attr.aria-labelledby=\"{{idBag.option}}-{{j}}-{{i}} {{idBag.group}}-{{j}}\">\r\n              <div class=\"sme-margin-right-xs sme-layout-flex sme-position-flex-align-center\">\r\n                <div *ngIf=\"setting.smeIconClassName\" class=\"sme-icon\" [ngClass]=\"getSmeIconClass(setting)\"></div>\r\n                <div *ngIf=\"setting.urlIcon\" class=\"sme-url-icon\" [style.background-image]=\"setting.urlIcon\"></div>\r\n                <div *ngIf=\"!setting.urlIcon && !setting.smeIconClassName\" class=\"sme-url-icon\" [style.background-image]=\"defaultIcon\"></div>\r\n              </div>\r\n              <div class=\"sme-position-flex-auto\">\r\n                <span [id]=\"idBag.option + '-' + j + '-' + i\" [class.sme-dirty]=\"!!(setting.form && setting.form.dirty)\"\r\n                  [class.sme-pristine]=\"!(setting.form && setting.form.dirty)\" class=\"sme-font-label sme-layout-flex sme-position-flex-align-center\">{{ setting.label }}</span>\r\n              </div>\r\n            </a>\r\n          </li>\r\n        </ul>\r\n      </nav>\r\n    </div>\r\n    <div *ngIf=\"hackShowOverlay\">\r\n      <div *ngFor=\"let layer of layers\"\r\n        class=\"sme-layout-absolute sme-position-inset-none sme-layer-above sme-scheme-backdrop-opaque\"\r\n        (click)=\"onOverlayClick(layer)\"></div>\r\n    </div>\r\n  </sme-settings-navigation>\r\n  <sme-settings-header *ngIf=\"!!showHeader\">\r\n    <h3 id=\"sme-shell-setting-selectedTitle\" [attr.aria-label]=\"selectedSetting.label\" *ngIf=\"!!selectedSetting\">\r\n      {{ selectedSetting.label }}</h3>\r\n  </sme-settings-header>\r\n  <sme-settings-content>\r\n    <router-outlet></router-outlet>\r\n  </sme-settings-content>\r\n  <sme-settings-footer>\r\n    <ng-content></ng-content>\r\n  </sme-settings-footer>\r\n</sme-settings>\r\n","import {\r\n    AfterViewChecked,\r\n    Component,\r\n    DoCheck,\r\n    Inject,\r\n    Injector,\r\n    Input,\r\n    IterableDiffer,\r\n    IterableDiffers,\r\n    OnChanges,\r\n    OnDestroy,\r\n    OnInit,\r\n    Optional,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\r\nimport {\r\n    ActivatedRouteSnapshot,\r\n    NavigationExtras,\r\n    Router,\r\n    RouterStateSnapshot\r\n} from '@angular/router';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { Net } from '@microsoft/windows-admin-center-sdk/core/data/net';\r\nimport { EnvironmentModule } from '@microsoft/windows-admin-center-sdk/core/manifest/environment-modules';\r\nimport { RpcOverlayCloseClient } from '@microsoft/windows-admin-center-sdk/core/rpc/overlay/rpc-overlay-close-client';\r\nimport { RpcDialogOverlayData } from '@microsoft/windows-admin-center-sdk/core/rpc/overlay/rpc-overlay-model';\r\nimport { DeferredData } from '@microsoft/windows-admin-center-sdk/core/rpc/rpc';\r\nimport { RpcType } from '@microsoft/windows-admin-center-sdk/core/rpc/rpc-base';\r\nimport { RpcOutbound } from '@microsoft/windows-admin-center-sdk/core/rpc/rpc-outbound';\r\nimport { EMPTY, from, Observable } from 'rxjs';\r\nimport { AppContextService } from '../../../service/app-context.service';\r\nimport { RpcShellService } from '../../../service/rpc-shell.service';\r\nimport { CoreBaseComponent } from '../../common/base.component';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../../common/layout';\r\nimport { SearchFormFieldComponent } from '../../form';\r\nimport { CanComponentDeactivate } from '../settings-can-deactivate-guard.service';\r\nimport { SettingsFormService } from '../settings-form.service';\r\nimport { SettingsComponent } from '../settings.component';\r\nimport { CommonSettingsNavigationItem, CommonSettingsNavigationItemWithForm } from './common-settings-navigation-item';\r\nimport { SettingsResponsiveWindowManager } from './settings-responsive-window-manager';\r\n\r\nexport interface GroupToolsMenu {\r\n    group: string;\r\n    options: CommonSettingsNavigationItemWithForm[];\r\n}\r\n\r\n/**\r\n * Container around settings component, handles common settings behavior.\r\n */\r\n@Component({\r\n    selector: 'sme-common-settings',\r\n    templateUrl: './common-settings.component.html'\r\n})\r\nexport class CommonSettingsComponent extends CoreBaseComponent implements OnInit, OnChanges, OnDestroy, DoCheck, AfterViewChecked {\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'CommonSettingsComponent';\r\n    }\r\n\r\n    /**\r\n     * If no header is being used internally, the control will depend on external header being customized\r\n     * For instance, a breadcrumb header can be used. And in this case, no extra scroll bar can be rendered on phone down.\r\n     */\r\n    public externalHeader = false;\r\n    public combinedForm: FormGroup;\r\n    public readonly defaultGroup = 'default';\r\n    public groupTools: GroupToolsMenu[];\r\n    public layers: RpcDialogOverlayData[] = [];\r\n    public selectedSetting: CommonSettingsNavigationItem;\r\n    public defaultIcon: string;\r\n\r\n    /**\r\n     * Search box filter.\r\n     */\r\n    public filter = '';\r\n\r\n    /**\r\n     * Search box placeholder.\r\n     */\r\n    @Input()\r\n    public searchBoxPlaceholder: string;\r\n    public filteredSettings: CommonSettingsNavigationItem[] = [];\r\n\r\n    @ViewChild('searchTextBox')\r\n    public searchTextBox: SearchFormFieldComponent;\r\n\r\n    @Input()\r\n    public settingsTitle: string;\r\n\r\n    @Input()\r\n    public settings: CommonSettingsNavigationItem[];\r\n\r\n    @Input()\r\n    public showHeader = true;\r\n\r\n    @Input()\r\n    public hackShowOverlay = false;\r\n\r\n    @Input()\r\n    public hackToolHeader = false;\r\n\r\n    /**\r\n     * If connection settings page, the contents are all iframe, special logic to get rid of the extra scroll bar for iframe.\r\n     */\r\n    @Input()\r\n    public connectionSettings = false;\r\n\r\n    @Input()\r\n    public backRoute: { commands: any[], extras?: NavigationExtras };\r\n\r\n    /**\r\n     * Controls whether the tab list showing the Settings items is scrollable or not\r\n     * Default to true. Allowing separate scroll bar for the navbar and the selected Settings.\r\n     * Set to false for backward compatibility and use previous behavior where there is\r\n     * only 1 single scroll bar for both navbar and content of the selected Settings item.\r\n     */\r\n    @Input()\r\n    public scrollableSecondaryNav = true;\r\n\r\n    @ViewChild(SettingsComponent)\r\n    public settingsComponent: SettingsComponent;\r\n\r\n    private latestForm: FormGroup;\r\n    private latestPristineFormValue: any;\r\n    private latestFormUpdateValueInComponent: boolean;\r\n    private settingsDiffer: IterableDiffer<any>;\r\n    private autofocus = true;\r\n    private settingsResponsiveWindowManager: SettingsResponsiveWindowManager;\r\n\r\n    constructor(\r\n        injector: Injector,\r\n        public router: Router,\r\n        private settingsForms: SettingsFormService,\r\n        private iterableDiffers: IterableDiffers,\r\n        private appContext: AppContextService,\r\n        private rpcShellService: RpcShellService,\r\n        @Optional() @Inject(SME_LAYOUT_PROVIDER) layout: Layout\r\n    ) {\r\n        super(injector);\r\n        this.combinedForm = new FormGroup({});\r\n        this.searchBoxPlaceholder = this.strings.MsftSmeShell.Angular.searchPlaceHolder;\r\n\r\n        if (layout) {\r\n            this.settingsResponsiveWindowManager = new SettingsResponsiveWindowManager(layout);\r\n            // on parent layout changes, re-emit the layout change to our event\r\n            this.subscriptions.push(layout.layoutChanged.subscribe((() => this.onLayoutChanged())));\r\n            // on window break point changes, emit the event about critical classes and styling updates signal.\r\n            this.subscriptions.push(layout.windowBreakpointChanged.subscribe(() => this.onWindowBreakpointChanged()));\r\n\r\n            this.deferredOnLayoutChanged();\r\n        }\r\n    }\r\n\r\n    public ngOnInit() {\r\n        super.ngOnInit();\r\n\r\n        this.subscriptions.push(\r\n            this.settingsForms.formAdded().subscribe((formAddedData) => {\r\n                // to avoid duplicates we first remove the form if it exists\r\n                this.latestForm = formAddedData.formGroup;\r\n                this.latestPristineFormValue = this.getRawValueRecursive(formAddedData.formGroup);\r\n                this.latestFormUpdateValueInComponent = formAddedData.updateValueInComponent;\r\n                this.recalculateActivePanel();\r\n            })\r\n        );\r\n\r\n        this.settingsDiffer = this.iterableDiffers.find(this.settings).create(null);\r\n        this.recalculateActivePanel();\r\n\r\n        if (this.hackShowOverlay) {\r\n            this.subscriptions.push(\r\n                this.rpcShellService.overlayOpenSubject.subscribe((deferredData: DeferredData<RpcDialogOverlayData, void>) => {\r\n                    // overlay tools with one more layer or remove one from top\r\n                    if (deferredData.data.overlay) {\r\n                        this.layers.push(deferredData.data);\r\n                    } else if (this.layers.length > 0) {\r\n                        this.layers.pop();\r\n                    } else {\r\n                        throw new Error('Rpc OverlayClose: close request is called while layer is no longer available');\r\n                    }\r\n                    deferredData.deferred.resolve();\r\n                })\r\n            );\r\n        }\r\n\r\n        if (!this.showHeader && !this.hackToolHeader) {\r\n            this.externalHeader = true;\r\n        }\r\n        this.defaultIcon = EnvironmentModule.getFormattedIconRefUrl('/assets/icons/default.svg?v=1');\r\n    }\r\n\r\n    public ngOnChanges(changes) {\r\n        super.ngOnChanges(changes);\r\n        if (changes.settings) {\r\n            this.settingsDiffer = this.iterableDiffers.find(this.settings).create(null);\r\n        }\r\n        this.createMenu();\r\n        this.recalculateActivePanel();\r\n    }\r\n\r\n    /**\r\n     * The deferred layout changed handler.\r\n     */\r\n    @Debounce()\r\n    private deferredOnLayoutChanged() {\r\n        this.onLayoutChanged();\r\n    }\r\n\r\n    @Yield()\r\n    private onLayoutChanged(): void {\r\n        this.settingsResponsiveWindowManager.setIframeHeight(this.connectionSettings, this.hostElement);\r\n    }\r\n\r\n    @Yield()\r\n    private onWindowBreakpointChanged() {\r\n        if (!this.hostElement || !this.hostElement.nativeElement) {\r\n            return;\r\n        }\r\n\r\n        this.settingsResponsiveWindowManager.onWindowSizeChangedCommonSettings(this.connectionSettings, this.hostElement);\r\n    }\r\n\r\n    public ngDoCheck() {\r\n        super.ngDoCheck();\r\n        if (this.settingsDiffer) {\r\n            const changes = this.settingsDiffer.diff(this.settings);\r\n            if (changes) {\r\n                this.createMenu();\r\n            }\r\n        }\r\n    }\r\n\r\n    public ngAfterViewChecked() {\r\n        if (this.autofocus) {\r\n            const focusElements = this.hostElement.nativeElement.querySelectorAll('[role=\"tab\"]');\r\n            if (focusElements && focusElements.length) {\r\n                focusElements[0].focus();\r\n                this.autofocus = false;\r\n            }\r\n        }\r\n\r\n        // Setting Title header is managed by child component this.settingsComponent,\r\n        // after current view and child view has been rendered, pass along the selectedSetting\r\n        // string if it exists so child view will render the title\r\n        if (this.selectedSetting) {\r\n            this.onSmeRouterLinkActivated(this.selectedSetting);\r\n        }\r\n    }\r\n\r\n    public createMenu() {\r\n        // Before creating the Settings menu, filter the Settings menu to only display\r\n        // items that matches the filter\r\n        this.filteredSettings = this.filterSetting();\r\n\r\n        const groupTools: GroupToolsMenu[] = [];\r\n        groupTools['default'] = { group: 'default', options: [] };\r\n        this.filteredSettings.forEach((setting) => {\r\n            if (!!!setting.group) {\r\n                groupTools['default'].options.push(setting);\r\n            } else {\r\n                if (!!!groupTools[setting.group]) {\r\n                    groupTools[setting.group] = { group: setting.group, title: setting.groupTitle, options: [] };\r\n                }\r\n                groupTools[setting.group].options.push(setting);\r\n            }\r\n        });\r\n        this.groupTools = [];\r\n        for (const prop in groupTools) {\r\n            if (prop) {\r\n                this.groupTools.push(groupTools[prop]);\r\n            }\r\n        }\r\n    }\r\n\r\n    public recalculateActivePanel() {\r\n        const setting = <CommonSettingsNavigationItemWithForm>this.selectedSetting;\r\n        if (MsftSme.isNullOrUndefined(setting)) {\r\n            return;\r\n        }\r\n\r\n        if (setting.form && setting.form.dirty) {\r\n            const formValue = this.getRawValueRecursive(setting.form);\r\n\r\n            if (setting.updateValueInComponent) {\r\n                this.settingsForms.newFormValue(setting.form, formValue);\r\n            } else {\r\n                this.latestForm.setValue(formValue);\r\n            }\r\n\r\n            this.latestForm.markAsDirty();\r\n        }\r\n\r\n        this.settingsForms.removeForm(setting.form);\r\n        setting.form = this.latestForm;\r\n\r\n        if (setting.form) {\r\n            if (this.combinedForm.controls[setting.label]) {\r\n                this.combinedForm.setControl(setting.label, setting.form);\r\n            } else {\r\n                this.combinedForm.addControl(setting.label, setting.form);\r\n            }\r\n        }\r\n\r\n        setting.updateValueInComponent = this.latestFormUpdateValueInComponent;\r\n    }\r\n\r\n    public discardAllChildForms() {\r\n        // For the current active setting, we need to reset the form to its\r\n        // original pristine form when discarding changes\r\n        const activeSetting = this.selectedSetting;\r\n        const settingWithForm = <CommonSettingsNavigationItemWithForm>activeSetting;\r\n        if (settingWithForm.form) {\r\n            settingWithForm.form.reset(this.latestPristineFormValue);\r\n        }\r\n\r\n        this.settings.forEach((otherSetting) => {\r\n            if (otherSetting !== activeSetting) {\r\n                const othersettingWithForm = <CommonSettingsNavigationItemWithForm>otherSetting;\r\n                this.settingsForms.removeForm(othersettingWithForm.form);\r\n                othersettingWithForm.form = null;\r\n                if (this.combinedForm.controls[othersettingWithForm.label]) {\r\n                    this.combinedForm.removeControl(othersettingWithForm.label);\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    public acceptAllChildFormsValue() {\r\n        const activeSetting = this.selectedSetting;\r\n        this.settings.forEach((setting) => {\r\n            const settingWithForm = <CommonSettingsNavigationItemWithForm>setting;\r\n            if (settingWithForm.form) {\r\n                settingWithForm.form.reset(this.getRawValueRecursive(settingWithForm.form));\r\n                if (activeSetting === settingWithForm) {\r\n                    this.latestPristineFormValue = this.getRawValueRecursive(settingWithForm.form);\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    public getSmeIconClass(setting: CommonSettingsNavigationItem) {\r\n        const ngClassParameter = {};\r\n        if (setting.smeIconClassName) {\r\n            ngClassParameter[setting.smeIconClassName] = true;\r\n        }\r\n        return ngClassParameter;\r\n    }\r\n\r\n    public canDeactivate(\r\n        component: CanComponentDeactivate,\r\n        route: ActivatedRouteSnapshot,\r\n        state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {\r\n        if (this.settingsComponent) {\r\n            return this.settingsComponent.canDeactivate(component, route, state);\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-common-settings'\r\n        ]);\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            group: '',\r\n            option: ''\r\n        };\r\n    }\r\n\r\n    public onOverlayClick(layer: RpcDialogOverlayData): void {\r\n        const layerRpc = this.appContext.rpc.rpcManager.rpcChannel.getRpc<RpcOutbound>(\r\n            layer.sourceName,\r\n            layer.sourceSubName,\r\n            RpcType.Outbound\r\n        );\r\n        from(RpcOverlayCloseClient.overlayClose(this.appContext.rpc, { overlay: false, dialogId: layer.dialogId }, layerRpc))\r\n            .subscribe({\r\n                next: result => {\r\n                    if (!result.overlayClosed && this.layers.length > 0) {\r\n                        this.layers.pop();\r\n                    }\r\n                },\r\n                error: error => {\r\n                    const notification = this.appContext.notification.create(null);\r\n                    notification.showError(this.strings.MsftSmeShell.Angular.Overlay.closeErrorTitle, Net.getErrorMessage(error));\r\n                    if (this.layers.length > 0) {\r\n                        this.layers.pop();\r\n                    }\r\n\r\n                    return EMPTY;\r\n                }\r\n            });\r\n    }\r\n\r\n    /**\r\n     * Returns the value of the current control and all its children recursivelly,\r\n     * including disabled controls.\r\n     *\r\n     * Workaround for missing functionality added in later versions of angular\r\n     * Currently getRawValue only returns the value of hte current control disabled\r\n     * children but only enabled controls of other descendants:\r\n     * https://github.com/angular/angular/commit/1ece7366c8b67f387fbe13f8d128c19f4c50dd19\r\n     *\r\n     * Once we upgrade angular version we can remove this code.\r\n     *\r\n     * @param formControl The form control to get the value from\r\n     */\r\n    private getRawValueRecursive(formControl: AbstractControl): any {\r\n        if (formControl instanceof FormGroup) {\r\n            const value = {};\r\n            Object.keys(formControl.controls).forEach(key => {\r\n                value[key] = this.getRawValueRecursive(formControl.controls[key]);\r\n            });\r\n\r\n            return value;\r\n\r\n        } else if (formControl instanceof FormArray) {\r\n            return formControl.controls.map((control: AbstractControl) => {\r\n                return this.getRawValueRecursive(control);\r\n            });\r\n        }\r\n\r\n        return formControl.value;\r\n    }\r\n\r\n    /**\r\n     * Update this.selectedSetting to the newly selected Settings item when user navigate to a new Settings item\r\n     * Also call the child component this.settingsComponent to update the settingsTitle to reflect the title\r\n     * of the newly selected Settings item\r\n     *\r\n     * @param newSetting The newly selected Settings item\r\n     */\r\n    public onSmeRouterLinkActivated(newSetting: CommonSettingsNavigationItem): void {\r\n        this.selectedSetting = newSetting;\r\n        if (this.settingsComponent) {\r\n            this.settingsComponent.updateSelectedSettingTitle(newSetting.label);\r\n        }\r\n\r\n        this.settingsResponsiveWindowManager.setIframeHeight(this.connectionSettings, this.hostElement);\r\n    }\r\n\r\n    /**\r\n    * Callback function for the search field\r\n    */\r\n    public onSearch(): void {\r\n        this.searchTextBox.searching = true;\r\n        setTimeout(() => {\r\n            this.createMenu();\r\n            this.searchTextBox.searching = false;\r\n        });\r\n    }\r\n\r\n    /**\r\n    * Filter out the settings Item based on this.filter string and match the title of Settings Items\r\n    */\r\n    private filterSetting(): CommonSettingsNavigationItem[] {\r\n\r\n        const settings = this.settings;\r\n\r\n        if (!this.filter) {\r\n            return settings;\r\n        }\r\n\r\n        const localFilter = this.filter.toLocaleLowerCase();\r\n\r\n        return settings.filter(setting => {\r\n            if (setting.label.toLocaleLowerCase().indexOf(localFilter) > -1) {\r\n                return true;\r\n            }\r\n\r\n            // if not match the exact title, need to match with keywords\r\n            if (setting.keywords) {\r\n                const matches = setting.keywords.filter(keyword => keyword.indexOf(localFilter) > -1);\r\n                if (matches.length > 0) {\r\n                    return true;\r\n                }\r\n            }\r\n\r\n            return false;\r\n        });\r\n    }\r\n}\r\n","import { Component, EventEmitter, Inject, Injector, Optional, Output } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { CoreBaseComponent } from '../../common/base.component';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../../common/layout';\r\nimport { SettingsResponsiveWindowManager } from './settings-responsive-window-manager';\r\n\r\n@Component({\r\n    selector: 'sme-settings-page',\r\n    templateUrl: './settings-page.component.html'\r\n})\r\nexport class SettingsPageComponent extends CoreBaseComponent {\r\n\r\n    /**\r\n     * It implements the ILayout interface. It's triggered when the layout is changed.\r\n     * It's used to tell the child components to coordinate with the layout change.\r\n     */\r\n    @Output()\r\n    public layoutChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'SettingsPageComponent';\r\n    }\r\n\r\n    private settingsResponsiveWindowManager: SettingsResponsiveWindowManager;\r\n\r\n    constructor(injector: Injector, @Optional() @Inject(SME_LAYOUT_PROVIDER) layout: Layout) {\r\n        super(injector);\r\n\r\n        if (layout) {\r\n            this.settingsResponsiveWindowManager = new SettingsResponsiveWindowManager(layout);\r\n            // on parent layout changes, re-emit the layout change to our event\r\n            this.subscriptions.push(layout.layoutChanged.subscribe((() => this.onLayoutChanged())));\r\n            // on window break point changes, emit the event about critical classes and styling updates signal.\r\n            this.subscriptions.push(layout.windowBreakpointChanged.subscribe(() => this.onWindowBreakpointChanged()));\r\n\r\n            this.deferredOnLayoutChanged();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Refreshes the height working for phone down, directly return otherwise\r\n     */\r\n    public refresh() {\r\n        this.onWindowBreakpointChanged();\r\n    }\r\n\r\n    /**\r\n     * Gets the initial host classes to be applied to this element\r\n     */\r\n    protected getInitialHostClasses() {\r\n        return super.getInitialHostClasses().concat([\r\n            'sme-settings-page'\r\n        ]);\r\n    }\r\n\r\n    /**\r\n     * On layout changed event handler, occurs every time the layout has been changed.\r\n     */\r\n    private onLayoutChanged() {\r\n        this.layoutChanged.emit();\r\n    }\r\n\r\n    /**\r\n     * The deferred layout changed handler.\r\n     */\r\n    @Debounce()\r\n    private deferredOnLayoutChanged() {\r\n        this.onLayoutChanged();\r\n    }\r\n\r\n    /**\r\n     * Set height based on scroll height from its children\r\n     * The goal is to get rid of vertical scroll bar on small screen\r\n     */\r\n    @Yield()\r\n    private onWindowBreakpointChanged() {\r\n        if (!this.hostElement || !this.hostElement.nativeElement) {\r\n            return;\r\n        }\r\n\r\n        this.settingsResponsiveWindowManager.onWindowSizeChanged(this.hostElement);\r\n    }\r\n}\r\n","<ng-content select=\"sme-settings-header\"></ng-content>\r\n<ng-content select=\"sme-settings-content\"></ng-content>\r\n<ng-content select=\"sme-settings-footer\"></ng-content>\r\n","import { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ActivatedRouteSnapshot, CanDeactivate, RouterStateSnapshot } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { ConfirmationDialogOptions } from '../dialog/confirmation-dialog/confirmation-dialog.component';\r\n\r\nexport interface CanComponentDeactivate {\r\n    canDeactivate: (\r\n        route: ActivatedRouteSnapshot,\r\n        state: RouterStateSnapshot) => Observable<boolean> | Promise<boolean> | boolean;\r\n\r\n    confirmContinueEditingDialogOptions: (\r\n        dirtyForm: FormGroup,\r\n        allForms: FormGroup[]) => ConfirmationDialogOptions;\r\n}\r\n\r\n@Injectable()\r\nexport class CanDeactivateGuard implements CanDeactivate<CanComponentDeactivate> {\r\n    public canDeactivate(\r\n        component: CanComponentDeactivate,\r\n        route: ActivatedRouteSnapshot,\r\n        state: RouterStateSnapshot) {\r\n        return component.canDeactivate ? component.canDeactivate(route, state) : true;\r\n    }\r\n}\r\n","import { Directive, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { SettingsFormService } from './settings-form.service';\r\n\r\n@Directive({ selector: '[smeSettingsForm]' })\r\nexport class SettingsFormDirective implements OnChanges, OnDestroy {\r\n    @Input()\r\n    public smeSettingsForm: FormGroup = null;\r\n\r\n    @Input()\r\n    public smeUpdateDataInComponent: boolean;\r\n\r\n    @Output()\r\n    public smeSettingsFormValueUpdate = new EventEmitter<any>();\r\n\r\n    private updateDataInComponentSubscription: Subscription;\r\n\r\n    public oldForm: FormGroup = null;\r\n    constructor(private formsService: SettingsFormService) { }\r\n\r\n    public ngOnChanges(changes: SimpleChanges) {\r\n        if (this.smeUpdateDataInComponent && this.smeSettingsForm) {\r\n            this.updateDataInComponentSubscription?.unsubscribe();\r\n\r\n            this.updateDataInComponentSubscription = this.formsService.updateFormValue().subscribe((data) => {\r\n                this.smeSettingsFormValueUpdate.emit(data.formGroupNewData);\r\n            });\r\n        }\r\n\r\n        if (changes.hasOwnProperty('smeSettingsForm')) {\r\n            // TODO: Register the form in the service\r\n            this.formsService.removeForm(this.oldForm);\r\n            this.formsService.addForm(this.smeSettingsForm, this.smeUpdateDataInComponent);\r\n            this.oldForm = this.smeSettingsForm;\r\n        }\r\n    }\r\n\r\n    public ngOnDestroy() {\r\n        this.updateDataInComponentSubscription?.unsubscribe();\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { SmeRouterModule } from '../../directives/router/router.module';\r\nimport { SmeFormsModule } from '../form/forms.module';\r\nimport { HeaderModule } from '../header/header.module';\r\nimport { LayoutModule } from '../layout/layout.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { CommonSettingsComponent } from './common-settings/common-settings.component';\r\nimport { SettingsPageComponent } from './common-settings/settings-page.component';\r\nimport { CanDeactivateGuard } from './settings-can-deactivate-guard.service';\r\nimport { SettingsContentComponent } from './settings-content.component';\r\nimport { SettingsFooterComponent } from './settings-footer.component';\r\nimport { SettingsFormDirective } from './settings-form.directive';\r\nimport { SettingsFormService } from './settings-form.service';\r\nimport { SettingsHeaderComponent } from './settings-header.component';\r\nimport { SettingsNavigationComponent } from './settings-navigation.component';\r\nimport { SettingsComponent } from './settings.component';\r\n\r\n@NgModule({\r\n    imports: [\r\n        SmeRouterModule,\r\n        RouterModule,\r\n        CommonModule,\r\n        HeaderModule,\r\n        LayoutModule,\r\n        TooltipModule,\r\n        FormsModule,\r\n        SmeFormsModule\r\n    ],\r\n    exports: [\r\n        SettingsComponent,\r\n        SettingsFormDirective,\r\n        SettingsFooterComponent,\r\n        SettingsHeaderComponent,\r\n        SettingsContentComponent,\r\n        SettingsPageComponent,\r\n        SettingsNavigationComponent,\r\n        CommonSettingsComponent\r\n    ],\r\n    declarations: [\r\n        SettingsComponent,\r\n        SettingsFormDirective,\r\n        SettingsFooterComponent,\r\n        SettingsHeaderComponent,\r\n        SettingsContentComponent,\r\n        SettingsPageComponent,\r\n        SettingsNavigationComponent,\r\n        CommonSettingsComponent\r\n    ],\r\n    providers: [\r\n        SettingsFormService,\r\n        CanDeactivateGuard\r\n    ]\r\n})\r\nexport class SettingsModule { }\r\n","import { Directive, QueryList, ViewChildren } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { ConfirmationDialogOptions } from '../../dialog/confirmation-dialog/confirmation-dialog.component';\r\nimport { CommonSettingsComponent } from '../common-settings/common-settings.component';\r\nimport { CanComponentDeactivate } from '../settings-can-deactivate-guard.service';\r\n\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class CommonSettingsComponentBase implements CanComponentDeactivate {\r\n\r\n    @ViewChildren(CommonSettingsComponent)\r\n    public commonSettingsComponent: QueryList<CommonSettingsComponent>;\r\n\r\n    public canDeactivate(\r\n        route: ActivatedRouteSnapshot,\r\n        state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {\r\n        if (this.commonSettingsComponent && this.commonSettingsComponent.first) {\r\n            return this.commonSettingsComponent.first.canDeactivate(this, route, state);\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    public abstract confirmContinueEditingDialogOptions(\r\n        dirtyForm: FormGroup,\r\n        allForms: FormGroup[]): ConfirmationDialogOptions;\r\n\r\n    public get combinedForm() {\r\n        if (this.commonSettingsComponent && this.commonSettingsComponent.first && this.commonSettingsComponent.first.combinedForm) {\r\n            return this.commonSettingsComponent.first.combinedForm;\r\n        }\r\n\r\n        return null;\r\n    }\r\n}\r\n","<div #placeholder class=\"sme-position-stretch-v sme-position-stretch-h\">\r\n  <sme-loading-wheel *ngIf=\"loading\"></sme-loading-wheel>\r\n</div>\r\n","import {\r\n    AfterViewInit, Component, EventEmitter, HostListener, Injector, Input, OnDestroy, OnInit, Output, ViewChild\r\n} from '@angular/core';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { SnapInExtensionInstance } from '@microsoft/windows-admin-center-sdk/core/data/extension-broker/model/extension-instance';\r\nimport { ExtensionRect } from '@microsoft/windows-admin-center-sdk/core/data/extension-broker/model/extension-rect';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { mergeMap, take } from 'rxjs/operators';\r\nimport { SnapInOutput } from '../../data/extension-broker/snap-in-listener';\r\nimport { ExtensionBrokerService } from '../../service/extension-broker.service';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../common/layout';\r\n\r\n@Component({\r\n    selector: 'sme-snap-in-extension',\r\n    templateUrl: './snap-in-extension.component.html'\r\n})\r\nexport class SnapInExtensionComponent extends CoreBaseComponent implements AfterViewInit, OnDestroy, OnInit {\r\n    /**\r\n    * Injected @see Layout parent instance bound to this component.\r\n    */\r\n    private layout: Layout;\r\n\r\n    @ViewChild('placeholder')\r\n    public placeholder: any;\r\n\r\n    @Input()\r\n    public extensionId: string;\r\n\r\n    @Input()\r\n    public input: any;\r\n\r\n    @Output()\r\n    public output: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n    public instance: SnapInExtensionInstance;\r\n\r\n    public loading: boolean;\r\n\r\n    public overflowElement: HTMLElement;\r\n\r\n    public scrollEventHandler: () => void;\r\n\r\n    @HostListener('window:scroll') onScroll() {\r\n        this.onLayoutChanged();\r\n    }\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'SnapInExtensionComponent';\r\n    }\r\n\r\n    constructor(injector: Injector, private extensionBrokerService: ExtensionBrokerService) {\r\n        super(injector);\r\n\r\n        this.layout = injector.get(SME_LAYOUT_PROVIDER, null, { optional: true });\r\n        this.loading = true;\r\n    }\r\n\r\n    public ngAfterViewInit(): void {\r\n        this.subscriptions.push(this.extensionBrokerService.createSnapIn(this.extensionId).pipe(\r\n            mergeMap((instance: SnapInExtensionInstance) => {\r\n                this.instance = instance;\r\n\r\n                if (this.input) {\r\n                    this.instance.call('input', 0, [this.input]).pipe(take(1)).subscribe();\r\n                }\r\n\r\n                this.loading = false;\r\n                // TODO: figure out if we need the timeout\r\n                setTimeout(() =>\r\n                    this.onLayoutChanged(),\r\n                    200\r\n                );\r\n                this.scrollEventHandler = this.onLayoutChanged.bind(this);\r\n                this.subscriptions.push(this.layout.layoutChanged.subscribe(() => this.onLayoutChanged()));\r\n                return this.instance.listen('output');\r\n            })).subscribe(output => {\r\n                if (output) {\r\n                    this.processEventOutput(output.data);\r\n                    this.output.emit(output);\r\n                }\r\n            }\r\n            ));\r\n        super.ngAfterViewInit();\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        if (this.instance) {\r\n            this.instance.destroy();\r\n        }\r\n        super.ngOnDestroy();\r\n    }\r\n\r\n    /**\r\n     * On layout changed event handler, occurs every time the layout has been changed.\r\n     */\r\n    @Yield()\r\n    private onLayoutChanged() {\r\n        if (this.instance) {\r\n\r\n            if (this.overflowElement) {\r\n                this.overflowElement.removeEventListener('scroll', this.scrollEventHandler);\r\n            }\r\n            const element = <HTMLElement>this.placeholder.nativeElement;\r\n            const placeholderRect = element.getBoundingClientRect();\r\n            const extensionRect: ExtensionRect = {\r\n                bottom: placeholderRect.bottom,\r\n                height: placeholderRect.height,\r\n                left: placeholderRect.left,\r\n                right: placeholderRect.right,\r\n                top: placeholderRect.top,\r\n                width: placeholderRect.width\r\n            };\r\n\r\n            const overflowParent = Dom.getOverflowAncestor(element);\r\n            if (overflowParent) {\r\n                const overflowParentRect = overflowParent.getBoundingClientRect();\r\n                extensionRect.overflowParent = {\r\n                    scrollHeight: overflowParent.scrollHeight,\r\n                    scrollWidth: overflowParent.scrollWidth,\r\n                    clientHeight: overflowParent.clientHeight,\r\n                    clientWidth: overflowParent.clientWidth,\r\n                    top: overflowParentRect.top,\r\n                    right: overflowParentRect.right,\r\n                    bottom: overflowParentRect.bottom,\r\n                    left: overflowParentRect.left\r\n                };\r\n                this.overflowElement = overflowParent;\r\n                this.overflowElement.addEventListener('scroll', this.scrollEventHandler);\r\n            }\r\n            this.instance.move(extensionRect).pipe(take(1)).subscribe();\r\n        }\r\n    }\r\n\r\n    private processEventOutput(outputData: SnapInOutput) {\r\n        if (outputData) {\r\n            if (outputData.deltaY) {\r\n                this.overflowElement.scrollTop += outputData.deltaY;\r\n            } else if (outputData.focusedElementRect) {\r\n                this.handleFocusEvent(outputData.focusedElementRect);\r\n            }\r\n        }\r\n    }\r\n\r\n    private handleFocusEvent(focusedRect: DOMRect): void {\r\n        const element = <HTMLElement>this.placeholder.nativeElement;\r\n        const placeholderRect = element.getBoundingClientRect();\r\n        const overflowParentRect = this.overflowElement.getBoundingClientRect();\r\n\r\n        // get the focused elements location relative to the placeholder's frame\r\n        const top = placeholderRect.top + focusedRect.top;\r\n        const bottom = placeholderRect.top + focusedRect.bottom;\r\n        const left = placeholderRect.left + focusedRect.left;\r\n        const right = placeholderRect.left + focusedRect.right;\r\n\r\n        // TODO: edge cases for these for example, focusRect is bigger than overflowParent\r\n        if (top < overflowParentRect.top) {\r\n            // above viewport, move to be under view port\r\n            const deltaY = top - overflowParentRect.top;\r\n            this.overflowElement.scrollTop += deltaY;\r\n        }\r\n\r\n        if (bottom > overflowParentRect.bottom) {\r\n            // below viewport\r\n            const deltaY = bottom - overflowParentRect.bottom;\r\n            this.overflowElement.scrollTop += deltaY;\r\n        }\r\n\r\n        if (left < overflowParentRect.left) {\r\n            const deltaX = left - overflowParentRect.left;\r\n            this.overflowElement.scrollLeft += deltaX;\r\n        }\r\n\r\n        if (right > overflowParentRect.right) {\r\n            const deltaX = right - overflowParentRect.right;\r\n            this.overflowElement.scrollLeft += deltaX;\r\n        }\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { LoadingWheelModule } from '../loading-wheel/loading-wheel.module';\r\nimport { SnapInExtensionComponent } from './snap-in-extension.component';\r\n\r\n@NgModule({\r\n    declarations: [SnapInExtensionComponent],\r\n    exports: [SnapInExtensionComponent],\r\n    imports: [\r\n        CommonModule,\r\n        LoadingWheelModule\r\n    ]\r\n})\r\nexport class SnapInExtensionModule { }\r\n","<div class=\"sme-arrange-stack-v sme-margin-bottom-md\">\r\n\r\n  <!-- Header -->\r\n  <div class=\"sme-arrange-stack-h\">\r\n    <ng-container *ngIf=\"iconUrl || iconClass\">\r\n      <sme-icon-text [urlIcon]=\"iconUrl\" [showTitle]=\"false\"></sme-icon-text>\r\n      <span *ngIf=\"!!iconClass\" class=\"sme-margin-right-xs sme-icon {{iconClass}}\"></span>\r\n    </ng-container>\r\n    <h4 class=\"sme-font-h4-no-spacing\">{{ header }}</h4>\r\n  </div>\r\n\r\n  <!-- Start of for loop -->\r\n  <ng-container *ngFor=\"let item of items; index as i\">\r\n    <div class=\"sme-arrange-stack-h sme-margin-vertical-xxs sme-summary-item\" [class.sme-margin-left-md]=\"iconUrl || iconClass\">\r\n      <label>\r\n        <p>\r\n          <span>{{ item.label }}</span>\r\n        </p>\r\n      </label>\r\n      <span class=\"sme-margin-horizontal-xxs\">:</span>\r\n      <div style=\"flex: 1 1 50%\">\r\n        <ng-container *ngTemplateOutlet=\"getTemplate(item);context:{$implicit:item, index: i}\"></ng-container>\r\n      </div>\r\n    </div>\r\n  </ng-container>\r\n  <!-- End of for loop -->\r\n\r\n  <!-- Read only -->\r\n  <ng-template #readonlyTemplate let-item let-i=\"index\">\r\n    <sme-loading-wheel *ngIf=\"item.loading && item.isAsync\" size=\"extra-small\" [inline]=\"true\" [isBackgroundTransparent]=\"true\"></sme-loading-wheel>\r\n    <ng-container *ngIf=\"!item.loading || !item.isAsync\">\r\n      <p class=\"sme-read-only-template\" [attr.aria-labelledby]=\"idBag.labelSpan + i\" [attr.aria-describedby]=\"idBag.detailsSpan + i\">\r\n        <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n        <span *ngIf=\"!item.link && !item.action\">{{ stringifyValue(item.value) }}</span>\r\n      </p>\r\n    </ng-container>\r\n  </ng-template>\r\n\r\n  <!-- Action link (role button) -->\r\n  <ng-template #actionLinkTemplate let-item let-i=\"index\">\r\n    <div class=\"sme-arrange-stack-h\">\r\n      <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n      <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n      <a tabindex=\"0\" class=\"sme-link sme-focus-zone sme-action-link-template\" role=\"link\" (click)=\"item.action(item)\"\r\n        [attr.aria-labelledby]=\"(idBag.labelSpan + i) + ' ' + (idBag.valueSpan + i)\"\r\n        [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n    </div>\r\n  </ng-template>\r\n\r\n  <!-- Internal link -->\r\n  <ng-template #internalLinkTemplate let-item let-i=\"index\">\r\n    <div class=\"sme-arrange-stack-h\">\r\n      <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n      <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n      <a class=\"sme-link sme-focus-zone\" role=\"link\" [routerLink]=\"item.link\" [fragment]=\"item.fragment\" [queryParams]=\"item.queryParams\"\r\n        [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n      <span class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan + i\">{{ getInternalLinkDescription(item) }}</span>\r\n    </div>\r\n  </ng-template>\r\n\r\n  <!-- External link -->\r\n  <ng-template #externalLinkTemplate let-item let-i=\"index\">\r\n    <div class=\"sme-arrange-stack-h\">\r\n      <ng-container *ngTemplateOutlet=\"iconTemplate;context:{$implicit:item, index: i}\"></ng-container>\r\n      <span *ngIf=\"item.prefixString\" class=\"sme-padding-right-xs\">{{ item.prefixString }}</span>\r\n      <a class=\"sme-link sme-focus-zone sme-icon sme-icon-after sme-icon-openInNewWindow\" role=\"link\" [href]=\"item.link\" target=\"_blank\"\r\n        [attr.aria-describedby]=\"idBag.detailsSpan + i\">{{ item.value }}</a>\r\n      <span class=\"sme-screen-reader\" [id]=\"idBag.detailsSpan + i\">{{ getExternalLinkDescription(item) }}</span>\r\n    </div>\r\n  </ng-template>\r\n\r\n  <!-- Icon Template -->\r\n  <ng-template #iconTemplate let-item let-i=\"index\">\r\n    <span *ngIf=\"!!item.iconClass\" class=\"sme-margin-right-xs sme-icon {{item.iconClass}}\"></span>\r\n    <sme-status-icon *ngIf=\"item.status !== undefined && item.status !== null && !item.iconClass\" class=\"sme-layout-inline-block sme-margin-right-xs \"\r\n      [status]=\"item.status\" size=\"16px\"></sme-status-icon>\r\n  </ng-template>\r\n</div>\r\n","import { Component, ElementRef, Injector, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { SummaryItem } from './summary-item';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Summary @id sme-summary}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/summary-overview.md}\r\n *\r\n * @example {@label Basic Usage @id basic-usage}\r\n * @file {@filename component.ts @filepath ./examples/summary-example.component.ts}\r\n * @file {@filename component.html @filepath ./examples/summary-example.component.html}\r\n *\r\n */\r\n@Component({\r\n    selector: 'sme-summary',\r\n    templateUrl: './summary.component.html'\r\n})\r\nexport class SummaryComponent extends CoreBaseComponent implements OnInit {\r\n    /**\r\n     * Header for the summary control.\r\n     */\r\n    @Input()\r\n    public header: string;\r\n\r\n    /**\r\n     * Icon url for the summary control icon.\r\n     */\r\n    @Input()\r\n    public iconUrl: string;\r\n\r\n    /**\r\n     * Icon class for the summary control icon.\r\n     */\r\n    @Input()\r\n    public iconClass: string;\r\n\r\n    /**\r\n     * Key-value items to be displayed in the summary control.\r\n     */\r\n    @Input()\r\n    public items: SummaryItem[];\r\n\r\n    /**\r\n     * The template reference for displaying read-only value.\r\n     */\r\n    @ViewChild('readonlyTemplate', { static: true })\r\n    public readonlyTemplate: TemplateRef<ElementRef>;\r\n\r\n    /**\r\n     * The template reference for displaying action link.\r\n     */\r\n    @ViewChild('actionLinkTemplate', { static: true })\r\n    public actionLinkTemplate: TemplateRef<ElementRef>;\r\n\r\n    /**\r\n     * The template reference for displaying internal link.\r\n     */\r\n    @ViewChild('internalLinkTemplate', { static: true })\r\n    public internalLinkTemplate: TemplateRef<ElementRef>;\r\n\r\n    /**\r\n     * The template reference for displaying external link.\r\n     */\r\n    @ViewChild('externalLinkTemplate', { static: true })\r\n    public externalLinkTemplate: TemplateRef<ElementRef>;\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * Stringify the value for the item.\r\n     * @param value The value to stringify.\r\n     */\r\n    public stringifyValue(value: any): string {\r\n        if (MsftSme.isNullOrWhiteSpace(value)) {\r\n            return '-';\r\n        }\r\n\r\n        if (Array.isArray(value)) {\r\n            return value.map(v => this.stringifyValue(v)).join(',\\n');\r\n        }\r\n\r\n        if (MsftSme.isObject(value)) {\r\n            try {\r\n                return JSON.stringify(value, null, 2);\r\n            } catch (error) {\r\n                return value;\r\n            }\r\n        }\r\n\r\n        return `${value}`;\r\n    }\r\n\r\n    /**\r\n     * Get the template for the item.\r\n     * @param item The summary item.\r\n     * @returns The template for the item.\r\n     */\r\n    public getTemplate(item: SummaryItem): TemplateRef<ElementRef> {\r\n        if (item.action) {\r\n            return this.actionLinkTemplate;\r\n        }\r\n        if (item.link) {\r\n            if (item.isExternalLink) {\r\n                return this.externalLinkTemplate;\r\n            } else {\r\n                return this.internalLinkTemplate;\r\n            }\r\n        }\r\n        return this.readonlyTemplate;\r\n    }\r\n\r\n    /**\r\n     * Get the description for the internal link.\r\n     * @param item The summary item.\r\n     * @returns The description for the internal link.\r\n     */\r\n    public getInternalLinkDescription(item: SummaryItem) {\r\n        return this.strings.MsftSmeShell.Angular.Summary.InternalLink.label.format(item.link);\r\n    }\r\n\r\n    /**\r\n     * Get the description for the external link.\r\n     * @param item The summary item.\r\n     * @returns The description for the external link.\r\n     */\r\n    public getExternalLinkDescription(item: SummaryItem) {\r\n        return this.strings.MsftSmeShell.Angular.Summary.ExternalLink.label.format(item.link);\r\n    }\r\n\r\n    /**\r\n     * Creates the idBag used by this component to store unique element ids.\r\n     * id values will be assigned be the @see BaseComponent super class.\r\n     */\r\n    protected createIdBag(): MsftSme.StringMap<string> {\r\n        return {\r\n            detailsSpan: '',\r\n            labelSpan: '',\r\n            valueSpan: ''\r\n        };\r\n    }\r\n\r\n    protected get logSourceName(): string {\r\n        return 'SummaryComponent';\r\n    }\r\n}\r\n","import { StatusIconType } from '../icon/layered-icon/status/status-icon.component';\r\n\r\nexport interface SummaryItemOptions {\r\n    /**\r\n     * It indicates whether the summary item is async.\r\n     */\r\n    isAsync?: boolean;\r\n\r\n    /**\r\n     * The link for the summary item.\r\n     */\r\n    link?: string;\r\n\r\n    /**\r\n     * The link fragment for the summary item.\r\n     */\r\n    fragment?: string;\r\n\r\n    /**\r\n     * The link query params for the summary item.\r\n     */\r\n    queryParams?: { [key: string]: string };\r\n\r\n    /**\r\n     * It indicates whether the summary item is external link.\r\n     */\r\n    isExternalLink?: boolean;\r\n\r\n    /**\r\n     * The plain string content for value when value is link or action.\r\n     */\r\n    prefixString?: string;\r\n\r\n    /**\r\n     * It indicates the action for the summary item.\r\n     */\r\n    action?: MsftSme.Action1<SummaryItem>;\r\n\r\n    /**\r\n     * The tooltip for the summary item.\r\n     */\r\n    tooltip?: string;\r\n\r\n    /**\r\n     * The icon class for the summary item.\r\n     */\r\n    iconClass?: string;\r\n\r\n    /**\r\n     * The status for the summary item.\r\n     */\r\n    status?: StatusIconType.Bindable;\r\n\r\n    /**\r\n     * It indicates whether the summary item is loading.\r\n     * This parameter has to have isAsync set to true to use.\r\n     */\r\n    loading?: boolean;\r\n}\r\n\r\nexport class SummaryItem {\r\n    /**\r\n     * The internal value/context for the summary item.\r\n     */\r\n    private internalValue: any;\r\n\r\n    /**\r\n     * The label for the summary item.\r\n     */\r\n    public label: string;\r\n\r\n    /**\r\n     * The plain string content for value when value is link or action.\r\n     */\r\n    public prefixString: string;\r\n\r\n    /**\r\n     * The setter for value/context.\r\n     */\r\n    public set value(input: any) {\r\n        if (this.isAsync && this.loading) {\r\n            this.loading = false;\r\n        }\r\n\r\n        this.internalValue = input;\r\n    }\r\n\r\n    /**\r\n     * The getter for value/context.\r\n     */\r\n    public get value(): any {\r\n        return this.internalValue;\r\n    }\r\n\r\n    /**\r\n     * It indicates the action for the summary item.\r\n     */\r\n    public action: MsftSme.Action1<SummaryItem>;\r\n\r\n    /**\r\n     * The link for the summary item.\r\n     */\r\n    public link: string;\r\n\r\n    /**\r\n     * The link query params for the summary item.\r\n     */\r\n    public fragment: string;\r\n\r\n    /**\r\n     * The link query params for the summary item.\r\n     */\r\n    public queryParams: { [key: string]: string };\r\n\r\n    /**\r\n     * The tooltip for the summary item.\r\n     */\r\n    public tooltip: string;\r\n\r\n    /**\r\n     * It indicates whether the summary item is external link.\r\n     */\r\n    public isExternalLink: boolean;\r\n\r\n    /**\r\n     * The icon class for the summary item.\r\n     */\r\n    public iconClass: string;\r\n\r\n    /**\r\n     * The status for the summary item.\r\n     */\r\n    public status: StatusIconType.Bindable = null;\r\n\r\n    /**\r\n     * It indicates the rendering of loading wheel when data unloaded.\r\n     */\r\n    public isAsync = false;\r\n\r\n    /**\r\n     * It indicates whether the summary item is loading.\r\n     * This parameter has to have isAsync set to true to use.\r\n     */\r\n    public loading = true;\r\n\r\n    constructor(label: string, value: string, public options: SummaryItemOptions = {}) {\r\n        this.label = label;\r\n        this.value = value;\r\n        this.isAsync = options.isAsync || this.isAsync;\r\n        this.link = options.link || this.link;\r\n        this.isExternalLink = options.isExternalLink || null;\r\n        this.prefixString = options.prefixString || null;\r\n        this.action = options.action || null;\r\n        this.tooltip = options.tooltip || null;\r\n        this.iconClass = options.iconClass || null;\r\n        this.status = options.status || this.status;\r\n        this.fragment = options.fragment || null;\r\n        this.queryParams = options.queryParams || null;\r\n\r\n        if (this.isAsync && this.loading && this.value !== undefined) {\r\n            this.loading = false;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Gets the status class to apply to this components value section\r\n     */\r\n    public get statusClass(): string {\r\n        if (MsftSme.isNullOrUndefined(this.status)) {\r\n            return null;\r\n        }\r\n\r\n        const statusValue = StatusIconType.fromBindableType(this.status);\r\n\r\n        switch (statusValue) {\r\n            case StatusIconType.Critical:\r\n                return 'sme-color-critical';\r\n            case StatusIconType.Error:\r\n                return 'sme-color-error';\r\n            case StatusIconType.Warning:\r\n                return 'sme-color-warning';\r\n            case StatusIconType.Info:\r\n                return 'sme-color-info';\r\n            case StatusIconType.Progress:\r\n                return 'sme-color-progress';\r\n            case StatusIconType.Success:\r\n                return 'sme-color-success';\r\n            case StatusIconType.Unknown:\r\n                return 'sme-color-neutral';\r\n            default:\r\n                return 'sme-color-info';\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Give the ability to reset loading.\r\n     */\r\n    public resetLoading() {\r\n        if (!this.loading) {\r\n            this.loading = true;\r\n        }\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { IconModule } from '../icon/icon.module';\r\nimport { LoadingWheelModule } from '../loading-wheel/loading-wheel.module';\r\nimport { SummaryComponent } from './summary.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        SummaryComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        IconModule,\r\n        LoadingWheelModule,\r\n        RouterModule\r\n    ],\r\n    exports: [\r\n        SummaryComponent\r\n    ]\r\n})\r\nexport class SummaryModule { }\r\n","<sme-layout #customLayout [padLastItem]=\"false\" [layoutConfig]=\"layoutConfig\" [itemHorizontalSpace]=\"36\">\r\n  <sme-layout-item *ngFor=\"let items of renderedItems\">\r\n    <ng-container *ngFor=\"let item of items; index as i\">\r\n      <sme-summary [header]=\"item.header\" [iconUrl]=\"item.iconUrl\" [items]=\"item.items\"></sme-summary>\r\n    </ng-container>\r\n  </sme-layout-item>\r\n</sme-layout>\r\n","import { Component, Input } from '@angular/core';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { LayoutConfig } from '../layout';\r\nimport { SummaryItem } from '../summary/summary-item';\r\n\r\n/**\r\n *\r\n * @smeDoc {@label Summary Group @id sme-summary-group}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/summary-group-overview.md}\r\n *\r\n * @example {@label Basic Usage @id basic-usage}\r\n * @file {@filename component.ts @filepath ./examples/summary-group-example.component.ts}\r\n * @file {@filename component.html @filepath ./examples/summary-group-example.component.html}\r\n *\r\n */\r\nexport interface SummaryGroupItems {\r\n    /**\r\n     * The icon url for the summary control.\r\n     */\r\n    iconUrl?: string\r\n\r\n    /**\r\n     * The title for the summary control.\r\n     */\r\n    header: string\r\n\r\n    /**\r\n     * The sub items for summary control.\r\n     */\r\n    items: SummaryItem[]\r\n\r\n    /**\r\n     * Unique identifier for the groupings\r\n     */\r\n    group?: string;\r\n}\r\n\r\n@Component({\r\n    selector: 'sme-summary-group',\r\n    templateUrl: './summary-group.component.html'\r\n})\r\nexport class SummaryGroupComponent extends CoreBaseComponent {\r\n    /**\r\n     * The group items for the summary control.\r\n     */\r\n    public renderedItems: Array<SummaryGroupItems[]> = [];\r\n\r\n    /**\r\n     * The current layout configuration.\r\n     */\r\n    @Input()\r\n    public layoutConfig: LayoutConfig;\r\n\r\n    /**\r\n     * Items to be displayed in the summary control.\r\n     */\r\n    @Input()\r\n    public set groupItems(value: SummaryGroupItems[]) {\r\n        this.groupItemsLocal = value;\r\n        this.groupSummaryItems(this.groupItemsLocal);\r\n    }\r\n\r\n    public get groupItems(): SummaryGroupItems[] {\r\n        return this.groupItemsLocal;\r\n    }\r\n\r\n    /**\r\n     * The source name to use for logging\r\n     */\r\n    protected get logSourceName() {\r\n        return 'SummaryGroupComponent';\r\n    }\r\n\r\n    private groupSummaryItems(items: SummaryGroupItems[]) {\r\n        const groupedMap = new Map<string, SummaryGroupItems[]>();\r\n\r\n        items.forEach(item => {\r\n            const key = item.group || item.header;\r\n\r\n            if (groupedMap.has(key)) {\r\n                const existingItem = groupedMap.get(key);\r\n                existingItem.push(item);\r\n            } else {\r\n                groupedMap.set(key, [item]);\r\n            }\r\n        });\r\n\r\n        this.renderedItems = Array.from(groupedMap.values());\r\n    }\r\n\r\n    private groupItemsLocal: SummaryGroupItems[] = [];\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { LayoutModule } from '../layout';\r\nimport { SummaryModule } from '../summary/summary.module';\r\nimport { SummaryGroupComponent } from './summary-group.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        SummaryGroupComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        SummaryModule,\r\n        LayoutModule\r\n    ],\r\n    exports: [\r\n        SummaryGroupComponent\r\n    ]\r\n})\r\nexport class SummaryGroupModule { }\r\n","<div *ngIf=\"tileImageSrc\" smeTileImage [imageSrc]=\"tileImageSrc\"\r\n  class=\"sme-square-xxl sme-margin-right-sm sme-position-flex-none\"></div>\r\n<div class=\"sme-arrange-stack-v sme-tile-data-container\">\r\n  <div class=\"sme-font-family-semi-bold\">{{tileHeader}}</div>\r\n  <ng-content></ng-content>\r\n</div>\r\n","import { Component, Injector, Input } from '@angular/core';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\n\r\n@Component({\r\n    selector: 'sme-tile-content',\r\n    templateUrl: './tile-content.component.html'\r\n})\r\nexport class TileContentComponent extends CoreBaseComponent {\r\n    protected get logSourceName() {\r\n        return 'TileContentComponent';\r\n    }\r\n\r\n    @Input()\r\n    public tileHeader: string;\r\n\r\n    @Input()\r\n    public tileImageSrc: string;\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n}\r\n","<ng-template #contentTemplate>\r\n  <ng-content></ng-content>\r\n</ng-template>\r\n\r\n<sme-tile-content *ngIf=\"!customTemplate\" class=\"sme-padding-inset-md sme-arrange-stack-h sme-focus-zone\"\r\n  [attr.tabindex]=\"isFocusable ? 0 : null\" [tileHeader]=\"tileHeader\"\r\n  [tileImageSrc]=\"tileImageSrc\">\r\n  <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n</sme-tile-content>\r\n\r\n<ng-container *ngIf=\"customTemplate\">\r\n  <div class=\"sme-padding-inset-md sme-position-stretch sme-focus-zone\" [attr.tabindex]=\"isFocusable ? 0 : null\">\r\n    <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n  </div>\r\n</ng-container>","import { Component, HostBinding, Injector, Input } from '@angular/core';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\n\r\n@Component({\r\n    selector: 'sme-tile',\r\n    templateUrl: './tile.component.html'\r\n})\r\nexport class TileComponent extends CoreBaseComponent {\r\n    protected get logSourceName() {\r\n        return 'TileComponent';\r\n    }\r\n\r\n    /**\r\n     * Text header to put on the tile, appears below image\r\n     */\r\n    @Input()\r\n    public tileHeader: string;\r\n\r\n    /**\r\n     * Src url to be displayed in the tile component\r\n     */\r\n    @Input()\r\n    public tileImageSrc: string;\r\n\r\n    /**\r\n     * If true, sets content to take up 100% the height of the tile\r\n     */\r\n    @HostBinding('class.sme-tile-fill')\r\n    @Input()\r\n    public fillTile = false;\r\n\r\n    /**\r\n     * Determines whether the tile should be tab focusable\r\n     */\r\n    @HostBinding('class.sme-tile-focusable')\r\n    @Input()\r\n    public isFocusable = true;\r\n\r\n    /**\r\n     * Determines whether to use the custom template.\r\n     */\r\n    @Input()\r\n    public customTemplate = false;\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TileDirectivesModule } from '../../directives/tile/tile-directives.module';\r\nimport { TileContentComponent } from './tile-content.component';\r\nimport { TileComponent } from './tile.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        TileComponent,\r\n        TileContentComponent\r\n    ],\r\n    declarations: [\r\n        TileComponent,\r\n        TileContentComponent\r\n    ],\r\n    imports: [\r\n        RouterModule,\r\n        CommonModule,\r\n        TileDirectivesModule\r\n    ]\r\n})\r\nexport class TileModule { }\r\n","import { Component, Injector } from '@angular/core';\r\nimport { CoreBaseComponent } from '../../common/base.component';\r\n\r\n@Component({\r\n    selector: 'sme-ux-content',\r\n    template: `<ng-content></ng-content>`\r\n})\r\nexport class SmeUxContentComponent extends CoreBaseComponent {\r\n    protected get logSourceName() {\r\n        return 'SmeUxContent';\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { SmeUxContentComponent } from './sme-ux-content.component';\r\n\r\n@NgModule({\r\n    exports: [SmeUxContentComponent],\r\n    declarations: [SmeUxContentComponent],\r\n    imports: [\r\n        CommonModule\r\n    ]\r\n})\r\nexport class SmeUxContentModule { }\r\n","import { Component, Injector } from '@angular/core';\r\nimport { CoreBaseComponent } from '../../common/base.component';\r\n\r\n@Component({\r\n    selector: 'sme-ux-footer',\r\n    template: `<ng-content></ng-content>`\r\n})\r\nexport class SmeUxFooterComponent extends CoreBaseComponent {\r\n    protected get logSourceName() {\r\n        return 'SmeUxFooterSpace';\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { SmeUxFooterComponent } from './sme-ux-footer.component';\r\n\r\n@NgModule({\r\n    exports: [SmeUxFooterComponent],\r\n    declarations: [SmeUxFooterComponent],\r\n    imports: [\r\n        CommonModule\r\n    ]\r\n})\r\nexport class SmeUxFooterModule { }\r\n","<div class=\"sme-arrange-stack-h sme-position-stretch-h\" [class.sme-layout-hidden]=\"!render\">\r\n  <span class=\"sme-padding-right-xs\">\r\n    <button type=\"button\" aria-live=\"polite\" class=\"sme-arrange-stack-h\" tabindex=\"0\"\r\n      [class]=\"buttons[currentStartButtonIndex]?.class\"\r\n      [class.sme-button-auto-width]=\"buttonAutoWidth\"\r\n      [disabled]=\"checkStartDisabled(currentStartButtonIndex)\"\r\n      (click)=\"onStartButtonClick()\">\r\n      <span *ngIf=\"showIcons\" class=\"sme-icon\" [class]=\"leftIcon\"></span>\r\n      <span class=\"sme-position-flex-auto sme-position-flex-grow-start sme-arrange-ellipsis sme-action-button-text-span\">\r\n        {{ buttons[currentStartButtonIndex] ? buttons[currentStartButtonIndex].label : strings.MsftSmeShell.Angular.Wizard.Lite.Actions.previous }}</span>\r\n    </button>\r\n  </span>\r\n  <button type=\"button\" aria-live=\"polite\" class=\"sme-arrange-stack-h\" tabindex=\"0\"\r\n    [class]=\"buttons[currentStartButtonIndex]?.class\"\r\n    [class.sme-button-auto-width]=\"buttonAutoWidth\"\r\n    [disabled]=\"checkEndDisabled(currentStartButtonIndex)\"\r\n    (click)=\"onEndButtonClick()\">\r\n    <span class=\"sme-position-flex-auto sme-position-flex-grow-start sme-arrange-ellipsis sme-action-button-text-span\">\r\n      {{ buttons[currentStartButtonIndex + 2] ? buttons[currentStartButtonIndex + 2].label : strings.MsftSmeShell.Angular.Wizard.Lite.Actions.next }}</span>\r\n    <span *ngIf=\"showIcons\" class=\"sme-icon\" [class]=\"rightIcon\"></span>\r\n  </button>\r\n</div>\r\n","import { Component, EventEmitter, Injector, Input, Output } from '@angular/core';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { CoreBaseComponent } from '../../common/base.component';\r\n\r\nexport interface WizardNavigationButtonData {\r\n    /**\r\n     * The label for the button\r\n     */\r\n    label: string;\r\n\r\n    /**\r\n     * The space separated strings for classes.\r\n     * Example: 'sme-class-a sme-class-b'.\r\n     */\r\n    class?: string;\r\n    iconStart?: string;\r\n    iconEnd?: string;\r\n}\r\n\r\n@Component({\r\n    selector: 'sme-wizard-navigation-button',\r\n    templateUrl: './wizard-navigation-button.component.html'\r\n})\r\nexport class WizardNavigationButtonComponent extends CoreBaseComponent {\r\n    protected get logSourceName() {\r\n        return 'WizardNavigationButtonComponent';\r\n    }\r\n\r\n    /**\r\n     * The internal buttons object\r\n     */\r\n    public buttonsInternal: WizardNavigationButtonData[] = [];\r\n\r\n    public render = false;\r\n\r\n    private currentStartButtonIndexInternal: number;\r\n\r\n    @Input()\r\n    public showIcons = true;\r\n\r\n    @Input()\r\n    public leftIcon = 'sme-icon-chevronLeft';\r\n\r\n    @Input()\r\n    public rightIcon = 'sme-icon-chevronRight';\r\n\r\n    @Input()\r\n    public buttonAutoWidth = true;\r\n\r\n    /**\r\n     * Getter buttons\r\n     */\r\n    public get buttons(): WizardNavigationButtonData[] {\r\n        return this.buttonsInternal;\r\n    }\r\n\r\n    /**\r\n     * Setter buttons\r\n     */\r\n    @Input()\r\n    public set buttons(input: WizardNavigationButtonData[]) {\r\n        if (!input || input.length < 2) {\r\n            this.reset();\r\n            this.buttonsInternal = [];\r\n        } else {\r\n            this.buttonsInternal = input;\r\n            this.currentStartButtonIndexInternal = -1;\r\n        }\r\n\r\n        this.render = this.buttons && this.buttons.length >= 2;\r\n    }\r\n\r\n    /**\r\n     * Getter currentStartButtonIndex\r\n     */\r\n    public get currentStartButtonIndex(): number {\r\n        return this.currentStartButtonIndexInternal;\r\n    }\r\n\r\n    /**\r\n     * Setter currentStartButtonIndex\r\n     */\r\n    public set currentStartButtonIndex(input: number) {\r\n        if (typeof input !== 'number') {\r\n            Logging.log({\r\n                consoleGroupHeader: 'WizardNavigationButtonComponent',\r\n                level: LogLevel.Error,\r\n                message: 'non number input was passed in.',\r\n                source: 'BannerComponent.set.currentStartButtonIndex()'\r\n            });\r\n        }\r\n\r\n        this.currentStartButtonIndexInternal = input;\r\n    }\r\n\r\n    private readonly defaultStartIndex = -2;\r\n\r\n    /**\r\n     * It emits the start button clicked event.\r\n     */\r\n    @Output()\r\n    public startButtonClicked: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * It emits the end button clicked event.\r\n     */\r\n    @Output()\r\n    public endButtonClicked: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * It checks the enable/disable state for the start button\r\n     * @param index The current index for wizard start button\r\n     * @returns true for enable and false for disable\r\n     */\r\n    public checkStartDisabled(index: number): boolean {\r\n        return index < 0;\r\n    }\r\n\r\n    /**\r\n     * It checks the enable/disable state for the end button\r\n     * @param index The current index for wizard end button\r\n     * @returns true for enable and false for disable\r\n     */\r\n    public checkEndDisabled(index: number): boolean {\r\n        return index >= this.buttons.length - 2;\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n\r\n        this.currentStartButtonIndexInternal = this.defaultStartIndex;\r\n    }\r\n\r\n    /**\r\n     * It resets the current start button index to -2 if no button objects,\r\n     * Otherwise it sets the button index to 0.\r\n     */\r\n    public reset() {\r\n        this.currentStartButtonIndex = this.defaultStartIndex;\r\n\r\n        if (this.buttons.length >= 2) {\r\n            this.currentStartButtonIndex = 0;\r\n            this.render = true;\r\n        } else {\r\n            this.render = false;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It updates the component by label name, this is tied to pivot tab component clicking events.\r\n     * @param label the label name.\r\n     */\r\n    public updateStartIndexByLabel(label: string): void {\r\n        const buttons = this.buttons.map((b) => {\r\n            return b.label;\r\n        });\r\n\r\n        const activatedButtonIndex = buttons.indexOf(label);\r\n\r\n        if (activatedButtonIndex === -1 || activatedButtonIndex >= buttons.length) {\r\n            return;\r\n        }\r\n\r\n        this.currentStartButtonIndexInternal = activatedButtonIndex - 1;\r\n    }\r\n\r\n    /**\r\n     * It handles the start index button click\r\n     */\r\n    public onStartButtonClick() {\r\n        if (this.currentStartButtonIndex > this.defaultStartIndex) {\r\n            this.currentStartButtonIndex -= 1;\r\n        }\r\n\r\n        this.startButtonClicked.emit();\r\n    }\r\n\r\n    /**\r\n     * It handles the end index button click\r\n     */\r\n    public onEndButtonClick() {\r\n        if (this.currentStartButtonIndex <= this.buttons.length - 1) {\r\n            this.currentStartButtonIndex += 1;\r\n        }\r\n\r\n        this.endButtonClicked.emit();\r\n    }\r\n\r\n    /**\r\n     * It gets the current start index button label.\r\n     * @returns the label string.\r\n     */\r\n    public getCurrentStartButtonLabel(): string {\r\n        return this.getButtonLabel(this.currentStartButtonIndex);\r\n    }\r\n\r\n    /**\r\n     * It gets the current activated button label.\r\n     * @returns the label string.\r\n     */\r\n    public getCurrentActivatedButtonLabel(): string {\r\n        return this.getButtonLabel(this.currentStartButtonIndex + 1);\r\n    }\r\n\r\n    /**\r\n     * It gets the current end index button label.\r\n     * @returns the label string.\r\n     */\r\n    public getCurrentEndButtonLabel(): string {\r\n        return this.getButtonLabel(this.currentStartButtonIndex + 2);\r\n    }\r\n\r\n    /**\r\n     * It gets the button label.\r\n     * @param index the index for label.\r\n     * @returns the label string.\r\n     */\r\n    private getButtonLabel(index: number): string {\r\n        if (this.currentStartButtonIndex <= this.defaultStartIndex || this.currentStartButtonIndex > this.buttons.length - 1) {\r\n            return;\r\n        }\r\n\r\n        return this.buttons[index]?.label;\r\n    }\r\n}\r\n","<div class=\"sme-arrange-wrapstack-h sme-position-stretch-h sme-focus-zone\" *ngIf=\"displayReviewButton || displayWizardButton || displayExitButton\">\r\n  <button [disabled]=\"isReviewButtonDisabled\" class=\"sme-button-primary\" (click)=\"onReviewButtonClicked($event)\" tabindex=\"0\" *ngIf=\"displayReviewButton\">\r\n    <span class=\"sme-position-flex-auto sme-position-flex-grow-start sme-arrange-ellipsis sme-action-button-text-span\">\r\n      {{ reviewButtonTextForRendering }}</span>\r\n  </button>\r\n  <sme-wizard-navigation-button #wizardButton class=\"sme-padding-left-lg sme-focus-zone\" *ngIf=\"displayWizardButton\"\r\n    [buttons]=\"buttons\"\r\n    (startButtonClicked)=\"onPrevButtonClicked($event)\"\r\n    (endButtonClicked)=\"onNextButtonClicked($event)\"></sme-wizard-navigation-button>\r\n  <button class=\"sme-layout-button-flex-end\" (click)=\"onExitButtonClicked($event)\" tabindex=\"0\" *ngIf=\"displayExitButton\">\r\n    <span class=\"sme-position-flex-auto sme-position-flex-grow-start sme-arrange-ellipsis sme-action-button-text-span\">\r\n      {{ exitButtonTextForRendering }}</span>\r\n  </button>\r\n</div>\r\n","import { AfterContentInit, Component, EventEmitter, Injector, Input, Output, ViewChild } from '@angular/core';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { CoreBaseComponent } from '../../../../common/base.component';\r\nimport { PivotTabComponent } from '../../../../pivot';\r\nimport { WizardNavigationButtonComponent, WizardNavigationButtonData } from '../../../../wizard-lite/wizard-navigation-button/wizard-navigation-button.component';\r\n\r\n@Component({\r\n    selector: 'sme-wizard-lite-footer-template',\r\n    templateUrl: './sme-wizard-lite-footer-template.component.html'\r\n})\r\nexport class SmeWizardLiteFooterTemplateComponent extends CoreBaseComponent implements AfterContentInit {\r\n    protected get logSourceName() {\r\n        return 'SmeWizardLiteFooterTemplateComponent';\r\n    }\r\n\r\n    /**\r\n     * Whether to display the exit button.\r\n     */\r\n    @Input()\r\n    public displayExitButton = true;\r\n\r\n    /**\r\n     * Whether to display the wizard button.\r\n     */\r\n    @Input()\r\n    public displayWizardButton = true;\r\n\r\n    /**\r\n     * Whether to display the review button.\r\n     */\r\n    @Input()\r\n    public displayReviewButton = true;\r\n\r\n    /**\r\n     * The text for the review button.\r\n     */\r\n    @Input()\r\n    public reviewButtonText: string;\r\n\r\n    /**\r\n     * Whether the review button is disabled.\r\n     */\r\n    @Input()\r\n    public isReviewButtonDisabled = false;\r\n\r\n    /**\r\n     * The text for the exit button.\r\n     */\r\n    @Input()\r\n    public exitButtonText: string;\r\n\r\n    /**\r\n     * The output event emitter for the review button clicked event.\r\n     */\r\n    @Output() reviewButtonClickedEventEmitter = new EventEmitter<any>();\r\n\r\n    /**\r\n     * The output event emitter for the exit button clicked event.\r\n     */\r\n    @Output() exitButtonClickedEventEmitter = new EventEmitter<any>();\r\n\r\n    /**\r\n     * The output event emitter for the prev button clicked event.\r\n     */\r\n    @Output() prevButtonClickedEventEmitter = new EventEmitter<any>();\r\n\r\n    /**\r\n     * The output event emitter for the next button clicked event.\r\n     */\r\n    @Output() nextButtonClickedEventEmitter = new EventEmitter<any>();\r\n\r\n    /**\r\n     * The view child for wizard button element.\r\n     */\r\n    @ViewChild(WizardNavigationButtonComponent)\r\n    public wizardButton: WizardNavigationButtonComponent;\r\n\r\n    /**\r\n     * Setter buttons object.\r\n     */\r\n    public set buttons(buttons: WizardNavigationButtonData[]) {\r\n        this.buttonsInternal = buttons;\r\n    }\r\n\r\n    /**\r\n     * Getter button object.\r\n     */\r\n    public get buttons(): WizardNavigationButtonData[] {\r\n        return this.buttonsInternal;\r\n    }\r\n\r\n    /**\r\n     * Getter for the review button text.\r\n     */\r\n    public get reviewButtonTextForRendering() {\r\n        return  this.reviewButtonText ?? this.strings.MsftSmeShell.Angular.Wizard.Lite.FooterTemplate.review;\r\n    }\r\n\r\n    /**\r\n     * Getter for the exit button text.\r\n     */\r\n    public get exitButtonTextForRendering() {\r\n        return this.exitButtonText ?? this.strings.MsftSmeShell.Angular.Wizard.Lite.FooterTemplate.exit;\r\n    }\r\n\r\n    /**\r\n     * Internal buttons.\r\n     */\r\n    private buttonsInternal: WizardNavigationButtonData[] = [];\r\n\r\n    constructor(\r\n        injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    /**\r\n     * It handles the on selection changed event from the external pivot tab component.\r\n     * @param tab the current selected pivot tab.\r\n     * @returns void.\r\n     */\r\n    public onSelectionChanged(tab: PivotTabComponent): void {\r\n        if (!tab || !tab.label) {\r\n            return;\r\n        }\r\n\r\n        if (tab.label === this.wizardButton.getCurrentActivatedButtonLabel()) {\r\n            return;\r\n        }\r\n\r\n        this.wizardButton.updateStartIndexByLabel(tab.label);\r\n    }\r\n\r\n    /**\r\n     * The on prev button clicked event handler.\r\n     * @param $event the click event\r\n     */\r\n    @Yield()\r\n    public onPrevButtonClicked($event) {\r\n        if (!this.wizardButton) {\r\n            return;\r\n        }\r\n\r\n        this.prevButtonClickedEventEmitter.emit($event);\r\n    }\r\n\r\n    /**\r\n     * The on next button clicked event handler.\r\n     * @param $event the click event\r\n     */\r\n    @Yield()\r\n    public onNextButtonClicked($event) {\r\n        if (!this.wizardButton) {\r\n            return;\r\n        }\r\n\r\n        this.nextButtonClickedEventEmitter.emit($event);\r\n    }\r\n\r\n    /**\r\n     * The on review button clicked event handler.\r\n     * @param $event the click event\r\n     */\r\n    @Yield()\r\n    public onReviewButtonClicked($event) {\r\n        this.reviewButtonClickedEventEmitter.emit($event);\r\n    }\r\n\r\n    /**\r\n     * The on exit button clicked event handler.\r\n     * @param $event the click event\r\n     */\r\n    @Yield()\r\n    public onExitButtonClicked($event) {\r\n        this.exitButtonClickedEventEmitter.emit($event);\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { WizardNavigationButtonComponent } from './wizard-navigation-button.component';\r\n\r\n@NgModule({\r\n    exports: [\r\n        WizardNavigationButtonComponent\r\n    ],\r\n    declarations: [\r\n        WizardNavigationButtonComponent\r\n    ],\r\n    imports: [\r\n        RouterModule,\r\n        CommonModule\r\n    ]\r\n})\r\nexport class WizardNavigationButtonModule { }\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { PivotModule } from '../../../../pivot/pivot.module';\r\nimport { WizardNavigationButtonModule } from '../../../../wizard-lite/wizard-navigation-button/wizard-navigation-button.module';\r\nimport { SmeWizardLiteFooterTemplateComponent } from './sme-wizard-lite-footer-template.component';\r\n\r\n@NgModule({\r\n    exports: [SmeWizardLiteFooterTemplateComponent],\r\n    declarations: [SmeWizardLiteFooterTemplateComponent],\r\n    imports: [\r\n        CommonModule,\r\n        PivotModule,\r\n        WizardNavigationButtonModule\r\n    ]\r\n})\r\nexport class SmeWizardLiteFooterTemplateModule { }\r\n","import { Component, Injector } from '@angular/core';\r\nimport { CoreBaseComponent } from '../../common/base.component';\r\n\r\n@Component({\r\n    selector: 'sme-ux-page',\r\n    template: `<ng-content></ng-content>`\r\n})\r\nexport class SmeUxPageComponent extends CoreBaseComponent {\r\n    protected get logSourceName() {\r\n        return 'SmeUxPage';\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { SmeUxContentModule } from '../sme-ux-content/sme-ux-content.module';\r\nimport { SmeUxFooterModule } from '../sme-ux-footer/sme-ux-footer.module';\r\nimport { SmeUxPageComponent } from './sme-ux-page.component';\r\n\r\n@NgModule({\r\n    exports: [SmeUxPageComponent],\r\n    declarations: [SmeUxPageComponent],\r\n    imports: [\r\n        CommonModule,\r\n        SmeUxContentModule,\r\n        SmeUxFooterModule\r\n    ]\r\n})\r\nexport class SmeUxPageModule { }\r\n","import { Type } from '@angular/core';\r\nimport { WizardStepOptions } from './wizard-step-options';\r\n\r\n/**\r\n * The representation of a step in the wizard component.\r\n */\r\nexport class WizardStep {\r\n    /**\r\n     * The display name of the step.\r\n     */\r\n    public name: string;\r\n\r\n    /**\r\n     * Whether or not the step is completed.\r\n     */\r\n    private isCompleted: boolean;\r\n\r\n    /**\r\n     * Whether or not the step is disabled.\r\n     */\r\n    private isDisabled: boolean;\r\n\r\n    /**\r\n     * Initializes a new instance of the WizardStep class.\r\n     *\r\n     * @param dynamicStepComponent - The component to dynamically render when the step is selected.\r\n     * @param options - The options to supply the step with data.\r\n     */\r\n    constructor(public readonly dynamicStepComponent: Type<any>, options: WizardStepOptions) {\r\n        this.isDisabled = false;\r\n        this.name = options.name;\r\n        this.isCompleted = false;\r\n    }\r\n\r\n    /**\r\n     * Gets whether or not the step is completed.\r\n     */\r\n    public get completed(): boolean {\r\n        return this.isCompleted;\r\n    }\r\n\r\n    /**\r\n     * Sets whether or not the step is completed.\r\n     */\r\n    public set completed(value: boolean) {\r\n        this.isCompleted = value;\r\n    }\r\n\r\n    /**\r\n     * Gets whether or not the step is disabled.\r\n     */\r\n    public get disabled(): boolean {\r\n        return this.isDisabled;\r\n    }\r\n\r\n    /**\r\n     * Sets whether or not the step is disabled.\r\n     */\r\n    public set disabled(value: boolean) {\r\n        this.isDisabled = value;\r\n    }\r\n\r\n    /**\r\n     * Completes the step.\r\n     */\r\n    public complete(): void {\r\n        this.isCompleted = true;\r\n    }\r\n\r\n    /**\r\n     * Fails the step.\r\n     */\r\n    public fail(): void {\r\n        this.isCompleted = false;\r\n    }\r\n}\r\n","import { WizardStageOptions } from './wizard-stage-options';\r\nimport { WizardStep } from './wizard-step';\r\n\r\n/**\r\n * The representation of a stage in the wizard component.\r\n */\r\nexport class WizardStage {\r\n    /**\r\n     * The display name of the stage.\r\n     */\r\n    public name: string;\r\n\r\n    /**\r\n     * The array of WizardSteps within the stage.\r\n     */\r\n    private stageSteps: WizardStep[];\r\n\r\n    /**\r\n     * Whether or not the stage is completed.\r\n     */\r\n    private isCompleted: boolean;\r\n\r\n    /**\r\n     * Whether or not the stage is active.\r\n     */\r\n    private isActive: boolean;\r\n\r\n    /**\r\n     * Initializes a new instance of the WizardStage class.\r\n     *\r\n     * @param options - The options to supply the stage with data.\r\n     */\r\n    constructor(options: WizardStageOptions) {\r\n        this.name = options.name;\r\n        this.steps = options.steps;\r\n        this.isCompleted = false;\r\n    }\r\n\r\n    /**\r\n     * Gets the array of WizardSteps.\r\n     */\r\n    public get steps(): WizardStep[] {\r\n        return this.stageSteps;\r\n    }\r\n\r\n    /**\r\n     * Sets the array of WizardSteps.\r\n     */\r\n    public set steps(value: WizardStep[]) {\r\n        this.stageSteps = value;\r\n    }\r\n\r\n    /**\r\n     * Gets whether or not the stage is active.\r\n     */\r\n    public get active(): boolean {\r\n        return this.isActive;\r\n    }\r\n\r\n    /**\r\n     * Sets whether or not the stage is active.\r\n     */\r\n    public set active(value: boolean) {\r\n        this.isActive = value;\r\n    }\r\n\r\n    /**\r\n     * Gets whether or not the stage is completed.\r\n     */\r\n    public get completed(): boolean {\r\n        return this.isCompleted;\r\n    }\r\n    public set completed(value: boolean) {\r\n        this.isCompleted = value;\r\n    }\r\n\r\n    /**\r\n     * Completes the stage.\r\n     */\r\n    public complete(): void {\r\n        this.isCompleted = true;\r\n    }\r\n}\r\n","import { Type } from '@angular/core';\r\nimport { Strings } from '../../generated/strings';\r\nimport { BannerItem } from '../banner';\r\nimport { SmeHeaderData } from '../header';\r\nimport { WizardStep } from './models';\r\nimport { WizardBuilderInterface } from './models/wizard-builder-interface';\r\nimport { WizardStage } from './models/wizard-stage';\r\n\r\nexport class WizardBuilder implements WizardBuilderInterface {\r\n\r\n    /**\r\n     * Resource strings for the component.\r\n     */\r\n    public get strings(): Strings {\r\n        return MsftSme.getStrings<Strings>();\r\n    }\r\n\r\n    /**\r\n     * The stages of the wizard.\r\n     */\r\n    private wizardStages: WizardStage[];\r\n\r\n    private wizardBannerItems: BannerItem[];\r\n\r\n    /**\r\n     * The finish view of the wizard.\r\n     */\r\n    private wizardFinishView: WizardStep;\r\n\r\n    /**\r\n     * The heading of the wizard.\r\n     */\r\n    private wizardHeading: string;\r\n\r\n    /**\r\n     * The subtitle for the heading of the wizard.\r\n     */\r\n    private wizardHeaderData: SmeHeaderData;\r\n\r\n    /**\r\n     * The title of exit button.\r\n     */\r\n    private wizardExitButtonTitle: string;\r\n\r\n    /**\r\n     * The title of finish button.\r\n     */\r\n    private wizardFinishButtonTitle: string;\r\n\r\n    /**\r\n     * Whether the steps list side pane will be visible.\r\n     */\r\n    private wizardHideStepsListSidePane: boolean;\r\n\r\n    /**\r\n     * Whether the wizard has an exit button.\r\n     */\r\n    private wizardShowExitButton: boolean;\r\n\r\n    /**\r\n     * Whether a confirmation dialog should be shown when 'Exit' is clicked.\r\n     */\r\n    private wizardShowExitConfirmationDialog: boolean;\r\n\r\n    /**\r\n     * Whether the wizard is in preview.\r\n     */\r\n    private wizardIsInPreviewState: boolean;\r\n\r\n    /**\r\n     * Whether the wizard can navigate to a previous step.\r\n     */\r\n    private wizardCanNavigateToPreviousStep: boolean;\r\n\r\n    /**\r\n     * Initializes a new instance of the WizardBuilder class.\r\n     */\r\n    constructor() {\r\n        this.hideStepsListSidePane = false;\r\n        this.showExitButton = true;\r\n        this.showExitConfirmationDialog = true;\r\n        this.isInPreviewState = false;\r\n        this.canNavigateToPreviousStep = true;\r\n        this.wizardStages = [];\r\n        this.wizardBannerItems = [];\r\n    }\r\n\r\n    /**\r\n     * Gets the array of wizard stages (each containing the corresponding wizard steps).\r\n     */\r\n    public get stages(): WizardStage[] {\r\n        return this.wizardStages;\r\n    }\r\n\r\n    public get bannerItems(): BannerItem[] {\r\n        return this.wizardBannerItems;\r\n    }\r\n\r\n    /**\r\n     * Gets the wizard finish view.\r\n     */\r\n    public get finishView(): WizardStep {\r\n        return this.wizardFinishView;\r\n    }\r\n\r\n    /**\r\n     * Sets the wizard finish view.\r\n     */\r\n    public set finishView(value: WizardStep) {\r\n        this.wizardFinishView = value;\r\n    }\r\n\r\n    /**\r\n     * Gets the wizard heading.\r\n     */\r\n    public get heading(): string {\r\n        return this.wizardHeading;\r\n    }\r\n\r\n    /**\r\n     * Sets the wizard heading.\r\n     */\r\n    public set heading(value: string) {\r\n        this.wizardHeading = value;\r\n    }\r\n\r\n    /**\r\n     * Gets the heading subtitle.\r\n     */\r\n    public get headerData(): SmeHeaderData {\r\n        return this.wizardHeaderData;\r\n    }\r\n\r\n    /**\r\n     * Sets the heading subtitle.\r\n     */\r\n    public set headerData(value: SmeHeaderData) {\r\n        this.wizardHeaderData = value;\r\n    }\r\n\r\n    /**\r\n     * Gets the wizard exit button title.\r\n     */\r\n    public get exitButtonTitle(): string {\r\n        return this.wizardExitButtonTitle;\r\n    }\r\n\r\n    /**\r\n     * Sets the wizard exit button title.\r\n     */\r\n    public set exitButtonTitle(value: string) {\r\n        this.wizardExitButtonTitle = value;\r\n    }\r\n\r\n    /**\r\n     * Gets the wizard finish button title.\r\n     */\r\n    public get finishButtonTitle(): string {\r\n        return this.wizardFinishButtonTitle;\r\n    }\r\n\r\n    /**\r\n     * Sets the wizard finish button title.\r\n     */\r\n    public set finishButtonTitle(value: string) {\r\n        this.wizardFinishButtonTitle = value;\r\n    }\r\n\r\n    /**\r\n     * Gets the boolean indicating whether the steps list will be hidden (default is false).\r\n     */\r\n    public get hideStepsListSidePane(): boolean {\r\n        return this.wizardHideStepsListSidePane;\r\n    }\r\n\r\n    /**\r\n     * Sets whether the steps list will be hidden or not (useful if there is just one step per stage for all stages).\r\n     */\r\n    public set hideStepsListSidePane(value: boolean) {\r\n        this.wizardHideStepsListSidePane = value;\r\n    }\r\n\r\n    /**\r\n     * Gets the boolean indicating whether a exit button is shown throughout the wizard.\r\n     */\r\n    public get showExitButton(): boolean {\r\n        return this.wizardShowExitButton;\r\n    }\r\n\r\n    /**\r\n     * Sets the boolean indicating whether a exit button is shown throughout the wizard.\r\n     */\r\n    public set showExitButton(value: boolean) {\r\n        this.wizardShowExitButton = value;\r\n    }\r\n\r\n    /**\r\n     * Gets the boolean indicating whether a confirmation dialog will be shown when 'Exit' is clicked.\r\n     */\r\n    public get showExitConfirmationDialog(): boolean {\r\n        return this.wizardShowExitConfirmationDialog;\r\n    }\r\n\r\n    /**\r\n     * Sets the boolean indicating whether a confirmation dialog will be shown when 'Exit' is clicked.\r\n     */\r\n    public set showExitConfirmationDialog(value: boolean) {\r\n        this.wizardShowExitConfirmationDialog = value;\r\n    }\r\n\r\n    /**\r\n     * Gets preview status.\r\n     */\r\n    public get isInPreviewState(): boolean {\r\n        return this.wizardIsInPreviewState;\r\n    }\r\n\r\n    /**\r\n     * Sets preview status.\r\n     */\r\n    public set isInPreviewState(value: boolean) {\r\n        this.wizardIsInPreviewState = value;\r\n    }\r\n\r\n    /**\r\n     * Gets if navigating to a previous step is allowed.\r\n     */\r\n    public get canNavigateToPreviousStep(): boolean {\r\n        return this.wizardCanNavigateToPreviousStep;\r\n    }\r\n\r\n    /**\r\n     * Sets if navigating to a previous step is allowed.\r\n     */\r\n    public set canNavigateToPreviousStep(value: boolean) {\r\n        this.wizardCanNavigateToPreviousStep = value;\r\n    }\r\n\r\n    /**\r\n     * Creates a new WizardStep, and adds it to the specified WizardStage.\r\n     * If the specified WizardStage does not exist, it will be created.\r\n     *\r\n     * @param stepName - The name for the new WizardStep.\r\n     * @param stepComponentType - The componentType for the new WizardStep.\r\n     * @param stageName - The name of the WizardStage in which this new WizardStep should be added.\r\n     */\r\n    public addStepInStage(stepName: string, stepComponentType: Type<any>, stageName: string): void {\r\n\r\n        const step = new WizardStep(stepComponentType, { name: stepName });\r\n        const existingStage = this.stages.find(eachStage => eachStage.name === stageName);\r\n\r\n        if (existingStage) {\r\n            existingStage.steps.push(step);\r\n        } else {\r\n            this.stages.push(new WizardStage({ name: stageName, steps: [step] }));\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Creates a new WizardStep, and adds it to the specified WizardStage at the specified index.\r\n     * If the specified WizardStage does not exist, it will be created.\r\n     *\r\n     * @param stepName - The name for the new WizardStep.\r\n     * @param stepComponentType - The componentType for the new WizardStep.\r\n     * @param stageName - The name of the WizardStage in which this new WizardStep should be added.\r\n     * @param index - The step index to insert step (will increase index of existing step at given index by 1 if any)\r\n     */\r\n    public addStepInStageByIndex(stepName: string, stepComponentType: Type<any>, stageName: string, index: number): void {\r\n\r\n        const step = new WizardStep(stepComponentType, { name: stepName });\r\n        const existingStage = this.stages.find(eachStage => eachStage.name === stageName);\r\n\r\n        if (existingStage) {\r\n            if (index > existingStage.steps.length - 1) {\r\n                existingStage.steps.push(step);\r\n            } else {\r\n                existingStage.steps.splice(index, 0, step);\r\n            }\r\n        } else {\r\n            this.stages.push(new WizardStage({ name: stageName, steps: [step] }));\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Removes WizardStep at specified index in specified stage.\r\n     * If the specified stage or index does not exist, false will be returned.\r\n     *\r\n     * @param stageName - The name of the Wizard stage in which to remove the step.\r\n     * @param index - The step index to be removed (will decrease indices of proceeding steps)\r\n     * @returns - True if step is removed successfully, false otherwise.\r\n     */\r\n    public removeStepInStageByIndex(stageName: string, index: number): boolean {\r\n        const stage = this.stages.find(eachStage => eachStage.name === stageName);\r\n\r\n        if (stage && index < stage.steps.length) {\r\n            stage.steps.splice(index, 1);\r\n            return true;\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Creates a new WizardStage at the specified index.\r\n     *\r\n     * @param stageName - The Name for the new WizardStage\r\n     * @param index - The stage index to insert stage (will increase index of existing stage at given index by 1 if any)\r\n     */\r\n    public addStageByIndex(stageName: string, index: number): void {\r\n        if (index > this.stages.length - 1) {\r\n            this.stages.push(new WizardStage({ name: stageName, steps: [] }));\r\n        } else {\r\n            this.stages.splice(index, 0, new WizardStage({ name: stageName, steps: [] }));\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Adds banner items to the entire wizard.\r\n     *\r\n     * @param item - The Banner Item\r\n    */\r\n    public addWizardBannerItems(item: BannerItem): void {\r\n        this.wizardBannerItems.push(item);\r\n    }\r\n\r\n    /**\r\n     * Clears all steps from given stage.\r\n     * If the specified stage does not exist, false will be returned.\r\n     *\r\n     * @param stageName - The name of the Wizard stage to clear steps from.\r\n     * @returns - True if stage is cleared successfully, false otherwise.\r\n     */\r\n    public clearStage(stageName: string): boolean {\r\n        const stage = this.stages.find(eachStage => eachStage.name === stageName);\r\n\r\n        if (stage) {\r\n            stage.steps = [];\r\n            return true;\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Creates a new WizardStep for the Finish view using the component specified.\r\n     */\r\n    public addFinishView(stepComponentType: Type<any>) {\r\n        this.finishView = new WizardStep(stepComponentType, { name: this.strings.MsftSmeShell.Angular.Common.finish });\r\n    }\r\n}\r\n","import { Type } from '@angular/core';\r\nimport { WizardBuilderInterface } from './models/wizard-builder-interface';\r\nimport { WizardNavigationInterface } from './models/wizard-navigation-interface';\r\nimport { WizardNavigationSet } from './models/wizard-navigation-set';\r\n\r\n/**\r\n * Wizard navigation information class.\r\n */\r\nexport class WizardNavigationInformation {\r\n    public static readonly NoStageNoStep = -1;\r\n    private wizard: WizardNavigationInterface;\r\n    private wizardBuilder: WizardBuilderInterface;\r\n\r\n    /**\r\n     * The history of navigation of stage and step.\r\n     */\r\n    private history: WizardNavigationSet[] = [];\r\n\r\n    /**\r\n     * The initialization state.\r\n     */\r\n    private initialized = false;\r\n\r\n    /**\r\n     * Initializes a new instance of the WizardNavigationInformation class.\r\n     *\r\n     * @param wizard the wizard component instance.\r\n     */\r\n    constructor(wizard: WizardNavigationInterface, wizardBuilder: WizardBuilderInterface) {\r\n        this.wizard = wizard;\r\n        this.wizardBuilder = wizardBuilder;\r\n    }\r\n\r\n    /**\r\n     * Gets the navigation history data.\r\n     */\r\n    public get navigationHistory(): WizardNavigationSet[] {\r\n        return this.history;\r\n    }\r\n\r\n    /**\r\n     * Gets the prior navigation set.\r\n     */\r\n    public get priorSet(): WizardNavigationSet {\r\n        const length = this.history.length;\r\n        if (length < 2) {\r\n            return { stage: WizardNavigationInformation.NoStageNoStep, step: WizardNavigationInformation.NoStageNoStep };\r\n        }\r\n\r\n        return this.history[length - 2];\r\n    }\r\n\r\n    /**\r\n     * Gets the current navigation set.\r\n     */\r\n    public get currentSet(): WizardNavigationSet {\r\n        const length = this.history.length;\r\n        if (length === 0) {\r\n            return { stage: WizardNavigationInformation.NoStageNoStep, step: WizardNavigationInformation.NoStageNoStep };\r\n        }\r\n\r\n        return this.history[length - 1];\r\n    }\r\n\r\n    /**\r\n     * Gets if it was Next button click.\r\n     */\r\n    public get wasNext(): boolean {\r\n        const prior = this.priorSet;\r\n        if (prior.stage === WizardNavigationInformation.NoStageNoStep) {\r\n            return false;\r\n        }\r\n\r\n        const current = this.currentSet;\r\n        if (current.stage === WizardNavigationInformation.NoStageNoStep) {\r\n            return false;\r\n        }\r\n\r\n        if (current.stage === prior.stage) {\r\n            return current.step === prior.step + 1;\r\n        }\r\n\r\n        if (current.stage === prior.stage + 1) {\r\n            const priorLastStep = this.wizard.stages[prior.stage].steps.length - 1;\r\n            return current.step === 0 && prior.step === priorLastStep;\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Gets if it was Back button click.\r\n     */\r\n    public get wasBack(): boolean {\r\n        const prior = this.priorSet;\r\n        if (prior.stage === WizardNavigationInformation.NoStageNoStep) {\r\n            return false;\r\n        }\r\n\r\n        const current = this.currentSet;\r\n        if (current.stage === WizardNavigationInformation.NoStageNoStep) {\r\n            return false;\r\n        }\r\n\r\n        if (current.stage === prior.stage) {\r\n            return current.step === prior.step - 1;\r\n        }\r\n\r\n        if (current.stage === prior.stage - 1) {\r\n            const currentLastStep = this.wizard.stages[current.stage].steps.length - 1;\r\n            return current.step === currentLastStep && prior.step === 0;\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Gets if it's on the last step of current stage.\r\n     */\r\n    public get onLastStepOfStage(): boolean {\r\n        const current = this.currentSet;\r\n        return current.step === (this.wizard.stages[current.stage].steps.length - 1);\r\n    }\r\n\r\n    /**\r\n     * Gets if it's on the last stage.\r\n     */\r\n    public get onLastStage(): boolean {\r\n        const current = this.currentSet;\r\n        return this.wizard.stages.length - 1 === current.stage;\r\n    }\r\n\r\n    /**\r\n     * Gets if it's on last steps of last stage.\r\n     */\r\n    public get onLastStepOfLastStage(): boolean {\r\n        return this.onLastStage && this.onLastStepOfStage;\r\n    }\r\n\r\n    /**\r\n     * Set and start new history.\r\n     *\r\n     * @param set the new navigation set.\r\n     */\r\n    public resetHistory(set: WizardNavigationSet = null): void {\r\n        this.initialized = true;\r\n        this.history = [];\r\n        if (set) {\r\n            this.history.push(set);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Push new navigation set to the history.\r\n     *\r\n     * @param set the new navigation set.\r\n     */\r\n    public pushHistory(set: WizardNavigationSet): boolean {\r\n        if (!this.initialized\r\n            || !set\r\n            || MsftSme.isNullOrUndefined(set.stage)\r\n            || MsftSme.isNullOrUndefined(set.step)\r\n            || set.stage === WizardNavigationInformation.NoStageNoStep\r\n            || set.step === WizardNavigationInformation.NoStageNoStep) {\r\n            return false;\r\n        }\r\n\r\n        const current = this.currentSet;\r\n        if (set.stage === current.stage && set.step === current.step) {\r\n            return false;\r\n        }\r\n\r\n        this.history.push(set);\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * Check how many times visited including current set.\r\n     * (it shows '1' if this is the first time visit.)\r\n     *\r\n     * @param set current set.\r\n     */\r\n    public checkHistory(set: WizardNavigationSet = null): number {\r\n        if (!set) {\r\n            set = this.currentSet;\r\n        }\r\n\r\n        const list = this.history.filter(history => history.stage === set.stage && history.step === set.step);\r\n        if (list && list.length > 0) {\r\n            return list.length;\r\n        }\r\n\r\n        return 0;\r\n    }\r\n\r\n    /**\r\n     * Creates a new WizardStep, and adds it to the specified WizardStage.\r\n     * If the specified WizardStage does not exist, it will be created.\r\n     *\r\n     * @param stepName - The name for the new WizardStep.\r\n     * @param stepComponentType - The componentType for the new WizardStep.\r\n     * @param stageName - The name of the WizardStage in which this new WizardStep should be added.\r\n     */\r\n    public addStepInStage(stepName: string, stepComponentType: Type<any>, stageName: string): void {\r\n        this.wizardBuilder.addStepInStage(stepName, stepComponentType, stageName);\r\n    }\r\n\r\n    /**\r\n     * Creates a new WizardStep, and adds it to the specified WizardStage at the specified index.\r\n     * If the specified WizardStage does not exist, it will be created.\r\n     *\r\n     * @param stepName - The name for the new WizardStep.\r\n     * @param stepComponentType - The componentType for the new WizardStep.\r\n     * @param stageName - The name of the WizardStage in which this new WizardStep should be added.\r\n     * @param index - The step index to insert step (will increase index of existing step at given index by 1 if any)\r\n     */\r\n    public addStepInStageByIndex(stepName: string, stepComponentType: Type<any>, stageName: string, index: number): void {\r\n        this.wizardBuilder.addStepInStageByIndex(stepName, stepComponentType, stageName, index);\r\n    }\r\n\r\n    /**\r\n     * Removes WizardStep at specified index in specified stage.\r\n     * If the specified stage or index does not exist, false will be returned.\r\n     *\r\n     * @param stageName - The name of the Wizard stage in which to remove the step.\r\n     * @param index - The step index to be removed (will decrease indices of proceeding steps)\r\n     * @returns - True if step is removed successfully, false otherwise.\r\n     */\r\n     public removeStepInStageByIndex(stageName: string, index: number): boolean {\r\n        return this.wizardBuilder.removeStepInStageByIndex(stageName, index);\r\n    }\r\n\r\n    /**\r\n     * Creates a new WizardStage at the specified index.\r\n     *\r\n     * @param stageName - The Name for the new WizardStage\r\n     * @param index - The stage index to insert stage (will increase index of existing stage at given index by 1 if any)\r\n     */\r\n    public addStageByIndex(stageName: string, index: number): void {\r\n        this.wizardBuilder.addStageByIndex(stageName, index);\r\n    }\r\n\r\n    /**\r\n     * Clears all steps from given stage.\r\n     * If the specified stage does not exist, false will be returned.\r\n     *\r\n     * @param stageName - The name of the Wizard stage to clear steps from.\r\n     * @returns - True if stage is cleared successfully, false otherwise.\r\n     */\r\n    public clearStage(stageName: string): boolean {\r\n        return this.wizardBuilder.clearStage(stageName);\r\n    }\r\n}\r\n","import { ElementRef } from '@angular/core';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { SmeResponsiveWindowBreakpoints,\r\n    SmeResponsiveWindowData,\r\n    SmeResponsiveWindowManagerComponent } from '../common/sme-responsive-window-manager.component';\r\n\r\nexport class WizardResponsiveWindowManager extends SmeResponsiveWindowManagerComponent {\r\n    /**\r\n     * It determines whether the left panel from the wizard control is expanded based on window size.\r\n     * On phone-down, when resizing the window, isExpanded will always be false.\r\n     */\r\n    public isExpanded = true;\r\n\r\n    /**\r\n     * The wizard control classes on window size changed object.\r\n     */\r\n    private smeWizardFooterClassList = {\r\n        phoneUp: ['sme-padding-horizontal-lg'],\r\n        phoneDown: ['sme-padding-horizontal-md'],\r\n        reflow: []\r\n    };\r\n\r\n    /**\r\n     * Wizard component on window size changed event.\r\n     * @param wizardFooter the footer for the wizard control.\r\n     * @returns void\r\n     */\r\n    @Yield()\r\n    public onWindowSizeChanged(wizardFooter: ElementRef): void {\r\n        if (!this.cssV2) {\r\n            return;\r\n        }\r\n\r\n        const size = this.prevSize;\r\n\r\n        if (!size) {\r\n            return;\r\n        }\r\n\r\n        this.updateParameters(size);\r\n\r\n        if (!wizardFooter) {\r\n            return;\r\n        }\r\n\r\n        if (!size.phoneDown && !size.reflowMode) {\r\n            if (wizardFooter.nativeElement) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeWizardFooterClassList, 'phoneUp', wizardFooter.nativeElement);\r\n            }\r\n        } else if (size.phoneDown) {\r\n            if (wizardFooter.nativeElement) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeWizardFooterClassList, 'phoneDown', wizardFooter.nativeElement);\r\n            }\r\n        } else if (size.reflowMode) {\r\n            if (wizardFooter.nativeElement) {\r\n                this.updateClassArrayOnWindowSize(\r\n                    this.smeWizardFooterClassList, 'reflow', wizardFooter.nativeElement);\r\n            }\r\n        }\r\n    }\r\n\r\n    private updateParameters(size: SmeResponsiveWindowData) {\r\n        this.isExpanded = (size && size.size === SmeResponsiveWindowBreakpoints.PhoneUp);\r\n    }\r\n}\r\n","<div class=\"sme-wizard sme-layout-absolute-phone-up sme-arrange-stack-v sme-position-inset-none\">\r\n  <!-- Heading, can either use the legacy header or the sme-header for advanced feature -->\r\n  <div *ngIf=\"heading && !wizardIsFinished && !headerData\" [attr.aria-readonly]=true\r\n    class=\"sme-arrange-stack-h sme-position-flex-none sme-padding-vertical-sm sme-padding-horizontal-lg sme-border-bottom-sm sme-border-bottom-color-base-80\">\r\n    <h3 id=\"sme-shell-wizard-heading-id\">{{ heading }}</h3>\r\n    <sme-badge type=\"preview\" *ngIf=\"isInPreview\" class=\"sme-margin-left-xs\"></sme-badge>\r\n  </div>\r\n  <sme-header *ngIf=\"!wizardIsFinished && headerData && !heading\"\r\n    [text]=\"headerData.text\" [smeIconClassName]=\"headerData.smeIconClassName\" [subtitle]=\"headerData.subtitle\">\r\n    <sme-badge *ngIf=\"isInPreview\" type=\"preview\"></sme-badge>\r\n  </sme-header>\r\n  <div *ngIf=\"showWizardBanner\">\r\n    <sme-banner [items]=\"bannerItems\"></sme-banner>\r\n  </div>\r\n  <!-- Stages -->\r\n  <div role=\"tablist\" *ngIf=\"!wizardIsFinished\"\r\n    class=\"sme-arrange-stack-h sme-position-flex-none sme-padding-horizontal-lg sme-border-bottom-sm sme-border-bottom-color-base-80 sme-focus-zone sme-arrange-overflow-auto-x\">\r\n    <button *ngFor=\"let stage of stages; let val = index\"\r\n      [title]=\"stage.name\"\r\n      role=\"tab\" tabindex=\"0\" [attr.aria-label]=\"stage.name\" aria-live=\"polite\" type=\"button\" [smeTelemetryDataBlob]=\"telemetryData\" [smeTelemetryId]=\"'wizardStage' + (val + 1)\"\r\n      [class.sme-active]=\"val === stagesArrayIndex\"\r\n      [class.sme-selected]=\"val === stagesArrayIndex\"\r\n      [class.aria-selected]=\"val === stagesArrayIndex\"\r\n      [class.sme-wizard-stage-focus]=\"val === stagesArrayIndex\"\r\n      [disabled]=\"this.stageIndexDisabled(stage, val)\" [smeTelemetryDisableElement] = \"this.stageIndexDisabled(stage, val)\"\r\n      class=\"sme-wizard-stage sme-button-trigger sme-wizard-button-item sme-padding-vertical-sm sme-padding-horizontal-none sme-button-auto-width sme-margin-right-md\"\r\n      [ngClass]=\"{'sme-wizard-stage-completed': stage.completed, 'sme-wizard-stage-clicked': val === stagesArrayIndex, 'sme-wizard-stage-active': stage.active}\"\r\n      (click)=\"onStageClick(val)\">\r\n      <span [ngClass]=\"{'sme-icon sme-icon-accept sme-icon-size-xxs': stage.completed}\"\r\n        class=\"sme-wizard-stage-index sme-position-flex-none\">\r\n        {{ !stage.completed ? val + 1 : '' }}\r\n      </span>\r\n      <span [ngClass]=\"{'sme-font-emphasis1 sme-wizard-stage-active': val === stagesArrayIndex || stage.active,\r\n          'sme-wizard-stage-completed': stage.completed,\r\n          'sme-margin-left-xs': !stage.completed,\r\n          'sme-layout-none': !shouldRenderTextOnSteps}\"\r\n        class=\"sme-position-flex-auto sme-font-body sme-arrange-ellipsis\">\r\n        {{ stage.name }}\r\n      </span>\r\n    </button>\r\n  </div>\r\n\r\n  <div class=\"sme-arrange-stack-h sme-arrange-overflow-auto sme-position-flex-auto sme-wizard-content-container\" [class.sme-wizard-no-left-pane]=\"hideStepsListSidePane\">\r\n    <div *ngIf=\"!wizardIsFinished && !hideStepsListSidePane\"\r\n      class=\"sme-arrange-stack-v sme-position-flex-none sme-focus-zone sme-border-right-sm sme-border-right-color-base-80 sme-wizard-left-pane\">\r\n      <div role=\"tablist\" *ngIf=\"!wizardIsFinished && !hideStepsListSidePane\"\r\n        class=\"sme-padding-vertical-sm sme-position-flex-auto\" [ngClass]=\"{'sme-wizard-left-pane-min-width-expanded': isExpanded}\">\r\n        <button role=\"tab\" *ngFor=\"let step of getStepsForStage(); let index = index\"\r\n          type=\"button\" [ngClass]=\"{'sme-step-active sme-scheme-nav-list-item sme-active sme-color-base-5': index === stepIndex}\"\r\n          class=\"sme-arrange-stack-h sme-wizard-step sme-button-trigger sme-wizard-button-item sme-padding-horizontal-none\r\n          sme-position-stretch-h sme-padding-vertical-xs sme-button-auto-width sme-padding-left-lg sme-padding-right-xs\"\r\n          [disabled]=\"this.stepIndexDisabled(step, index)\" [smeTelemetryDisableElement]=\"this.stepIndexDisabled(step, index)\"\r\n          (click)=\"onStepClick(index)\"\r\n          [smeTelemetryDataBlob]=\"telemetryData\" [smeTelemetryId]=\"'wizardStep' + (index + 1)\"\r\n          [title]=\"isExpanded ? null : step.name\"\r\n          [attr.aria-label]=\"isExpanded ? null : step.name\" aria-live=\"polite\" >\r\n          <span class=\"sme-position-flex-auto sme-position-flex-grow-start  sme-margin-right-xs\">{{ stagesArrayIndex + 1 }}.{{ index + 1 }}</span>\r\n          <span class=\"sme-position-flex-auto sme-position-flex-grow-start sme-arrange-ellipsis\" *ngIf=\"isExpanded\">{{ step.name }}</span>\r\n        </button>\r\n      </div>\r\n      <div class=\"sme-position-flex-none sme-focus-zone\">\r\n        <button\r\n          class=\"split-view-toggle sme-button-trigger sme-button-auto-width sme-position-flex-none sme-layout-float-right\"\r\n          (click)=\"togglePane()\" [attr.aria-expanded]=\"isExpanded\"\r\n          [attr.aria-label]=\"isExpanded ? strings.MsftSmeShell.Angular.Wizard.collapseStepsList : strings.MsftSmeShell.Angular.Wizard.expandStepsList\"\r\n          [title]=\"isExpanded ? strings.MsftSmeShell.Angular.Wizard.collapseStepsList : strings.MsftSmeShell.Angular.Wizard.expandStepsList\">\r\n          <span class=\"sme-icon\"\r\n            [ngClass]=\"{ 'sme-icon-chevronLeft': isExpanded, 'sme-icon-chevronRight': !isExpanded }\"></span>\r\n        </button>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- Step content -->\r\n    <div class=\"sme-focus-zone sme-layout-relative sme-arrange-overflow-auto sme-wizard-content-pane\" [class.sme-wizard-no-left-pane]=\"hideStepsListSidePane\"\r\n      [ngClass]=\"{'sme-padding-inset-lg': currentStepComponent.padContents}\">\r\n      <div *ngIf=\"currentStepComponent.disabled\">\r\n        <sme-page-alert-bar [alert]=\"alert\"></sme-page-alert-bar>\r\n      </div>\r\n      <!-- Don't remove this line! -->\r\n      <!-- The dynamically rendered component looks for #container to render itself as the sibling.! -->\r\n      <div id=\"dynamic-content-container\" #container></div>\r\n    </div>\r\n  </div>\r\n\r\n  <!-- Footer -->\r\n  <div #wizardFooter *ngIf=\"!wizardIsFinished\"\r\n    class=\"sme-layout-relative sme-position-flex-none sme-border-top-sm sme-border-top-color-base-80 sme-padding-vertical-sm sme-padding-horizontal-lg sme-focus-zone\">\r\n    <div class=\"sme-layout-float-left\" [class.sme-padding-right-xl]=\"!validating\">\r\n      <button class=\"sme-focus-zone\" type=\"button\" smeTelemetryId=\"wizardPrev\" [smeTelemetryDataBlob]=\"telemetryData\" (click)=\"onBackClick()\" [disabled]=\"disableBackButton\"\r\n        [class.sme-layout-none]=\"!canNavigateToPreviousStep\">{{strings.MsftSmeShell.Angular.Common.back}}</button>\r\n\r\n      <button class=\"sme-focus-zone sme-button-primary\" type=\"button\" smeTelemetryId=\"wizardNext\" [smeTelemetryDataBlob]=\"telemetryData\" (click)=\"onNextClick()\"\r\n        [disabled]=\"disableNextButton\" [smeTelemetryDisableElement]=\"disableNextButton\">\r\n        {{ nextButtonText() }}</button>\r\n      <div *ngIf=\"validating\" class=\"sme-layout-relative sme-layout-float-right sme-padding-left-xl sme-padding-top-md\">\r\n        <sme-loading-wheel size=\"small\"></sme-loading-wheel>\r\n      </div>\r\n    </div>\r\n    <button class=\"sme-focus-zone\" type=\"button\" smeTelemetryId=\"wizardSkip\" [smeTelemetryDataBlob]=\"telemetryData\" (click)=\"onSkipClick()\"\r\n      [class.sme-layout-none]=\"!showSkipButton\">{{strings.MsftSmeShell.Angular.Common.skip}}</button>\r\n    <button #exitButton *ngIf=\"showExitButton\" class=\"sme-focus-zone sme-layout-float-right\" type=\"button\" smeTelemetryId=\"wizardExit\" [smeTelemetryDataBlob]=\"telemetryData\"\r\n      (click)=\"onExitClick()\">{{ exitButtonText() }}</button>\r\n  </div>\r\n</div>\r\n","import {\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ComponentFactoryResolver,\r\n    ElementRef,\r\n    EventEmitter,\r\n    forwardRef,\r\n    Inject,\r\n    Injector,\r\n    Input,\r\n    OnInit,\r\n    Optional,\r\n    Output,\r\n    SkipSelf,\r\n    ViewChild\r\n} from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';\r\nimport { RxjsLifetimeManager } from '@microsoft/windows-admin-center-sdk/core/base/rxjs-lifetime-manager';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { SmeWebTelemetry } from '@microsoft/windows-admin-center-sdk/core/diagnostics/sme-web-telemetry';\r\nimport { TelemetryActionTypes } from '@microsoft/windows-admin-center-sdk/core/diagnostics/sme-web-telemetry-models';\r\nimport { EnvironmentModule } from '@microsoft/windows-admin-center-sdk/core/manifest/environment-modules';\r\nimport {\r\n    RpcDialogConfirmationRequest,\r\n    RpcDialogMessageRequest\r\n} from '@microsoft/windows-admin-center-sdk/core/rpc/dialog/rpc-dialog-model';\r\nimport { take } from 'rxjs/operators';\r\nimport { Strings } from '../../generated/Strings';\r\nimport { AppContextService } from '../../service/app-context.service';\r\nimport { BannerItem } from '../banner';\r\nimport { DynamicComponentBase } from '../common/dynamic.component';\r\nimport { Layout, SME_LAYOUT_PROVIDER } from '../common/layout';\r\nimport { SmeHeaderData } from '../header/header.component';\r\nimport { HealthAlertSeverity, PageAlert } from '../page-alert-bar/models/page-alert';\r\nimport { WizardModel } from './models/wizard-model';\r\nimport { WizardNavigationInterface } from './models/wizard-navigation-interface';\r\nimport { WizardStage } from './models/wizard-stage';\r\nimport { WizardStep } from './models/wizard-step';\r\nimport { WizardStepChangedEvent } from './models/wizard-step-changed-event';\r\nimport { WizardStepValidation } from './models/wizard-step-validation';\r\nimport { WizardBuilder } from './wizard-builder';\r\nimport { WizardNavigationInformation } from './wizard-navigation-information';\r\nimport { WizardResponsiveWindowManager } from './wizard-responsive-window-manager';\r\nimport { GenericWizardStepComponent } from './wizard-step/wizard-step.component';\r\n\r\n/**\r\n * Whatever state the wizard is in\r\n */\r\nenum WizardState {\r\n    Exit = 'Exit',\r\n    Entry = 'Entry',\r\n    Finished = 'Finished',\r\n    Active = 'Active'\r\n}\r\n\r\n/**\r\n * Data to collect in wizard\r\n */\r\nclass WizardTelemetryData {\r\n    stepIndexNumber: string;\r\n    stepName: string;\r\n    stepIndexStartTime: string;\r\n    entryPoint?: string;\r\n    wizardType?: string;\r\n    wizardId?: string;\r\n    state?: WizardState;\r\n}\r\n\r\n/**\r\n * @smeDoc {@label Wizard @id sme-wizard}\r\n *\r\n * @overview\r\n * @file {@filepath ./examples/overview.md}\r\n *\r\n * @example {@label Example Wizard @id simple-wizard}\r\n * @file {@filename component.html @filepath ./examples/wizard-example.component.html}\r\n * @file {@filename component.ts @filepath ./examples/wizard-example.component.ts}\r\n * @file {@filename data-model.ts @filepath ./examples/example-model.ts}\r\n * @file {@filename finish-component.ts @filepath ./examples/finish.component.ts}\r\n * @file {@filename finish-component.html @filepath ./examples/finish.component.html}\r\n * @file {@filename simple-static-text.html @filepath ./examples/simple-static-text.component.html}\r\n * @file {@filename simple-static-text.ts @filepath ./examples/simple-static-text.ts}\r\n * @file {@filename simple-text-input.component.html @filepath ./examples/simple-text-input.component.html}\r\n * @file {@filename simple-text-input.component.ts @filepath ./examples/simple-text-input.component.ts}\r\n */\r\n\r\n/**\r\n * The component class definition for the wizard component.\r\n */\r\n@Component({\r\n    selector: 'sme-wizard',\r\n    templateUrl: './wizard.component.html',\r\n    providers: [\r\n        { provide: SME_LAYOUT_PROVIDER, useExisting: forwardRef(() => WizardComponent) }\r\n    ]\r\n})\r\nexport class WizardComponent<TModel extends WizardModel>\r\n    extends DynamicComponentBase<GenericWizardStepComponent<TModel>>\r\n    implements Layout, OnInit, WizardNavigationInterface {\r\n\r\n    /**\r\n     * Sets the data model for sharing data across the wizard.\r\n     */\r\n    @Input()\r\n    public set model(value: TModel) {\r\n        this.internalModel = value;\r\n\r\n        if (this.currentStepComponent) {\r\n            this.currentStepComponent.onWizardModelChanged(this.model);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Gets the data model for sharing data across the wizard.\r\n     */\r\n    public get model(): TModel {\r\n        return this.internalModel;\r\n    }\r\n\r\n    /**\r\n     * The backing store for the model property\r\n     */\r\n    private internalModel: TModel;\r\n\r\n    /**\r\n     * Internal copy of model to rollback to when the\r\n     * current step is skipped.\r\n     */\r\n    private currentStepModelCopy: TModel;\r\n\r\n    /**\r\n     * The wizardBuilder used to instantiate the key wizard properties.\r\n     */\r\n    @Input()\r\n    public wizardBuilder: WizardBuilder;\r\n\r\n    /**\r\n     * The stages of the wizard.\r\n     */\r\n    public stages: WizardStage[];\r\n\r\n    /**\r\n     * The banner items in the wizard.\r\n     */\r\n    public bannerItems: BannerItem[];\r\n\r\n    /**\r\n     * Indicates whether to show wizard banner.\r\n     */\r\n    @Input()\r\n    public showWizardBanner: boolean;\r\n\r\n    /**\r\n     * The heading of the wizard.\r\n     */\r\n    public heading: string;\r\n\r\n    /**\r\n     * The header object.\r\n     */\r\n    public headerData: SmeHeaderData;\r\n\r\n    /**\r\n     * The title of the exit button.\r\n     */\r\n    public exitButtonTitle: string;\r\n\r\n    /**\r\n     * The title of the finish button.\r\n     */\r\n    public finishButtonTitle: string;\r\n\r\n    /**\r\n     * The finish view of the wizard.\r\n     */\r\n    public finishView: WizardStep;\r\n\r\n    /**\r\n     * Whether the steps list side pane will be visible.\r\n     */\r\n    public hideStepsListSidePane: boolean;\r\n\r\n    /**\r\n     * Whether a confirmation dialog will be shown upon 'Exit' clicked.\r\n     */\r\n    public showExitConfirmationDialog: boolean;\r\n\r\n    /**\r\n     * Whether the application is in preview.\r\n     */\r\n    public isInPreview: boolean;\r\n\r\n    /**\r\n     * Whether the wizard can navigate to a previous step.\r\n     */\r\n    public canNavigateToPreviousStep: boolean;\r\n\r\n    /**\r\n     * Telemetry data collected while navigating through wizard. By default, start at 1.1 step index and\r\n     * Entry state.\r\n     * Keep same format as telemetry event timestamp\r\n     */\r\n    public telemetryData: WizardTelemetryData = {\r\n        stepIndexNumber: '1.1',\r\n        stepName: '',\r\n        stepIndexStartTime: (new Date()).toISOString(),\r\n        entryPoint: EnvironmentModule.createEntrypointId(MsftSme.self().Init.moduleName,\r\n            MsftSme.self().Init.entryPointName),\r\n        state: WizardState.Entry\r\n    };\r\n\r\n    @ViewChild('wizardFooter')\r\n    public wizardFooter: ElementRef;\r\n\r\n    /**\r\n    * Occurs when the wizard model changes\r\n    */\r\n    @Output()\r\n    public readonly modelChange: EventEmitter<TModel>;\r\n\r\n    /**\r\n     * Occurs when the wizard is exited.\r\n     */\r\n    @Output()\r\n    public readonly exit: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * Occurs whenever a step is submitted.\r\n     */\r\n    @Output()\r\n    public readonly stepSubmitted: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * Occurs whenever a step index is changed.\r\n     */\r\n    @Output()\r\n    public readonly stepChanged: EventEmitter<WizardStepChangedEvent> = new EventEmitter<WizardStepChangedEvent>();\r\n\r\n    /**\r\n     * Occurs whenever step validation fails\r\n     */\r\n    @Output()\r\n    public readonly stepInvalidated: EventEmitter<WizardStepValidation> = new EventEmitter<WizardStepValidation>();\r\n\r\n    /**\r\n     * Occurs when the wizard is finished\r\n     */\r\n    @Output()\r\n    public readonly finished: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * It implements the ILayout interface. It's triggered when the layout is changed.\r\n     * It's used to tell the child components to coordinate with the layout change.\r\n     */\r\n    @Output()\r\n    public layoutChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * Implementation of the Layout interface\r\n     */\r\n    @Output()\r\n    public windowBreakpointChanged: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n    /**\r\n     * Resource strings for the component.\r\n     */\r\n    public strings: Strings = MsftSme.getStrings<Strings>();\r\n\r\n    /**\r\n     * Whether or not the wizard is validating input.\r\n     */\r\n    public validating: boolean;\r\n\r\n    /**\r\n     * Whether or not all of the wizard's steps are complete & 'Finish' is clicked.\r\n     */\r\n    public wizardIsFinished: boolean;\r\n\r\n    /**\r\n     * Wizard navigation information.\r\n     */\r\n    public navigationInformation: WizardNavigationInformation;\r\n\r\n    /**\r\n     * It dynamically check if any of the header step content will fail to render.\r\n     */\r\n    public shouldRenderTextOnSteps = true;\r\n\r\n    /**\r\n     * The alert for a disabled step.\r\n     */\r\n    public alert: PageAlert = {\r\n        severity: HealthAlertSeverity.Info,\r\n        message: this.strings.MsftSmeShell.Angular.Wizard.disabledStepAlert\r\n    };\r\n\r\n    /**\r\n     * Side pane toggle state\r\n     */\r\n    public isExpanded: boolean;\r\n\r\n    /**\r\n     * The index of the current step.\r\n     */\r\n    private index: number;\r\n\r\n    /**\r\n     * The index of the current stage.\r\n     */\r\n    private stageIndex: number;\r\n\r\n    /**\r\n     * The rxjs lifetime manager for the current step.\r\n     */\r\n    private currentStepRxjsLifetime: RxjsLifetimeManager;\r\n\r\n    /**\r\n     * The window responsive manager for the wizard control.\r\n     */\r\n    private wizardResponsiveWindowManager: WizardResponsiveWindowManager;\r\n\r\n    /**\r\n     * Whether an exit button will be shown throughout the wizard.\r\n     */\r\n    public get showExitButton() {\r\n        return !!this.wizardBuilder.showExitButton;\r\n    }\r\n\r\n    /**\r\n     * Initializes a new instance of the WizardComponent class.\r\n     * @param appContext - The application context service class.\r\n     * @param changeDetectorRef - The change detector.\r\n     * @param componentFactoryResolver - The component factory resolver.\r\n     */\r\n    constructor(\r\n        injector: Injector,\r\n        public hostElement: ElementRef,\r\n        private appContext: AppContextService,\r\n        private changeDetectorRef: ChangeDetectorRef,\r\n        componentFactoryResolver: ComponentFactoryResolver,\r\n        @SkipSelf() @Optional() @Inject(SME_LAYOUT_PROVIDER) layout: Layout\r\n    ) {\r\n        super(componentFactoryResolver, injector);\r\n        this.modelChange = new EventEmitter<TModel>();\r\n        this.isExpanded = true;\r\n\r\n        if (layout) {\r\n            this.wizardResponsiveWindowManager = new WizardResponsiveWindowManager(layout);\r\n            // on parent layout changes, re-emit the layout change to our event\r\n            this.subscriptions.push(layout.layoutChanged.subscribe((() => this.onLayoutChanged())));\r\n            // on window break point changes, emit the event about critical classes and styling updates signal.\r\n            this.subscriptions.push(layout.windowBreakpointChanged.subscribe(() => this.onWindowBreakpointChanged()));\r\n\r\n            this.deferredOnLayoutChanged();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Create and return the current telemetry event structure for wizard telemetry. This can be used for any automatic\r\n     * actions not triggered by a DOM interaction.\r\n     */\r\n    public get wizardTelemetryEventBlob(): any {\r\n        const wizardTelemetryBase = {\r\n            contentId: 'sme-wizard',\r\n            areaName: 'WizardComponent'\r\n        };\r\n        MsftSme.deepAssign(wizardTelemetryBase, this.telemetryData);\r\n        return wizardTelemetryBase;\r\n    }\r\n\r\n    /**\r\n     * Gets the index of the current stage of the wizard.\r\n     */\r\n    public get stagesArrayIndex(): number {\r\n        return this.stageIndex;\r\n    }\r\n\r\n    /**\r\n     * Gets the index of the current step of the wizard.\r\n     */\r\n    public get stepIndex(): number {\r\n        return this.index;\r\n    }\r\n\r\n    /**\r\n     * Gets the current stage of the wizard.\r\n     */\r\n    public get currentStage(): WizardStage {\r\n        return this.stages[this.stagesArrayIndex];\r\n    }\r\n\r\n    /**\r\n     * Gets the current step of the wizard.\r\n     */\r\n    public get currentStep(): WizardStep {\r\n        return this.currentStage.steps[this.stepIndex];\r\n    }\r\n\r\n    /**\r\n     * Gets the finish view of the wizard.\r\n     */\r\n    public get finishStep(): WizardStep {\r\n        return this.finishView;\r\n    }\r\n\r\n    /**\r\n     * Gets the current steps for the current stage.\r\n     */\r\n    public getStepsForStage(): WizardStep[] {\r\n        return this.currentStage.steps;\r\n    }\r\n\r\n    /**\r\n     * Gets the dynamically rendered component of the current step.\r\n     */\r\n    public get currentStepComponent(): GenericWizardStepComponent<TModel> {\r\n        return this.ref ? this.ref.instance : null;\r\n    }\r\n\r\n    public get onLastStepOfStage(): boolean {\r\n        return this.currentStage.steps.length - 1 === this.stepIndex;\r\n    }\r\n\r\n    public get onLastStage(): boolean {\r\n        return this.stages.length - 1 === this.stageIndex;\r\n    }\r\n\r\n    public get onLastStepOfLastStage(): boolean {\r\n        return this.onLastStage && this.onLastStepOfStage;\r\n    }\r\n\r\n    @Debounce()\r\n    public deferredOnLayoutChanged() {\r\n        this.onLayoutChanged();\r\n    }\r\n\r\n    @Yield()\r\n    public onLayoutChanged() {\r\n        this.layoutChanged.emit();\r\n    }\r\n\r\n    /**\r\n     * The on window breakpoint changed handler.\r\n     * Adding yield for component to get ElementRef after initialization.\r\n     */\r\n    @Yield()\r\n    public onWindowBreakpointChanged() {\r\n        if (!this.wizardFooter) {\r\n            return;\r\n        }\r\n\r\n        this.wizardResponsiveWindowManager.onWindowSizeChanged(this.wizardFooter);\r\n\r\n        setTimeout(() => {\r\n            this.isExpanded = this.wizardResponsiveWindowManager.isExpanded;\r\n        });\r\n    }\r\n\r\n    // Function to determine if stage is disabled or not.\r\n    public stageIndexDisabled(stage: WizardStage, index: number): boolean {\r\n        return !stage.completed && index !== this.stagesArrayIndex && !stage.active;\r\n    }\r\n\r\n    // Function to determine if step is disabled or not.\r\n    public stepIndexDisabled(step: WizardStep, index: number): boolean {\r\n        return !step.completed && index !== this.stepIndex && !step.disabled;\r\n    }\r\n\r\n    /**\r\n     * Gets the text for the next button.\r\n     */\r\n    public nextButtonText(): string {\r\n        if (this.stages[this.stageIndex].steps.length - 1 === this.stepIndex) {\r\n            if (this.stageIndex === this.stages.length - 1) {\r\n                return this.finishButtonTitle ? this.finishButtonTitle : this.strings.MsftSmeShell.Angular.Common.finish;\r\n            } else {\r\n                return this.strings.MsftSmeShell.Angular.Wizard.stageName.format(this.stages[this.stageIndex + 1].name);\r\n            }\r\n        } else {\r\n            return this.strings.MsftSmeShell.Angular.Common.next;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Gets the text for the exit/finish button.\r\n     */\r\n    public exitButtonText(): string {\r\n        return this.exitButtonTitle ? this.exitButtonTitle : this.strings.MsftSmeShell.Angular.Common.exit;\r\n    }\r\n\r\n    /**\r\n    * Gets the disabled state of the wizard buttons\r\n    */\r\n    public get disableBackButton() {\r\n        return (this.stagesArrayIndex === 0 && this.stepIndex === 0) || this.validating;\r\n    }\r\n\r\n    public get disableNextButton() {\r\n        if (this.currentStepComponent.disabled) {\r\n            return false;\r\n        } else {\r\n            return !this.currentStepComponent.valid || this.validating || this.currentStepComponent.isBusy;\r\n        }\r\n    }\r\n\r\n    public get showSkipButton() {\r\n        return !this.onLastStepOfLastStage && this.currentStepComponent.canBeSkipped;\r\n    }\r\n\r\n    /**\r\n     * Sets the index of the current step of the wizard.\r\n     */\r\n    public set stepIndex(value: number) {\r\n        if (!this.currentStage.steps[value]) {\r\n            Logging.logError('WizardComponent.stepIndex setter', 'Attempted to set stepIndex to invalid value.', {\r\n                targetIndex: value,\r\n                steps: this.currentStage.steps\r\n            });\r\n        } else {\r\n            this.index = value;\r\n\r\n            this.cleanComponent();\r\n            this.componentType = this.currentStep.dynamicStepComponent;\r\n            this.createComponent();\r\n            this.emitStepChanged();\r\n            this.preserveModelForCurrentStep();\r\n            this.changeDetectorRef.detectChanges();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Sets the index of the current stage of the wizard.\r\n     */\r\n    public set stagesArrayIndex(value: number) {\r\n        if (!this.stages[value]) {\r\n            Logging.logError('WizardComponent.stageStepIndex setter', 'Attempted to set stagesArrayIndex to invalid value.', {\r\n                targetIndex: value,\r\n                steps: this.stages\r\n            });\r\n        } else {\r\n            this.stageIndex = value;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Marks the current stage of the wizard as complete.\r\n     *\r\n     * @returns True if the stage was completed and false if not.\r\n     */\r\n    public completeCurrentStage(): boolean {\r\n        if (this.currentStage) {\r\n            this.currentStage.complete();\r\n        }\r\n\r\n        return this.currentStage.completed;\r\n    }\r\n\r\n    /**\r\n     * Marks the current step of the wizard as complete.\r\n     *\r\n     * @returns True if the step was completed and false if not.\r\n     */\r\n    public completeCurrentStep(): boolean {\r\n        if (this.currentStep && !this.currentStep.disabled) {\r\n            this.currentStep.complete();\r\n        }\r\n\r\n        return this.currentStep.completed;\r\n    }\r\n\r\n    /**\r\n     * Marks the current step of the wizard as incomplete.\r\n     *\r\n     * @returns True if the step was failed and false if not.\r\n     */\r\n    public failCurrentStep(): boolean {\r\n        if (this.currentStep) {\r\n            this.currentStep.fail();\r\n        }\r\n\r\n        return !this.currentStep.completed;\r\n    }\r\n\r\n    /**\r\n     * Moves the wizard to the next visible step in the list.\r\n     */\r\n    public moveToNextStep(): void {\r\n        this.navigateToNextStep();\r\n        while (this.currentStepComponent.disabled) {\r\n            this.currentStep.disabled = true;\r\n            if (this.onLastStepOfLastStage) {\r\n                this.handleFinishNavigation();\r\n                return;\r\n            }\r\n            this.navigateToNextStep();\r\n        }\r\n\r\n        if (this.telemetryData.state === WizardState.Entry) {\r\n            // Switch to active after our first move to next or previous step\r\n            // Manually call it here b/c some modules will update stepIndex after loading, which triggers emitStepChanged.\r\n            this.updateTelemetryTags(WizardState.Active);\r\n        }\r\n        this.emitStepChanged();\r\n    }\r\n\r\n    /**\r\n     * Handles the indexing for moving to the next step.\r\n     */\r\n    public navigateToNextStep(): void {\r\n        if (!this.onLastStepOfStage) {\r\n            this.stepIndex++;\r\n        } else if (!this.onLastStage) {\r\n            this.stageIndex++;\r\n\r\n            while (this.stages[this.stageIndex].steps.length === 0) {\r\n                this.stageIndex++;\r\n            }\r\n\r\n            this.stepIndex = 0;\r\n        }\r\n        this.emitStepChanged();\r\n    }\r\n\r\n    /**\r\n     * Moves the wizard to the previous (visible) step in the list.\r\n     */\r\n    public moveToPreviousStep(): void {\r\n        this.navigateToPreviousStep();\r\n        while (this.currentStepComponent.disabled) {\r\n            this.navigateToPreviousStep();\r\n        }\r\n        if (this.telemetryData.state === WizardState.Entry) {\r\n            // Switch to active after our first move to next or previous step\r\n            this.telemetryData.state = WizardState.Active;\r\n        }\r\n        this.emitStepChanged();\r\n\r\n    }\r\n\r\n    /**\r\n     * Handles the indexing for moving back to last step.\r\n     */\r\n    public navigateToPreviousStep(): void {\r\n        if (this.stepIndex === 0) {\r\n            if (this.stageIndex !== 0) {\r\n                this.stages[this.stageIndex].active = false;\r\n                this.stageIndex--;\r\n\r\n                while (this.stages[this.stageIndex].steps.length === 0) {\r\n                    this.stageIndex--;\r\n                }\r\n\r\n                this.stepIndex = this.stages[this.stageIndex].steps.length - 1;\r\n                this.stages[this.stageIndex].completed = false;\r\n            }\r\n        } else {\r\n            this.stepIndex--;\r\n        }\r\n        this.emitStepChanged();\r\n    }\r\n\r\n    /**\r\n    * The method that focuses on an active step or stage\r\n    */\r\n\r\n    private focusOnActiveStep(): void {\r\n        const selector = this.hideStepsListSidePane ? 'sme-wizard-stage-focus' : 'sme-step-active';\r\n        const focusable = document.getElementsByClassName(selector);\r\n        if (focusable.length > 0) {\r\n            (<HTMLInputElement>focusable[0]).focus();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The method to run when the component is initialized.\r\n     */\r\n    public ngOnInit(): void {\r\n        this.navigationInformation = new WizardNavigationInformation(this, this.wizardBuilder);\r\n        this.stages = this.wizardBuilder.stages;\r\n        this.bannerItems = this.wizardBuilder.bannerItems;\r\n        this.heading = this.wizardBuilder.heading;\r\n        this.headerData = this.wizardBuilder.headerData;\r\n        this.exitButtonTitle = this.wizardBuilder.exitButtonTitle;\r\n        this.finishButtonTitle = this.wizardBuilder.finishButtonTitle;\r\n        this.finishView = this.wizardBuilder.finishView;\r\n        this.hideStepsListSidePane = this.wizardBuilder.hideStepsListSidePane;\r\n        this.showExitConfirmationDialog = this.wizardBuilder.showExitConfirmationDialog;\r\n        this.isInPreview = this.wizardBuilder.isInPreviewState;\r\n        this.canNavigateToPreviousStep = this.wizardBuilder.canNavigateToPreviousStep;\r\n        this.stagesArrayIndex = 0;\r\n        this.stepIndex = 0;\r\n\r\n        super.ngOnInit();\r\n\r\n        if (!this.stages) {\r\n            Logging.logError('WizardComponent.ngOnInit', `The 'stages' array is not valid!.`, {\r\n                steps: this.stages\r\n            });\r\n        }\r\n\r\n        if (!this.model) {\r\n            Logging.logError('WizardComponent.ngOnInit', `The 'model' attribute is not valid.`, {\r\n                model: this.model\r\n            });\r\n        }\r\n\r\n        this.validating = false;\r\n        this.wizardIsFinished = false;\r\n        this.currentStage.active = true;\r\n\r\n        const filledModel = this.internalModel as any;\r\n        if (filledModel.wizardId) {\r\n            this.telemetryData.wizardId = filledModel.wizardId;\r\n        }\r\n        if (filledModel.wizardType) {\r\n            this.telemetryData.wizardType = filledModel.wizardType;\r\n        }\r\n\r\n        this.navigationInformation.resetHistory();\r\n        // update here first to get updated telemetry info\r\n        this.updateTelemetryTags();\r\n\r\n        SmeWebTelemetry.traceAction(null, { content: this.wizardTelemetryEventBlob, actionType: TelemetryActionTypes.Automatic });\r\n        this.updateTelemetryTags(WizardState.Active);\r\n\r\n        window.addEventListener('pagehide', () => {\r\n            if (this.telemetryData.state !== WizardState.Finished) {\r\n                // manually set at this point b/c view is destructed.\r\n                this.telemetryData.state = WizardState.Exit;\r\n            }\r\n            // actionType A for Auto (according to AWA dictionary) to differentiate from CL\r\n            SmeWebTelemetry.traceAction(null, { content: this.wizardTelemetryEventBlob, actionType: TelemetryActionTypes.Automatic });\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Open or close side pane\r\n     */\r\n    public togglePane() {\r\n        this.isExpanded = !this.isExpanded;\r\n    }\r\n\r\n    /**\r\n     * The method called when the back button is clicked.\r\n     */\r\n    public onBackClick(): void {\r\n        this.showDialogIfBusyOrJustComplete(() => {\r\n            this.currentStep.complete();\r\n            this.currentStage.active = true;\r\n            this.moveToPreviousStep();\r\n            this.focusOnActiveStep();\r\n        });\r\n    }\r\n\r\n    /**\r\n     * The method called when the skip button is clicked.\r\n     */\r\n    public onSkipClick(): void {\r\n        this.showDialogIfBusyOrJustComplete(() => {\r\n            this.restoreModelForCurrentStep();\r\n            if (this.onLastStepOfLastStage) {\r\n                this.handleFinishNavigation();\r\n            } else {\r\n                this.handleNextNavigation();\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * The method called when the Exit / Finish button is clicked.\r\n     */\r\n    public onExitClick(): void {\r\n        if (this.showExitConfirmationDialog) {\r\n            this.appContext.frame.showDialogConfirmation(<RpcDialogConfirmationRequest>{\r\n                cancelButtonText: this.strings.MsftSmeShell.Angular.Common.no,\r\n                confirmButtonText: this.strings.MsftSmeShell.Angular.Common.yes,\r\n                message: this.strings.MsftSmeShell.Angular.Wizard.Exit.Dialog.message,\r\n                title: this.strings.MsftSmeShell.Angular.Wizard.Exit.Dialog.title\r\n            }).subscribe((result) => {\r\n                if (result.confirmed) {\r\n                    this.exit.emit();\r\n                }\r\n            });\r\n        } else {\r\n            this.exit.emit();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The method that handles completion of the wizard,\r\n     * and renders the finishView if provided.\r\n     */\r\n    private handleFinishNavigation(): void {\r\n        this.completeCurrentStep();\r\n        this.completeCurrentStage();\r\n        this.updateTelemetryTags(WizardState.Finished);\r\n\r\n        this.finished.emit();\r\n        if (this.finishView) {\r\n            this.wizardIsFinished = true;\r\n\r\n            this.cleanComponent();\r\n            this.componentType = this.finishView.dynamicStepComponent;\r\n            this.createComponent();\r\n            this.changeDetectorRef.detectChanges();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The method called when the next button is clicked.\r\n     */\r\n    public onNextClick(): void {\r\n        // if finishing\r\n        if (this.onLastStepOfLastStage) {\r\n            if (!this.currentStep.disabled) {\r\n                this.runStepValidation();\r\n            } else {\r\n                this.handleFinishNavigation();\r\n            }\r\n        } else {\r\n            if (!this.currentStep.disabled) {\r\n                this.runStepValidation();\r\n            } else {\r\n                this.handleNextNavigation();\r\n            }\r\n            this.stepSubmitted.emit();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The method that validates step.\r\n     */\r\n    private runStepValidation() {\r\n        this.validating = true;\r\n        this.currentStepComponent.validate().pipe(take(1)).subscribe(\r\n            (validationResult: WizardStepValidation) => {\r\n                if (validationResult.isValid) {\r\n                    if (this.onLastStepOfLastStage) {\r\n                        this.handleFinishNavigation();\r\n                    } else {\r\n                        this.handleNextNavigation();\r\n                    }\r\n                } else {\r\n                    this.failCurrentStep();\r\n                    this.stepInvalidated.emit(validationResult);\r\n                }\r\n                this.validating = false;\r\n            });\r\n    }\r\n\r\n    /**\r\n     * The method that handles indexes and\r\n     * step and stage completion for the Next button.\r\n     */\r\n    private handleNextNavigation(): void {\r\n        this.completeCurrentStep();\r\n\r\n        if (this.onLastStepOfStage) {\r\n            this.completeCurrentStage();\r\n        }\r\n        this.moveToNextStep();\r\n        this.currentStage.active = true;\r\n        this.focusOnActiveStep();\r\n    }\r\n\r\n    private showPreviousStepDialog() {\r\n        this.appContext.frame.showDialogMessage(<RpcDialogMessageRequest>{\r\n            buttonText: this.strings.MsftSmeShell.Angular.Common.OK.affirmative,\r\n            message: this.strings.MsftSmeShell.Angular.Wizard.PreviousStep.Dialog.message,\r\n            title: this.strings.MsftSmeShell.Angular.Wizard.PreviousStep.Dialog.title\r\n        }).pipe(take(1)).subscribe();\r\n    }\r\n\r\n    private showDialogIfBusyOrJustComplete(onConfirmationCallback: () => void) {\r\n        const isBusy = this.currentStepComponent.isBusy;\r\n        const busyMessage = this.currentStepComponent.busyMessage;\r\n        if (isBusy) {\r\n            this.appContext.frame.showDialogConfirmation(<RpcDialogConfirmationRequest>{\r\n                cancelButtonText: this.strings.MsftSmeShell.Angular.Common.no,\r\n                confirmButtonText: this.strings.MsftSmeShell.Angular.Common.yes,\r\n                message: busyMessage ? busyMessage : this.strings.MsftSmeShell.Angular.Wizard.Busy.Dialog.message,\r\n                title: this.strings.MsftSmeShell.Angular.Wizard.Busy.Dialog.title\r\n            }).pipe(take(1)).subscribe(\r\n                (result) => {\r\n                    if (result.confirmed) {\r\n                        onConfirmationCallback();\r\n                    }\r\n                });\r\n        } else {\r\n            onConfirmationCallback();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The method called when a stage is clicked.\r\n     *\r\n     * @param clickedStepIndex - The index of the clicked stage.\r\n     */\r\n    public onStageClick(clickedStageIndex: number): void {\r\n        const targetStage = this.stages[clickedStageIndex];\r\n        if (!this.canNavigateToPreviousStep && clickedStageIndex <= this.stageIndex) {\r\n            // show dialog when only clicking a previous stage\r\n            if (targetStage.completed && this.stageIndex !== clickedStageIndex) {\r\n                this.showPreviousStepDialog();\r\n            }\r\n        } else if (targetStage.completed || targetStage.active) {\r\n            this.showDialogIfBusyOrJustComplete(() => {\r\n                this.stageIndex = clickedStageIndex;\r\n                this.stepIndex = 0;\r\n                this.emitStepChanged();\r\n                this.stages[this.stageIndex].completed = false;\r\n                for (let i = this.stageIndex + 1; i < this.stages.length; i++) {\r\n                    this.stages[i].active = false;\r\n                    this.stages[i].completed = false;\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * The method called when a step is clicked.\r\n     *\r\n     * @param clickedStepIndex - The index of the clicked step.\r\n     */\r\n    public onStepClick(clickedStepIndex: number): void {\r\n        const stepIsActive = this.stepIndex === clickedStepIndex;\r\n        const targetStep = this.currentStage.steps[clickedStepIndex];\r\n        if (!this.canNavigateToPreviousStep && clickedStepIndex <= this.stepIndex) {\r\n            // show dialog when only clicking a previous step\r\n            if (!stepIsActive) {\r\n                this.showPreviousStepDialog();\r\n            }\r\n        } else {\r\n            if (targetStep && !stepIsActive && (targetStep.completed || targetStep.disabled)) {\r\n                this.showDialogIfBusyOrJustComplete(() => {\r\n                    this.currentStep.complete();\r\n                    this.stepIndex = clickedStepIndex;\r\n                    this.emitStepChanged();\r\n                });\r\n            }\r\n        }\r\n    }\r\n\r\n    protected createComponent(): void {\r\n        if ((this.currentStep || this.finishStep) && (!this.currentStepComponent)) {\r\n            super.createComponent();\r\n            this.currentStepRxjsLifetime = new RxjsLifetimeManager();\r\n            this.currentStepRxjsLifetime.addSubscriptions(\r\n                this.currentStepComponent.submitted.subscribe(() => this.onNextClick()),\r\n                this.currentStepComponent.modelChanged.subscribe(newValue => {\r\n                    this.internalModel = newValue;\r\n                    this.modelChange.emit(this.model);\r\n                })\r\n            );\r\n            this.currentStepComponent.onWizardModelChanged(this.model);\r\n        }\r\n    }\r\n\r\n    protected cleanComponent(): void {\r\n        super.cleanComponent();\r\n        if (this.currentStepRxjsLifetime) {\r\n            this.currentStepRxjsLifetime.dispose();\r\n            this.currentStepRxjsLifetime = null;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Saves the state of the model at the beginning\r\n     * of the current step.\r\n     */\r\n    private preserveModelForCurrentStep() {\r\n        this.currentStepModelCopy = MsftSme.deepCopy(this.internalModel || {});\r\n    }\r\n\r\n    /**\r\n     * Resets the model back to the state at the\r\n     * beginning of the current step.\r\n     */\r\n    private restoreModelForCurrentStep() {\r\n        this.model = this.currentStepModelCopy;\r\n        this.currentStepModelCopy = null;\r\n    }\r\n\r\n    private emitStepChanged() {\r\n        const changed = this.navigationInformation.pushHistory({ stage: this.stageIndex, step: this.stepIndex });\r\n\r\n        // emit only when there is a change.\r\n        if (changed) {\r\n            this.updateTelemetryTags();\r\n\r\n            this.stepChanged.emit({\r\n                stageIndex: this.stageIndex,\r\n                stageName: this.currentStage ? this.currentStage.name : null,\r\n                stepIndex: this.stepIndex,\r\n                stepName: this.currentStep ? this.currentStep.name : null\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Update telemetry string used to populate telemetry action events. Updates wizard state, step index, and time step index started.\r\n     * Step index start time should be used together with event timestamp to more easily calculate time spent in stage.\r\n     * @param state The state to change to, if provided.\r\n     */\r\n    private updateTelemetryTags(state?: WizardState): void {\r\n        this.telemetryData.state = state ? state : this.telemetryData.state;\r\n        this.telemetryData.stepIndexNumber = `${this.stageIndex + 1}.${this.stepIndex + 1}`;\r\n        this.telemetryData.stepName = `${this.currentStage.name}.${this.currentStep.name}`;\r\n        this.telemetryData.stepIndexStartTime = (new Date()).toISOString(); // keep same format as event timestamp\r\n\r\n        this.changeDetectorRef.detectChanges();\r\n    }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { TelemetryDirectiveModule } from '../../directives/telemetry/telemetry-directives.module';\r\nimport { BadgeModule } from '../badge/badge.module';\r\nimport { BannerModule } from '../banner/banner.module';\r\nimport { HeaderModule } from '../header/header.module';\r\nimport { IconModule } from '../icon/icon.module';\r\nimport { LayoutModule } from '../layout/layout.module';\r\nimport { LoadingWheelModule } from '../loading-wheel/loading-wheel.module';\r\nimport { PageAlertBarModule } from '../page-alert-bar/page-alert-bar.module';\r\nimport { TooltipModule } from '../tooltip/tooltip.module';\r\nimport { WizardComponent } from './wizard.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        WizardComponent\r\n    ],\r\n    exports: [\r\n        WizardComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        HeaderModule,\r\n        IconModule,\r\n        LayoutModule,\r\n        LoadingWheelModule,\r\n        TelemetryDirectiveModule,\r\n        TooltipModule,\r\n        PageAlertBarModule,\r\n        BadgeModule,\r\n        BannerModule\r\n    ],\r\n    providers: []\r\n})\r\nexport class WizardModule { }\r\n","import { forwardRef } from '@angular/core';\r\nimport { WizardNavigationInformation } from './wizard-navigation-information';\r\n\r\nexport abstract class WizardAsParent {\r\n    public get navigationInformation(): WizardNavigationInformation {\r\n        return null;\r\n    }\r\n}\r\n\r\nexport function provideParent(component: any) {\r\n    return {\r\n        provide: WizardAsParent,\r\n        useExisting: forwardRef(() => component)\r\n    };\r\n}\r\n","import { Directive, Injector, OnDestroy } from '@angular/core';\r\nimport { Observable, of, Subject } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { BaseComponent } from '../../common/base.component';\r\nimport { WizardModel } from '../models/wizard-model';\r\nimport { WizardStepValidation } from '../models/wizard-step-validation';\r\nimport { WizardAsParent } from '../wizard-as-parent';\r\nimport { WizardNavigationInformation } from '../wizard-navigation-information';\r\n\r\n/**\r\n * A base class for dynamically rendered wizard steps\r\n */\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class WizardStepComponent<TModel extends WizardModel, TResourceStrings>\r\n    extends BaseComponent<TResourceStrings>\r\n    implements OnDestroy {\r\n\r\n    /**\r\n     * internal placeholder for the model\r\n     */\r\n    private internalModel: TModel;\r\n\r\n    /**\r\n     * internal placeholder for the valid state\r\n     */\r\n    private internalValid: boolean;\r\n\r\n    /**\r\n     * The navigation information instance referencing inside of WizardComponent class instance.\r\n     */\r\n    public navigationInformation: WizardNavigationInformation;\r\n\r\n    /**\r\n     * Tooltip to be displayed when \"Next\" button is disabled.\r\n     */\r\n    public nextButtonTooltip: string;\r\n\r\n    /**\r\n     * Gets the model for the wizard\r\n     */\r\n    public get model(): TModel {\r\n        return this.internalModel;\r\n    }\r\n\r\n    /**\r\n     * @deprecated\r\n     * Whether or not the component is skipped.\r\n     * This is provided by the step component implementation,\r\n     * defaults to false.\r\n     */\r\n    public get skipped(): boolean {\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Whether or not the component is disabled.\r\n     * A disabled step cannot update form fields and\r\n     * is read-only. A disabled step will be skipped\r\n     * automatically.\r\n     *\r\n     * This is provided by the step component implementation,\r\n     * defaults to false.\r\n     */\r\n    public get disabled(): boolean {\r\n        return this.skipped;\r\n    }\r\n\r\n    /**\r\n     * Whether or not the component can be skipped.\r\n     * This is provided by the step component implementation,\r\n     * defaults to false.\r\n     */\r\n    public get canBeSkipped(): boolean {\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Whether or not the component is busy.\r\n     * A step is busy if it has progress that will be lost if\r\n     * the wizard navigates to a different step.\r\n     *\r\n     * This is provided by the step component implementation,\r\n     * defaults to false.\r\n     */\r\n    public get isBusy(): boolean {\r\n        return false;\r\n    }\r\n\r\n    /**\r\n     * Custom message provider by the wizard step when isBusy:true and user is trying to navigate away\r\n     * from the wizard step. If null, it uses the standard message.\r\n     */\r\n    public get busyMessage(): string {\r\n        return null;\r\n    }\r\n\r\n    /**\r\n     * Whether or not there should be padding around the component\r\n     */\r\n    public get padContents(): boolean {\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * Whether or not the component is valid.\r\n     */\r\n    public get valid(): boolean {\r\n        return this.getIsValid();\r\n    }\r\n\r\n    /**\r\n     * Observable that emits when this step wants to submit itself\r\n     */\r\n    public readonly submitted: Observable<void>;\r\n    private submittedSubject: Subject<void>;\r\n\r\n    /**\r\n     * Observable that emits when the wizard model has changed\r\n     */\r\n    public readonly modelChanged: Observable<TModel>;\r\n    private modelChangedSubject: Subject<TModel>;\r\n\r\n    /**\r\n     * Constructs a new instance of the WizardStepComponent\r\n     * @param injector The injector for the sme base component\r\n     * @param wizard (Optional) The parent wizard reference.\r\n     */\r\n    constructor(injector: Injector, wizard?: WizardAsParent) {\r\n        super(injector);\r\n        this.submittedSubject = new Subject<void>();\r\n        this.submitted = this.submittedSubject.asObservable();\r\n        this.modelChangedSubject = new Subject<TModel>();\r\n        this.modelChanged = this.modelChangedSubject.asObservable();\r\n        this.navigationInformation = wizard && wizard.navigationInformation;\r\n    }\r\n\r\n    /**\r\n     * Angular Destroy life cycle hook\r\n     */\r\n    public ngOnDestroy() {\r\n        super.ngOnDestroy();\r\n        this.submittedSubject.complete();\r\n        this.modelChangedSubject.complete();\r\n    }\r\n\r\n    /**\r\n     * Observable handler for determining if the step is valid\r\n     * Override if you want to validate the entire step\r\n     */\r\n    protected checkIsValid(): Observable<boolean> {\r\n        return of(true);\r\n    }\r\n\r\n    /**\r\n     * Called from the wizard when the model changes\r\n     */\r\n    public onWizardModelChanged(value: TModel): void {\r\n        this.internalModel = value;\r\n    }\r\n\r\n    /**\r\n     * Observable handler for determining if the step is valid\r\n     */\r\n    public validate(): Observable<WizardStepValidation> {\r\n        return this.checkIsValid().pipe(\r\n            tap(valid => this.internalValid = valid),\r\n            map(valid => ({ isValid: valid }))\r\n        );\r\n    }\r\n\r\n    /**\r\n     * Submits the step to the wizard\r\n     */\r\n    protected submit() {\r\n        this.submittedSubject.next();\r\n    }\r\n\r\n    /**\r\n     * Submits updated model to the wizard\r\n     */\r\n    protected emitModelChanged() {\r\n        this.modelChangedSubject.next(this.model);\r\n    }\r\n\r\n    /**\r\n     * Gets if the step is currently valid\r\n     */\r\n    protected getIsValid(): boolean {\r\n        return MsftSme.isNullOrUndefined(this.internalValid) || !!this.internalValid;\r\n    }\r\n}\r\n\r\nexport abstract class GenericWizardStepComponent<TModel extends WizardModel> extends WizardStepComponent<TModel, any> { }\r\n","import { AfterContentInit, Directive } from '@angular/core';\r\nimport { AbstractControl } from '@angular/forms';\r\nimport { of } from 'rxjs';\r\nimport { WizardModel } from '../models/wizard-model';\r\nimport { WizardStepComponent } from './wizard-step.component';\r\n\r\n/**\r\n * A base class for form based wizard steps\r\n */\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class FormWizardStepComponent<TModel extends WizardModel, TResourceStrings>\r\n    extends WizardStepComponent<TModel, TResourceStrings> implements AfterContentInit {\r\n\r\n    /**\r\n     * A reference to the form control for binding the state of the wizard state\r\n     */\r\n    protected abstract readonly formControl: AbstractControl;\r\n\r\n    /**\r\n     * Called when the form value has changed\r\n     */\r\n    protected onFormValueChanged(): void {\r\n        this.emitModelChanged();\r\n    }\r\n\r\n    /**\r\n     * Observable handler for determining if the step is valid\r\n     */\r\n    protected checkIsValid() {\r\n        return of(this.formControl && (this.formControl.valid || this.formControl.disabled));\r\n    }\r\n\r\n    /**\r\n     * Gets if the step is currently valid\r\n     */\r\n    protected getIsValid(): boolean {\r\n        return super.getIsValid() && this.formControl && (this.formControl.valid || this.formControl.disabled);\r\n    }\r\n\r\n    /**\r\n     * Implementation of angular lifecycle AfterContentInit interface.\r\n     * Subscribes to form value changes\r\n     * Disable form if step has been marked as disabled\r\n     */\r\n    public ngAfterContentInit(): void {\r\n        if (this.formControl) {\r\n            this.subscriptions.push(this.formControl.valueChanges.subscribe(() => this.onFormValueChanged()));\r\n            if (this.disabled) {\r\n                this.formControl.disable();\r\n            }\r\n        }\r\n    }\r\n}\r\n","import { Directive, OnInit } from '@angular/core';\r\nimport { AbstractControl, FormBuilder, FormGroup } from '@angular/forms';\r\nimport { WizardModel } from '../models/wizard-model';\r\nimport { FormWizardStepComponent } from './form-wizard-step.component';\r\n\r\n/**\r\n * A base class for reactive form based wizard steps\r\n */\r\n@Directive()\r\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\r\nexport abstract class ReactiveFormWizardStepComponent<TModel extends WizardModel, TResourceStrings>\r\n    extends FormWizardStepComponent<TModel, TResourceStrings> implements OnInit {\r\n\r\n    /**\r\n     * Injected Reference to Angular FormBuilder\r\n     */\r\n    protected formBuilder: FormBuilder;\r\n\r\n    /**\r\n     * A reference to the form control for binding the state of the wizard state\r\n     */\r\n    protected get formControl(): AbstractControl {\r\n        return this.form;\r\n    }\r\n\r\n    /**\r\n     * form element for our form controls\r\n     */\r\n    public form: FormGroup;\r\n\r\n    /**\r\n     * Called when the a new form creation is needed. Occurs once during this components lifecycle\r\n     */\r\n    protected abstract buildForm(): FormGroup;\r\n\r\n    /**\r\n     * Called when the form value has updated and needs to synchronize the model value\r\n     */\r\n    protected abstract updateFromForm(): void;\r\n\r\n    /**\r\n     * Called when the model value has updated and needs to synchronize the form value\r\n     */\r\n    protected abstract updateFromModel(): void;\r\n\r\n    /**\r\n     * Implementation of ngOnInit lifecycle OnInit interface.\r\n     */\r\n    public ngOnInit(): void {\r\n        super.ngOnInit();\r\n\r\n        this.formBuilder = this.injector.get(FormBuilder);\r\n        // initialize form\r\n        this.form = this.buildForm();\r\n        this.updateFromModel();\r\n        this.form.markAsPristine();\r\n\r\n        // when the form changes, update the model from the form\r\n        this.subscriptions.push(this.form.valueChanges.subscribe(() => this.updateFromForm()));\r\n    }\r\n\r\n    /**\r\n     * Called from the wizard when the model changes\r\n     */\r\n    public onWizardModelChanged(model: TModel): void {\r\n        super.onWizardModelChanged(model);\r\n        if (!!this.formControl) {\r\n            this.updateFromModel();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Called when the form value has changed\r\n     */\r\n    protected onFormValueChanged(): void {\r\n        this.updateFromForm();\r\n        super.onFormValueChanged();\r\n    }\r\n}\r\n","import { OnInit } from '@angular/core';\r\nimport { AbstractControl, NgForm } from '@angular/forms';\r\nimport { WizardModel } from '../models/wizard-model';\r\nimport { FormWizardStepComponent } from './form-wizard-step.component';\r\n\r\n/**\r\n * A base class for template driven form based wizard steps\r\n */\r\nexport abstract class TemplateDrivenWizardStepComponent<TModel extends WizardModel, TResourceStrings>\r\n    extends FormWizardStepComponent<TModel, TResourceStrings> implements OnInit {\r\n\r\n    /**\r\n     * A reference to the form control for binding the state of the wizard state\r\n     */\r\n    protected get formControl(): AbstractControl {\r\n        return this.form ? this.form.control : null;\r\n    }\r\n\r\n    /**\r\n     * form element for our form controls\r\n     */\r\n    public abstract form: NgForm;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { WizardLiteComponent } from './wizard-lite.component';\r\n\r\n/**\r\n * The wizard lite service that mainly handles the wizard button with the pivot relationship from internal shell.\r\n */\r\n@Injectable()\r\nexport class WizardLiteService {\r\n    public refreshComponents(wizardLiteComponent: WizardLiteComponent) {\r\n        this.refreshContentComponents(wizardLiteComponent);\r\n        this.refreshFooterComponent(wizardLiteComponent);\r\n        this.setupEmitterSubscriptions(wizardLiteComponent);\r\n        this.checkActive(wizardLiteComponent);\r\n    }\r\n\r\n    /**\r\n     * It refreshes the internal object for the footer component.\r\n     * @param wizardLiteComponent the wizard lite component.\r\n     */\r\n    public refreshFooterComponent(wizardLiteComponent: WizardLiteComponent) {\r\n        if (!wizardLiteComponent.customFooter &&\r\n            wizardLiteComponent.wizardLiteFooterTemplateElement &&\r\n            wizardLiteComponent.wizardLiteFooterTemplateElement.toArray().length) {\r\n            if (wizardLiteComponent.wizardLiteFooterTemplateElement.toArray().length !== 1) {\r\n                Logging.log({\r\n                    consoleGroupHeader: 'WizardLiteComponent',\r\n                    level: LogLevel.Error,\r\n                    message: 'illegal count of wizard button was found.',\r\n                    source: 'WizardLiteComponent.ngAfterContentInit()'\r\n                });\r\n            }\r\n\r\n            const wizardLiteFooterTemplateElement = wizardLiteComponent.wizardLiteFooterTemplateElement.toArray()[0];\r\n            wizardLiteComponent.wizardLiteFooterTemplate = wizardLiteFooterTemplateElement;\r\n            wizardLiteComponent.wizardButton = wizardLiteFooterTemplateElement.wizardButton;\r\n            wizardLiteFooterTemplateElement.buttons = wizardLiteComponent.buttons;\r\n        } else if (wizardLiteComponent.customFooter &&\r\n            wizardLiteComponent.wizardButtonElement &&\r\n            wizardLiteComponent.wizardButtonElement.toArray().length) {\r\n            if (wizardLiteComponent.wizardButtonElement.toArray().length !== 1) {\r\n                Logging.log({\r\n                    consoleGroupHeader: 'WizardLiteComponent',\r\n                    level: LogLevel.Error,\r\n                    message: 'illegal count of wizard button was found.',\r\n                    source: 'WizardLiteComponent.ngAfterContentInit()'\r\n                });\r\n            }\r\n            const wizardButtonElement = wizardLiteComponent.wizardButtonElement.toArray()[0];\r\n            wizardLiteComponent.wizardButton = wizardButtonElement;\r\n            wizardButtonElement.buttons = wizardLiteComponent.buttons;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It refreshes the internal object for the content component.\r\n     * @param wizardLiteComponent the wizard lite component.\r\n     */\r\n    public refreshContentComponents(wizardLiteComponent: WizardLiteComponent) {\r\n        if (wizardLiteComponent.pivotElement && wizardLiteComponent.pivotElement.toArray().length) {\r\n            if (wizardLiteComponent.pivotElement.toArray().length !== 1) {\r\n                Logging.log({\r\n                    consoleGroupHeader: 'WizardLiteComponent',\r\n                    level: LogLevel.Error,\r\n                    message: 'illegal count of pivot tab was found.',\r\n                    source: 'WizardLiteComponent.ngAfterContentInit()'\r\n                });\r\n            }\r\n            wizardLiteComponent.pivotComponent = wizardLiteComponent.pivotElement.toArray()[0];\r\n\r\n            // CoreBaseComponent will destroy wizardLiteComponent.subscriptions on destroy event\r\n            wizardLiteComponent.getSubscriptions().push(\r\n                wizardLiteComponent.pivotComponent.selectionChange.subscribe(($event) => {\r\n                    wizardLiteComponent.onSelectionChanged($event);\r\n                })\r\n            );\r\n        }\r\n    }\r\n\r\n    /**\r\n     * It sets up the interaction between the pivot component and the footer space wizard button from internal shell.\r\n     * @param wizardLiteComponent the wizard lite component.\r\n     */\r\n    public setupEmitterSubscriptions(wizardLiteComponent: WizardLiteComponent) {\r\n        if (!wizardLiteComponent) {\r\n            return;\r\n        }\r\n\r\n        const pivotComponent = wizardLiteComponent.pivotComponent;\r\n        if (!pivotComponent) {\r\n            return;\r\n        }\r\n\r\n        const wizardLiteFooterTemplateElement = wizardLiteComponent.wizardLiteFooterTemplate;\r\n        if (!wizardLiteFooterTemplateElement) {\r\n            return;\r\n        }\r\n\r\n        wizardLiteFooterTemplateElement.prevButtonClickedEventEmitter.subscribe(() => {\r\n            pivotComponent.selectTabByLabel(wizardLiteFooterTemplateElement.wizardButton.getCurrentActivatedButtonLabel());\r\n        });\r\n\r\n        wizardLiteFooterTemplateElement.nextButtonClickedEventEmitter.subscribe(() => {\r\n            pivotComponent.selectTabByLabel(wizardLiteFooterTemplateElement.wizardButton.getCurrentActivatedButtonLabel());\r\n        });\r\n    }\r\n\r\n    /**\r\n     * It checks whether the component has been active.\r\n     * @param wizardLiteComponent the wizard lite component.\r\n     */\r\n    public checkActive(wizardLiteComponent: WizardLiteComponent) {\r\n        wizardLiteComponent.active = !!wizardLiteComponent.wizardButton && !!wizardLiteComponent.pivotComponent;\r\n    }\r\n}\r\n","import { AfterContentInit, Component, ContentChildren, Injector, Input, QueryList } from '@angular/core';\r\nimport { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';\r\nimport { CoreBaseComponent } from '../common/base.component';\r\nimport { PivotTabComponent } from '../pivot/pivot-tab.component';\r\nimport { PivotComponent } from '../pivot/pivot.component';\r\nimport { SmeWizardLiteFooterTemplateComponent } from '../ux/sme-ux-footer/sme-ux-footer-template/sme-wizard-lite-footer-template/sme-wizard-lite-footer-template.component';\r\nimport { WizardLiteService } from './wizard-lite.service';\r\nimport { WizardNavigationButtonComponent, WizardNavigationButtonData } from './wizard-navigation-button/wizard-navigation-button.component';\r\n\r\n@Component({\r\n    selector: 'sme-wizard-lite',\r\n    templateUrl: './wizard-lite.component.html'\r\n})\r\nexport class WizardLiteComponent extends CoreBaseComponent implements AfterContentInit {\r\n    protected get logSourceName() {\r\n        return 'WizardLiteComponent';\r\n    }\r\n\r\n    @ContentChildren(PivotComponent, { descendants: true })\r\n    public pivotElement: QueryList<PivotComponent>;\r\n\r\n    @ContentChildren(WizardNavigationButtonComponent, { descendants: true })\r\n    public wizardButtonElement: QueryList<WizardNavigationButtonComponent>;\r\n\r\n    @ContentChildren(SmeWizardLiteFooterTemplateComponent, { descendants: true })\r\n    public wizardLiteFooterTemplateElement: QueryList<SmeWizardLiteFooterTemplateComponent>;\r\n\r\n    public wizardLiteFooterTemplate: SmeWizardLiteFooterTemplateComponent;\r\n\r\n    public wizardButton: WizardNavigationButtonComponent;\r\n\r\n    @Input()\r\n    public customFooter = false;\r\n\r\n    /**\r\n     * It determines the pivot control and footer wizard component both found.\r\n     */\r\n    public active = false;\r\n\r\n    public set pivotComponent(pivots: PivotComponent) {\r\n        if (pivots) {\r\n            const pivotLabels = pivots.getLabels();\r\n            if (!this.buttons || !this.buttons.length) {\r\n                this.buttonsInternal = pivotLabels.map((l) => {\r\n                    return {\r\n                        'label': l\r\n                    };\r\n                });\r\n            }\r\n        }\r\n\r\n        this.pivotComponentInternal = pivots;\r\n    }\r\n\r\n    public get pivotComponent() {\r\n        return this.pivotComponentInternal;\r\n    }\r\n\r\n    public get buttons(): WizardNavigationButtonData[] {\r\n        return this.buttonsInternal;\r\n    }\r\n\r\n    private buttonsInternal: WizardNavigationButtonData[] = [];\r\n\r\n    private pivotComponentInternal: PivotComponent;\r\n\r\n    constructor(injector: Injector, protected wizardLiteService: WizardLiteService) {\r\n        super(injector);\r\n    }\r\n\r\n    public ngAfterContentInit() {\r\n        this.refresh();\r\n    }\r\n\r\n    /**\r\n     * It gets the subscription array from the core base component.\r\n     * @returns the subscriptions array.\r\n     */\r\n    public getSubscriptions() {\r\n        return this.subscriptions;\r\n    }\r\n\r\n    @Debounce()\r\n    public refresh() {\r\n        this.wizardLiteService.refreshComponents(this);\r\n    }\r\n\r\n    public onSelectionChanged(tab: PivotTabComponent): void {\r\n        if (!tab || !tab.label) {\r\n            return;\r\n        }\r\n\r\n        if (tab.label === this.wizardButton.getCurrentActivatedButtonLabel()) {\r\n            return;\r\n        }\r\n\r\n        this.wizardButton.updateStartIndexByLabel(tab.label);\r\n    }\r\n}\r\n","<sme-ux-page>\r\n  <ng-content></ng-content>\r\n</sme-ux-page>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { SmeUxContentModule } from '../ux/sme-ux-content/sme-ux-content.module';\r\nimport { SmeWizardLiteFooterTemplateModule } from '../ux/sme-ux-footer/sme-ux-footer-template/sme-wizard-lite-footer-template/sme-wizard-lite-footer-template.module';\r\nimport { SmeUxFooterModule } from '../ux/sme-ux-footer/sme-ux-footer.module';\r\nimport { SmeUxPageModule } from '../ux/sme-ux-page/sme-ux-page.module';\r\nimport { WizardLiteComponent } from './wizard-lite.component';\r\nimport { WizardLiteService } from './wizard-lite.service';\r\nimport { WizardNavigationButtonModule } from './wizard-navigation-button/wizard-navigation-button.module';\r\n\r\n@NgModule({\r\n    exports: [\r\n        WizardLiteComponent\r\n    ],\r\n    declarations: [\r\n        WizardLiteComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        RouterModule,\r\n        WizardNavigationButtonModule,\r\n        SmeUxFooterModule,\r\n        SmeUxPageModule,\r\n        SmeUxContentModule,\r\n        SmeWizardLiteFooterTemplateModule\r\n    ],\r\n    providers: [\r\n        WizardLiteService\r\n    ]\r\n})\r\nexport class WizardLiteModule { }\r\n","import { ErrorHandler } from '@angular/core';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\n\r\nexport class AppErrorHandler implements ErrorHandler {\r\n    public handleError(message): void {\r\n        if (message.xhr\r\n            && message.xhr.status === 0) {\r\n            // ignore if it's XHR with status 0 which is generated when a call is cancelled.\r\n            // rxj/AjaxObservable returns AjaxError with status === 0 after component is destroyed.\r\n            return;\r\n        }\r\n\r\n        Logging.log({\r\n            source: 'appErrorHandler',\r\n            level: LogLevel.Error,\r\n            message: message.message || (typeof message === 'string' ? message : ''),\r\n            stack: message.stack || '',\r\n            consoleGroupHeader: typeof message === 'string' ? message : message.message\r\n        });\r\n\r\n        Logging.trace({\r\n            view: 'sme-generic-error',\r\n            instance: 'AppErrorHandler',\r\n            action: 'exceptionLog',\r\n            data: { stack: '' }\r\n        });\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ColumnPicker } from '@microsoft/windows-admin-center-sdk/core/data/column-picker';\r\nimport { ExtensionBrokerService } from './extension-broker.service';\r\n\r\n@Injectable()\r\n/**\r\n * Column picker dialog service class. This is an injectable service wrapper for the actual\r\n * Column picker class.\r\n */\r\nexport class ColumnPickerService extends ColumnPicker {\r\n    constructor(extensionBroker: ExtensionBrokerService) {\r\n        super(extensionBroker);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Electron } from '@microsoft/windows-admin-center-sdk/core/data/electron';\r\nimport { RpcService } from './rpc.service';\r\n\r\n@Injectable()\r\n/**\r\n * Electron service class. This is an injectable service wrapper for the actual\r\n * Electron class.\r\n */\r\nexport class ElectronService extends Electron {\r\n    constructor(rpc: RpcService) {\r\n        super(rpc);\r\n        this.initialize();\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { JobsManager } from '@microsoft/windows-admin-center-sdk/core/data/jobs/jobs-manager';\r\nimport { ExtensionBrokerService } from './extension-broker.service';\r\n\r\n@Injectable()\r\n/**\r\n * Jobs service class. This is an injectable service wrapper for the JobsManager class.\r\n */\r\nexport class JobsService extends JobsManager {\r\n    constructor(extensionBroker: ExtensionBrokerService) {\r\n        super(extensionBroker);\r\n    }\r\n}\r\n","import { AzureConstants } from '@microsoft/windows-admin-center-sdk/core/azure/azure-constants';\r\nimport { GatewayUrls } from '@microsoft/windows-admin-center-sdk/core/data/gateway-urls';\r\nimport { Http } from '@microsoft/windows-admin-center-sdk/core/data/http';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { EMPTY, Observable, of, throwError } from 'rxjs';\r\nimport { AjaxError, AjaxRequest, AjaxResponse } from 'rxjs/ajax';\r\nimport { map, mergeMap, take } from 'rxjs/operators';\r\nimport { DialogService } from '../controls/dialog/dialog.service';\r\nimport { MessageDialogLink, MessageDialogOptions } from '../controls/dialog/message-dialog/message-dialog.component';\r\nimport { Strings } from '../generated/strings';\r\nimport { AppContextService } from './app-context.service';\r\n\r\n/**\r\n * Defines the connectivity levels.\r\n */\r\nexport enum ConnectivityLevel {\r\n    /**\r\n     * All connections are allowed.\r\n     */\r\n    All = 'All',\r\n    /**\r\n     * Connections to Azure and gateway are allowed.\r\n     */\r\n    AzureAndGateway = 'AzureAndGateway',\r\n    /**\r\n     * Only connections to gateway are allowed.\r\n     */\r\n    Gateway = 'Gateway'\r\n}\r\n\r\n/**\r\n * Connectivity enforcer class\r\n */\r\nexport class ConnectivityEnforcer {\r\n    private static monitorName = 'ConnectivityEnforcer';\r\n\r\n    /**\r\n     * Registers the connectivity enforcer with the http if connectivity level is not 'All'\r\n     * @param appContextService The appcontext service\r\n     */\r\n    public static register(appContextService: AppContextService): void {\r\n        const self = MsftSme.self();\r\n        const connectivityLevel = self.Init.connectivityLevel;\r\n        if (!connectivityLevel || connectivityLevel === ConnectivityLevel.All) {\r\n            Http.unregisterMonitors(ConnectivityEnforcer.monitorName);\r\n            return;\r\n        }\r\n\r\n        Http.registerMonitorSet({\r\n            name: ConnectivityEnforcer.monitorName,\r\n            preMonitor: (request: AjaxRequest) => {\r\n                if (!request) {\r\n                    Logging.logWarning('ConnectivityEnforcer', 'Connectivity enforcer failed to access the AjaxRequest object.');\r\n                    return of(request);\r\n                }\r\n\r\n                const requestUrl = request.url;\r\n\r\n                if (!requestUrl) {\r\n                    Logging.logWarning('ConnectivityEnforcer', 'Connectivity enforcer failed to get the request url.');\r\n                    return of(request);\r\n                }\r\n\r\n                if (ConnectivityEnforcer.isGatewayRequest(appContextService, requestUrl) ||\r\n                     ConnectivityEnforcer.isRequestAllowed(connectivityLevel, requestUrl)) {\r\n                    // Let request go through\r\n                    return of(request);\r\n                }\r\n\r\n                return ConnectivityEnforcer.getDialogContent(appContextService, false, requestUrl)\r\n                    .pipe(\r\n                        take(1),\r\n                        mergeMap(dialogContent => {\r\n                            return appContextService.frame.showDialogMessage(dialogContent);\r\n                        }),\r\n                        mergeMap(() => {\r\n                            return EMPTY;\r\n                        }));\r\n            },\r\n            successMonitor: (response: AjaxResponse<any>) => {\r\n                return of(response);\r\n            },\r\n            errorMonitor: (error: AjaxError) => {\r\n                return throwError(() => error);\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Checks if Azure login is allowed. Shows a connectivity dialog if its not.\r\n     * @param appContextService The appcontext service\r\n     * @returns true if Azure login is allowed, else false.\r\n     */\r\n    public static checkAzureLoginAllowed(appContextService: AppContextService, dialogService: DialogService): boolean {\r\n        const self = MsftSme.self();\r\n        const connectivityLevel = self.Init.connectivityLevel;\r\n        if (connectivityLevel === ConnectivityLevel.Gateway) {\r\n            ConnectivityEnforcer.getDialogContent(appContextService, true)\r\n                .pipe(\r\n                    take(1),\r\n                    mergeMap(dialogContent => {\r\n                        return dialogService.showMessage(dialogContent);\r\n                    }))\r\n                .subscribe();\r\n            return false;\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    /**\r\n     * Checks to see if the request is a gateway request.\r\n     */\r\n    private static isGatewayRequest(appContextService: AppContextService, requestUrl: string): boolean {\r\n        return !requestUrl.startsWith('http') || requestUrl.startsWith(appContextService.gateway.gatewayUrl);\r\n    }\r\n\r\n    /**\r\n     * Checks to see if the request can be allowed to go through.\r\n     */\r\n    private static isRequestAllowed(connectivityLevel: string, requestUrl: string): boolean {\r\n        const announcementsBlobGlobal = 'https://announcements.blob.core.windows.net';\r\n        const announcementsBlobChina = 'https://announcements.blob.core.chinacloudapi.cn';\r\n        const announcementsBlobFairfax = 'https://announcements.blob.core.usgovcloudapi.net';\r\n        // TODO: Load from manifest.\r\n        if (connectivityLevel === ConnectivityLevel.AzureAndGateway) {\r\n            const approvedUrls = [\r\n                AzureConstants.azureGlobalArmEndpoint,\r\n                AzureConstants.azureChinaArmEndpoint,\r\n                AzureConstants.azureUSGovArmEndpoint,\r\n                announcementsBlobGlobal,\r\n                announcementsBlobChina,\r\n                announcementsBlobFairfax\r\n            ];\r\n            return approvedUrls.some(url => requestUrl.startsWith(url));\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    private static getDialogContent(\r\n        appContextService: AppContextService,\r\n        isAzureLogin: boolean,\r\n        requestUrl: string = ''): Observable<MessageDialogOptions> {\r\n        // TODO: Check if service/desktop mode\r\n        return appContextService.gateway.get(GatewayUrls.accessCheck)\r\n            .pipe(\r\n                take(1),\r\n                map(isAdmin => {\r\n                    const strings = MsftSme.getStrings<Strings>().MsftSmeShell.Angular;\r\n\r\n                    let externalLink: MessageDialogLink;\r\n                    if (isAdmin) {\r\n                        externalLink = {\r\n                            url: appContextService.gateway.gatewayUrl + GatewayUrls.settingsConnectivityRelativeUrl,\r\n                            title: strings.Connectivity.Restricted.ChangeSettings.text\r\n                        };\r\n                    }\r\n\r\n                    const dialogContent: MessageDialogOptions = {\r\n                        buttonText: strings.Common.OK.state,\r\n                        message: isAzureLogin ?\r\n                            strings.Connectivity.Restricted.Azure.text : strings.Connectivity.Restricted.Offline.text.format(requestUrl),\r\n                        title: strings.Connectivity.Restricted.title,\r\n                        externalLink: externalLink\r\n                    };\r\n\r\n                    return dialogContent;\r\n                }));\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { RpcObservableAliveClient } from '@microsoft/windows-admin-center-sdk/core/rpc/alive/rpc-observable-alive-client';\r\nimport { fromEvent, merge, of, Subscription } from 'rxjs';\r\nimport { debounceTime, filter, map, switchMap } from 'rxjs/operators';\r\nimport { RpcService } from './rpc.service';\r\n\r\n@Injectable()\r\nexport class UserAliveService extends RpcObservableAliveClient {\r\n    private subscription: Subscription;\r\n\r\n    /**\r\n     * Initializes a new instance of the UserAliveService class.\r\n     *\r\n     * @param router the router object.\r\n     * @param rpc the rpc object.\r\n     */\r\n    constructor(private router: Router, rpc: RpcService) {\r\n        super(rpc);\r\n    }\r\n\r\n    /**\r\n     * Starts monitoring user activity to report the shell.\r\n     */\r\n    public start(): void {\r\n        const waitTime = 10000;\r\n        if (this.rpc.isShell) {\r\n            return;\r\n        }\r\n\r\n        let last = 0;\r\n        let debounce = 0;\r\n        this.subscription = merge(\r\n                of(0),\r\n                this.router.events,\r\n                fromEvent(document, 'focusin')\r\n            )\r\n            // 00 15 30 => 00 15 30 (waitTime exceeds)\r\n            // 00 05 10 => 00 10 (debounce 05 is ignored)\r\n            // 00 15 20 => 00 15 30 (20 is debounce 10 seconds)\r\n            .pipe(\r\n                switchMap(() => {\r\n                    const now = Date.now();\r\n\r\n                    // emit when the first and exceeds waitTime.\r\n                    if (last === 0 || now - last >= waitTime) {\r\n                        last = now;\r\n                        return this.alive().pipe(map(() => true));\r\n                    }\r\n\r\n                    // send down to debounceTime.\r\n                    debounce = now;\r\n                    return of(true);\r\n                }),\r\n                filter(state => state),\r\n                debounceTime(waitTime),\r\n                switchMap((() => {\r\n                    // only send if debounce is newer than last.\r\n                    if (debounce > last) {\r\n                        last = debounce;\r\n                        return this.alive();\r\n                    }\r\n\r\n                    return of(null);\r\n                }))\r\n            )\r\n            .subscribe();\r\n    }\r\n\r\n    /**\r\n     * Stop monitoring the user activity.\r\n     */\r\n    public stop(): void {\r\n        this.subscription?.unsubscribe();\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRoute, NavigationEnd, NavigationExtras, NavigationStart, Router } from '@angular/router';\r\nimport { CoreEnvironment } from '@microsoft/windows-admin-center-sdk/core/data/core-environment';\r\nimport { NativeDeferred, NativeQ } from '@microsoft/windows-admin-center-sdk/core/data/native-q';\r\nimport { Net } from '@microsoft/windows-admin-center-sdk/core/data/net';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { SmeWebTelemetry } from '@microsoft/windows-admin-center-sdk/core/diagnostics/sme-web-telemetry';\r\nimport { PerformanceProfile } from '@microsoft/windows-admin-center-sdk/core/performance/performance-profile';\r\nimport { PerformanceTracker } from '@microsoft/windows-admin-center-sdk/core/performance/performance-tracker';\r\nimport { RpcOverlayCloseKey, RpcDialogOverlayData, RpcDialogOverlayResult } from '@microsoft/windows-admin-center-sdk/core/rpc/overlay/rpc-overlay-model';\r\nimport { RpcObservablePerformanceConfigServer } from '@microsoft/windows-admin-center-sdk/core/rpc/performance/rpc-observable-performance-config-server';\r\nimport { SelectablePath } from '@microsoft/windows-admin-center-sdk/core/rpc/report/rpc-report-model';\r\nimport {\r\n    RpcActivateData,\r\n    RpcDeactivateResult,\r\n    RpcDeactivateState,\r\n    RpcOpenData,\r\n    RpcOpenResult,\r\n    RpcOpenState,\r\n    RpcOutboundCommands,\r\n    RpcShutdownData,\r\n    RpcShutdownResult\r\n} from '@microsoft/windows-admin-center-sdk/core/rpc/rpc-base';\r\nimport { RpcObservableUpdateThemeServer } from '@microsoft/windows-admin-center-sdk/core/rpc/update-theme/rpc-observable-update-theme-server';\r\nimport { EMPTY, of, Subscription } from 'rxjs';\r\nimport { catchError, filter, map, mergeMap, switchMap, take, tap } from 'rxjs/operators';\r\nimport { DialogService } from '../controls/dialog/dialog.service';\r\nimport { AppContextService } from './app-context.service';\r\nimport { ConnectivityEnforcer } from './connectivity-enforcer';\r\nimport { Navigation, NavigationData, NavigationDataExtras } from './navigation';\r\nimport { UserAliveService } from './user-alive.service';\r\n/**\r\n * Options to override the default behavior of the navigation service\r\n */\r\nexport interface NavigatorServiceOptions {\r\n    /**\r\n     * The angular 2 default route to use during initialization and\r\n     * if the application gets deactivated but still running\r\n     * See @angular/router - Router.navigate method for more details\r\n     */\r\n    idleRoute?: any[];\r\n}\r\n\r\ninterface StateContext<TState, TResult> {\r\n    state: TState;\r\n    requestedTime: number;\r\n    timer: any;\r\n    deferred: NativeDeferred<TResult>;\r\n    error?: string;\r\n}\r\n\r\n@Injectable()\r\n/**\r\n * Once initialize this class uses the underlying RPC channel\r\n * to communicate with the remote RPC service.\r\n */\r\nexport class NavigationService {\r\n    private static initialWaitTime = 2000;\r\n    private readonly defaultNavigationOptions: NavigationExtras = { skipLocationChange: true };\r\n    private lastRoute: NavigationData;\r\n    private subscription: Subscription;\r\n    private options: NavigatorServiceOptions;\r\n    private idleUrl: string;\r\n    private active: boolean;\r\n    private enteringModule = true;\r\n    private dialogServiceMap: { [index: string]: DialogService } = {};\r\n    private openContext: StateContext<RpcOpenState, RpcOpenResult> = {\r\n        state: null,\r\n        requestedTime: 0,\r\n        timer: null,\r\n        deferred: null,\r\n        error: null\r\n    };\r\n    private deactivateContext: StateContext<RpcDeactivateState, RpcDeactivateResult> = {\r\n        state: null,\r\n        requestedTime: 0,\r\n        timer: null,\r\n        deferred: null\r\n    };\r\n    private moduleName: string;\r\n    private RpcObservablePerformanceConfigServer: RpcObservablePerformanceConfigServer;\r\n    private rpcObservableUpdateThemeServer: RpcObservableUpdateThemeServer;\r\n\r\n    /**\r\n     * Creates a new instance of this service\r\n     */\r\n    constructor(\r\n        private appContextService: AppContextService,\r\n        private userAliveService: UserAliveService,\r\n        private router: Router,\r\n        private activatedRoute: ActivatedRoute) {\r\n    }\r\n\r\n    /**\r\n     * Initialize navigation communication from/to the shell.\r\n     *\r\n     *  Registers the methods with the remote RPC defined in the manifest\r\n     *  Subscribes to the router events and reports the breadcrumb items\r\n     *  back to the rpc remote\r\n     *\r\n     * @param options The options to override the default behavior\r\n     */\r\n    public initialize(options?: NavigatorServiceOptions): void {\r\n        PerformanceTracker.navigationInitialized();\r\n        this.active = true;\r\n        this.options = options ? options : { idleRoute: ['idle'] };\r\n        this.idleUrl = `/${this.options.idleRoute[0]}`;\r\n\r\n        // navigate to idle.\r\n        this.router.navigate(this.options.idleRoute, this.defaultNavigationOptions);\r\n\r\n        this.subscription?.unsubscribe();\r\n\r\n        let startTimestamp = null;\r\n        this.subscription = this.router.events\r\n            .pipe(\r\n                tap(event => {\r\n                    if (event instanceof NavigationStart) {\r\n                        startTimestamp = Date.now();\r\n                        PerformanceTracker.navigationStarted();\r\n                    } else if (event instanceof NavigationEnd && startTimestamp) {\r\n                        PerformanceProfile.logRouteNavigation('NavigationService', startTimestamp, Date.now(), event.url, this.moduleName);\r\n                        startTimestamp = null;\r\n                        PerformanceTracker.navigationCompleted(this.enteringModule);\r\n                    }\r\n                }),\r\n                filter(event => event instanceof NavigationEnd),\r\n                switchMap(event =>\r\n                    Navigation.buildSelectablePathsForRoute(this.appContextService, this.activatedRoute.snapshot)\r\n                                .pipe(map(selectablePaths => <any>{ event, selectablePaths })))\r\n            )\r\n            .subscribe((data: { event: NavigationEnd, selectablePaths: SelectablePath[]}) => {\r\n                // in the case of initial idle state, reporting url will cause rpc error. all other cases should be ok.\r\n                // RpcReport include fragment and queryParams in 'path' and 'beforeRedirectedPath'.\r\n                if (this.active && data.event.url !== this.idleUrl) {\r\n                    this.appContextService.frame.report({\r\n                        path: decodeURI(data.event.urlAfterRedirects),\r\n                        beforeRedirectedPath: decodeURI(data.event.url),\r\n                        selectablePath: data.selectablePaths\r\n                    });\r\n                    this.enteringModule = false;\r\n                }\r\n            });\r\n\r\n        this.appContextService.rpc.register(RpcOutboundCommands.Init, this.onInit.bind(this));\r\n        this.appContextService.rpc.register(RpcOutboundCommands.Open, this.onOpen.bind(this));\r\n        this.appContextService.rpc.register(RpcOutboundCommands.Deactivate2, this.onDeactivate2.bind(this));\r\n        this.appContextService.rpc.register(RpcOutboundCommands.Activate, this.onActivate.bind(this));\r\n        this.appContextService.rpc.register(RpcOutboundCommands.Shutdown, this.onShutdown.bind(this));\r\n        this.appContextService.rpc.register(RpcOverlayCloseKey.command, this.onOverlayClose.bind(this));\r\n    }\r\n\r\n    /**\r\n     * Shutdown the navigation communication from/to the shell.\r\n     */\r\n    public shutdown(): void {\r\n        this.active = false;\r\n        this.subscription?.unsubscribe();\r\n    }\r\n\r\n    /**\r\n     * Map dialog service and dialog id so that correct dialog service instance can be found\r\n     * @param dialogService dialog service to be registered\r\n     * @param dialogId associated dialog id\r\n     */\r\n    public registerDialogService(dialogService: DialogService, dialogId: string): void {\r\n        this.dialogServiceMap[dialogId] = dialogService;\r\n    }\r\n\r\n    private configurePerformanceProfile(enabled: boolean): void {\r\n        const startTimestamp = Date.now();\r\n        if (enabled) {\r\n            PerformanceProfile.current.enable(this.appContextService.rpc);\r\n        } else {\r\n            PerformanceProfile.current.disable(this.appContextService.rpc);\r\n        }\r\n\r\n        PerformanceProfile.logRouteNavigation('NavigationService', startTimestamp, Date.now(), '[rpcInit]', this.moduleName);\r\n    }\r\n\r\n    private onInit(data: any): Promise<any> {\r\n        // Iframe has received all initialization data from the shell.\r\n        this.appContextService.gateway.navigationReadyStatus = true;\r\n\r\n        this.active = true;\r\n        const self = MsftSme.self();\r\n        if (!MsftSme.isNullOrUndefined(self.Init.sessionExpiration) && self.Init.sessionExpiration > 0) {\r\n            this.userAliveService.start();\r\n        }\r\n\r\n        ConnectivityEnforcer.register(this.appContextService);\r\n        this.moduleName = self.Init.moduleName;\r\n        this.configurePerformanceProfile(self.Init.performanceProfile);\r\n        PerformanceProfile.logNull(this.moduleName);\r\n        if (!this.RpcObservablePerformanceConfigServer) {\r\n            this.RpcObservablePerformanceConfigServer = new RpcObservablePerformanceConfigServer(this.appContextService.rpc);\r\n            this.RpcObservablePerformanceConfigServer.register((request) => {\r\n                this.configurePerformanceProfile(request.enabled);\r\n                return of(null);\r\n            });\r\n        }\r\n\r\n        if (!this.rpcObservableUpdateThemeServer) {\r\n            this.rpcObservableUpdateThemeServer = new RpcObservableUpdateThemeServer(this.appContextService.rpc);\r\n            this.rpcObservableUpdateThemeServer.register((request) => {\r\n                CoreEnvironment.assetManager.setTheme(request.newTheme);\r\n                return of(null);\r\n            });\r\n        }\r\n\r\n        return Promise.resolve();\r\n    }\r\n\r\n    /**\r\n     * Call to dialog service to request close a dialog\r\n     * @param data data object to close a dialog from shell\r\n     */\r\n    private onOverlayClose(data: RpcDialogOverlayData): Promise<RpcDialogOverlayResult> {\r\n        const dialogService = this.dialogServiceMap[data.dialogId];\r\n        let result = false;\r\n        if (dialogService) {\r\n            result = dialogService.overlayClicked(data.dialogId);\r\n            delete this.dialogServiceMap[data.dialogId];\r\n        }\r\n\r\n        return Promise.resolve({ overlayClosed: result });\r\n    }\r\n\r\n    /**\r\n     * Repeated open called until navigation is established or failed.\r\n     *\r\n     * @param data the RpcOpenData data.\r\n     */\r\n    private onOpen(data: RpcOpenData): Promise<RpcOpenResult> {\r\n        const context: StateContext<RpcOpenState, RpcOpenResult> = this.openContext;\r\n        if (context.state != null) {\r\n            const result = {\r\n                waitedTime: Date.now() - context.requestedTime,\r\n                state: this.openContext.state,\r\n                error: context.error\r\n            };\r\n            if (context.state !== RpcOpenState.InProgress) {\r\n                context.state = null;\r\n                context.requestedTime = null;\r\n            }\r\n\r\n            return Promise.resolve(result);\r\n        }\r\n\r\n        context.requestedTime = Date.now();\r\n        context.state = RpcOpenState.InProgress;\r\n        context.deferred = NativeQ.defer<RpcOpenResult>();\r\n\r\n        // set timeout to respond back status to shell.\r\n        context.timer = setTimeout(\r\n            () => {\r\n                context.deferred.resolve({\r\n                    waitedTime: Date.now() - context.requestedTime,\r\n                    state: context.state\r\n                });\r\n                context.timer = null;\r\n                context.deferred = null;\r\n            },\r\n            NavigationService.initialWaitTime);\r\n\r\n        this.appContextService.servicesReady\r\n        .pipe(\r\n            take(1),\r\n            mergeMap(() => {\r\n                SmeWebTelemetry.init(this.appContextService).subscribe(\r\n                    loaded => {\r\n                        Logging.logDebug('SmeWebTelemetry', loaded ? 'Loaded browser telemetry' : 'Failed to load browser telemetry');\r\n                        PerformanceTracker.tryStartCalculatingTimeToInteractive();\r\n                    }\r\n                );\r\n\r\n                const navigation = Navigation.getUrlNavigationData(this.router, data.path);\r\n                return this.router.navigate(navigation.commands, this.addDefaultNavigationOptions(navigation.options));\r\n            }),\r\n            map(success => {\r\n                PerformanceProfile.logRouteNavigation(\r\n                    'NavigationService', context.requestedTime, Date.now(), '[rpcOpen]', this.moduleName);\r\n                context.state = RpcOpenState.Opened;\r\n\r\n                // if timer isn't fired yet, just complete with success navigation.\r\n                if (context.timer) {\r\n                    clearTimeout(context.timer);\r\n                    context.deferred.resolve({\r\n                        waitedTime: Date.now() - context.requestedTime,\r\n                        state: context.state,\r\n                        error: context.error\r\n                    });\r\n                    context.state = null;\r\n                    context.requestedTime = null;\r\n                    context.timer = null;\r\n                    context.deferred = null;\r\n                }\r\n            }),\r\n            catchError((error, caught) => {\r\n                context.state = RpcOpenState.Failed;\r\n                let message = '';\r\n                if (error && error.xhr) {\r\n                    message = Net.getErrorMessage(error);\r\n                } else if (typeof error === 'string') {\r\n                    message = error;\r\n                } else {\r\n                    if (error.stack) {\r\n                        message = error.stack;\r\n                    } else if (error.message) {\r\n                        message = error.message;\r\n                    }\r\n                }\r\n\r\n                context.error = message;\r\n\r\n                // if timer isn't fired yet, just complete with error navigation.\r\n                if (context.timer) {\r\n                    clearTimeout(context.timer);\r\n                    context.deferred.reject(context.error);\r\n                    context.state = null;\r\n                    context.requestedTime = null;\r\n                    context.timer = null;\r\n                    context.deferred = null;\r\n                }\r\n\r\n                return EMPTY;\r\n            }))\r\n        .subscribe();\r\n\r\n        return context.deferred.promise;\r\n    }\r\n\r\n    /**\r\n     * Repeated called until Guard is continued or cancelled.\r\n     *\r\n     * @param data the void data.\r\n     */\r\n    private onDeactivate2(data: void): Promise<RpcDeactivateResult> {\r\n        const startTimestamp = Date.now();\r\n        const context: StateContext<RpcDeactivateState, RpcDeactivateResult> = this.deactivateContext;\r\n        if (context.state != null) {\r\n            const result = {\r\n                waitedTime: Date.now() - context.requestedTime,\r\n                state: context.state\r\n            };\r\n            if (context.state !== RpcDeactivateState.InProgress) {\r\n                context.state = null;\r\n                context.requestedTime = null;\r\n            }\r\n\r\n            PerformanceProfile.logRouteNavigation('NavigationService', startTimestamp, Date.now(), '[rpcDeactivate]', this.moduleName);\r\n            return Promise.resolve(result);\r\n        }\r\n\r\n        const current = decodeURI(this.router.url);\r\n        if (current === this.idleUrl) {\r\n            // it's already inactive.\r\n            return Promise.resolve({\r\n                waitedTime: 0,\r\n                state: RpcDeactivateState.Deactivated\r\n            });\r\n        }\r\n\r\n        context.requestedTime = Date.now();\r\n        context.state = RpcDeactivateState.InProgress;\r\n        context.deferred = NativeQ.defer<RpcDeactivateResult>();\r\n\r\n        // set timeout to respond back status to shell.\r\n        context.timer = setTimeout(\r\n            () => {\r\n                context.deferred.resolve({\r\n                    waitedTime: Date.now() - context.requestedTime,\r\n                    state: context.state\r\n                });\r\n                context.timer = null;\r\n                context.deferred = null;\r\n\r\n                // if it isn't in progress, reset the state.\r\n                if (context.state !== RpcDeactivateState.InProgress) {\r\n                    context.state = null;\r\n                    context.requestedTime = null;\r\n                }\r\n            },\r\n            NavigationService.initialWaitTime);\r\n\r\n        // try navigate to idle.\r\n        this.router.navigate(this.options.idleRoute, this.defaultNavigationOptions)\r\n            .then(\r\n            success => {\r\n                PerformanceProfile.logRouteNavigation(\r\n                    'NavigationService', startTimestamp, Date.now(), '[rpcDeactivate]', this.moduleName);\r\n                if (success) {\r\n                    // navigate away so inactive mode.\r\n                    this.active = false;\r\n                    this.lastRoute = Navigation.getUrlNavigationData(this.router, current);\r\n                    context.state = RpcDeactivateState.Deactivated;\r\n                } else {\r\n                    // navigate cancel so active mode.\r\n                    this.active = true;\r\n                    context.state = RpcDeactivateState.Cancelled;\r\n                }\r\n\r\n                // if timer isn't fired yet, just complete with success navigation.\r\n                if (context.timer) {\r\n                    clearTimeout(context.timer);\r\n                    context.deferred.resolve({\r\n                        waitedTime: Date.now() - context.requestedTime,\r\n                        state: context.state\r\n                    });\r\n                    context.timer = null;\r\n                    context.deferred = null;\r\n                    context.state = null;\r\n                    context.requestedTime = null;\r\n                }\r\n            },\r\n            error => {\r\n                // navigate error so active mode.\r\n                this.active = true;\r\n                context.state = RpcDeactivateState.Cancelled;\r\n\r\n                // if timer isn't fired yet, just complete with success navigation.\r\n                if (context.timer) {\r\n                    clearTimeout(context.timer);\r\n                    context.deferred.resolve({\r\n                        waitedTime: Date.now() - context.requestedTime,\r\n                        state: context.state\r\n                    });\r\n                    context.timer = null;\r\n                    context.deferred = null;\r\n                    context.state = null;\r\n                    context.requestedTime = null;\r\n                }\r\n            });\r\n        return context.deferred.promise;\r\n    }\r\n\r\n    private onActivate(data: RpcActivateData): Promise<any> {\r\n        const startTimestamp = Date.now();\r\n        const newRoute = data.url || data.url === '' ?\r\n            Navigation.getUrlNavigationData(this.router, data.url)\r\n            : this.lastRoute || { commands: [''], options: null };\r\n        this.active = true;\r\n        this.enteringModule = true;\r\n\r\n        // Manually fire page view for every time we reactivate a module\r\n        SmeWebTelemetry.tracePageView({});\r\n\r\n        // pull latest rpc forwarder services data when reactivated.\r\n        return this.appContextService.reinitializeServices()\r\n            .pipe(\r\n                mergeMap(() => this.router.navigate(newRoute.commands, this.addDefaultNavigationOptions(newRoute.options))),\r\n                tap(() => PerformanceProfile.logRouteNavigation(\r\n                    'NavigationService', startTimestamp, Date.now(), '[rpcActivate]', this.moduleName))\r\n                )\r\n            .toPromise();\r\n    }\r\n\r\n    private onShutdown(data: RpcShutdownData): Promise<RpcShutdownResult> {\r\n        this.userAliveService.stop();\r\n        return this.router.navigate(this.options.idleRoute, this.defaultNavigationOptions)\r\n            .then(result => <RpcShutdownResult>{ canShutdown: result });\r\n    }\r\n\r\n    private addDefaultNavigationOptions(options: NavigationDataExtras): NavigationExtras {\r\n        return { ...(options || {}), ...this.defaultNavigationOptions };\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ScheduleRebootManager } from '@microsoft/windows-admin-center-sdk/core/data/schedule-reboot';\r\nimport { AppContextService } from './app-context.service';\r\nimport { ExtensionBrokerService } from './extension-broker.service';\r\n\r\n/**\r\n * Schedule Reboot dialog service class. This is an injectable service wrapper for the actual\r\n * Schedule Reboot class.\r\n */\r\n@Injectable()\r\nexport class ScheduleRebootService extends ScheduleRebootManager {\r\n    constructor(\r\n        appContextService: AppContextService, extensionBroker: ExtensionBrokerService) {\r\n        super(appContextService, extensionBroker);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { headerConstants } from '@microsoft/windows-admin-center-sdk/core/data/http-constants';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { RpcObservableExtensionDataClient } from '@microsoft/windows-admin-center-sdk/core/rpc/extension-data/rpc-observable-extension-data-client';\r\nimport { RpcObservableExtensionDataResult } from '@microsoft/windows-admin-center-sdk/core/rpc/extension-data/rpc-observable-extension-data-model';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { AjaxRequest } from 'rxjs/ajax';\r\nimport { map } from 'rxjs/operators';\r\nimport { RpcService } from './rpc.service';\r\n\r\n@Injectable()\r\nexport class SecureExtensionDataService extends RpcObservableExtensionDataClient {\r\n    /**\r\n     * Initializes a new instance of the SecureExtensionDataService class.\r\n     *\r\n     * @param rpc the rpc object.\r\n     */\r\n    constructor(rpc: RpcService) {\r\n        super(rpc);\r\n    }\r\n\r\n    /**\r\n     * Creates and stores a secure extension data token for the session\r\n     * @param key the key you want to store token in\r\n     * @param data the data to be encrypted and securely stored for the session\r\n     */\r\n    public createSecureExtensionToken(key: string, data: string): Observable<RpcObservableExtensionDataResult> {\r\n        const extension = MsftSme.self().Environment.name;\r\n        if (!extension) {\r\n            Logging.logError('SecureExtensionDataService.SecureExtensionDataService',\r\n                'Could not find extension name.');\r\n            return throwError(() => {\r\n                return {error: 'Could not find extension name'};\r\n            });\r\n\r\n        } else {\r\n            return this.storeData({extension, key, data});\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Adds a secure extension data token to a request\r\n     * @param key the key the secure data is stored in\r\n     * @param request the plugin request (optional)\r\n     */\r\n    public addSecureExtensionDataHeader(key: string, request?: AjaxRequest): Observable<AjaxRequest> {\r\n        const extension = MsftSme.self().Environment.name;\r\n        request = request || <AjaxRequest>{ headers: {} };\r\n        return this.retrieveData({extension, key}).pipe(\r\n            map(data => {\r\n                (<any>request).headers[headerConstants.SECURE_EXTENSION] = data.data;\r\n                return request;\r\n            }));\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SmeExtension } from '@microsoft/windows-admin-center-sdk/core/data/sme-extension';\r\nimport { RpcService } from './rpc.service';\r\n\r\n@Injectable()\r\n/**\r\n * Extension service class. This is an injectable service wrapper for the actual\r\n * Extension class.\r\n */\r\nexport class SmeExtensionService extends SmeExtension {\r\n    constructor(rpc: RpcService) {\r\n        super(rpc);\r\n    }\r\n}\r\n","import { ErrorHandler, NgModule } from '@angular/core';\r\nimport { ActiveConnectionService } from './active-connection.service';\r\nimport { AppContextService } from './app-context.service';\r\nimport { AppErrorHandler } from './app-error-handler.service';\r\nimport { AuthorizationService } from './authorization.service';\r\nimport { AzureManagerService } from './azure-manager.service';\r\nimport { BatchService } from './batch.service';\r\nimport { CimStreamService } from './cim-stream.service';\r\nimport { CimService } from './cim.service';\r\nimport { ColumnPickerService } from './column-picker.service';\r\nimport { ConnectionService } from './connection.service';\r\nimport { CredSSPManagerService } from './credssp-manager.service';\r\nimport { ElectronService } from './electron.service';\r\nimport { ExtensionBrokerService } from './extension-broker.service';\r\nimport { FileTransferService } from './file-transfer.service';\r\nimport { FrameService } from './frame.service';\r\nimport { GatewayService } from './gateway.service';\r\nimport { HttpService } from './http.service';\r\nimport { JobsService } from './jobs.service';\r\nimport { LifetimeService } from './lifetime.service';\r\nimport { NavigationService } from './navigation.service';\r\nimport { NodeService } from './node.service';\r\nimport { NotificationService } from './notification.service';\r\nimport { PowerShellStreamService } from './powershell-stream.service';\r\nimport { PowerShellService } from './powershell.service';\r\nimport { RpcShellService } from './rpc-shell.service';\r\nimport { RpcService } from './rpc.service';\r\nimport { ScheduleRebootService } from './schedule-reboot.service';\r\nimport { SecureExtensionDataService } from './secure-extension-data.service';\r\nimport { SettingsService } from './settings.service';\r\nimport { SmeExtensionService } from './sme-extension.service';\r\nimport { SshStreamService } from './ssh-stream.service';\r\nimport { TagService } from './tag.service';\r\nimport { UserAliveService } from './user-alive.service';\r\nimport { WebsocketStreamService } from './websocket-stream.service';\r\nimport { WorkItemService } from './work-item.service';\r\n\r\n@NgModule({\r\n    providers: [\r\n        LifetimeService,\r\n        RpcService,\r\n        RpcShellService,\r\n        ElectronService,\r\n        ColumnPickerService,\r\n        ExtensionBrokerService,\r\n        SmeExtensionService,\r\n        NavigationService,\r\n        ActiveConnectionService,\r\n        AuthorizationService,\r\n        AzureManagerService,\r\n        AppContextService,\r\n        CredSSPManagerService,\r\n        GatewayService,\r\n        NodeService,\r\n        BatchService,\r\n        WebsocketStreamService,\r\n        CimService,\r\n        CimStreamService,\r\n        ConnectionService,\r\n        FileTransferService,\r\n        HttpService,\r\n        NotificationService,\r\n        PowerShellService,\r\n        PowerShellStreamService,\r\n        SettingsService,\r\n        WorkItemService,\r\n        FrameService,\r\n        UserAliveService,\r\n        TagService,\r\n        ScheduleRebootService,\r\n        SecureExtensionDataService,\r\n        SshStreamService,\r\n        JobsService,\r\n        { provide: ErrorHandler, useClass: AppErrorHandler }\r\n    ]\r\n})\r\nexport class CoreServiceModule { }\r\n","/**\r\n * A base class for all form models.\r\n */\r\nexport abstract class BaseFormData<TDataModel> {\r\n    /**\r\n     * Initializes a new instance of the form data from a given data model.\r\n     *\r\n     * @param dataModel - The data model used as a base to create the form model.\r\n     * @param initializeModelFromChildren - Whether would like to call initializeFromModel() manually from classes that extends this class.\r\n     * This is a required value, can only be true or false, if not passed in, the design is to throw an error.\r\n     * Noticed that after ES2022, in the Angular upgrade, there is breaking changes that we need to call initializeFromModel() manually.\r\n     * Or we manually add 'declare' to each of the properties in the classes that extends this class.\r\n     *\r\n     */\r\n    public constructor(protected dataModel: TDataModel, initializeModelFromChildren: boolean) {\r\n        if (this.dataModel && !initializeModelFromChildren) {\r\n            this.initializeFromModel();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Creates a new TDataModel object with the data from the original data model and\r\n     * the data from this form model.\r\n     *\r\n     * @returns The model from the given form data.\r\n     */\r\n    public abstract convertToModel(): TDataModel;\r\n\r\n    /**\r\n     * Updates the values of the target model with those values from this form.\r\n     *\r\n     * @param target - The target model to update.\r\n     */\r\n    public abstract applyUpdatesToModel(target: TDataModel): void;\r\n\r\n    /**\r\n     * Initializes the form data from the model passed to the constructor.\r\n     * This is called during the constructor of the base class.\r\n     */\r\n    protected abstract initializeFromModel(): void;\r\n}\r\n","import { AbstractControl, FormArray, FormGroup } from '@angular/forms';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { LogLevel } from '@microsoft/windows-admin-center-sdk/core/diagnostics/log-level';\r\nimport { Logging } from '@microsoft/windows-admin-center-sdk/core/diagnostics/logging';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, map, mergeMap, take } from 'rxjs/operators';\r\nimport { ConfirmationDialogOptions } from '../../controls/dialog/confirmation-dialog/confirmation-dialog.component';\r\nimport { CanComponentDeactivate } from '../../controls/settings/settings-can-deactivate-guard.service';\r\nimport { Strings } from '../../generated/strings';\r\nimport { AppContextService } from '../../service/app-context.service';\r\nimport { BaseFormData } from './base-form-data';\r\n\r\n/**\r\n * The interface for exposing form control validation messages.\r\n *\r\n * Example:\r\n * {\r\n *      formControlA: {\r\n *          required: 'Name field cannot be empty.',\r\n *          maxLength: 'Name cannot be greater than 100 characters long.'\r\n *          ...\r\n *      },\r\n *      fromGroupA: {\r\n *          formControlAA: {\r\n *              required: 'city required',\r\n *          },\r\n *          formControlAB: {\r\n *              zipValidator: 'ZIP code should be 5 numbers'\r\n *          },\r\n *          formGroup: (error: any) => {\r\n *              this.processFormGroupAErrors(error); // You need to implement this function in your super class.\r\n *          }\r\n *      },\r\n *      formArrayA: {\r\n *          formControlAA: {\r\n *              ...\r\n *          },\r\n *          formControlAB: {\r\n *              ...\r\n *          },\r\n *          formArray: (error: any) => {\r\n *              if (error.duplicateName) {\r\n *                  this.processDuplicateNameError(error);\r\n *              }\r\n *          }\r\n *      }\r\n * }\r\n */\r\nexport interface FormControlContainerValidationMessages {\r\n    controls: { [key: string]: ({ [key: string]: string | (() => string) } | FormGroupValidationMessages | FormArrayValidationMessages) };\r\n}\r\n\r\n/**\r\n * The interface for exposing validation messages for form arrays.\r\n */\r\nexport interface FormArrayValidationMessages extends FormControlContainerValidationMessages {\r\n    /**\r\n     * A callback that takes the form array validation errors and processes them accordingly.\r\n     */\r\n    formArray?: (error: any) => void;\r\n}\r\n\r\n/**\r\n * The interface for exposing validation messages for form groups.\r\n */\r\nexport interface FormGroupValidationMessages extends FormControlContainerValidationMessages {\r\n    /**\r\n     * A callback that takes the form group validation errors and processes them accordingly.\r\n     */\r\n    formGroup?: (error: any) => void;\r\n}\r\n\r\n/**\r\n * A base class for an Angular component containing a form.\r\n *\r\n * @classdesc A base class for an Angular component containing a form that is pre-populated with fetched data.\r\n * The deriving class should call init() when setup is complete (sometime after calling super()) to begin the fetch\r\n * and initialize the form.\r\n *\r\n * @version 1.0.0\r\n */\r\nexport abstract class BasePropertiesForm<TDataModel, TFormData extends BaseFormData<TDataModel>> {\r\n    private confirmationStrings = MsftSme.getStrings<Strings>().MsftSmeShell.Angular.Form.ConfirmationDialog;\r\n\r\n    /**\r\n     * The reactive form containing all form controls.\r\n     */\r\n    public form: FormGroup;\r\n\r\n    /**\r\n     * Indicates data is being fetched.\r\n     */\r\n    public loading = true;\r\n\r\n    /**\r\n     * Indicated data is being saved.\r\n     */\r\n    public saving: boolean;\r\n\r\n    /**\r\n     * The data model that contains data from the service.\r\n     */\r\n    protected dataModel: TDataModel;\r\n\r\n    /**\r\n     * The data model supplying the form field values.\r\n     */\r\n    protected formData: TFormData;\r\n\r\n    /**\r\n     * Initializes a new instance of the BasePropertiesForm class.\r\n     *\r\n     * @param [loggingSource] - The source of log messages.\r\n     */\r\n    constructor(protected loggingSource: string = 'BasePropertiesForm', protected appContextService?: AppContextService) { }\r\n\r\n    /**\r\n     * Gets the form errors.\r\n     */\r\n    protected abstract get formErrors(): any;\r\n\r\n    /**\r\n     * Gets the validation messages.\r\n     */\r\n    protected abstract get validationMessages(): FormGroupValidationMessages;\r\n\r\n    /**\r\n     * Fetches data for the form.\r\n     *\r\n     * @returns The latest version of the form data.\r\n     */\r\n    protected abstract fetchData(): Observable<TDataModel>;\r\n\r\n    /**\r\n     * Creates the form.\r\n     *\r\n     * @returns The form group object.\r\n     */\r\n    protected abstract createForm(): FormGroup;\r\n\r\n    /**\r\n     * Creates form data from the backing data model.\r\n     *\r\n     * @returns The form data object.\r\n     */\r\n    protected abstract createFormDataFromDataModel(): TFormData;\r\n\r\n    /**\r\n     * The method to run when the data fetch fails.\r\n     *\r\n     * @param error - The error object.\r\n     */\r\n    protected abstract onFetchError(error: any): void;\r\n\r\n    /**\r\n     * The method to run when the form save fails.\r\n     *\r\n     * @param error - The error object.\r\n     */\r\n    protected abstract onSaveError(error: any): void;\r\n\r\n    /**\r\n     * The method to run when the form save succeeds.\r\n     */\r\n    protected abstract onSaveSuccess(): void;\r\n\r\n    /**\r\n     * Saves the form according to the new data model.\r\n     *\r\n     * @param newDataModel - The new data model to save.\r\n     * @returns The newest version of the data model.\r\n     */\r\n    protected abstract saveForm(newDataModel: TDataModel): Observable<TDataModel>;\r\n\r\n    /**\r\n     * Gets the current value of the form.\r\n     */\r\n    protected get formCurrentValue(): TFormData {\r\n        return this.form.value;\r\n    }\r\n\r\n    /**\r\n     * Discards the current form edits.\r\n     */\r\n    public onDiscard(): void {\r\n        // TODO: The empty form should be created synchronously so angular\r\n        // can bind to it. The values can be updated once the real data is available\r\n\r\n        this.formData = this.createFormDataFromDataModel();\r\n        this.resetForm();\r\n    }\r\n\r\n    /**\r\n     * Saves the content of the form. The newest version of data for the form\r\n     * will be fetched before performing the save operation.\r\n     */\r\n    public onSave(): void {\r\n        if (this.saving) {\r\n            return;\r\n        }\r\n\r\n        this.saving = true;\r\n\r\n        MsftSme.deepAssign(this.formData, this.form.value);\r\n\r\n        // Move disable after deepAssign since once disable form.value becomes empty\r\n        this.form.disable();\r\n\r\n        let updatedModel;\r\n\r\n        this.fetchData()\r\n            .pipe(\r\n                mergeMap((freshModel) => {\r\n                    this.formData.applyUpdatesToModel(freshModel);\r\n                    updatedModel = freshModel;\r\n                    return this.saveForm(freshModel);\r\n                }),\r\n                take(1)\r\n            ).subscribe({\r\n                next: (freshModel) => {\r\n                    this.form.enable();\r\n                    this.saving = false;\r\n                    if (freshModel) {\r\n                        this.dataModel = freshModel;\r\n                    } else {\r\n                        this.dataModel = updatedModel;\r\n                    }\r\n\r\n                    this.formData = this.createFormDataFromDataModel();\r\n                    this.resetForm();\r\n                    this.onSaveSuccess();\r\n                },\r\n                error: (error) => {\r\n                        this.saving = false;\r\n                        this.form.enable();\r\n                        this.onSaveError(error);\r\n                    }\r\n            });\r\n    }\r\n\r\n    public canDeactivate(\r\n        component: CanComponentDeactivate,\r\n        route: ActivatedRouteSnapshot,\r\n        state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {\r\n        if (this.appContextService && this.form && this.form.dirty) {\r\n            return this.appContextService.frame.showDialogConfirmation(this.confirmContinueEditingDialogOptions(this.form, null))\r\n                .pipe(map((result) => {\r\n                    // The default is to continue editing\r\n                    const continueNavigation = !result.confirmed;\r\n                    if (continueNavigation) {\r\n                        this.form.reset();\r\n                    }\r\n                    return continueNavigation;\r\n                }));\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    public confirmContinueEditingDialogOptions(\r\n        dirtyForm: FormGroup,\r\n        allForms: FormGroup[]): ConfirmationDialogOptions {\r\n        return {\r\n            cancelButtonText: this.confirmationStrings.unsavedChangesCancelText,\r\n            confirmButtonText: this.confirmationStrings.unsavedChangesConfirmText,\r\n            message: this.confirmationStrings.unsavedChangesMessage,\r\n            title: this.confirmationStrings.unsavedChangesTitle\r\n        };\r\n    }\r\n\r\n    /**\r\n     * The method to initialize the form with data.\r\n     */\r\n    protected init(): void {\r\n        this.loading = true;\r\n        this.fetchData().pipe(take(1)).subscribe({\r\n            next: (data) => {\r\n                this.dataModel = data;\r\n                this.resetFormData();\r\n                this.initializeValidation();\r\n            },\r\n            error: (error) => {\r\n                this.onFetchError(error);\r\n                this.form.disable();\r\n                // TODO: Have a mechanism to refresh the data\r\n            },\r\n            complete: () => {\r\n                this.loading = false;\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * Resets the form and displays the original values while marking the form as pristine and untouched.\r\n     */\r\n    protected resetForm(): void {\r\n        this.form.reset(this.formData);\r\n    }\r\n\r\n    /**\r\n     * Processes a control for validation.\r\n     *\r\n     * @param control - The control to validate.\r\n     * @param formErrors - The errors of the form.\r\n     * @param validationMessages - The validation messages of the form.\r\n     * @param formErrorsIndex - The form errors index.\r\n     */\r\n    protected processControlForValidation(\r\n        control: AbstractControl,\r\n        formErrors: any,\r\n        validationMessages: FormControlContainerValidationMessages | { [key: string]: string | (() => string) },\r\n        formErrorsIndex: string): void {\r\n        const isFormGroup = control instanceof FormGroup;\r\n        let isFormArray = false;\r\n        if (!isFormGroup) {\r\n            isFormArray = control instanceof FormArray;\r\n        }\r\n\r\n        if (isFormGroup) {\r\n            // iterate\r\n            this.updateFormErrors(\r\n                control as FormGroup,\r\n                formErrors[formErrorsIndex],\r\n                <FormGroupValidationMessages>(validationMessages));\r\n        } else if (isFormArray) {\r\n            this.updateFormErrorsForArray(\r\n                control as FormArray,\r\n                formErrors[formErrorsIndex],\r\n                <FormArrayValidationMessages>(validationMessages));\r\n        } else {\r\n            // for controls, clear the previous error messages\r\n            formErrors[formErrorsIndex] = '';\r\n        }\r\n\r\n        if (!control.valid && control.dirty) {\r\n            if (isFormGroup || isFormArray) {\r\n                // form groups and arrays are processed outside this for loop once all children have been processed\r\n                return;\r\n            }\r\n\r\n            const messages = validationMessages;\r\n            if (!messages) {\r\n                return;\r\n            }\r\n\r\n            for (const key in control.errors) {\r\n                if (control.errors.hasOwnProperty(key)) {\r\n                    let message = messages[key];\r\n                    if (MsftSme.isFunction(message)) {\r\n                        message = message();\r\n                    }\r\n\r\n                    formErrors[formErrorsIndex] = message;\r\n\r\n                    // Only one error message per control\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Updates the form errors.\r\n     *\r\n     * @param form - The form to update.\r\n     * @param formErrors - The form errors to apply.\r\n     * @param validationMessages - The validation messages to apply.\r\n     */\r\n    protected updateFormErrors(form: FormGroup, formErrors: any, validationMessages: FormGroupValidationMessages): void {\r\n        for (const field in formErrors) {\r\n            if (formErrors.hasOwnProperty(field)) {\r\n                const control = form.get(field);\r\n                if (control) {\r\n                    this.processControlForValidation(control, formErrors, validationMessages.controls[field], field);\r\n                }\r\n            }\r\n        }\r\n\r\n        if (!form.valid && validationMessages.formGroup) {\r\n            validationMessages.formGroup(form.errors);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Updates the form array errors.\r\n     *\r\n     * @param formArray - The form array to update.\r\n     * @param formErrors - The form errors to apply.\r\n     * @param validationMessages - The validation messages to apply.\r\n     */\r\n    protected updateFormErrorsForArray(formArray: FormArray, formErrors: any, validationMessages: FormArrayValidationMessages): void {\r\n        let processItems = true;\r\n        if (!Array.isArray(formErrors)) {\r\n            // form errors for form arrays should be an array of logSource\r\n            processItems = false;\r\n            Logging.log({\r\n                source: this.loggingSource,\r\n                level: LogLevel.Warning,\r\n                message: `Unexpected form errors type for form array. ` +\r\n                    `It should be an array but it is ${typeof formErrors}. Skipping validation`\r\n            });\r\n        }\r\n\r\n        const errorsArray = formErrors as Array<any>;\r\n\r\n        if (errorsArray.length !== formArray.length) {\r\n            processItems = false;\r\n            Logging.log({\r\n                source: this.loggingSource,\r\n                level: LogLevel.Warning,\r\n                message: `Unexpected count of errors type for form array. ` +\r\n                    `It should be ${formArray.length} but it is ${errorsArray.length}. Skipping validation`\r\n            });\r\n        }\r\n\r\n        if (processItems) {\r\n            for (let i = 0; i < formArray.length; i++) {\r\n                const stringIndex = '' + i;\r\n                const control = formArray.get(stringIndex);\r\n                if (control) {\r\n                    this.processControlForValidation(control, formErrors, validationMessages, stringIndex);\r\n                }\r\n            }\r\n        }\r\n\r\n        if (!formArray.valid && validationMessages.formArray) {\r\n            validationMessages.formArray(formArray.errors);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Initializes the form validation.\r\n     */\r\n    private initializeValidation(): void {\r\n        this.form.valueChanges\r\n            .pipe(debounceTime(500))\r\n            .subscribe((data) => {\r\n                this.onValueChanged(data);\r\n            });\r\n\r\n        this.onValueChanged();\r\n    }\r\n\r\n    /**\r\n     * The method to call when the form value changes.\r\n     */\r\n    private onValueChanged(data?: any): void {\r\n        // TODO: Validate that the data? paramter was not needed\r\n        if (!this.form) {\r\n            return;\r\n        }\r\n\r\n        const form = this.form;\r\n        this.updateFormErrors(form, this.formErrors, this.validationMessages);\r\n    }\r\n\r\n    /**\r\n     * Resets the data backing the form without updating the display.\r\n     *\r\n     * @param existingForm - The existing form group of the display.\r\n     */\r\n    private resetFormData(existingForm?: FormGroup): void {\r\n        this.formData = this.createFormDataFromDataModel();\r\n        this.form = this.createForm();\r\n    }\r\n}\r\n","import { BaseFormData } from './base-form-data';\r\n\r\n/**\r\n * A base class outlining functionality for tracking changes to form collection items that can be added or deleted.\r\n */\r\nexport abstract class EditableCollectionItem<TDataModel> extends BaseFormData<TDataModel> {\r\n    public isNew: boolean;\r\n    public isMarkedForDeletion: boolean;\r\n\r\n    /**\r\n     * Initializes a new instance of the EditableCollectionItem class.\r\n     *\r\n     * @param [dataModel] - The data model used as a base to create the form model.\r\n     *\r\n     */\r\n    constructor(dataModel?: TDataModel) {\r\n        // Angular 15 upgrade mark: need further investigations.\r\n        // Any classes extend this class, add 'declare' to all the properties.\r\n        super(dataModel, false);\r\n\r\n        this.isNew = !dataModel;\r\n        this.isMarkedForDeletion = false;\r\n\r\n        if (this.isNew) {\r\n            this.dataModel = this.createModelForNew();\r\n            this.initializeFromModel();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Checks if this instance is the same as another instance.\r\n     *\r\n     * @param otherItem - The item to compare to.\r\n     */\r\n    public areTheSame(otherItem: EditableCollectionItem<TDataModel>): boolean {\r\n        return otherItem && !this.isNew && !otherItem.isNew && this.areTheSameInternal(otherItem);\r\n    }\r\n\r\n    /**\r\n     * Determines if this instance is equal to the other item regardless of references.\r\n     *\r\n     * @param otherItem - The instance to compare to. NOTE: This will always have a value and will always be\r\n     * an existing item.\r\n     */\r\n    protected abstract areTheSameInternal(otherItem: EditableCollectionItem<TDataModel>): boolean;\r\n\r\n    /**\r\n     * Initiailzes this instance when it's an empty item.\r\n     */\r\n    protected abstract createModelForNew(): TDataModel;\r\n\r\n}\r\n","import { ActivatedRouteSnapshot } from '@angular/router';\r\n\r\nexport function getFullRouteParams(route: ActivatedRouteSnapshot): MsftSme.StringMap<string> {\r\n    // combine all parts of the route to get the complete picture of the route parameters\r\n    let params: MsftSme.StringMap<string> = {};\r\n    for (let parent = route; parent; parent = parent.parent) {\r\n        params = Object.assign({}, parent.params, params);\r\n    }\r\n\r\n    // walk down the primary outlet chain as well\r\n    for (let child = route; child.firstChild; child = child.firstChild) {\r\n        params = Object.assign({}, params, child.firstChild.params);\r\n        if (!child.firstChild.firstChild) {\r\n            params = Object.assign({}, params, { toolUrl: child.firstChild.url.map(segment => segment.path).join('/') });\r\n        }\r\n    }\r\n    return params;\r\n}\r\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\r\nimport { ExtensionBroker } from '@microsoft/windows-admin-center-sdk/core/data/extension-broker/extension-broker';\r\nimport { ExtensionClientListener } from '@microsoft/windows-admin-center-sdk/core/data/extension-broker/extension-listener';\r\nimport { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';\r\nimport { Rpc } from '@microsoft/windows-admin-center-sdk/core/rpc/rpc';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n/**\r\n * Extend this interface to define input structure\r\n */\r\nexport interface SnapInInput {\r\n}\r\n\r\n/**\r\n * Extend this interface to define output structure\r\n */\r\nexport interface SnapInOutput {\r\n    deltaY?: number;\r\n    focusedElementRect?: DOMRect;\r\n    // an output variable that the snap in implementation can use for emitting an output value not related to the snap in listener\r\n    snapInOutput?: any;\r\n}\r\n\r\n/**\r\n * Base class for snap in specific extension listeners\r\n */\r\n@Directive()\r\nexport abstract class SnapInListener<TInput extends SnapInInput, TOutput extends SnapInOutput>\r\n    extends ExtensionClientListener implements AfterViewInit {\r\n\r\n    public input: TInput;\r\n\r\n    /**\r\n     * Initializes a new instance of the SnapInListener class\r\n     * @param rpc The rpc context\r\n     */\r\n    constructor(rpc: Rpc, public extensionBroker: ExtensionBroker, public hostElement?: ElementRef) {\r\n        super(rpc);\r\n    }\r\n\r\n    public ngAfterViewInit(): void {\r\n        if (this.hostElement) {\r\n            document.body.setAttribute('sme-snap-in', '');\r\n            document.addEventListener('wheel', event => {\r\n                // do not listen to wheel if it is for internal scroll\r\n                // default behavior may try to scroll parent first THEN internal scroll,\r\n                // see if we can update this to match that behavior\r\n                if (!Dom.getOverflowAncestor(this.hostElement.nativeElement)) {\r\n                    this.emitOutput({ deltaY: event.deltaY });\r\n                }\r\n            });\r\n\r\n            this.hostElement.nativeElement.addEventListener('focusin', (event: FocusEvent) => {\r\n                // check if we actually need to do these\r\n                event.preventDefault();\r\n                event.stopPropagation();\r\n\r\n                // send info about the current active element\r\n                if (document.activeElement) {\r\n                    const focusedElementRect = document.activeElement.getBoundingClientRect();\r\n                    this.emitOutput({ focusedElementRect });\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Occurs when any method is called on this worker from another extension\r\n     */\r\n    protected onCall(method: string, version: number, ...args: any[]): Observable<any | void> {\r\n        if (method === 'input' && args && args.length > 0 && args[0].length > 0) {\r\n            this.onInputReceived(args[0][0]);\r\n            return of(null);\r\n        }\r\n\r\n        return super.throwMethodNotFound(method, version);\r\n    }\r\n\r\n    /**\r\n     * Occurs when an input is received on this snap-in\r\n     * @param input the input object.\r\n     */\r\n    protected onInputReceived(input: TInput): void {\r\n        this.input = input;\r\n    }\r\n\r\n    /**\r\n     * Emits an output to the consumer of this snap-in.\r\n     * @param output the output object.\r\n     */\r\n    protected emitOutput(output: TOutput | SnapInOutput): Observable<void> {\r\n        // TODO: should there be a separate output type for page events?\r\n        // abstract output from consumer by mapping to null.\r\n        return this.extensionBroker.emitResult(this.instanceId, 'output', output)\r\n            .pipe(map(() => null));\r\n    }\r\n}\r\n","/// <reference path='../../dist/packages/core/index.d.ts'/>\r\n/// <reference path='../../dist/packages/core/special.d.ts'/>\r\n/// <reference path='../../dist/packages/core/polyfills.d.ts'/>\r\n\r\n/**\r\n * export all public APIs.\r\n */\r\nexport * from './src/directives/index';\r\nexport * from './src/guards/index';\r\nexport * from './src/pipes/index';\r\nexport * from './src/controls/index';\r\nexport * from './src/service/index';\r\nexport * from './src/data/index';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ResourceService","Debounce","i1.RpcService","i1.HttpService","i2.RpcService","i3.AuthorizationService","i1.GatewayService","i2.AuthorizationService","i1.NodeService","i2.BatchService","i2.GatewayService","i1.LifetimeService","i2.NodeService","i3.BatchService","i1.ConnectionService","i2.CimService","i3.PowerShellService","i4.FileTransferService","i2.HttpService","i1.WebsocketStreamService","i2.PowerShellStreamService","i3.GatewayService","i4.NotificationService","i1.ActiveConnectionService","i3.AzureManagerService","i4.CimService","i5.CimStreamService","i6.ConnectionService","i7.CredSSPManagerService","i8.FileTransferService","i9.FrameService","i10.GatewayService","i11.NodeService","i12.NotificationService","i13.PowerShellService","i14.PowerShellStreamService","i15.ResourceService","i16.RpcService","i17.SettingsService","i18.SshStreamService","i19.WorkItemService","i2.AppContextService","_c0","i1","_c1","_c3","Yield","i1.ActionContainerComponent","i1.ActionBarComponent","i6.ActionBarComponent","i1.ExtensionBrokerService","i2.TagService","_c2","_c4","i4.FormFieldOptionComponent","i5.FormFieldAccessorDirective","i6.FormFieldValidatorDirective","i7.FormFieldAsyncValidatorDirective","i1.AppContextService","i2","i3.DialogService","i1.FormFieldAccessibilityManagerBaseService","i3.FormFieldAccessorDirective","i4.FormFieldValidatorDirective","i5.FormFieldAsyncValidatorDirective","i6.ArrayFormFieldAccessibilityManagerService","i2.FormFieldAccessorDirective","i3.FormFieldValidatorDirective","i4.FormFieldAsyncValidatorDirective","i3.FormFieldOptionComponent","i4.FormFieldAccessorDirective","i5.FormFieldValidatorDirective","i6.FormFieldAsyncValidatorDirective","_c5","_c6","_c7","i1.ListFormFieldAccessibilityManagerService","i7.OrderedListFormFieldAccessibilityManagerService","i2.CapsLockValidatorDirective","i1.DataTableComponent","i1.ActiveDirectoryService","i1.AlertBarService","i2.DialogService","AnimationDuration","CoreDebounce","CoreYield","i1.DialogService","i1.SettingsFormService","SmeWebTelemetry","i1.WizardAsParent","i1.WizardLiteService","i2.UserAliveService","i3","i2.ExtensionBrokerService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA;;;;AAIG;MAIU,sBAAsB,CAAA;AAyB/B;;;;;AAKG;AACH,IAAA,WAAA,CAC+B,IAAgB,EAChB,YAAgC,EACnD,MAAc,EACd,iBAAoC,EAAA;QAHjB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAoB;QACnD,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AAlChD;;AAEG;AAEI,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,YAAY,EAAQ,CAAC;AAEzD;;AAEG;AAEI,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,YAAY,EAAQ,CAAC;AAE3D;;AAEG;AAEI,QAAA,IAAA,CAAA,uBAAuB,GAAuB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAEtE;;AAEG;QACK,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAevC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAG;YAC7B,IAAI,CAAC,YAAY,aAAa,EAAE;gBAC5B,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,aAAA;SACJ,CAAC,CACL,CAAC;KACL;AAED;;AAEG;IACI,kBAAkB,GAAA;QACrB,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;AAED;;AAEG;IACI,SAAS,GAAA;QACZ,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;KACzD;AAED;;AAEG;IACK,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YAC9D,OAAO;AACV,SAAA;AAED,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC7C,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,cAAc,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;YAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;AACtC,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;AACxC,aAAA;AACD,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AAC1C,SAAA;KACJ;AAED;;;AAGG;AACK,IAAA,YAAY,CAAC,IAAqC,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;KACjF;AAED;;AAEG;IACK,cAAc,GAAA;AAClB,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7C,aAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;KACnE;;+GAnGQ,sBAAsB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,YAAA,EAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,YAAA,EAAA,EAAA,EAAA,0BAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,EAAA,CAAA,CAAA;uFAAtB,sBAAsB,EAAA,CAAA;cAHlC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,6EAA6E;AAC1F,aAAA,CAAA;;sBAiCQ,QAAQ;;sBAAI,IAAI;;sBAChB,QAAQ;;sBAAI,IAAI;6EA5Bd,sBAAsB,EAAA,CAAA;kBAD5B,MAAM;YAOA,wBAAwB,EAAA,CAAA;kBAD9B,MAAM;YAOA,uBAAuB,EAAA,CAAA;kBAD7B,KAAK;;;ACpCV;;AAEG;MASU,eAAe,CAAA;;iGAAf,eAAe,GAAA,CAAA,EAAA,CAAA;gGAAf,eAAe,EAAA,CAAA,CAAA;;uFAAf,eAAe,EAAA,CAAA;cAR3B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,sBAAsB;AACzB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,sBAAsB;AACzB,iBAAA;AACJ,aAAA,CAAA;;wFACY,eAAe,EAAA,EAAA,YAAA,EAAA,CAHpB,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAHtB,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACL9B;;AAEG;AAEG,MAAO,eAAgB,SAAQ,aAAa,CAAA;;AAArC,mBAAA,eAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,4BAAA,CAAA,CAAA,OAAA,SAAA,uBAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,4BAAA,KAAA,4BAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,eAAe,SAAf,eAAe,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AAAf,mBAAA,eAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,eAAe,WAAf,eAAe,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAf,eAAe,EAAA,CAAA;cAD3B,UAAU;;;ACHX;;AAEG;MAEU,YAAY,CAAA;AACrB;;;;;AAKG;IACH,WAAoB,CAAA,UAAsB,EAAU,eAAgC,EAAA;QAAhE,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAU,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;KACnF;AAED;;;;AAIG;IACH,IAAa,MAAM,CAAC,EAAU,EAAA;AAC1B,QAAA,IAAI,EAAE,EAAE;AACJ,YAAA,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;AACtB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAS,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACjF,YAAA,IAAI,SAAS,EAAE;gBACX,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC1D,aAAA;AACJ,SAAA;KACJ;;2FAvBQ,YAAY,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAA,eAAA,CAAA,CAAA,CAAA,EAAA,CAAA;8FAAZ,YAAY,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;uFAAZ,YAAY,EAAA,CAAA;cADxB,SAAS;eAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAA;wFAgBlB,MAAM,EAAA,CAAA;kBAAlB,KAAK;;AAWV;;AAEG;MAEU,kBAAkB,CAAA;AAC3B;;;;;AAKG;IACH,WAAoB,CAAA,aAA+B,EAAU,eAAgC,EAAA;QAAzE,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;QAAU,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;KAC5F;IAED,IAAa,YAAY,CAAC,EAAU,EAAA;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC3B,QAAA,IAAI,EAAE,EAAE;AACJ,YAAA,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;AACtB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAS,eAAe,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AACrF,YAAA,IAAI,OAAO,EAAE;gBACT,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,GAAG,OAAO,CAAC;AAChE,aAAA;AACH,SAAA;KACL;;uGAnBQ,kBAAkB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAA,eAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oGAAlB,kBAAkB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;uFAAlB,kBAAkB,EAAA,CAAA;cAD9B,SAAS;eAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAA;8FAWxB,YAAY,EAAA,CAAA;kBAAxB,KAAK;;;AC/BV;;AAEG;MACU,WAAW,CAAA;AAepB;;;;AAIG;AACH,IAAA,WAAA,CAAoB,GAAQ,EAAA;QAAR,IAAG,CAAA,GAAA,GAAH,GAAG,CAAK;QACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5D;AAnBD;;;;;AAKG;AACI,IAAA,OAAO,aAAa,CAAC,eAAgC,EAAE,GAAQ,EAAA;;AAElE,QAAA,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AACxE,QAAA,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;KACvF;AAWD;;;;AAIG;AACI,IAAA,IAAI,CAAC,EAAU,EAAA;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvC;AACJ,CAAA;AAED;;AAEG;MACU,iBAAiB,CAAA;AAG1B;;;;AAIG;AACH,IAAA,WAAA,CAAoB,GAAQ,EAAA;QAAR,IAAG,CAAA,GAAA,GAAH,GAAG,CAAK;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC1D;AAED;;;;;AAKG;AACI,IAAA,IAAI,CAAC,EAAU,EAAA;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE;YACT,OAAO,CAAC,GAAG,CAAC;gBACR,KAAK,EAAE,QAAQ,CAAC,OAAO;gBACvB,OAAO,EAAE,CAAmC,gCAAA,EAAA,EAAE,CAAE,CAAA;AAChD,gBAAA,MAAM,EAAE;AACJ,oBAAA,EAAE,EAAE,EAAE;AACT,iBAAA;AACD,gBAAA,MAAM,EAAE,mBAAmB;AAC9B,aAAA,CAAC,CAAC;AAEH,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;KACvB;AAED;;;;;AAKG;AACI,IAAA,SAAS,CAAC,EAAU,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KAC5B;AAED;;;;;AAKG;AACK,IAAA,uBAAuB,CAAC,GAAQ,EAAA;QACpC,MAAM,MAAM,GAAwC,EAAE,CAAC;AACvD,QAAA,IAAI,cAAc,GAAe,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7D,QAAA,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,MAAM,UAAU,GAAe,cAAc,CAAC;YAC9C,cAAc,GAAG,EAAE,CAAC;AACpB,YAAA,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE;AAC9B,gBAAA,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAW,EAAE,KAAU,KAAI;AAC3D,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC9C,oBAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;;AAEpC,wBAAA,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACtD,qBAAA;AAAM,yBAAA;;AAEH,wBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjC,MAAM,CAAC,KAAK,CAAC,GAAmB;AAC5B,4BAAA,IAAI,EAAE,IAAI;AACV,4BAAA,KAAK,EAAE,KAAK;AACZ,4BAAA,KAAK,EAAE,KAAK;yBACf,CAAC;AACL,qBAAA;AACL,iBAAC,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;IAEO,QAAQ,CAAC,IAAY,EAAE,GAAW,EAAA;AACtC,QAAA,OAAO,IAAI,KAAK,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;KAC/C;AACJ;;AC7ID;;AAEG;MAcU,SAAS,CAAA;;qFAAT,SAAS,GAAA,CAAA,EAAA,CAAA;0FAAT,SAAS,EAAA,CAAA,CAAA;AAJP,mBAAA,SAAA,CAAA,IAAA,6BAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,SAAA,EAAA;QACP,eAAe;AAClB,KAAA,EAAA,CAAA,CAAA;uFAEQ,SAAS,EAAA,CAAA;cAbrB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,kBAAkB;AACrB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,YAAY;oBACZ,kBAAkB;AACrB,iBAAA;AACD,gBAAA,SAAS,EAAE;oBACP,eAAe;AAClB,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,SAAS,mBAPd,YAAY;AACZ,QAAA,kBAAkB,aALlB,YAAY;QACZ,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACL1B;;AAEG;AAEH;MACsB,2BAA2B,CAAA;AAmB7C;;;AAGG;AACH,IAAA,WAAA,CAAoB,aAA+B,EAAA;QAA/B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;KAClD;AAED;;AAEG;IACI,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;KAC1F;AAED;;;AAGG;AACI,IAAA,WAAW,CAAC,OAAO,EAAA;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAClC,OAAO;AACV,SAAA;;AAGD,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACvB,YAAA,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;AACtD,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;IACI,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;KACvB;;yHAvDiB,2BAA2B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;6GAA3B,2BAA2B,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,CAAA;uFAA3B,2BAA2B,EAAA,CAAA;cAFhD,SAAS;mEAQC,IAAI,EAAA,CAAA;kBADV,KAAK;YAOC,QAAQ,EAAA,CAAA;kBADd,KAAK;;;ACfJ,MAAO,uBAAwB,SAAQ,2BAAsD,CAAA;AAc/F;;;AAGG;AACH,IAAA,WAAA,CAAY,aAA+B,EAAA;QACvC,KAAK,CAAC,aAAa,CAAC,CAAC;KACxB;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE3B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAClC,OAAO;AACV,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE;YAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,SAAA;KACJ;AAED;;AAEG;IACO,aAAa,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KACvD;AAED;;AAEG;AACK,IAAA,aAAa,CAAC,OAAY,EAAA;AAC9B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,UAAU,CAAC;AACrD,QAAA,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AACtC,QAAA,OAAO,OAAO,CAAC;KAClB;;iHAhDQ,uBAAuB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;yGAAvB,uBAAuB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,CAAA;uFAAvB,uBAAuB,EAAA,CAAA;cAHnC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,qBAAqB;AAClC,aAAA,CAAA;mEAOU,QAAQ,EAAA,CAAA;kBADd,KAAK;YAOC,YAAY,EAAA,CAAA;kBADlB,KAAK;;;ACdV;;AAEG;MASU,uBAAuB,CAAA;;iHAAvB,uBAAuB,GAAA,CAAA,EAAA,CAAA;wGAAvB,uBAAuB,EAAA,CAAA,CAAA;;uFAAvB,uBAAuB,EAAA,CAAA;cARnC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,uBAAuB;AAC1B,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,uBAAuB;AAC1B,iBAAA;AACJ,aAAA,CAAA;;wFACY,uBAAuB,EAAA,EAAA,YAAA,EAAA,CAH5B,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAHvB,uBAAuB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCAlB,iBAAiB,CAAA;AAqB1B,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;KAAK;AApBzC,IAAA,IACW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;IACD,IAAW,WAAW,CAAC,KAAc,EAAA;AACjC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,SAAA;KAEJ;AAED,IAAA,IACW,YAAY,GAAA;;QAEnB,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;KACzC;IAOO,WAAW,GAAA;QAEf,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,IAAI,EAAE;gBAChG,MAAM,IAAI,GAAG,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACrH,gBAAA,IAAI,IAAI,EAAE;oBACN,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,iBAAA;AAAM,qBAAA;oBACH,MAAM,QAAQ,GAAG,GAAG,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;2BAClE,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC3D,oBAAA,IAAI,QAAQ,EAAE;wBACV,QAAQ,CAAC,KAAK,EAAE,CAAC;AACpB,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,IAAI,EAAE;AACtE,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACnC,SAAA;KACJ;;qGA1CQ,iBAAiB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;mGAAjB,iBAAiB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;AAuB1B,UAAA,CAAA;IAACC,UAAQ,CAAC,CAAC,CAAC;;;;AAmBX,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;uFA1CQ,iBAAiB,EAAA,CAAA;cAJ7B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;;AAEP,gBAAA,QAAQ,EAAE,eAAe;AAC5B,aAAA,CAAA;6DAGc,WAAW,EAAA,CAAA;kBADrB,KAAK;YAaK,YAAY,EAAA,CAAA;kBADtB,WAAW;mBAAC,eAAe,CAAA;YAWpB,WAAW,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCrBV,cAAc,CAAA;;+FAAd,cAAc,GAAA,CAAA,EAAA,CAAA;+FAAd,cAAc,EAAA,CAAA,CAAA;;uFAAd,cAAc,EAAA,CAAA;cAR1B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,iBAAiB;AACpB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,iBAAiB;AACpB,iBAAA;AACJ,aAAA,CAAA;;wFACY,cAAc,EAAA,EAAA,YAAA,EAAA,CAHnB,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAHjB,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACFzB;;;;;;;;;;;AAWG;MAMU,iBAAiB,CAAA;IAW1B,WAAoB,CAAA,IAAgB,EAAU,QAAmB,EAAA;QAA7C,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAAU,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;KAChE;AARD,IAAA,IACW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IAOM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;KACxE;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;QACrC,IAAI,OAAO,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,MAAM,EAAE,CAAC;AACjB,SAAA;KACJ;IAEM,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACzD,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACzD,SAAA;KACJ;;qGA7BQ,iBAAiB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,SAAA,CAAA,CAAA,CAAA,EAAA,CAAA;mGAAjB,iBAAiB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;uFAAjB,iBAAiB,EAAA,CAAA;cAJ7B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;;AAEP,gBAAA,QAAQ,EAAE,eAAe;AAC5B,aAAA,CAAA;qFAGU,WAAW,EAAA,CAAA;kBADjB,KAAK;YAIK,OAAO,EAAA,CAAA;kBADjB,WAAW;mBAAC,WAAW,CAAA;;;MCbf,cAAc,CAAA;;+FAAd,cAAc,GAAA,CAAA,EAAA,CAAA;+FAAd,cAAc,EAAA,CAAA,CAAA;;uFAAd,cAAc,EAAA,CAAA;cAR1B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,iBAAiB;AACpB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,iBAAiB;AACpB,iBAAA;AACJ,aAAA,CAAA;;wFACY,cAAc,EAAA,EAAA,YAAA,EAAA,CAHnB,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAHjB,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACWzB,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA6B,CAAC;AAE9D,SAAS,gBAAgB,CAAC,QAAa,EAAE,QAAkB,EAAA;AACvD,IAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE;;QAErC,MAAM,IAAI,KAAK,CAAC,CAAsC,mCAAA,EAAA,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAuE,qEAAA,CAAA,CAAC,CAAC;AAC3J,KAAA;AACD,IAAA,IAAI,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC;IACrC,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,YAAY,GAAoB,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AAE3G,IAAA,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AACtC,QAAA,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC;AAC9B,QAAA,IAAI,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACjC,MAAM,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvD,YAAY,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,YAAY,EAAE,CAAC;AACzD,SAAA;;AAGD,QAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACxC,KAAA;;IAGD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAE/C,IAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEzB,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,IAAG;AACxB,YAAA,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AACnC,YAAA,IAAI,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE;AACjC,gBAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;AAC7E,aAAA;AAAM,iBAAA;gBACH,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAChF,aAAA;AACL,SAAC,CAAC,CAAC;AACN,KAAA;AACL,CAAC;AAED;;;AAGG;MAEU,iBAAiB,CAAA;AAC1B,IAAA,WAAA,CAAsB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AACpC,QAAA,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACpC;;qGAHQ,iBAAiB,EAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAjB,mBAAA,iBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,iBAAiB,WAAjB,iBAAiB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAjB,iBAAiB,EAAA,CAAA;cAD7B,UAAU;;;AC3CX;;;;;AAKG;AAEH;AACM,MAAO,wBAAyB,SAAQ,iBAAiB,CAAA;AAS3D;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEV,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;QACxB,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;QAC/B,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;QAC5B,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;KAJ/B;;IAMM,WAAW,CAAC,OAAsB,EAAA,GAA4B;IAC9D,QAAQ,GAAA,EAAW,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE;;AAEjD,IAAA,SAAS,MAA6B;IACtC,WAAW,GAAA,EAAW,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE;IAClD,kBAAkB,GAAA,EAAW,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,EAAE;;AAElE,IAAA,qBAAqB,MAA6B;IAClD,eAAe,GAAA,EAAW,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,EAAE;;AAE5D,IAAA,kBAAkB,MAA6B;;mHA/B7C,wBAAwB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,CAAA;uFAAxB,wBAAwB,EAAA,CAAA;cAFpC,SAAS;;;ACbV;;;AAGG;AAEH;AACM,MAAgB,aAAgC,SAAQ,wBAAwB,CAAA;AA6ClF;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEhB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;;QAG5C,IAAI,CAAC,OAAO,GAAqB,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;;AAGlE,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;;QAGxB,IAAI,CAAC,WAAW,GAAG,CAAA,UAAA,EAAa,aAAa,CAAC,eAAe,EAAE,CAAA,CAAE,CAAC;AAClE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,KAAI;AACnC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAG,EAAA,IAAI,CAAC,WAAW,CAAI,CAAA,EAAA,GAAG,EAAE,CAAC;AACnD,SAAC,CAAC,CAAC;;QAGH,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAClC;AAED;;;AAGG;IACI,WAAW,GAAA;QACd,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;AACxC,YAAA,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;gBACtC,YAAY,CAAC,WAAW,EAAE,CAAC;AAC9B,aAAA;AACL,SAAC,CAAC,CAAC;QACH,KAAK,CAAC,WAAW,EAAE,CAAC;KACvB;AAED;;;AAGG;IACO,WAAW,GAAA;AACjB,QAAA,OAAO,EAAE,CAAC;KACb;AAED;;;AAGG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,EAAE,CAAC;KACb;AAED;;;AAGG;AACO,IAAA,YAAY,CAAC,IAAY,EAAA;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KAC5D;AAED;;;;AAIG;IACO,YAAY,CAAC,IAAY,EAAE,KAAa,EAAA;AAC9C,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KAC3E;AAED;;;AAGG;AACO,IAAA,eAAe,CAAC,IAAY,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;KACvE;AAED;;;AAGG;AACO,IAAA,QAAQ,CAAC,SAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;KACrE;AAED;;;AAGG;AACO,IAAA,WAAW,CAAC,SAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;KACxE;AAED;;;;AAIG;IACO,QAAQ,CAAC,KAAa,EAAE,KAAU,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KACxE;AAED;;;AAGG;AACO,IAAA,WAAW,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;KACpE;AAED;;;;;;;AAOG;AACO,IAAA,GAAG,CAAC,OAAe,EAAE,KAAA,GAAkB,QAAQ,CAAC,KAAK,EAAE,MAAY,EAAE,MAAiB,GAAA,IAAI,CAAC,aAAa,EAAA;QAC9G,OAAO,OAAO,CAAC,GAAG,CAAC;AACf,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,MAAM,EAAE,MAAM;AACjB,SAAA,CAAC,CAAC;KACN;AAED;;;AAGG;IACK,uBAAuB,GAAA;AAC3B,QAAA,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACrE,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;QACzF,IAAI,CAAC,qBAAqB,EAAE;aACvB,MAAM,CAAC,aAAa,CAAC;aACrB,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;KAChF;;AAxLD;;;AAGG;AACY,aAAe,CAAA,eAAA,GAAG,CAAC,CAAC;6FANjB,aAAa,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;+FAAb,aAAa,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAAb,aAAa,EAAA,CAAA;cAFlC,SAAS;;AA+LV;;;AAGG;AACG,MAAgB,iBAAkB,SAAQ,aAAsB,CAAA;AAErE;;AC9MD,IAAY,OAEX,CAAA;AAFD,CAAA,UAAY,OAAO,EAAA;AACf,IAAA,OAAA,CAAA,oBAAA,CAAA,GAAA,QAA6B,CAAA;AACjC,CAAC,EAFW,OAAO,KAAP,OAAO,GAElB,EAAA,CAAA,CAAA,CAAA;AASD,MAAM,aAAa,GAAG,4BAA4B,CAAC;AAEnD;;;;;;;;;;;;;;;AAeG;AAKG,MAAO,cAAe,SAAQ,iBAAiB,CAAA;AAqEjD;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAxDpB;;AAEG;AAEI,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAgB,CAAC;KAqDjD;AAzED;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,gBAAgB,CAAC;KAC3B;AAiBD;;AAEG;AACH,IAAA,IAAY,SAAS,GAAA;;QAEjB,IAAI,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;;QAGnF,IAAI,SAAS,KAAK,MAAM,EAAE;AACtB,YAAA,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;AAC7E,SAAA;;QAGD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;KACjC;AAED;;AAEG;AACH,IAAA,IAAY,WAAW,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;KAC3C;AAED;;AAEG;AACH,IAAA,IAAY,UAAU,GAAA;AAClB,QAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;KAC3F;AAED;;AAEG;AACH,IAAA,IAAY,aAAa,GAAA;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;KACzE;AAED,IAAA,IAAY,aAAa,GAAA;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;KACxE;AAED,IAAA,IAAY,UAAU,GAAA;AAClB,QAAA,OAAqB,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;KAC1F;AAUD;;AAEG;IAEI,QAAQ,GAAA;;QAEX,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAC9C,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,OAAO,CAAC,QAAQ,EAAE;;YAElB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,SAAA;;QAGD,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAC9C,SAAA;KACJ;IAEO,aAAa,GAAA;AACjB,QAAA,MAAM,OAAO,GAAiB,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC5C,YAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACxC,SAAA;KACJ;IAEO,gBAAgB,GAAA;AACpB,QAAA,MAAM,OAAO,GAAiB,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC;QAC9D,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC3C,YAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAC3C,SAAA;KACJ;IAEO,iBAAiB,GAAA;;QAErB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;;AAE/D,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;KACtD;AAED;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,wBAAwB;AAC3B,SAAA,CAAC,CAAC;KACN;AAED;;;;;;AAMG;AACK,IAAA,KAAK,CAAC,IAAU,EAAA;;AAEpB,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;YAGjC,IAAI,SAAS,GAAG,KAAK,CAAC;AACtB,YAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;;AAEtC,gBAAA,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACjC,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;;AAE1C,gBAAA,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC5B,MAAM,YAAY,GAAG,IAAI,CAAC;;AAG1B,gBAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;;oBAEpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAE3C,oBAAA,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE;;AAErC,wBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,wBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;4BAClB,IAAI,CAAC,aAAa,EAAE,CAAC;4BACrB,IAAI,GAAG,YAAY,CAAC;4BACpB,SAAS;AACZ,yBAAA;wBACD,MAAM;AACT,qBAAA;;oBAGD,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;AAElD,wBAAA,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;wBACxB,MAAM;AACT,qBAAA;;AAGD,oBAAA,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;AAC3B,iBAAA;;AAGD,gBAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEpB,oBAAA,IAAI,GAAiB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,SAAS,EAAE,CAAC;;oBAGrE,IAAI,CAAC,WAAW,GAAG,CAAG,EAAA,IAAI,GAAG,OAAO,CAAC,kBAAkB,CAAA,CAAE,CAAC;;AAG1D,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;wBAErB,SAAS,GAAG,IAAI,CAAC;wBACjB,MAAM;AACT,qBAAA;AACJ,iBAAA;AACJ,aAAA;;AAGD,YAAA,IAAI,SAAS,EAAE;AACX,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AAAM,iBAAA;;AAEH,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3B,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;AAGG;AACK,IAAA,YAAY,CAAC,IAAY,EAAA;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACxC,QAAA,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;AAClB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;KACvC;;+FAhOQ,cAAc,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;gGAAd,cAAc,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,UAAA,EAAA,EAAA,CAAA,CAAA,EAAA,YAAA,EAAA,SAAA,2BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;6FAAd,GAAU,CAAA,QAAA,EAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA;;uFAAV,cAAc,EAAA,CAAA;cAH1B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,YAAY;AACzB,aAAA,CAAA;2DAYmB,QAAQ,EAAA,CAAA;kBAAvB,KAAK;YAKU,aAAa,EAAA,CAAA;kBAA5B,KAAK;YAMC,OAAO,EAAA,CAAA;kBADb,MAAM;YA4DA,QAAQ,EAAA,CAAA;kBADd,YAAY;mBAAC,eAAe,CAAA;;;MCzGpB,WAAW,CAAA;;yFAAX,WAAW,GAAA,CAAA,EAAA,CAAA;4FAAX,WAAW,EAAA,CAAA,CAAA;;uFAAX,WAAW,EAAA,CAAA;cARvB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,cAAc;AACjB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,cAAc;AACjB,iBAAA;AACJ,aAAA,CAAA;;wFACY,WAAW,EAAA,EAAA,YAAA,EAAA,CAHhB,cAAc,CAAA,EAAA,OAAA,EAAA,CAHd,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCAT,kBAAkB,CAAA;AAK3B,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KACzC;IAED,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;KACtF;;uGAVQ,kBAAkB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oGAAlB,kBAAkB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;uFAAlB,kBAAkB,EAAA,CAAA;cAH9B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,gBAAgB;AAC7B,aAAA,CAAA;6DAIU,QAAQ,EAAA,CAAA;kBAFd,WAAW;mBAAC,sBAAsB,CAAA;;kBAClC,KAAK;;;MCIG,oBAAoB,CAAA;;2GAApB,oBAAoB,GAAA,CAAA,EAAA,CAAA;qGAApB,oBAAoB,EAAA,CAAA,CAAA;;uFAApB,oBAAoB,EAAA,CAAA;cARhC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,kBAAkB;AACrB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,kBAAkB;AACrB,iBAAA;AACJ,aAAA,CAAA;;wFACY,oBAAoB,EAAA,EAAA,YAAA,EAAA,CAHzB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAHlB,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACH1B;;AAEG;MAMU,kBAAkB,CAAA;AAuL3B;;;;;;;;;;AAUG;IACH,WAAoB,CAAA,UAAsB,EAAU,SAA0B,EAAA;QAA1D,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAU,IAAS,CAAA,SAAA,GAAT,SAAS,CAAiB;AAM9E;;AAEG;QACK,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;QAChB,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;QACtB,IAAkB,CAAA,kBAAA,GAAG,EAAE,CAAC;QACxB,IAAmB,CAAA,mBAAA,GAAG,EAAE,CAAC;QACzB,IAAqB,CAAA,qBAAA,GAAG,EAAE,CAAC;QAC3B,IAAoB,CAAA,oBAAA,GAAG,EAAE,CAAC;QAC1B,IAAiB,CAAA,iBAAA,GAAG,EAAE,CAAC;QACvB,IAAmB,CAAA,mBAAA,GAAG,EAAE,CAAC;QACzB,IAAgC,CAAA,gCAAA,GAAG,KAAK,CAAC;QACzC,IAA8B,CAAA,8BAAA,GAAG,KAAK,CAAC;QACvC,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;AAlB1B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC;KAC7E;AAlKD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,+BAA+B,CAAC;KAC1C;AAQD;;AAEG;IACH,IACW,WAAW,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAC3F;IACD,IAAW,WAAW,KAAa,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE;AAE5D;;AAEG;IACH,IACW,QAAQ,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,kBAAkB,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;KACvG;IACD,IAAW,QAAQ,KAAa,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE;AAE/D;;AAEG;IACH,IACW,UAAU,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,kBAAkB,CAAC,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;KAC3G;IACD,IAAW,UAAU,KAAa,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE;AAEnE;;AAEG;IACH,IACW,WAAW,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;KAC7G;IACD,IAAW,WAAW,KAAa,OAAO,IAAI,CAAC,mBAAmB,CAAC,EAAE;AAErE;;AAEG;IACH,IACW,aAAa,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;KACjH;IACD,IAAW,aAAa,KAAa,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAE;AAEzE;;AAEG;IACH,IACW,WAAW,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;KAC7G;IACD,IAAW,WAAW,KAAa,OAAO,IAAI,CAAC,mBAAmB,CAAC,EAAE;AAErE;;AAEG;IACH,IACW,YAAY,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;KAC/G;IACD,IAAW,YAAY,KAAa,OAAO,IAAI,CAAC,oBAAoB,CAAC,EAAE;AAEvE;;AAEG;IACH,IACW,SAAS,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;KACzG;IACD,IAAW,SAAS,KAAa,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE;AAEjE;;;;;AAKG;IACH,IACW,QAAQ,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;YAC5D,IAAI,GAAG,KAAK,EAAE,EAAE;;AAEZ,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBAClC,SAAS;AACZ,aAAA;AACD,YAAA,MAAM,KAAK,GAAG,CAAW,QAAA,EAAA,GAAG,EAAE,CAAC;;AAE/B,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAClE,SAAA;KACJ;AACD,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED;;;AAGG;IACH,IACW,wBAAwB,CAAC,KAAc,EAAA;AAC9C,QAAA,IAAI,CAAC,gCAAgC,GAAG,KAAK,CAAC;;QAE9C,IAAI,IAAI,CAAC,gCAAgC,EAAE;AACvC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,kBAAkB,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;AACpG,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,CAAC;AACnG,SAAA;KACJ;IACD,IAAW,wBAAwB,KAAc,OAAO,IAAI,CAAC,gCAAgC,CAAC,EAAE;AAEhG;;;AAGG;IACH,IACW,sBAAsB,CAAC,KAAc,EAAA;AAC5C,QAAA,IAAI,CAAC,8BAA8B,GAAG,KAAK,CAAC;;QAE5C,IAAI,IAAI,CAAC,8BAA8B,EAAE;AACrC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,kBAAkB,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;AAClG,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,CAAC;AACjG,SAAA;KACJ;IACD,IAAW,sBAAsB,KAAc,OAAO,IAAI,CAAC,8BAA8B,CAAC,EAAE;IAkCrF,QAAQ,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE;AAChF,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,IAAY,KAAI;AACjF,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACzE,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;AACjE,uBAAA,MAAM,IAAI,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;aAC7E,CAAC,CAAC,GAAG,CAAC,CAAC,IAAY,KAAK,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5F,YAAA,KAAK,MAAM,aAAa,IAAI,UAAU,EAAE;AACpC,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA,EAAG,kBAAkB,CAAC,eAAe,GAAG,aAAa,CAAA,CAAE,CAAC,CAAC;AAC3H,gBAAA,MAAM,KAAK,GAAG,CAAW,QAAA,EAAA,aAAa,EAAE,CAAC;gBAEzC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;AACrE,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;IACI,SAAS,GAAA;QACZ,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAChE,YAAA,IAAI,OAAO,EAAE;AACT,gBAAA,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,KAAI;AACzB,oBAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,aAAa,EAAE;wBAC1C,OAAO;AACV,qBAAA;AACD,oBAAA,MAAM,KAAK,GAAG,CAAA,QAAA,EAAW,IAAI,CAAC,GAAG,EAAE,CAAC;AACpC,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;wBACpB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAC7D,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1C,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAChF,qBAAA;AACL,iBAAC,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;KACJ;;AA5PF;;;AAGI;AACqB,kBAAO,CAAA,OAAA,GAAG,YAAY,CAAC;AACvB,kBAAa,CAAA,aAAA,GAAG,cAAc,CAAC;AAC/B,kBAAe,CAAA,eAAA,GAAG,cAAc,CAAC;AACjC,kBAAgB,CAAA,gBAAA,GAAG,cAAc,CAAC;AAClC,kBAAkB,CAAA,kBAAA,GAAG,gBAAgB,CAAC;AACtC,kBAAiB,CAAA,iBAAA,GAAG,cAAc,CAAC;AACnC,kBAAc,CAAA,cAAA,GAAG,iBAAiB,CAAC;AACnC,kBAAgB,CAAA,gBAAA,GAAG,cAAc,CAAC;AAClC,kBAA6B,CAAA,6BAAA,GAAG,aAAa,CAAC;AAC9C,kBAA2B,CAAA,2BAAA,GAAG,aAAa,CAAC;AAEpE;AACwB,kBAAe,CAAA,eAAA,GAAG,cAAc,CAAC;AAEzD;AACwB,kBAAA,CAAA,iBAAiB,GAAG;IACxC,IAAI;IACJ,MAAM;IACN,MAAM;IACN,aAAa;IACb,eAAe;IACf,aAAa;IACb,UAAU;IACV,SAAS;IACT,UAAU;IACV,aAAa;IACb,gBAAgB;CACnB,CAAC;uGAhCO,kBAAkB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,eAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oGAAlB,kBAAkB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,cAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,4BAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,EAAA,UAAA,CAAA,EAAA,UAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,CAAA,EAAA,WAAA,EAAA,CAAA,yBAAA,EAAA,aAAA,CAAA,EAAA,aAAA,EAAA,CAAA,2BAAA,EAAA,eAAA,CAAA,EAAA,WAAA,EAAA,CAAA,yBAAA,EAAA,aAAA,CAAA,EAAA,YAAA,EAAA,CAAA,sBAAA,EAAA,cAAA,CAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,EAAA,UAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,yBAAA,EAAA,0BAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,4BAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,CAAA,CAAA;uFAAlB,kBAAkB,EAAA,CAAA;cAL9B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,CAAA;;AAEsE,mFAAA,CAAA;AACnF,aAAA,CAAA;2FA8CU,YAAY,EAAA,CAAA;kBADlB,KAAK;YAOK,WAAW,EAAA,CAAA;kBADrB,KAAK;mBAAC,gBAAgB,CAAA;YAWZ,QAAQ,EAAA,CAAA;kBADlB,KAAK;mBAAC,kBAAkB,CAAA;YAWd,UAAU,EAAA,CAAA;kBADpB,KAAK;mBAAC,kBAAkB,CAAA;YAWd,WAAW,EAAA,CAAA;kBADrB,KAAK;mBAAC,yBAAyB,CAAA;YAWrB,aAAa,EAAA,CAAA;kBADvB,KAAK;mBAAC,2BAA2B,CAAA;YAWvB,WAAW,EAAA,CAAA;kBADrB,KAAK;mBAAC,yBAAyB,CAAA;YAWrB,YAAY,EAAA,CAAA;kBADtB,KAAK;mBAAC,sBAAsB,CAAA;YAWlB,SAAS,EAAA,CAAA;kBADnB,KAAK;mBAAC,qBAAqB,CAAA;YAcjB,QAAQ,EAAA,CAAA;kBADlB,KAAK;mBAAC,sBAAsB,CAAA;YAuBlB,wBAAwB,EAAA,CAAA;kBADlC,KAAK;mBAAC,yBAAyB,CAAA;YAiBrB,sBAAsB,EAAA,CAAA;kBADhC,KAAK;mBAAC,4BAA4B,CAAA;;;MC1K1B,wBAAwB,CAAA;;mHAAxB,wBAAwB,GAAA,CAAA,EAAA,CAAA;yGAAxB,wBAAwB,EAAA,CAAA,CAAA;;uFAAxB,wBAAwB,EAAA,CAAA;cARpC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,kBAAkB;AACrB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,kBAAkB;AACrB,iBAAA;AACJ,aAAA,CAAA;;wFACY,wBAAwB,EAAA,EAAA,YAAA,EAAA,CAH7B,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAHlB,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCAb,kBAAkB,CAAA;AAyB3B,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;KAAK;AAxBzC;;;AAGG;AACH,IAAA,IACW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACrC;IAED,IAAW,SAAS,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACnC,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACnC,SAAA;KACJ;;uGAfQ,kBAAkB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oGAAlB,kBAAkB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,WAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;uFAAlB,kBAAkB,EAAA,CAAA;cAH9B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,4BAA4B;AACzC,aAAA,CAAA;6DAOc,SAAS,EAAA,CAAA;kBADnB,KAAK;YAgBC,YAAY,EAAA,CAAA;kBADlB,KAAK;;;MCdG,eAAe,CAAA;;iGAAf,eAAe,GAAA,CAAA,EAAA,CAAA;gGAAf,eAAe,EAAA,CAAA,CAAA;;uFAAf,eAAe,EAAA,CAAA;cAR3B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,kBAAkB;AACrB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,kBAAkB;AACrB,iBAAA;AACJ,aAAA,CAAA;;wFACY,eAAe,EAAA,EAAA,YAAA,EAAA,CAHpB,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAHlB,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCCb,gBAAgB,CAAA;AAOzB,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAN5B,QAAA,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC;AAExC,QAAA,IAAA,CAAA,YAAY,GAAG,CAAkB,eAAA,EAAA,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAErD,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAGvB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;KACnG;IAEM,QAAQ,GAAA;QACX,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,SAAS,IAAG;AAC7C,gBAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AACzB,oBAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;AAC9D,wBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;4BAC9B,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC7B,yBAAA;AAAM,6BAAA;AACH;;;;AAIE;4BACF,IAAI,IAAI,CAAC,UAAU,EAAE;gCACjB,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,6BAAA;AACD,4BAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC1B,yBAAA;AACJ,qBAAA;AACL,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACH,YAAA,MAAM,MAAM,GAAG,EAAE,eAAe,EAAE,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACvF,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC1D,SAAA;KACJ;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;KAC/B;IAEO,cAAc,GAAA;QAClB,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChD,SAAA;KACJ;AAEO,IAAA,kBAAkB,CAAC,KAAa,EAAA;QACpC,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACjD,QAAA,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;AACpC,QAAA,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAA,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAChD,QAAA,YAAY,CAAC,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACrD,QAAA,OAAO,YAAY,CAAC;KACvB;IAEO,kBAAkB,GAAA;QACtB,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3D,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACtC,SAAA;KACJ;;mGA7DQ,gBAAgB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;kGAAhB,gBAAgB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA;uFAAhB,gBAAgB,EAAA,CAAA;cAH5B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,cAAc;AAC3B,aAAA,CAAA;;;MCMY,aAAa,CAAA;;6FAAb,aAAa,GAAA,CAAA,EAAA,CAAA;8FAAb,aAAa,EAAA,CAAA,CAAA;;uFAAb,aAAa,EAAA,CAAA;cARzB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,gBAAgB;AACnB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,gBAAgB;AACnB,iBAAA;AACJ,aAAA,CAAA;;wFACY,aAAa,EAAA,EAAA,YAAA,EAAA,CAHlB,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAHhB,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCAX,eAAe,CAAA;AAExB;;;AAGG;AACH,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KAAK;AAEvC;;;;AAIG;IACI,WAAW,CAAC,KAA6B,EAAE,KAA0B,EAAA;QACxE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,MAAM,SAAS,GAAkB,KAAK,CAAC,IAAI,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAChD,QAAA,OAAO,KAAK,CAAC;KAChB;;iGApBQ,eAAe,EAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAf,mBAAA,eAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,eAAe,WAAf,eAAe,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAf,eAAe,EAAA,CAAA;cAD3B,UAAU;;;ACKX;;;;;;;;;;;;AAYG;MAEU,sBAAsB,CAAA;AAE/B;;;AAGG;AACH,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KAAK;AAEvC;;;;AAIG;IACI,WAAW,CAAC,KAA6B,EAAE,KAA0B,EAAA;AACxE,QAAA,MAAM,SAAS,GAAwB,KAAK,CAAC,IAAI,CAAC;AAClD,QAAA,IAAI,WAAW,GAAG,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC;AAC9C,QAAA,IAAI,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,IAAI,EAAE,CAAC;AAExD,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AAC7B,YAAA,WAAW,GAAG,CAAC,WAAW,CAAC,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;AAClC,YAAA,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACzC,SAAA;AAED,QAAA,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE;AACvH,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAChD,QAAA,OAAO,KAAK,CAAC;KAChB;;+GA9BQ,sBAAsB,EAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAtB,mBAAA,sBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,sBAAsB,WAAtB,sBAAsB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAtB,sBAAsB,EAAA,CAAA;cADlC,UAAU;;;AClBX;;AAEG;AACG,MAAO,UAAW,SAAQ,GAAG,CAAA;AAC/B;;AAEG;AACH,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;KACX;;uFANQ,UAAU,GAAA,CAAA,EAAA,CAAA;AAAV,mBAAA,UAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,UAAU,WAAV,UAAU,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAV,UAAU,EAAA,CAAA;cAJtB,UAAU;;;ACIL,MAAO,oBAAqB,SAAQ,oBAAoB,CAAA;AAG1D,IAAA,WAAA,CAAY,GAAe,EAAA;AACvB,QAAA,KAAK,CAAC,CAAC,WAAW,EAAE,SAAS,KAAK,oBAAoB,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;KAClG;IAEM,oBAAoB,CAAC,IAAoB,EAAE,KAAgB,EAAA;;QAE9D,MAAM,SAAS,GAAG,oBAAoB,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAClE,OAAQ,SAAS,IAAI,KAAK,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAChE;AAED,IAAA,IAAY,OAAO,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;KAC3B;;AAda,oBAAS,CAAA,SAAA,GAA6B,IAAI,CAAC;2GADhD,oBAAoB,EAAA,EAAA,CAAA,QAAA,CAAAC,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAApB,mBAAA,oBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,oBAAoB,WAApB,oBAAoB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAApB,oBAAoB,EAAA,CAAA;cADhC,UAAU;;;ACHX;;AAEG;AAEG,MAAO,WAAY,SAAQ,IAAI,CAAA;;AAAxB,mBAAA,WAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,wBAAA,CAAA,CAAA,OAAA,SAAA,mBAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,wBAAA,KAAA,wBAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,WAAW,SAAX,WAAW,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AAAX,mBAAA,WAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,WAAW,WAAX,WAAW,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAX,WAAW,EAAA,CAAA;cADvB,UAAU;;;ACCX;;AAEG;AACG,MAAO,cAAe,SAAQ,iBAAiB,CAAA;AACjD;;;;;;AAMG;AACH,IAAA,WAAA,CACI,WAAwB,EACxB,UAAsB,EACtB,oBAA0C,EAAA;AAC1C,QAAA,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC;KACxD;;+FAbQ,cAAc,EAAA,EAAA,CAAA,QAAA,CAAAC,WAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,UAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,oBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAd,mBAAA,cAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,cAAc,WAAd,cAAc,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAd,cAAc,EAAA,CAAA;cAJ1B,UAAU;;;ACAX;;AAEG;AACG,MAAO,YAAa,SAAQ,eAAe,CAAA;AAC7C;;;;;AAKG;IACH,WAAY,CAAA,cAA8B,EAAE,oBAA0C,EAAA;AAClF,QAAA,KAAK,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;KAC/C;;2FATQ,YAAY,EAAA,EAAA,CAAA,QAAA,CAAAC,cAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,oBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAZ,mBAAA,YAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,YAAY,WAAZ,YAAY,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAZ,YAAY,EAAA,CAAA;cAJxB,UAAU;;;ACCX;;AAEG;AACG,MAAO,WAAY,SAAQ,cAAc,CAAA;AAC3C;;;;;AAKG;IACH,WAAY,CAAA,cAA8B,EAAE,oBAA0C,EAAA;AAClF,QAAA,KAAK,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;KAC/C;;yFATQ,WAAW,EAAA,EAAA,CAAA,QAAA,CAAAD,cAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,oBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAX,mBAAA,WAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,WAAW,WAAX,WAAW,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAX,WAAW,EAAA,CAAA;cAJvB,UAAU;;;ACCX;;AAEG;AACG,MAAO,UAAW,SAAQ,aAAa,CAAA;AAEzC;;;;;AAKG;IACH,WAAY,CAAA,WAAwB,EAAE,YAA0B,EAAA;AAC5D,QAAA,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;KACpC;;uFAVQ,UAAU,EAAA,EAAA,CAAA,QAAA,CAAAC,WAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,YAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAV,mBAAA,UAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,UAAU,WAAV,UAAU,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAV,UAAU,EAAA,CAAA;cAJtB,UAAU;;;ACCL,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;IACpD,WAAY,CAAA,GAAe,EAAE,cAA8B,EAAA;AACvD,QAAA,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;KAC9B;;qGAHQ,iBAAiB,EAAA,EAAA,CAAA,QAAA,CAAAP,UAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAQ,cAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAjB,mBAAA,iBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,iBAAiB,WAAjB,iBAAiB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAjB,iBAAiB,EAAA,CAAA;cAD7B,UAAU;;;ACEX;;AAEG;AACG,MAAO,mBAAoB,SAAQ,YAAY,CAAA;AACjD;;;;;;AAMG;AACH,IAAA,WAAA,CAAY,WAAwB,EAAE,cAA8B,EAAG,oBAA0C,EAAA;AAC7G,QAAA,KAAK,CAAC,WAAW,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAC;KAC5D;;yGAVQ,mBAAmB,EAAA,EAAA,CAAA,QAAA,CAAAF,WAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAE,cAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAL,oBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAnB,mBAAA,mBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,mBAAmB,WAAnB,mBAAmB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAnB,mBAAmB,EAAA,CAAA;cAJ/B,UAAU;;;ACFX;;AAEG;AAEG,MAAO,eAAgB,SAAQ,YAAY,CAAA;AADjD,IAAA,WAAA,GAAA;;AAEI;;AAEG;AACI,QAAA,IAAA,CAAA,OAAO,GAA+B,IAAI,0BAA0B,EAAE,CAAC;AACjF,KAAA;;AALY,mBAAA,eAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,4BAAA,CAAA,CAAA,OAAA,SAAA,uBAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,4BAAA,KAAA,4BAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,eAAe,SAAf,eAAe,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AAAf,mBAAA,eAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,eAAe,WAAf,eAAe,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAf,eAAe,EAAA,CAAA;cAD3B,UAAU;;;ACAX;;AAEG;AACG,MAAO,iBAAkB,SAAQ,oBAAoB,CAAA;AACvD;;;;;;AAMG;AACH,IAAA,WAAA,CAAY,eAAgC,EAAE,WAAwB,EAAE,YAA0B,EAAA;AAC9F,QAAA,KAAK,CAAC,eAAe,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;KACrD;;qGAVQ,iBAAiB,EAAA,EAAA,CAAA,QAAA,CAAAM,eAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,WAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,YAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAjB,mBAAA,iBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,iBAAiB,WAAjB,iBAAiB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAjB,iBAAiB,EAAA,CAAA;cAJ7B,UAAU;;;ACEX;;AAEG;AACG,MAAO,uBAAwB,SAAQ,gBAAgB,CAAA;AACzD;;;;AAIG;AACH,IAAA,WAAA,CACI,iBAAoC,EACpC,UAAsB,EACtB,iBAAoC,EACpC,mBAAwC,EAAA;QAExC,KAAK,CAAC,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;KAChF;;iHAbQ,uBAAuB,EAAA,EAAA,CAAA,QAAA,CAAAC,iBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,UAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,iBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,mBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAvB,mBAAA,uBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,uBAAuB,WAAvB,uBAAuB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAvB,uBAAuB,EAAA,CAAA;cAJnC,UAAU;;;ACDX;;;AAGG;AACG,MAAO,mBAAoB,SAAQ,YAAY,CAAA;IAEjD,WAAY,CAAA,GAAe,EAAE,IAAiB,EAAA;AAC1C,QAAA,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KACpB;;yGAJQ,mBAAmB,EAAA,EAAA,CAAA,QAAA,CAAAf,UAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAgB,WAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAnB,mBAAA,mBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,mBAAmB,WAAnB,mBAAmB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAnB,mBAAmB,EAAA,CAAA;cAL/B,UAAU;;;ACAX;;AAEG;AACG,MAAO,sBAAuB,SAAQ,eAAe,CAAA;AACvD;;;;AAIG;AACH,IAAA,WAAA,CAAmB,cAA8B,EAAA;QAC7C,KAAK,CAAC,cAAc,CAAC,CAAC;QADP,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;KAEhD;;+GARQ,sBAAsB,EAAA,EAAA,CAAA,QAAA,CAAAZ,cAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAtB,mBAAA,sBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,sBAAsB,WAAtB,sBAAsB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAtB,sBAAsB,EAAA,CAAA;cAJlC,UAAU;;;ACEX;;AAEG;AACG,MAAO,uBAAwB,SAAQ,gBAAgB,CAAA;AACzD;;;;;AAKG;IACH,WAAY,CAAA,sBAA8C,EAAE,oBAA0C,EAAA;AAClG,QAAA,KAAK,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,CAAC;KACvD;;iHATQ,uBAAuB,EAAA,EAAA,CAAA,QAAA,CAAAa,sBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAZ,oBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAvB,mBAAA,uBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,uBAAuB,WAAvB,uBAAuB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAvB,uBAAuB,EAAA,CAAA;cAJnC,UAAU;;;ACEX;;AAEG;AACG,MAAO,gBAAiB,SAAQ,SAAS,CAAA;AAC3C;;;;;;AAMG;AACH,IAAA,WAAA,CACI,sBAA8C,EAC7C,gBAAyC,EACzC,oBAA0C,EAAA;AAC3C,QAAA,KAAK,CAAC,sBAAsB,EAAE,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;KACzE;;mGAbQ,gBAAgB,EAAA,EAAA,CAAA,QAAA,CAAAY,sBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,uBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAf,oBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAhB,mBAAA,gBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,gBAAgB,WAAhB,gBAAgB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAhB,gBAAgB,EAAA,CAAA;cAJ5B,UAAU;;;ACDX;;;AAGG;AACG,MAAO,qBAAsB,SAAQ,cAAc,CAAA;AAErD,IAAA,WAAA,CAAY,GAAe,EAAA;QACvB,KAAK,CAAC,GAAG,CAAC,CAAC;KACd;;6GAJQ,qBAAqB,EAAA,EAAA,CAAA,QAAA,CAAAH,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAArB,mBAAA,qBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,qBAAqB,WAArB,qBAAqB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAArB,qBAAqB,EAAA,CAAA;cALjC,UAAU;;;ACCX;;AAEG;AACG,MAAO,YAAa,SAAQ,eAAe,CAAA;AAC7C;;;;AAIG;AACH,IAAA,WAAA,CAAY,GAAe,EAAA;QACvB,KAAK,CAAC,GAAG,CAAC,CAAC;KACd;;2FARQ,YAAY,EAAA,EAAA,CAAA,QAAA,CAAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAZ,mBAAA,YAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,YAAY,WAAZ,YAAY,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAZ,YAAY,EAAA,CAAA;cAJxB,UAAU;;;ACsCX;;AAEG;AACI,MAAM,2BAA2B,GAAG,iBAAiB,CAAC;AAc7D;;AAEG;MACU,UAAU,CAAA;AAanB;;;AAGG;AACI,IAAA,OAAO,cAAc,GAAA;QACxB,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,IAAI,EAAE;YAC3C,UAAU,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;YACtD,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE;gBAC/C,KAAK,EAAE,OAAO,CAAC,IAAI;AACtB,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAED;;AAEG;AACI,IAAA,OAAO,aAAa,GAAA;AACvB,QAAA,IAAI,UAAU,CAAC,eAAe,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,IAAI,EAAE;YACzE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE;gBAC/C,KAAK,EAAE,UAAU,CAAC,eAAe;AACpC,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAED;;;;;;AAMG;AACI,IAAA,OAAO,WAAW,CAAC,IAAY,EAAE,IAAY,EAAA;AAChD,QAAA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAC9B,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,OAAO,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KACpE;AAED;;;;;;;AAOG;AACI,IAAA,OAAO,gBAAgB,CAAC,IAAY,EAAE,IAAY,EAAE,KAAa,EAAA;AACpE,QAAA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAC9B,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxD,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAExD,IAAI,SAAS,CAAC,MAAM,GAAG,KAAK,IAAI,SAAS,CAAC,MAAM,GAAG,KAAK,EAAE;AACtD,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC5B,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE;AAC/B,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;AAKG;IACK,OAAO,SAAS,CAAC,GAAW,EAAA;QAChC,IAAI,GAAG,IAAI,IAAI,EAAE;AACb,YAAA,OAAO,GAAG,CAAC;AACd,SAAA;AAED,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAClC,YAAA,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,SAAA;AAED,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AAC/C,YAAA,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACd;AAED;;;;;;AAMG;AACI,IAAA,OAAO,6BAA6B,CAAC,UAAkB,EAAE,cAAuB,EAAA;AACnF,QAAA,OAAO,CAAG,EAAA,UAAU,CAAI,CAAA,EAAA,cAAc,EAAE,CAAC;KAC5C;AAED;;;;;;;AAOG;AACI,IAAA,OAAO,4BAA4B,CACtC,iBAAoC,EACpC,KAA6B,EAC7B,UAAmB,EAAA;QACnB,MAAM,UAAU,GAAmC,EAAE,CAAC;QACtD,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9C,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,EAAE,CAAC;AAE1C,QAAA,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;;AAE7B,YAAA,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;AACpC,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE;;AAEjC,gBAAA,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG;AACxB,qBAAA,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;qBACzD,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;qBACtB,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,gBAAA,IAAI,WAAW,EAAE;;oBAEb,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAChE,iBAAA;gBAED,IAAI,MAAM,GAAoB,IAAI,CAAC;gBACnC,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,2BAA2B,CAAC,EAAE;;AAEjE,oBAAA,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;AAChF,oBAAA,IAAI,MAAM,EAAE;wBACR,IAAI,MAAM,YAAY,UAAU,EAAE;;AAE9B,4BAAA,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,yBAAA;AAAM,6BAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;;4BAEnC,MAAM,KAAK,GAAqB,MAAM,CAAC;4BACvC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9B,yBAAA;AAAM,6BAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;;AAEnC,4BAAA,MAAM,cAAc,GAAmB;AACnC,gCAAA,KAAK,EAAE,MAAM;AACb,gCAAA,IAAI,EAAE,UAAU;6BACnB,CAAC;4BACF,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACzC,yBAAA;AAAM,6BAAA;AACH,4BAAA,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAW;iCACxC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,8BAA8B,CAAC,OAAO,CAAC;AAC5E,4BAAA,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5B,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;;AAGD,YAAA,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAG;AAChC,gBAAA,IAAI,UAAU,CAAC,MAAM,KAAK,cAAc,EAAE;AACtC,oBAAA,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAClC,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;QAED,OAAO,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,IAAG;YAC/C,MAAM,MAAM,GAAqB,EAAE,CAAC;YACpC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,KAAI;AACxC,gBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACjB,oBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,MAAM,CAAC;SACjB,CAAC,CAAC,CAAC;KACP;AAED;;;;;AAKG;AACI,IAAA,OAAO,kBAAkB,CAAC,MAAc,EAAE,UAAsB,EAAA;QACnE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1E,MAAM,kBAAkB,GAAG,UAAU,CAAC,6BAA6B,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjI,MAAM,gBAAgB,GAAG,UAAU,CAAC,6BAA6B,CAC7D,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9E,MAAM,YAAY,GAAa,CAAC,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAC5F,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;KACxC;AAED;;;;;;;;;;;;AAYG;IACI,OAAO,iCAAiC,CAAC,IAAsB,EAAA;QAClE,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,OAAO,IAAI,CAAC,YAAY,CAAC;AAC5B,SAAA;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,WAAW,GAAG,CAAA,SAAA,CAAW,CAAC;AAC9B,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;gBACpB,WAAW,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC3C,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE;AACnC,gBAAA,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;AACpD,aAAA;AAED,YAAA,OAAO,WAAW,CAAC;AACtB,SAAA;aAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;;AAEpD,YAAA,OAAO,GAAG,CAAC;AACd,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;;AAEtC,YAAA,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,6DAA6D,CAAC,CAAC;AAC9F,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,IAAI,GAAG,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QACzE,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;;gBAEhD,GAAG,IAAI,cAAc,CAAC;AACtB,gBAAA,OAAO,GAAG,CAAC;AACd,aAAA;AAED,YAAA,GAAG,IAAI,CAAA,aAAA,EAAgB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAI,CAAA,EAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACzE,SAAA;;QAGD,IAAI,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;;AAEnD,gBAAA,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,yDAAyD,CAAC,CAAC;AAC1F,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AAED,YAAA,GAAG,IAAI,CAAA,OAAA,EAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAI,CAAA,EAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACvE,SAAA;aAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAChC,GAAG,IAAI,iBAAiB,CAAC;AACzB,YAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE;gBACpC,GAAG,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;AACnD,aAAA;AACJ,SAAA;QAED,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,GAAG,IAAI,IAAI,CAAC,uBAAuB,CAAC;AACvC,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACd;AAED;;;;AAIG;IACI,OAAO,0BAA0B,CAAC,KAAqB,EAAA;AAC1D,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,IAAI;YACA,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACxD,YAAA,IAAI,KAAK,EAAE;AACP,gBAAA,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACnC,aAAA;AAEJ,SAAA;QAAC,MAAM;AACP,SAAA;AAED,QAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;KACpC;AAED;;;;;AAKG;AACI,IAAA,OAAO,oBAAoB,CAAC,MAAc,EAAE,IAAY,EAAA;QAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtC,QAAA,MAAM,OAAO,GAAyB;YAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;SACnC,CAAC;AACF,QAAA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxB,QAAA,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC;AACzB,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAa,eAAe,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtF,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;;YAElD,QAAQ,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,SAAA;AAED,QAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;KAChC;AAED;;;;;AAKG;IACI,OAAO,iBAAiB,CAAC,UAAgC,EAAA;QAC5D,MAAM,MAAM,GAAW,EAAE,CAAC;QAC1B,IAAI,UAAU,CAAC,QAAQ,EAAE;AACrB,YAAA,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;AACzC,SAAA;AAED,QAAA,IAAI,UAAU,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1E,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC/D,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;;;;AAKG;IACI,OAAO,0BAA0B,CAAC,OAA6B,EAAA;QAClE,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,WAAW,EAAE;YACrB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC5C,YAAA,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,IAAI,CAAG,EAAA,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA,CAAA,EAAI,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC,CAAC;AACzG,SAAA;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE;AAClB,YAAA,KAAK,IAAI,CAAI,CAAA,EAAA,OAAO,CAAC,QAAQ,EAAE,CAAC;AACnC,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;;AAzWD;;AAEG;AACW,UAAU,CAAA,UAAA,GAAG,YAAY,CAAC;AAExC;;AAEG;AACW,UAAa,CAAA,aAAA,GAAG,eAAe,CAAC;AAE/B,UAAe,CAAA,eAAA,GAAQ,IAAI;;ACrE9C;;;;;;;;;;;;;;;;;;;;;AAqBG;AACH;;AAEG;AAEG,MAAO,mBAAoB,SAAQ,sBAAsB,CAAA;AAC3D;;;;;AAKG;AACH,IAAA,WAAA,CAAY,UAAsB,EAAA;QAC9B,KAAK,CAAC,UAAU,CAAC,CAAC;KACrB;;yGATQ,mBAAmB,EAAA,EAAA,CAAA,QAAA,CAAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAnB,mBAAA,mBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,mBAAmB,WAAnB,mBAAmB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAnB,mBAAmB,EAAA,CAAA;cAD/B,UAAU;;;ACvBX;;AAEG;AACG,MAAO,eAAgB,SAAQ,eAAe,CAAA;AAChD;;;;;AAKG;IACH,WAAY,CAAA,UAAsB,EAAE,cAA8B,EAAA;AAC9D,QAAA,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;KACrC;;iGATQ,eAAe,EAAA,EAAA,CAAA,QAAA,CAAAA,UAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAQ,cAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAf,mBAAA,eAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,eAAe,WAAf,eAAe,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAf,eAAe,EAAA,CAAA;cAJ3B,UAAU;;;ACCX;;AAEG;AACG,MAAO,gBAAiB,SAAQ,SAAS,CAAA;AAC3C;;;;;AAKG;IACH,WAAY,CAAA,sBAA8C,EAAE,oBAA0C,EAAA;AAClG,QAAA,KAAK,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,CAAC;KACvD;;mGATQ,gBAAgB,EAAA,EAAA,CAAA,QAAA,CAAAS,sBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAZ,oBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAhB,mBAAA,gBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,gBAAgB,WAAhB,gBAAgB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAhB,gBAAgB,EAAA,CAAA;cAJ5B,UAAU;;;ACEX;;AAEG;AAEG,MAAO,eAAgB,SAAQ,kBAAkB,CAAA;AACnD;;;;;;;AAOG;AACH,IAAA,WAAA,CACI,UAAsB,EACtB,WAAwB,EACxB,cAA8B,EAC9B,mBAAwC,EAAA;QACxC,KAAK,CAAC,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;KACvE;;iGAfQ,eAAe,EAAA,EAAA,CAAA,QAAA,CAAAL,UAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAU,WAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAS,cAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,mBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAf,mBAAA,eAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,eAAe,WAAf,eAAe,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAf,eAAe,EAAA,CAAA;cAD3B,UAAU;;;ACgDX;;AAEG;AACG,MAAO,iBAAkB,SAAQ,UAAU,CAAA;AAK7C;;;;;;;;;;;;;;;;;;;;AAoBG;AACH,IAAA,WAAA,CACI,uBAAgD,EAChD,oBAA0C,EAC1C,mBAAwC,EACxC,UAAsB,EACtB,gBAAkC,EAClC,iBAAoC,EACpC,qBAA4C,EAC5C,mBAAwC,EACxC,YAA0B,EAC1B,cAA8B,EAC9B,WAAwB,EACxB,mBAAwC,EACxC,iBAAoC,EACpC,uBAAgD,EAChD,eAAgC,EAChC,UAAsB,EACtB,eAAgC,EAChC,gBAAkC,EAClC,eAAgC,EAAA;AAEhC,QAAA,KAAK,CACD,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EACf,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,CAClB,CAAC;AAEF,QAAA,IAAI,CAAC,uBAAuB,GAAG,eAAe,CAAC;AAC/C,QAAA,IAAI,CAAC,4BAA4B,GAAG,oBAAoB,CAAC;KAC5D;AAED;;;;AAIG;AACI,IAAA,gBAAgB,CAAC,OAAgC,EAAA;QACpD,kBAAkB,CAAC,oBAAoB,EAAE,CAAC;QAC1C,IAAI,OAAO,CAAC,WAAW,EAAE;;YAErB,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;AAChF,SAAA;;;QAID,UAAU,CAAC,cAAc,EAAE,CAAC;KAC/B;AAED;;;;AAIG;IACI,qBAAqB,CAAC,aAA4B,EAAE,QAAgB,EAAA;QACvE,IAAI,CAAC,yBAAyB,CAAC,qBAAqB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;KACjF;AAED;;;;AAIG;AACI,IAAA,MAAM,CAAC,OAAmC,EAAA;QAC7C,kBAAkB,CAAC,uBAAuB,EAAE,CAAC;QAC7C,IAAI,OAAO,CAAC,iBAAiB,EAAE;YAC3B,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;AACtE,YAAA,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAC,iBAAiB,CAAC;AAC9D,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC;KACzC;AAED;;;AAGG;IACI,SAAS,GAAA;QACZ,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAChC,YAAA,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,CAAC;AAC7C,SAAA;KACJ;;qGA3HQ,iBAAiB,EAAA,EAAA,CAAA,QAAA,CAAAC,uBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAhB,oBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAiB,mBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,UAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,gBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,iBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,qBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,mBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,YAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,cAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,WAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,mBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,iBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,uBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,eAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,UAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,eAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,gBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,eAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAjB,mBAAA,iBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,iBAAiB,WAAjB,iBAAiB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAjB,iBAAiB,EAAA,CAAA;cAJ7B,UAAU;;;MCzCE,4BAA4B,CAAA;AACrC;;;AAGE;IACF,WAAoB,CAAA,MAAc,EAAU,UAA6B,EAAA;QAArD,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAAU,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;KAAK;AAC9E;;;;AAIE;IACK,WAAW,CAAC,KAA6B,EAAE,KAA0B,EAAA;AACxE,QAAA,MAAM,SAAS,GAA8B,KAAK,CAAC,IAAI,CAAC;AAExD,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,2BAA2B,EAAE;AACtD,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;QAED,IAAI,iBAAiB,GAAG,SAAS,CAAC,2BAA2B,CAAC,iBAAiB,IAAI,EAAE,CAAC;AACtF,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;AACnC,YAAA,iBAAiB,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC3C,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC,2BAA2B,CAAC,UAAU,CAAC;QACpE,MAAM,YAAY,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAEhE,QAAA,OAAO,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;aACxB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EACT,GAAG,CAAC,SAAS,IAAG;AACZ,YAAA,IAAI,SAAS,EAAE;AACX,gBAAA,IAAe,iBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;AACpF,oBAAA,OAAO,IAAI,CAAC;AACf,iBAAA;AAED,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACtC,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,CAAC,QAAQ,CAAC,8BAA8B,EAAE,+BAA+B,CAAC,CAAC;AAClF,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACtC,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACL,SAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;YACjB,OAAO,CAAC,QAAQ,CAAC,8BAA8B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAChE,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACtC,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;SACpB,CAAC,CACL,CAAC;KACT;;2HAhDQ,4BAA4B,EAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,iBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAA5B,mBAAA,4BAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,4BAA4B,WAA5B,4BAA4B,CAAA,IAAA,EAAA,CAAA,CAAA;uFAA5B,4BAA4B,EAAA,CAAA;cADxC,UAAU;;;MCCE,YAAY,CAAA;;2FAAZ,YAAY,GAAA,CAAA,EAAA,CAAA;6FAAZ,YAAY,EAAA,CAAA,CAAA;AANV,mBAAA,YAAA,CAAA,IAAA,6BAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,SAAA,EAAA;QACP,eAAe;QACf,sBAAsB;QACtB,4BAA4B;AAC/B,KAAA,EAAA,OAAA,EAAA,CANG,YAAY,CAAA,EAAA,CAAA,CAAA;uFAQP,YAAY,EAAA,CAAA;cAVxB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,YAAY;AACf,iBAAA;AACD,gBAAA,SAAS,EAAE;oBACP,eAAe;oBACf,sBAAsB;oBACtB,4BAA4B;AAC/B,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,YAAY,cARjB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACRpB;;AAEG;;ACEH;;;;;;;;;AASG;MAIU,oBAAoB,CAAA;IACtB,SAAS,CAAC,KAAc,EAAE,IAA0B,EAAA;AACvD,QAAA,IAAI,IAAI,EAAE;YACN,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAEtC,IAAI,WAAW,KAAK,SAAS,EAAE;AAC3B,gBAAA,OAAO,WAAW,CAAC;AACtB,aAAA;AAAM,iBAAA;gBACH,OAAO,CAAC,GAAG,CAAC;oBACR,KAAK,EAAE,QAAQ,CAAC,OAAO;oBACvB,OAAO,EAAE,qBAAqB,KAAK,CAAA,IAAA,EAAO,CAAC,CAAC,KAAK,CAAkC,+BAAA,EAAA,IAAI,CAAG,CAAA,CAAA;AAC1F,oBAAA,MAAM,EAAE;AACJ,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,WAAW,EAAE,WAAW;AACxB,wBAAA,KAAK,EAAE,KAAK;AACf,qBAAA;AACD,oBAAA,MAAM,EAAE,sBAAsB;AACjC,iBAAA,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,OAAO,CAAC,GAAG,CAAC;gBACR,KAAK,EAAE,QAAQ,CAAC,OAAO;gBACvB,OAAO,EAAE,CAAqC,kCAAA,EAAA,KAAK,CAAG,CAAA,CAAA;AACtD,gBAAA,MAAM,EAAE;AACJ,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,KAAK,EAAE,KAAK;AACf,iBAAA;AACD,gBAAA,MAAM,EAAE,sBAAsB;AACjC,aAAA,CAAC,CAAC;AACN,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;KAC3B;;2GAhCQ,oBAAoB,GAAA,CAAA,EAAA,CAAA;+HAApB,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA;uFAApB,oBAAoB,EAAA,CAAA;cAHhC,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACF,gBAAA,IAAI,EAAE,qBAAqB;AAC9B,aAAA,CAAA;;;MCNY,0BAA0B,CAAA;;uHAA1B,0BAA0B,GAAA,CAAA,EAAA,CAAA;2GAA1B,0BAA0B,EAAA,CAAA,CAAA;gHAFxB,CAAC,oBAAoB,CAAC,EAAA,OAAA,EAAA,CAFvB,YAAY,CAAA,EAAA,CAAA,CAAA;uFAIb,0BAA0B,EAAA,CAAA;cANtC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,YAAY,EAAE,CAAC,oBAAoB,CAAC;gBACpC,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,oBAAoB,CAAC;gBAC/B,SAAS,EAAE,CAAC,oBAAoB,CAAC;AACpC,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,0BAA0B,EALpB,EAAA,YAAA,EAAA,CAAA,oBAAoB,CACzB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACLlC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAErB;;AAEG;AACG,IAAQ,iBA8Hb;AA9HD,CAAA,UAAc,gBAAgB,EAAA;AAC1B,IAAA,YAAY,CAAC;AAEb,IAAA,MAAM,UAAU,GAAgC;AAC5C,QAAA,CAAC,EAAE,QAAQ;AACX,QAAA,CAAC,EAAE,IAAI;AACP,QAAA,CAAC,EAAE,IAAI;AACP,QAAA,CAAC,EAAE,IAAI;AACP,QAAA,CAAC,EAAE,IAAI;AACP,QAAA,CAAC,EAAE,IAAI;AACP,QAAA,CAAC,EAAE,IAAI;AACP,QAAA,CAAC,EAAE,IAAI;AACP,QAAA,CAAC,EAAE,IAAI;KACV,CAAC;AAEF;;AAEG;AACH,IAAA,IAAY,IAGX,CAAA;AAHD,IAAA,CAAA,UAAY,IAAI,EAAA;AACZ,QAAA,IAAA,CAAA,IAAA,CAAA,QAAA,CAAA,GAAA,IAAA,CAAA,GAAA,QAAa,CAAA;AACb,QAAA,IAAA,CAAA,IAAA,CAAA,SAAA,CAAA,GAAA,IAAA,CAAA,GAAA,SAAc,CAAA;AAClB,KAAC,EAHW,IAAI,GAAJ,gBAAI,CAAA,IAAA,KAAJ,qBAAI,GAGf,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACH,IAAA,IAAK,IAsBJ,CAAA;AAtBD,IAAA,CAAA,UAAK,IAAI,EAAA;AACL,QAAA,IAAA,CAAA,IAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;;AAGR,QAAA,IAAA,CAAA,IAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,QAAA,IAAA,CAAA,IAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,QAAA,IAAA,CAAA,IAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,QAAA,IAAA,CAAA,IAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,QAAA,IAAA,CAAA,IAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,QAAA,IAAA,CAAA,IAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,QAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;AACb,QAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;;AAGb,QAAA,IAAA,CAAA,IAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,QAAA,IAAA,CAAA,IAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,QAAA,IAAA,CAAA,IAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,QAAA,IAAA,CAAA,IAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,QAAA,IAAA,CAAA,IAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,QAAA,IAAA,CAAA,IAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,QAAA,IAAA,CAAA,IAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,QAAA,IAAA,CAAA,IAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AAChB,KAAC,EAtBI,IAAI,KAAJ,IAAI,GAsBR,EAAA,CAAA,CAAA,CAAA;AAED;;;;;AAKG;AACH,IAAA,SAAgB,iBAAiB,CAAC,KAAa,EAAE,IAA2B,EAAA;QACxE,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAChC,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAChC,YAAA,IAAI,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAEpD,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,YAAA,IAAI,IAAI,GAAG,MAAM,GAAG,oBAAoB,EAAG;AACvC,gBAAA,MAAM,GAAG,GAAG,CAAC;gBACb,IAAI,EAAE,CAAC;AACV,aAAA;AAED,YAAA,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,IAAI,WAAW,EAAE;gBACb,IAAI,WAAW,KAAK,QAAQ,EAAE;;AAE1B,oBAAA,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAClC,iBAAA;gBAED,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAChD,aAAA;YAED,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC5C,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACd;AAzBe,IAAA,gBAAA,CAAA,iBAAiB,oBAyBhC,CAAA;AAED;;;;;;;AAOG;IACH,SAAS,YAAY,CAAC,KAAa,EAAE,IAAU,EAAE,IAAU,EAAE,KAAe,EAAA;AACxE,QAAA,MAAM,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,eAAuB,CAAC;QAE5B,IAAI,MAAM,IAAI,IAAI,EAAE;YAChB,eAAe,GAAG,CAAC,CAAC;AACvB,SAAA;AAAM,aAAA;YACH,eAAe,GAAG,CAAC,CAAC;AACvB,SAAA;QAED,OAAO,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC;KAC1D;AAED;;;;;AAKG;AACH,IAAA,SAAS,OAAO,CAAC,KAAa,EAAE,IAAU,EAAA;QACtC,IAAI,KAAK,KAAK,CAAC,EAAE;AACb,YAAA,OAAa,KAAK,CAAC;AACtB,SAAA;QAED,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,QAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;AAC/C,YAAA,QAAQ,EAAE,CAAC;AACd,SAAA;AAED,QAAA,OAAa,QAAQ,CAAC;KACzB;AACL,CAAC,EA9Ha,gBAAgB,KAAhB,gBAAgB,GA8H7B,EAAA,CAAA,CAAA,CAAA;AAED;;;;;;;;;AASG;MAIU,qBAAqB,CAAA;IACvB,SAAS,CAAC,KAAa,EAAE,UAAkB,EAAA;QAC9C,MAAM,IAAI,GAA0B,UAAU,CAAC;QAC/C,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACxC,YAAA,OAAO,GAAG,CAAC;AACd,SAAA;QAED,OAAO,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC1D;;6GARQ,qBAAqB,GAAA,CAAA,EAAA,CAAA;iIAArB,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA;uFAArB,qBAAqB,EAAA,CAAA;cAHjC,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACF,gBAAA,IAAI,EAAE,sBAAsB;AAC/B,aAAA,CAAA;;;MCzIY,2BAA2B,CAAA;;yHAA3B,2BAA2B,GAAA,CAAA,EAAA,CAAA;4GAA3B,2BAA2B,EAAA,CAAA,CAAA;iHAFzB,CAAC,qBAAqB,CAAC,EAAA,OAAA,EAAA,CAFxB,YAAY,CAAA,EAAA,CAAA,CAAA;uFAIb,2BAA2B,EAAA,CAAA;cANvC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,YAAY,EAAE,CAAC,qBAAqB,CAAC;gBACrC,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,qBAAqB,CAAC;gBAChC,SAAS,EAAE,CAAC,qBAAqB,CAAC;AACrC,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,2BAA2B,EALrB,EAAA,YAAA,EAAA,CAAA,qBAAqB,CAC1B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCHtB,iBAAiB,CAAA;IACnB,SAAS,CAAC,IAAU,EAAE,MAAe,EAAA;QACxC,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,IAAI,SAAe,CAAC;QACpB,IAAI;;AAEA,YAAA,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAA;QAAC,MAAM;AACJ,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,OAAO,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;KAC3C;;qGAfQ,iBAAiB,GAAA,CAAA,EAAA,CAAA;gHAAjB,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA;uFAAjB,iBAAiB,EAAA,CAAA;cAD7B,IAAI;eAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;;AAoBzB;;;AAGG;MACU,sBAAsB,CAAA;IACxB,SAAS,CAAC,OAAa,EAAE,MAAe,EAAA;QAC3C,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,IAAI,SAAe,CAAC;AACpB,QAAA,IAAI,SAAe,CAAC;QACpB,IAAI;;AAEA,YAAA,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9B,YAAA,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,iBAAiB,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACzF,SAAA;QAAC,MAAM;AACJ,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,OAAO,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;KAC3C;;+GAjBQ,sBAAsB,GAAA,CAAA,EAAA,CAAA;0HAAtB,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA;uFAAtB,sBAAsB,EAAA,CAAA;cALlC,IAAI;eAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAA;;AAyB9B,SAAS,aAAa,CAAC,MAAc,EAAE,IAAU,EAAA;AAC7C,IAAA,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;AACvD,IAAA,QAAQ,WAAW;AACf,QAAA,KAAK,MAAM;AACP,YAAA,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxC,QAAA,KAAK,QAAQ;AACT,YAAA,OAAO,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,KAAK,OAAO;AACR,YAAA,OAAO,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjD,QAAA,KAAK,MAAM;AACP,YAAA,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxC,QAAA,KAAK,MAAM;AACP,YAAA,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxC,QAAA;AACI,YAAA,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3C,KAAA;AACL;;MCvDa,uBAAuB,CAAA;;iHAAvB,uBAAuB,GAAA,CAAA,EAAA,CAAA;wGAAvB,uBAAuB,EAAA,CAAA,CAAA;6GAFrB,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,EAAA,CAAA,CAAA;uFAE7C,uBAAuB,EAAA,CAAA;cALnC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;AACzD,gBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;AACpD,gBAAA,SAAS,EAAE,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;AACzD,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,uBAAuB,mBAJjB,iBAAiB,EAAE,sBAAsB,CAC9C,EAAA,OAAA,EAAA,CAAA,iBAAiB,EAAE,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACYvD;;;;;;;;;;;;;;AAcG;MAIU,iBAAiB,CAAA;AAI1B;;AAEG;IACI,OAAO,YAAY,CAAC,YAA0B,EAAA;QACjD,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KAClE;AAeM,IAAA,SAAS,CAAC,KAAa,EAAE,iBAA+C,EAAE,UAA2B,EAAA;QACxG,IAAI,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAClD,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,IAAI,CAAC,iBAAiB,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC;gBACR,KAAK,EAAE,QAAQ,CAAC,OAAO;gBACvB,OAAO,EAAE,CAAgD,6CAAA,EAAA,KAAK,CAAE,CAAA;AAChE,gBAAA,MAAM,EAAE;AACJ,oBAAA,iBAAiB,EAAE,iBAAiB;AACpC,oBAAA,KAAK,EAAE,KAAK;AACf,iBAAA;AACD,gBAAA,MAAM,EAAE,mBAAmB;AAC9B,aAAA,CAAC,CAAC;AACH,YAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC3B,SAAA;AAED,QAAA,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE;AACvC,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,EAAE,UAAU,IAAI,WAAW,CAAC,CAAC;AACpF,SAAA;AAAM,aAAA;YACH,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AAC5D,SAAA;KAEJ;AAED;;;;;AAKG;AACK,IAAA,eAAe,CAAC,KAAa,EAAE,MAAc,EAAE,UAA0B,EAAA;QAC7E,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE;AAC1C,YAAA,IAAI,UAAU,KAAK,WAAW,IAAI,YAAY,CAAC,cAAc,EAAE;AAC3D,gBAAA,OAAO,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC7C,aAAA;YACD,IAAI,YAAY,CAAC,QAAQ,EAAE;AACvB,gBAAA,OAAO,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvC,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;KAC3B;AAED;;;;AAIG;IACK,kBAAkB,CAAC,KAAa,EAAE,SAA8B,EAAA;QACpE,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,WAAW,KAAK,SAAS,EAAE;AAC3B,YAAA,OAAO,WAAW,CAAC;AACtB,SAAA;AAAM,aAAA;YACH,OAAO,CAAC,GAAG,CAAC;gBACR,KAAK,EAAE,QAAQ,CAAC,OAAO;AACvB,gBAAA,OAAO,EAAE,CAAA,OAAA,EAAU,KAAK,CAAA,wBAAA,EAA2B,SAAS,CAAE,CAAA;AAC9D,gBAAA,MAAM,EAAE;AACJ,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,WAAW,EAAE,WAAW;AACxB,oBAAA,KAAK,EAAE,KAAK;AACf,iBAAA;AACD,gBAAA,MAAM,EAAE,sCAAsC;AACjD,aAAA,CAAC,CAAC;AACH,YAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC3B,SAAA;KACJ;;AA1Fc,iBAAA,CAAA,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;qGAF9C,iBAAiB,GAAA,CAAA,EAAA,CAAA;yHAAjB,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA;uFAAjB,iBAAiB,EAAA,CAAA;cAH7B,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACF,gBAAA,IAAI,EAAE,kBAAkB;AAC3B,aAAA,CAAA;;;MCxBY,uBAAuB,CAAA;;iHAAvB,uBAAuB,GAAA,CAAA,EAAA,CAAA;wGAAvB,uBAAuB,EAAA,CAAA,CAAA;6GAFvB,CAAC,iBAAiB,CAAC,EAAA,OAAA,EAAA,CAFpB,YAAY,CAAA,EAAA,CAAA,CAAA;uFAIX,uBAAuB,EAAA,CAAA;cANnC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,YAAY,EAAE,CAAC,iBAAiB,CAAC;gBACjC,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,iBAAiB,CAAC;gBAC5B,SAAS,EAAE,CAAC,iBAAiB,CAAC;AAC/B,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,uBAAuB,EALnB,EAAA,YAAA,EAAA,CAAA,iBAAiB,CACtB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACD7B;;;;;;;;;;AAUG;MACU,UAAU,CAAA;AAfvB,IAAA,WAAA,GAAA;QAgBY,IAAG,CAAA,GAAA,GAAG,EAAE,CAAC;AAkBpB,KAAA;AAjBU,IAAA,SAAS,CAAC,KAAiB,EAAE,MAA4C,EAAE,MAAW,KAAK,EAAA;AAC9F,QAAA,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACpB,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC/B,IAAI,UAAU,GAA6D,MAAM,CAAC;AAClF,YAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBAC5B,MAAM,IAAI,GAAG,MAAM,CAAC;gBACpB,UAAU,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,aAAA;AACD,YAAA,IAAI,GAAG,EAAE;gBACL,MAAM,YAAY,GAAG,UAAU,CAAC;gBAChC,UAAU,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5C,aAAA;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACzB,SAAA;QACD,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;;uFAlBQ,UAAU,GAAA,CAAA,EAAA,CAAA;2GAAV,UAAU,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;uFAAV,UAAU,EAAA,CAAA;cAftB,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACF,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,IAAI,EAAE,KAAK;AACd,aAAA,CAAA;;;MCKY,gBAAgB,CAAA;;mGAAhB,gBAAgB,GAAA,CAAA,EAAA,CAAA;iGAAhB,gBAAgB,EAAA,CAAA,CAAA;sGAFhB,CAAC,UAAU,CAAC,EAAA,OAAA,EAAA,CAFb,YAAY,CAAA,EAAA,CAAA,CAAA;uFAIX,gBAAgB,EAAA,CAAA;cAN5B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,YAAY,EAAE,CAAC,UAAU,CAAC;gBAC1B,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,UAAU,CAAC;gBACrB,SAAS,EAAE,CAAC,UAAU,CAAC;AACxB,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,gBAAgB,EALZ,EAAA,YAAA,EAAA,CAAA,UAAU,CACf,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,UAAU,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACGtB;;;;;;;;;AASG;MAEU,UAAU,CAAA;IACZ,SAAS,CAAC,MAAc,EAAE,MAA4C,EAAA;AACzE,QAAA,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,WAAW,CAAoB,MAAM,EAAE,EAAE,CAAC,EAAE;AACpG,YAAA,OAAO,MAAM,CAAC;AACjB,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACxB,YAAA,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;AACrB,SAAA;QAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,IAAG;YACzC,MAAM,SAAS,GAAmB,KAAK,CAAC;YACxC,IAAI,SAAS,CAAC,IAAI,EAAE;AAChB,gBAAA,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,CAAW,QAAA,EAAA,SAAS,CAAC,MAAM,CAAA,CAAA,CAAG,GAAG,EAAE,CAAC;gBAC1E,OAAO,CAAA,oBAAA,EAAuB,UAAU,CAAA,OAAA,EAAU,SAAS,CAAC,IAAI,CAAA,EAAA,EAAK,SAAS,CAAC,IAAI,CAAA,IAAA,CAAM,CAAC;AAC7F,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACL,SAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;KACzD;;uFArBQ,UAAU,GAAA,CAAA,EAAA,CAAA;2GAAV,UAAU,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA;uFAAV,UAAU,EAAA,CAAA;cADtB,IAAI;eAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;;;MCVd,gBAAgB,CAAA;;mGAAhB,gBAAgB,GAAA,CAAA,EAAA,CAAA;iGAAhB,gBAAgB,EAAA,CAAA,CAAA;sGAFd,CAAC,UAAU,CAAC,EAAA,OAAA,EAAA,CAFb,YAAY,CAAA,EAAA,CAAA,CAAA;uFAIb,gBAAgB,EAAA,CAAA;cAN5B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,YAAY,EAAE,CAAC,UAAU,CAAC;gBAC1B,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,UAAU,CAAC;gBACrB,SAAS,EAAE,CAAC,UAAU,CAAC;AAC1B,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,gBAAgB,EALV,EAAA,YAAA,EAAA,CAAA,UAAU,CACf,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,UAAU,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACLxB;;;;;;;;;AASG;MAEU,aAAa,CAAA;AACjB,IAAA,SAAS,CAAC,SAAS,EAAE,MAAc,EAAE,cAAuB,EAAA;AACjE,QAAA,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,EAAE,IAAI,SAAS,IAAI,IAAI,EAAE;AACjF,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;AAED,QAAA,cAAc,GAAG,cAAc,IAAI,eAAe,CAAC;;;QAInD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAC;;;QAI9E,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAExC,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,CAAgB,aAAA,EAAA,cAAc,KAAK,KAAK,CAAA,OAAA,CAAS,CAAC,CAAC;KAC1F;;6FAlBU,aAAa,GAAA,CAAA,EAAA,CAAA;iHAAb,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA;uFAAb,aAAa,EAAA,CAAA;cADzB,IAAI;eAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAA;;;MCFjB,mBAAmB,CAAA;;yGAAnB,mBAAmB,GAAA,CAAA,EAAA,CAAA;oGAAnB,mBAAmB,EAAA,CAAA,CAAA;yGAFjB,CAAC,aAAa,CAAC,EAAA,OAAA,EAAA,CAFhB,YAAY,CAAA,EAAA,CAAA,CAAA;uFAIb,mBAAmB,EAAA,CAAA;cAN/B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,YAAY,EAAE,CAAC,aAAa,CAAC;gBAC7B,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,aAAa,CAAC;gBACxB,SAAS,EAAE,CAAC,aAAa,CAAC;AAC7B,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,mBAAmB,EALb,EAAA,YAAA,EAAA,CAAA,aAAa,CAClB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACJ3B;;;;;;;;;AASG;MAIU,kBAAkB,CAAA;AAH/B,IAAA,WAAA,GAAA;AAKY,QAAA,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC;AAKnD,KAAA;AAHU,IAAA,SAAS,CAAC,KAAc,EAAA;AAC3B,QAAA,OAAO,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;KAC7G;;uGANQ,kBAAkB,GAAA,CAAA,EAAA,CAAA;oIAAlB,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA;uFAAlB,kBAAkB,EAAA,CAAA;cAH9B,IAAI;AAAC,QAAA,IAAA,EAAA,CAAA;AACF,gBAAA,IAAI,EAAE,4BAA4B;AACrC,aAAA,CAAA;;;MCLY,wBAAwB,CAAA;;mHAAxB,wBAAwB,GAAA,CAAA,EAAA,CAAA;yGAAxB,wBAAwB,EAAA,CAAA,CAAA;8GAFtB,CAAC,kBAAkB,CAAC,EAAA,OAAA,EAAA,CAFrB,YAAY,CAAA,EAAA,CAAA,CAAA;uFAIb,wBAAwB,EAAA,CAAA;cANpC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,YAAY,EAAE,CAAC,kBAAkB,CAAC;gBAClC,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,kBAAkB,CAAC;gBAC7B,SAAS,EAAE,CAAC,kBAAkB,CAAC;AAClC,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,wBAAwB,EALlB,EAAA,YAAA,EAAA,CAAA,kBAAkB,CACvB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;ACA1B,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;AAwBpD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAlBpB;;AAEG;QACK,IAAc,CAAA,cAAA,GAAG,GAAG,CAAC;QAGb,IAA0B,CAAA,0BAAA,GAAG,KAAK,CAAC;QAEnC,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC;QAEpB,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;AACT,QAAA,IAAA,CAAA,OAAO,GAAuB,IAAI,YAAY,EAAQ,CAAC;KAQvE;AAzBD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,mBAAmB,CAAC;KAC9B;AAaD,IAAA,IACW,MAAM,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;KAC3C;AAMD;;AAEG;IACI,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACvB;IAEM,WAAW,GAAA;QACd,MAAM,OAAO,GAAG,EAAE,CAAC;AAEnB,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAU,OAAO,CAAC,IAAI,EAAE,EAAE,uCAAuC,CAAC,EAAE;AAC1G,YAAA,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;AAC1E,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,YAAY,EAAE;AACtD,YAAA,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAC3C,SAAA;AAED,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5B;;qGA/CQ,iBAAiB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;mGAAjB,iBAAiB,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;ACP9B,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAgF,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AACE,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,+CAAA,GAAA,EAAA,OAAS,aAAS,CAAC,EAAA,CAAA,CAAA;QAAmD,EAAM,CAAA,YAAA,EAAA,CAAA;QAC5J,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;QAC3B,EAAM,CAAA,YAAA,EAAA,CAAA;;QAHgD,EAAyB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,WAAA,EAAA,CAAA,CAAA;QACuB,EAAiD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjD,EAAiD,CAAA,WAAA,CAAA,4BAAA,EAAA,GAAA,CAAA,YAAA,CAAA,CAAA;QAA/F,EAAyB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,WAAA,EAAA,CAAA,CAAA;;uFDMpE,iBAAiB,EAAA,CAAA;cAJ7B,SAAS;2BACI,cAAc,EAAA,QAAA,EAAA,6SAAA,EAAA,CAAA;2DAgBR,0BAA0B,EAAA,CAAA;kBADzC,WAAW;mBAAC,+BAA+B,CAAA;;kBAC3C,KAAK;YAEU,YAAY,EAAA,CAAA;kBAA3B,KAAK;YAEU,KAAK,EAAA,CAAA;kBAApB,KAAK;YACW,OAAO,EAAA,CAAA;kBAAvB,MAAM;YAEI,MAAM,EAAA,CAAA;kBADhB,WAAW;mBAAC,eAAe,CAAA;;;MEXnB,cAAc,CAAA;;+FAAd,cAAc,GAAA,CAAA,EAAA,CAAA;+FAAd,cAAc,EAAA,CAAA,CAAA;mGAHnB,YAAY,CAAA,EAAA,CAAA,CAAA;uFAGP,cAAc,EAAA,CAAA;cAX1B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,iBAAiB;AACpB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,iBAAiB;AACpB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;AACf,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,cAAc,EANnB,EAAA,YAAA,EAAA,CAAA,iBAAiB,CAGjB,EAAA,OAAA,EAAA,CAAA,YAAY,aANZ,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;ACJzB;;;AAGG;MAKU,mBAAmB,CAAA;;yGAAnB,mBAAmB,GAAA,CAAA,EAAA,CAAA;qGAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,iBAAA,CAAA,CAAA,EAAA,kBAAA,EAAAC,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,aAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;ACVhC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA6B,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;QAEzB,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;AAC3B,QAAA,EAAA,CAAA,YAAA,EAAK,EAAA,CAAA;;uFDOM,mBAAmB,EAAA,CAAA;cAJ/B,SAAS;2BACI,iBAAiB,EAAA,QAAA,EAAA,2HAAA,EAAA,CAAA;;;MEQlB,gBAAgB,CAAA;;mGAAhB,gBAAgB,GAAA,CAAA,EAAA,CAAA;iGAAhB,gBAAgB,EAAA,CAAA,CAAA;qGAHrB,YAAY,CAAA,EAAA,CAAA,CAAA;uFAGP,gBAAgB,EAAA,CAAA;cAX5B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,mBAAmB;AACtB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,mBAAmB;AACtB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;AACf,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,gBAAgB,EANrB,EAAA,YAAA,EAAA,CAAA,mBAAmB,CAGnB,EAAA,OAAA,EAAA,CAAA,YAAY,aANZ,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCAd,aAAa,CAAA;;6FAAb,aAAa,GAAA,CAAA,EAAA,CAAA;+FAAb,aAAa,EAAA,SAAA,EAAA,CAAA,CAAA,UAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,sBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QAFX,EAAW,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;;uFAEb,aAAa,EAAA,CAAA;cAJzB,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,QAAQ,EAAE,aAAa;AAC1B,aAAA,CAAA;;;MCIY,UAAU,CAAA;;uFAAV,UAAU,GAAA,CAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,CAAA,CAAA;+FAHR,YAAY,CAAA,EAAA,CAAA,CAAA;uFAGd,UAAU,EAAA,CAAA;cALtB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,YAAY,EAAE,CAAE,aAAa,CAAE;gBAC/B,OAAO,EAAE,CAAE,YAAY,CAAE;gBACzB,OAAO,EAAE,CAAE,aAAa,CAAE;AAC7B,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,UAAU,EAJH,EAAA,YAAA,EAAA,CAAA,aAAa,CAClB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACLtB,IAAW,qBAqBhB;AArBD,CAAA,UAAiB,oBAAoB,EAAA;IAEpB,oBAAQ,CAAA,QAAA,GAAG,iBAAiB,CAAC;IAE1C,SAAgB,UAAU,CAAC,OAAoB,EAAA;QAC3C,OAAO,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC;KACvD;AAFe,IAAA,oBAAA,CAAA,UAAU,aAEzB,CAAA;IAED,SAAgB,MAAM,CAAC,OAAoB,EAAE,QAAQ,GAAG,oBAAoB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAA;QAC5F,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,oBAAoB,CAAC,QAAQ,EAAE;AACzD,YAAA,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAC9B,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,QAAQ,EAAE,IAAI;AACjB,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,KAAK,CAAC;KAChB;AARe,IAAA,oBAAA,CAAA,MAAM,SAQrB,CAAA;IAED,SAAgB,QAAQ,CAAC,OAAoB,EAAE,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAA;AACvF,QAAA,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAChC;AAFe,IAAA,oBAAA,CAAA,QAAQ,WAEvB,CAAA;AACL,CAAC,EArBgB,oBAAoB,KAApB,oBAAoB,GAqBpC,EAAA,CAAA,CAAA;;AChBD;;AAEG;MACU,mBAAmB,GAAG,IAAI,cAAc,CAAS,YAAY;;ACP1E;;;AAGG;AACH,IAAY,eAIX,CAAA;AAJD,CAAA,UAAY,eAAe,EAAA;AACvB,IAAA,eAAA,CAAA,eAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACT,IAAA,eAAA,CAAA,eAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACT,IAAA,eAAA,CAAA,eAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAiB,CAAA;AACrB,CAAC,EAJW,eAAe,KAAf,eAAe,GAI1B,EAAA,CAAA,CAAA;;MCNY,mBAAmB,CAAA;AAE5B;;AAEG;AACK,IAAA,WAAW,aAAa,GAAA;AAC5B,QAAA,OAAO,sBAAsB,CAAC;KACjC;AAED;;AAEG;AACI,IAAA,WAAW,UAAU,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC1B,YAAA,OAAO,CAAC,QAAQ,CAAC,qBAAqB,EAAE,uFAAuF,CAAC,CAAC;AACpI,SAAA;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAOD;;;AAGG;IACI,OAAO,QAAQ,CAAC,IAAiB,EAAA;;AAEpC,QAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE;;YAE9D,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,iKAAiK,CAAC,CAAC;AAC7M,SAAA;AACD,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;KAClC;AAED;;;AAGG;IACI,OAAO,UAAU,CAAC,IAAiB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAClC,SAAA;KACJ;;yGA7CQ,mBAAmB,GAAA,CAAA,EAAA,CAAA;AAAnB,mBAAA,mBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,mBAAmB,WAAnB,mBAAmB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAnB,mBAAmB,EAAA,CAAA;cAD/B,UAAU;;;;;;ICGP,EAAyC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACvC,EACe,CAAA,kBAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA;IACjB,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAFmB,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA7B,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,OAAA,CAAA,QAAA,CAA6B,gCAAA,CAAA,UAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;;;IAI/D,EAAoC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;AAClC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAA6C,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IACrC,EAAiB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;IAElC,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAHa,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,KAAA,CAAA,CAAA;IACpC,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;;;IAT7B,EAC4G,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAC1G,EAGe,CAAA,UAAA,CAAA,CAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IAEf,EAIe,CAAA,UAAA,CAAA,CAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACjB,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAXJ,EAAwB,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,OAAA,CAAA,SAAA,CAAA,CAAA;IADqD,EAAsB,CAAA,WAAA,CAAA,MAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA,YAAA,EAAA,MAAA,CAAA,SAAA,CAAA,uCAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,KAAA,CAAA,WAAA,CAAA,CAAA;IAEpF,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,MAAA,CAAA,OAAA,CAAA,QAAA,CAAA,CAAA;IAKxB,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnB,EAAmB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;;;AAQlC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAC4G,YAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAElG,EAAiB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,EAAA,CAAA;;;IAFhC,EAAwB,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,OAAA,CAAA,SAAA,CAAA,CAAA;IADmC,EAAsB,CAAA,WAAA,CAAA,MAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA,YAAA,EAAA,MAAA,CAAA,SAAA,CAAA,uCAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,KAAA,CAAA,WAAA,CAAA,CAAA;IAEvD,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,KAAA,CAAA,CAAA;IACpC,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;;ACX/B;;AAEG;AAKG,MAAO,oBAAqB,SAAQ,iBAAiB,CAAA;AAuGvD;;;AAGG;IACH,WAAY,CAAA,QAAkB,EAAU,IAAY,EAAA;QAChD,KAAK,CAAC,QAAQ,CAAC,CAAC;QADoB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;AAEhD,QAAA,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;KAChG;AA7GD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,sBAAsB,CAAC;KACjC;AA8CD;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;KAC9E;AAED;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;KAC9E;AAED;;;;AAIG;AACH,IAAA,IAAW,QAAQ,GAAA;QACf,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACvC,YAAA,OAAO,aAAa,CAAC;AACxB,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;AAED;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;QAChB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACvC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;AACH,IAAA,IAAW,sBAAsB,GAAA;QAC7B,OAAO,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KAChF;AAED;;AAEG;AACH,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;KAClD;IAYM,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MACxB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;KAC9E;IAEM,WAAW,GAAA;QACd,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACzE,QAAA,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACxC;AAED;;;AAGG;AACI,IAAA,cAAc,CAAC,KAAY,EAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,KAAK,SAAS,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC;QACzG,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;AACjC,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,cAAc,CAAC,KAAY,EAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,KAAK,YAAY,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC;QAC9G,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;AACjC,SAAA;KACJ;AAED;;AAEG;AAGI,IAAA,eAAe,CAAC,KAAY,EAAA;QAC/B,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpC,SAAA;KACJ;AAED;;AAEG;;AAGI,IAAA,QAAQ,CAAC,KAAY,EAAA;QACxB,IAAI,IAAI,CAAC,OAAO,EAAE;;YAEd,KAAK,CAAC,wBAAwB,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpC,SAAA;KACJ;AAED;;;AAGG;AACK,IAAA,WAAW,CAAC,KAAiB,EAAA;QACjC,IAAI,CAAC,aAAa,GAAG;YACjB,CAAC,EAAE,KAAK,CAAC,CAAC;YACV,CAAC,EAAE,KAAK,CAAC,CAAC;SACb,CAAC;KACL;AAED;;AAEG;AAEI,IAAA,OAAO,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,eAAe,CAAC,KAAK,EAAE;AAC/D,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpC,SAAA;QAED,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YAC/C,IAAI,CAAC,aAAa,GAAG;gBACjB,CAAC,EAAE,KAAK,CAAC,CAAC;gBACV,CAAC,EAAE,KAAK,CAAC,CAAC;aACb,CAAC;AACL,SAAA;KACJ;AAED;;AAEG;AACI,IAAA,IAAI,CAAC,OAAuB,EAAA;QAC/B,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpC,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QAC9C,UAAU,CAAC,MAAK;AACZ,YAAA,MAAM,IAAI,GAAG,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACzE,YAAA,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;AACI,IAAA,MAAM,CAAC,OAAuB,EAAA;QACjC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAChC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;AAC9C,SAAA;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;KACjD;AAED;;;AAGG;AACI,IAAA,OAAO,CAAC,EAAU,EAAA;QACrB,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,EAAE,CAAC;KACvD;AAED;;;AAGG;AACI,IAAA,IAAI,CAAC,EAAU,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;;YAErB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;;gBAEtD,MAAM,uBAAuB,GAAG,GAAG,CAAC,eAAe,CAClC,IAAI,CAAC,WAAW,CAAC,aAAa,EAC3C,OAAO,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CACtC,CAAC;AACF,gBAAA,IAAI,uBAAuB,EAAE;AACzB,oBAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AACvC,iBAAA;AACJ,aAAA;;;AAID,YAAA,MAAM,OAAO,GAAgB,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;YACjE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC1C,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB,SAAA;KACJ;AAED;;AAEG;IACK,UAAU,CAAC,eAAwB,EAAE,cAA+B,EAAA;QACxE,IAAI,IAAI,CAAC,OAAO,EAAE;;AAEd,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;gBAC7D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACjC,OAAO;AACV,aAAA;;AAGD,YAAA,MAAM,OAAO,GAAgB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;AAC/D,YAAA,MAAM,OAAO,GAAgB,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;;AAGjE,YAAA,MAAM,UAAU,GAAiB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAc,CAAC,qBAAqB,EAAE,CAAC;YAC7F,MAAM,QAAQ,GAAiB,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,qBAAqB,EAAE,CAAC;AACvF,YAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACpD,YAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;;AAGpD,YAAA,MAAM,cAAc,GAAG,CAAC,CAAC;YACzB,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,cAAc,CAAC;AAC5D,YAAA,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;;AAG9D,YAAA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACpF,YAAA,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACtF,IAAI,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,KAAK,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,iBAAiB,CAAC;;YAGzF,IAAI,WAAW,GAAG,iBAAiB,EAAE;AACjC,gBAAA,MAAM,UAAU,GAAG,iBAAiB,GAAG,WAAW,CAAC;gBACnD,IAAI,IAAI,UAAU,CAAC;gBACnB,WAAW,IAAI,UAAU,CAAC;AAC7B,aAAA;;AAGD,YAAA,IAAI,eAAe,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;;;AAGpE,gBAAA,IAAI,WAAW,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE;oBACtC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,KAAK,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC;;oBAGxF,IAAI,OAAO,CAAC,eAAe,CAAC,cAAc,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE;AAChE,wBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE;4BAC3B,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,IAAI,iBAAiB,CAAC;AACtD,yBAAA;AAAM,6BAAA;AACH,4BAAA,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,IAAI,iBAAiB,CAAC,CAAC;AAC/E,yBAAA;AACJ,qBAAA;AACJ,iBAAA;;gBAGD,MAAM,KAAK,IAAI,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;AACzC,gBAAA,MAAM,aAAa,GAAG,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;gBACzF,IAAI,aAAa,GAAG,CAAC,EAAE;;oBAEnB,IAAI,IAAI,aAAa,CAAC;oBACtB,WAAW,IAAI,aAAa,CAAC;AAChC,iBAAA;;AAGD,gBAAA,IAAI,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE;AACjC,oBAAA,WAAW,IAAI,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,kBAAkB,CAAC,CAAC;AAC9E,iBAAA;AAED,gBAAA,IAAI,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,oBAAoB,CAAC,kBAAkB,GAAG,QAAQ,CAAC,MAAM,EAAE;;;AAGtF,oBAAA,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,oBAAA,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;oBACjE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAG,EAAA,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,gBAAgB,CAAI,EAAA,CAAA,CAAC,CAAC;AACnH,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAM,IAAA,CAAA,CAAC,CAAC;AAClD,iBAAA;;gBAGD,IAAI,IAAI,GAAG,CAAC,EAAE;oBACV,MAAM,OAAO,GAAG,IAAI,CAAC;oBACrB,IAAI,GAAG,CAAC,iBAAiB,CAAC;oBAC1B,WAAW,GAAG,CAAC,WAAW,GAAG,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,OAAO,CAAC;AAChF,iBAAA;AAED,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA,EAAG,GAAG,CAAA,EAAA,CAAI,CAAC,CAAC;AACnD,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAA,EAAG,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;AACrD,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI,CAAC,CAAC;;;AAI/D,aAAA;AAAM,iBAAA;;;;gBAIH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAQ,MAAA,CAAA,CAAC,CAAC;gBAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAQ,MAAA,CAAA,CAAC,CAAC;AACpD,aAAA;YAED,IAAI,CAAC,eAAe,EAAE;AAClB,gBAAA,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;AAED;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,kBAAkB;YAClB,mBAAmB;YACnB,kBAAkB;YAClB,yBAAyB;YACzB,gBAAgB;AACnB,SAAA,CAAC,CAAC;KACN;;AAtYuB,oBAAkB,CAAA,kBAAA,GAAG,EAAE,CAAC;2GATvC,oBAAoB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAA,CAAA;sGAApB,oBAAoB,EAAA,SAAA,EAAA,CAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,0BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;AAApB,QAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,SAAA,8CAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,eAAA,CAAA,MAAA,CAAuB,CAAvB,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,MAAA,EAAA,SAAA,4CAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,eAAA,CAAA,MAAA,CAAuB,CAAvB,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,cAAA,EAAA,SAAA,oDAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,QAAA,CAAA,MAAA,CAAgB,mHAAhB,GAAe,CAAA,OAAA,CAAA,MAAA,CAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA;;QDnB5B,EACqJ,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAAnJ,EAAW,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,oDAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,MAAA,CAAsB,CAAC,EAAA,CAAA,CAAA,UAAA,EAAA,SAAA,qDAAA,CAAA,MAAA,EAAA,EAAA,OAAa,GAAsB,CAAA,cAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAnC,iGAAmD,GAAsB,CAAA,cAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAzE,CAAyF,YAAA,EAAA,SAAA,uDAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,MAAA,CAAsB,CAA/G,EAAA,CAAA,CAAA;AAClC,QAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAuD,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAGvD,EAYM,CAAA,UAAA,CAAA,CAAA,EAAA,mCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEN,EAA2B,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACzB,EAKM,CAAA,UAAA,CAAA,CAAA,EAAA,mCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AACR,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;QA1BoG,EAAoC,CAAA,WAAA,CAAA,mBAAA,EAAA,CAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QAK7F,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA5B,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,sBAAA,CAAA,CAAA;QAezC,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAzB,EAAyB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,mBAAA,CAAA,CAAA;;uFCDlD,oBAAoB,EAAA,CAAA;cAJhC,SAAS;2BACI,kBAAkB,EAAA,QAAA,EAAA,6hDAAA,EAAA,CAAA;gFAkBrB,gBAAgB,EAAA,CAAA;kBADtB,SAAS;mBAAC,kBAAkB,CAAA;YAOtB,cAAc,EAAA,CAAA;kBADpB,SAAS;mBAAC,gBAAgB,CAAA;YAqIpB,eAAe,EAAA,CAAA;kBAFrB,YAAY;mBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;;kBACxC,YAAY;mBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAA;YAYhC,QAAQ,EAAA,CAAA;kBADd,YAAY;mBAAC,uBAAuB,EAAE,CAAC,QAAQ,CAAC,CAAA;YAwB1C,OAAO,EAAA,CAAA;kBADb,YAAY;mBAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAA;;;;ACnK5C,MAAM,wBAAwB,GAAG,SAAS,CAAC;AAC3C,MAAM,sBAAsB,GAAG,UAAU,CAAC;AAE1C;;;AAGG;AAQG,MAAO,cAAe,SAAQ,iBAAiB,CAAA;IA0JjD,WAAY,CAAA,QAAkB,EAAU,MAAc,EAAA;QAClD,KAAK,CAAC,QAAQ,CAAC,CAAC;QADoB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAdtD;;;AAGG;AAEI,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEpE;;;AAGG;AAEI,QAAA,IAAA,CAAA,uBAAuB,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAI1E,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;AA3JD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,gBAAgB,CAAC;KAC3B;IAwJM,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;KACpB;AAED;;AAEG;IACK,gBAAgB,GAAA;;AAEpB,QAAA,MAAM,aAAa,GAAyB;AACxC,YAAA,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,CAAC,UAAU,CAAC;AAC7B,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,OAAO,EAAE,IAAI;SAChB,CAAC;AACF,QAAA,IAAI,gBAAgB,GAAqB,CAAC,SAAS,KAAK,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;;QAG7F,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE;;AAEnC,YAAA,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC;AAC/B,YAAA,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,YAAA,gBAAgB,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;AACrE,SAAA;;AAGD,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAC/B,YAAA,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAAS,EAAE,GAAG,KAAK,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;YAC5F,QAAQ,CAAC,OAAO,CACZ,IAAI,CAAC,WAAW,CAAC,aAAa,EAC9B,aAAa,CAChB,CAAC;AACN,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;AACK,IAAA,oBAAoB,CAAC,SAA2B,EAAA;AACpD,QAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;;AAEzB,YAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY;mBAC3B,QAAQ,CAAC,aAAa,KAAK,UAAU;AACrC,mBAAA,QAAQ,CAAC,MAAM,CAAC,QAAQ,KAAK,CAAC;AAC9B,mBAAA,QAAQ,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;AAC5C,gBAAA,oBAAoB,CAAC,QAAQ,CAAc,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/D,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;AACK,IAAA,eAAe,CAAC,SAA2B,EAAA;AAC/C,QAAA,cAAc,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;AAC9C,QAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;YACzB,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACvD,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;AACvE,aAAA;iBAAM,IAAI,QAAQ,CAAC,aAAa,EAAE;AAC/B,gBAAA,MAAM,MAAM,GAAgB,QAAQ,CAAC,MAAM,CAAC;AAC5C,gBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACjC,gBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;AAC/B,oBAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACtC,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;KACxC;AAED;;AAEG;IACK,UAAU,CAAC,KAAe,EAAE,qBAA8B,EAAA;AAC9D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;gBACrC,MAAM,WAAW,GAAgB,IAAI,CAAC;AAEtC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;gBACtC,IAAI,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;;AAE7D,oBAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,sBAAsB,CACrD,WAAW,EACX,cAAc,CAAC,kBAAkB,CACpC,CAAC,qBAAqB,CAAC;oBACxB,IAAI,CAAC,qBAAqB,EAAE;wBACxB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;AAClE,qBAAA;AACJ,iBAAA;AACD,gBAAA,IAAI,qBAAqB,EAAE;AACvB,oBAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;AAC3C,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;AACK,IAAA,mBAAmB,CAAC,OAAoB,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE;AAClC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,gBAAA,MAAM,SAAS,GAAG,CAAI,CAAA,EAAA,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;;gBAElD,IAAI,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;oBACrD,SAAS;AACZ,iBAAA;;AAED,gBAAA,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;;gBAEpD,IAAI,OAAO,GAAG,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;;AAG1D,gBAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;AAC1E,oBAAA,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC1E,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAC9E,iBAAA;AAED,gBAAA,IAAI,OAAe,CAAC;;AAEpB,gBAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;;AAEpC,oBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACjE,wBAAA,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACpD,wBAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7G,qBAAA;AACJ,iBAAA;qBAAM,IAAI,OAAO,CAAC,QAAQ,EAAE;AACzB,oBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;;AAExB,wBAAA,MAAM,IAAI,WAAW,CAAC,mDAAmD,SAAS,CAAA,2CAAA,CAA6C,CAAC,CAAC;AACpI,qBAAA;;AAED,oBAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,kBAAkB;AAC/C,0BAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,wBAAwB;AAC3E,6BAAA,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC;0BACrC,EAAE,CAAC;AACT,oBAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa;AACxE,yBAAA,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE,gBAAgB,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AAC1F,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;;AAE1B,wBAAA,MAAM,IAAI,WAAW,CAAC,4BAA4B,SAAS,CAAA,wCAAA,CAA0C,CAAC,CAAC;AAC1G,qBAAA;;AAED,oBAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,kBAAkB;AAC/C,0BAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,wBAAwB;AAC7E,6BAAA,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC;0BACrC,EAAE,CAAC;AACT,oBAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa;AACnF,yBAAA,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,EAAE,gBAAgB,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AAC5F,iBAAA;AACD,gBAAA,IAAI,OAAO,EAAE;AACT,oBAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7D,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,qBAAqB,CAAC,OAAoB,EAAA;QAC7C,MAAM,+BAA+B,GAAG,GAAG,CAAC,mBAAmB,CAC3D,OAAO,EACP,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAC5F,CAAC;QACF,IAAI,CAAC,+BAA+B,EAAE;AAClC,YAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAC3C,SAAA;KACJ;AAED;;;;AAIG;AACK,IAAA,oBAAoB,CAAC,OAAO,EAAA;AAChC,QAAA,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAG;YAClG,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAChD,gBAAA,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACxF,gBAAA,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACnE,gBAAA,IAAI,SAAS,IAAI,SAAS,KAAK,EAAE,IAAI,YAAY,EAAE;AAC/C,oBAAA,cAAc,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9C,oBAAA,IAAI,CAAC,GAAG,CACJ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EACjE,QAAQ,CAAC,KAAK,EACd,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,CACpE,CAAC;AACL,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;AACK,IAAA,0BAA0B,CAAC,OAAoB,EAAA;QACnD,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,KAAK,GAAG,IAAI,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAG;YACtG,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBAChD,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACnD,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACnD,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC3D,gBAAA,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE;AACtB,oBAAA,cAAc,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC9C,IAAI,CAAC,GAAG,CACJ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EACrE,QAAQ,CAAC,KAAK,EACd,EAAE,OAAO,EAAE,EAAE,EAAE,CAClB,CAAC;AACL,iBAAA;AACD,gBAAA,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE;AAC1B,oBAAA,cAAc,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC9C,IAAI,CAAC,GAAG,CACJ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,EACzE,QAAQ,CAAC,KAAK,EACd,EAAE,OAAO,EAAE,EAAE,EAAE,CAClB,CAAC;AACL,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;AACK,IAAA,qBAAqB,CAAC,OAAoB,EAAA;AAC9C,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,cAAc,CAAC,kBAAkB,CAAC,CAAC;AACpG,QAAA,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE;AAC3C,YAAA,MAAM,cAAc,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC5E,YAAA,IAAI,cAAc,EAAE;gBAChB,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;AAC5D,oBAAA,cAAc,CAAC,sBAAsB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;oBAC1D,IAAI,CAAC,GAAG,CACJ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EACjE,QAAQ,CAAC,KAAK,EACd,EAAE,OAAO,EAAE,cAAc,EAAE,CAC9B,CAAC;AACL,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;AACK,IAAA,yBAAyB,CAAC,OAAoB,EAAA;AAClD,QAAA,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,IAAI,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAG;YAC9G,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAChD,gBAAA,cAAc,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC9C,IAAI,CAAC,GAAG,CACJ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EACrE,QAAQ,CAAC,KAAK,EACd,EAAE,OAAO,EAAE,EAAE,EAAE,CAClB,CAAC;AACL,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;AACK,IAAA,0BAA0B,CAAC,OAAoB,EAAA;QACnD,MAAM,+BAA+B,GAAG,GAAG,CAAC,mBAAmB,CAC3D,OAAO,EACP,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAC5F,CAAC;AACF,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,cAAc,CAAC,kBAAkB,CAAC,CAAC;AAEpG,QAAA,OAAO,CAAC,+BAA+B,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC;KACxF;AAED;;;AAGG;AACK,IAAA,kBAAkB,CAAC,OAAoB,EAAA;QAC3C,MAAM,uBAAuB,GAAG,GAAG,CAAC,mBAAmB,CACnD,OAAO,EACP,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC,YAAY,CACpF,CAAC;AACF,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,cAAc,CAAC,kBAAkB,CAAC,CAAC;AAEpG,QAAA,OAAO,CAAC,uBAAuB,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;KACxE;AAED;;;;AAIG;IACK,sBAAsB,CAAC,OAAoB,EAAE,aAAqB,EAAA;AACtE,QAAA,MAAM,YAAY,GAAiB,EAAE,oBAAoB,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC;QACtH,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AACtE,QAAA,IAAI,cAAc,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;gBACnD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9C,gBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACjB,oBAAA,QAAQ,IAAI,CAAC,IAAI,EAAE;AACf,wBAAA,KAAK,eAAe;AAChB,4BAAA,YAAY,CAAC,oBAAoB,GAAG,IAAI,CAAC;4BACzC,MAAM;AACV,wBAAA,KAAK,OAAO;AACR,4BAAA,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;4BACjC,MAAM;AACV,wBAAA,KAAK,WAAW;AACZ,4BAAA,YAAY,CAAC,qBAAqB,GAAG,IAAI,CAAC;4BAC1C,MAAM;AACb,qBAAA;AACL,iBAAC,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;;AAEH,gBAAA,YAAY,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACzC,gBAAA,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,gBAAA,YAAY,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAE7C,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,YAAY,CAAC;KACvB;AAED;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,QAAQ;AACX,SAAA,CAAC,CAAC;KACN;AAED;;AAEG;IAGI,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC7B;;AAjfc,cAAA,CAAA,sBAAsB,GAAG,IAAI,GAAG,EAAe,CAAC;AAChD,cAAA,CAAA,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;AAC1C,cAAc,CAAA,cAAA,GAAG,kBAAkB,CAAC;AACpC,cAAkB,CAAA,kBAAA,GAAG,uBAAuB,CAAC;AAC7C,cAAA,CAAA,iBAAiB,GAA2C;;AAEvE,IAAA,aAAa,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACnH,IAAA,QAAQ,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACzJ,IAAA,eAAe,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAChK,IAAA,iBAAiB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACtK,IAAA,aAAa,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,gDAAgD,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACzL,IAAA,gBAAgB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,wDAAwD,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACpM,IAAA,oBAAoB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,gEAAgE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAChN,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,oDAAoD,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC9L,IAAA,eAAe,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,sDAAsD,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACjM,IAAA,aAAa,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,kDAAkD,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC3L,IAAA,kBAAkB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,4DAA4D,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC1M,IAAA,aAAa,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC9J,IAAA,aAAa,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC/J,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,iCAAiC,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACxK,IAAA,aAAa,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACzJ,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACpH,IAAA,aAAa,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACnH,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC3J,IAAA,mBAAmB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACnK,IAAA,gBAAgB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACtH,IAAA,gBAAgB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACtH,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,+BAA+B,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACtK,IAAA,YAAY,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,oDAAoD,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC5L,IAAA,gBAAgB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACtH,IAAA,kBAAkB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACxH,IAAA,gBAAgB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC/J,IAAA,0BAA0B,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACzK,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,oCAAoC,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC9K,IAAA,kBAAkB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACjK,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACrJ,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACpH,IAAA,gBAAgB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACtH,IAAA,kBAAkB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACvK,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,8CAA8C,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACxL,IAAA,YAAY,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,iDAAiD,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACzL,IAAA,eAAe,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,OAAO,EAAE,8CAA8C,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC9K,IAAA,eAAe,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,OAAO,EAAE,8CAA8C,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC9K,IAAA,gBAAgB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,OAAO,EAAE,8CAA8C,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC/K,IAAA,aAAa,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,OAAO,EAAE,8CAA8C,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC5K,IAAA,mBAAmB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,OAAO,EAAE,8CAA8C,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAClL,IAAA,aAAa,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,OAAO,EAAE,8CAA8C,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC5K,IAAA,eAAe,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,OAAO,EAAE,8CAA8C,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC9K,IAAA,qBAAqB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC3H,IAAA,mBAAmB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACzH,IAAA,YAAY,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,sCAAsC,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC9K,IAAA,aAAa,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC/J,IAAA,SAAS,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC/G,IAAA,aAAa,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,OAAO,EAAE,8CAA8C,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC5K,IAAA,UAAU,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAChH,IAAA,YAAY,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAClH,IAAA,mBAAmB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACzH,IAAA,gBAAgB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACtH,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC5J,IAAA,gBAAgB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACtH,IAAA,YAAY,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACpK,IAAA,SAAS,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,8CAA8C,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACnL,IAAA,mBAAmB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACzH,IAAA,gBAAgB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACtH,IAAA,iBAAiB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACvH,IAAA,QAAQ,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAClK,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC7J,IAAA,kBAAkB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,2CAA2C,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACzL,IAAA,gBAAgB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,OAAO,EAAE,8CAA8C,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC/K,IAAA,UAAU,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACnK,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACpH,IAAA,SAAS,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC/G,IAAA,gBAAgB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACtH,IAAA,eAAe,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACrH,IAAA,eAAe,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACrH,IAAA,YAAY,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,+BAA+B,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACvK,IAAA,uBAAuB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC7H,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACjH,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACjH,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACjH,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACjH,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACpH,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACpH,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACjH,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACjH,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACjH,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACjH,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACpH,IAAA,mBAAmB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,+CAA+C,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC9L,IAAA,gBAAgB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,4CAA4C,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACxL,IAAA,mBAAmB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACxK,IAAA,gBAAgB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACrK,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACjH,IAAA,eAAe,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACrH,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACjH,IAAA,OAAO,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC7G,IAAA,OAAO,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC7G,IAAA,YAAY,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAClH,IAAA,eAAe,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACrH,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACpH,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACpH,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACpH,IAAA,aAAa,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACnH,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACjH,IAAA,iBAAiB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,2DAA2D,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACxM,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACpH,IAAA,kBAAkB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACxH,IAAA,YAAY,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAClH,IAAA,UAAU,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAChH,IAAA,YAAY,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAClH,IAAA,iBAAiB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACvH,IAAA,uBAAuB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC7H,IAAA,kBAAkB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACxH,IAAA,kBAAkB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACxH,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACpH,IAAA,gBAAgB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACtH,IAAA,qBAAqB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC3H,IAAA,sBAAsB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC5H,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC7J,IAAA,uBAAuB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,0DAA0D,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAC7M,IAAA,UAAU,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AAChH,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACpH,IAAA,OAAO,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,sDAAsD,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACzL,IAAA,MAAM,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACzJ,IAAA,cAAc,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,6DAA6D,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;AACvM,IAAA,gBAAgB,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,sCAAsC,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;;AAElL,IAAA,WAAW,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,sBAAsB,EAAE;;CAEpH,CAAC;+FA1IO,cAAc,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAA,CAAA;gGAAd,cAAc,EAAA,SAAA,EAAA,CAAA,CAAA,QAAA,CAAA,CAAA,EAAA,YAAA,EAAA,SAAA,2BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;6FAAd,GAAiB,CAAA,eAAA,EAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA;AAJf,KAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA;AACP,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAC,MAAM,cAAc,EAAC,EAAE;AAClF,SAAA,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,kBAAA,EAAAA,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,uBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QAHU,EAAqC,CAAA,SAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,CAAA;QAAA,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;AA2fzE,UAAA,CAAA;IACCzC,UAAQ,CAAC,GAAG,CAAC;;;;AAGb,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;uFA1fQ,cAAc,EAAA,CAAA;cAP1B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,gEAAgE;AAC1E,gBAAA,SAAS,EAAE;AACP,oBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAC,MAAoB,cAAA,EAAC,EAAE;AAClF,iBAAA;AACJ,aAAA,CAAA;gFAkJU,aAAa,EAAA,CAAA;kBADnB,MAAM;YAQA,uBAAuB,EAAA,CAAA;kBAD7B,MAAM;YAiWA,eAAe,EAAA,CAAA;kBAFrB,YAAY;mBAAC,eAAe,CAAA;;;AC5iBjC;;;;AAIG;MAKU,wBAAwB,CAAA;;mHAAxB,wBAAwB,GAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,uBAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,yBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QCXrC,EAA4D,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;QAC1D,EAA+B,CAAA,SAAA,CAAA,CAAA,EAAA,eAAA,CAAA,CAAA;QACjC,EAAS,CAAA,YAAA,EAAA,CAAA;;uFDSI,wBAAwB,EAAA,CAAA;cAJpC,SAAS;2BACI,uBAAuB,EAAA,QAAA,EAAA,sHAAA,EAAA,CAAA;;;AENrC;;;;AAIG;MAKU,gCAAgC,CAAA;;mIAAhC,gCAAgC,GAAA,CAAA,EAAA,CAAA;kHAAhC,gCAAgC,EAAA,SAAA,EAAA,CAAA,CAAA,+BAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,yCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QAF9B,EAA+B,CAAA,SAAA,CAAA,CAAA,EAAA,eAAA,CAAA,CAAA;;uFAEjC,gCAAgC,EAAA,CAAA;cAJ5C,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,+BAA+B;AACzC,gBAAA,QAAQ,EAAE,iCAAiC;AAC9C,aAAA,CAAA;;;ACSK,MAAO,oBAAqB,SAAQ,iBAAiB,CAAA;AAwCvD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QA7BZ,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QACrB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;KA6B3B;AAxCD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,sBAAsB,CAAC;KACjC;AASM,IAAA,UAAU,CAAC,KAAoB,EAAA;QAClC,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE;YAC9C,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,gBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAC9B,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjC,KAAK,CAAC,wBAAwB,EAAE,CAAC;AACpC,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAChC,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;IAGM,aAAa,GAAA;;QAEhB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;AACjC,YAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,SAAS,EAAE;AAC3C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAChC,aAAA;AACJ,SAAA;KACJ;IAMM,QAAQ,GAAA;QACX,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,SAAS,IAAG;AACrD,YAAA,SAAS,CAAC,OAAO,CAAC,MAAK;AACnB;;AAEc;gBACd,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClC,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACpC,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;IAEM,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAEM,WAAW,GAAA;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,0BAA0B,EAAE,CAAC;KACrC;AAEM,IAAA,wBAAwB,CAAC,gBAAkC,EAAA;AAC9D,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAEM,0BAA0B,GAAA;AAC7B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;IAEO,cAAc,GAAA;;;AAGlB,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC1F,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;AAC1D,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,OAAO,EAAE,IAAI;AAChB,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;IAEO,aAAa,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW,EAAE;AAC3C,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC5B,SAAA;KACJ;;IAIO,wBAAwB,GAAA;AAC5B,QAAA,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC,eAAe,CAC9B,IAAI,CAAC,WAAW,CAAC,aAAa,EAC3C,OAAO,IAAI,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,EACvC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CACtD,CAAC;QAEF,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChI,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,GAAG,CACJ,uFAAuF,EACvF,QAAQ,CAAC,KAAK,EACd,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAClD,CAAC;AACL,SAAA;KACJ;IAEO,0BAA0B,GAAA;QAC9B,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;AAC/D,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACpC,SAAA;KACJ;;2GA1HQ,oBAAoB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;sGAApB,oBAAoB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA,EAAA,YAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AAApB,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,+CAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,UAAA,CAAA,MAAA,CAAkB,sFAAlB,GAAe,CAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAkGxB,UAAA,CAAA;AAAC,IAAAA,UAAQ,EAAE;;;;AAiBV,CAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,0BAAA,EAAA,IAAA,CAAA,CAAA;uFAnHQ,oBAAoB,EAAA,CAAA;cAJhC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,kBAAkB;AAC5B,gBAAA,QAAQ,EAAE,gBAAgB;AAC7B,aAAA,CAAA;2DAiBU,UAAU,EAAA,CAAA;kBADhB,YAAY;mBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;YAe5B,aAAa,EAAA,CAAA;kBADnB,YAAY;mBAAC,UAAU,CAAA;YAsEhB,wBAAwB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACtHpC;;AAEG;IACS,iBAKX;AALD,CAAA,UAAY,gBAAgB,EAAA;AACxB,IAAA,gBAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;AACH,IAAA,gBAAA,CAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,gBAAA,CAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,gBAAA,CAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACV,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,GAK3B,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACG,IAAQ,oBAAoB,CA4BjC;AA5BD,CAAA,UAAc,oBAAoB,EAAA;AAE9B;;AAEG;AACH,IAAA,MAAM,UAAU,GAAG;AACf,QAAA,gBAAgB,CAAC,GAAG;AACpB,QAAA,gBAAgB,CAAC,IAAI;AACrB,QAAA,gBAAgB,CAAC,KAAK;AACtB,QAAA,gBAAgB,CAAC,MAAM;KAC1B,CAAC;AAEF;;AAEG;AACH,IAAA,SAAgB,UAAU,CAAC,KAAa,EAAE,gBAAqC,GAAA,gBAAgB,CAAC,MAAM,EAAA;AAClG,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,gBAAgB,CAAC;AAC3B,SAAA;AACD,QAAA,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAC5B,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,IAAI,gBAAgB,CAAC;KAClG;AANe,IAAA,oBAAA,CAAA,UAAU,aAMzB,CAAA;AACD;;AAEG;IACH,SAAgB,QAAQ,CAAC,SAA2B,EAAA;AAChD,QAAA,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;KACtC;AAFe,IAAA,oBAAA,CAAA,QAAQ,WAEvB,CAAA;AACL,CAAC,EA5Ba,oBAAoB,KAApB,oBAAoB,GA4BjC,EAAA,CAAA,CAAA;;MCbY,iBAAiB,CAAA;;AACnB,iBAAO,CAAA,OAAA,GAAG,SAAS,CAAC;AACpB,iBAAQ,CAAA,QAAA,GAAG,UAAU,CAAC;MAGpB,iBAAiB,CAAA;;AACnB,iBAAU,CAAA,UAAA,GAAG,YAAY,CAAC;AAC1B,iBAAU,CAAA,UAAA,GAAG,YAAY,CAAC;AAGrC;;;;;;;;;;;;;;;;;AAiBG;AAEH;;AAEG;AAIG,MAAO,gBAAiB,SAAQ,iBAAiB,CAAA;AAmOnD;;;AAGG;AACH,IAAA,WAAA,CAAoB,UAAsB,EAAU,YAA0B,EAAE,QAAkB,EAAA;QAC9F,KAAK,CAAC,QAAQ,CAAC,CAAC;QADA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAU,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AA9N7D,QAAA,IAAA,CAAA,0BAA0B,GAAoC,IAAI,YAAY,EAAqB,CAAC;AACpG,QAAA,IAAA,CAAA,0BAA0B,GAAoC,IAAI,YAAY,EAAqB,CAAC;AAsErH;;AAEG;QAEI,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;AAE7B;;AAEG;QAEI,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;AAEtC;;;AAGG;QAEI,IAAuB,CAAA,uBAAA,GAAG,IAAI,CAAC;AAwIlC,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;KACxG;AAxOD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,kBAAkB,CAAC;KAC7B;AAOD;;;;;;AAMG;IACH,IACW,KAAK,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;;AAEnC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;;;;YAM/E,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE;AAC1C,gBAAA,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC;AAEpC,gBAAA,eAAe,CAAC,WAAW,CACvB,IAAI,EACJ;AACI,oBAAA,OAAO,EAAE;AACL,wBAAA,KAAK,EAAE,yBAAyB;AAChC,wBAAA,IAAI,EAAE,eAAe;AACxB,qBAAA;AACJ,iBAAA,CAAC,CAAC;AACV,aAAA;AAAM,iBAAA;;AAEH,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC9B,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAmDD;;AAEG;AACH,IAAA,IACW,eAAe,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC7F,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QACD,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;KACvE;AAED;;AAEG;AACH,IAAA,IAAY,SAAS,GAAA;QACjB,OAAO,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;KACpE;AAED;;AAEG;AACH,IAAA,IAAY,WAAW,GAAA;QACnB,OAAO,mBAAmB,CAAC,UAAU,CAAC;KACzC;AAED;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC;KACvD;AA2BD;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACrD;AAED;;;AAGG;AACH,IAAA,IAAY,mBAAmB,GAAA;QAC3B,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvC,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,MAAM,iBAAiB,GAAgB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AACtE,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,uBAAuB,CAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,iBAAiB,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;KAC9E;AAED;;AAEG;AACH,IAAA,IAAY,UAAU,GAAA;AAClB,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,eAAA,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACvE,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE;;YAEvE,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;;YAGD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;AAC1C,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACJ,SAAA;aAAM,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,GACnD,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,aAAa,CAAC,EAAE,EAAE;AACjF,YAAA,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;;AAGpF,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC/B,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;;AAGD,YAAA,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;AAC5D,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;;YAGD,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE;AAClF,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACJ,SAAA;;AAGD,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC/B,QAAA,OAAO,KAAK,CAAC;KAChB;AAWD;;AAEG;IACI,QAAQ,GAAA;QACX,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;AACnD,SAAA;;QAGD,IAAI,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,UAAU,CAAC,aAAa;;YAE7B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,IAAI,IAAI,EAAE;;YAGhD,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,SAAS,IAAG;AAC7C,gBAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AACzB,oBAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,UAAU,EAAE;;wBAEvC,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,qBAAA;AACL,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AAEH,YAAA,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAC1E,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAChE,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE3B,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACrD,SAAA;KACJ;AAED;;AAEG;IACI,WAAW,GAAA;QACd,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,0BAA0B,EAAE,CAAC;AACjD,SAAA;KACJ;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,OAAO,EAAE,EAAE;SACd,CAAC;KACL;AAED;;AAEG;AAGI,IAAA,YAAY,CAAC,KAAY,EAAA;;QAE5B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACxH,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,QAAQ,CAAC;AACjF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,aAAa,CAAC;QAC3F,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;KACtF;AAED;;AAEG;AAGI,IAAA,YAAY,CAAC,KAAY,EAAA;AAC5B,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE;;YAEvE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,UAAU,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAC7H,YAAA,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC,KAAK,CAAC;AAC5C,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7D,SAAA;KACJ;AAED;;AAEG;AAII,IAAA,OAAO,CAAC,KAAY,EAAA;AACvB,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE;AACvE,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACvD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;AAC3B,SAAA;KACJ;AAED;;;;AAIG;AACK,IAAA,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO,EAAA;;QAE1F,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,YAAA,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAA,OAAO;oBACH,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;oBAC/D,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACxE,aAAA;AAED,YAAA,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAA,OAAO;oBACH,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;oBAClE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAC1E,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAChC,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,SAAA;aAAM,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE;YACvC,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,SAAA;KACJ;AAED;;AAEG;AAEI,IAAA,IAAI,CAAC,cAAA,GAA0B,KAAK,EAAE,cAA4B,EAAA;AACrE,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,cAAc,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;;AAEpD,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;AACjF,SAAA;KACJ;AAED;;AAEG;IAEI,IAAI,GAAA;QACP,IAAI,IAAI,CAAC,KAAK;gBACN,CAAC,IAAI,CAAC,UAAU;AACb,oBAAC,IAAI,CAAC,UAAU,CAAC,aAAa;uBAC1B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,EAAE;;YAE9D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3C,SAAA;KACJ;IAEO,iBAAiB,CAAC,cAA4B,EAAE,UAAoB,EAAA;QACxE,OAAO;YACH,QAAQ,EAAE,IAAI,CAAC,WAAW;AAC1B,YAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,UAAU;YACzB,OAAO,EAAE,IAAI,CAAC,iBAAiB;YAC/B,OAAO,EAAE,IAAI,CAAC,WAAW;AACzB,YAAA,cAAc,EAAE,cAAc,IAAiB,QAAQ,CAAC,aAAa;YACrE,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,gBAAgB;AAC7B,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,cAAc,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE;AAC5C,YAAA,aAAa,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;YACnF,aAAa,EAAE,IAAI,CAAC,cAAc;SACrC,CAAC;KACL;AAED;;AAEG;IACK,cAAc,GAAA;AAClB,QAAA,MAAM,IAAI,GAAgB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QACzD,MAAM,cAAc,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,UAAU,CAAC,CAAC;QACrG,IAAI,CAAC,cAAc,EAAE;AACjB,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;;AAEtD,QAAA,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;AACxC,QAAA,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AACpC,QAAA,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;AAC3C,QAAA,cAAc,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3C,QAAA,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC;AACxC,QAAA,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;AACzC,QAAA,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;;AAG5C,QAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACzC,QAAA,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAC7D,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvD,cAAc,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QACzD,cAAc,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnD,cAAc,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrD,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvD,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvD,cAAc,CAAC,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;QAC7D,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;;AAG3D,QAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACrC,MAAM,mBAAmB,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;QACzE,MAAM,YAAY,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;AAClE,QAAA,MAAM,WAAW,GAAG,mBAAmB,GAAG,YAAY,CAAC;QACvD,cAAc,CAAC,MAAM,EAAE,CAAC;;;;;;;;;;AAWxB,QAAA,OAAO,WAAW,CAAC;KACtB;;mGA/cQ,gBAAgB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA0C,IAAA,CAAA,YAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;kGAAhB,gBAAgB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,YAAA,EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,6BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;uGAAhB,GAAoB,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,UAAA,EAAA,SAAA,4CAAA,CAAA,MAAA,EAAA,EAAA,OAApB,GAAoB,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,YAAA,EAAA,SAAA,8CAAA,CAAA,MAAA,EAAA,EAAA,OAApB,GAAoB,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,YAAA,EAAA,SAAA,8CAAA,CAAA,MAAA,EAAA,EAAA,OAApB,GAAoB,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,OAAA,EAAA,SAAA,yCAAA,CAAA,MAAA,EAAA,EAAA,OAApB,GAAe,CAAA,OAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,eAAA,EAAA,SAAA,iDAAA,CAAA,MAAA,EAAA,EAAA,OAAf,GAAe,CAAA,OAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,eAAA,EAAA,SAAA,iDAAA,CAAA,MAAA,EAAA,EAAA,OAAf,GAAe,CAAA,OAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;;;;AAsXxB,UAAA,CAAA;AAAC,IAAA1C,UAAQ,EAAE;;8CACmD,WAAW,CAAA,CAAA;;AAKxE,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,MAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AAAC,IAAAA,UAAQ,EAAE;;;;AASV,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,MAAA,EAAA,IAAA,CAAA,CAAA;uFA1YQ,gBAAgB,EAAA,CAAA;cAH5B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,sBAAsB;AACnC,aAAA,CAAA;iHAUoB,0BAA0B,EAAA,CAAA;kBAA1C,MAAM;YACU,0BAA0B,EAAA,CAAA;kBAA1C,MAAM;YAYI,KAAK,EAAA,CAAA;kBADf,KAAK;YAuCC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAOC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YAOC,mBAAmB,EAAA,CAAA;kBADzB,KAAK;YAOC,gBAAgB,EAAA,CAAA;kBADtB,KAAK;YAOC,cAAc,EAAA,CAAA;kBADpB,KAAK;YAOC,sBAAsB,EAAA,CAAA;kBAD5B,KAAK;YAQC,uBAAuB,EAAA,CAAA;kBAD7B,KAAK;YAOC,WAAW,EAAA,CAAA;kBADjB,KAAK;YAOK,eAAe,EAAA,CAAA;kBADzB,WAAW;mBAAC,uBAAuB,CAAA;YAmM7B,YAAY,EAAA,CAAA;kBAFlB,YAAY;AAAC,YAAA,IAAA,EAAA,CAAA,iBAAiB,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;kBAClD,YAAY;AAAC,YAAA,IAAA,EAAA,CAAA,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAA;YAc7C,YAAY,EAAA,CAAA;kBAFlB,YAAY;AAAC,YAAA,IAAA,EAAA,CAAA,iBAAiB,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;;kBACrD,YAAY;AAAC,YAAA,IAAA,EAAA,CAAA,iBAAiB,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;YAgB/C,OAAO,EAAA,CAAA;kBAHb,YAAY;mBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;kBAChC,YAAY;mBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;;kBACxC,YAAY;mBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;AA6ClC,SAAA,CAAA,EAAA,IAAI,MAWJ,IAAI,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCxaF,aAAa,CAAA;AACtB;;;AAGG;AACI,IAAA,OAAO,OAAO,GAAA;QACjB,OAAO;AACH,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,SAAS,EAAE,EAAE;SAChB,CAAC;KACL;;6FAVQ,aAAa,GAAA,CAAA,EAAA,CAAA;8FAAb,aAAa,EAAA,CAAA,CAAA;kGALlB,YAAY;QACZ,cAAc;QACd,uBAAuB,CAAA,EAAA,CAAA,CAAA;uFAGlB,aAAa,EAAA,CAAA;cAjBzB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,gBAAgB;oBAChB,oBAAoB;oBACpB,oBAAoB;AACvB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,gBAAgB;oBAChB,oBAAoB;oBACpB,oBAAoB;AACvB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,cAAc;oBACd,uBAAuB;AAC1B,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,aAAa,mBAVlB,gBAAgB;QAChB,oBAAoB;AACpB,QAAA,oBAAoB,aAGpB,YAAY;QACZ,cAAc;AACd,QAAA,uBAAuB,aAZvB,gBAAgB;QAChB,oBAAoB;QACpB,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCCf,WAAW,CAAA;;yFAAX,WAAW,GAAA,CAAA,EAAA,CAAA;4FAAX,WAAW,EAAA,CAAA,CAAA;gGAJhB,YAAY;QACZ,aAAa,CAAA,EAAA,CAAA,CAAA;uFAGR,WAAW,EAAA,CAAA;cARvB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,OAAO,EAAE,CAAC,cAAc,CAAC;gBACzB,YAAY,EAAE,CAAC,cAAc,CAAC;AAC9B,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,aAAa;AAChB,iBAAA;AACJ,aAAA,CAAA;;wFACY,WAAW,EAAA,EAAA,YAAA,EAAA,CANL,cAAc,CAAA,EAAA,OAAA,EAAA,CAEzB,YAAY;AACZ,QAAA,aAAa,aAJP,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCYf,mBAAmB,CAAA;;yGAAnB,mBAAmB,GAAA,CAAA,EAAA,CAAA;oGAAnB,mBAAmB,EAAA,CAAA,CAAA;wGANlB,YAAY,EAAE,YAAY,EAAE,WAAW,CAAA,EAAA,CAAA,CAAA;uFAMxC,mBAAmB,EAAA,CAAA;cAX/B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE;oBACV,wBAAwB;oBACxB,gCAAgC;AACnC,iBAAA;AACD,gBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC;AAClD,gBAAA,OAAO,EAAE;oBACL,wBAAwB;oBACxB,gCAAgC;AACnC,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,mBAAmB,mBATxB,wBAAwB;AACxB,QAAA,gCAAgC,aAE1B,YAAY,EAAE,YAAY,EAAE,WAAW,aAE7C,wBAAwB;QACxB,gCAAgC,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;;;ICPlC,EACuF,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;;;IAArF,EAA6E,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA2C,KAAA,EAAA,MAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,MAAA,CAAA,CAAA,CAAA;;;IAKnF,EAAuF,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACrF,EAAyB,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IAC3B,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAFqC,EAA2C,CAAA,WAAA,CAAA,sBAAA,EAAA,MAAA,CAAA,YAAA,CAAA,CAAA;;;;MCR3E,qBAAqB,CAAA;AAJlC,IAAA,WAAA,GAAA;AAKI;;AAEG;QAEI,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;AAClC,KAAA;;6GANY,qBAAqB,GAAA,CAAA,EAAA,CAAA;uGAArB,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,kCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;QAFnB,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;uFAE3B,qBAAqB,EAAA,CAAA;cAJjC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,mBAAmB;AAC7B,gBAAA,QAAQ,EAAE,2BAA2B;AACxC,aAAA,CAAA;gBAMU,gBAAgB,EAAA,CAAA;kBADtB,WAAW;mBAAC,sBAAsB,CAAA;;MAQ1B,uBAAuB,CAAA;AAJpC,IAAA,WAAA,GAAA;AAWI;;AAEG;QACI,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;AAErB;;;AAGG;QAEI,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;AAE5B;;AAEG;QAEI,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC;AAE3B;;;AAGG;QAEI,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAE5B;;;AAGG;QAEI,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAarB,QAAA,IAAA,CAAA,OAAO,GAA0C,IAAI,YAAY,EAA2B,CAAC;AAavG,KAAA;IAnBU,QAAQ,GAAA;QACX,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;KACrC;AAKD;;AAEG;IACI,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;;iHA9DQ,uBAAuB,GAAA,CAAA,EAAA,CAAA;yGAAvB,uBAAuB,EAAA,SAAA,EAAA,CAAA,CAAA,qBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAAC,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,gCAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,OAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,gCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;ADlBpC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAiC,aAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAO3B,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,qDAAA,GAAA,EAAA,OAAS,cAAU,CAAC,EAAA,CAAA,CAAA;QACpB,EACuF,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACvF,EAA2E,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAY,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;QAEhG,EAAoD,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;QACtD,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAEM,CAAA,UAAA,CAAA,CAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACR,EAAM,CAAA,YAAA,EAAA,CAAA;;QAhB6F,EAAqD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAArD,QAAA,EAAA,CAAA,WAAA,CAAA,gCAAA,EAAA,GAAA,CAAA,YAAA,CAAqD,CAAA,uCAAA,EAAA,GAAA,CAAA,YAAA,IAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAEzH,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAjC,QAAA,EAAA,CAAA,WAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,QAAA,CAAiC,oDAAA,CAAA,uCAAA,EAAA,GAAA,CAAA,YAAA,IAAA,GAAA,CAAA,MAAA,CAAA,CAAA;AACa,QAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,CAAA,CAAA,GAAA,CAAA,MAAA,CAA+B,CAAA,YAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAI/F,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA;QAEqC,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhB,EAAgB,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAAC,EAAY,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAZ,EAAY,CAAA,iBAAA,CAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAI9D,EAAY,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAZ,EAAY,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;;uFCI9B,uBAAuB,EAAA,CAAA;cAJnC,SAAS;2BACI,qBAAqB,EAAA,QAAA,EAAA,uvCAAA,EAAA,CAAA;gBAQxB,MAAM,EAAA,CAAA;kBADZ,KAAK;YAaC,aAAa,EAAA,CAAA;kBADnB,KAAK;YAOC,YAAY,EAAA,CAAA;kBADlB,KAAK;YAQC,YAAY,EAAA,CAAA;kBADlB,KAAK;YAQC,YAAY,EAAA,CAAA;kBADlB,KAAK;YAcC,OAAO,EAAA,CAAA;kBADb,MAAM;;;;ACzDL,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AAgCrD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;AAlCD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,oBAAoB,CAAC;KAC/B;IAWD,IACW,WAAW,CAAC,KAAc,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5D,SAAA;KACJ;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IASM,kBAAkB,GAAA;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,KAAK,CACD,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EACrE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CACpB,QAAQ,CAAC,MAAM,IAAG;AACd,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7C,SAAC,CAAC,CACL,CACJ,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEtD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,KAAK,CACD,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EACvE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CACpB,QAAQ,CAAC,CAAC,MAAiC,KAAI;AAC3C,YAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjD,SAAC,CAAC,CACL,CACJ,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;KAChE;AAEO,IAAA,wBAAwB,CAAC,MAAiC,EAAA;QAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAA8B,KAAI;YAC9D,OAAO,KAAK,CAAC,OAAO,CAAC;AACzB,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC;KAChC;AAEO,IAAA,oBAAoB,CAAC,MAA0C,EAAA;AACnE,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;AACpC,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;KACpD;AAEO,IAAA,sBAAsB,CAAC,MAA0C,EAAA;AACrE,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KAA8B,KAAI;AACxE,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACrB,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC;KAChC;AAEM,IAAA,cAAc,CAAC,KAA8B,EAAA;QAChD,IAAI,KAAK,CAAC,MAAM,EAAE;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACjC,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;AAC9E,gBAAA,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,aAAA;AACJ,SAAA;KACJ;AAEM,IAAA,iBAAiB,CAAC,KAA8B,EAAA;QACnD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,IAAG;YAC9B,IAAI,CAAC,KAAK,KAAK,EAAE;AACb,gBAAA,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;;uGAlGQ,kBAAkB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oGAAlB,kBAAkB,EAAA,SAAA,EAAA,CAAA,CAAA,eAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;oCAUV,uBAAuB,EAAA,CAAA,CAAA,CAAA;;;;;;QCpB5C,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;uFDUZ,kBAAkB,EAAA,CAAA;cAJ9B,SAAS;2BACI,eAAe,EAAA,QAAA,EAAA,+BAAA,EAAA,CAAA;2DAclB,MAAM,EAAA,CAAA;kBADZ,eAAe;mBAAC,uBAAuB,CAAA;YAIjC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAIC,WAAW,EAAA,CAAA;kBADjB,KAAK;YAIK,WAAW,EAAA,CAAA;kBADrB,KAAK;;;MEJG,eAAe,CAAA;;iGAAf,eAAe,GAAA,CAAA,EAAA,CAAA;gGAAf,eAAe,EAAA,CAAA,CAAA;oGAJpB,YAAY;QACZ,YAAY,CAAA,EAAA,CAAA,CAAA;uFAGP,eAAe,EAAA,CAAA;cAhB3B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,kBAAkB;oBAClB,uBAAuB;oBACvB,qBAAqB;AACxB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,kBAAkB;oBAClB,uBAAuB;oBACvB,qBAAqB;AACxB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,YAAY;AACf,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,eAAe,mBATpB,kBAAkB;QAClB,uBAAuB;AACvB,QAAA,qBAAqB,aAGrB,YAAY;AACZ,QAAA,YAAY,aAXZ,kBAAkB;QAClB,uBAAuB;QACvB,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACH7B;;;;AAIG;MACU,eAAe,CAAA;AAN5B,IAAA,WAAA,GAAA;QAaY,IAAsB,CAAA,sBAAA,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAwB,CAAA,wBAAA,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAqB,CAAA,qBAAA,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE3D;;AAEG;QACK,IAAY,CAAA,YAAA,GAAoB,EAAE,CAAC;;;AAGnC,QAAA,IAAA,CAAA,uBAAuB,GAAoC;AAC/D,YAAA,KAAK,EAAE;;;AAGH,gBAAA,GAAG,EAAE,GAAG;AACR,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,WAAW,EAAE,IAAI;AACpB,aAAA;AACD,YAAA,MAAM,EAAE;;;AAGJ,gBAAA,GAAG,EAAE,GAAG;AACR,gBAAA,GAAG,EAAE,GAAG;AACR,gBAAA,MAAM,EAAE,EAAE;AACb,aAAA;AACD,YAAA,KAAK,EAAE;;;AAGH,gBAAA,GAAG,EAAE,GAAG;AACR,gBAAA,MAAM,EAAE,EAAE;AACb,aAAA;SACJ,CAAC;AAkkBL,KAAA;AAhkBG;;;;;AAKG;AACI,IAAA,IAAI,CAAC,QAAkB,EAAE,eAAyB,EAAE,aAAuB,EAAA;AAC9E,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC3B,IAAI,wCAAwC,GAAG,KAAK,CAAC;AACrD,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;;gBAEtB,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACvE,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBAC3E,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;gBACpE,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC7D,aAAA;AAAM,iBAAA;;;;AAIH,gBAAA,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;AAClC,oBAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC;AAC3D,oBAAA,MAAM,sBAAsB,GACxB,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;AAC9F,oBAAA,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,wBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BACpD,IAAI,sBAAsB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;gCACpD,wCAAwC,GAAG,IAAI,CAAC;AACnD,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AACD,oBAAA,IAAI,wCAAwC,EAAE;AAC1C,wBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC;AACrC,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC;AACtC,qBAAA;AAEJ,iBAAA;AAAM,qBAAA;;AAEH,oBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC;AACtC,iBAAA;AACJ,aAAA;;;;AAID,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,wCAAwC,CAAC,CAAC,IAAI,CAAC,MAAK;;AAEtG,gBAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;AAC/B,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC;;AAGlC,gBAAA,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;oBACzE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC/C,iBAAA;gBAED,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;AAE9D,gBAAA,OAAO,EAAE,CAAC;AACd,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;AAED;;;;AAIG;AACI,IAAA,cAAc,CAAC,QAAkB,EAAE,eAAyB,EAAE,aAAuB,EAAA;AACxF,QAAA,MAAM,cAAc,GAAiB,QAAQ,CAAC,cAAc,CAAC,aAAc,CAAC;;AAG5E,QAAA,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;AAC3B,QAAA,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;;AAG3B,QAAA,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AACjC,QAAA,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QAEhC,MAAM,UAAU,GAAiB,QAAQ,CAAC,aAAa,CAAC,aAAc,CAAC,qBAAqB,EAAE,CAAC;;AAG/F,QAAA,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC;AAC7C,QAAA,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,CAAC;;QAG/C,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;;AAG7E,QAAA,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;AAE9F,QAAA,IAAI,CAAC,QAAQ,CAAC,iCAAiC,EAAE;;YAE/B,QAAQ,CAAC,cAAc,CAAC,aAAc,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;AACnF,SAAA;KACJ;AAED;;;;AAIG;IACI,KAAK,CAAC,QAAkB,EAAE,KAAc,EAAA;;AAE3C,QAAA,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;;AAExB,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;YAClC,OAAO;AACV,SAAA;;AAGD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAE3B,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACrC,SAAA;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC1E,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC9E,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;YACvE,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAChE,SAAA;KACJ;AAED;;AAEG;AACK,IAAA,eAAe,CAAC,KAAiB,EAAA;;AAErC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,OAAO;AACV,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,EAAE;YACvG,OAAO;AACV,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc;AAClC,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;;YAGzE,IAAI,iBAAiB,CAAC,IAAI,CAAO,KAAK,CAAC,MAAO,CAAC,OAAO,CAAC,EAAE;gBACrD,OAAO;AACV,aAAA;;AAGD,YAAA,IAAI,OAAO,GAAgB,KAAK,CAAC,MAAM,CAAC;AACxC,YAAA,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBAC1E,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,kCAAkC,CAAC,EAAE;oBAChE,OAAO;AACV,iBAAA;AACD,gBAAA,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;AACnC,aAAA;AACJ,SAAA;;QAGD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;KAC1C;AAED;;AAEG;AACK,IAAA,iBAAiB,CAAC,KAAoB,EAAA;;AAE1C,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,EAAE;YAClC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;gBAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,CAAC;AACnE,gBAAA,MAAM,WAAW,GAAG,GAAG,CAAC,2BAA2B,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAE3G,gBAAA,IAAI,WAAW,EAAE;oBACb,WAAW,CAAC,KAAK,EAAE,CAAC;AACvB,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAChC,OAAO;AACV,SAAA;KACJ;AAED;;AAEG;AACK,IAAA,cAAc,CAAC,KAAY,EAAA;;AAE/B,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,OAAO;AACV,SAAA;;AAED,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc;AAClC,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACzE,OAAO;AACV,SAAA;;QAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC/C,YAAA,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;AAGxD,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACnC,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACnC,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACnC,SAAA;KACJ;AAED;;AAEG;AACK,IAAA,YAAY,CAAC,KAAiB,EAAA;;QAElC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;KAC1C;AAED;;;AAGE;AACM,IAAA,uBAAuB,CAC3B,UAAgC,EAChC,QAAkB,EAClB,SAAiB,EACjB,aAAuB,EAAA;;AAGvB,QAAA,IAAI,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;;AAG/B,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;QAGtC,IAAI,CAAC,CAAC,aAAa,EAAE;AACjB,YAAA,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC;AAClC,YAAA,MAAM,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC;;AAGlD,YAAA,IAAI,UAAU,IAAI,eAAe,CAAC,mBAAmB,IAAI,SAAS,GAAG,UAAU,IAAI,UAAU,GAAG,SAAS,EAAE;gBACvG,IAAI,SAAS,GAAG,UAAU,EAAE;oBACxB,SAAS,GAAG,UAAU,CAAC;AACvB,oBAAA,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;AAC7B,iBAAA;;AAED,gBAAA,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;AAC/B,aAAA;iBAAM,IAAI,SAAS,GAAG,SAAS,EAAE;;AAE9B,gBAAA,QAAQ,GAAG,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC;AAC1C,aAAA;AAAM,iBAAA;;AAEH,gBAAA,IAAI,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE;AAC1C,oBAAA,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC;AACzC,oBAAA,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;AAC7B,iBAAA;;AAED,gBAAA,QAAQ,GAAG,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC;AAC3C,aAAA;AACJ,SAAA;AAAM,aAAA;;YAEH,IAAI,SAAS,GAAG,WAAW,EAAE;gBACzB,SAAS,GAAG,WAAW,CAAC;AACxB,gBAAA,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;AAC7B,aAAA;AACD,YAAA,IAAI,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE;AAC9B,gBAAA,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC;AAChC,aAAA;AAED,YAAA,IAAI,QAAQ,GAAG,SAAS,GAAG,WAAW,EAAE;AACpC,gBAAA,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;AACtC,aAAA;AACJ,SAAA;QAED,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjC,QAAA,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC;AAEX,QAAA,QAAQ,CAAC,cAAc,CAAC,aAAc,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC;AAClF,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AACP,YAAA,QAAQ,CAAC,cAAc,CAAC,aAAc,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC;AACvF,SAAA;KACJ;AAED;;;AAGG;IACK,sBAAsB,CAC1B,UAAgC,EAChC,QAAkB,EAClB,UAAkB,EAClB,eAAyB,EACzB,aAAuB,EAAA;;QAGvB,MAAM,kBAAkB,GAAG,UAAU,CAAC;;AAGtC,QAAA,IAAI,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;;AAGhC,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;AAExC,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC;AAClC,QAAA,MAAM,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;;QAGpD,IAAI,qBAAqB,GAAG,KAAK,CAAC;;AAElC,QAAA,IAAI,UAAU,IAAI,eAAe,CAAC,mBAAmB,IAAI,UAAU,GAAG,UAAU,IAAI,UAAU,GAAG,UAAU,EAAE;YACzG,IAAI,UAAU,GAAG,UAAU,EAAE;gBACzB,UAAU,GAAG,UAAU,CAAC;AACxB,gBAAA,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;AAC7B,aAAA;;AAED,YAAA,OAAO,GAAG,aAAa,KAAK,IAAI,GAAG,UAAU,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC;AACzE,SAAA;AAAM,aAAA;;YAEH,IAAI,UAAU,GAAG,UAAU,EAAE;gBACzB,UAAU,GAAG,UAAU,CAAC;AACxB,gBAAA,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;AAC7B,aAAA;;YAED,OAAO,GAAG,aAAa,KAAK,IAAI,GAAG,UAAU,CAAC,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG,GAAG,UAAU,CAAC;YAChG,qBAAqB,GAAG,IAAI,CAAC;AAChC,SAAA;QAED,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC/B,QAAA,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC;AAEvB,QAAA,IAAI,eAAe,EAAE;AACjB,YAAA,MAAM,eAAe,GACjB,IAAI,CAAC,0BAA0B,CAC3B,UAAU,EACV,OAAO,EACP,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,kBAAkB,CACrB,CAAC;AACQ,YAAA,QAAQ,CAAC,cAAc,CAAC,aAAc,CAAC,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC;AACpF,YAAA,QAAQ,CAAC,cAAc,CAAC,aAAc,CAAC,KAAK,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC;AAC/F,SAAA;AAAM,aAAA;AACW,YAAA,QAAQ,CAAC,cAAc,CAAC,aAAc,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;AACxE,YAAA,QAAQ,CAAC,cAAc,CAAC,aAAc,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,GAAG,IAAI,CAAC;AACnF,SAAA;KACJ;AAED;;;;;AAKG;IACK,0BAA0B,CAAC,UAAkB,EAAE,OAAe,EAAE,qBAA8B,EAAE,SAAiB,EACrH,YAAoB,EAAE,kBAA0B,EAAA;AAChD,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;QACxC,IAAI,SAAS,GAAG,OAAO,CAAC;QACxB,IAAI,YAAY,GAAG,UAAU,CAAC;QAC9B,MAAM,YAAY,GAAG,qBAAqB,GAAG,SAAS,GAAG,YAAY,CAAC;QACtE,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;AAChE,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;AAEjG,QAAA,IAAI,kBAAkB,EAAE;;AAEpB,YAAA,IAAI,kBAAkB,IAAI,YAAY,GAAG,eAAe,CAAC,gCAAgC,EAAE;gBACvF,SAAS,GAAG,kBAAkB,CAAC;;;AAG/B,gBAAA,IAAI,kBAAkB,IAAI,YAAY,GAAG,CAAC,GAAG,kBAAkB,EAAE;AAC7D,oBAAA,YAAY,GAAG,YAAY,GAAG,CAAC,GAAG,kBAAkB,CAAC;AACxD,iBAAA;AAAM,qBAAA;oBACH,YAAY,GAAG,kBAAkB,CAAC;AACrC,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,IAAI,YAAY,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,EAAE;AACxD,oBAAA,IAAI,kBAAkB,GAAG,YAAY,GAAG,CAAC,GAAG,kBAAkB,EAAE;;AAE5D,wBAAA,YAAY,GAAG,YAAY,GAAG,CAAC,GAAG,kBAAkB,CAAC;wBACrD,SAAS,GAAG,kBAAkB,CAAC;AAClC,qBAAA;AAAM,yBAAA,IAAI,UAAU,GAAG,YAAY,GAAG,kBAAkB,EAAE;;AAEvD,wBAAA,YAAY,GAAG,UAAU,GAAG,kBAAkB,CAAC;wBAC/C,SAAS,GAAG,kBAAkB,CAAC;AAClC,qBAAA;AACJ,iBAAA;AAAM,qBAAA;;AAEH,oBAAA,YAAY,GAAG,UAAU,GAAG,kBAAkB,CAAC;AAClD,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,qBAAqB,EAAE;gBACvB,IAAI,SAAS,GAAG,YAAY,EAAE;AAC1B,oBAAA,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;AACxC,iBAAA;AACJ,aAAA;AACJ,SAAA;QAED,OAAO;AACH,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,MAAM,EAAE,YAAY;SACvB,CAAC;KACL;AAED;;AAEG;AACK,IAAA,kBAAkB,CAAC,UAAkB,EAAE,YAAoB,EAAE,kBAA0B,EAAA;QAC3F,IAAI,GAAG,GAAG,KAAK,CAAC;AAChB,QAAA,IAAI,YAAY,GAAG,UAAU,GAAG,kBAAkB,EAAE;YAChD,GAAG,GAAG,IAAI,CAAC;AACd,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACd;AAED;;AAEG;AACK,IAAA,iBAAiB,CAAC,YAAoB,EAAA;QAC1C,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,IAAI,YAAY,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,EAAE;YACxD,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC;AAClE,SAAA;AAAM,aAAA,IAAI,YAAY,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,GAAG,IAAI,YAAY,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,GAAG,EAAE;YAC3H,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC;AACnE,SAAA;aAAM,IAAI,YAAY,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,EAAE;YAC/D,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC;AAClE,SAAA;AACD,QAAA,OAAO,kBAAkB,CAAC;KAC7B;AAED;;;;AAIG;IACI,WAAW,CAAC,QAAkB,EAAE,KAAa,EAAA;QAChD,IAAI,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAA,IAAI,WAAW,GAAgB,KAAK,CAAC,MAAM,CAAC;;YAE5C,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC/C,gBAAA,IAAI,WAAW,EAAE;oBACb,IAAI,WAAW,CAAC,SAAS,EAAE;wBACvB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE;4BACzD,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC5G,yBAAA;AACJ,qBAAA;AAAM,yBAAA;;wBAEH,WAAW,GAAG,IAAI,CAAC;AACtB,qBAAA;AAEJ,iBAAA;AAAM,qBAAA,IAAI,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE;AACjG,oBAAA,WAAW,GAAG,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;AAC3D,iBAAA;gBAED,IAAI,cAAc,GAAG,IAAI,CAAC;AAC1B,gBAAA,IAAI,WAAW,EAAE;AACb,oBAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBAC3D,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACnC,wBAAA,IAAI,CAAC,CAAC,cAAc,CAAC,aAAa,KAAK,WAAW,EAAE;4BAChD,cAAc,GAAG,CAAC,CAAC;4BACnB,MAAM;AACT,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACD,gBAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACxC,aAAA;;AAED,YAAA,IAAI,WAAW,EAAE;gBACb,MAAM,sBAAsB,GAAG,WAAW,CAAC,gBAAgB,CAAC,6CAA6C,CAAC,CAAC;AAC3G,gBAAA,IAAI,sBAAsB,IAAI,sBAAsB,CAAC,MAAM,EAAE;;;AAGzD,oBAAA,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACjC,wBAAA,IAAI,CAAC,EAAE;4BACH,CAAC,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AAC5C,yBAAA;AACL,qBAAC,CAAC,CAAC;AACN,iBAAA;AAAM,qBAAA;;AAEH,oBAAA,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxD,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC9B,iBAAA;AACJ,aAAA;AAAM,iBAAA;;;AAGH,gBAAA,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxD,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC9B,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,OAAO;AACV,SAAA;KACJ;AAED;;AAEG;AACK,IAAA,+BAA+B,CAAC,YAA6B,EAAA;AACjE,QAAA,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,EAAE;AACrC,YAAA,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/C,gBAAA,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAA,IAAI,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE;AACjD,oBAAA,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC;;oBAElD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;AAC/C,wBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACnC,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AAMO,IAAA,iBAAiB,CAAC,QAAkB,EAAA;AACxC,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;AAC3B,SAAA;KACJ;AAED;;AAEG;AACK,IAAA,iBAAiB,CAAC,eAAyB,EAAE,gBAA0B,EAAE,wCAAiD,EAAA;AAE9H,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC3B,YAAA,IAAI,wCAAwC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE;AAClH,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;AAAM,iBAAA;gBACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAClF,gBAAA,MAAM,mBAAmB,GAAG,eAAe,CAAC,cAAc,CAAC,aAAa,CAAC;AACzE,gBAAA,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,cAAc,CAAC,aAAa,CAAC;gBAC3E,MAAM,CAAC,GAAG,GAAG,CAAC;;;AAGd,gBAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,YAAY,CAAC;AAClD,gBAAA,IAAI,gBAAgB,EAAE;oBAClB,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAI;wBACrE,MAAM,WAAW,GAAG,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,EACtE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAClE,wBAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;AACzF,4BAAA,OAAO,KAAK,CAAC;AAChB,yBAAA;AACD,wBAAA,OAAO,IAAI,CAAC;AAChB,qBAAC,CAAC,CAAC;AACH,oBAAA,IAAI,CAAC,+BAA+B,CAAC,oBAAoB,CAAC,CAAC;AAC9D,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC3D,iBAAA;AACJ,aAAA;AAED,YAAA,OAAO,EAAE,CAAC;AACd,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACK,gBAAgB,CAAC,eAAyB,EAAE,gBAA0B,EAAA;AAC1E,QAAA,MAAM,mBAAmB,GAAG,eAAe,CAAC,cAAc,CAAC,aAAa,CAAC;AACzE,QAAA,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,cAAc,CAAC,aAAa,CAAC;QAC3E,MAAM,CAAC,GAAG,GAAG,CAAC;QACd,MAAM,0BAA0B,GAAG,CAAC,CAAC,eAAe,CAAC,mBAAmB,EACpE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAClE,MAAM,2BAA2B,GAAG,CAAC,CAAC,eAAe,CAAC,oBAAoB,EACtE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAClE,IAAI,GAAG,GAAG,KAAK,CAAC;AAChB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,0BAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxD,YAAA,MAAM,QAAQ,GAAG,0BAA0B,CAAC,CAAC,CAAC,CAAC;AAC/C,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,2BAA2B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzD,gBAAA,MAAM,QAAQ,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC;AAChD,gBAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;oBAC/B,GAAG,GAAG,IAAI,CAAC;AACd,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACd;;AAvmBD;AACe,eAAmB,CAAA,mBAAA,GAAG,GAAG,CAAC;AACzC;AACA;AACe,eAAgC,CAAA,gCAAA,GAAG,CAAC,CAAC;iGAL3C,eAAe,GAAA,CAAA,EAAA,CAAA;AAAf,mBAAA,eAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,eAAe,WAAf,eAAe,CAAA,IAAA,EAAA,CAAA,CAAA;AAqiBxB,UAAA,CAAA;AAAC,IAAAC,OAAK,EAAE;AACR;;AAEG;;;;;AAKF,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;uFA7iBQ,eAAe,EAAA,CAAA;cAN3B,UAAU;gBA+iBC,iBAAiB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;;;;;ACniB7B;;;;;;;;;;;;;;AAcG;AAEH;;AAEG;MAKU,iBAAiB,CAAA;AAwF1B;;AAEG;AACH,IAAA,WAAA,CACY,QAAmB,EACnB,OAAmB,EACnB,eAAgC,EACS,MAAc,EAAA;QAHvD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QACnB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QACS,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AApFlD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAW,CAAC;QAyBhD,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAa7B;;AAEG;QAEI,IAAiC,CAAA,iCAAA,GAAG,IAAI,CAAC;AAEhD;;AAEG;QACI,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAEtB;;AAEG;QACI,IAAI,CAAA,IAAA,GAAG,CAAC,CAAC;AAEhB;;AAEG;QACI,IAAG,CAAA,GAAA,GAAG,CAAC,CAAC;AAEf;;AAEG;QACI,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAEzB;;AAEG;QACI,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAEzB;;AAEG;QAEa,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAY7B,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KAC1B;AA/FD;;;AAGG;;AAEH,IAAA,IAAqB,SAAS,GAAA;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AA0FD;;AAEE;IACK,QAAQ,GAAA;QACX,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,MAAK;;;gBAGnE,UAAU,CAAC,MAAK;AACZ,oBAAA,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACxF,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAEM,eAAe,GAAA;;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACrB,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,OAAO,EACxF,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAK;AAChF,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;AAED;;AAEG;IACI,WAAW,GAAA;QACd,IAAI,CAAC,KAAK,EAAE,CAAC;;QAGb,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,YAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAC7C,SAAA;KACJ;AAED;;AAEG;IACI,IAAI,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;KAC/D;AAED;;AAEG;AAEI,IAAA,OAAO,CAAC,KAAoB,EAAA;AAC/B,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,EAAE;AAC/B,YAAA,IAAI,OAAO,GAAgB,KAAK,CAAC,MAAM,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBAC9G,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;oBAC9C,OAAO;AACV,iBAAA;AACD,gBAAA,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;AACnC,aAAA;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,SAAA;aAAM,KAAK,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,SAAS,IAAkB,KAAK,CAAC,MAAO,CAAC,SAAS,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG;AAC3H,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,EAAE;;YAEzC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,wBAAwB,EAAE,CAAC;AACpC,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,KAAK,CAAC,KAAqB,EAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;KACvD;AAED;;;AAGG;AACI,IAAA,MAAM,CAAC,IAAc,EAAE,eAAyB,EAAE,aAAuB,EAAE,KAAqB,EAAA;;AAEnG,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE;YAC1D,OAAO;AACV,SAAA;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;;AAEb,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,YAAA,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACjD,aAAA;;YAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpC,SAAA;AAAM,aAAA;;AAEH,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,MAAK;gBACtE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAK;AACjE,oBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;iBACvB,EAAE,KAAK,CAAC,CAAC;;gBAEV,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrC,aAAC,CAAC,CAAC;AACN,SAAA;KAEJ;AAED;;;;AAIG;IACI,aAAa,CAAC,KAAU,EAAE,YAAsB,EAAA;QACnD,KAAK,CAAC,eAAe,EAAE,CAAC;AAExB,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,YAAY,EAAE;;AAEjC,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC/D,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;;AAjOQ,mBAAA,iBAAA,CAAA,IAAA,GAAA,SAAA,yBAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,iBAAiB,uIA+FF,mBAAmB,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;mGA/FlC,iBAAiB,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,uBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;oGAAjB,GAAe,CAAA,OAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;;;;;QC5C5B,EAA4F,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAC1F,EAAuD,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;QACzD,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAGiC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAC/B,EAAwD,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAC1D,EAAM,CAAA,YAAA,EAAA,CAAA;;QAHJ,EAAiK,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjK,EAAiK,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAD,KAAA,EAAA,CAAA,GAAA,CAAA,MAAA,EAAA,GAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA,CAAA;;uFDuCtJ,iBAAiB,EAAA,CAAA;cAJ7B,SAAS;2BACI,cAAc,EAAA,QAAA,EAAA,kmBAAA,EAAA,CAAA;;sBAkGnB,QAAQ;;sBAAI,MAAM;uBAAC,mBAAmB,CAAA;wBAvFtB,SAAS,EAAA,CAAA;kBAA7B,MAAM;YAGU,OAAO,EAAA,CAAA;kBAAvB,MAAM;YAKS,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAKU,SAAS,EAAA,CAAA;kBAAxB,KAAK;YAMC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAOC,aAAa,EAAA,CAAA;kBADnB,KAAK;YAIC,aAAa,EAAA,CAAA;kBADnB,KAAK;YAMC,cAAc,EAAA,CAAA;kBADpB,SAAS;mBAAC,oBAAoB,CAAA;YAOxB,aAAa,EAAA,CAAA;kBADnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAOzC,iCAAiC,EAAA,CAAA;kBADvC,KAAK;YAgCU,QAAQ,EAAA,CAAA;kBADvB,WAAW;mBAAC,oBAAoB,CAAA;;kBAChC,KAAK;YAkEC,OAAO,EAAA,CAAA;kBADb,YAAY;mBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ME9KxB,cAAc,CAAA;;+FAAd,cAAc,GAAA,CAAA,EAAA,CAAA;+FAAd,cAAc,EAAA,CAAA,CAAA;AAJZ,mBAAA,cAAA,CAAA,IAAA,6BAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,SAAA,EAAA;QACP,eAAe;AAClB,KAAA,EAAA,OAAA,EAAA,CAJG,YAAY,CAAA,EAAA,CAAA,CAAA;uFAMP,cAAc,EAAA,CAAA;cAd1B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE;oBACV,iBAAiB;AACpB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,iBAAiB;AACpB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;AACf,iBAAA;AACD,gBAAA,SAAS,EAAE;oBACP,eAAe;AAClB,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,cAAc,EAZnB,EAAA,YAAA,EAAA,CAAA,iBAAiB,CAMjB,EAAA,OAAA,EAAA,CAAA,YAAY,aAHZ,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;ACYzB;AACM,MAAgB,wBAClB,SAAQ,iBAAiB,CAAA;AA2HzB;;AAEG;IACH,WAAoB,CAAA,eAAgC,EAAE,QAAkB,EAAA;QACpE,KAAK,CAAC,QAAQ,CAAC,CAAC;QADA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AA3D7C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAO,CAAC;AAc9C;;AAEG;AAGI,QAAA,IAAA,CAAA,KAAK,GAAsB,IAAI,YAAY,EAAO,CAAC;AAE1D;;AAEG;AAEI,QAAA,IAAA,CAAA,QAAQ,GAA8C,IAAI,YAAY,EAA+B,CAAC;AAS7G;;AAEG;QACI,IAAe,CAAA,eAAA,GAAiB,EAAE,CAAC;AAE1C;;AAEG;QACI,IAAe,CAAA,eAAA,GAAiB,EAAE,CAAC;AAE1C;;AAEE;QACK,IAAa,CAAA,aAAA,GAAiB,EAAE,CAAC;QAEhC,IAAiC,CAAA,iCAAA,GAAG,KAAK,CAAC;QAC1C,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC;KAW9B;AA5GD;;AAEG;IACH,IACW,OAAO,CAAC,OAAqB,EAAA;AACpC,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;AAED;;;AAGG;IACH,IACW,yBAAyB,CAAC,YAAqB,EAAA;AACtD,QAAA,IAAI,CAAC,iCAAiC,GAAG,YAAY,CAAC;KACzD;AAED;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;QAEhC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAC3B,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,iCAAiC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;AACpF,cAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CACxD,CAAC;QAEF,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED;;AAEG;IACH,IACW,MAAM,CAAC,KAAU,EAAA;AACxB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5C,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;AACD,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAKD;;AAEG;IACH,IACW,OAAO,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;AACD,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAeD;;AAEG;AACH,IAAA,IAAW,MAAM,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;KACnE;AA+BD;;AAEG;IACI,QAAQ,GAAA;;;;;QAKX,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;KAE9G;AAED;;AAEG;IACI,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,CAAC;KAC7C;AAED;;AAEG;IACI,kBAAkB,GAAA;QACrB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAG;AACtC,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAClG,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;;AAGD;;;AAGG;IACI,SAAS,GAAA;QACZ,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtD,YAAA,IAAI,OAAO,EAAE;gBACT,OAAO,CAAC,gBAAgB,CAAC,CAAC,MAAwC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1H,gBAAA,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAwC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAClH,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,EAAE;AAC9B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC7B,SAAA;KACJ;AAED;;AAEG;IACI,kBAAkB,GAAA;QACrB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACzC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5E,SAAA;KACJ;IAEO,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1E,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;;mHAlMiB,wBAAwB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,cAAA,EAAA,SAAA,uCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;uFAAxB,wBAAwB,EAAA,CAAA;cAF7C,SAAS;yFAqBC,YAAY,EAAA,CAAA;kBADlB,eAAe;mBAAC,QAAQ,CAAA;YAOd,OAAO,EAAA,CAAA;kBADjB,KAAK;YAWK,yBAAyB,EAAA,CAAA;kBADnC,KAAK;YAwBK,MAAM,EAAA,CAAA;kBADhB,KAAK;YAWC,YAAY,EAAA,CAAA;kBADlB,MAAM;YAOI,OAAO,EAAA,CAAA;kBADjB,KAAK;YAcC,KAAK,EAAA,CAAA;kBAFX,MAAM;YAQA,QAAQ,EAAA,CAAA;kBADd,MAAM;;;;ACpGX;AACM,MAAO,oBAAwB,SAAQ,iBAAiB,CAAA;IAc1D,WAAoB,CAAA,wBAAkD,EAClE,MAAiB,EAAA;QACjB,KAAK,CAAC,MAAM,CAAC,CAAC;QAFE,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;KAGrE;AAhBD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,sBAAsB,CAAC;KACjC;IAaM,QAAQ,GAAA;QACX,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAEM,WAAW,GAAA;QACd,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAES,eAAe,GAAA;QACrB,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,IAAI,OAA4B,CAAC;QACjC,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpF,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;KACtD;IAES,cAAc,GAAA;;QAEpB,IAAI,IAAI,CAAC,GAAG,EAAE;AACV,YAAA,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AACnB,SAAA;KACJ;;2GAxCQ,oBAAoB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;sGAApB,oBAAoB,EAAA,SAAA,EAAA,SAAA,0BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;kCAQG,gBAAgB,CAAA,CAAA;;;;;uFARvC,oBAAoB,EAAA,CAAA;cAFhC,SAAS;kGAWE,SAAS,EAAA,CAAA;kBADhB,SAAS;mBAAC,WAAW,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;ACpBpE;;;AAGG;MACU,UAAU,CAAA;AA2EnB;;;AAGG;AACH,IAAA,WAAA,CAA4B,QAAmB,EAAA;QAAnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QA9ErC,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AAwB3B;;AAEG;QACI,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;AAEpB;;AAEG;QACI,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;AAEtB;;AAEG;QACI,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAEvB;;AAEG;QACI,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAYtB;;AAEG;QACI,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;AAErB;;AAEG;QACI,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;KAgBuB;AAEpD;;;;AAIG;IACI,cAAc,CAAC,MAAW,EAAE,SAA0B,EAAA;AACzD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;KACtE;AAED;;AAEG;IACI,gBAAgB,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACzB;AAED;;;;AAIG;IACI,gBAAgB,CAAC,MAAW,EAAE,SAA0B,EAAA;AAC3D,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;KAC1C;AAED;;AAEG;IACI,oBAAoB,GAAA;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;AAES,IAAA,wBAAwB,CAAC,MAAW,EAAA;AAC1C,QAAA,OAAO,MAAM,CAAC;KACjB;AAEJ,CAAA;AAED;;;;;AAKG;MACU,2BAA2B,CAAA;AAE7B,IAAA,WAAW,CAAC,IAAO,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACpB;AACJ,CAAA;AAED;;AAEG;AAEH;MACsB,mBAAmB,CAAA;AAkErC;;AAEG;AACH,IAAA,WAAA,GAAA;AAnEO,QAAA,IAAA,CAAA,OAAO,GAAY,OAAO,CAAC,UAAU,EAAW,CAAC;AAoEpD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzC;AAID;;AAEG;AACI,IAAA,WAAW,CAAC,OAAsB,EAAA;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,QAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACjB,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5C,SAAC,CAAC,CAAC;KACN;;yGApFiB,mBAAmB,GAAA,CAAA,EAAA,CAAA;qGAAnB,mBAAmB,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,CAAA;uFAAnB,mBAAmB,EAAA,CAAA;cAFxC,SAAS;sCAOC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAOC,MAAM,EAAA,CAAA;kBADZ,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,IAAI,EAAA,CAAA;kBADV,KAAK;YAOC,IAAI,EAAA,CAAA;kBADV,KAAK;YAOC,SAAS,EAAA,CAAA;kBADf,KAAK;YAOC,aAAa,EAAA,CAAA;kBADnB,KAAK;YAOC,SAAS,EAAA,CAAA;kBADf,KAAK;YAOC,WAAW,EAAA,CAAA;kBADjB,KAAK;;;ACnMJ,MAAO,0BAA2B,SAAQ,oBAA6D,CAAA;AAmBzG;;AAEG;IACH,WAAY,CAAA,wBAAkD,EAAE,QAAkB,EAAA;AAC9E,QAAA,KAAK,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;AAV9C;;AAEG;AAEI,QAAA,IAAA,CAAA,WAAW,GAAuB,IAAI,YAAY,EAAQ,CAAC;KAOjE;AArBD;;AAEG;IACH,IACI,IAAI,CAAC,IAAgB,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KAC3B;IAeS,eAAe,GAAA;QACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC3C,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpC;AAEO,IAAA,aAAa,CAAC,IAAgB,EAAA;QAClC,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE;YAC3C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACvC,SAAA;KACJ;;uHApCQ,0BAA0B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;4GAA1B,0BAA0B,EAAA,SAAA,EAAA,CAAA,CAAA,yBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,WAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,mCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QAFxB,EAAsB,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;;uFAExB,0BAA0B,EAAA,CAAA;cAJtC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,yBAAyB;AACnC,gBAAA,QAAQ,EAAE,wBAAwB;AACrC,aAAA,CAAA;kGAQO,IAAI,EAAA,CAAA;kBADP,KAAK;YAWC,WAAW,EAAA,CAAA;kBADjB,MAAM;;;;IC9BT,EAA4N,CAAA,SAAA,CAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,CAAA,CAAA;;;IAAxH,EAAa,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;;ACOnH;;AAEG;AACG,MAAO,mBAAoB,SAAQ,wBAAwB,CAAA;AAW7D,IAAA,WAAA,CAAY,eAAgC,EAAsB,eAAyC,EAAE,QAAkB,EAAA;AAC3H,QAAA,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAD6B,IAAe,CAAA,eAAA,GAAf,eAAe,CAA0B;KAE1G;AAVD,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,KAAK,CAAC;KAChB;AAED,IAAA,IAAW,WAAW,GAAA;AAClB,QAAA,OAAO,YAAY,CAAC;KACvB;AAMD,IAAA,IAAW,MAAM,GAAA;QACb,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;YACrD,YAAY,GAAG,IAAI,CAAC;AACvB,SAAA;QACD,OAAO,YAAY,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;KACnF;;yGArBQ,mBAAmB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAE,wBAAA,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;qGAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,iBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,OAAA,EAAA,yEAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDXhC,EAAqD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACnD,EAA4N,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,CAAA,CAAA;;QAC9N,EAAM,CAAA,YAAA,EAAA,CAAA;;QAD0D,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAApC,EAAoC,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA,CAAA;;uFCUvF,mBAAmB,EAAA,CAAA;cAP/B,SAAS;2BACI,iBAAiB,EAAA,QAAA,EAAA,mTAAA,EAAA,CAAA;;sBAiBoB,QAAQ;;;;;;;;ICrBzD,EAG4D,CAAA,cAAA,CAAA,CAAA,EAAA,yBAAA,EAAA,EAAA,CAAA,CAAA;IAF1D,EAAe,CAAA,UAAA,CAAA,aAAA,EAAA,SAAA,oGAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAqB,CAAA,mBAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAEqB,EAA0B,CAAA,YAAA,EAAA,CAAA;;;;IAApF,EAAyD,CAAA,WAAA,CAAA,kCAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAAA;IAHkB,EAAa,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;;;AC2B5F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BG;AAMG,MAAO,kBAAmB,SAAQ,wBAAwB,CAAA;AA+E5D;;AAEG;IACH,WAAY,CAAA,eAAgC,EAAS,QAAmB,EAAS,WAAuB,EAC3D,MAAc,EAAE,QAAkB,EAAA;AAC3E,QAAA,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAFgB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAS,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;AAhExG;;AAEG;QACI,IAAgB,CAAA,gBAAA,GAAiB,EAAE,CAAC;AAE3C;;AAEG;QACI,IAAW,CAAA,WAAA,GAAiB,EAAE,CAAC;AAuBtC;;AAEG;AACI,QAAA,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC;QACvC,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAChB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAEhB,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;QAClB,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AAGzB;;AAEG;AAEI,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAO,CAAC;QAoB5C,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC;QACvE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;QACtE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;QACpE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;QACtE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,2BAA2B,CAAC,CAAC;AAC1E,QAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AACxE,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAEzE,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AAC1F,SAAA;KACJ;AA9FD;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;AAED;;;AAGG;AACH,IAAA,IAAW,WAAW,GAAA;AAClB,QAAA,OAAO,UAAU,CAAC;KACrB;AAmDD,IAAA,IAAY,UAAU,GAAA;QAClB,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACtD;AA8BD;;;;AAIG;AACI,IAAA,YAAY,CAAC,KAAmB,EAAA;AACnC,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC7C;AAED;;AAEG;IACI,eAAe,GAAA;QAClB,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACI,WAAW,GAAA;QACd,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,kBAAkB,EAAE,WAAW,EAAE,CAAC;KAC1C;AAED;;AAEG;IAEK,eAAe,GAAA;QACnB,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;AAEG;AAGI,IAAA,YAAY,CAAC,KAAY,EAAA;;QAE5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QACvF,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;AAED;;AAEG;AAEI,IAAA,eAAe,CAAC,KAAoB,EAAA;;QAEvC,QAAQ,KAAK,CAAC,OAAO;AACjB,YAAA,KAAK,OAAO,CAAC,KAAK,EAAE;gBAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,oBAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;AAChF,wBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAClC,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AACnD,4BAAA,IAAI,IAAI,EAAE;;;AAGN,gCAAA,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAChD,gCAAA,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACjD,gCAAA,IAAI,CAAC,iBAAiB,GAAgB,QAAQ,CAAC,aAAa,CAAC;AAChE,6BAAA;AACL,yBAAC,CAAC,CAAC;AACN,qBAAA;AACJ,iBAAA;gBACD,MAAM;AACT,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;AAGI,IAAA,YAAY,CAAC,KAAY,EAAA;;QAE5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAC5F,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;AAED;;AAEG;IAEH,QAAQ,GAAA;QACJ,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;AAEG;IACI,mBAAmB,GAAA;QACtB,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;KACN;IAEO,YAAY,GAAA;QAChB,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE;AACrE,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACtE,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,2BAA2B,CAAC,CAAC;AACvF,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,0BAA0B,CAAC,CAAC;AACtF,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AACrE,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC7E,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,2BAA2B,CAAC,CAAC;AACvF,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,aAAa,CAAC,SAAkB,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;AAED;;;AAGG;AACI,IAAA,QAAQ,CAAC,UAAmB,EAAA;AAC/B,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;AAED;;;;AAIG;IACI,oBAAoB,CAAC,OAAoB,EAAE,OAAgB,EAAA;QAC9D,IAAI,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YACjD,OAAO;AACV,SAAA;QAED,IAAI,SAAS,GAAG,KAAK,CAAC;AACtB,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC;AAChD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,YAAA,IAAI,OAAO,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;gBAC5C,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;AACT,aAAA;AACJ,SAAA;QACD,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,OAAO,CAAC,QAAQ,CAAC,gCAAgC,EAAE,iEAAiE,CAAC,CAAC;YACtH,OAAO;AACV,SAAA;AACD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;QAE1B,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,SAAA;;AAGD,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;;AAGzB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,2BAA2B,CAAC,CAAC;;QAGpF,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC/C,QAAA,MAAM,MAAM,GAAG;YACX,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;YAClC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;YACxC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;YACpC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;SACzC,CAAC;AACF,QAAA,MAAM,MAAM,GAAG;YACX,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;YAClC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;YACxC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;YACpC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;SACzC,CAAC;QACF,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AACrG,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7E,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;AAC1E,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,IAAI,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAC5F,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AAExD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA,EAAA,CAAI,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,GAAG,CAAA,EAAA,CAAI,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,CAAA,KAAA,CAAO,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA,EAAA,CAAI,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,eAAe,CAAA,EAAA,CAAI,CAAC,CAAC;AAC7F,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,iBAAiB,EAAE,CAAA,QAAA,CAAU,CAAC,CAAC;;;AAItF,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,eAAe,CAAC;QAEnE,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACI,eAAe,GAAA;QAClB,IAAI,WAAW,GAAG,CAAC,CAAC;;;;AAKpB,QAAA,MAAM,WAAW,GAAgB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAQ,MAAA,CAAA,CAAC,CAAC;AAE1D,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAU,QAAA,CAAA,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AACxE,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AAEtB,QAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7H,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC,WAAW,IAAI,OAAO,CAAC;;QAG5G,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAC1B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;AAE/B,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;YAC1D,iBAAiB,IAAI,WAAW,CAAC;AACpC,SAAA;QAED,IAAI,iBAAiB,IAAI,cAAc,EAAE;AACrC,YAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE;AACtD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,aAAA;AACJ,SAAA;AAAM,aAAA;;;;YAIH,MAAM,2BAA2B,GAAG,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,WAAW,CAAC;AAC1G,YAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE;gBACtD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;AAEnC,gBAAA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;AAC1D,gBAAA,IAAI,WAAW,GAAG,WAAW,GAAG,2BAA2B,EAAE;AACzD,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjC,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,iBAAA;gBAED,WAAW,IAAI,WAAW,CAAC;AAC9B,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAC9E,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3E,SAAA;;;;QAKD,IAAI,CAAC,CAAC,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE;gBACvE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACtD,aAAA;YACD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACtD,SAAA;;;;QAKD,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3D,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACrF,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC9B;;AAnYQ,mBAAA,kBAAA,CAAA,IAAA,GAAA,SAAA,0BAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,kBAAkB,0IAmFH,mBAAmB,EAAA,CAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oGAnFlC,kBAAkB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,wBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;;;yGAAlB,GAAoB,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,UAAA,EAAA,SAAA,8CAAA,CAAA,MAAA,EAAA,EAAA,OAApB,wBAAoB,CAApB,EAAA,CAAA,CAAA,SAAA,EAAA,SAAA,6CAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,eAAA,CAAA,MAAA,CAAuB,8FAAvB,GAAoB,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,YAAA,EAAA,SAAA,gDAAA,CAAA,MAAA,EAAA,EAAA,OAApB,GAAoB,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,QAAA,EAAA,SAAA,4CAAA,GAAA,EAAA,OAApB,GAAU,CAAA,QAAA,EAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA;;;QDhEvB,EAA8H,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAC5H,EAGsF,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,CAAA,CAAA;AAEtF,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAEsI,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAKlI,EAAyE,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACzE,EAAgC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAwB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;QAEjE,EACkE,CAAA,cAAA,CAAA,EAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;AADgB,QAAA,EAAA,CAAA,UAAA,CAAA,cAAA,EAAA,SAAA,oEAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,MAAA,GAAA,MAAA,CAAA,EAAA,CAAmB,CAC1F,OAAA,EAAA,SAAA,6DAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,KAAA,CAAA,IAAA,CAAA,MAAA,CAAkB,CADwE,EAAA,CAAA,CAAA,UAAA,EAAA,SAAA,gEAAA,CAAA,MAAA,EAAA,EAAA,OAC1D,yBAAqB,CADqC,EAAA,CAAA,CAAA;AACnC,QAAA,EAAA,CAAA,YAAA,EAAkB,EAAA,CAAA;QAEtF,EAAyB,CAAA,YAAA,CAAA,EAAA,CAAA,CAAA;QAC3B,EAAM,CAAA,YAAA,EAAA,CAAA;;;QApBc,EAAoC,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,gBAAA,CAAA,CAAA;QACZ,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjC,EAAiC,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,YAAA,CAAA,GAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;QAMzE,EAAgE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAhE,QAAA,EAAA,CAAA,WAAA,CAAA,mBAAA,EAAA,CAAA,GAAA,CAAA,OAAA,IAAA,GAAA,CAAA,WAAA,CAAA,MAAA,KAAA,CAAA,CAAgE,CAAA,iBAAA,EAAA,GAAA,CAAA,OAAA,IAAA,GAAA,CAAA,WAAA,CAAA,MAAA,KAAA,CAAA,CAAA,CAAA;AACF,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,kBAAA,CAA4B,CAAA,gBAAA,EAAA,CAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAGxF,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArC,EAAqC,CAAA,WAAA,CAAA,aAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;AAFD,QAAA,EAAA,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,kBAAA,CAAsC,CAAA,eAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAIrC,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA5B,EAA4B,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,kBAAA,CAAA,CAAA;QACjC,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAxB,EAAwB,CAAA,iBAAA,CAAA,GAAA,CAAA,kBAAA,CAAA,CAAA;QAEzC,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAvB,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,WAAA,CAAuB,CAAA,QAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;;ACgLxC,UAAA,CAAA;AAAC,IAAAD,OAAK,EAAE;;;;AAGP,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;uFAnIQ,kBAAkB,EAAA,CAAA;cAJ9B,SAAS;2BACI,gBAAgB,EAAA,QAAA,EAAA,qkDAAA,EAAA,CAAA;;sBAsFrB,QAAQ;;sBAAI,MAAM;uBAAC,mBAAmB,CAAA;+CAlBpC,cAAc,EAAA,CAAA;kBADpB,MAAM;YAOgC,OAAO,EAAA,CAAA;kBAA7C,SAAS;mBAAC,kBAAkB,CAAA;YACQ,qBAAqB,EAAA,CAAA;kBAAzD,SAAS;mBAAC,gBAAgB,CAAA;YAKG,QAAQ,EAAA,CAAA;kBAArC,SAAS;mBAAC,UAAU,CAAA;AAoDb,SAAA,CAAA,EAAA,eAAe,MAShB,YAAY,EAAA,CAAA;kBAFlB,YAAY;mBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;kBAClC,YAAY;mBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;YAW7B,eAAe,EAAA,CAAA;kBADrB,YAAY;mBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;YA8B5B,YAAY,EAAA,CAAA;kBAFlB,YAAY;mBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAA;;kBACrC,YAAY;mBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAA;YAWtC,QAAQ,EAAA,CAAA;kBADP,YAAY;mBAAC,eAAe,CAAA;;;ACnP3B,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AA+BrD;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAtBpB;;AAEG;QACa,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC;AAE3C;;AAEG;QACa,IAAqB,CAAA,qBAAA,GAAG,IAAI,CAAC;QAErC,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAChB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;KAYvB;AAnCD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,oBAAoB,CAAC;KAC/B;AAgCD;;AAEG;IACI,SAAS,GAAA;QACZ,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC;QAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC;QACjE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC;AAC/D,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU;eAC3B,IAAI,CAAC,SAAS,KAAK,SAAS;eAC5B,IAAI,CAAC,YAAY,KAAK,YAAY;AAClC,eAAA,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;YACrC,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC9B,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACjC,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;KAClC;AAED;;;AAGG;AACI,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC3B,QAAA,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE;YAC3C,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC/D,SAAA;QACD,IAAI,OAAO,CAAC,qBAAqB,EAAE;YAC/B,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC/D,SAAA;KACJ;IAEO,mBAAmB,GAAA;QACvB,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACpG,SAAA;KACJ;IAEO,iBAAiB,GAAA;QACrB,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5D,SAAA;KACJ;AAED;;AAEG;AAEI,IAAA,cAAc,CAAC,KAAK,EAAA;QACvB,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,UAAU,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAChD,SAAA;KACJ;AAED;;AAEG;AAGI,IAAA,YAAY,CAAC,KAAY,EAAA;;QAE5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QACvF,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;AAED;;AAEG;AAGI,IAAA,YAAY,CAAC,KAAY,EAAA;;QAE5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAC5F,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;;uGAvHQ,kBAAkB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oGAAlB,kBAAkB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA,EAAA,YAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AAAlB,QAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,SAAA,4CAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,MAAA,CAAsB,mHAAtB,GAAoB,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,UAAA,EAAA,SAAA,8CAAA,CAAA,MAAA,EAAA,EAAA,OAApB,wBAAoB,CAApB,EAAA,CAAA,CAAA,YAAA,EAAA,SAAA,gDAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,YAAA,CAAA,MAAA,CAAoB,8FAApB,GAAoB,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;;uFAApB,kBAAkB,EAAA,CAAA;cAH9B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,gBAAgB;AAC7B,aAAA,CAAA;2DAamB,YAAY,EAAA,CAAA;kBAA3B,KAAK;YAKU,mBAAmB,EAAA,CAAA;kBAAlC,KAAK;YAKU,qBAAqB,EAAA,CAAA;kBAApC,KAAK;YAuEC,cAAc,EAAA,CAAA;kBADpB,YAAY;mBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;YAYlC,YAAY,EAAA,CAAA;kBAFlB,YAAY;mBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;kBAClC,YAAY;mBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;YAY7B,YAAY,EAAA,CAAA;kBAFlB,YAAY;mBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAA;;kBACrC,YAAY;mBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAA;;;;;ICxHxC,EAG8F,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IAA5F,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAS,CAAA,OAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACjB,EAAiE,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACjE,EAAmF,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;IAH3G,EAAiC,CAAA,WAAA,CAAA,aAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IACb,EAAyD,CAAA,UAAA,CAAA,aAAA,EAAA,CAAA,MAAA,CAAA,IAAA,CAAA,OAAA,IAAA,MAAA,CAAA,IAAA,CAAA,IAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA;AAHvE,IAAA,EAAA,CAAA,WAAA,CAAA,MAAA,EAAA,MAAA,CAAA,QAAA,CAAsB,oCAAA,CAAA,aAAA,EAAA,MAAA,CAAA,IAAA,CAAA,QAAA,CAAA,CAAA;IAIpB,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,IAAA,CAAA,SAAA,IAAA,EAAA,CAAA,CAAA;IACyB,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnB,EAAmB,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;IAAC,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,iBAAA,CAAA,MAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;;;;IASpG,EAE2H,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IAF1E,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,gFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAc,CAAA,YAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAGvE,EAAqD,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACvD,EAAS,CAAA,YAAA,EAAA,CAAA;;;IAHwD,EAAoD,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,CAAA;IAAnH,EAA8D,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,CAAA;;;;IAPlE,EAIgC,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IAD9B,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAS,CAAA,OAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAEnB,EAAiE,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACjE,EAIS,CAAA,UAAA,CAAA,CAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IACX,EAAS,CAAA,YAAA,EAAA,CAAA;;;IATP,EAAiC,CAAA,WAAA,CAAA,aAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;AACb,IAAA,EAAA,CAAA,UAAA,CAAA,aAAA,EAAA,CAAA,MAAA,CAAA,IAAA,CAAA,OAAA,IAAA,MAAA,CAAA,IAAA,CAAA,IAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA,KAAA,CAAyD,CAAA,OAAA,EAAA,MAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;IAHvE,EAAsB,CAAA,WAAA,CAAA,MAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA,cAAA,EAAA,MAAA,CAAA,WAAA,CAAA,qCAAA,CAAA,YAAA,EAAA,MAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;IAKtB,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,IAAA,CAAA,SAAA,IAAA,EAAA,CAAA,CAAA;IAC7B,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,CAAA,aAAA,CAAA,CAAA;;;;IAOnC,EAG4D,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAHX,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAc,CAAA,YAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAIvE,EAAqD,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACvD,EAAS,CAAA,YAAA,EAAA,CAAA;;;AAJwD,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,KAAA,CAAoD,CAAA,aAAA,EAAA,CAAA,MAAA,CAAA,IAAA,CAAA,OAAA,IAAA,MAAA,CAAA,IAAA,CAAA,IAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA;IAAnH,EAA8D,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,CAAA;;ACd5D,MAAO,6BAA8B,SAAQ,2BAAyC,CAAA;AAsBxF;;AAEG;IACH,WAAoB,CAAA,QAAmB,EAAU,WAAuB,EAAA;AACpE,QAAA,KAAK,EAAE,CAAC;QADQ,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAU,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;QAxBjE,IAAmB,CAAA,mBAAA,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;AAKrF,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAqBxC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;KACxE;AApBD;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,kBAAkB,GAAG,UAAU,CAAC;KAC3E;AAED;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;KACvD;AAUD;;;AAGG;AACI,IAAA,WAAW,CAAC,IAAkB,EAAA;AACjC,QAAA,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KAC3B;AAED;;AAEG;IACI,SAAS,GAAA;QACZ,MAAM,WAAW,GAAiB,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,WAAW,CAAC;QAC9E,IAAI,WAAW,KAAK,CAAC,EAAE;YACnB,OAAO;AACV,SAAA;;;QAID,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,QAAA,MAAM,eAAe,GAAG,WAAW,GAAG,YAAY,CAAC;AACnD,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,eAAe,EAAE;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC;AACrC,SAAA;KACJ;AAED;;AAEG;IACI,OAAO,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,SAAA;KACJ;AAED;;AAEG;IACI,YAAY,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;KAC/E;AAGM,IAAA,eAAe,CAAC,KAAmB,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE;YAClC,OAAO;AACV,SAAA;QAED,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,8BAA8B,EAAE;AACzD,YAAA,KAAK,CAAC,MAAO,CAAC,WAAW,CAAC;AAC/B,gBAAA,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS;AAC/B,gBAAA,IAAI,EAAE,UAAU;AACnB,aAAA,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AACpB,SAAA;AAED,QAAA,MAAM,aAAa,GAAG;AAClB,YAAA,MAAM,EAAE;AACJ,gBAAA,QAAQ,EAAE;AACN,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,YAAY,EAAE,IAAI;AACrB,iBAAA;AACD,gBAAA,KAAK,EAAE;AACH,oBAAA,iBAAiB,EAAE,IAAI;AACvB,oBAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;AAC/B,iBAAA;AACD,gBAAA,SAAS,EAAE;AACP,oBAAA,SAAS,EAAE,KAAK;AAChB,oBAAA,WAAW,EAAE,KAAK;AAClB,oBAAA,YAAY,EAAE,KAAK;AACnB,oBAAA,kBAAkB,EAAE,KAAK;AACzB,oBAAA,aAAa,EAAE,KAAK;AACvB,iBAAA;AACJ,aAAA;AACD,YAAA,KAAK,EAAE;AACH,gBAAA,IAAI,EAAE,IAAI;AACb,aAAA;AACD,YAAA,WAAW,EAAE;AACT,gBAAA,MAAM,EAAE;AACJ,oBAAA,IAAI,EAAE,IAAI;AACb,iBAAA;AACJ,aAAA;SACJ,CAAC;QAEF,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,gCAAgC,EAAE;YACpE,IAAI,IAAI,CAAC,IAAI,EAAE;gBACX,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACnE,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAClB,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,aAAA;YAED,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AAClB,gBAAA,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS;AAC/B,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,IAAI,EAAE,aAAa;AACtB,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;;6HAnIQ,6BAA6B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;+GAA7B,6BAA6B,EAAA,SAAA,EAAA,CAAA,CAAA,4BAAA,CAAA,CAAA,EAAA,YAAA,EAAA,SAAA,0CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;oHAA7B,GAAuB,CAAA,eAAA,CAAA,MAAA,CAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA;;QDTpC,EAAiC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAC/B,EAMS,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;QAET,EAWS,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;QAET,EAKS,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;QACX,EAAM,CAAA,YAAA,EAAA,CAAA;;QA3B4B,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,MAAA,EAAA,EAAA,GAAA,CAAA,IAAA,CAAA,SAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,CAAA,IAAA,CAAA,SAAA,CAAA,OAAA,CAAA,CAAA,CAAA;QAQ9B,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA7B,EAA6B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,IAAA,CAAA,SAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,CAAA,IAAA,CAAA,SAAA,CAAA,OAAA,CAAA,CAAA;QAapD,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,IAAA,CAAA,aAAA,CAAA,CAAA;;uFCbtB,6BAA6B,EAAA,CAAA;cAJzC,SAAS;2BACI,4BAA4B,EAAA,QAAA,EAAA,ykEAAA,EAAA,CAAA;qFA4E/B,eAAe,EAAA,CAAA;kBADrB,YAAY;mBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AC9ExC,MAAO,YAAa,SAAQ,UAAU,CAAA;AACxC;;AAEG;AACH,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,6BAA6B,CAAC,CAAC;KACxC;AAED;;AAEG;AACI,IAAA,OAAO,CAAC,KAAW,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KAC/D;AACJ;;ACDK,MAAO,qBAAsB,SAAQ,mBAAmB,CAAA;AAO1D;;AAEG;AACH,IAAA,WAAA,CAAoB,kBAAsC,EAAA;AACtD,QAAA,KAAK,EAAE,CAAC;QADQ,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAT1D;;AAEG;AAEI,QAAA,IAAA,CAAA,OAAO,GAAsB,IAAI,YAAY,CAAM,KAAK,CAAC,CAAC;KAOhE;AAED;;AAEG;IACI,eAAe,GAAA;QAClB,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;AAC9C,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACI,WAAW,GAAA;QACd,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;AAC9C,SAAC,CAAC,CAAC;KACN;IAES,gBAAgB,GAAA;AACtB,QAAA,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAClC,QAAA,MAAM,CAAC,IAAI,GAAG,wBAAwB,CAAC;AACvC,QAAA,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,KAAI;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,SAAC,CAAC;AACF,QAAA,OAAO,MAAM,CAAC;KACjB;;6GAvCQ,qBAAqB,EAAA,EAAA,CAAA,iBAAA,CAAAE,kBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;uGAArB,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAArB,qBAAqB,EAAA,CAAA;cAJjC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,mBAAmB;AAC7B,gBAAA,QAAQ,EAAE,EAAE;AACf,aAAA,CAAA;kEAMU,OAAO,EAAA,CAAA;kBADb,MAAM;;;ACfL,MAAO,iBAAqB,SAAQ,YAAY,CAAA;AAUlD;;AAEG;AACH,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;QATF,IAAW,CAAA,WAAA,GAA6C,EAAE,CAAC;QAE3D,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;QAC7B,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAO/B,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;KAC9C;AAEM,IAAA,OAAO,CAAC,MAAU,EAAA;QACrB,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACjB,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,iBAAA,SAAS,CAAC;gBACP,IAAI,EAAE,MAAM,IAAG;AACX,oBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC1E;gBACD,KAAK,EAAE,KAAK,IAAG;AACX,oBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACjC,oBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC3D;gBACD,QAAQ,EAAE,MAAK;AACX,oBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;iBAC5B;AACJ,aAAA,CAAC,CAAC;AACV,SAAA;KACJ;IAEM,cAAc,CAAC,MAAW,EAAE,SAA0B,EAAA;AACzD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAE3B,QAAA,IAAI,IAAI,CAAC,oBAAoB,IAAI,MAAM,EAAE;AACrC,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACtB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,oBAAA,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBACvB,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;oBAClE,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAClD,oBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,SAAS,CAAC,EAAE;AAC1E,wBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAClC,qBAAA;AACD,oBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;gBACpE,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAClD,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,EAAE,SAAS,CAAC,EAAE;AAC1E,oBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACpC,iBAAA;AACD,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,aAAA;AACJ,SAAA;KACJ;AAES,IAAA,kBAAkB,CAAC,MAAS,EAAA;AAClC,QAAA,OAAO,MAAM,CAAC;KACjB;AAES,IAAA,UAAU,CAAC,MAAS,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3B,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AACxB,oBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,iBAAA;AAED,gBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,aAAA;AACJ,SAAA;KACJ;AAES,IAAA,SAAS,CAAC,MAAS,EAAA;;;AAGzB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KACpC;AAES,IAAA,WAAW,CAAC,MAAS,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3B,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;AACxB,oBAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AACrB,iBAAA;AACD,gBAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC5B,oBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACpC,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AACrB,aAAA;AACJ,SAAA;KACJ;AAES,IAAA,gBAAgB,CAAC,MAAW,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,oBAAoB,IAAI,MAAM,EAAE;AACrC,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACtB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,oBAAA,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC9C,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAC3C,aAAA;AACJ,SAAA;KACJ;IAEO,0BAA0B,CAAC,MAAW,EAAE,KAAc,EAAA;QAC1D,MAAM,qBAAqB,GAAG,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAClF,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;AAEnF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAE7C,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,GAAG,KAAK,CAAC;KACnD;AAES,IAAA,mBAAmB,CAAC,MAAW,EAAA;AACrC,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACtB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,oBAAA,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACjD,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;AAC9C,aAAA;AACJ,SAAA;KACJ;IAES,+BAA+B,CAAC,MAAW,EAAE,KAAc,EAAA;AACjE,QAAA,IAAI,qBAAqB,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC7C,YAAA,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,SAAA;AAAM,aAAA;YACH,qBAAqB,GAAG,MAAM,CAAC;AAClC,SAAA;AAED,QAAA,OAAO,qBAAqB,CAAC;KAChC;IAEO,6BAA6B,CAAC,MAAW,EAAE,KAAc,EAAA;QAC7D,MAAM,qBAAqB,GAAG,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAClF,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;QAEnF,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACxE,QAAA,IAAI,eAAe,KAAK,CAAC,CAAC,EAAE;YACxB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AAC/C,SAAA;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,GAAG,KAAK,CAAC;KACnD;IAES,eAAe,CAAC,QAAa,EAAE,SAAc,EAAA;QACnD,OAAO,QAAQ,KAAK,SAAS,CAAC;KACjC;AAEO,IAAA,OAAO,CAAC,MAAW,EAAA;AACvB,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;KAChC;AACJ;;ACzJK,MAAO,0BAA2B,SAAQ,mBAAmB,CAAA;AAO/D;;AAEG;AACH,IAAA,WAAA,CAAoB,kBAAsC,EAAA;AACtD,QAAA,KAAK,EAAE,CAAC;QADQ,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAT1D;;AAEG;AAEI,QAAA,IAAA,CAAA,OAAO,GAA+C,IAAI,YAAY,CAA+B,KAAK,CAAC,CAAC;KAOlH;AAED;;AAEG;IACI,eAAe,GAAA;QAClB,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;AAC9C,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACI,WAAW,GAAA;QACd,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;AAC9C,SAAC,CAAC,CAAC;KACN;IAES,gBAAgB,GAAA;AACtB,QAAA,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAO,CAAC;AAC5C,QAAA,MAAM,CAAC,YAAY,GAAG,CAAC,MAAM,KAAI;AAC7B,YAAA,MAAM,IAAI,GAAiC;AACvC,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,MAAM,EAAE,MAAM;aACjB,CAAC;AACF,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAExB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,gBAAA,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;AACrB,aAAA;YAED,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,SAAC,CAAC;AACF,QAAA,OAAO,MAAM,CAAC;KACjB;;uHAhDQ,0BAA0B,EAAA,EAAA,CAAA,iBAAA,CAAAA,kBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;4GAA1B,0BAA0B,EAAA,SAAA,EAAA,CAAA,CAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,mCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAA1B,0BAA0B,EAAA,CAAA;cAJtC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,qCAAqC;AAC/C,gBAAA,QAAQ,EAAE,EAAE;AACf,aAAA,CAAA;kEAMU,OAAO,EAAA,CAAA;kBADb,MAAM;;;;;;ICrBP,EAAiD,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAiB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAArB,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;;;IAGlE,EAA2I,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;IAC3I,EAAqJ,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;ACcnJ,MAAO,cAAe,SAAQ,UAAU,CAAA;AAM1C;;AAEG;AACH,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,+BAA+B,CAAC,CAAC;KAC1C;AACJ,CAAA;AAMK,MAAO,+BAAgC,SAAQ,2BAA2C,CAAA;AAwB5F;;AAEG;IACH,WAAoB,CAAA,QAAmB,EAAU,WAAuB,EAAA;AACpE,QAAA,KAAK,EAAE,CAAC;QADQ,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAU,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;QAjBhE,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QAmBvB,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;KACxE;AAlBD,IAAA,IAAW,WAAW,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACtF;AAED,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;KAC7B;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,+BAA+B,CAAC,mBAAmB,CAAC;KACnF;AAUD;;;AAGG;AACI,IAAA,WAAW,CAAC,IAAoB,EAAA;AACnC,QAAA,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KAC3B;IAEM,SAAS,GAAA;QACZ,MAAM,WAAW,GAAiB,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,WAAW,CAAC;QAC9E,IAAI,WAAW,KAAK,CAAC,EAAE;YACnB,OAAO;AACV,SAAA;;;QAID,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,QAAA,MAAM,eAAe,GAAG,WAAW,GAAG,YAAY,CAAC;AACnD,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,eAAe,EAAE;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC;AACrC,SAAA;KACJ;AAED;;AAEG;AAEI,IAAA,eAAe,CAAC,KAAoB,EAAA;;QAEvC,QAAQ,KAAK,CAAC,OAAO;AACjB,YAAA,KAAK,OAAO,CAAC,KAAK,EAAE;gBAChB,IAAI,IAAI,CAAC,QAAQ;AACb,oBAAA,IAAI,CAAC,qBAAqB;oBAC1B,IAAI,CAAC,qBAAqB,CAAC,aAAa;oBACxC,IAAI,CAAC,QAAQ,CAAC,MAAM;AACpB,oBAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;AAC9B,oBAAA,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACpD,iBAAA;gBACD,MAAM;AACT,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;AAGI,IAAA,YAAY,CAAC,KAAY,EAAA;QAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,UAAU,EAAE;YAChD,OAAO;AACV,SAAA;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC;AAC9C,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC7C;AAEO,IAAA,mBAAmB,CAAC,WAAoB,EAAA;QAC5C,UAAU,CAAC,CAAC,IAAG;AACX,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,WAAW,EAAE;gBACjC,OAAO;AACV,aAAA;AACD,YAAA,IAAI,WAAW,EAAE;AACb,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACxB,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACzB,aAAA;AACL,SAAC,EAAE,+BAA+B,CAAC,mBAAmB,CAAC,CAAC;KAC3D;;AAlGc,+BAAmB,CAAA,mBAAA,GAAG,GAAG,CAAC;AAC3B,+BAAmB,CAAA,mBAAA,GAAG,WAAW,CAAC;iIAFvC,+BAA+B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;iHAA/B,+BAA+B,EAAA,SAAA,EAAA,CAAA,CAAA,8BAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,qCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;sHAA/B,GAAuB,CAAA,eAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,YAAA,EAAA,SAAA,6DAAA,CAAA,MAAA,EAAA,EAAA,OAAvB,GAAoB,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,YAAA,EAAA,SAAA,6DAAA,CAAA,MAAA,EAAA,EAAA,OAApB,GAAoB,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;;ADvCjC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAmL,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAG/K,EAAsE,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;QACtE,EAA8C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC9C,EAAkH,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACxI,EAA2I,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC3I,EAAqJ,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACvJ,EAAS,CAAA,YAAA,EAAA,CAAA;QACT,EACoD,CAAA,cAAA,CAAA,EAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;AAD+B,QAAA,EAAA,CAAA,UAAA,CAAA,cAAA,EAAA,SAAA,iFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,CAAA,SAAA,CAAA,MAAA,GAAA,MAAA,CAAA,EAAA,CAAkC,CAAU,OAAA,EAAA,SAAA,0EAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,CAAA,SAAA,CAAA,KAAA,CAAA,IAAA,CAAA,MAAA,CAAiC,CAA3C,EAAA,CAAA,CAAA,UAAA,EAAA,SAAA,6EAAA,CAAA,MAAA,EAAA,EAAA,OACvG,wCAAoC,CADmE,EAAA,CAAA,CAAA;AACjE,QAAA,EAAA,CAAA,YAAA,EAAkB,EAAA,CAAA;;;QAV4C,EAA8D,CAAA,UAAA,CAAA,eAAA,EAAA,CAAA,GAAA,CAAA,IAAA,CAAA,SAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,CAAA,IAAA,CAAA,SAAA,CAAA,WAAA,MAAA,YAAA,CAAA,CAAA;QAApK,EAAwC,CAAA,WAAA,CAAA,aAAA,EAAA,GAAA,CAAA,mBAAA,CAAA,CAAA;QAElD,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArC,EAAqC,CAAA,WAAA,CAAA,aAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;AAA6D,QAAA,EAAA,CAAA,UAAA,CAAA,aAAA,EAAA,CAAA,GAAA,CAAA,IAAA,CAAA,OAAA,IAAA,GAAA,CAAA,IAAA,CAAA,IAAA,IAAA,CAAA,GAAA,CAAA,IAAA,CAAA,KAAA,CAAyD,CAAA,OAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;AAArH,QAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,GAAA,CAAA,MAAA,CAAsC,CAAA,aAAA,EAAA,GAAA,CAAA,gBAAA,CAAA,CAAA;QACxE,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;QACf,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhC,EAAgC,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,SAAA,IAAA,EAAA,CAAA,CAAA;QAChC,EAAkD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlD,EAAkD,CAAA,WAAA,CAAA,mBAAA,EAAA,GAAA,CAAA,IAAA,CAAA,SAAA,CAAA,OAAA,CAAA,CAAA;QAA0D,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,iBAAA,CAAA,GAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;QAC1H,EAAgD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhD,EAAgD,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,IAAA,CAAA,SAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,CAAA,IAAA,CAAA,SAAA,CAAA,WAAA,MAAA,UAAA,CAAA,CAAA;QAChD,EAAkD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlD,EAAkD,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,IAAA,CAAA,SAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,CAAA,IAAA,CAAA,SAAA,CAAA,WAAA,MAAA,YAAA,CAAA,CAAA;QAE1C,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAxB,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,OAAA,CAAwB,CAAA,QAAA,EAAA,GAAA,CAAA,IAAA,CAAA,SAAA,CAAA,MAAA,CAAA,CAAA;;uFC8B9B,+BAA+B,EAAA,CAAA;cAJ3C,SAAS;2BACI,8BAA8B,EAAA,QAAA,EAAA,y/CAAA,EAAA,CAAA;qFAUV,QAAQ,EAAA,CAAA;kBAArC,SAAS;mBAAC,UAAU,CAAA;YACgB,qBAAqB,EAAA,CAAA;kBAAzD,SAAS;mBAAC,gBAAgB,CAAA;YAmDpB,eAAe,EAAA,CAAA;kBADrB,YAAY;mBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;YAsB5B,YAAY,EAAA,CAAA;kBAFlB,YAAY;mBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAA;;kBACrC,YAAY;mBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAA;;AA2BpC,MAAO,uBAAwB,SAAQ,mBAAmB,CAAA;AAU5D,IAAA,WAAA,CAAoB,kBAAsC,EAAA;AACtD,QAAA,KAAK,EAAE,CAAC;QADQ,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;QAFnD,IAAO,CAAA,OAAA,GAAiB,EAAE,CAAC;AAK9B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,SAAS,EAAuB,CAAC;KAC5D;IAEM,eAAe,GAAA;QAClB,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;AAC9C,SAAC,CAAC,CAAC;KACN;IAEM,kBAAkB,GAAA;QACrB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAG;YACtC,IAAI,CAAC,aAAa,EAAE,CAAC;AACzB,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,QAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;YACjB,IAAI,IAAI,KAAK,SAAS,EAAE;gBACpB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,OAAO;AACV,aAAA;AACD,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5C,SAAC,CAAC,CAAC;KACN;IAEM,WAAW,GAAA;QACd,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;AAC9C,SAAC,CAAC,CAAC;KACN;IAES,gBAAgB,GAAA;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;AACtC,QAAA,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC;AACtB,QAAA,OAAO,QAAQ,CAAC;KACnB;IAEO,aAAa,GAAA;;;AAGjB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACrG,QAAA,IAAI,CAAC,MAAO,CAAC,OAAO,GAAG,eAAe,CAAC;KAC3D;;iHA1DQ,uBAAuB,EAAA,EAAA,CAAA,iBAAA,CAAAC,kBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;yGAAvB,uBAAuB,EAAA,SAAA,EAAA,CAAA,CAAA,qBAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,sCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;;;;uFAAvB,uBAAuB,EAAA,CAAA;cAJnC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,qBAAqB;AAC/B,gBAAA,QAAQ,EAAE,EAAE;AACf,aAAA,CAAA;kEAGiC,QAAQ,EAAA,CAAA;kBAArC,SAAS;mBAAC,UAAU,CAAA;YAGd,YAAY,EAAA,CAAA;kBADlB,eAAe;mBAAC,QAAQ,CAAA;YAIlB,OAAO,EAAA,CAAA;kBADb,KAAK;;;;ICxJV,EAA8G,CAAA,SAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;;;IAArD,EAA6B,CAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,gBAAA,EAAA,CAAA,CAAA;;;IACtF,EAAyJ,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACvJ,EAA2E,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAC7E,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAFkD,EAA6B,CAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,gBAAA,EAAA,CAAA,CAAA;;ACO/E,MAAO,oCAAqC,SAAQ,2BAAgD,CAAA;AAEtG;;AAEG;IACH,WAAoB,CAAA,QAAmB,EAAU,WAAuB,EAAA;AACpE,QAAA,KAAK,EAAE,CAAC;QADQ,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAU,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;QAEpE,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;KACxE;AAED;;;AAGG;AACI,IAAA,WAAW,CAAC,IAAyB,EAAA;AACxC,QAAA,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KAC3B;AAED;;;AAGG;IACI,gBAAgB,GAAA;QACnB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACnD,QAAA,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE;AAC/E,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACJ;;2IA7BQ,oCAAoC,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;sHAApC,oCAAoC,EAAA,SAAA,EAAA,CAAA,CAAA,oCAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,OAAA,EAAA,eAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,4DAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mCAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,eAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,6CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDRjD,EAA8G,CAAA,UAAA,CAAA,CAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;QAC9G,EAEM,CAAA,UAAA,CAAA,CAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;QAHD,EAAkD,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,IAAA,CAAA,SAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,CAAA,IAAA,CAAA,SAAA,CAAA,WAAA,MAAA,YAAA,CAAA,CAAA;QACjD,EAAgD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhD,EAAgD,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,IAAA,CAAA,SAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,CAAA,IAAA,CAAA,SAAA,CAAA,WAAA,MAAA,UAAA,CAAA,CAAA;;uFCOzC,oCAAoC,EAAA,CAAA;cAJhD,SAAS;2BACI,oCAAoC,EAAA,QAAA,EAAA,sXAAA,EAAA,CAAA;;;ACF5C,MAAO,mBAAoB,SAAQ,UAAU,CAAA;AAC/C;;AAEG;AACH,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,oCAAoC,CAAC,CAAC;KAC/C;AAED;;AAEG;AACI,IAAA,OAAO,CAAC,KAAW,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KAC/D;AACJ;;ACJK,MAAO,4BAA6B,SAAQ,mBAAmB,CAAA;AACjE;;AAEG;AACH,IAAA,WAAA,CAAoB,kBAAsC,EAAA;AACtD,QAAA,KAAK,EAAE,CAAC;QADQ,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;KAEzD;IAEM,eAAe,GAAA;QAClB,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;AAC9C,SAAC,CAAC,CAAC;KACN;IAEM,WAAW,GAAA;QACd,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;AAC9C,SAAC,CAAC,CAAC;KACN;IAES,gBAAgB,GAAA;AACtB,QAAA,MAAM,SAAS,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAC5C,QAAA,OAAO,SAAS,CAAC;KACpB;;2HAvBQ,4BAA4B,EAAA,EAAA,CAAA,iBAAA,CAAAD,kBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;8GAA5B,4BAA4B,EAAA,SAAA,EAAA,CAAA,CAAA,2BAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,qCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAA5B,4BAA4B,EAAA,CAAA;cAJxC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,2BAA2B;AACrC,gBAAA,QAAQ,EAAE,EAAE;AACf,aAAA,CAAA;;;ACPD;;;AAGG;AACG,MAAO,sBAAuB,SAAQ,eAAe,CAAA;AACvD,IAAA,WAAA,CAAY,GAAe,EAAA;QACvB,KAAK,CAAC,GAAG,CAAC,CAAC;KACd;;+GAHQ,sBAAsB,EAAA,EAAA,CAAA,QAAA,CAAA9C,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAtB,mBAAA,sBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,sBAAsB,WAAtB,sBAAsB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAtB,sBAAsB,EAAA,CAAA;cALlC,UAAU;;;ACCL,MAAO,UAAW,SAAQ,UAAU,CAAA;AACtC,IAAA,WAAA,CAAY,eAAuC,EAAA;QAC/C,KAAK,CAAC,eAAe,CAAC,CAAC;KAC1B;;uFAHQ,UAAU,EAAA,EAAA,CAAA,QAAA,CAAAgD,sBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAV,mBAAA,UAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,UAAU,WAAV,UAAU,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAV,UAAU,EAAA,CAAA;cADtB,UAAU;;;;ACSL,MAAO,yBAA0B,SAAQ,0BAA0B,CAAA;AA+BrE;;AAEG;IACH,WAAY,CAAA,kBAAsC,EAAU,UAAsB,EAAA;QAC9E,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAD8B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAjClF;;AAEG;AAEI,QAAA,IAAA,CAAA,OAAO,GAA+C,IAAI,YAAY,EAAgC,CAAC;AAoB9G;;AAEG;QAEI,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;KAOrB;IAES,gBAAgB,GAAA;AACtB,QAAA,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAO,CAAC;AAC5C,QAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;AACtF,QAAA,MAAM,CAAC,SAAS,GAAG,wBAAwB,CAAC;AAC5C,QAAA,MAAM,CAAC,YAAY,GAAG,MAAK;AACvB,YAAA,MAAM,IAAI,GAAiC;AACvC,gBAAA,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;aACtB,CAAC;YAEF,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAC7B,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,WAAW,CACf,CAAC,IAAI,CACF,GAAG,CACC,MAAK;AACD,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAExB,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,oBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,iBAAA;aAEJ,CACJ,CACJ,CAAC;AAEV,SAAC,CAAC;AACF,QAAA,OAAO,MAAM,CAAC;KACjB;;qHAnEQ,yBAAyB,EAAA,EAAA,CAAA,iBAAA,CAAAF,kBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAG,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;2GAAzB,yBAAyB,EAAA,SAAA,EAAA,CAAA,CAAA,yBAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAT,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,kCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAAzB,yBAAyB,EAAA,CAAA;cAJrC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,sCAAsC;AAChD,gBAAA,QAAQ,EAAE,EAAE;AACf,aAAA,CAAA;wFAMU,OAAO,EAAA,CAAA;kBADb,MAAM;YAOA,WAAW,EAAA,CAAA;kBADjB,KAAK;YAOC,WAAW,EAAA,CAAA;kBADjB,KAAK;YAOC,MAAM,EAAA,CAAA;kBADZ,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,KAAK;;;MCcG,aAAa,CAAA;;6FAAb,aAAa,GAAA,CAAA,EAAA,CAAA;8FAAb,aAAa,EAAA,CAAA,CAAA;kGAPlB,YAAY;QACZ,gBAAgB;QAChB,cAAc;QACd,cAAc;QACd,aAAa,CAAA,EAAA,CAAA,CAAA;uFAGR,aAAa,EAAA,CAAA;cArCzB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,kBAAkB;oBAClB,kBAAkB;oBAClB,qBAAqB;oBACrB,6BAA6B;oBAC7B,mBAAmB;oBACnB,0BAA0B;oBAC1B,uBAAuB;oBACvB,+BAA+B;oBAC/B,4BAA4B;oBAC5B,oCAAoC;oBACpC,0BAA0B;oBAC1B,yBAAyB;AAC5B,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,kBAAkB;oBAClB,kBAAkB;oBAClB,mBAAmB;oBACnB,qBAAqB;oBACrB,6BAA6B;oBAC7B,uBAAuB;oBACvB,+BAA+B;oBAC/B,4BAA4B;oBAC5B,oCAAoC;oBACpC,0BAA0B;oBAC1B,0BAA0B;oBAC1B,yBAAyB;AAC5B,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,gBAAgB;oBAChB,cAAc;oBACd,cAAc;oBACd,aAAa;AAChB,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,aAAa,mBArBlB,kBAAkB;QAClB,kBAAkB;QAClB,mBAAmB;QACnB,qBAAqB;QACrB,6BAA6B;QAC7B,uBAAuB;QACvB,+BAA+B;QAC/B,4BAA4B;QAC5B,oCAAoC;QACpC,0BAA0B;QAC1B,0BAA0B;AAC1B,QAAA,yBAAyB,aAGzB,YAAY;QACZ,gBAAgB;QAChB,cAAc;QACd,cAAc;AACd,QAAA,aAAa,aAhCb,kBAAkB;QAClB,kBAAkB;QAClB,qBAAqB;QACrB,6BAA6B;QAC7B,mBAAmB;QACnB,0BAA0B;QAC1B,uBAAuB;QACvB,+BAA+B;QAC/B,4BAA4B;QAC5B,oCAAoC;QACpC,0BAA0B;QAC1B,yBAAyB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;ACvB3B,MAAO,iBAAkB,SAAQ,aAAsB,CAAA;AAezD;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAPb,QAAA,IAAA,CAAA,OAAO,GAA+B,IAAI,YAAY,EAAgB,CAAC;KAQ7E;AAhBD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,mBAAmB,CAAC;KAC9B;AAaD;;;AAGG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,eAAe;AAClB,SAAA,CAAC,CAAC;KACN;AAED;;AAEG;AAGI,IAAA,WAAW,CAAC,KAAgB,EAAA;QAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7B;AAGM,IAAA,UAAU,CAAC,KAAgB,EAAA;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7B;AAGM,IAAA,WAAW,CAAC,KAAgB,EAAA;QAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;AAGM,IAAA,MAAM,CAAC,KAAgB,EAAA;QAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KACzC;IAEO,WAAW,GAAA;QACf,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;;qGAjEQ,iBAAiB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;mGAAjB,iBAAiB,EAAA,SAAA,EAAA,CAAA,CAAA,eAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AAAjB,QAAA,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,SAAA,8CAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,WAAA,CAAA,MAAA,CAAmB,CAAnB,EAAA,CAAA,CAAA,UAAA,EAAA,SAAA,6CAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,UAAA,CAAA,MAAA,CAAkB,CAAlB,EAAA,CAAA,CAAA,WAAA,EAAA,SAAA,8CAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,WAAA,CAAA,MAAA,CAAmB,iFAAnB,GAAc,CAAA,MAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;;;;;QAFZ,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;uFAE3B,iBAAiB,EAAA,CAAA;cAJ7B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,eAAe;AACzB,gBAAA,QAAQ,EAAE,2BAA2B;AACxC,aAAA,CAAA;2DAIU,aAAa,EAAA,CAAA;kBADnB,WAAW;mBAAC,wBAAwB,CAAA;YAW9B,OAAO,EAAA,CAAA;kBADb,MAAM;YA0BA,WAAW,EAAA,CAAA;kBADjB,YAAY;mBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;YAO9B,UAAU,EAAA,CAAA;kBADhB,YAAY;mBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;YAO7B,WAAW,EAAA,CAAA;kBADjB,YAAY;mBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;YAO9B,MAAM,EAAA,CAAA;kBADZ,YAAY;mBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MChDvB,cAAc,CAAA;;+FAAd,cAAc,GAAA,CAAA,EAAA,CAAA;+FAAd,cAAc,EAAA,CAAA,CAAA;mGAHnB,YAAY,CAAA,EAAA,CAAA,CAAA;uFAGP,cAAc,EAAA,CAAA;cAX1B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE;oBACV,iBAAiB;AACpB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,iBAAiB;AACpB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;AACf,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,cAAc,EATnB,EAAA,YAAA,EAAA,CAAA,iBAAiB,CAMjB,EAAA,OAAA,EAAA,CAAA,YAAY,aAHZ,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;ICRvB,EAAgL,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;;;IAA1D,EAAkD,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,GAAA,MAAA,CAAA,gBAAA,GAAA,EAAA,CAAA,CAAA;;;IACxK,EAAgL,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;;;IAA1C,EAAkC,CAAA,WAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;;IAF1K,EAAkD,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAChD,EAAgL,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAChL,EAAgL,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAClL,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAFN,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;IACtB,EAAkC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlC,EAAkC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,OAAA,IAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;;;IAE3C,EAAmL,CAAA,SAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;;;IAAlB,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA;IAAxE,EAA0C,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,sBAAA,CAAA,CAAA;;;IAClJ,EAAsG,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;;;IAAhB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAX,EAAW,CAAA,iBAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;ACI3G,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;AA+CpD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAxCpB;;AAEG;QAEI,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;AAElB;;AAEG;QAEI,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;QAGjB,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAczB;;AAEG;QAEI,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAW7B,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE;YACvC,OAAO,CAAC,GAAG,CAAC;gBACR,KAAK,EAAE,QAAQ,CAAC,OAAO;AACvB,gBAAA,OAAO,EAAE,0CAA0C;AACnD,gBAAA,MAAM,EAAE,CAAA,EAAG,IAAI,CAAC,aAAa,CAAc,YAAA,CAAA;AAC9C,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAxDD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,mBAAmB,CAAC;KAC9B;;qGANQ,iBAAiB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;mGAAjB,iBAAiB,EAAA,SAAA,EAAA,CAAA,CAAA,eAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;QDT9B,EAGe,CAAA,UAAA,CAAA,CAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACf,EAAmL,CAAA,UAAA,CAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;QACnL,EAAsH,CAAA,UAAA,CAAA,CAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;;QALvG,EAAiC,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,gBAAA,IAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QAIxC,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,iBAAA,CAAA,CAAA;QAC1B,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArC,EAAqC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,iBAAA,IAAA,GAAA,CAAA,SAAA,CAAA,CAAA;;uFCI7B,iBAAiB,EAAA,CAAA;cAJ7B,SAAS;2BACI,eAAe,EAAA,QAAA,EAAA,swBAAA,EAAA,CAAA;2DAelB,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,SAAS,EAAA,CAAA;kBADf,KAAK;YAIC,UAAU,EAAA,CAAA;kBADhB,WAAW;mBAAC,uBAAuB,CAAA;YAO7B,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,gBAAgB,EAAA,CAAA;kBADtB,KAAK;YAOC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YAOC,sBAAsB,EAAA,CAAA;kBAD5B,KAAK;;;ACrDH,MAAM,eAAe,GAAG,EAAE,CAAC;SAElB,gBAAgB,CAAC,WAA4B,EAAE,OAAwB,WAAW,EAAA;AAC9F,IAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC1B,QAAA,IAAI,GAAG,CAAA,EAAG,IAAI,CAAA,EAAA,CAAI,CAAC;AACtB,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AAChB;;;ACCM,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AA6ErD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;;;;;QAKhB,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACrG,SAAC,CAAC,CAAC;KACN;AApFD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,oBAAoB,CAAC;KAC/B;AAkCD;;AAEG;AACH,IAAA,IAA8B,MAAM,GAAA;QAChC,OAAO,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;KAC1C;AAED;;AAEG;AACH,IAAA,IAA+B,OAAO,GAAA;QAClC,OAAO,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3C;AAED;;AAEG;AACH,IAAA,IAAgC,QAAQ,GAAA;QACpC,OAAO,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/C;AAED;;AAEG;AACH,IAAA,IAAiC,SAAS,GAAA;QACtC,OAAO,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KAChD;AAED;;AAEG;AACH,IAAA,IACW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAaD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,gBAAgB;AACnB,SAAA,CAAC,CAAC;KACN;;uGA/FQ,kBAAkB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oGAAlB,kBAAkB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;QAFhB,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;uFAE3B,kBAAkB,EAAA,CAAA;cAJ9B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,gBAAgB;AAC1B,gBAAA,QAAQ,EAAE,2BAA2B;AACxC,aAAA,CAAA;2DAgBU,IAAI,EAAA,CAAA;kBADV,KAAK;YAOC,GAAG,EAAA,CAAA;kBADT,KAAK;YAOC,IAAI,EAAA,CAAA;kBADV,KAAK;YAOC,MAAM,EAAA,CAAA;kBADZ,KAAK;YAOC,KAAK,EAAA,CAAA;kBADX,KAAK;YAMwB,MAAM,EAAA,CAAA;kBAAnC,WAAW;mBAAC,WAAW,CAAA;YAOO,OAAO,EAAA,CAAA;kBAArC,WAAW;mBAAC,YAAY,CAAA;YAOO,QAAQ,EAAA,CAAA;kBAAvC,WAAW;mBAAC,aAAa,CAAA;YAOO,SAAS,EAAA,CAAA;kBAAzC,WAAW;mBAAC,cAAc,CAAA;YAQhB,QAAQ,EAAA,CAAA;kBADlB,WAAW;mBAAC,iBAAiB,CAAA;;;;AC5ElC;;;;;;;;;;AAUG;AAKG,MAAO,oBAAqB,SAAQ,iBAAiB,CAAA;AAwCvD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnB;AAxCD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,sBAAsB,CAAC;KACjC;AASD;;AAEG;AACH,IAAA,IACW,KAAK,GAAA;QACZ,OAAO,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACvD;AAED;;AAEG;AACH,IAAA,IACW,MAAM,GAAA;QACb,OAAO,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACvD;AAED;;AAEG;AACH,IAAA,IACW,QAAQ,GAAA;QACf,OAAO,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACvD;AAMD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,kBAAkB;AACrB,SAAA,CAAC,CAAC;KACN;;2GAnDQ,oBAAoB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;sGAApB,oBAAoB,EAAA,SAAA,EAAA,CAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;QAFlB,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;uFAE3B,oBAAoB,EAAA,CAAA;cAJhC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,kBAAkB;AAC5B,gBAAA,QAAQ,EAAE,2BAA2B;AACxC,aAAA,CAAA;2DAeU,IAAI,EAAA,CAAA;kBADV,KAAK;YAOK,KAAK,EAAA,CAAA;kBADf,WAAW;mBAAC,aAAa,CAAA;YASf,MAAM,EAAA,CAAA;kBADhB,WAAW;mBAAC,cAAc,CAAA;YAShB,QAAQ,EAAA,CAAA;kBADlB,WAAW;mBAAC,iBAAiB,CAAA;;;;ICrDhC,EAA8F,CAAA,SAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,CAAA,CAAA;;;;AAA9E,IAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,CAAa,CAAA,SAAA,EAAA,QAAA,CAAA,CAAA;;ICEnB,eAQX;AARD,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACvB,CAAC,EARW,cAAc,KAAd,cAAc,GAQzB,EAAA,CAAA,CAAA,CAAA;AAED,CAAA,UAAc,cAAc,EAAA;AAGxB,IAAA,MAAM,eAAe,GAAG;AACpB,QAAA,cAAc,CAAC,QAAQ;AACvB,QAAA,cAAc,CAAC,KAAK;AACpB,QAAA,cAAc,CAAC,OAAO;AACtB,QAAA,cAAc,CAAC,QAAQ;AACvB,QAAA,cAAc,CAAC,IAAI;AACnB,QAAA,cAAc,CAAC,OAAO;AACtB,QAAA,cAAc,CAAC,OAAO;KACzB,CAAC;IACF,SAAS,UAAU,CAAC,KAAa,EAAA;AAC7B,QAAA,MAAM,qBAAqB,GAAG,cAAc,CAAC,OAAO,CAAC;AAErD,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,qBAAqB,CAAC;AAChC,SAAA;AAED,QAAA,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;AAC5B,QAAA,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,IAAI,qBAAqB,CAAC;KAC9F;IAED,SAAgB,gBAAgB,CAAC,KAAe,EAAA;AAC5C,QAAA,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AAC7B,YAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AALe,IAAA,cAAA,CAAA,gBAAgB,mBAK/B,CAAA;IAED,SAAgB,aAAa,CAAC,QAAwB,EAAA;AAClD,QAAA,QAAQ,QAAQ;YACZ,KAAK,cAAc,CAAC,QAAQ;AACxB,gBAAA,OAAO,CAAC,UAAU,EAAE,oBAAoB,EAAE,0BAA0B,CAAC,CAAC;YAC1E,KAAK,cAAc,CAAC,KAAK;AACrB,gBAAA,OAAO,CAAC,UAAU,EAAE,iBAAiB,EAAE,6BAA6B,CAAC,CAAC;YAC1E,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,OAAO,CAAC,UAAU,EAAE,mBAAmB,EAAE,uBAAuB,CAAC,CAAC;YACtE,KAAK,cAAc,CAAC,QAAQ;AACxB,gBAAA,OAAO,CAAC,UAAU,EAAE,oBAAoB,EAAE,0BAA0B,CAAC,CAAC;YAC1E,KAAK,cAAc,CAAC,IAAI;AACpB,gBAAA,OAAO,CAAC,UAAU,EAAE,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;YAChE,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,OAAO,CAAC,UAAU,EAAE,mBAAmB,EAAE,yBAAyB,CAAC,CAAC;YACxE,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,OAAO,CAAC,UAAU,EAAE,mBAAmB,EAAE,uBAAuB,CAAC,CAAC;AACzE,SAAA;KACJ;AAjBe,IAAA,cAAA,CAAA,aAAa,gBAiB5B,CAAA;AACL,CAAC,EAhDa,cAAc,KAAd,cAAc,GAgD3B,EAAA,CAAA,CAAA,CAAA;AAMK,MAAO,mBAAoB,SAAQ,iBAAiB,CAAA;AAoEtD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAaZ,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC;KAZnE;AApED;;AAEE;AACF,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,qBAAqB,CAAC;KAChC;AAQD;;AAEG;IACH,IACW,MAAM,CAAC,IAAoB,EAAA;QAClC,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,QAAA,QAAQ,IAAI;YACR,KAAK,cAAc,CAAC,QAAQ;gBACxB,MAAM,CAAC,IAAI,CACP,CAAC,UAAU,EAAE,oBAAoB,EAAE,0BAA0B,CAAC,CACjE,CAAC;gBACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAC/C,MAAM;YACV,KAAK,cAAc,CAAC,KAAK;gBACrB,MAAM,CAAC,IAAI,CACP,CAAC,UAAU,EAAE,iBAAiB,EAAE,6BAA6B,CAAC,CACjE,CAAC;gBACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC5C,MAAM;YACV,KAAK,cAAc,CAAC,OAAO;gBACvB,MAAM,CAAC,IAAI,CACP,CAAC,UAAU,EAAE,mBAAmB,EAAE,uBAAuB,CAAC,CAC7D,CAAC;gBACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;gBAC9C,MAAM;YACV,KAAK,cAAc,CAAC,QAAQ;gBACxB,MAAM,CAAC,IAAI,CACP,CAAC,UAAU,EAAE,oBAAoB,EAAE,0BAA0B,CAAC,CACjE,CAAC;gBACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAC/C,MAAM;YACV,KAAK,cAAc,CAAC,IAAI;gBACpB,MAAM,CAAC,IAAI,CACP,CAAC,UAAU,EAAE,gBAAgB,EAAE,oBAAoB,CAAC,CACvD,CAAC;gBACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBAC3C,MAAM;YACV,KAAK,cAAc,CAAC,OAAO;gBACvB,MAAM,CAAC,IAAI,CACP,CAAC,UAAU,EAAE,mBAAmB,EAAE,yBAAyB,CAAC,CAC/D,CAAC;gBACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;gBAC9C,MAAM;YACV,KAAK,cAAc,CAAC,OAAO;gBACvB,MAAM,CAAC,IAAI,CACP,CAAC,UAAU,EAAE,mBAAmB,EAAE,uBAAuB,CAAC,CAC7D,CAAC;gBACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;gBAC9C,MAAM;AACb,SAAA;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACxB;;yGAlEQ,mBAAmB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;qGAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,iBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,SAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,SAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDnEhC,EAA0E,CAAA,cAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,CAAA,CAAA;QACxE,EAA8F,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,CAAA,CAAA;QAChG,EAAmB,CAAA,YAAA,EAAA,CAAA;QAEnB,EAA+B,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAkB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;AAJrC,QAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,IAAA,CAAa,CAAA,OAAA,EAAA,GAAA,CAAA,YAAA,CAAA,CAAA;QACmB,EAAS,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAT,EAAS,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAG5B,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlB,EAAkB,CAAA,iBAAA,CAAA,GAAA,CAAA,YAAA,CAAA,CAAA;;uFC+DpC,mBAAmB,EAAA,CAAA;cAJ/B,SAAS;2BACI,iBAAiB,EAAA,QAAA,EAAA,yXAAA,EAAA,CAAA;2DAgBpB,IAAI,EAAA,CAAA;kBADV,KAAK;YAOK,MAAM,EAAA,CAAA;kBADhB,KAAK;;;MC3DG,UAAU,CAAA;;uFAAV,UAAU,GAAA,CAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,CAAA,CAAA;+FAJf,YAAY;QACZ,aAAa,CAAA,EAAA,CAAA,CAAA;uFAGR,UAAU,EAAA,CAAA;cAlBtB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,oBAAoB;oBACpB,kBAAkB;oBAClB,iBAAiB;oBACjB,mBAAmB;AACtB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,oBAAoB;oBACpB,kBAAkB;oBAClB,iBAAiB;oBACjB,mBAAmB;AACtB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,aAAa;AAChB,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,UAAU,mBAVf,oBAAoB;QACpB,kBAAkB;QAClB,iBAAiB;AACjB,QAAA,mBAAmB,aAGnB,YAAY;AACZ,QAAA,aAAa,aAbb,oBAAoB;QACpB,kBAAkB;QAClB,iBAAiB;QACjB,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;ICVvB,EAA6G,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAC,EAAkB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAAtB,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;;;;;ACApI;;;;;;AAMG;AAMG,MAAO,2BAA4B,SAAQ,iBAAiB,CAAA;AALlE,IAAA,WAAA,GAAA;;QAcW,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AA8Bb,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAA+B,CAAC;AAsE9E,KAAA;AA5GG;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,6BAA6B,CAAC;KACxC;AAKD,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;KAC/C;IA4BM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AACZ,QAAA,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AACZ,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;;QAE5B,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;KAC9B;AAEM,IAAA,MAAM,CAAC,KAAgB,EAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACrD,OAAO;AACV,SAAA;QAED,MAAM,QAAQ,GAAiB,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,qBAAqB,EAAE,CAAC;QACvF,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC;AAE1C,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;AACxD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;KAC3D;AAEM,IAAA,WAAW,CAAC,KAAgB,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC9B;AAEM,IAAA,SAAS,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;AAGM,IAAA,MAAM,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;AAEM,IAAA,aAAa,CAAC,KAAiB,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAClC,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;AACxB,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAGM,IAAA,YAAY,CAAC,KAAiB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACnF,OAAO;AACV,SAAA;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;AACxC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AAChC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AAChC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;AAClC,QAAA,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC;AAC7B,QAAA,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAC1B,YAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;AACxB,QAAA,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;KAC3B;;AA5GQ,mBAAA,2BAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,wCAAA,CAAA,CAAA,OAAA,SAAA,mCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,wCAAA,KAAA,wCAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,2BAA2B,SAA3B,2BAA2B,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;6GAA3B,2BAA2B,EAAA,SAAA,EAAA,CAAA,CAAA,0BAAA,CAAA,CAAA,EAAA,YAAA,EAAA,SAAA,wCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AAA3B,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,sDAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,MAAA,CAAA,MAAA,CAAc,qGAAd,GAAoB,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,CAAA;;;ADfjC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAwK,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AAEnJ,QAAA,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,SAAA,6DAAA,CAAA,MAAA,EAAA,EAAA,OAAa,uBAAmB,CAAC,EAAA,CAAA,CAAA,MAAA,EAAA,SAAA,wDAAA,CAAA,MAAA,EAAA,EAAA,OAAS,kBAAc,CAAvB,EAAA,CAAA,CAAA,SAAA,EAAA,SAAA,2DAAA,CAAA,MAAA,EAAA,EAAA,OAAoC,qBAAiB,CAArD,EAAA,CAAA,CAAA;QAClD,EAAoI,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;QACpI,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;QACzB,EAA+I,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AAA1I,QAAA,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,SAAA,6DAAA,CAAA,MAAA,EAAA,EAAA,OAAa,yBAAqB,CAAC,EAAA,CAAA,CAAA;AAAuG,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,EAAA,CAAA;;QAL9G,EAA6B,CAAA,WAAA,CAAA,KAAA,EAAA,GAAA,CAAA,YAAA,EAAA,IAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,YAAA,EAAA,IAAA,CAAA,gCAAA,CAAA,QAAA,EAAA,GAAA,CAAA,YAAA,EAAA,IAAA,CAAA,CAAA;QAAnE,EAAS,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,EAAA,CAAA,CAAA;QAE+F,EAAyD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAzD,EAAyD,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAAA,MAAA,EAAA,GAAA,CAAA,qBAAA,CAAA,CAAA,CAAA;QAC9J,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA3B,EAA2B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,qBAAA,CAAA,CAAA;QAE4C,EAAmE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAnE,EAAmE,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAAE,KAAA,EAAA,CAAA,GAAA,CAAA,qBAAA,CAAA,CAAA,CAAA;;uFCUrI,2BAA2B,EAAA,CAAA;cALvC,SAAS;2BACI,0BAA0B,EAAA,QAAA,EAAA,+4BAAA,EAAA,CAAA;gBAoB7B,WAAW,EAAA,CAAA;kBADjB,KAAK;YAIC,YAAY,EAAA,CAAA;kBADlB,KAAK;YAIC,WAAW,EAAA,CAAA;kBADjB,KAAK;YAIC,YAAY,EAAA,CAAA;kBADlB,KAAK;YAIC,YAAY,EAAA,CAAA;kBADlB,KAAK;YAIC,EAAE,EAAA,CAAA;kBADR,KAAK;YAIC,qBAAqB,EAAA,CAAA;kBAD3B,KAAK;YAIC,qBAAqB,EAAA,CAAA;kBAD3B,KAAK;YAGW,OAAO,EAAA,CAAA;kBAAvB,MAAM;YAiCA,MAAM,EAAA,CAAA;kBADZ,YAAY;mBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;YAiB5B,YAAY,EAAA,CAAA;kBADlB,YAAY;mBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACjGlD;;;AAGG;IACS,oCAIX;AAJD,CAAA,UAAY,mCAAmC,EAAA;AAC3C,IAAA,mCAAA,CAAA,mCAAA,CAAA,QAAA,CAAA,GAAA,MAAA,CAAA,GAAA,QAAe,CAAA;AACf,IAAA,mCAAA,CAAA,mCAAA,CAAA,WAAA,CAAA,GAAA,MAAA,CAAA,GAAA,WAAkB,CAAA;AAClB,IAAA,mCAAA,CAAA,mCAAA,CAAA,SAAA,CAAA,GAAU,MAAM,CAAC,gBAAgB,CAAA,GAAA,SAAA,CAAA;AACrC,CAAC,EAJW,mCAAmC,KAAnC,mCAAmC,GAI9C,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;IACS,+BAIX;AAJD,CAAA,UAAY,8BAA8B,EAAA;AACtC,IAAA,8BAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,8BAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,8BAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACvB,CAAC,EAJW,8BAA8B,KAA9B,8BAA8B,GAIzC,EAAA,CAAA,CAAA,CAAA;AAeD;MACa,mCAAmC,CAAA;AAmK5C;;;AAGG;AACH,IAAA,WAAA,CAAiD,MAAe,EAAA;QAAf,IAAM,CAAA,MAAA,GAAN,MAAM,CAAS;AArKhE;;AAEG;QACO,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAErC;;AAEG;QACO,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAEpC;;AAEG;QACO,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;AAElC;;AAEG;QACO,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAOhC;;AAEG;QACK,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QA0IvC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,MAAM,EAAE;;YAEb,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;;YAExF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAE1G,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAClC,SAAA;KACJ;AA7ID;;AAEG;AACH,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,4BAA4B,CAAC;KAC5C;AAED;;AAEG;IACH,IAAW,qBAAqB,CAAC,KAAqC,EAAA;AAClE,QAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,4BAA4B,CAAC;AACpE,QAAA,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;AAC1C,QAAA,IAAI,yBAAyB,KAAK,IAAI,CAAC,4BAA4B,EAAE;AACjE,YAAA,IAAI,CAAC,MAAM,EAAE,uBAAuB,CAAC,IAAI,EAAE,CAAC;AAC/C,SAAA;KACJ;AAED;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED;;AAEG;IACH,IAAW,KAAK,CAAC,KAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC;KAChC;AAED;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED;;AAEG;IACH,IAAW,SAAS,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC;KACpC;AAED;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED;;AAEG;IACH,IAAW,OAAO,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC;KAClC;AAED;;AAEG;AACH,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED;;AAEG;IACH,IAAW,UAAU,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC;KACrC;AAED;;;AAGG;AACH,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,MAAM,EAAE,UAAU,CAAC;KAC7B;AAED;;;AAGG;AACH,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,MAAM,EAAE,WAAW,CAAC;KAC9B;AAED;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;YAC9F,OAAO,IAAI,CAAC,gBAAgB,CAAC;AAChC,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAC5C,SAAA;KACJ;AAED;;AAEG;AACH,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,KAAK,IAAI,mCAAmC,CAAC,MAAM,EAAE;AACrD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,qBAAqB,GAAG,8BAA8B,CAAC,MAAM,CAAC;AACtE,SAAA;AAAM,aAAA,IAAI,KAAK,IAAI,mCAAmC,CAAC,SAAS,EAAE;AAC/D,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,qBAAqB,GAAG,8BAA8B,CAAC,SAAS,CAAC;AACzE,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,qBAAqB,GAAG,8BAA8B,CAAC,OAAO,CAAC;AACvE,SAAA;QAED,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACrC;AAmBD;;AAEG;IACI,iBAAiB,GAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;KACpC;AAED;;;AAGG;IACK,YAAY,GAAA;QAChB,MAAM,IAAI,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,KAAK,GAAG,IAAI,CAAC;;;AAIjB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,YAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBAC7C,KAAK,GAAG,KAAK,CAAC;gBACd,MAAM;AACT,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;AAGG;IACI,0BAA0B,GAAA;;AAE7B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;;AAG3B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;;AAGvB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACjC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;QAG7B,IAAI,CAAC,gBAAgB,GAAI;AACrB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,OAAO,EAAE,OAAO;SACnB,CAAC;QAEF,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED;;AAEG;IACK,eAAe,GAAA;QACnB,IAAI,CAAC,0BAA0B,EAAE,CAAC;KACrC;AAED;;AAEG;IAEI,uBAAuB,GAAA;QAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;;AAGG;IACI,yBAAyB,GAAA;QAC5B,OAAO;KACV;AAED;;;;AAIG;AACI,IAAA,qBAAqB,CAAC,YAAyB,EAClD,cAAc,GAAG,CAAC,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EACrE,aAAa,GAAG,EAAE,EAClB,cAAuB,EACvB,YAAqB,EAAA;QAEjB,IAAI,CAAC,YAAY,EAAE;AACf,YAAA,OAAO,SAAS,CAAC;AACpB,SAAA;QAED,IAAI,KAAK,GAAG,aAAa,CAAC;QAC1B,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,MAAM,GAAG,YAAY,CAAC;AAC1B,QAAA,OAAO,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,MAAM,EAAE;AACR,gBAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AACjC,aAAA;YAED,MAAM,aAAa,GAAG,MAAM,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC;AAC1D,YAAA,IAAI,YAAY,EAAE;AACd,gBAAA,IAAI,aAAa,KAAK,YAAY,CAAC,WAAW,EAAE,EAAE;AAC9C,oBAAA,OAAO,SAAS,CAAC;AACpB,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,cAAc,KAAK,SAAS,IAAI,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE;gBACrH,KAAK,GAAG,IAAI,CAAC;AACb,gBAAA,OAAO,MAAM,CAAC;AACjB,aAAA;YACD,KAAK,IAAI,CAAC,CAAC;AACd,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KACxB;AAED;;;;;;AAMG;AACI,IAAA,4BAA4B,CAAC,QAAa,EAAE,WAAmB,EAAE,OAAoB,EAAA;QACxF,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;AACV,SAAA;AAED,QAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACjE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAE3D,IAAI,oBAAoB,GAAG,EAAE,CAAC;QAC9B,IAAI,kBAAkB,GAAG,EAAE,CAAC;AAE5B,QAAA,QAAQ,WAAW;AACf,YAAA,KAAK,SAAS;gBACV,kBAAkB,GAAG,OAAO,CAAC;gBAC7B,oBAAoB,GAAG,SAAS,CAAC;gBACjC,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;gBACtE,MAAM;AACV,YAAA,KAAK,WAAW;gBACZ,kBAAkB,GAAG,SAAS,CAAC;gBAC/B,oBAAoB,GAAG,OAAO,CAAC;gBAC/B,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;gBACtE,MAAM;AACV,YAAA,KAAK,QAAQ;gBACT,kBAAkB,GAAG,MAAM,CAAC;gBAC5B,oBAAoB,GAAG,SAAS,CAAC;gBACjC,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;gBACvE,MAAM;AACb,SAAA;QAED,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;AAExF,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClD,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE;gBACrD,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,aAAA;AACJ,SAAA;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE;gBACpD,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,aAAA;AACJ,SAAA;KACJ;AAED;;;;;AAKG;IACK,WAAW,CAAC,MAAgB,EAAE,MAAgB,EAAA;AAClD,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;;;;AAKG;IACK,iBAAiB,CAAC,oBAA8B,EAAE,kBAA4B,EAAA;AAClF,QAAA,IAAI,CAAC,kBAAkB,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;AACnD,YAAA,OAAO,oBAAoB,CAAC;AAC/B,SAAA;AAED,QAAA,IAAI,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;AACvD,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;QAED,MAAM,GAAG,GAAG,EAAE,CAAC;AAEf,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE;gBACvD,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACd;;AA7YQ,mBAAA,mCAAA,CAAA,IAAA,GAAA,SAAA,2CAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,mCAAmC,uBAuKxB,mBAAmB,CAAA,CAAA,CAAA,EAAA,CAAA;qHAvK9B,mCAAmC,EAAA,CAAA,CAAA;AAyP5C,UAAA,CAAA;AAAC,IAAA3C,UAAQ,EAAE;;;;AAGV,CAAA,EAAA,mCAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;uFA5PQ,mCAAmC,EAAA,CAAA;cAF/C,SAAS;;sBAyKO,MAAM;uBAAC,mBAAmB,CAAA;wBAmFhC,uBAAuB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ICrRtB,kCAGX;AAHD,CAAA,UAAY,iCAAiC,EAAA;AACzC,IAAA,iCAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,iCAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACrB,CAAC,EAHW,iCAAiC,KAAjC,iCAAiC,GAG5C,EAAA,CAAA,CAAA,CAAA;IAaW,qBAGX;AAHD,CAAA,UAAY,oBAAoB,EAAA;AAC5B,IAAA,oBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,oBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACrB,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,GAG/B,EAAA,CAAA,CAAA,CAAA;IAEW,iBAGX;AAHD,CAAA,UAAY,gBAAgB,EAAA;AACxB,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,gBAAA,CAAA,yBAAA,CAAA,GAAA,yBAAmD,CAAA;AACvD,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,GAG3B,EAAA,CAAA,CAAA,CAAA;AAED;;;;;;;;;;;AAWG;MACU,qBAAqB,CAAA;AAC9B;;;;;;;AAOG;AACI,IAAA,UAAU,CAAC,OAAc,EAAE,SAAiB,EAAE,MAAc,EAAA;QAC/D,MAAM,YAAY,GAAiB,EAAE,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,EAAE,8BAA8B,CAAC,OAAO,CAAC,CAAC;QAChF,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,SAAS,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;QACpF,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,8BAA8B,CAAC,MAAM,CAAC,CAAC;AAC9E,QAAA,OAAO,YAAY,CAAC;KACvB;AAEO,IAAA,WAAW,CAAC,YAA0B,EAAE,MAAW,EAAE,8BAA8D,EAAA;QACvH,IAAI,CAAC,MAAM,EAAE;YACT,YAAY,CAAC,8BAA8B,CAAC,GAAG;gBAC3C,IAAI,EAAE,oBAAoB,CAAC,OAAO;aACrC,CAAC;AACL,SAAA;AAAM,aAAA;YACH,YAAY,CAAC,8BAA8B,CAAC,GAAG;gBAC3C,IAAI,EAAE,oBAAoB,CAAC,MAAM;AACjC,gBAAA,MAAM,EAAE,EAAE;aACb,CAAC;AAEF,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,gBAAA,YAAY,CAAC,8BAA8B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AACrD,oBAAA,KAAK,EAAE;wBACH,IAAI,EAAE,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ;AAC/B,4BAAA,iCAAiC,CAAC,UAAU,GAAG,iCAAiC,CAAC,MAAM;wBAC3F,KAAK,EAAE,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAC3E,qBAAA;AACJ,iBAAA,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;KACJ;AACJ;;MClFY,yBAAyB,CAAA;AAJtC,IAAA,WAAA,GAAA;AAMW,QAAA,IAAA,CAAA,KAAK,GAAW,MAAM,CAAC,SAAS,CAAC;AASxC;;;AAGG;QAEI,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;AAClC,KAAA;;qHAjBY,yBAAyB,GAAA,CAAA,EAAA,CAAA;2GAAzB,yBAAyB,EAAA,SAAA,EAAA,CAAA,CAAA,uBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,kCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAAzB,yBAAyB,EAAA,CAAA;cAJrC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,uBAAuB;AACjC,gBAAA,QAAQ,EAAE,EAAE;AACf,aAAA,CAAA;gBAGU,KAAK,EAAA,CAAA;kBADX,KAAK;YAKC,OAAO,EAAA,CAAA;kBADb,KAAK;YAIC,IAAI,EAAA,CAAA;kBADV,KAAK;YAQC,gBAAgB,EAAA,CAAA;kBADtB,KAAK;;;;ICrBV,EAAoJ,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAAjB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAX,EAAW,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;;ACI/J;;AAEG;AAKG,MAAO,mBAAoB,SAAQ,iBAAiB,CAAA;AAoDtD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AA3BpB;;AAEG;QAEI,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;KAwBrB;AApDD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,qBAAqB,CAAC;KAChC;AA4BD,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;IAKD,IACW,QAAQ,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACzF,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACxG,SAAA;KACJ;IAMM,QAAQ,GAAA;QACX,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;KAC9D;IAEM,KAAK,GAAA;QACR,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;KAC/D;;yGA9DQ,mBAAmB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;qGAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,iBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,gCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;QDXhC,EAAqK,CAAA,UAAA,CAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACrK,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;QADnB,EAAa,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;;uFCWN,mBAAmB,EAAA,CAAA;cAJ/B,SAAS;2BACI,iBAAiB,EAAA,QAAA,EAAA,wMAAA,EAAA,CAAA;2DAepB,KAAK,EAAA,CAAA;kBADX,WAAW;mBAAC,aAAa,CAAA;YAInB,YAAY,EAAA,CAAA;kBADlB,WAAW;mBAAC,oBAAoB,CAAA;YAI1B,aAAa,EAAA,CAAA;kBADnB,WAAW;mBAAC,qBAAqB,CAAA;YAI3B,IAAI,EAAA,CAAA;kBADV,WAAW;mBAAC,YAAY,CAAA;YAIlB,QAAQ,EAAA,CAAA;kBADd,WAAW;mBAAC,iBAAiB,CAAA;YAOvB,UAAU,EAAA,CAAA;kBADhB,KAAK;YAIC,OAAO,EAAA,CAAA;kBADb,KAAK;YAQC,YAAY,EAAA,CAAA;kBADlB,KAAK;YAIK,QAAQ,EAAA,CAAA;kBADlB,KAAK;;;AClDJ,MAAO,6BAA8B,SAAQ,mCAAmC,CAAA;AAAtF,IAAA,WAAA,GAAA;;QACoB,IAAI,CAAA,IAAA,GAAG,YAAY,CAAC;KAUvC;IAPU,mBAAmB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,OAAO;AACV,SAAA;;KAGJ;AACJ,CAAA;AARG,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;;;AAOP,CAAA,EAAA,6BAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA;;;;ACAL;;AAEG;AAKG,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;IAsHlD,WAAY,CAAA,QAAkB,EAA+B,MAAc,EAAA;QACvE,KAAK,CAAC,QAAQ,CAAC,CAAC;AA9FpB;;AAEG;QAEI,IAAmB,CAAA,mBAAA,GAAG,EAAE,CAAC;AAEhC;;AAEG;QAEI,IAAiB,CAAA,iBAAA,GAAG,EAAE,CAAC;AAE9B;;AAEG;QAEI,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAEzB;;AAEG;QAEI,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC;AAEhC;;AAEG;QAEI,IAAU,CAAA,UAAA,GAA4E,EAAE,CAAC;AAEhG;;AAEG;QAEI,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAE3B;;AAEG;QAEI,IAAgC,CAAA,gCAAA,GAAG,IAAI,CAAC;AAE/C;;;;;;;;AAQG;AAEI,QAAA,IAAA,CAAA,YAAY,GAAiB;YAChC,CAAC,8BAA8B,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,oBAAoB,CAAC,OAAO,EAAE;YAClF,CAAC,8BAA8B,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,oBAAoB,CAAC,OAAO,EAAE;YACpF,CAAC,8BAA8B,CAAC,MAAM,GAAG,EAAE,MAAM,EAAE,oBAAoB,CAAC,OAAO,EAAE;SACpF,CAAC;AAEF;;AAEG;AAEI,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEpE;;AAEG;AAEI,QAAA,IAAA,CAAA,uBAAuB,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAEtE,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;QAChB,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;AAEpB,QAAA,IAAA,CAAA,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC;QAEnC,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAqB/B,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,6BAA6B,GAAG,IAAI,6BAA6B,CAAC,MAAM,CAAC,CAAC;;YAE/E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;;YAExF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAE1G,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAClC,SAAA;KAEJ;AAlID;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,iBAAiB,CAAC;KAC5B;AAgGD,IAAA,IAAW,2BAA2B,GAAA;AAClC,QAAA,OAAO,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,GAAG,EAAE,CAAC;KAChF;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED,IAAA,IAAW,uBAAuB,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC,IAAI,CAAC;KAC5D;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAiBM,eAAe,GAAA;QAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;KAC7F;AAED;;AAEG;IAEI,OAAO,GAAA;QACV,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;AAEG;IACI,eAAe,GAAA;QAClB,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;AAED;;AAEG;IAEK,uBAAuB,GAAA;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;;AAGG;IAEI,yBAAyB,GAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE;YAClD,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,6BAA6B,CAAC,mBAAmB,EAAE,CAAC;KAC5D;;;IAIS,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AACxC,YAAA,yBAAyB,EAAE,uBAAuB;AACrD,SAAA,CAAC,CAAC;KACN;IAES,YAAY,GAAA;QAClB,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,OAAO;AACV,aAAA;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAC/C,YAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAErC,MAAM,iBAAiB,GAAG,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC3E,YAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;AAE3C,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC;AACnF,YAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,OAAO,EAAE;gBACpD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AACjF,gBAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,uBAAuB,CAAC;AAC9D,gBAAA,IAAI,CAAC,6BAA6B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAE7D,gBAAA,MAAM,6BAA6B,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,GAAG,GAAG,GAAG,WAAW,CAAC,CAAC;AAC/F,gBAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;AACrD,gBAAA,MAAM,8BAA8B,GAAG,GAAG,GAAG,6BAA6B,IAAI,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,CAAC;gBACtH,IAAI,CAAC,yCAAyC,CAAC,WAAW,EAAE,8BAA8B,EAAE,6BAA6B,CAAC,CAAC;AAE3H,gBAAA,IAAI,wBAAwB,KAAK,IAAI,CAAC,uBAAuB,EAAE;oBAC3D,UAAU,CAAC,MAAK;AACZ,wBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC9B,qBAAC,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,uBAAuB,EAAE;AAC3E,gBAAA,IAAI,2BAA2B,GAAG,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACzE,gBAAA,2BAA2B,GAAG,2BAA2B,GAAG,CAAC,GAAG,2BAA2B,GAAG,CAAC,CAAC;gBAEhG,IAAI,2BAA2B,IAAI,CAAC,EAAE;oBAClC,OAAO;AACV,iBAAA;AAED,gBAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAC;AAC1E,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,kBAAkB,CAAC,iBAAiD,EAAA;QACxE,IAAI,CAAC,iBAAiB,EAAE;AACpB,YAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC;YACjD,OAAO;AACV,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;AAC1C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AAC9C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAExC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE;YACnC,OAAO,CAAC,GAAG,CAAC;gBACR,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,gBAAA,OAAO,EAAE,0CAA0C;AACnD,gBAAA,MAAM,EAAE,0CAA0C;AACrD,aAAA,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,EAAE,MAAM,EAAE,oBAAoB,CAAC,OAAO,EAAE,CAAC;YAE7D,IAAI,CAAC,OAAO,EAAE;AACV,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,WAAW,CAAC;AAC3C,aAAA;YAED,IAAI,CAAC,SAAS,EAAE;AACZ,gBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,WAAW,CAAC;AAC7C,aAAA;YAED,IAAI,CAAC,MAAM,EAAE;AACT,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,WAAW,CAAC;AAC1C,aAAA;AACJ,SAAA;QAED,MAAM,aAAa,GAAqB,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;AAE7E,QAAA,IAAI,aAAa,CAAC,IAAI,KAAK,oBAAoB,CAAC,OAAO,EAAE;AACrD,YAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACtD,SAAA;AAAM,aAAA,IAAI,aAAa,CAAC,IAAI,KAAK,oBAAoB,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE;AAClH,YAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;AACnE,YAAA,IAAI,CAAC,uBAAuB,GAAG,aAAa,CAAC,MAAM,CAAC;AACvD,SAAA;KACJ;IAEO,SAAS,GAAA;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAC/C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,YAAA,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,UAAU,CAAC,IAAI,EAAE;AACjB,gBAAA,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC;AAC/B,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,mBAAmB,CAAC,gBAAkC,EAAA;AAC1D,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,uBAAuB,IAAI,gBAAgB,KAAK,gBAAgB,CAAC,OAAO,EAAE;YACrH,IAAI,CAAC,SAAS,EAAE,CAAC;AACpB,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;;;;QAIzC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,gBAAgB,KAAK,gBAAgB,CAAC,uBAAuB,GAAG,CAAA,EAAG,IAAI,CAAC,iBAAiB,CAAA,MAAA,CAAQ,GAAG,OAAO,CAAC;KAC9J;AAEO,IAAA,kBAAkB,CAAC,WAAkC,EAAA;AACzD,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AACzB,QAAA,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;KACxE;IAEO,6BAA6B,CACjC,WAAwC,EACxC,WAAmB,EAAA;AAEnB,QAAA,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;AACzC,QAAA,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,IAAI,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,eAAe,IAAI,iBAAiB,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;AAChI,gBAAA,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC;AACrC,gBAAA,IAAI,CAAC,uBAAuB,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AACjD,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,yCAAyC,CAC7C,WAAkC,EAClC,8BAAsC,EACtC,6BAAqC,EAAA;QAErC,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,YAAA,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AACzC,YAAA,IAAI,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE;;;;AAIlC,gBAAA,UAAU,GAAG,GAAG,GAAG,eAAe,CAAC;gBACnC,eAAe,GAAG,CAAC,CAAC;;AAEpB,gBAAA,IAAI,WAAW,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC,EAAE;AACvF,oBAAA,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC;AACvC,iBAAA;AAAM,qBAAA;oBACH,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AACvH,iBAAA;gBACD,WAAW,GAAG,CAAC,CAAC;AACnB,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;AACnG,gBAAA,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,gBAAgB,GAAG,6BAA6B,CAAC,CAAC;gBAC5F,eAAe,IAAI,UAAU,CAAC;gBAE9B,IAAI,eAAe,GAAG,GAAG,EAAE;;oBAEvB,IAAI,UAAU,GAAG,GAAG,EAAE;wBAClB,UAAU,GAAG,GAAG,CAAC;AACpB,qBAAA;oBACD,eAAe,GAAG,CAAC,CAAC;oBACpB,WAAW,GAAG,CAAC,CAAC;oBAChB,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AACvH,iBAAA;AAAM,qBAAA;AACH,oBAAA,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC;AAC5E,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,IAAI,EAAE,uBAAuB,EAAE,gBAAgB,EAAE;AACjD,gBAAA,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC;AAC3E,aAAA;AAAM,iBAAA;;;AAGH,gBAAA,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE;oBAC3E,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AACxD,iBAAA;AACJ,aAAA;YAED,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,GAAG,GAAG,CAAC;AACxC,YAAA,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1B,SAAA;KACJ;IAEO,uBAAuB,CAC3B,WAAkC,EAClC,2BAAmC,EAAA;QAEnC,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;AAE1D,QAAA,IAAI,YAAY,EAAE;AACd,YAAA,IAAI,CAAC,6BAA6B,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAC;AAChF,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAC;AACjF,SAAA;KACJ;AAED;;;;;;AAMG;IACK,8BAA8B,CAClC,WAAkC,EAClC,2BAAmC,EAAA;QAEnC,MAAM,gCAAgC,GAAG,GAAG,CAAC;QAE7C,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,eAAe,GAAG,CAAC,CAAC;AACxB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE;gBACpC,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;AACtD,gBAAA,MAAM,qBAAqB,GAAG,2BAA2B,GAAG,gBAAgB,CAAC;AAE7E,gBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,iCAAiC,CAAC,UAAU,EAAE;oBACnE,IAAI,WAAW,CAAC,KAAK,GAAG,GAAG,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;AAClD,wBAAA,WAAW,CAAC,KAAK,GAAG,GAAG,CAAC;AAC3B,qBAAA;AAED,oBAAA,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC;oBACrC,eAAe,IAAI,UAAU,CAAC;AAE9B,oBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAC9C,oBAAA,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC9E,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,GAAG,GAAG,CAAC;oBAExC,IAAI,eAAe,GAAG,GAAG,EAAE;wBACvB,eAAe,GAAG,CAAC,CAAC;AACvB,qBAAA;AACJ,iBAAA;AAAM,qBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,iCAAiC,CAAC,MAAM,EAAE;AACtE,oBAAA,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;AACvB,wBAAA,WAAW,CAAC,KAAK;4BACb,gCAAgC,IAAI,qBAAqB;AACrD,gCAAA,gCAAgC,GAAG,qBAAqB,CAAC;AACpE,qBAAA;AAED,oBAAA,gBAAgB,IAAI,WAAW,CAAC,KAAK,CAAC;;AAGtC,oBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC;oBAC9C,gBAAgB,IAAI,YAAY,CAAC;AAEjC,oBAAA,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9E,oBAAA,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9D,iBAAA;AAAM,qBAAA;oBACH,OAAO,CAAC,GAAG,CAAC;wBACR,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,wBAAA,OAAO,EAAE,eAAe;AACxB,wBAAA,MAAM,EAAE,gDAAgD;AAC3D,qBAAA,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,OAAO,CAAC,GAAG,CAAC;oBACR,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,oBAAA,OAAO,EAAE,eAAe;AACxB,oBAAA,MAAM,EAAE,gDAAgD;AAC3D,iBAAA,CAAC,CAAC;AACN,aAAA;AAED,YAAA,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1B,SAAA;KACJ;AAED;;;;;;AAMG;IACK,6BAA6B,CACjC,WAAkC,EAClC,2BAAmC,EAAA;QAEnC,MAAM,gCAAgC,GAAG,GAAG,CAAC;QAE7C,IAAI,gBAAgB,GAAG,CAAC,CAAC;AACzB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE;gBACnC,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;AACtD,gBAAA,MAAM,qBAAqB,GAAG,2BAA2B,GAAG,gBAAgB,CAAC;AAE7E,gBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,iCAAiC,CAAC,UAAU,EAAE;oBACnE,IAAI,WAAW,CAAC,KAAK,GAAG,GAAG,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;AAClD,wBAAA,WAAW,CAAC,KAAK,GAAG,GAAG,CAAC;AAC3B,qBAAA;;AAGD,oBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC;oBAC9C,gBAAgB,IAAI,YAAY,CAAC;AACjC,oBAAA,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAE9E,IAAI,qBAAqB,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,GAAG,IAAI,qBAAqB,CAAC;oBAC9E,IAAI,qBAAqB,KAAK,CAAC,EAAE;wBAC7B,gBAAgB,GAAG,CAAC,CAAC;wBACrB,gBAAgB,IAAI,YAAY,CAAC;AACjC,wBAAA,qBAAqB,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,GAAG,KAAK,2BAA2B,GAAG,gBAAgB,CAAC,CAAC;AACxG,qBAAA;AAAM,yBAAA;wBACH,IAAI,qBAAqB,IAAI,qBAAqB,EAAE;4BAChD,qBAAqB,GAAG,qBAAqB,CAAC;;4BAE9C,gBAAgB,GAAG,CAAC,CAAC;AACxB,yBAAA;AAAM,6BAAA;4BACH,gBAAgB,IAAI,qBAAqB,CAAC;AAC7C,yBAAA;AAED,wBAAA,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC;AAC9B,wBAAA,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,gCAAgC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACjG,qBAAA;oBAED,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC;AAClE,iBAAA;AAAM,qBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,iCAAiC,CAAC,MAAM,EAAE;AACtE,oBAAA,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;AACvB,wBAAA,WAAW,CAAC,KAAK;4BACb,gCAAgC,IAAI,qBAAqB;AACrD,gCAAA,gCAAgC,GAAG,qBAAqB,CAAC;AACpE,qBAAA;AAED,oBAAA,gBAAgB,IAAI,WAAW,CAAC,KAAK,CAAC;;AAGtC,oBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC;oBAC9C,gBAAgB,IAAI,YAAY,CAAC;AAEjC,oBAAA,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9E,oBAAA,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9D,iBAAA;AAAM,qBAAA;oBACH,OAAO,CAAC,GAAG,CAAC;wBACR,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,wBAAA,OAAO,EAAE,eAAe;AACxB,wBAAA,MAAM,EAAE,+CAA+C;AAC1D,qBAAA,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,OAAO,CAAC,GAAG,CAAC;oBACR,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,oBAAA,OAAO,EAAE,eAAe;AACxB,oBAAA,MAAM,EAAE,+CAA+C;AAC1D,iBAAA,CAAC,CAAC;AACN,aAAA;AAED,YAAA,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1B,SAAA;KACJ;AAEO,IAAA,kBAAkB,CAAC,WAAkC,EAAA;QACzD,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,YAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE;gBAClC,SAAS;AACZ,aAAA;AAED,YAAA,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAC7D,gBAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1D,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;AACvB,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;;AAhiBQ,mBAAA,eAAA,CAAA,IAAA,GAAA,SAAA,uBAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,eAAe,0DAsHgB,mBAAmB,CAAA,CAAA,CAAA,EAAA,CAAA;iGAtHlD,eAAe,EAAA,SAAA,EAAA,CAAA,CAAA,YAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;oCAWP,mBAAmB,EAAA,CAAA,CAAA,CAAA;oCAMnB,yBAAyB,EAAA,CAAA,CAAA,CAAA;;;;;;;QCrC9C,EAAkD,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;ADgK9C,UAAA,CAAA;AAAC,IAAA7C,UAAQ,EAAE;;;;AAIV,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAYD,UAAA,CAAA;AAAC,IAAAA,UAAQ,EAAE;;;;AAGV,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;AAMD,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;;;AAOP,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,CAAA;uFA5KQ,eAAe,EAAA,CAAA;cAJ3B,SAAS;2BACI,YAAY,EAAA,QAAA,EAAA,0DAAA,EAAA,CAAA;;sBAyHW,MAAM;uBAAC,mBAAmB,CAAA;wBA1GnD,WAAW,EAAA,CAAA;kBADlB,eAAe;mBAAC,mBAAmB,CAAA;YAO5B,WAAW,EAAA,CAAA;kBADlB,eAAe;mBAAC,yBAAyB,CAAA;YAYnC,mBAAmB,EAAA,CAAA;kBADzB,KAAK;YAOC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YAOC,SAAS,EAAA,CAAA;kBADf,KAAK;YAOC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YAOC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAOC,WAAW,EAAA,CAAA;kBADjB,KAAK;YAOC,gCAAgC,EAAA,CAAA;kBADtC,KAAK;YAaC,YAAY,EAAA,CAAA;kBADlB,KAAK;YAWC,aAAa,EAAA,CAAA;kBADnB,MAAM;YAOA,uBAAuB,EAAA,CAAA;kBAD7B,MAAM;YAiDA,OAAO,EAAA,EAAA,EAgBN,uBAAuB,EAAA,EAAA,EASxB,yBAAyB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;;AEjL9B,MAAO,uBAAwB,SAAQ,eAAe,CAAA;AAGxD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,yBAAyB,CAAC;KACpC;IAQS,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,qBAAqB;YACrB,sBAAsB;YACtB,2BAA2B;AAC9B,SAAA,CAAC,CAAC;KACN;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACzC;AACD;;;AAGG;AACI,IAAA,eAAe,CAAC,WAAoB,EAAA;QACvC,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAC/D,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjD,gBAAA,mBAAmB,CAAC,CAAC,CAAC,CAAC,qBAAqB,GAAG,WAAW,CAAC;AAC9D,aAAA;AACJ,SAAA;KACJ;IAEM,eAAe,GAAA;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,cAA2C,KAAI;AAC7E,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC9D,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aACtB,CAAC,CAAC,CAAC;AACR,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAC/D,QAAA,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1H,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,uBAAuB,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;KAC9H;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAC/D,QAAA,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzH,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,uBAAuB,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;KAC7H;AAED;;;;AAIG;AACI,IAAA,OAAO,CAAC,IAAI,EAAA;QACf,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAC/D,QAAA,MAAM,aAAa,GAAG,IAAI,KAAK,EAAE,CAAC;AAClC,QAAA,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5B,QAAA,MAAM,eAAe,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC;AAC5C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjD,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;AACxC,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;AACxC,YAAA,MAAM,aAAa,GAAG,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;AACxD,YAAA,MAAM,aAAa,GAAG,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;YACvD,IAAI,eAAe,KAAK,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC/C,MAAM,cAAc,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;gBAC3D,MAAM,cAAc,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;gBAC3D,MAAM,cAAc,GAAG,cAAc,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;gBAC3E,MAAM,cAAc,GAAG,cAAc,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AAC5E,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;AACjH,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;AACjH,gBAAA,KAAK,cAAc,IAAI,cAAc,GAAG;oBACpC,IAAI,cAAc,IAAI,aAAa,EAAE;wBACjC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9C,wBAAA,mBAAmB,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,aAAa,CAAC;AACvD,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC;AACnC,wBAAA,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/B,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,CAAC,KAAK,mBAAmB,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClE,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1D,aAAA;AACJ,SAAA;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;AAED;;;;;;AAMG;AACI,IAAA,sBAAsB,CACzB,oBAA4B,EAC5B,oBAA4B,EAC5B,qBAA6B,EAC7B,qBAA6B,EAAA;QAC7B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,oBAAoB,CAAC;eACtF,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,oBAAoB,CAAC;gBACpF,oBAAoB,IAAI,qBAAqB,IAAI,oBAAoB,IAAI,qBAAqB,CAAC,CAAC;KAC3G;AAED;;;;;AAKG;AACI,IAAA,YAAY,CAAC,KAAa,EAAE,GAAW,EAAE,MAAc,EAAA;AAC1D,QAAA,OAAO,CAAC,MAAM,GAAG,KAAK,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;KAC5D;AAED;;AAEG;IACI,UAAU,GAAA;QACb,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,cAA2C,KAAI;YAC7E,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,GAAG,uBAAuB,CAAC,cAAc,CAAC;YACxF,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,GAAG,uBAAuB,CAAC,cAAc,CAAC;YACxF,MAAM,eAAe,GAAG,cAAc,CAAC,YAAY,GAAG,uBAAuB,CAAC,cAAc,CAAC;YAC7F,MAAM,cAAc,GAAG,cAAc,CAAC,WAAW,GAAG,uBAAuB,CAAC,cAAc,CAAC;YAC3F,IAAI,UAAU,KAAK,CAAC,EAAE;AAClB,gBAAA,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;AACvF,aAAA;YACD,IAAI,UAAU,KAAK,CAAC,EAAE;AAClB,gBAAA,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;AACvF,aAAA;YACD,IAAI,eAAe,KAAK,CAAC,EAAE;AACvB,gBAAA,cAAc,CAAC,YAAY;AACvB,oBAAA,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,GAAG,eAAe,EAAE,uBAAuB,CAAC,cAAc,CAAC,CAAC;AACvG,aAAA;YACD,IAAI,cAAc,KAAK,CAAC,EAAE;AACtB,gBAAA,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,GAAG,cAAc,EAAE,uBAAuB,CAAC,cAAc,CAAC,CAAC;AAC9H,aAAA;;AAGD,YAAA,IAAI,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,OAAO,EAAE;gBAC9C,IAAI,aAAa,GAAG,CAAC,CAAC;gBACtB,IAAI,cAAc,GAAG,CAAC,CAAC;AACvB,gBAAA,IAAI,cAAc,CAAC,WAAW,IAAI,cAAc,CAAC,YAAY,EAAE;AAC3D,oBAAA,aAAa,GAAG,uBAAuB,CAAC,cAAc,CAAC;AAC1D,iBAAA;AACD,gBAAA,IAAI,cAAc,CAAC,YAAY,IAAI,cAAc,CAAC,WAAW,EAAE;AAC3D,oBAAA,cAAc,GAAG,uBAAuB,CAAC,cAAc,CAAC;AAC3D,iBAAA;AACD,gBAAA,cAAc,CAAC,WAAW,IAAI,aAAa,CAAC;AAC5C,gBAAA,cAAc,CAAC,YAAY,IAAI,cAAc,CAAC;AACjD,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAGS,YAAY,GAAA;QAClB,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,IAAI,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,EAAE;gBACd,OAAO;AACV,aAAA;;YAGD,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAE/D,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjD,gBAAA,mBAAmB,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACxE,gBAAA,mBAAmB,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AAC7E,aAAA;AACJ,SAAA;KACJ;;AArLc,uBAAc,CAAA,cAAA,GAAG,EAAE,CAAC;AACpB,uBAAe,CAAA,eAAA,GAAG,CAAC,CAAC;AAF1B,mBAAA,uBAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,oCAAA,CAAA,CAAA,OAAA,SAAA,+BAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,oCAAA,KAAA,oCAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,uBAAuB,SAAvB,uBAAuB,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;yGAAvB,uBAAuB,EAAA,SAAA,EAAA,CAAA,CAAA,qBAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,sCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;oCAUf,2BAA2B,EAAA,CAAA,CAAA,CAAA;;;;;;QCnBhD,EAAkG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAClG,EAA2D,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;QAC3D,EAAM,CAAA,YAAA,EAAA,CAAA;;AAFgC,QAAA,EAAA,CAAA,WAAA,CAAA,QAAA,EAAA,GAAA,CAAA,UAAA,EAAA,IAAA,CAA8B,CAAA,OAAA,EAAA,GAAA,CAAA,SAAA,EAAA,IAAA,CAAA,CAAA;;AD+KhE,UAAA,CAAA;IAAC7C,UAAQ,CAAC,CAAC,CAAC;;;;AAgBX,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;uFAtLQ,uBAAuB,EAAA,CAAA;cAJnC,SAAS;2BACI,qBAAqB,EAAA,QAAA,EAAA,yLAAA,EAAA,CAAA;gBAcrB,mBAAmB,EAAA,CAAA;kBAD5B,eAAe;mBAAC,2BAA2B,CAAA;YAIrC,UAAU,EAAA,CAAA;kBADhB,KAAK;YA0JI,YAAY,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MEnKb,YAAY,CAAA;;2FAAZ,YAAY,GAAA,CAAA,EAAA,CAAA;6FAAZ,YAAY,EAAA,CAAA,CAAA;iGAFX,YAAY,CAAA,EAAA,CAAA,CAAA;uFAEb,YAAY,EAAA,CAAA;cALxB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,YAAY,EAAE,CAAC,eAAe,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,2BAA2B,CAAC;gBACrI,OAAO,EAAE,CAAC,eAAe,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,2BAA2B,CAAC;gBAChI,OAAO,EAAE,CAAC,YAAY,CAAC;AAC1B,aAAA,CAAA;;wFACY,YAAY,EAAA,EAAA,YAAA,EAAA,CAJN,eAAe,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,2BAA2B,aAE1H,YAAY,CAAA,EAAA,OAAA,EAAA,CADZ,eAAe,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,2BAA2B,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;;ICE/H,EAAuI,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAArI,EAA2C,CAAA,sBAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,YAAA,EAAA,EAAA,CAAA,CAAA;IAAC,EAAiD,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAyC,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA,CAAA;IAAoB,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;;;;IACpJ,EAC+B,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAA7B,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,sDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAkB,CAAA,WAAA,CAAA,IAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAAC,EAAiB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAD6C,EAAiD,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAE,KAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA,CAAA;IACnH,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;;;;;ICVxC,iBAMX;AAND,CAAA,UAAY,gBAAgB,EAAA;AACxB,IAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;AAC1B,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,OAAe,CAAA;AACnB,CAAC,EANW,gBAAgB,KAAhB,gBAAgB,GAM3B,EAAA,CAAA,CAAA,CAAA;AAED,CAAA,UAAc,gBAAgB,EAAA;AAG1B,IAAA,MAAM,iBAAiB,GAAG;AACtB,QAAA,gBAAgB,CAAC,UAAU;AAC3B,QAAA,gBAAgB,CAAC,KAAK;AACtB,QAAA,gBAAgB,CAAC,MAAM;AACvB,QAAA,gBAAgB,CAAC,KAAK;KACzB,CAAC;IACF,SAAS,UAAU,CAAC,KAAa,EAAA;AAC7B,QAAA,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAEzD,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,uBAAuB,CAAC;AAClC,SAAA;AAED,QAAA,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;AAC5B,QAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,IAAI,uBAAuB,CAAC;KAClG;IAED,SAAgB,gBAAgB,CAAC,KAAe,EAAA;AAC5C,QAAA,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AAC7B,YAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AALe,IAAA,gBAAA,CAAA,gBAAgB,mBAK/B,CAAA;IAED,SAAgB,eAAe,CAAC,IAAsB,EAAA;AAClD,QAAA,QAAQ,IAAI;YACR,KAAK,gBAAgB,CAAC,UAAU;AAC5B,gBAAA,OAAO,0BAA0B,CAAC;YACtC,KAAK,gBAAgB,CAAC,KAAK;AACvB,gBAAA,OAAO,oBAAoB,CAAC;YAChC,KAAK,gBAAgB,CAAC,MAAM;AACxB,gBAAA,OAAO,qBAAqB,CAAC;YACjC,KAAK,gBAAgB,CAAC,KAAK,CAAC;AAC5B,YAAA;AACI,gBAAA,OAAO,oBAAoB,CAAC;AACnC,SAAA;KACJ;AAZe,IAAA,gBAAA,CAAA,eAAe,kBAY9B,CAAA;AACL,CAAC,EAxCa,gBAAgB,KAAhB,gBAAgB,GAwC7B,EAAA,CAAA,CAAA,CAAA;AACD;;;;;;;;;;;;;;;AAeG;AAKG,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;AA+DxD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AA3CpB;;AAEG;QAEI,IAAY,CAAA,YAAA,GAAG,aAAa,CAAC;AAEpC;;AAEG;QAEI,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAkCzB,QAAA,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,YAAY,EAAQ,CAAC;KAC/C;AArED;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,uBAAuB,CAAC;KAClC;AAkDD,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,OAAO,gBAAgB,CAAC,eAAe,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACzF;AAcD;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;AAEG;IACI,WAAW,GAAA;QACd,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC/B;AAED;;AAEG;IACK,eAAe,GAAA;QACnB,UAAU,CAAC,MAAK;YACZ,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC;YAC7D,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC;YACjE,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC;;;AAG/D,YAAA,IAAI,YAAY,GAAG,EAAE,IAAI,WAAW,GAAG,EAAE,IAAI,IAAI,CAAC,WAAW,KAAK,gBAAgB,CAAC,UAAU,EAAE;AAC3F,gBAAA,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC;AAC3C,aAAA;AAAM,iBAAA,IAAI,YAAY,GAAG,EAAE,IAAI,WAAW,GAAG,EAAE,IAAI,IAAI,CAAC,WAAW,KAAK,gBAAgB,CAAC,KAAK,EAAE;AAC7F,gBAAA,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC;AACtC,aAAA;AAAM,iBAAA,IAAI,YAAY,GAAG,EAAE,IAAI,WAAW,GAAG,EAAE,IAAI,IAAI,CAAC,WAAW,KAAK,gBAAgB,CAAC,MAAM,EAAE;gBAC9F,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,KAAK,gBAAgB,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;AACzG,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;AAChC,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,gBAAgB,EAAE,EAAE;SACvB,CAAC;KACL;;6GAxHQ,qBAAqB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;uGAArB,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,WAAA,EAAA,WAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ADzElC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACyI,aAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAInI,EAAa,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;QAKf,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAA6D,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAuE,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAM,CAAA,YAAA,EAAA,CAAA;QAC1I,EAA2J,CAAA,UAAA,CAAA,EAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC3J,EACoD,CAAA,UAAA,CAAA,EAAA,EAAA,mCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AACtD,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;QAdN,EAAsI,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAAQ,KAAA,EAAA,CAAA,GAAA,CAAA,uBAAA,EAAA,CAAA,GAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,MAAA,CAAA,CAAA,CAAA;QAC5F,EAAmK,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAnK,EAAmK,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAAP,KAAA,EAAA,CAAA,GAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,MAAA,EAAA,GAAA,CAAA,aAAA,EAAA,GAAA,CAAA,aAAA,CAAA,CAAA,CAAA;QACtM,EAAkF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlF,EAAkF,CAAA,sBAAA,CAAA,gDAAA,EAAA,GAAA,CAAA,SAAA,EAAA,iBAAA,CAAA,CAAA;QACrF,EAA2H,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAAQ,KAAA,EAAA,GAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,MAAA,EAAA,GAAA,CAAA,aAAA,CAAA,CAAA,CAAA;QAAC,EAA+C,CAAA,WAAA,CAAA,iBAAA,EAAA,GAAA,CAAA,KAAA,CAAA,gBAAA,CAAA,CAAA;QAO9I,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA7B,EAA6B,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,KAAA,CAAA,gBAAA,CAAA,CAAA;QAAC,EAAuE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvE,EAAuE,CAAA,iBAAA,CAAA,GAAA,CAAA,OAAA,IAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,YAAA,CAAA,IAAA,CAAA,OAAA,CAAA,CAAA;QAC7H,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAb,EAAa,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QACS,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;;uFC4DrC,qBAAqB,EAAA,CAAA;cAJjC,SAAS;2BACI,mBAAmB,EAAA,QAAA,EAAA,s5CAAA,EAAA,CAAA;2DAgBtB,WAAW,EAAA,CAAA;kBADjB,MAAM;YAOA,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,YAAY,EAAA,CAAA;kBADlB,KAAK;YAOC,aAAa,EAAA,CAAA;kBADnB,KAAK;YAOC,MAAM,EAAA,CAAA;kBADZ,KAAK;YAOC,WAAW,EAAA,CAAA;kBADjB,KAAK;YAOC,uBAAuB,EAAA,CAAA;kBAD7B,KAAK;YAOC,IAAI,EAAA,CAAA;kBADV,KAAK;;;MClHG,kBAAkB,CAAA;;uGAAlB,kBAAkB,GAAA,CAAA,EAAA,CAAA;mGAAlB,kBAAkB,EAAA,CAAA,CAAA;uGAJvB,YAAY;QACZ,gBAAgB,CAAA,EAAA,CAAA,CAAA;uFAGX,kBAAkB,EAAA,CAAA;cAR9B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,OAAO,EAAE,CAAE,qBAAqB,CAAE;gBAClC,YAAY,EAAE,CAAE,qBAAqB,CAAE;AACvC,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,gBAAgB;AACnB,iBAAA;AACJ,aAAA,CAAA;;wFACY,kBAAkB,EAAA,EAAA,YAAA,EAAA,CANX,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAEjC,YAAY;AACZ,QAAA,gBAAgB,aAJT,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ICGxB,oBA8BX;AA9BD,CAAA,UAAY,mBAAmB,EAAA;AAC3B;;AAEG;AACH,IAAA,mBAAA,CAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AAEV;;AAEG;AACH,IAAA,mBAAA,CAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AAEV;;AAEG;AACH,IAAA,mBAAA,CAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AAEX;;AAEG;AACH,IAAA,mBAAA,CAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AAER;;AAEG;AACH,IAAA,mBAAA,CAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AAEV;;AAEG;AACH,IAAA,mBAAA,CAAA,mBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACb,CAAC,EA9BW,mBAAmB,KAAnB,mBAAmB,GA8B9B,EAAA,CAAA,CAAA,CAAA;MA+BY,kBAAkB,CAAA;AAK9B;;ACxED;;;AAGG;MACU,eAAe,CAAA;AACxB;;AAEG;IACI,OAAO,yBAAyB,CAAC,MAAkB,EAAA;QACtD,MAAM,IAAI,GAAQ,EAAE,CAAC;AACrB,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE;AAC7B,YAAA,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,IAAG;AACjC,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,iCAAiC,CAAC,QAAQ,CAAC,CAAC;AACtF,aAAC,CAAC,CAAC;AACN,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;IACI,OAAO,iCAAiC,CAAC,QAAwB,EAAA;QACpE,IAAI,IAAI,GAAQ,IAAI,CAAC;AACrB,QAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,mBAAmB,CAAC,MAAM;AACzC,eAAA,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,YAAY,KAAK,EAAE,EAAE;AACtF,YAAA,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC;AAChC,SAAA;AAAM,aAAA;YACH,QAAQ,QAAQ,CAAC,IAAI;gBACjB,KAAK,mBAAmB,CAAC,OAAO;oBAC5B,IAAI,GAAG,KAAK,CAAC;oBACb,MAAM;gBACV,KAAK,mBAAmB,CAAC,KAAK;oBAC1B,IAAI,GAAG,EAAE,CAAC;oBACV,MAAM;gBACV,KAAK,mBAAmB,CAAC,MAAM;oBAC3B,IAAI,GAAG,EAAE,CAAC;oBACV,MAAM;gBACV,KAAK,mBAAmB,CAAC,MAAM;oBAC3B,MAAM,cAAc,GAAyB,QAAQ,CAAC;AACtD,oBAAA,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;wBAChC,IAAI,GAAG,EAAE,CAAC;AACV,wBAAA,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAG;AACrC,4BAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,iCAAiC,CAAC,IAAI,CAAC,CAAC;AAC9E,yBAAC,CAAC,CAAC;AACN,qBAAA;oBACD,MAAM;AACb,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;AACI,IAAA,OAAO,aAAa,CAAC,IAAc,EAAE,MAAkB,EAAA;QAC1D,IAAI,CAAC,IAAI,EAAE;YACP,IAAI,GAAG,EAAE,CAAC;AACb,SAAA;QACD,MAAM,WAAW,GAAG,eAAe,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;AACtE,QAAA,eAAe,CAAC,qBAAqB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACzD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;IACI,OAAO,sCAAsC,CAAC,cAA8B,EAAA;QAC/E,OAAO,cAAc,GAAG,eAAe,CAAC,sBAAsB,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;KACnH;AAED;;AAEG;AACI,IAAA,OAAO,sBAAsB,CAAC,IAAyB,EAAE,MAAc,EAAA;QAC1E,OAAO,mBAAmB,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC;KACnD;AAED;;AAEG;IACI,OAAO,4CAA4C,CAAC,oBAA0C,EAAA;AACjG,QAAA,OAAO,eAAe,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;KACzG;AAED;;AAEG;AACI,IAAA,OAAO,uBAAuB,CAAC,MAAyC,EAAE,YAAoB,EAAA;QACjG,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,IAAI,EAAA,EAAI,OAAO,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9F;AAED;;AAEG;IACI,OAAO,QAAQ,CAAC,MAAW,EAAA;QAC9B,OAAO,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;KACxF;AAEO,IAAA,OAAO,qBAAqB,CAAC,IAAS,EAAE,WAAW,EAAA;AACvD,QAAA,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE;AAChC,YAAA,IAAI,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;gBACtC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,OAAO,WAAW,CAAC,QAAQ,CAAC;uBACjG,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE;AACtD,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtE,iBAAA;AAAM,qBAAA,IAAI,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE;AAClD,oBAAA,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChF,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AACJ;;AC5GD;;;AAGG;MACU,mBAAmB,CAAA;AAe5B,IAAA,WAAA,GAAA;QAVQ,IAAW,CAAA,WAAA,GAA6C,EAAE,CAAC;AAW/D,QAAA,KAAK,MAAM,IAAI,IAAI,mBAAmB,CAAC,8BAA8B,EAAE;YACnE,IAAI,mBAAmB,CAAC,8BAA8B,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;gBACzE,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC;AACnF,aAAA;AACJ,SAAA;KACJ;AAdD;;AAEG;IACI,OAAO,gBAAgB,CAAC,oBAA0C,EAAA;QACrE,MAAM,QAAQ,GAAG,eAAe,CAAC,4CAA4C,CAAC,oBAAoB,CAAC,CAAC;AACpG,QAAA,mBAAmB,CAAC,8BAA8B,CAAC,QAAQ,CAAC,GAAG,oBAAoB,CAAC;KACvF;AASD;;AAEG;IACI,mBAAmB,GAAA;QACtB,MAAM,MAAM,GAA2B,EAAE,CAAC;AAC1C,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;YACjC,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;gBACvC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AACD;;AAEG;IACI,uBAAuB,CAAC,IAAyB,EAAE,MAAe,EAAA;QACrE,MAAM,QAAQ,GAAG,eAAe,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE;YACT,OAAO,CAAC,GAAG,CAAC;gBACR,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,gBAAA,OAAO,EAAE,uCAAuC;AAChD,gBAAA,MAAM,EAAE;AACJ,oBAAA,IAAI,EAAE,QAAQ;AACjB,iBAAA;AACD,gBAAA,MAAM,EAAE,iDAAiD;AAC5D,aAAA,CAAC,CAAC;AACN,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AACD;;AAEG;AACI,IAAA,gBAAgB,CAAC,oBAA0C,EAAA;QAC9D,MAAM,QAAQ,GAAG,eAAe,CAAC,4CAA4C,CAAC,oBAAoB,CAAC,CAAC;AACpG,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,oBAAoB,CAAC;KACrD;;AAzDD;;AAEG;AACW,mBAA8B,CAAA,8BAAA,GAA6C,EAAE;;ACT/E,SAAA,iBAAiB,CAAC,GAAG,qBAA6C,EAAA;AAC9E,IAAA,OAAO,UAAU,MAAgB,EAAA;AAC7B,QAAA,qBAAqB,CAAC,OAAO,CAAC,oBAAoB,IAAG;YACjD,MAAM,QAAQ,GAAG,eAAe,CAAC,4CAA4C,CAAC,oBAAoB,CAAC,CAAC;AACpG,YAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE;AACvC,gBAAA,oBAAoB,CAAC,eAAe,GAAc,MAAM,CAAC;AAC5D,aAAA;AACD,YAAA,mBAAmB,CAAC,8BAA8B,CAAC,QAAQ,CAAC,GAAG,oBAAoB,CAAC;AACxF,SAAC,CAAC,CAAC;AACP,KAAC,CAAC;AACN;;ACbA;;AAEG;IACS,wBAIX;AAJD,CAAA,UAAY,uBAAuB,EAAA;AAC/B,IAAA,uBAAA,CAAA,uBAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAiB,CAAA;AACjB,IAAA,uBAAA,CAAA,uBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,IAAA,uBAAA,CAAA,uBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACb,CAAC,EAJW,uBAAuB,KAAvB,uBAAuB,GAIlC,EAAA,CAAA,CAAA;;ACLD;;;AAGG;MAQU,0BAA0B,CAAA;AA2BnC;;AAEG;AACH,IAAA,WAAA,GAAA;;AAEI,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAW,CAAC;KAChD;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KAClC;AAED;;;;AAIG;AACI,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC/C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;AAED;;;;AAIG;AACI,IAAA,iBAAiB,CAAC,EAAkB,EAAA;AACvC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;AAED;;;;AAIG;AACI,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC3C;AAED;;;;AAIG;AACI,IAAA,UAAU,CAAC,KAAa,EAAE,aAAA,GAAyB,KAAK,EAAA;AAC3D,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,aAAa,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,SAAA;KACJ;AAED;;AAEG;IACI,QAAQ,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;;uHAvFQ,0BAA0B,GAAA,CAAA,EAAA,CAAA;AAA1B,mBAAA,0BAAA,CAAA,IAAA,6BAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,IAAA,EAAA,0BAA0B,EAJxB,SAAA,EAAA,CAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA;AACP,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAC,MAAM,0BAA0B,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AACzG,SAAA,CAAA,CAAA,EAAA,CAAA,CAAA;uFAEQ,0BAA0B,EAAA,CAAA;cAPtC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;;AAEP,gBAAA,QAAQ,EAAE,gBAAgB;AAC1B,gBAAA,SAAS,EAAE;AACP,oBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAC,gCAAgC,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AACzG,iBAAA;AACJ,aAAA,CAAA;;;ACQD;;AAEG;AACI,MAAM,kCAAkC,GAAG,IAAI,cAAc,CAAsB,2BAA2B,CAAC;;ACpBtH;;AAEG;MACU,sBAAsB,CAAA;AAC/B;;AAEG;AACH,IAAA,WAAA,GAAA;;KAEC;AAED;;;;;AAKG;AACI,IAAA,QAAQ,CAAC,CAAc,EAAA;;AAE1B,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACnB;AAED;;;AAGG;AACO,IAAA,YAAY,CAAC,MAAwB,EAAA;AAC3C,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACvE,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AACJ;;AC5BD;;AAEG;MACU,oBAAoB,GAAG,IAAI,cAAc,CAA2B,qBAAqB;;ACWtG;;AAEG;AACI,MAAM,0BAA0B,GAAmB;AACtD,IAAA,OAAO,EAAE,mBAAmB;AAC5B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gCAAgC,CAAC;AAC/D,IAAA,KAAK,EAAE,IAAI;CACd,CAAC;AAEK,MAAM,kCAAkC,GAAG,GAAG,CAAC;AAEtD;;;AAGG;AAMG,MAAO,gCAAiC,SAAQ,sBAAsB,CAAA;AA0BxE;;AAEG;AACH,IAAA,WAAA,CAC8D,eAAyC,EAAA;AACnG,QAAA,KAAK,EAAE,CAAC;QADkD,IAAe,CAAA,eAAA,GAAf,eAAe,CAA0B;AAhBvG;;;AAGG;AAEI,QAAA,IAAA,CAAA,mBAAmB,GAAgD,IAAI,YAAY,EAAiC,CAAC;AAE5H;;AAEG;AACI,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAoB,CAAC;KAQnD;AAED;;;;;AAKG;AACI,IAAA,QAAQ,CAAC,CAAc,EAAA;QAC1B,MAAM,WAAW,GAA0B,EAAE,CAAC;AAE9C,QAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE;;AAEnC,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;;YAGvE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;;YAGvC,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AACzD,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,gBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;AACvC,aAAA;;YAGD,IAAI,SAAS,GAAG,kCAAkC,CAAC;AACnD,YAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,IAAI,CAAC,+BAA+B,IAAI,CAAC,EAAE;AACrG,gBAAA,SAAS,GAAG,IAAI,CAAC,+BAA+B,CAAC;AACpD,aAAA;;;;AAKD,YAAA,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CACnC,kBAAkB,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAC/B,KAAK,CAAC,SAAS,CAAC,EAChB,QAAQ,CAAC,MAAM,kBAAkB,CAAC,CAAC,CAC1C,CAAC;AAEF,YAAA,OAAO,QAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,CACjC,GAAG,CAAC,CAAC,cAAc,KAAI;gBACnB,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,EAAoB,EAAE,CAAC,CAAC;;AAEvG,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;gBAG7B,MAAM,MAAM,GAAqB,EAAE,CAAC;;gBAGpC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AAC9B,oBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,oBAAA,IAAI,CAAC,KAAK,IAAI,CAAmB,KAAM,CAAC,KAAK,EAAE;AAC3C,wBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACvB,qBAAA;AACL,iBAAC,CAAC,CAAC;AAEH,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;aACpC,CAAC,CACL,CAAC;AACL,SAAA;AAED,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACnB;;AA9FQ,mBAAA,gCAAA,CAAA,IAAA,GAAA,SAAA,wCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,gCAAgC,uBA8BT,oBAAoB,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA;kHA9B3C,gCAAgC,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,qBAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,+BAAA,EAAA,iCAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAF9B,CAAC,0BAA0B,CAAC,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAE9B,gCAAgC,EAAA,CAAA;cAL5C,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;;AAEP,gBAAA,QAAQ,EAAE,qCAAqC;gBAC/C,SAAS,EAAE,CAAC,0BAA0B,CAAC;AAC1C,aAAA,CAAA;;sBA+BQ,QAAQ;;sBAAI,IAAI;;sBAAI,MAAM;uBAAC,oBAAoB,CAAA;wBArB7C,2BAA2B,EAAA,CAAA;kBAPjC,KAAK;YAUC,+BAA+B,EAAA,CAAA;kBADrC,KAAK;YAQC,mBAAmB,EAAA,CAAA;kBADzB,MAAM;;;AC7DX;;AAEG;IACS,qBAGX;AAHD,CAAA,UAAY,oBAAoB,EAAA;AAC5B,IAAA,oBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,oBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACzB,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,GAG/B,EAAA,CAAA,CAAA,CAAA;AAED,CAAA,UAAc,oBAAoB,EAAA;AAG9B,IAAA,MAAM,qBAAqB,GAAG;AAC1B,QAAA,oBAAoB,CAAC,UAAU;AAC/B,QAAA,oBAAoB,CAAC,QAAQ;KAChC,CAAC;IAEF,SAAS,UAAU,CAAC,KAAa,EAAA;AAC7B,QAAA,MAAM,2BAA2B,GAAG,oBAAoB,CAAC,UAAU,CAAC;AAEpE,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,2BAA2B,CAAC;AACtC,SAAA;AAED,QAAA,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;AAC5B,QAAA,OAAO,qBAAqB,CAAC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,IAAI,2BAA2B,CAAC;KACxH;IACD,SAAgB,gBAAgB,CAAC,KAAe,EAAA;AAC5C,QAAA,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AAC7B,YAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AALe,IAAA,oBAAA,CAAA,gBAAgB,mBAK/B,CAAA;AACL,CAAC,EAxBa,oBAAoB,KAApB,oBAAoB,GAwBjC,EAAA,CAAA,CAAA;;AC5BD;;AAEG;MACU,iBAAiB,CAAA;AAM1B;;AAEG;AACH,IAAA,WAAA,GAAA;AARA;;AAEG;AACO,QAAA,IAAA,CAAA,UAAU,GAAmB,OAAO,CAAC,IAAI,CAAC;;KAOnD;AAED;;;;;AAKG;AACI,IAAA,QAAQ,CAAC,CAAc,EAAA;;AAE1B,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;AACI,IAAA,yBAAyB,CAAC,EAAkB,EAAA;AAC/C,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACxB;AAED;;;AAGG;AACO,IAAA,YAAY,CAAC,MAAwB,EAAA;AAC3C,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACvE,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AACJ;;ACxCD;;AAEG;MACU,cAAc,GAAG,IAAI,cAAc,CAAsB,gBAAgB;;ACUtF;;AAEG;AACI,MAAM,oBAAoB,GAAmB;AAChD,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,2BAA2B,CAAC;AAC1D,IAAA,KAAK,EAAE,IAAI;CACd,CAAC;AAEF;;;AAGG;AAMG,MAAO,2BAA4B,SAAQ,iBAAiB,CAAA;AAc9D;;AAEG;AACH,IAAA,WAAA,CACwD,UAA+B,EAAA;AACnF,QAAA,KAAK,EAAE,CAAC;QAD4C,IAAU,CAAA,UAAA,GAAV,UAAU,CAAqB;AAhBvF;;;AAGG;AAEI,QAAA,IAAA,CAAA,cAAc,GAA2C,IAAI,YAAY,EAA4B,CAAC;AAE7G;;AAEG;AACI,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,OAAO,EAAoB,CAAC;AAQ3C,QAAA,IAAI,UAAU,EAAE;YACZ,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,yBAAyB,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACjF,SAAA;KACJ;AAED;;;;;AAKG;AACI,IAAA,QAAQ,CAAC,CAAc,EAAA;QAC1B,IAAI,MAAM,GAAqB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;;AAEvD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;;QAG7D,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/C,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CACzC,CAAC,MAAM,EAAE,SAAS,KAAI;AAClB,gBAAA,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;aACxD,EACiB,EAAE,CACvB,CAAC;YAEF,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;AAC7C,SAAA;;AAGD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;QAGxB,MAAM,MAAM,GAAqB,EAAE,CAAC;QAEpC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AAC9B,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,KAAK,IAAI,CAAmB,KAAM,CAAC,KAAK,EAAE;AAC3C,gBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACvB,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KACpC;;AA9DQ,mBAAA,2BAAA,CAAA,IAAA,GAAA,SAAA,mCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,2BAA2B,uBAkBJ,cAAc,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA;6GAlBrC,2BAA2B,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAFzB,CAAC,oBAAoB,CAAC,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAExB,2BAA2B,EAAA,CAAA;cALvC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;;AAEP,gBAAA,QAAQ,EAAE,gBAAgB;gBAC1B,SAAS,EAAE,CAAC,oBAAoB,CAAC;AACpC,aAAA,CAAA;;sBAmBQ,QAAQ;;sBAAI,IAAI;;sBAAI,MAAM;uBAAC,cAAc,CAAA;wBAXvC,cAAc,EAAA,CAAA;kBADpB,MAAM;;;ACzBX;;;;;;;;;;;;;AAaG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DG;AAEH;AACM,MAAgB,kBAClB,SAAQ,aAAuB,CAAA;AA4Z/B;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AA3YpB;;AAEG;QAGI,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC;AA0B9B;;AAEG;QAEI,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;QAiP5B,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;AAyHrC,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/F,QAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,kCAAkC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7F,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAEzD,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,0BAA0B,CAAC;AAC3D,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;AACtC,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,EAAU,CAAC;AACzC,QAAA,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC,UAAU,CAAC;AAC7D,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,WAAW,CAAC;;;AAIrD,QAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;;AAG1C,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,kBAAkB,CAAC,QAAQ,EAAE;AACtF,YAAA,OAAO,CAAC,QAAQ,CACZ,uBAAuB,EAAE,CAA2B,wBAAA,EAAA,kBAAkB,CAAC,QAAQ,gCAAgC,kBAAkB,CAAC,QAAQ,CAAA,YAAA,CAAc,CAAC,CAAC;AACjK,SAAA;KACJ;AAhYD;;AAEG;AACH,IAAA,IACW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;IACD,IAAW,WAAW,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;AAgBD;;;AAGG;AACH,IAAA,IACW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;IACD,IAAW,YAAY,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;AAoBD;;;;AAIG;AACH,IAAA,IAAW,QAAQ,GAAA;;QAEf,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;KAC/C;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC7C;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;KAC/C;AAED,IAAA,IAGW,iBAAiB,GAAA;AACxB,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC;KACxD;AAiCD;;;AAGG;AACH,IAAA,IACW,SAAS,GAAA;;AAEhB,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;;QAGjG,MAAM,aAAa,GAAG,sBAAsB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;;AAGlH,QAAA,MAAM,WAAW,GAAG,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC;;AAGhD,QAAA,OAAO,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,GAAG,WAAW,GAAG,SAAS,CAAC;KACtF;AAED;;AAEG;AACH,IAAA,IAAY,gBAAgB,GAAA;QACxB,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,eAAe,CAAC;KAC9E;AAsBD,IAAA,IAAc,SAAS,GAAA;QACnB,MAAM,OAAO,GAAa,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,OAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AACxG,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;KACxH;AAED;;;AAGG;AACH,IAAA,IAAW,KAAK,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KACnC;IACD,IAAW,KAAK,CAAC,KAAa,EAAA;QAC1B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACzC;AAED,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,QAAQ,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,EAAE;KACnE;AAED,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;KACvC;AAgCD;;;AAGG;AACH,IAAA,IAAc,0BAA0B,GAAA;AACpC,QAAA,OAAO,KAAK,CAAC;KAChB;AAKD;;AAEG;AACH,IAAA,IACW,kBAAkB,GAAA;QACzB,MAAM,WAAW,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;AACvE,YAAA,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACtE,QAAA,OAAO,WAAW,KAAK,oBAAoB,CAAC,UAAU,CAAC;KAC1D;AAED;;AAEG;AACH,IAAA,IACW,gBAAgB,GAAA;QACvB,MAAM,WAAW,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;AACvE,YAAA,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACtE,QAAA,OAAO,WAAW,KAAK,oBAAoB,CAAC,QAAQ,CAAC;KACxD;AAoDD;;AAEG;AACH,IAAA,IAAc,mBAAmB,GAAA;AAC7B,QAAA,MAAM,OAAO,GAAgB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QAC5D,OAAO,OAAO,CAAC,WAAW,CAAC;KAC9B;AAsBD;;AAEG;AACH,IAAA,IAAY,WAAW,GAAA;AACnB,QAAA,MAAM,OAAO,GAAgB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QAC5D,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,CAAC,CAAC;AAAE,SAAA;AAC3B,QAAA,OAAO,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;KACxF;AA8CD;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;AAEjB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,CAAA,wCAAA,EAA2C,kBAAkB,CAAC,QAAQ,CAAa,WAAA,CAAA,CAAC,CAAC;AACxG,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;;YAEf,MAAM,IAAI,KAAK,CAAC,CAAA,EAAG,kBAAkB,CAAC,QAAQ,CAA8G,4GAAA,CAAA,CAAC,CAAC;AACjK,SAAA;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,GAAG,MAAK;AAC3C,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AACnC,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAC9C,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC9B,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,GAAG,MAAK;gBAC/C,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AACnC,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAC9C,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;AACzC,iBAAA;AACD,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC9B,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,MAAK;AACnC,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC9B,aAAC,CAAC;AACL,SAAA;;QAGD,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,MAAQ,EAAA,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxG,SAAA;;QAGD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS;;QAE3D,CAAC,IAA8B,KAAO,EAAA,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAC5G,CAAC,CAAC;;AAGH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAwB,KAAI,EAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEjH,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,2BAA2B,EAAE;;YAEzE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,SAAS;;YAErE,CAAC,IAAmC,KAAO,EAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CACvG,CAAC,CAAC;;AAGH,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAwB,KAAI,EAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnI,SAAA;;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,IAAI,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;;QAGrH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;QAGpG,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACtC,SAAA;;QAGD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;;AAG9C,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;;;QAItC,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,mBAAmB,EAAE;;AAEtD,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;;YAGnC,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;aACzC,EAAE,GAAG,CAAC,CAAC;AACX,SAAA;KACJ;AAED;;AAEG;IACI,SAAS,GAAA;QACZ,KAAK,CAAC,SAAS,EAAE,CAAC;;AAElB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACrC,QAAA,IAAI,WAAW,KAAK,IAAI,CAAC,4BAA4B,EAAE;YACnD,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,SAAA;AACD,QAAA,IAAI,CAAC,4BAA4B,GAAG,WAAW,CAAC;KACnD;AAED;;AAEG;IACK,wBAAwB,GAAA;AAC5B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACtC,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YACpC,OAAO;AACV,SAAA;AAED,QAAA,IAAI,OAAO,EAAE;YACT,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,gBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;AACxC,aAAA;YACD,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,gBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACrC,aAAA;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAClC,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;AACtC,YAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACnC,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AACjC,SAAA;KACJ;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE3B,IAAI,OAAO,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,SAAA;QACD,IAAI,OAAO,CAAC,aAAa,EAAE;YACvB,UAAU,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;AACrD,SAAA;KACJ;IAEM,eAAe,GAAA;QAClB,KAAK,CAAC,eAAe,EAAE,CAAC;;QAExB,MAAM,iBAAiB,GAA0B,GAAG,CAAC,eAAe,CAChE,IAAI,CAAC,WAAW,CAAC,aAAa,EAC9B,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,UAAU,CAC5D,CAAC;;AAGF,QAAA,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3G,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,KAAK,CAAC,GAAG,0BAA0B,CAAC,CAAC,SAAS,CAAC,MAAK;AAChD,YAAA,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;YAChE,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACnC,CAAC,CACL,CAAC;;AAGF,QAAA,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACnC;AAED;;;AAGG;IACI,WAAW,GAAA;QACd,KAAK,CAAC,WAAW,EAAE,CAAC;;QAEpB,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACzC,SAAA;KACJ;AAED;;AAEG;IACO,eAAe,GAAA;AACrB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;;AAErC,QAAA,MAAM,WAAW,GAAG,WAAW,IAAI,GAAG,GAAG,oBAAoB,CAAC,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC;AACzG,QAAA,IAAI,IAAI,CAAC,qBAAqB,KAAK,WAAW,EAAE;AAC5C,YAAA,IAAI,CAAC,qBAAqB,GAAG,WAAW,CAAC;AACzC,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YACvC,IAAI,CAAC,yBAAyB,EAAE,CAAC;AACpC,SAAA;KACJ;AAED;;AAEE;IACQ,oBAAoB,GAAA;;KAE7B;AAED;;AAEE;IAEM,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,SAAA;KACJ;AAED;;AAEE;IAEM,yBAAyB,GAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,SAAA;KACJ;AAED;;AAEG;IACI,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACxB;AAED;;AAEG;IACI,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;KACrC;AAED;;AAEG;IACI,eAAe,GAAA;AAClB,QAAA,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACvC;AAED;;AAEG;IACI,mBAAmB,GAAA;QACtB,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;KAChF;AAED;;AAEG;IACI,OAAO,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC7B;AAED;;AAEG;IACI,OAAO,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC7B;AAED;;AAEG;IACI,cAAc,GAAA;AACjB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;KACzC;AAED;;AAEG;IACI,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;KACtC;AAED;;AAEG;IACI,KAAK,GAAA;AACR,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACzE,QAAA,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,SAAA;KACJ;AAED;;;AAGG;AACO,IAAA,sBAAsB,CAAC,QAAiB,EAAA;AAC9C,QAAA,IAAI,QAAQ,EAAE;YACV,MAAM,cAAc,GAAG,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,qBAAqB,CAAC;YACnF,IAAI,IAAI,CAAC,wBAAwB,EAAE;AAC/B,gBAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;AACzC,aAAA;YACD,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC5B,gBAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACtC,aAAA;YACD,IAAI,CAAC,cAAc,EAAE;AACjB,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACnC,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACnC,SAAA;KACJ;AAED;;;AAGG;IACO,aAAa,GAAA;QACnB,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAC9C,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAClC,YAAA,OAAY,EAAE,CAAC;AAClB,SAAA;AAED,QAAA,QAAQ,OAAO,IAAI,CAAC,YAAY;YAC5B,KAAK,QAAQ,EAAE;AACX,gBAAA,OAAY,EAAE,CAAC;AAClB,aAAA;YACD,KAAK,SAAS,EAAE;AACZ,gBAAA,OAAY,KAAK,CAAC;AACrB,aAAA;AACD,YAAA,SAAS;gBACL,OAAO,IAAI,CAAC,YAAY,CAAC;AAC5B,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;;AAE7B,QAAA,OAAO,EAAE,CAAC;KACb;AAED;;;AAGG;AACO,IAAA,aAAa,CAAC,CAAc,EAAA;;AAElC,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;KACjB;AAED;;AAEG;IACO,aAAa,GAAA;QACnB,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AAC/C,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAClC,SAAA;QACD,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAChD,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACnC,SAAA;;QAGD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;KACnE;AAED;;;AAGG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,gBAAgB;AACnB,SAAA,CAAC,CAAC;KACN;AAED;;;AAGG;AACO,IAAA,cAAc,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAChC,SAAA;AAAM,aAAA;YACH,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;AAC1C,aAAA;YACD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7C,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACxC,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACtB,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;AACO,IAAA,eAAe,CAAC,MAAW,EAAA;QACjC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;AAClC,SAAA;KACJ;AAED;;;AAGG;AACO,IAAA,OAAO,CAAC,MAAwB,EAAA;QACtC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;AAED;;;AAGG;AACO,IAAA,YAAY,CAAC,MAAwB,EAAA;QAC3C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;AAED;;;;AAIG;AACK,IAAA,iBAAiB,CAAC,MAAwB,EAAA;QAC9C,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AAC9B,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,YAAA,IAAI,KAAK,IAAsB,KAAM,CAAC,KAAK,EAAE;AACzC,gBAAA,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC/B,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,cAAc,CAAC;KACzB;AAED;;AAEG;IACK,iBAAiB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,uBAAuB,CAAC,KAAK;AAChE,gBAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5E,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAChC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACjC,SAAA;KACJ;AAED;;AAEG;IACO,YAAY,GAAA;QAClB,MAAM,OAAO,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;AAC1D,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;;QAElB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,KAAK,GAAG;AACT,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,OAAO,EAAE,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO;aAC3F,CAAC;YACF,OAAO;AACV,SAAA;;QAGD,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,KAAK,GAAG;AACT,gBAAA,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI,CAAC,cAAc;AACrB,uBAAA,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO;aAC7E,CAAC;YACF,OAAO;AACV,SAAA;;QAGD,MAAM,WAAW,GAAqC,EAAE,CAAC;QACzD,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;;AAGhE,QAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,aAAA;YACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,OAAO;AACV,SAAA;QAED,MAAM,mBAAmB,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,CAAC;;QAEjG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACtB,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,mBAAmB,EAAE;AAC/F,gBAAA,OAAO,CAAC,CAAC;AACZ,aAAA;AACD,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,mBAAmB,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,QAAQ,EAAE;gBAC/F,OAAO,CAAC,CAAC,CAAC;AACb,aAAA;AACD,YAAA,OAAO,CAAC,CAAC;AACb,SAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,WAAW;AAC3B,aAAA,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACxC,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;;AAEX,YAAA,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE;AACrB,gBAAA,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,aAAA;;AAGD,YAAA,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE;AAC3B,gBAAA,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,aAAA;;AAGD,YAAA,OAAO,CAAC,CAAC;AACb,SAAC,CAAC,CAAC;AAEP,QAAA,YAAY,CAAC,IAAI,CAAC,KAAK,IAAG;;;;;;YAMtB,IAAI,KAAK,CAAC,QAAQ,KAAK,uBAAuB,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACjH,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,oBAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9C,iBAAA;AACD,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AACjB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;IAEO,gBAAgB,CAAC,MAAwC,EAAE,MAAwB,EAAA;AACvF,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;YACpC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;AAChC,gBAAA,IAAI,CAAmB,CAAE,CAAC,MAAM,EAAE;AAC9B,oBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACtC,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;AAED;;AAEG;IACO,QAAQ,CAAC,GAAW,EAAE,KAAuB,EAAA;;QAEnD,IAAI,KAAK,KAAK,KAAK;AACZ,eAAA,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAChC,eAAA,CAAE,KAAyB,CAAC,KAAK,KAAK,IAAI,KAAK,OAAO,CAAC,kBAAkB,CAAE,KAAyB,CAAC,OAAO,CAAC,EAAE;AAClH,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,IAAI,cAA+B,CAAC;;AAGpC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,cAAc,GAAG;AACb,gBAAA,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,uBAAuB,CAAC,KAAK;AACvC,gBAAA,OAAO,EAAU,KAAK;aACzB,CAAC;AACL,SAAA;AAAM,aAAA;YAEH,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAElD,IAAI,CAAC,cAAc,EAAE;;AAGjB,gBAAA,cAAc,GAAG,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;;gBAGpD,IAAI,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AACjD,oBAAA,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC;AAChC,iBAAA;;gBAGD,IAAI,OAAO,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;AACpD,oBAAA,cAAc,CAAC,OAAO,GAAG,CAAsB,mBAAA,EAAA,GAAG,EAAE,CAAC;AACxD,iBAAA;;AAGD,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,OAAO,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE;AACtG,oBAAA,cAAc,CAAC,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC;AAC3D,iBAAA;AACJ,aAAA;AAEJ,SAAA;AACD,QAAA,OAAO,cAAc,CAAC;KACzB;AAED;;AAEG;IACO,eAAe,CAAC,GAAW,EAAE,KAAU,EAAA;QAC7C,MAAM,QAAQ,GAAa,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,OAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AACzG,QAAA,IAAI,OAAe,CAAC;;AAGpB,QAAA,QAAQ,GAAG;YACP,KAAK,KAAK,EAAE;AACR,gBAAA,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChE,MAAM;AACT,aAAA;YACD,KAAK,KAAK,EAAE;AACR,gBAAA,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChE,MAAM;AACT,aAAA;YACD,KAAK,UAAU,EAAE;AACb,gBAAA,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1D,MAAM;AACT,aAAA;YACD,KAAK,OAAO,EAAE;AACV,gBAAA,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvD,MAAM;AACT,aAAA;YACD,KAAK,WAAW,EAAE;AACd,gBAAA,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;gBACjF,MAAM;AACT,aAAA;YACD,KAAK,WAAW,EAAE;AACd,gBAAA,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;gBACjF,MAAM;AACT,aAAA;YACD,KAAK,SAAS,EAAE;AACZ,gBAAA,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;gBAChF,MAAM;AACT,aAAA;AACD,YAAA,SAAS;gBACL,MAAM;AACT,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE;AACrC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,IAAI,KAAK,GAAG,KAAK,CAAC;AAClB,QAAA,IAAI,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC;AAE7C,QAAA,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;;AAEpC,YAAA,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACtB,YAAA,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AACjF,YAAA,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAChF,SAAA;QAED,OAAO;AACH,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,OAAO,EAAE,OAAO;SACnB,CAAC;KACL;AAED;;;;;AAKG;IACO,yBAAyB,GAAA;QAC/B,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AAC9C,YAAA,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;AAC3B,SAAA;QACD,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACxC,YAAA,OAAO,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;AACjC,SAAA;QAED,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;KAC/C;;AApmCD;;;AAGG;AACoB,kBAAQ,CAAA,QAAA,GAAG,gBAAgB,CAAC;uGARjC,kBAAkB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oGAAlB,kBAAkB,EAAA,cAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;oCA+DtB,WAAW,EAAA,CAAA,CAAA,CAAA;;;;;;;;AAwkBzB,UAAA,CAAA;AAAC,IAAAP,OAAK,EAAE;;;;AAKP,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AAAC,IAAAA,OAAK,EAAE;;;;AAKP,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,CAAA;uFAtpBiB,kBAAkB,EAAA,CAAA;cAFvC,SAAS;2DAgBC,IAAI,EAAA,CAAA;kBADV,KAAK;YAQC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAQC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAOC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAOC,SAAS,EAAA,CAAA;kBADf,KAAK;YAOC,WAAW,EAAA,CAAA;kBADjB,KAAK;YAOC,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,mBAAmB,EAAA,CAAA;kBADzB,KAAK;YAOC,eAAe,EAAA,CAAA;kBADrB,YAAY;mBAAC,WAAW,CAAA;YAOd,WAAW,EAAA,CAAA;kBADrB,KAAK;YAWC,OAAO,EAAA,CAAA;kBAFb,KAAK;;kBACL,WAAW;mBAAC,kCAAkC,CAAA;YAKxC,OAAO,EAAA,CAAA;kBAFb,KAAK;;kBACL,WAAW;mBAAC,8BAA8B,CAAA;YAOpC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAQK,YAAY,EAAA,CAAA;kBADtB,KAAK;YAaC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,cAAc,EAAA,CAAA;kBADpB,KAAK;YA+BK,iBAAiB,EAAA,CAAA;kBAH3B,WAAW;mBAAC,oBAAoB,CAAA;;kBAChC,WAAW;mBAAC,eAAe,CAAA;;kBAC3B,WAAW;mBAAC,oBAAoB,CAAA;YAU1B,aAAa,EAAA,CAAA;kBADnB,KAAK;mBAAC,UAAU,CAAA;YAOV,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,cAAc,EAAA,CAAA;kBADpB,KAAK;YAOC,cAAc,EAAA,CAAA;kBADpB,KAAK;YAOC,KAAK,EAAA,CAAA;kBADX,KAAK;YAQK,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,kBAAkB,CAAA;YA8FxB,mBAAmB,EAAA,CAAA;kBADzB,KAAK;YAKC,MAAM,EAAA,CAAA;kBAFZ,MAAM;YAaA,gBAAgB,EAAA,CAAA;kBADtB,WAAW;mBAAC,yCAAyC,CAAA;YAO3C,kBAAkB,EAAA,CAAA;kBAD5B,WAAW;mBAAC,6CAA6C,CAAA;YAW/C,gBAAgB,EAAA,CAAA;kBAD1B,WAAW;mBAAC,2CAA2C,CAAA;YAYjD,WAAW,EAAA,CAAA;kBADjB,KAAK;YA4CC,kBAAkB,EAAA,CAAA;kBADxB,KAAK;AAwRE,SAAA,CAAA,EAAA,oBAAoB,MAUpB,yBAAyB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA,CAAA;AAydrC;;;AAGG;AAEH;AACM,MAAgB,6BAAsC,SAAQ,kBAAmC,CAAA;;AAAjF,mBAAA,6BAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,0CAAA,CAAA,CAAA,OAAA,SAAA,qCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,0CAAA,KAAA,0CAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,6BAA6B,SAA7B,6BAA6B,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;+GAA7B,6BAA6B,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAA7B,6BAA6B,EAAA,CAAA;cAFlD,SAAS;;;;;ACrsCV;;;AAGG;MAKU,wBAAwB,CAAA;AAyDjC,IAAA,WAAA,CAAoB,UAAsB,EAAU,aAA+B,EACvE,wBAAkD,EAAkC,MAAgC,EAAA;QAD5G,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAU,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;QACvE,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;QAAkC,IAAM,CAAA,MAAA,GAAN,MAAM,CAA0B;QAzDxH,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAStB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAM3C,QAAA,IAAA,CAAA,kBAAkB,GAAgD,IAAI,YAAY,EAAiC,CAAC;AAoCpH,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAO,CAAC;AAGrC,QAAA,IAAA,CAAA,iBAAiB,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAIpE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;KACnE;AA3CD,IAAA,IACW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;IACD,IAAW,cAAc,CAAC,KAAqB,EAAA;AAC3C,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB;;AAEI;YAEJ,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChC,SAAA;KACJ;AAED,IAAA,IACW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IACD,IAAW,IAAI,CAAC,KAAU,EAAA;AACtB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC;AAC9C,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAClD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC7E,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAC7B,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5F,SAAA;KACJ;IAaM,QAAQ,GAAA;QACX,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7B;IAEM,OAAO,GAAA;QACV,OAAwC,IAAI,CAAC,kBAAkB,CAAC,QAAS,CAAC,OAAO,EAAE,CAAC;KACvF;IAEM,OAAO,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,kBAAkB,IAAqC,IAAI,CAAC,kBAAkB,CAAC,QAAS,CAAC,OAAO,EAAE,CAAC;KAClH;IACM,cAAc,GAAA;AACgB,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAS,CAAC,cAAc,EAAE,CAAC;KACvF;IACM,iBAAiB,CAAC,MAAc,EAAE,IAAS,EAAA;AAC9C,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAChE,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACzB,OAAO,MAAM,CAAC,MAAM,EAAE;AAClB,gBAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC1B,aAAA;AACD,YAAA,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,SAAA;KACJ;IACM,2BAA2B,GAAA;QAC9B,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;KACtE;IAEO,qBAAqB,GAAA;AACzB,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACpC,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AACxC,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACjC,YAAA,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC;YAClC,IAAI,CAAC,MAAM,EAAE;gBACT,MAAM,GAAG,YAAY,CAAC;AACzB,aAAA;AACJ,SAAA;QACD,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;AAClE,YAAA,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAG;gBAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC5C,oBAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;AACD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9E,QAAA,IAAI,YAAY,EAAE;AACd,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;AAC7G,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC;YACxC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;YAC7E,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YACtE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAClD,YAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/D,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,gBAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1E,aAAA;YACD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,8BAA8B,GAAG,IAAI,CAAC;YACvE,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,EAAE;gBAC/C,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAG;AACzD,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,iBAAC,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;KACJ;;mHAlIQ,wBAAwB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,wBAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,uBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;kCAOD,gBAAgB,CAAA,CAAA;;;;;QC7BpD,EAAsB,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;;uFDsBT,wBAAwB,EAAA,CAAA;cAJpC,SAAS;2BACI,uBAAuB,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA;;sBA6DgC,QAAQ;;sBAAI,QAAQ;wBAlD7E,SAAS,EAAA,CAAA;kBADhB,SAAS;mBAAC,WAAW,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAMzD,OAAO,EAAA,CAAA;kBADb,KAAK;YAIC,kBAAkB,EAAA,CAAA;kBADxB,MAAM;YAII,cAAc,EAAA,CAAA;kBADxB,KAAK;YAgBK,IAAI,EAAA,CAAA;kBADd,KAAK;YAmBC,UAAU,EAAA,CAAA;kBADhB,MAAM;YAIA,iBAAiB,EAAA,CAAA;kBADvB,MAAM;;AAgFX;MACa,8BAA8B,CAAA;AAF3C,IAAA,WAAA,GAAA;QAQY,IAAgC,CAAA,gCAAA,GAAG,KAAK,CAAC;AAEzC,QAAA,IAAA,CAAA,OAAO,GAAY,OAAO,CAAC,UAAU,EAAW,CAAC;QAEjD,IAAc,CAAA,cAAA,GAAa,EAAE,CAAC;AAkB/B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAO,CAAC;AAGrC,QAAA,IAAA,CAAA,kBAAkB,GAAgD,IAAI,YAAY,EAAiC,CAAC;AA2J9H,KAAA;AAxKG,IAAA,IACW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IACD,IAAW,IAAI,CAAC,KAAU,EAAA;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;AAUD,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IACD,IAAW,OAAO,CAAC,KAAyB,EAAA;AACxC,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAChC;IAEM,QAAQ,GAAA;QACX,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;AACjD,SAAC,CAAC,CAAC;KACN;IAEM,OAAO,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,kBAAkB,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC;KAC7G;IAEM,qCAAqC,GAAA;AACxC,QAAA,OAAO,EAAE,IAAI,CAAC,gCAAgC;AACvC,eAAA,IAAI,CAAC,8BAA8B,CAAC,cAAc,CAAC,qBAAqB;eACxE,IAAI,CAAC,8BAA8B,CAAC,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;KAC5F;IAEM,OAAO,GAAA;QACV,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;KACvE;IACM,cAAc,GAAA;QACjB,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAAC;AAC5C,SAAA;KACJ;AACM,IAAA,cAAc,CAAC,UAAkB,EAAA;AACpC,QAAA,IAAI,MAAW,CAAC;AAChB,QAAA,IAAI,UAAU,EAAE;YACZ,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;gBAChD,IAAI;oBACA,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACjG,MAAM,kBAAkB,GAA0C,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;oBAE1G,IAAI,MAAM,IAAI,kBAAkB,EAAE;wBAC9B,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1D,qBAAA;AAAM,yBAAA;wBACH,IAAI,UAAU,KAAK,MAAM,EAAE;4BACvB,MAAM,GAAG,IAAI,CAAC;AACjB,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AAAC,gBAAA,OAAO,CAAC,EAAE;;AAER,oBAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACjB,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;AAChD,wBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACxC,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;;AAGG;AACI,IAAA,sBAAsB,CAAC,IAAY,EAAA;AACtC,QAAA,IAAI,IAAI,EAAE;YACN,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AAC5G,gBAAA,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC;AAC5B,aAAA;YAED,MAAM,GAAG,GAAG,IAAI,CAAC;YACjB,MAAM,YAAY,GAAa,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/C,YAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,gBAAA,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,aAAA;YAED,IAAI,UAAU,GAAG,GAAG,CAAC;AACrB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAA,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE;oBACjD,MAAM;AACT,iBAAA;AACJ,aAAA;AACD,YAAA,OAAO,UAAU,CAAC;AACrB,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,eAAe,CAAC,IAAY,EAAA;QAC/B,MAAM,eAAe,GAAG,MAAK;;AAE7B,SAAC,CAAC;AAEF,QAAA,IAAI,gBAA0B,CAAC;QAE/B,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC1C,YAAA,IAAI,IAAI,EAAE;gBACN,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpF,gBAAA,IAAI,KAAK,EAAE;AACP,oBAAA,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpE,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/B,OAAO,CAAC,GAAG,CAAC;wBACR,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,wBAAA,OAAO,EAAE,wBAAwB;AACjC,wBAAA,MAAM,EAAE;AACJ,4BAAA,MAAM,EAAE,IAAI;AACf,yBAAA;AACD,wBAAA,MAAM,EAAE,gDAAgD;AAC3D,qBAAA,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AACJ,SAAA;QAED,OAAO,gBAAgB,IAAI,eAAe,CAAC;KAC9C;AAEM,IAAA,QAAQ,CAAC,IAAY,EAAA;QACxB,IAAI,MAAM,GAAG,EAAE,CAAC;AAChB,QAAA,IAAI,IAAI,EAAE;YACN,MAAM,SAAS,GAAG,8BAA8B,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACzE,YAAA,IAAI,SAAS,EAAE;gBACX,MAAM,GAAG,SAAS,CAAC;AACtB,aAAA;AAAM,iBAAA;gBACH,IAAI,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AACtE,oBAAA,MAAM,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAClG,oBAAA,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAC9C,iBAAA;qBAAM,IAAI,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE;oBACpF,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAC3F,iBAAA;gBACD,IAAI,CAAC,MAAM,EAAE;AACT,oBAAA,MAAM,GAAG,oCAAoC,GAAG,IAAI,GAAG,GAAG,CAAC;oBAE3D,OAAO,CAAC,GAAG,CAAC;wBACR,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,wBAAA,OAAO,EAAE,MAAM;AACf,wBAAA,MAAM,EAAE;AACJ,4BAAA,MAAM,EAAE,IAAI;AACf,yBAAA;wBACD,MAAM,EAAE,qDAAqD,GAAG,IAAI;AACvE,qBAAA,CAAC,CAAC;AACN,iBAAA;AAED,gBAAA,8BAA8B,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACnE,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;IAEM,iBAAiB,CAAC,MAAc,EAAE,IAAU,EAAA;AAC/C,QAAA,IAAI,CAAC,8BAA8B,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KAC/F;;AAxLa,8BAAiB,CAAA,iBAAA,GAAG,oBAAoB,CAAC;AACzC,8BAAwB,CAAA,wBAAA,GAAG,gBAAgB,CAAC;AAE3C,8BAAiB,CAAA,iBAAA,GAA8B,EAAE,CAAC;+HAJxD,8BAA8B,GAAA,CAAA,EAAA,CAAA;gHAA9B,8BAA8B,EAAA,SAAA,EAAA,SAAA,oCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;uFAA9B,8BAA8B,EAAA,CAAA;cAF1C,SAAS;gBAkBC,kBAAkB,EAAA,CAAA;kBADxB,SAAS;mBAAC,OAAO,CAAA;YAIP,IAAI,EAAA,CAAA;kBADd,KAAK;YAUC,UAAU,EAAA,CAAA;kBADhB,MAAM;YAIA,kBAAkB,EAAA,CAAA;kBADxB,MAAM;;AA+JX;AACM,MAAO,wCAAyC,SAAQ,8BAA8B,CAAA;;AAA/E,mBAAA,wCAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,qDAAA,CAAA,CAAA,OAAA,SAAA,gDAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,qDAAA,KAAA,qDAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,wCAAwC,SAAxC,wCAAwC,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;0HAAxC,wCAAwC,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAAxC,wCAAwC,EAAA,CAAA;cAFpD,SAAS;gBAIC,cAAc,EAAA,CAAA;kBADpB,KAAK;;AAKV;AACM,MAAO,wCAAyC,SAAQ,8BAA8B,CAAA;IAOjF,OAAO,GAAA;QACV,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AACzG,YAAA,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;AAC5B,SAAA;QAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAC/D,YAAA,IAAI,MAAM,EAAE;AACR,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACjD,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;wBACnC,MAAM,GAAG,KAAK,CAAC;wBACf,MAAM;AACT,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;IAEM,OAAO,GAAA;QACV,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,aAAa,CAAC,EAAE;AAC5H,YAAA,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;AAC5B,SAAA;QACD,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;QAC/D,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjD,gBAAA,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;oBAClC,MAAM,GAAG,IAAI,CAAC;oBACd,MAAM;AACT,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;IACM,cAAc,GAAA;QACjB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAC/D,QAAA,IAAI,mBAAmB,EAAE;AACrB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjD,gBAAA,mBAAmB,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;AAC3C,aAAA;AACJ,SAAA;KACJ;;AApDQ,mBAAA,wCAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,qDAAA,CAAA,CAAA,OAAA,SAAA,gDAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,qDAAA,KAAA,qDAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,wCAAwC,SAAxC,wCAAwC,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;0HAAxC,wCAAwC,EAAA,SAAA,EAAA,SAAA,8CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;uBACnC,wBAAwB,EAAA,CAAA,CAAA,CAAA;;;;;uFAD7B,wCAAwC,EAAA,CAAA;cAFpD,SAAS;gBAII,mBAAmB,EAAA,CAAA;kBAD5B,YAAY;mBAAC,wBAAwB,CAAA;YAI/B,cAAc,EAAA,CAAA;kBADpB,KAAK;;AAoDV;AACM,MAAO,uCAAwC,SAAQ,8BAA8B,CAAA;IAEvF,IACY,mBAAmB,CAAC,KAA0C,EAAA;AACtE,QAAA,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;KAC5C;IAKM,OAAO,GAAA;AACV,QAAA,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;AAE7B,QAAA,IAAI,MAAM,EAAE;YACR,MAAM,mBAAmB,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,CAAC;AACvE,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACjD,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;oBACnC,MAAM,GAAG,KAAK,CAAC;oBACf,MAAM;AACT,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;IAEM,OAAO,GAAA;AACV,QAAA,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,mBAAmB,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,CAAC;AACvE,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjD,gBAAA,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;oBAClC,MAAM,GAAG,IAAI,CAAC;oBACd,MAAM;AACT,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;IACM,cAAc,GAAA;QACjB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAC/D,QAAA,IAAI,mBAAmB,EAAE;AACrB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjD,gBAAA,mBAAmB,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;AAC3C,aAAA;AACJ,SAAA;KACJ;;AA/CQ,mBAAA,uCAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,oDAAA,CAAA,CAAA,OAAA,SAAA,+CAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,oDAAA,KAAA,oDAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,uCAAuC,SAAvC,uCAAuC,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;yHAAvC,uCAAuC,EAAA,SAAA,EAAA,SAAA,6CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;uBAElC,wBAAwB,EAAA,CAAA,CAAA,CAAA;;;;;uFAF7B,uCAAuC,EAAA,CAAA;cAFnD,SAAS;gBAKM,mBAAmB,EAAA,CAAA;kBAD9B,YAAY;mBAAC,wBAAwB,CAAA;YAM/B,cAAc,EAAA,CAAA;kBADpB,KAAK;;;ME3ZG,0BAA0B,CAAA;AAInC,IAAA,WAAA,CAAmB,WAA6B,EAAA;QAA7B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;AAC5C,QAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;KACzB;;uHANQ,0BAA0B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,EAAA,CAAA;4GAA1B,0BAA0B,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;uFAA1B,0BAA0B,EAAA,CAAA;cAHtC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,wBAAwB;AACrC,aAAA,CAAA;8DAGU,IAAI,EAAA,CAAA;kBADV,KAAK;;;ACLV;;;;AAIG;MAKU,wBAAwB,CAAA;AAEjC,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,aAAa,GAAA;QACpB,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED;;AAEG;AACH,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,CAAC,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;KAC3D;AAgED;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;AACtB,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAChF,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAC5E,QAAA,OAAO,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC;KAClE;AAED;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;AACtB,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAChF,OAAO,IAAI,CAAC,sBAAsB,CAAC;AACtC,SAAA;QAED,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;AACjD,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC;AAC9C,SAAA;AAED,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAC5E,QAAA,OAAO,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC;KAClE;AAED;;AAEG;IACI,QAAQ,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC;KACxC;;mHAnHQ,wBAAwB,GAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,YAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,uCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;oCA2DnB,WAAW,EAAA,CAAA,CAAA,CAAA;oCAHR,0BAA0B,EAAA,CAAA,CAAA,CAAA;;;;;;uFAxDlC,wBAAwB,EAAA,CAAA;cAJpC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,YAAY;AACtB,gBAAA,QAAQ,EAAE,EAAE;AACf,aAAA,CAAA;gBAyBU,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,WAAW,EAAA,CAAA;kBADjB,KAAK;YAOC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAOC,MAAM,EAAA,CAAA;kBADZ,KAAK;YAIE,YAAY,EAAA,CAAA;kBADnB,eAAe;mBAAC,0BAA0B,CAAA;YAInC,sBAAsB,EAAA,CAAA;kBAD7B,YAAY;mBAAC,WAAW,CAAA;YASlB,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAOC,cAAc,EAAA,CAAA;kBADpB,KAAK;;;AC3EV;;AAEG;AAEH;AACM,MAAgB,yBAClB,SAAQ,kBAAoC,CAAA;AA6F5C;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;AAxEpB;;AAEG;AAEI,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,SAAS,EAA4B,CAAC;AAqEvD,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,SAAS,EAA4B,CAAC;QACjE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAC5C;AAlED;;AAEG;AACH,IAAA,IAAW,oBAAoB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO;eACpC,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;KACjG;AAED;;AAEG;AACH,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;KAClE;AAkBD;;AAEG;AACH,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;IAED,IAAW,YAAY,CAAC,KAAa,EAAA;;AAEjC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,oBAAoB,EAAE;AACrC,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACrC,SAAA;KACJ;AAwBD;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzC;AAED;;AAEG;IACI,kBAAkB,GAAA;QACrB,KAAK,CAAC,kBAAkB,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxG;AAED;;;AAGG;AACI,IAAA,qBAAqB,CAAC,KAAa,EAAA;AACtC,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9G,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE;AACzC,YAAA,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC;AACjC,SAAA;AAAM,aAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AACzC,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC3B,SAAA;KACJ;AAED;;AAEG;IACI,YAAY,CAAC,MAAgC,EAAE,MAAe,EAAA;AACjE,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,MAAM,CAAC,QAAQ,EAAE;AAC3C,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AACD,QAAA,IAAI,KAAK,GAAQ,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACvB,oBAAA,KAAK,GAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,iBAAA;AAAM,qBAAA;oBACH,KAAK,GAAQ,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACxB,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACvB,KAAK,GAAQ,EAAE,CAAC;AACnB,iBAAA;AAAM,qBAAA;AACH,oBAAA,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;oBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACvC,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,KAAK,GAAG,IAAI,CAAC;AAChB,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;IACI,gBAAgB,GAAA;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE;;YAEf,OAAO,CAAC,CAAC,CAAC;AACb,SAAA;AAED,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAEvC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAA,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;gBAC7B,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM;AACT,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;AAEG;AACI,IAAA,mBAAmB,CAAC,KAAa,EAAE,MAAM,GAAG,IAAI,EAAA;QACnD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC3C,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C;AAED;;;AAGG;IACI,gBAAgB,GAAA;QACnB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpE,YAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7B,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;AAGG;IACI,oBAAoB,GAAA;AACvB,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACnD,YAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7B,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;AAGG;AACI,IAAA,gBAAgB,CAAC,MAAA,GAAkB,CAAC,IAAI,CAAC,oBAAoB,EAAA;AAChE,QAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,MAAM,EAAE;AACtC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;KACpE;AAED;;;AAGG;IACI,gBAAgB,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;;AAEhB,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,OAAO,KAAI;AAC7D,YAAA,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC9B,gBAAA,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrC,aAAA;AACD,YAAA,OAAO,aAAa,CAAC;SACxB,EAAE,EAAE,CAAC,CAAC;AAEP,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;IACI,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;;AAEhB,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAQ,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;IACI,WAAW,CAAC,KAAa,EAAE,MAAgC,EAAA;QAC9D,QAAQ,IAAI,CAAC,OAAO;YAChB,KAAK,OAAO,EAAE;gBAAE,OAAO,MAAM,CAAC,KAAK,CAAC;AAAE,aAAA;YACtC,KAAK,OAAO,EAAE;gBAAE,OAAO,MAAM,CAAC,KAAK,CAAC;AAAE,aAAA;YACtC,KAAK,OAAO,EAAE;AAAE,gBAAA,OAAO,KAAK,CAAC;AAAE,aAAA;AAC/B,YAAA,SAAS;AACL,gBAAA,OAAO,MAAM,CAAC;AACjB,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;AACO,IAAA,uBAAuB,CAAC,OAAe,EAAA;QAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;;YAEf,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC5B,YAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAClC,SAAA;AACD,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC9B;AAED;;AAEG;IAEK,mBAAmB,GAAA;AACvB,QAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,iBAAiB,EAAE,CAAC;QACjG,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACvC,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,KAAI;AACpD,YAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC9C,YAAA,OAAO,mBAAmB,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAC9D,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,cAAc,EAAE;AAClB,YAAA,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;AAClC,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,SAAA;AACD,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;KAClC;AAED;;AAEG;AACO,IAAA,cAAc,CAAC,KAAa,EAAA;AAClC,QAAA,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;KACpC;AAED;;AAEG;AACO,IAAA,oBAAoB,CAAC,KAAa,EAAA;AACxC,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;AAEtC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,OAAO;AACV,SAAA;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACvB,OAAO;AACV,aAAA;AACJ,SAAA;;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AAC1B,YAAA,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ;AAC7B,mBAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;kBAC/E,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,MAAM,CAAC,UAAU,EAAE;AACnB,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrC,aAAA;AACL,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7F;AACD;;AAEG;IACO,0BAA0B,GAAA;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,CAAC;QACtE,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;AAChE,gBAAA,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;aAC7E,CAAC,CAAC,CAAC;AACP,SAAA;KACJ;;qHAjYiB,yBAAyB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;2GAAzB,yBAAyB,EAAA,cAAA,EAAA,SAAA,wCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;oCA+B1B,wBAAwB,EAAA,CAAA,CAAA,CAAA;;;;;AAqSzC,UAAA,CAAA;AAAC,IAAA7C,UAAQ,EAAE;;;;AAaV,CAAA,EAAA,yBAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;uFAjViB,yBAAyB,EAAA,CAAA;cAF9C,SAAS;2DAgBC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAOC,aAAa,EAAA,CAAA;kBADnB,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,eAAe;mBAAC,wBAAwB,CAAA;YA0ClC,UAAU,EAAA,CAAA;kBADhB,KAAK;YA6PE,mBAAmB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA,CAAA;AA+D/B;;;;AAIG;AAEH;AACM,MAAgB,oCAA6C,SAAQ,yBAA0C,CAAA;AAcjH;;AAEG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;KACvF;;2IApBiB,oCAAoC,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;sHAApC,oCAAoC,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAApC,oCAAoC,EAAA,CAAA;cAFzD,SAAS;2DAQC,cAAc,EAAA,CAAA;kBADpB,KAAK;YAOC,cAAc,EAAA,CAAA;kBADpB,KAAK;;;AC/ZJ,MAAO,6CACT,SAAQ,2BAA4F,CAAA;AASpG;;;AAGG;AACH,IAAA,WAAA,CAAY,aAA+B,EAAA;QACvC,KAAK,CAAC,aAAa,CAAC,CAAC;KACxB;AAED;;AAEG;IACO,aAAa,GAAA;QACnB,OAAO;YACH,SAAS,EAAE,IAAI,CAAC,IAAI;YACpB,WAAW,EAAE,IAAI,CAAC,WAAW;SAChC,CAAC;KACL;;6JA1BQ,6CAA6C,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;+HAA7C,6CAA6C,EAAA,SAAA,EAAA,CAAA,CAAA,4BAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,sDAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAA7C,6CAA6C,EAAA,CAAA;cAJzD,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,4BAA4B;AACtC,gBAAA,QAAQ,EAAE,EAAE;AACf,aAAA,CAAA;mEASU,WAAW,EAAA,CAAA;kBADjB,KAAK;;;;ICnBV,EAC6G,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,CAAA,CAAA;;IAD3D,EAAgC,CAAA,UAAA,CAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;;;IAM9E,EAAgE,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA5E,EAA8B,CAAA,WAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,YAAA,CAAA,CAAA;IAA4B,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAX,EAAW,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;;IAC3E,EAAwF,CAAA,SAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;;;IAA5B,EAAuB,CAAA,UAAA,CAAA,aAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;IAAhF,EAA8B,CAAA,WAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,YAAA,CAAA,CAAA;;;IAJrC,EAAsJ,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClJ,EAAsG,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACtG,EAA4D,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAChF,EAAkF,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAClF,EAAwF,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAC5F,EAAM,CAAA,YAAA,EAAA,CAAA;;;AALgB,IAAA,EAAA,CAAA,WAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAA0B,CAAA,iBAAA,EAAA,MAAA,CAAA,KAAA,CAAA,SAAA,GAAA,GAAA,GAAA,MAAA,CAAA,KAAA,CAAA,YAAA,CAAA,CAAA;IACW,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IACrE,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,WAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,SAAA,CAAA,CAAA;IAA2B,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,iBAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;IACnC,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IAC3B,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;;ACH9D;;;;AAIG;AAKG,MAAO,wBAAyB,SAAQ,iBAAiB,CAAA;AA0L3D,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAnLpB;;AAEG;QAGI,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAQ9B;;AAEG;QAEI,IAAI,CAAA,IAAA,GAAG,OAAO,CAAC;AAEtB;;AAEG;QACI,IAAS,CAAA,SAAA,GAAW,IAAI,CAAC;KA8J/B;AA1LD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,0BAA0B,CAAC;KACrC;AAyBD;;AAEG;AACH,IAAA,IAAW,YAAY,GAAA;AACnB,QAAA,OAAO,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC;KAChE;AAED;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACjD;AAED;;AAEG;AACH,IAAA,IACW,QAAQ,GAAA;AACf,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;KAC/B;AAED;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;KAC5C;AAED;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;KAClD;AAED;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;KACxD;AAED;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;KACpG;AAED;;AAEG;AACH,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;KAC7E;AAED;;AAEG;AACH,IAAA,IACW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;KAC9C;AAED;;;AAGG;AACH,IAAA,IACW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ;eACb,CAAC,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,uBAAuB,CAAC,KAAK;oBACjD,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;KAClD;AAED;;;AAGG;AACH,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,uBAAuB,CAAC,OAAO,CAAC;KACtG;AAED;;;AAGG;AACH,IAAA,IACW,eAAe,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,uBAAuB,CAAC,aAAa,CAAC;KAC5G;AAED;;;AAGG;AACH,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;KAC7D;AAED;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QACvF,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,OAAO,UAAU,CAAC,OAAO,CAAC;AAC7B,SAAA;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE;YACvB,OAAO,UAAU,CAAC,OAAO,CAAC;AAC7B,SAAA;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE;YACvB,OAAO,UAAU,CAAC,IAAI,CAAC;AAC1B,SAAA;aAAM,IAAI,IAAI,CAAC,eAAe,EAAE;YAC7B,OAAO,UAAU,CAAC,IAAI,CAAC;AAC1B,SAAA;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YACrB,OAAO,UAAU,CAAC,KAAK,CAAC;AAC3B,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;KACJ;AAED;;AAEG;AACH,IAAA,IAAW,UAAU,GAAA;QACjB,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,WAAW,GAAG,mBAAmB,CAAC;AACrC,SAAA;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE;YACvB,WAAW,GAAG,mBAAmB,CAAC;AACrC,SAAA;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE;YACvB,WAAW,GAAG,mBAAmB,CAAC;AACrC,SAAA;aAAM,IAAI,IAAI,CAAC,eAAe,EAAE;YAC7B,WAAW,GAAG,yBAAyB,CAAC;AAC3C,SAAA;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YACrB,WAAW,GAAG,iBAAiB,CAAC;AACnC,SAAA;AAAM,aAAA;YACH,WAAW,GAAG,EAAE,CAAC;AACpB,SAAA;QAED,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,WAAW,GAAG,WAAW,GAAG,CAAA,EAAG,WAAW,CAAK,EAAA,EAAA,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;AACpF,SAAA;QAED,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,WAAW,IAAI,WAAW,GAAG,CAAA,EAAG,WAAW,CAAA,qBAAA,CAAuB,GAAG,sBAAsB,CAAC;AAC/F,SAAA;AAED,QAAA,OAAO,WAAW,CAAC;KACtB;AAMD;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;KACpB;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,OAAO,CAAC,KAAK,EAAE;YACf,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC7C,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7E,aAAA;YAED,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AACzC,aAAA;iBAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AACrB,gBAAA,IAAI,CAAC,SAAS,GAAG,6BAA6B,CAAC;AAClD,aAAA;iBAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AACvB,gBAAA,IAAI,CAAC,SAAS,GAAG,uBAAuB,CAAC;AAC5C,aAAA;iBAAM,IAAI,IAAI,CAAC,eAAe,EAAE;AAC7B,gBAAA,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC;AACzC,aAAA;iBAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AACvB,gBAAA,IAAI,CAAC,SAAS,GAAG,yBAAyB,CAAC;AAC9C,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,WAAW;AACd,SAAA,CAAC,CAAC;KACN;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,SAAS,EAAE,EAAE;SAChB,CAAC;KACL;;mHA/OQ,wBAAwB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,sBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,qCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;QDbrC,EAC6G,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,CAAA,CAAA;QAE7G,EAKM,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;QAR2B,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAG1C,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA;;uFCUP,wBAAwB,EAAA,CAAA;cAJpC,SAAS;2BACI,iCAAiC,EAAA,QAAA,EAAA,ixBAAA,EAAA,CAAA;2DAgBpC,cAAc,EAAA,CAAA;kBAFpB,WAAW;mBAAC,4BAA4B,CAAA;;kBACxC,KAAK;YAOC,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,IAAI,EAAA,CAAA;kBADV,KAAK;YA0BK,QAAQ,EAAA,CAAA;kBADlB,WAAW;mBAAC,uBAAuB,CAAA;YA4CzB,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,yBAAyB,CAAA;YAU3B,OAAO,EAAA,CAAA;kBADjB,WAAW;mBAAC,uBAAuB,CAAA;YAazB,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,yBAAyB,CAAA;YAU3B,eAAe,EAAA,CAAA;kBADzB,WAAW;mBAAC,+BAA+B,CAAA;YAUjC,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,yBAAyB,CAAA;;;AC5I1C;;;;AAIG;AAKG,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;AA0CpD;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEhB,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;KAC5D;AAhDD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,mBAAmB,CAAC;KAC9B;AAED;;AAEG;AACH,IAAA,IAIW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;IACD,IAAW,QAAQ,CAAC,KAAc,EAAA;;;;AAI9B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC1C,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,IAAI,IAAI,CAAC;;AAGtC,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,WAAW,EAAE;AACvC,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AAC1C,SAAA;KACJ;IAsBM,eAAe,GAAA;QAClB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACjE,SAAA;KACJ;;qGAzDQ,iBAAiB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;mGAAjB,iBAAiB,EAAA,SAAA,EAAA,CAAA,CAAA,UAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;uFAAjB,iBAAiB,EAAA,CAAA;cAJ7B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;;AAEP,gBAAA,QAAQ,EAAE,UAAU;AACvB,aAAA,CAAA;2DAiBc,QAAQ,EAAA,CAAA;kBAJlB,KAAK;;kBACL,WAAW;mBAAC,oBAAoB,CAAA;;kBAChC,WAAW;mBAAC,eAAe,CAAA;;kBAC3B,WAAW;mBAAC,oBAAoB,CAAA;;;;ICxBjC,EAAqF,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;IAApC,EAA4B,CAAA,UAAA,CAAA,aAAA,EAAA,MAAA,CAAA,YAAA,CAAA,CAAA;;;IAC7E,EAA+B,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAqB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA5B,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,iBAAA,CAAA,MAAA,CAAA,SAAA,CAAA,KAAA,CAAA,CAAA;;;IACpD,EACgD,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAC9C,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;;;IAFP,EAA6C,CAAA,WAAA,CAAA,iBAAA,EAAA,CAAA,MAAA,CAAA,SAAA,CAAA,QAAA,CAAA,CAAA;IAC7C,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,IAAA,CAAA,UAAA,CAAA,QAAA,EAAA,GAAA,CAAA,CAAA;;;IACA,EAG6E,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;;IAD3E,EAAgD,CAAA,UAAA,CAAA,YAAA,EAAA,MAAA,CAAA,SAAA,CAAA,uBAAA,CAAA,CAAA,OAAA,EAAA,MAAA,CAAA,SAAA,CAAA,aAAA,CAAA,sDAAA,CAAA,aAAA,EAAA,GAAA,CAAA,CAAA;;;IAElD,EACoH,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;IAbtH,EAC+E,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;IAC7E,EAAqF,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACrF,EAA2D,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAC3D,EAGS,CAAA,UAAA,CAAA,CAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IACT,EAG6E,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAC7E,EACoH,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACtH,EAAQ,CAAA,YAAA,EAAA,CAAA;;;IAbN,EAA4E,CAAA,WAAA,CAAA,sCAAA,EAAA,MAAA,CAAA,SAAA,CAAA,mBAAA,CAAA,CAAA;IAClD,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,eAAA,CAAA,CAAA;IACxC,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,eAAA,CAAA,CAAA;IACpB,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,SAAA,CAAA,QAAA,CAAA,CAAA;IAI1B,EAAqD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArD,EAAqD,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,SAAA,CAAA,QAAA,IAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,CAAA;IAIrD,EAAoD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApD,EAAoD,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,SAAA,CAAA,QAAA,IAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,CAAA;;;IAK7D,EAC2I,CAAA,SAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;;;IAA3F,EAA+D,CAAA,WAAA,CAAA,6BAAA,EAAA,MAAA,CAAA,SAAA,CAAA,eAAA,CAAA,CAAA;;;ACZ3G,MAAO,wBAAmC,SAAQ,iBAAiB,CAAA;AAmCrE;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnB;AAxCD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,0BAA0B,CAAC;KACrC;AAaD;;;AAGG;AACF,IAAA,IAAW,eAAe,GAAA;;;;AAIvB,QAAA,IAAU,IAAI,CAAC,SAAU,CAAC,aAAa,KAAK,4BAA4B,EAAE;YACrE,IAAI,CAAC,YAAY,GAAS,IAAI,CAAC,SAAU,CAAC,YAAY,CAAC;AACvD,YAAA,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;AAC9B,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;IAWQ,qBAAqB,GAAA;QAC3B,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CACvC,uBAAuB,CAC1B,CAAC;KACL;;mHAhDQ,wBAAwB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,uBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,kBAAA,EAAAyC,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,uCAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,kFAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,oGAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,aAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,sBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QDRrC,EAA2C,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAEzC,EAcQ,CAAA,UAAA,CAAA,CAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;QAGR,EAC2I,CAAA,UAAA,CAAA,CAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;QAE3I,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;QAC3B,EAAM,CAAA,YAAA,EAAA,CAAA;;QArBI,EAA2D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA3D,EAA2D,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,CAAA,mBAAA,EAAA,IAAA,CAAA,GAAA,CAAA,SAAA,CAAA,OAAA,CAAA,CAAA;QAiB3D,EAA6F,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA7F,EAA6F,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,CAAA,OAAA,IAAA,GAAA,CAAA,SAAA,CAAA,kBAAA,IAAA,CAAA,GAAA,CAAA,SAAA,CAAA,mBAAA,EAAA,CAAA,CAAA;;uFCX1F,wBAAwB,EAAA,CAAA;cAJpC,SAAS;2BACI,uBAAuB,EAAA,QAAA,EAAA,otDAAA,EAAA,CAAA;2DAgB1B,SAAS,EAAA,CAAA;kBADf,KAAK;;;;ICME,EAEa,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;;;;AAFgD,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,OAAA,CAAA,KAAA,CAAoB,yCAAA,CAAA,UAAA,EAAA,OAAA,CAAA,QAAA,CAAA,CAAA;;;;IAMzE,EAEwB,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;AADpB,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,SAAA,gIAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAU,gGAC7B,CADkF,EAAA,CAAA,CAAA;IAEnE,EAAwB,CAAA,YAAA,EAAA,CAAA;;;;AAHD,IAAA,EAAA,CAAA,UAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,2BAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAA0D,+EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;;IAHzF,EAC2B,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;IACvB,EAKc,CAAA,UAAA,CAAA,CAAA,EAAA,oFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,CAAA,CAAA;IAClB,EAAa,CAAA,YAAA,EAAA,CAAA;;;;AAR+C,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,OAAA,CAAA,KAAA,CAAoB,yCAAA,CAAA,UAAA,EAAA,OAAA,CAAA,QAAA,CAAA,CAAA;;;IAJpF,EAA2C,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACvC,EAEa,CAAA,UAAA,CAAA,CAAA,EAAA,sEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;IACb,EAQa,CAAA,UAAA,CAAA,CAAA,EAAA,sEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;IACjB,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;IAZE,EAA8C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9C,EAA8C,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,2BAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA,CAAA;IAG9C,EAA6C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7C,EAA6C,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,2BAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA,CAAA;;;;;AC3BlE,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAgF,YAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;IAEtB,EAAW,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,yEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAA2B,CAAA,iBAAA,CAAA,MAAA,EAAA,CAAA,CAAC,CAAC,CAAA,IAAC,CAEnF,QAAA,EAAA,SAAA,wEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAkB,CAAA,gBAAA,EAAA,CAAA,CAFiE,EAAA,CAAA,CAAA;IAA/F,EAG4F,CAAA,YAAA,EAAA,CAAA;IAC5F,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAkB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAClD,EAAyE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAwB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,EAAA,CAAA;;;IALhF,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA9B,IAAA,EAAA,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,iBAAA,CAA8B,wCAAA,CAAA,UAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IACnD,EAAkC,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,KAAA,CAAA,4BAAA,CAAA,6CAAA,CAAA,eAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAGX,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,iBAAA,CAAA,MAAA,CAAA,cAAA,CAAA,CAAA;IACtC,EAAyC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzC,EAAyC,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,4BAAA,CAAA,CAAA;IAA2B,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,iBAAA,CAAA,MAAA,CAAA,gBAAA,EAAA,CAAA,CAAA;;;IAenG,EACyB,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAAA,CAAA;IACvB,EAC6B,CAAA,SAAA,CAAA,CAAA,EAAA,4BAAA,EAAA,EAAA,CAAA,CAAA;IAC/B,EAAW,CAAA,YAAA,EAAA,CAAA;;;;;;IAJ8B,EAAuE,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,iBAAA,IAAA,CAAA,SAAA,CAAA,UAAA,IAAA,SAAA,CAAA,QAAA,CAAA,CAAA;IAElF,EAAmC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAnC,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,SAAA,CAAA,eAAA,CAAmC,mBAAA,CAAA,aAAA,EAAA,IAAA,CAAA,CAAA;;;;IAdnE,EAAyD,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;AACvD,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAgD,YAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAEK,EAAW,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,kFAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,IAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,uCAA4B,CAAA,CAAA,EAAA,CAAC,2OAE7E,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,YAAA,CAAA,SAAA,EAAA,CAAA,SAAA,CAAA,UAAA,CAAwC,CAAA,CAFqC,EAAA,CAAA,CAAA;IAAzF,EAIoD,CAAA,YAAA,EAAA,CAAA;IACpD,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAqB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;IAEvD,EAAoE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAyB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;IAErG,EAIW,CAAA,UAAA,CAAA,CAAA,EAAA,oEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAAA,CAAA;IACb,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;IAdc,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAzB,IAAA,EAAA,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,QAAA,GAAA,IAAA,CAAyB,iCAAA,CAAA,UAAA,EAAA,MAAA,CAAA,iBAAA,IAAA,SAAA,CAAA,QAAA,CAAA,CAAA;IAC9C,EAAqC,CAAA,WAAA,CAAA,YAAA,EAAA,SAAA,CAAA,QAAA,EAAA,CAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,KAAA,CAAA,mBAAA,GAAA,IAAA,CAAA,CAAA,cAAA,EAAA,SAAA,CAAA,UAAA,CAAA,CAAA,eAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA,aAAA,EAAA,MAAA,CAAA,eAAA,CAAA,SAAA,CAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IAId,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,iBAAA,CAAA,SAAA,CAAA,QAAA,EAAA,CAAA,CAAA;IAE3C,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,mBAAA,GAAA,IAAA,CAAA,CAAA;IAA2B,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,iBAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,CAAA,CAAA;IAEpF,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,SAAA,CAAA,eAAA,CAAA,CAAA;;;IAvB3C,EAAmF,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACjF,EASM,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACN,EAiBe,CAAA,UAAA,CAAA,CAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACjB,EAAM,CAAA,YAAA,EAAA,CAAA;;;IA5BE,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,QAAA,IAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAUJ,EAAY,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAZ,EAAY,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;ADAjD;AA8BA;AACM,MAAO,iCAAkC,SAAQ,wCAAwC,CAAA;AAE3F,IAAA,IAAW,OAAO,GAAA;QACd,IAAI,MAAM,GAAU,EAAE,CAAC;AACvB,QAAA,MAAM,aAAa,GAAU,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;AACpG,QAAA,MAAM,cAAc,GAAU,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAEpG,QAAA,IAAI,aAAa,EAAE;AACf,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACzC,SAAA;AACD,QAAA,IAAI,cAAc,EAAE;AAChB,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAEM,IAAA,OAAO,gBAAgB,GAAA;QAC1B,mBAAmB,CAAC,gBAAgB,CAAC;YACjC,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,WAAW,EAAE,yDAAyD;AACtE,YAAA,eAAe,EAAE,iCAAiC;AACrD,SAAA,CAAC,CAAC;KACN;AAEM,IAAA,2BAA2B,CAAC,eAAuB,EAAA;AACtD,QAAA,MAAM,aAAa,GAAyB,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAC1H,QAAA,IAAI,aAAa,EAAE;YACf,MAAM,YAAY,GACQ,eAAe,CAAC,uBAAuB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;AAClG,YAAA,OAAO,YAAY,CAAC;AACvB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,GAAA;QACV,IAAI,MAAM,GAAG,IAAI,CAAC;AAElB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YAChE,MAAM,GAAG,KAAK,CAAC;AAClB,SAAA;AAED,QAAA,IAAI,MAAM,EAAE;YACR,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAC/D,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,gBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC/C,MAAM,mCAAmC,GACrC,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACxF,oBAAA,IAAI,mCAAmC,EAAE;AACrC,wBAAA,MAAM,GAAG,mCAAmC,CAAC,OAAO,EAAE,CAAC;wBACvD,IAAI,CAAC,MAAM,EAAE;4BACT,MAAM;AACT,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;;AA5DQ,mBAAA,iCAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,8CAAA,CAAA,CAAA,OAAA,SAAA,yCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,8CAAA,KAAA,8CAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,iCAAiC,SAAjC,iCAAiC,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;mHAAjC,iCAAiC,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,WAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,YAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,0CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QA5B1C,EASK,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AATmC,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,kFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,GAAA,MAAA,CAAA,EAAA,CAAkB,iIAIpC,GAAgD,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,MAAA,CAAQ,IAJpB,CAKS,qBAAA,EAAA,SAAA,wFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAA6D,QAAQ,CAL9E,EAAA,CAAA,CAAA;QAUtD,EAae,CAAA,UAAA,CAAA,CAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACnB,EAAiB,CAAA,YAAA,EAAA,CAAA;;QAxBuB,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,IAAA,CAAA,iDAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,QAAA,CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,WAAA,CAAA,CAAA,iCAAA,CAAA,UAAA,EAAA,CAAA,CAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,UAAA,EAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,IAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,CAAA,CAAA,6BAAA,EAAA,GAAA,CAAA,qCAAA,EAAA,CAAA,CAAA,iCAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,CAAA;QAUvB,EAAU,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAV,EAAU,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;4JA2KpC,2BAA2B,EAAAY,wBAAA,EAAAC,0BAAA,EAAAC,2BAAA,EAAAC,gCAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAzJ3B,iCAAiC,EAAA,CAAA;cA9B7C,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,IAAA,CAAA;AACJ,aAAA,CAAA;;AAiED;;AAEG;AAwFI,IAAM,2BAA2B,GAAjC,MAAM,2BAAoC,SAAQ,oCAA8C,CAAA;AAyBnG;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;AAtBpB;;AAEG;QACa,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;QAGzB,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;KAiBtC;AA9BD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,6BAA6B,CAAC;KACxC;AAUD;;AAEG;AACH,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAC3C;AAWD;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC;AAES,IAAA,cAAc,CAAC,KAAU,EAAA;AAC/B,QAAA,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;gBAC1B,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACpF,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAEM,YAAY,CAAC,MAAgC,EAAE,MAAe,EAAA;QACjE,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,MAAM,KAAK,GAAQ,IAAI,CAAC,KAAK,CAAC;AAC9B,YAAA,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,EAAE;AAC9B,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AAED,YAAA,IAAI,MAAM,EAAE;gBACR,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpC,aAAA;AAAM,iBAAA;AACH,gBAAA,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAChE,aAAA;AAED,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,YAAA,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC;AAE3B,YAAA,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC1C,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAM,aAAA;YACH,OAAO,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,SAAA;KACJ;AAEM,IAAA,gBAAgB,CAAC,MAAA,GAAkB,CAAC,IAAI,CAAC,oBAAoB,EAAA;QAChE,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,MAAM,EAAE;AACtC,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;;AAEhB,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACD,YAAA,MAAM,KAAK,GAAQ,IAAI,CAAC,KAAK,CAAC;AAE9B,YAAA,KAAK,CAAC,OAAO,GAAG,MAAM,GAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,OAAO,KAAI;AACzE,gBAAA,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC9B,oBAAA,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrC,iBAAA;AACD,gBAAA,OAAO,aAAa,CAAC;AACzB,aAAC,EAAE,EAAE,CAAC,GAAQ,EAAE,CAAC;AAEjB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAEnB,YAAA,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC1C,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACzC,SAAA;KACJ;IAEM,aAAa,CAAC,KAAc,EAAE,IAAa,EAAA;AAC9C,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AACnC,SAAA;AAAM,aAAA,IAAI,IAAI,EAAE;AACb,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;AAClC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAES,IAAA,oBAAoB,CAAC,KAAU,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC/B,YAAA,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACrC,SAAA;KACJ;AAED;;AAEG;IACI,iBAAiB,CAAC,KAAoB,EAAE,KAAa,EAAA;AACxD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5C,OAAO;AACV,SAAA;QAED,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,SAAS,GAAW,IAAI,CAAC;QAC7B,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AACvC,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AACrC,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,QAAQ,EAAE,CAAC;AACd,SAAA;QACD,QAAQ,KAAK,CAAC,OAAO;AACjB,YAAA,KAAK,OAAO,CAAC,IAAI,EAAE;gBACf,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,KAAK,IAAI,CAAC,EAAE;oBACZ,SAAS,GAAG,CAAC,CAAC;AACjB,iBAAA;gBACD,MAAM;AACT,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,GAAG,EAAE;gBACd,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,KAAK,IAAI,QAAQ,EAAE;oBACnB,SAAS,GAAG,QAAQ,CAAC;AACxB,iBAAA;gBACD,MAAM;AACT,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,OAAO,EAAE;gBAClB,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,KAAK,IAAI,CAAC,EAAE;AACZ,oBAAA,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACzB,iBAAA;gBACD,MAAM;AACT,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,SAAS,EAAE;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,KAAK,IAAI,QAAQ,EAAE;AACnB,oBAAA,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACzB,iBAAA;gBACD,MAAM;AACT,aAAA;YACD,SAAS,MAAM;AAClB,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AAC5B,YAAA,IAAI,QAA0B,CAAC;YAC/B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,IAAI,SAAS,KAAK,CAAC,EAAE;AACxD,gBAAA,QAAQ,GAAqB,QAAQ,CAAC,cAAc,CAAC,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAA,CAAE,CAAC,CAAC;AAC3F,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AACrC,oBAAA,SAAS,EAAE,CAAC;AACf,iBAAA;AACD,gBAAA,QAAQ,GAAqB,QAAQ,CAAC,cAAc,CAAC,CAAG,EAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA,EAAG,SAAS,CAAA,CAAE,CAAC,CAAC;AAC9F,aAAA;AACD,YAAA,IAAI,QAAQ,EAAE;gBACV,QAAQ,CAAC,KAAK,EAAE,CAAC;AACpB,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,OAAO,EAAE;YACT,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;AAC3B,SAAA;KACJ;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,mBAAmB,EAAE,EAAE;AACvB,YAAA,iBAAiB,EAAE,EAAE;AACrB,YAAA,4BAA4B,EAAE,EAAE;AAChC,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;AAEM,IAAA,eAAe,CAAC,MAAc,EAAA;QACjC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACpD;AAEM,IAAA,gBAAgB,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAChC,QAAA,IAAI,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,YAAY,EAAE,CAAC;AAClB,SAAA;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;KACxG;AAED;;;AAGG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;QAE7B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvC,gBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7B,aAAA;YAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACtD,gBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7B,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5B;;yHAvOQ,2BAA2B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;6GAA3B,2BAA2B,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,WAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,wCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;QCpMxC,EAAiE,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QAC/D,EA6BM,CAAA,UAAA,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACN,EAA6D,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;QAhCD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QACjC,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QA8BK,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;ADqK1B,2BAA2B,GAAA,UAAA,CAAA;AAvFvC,IAAA,iBAAiB,CAAC;QACf,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,WAAW,EAAE,yDAAyD;AACtE,QAAA,eAAe,EAAE,iCAAiC;AAClD,QAAA,0BAA0B,EAAE;AACH,YAAA;gBACjB,IAAI,EAAE,mBAAmB,CAAC,KAAK;AAC/B,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE,EACR;AACD,gBAAA,IAAI,EAAE;oBACF,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,QAAQ,EAAE,KAAK;AAClB,iBAAA;AACJ,aAAA;AACqB,YAAA;gBAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,UAAU,EAAE;AACc,oBAAA;wBAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,IAAI,EAAE,4BAA4B;AAClC,wBAAA,UAAU,EAAE,EAAE;AACjB,qBAAA;AACqB,oBAAA;wBAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,IAAI,EAAE,4BAA4B;AAClC,wBAAA,UAAU,EAAE,EAAE;AACjB,qBAAA;AACqB,oBAAA;wBAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,IAAI,EAAE,4BAA4B;AAClC,wBAAA,UAAU,EAAE,EAAE;AACjB,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,gBAAgB,EAAE;AACO,YAAA;gBACjB,IAAI,EAAE,mBAAmB,CAAC,KAAK;AAC/B,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,KAAK,EAAE,6FAA6F;AACpG,gBAAA,IAAI,EAAwB;oBACxB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,UAAU,EAAE;AACR,wBAAA;4BACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4BAAA,MAAM,EAAE,wBAAwB;AAChC,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,KAAK,EAAE,qFAAqF;AAC5F,4BAAA,QAAQ,EAAE,IAAI;AACjB,yBAAA;AACD,wBAAA;4BACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4BAAA,MAAM,EAAE,SAAS;AACjB,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,KAAK,EAAE,qFAAqF;AAC5F,4BAAA,QAAQ,EAAE,IAAI;AACjB,yBAAA;AACJ,qBAAA;AACD,oBAAA,OAAO,EAAE;AACL,wBAAA,WAAW,EAAE,CAAC;AACjB,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,KAAK,EAAE,8FAA8F;AACxG,aAAA;AACJ,SAAA;KACJ,CAAC;qCAkCgB,QAAQ,CAAA,CAAA;AA7Bb,CAAA,EAAA,2BAA2B,CAwOvC,CAAA;uFAxOY,2BAA2B,EAAA,CAAA;cAJvC,SAAS;2BACI,kCAAkC,EAAA,QAAA,EAAA,8xEAAA,EAAA,CAAA;2DAkBrC,uBAAuB,EAAA,CAAA;kBAD7B,KAAK;YAOK,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,iBAAiB,CAAA;;;;IEtNhC,EAAwE,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,CAAA;;;;;IAItE,EACqD,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IADoB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,gFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAa,CAAA,WAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAE9F,EAEO,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACP,EAAsD,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAkC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAI,EAAA,CAAA;;;IAFtF,EAAwF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxF,EAAwF,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAf,MAAA,EAAA,MAAA,CAAA,UAAA,EAAA,EAAA,CAAA,MAAA,CAAA,UAAA,EAAA,CAAA,CAAA,CAAA;IAExC,EAAkC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlC,EAAkC,CAAA,iBAAA,CAAA,MAAA,CAAA,QAAA,CAAA,MAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA,CAAA;;;IAE1F,EACsE,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAkC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAAtC,EAAkC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlC,EAAkC,CAAA,iBAAA,CAAA,MAAA,CAAA,QAAA,CAAA,MAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA,CAAA;;;IACxG,EAAoG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAClG,EAA6C,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAAjD,EAA6C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7C,EAA6C,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,QAAA,CAAA,MAAA,CAAA,cAAA,CAAA,OAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;;;IAOzC,EAIiE,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,CAAA;AADM,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,SAAA,+IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAU,yEACtF,CADkH,EAAA,CAAA,CAAA;IAE7G,EAAwB,CAAA,YAAA,EAAA,CAAA;;;;;;IAHD,EAAgH,CAAA,WAAA,CAAA,iCAAA,EAAA,KAAA,KAAA,OAAA,CAAA,cAAA,CAAA,OAAA,IAAA,OAAA,CAAA,cAAA,CAAA,OAAA,CAAA,WAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAChH,IAAA,EAAA,CAAA,UAAA,CAAA,gBAAA,EAAA,WAAA,CAA2B,4BAAA,CAAA,MAAA,EAAA,OAAA,CAAA,IAAA,IAAA,OAAA,CAAA,IAAA,CAAA,WAAA,CAAA,IAAA,CAAA,CAAA,CAAA;IAC3B,EAAyC,CAAA,WAAA,CAAA,oBAAA,EAAA,WAAA,CAAA,IAAA,CAAA,CAAA;;;IALlE,EAAmF,CAAA,cAAA,CAAA,CAAA,EAAA,iBAAA,CAAA,CAAA;IACjF,EAKwB,CAAA,UAAA,CAAA,CAAA,EAAA,mGAAA,EAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,CAAA;IAC1B,EAAkB,CAAA,YAAA,EAAA,CAAA;;;;IANQ,EAA4G,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5G,EAA4G,CAAA,UAAA,CAAA,MAAA,EAAA,EAAA,WAAA,CAAA,MAAA,IAAA,YAAA,IAAA,WAAA,CAAA,aAAA,IAAA,MAAA,CAAA,cAAA,CAAA,WAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA;;;IAS1I,EAA4G,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAC1G,EAA0D,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA9D,EAA0D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1D,EAA0D,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,QAAA,CAAA,MAAA,CAAA,cAAA,CAAA,OAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;;IA9B9D,EAEsC,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAAA,CAAA;IACpC,EAMI,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IACJ,EAC4G,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAC5G,EACmD,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AACnD,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA8E,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;IAE1E,EAEwB,CAAA,SAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,CAAA;IACxB,EAOkB,CAAA,UAAA,CAAA,CAAA,EAAA,2EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA;AACpB,IAAA,EAAA,CAAA,YAAA,EAAa,EAAA,CAAA;IAEf,EACgE,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAClE,EAAW,CAAA,YAAA,EAAA,CAAA;;;IA9BD,EAAoG,CAAA,UAAA,CAAA,aAAA,EAAA,MAAA,CAAA,cAAA,CAAA,iBAAA,IAAA,MAAA,CAAA,cAAA,CAAA,MAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA;IAExG,EAAmE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnE,EAAmE,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,EAAA,IAAA,MAAA,CAAA,cAAA,CAAA,KAAA,IAAA,MAAA,CAAA,aAAA,EAAA,CAAA,CAAA;IAOnE,EAAoE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApE,EAAoE,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,EAAA,IAAA,MAAA,CAAA,cAAA,CAAA,KAAA,IAAA,CAAA,MAAA,CAAA,aAAA,EAAA,CAAA,CAAA;IAEpE,EAA+D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/D,EAA+D,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,cAAA,CAAA,OAAA,IAAA,MAAA,CAAA,cAAA,CAAA,OAAA,CAAA,QAAA,CAAA,CAAA;IAE7B,EAAuC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvC,EAAuC,CAAA,WAAA,CAAA,iBAAA,EAAA,CAAA,MAAA,CAAA,UAAA,EAAA,CAAA,CAAA;IAC/D,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAvB,IAAA,EAAA,CAAA,UAAA,CAAA,mBAAA,EAAA,CAAA,CAAuB,CAAA,qBAAA,EAAA,EAAA,CAAA,CAAA;IAEV,EAA+E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/E,EAA+E,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,cAAA,CAAA,OAAA,IAAA,MAAA,CAAA,cAAA,CAAA,OAAA,CAAA,WAAA,IAAA,CAAA,CAAA,CAAA;IAEhE,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9B,EAA8B,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,cAAA,CAAA,UAAA,CAAA,CAAA;IAUpE,EAA4E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5E,EAA4E,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,cAAA,CAAA,OAAA,IAAA,MAAA,CAAA,cAAA,CAAA,OAAA,CAAA,qBAAA,CAAA,CAAA;;ACvB9E,MAAO,qCAAsC,SAAQ,wCAAwC,CAAA;AAGxF,IAAA,OAAO,gBAAgB,GAAA;QAC1B,mBAAmB,CAAC,gBAAgB,CAAC;YACjC,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,WAAW,EAAE,4FAA4F;kBACnG,iDAAiD;AACvD,YAAA,eAAe,EAAE,qCAAqC;AACtD,YAAA,gBAAgB,EAAE;AACd,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,wBAAwB;AAChC,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,KAAK,EAAE,wBAAwB;AAClC,iBAAA;AACD,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,wBAAwB;AAChC,oBAAA,IAAI,EAAE,uBAAuB;AAC7B,oBAAA,KAAK,EAAE,sCAAsC;AAChD,iBAAA;AACD,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,KAAK,EAAE,8BAA8B;AACxC,iBAAA;AACD,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,KAAK,EAAE,8FAA8F;AACrG,oBAAA,YAAY,EAAE,CAAC;AAClB,iBAAA;AACD,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,OAAO;AACjC,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,KAAK,EAAE,6FAA6F;AACvG,iBAAA;AACqB,gBAAA;oBAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,KAAK,EAAE,8FAA8F;AACrG,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,UAAU,EAAE;AACR,wBAAA;4BACI,IAAI,EAAE,mBAAmB,CAAC,OAAO;AACjC,4BAAA,MAAM,EAAE,UAAU;AAClB,4BAAA,IAAI,EAAE,KAAK;AACX,4BAAA,KAAK,EAAE,sFAAsF;AAC7F,4BAAA,QAAQ,EAAE,KAAK;AACf,4BAAA,OAAO,EAAE,EACR;AACJ,yBAAA;AACD,wBAAA;4BACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4BAAA,MAAM,EAAE,UAAU;AAClB,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,KAAK,EAAE,wFAAwF;AAC/F,4BAAA,QAAQ,EAAE,KAAK;AACf,4BAAA,YAAY,EAAE,WAAW;AACzB,4BAAA,OAAO,EAAE;AACL,gCAAA,KAAK,EAAE;AACH,oCAAA;AACI,wCAAA,KAAK,EAAE,4FAA4F;AACnG,wCAAA,KAAK,EAAE,WAAW;AACrB,qCAAA;AACD,oCAAA;AACI,wCAAA,KAAK,EAAE,2FAA2F;AAClG,wCAAA,KAAK,EAAE,UAAU;AACpB,qCAAA;AACJ,iCAAA;AACJ,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA,0BAA0B,EAAE;AACxB,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACpB,iBAAA;AACJ,aAAA;AACJ,SAAA,CAAC,CAAC;KACN;IAEM,OAAO,GAAA;AACV,QAAA,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAElB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAChB,YAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB;mBAC7D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;AAClE,YAAA,IAAI,uBAAuB,EAAE;gBACzB,MAAM,YAAY,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxD,gBAAA,IAAI,YAAY,EAAE;oBACd,IAAI,CAAC,KAAK,GAAG;AACT,wBAAA,OAAO,EAAE,YAAY;qBACxB,CAAC;oBACF,MAAM,GAAG,KAAK,CAAC;AAClB,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;IAEM,gBAAgB,GAAA;AACnB,QAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KACnF;IAEM,aAAa,GAAA;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC;KAChI;IAEM,UAAU,GAAA;AACb,QAAA,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;KACnG;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK;AACzC,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,KAAK,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC;AAC/F,SAAA;KACJ;IAEM,sBAAsB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa;eACxE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KACzE;;AAtIQ,mBAAA,qCAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,kDAAA,CAAA,CAAA,OAAA,SAAA,6CAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,kDAAA,KAAA,kDAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,qCAAqC,SAArC,qCAAqC,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;uHAArC,qCAAqC,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,cAAA,EAAA,CAAA,EAAA,aAAA,CAAA,EAAA,CAAA,OAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,4DAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,iCAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,8CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDTlD,EAC0G,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACxG,EAAwE,CAAA,UAAA,CAAA,CAAA,EAAA,kEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,CAAA,CAAA;QACxE,EA+BW,CAAA,UAAA,CAAA,CAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,EAAA,EAAA,UAAA,EAAA,CAAA,CAAA,CAAA;QACb,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAA6D,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;;AApC5B,QAAA,EAAA,CAAA,WAAA,CAAA,sBAAA,EAAA,GAAA,CAAA,sBAAA,EAAA,CAAuD,iDAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,sBAAA,EAAA,CAAA,CAAA;QAElE,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,sBAAA,EAAA,CAAA,CAAA;QACvC,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA/B,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,sBAAA,EAAA,CAAA,CAAA;QAiCtB,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;uFC3BxB,qCAAqC,EAAA,CAAA;cAHjD,SAAS;;;;;ICHF,EAAwE,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,CAAA;;;;;IAEpE,EACsD,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IADmB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAa,CAAA,WAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAE5F,EAEO,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACP,EAAsD,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAkC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAI,EAAA,CAAA;;;IAFxF,EAAwF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxF,EAAwF,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,MAAA,EAAA,MAAA,CAAA,UAAA,EAAA,EAAA,CAAA,MAAA,CAAA,UAAA,EAAA,CAAA,CAAA,CAAA;IAEtC,EAAkC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlC,EAAkC,CAAA,iBAAA,CAAA,MAAA,CAAA,QAAA,CAAA,MAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA,CAAA;;;IAE5F,EACuE,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAkC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAAtC,EAAkC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlC,EAAkC,CAAA,iBAAA,CAAA,MAAA,CAAA,QAAA,CAAA,MAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA,CAAA;;;;IAO7F,EAI8C,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,CAAA;AADM,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,SAAA,6HAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAU,yEACjF,CAD6G,EAAA,CAAA,CAAA;IAE1F,EAAwB,CAAA,YAAA,EAAA,CAAA;;;;;;IAHpB,EAAgH,CAAA,WAAA,CAAA,iCAAA,EAAA,IAAA,KAAA,MAAA,CAAA,cAAA,CAAA,OAAA,IAAA,MAAA,CAAA,cAAA,CAAA,OAAA,CAAA,WAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAChH,IAAA,EAAA,CAAA,UAAA,CAAA,gBAAA,EAAA,WAAA,CAA2B,2BAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,IAAA,MAAA,CAAA,IAAA,CAAA,WAAA,CAAA,IAAA,CAAA,CAAA,CAAA;IAC3B,EAAyC,CAAA,WAAA,CAAA,oBAAA,EAAA,WAAA,CAAA,IAAA,CAAA,CAAA;;;IALjD,EAAmF,CAAA,cAAA,CAAA,CAAA,EAAA,iBAAA,CAAA,CAAA;IAC/E,EAKwB,CAAA,UAAA,CAAA,CAAA,EAAA,iFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,CAAA;IAC5B,EAAkB,CAAA,YAAA,EAAA,CAAA;;;;IALT,EAAyE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzE,EAAyE,CAAA,UAAA,CAAA,MAAA,EAAA,EAAA,WAAA,CAAA,aAAA,IAAA,MAAA,CAAA,cAAA,CAAA,WAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA;;;IAjB9F,EAAuC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IACnC,EAMI,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IACJ,EAC6G,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AAC7G,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA8B,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;IAEtB,EAEwB,CAAA,SAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;IACxB,EAOkB,CAAA,UAAA,CAAA,CAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;AACtB,IAAA,EAAA,CAAA,YAAA,EAAa,EAAA,EAAA,CAAA;;;IAtBb,EAAmE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnE,EAAmE,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,EAAA,IAAA,MAAA,CAAA,cAAA,CAAA,KAAA,IAAA,MAAA,CAAA,aAAA,EAAA,CAAA,CAAA;IAOnE,EAAoE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApE,EAAoE,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,EAAA,IAAA,MAAA,CAAA,cAAA,CAAA,KAAA,IAAA,CAAA,MAAA,CAAA,aAAA,EAAA,CAAA,CAAA;IAEnE,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,UAAA,CAAA,QAAA,EAAA,CAAA,MAAA,CAAA,UAAA,EAAA,CAAA,CAAA;IACb,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAvB,IAAA,EAAA,CAAA,UAAA,CAAA,mBAAA,EAAA,CAAA,CAAuB,CAAA,qBAAA,EAAA,EAAA,CAAA,CAAA;IAE3B,EAA+E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/E,EAA+E,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,cAAA,CAAA,OAAA,IAAA,MAAA,CAAA,cAAA,CAAA,OAAA,CAAA,WAAA,IAAA,CAAA,CAAA,CAAA;IAE7C,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9B,EAA8B,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,cAAA,CAAA,UAAA,CAAA,CAAA;;ACZlF,MAAO,wBAAyB,SAAQ,qCAAqC,CAAA;AACxE,IAAA,OAAO,gBAAgB,GAAA;QAC1B,mBAAmB,CAAC,gBAAgB,CAAC;YACjC,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,YAAA,MAAM,EAAE,YAAY;AACpB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,WAAW,EAAE,4FAA4F;kBACnG,iDAAiD;AACvD,YAAA,eAAe,EAAE,wBAAwB;AACzC,YAAA,gBAAgB,EAAE;AACd,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,KAAK,EAAE,uBAAuB;AAC9B,oBAAA,WAAW,EAAE,iGAAiG;AACjH,iBAAA;AACD,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,KAAK,EAAE,8BAA8B;AACxC,iBAAA;AACD,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,KAAK,EAAE,8FAA8F;AACrG,oBAAA,YAAY,EAAE,CAAC;AAClB,iBAAA;AACD,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,OAAO;AACjC,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,KAAK,EAAE,6FAA6F;AACvG,iBAAA;AACqB,gBAAA;oBAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,KAAK,EAAE,8FAA8F;AACrG,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,UAAU,EAAE;AACR,wBAAA;4BACI,IAAI,EAAE,mBAAmB,CAAC,OAAO;AACjC,4BAAA,MAAM,EAAE,UAAU;AAClB,4BAAA,IAAI,EAAE,KAAK;AACX,4BAAA,KAAK,EAAE,sFAAsF;AAC7F,4BAAA,QAAQ,EAAE,KAAK;AACf,4BAAA,OAAO,EAAE,EACR;AACJ,yBAAA;AACD,wBAAA;4BACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4BAAA,MAAM,EAAE,UAAU;AAClB,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,KAAK,EAAE,wFAAwF;AAC/F,4BAAA,QAAQ,EAAE,KAAK;AACf,4BAAA,YAAY,EAAE,WAAW;AACzB,4BAAA,OAAO,EAAE;AACL,gCAAA,KAAK,EAAE;AACH,oCAAA;AACI,wCAAA,KAAK,EAAE,4FAA4F;AACnG,wCAAA,KAAK,EAAE,WAAW;AACrB,qCAAA;AACD,oCAAA;AACI,wCAAA,KAAK,EAAE,2FAA2F;AAClG,wCAAA,KAAK,EAAE,UAAU;AACpB,qCAAA;AACJ,iCAAA;AACJ,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA,0BAA0B,EAAE;AACxB,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACpB,iBAAA;AACJ,aAAA;YACD,IAAI,EAAE,CAAC,gBAAgB,CAAC;AAC3B,SAAA,CAAC,CAAC;KACN;;AAnFQ,mBAAA,wBAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,qCAAA,CAAA,CAAA,OAAA,SAAA,gCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,qCAAA,KAAA,qCAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,wBAAwB,SAAxB,wBAAwB,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,4DAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,iCAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDPrC,EAA6G,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;AAAnC,QAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,SAAA,wDAAA,CAAA,MAAA,EAAA,EAAA,OAAU,uBAAuB,CAAC,EAAA,CAAA,CAAA;QACxG,EACuD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACnD,EAAwE,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,CAAA,CAAA;QACxE,EAyBM,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AACV,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;QA9BJ,EAAmE,CAAA,WAAA,CAAA,IAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,IAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,MAAA,CAAA,CAAA;QACpC,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAvD,QAAA,EAAA,CAAA,WAAA,CAAA,sBAAA,EAAA,GAAA,CAAA,sBAAA,EAAA,CAAuD,CAAA,iBAAA,EAAA,GAAA,CAAA,sBAAA,EAAA,CAAA,CAAA;QAEhE,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,sBAAA,EAAA,CAAA,CAAA;QAC5C,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA/B,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,sBAAA,EAAA,CAAA,CAAA;;uFCGhC,wBAAwB,EAAA,CAAA;cAHpC,SAAS;;;;ACGJ,MAAO,gCAAiC,SAAQ,wCAAwC,CAAA;AACnF,IAAA,OAAO,gBAAgB,GAAA;QAC1B,mBAAmB,CAAC,gBAAgB,CAAC;YACjC,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,YAAA,MAAM,EAAE,YAAY;AACpB,YAAA,WAAW,EAAE,sFAAsF;kBAC7F,iDAAiD;AACvD,YAAA,eAAe,EAAE,gCAAgC;AACpD,SAAA,CAAC,CAAC;QACH,mBAAmB,CAAC,gBAAgB,CAAC;YACjC,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,YAAA,MAAM,EAAE,YAAY;AACpB,YAAA,WAAW,EAAE,sFAAsF;kBAC7F,iDAAiD;AACvD,YAAA,eAAe,EAAE,gCAAgC;AACpD,SAAA,CAAC,CAAC;KACN;;AAhBQ,mBAAA,gCAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,6CAAA,CAAA,CAAA,OAAA,SAAA,wCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,6CAAA,KAAA,6CAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,gCAAgC,SAAhC,gCAAgC,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;kHAAhC,gCAAgC,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,yCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QAF9B,EAAa,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;;uFAEf,gCAAgC,EAAA,CAAA;cAH5C,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,eAAe;AAC5B,aAAA,CAAA;;;;;;ICAG,EAEsD,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IADpD,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAgB,CAAA,cAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAE1B,EAA8C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAChD,EAAS,CAAA,YAAA,EAAA,CAAA;;;IAFP,EAAmD,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;IADxB,EAA6D,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;;IAU1F,EAAyH,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACvH,EAAoD,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IACtD,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAER,EAA6E,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA/C,EAA0B,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,CAAA;IAAC,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,iBAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;IAC1F,EAAyF,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAmB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA3D,EAAgC,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,mBAAA,CAAA,CAAA;IAAC,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnB,EAAmB,CAAA,iBAAA,CAAA,MAAA,CAAA,eAAA,CAAA,CAAA;;;;IAtB9G,EAEsD,CAAA,cAAA,CAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;AAFF,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,uEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAW,EAAkB,CAAA,WAAA,CAAA,CAAA,CAAA,MAAA,CAAA,aAAA,GAAA,MAAA,CAAA,mBAAA,EAAqB,GAAG,EAAE,CAAA,CAAC,EAAA,CAAA,CAAA;IAG1G,EAE8G,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAC5G,EAIS,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IACT,EAAmD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACjD,EAAoD,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;IACtD,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAAkN,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAChN,EAAqD,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IACvD,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAEM,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACR,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAAiG,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACjG,EAAmH,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACrH,EAAe,CAAA,YAAA,EAAA,CAAA;;;AAvBe,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,WAAA,CAAqB,qCAAA,CAAA,4BAAA,EAAA,MAAA,CAAA,0BAAA,CAAA,CAAA;IAG5C,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAAC,EAAwB,CAAA,WAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA,aAAA,EAAA,CAAA,MAAA,CAAA,OAAA,CAAA,uFAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,eAAA,GAAA,MAAA,CAAA,KAAA,CAAA,mBAAA,GAAA,iBAAA,CAAA,CAAA;IAG5C,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IAWpB,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAIlB,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,SAAA,CAAA,CAAA;IACf,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,eAAA,CAAA,CAAA;;;;ACJ9B;;;;;;;;;;;;;;;;;;;AAmBG;MAKU,qBAAqB,CAAA;;6GAArB,qBAAqB,GAAA,CAAA,EAAA,CAAA;uGAArB,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,kBAAA,EAAAA,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,2BAAA,EAAA,yBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QAFnB,EAA+D,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;uFAEhG,qBAAqB,EAAA,CAAA;cAJjC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,mBAAmB;AAC7B,gBAAA,QAAQ,EAAE,gGAAgG;AAC7G,aAAA,CAAA;;MAQY,sBAAsB,CAAA;;+GAAtB,sBAAsB,GAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,oBAAA,CAAA,CAAA,EAAA,kBAAA,EAAAA,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QAFpB,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;uFAE3B,sBAAsB,EAAA,CAAA;cAJlC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,oBAAoB;AAC9B,gBAAA,QAAQ,EAAE,2BAA2B;AACxC,aAAA,CAAA;;MASY,qBAAqB,CAAA;;6GAArB,qBAAqB,GAAA,CAAA,EAAA,CAAA;uGAArB,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,kBAAA,EAAAA,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,0BAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QAHnB,EAAsC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACjD,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;uFAEtB,qBAAqB,EAAA,CAAA;cALjC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,mBAAmB;AAC7B,gBAAA,QAAQ,EAAE,CAAA;AACsB,mCAAA,CAAA;AACnC,aAAA,CAAA;;IAIW,kBAKX;AALD,CAAA,UAAY,iBAAiB,EAAA;AACzB,IAAA,iBAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAe,CAAA;AACf,IAAA,iBAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAe,CAAA;AACf,IAAA,iBAAA,CAAA,iBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;AACb,IAAA,iBAAA,CAAA,iBAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAmB,CAAA;AACvB,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,GAK5B,EAAA,CAAA,CAAA,CAAA;MAEY,UAAU,CAAA;;AACL,UAAI,CAAA,IAAA,GAAG,MAAM,CAAC;AACd,UAAQ,CAAA,QAAA,GAAG,WAAW,CAAC;AACvB,UAAO,CAAA,OAAA,GAAG,SAAS,CAAC;AACpB,UAAa,CAAA,aAAA,GAAG,gBAAgB,CAAC;AACjC,UAAU,CAAA,UAAA,GAAG,YAAY,CAAC;AAC1B,UAAQ,CAAA,QAAA,GAAG,UAAU,CAAC;AACtB,UAAc,CAAA,cAAA,GAAG,iBAAiB,CAAC;AACnC,UAAa,CAAA,aAAA,GAAG,gBAAgB,CAAC;AACjC,UAAY,CAAA,YAAA,GAAG,cAAc,CAAC;AAGzC,MAAM,WAAW,GAAG,QAAQ;AAC5B,MAAM,WAAW,GAAG,QAAQ;AAM7B,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;AAwHlD,IAAA,WAAA,CACY,UAAsB,EACtB,iBAAoC,EAC5C,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAJR,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QA7GzC,IAAU,CAAA,UAAA,GAAG,aAAa,CAAC;AAE3B,QAAA,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC;QAExC,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;AAkBvB;;AAEG;QACa,IAA0B,CAAA,0BAAA,GAAG,KAAK,CAAC;AAEnD;;;AAGG;QACa,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC;AAEpC;;AAEG;QACa,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAEnC;;;AAGG;QACa,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;QACrB,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;QACf,IAAe,CAAA,eAAA,GAAG,EAAE,CAAC;AA+BrC;;;;AAIG;QACa,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;AAEhC;;AAEG;QACa,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAEpC;;;;AAIG;QACa,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;QAIlC,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAiBtB,QAAA,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;;AAG5B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAqB,CAAC;QACvD,IAAI,CAAC,sBAAsB,EAAE,CAAC;;AAG9B,QAAA,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,KAAI;AACnC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAU,OAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAI,CAAA,EAAA,GAAG,EAAE,CAAC;AAClE,SAAC,CAAC,CAAC;KACN;AA1ID;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,iBAAiB,CAAC;KAC5B;AAqDD;;;;;AAKG;IACH,IAAoB,UAAU,CAAC,QAAiB,EAAA;AAC5C,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;AACrC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC;AACzC,SAAA;QAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;KACjC;AAED;;;AAGG;IACH,IACW,UAAU,CAAC,IAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KACpB;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;IAyBD,IAAW,OAAO,CAAC,OAAgB,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;KAC9B;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;;IAyBM,OAAO,GAAA;QACV,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,SAAA;KACJ;AAED;;;AAGG;IACI,kBAAkB,GAAA;QACrB,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE,CAAC;AACpB,SAAA;KACJ;AAED;;AAEG;IACI,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KAClC;AAED;;AAEG;IAEI,SAAS,GAAA;AACZ,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;;;;AAI/B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAC7F,MAAM,cAAc,GAAG,GAAG,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;AAChE,YAAA,IAAI,cAAc,EAAE;gBAChB,cAAc,CAAC,KAAK,EAAE,CAAC;AAC1B,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;IACI,IAAI,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACvB;AAED;;AAEG;IACI,IAAI,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;KAC1C;AAED;;AAEG;IACI,mBAAmB,GAAA;QACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;KAC3D;AAED;;AAEG;IACI,cAAc,GAAA;QACjB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;KAC3D;IAEM,eAAe,GAAA;QAClB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;KACzD;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAC/C,QAAA,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,YAAY,EAAE;YACnD,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC,SAAA;KACJ;AAED;;;;AAIG;AACI,IAAA,qBAAqB,CAAC,KAAa,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,EAAE;YACrC,OAAO;AACV,SAAA;AAED,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACtF,IAAI,CAAC,iBAAiB,EAAE;YACpB,OAAO;AACV,SAAA;AAED,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC;QACtG,IAAI,CAAC,mBAAmB,EAAE;YACtB,OAAO;AACV,SAAA;QAED,IAAI,KAAK,KAAK,SAAS,EAAE;AACrB,YAAA,iBAAiB,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAChD,YAAA,iBAAiB,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAChD,YAAA,mBAAmB,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO;AACV,SAAA;AAED,QAAA,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,EAAE,WAAW,CAAC,CAAC;AACxE,QAAA,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,CAAA,CAAA,EAAI,KAAK,CAAA,EAAA,CAAI,EAAE,WAAW,CAAC,CAAC;AACzE,QAAA,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,EAAE,WAAW,CAAC,CAAC;KAC7E;IAES,sBAAsB,GAAA;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,mCAAmC,EAAE,uBAAuB,CAAC,CAAC;AAC3H,QAAA,MAAM,iBAAiB,GAAG,CAAC,4BAA4B,EAAE,yBAAyB,CAAC,CAAC;AAEpF,QAAA,IAAI,QAAQ,KAAK,UAAU,CAAC,IAAI,EAAE;YAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,iBAAiB,EAAE,wBAAwB,EAAE,wBAAwB,CAAC,CAAC;AAC1F,SAAA;AAAM,aAAA,IAAI,QAAQ,KAAK,UAAU,CAAC,QAAQ,EAAE;YACzC,OAAO,CAAC,IAAI,CAAC,GAAG,iBAAiB,EAAE,6BAA6B,EAAE,wBAAwB,CAAC,CAAC;AAC/F,SAAA;AAAM,aAAA,IAAI,QAAQ,KAAK,UAAU,CAAC,OAAO,EAAE;YACxC,OAAO,CAAC,IAAI,CAAC,GAAG,iBAAiB,EAAE,2BAA2B,EAAE,wBAAwB,CAAC,CAAC;YAC1F,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;AACzD,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,QAAQ,KAAK,UAAU,CAAC,aAAa,EAAE;YAC9C,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,4BAA4B,EAAE,kCAAkC,EAAE,mBAAmB,CAAC,CAAC;YAC3H,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,gBAAA,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;AACzD,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,QAAQ,KAAK,UAAU,CAAC,UAAU,EAAE;YAC3C,OAAO,CAAC,IAAI,CAAC,GAAG,iBAAiB,EAAE,8BAA8B,EAAE,wBAAwB,CAAC,CAAC;AAChG,SAAA;AAAM,aAAA,IAAI,QAAQ,KAAK,UAAU,CAAC,QAAQ,EAAE;YACzC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,4BAA4B,EAAE,mBAAmB,CAAC,CAAC;AAC1F,SAAA;AAAM,aAAA,IAAI,QAAQ,KAAK,UAAU,CAAC,cAAc,EAAE;YAC/C,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,mCAAmC,EAAE,mBAAmB,CAAC,CAAC;AACjG,SAAA;AAAM,aAAA,IAAI,QAAQ,KAAK,UAAU,CAAC,aAAa,EAAE;YAC9C,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,kCAAkC,EAAE,mBAAmB,CAAC,CAAC;AAChG,SAAA;AAAM,aAAA,IAAI,QAAQ,KAAK,UAAU,CAAC,YAAY,EAAE;YAC7C,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,gCAAgC,EAAE,mBAAmB,CAAC,CAAC;AACvH,SAAA;AAED,QAAA,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,2BAA2B,CAAC,CAAC;AAEjE,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;;QAG7B,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,KAAK,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC;AAChF,SAAA;AAAM,aAAA;;AAEH,YAAA,MAAM,UAAU,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAC7F,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,GAAG,aAAa,GAAG,QAAQ,CAAC;AAClG,SAAA;KACJ;AAED;;AAEG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,mBAAmB,EAAE,EAAE;SAC1B,CAAC;KACL;;AA7SD;;AAEG;AACY,eAAY,CAAA,YAAA,GAAG,CAAC,CAAC;iGAXvB,eAAe,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;iGAAf,eAAe,EAAA,SAAA,EAAA,CAAA,CAAA,YAAA,CAAA,CAAA,EAAA,YAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;0GAAf,GAAS,CAAA,OAAA,EAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,CAAA;;;QDtFtB,EAuBe,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,EAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;;QAvBA,EAAa,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;;AC+PxB,UAAA,CAAA;IAACzC,UAAQ,CAAC,CAAC,CAAC;;;;AAaX,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;uFAtLQ,eAAe,EAAA,CAAA;cAJ3B,SAAS;2BACI,YAAY,EAAA,QAAA,EAAA,yzDAAA,EAAA,CAAA;oHAyCN,0BAA0B,EAAA,CAAA;kBAAzC,KAAK;YAMU,YAAY,EAAA,CAAA;kBAA3B,KAAK;YAKU,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAMU,aAAa,EAAA,CAAA;kBAA5B,KAAK;YACU,SAAS,EAAA,CAAA;kBAAxB,KAAK;YACU,eAAe,EAAA,CAAA;kBAA9B,KAAK;YAQc,UAAU,EAAA,CAAA;kBAA7B,KAAK;YAeK,UAAU,EAAA,CAAA;kBADpB,KAAK;YAcU,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAKU,WAAW,EAAA,CAAA;kBAA1B,KAAK;YAOU,iBAAiB,EAAA,CAAA;kBAAhC,KAAK;YAsCC,OAAO,EAAA,CAAA;kBADb,YAAY;mBAAC,uBAAuB,CAAA;YA4B9B,SAAS,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ICjPR,kBAGX;AAHD,CAAA,UAAY,iBAAiB,EAAA;AACzB,IAAA,iBAAA,CAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,iBAAA,CAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACR,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,GAG5B,EAAA,CAAA,CAAA,CAAA;MAQY,aAAa,CAAA;IAyBtB,WAAoB,CAAA,UAA6B,EAAkC,mBAAmC,EAAA;QAAlG,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;QAAkC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAgB;AAxB/G,QAAA,IAAA,CAAA,SAAS,GAAG;AACf,YAAA,MAAM,EAAE,0BAA0B;AAClC,YAAA,YAAY,EAAE,gCAAgC;AAC9C,YAAA,gBAAgB,EAAE,qCAAqC;AACvD,YAAA,OAAO,EAAE,2BAA2B;AACpC,YAAA,iBAAiB,EAAE,+BAA+B;AAClD,YAAA,QAAQ,EAAE,0BAA0B;AACpC,YAAA,IAAI,EAAE,sBAAsB;AAC5B,YAAA,QAAQ,EAAE,sBAAsB;AAChC,YAAA,QAAQ,EAAE,6BAA6B;AACvC,YAAA,oBAAoB,EAAE,mCAAmC;AACzD,YAAA,mBAAmB,EAAE,iCAAiC;AACtD,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,WAAW,EAAE,yBAAyB;SACzC,CAAC;QAEK,IAAkB,CAAA,kBAAA,GAAuD,EAAE,CAAC;QAE3E,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC,YAAY,CAAC,OAAO,CAAC;QAC7D,IAAY,CAAA,YAAA,GAA0E,EAAE,CAAC;QAEzF,IAAa,CAAA,aAAA,GAAqC,EAAE,CAAC;QAkBrD,IAAiB,CAAA,iBAAA,GAAG,CAAC,CAAC;QAd1B,IAAI,CAAC,mBAAmB,GAAG,IAAI,aAAa,CAAc,CAAC,CAAC,CAAC;KAChE;AAED;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;KACrH;AAID;;;;;;;AAOG;IACI,QAAQ,CACX,EAAU,EACV,SAAiD,EAAA;QAEjD,IAAI,CAAC,EAAE,EAAE;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;AACnF,SAAA;QAED,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;AACzF,SAAA;AAED;;;;AAIG;;;;AAKH,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;KACrC;AAED;;;;AAIG;AACI,IAAA,UAAU,CAAC,EAAU,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAChC,SAAA;QAED,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;AAClH,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;AACjC,SAAA;KACJ;IAEM,eAAe,GAAA;QAClB,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;IAEM,kBAAkB,GAAA;AACrB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;KACpE;AAED;;;;;;;AAOG;IACI,IAAI,CAA+D,EAAU,EAAE,OAAiB,EAAA;QACnG,IAAI,CAAC,EAAE,EAAE;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAC3E,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;YACxB,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACrD,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,EAAE,CAAA,GAAA,CAAK,CAAC,CAAC;AAC3F,aAAA;AACJ,SAAA;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;;QAGxD,IAAI,OAAO,IAAI,CAAO,OAAQ,CAAC,SAAS,EAAE;AACtC,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,aAA4B,CAAC;AACrD,YAAA,IAAI,MAAM,EAAE;AACR,gBAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;AACnC,aAAA;AACJ,SAAA;;QAGD,OAAO,EAAE,CAAC,SAAS,CAAC;AACf,aAAA,IAAI,CACD,QAAQ,CAAC,EAAE,IAAG;;AAEV,YAAA,IAAI,gBAAqC,CAAC;;AAE1C,YAAA,MAAM,oBAAoB,GAAG,CAAC,CAAC,SAAS,CAAC;AACzC,YAAA,IAAI,oBAAoB,EAAE;gBACtB,IAAI,SAAS,CAAC,QAAQ,EAAE;;AAEpB,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACxC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;;AAErC,oBAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBAC5C,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5C,yBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,IAAG;wBACf,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACtC,wBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;AAC9B,wBAAA,IAAI,SAAS,EAAE;4BACX,SAAS,CAAC,SAAS,EAAE,CAAC;AACzB,yBAAA;AAED,wBAAA,OAAO,MAAM,CAAC;qBACjB,CAAC,CAAC,CAAC;AACR,oBAAA,gBAAgB,GAAwB,IAAI,CAAC,kBAAkB,CAAC;AACnE,iBAAA;AAAM,qBAAA;;oBAEH,gBAAgB,GAAwB,IAAI,CAAC,kBAAkB;yBAC1D,IAAI,CACD,QAAQ,CAAC,CAAC,CAAC,EACX,QAAQ,CAAC,MAAK;wBACV,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;qBACjC,CAAC,CAAC,CAAC;AACf,iBAAA;AACJ,aAAA;AAAM,iBAAA;;AAEH,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACrC,gBAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC5C,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;AAC5C,qBAAA,IAAI,CACD,GAAG,CAAC,MAAM,IAAG;oBACT,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACtC,oBAAA,IAAI,SAAS,EAAE;wBACX,SAAS,CAAC,SAAS,EAAE,CAAC;AACzB,qBAAA;AAED,oBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;AAC9B,oBAAA,OAAO,MAAM,CAAC;iBACjB,CAAC,CAAC,CAAC;AACZ,gBAAA,gBAAgB,GAAwB,IAAI,CAAC,kBAAkB,CAAC;AACnE,aAAA;;AAGD,YAAA,IAAI,oBAAoB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC7C,gBAAA,SAAS,CAAC,cAAc,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAC/D,aAAA;YAED,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACvD,YAAA,OAAO,gBAAgB,CAAC;SAC3B,CAAC,CAAC,CAAC;KACf;AAED;;;;;;AAMG;AACI,IAAA,WAAW,CAAC,OAA6B,EAAA;;AAE5C,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACrD,SAAA;AAAM,aAAA;;AAEH,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAC3C,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;AACvB,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAED;;AAEG;IACI,WAAW,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KACrC;AAED;;;;;AAKG;AACI,IAAA,UAAU,CAAC,OAA4B,EAAA;AAC1C,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpD,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC;gBAC1C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;AACvB,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAED;;AAEG;IACI,UAAU,GAAA;QACb,IAAI,CAAC,IAAI,CAAqB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KACxD;AAED;;;;;;AAMG;AACI,IAAA,gBAAgB,CAAC,OAAkC,EAAA;AACtD,QAAA,IAAI,sBAAsB,CAAC;;AAG3B,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE;AAC7B,YAAA,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAC5E,SAAA;AAAM,aAAA;;YAEH,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,sBAAsB,CAAC;gBAClE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,YAAY,EAAE,OAAO,CAAC,YAAY;AACrC,aAAA,CAAC,CAAC;AACN,SAAA;QAED,OAAO,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAkC,KAAI;YAC1E,OAAO,QAAQ,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;SAClE,CAAC,CAAC,CAAC;KACP;AAED;;AAEG;IACI,gBAAgB,GAAA;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;KAC1C;AAED;;;;;AAKG;AACI,IAAA,oBAAoB,CAAC,OAAsC,EAAA;AAC9D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;KAC9D;AAED;;AAEG;IACI,oBAAoB,GAAA;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;KAC9C;AAED;;;;;;AAMG;IACI,IAAI,CAA+B,EAAU,EAAE,MAAgB,EAAA;QAClE,IAAI,CAAC,EAAE,EAAE;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAC3E,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;YACxB,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBAC1C,OAAO;AACV,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,EAAE,CAAA,GAAA,CAAK,CAAC,CAAC;AAC3F,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;KAC1D;AAED;;;;AAIG;IACI,WAAW,CAAC,OAAgB,EAAE,EAAU,EAAA;AAC3C,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE;AACnC,gBAAC,OAAO,CAAC,cAAc,EAAE,KAAK,+BAA+B,CAAC,IAAI;mBAC9D,OAAO,CAAC,cAAc,EAAE,KAAK,+BAA+B,CAAC,YAAY,CAAC,CAAC;AACtF,QAAA,IAAI,YAAY,EAAE;;YAEd,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;AACzC,iBAAA,IAAI,CACD,UAAU,CAAC,KAAK,IAAG;AACf,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/D,gBAAA,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AACxF,gBAAA,OAAO,KAAK,CAAC;aAChB,CAAC,CAAC,CAAC;AACf,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,cAAc,CAAC,QAAgB,EAAA;QAClC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACzD,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,EAAE,KAAK,QAAQ,EAAE;YAC1C,UAAU,CAAC,mBAAmB,EAAE,CAAC;AACjC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;;AAIG;AACI,IAAA,WAAW,CAAC,EAAU,EAAE,KAAK,GAAG,CAAC,EAAA;;AAEpC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;AACvF,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE;YACxB,UAAU,CACN,MAAK;AACD,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;AACtF,gBAAA,IAAI,CAAC,gBAAgB,IAAI,eAAe,EAAE;;;AAGtC,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAC3E,oBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACjC,iBAAA;qBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,GAAG,CAAC,EAAE;;AAE/D,oBAAA,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7B,iBAAA;AAAM,qBAAA;oBACH,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;oBACvC,MAAM,OAAO,GAAgB,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACzD,oBAAA,IAAI,OAAO,EAAE;wBACT,OAAO,CAAC,KAAK,EAAE,CAAC;AACnB,qBAAA;AACD,oBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACjC,iBAAA;aAEJ,EAAE,KAAK,CAAC,CAAC;AACjB,SAAA;KACJ;IAEM,qBAAqB,CAAC,QAAgB,EAAE,WAA8B,EAAA;AACzE,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;KAChG;;6FAjZQ,aAAa,EAAA,EAAA,CAAA,QAAA,CAAAyD,iBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAA,aAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAb,mBAAA,aAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,aAAa,WAAb,aAAa,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAb,aAAa,EAAA,CAAA;cADzB,UAAU;;sBA0B6C,QAAQ;;sBAAI,QAAQ;;;;;AClD1E,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAA2F,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IACtD,EAAkC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAK,EAAA,CAAA;;;IAAvC,EAAkC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlC,EAAkC,CAAA,iBAAA,CAAA,MAAA,CAAA,QAAA,CAAA,MAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA,CAAA;;;IAUzD,EACwC,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAA+B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;;;;IAA1E,EAAqC,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,QAAA,CAAA,QAAA,CAAA,WAAA,CAAA,CAAA,CAAA;IAAC,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,iBAAA,CAAA,MAAA,CAAA,QAAA,CAAA,QAAA,CAAA,WAAA,CAAA,CAAA,CAAA;;;IAWZ,EACpB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAC,CAAA,MAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;;IAV7C,EAIkF,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IAAhC,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,oEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAqB,CAAA,UAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAC/E,EAA8D,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IAC9D,EAA8C,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC5C,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IACP,EAAuD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EACZ,CAAA,UAAA,CAAA,CAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;;IANjD,EAA+C,CAAA,WAAA,CAAA,YAAA,EAAA,OAAA,CAAA,IAAA,KAAA,MAAA,CAAA,cAAA,CAAA,CAAA;AAFpC,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,QAAA,CAAA,OAAA,CAAA,WAAA,CAAA,CAAoC,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,GAAA,QAAA,GAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IAG1C,EAAkD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlD,EAAkD,CAAA,sBAAA,CAAA,+BAAA,EAAA,OAAA,CAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IAErD,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,QAAA,CAAA,OAAA,CAAA,WAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IAEK,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,WAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;;IAUsB,EACpB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAC,CAAA,MAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;;IAT7C,EAGkD,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IADA,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,oEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAqB,CAAA,UAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAE/E,EAA8D,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IAC9D,EAA8C,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC5C,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IACP,EAAuD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EACZ,CAAA,UAAA,CAAA,CAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;;IANjD,EAA+C,CAAA,WAAA,CAAA,YAAA,EAAA,OAAA,CAAA,IAAA,KAAA,MAAA,CAAA,cAAA,CAAA,CAAA;IAD/C,EAAoC,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,QAAA,CAAA,OAAA,CAAA,WAAA,CAAA,CAAA,CAAA;IAE/B,EAAkD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlD,EAAkD,CAAA,sBAAA,CAAA,+BAAA,EAAA,OAAA,CAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IAErD,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,QAAA,CAAA,OAAA,CAAA,WAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IAEK,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,WAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;;IAtBrC,EAAsC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IACpC,EAWI,CAAA,UAAA,CAAA,CAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IACJ,EAUI,CAAA,UAAA,CAAA,CAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAvBA,EAAkE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlE,EAAkE,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,IAAA,MAAA,CAAA,cAAA,CAAA,OAAA,CAAA,YAAA,CAAA,CAAA;IAYlE,EAAqE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArE,EAAqE,CAAA,UAAA,CAAA,MAAA,EAAA,EAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,IAAA,MAAA,CAAA,cAAA,CAAA,OAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;;AAjB/E,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,CAAwD,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IAEpD,EAC4E,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IAC5E,EAwBM,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AACR,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;IA3BgD,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,WAAA,CAAA,CAAA;IAErD,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,UAAA,CAAA,SAAA,EAAA,QAAA,CAAA,KAAA,CAAA,CAAA;;;;AAyCtC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAqG,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;AAEjG,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,YAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAS,OAA0B,CAAA,WAAA,CAAA,YAAA,CAAA,IAAA,CAAA,CAAA,CAAA,OAAC,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,cAAA,EAAuB,CAAA,CAAC,EAAA,CAAA,CAAA;IAC8C,EAA6C,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;IAClK,EAC8E,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IADxD,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,YAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA6B,CAAA,cAAA,CAAA,YAAA,CAAA,IAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACiB,EAAgD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;IACvI,EAC2B,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAAzB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAc,CAAA,YAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAAC,EAA8C,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;;;;IAJhF,EAAyG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzG,EAAyG,CAAA,UAAA,CAAA,aAAA,EAAA,EAAA,OAAA,CAAA,WAAA,CAAA,YAAA,CAAA,IAAA,CAAA,IAAA,OAAA,CAAA,WAAA,CAAA,YAAA,CAAA,IAAA,CAAA,IAAA,CAAA,OAAA,CAAA,UAAA,CAAA,YAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA;IAAC,EAA6C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7C,EAA6C,CAAA,iBAAA,CAAA,OAAA,CAAA,mBAAA,CAAA,YAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA,CAAA;IAEvJ,EAA2E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3E,EAA2E,CAAA,UAAA,CAAA,aAAA,EAAA,EAAA,OAAA,CAAA,WAAA,CAAA,YAAA,CAAA,IAAA,CAAA,IAAA,CAAA,OAAA,CAAA,UAAA,CAAA,YAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA;IAAC,EAAgD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhD,EAAgD,CAAA,iBAAA,CAAA,OAAA,CAAA,mBAAA,CAAA,YAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA,CAAA;IAEnG,EAA8C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9C,EAA8C,CAAA,iBAAA,CAAA,OAAA,CAAA,mBAAA,CAAA,YAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA,CAAA;;;;AAhB/E,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAwE,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IAMN,EAA8B,CAAA,UAAA,CAAA,YAAA,EAAA,SAAA,sFAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,YAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,EAAA,OAAA,CAAA,IAAA,CAAA,YAAA,CAAA,IAAA,CAAA,GAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA;IAE5F,EAAwB,CAAA,YAAA,EAAA,CAAA;IACxB,EAQM,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AACR,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;;IAjBD,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxD,EAAwD,CAAA,WAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,cAAA,KAAA,YAAA,CAAA,IAAA,CAAA,CAAA;IAKzB,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA3B,IAAA,EAAA,CAAA,UAAA,CAAA,gBAAA,EAAA,YAAA,CAA2B,wCAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;IAGvD,EAA+C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/C,EAA+C,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,yBAAA,CAAA,YAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;ACzC7D,MAAO,yBAA0B,SAAQ,wCAAwC,CAAA;AAUnF,IAAA,WAAA,CACY,iBAAoC,EACpC,cAA8B,EAC9B,MAAc,EACd,aAA4B,EAAA;AACpC,QAAA,KAAK,EAAE,CAAC;QAJA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAbhC,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;QAC7B,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAc1C;AAEM,IAAA,OAAO,gBAAgB,GAAA;QAC1B,mBAAmB,CAAC,gBAAgB,CAAC;YACjC,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,WAAW,EAAE,4FAA4F;kBACnG,iDAAiD;AACvD,YAAA,eAAe,EAAE,yBAAyB;AAC1C,YAAA,gBAAgB,EAAE;AACd,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,OAAO;AACjC,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,KAAK,EAAE,6BAA6B;AACpC,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,OAAO,EAAE,EACR;AACJ,iBAAA;AACoB,gBAAA;oBACjB,IAAI,EAAE,mBAAmB,CAAC,KAAK;AAC/B,oBAAA,MAAM,EAAE,aAAa;AACrB,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,KAAK,EAAE,sBAAsB;AAC7B,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,OAAO,EAAE,EACR;AACD,oBAAA,IAAI,EAAwB;wBACxB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,QAAQ,EAAE,KAAK;AACf,wBAAA,OAAO,EAAE;AACL,4BAAA,WAAW,EAAE,CAAC;AACd,4BAAA,UAAU,EAAE,KAAK;AACjB,4BAAA,WAAW,EAAE;AACT,gCAAA,GAAG,EAAE,KAAK;AACV,gCAAA,KAAK,EAAE,WAAW;AACrB,6BAAA;AACJ,yBAAA;AACD,wBAAA,UAAU,EAAE;AACR,4BAAA;gCACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gCAAA,MAAM,EAAE,wBAAwB;AAChC,gCAAA,IAAI,EAAE,aAAa;AACnB,gCAAA,KAAK,EAAE,4BAA4B;AACnC,gCAAA,OAAO,EAAE,EACR;AACJ,6BAAA;AACoB,4BAAA;gCACjB,IAAI,EAAE,mBAAmB,CAAC,KAAK;AAC/B,gCAAA,MAAM,EAAE,aAAa;AACrB,gCAAA,IAAI,EAAE,OAAO;AACb,gCAAA,KAAK,EAAE,qBAAqB;AAC5B,gCAAA,QAAQ,EAAE,KAAK;AACf,gCAAA,OAAO,EAAE,EACR;AACD,gCAAA,IAAI,EAAwB;oCACxB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oCAAA,MAAM,EAAE,SAAS;AACjB,oCAAA,QAAQ,EAAE,KAAK;AACf,oCAAA,OAAO,EAAE;AACL,wCAAA,WAAW,EAAE,CAAC;AACd,wCAAA,UAAU,EAAE,KAAK;AACjB,wCAAA,WAAW,EAAE;AACT,4CAAA,GAAG,EAAE,KAAK;AACV,4CAAA,KAAK,EAAE,WAAW;AACrB,yCAAA;AACJ,qCAAA;AACD,oCAAA,UAAU,EAAE;AACR,wCAAA;4CACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4CAAA,MAAM,EAAE,SAAS;AACjB,4CAAA,IAAI,EAAE,MAAM;AACZ,4CAAA,KAAK,EAAE,oBAAoB;AAC3B,4CAAA,QAAQ,EAAE,KAAK;AACf,4CAAA,OAAO,EAAE;AACL,gDAAA,YAAY,EAAE,KAAK;AACtB,6CAAA;AACJ,yCAAA;AACD,wCAAA;4CACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4CAAA,MAAM,EAAE,wBAAwB;AAChC,4CAAA,IAAI,EAAE,aAAa;AACnB,4CAAA,KAAK,EAAE,4BAA4B;AACnC,4CAAA,QAAQ,EAAE,KAAK;AACf,4CAAA,OAAO,EAAE,EACR;AACJ,yCAAA;AACD,wCAAA;4CACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4CAAA,MAAM,EAAE,SAAS;AACjB,4CAAA,IAAI,EAAE,MAAM;AACZ,4CAAA,KAAK,EAAE,oBAAoB;AAC3B,4CAAA,QAAQ,EAAE,KAAK;AACf,4CAAA,OAAO,EAAE;AACL,gDAAA,YAAY,EAAE,KAAK;AACtB,6CAAA;AACJ,yCAAA;AACD,wCAAA;4CACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4CAAA,MAAM,EAAE,wBAAwB;AAChC,4CAAA,IAAI,EAAE,gBAAgB;AACtB,4CAAA,KAAK,EAAE,gCAAgC;AACvC,4CAAA,QAAQ,EAAE,KAAK;AACf,4CAAA,YAAY,EAAE,oDAAoD;AAClE,4CAAA,OAAO,EAAE;AACL,gDAAA,YAAY,EAAE,KAAK;AACtB,6CAAA;AACJ,yCAAA;AACD,wCAAA;4CACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4CAAA,MAAM,EAAE,wBAAwB;AAChC,4CAAA,IAAI,EAAE,mBAAmB;AACzB,4CAAA,KAAK,EAAE,mCAAmC;AAC1C,4CAAA,QAAQ,EAAE,KAAK;AACf,4CAAA,YAAY,EAAE,uDAAuD;AACrE,4CAAA,OAAO,EAAE;AACL,gDAAA,YAAY,EAAE,KAAK;AACtB,6CAAA;AACJ,yCAAA;AACD,wCAAA;4CACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4CAAA,MAAM,EAAE,wBAAwB;AAChC,4CAAA,IAAI,EAAE,iBAAiB;AACvB,4CAAA,KAAK,EAAE,kCAAkC;AACzC,4CAAA,QAAQ,EAAE,KAAK;AACf,4CAAA,YAAY,EAAE,qDAAqD;AACnE,4CAAA,OAAO,EAAE;AACL,gDAAA,YAAY,EAAE,KAAK;AACtB,6CAAA;AACJ,yCAAA;AACD,wCAAA;4CACI,IAAI,EAAE,mBAAmB,CAAC,OAAO;AACjC,4CAAA,MAAM,EAAE,eAAe;AACvB,4CAAA,IAAI,EAAE,wBAAwB;AAC9B,4CAAA,KAAK,EAAE,6CAA6C;AACvD,yCAAA;AACJ,qCAAA;AACD,oCAAA,cAAc,EAAE,KAAK;AACxB,iCAAA;AACJ,6BAAA;AACJ,yBAAA;AACD,wBAAA,cAAc,EAAE,KAAK;AACxB,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA,0BAA0B,EAAE;AACF,gBAAA;oBAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,UAAU,EAAE,EAAE;AACjB,iBAAA;AACqB,gBAAA;oBAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,UAAU,EAAE,EAAE;AACjB,iBAAA;AACqB,gBAAA;oBAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,UAAU,EAAE,EAAE;AACjB,iBAAA;AACJ,aAAA;YACD,IAAI,EAAE,CAAC,gBAAgB,CAAC;AAC3B,SAAA,CAAC,CAAC;KACN;IAEM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,SAAA;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,IAAG;AAClE,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC;YAClC,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAC9D,aAAA;SACJ,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAExD,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE;YAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;gBACpC,CAAC,CAAC,eAAuB,KAAI;AACzB,oBAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE;AACtC,wBAAA,QAAQ,EAAE,eAAe;AACzB,wBAAA,WAAW,EAAE,CAAC,QAAQ,KAAU;AAC5B,4BAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC;AACtC,4BAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;4BACxE,IAAI,IAAI,CAAC,mBAAmB,EAAE;gCAC1B,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAC/D,gCAAA,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;AAC1G,gCAAA,IAAI,kBAAkB,EAAE;oCACpB,kBAAkB,CAAC,cAAc,EAAE,CAAC;AACvC,iCAAA;AACJ,6BAAA;yBACJ;AACJ,qBAAA,CAAC,CAAC;AACP,iBAAC,EAAE,QAAQ,CAAC,CAAC;AAChB,aAAA;AACJ,SAAA;QAED,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACpD,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IACM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;KACzD;AAEM,IAAA,WAAW,CAAC,MAAkB,EAAA;AACjC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,4BAA4B,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,aAAa,CAAC;YAClH,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,GAAG,4BAA4B,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC;AACrH,SAAA;KACJ;AAEM,IAAA,UAAU,CAAC,QAAgB,EAAA;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC/B,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;KACpC;IAEM,mBAAmB,CAAC,QAAQ,EAAE,IAAS,EAAA;AAC1C,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAChE;AACM,IAAA,UAAU,CAAC,QAAgB,EAAA;QAC9B,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,QAAA,MAAM,iBAAiB,GAAG,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5G,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,aAAa,EAAE;YAC3F,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACzE,SAAA;QACD,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AACrE,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AACM,IAAA,WAAW,CAAC,QAAgB,EAAA;QAC/B,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAC/D,YAAA,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AACnG,YAAA,IAAI,kBAAkB,EAAE;AACpB,gBAAA,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,CAAC;AACzC,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AAEM,IAAA,yBAAyB,CAAC,QAAgB,EAAA;QAC7C,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzE,gBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClE,oBAAA,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC;AAClF,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;IACM,mBAAmB,CAAC,QAAgB,EAAE,MAAc,EAAA;QACvD,IAAI,MAAM,GAAG,EAAE,CAAC;AAEhB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzE,gBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClE,oBAAA,QAAQ,MAAM;AACV,wBAAA,KAAK,MAAM;4BACP,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;4BACtF,MAAM;AACV,wBAAA,KAAK,SAAS;4BACV,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;4BACzF,MAAM;AACV,wBAAA,KAAK,OAAO;4BACR,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;4BACvF,MAAM;AACb,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AACM,IAAA,WAAW,CAAC,QAAgB,EAAA;QAC/B,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAC/D,YAAA,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AACnG,YAAA,IAAI,kBAAkB,EAAE;AACpB,gBAAA,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,CAAC;AACzC,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AACM,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC/B,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE;AAC7B,YAAA,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,MAAW;gBACpB,IAAI,IAAI,CAAC,mBAAmB,EAAE;oBAC1B,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAC/D,oBAAA,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AACnG,oBAAA,IAAI,kBAAkB,EAAE;wBACpB,kBAAkB,CAAC,cAAc,EAAE,CAAC;AACvC,qBAAA;AACJ,iBAAA;aACJ;AACJ,SAAA,CAAC,CAAC;KACN;AACM,IAAA,cAAc,CAAC,QAAgB,EAAA;QAClC,IAAI,kBAAkB,GAAG,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACjC,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,WAAW,EAAE,CAAC,QAAQ,KAAU;gBAC5B,kBAAkB,GAAG,QAAQ,CAAC;aACjC;AACJ,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,kBAAkB,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClG,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AAC/D,YAAA,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AACnG,YAAA,IAAI,kBAAkB,EAAE;gBACpB,kBAAkB,CAAC,cAAc,EAAE,CAAC;AACvC,aAAA;AACJ,SAAA;KACJ;AACM,IAAA,aAAa,CAChB,KAA6B,EAC7B,KAA0B,EAC1B,yBAAoD,EAAA;QAEpD,IAAI,kBAAkB,GAAqD,IAAI,CAAC;AAEhF,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC5B,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,YAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE;gBAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACpC,oBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;wBAC5B,WAAW,GAAG,IAAI,CAAC;wBACnB,MAAM;AACT,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,WAAW,EAAE;gBACb,kBAAkB,GAAG,IAAI,CAAC,aAAa;qBAClC,gBAAgB,CAAC,yBAAyB,CAAC;AAC3C,qBAAA,IAAI,CACD,GAAG,CAAC,CAAC,MAAM,KAAI;;AAEX,oBAAA,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;AACzC,oBAAA,OAAO,cAAc,CAAC;iBACzB,CAAC,CAAC,CAAC;AAEZ,gBAAA,OAAO,kBAAkB,CAAC;AAC7B,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAElC,QAAA,OAAO,kBAAkB,CAAC;KAC7B;IAEM,YAAY,GAAA;AACf,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;KACnC;IAEO,UAAU,GAAA;AACd,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAC7B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAClF,SAAA;AACD,QAAA,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;KAC5B;;qHA1YQ,yBAAyB,EAAA,EAAA,CAAA,iBAAA,CAAAA,iBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAC,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAC,aAAA,CAAA,CAAA,CAAA,EAAA,CAAA;2GAAzB,yBAAyB,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;uBAIpB,wBAAwB,EAAA,CAAA,CAAA,CAAA;;;;;;;QDlB1C,EAAyH,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACvH,EAES,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;QACT,EAA4E,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;QAMlE,EA8BK,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;AACP,QAAA,EAAA,CAAA,YAAA,EAAK,EAAA,EAAA,CAAA;AAGT,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAwD,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEpD,EAmBO,CAAA,UAAA,CAAA,EAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACT,EAAM,CAAA,YAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;;QAjEH,EAA0B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA1B,EAA0B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA;QASH,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhC,EAAgC,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,MAAA,CAAA,CAAA;QAoC7B,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,cAAA,CAAA,UAAA,CAAA,CAAA;;uFChCtD,yBAAyB,EAAA,CAAA;cAHrC,SAAS;;4IAQY,mBAAmB,EAAA,CAAA;kBADpC,YAAY;mBAAC,wBAAwB,CAAA;YAG9B,eAAe,EAAA,CAAA;kBADtB,YAAY;mBAAC,SAAS,CAAA;;MAuYd,oBAAoB,CAAA;AAAjC,IAAA,WAAA,GAAA;QACW,IAAU,CAAA,UAAA,GAA+D,EAAE,CAAC;KACtF;AAAA,CAAA;MAEqB,wBAAwB,CAAA;AAA9C,IAAA,WAAA,GAAA;QACY,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;QACtB,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;KAgDtC;IArCU,MAAM,GAAA;QACT,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAEM,UAAU,GAAA;QACb,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;IAEM,UAAU,GAAA;QACb,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,MAAM,KAAI;YAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,IAAG;gBAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAC3D,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;gBAC5B,OAAO,CAAC,SAAS,CAAC,CAAC;AACvB,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,QAAQ,CAAC,SAAqB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;YACzC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,IAAG;gBAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACvE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAK;AACpC,oBAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,oBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAC9B,oBAAA,OAAO,EAAE,CAAC;iBACb,EACG,MAAM,IAAG;AACL,oBAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,oBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBACzB,MAAM,CAAC,MAAM,CAAC,CAAC;AACnB,iBAAC,CAAC,CAAC;AACX,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;AACJ;;MChbY,qBAAqB,CAAA;AAC9B,IAAA,WAAA,GAAA;QACI,wBAAwB,CAAC,gBAAgB,EAAE,CAAC;QAC5C,gCAAgC,CAAC,gBAAgB,EAAE,CAAC;QACpD,qCAAqC,CAAC,gBAAgB,EAAE,CAAC;QACzD,yBAAyB,CAAC,gBAAgB,EAAE,CAAC;QAC7C,iCAAiC,CAAC,gBAAgB,EAAE,CAAC;KACxD;;6GAPQ,qBAAqB,GAAA,CAAA,EAAA,CAAA;sGAArB,qBAAqB,EAAA,CAAA,CAAA;0GAR1B,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,kBAAkB;QAClB,cAAc;QACd,aAAa,CAAA,EAAA,CAAA,CAAA;uFAGR,qBAAqB,EAAA,CAAA;cAnBjC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE;oBACV,wBAAwB;oBACxB,yBAAyB;oBACzB,wBAAwB;oBACxB,gCAAgC;AACnC,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,wBAAwB;AAC3B,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,YAAY;oBACZ,YAAY;oBACZ,kBAAkB;oBAClB,cAAc;oBACd,aAAa;AAChB,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,qBAAqB,mBAjB1B,wBAAwB;QACxB,yBAAyB;QACzB,wBAAwB;AACxB,QAAA,gCAAgC,aAMhC,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,kBAAkB;QAClB,cAAc;AACd,QAAA,aAAa,aARb,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACnBhC;;AAEG;MAIU,wCAAwC,CAAA;AACjD;;;;;;;AAOG;IACI,yCAAyC,CAAC,KAAe,EAAE,SAAiC,EAAE,WAAuB,EAAE,QAAQ,GAAG,IAAI,EAAA;;AAEzI,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;YACzC,OAAO;AACV,SAAA;;QAGD,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;KACjE;AAED;;;;;;;AAOG;AACI,IAAA,mDAAmD,CAAC,KAAe,EAAE,SAAiC,EAAE,WAAuB,EAAE,QAAgB,EAAA;;AAEpJ,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACzB,YAAA,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;YACzC,OAAO;AACV,SAAA;;QAGD,IAAI,CAAC,+BAA+B,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;KACtE;AAED;;;;;AAKG;IACI,mBAAmB,CAAC,WAAuB,EAAE,KAAa,EAAA;QAC7D,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;YACrC,OAAO;AACV,SAAA;AAED,QAAA,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;KACzB;AAGM,IAAA,+BAA+B,CAAC,KAAe,EAAE,WAAuB,EAAE,QAAgB,EAAA;AAC7F,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACzB,OAAO;AACV,SAAA;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAC7B,OAAO;AACV,SAAA;AAED,QAAA,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;KACtB;AAGS,IAAA,wBAAwB,CAAC,SAAiC,EAAA;QAChE,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO;AACV,SAAA;AAED,QAAA,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KACnC;AAGS,IAAA,0BAA0B,CAAC,WAAuB,EAAE,KAAe,EAAE,QAAQ,GAAG,IAAI,EAAA;AAC1F,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACzB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAC1E;;mJApFQ,wCAAwC,GAAA,CAAA,EAAA,CAAA;6HAAxC,wCAAwC,EAAA,OAAA,EAAxC,wCAAwC,CAAA,IAAA,EAAA,UAAA,EAFvC,MAAM,EAAA,CAAA,CAAA;AAwDhB,UAAA,CAAA;AAAC,IAAA3D,UAAQ,EAAE;;4CAC0D,UAAU,EAAA,MAAA,CAAA,CAAA;;AAW9E,CAAA,EAAA,wCAAA,CAAA,SAAA,EAAA,iCAAA,EAAA,IAAA,CAAA,CAAA;AAED,UAAA,CAAA;AAAC,IAAAA,UAAQ,EAAE;;qCACmC,UAAU,CAAA,CAAA;;AAMvD,CAAA,EAAA,wCAAA,CAAA,SAAA,EAAA,0BAAA,EAAA,IAAA,CAAA,CAAA;AAED,UAAA,CAAA;AAAC,IAAAA,UAAQ,EAAE;;qCACuC,UAAU,EAAA,KAAA,EAAA,MAAA,CAAA,CAAA;;AAM3D,CAAA,EAAA,wCAAA,CAAA,SAAA,EAAA,4BAAA,EAAA,IAAA,CAAA,CAAA;uFApFQ,wCAAwC,EAAA,CAAA;cAHpD,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA,CAAA;gBAwDU,+BAA+B,EAAA,EAAA,EAc5B,wBAAwB,EAAA,EAAA,EASxB,0BAA0B,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCjF3B,yCAAyC,CAAA;AAGlD,IAAA,WAAA,CAAsB,wCAAkF,EAAA;QAAlF,IAAwC,CAAA,wCAAA,GAAxC,wCAAwC,CAA0C;QAFvF,IAAiC,CAAA,iCAAA,GAAG,sDAAsD,CAAC;KAEA;AAE5G;;;;;;AAMG;AACI,IAAA,MAAM,CAAC,KAAY,EAAE,SAAqB,EAAE,WAAuB,EAAA;AACtE,QAAA,IAAI,CAAC,wCAAwC,CAAC,mDAAmD,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,iCAAiC,CAAC,CAAC;KAC5K;AAED;;;;;;AAMG;AACI,IAAA,GAAG,CAAC,KAAY,EAAE,SAAqB,EAAE,WAAuB,EAAA;AACnE,QAAA,IAAI,CAAC,wCAAwC,CAAC,mDAAmD,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,iCAAiC,CAAC,CAAC;KAC5K;AAED;;;;AAIG;AACI,IAAA,OAAO,CAAC,KAAY,EAAE,WAAuB,EAAE,KAAa,EAAA;AAC/D,QAAA,IAAI,CAAC,wCAAwC,CAAC,+BAA+B,CACzE,KAAK,EACL,WAAW;;QAEX,CAAiD,8CAAA,EAAA,KAAK,CAAyB,uBAAA,CAAA,CAAC,CAAC;KACxF;AAED;;;;AAIG;AACI,IAAA,MAAM,CAAC,KAAY,EAAE,WAAuB,EAAE,KAAa,EAAA;AAC9D,QAAA,IAAI,CAAC,wCAAwC,CAAC,+BAA+B,CACzE,KAAK,EACL,WAAW;;AAEX,QAAA,CAAA,8CAAA,EAAiD,KAAK,GAAG,CAAC,CAAA,uBAAA,CAAyB,CAAC,CAAC;KAC5F;;qJAnDQ,yCAAyC,EAAA,EAAA,CAAA,QAAA,CAAA4D,wCAAA,CAAA,CAAA,CAAA,EAAA,CAAA;8HAAzC,yCAAyC,EAAA,OAAA,EAAzC,yCAAyC,CAAA,IAAA,EAAA,UAAA,EAFxC,MAAM,EAAA,CAAA,CAAA;uFAEP,yCAAyC,EAAA,CAAA;cAHrD,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA,CAAA;;;ACED;;AAEG;AACI,MAAM,gBAAgB,GAAa;AACtC,IAAA,OAAO,EAAE,gBAAgB;AACzB,IAAA,QAAQ,EAAE,IAAI;CACjB,CAAC;AAEF;;AAEG;AACI,MAAM,wBAAwB,GAAa;AAC9C,IAAA,OAAO,EAAE,kCAAkC;AAC3C,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;CAC5D,CAAC;AASF;;;AAGG;AAMG,MAAO,0BAA2B,SAAQ,iBAAiB,CAAA;AAkD7D;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG;AACV,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,KAAK,EAAE,IAAI;SACd,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;AACnD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,EAAc,CAAC;KAClD;AAjED;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,4BAA4B,CAAC;KACvC;AAED;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC5B;AAED;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC7B;AAED;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;KAC9B;IAyCM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KAC3B;AAED;;AAEG;AACI,IAAA,YAAY,CAAC,KAA4B,EAAA;AAC5C,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED;;AAEG;AACI,IAAA,eAAe,CAAC,KAA4B,EAAA;AAC/C,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACjC;AAED;;;;AAIG;IAEI,YAAY,GAAA;QACf,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,cAAc,GAAG,IAAI,CAAC;QAE1B,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,IAAG;AAC5B,gBAAA,aAAa,GAAG,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC;AAC7C,gBAAA,eAAe,GAAG,eAAe,IAAI,KAAK,CAAC,OAAO,CAAC;AACnD,gBAAA,eAAe,GAAG,eAAe,IAAI,KAAK,CAAC,OAAO,CAAC;AAEnD,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACjB,oBAAA,cAAc,GAAG,cAAc,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AACtD,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,eAAe,CAAC;AACtC,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,eAAe,CAAC;AACtC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC;QAEnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACxC;;uHArHQ,0BAA0B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;4GAA1B,0BAA0B,EAAA,SAAA,EAAA,CAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,yCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;oCAqCrB,WAAW,EAAA,CAAA,CAAA,CAAA;;;;0CAvCd,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,mCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;AA8FvD,UAAA,CAAA;IAAC5D,UAAQ,CAAC,CAAC,CAAC;;;;AAyBX,CAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;uFArHQ,0BAA0B,EAAA,CAAA;cALtC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,wCAAwC;AAClD,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,SAAS,EAAE,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;AAC1D,aAAA,CAAA;2DAuCU,gBAAgB,EAAA,CAAA;kBADtB,YAAY;mBAAC,WAAW,CAAA;YAwDlB,YAAY,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;;ICnFX,EAC+D,CAAA,SAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;;;;AADxC,IAAA,EAAA,CAAA,UAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,cAAA,CAAA,IAAA,CAAsC,2BAAA,CAAA,MAAA,EAAA,QAAA,CAAA,CAAA;;;;;;IC5C/D,EACsF,CAAA,kBAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;;;;;AAD/B,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,cAAA,CAA2B,iBAAA,CAAA,UAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA4C,KAAA,EAAA,IAAA,EAAA,MAAA,CAAA,aAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;;;IAElF,EAIiE,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IADQ,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAY,CAAA,MAAA,CAAA,OAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAE7F,EAA0C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC5C,EAAS,CAAA,YAAA,EAAA,CAAA;;;AAHP,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,KAAA,CAAA,oBAAA,CAAsE,CAAA,aAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IADtE,EAAkF,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,KAAA,CAAA,sBAAA,CAAA,CAAA;;;;IAKpF,EAIgE,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IADQ,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAc,CAAA,QAAA,CAAA,OAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAE9F,EAA4C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC9C,EAAS,CAAA,YAAA,EAAA,CAAA;;;AAHP,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,KAAA,CAAA,mBAAA,CAAqE,CAAA,aAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IADrE,EAAiF,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,KAAA,CAAA,qBAAA,CAAA,CAAA;;;;IAKnF,EAIgE,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IADQ,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAY,CAAA,MAAA,CAAA,OAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAE5F,EAA4D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC9D,EAAS,CAAA,YAAA,EAAA,CAAA;;;AAHP,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,KAAA,CAAA,mBAAA,CAAqE,CAAA,aAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IADrE,EAAiF,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,KAAA,CAAA,qBAAA,CAAA,CAAA;;;AApBvF,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,CAAyK,CAAA,CAAA,EAAA,mBAAA,CAAA,CAAA;IAErK,EACsF,CAAA,UAAA,CAAA,CAAA,EAAA,qEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACtF,EAMS,CAAA,UAAA,CAAA,CAAA,EAAA,+DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IACT,EAMS,CAAA,UAAA,CAAA,CAAA,EAAA,+DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACT,EAMS,CAAA,UAAA,CAAA,CAAA,EAAA,+DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACX,EAAoB,CAAA,YAAA,EAAA,CAAA;IACpB,EAAgE,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;AACpF,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAE+D,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAE3D,EACgF,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,CAAA,CAAA;AAClF,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,EAAA,CAAA;;;;;AAjCqD,IAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,YAAA,CAAA,OAAA,EAAA,IAAA,CAAA,CAAgC,CAAA,cAAA,EAAA,KAAA,CAAA,CAAA;IAAwB,EAAiD,CAAA,WAAA,CAAA,aAAA,EAAA,wBAAA,GAAA,IAAA,CAAA,CAAA;IAErJ,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAAA;IAE1B,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAOd,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAOd,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAA,CAAA,CAAA,CAAA;IAQP,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA,CAAA;IAAC,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,iBAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;IAG3E,EAA4D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5D,EAA4D,CAAA,WAAA,CAAA,yBAAA,EAAA,MAAA,CAAA,WAAA,KAAA,YAAA,CAAA,CAAA;IAFpD,EAAiD,CAAA,WAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA,CAAA;IAGA,EAAwC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxC,EAAwC,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,aAAA,CAAA,IAAA,EAAA,eAAA,CAAA,CAAA,CAAA;IAC/D,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAzB,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,YAAA,CAAyB,iBAAA,CAAA,UAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAAA,KAAA,EAAA,IAAA,EAAA,MAAA,CAAA,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA,CAAA,CAAA;;;;IAMjE,EAIqF,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IAAhB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,iEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAK,CAAA,GAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAAC,EAAiB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;;;AAH7G,IAAA,EAAA,CAAA,UAAA,CAAA,aAAA,EAAA,MAAA,CAAA,iBAAA,IAAA,MAAA,CAAA,QAAA,KAAA,CAAA,CAAA,IAAA,MAAA,CAAA,KAAA,CAAA,MAAA,IAAA,MAAA,CAAA,QAAA,CAAkF,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,KAAA,CAAA,gBAAA,CAAA,CAAA;IAElF,EAA8E,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,KAAA,CAAA,kBAAA,CAAA,CAAA;IACK,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,iBAAA,CAAA,MAAA,CAAA,aAAA,CAAA,CAAA;;ADR1G;AAoBM,MAAO,6BAA8B,SAAQ,uCAAuC,CAAA;AAI/E,IAAA,aAAa,CAAC,MAAM,EAAA;AACvB,QAAA,MAAM,IAAI,GAAG,eAAe,CAAC,iCAAiC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACzF,QAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;KACtB;IAEM,iCAAiC,GAAA;AACpC,QAAA,MAAM,kBAAkB,GAAyB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAC1E,IAAI,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxF,IAAI,CAAC,MAAM,EAAE;YACT,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,kBAAkB,CAAC,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,WAAW,EAAE;AACtE,gBAAA,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC;AACxD,aAAA;AACD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,IAAI,CAAC,GAAG,kBAAkB,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9E,gBAAA,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;oBACxF,MAAM,GAAG,IAAI,CAAC;oBACd,MAAM;AACT,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;;AAzBQ,mBAAA,6BAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,0CAAA,CAAA,CAAA,OAAA,SAAA,qCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,0CAAA,KAAA,0CAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,6BAA6B,SAA7B,6BAA6B,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;+GAA7B,6BAA6B,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,mCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;QAjBtC,EAQK,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAR+B,EAAkB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,8EAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA,eAAA,EAAA,SAAA,8EAAA,CAAA,MAAA,EAAA,EAAA,OACyD,GAAqB,CAAA,aAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAD9E,CAGhC,gBAAA,EAAA,SAAA,+EAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,gBAAA,CAAgD,QAAQ,CAHxB,EAAA,CAAA,CAAA,qBAAA,EAAA,SAAA,oFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAIa,GAA6D,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,CAAA,MAAA,CAAQ,CAJlF,EAAA,CAAA,CAAA;QASlD,EAGc,CAAA,UAAA,CAAA,CAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,CAAA,CAAA;QAClB,EAAiB,CAAA,YAAA,EAAA,CAAA;;AAbmB,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAkB,iCAAA,CAAA,OAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,QAAA,CAAA,6DAAA,CAAA,6BAAA,EAAA,GAAA,CAAA,iCAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,CAAA,4EAAA,CAAA,iCAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,CAAA;mIA2D7C,uBAAuB,EAAAiB,0BAAA,EAAAC,2BAAA,EAAAC,gCAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFA1CvB,6BAA6B,EAAA,CAAA;cAnBzC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;AAeT,IAAA,CAAA;AACJ,aAAA,CAAA;gBAIW,uBAAuB,EAAA,CAAA;kBAD9B,SAAS;mBAAC,OAAO,CAAA;;AA2BtB;;AAEG;AAYI,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,6BAAoC,CAAA;AAqH7E;;AAEG;IACH,WACI,CAAA,QAAkB,EACR,yCAAoF,EAAA;QAE9F,KAAK,CAAC,QAAQ,CAAC,CAAC;QAFN,IAAyC,CAAA,yCAAA,GAAzC,yCAAyC,CAA2C;AA/FlG;;AAEG;AAEI,QAAA,IAAA,CAAA,aAAa,GAAyC,IAAI,YAAY,EAA0B,CAAC;;AAIjG,QAAA,IAAA,CAAA,gBAAgB,GAAuC,IAAI,YAAY,EAAwB,CAAC;;AAIhG,QAAA,IAAA,CAAA,qBAAqB,GAA2C,IAAI,YAAY,EAA4B,CAAC;AAEpH;;AAEG;QAEI,IAA2B,CAAA,2BAAA,GAAG,KAAK,CAAC;AAgFvC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAa,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,OAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;QACjG,IAAI,CAAC,UAAU,GAAa,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,OAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AACxG,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;KAC/B;AApID;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,yBAAyB,CAAC;KACpC;AAED;;AAEG;AACH,IAAA,IAAW,YAAY,GAAA;QACnB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE;AACjE,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;AACjD,SAAA;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IA0ED,IACW,SAAS,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,CAAG,EAAA,KAAK,MAAM,CAAC;KACpC;AAED,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED;;AAEG;AACH,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAC3C;AA8BD;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAkB,KAAI;gBACjE,IAAI,MAAM,CAAC,OAAO,EAAE;AAChB,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AACxC,iBAAA;gBAED,IAAI,MAAM,CAAC,KAAK,EAAE;AACd,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AACtC,iBAAA;gBAED,IAAI,MAAM,CAAC,OAAO,EAAE;AAChB,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AACxC,iBAAA;AAED,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;aACjD,CAAC,CAAC,CAAC;AACX,SAAA;KACJ;AAED;;;;;AAKG;AACK,IAAA,uBAAuB,CAAC,KAAa,EAAA;AACzC,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,KAAK,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC;KACjG;AAED;;AAEG;IACI,GAAG,GAAA;AACN,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAE1B,QAAA,IAAI,CAAC,yCAAyC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACpG;AAED;;AAEG;AACI,IAAA,MAAM,CAAC,IAAS,EAAA;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAE7F,QAAA,IAAI,CAAC,yCAAyC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACvG;AAED;;AAEG;AACI,IAAA,MAAM,CAAC,IAAS,EAAA;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,CAAC,EAAE;AACX,YAAA,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAC7B,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAE9F,YAAA,IAAI,CAAC,yCAAyC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAC/F,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC1G,SAAA;KACJ;AAED;;AAEG;AACI,IAAA,QAAQ,CAAC,IAAS,EAAA;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,YAAA,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAC7B,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAE7F,YAAA,IAAI,CAAC,yCAAyC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAC9F,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;AACzG,SAAA;KACJ;AAED;;AAEG;IACI,kBAAkB,GAAA;QACrB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;IAEM,aAAa,CAAC,KAAa,EAAE,MAAc,EAAA;AAC9C,QAAA,QAAQ,MAAM;AACV,YAAA,KAAK,MAAM;gBACP,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAC;AAC5C,YAAA,KAAK,YAAY;gBACb,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA,QAAA,EAAW,KAAK,CAAA,CAAE,CAAC;AACnD,YAAA,KAAK,eAAe;gBAChB,OAAO,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA,WAAA,EAAc,KAAK,CAAA,CAAE,CAAC;AACtD,YAAA,SAAS,OAAO,IAAI,CAAC;AACxB,SAAA;KACJ;IAEM,YAAY,CAAC,IAAS,EAAE,KAAa,EAAA;AACxC,QAAA,MAAM,KAAK,GAAyB,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AAC7D,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElC,OAAO,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAClG;IAEM,aAAa,CAAC,IAAS,EAAE,KAAa,EAAA;AACzC,QAAA,MAAM,KAAK,GAA6B,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AACjE,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvC,OAAO,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;KACrF;AAED;;;AAGG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvC,gBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7B,aAAA;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACpB,gBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7B,aAAA;AACJ,SAAA;QAED,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;YACzD,OAAO;AACH,gBAAA,eAAe,EAAE;AACb,oBAAA,MAAM,EAAE,IAAI;AACf,iBAAA;aACJ,CAAC;AACL,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5B;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;YACH,GAAI,KAAK,CAAC,WAAW,EAAE;AACvB,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,IAAI,EAAE,EAAE;SACX,CAAC;KACL;AAED;;AAEG;IACK,UAAU,GAAA;QACd,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,KAAK,GAA2B,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrD,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,YAAA,OAAO,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;AAC3B,SAAA;KACJ;;iHAxTQ,uBAAuB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAC,yCAAA,CAAA,CAAA,CAAA,EAAA,CAAA;yGAAvB,uBAAuB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,sCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;oCAwBlB,0BAA0B,EAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;AC1H5C,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAA0C,aAAA,CAAA,CAAA,EAAA,eAAA,EAAA,CAAA,CAAA,CAAA;QAGpC,EAmCsB,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,EAAA,EAAA,EAAA,EAAA,qBAAA,EAAA,CAAA,CAAA,CAAA;QACxB,EAAgB,CAAA,YAAA,EAAA,CAAA;QAChB,EAI+G,CAAA,UAAA,CAAA,CAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;QACjH,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAA6D,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;QAC7D,EAAyE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAqB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;QA/C/E,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAEtB,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA3B,QAAA,EAAA,CAAA,UAAA,CAAA,aAAA,EAAA,GAAA,CAAA,WAAA,CAA2B,gCAAA,CAAA,iBAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QACF,EAAU,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAV,EAAU,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QAqC9B,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAb,EAAa,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QAMb,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QACoC,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArB,EAAqB,CAAA,iBAAA,CAAA,GAAA,CAAA,iBAAA,CAAA,CAAA;;ADmDnF,uBAAuB,GAAA,UAAA,CAAA;AAXnC,IAAA,iBAAiB,CAAC;QACf,IAAI,EAAE,mBAAmB,CAAC,KAAK;AAC/B,QAAA,MAAM,EAAE,aAAa;AACrB,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,WAAW,EAAE,CAA6C,2CAAA,CAAA;AAC1D,QAAA,eAAe,EAAE,6BAA6B;KACjD,CAAC;qCA8HgB,QAAQ;QACmC,yCAAyC,CAAA,CAAA;AA1HzF,CAAA,EAAA,uBAAuB,CAyTnC,CAAA;uFAzTY,uBAAuB,EAAA,CAAA;cAJnC,SAAS;2BACI,8BAA8B,EAAA,QAAA,EAAA,wwHAAA,EAAA,CAAA;gHA4BjC,gBAAgB,EAAA,CAAA;kBADtB,YAAY;AAAC,YAAA,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAOnD,aAAa,EAAA,CAAA;kBADnB,MAAM;YAKA,gBAAgB,EAAA,CAAA;kBADtB,MAAM;YAKA,qBAAqB,EAAA,CAAA;kBAD3B,MAAM;YAOA,2BAA2B,EAAA,CAAA;kBADjC,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAOC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAIC,WAAW,EAAA,CAAA;kBADjB,KAAK;YAIC,WAAW,EAAA,CAAA;kBADjB,KAAK;YAIC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAOC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAIC,aAAa,EAAA,CAAA;kBADnB,KAAK;YAIC,cAAc,EAAA,CAAA;kBADpB,KAAK;YAIK,SAAS,EAAA,CAAA;kBADnB,KAAK;YAaK,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,iBAAiB,CAAA;YAWtB,SAAS,EAAA,CAAA;kBADhB,SAAS;mBAAC,WAAW,CAAA;;;AE1M1B;AACM,MAAgB,0BAA2B,SAAQ,6BAAuC,CAAA;AAkE5F;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC;KACzC;AAhDD;;AAEG;AACH,IAAA,IAAc,OAAO,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;KACjC;AAED;;AAEG;AACH,IAAA,IAAc,QAAQ,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;KAC9B;AAED;;AAEG;AACH,IAAA,IAAc,MAAM,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;KAC7B;AAED;;AAEG;AACH,IAAA,IAAc,OAAO,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;KAC9B;AAED;;AAEG;AACH,IAAA,IAAc,SAAS,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;KAChC;AAiBD;;AAEG;AACI,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,OAAO,EAAE;;AAEd,YAAA,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AACvE,YAAA,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACvE,IAAI,kBAAkB,IAAI,kBAAkB,EAAE;AAC1C,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACjD,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;AACO,IAAA,cAAc,CAAC,KAAe,EAAA;QACpC,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAA,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAC/B;AAED;;AAEG;AACO,IAAA,cAAc,CAAC,CAAc,EAAA;AACnC,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,GAAG,EAAE;AACV,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;AACjD,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC/E,MAAM,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACrE,OAAO;AACH,oBAAA,OAAO,EAAE;AACL,wBAAA,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;AACrC,qBAAA;iBACJ,CAAC;AACL,aAAA;AACJ,SAAA;QACD,IAAI,IAAI,CAAC,GAAG,EAAE;AACV,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;AACjD,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC/E,MAAM,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACrE,OAAO;AACH,oBAAA,OAAO,EAAE;AACL,wBAAA,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;AACrC,qBAAA;iBACJ,CAAC;AACL,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;AACO,IAAA,cAAc,CAAC,CAAc,EAAA;AACnC,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,GAAG,EAAE;AACV,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;AACjD,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC/E,MAAM,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACrE,OAAO;AACH,oBAAA,OAAO,EAAE;AACL,wBAAA,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;AACrC,qBAAA;iBACJ,CAAC;AACL,aAAA;AACJ,SAAA;QACD,IAAI,IAAI,CAAC,GAAG,EAAE;AACV,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;AACjD,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC/E,MAAM,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACrE,OAAO;AACH,oBAAA,OAAO,EAAE;AACL,wBAAA,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;AACrC,qBAAA;iBACJ,CAAC;AACL,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;AACO,IAAA,kBAAkB,CAAC,CAAc,EAAA;AACvC,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,GAAG,EAAE;AACV,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;AACrD,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC/E,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACjE,OAAO;AACH,oBAAA,OAAO,EAAE;AACL,wBAAA,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;AACrC,qBAAA;iBACJ,CAAC;AACL,aAAA;AACJ,SAAA;QACD,IAAI,IAAI,CAAC,GAAG,EAAE;AACV,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;AACrD,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAC/E,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACjE,OAAO;AACH,oBAAA,OAAO,EAAE;AACL,wBAAA,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;AACrC,qBAAA;iBACJ,CAAC;AACL,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;;uHAlMiB,0BAA0B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;4GAA1B,0BAA0B,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,CAAA;uFAA1B,0BAA0B,EAAA,CAAA;cAF/C,SAAS;2DASC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAOC,GAAG,EAAA,CAAA;kBADT,KAAK;YAOC,GAAG,EAAA,CAAA;kBADT,KAAK;;;;;ICVJ,EAA8F,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAAnB,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,iBAAA,CAAA,UAAA,CAAA,CAAA;;;;IAG3G,EAEoH,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAF0D,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,2EAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,6BAAmB,CAAA,CAAA,EAAA,CAAC,yOACxL,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,iBAAA,CAAA,MAAA,EAAA,MAAA,CAA8B,CAAA,CAD0J,EAAA,CAAA,CAAA;IAGzM,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;;;;AAH0C,IAAA,EAAA,CAAA,WAAA,CAAA,cAAA,EAAA,MAAA,CAAA,aAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAA8C,4CAAA,CAAA,gCAAA,EAAA,CAAA,MAAA,CAAA,cAAA,CAAA,CAAA;AADhD,IAAA,EAAA,CAAA,WAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,SAAA,CAAqC,mEAAA,CAAA,cAAA,EAAA,MAAA,CAAA,aAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA,CAAA;IAGpF,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,IAAA,CAAA,OAAA,EAAA,EAAA,GAAA,CAAA,CAAA;;;IALF,EAAmE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACjE,EAIS,CAAA,UAAA,CAAA,CAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACX,EAAM,CAAA,YAAA,EAAA,CAAA;;;IALiK,EAAO,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAP,EAAO,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,CAAA;;;IAOhL,EAA8E,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,EAAA,CAAA,CAAA;;;IAAvC,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;ACXxD;;AAEG;AAKG,MAAO,0BAA2B,SAAQ,0BAA0B,CAAA;AAuFtE;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG;YACf,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;YACzD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;YACzD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO;YAC1D,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS;YAC5D,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;YAC3D,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;YACzD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;SAC9D,CAAC;QACF,IAAI,CAAC,UAAU,GAAG;YACd,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM;YACrD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM;YACrD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO;YACtD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS;YACxD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ;YACvD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM;YACrD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ;SAC1D,CAAC;KACL;AAhHD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,4BAA4B,CAAC;KACvC;AAOD;;AAEG;AACH,IAAA,IAAY,YAAY,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;KACrE;AAED;;AAEG;AACH,IAAA,IAAY,aAAa,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;KAClE;AAED;;AAEG;AACH,IAAA,IAAW,UAAU,GAAA;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QAC1F,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC7C,QAAA,OAAO,CAAG,EAAA,SAAS,CAAI,CAAA,EAAA,QAAQ,EAAE,CAAC;KACrC;AAED;;AAEG;AACH,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC;KACnF;AAED;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC;KACnF;AAED;;AAEG;AAEH,IAAA,IAAW,SAAS,GAAA;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3F,SAAA;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAwDD;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;AAED;;AAEG;AACI,IAAA,iBAAiB,CAAC,KAAY,EAAA;QACjC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;AAED;;AAEG;AACI,IAAA,aAAa,CAAC,KAAY,EAAA;QAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;AAED;;AAEG;AACI,IAAA,kBAAkB,CAAC,KAAY,EAAA;QAClC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;AAED;;AAEG;IACI,iBAAiB,GAAA;QACpB,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,SAAA;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;AAED;;AAEG;IACI,aAAa,GAAA;QAChB,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE;AACzB,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,SAAA;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;AAED;;AAEG;AACI,IAAA,SAAS,CAAC,GAAS,EAAA;AACtB,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC5H;AAED;;AAEG;AACI,IAAA,aAAa,CAAC,GAAS,EAAA;QAC1B,OAAO,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;KACxD;AAED;;AAEG;IACI,KAAK,GAAA;AACR,QAAA,MAAM,OAAO,GAA8B,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,aAAa,CACpF,gFAAgF,CACnF,CAAC;AACF,QAAA,IAAI,OAAO,EAAE;YACT,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO;AACV,SAAA;QAED,KAAK,CAAC,KAAK,EAAE,CAAC;KACjB;IAGO,UAAU,GAAA;QACd,IAAI,CAAC,KAAK,EAAE,CAAC;KAChB;AAED;;AAEG;IACI,SAAS,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1C,SAAA;KACJ;AAED;;AAEG;IACI,aAAa,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACpD,SAAA;KACJ;AAED;;AAEG;IACI,IAAI,CAAC,IAAY,EAAE,KAAa,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;AAED;;AAEG;IACI,iBAAiB,CAAC,KAAoB,EAAE,GAAa,EAAA;AACxD,QAAA,IAAI,QAAc,CAAC;QACnB,QAAQ,KAAK,CAAC,OAAO;AACjB,YAAA,KAAK,OAAO,CAAC,OAAO,EAAE;;gBAElB,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9B,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzC,MAAM;AACT,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,SAAS,EAAE;;gBAEpB,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9B,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzC,MAAM;AACT,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,SAAS,EAAE;;gBAEpB,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9B,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzC,MAAM;AACT,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,UAAU,EAAE;;gBAErB,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9B,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzC,MAAM;AACT,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,IAAI,EAAE;gBACf,IAAI,KAAK,CAAC,OAAO,EAAE;;oBAEf,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,oBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvB,iBAAA;AAAM,qBAAA;;oBAEH,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACzC,oBAAA,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,QAAQ,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC;AACxE,iBAAA;gBACD,MAAM;AACT,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,GAAG,EAAE;gBACd,IAAI,KAAK,CAAC,OAAO,EAAE;;oBAEf,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;AAE9B,oBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;oBAEpB,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;;AAE3C,oBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAEvB,iBAAA;AAAM,qBAAA;;oBAEH,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACzC,oBAAA,MAAM,cAAc,GAAG,CAAC,GAAG,cAAc,CAAC;AAC1C,oBAAA,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,QAAQ,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC;AACxE,iBAAA;gBACD,MAAM;AACT,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,MAAM,EAAE;;gBAEjB,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC3C,MAAM;AACT,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,QAAQ,EAAE;;gBAEnB,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC3C,MAAM;AACT,aAAA;AACD,YAAA,SAAS;gBACL,OAAO;AACV,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE;YACrC,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;;QAG3B,KAAK,CAAC,wBAAwB,EAAE,CAAC;QACjC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;AAED;;;AAGG;AACO,IAAA,cAAc,CAAC,KAAK,EAAA;QAC1B,IAAI,CAAC,YAAY,GAAG,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;AAChF,QAAA,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC3C;AAED;;;AAGG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACtD;AAED;;AAEG;IACK,iBAAiB,GAAA;QACrB,MAAM,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;AACjF,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1F,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACvF,QAAA,MAAM,kBAAkB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;AAC/G,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;AAEjG,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,WAAW,GAAe,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;QAGjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,kBAAkB,GAAG,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAChH,WAAW,CAAC,IAAI,CAAC;AACb,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,cAAc,EAAE,KAAK;AACrB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;AAC5B,aAAA,CAAC,CAAC;AACN,SAAA;;AAGD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;AACvC,YAAA,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;AACzB,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YACvE,WAAW,CAAC,IAAI,CAAC;AACb,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,OAAO,EAAE,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,OAAO;AACnC,uBAAA,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,QAAQ;uBACnC,UAAU,KAAK,IAAI,CAAC,MAAM;AACjC,gBAAA,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;AAC5B,aAAA,CAAC,CAAC;AACN,SAAA;;AAGD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC,EAAE,EAAE;AACzD,YAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B,WAAW,GAAG,EAAE,CAAC;AACjB,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpC,aAAA;YACD,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YACvE,WAAW,CAAC,IAAI,CAAC;AACb,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,OAAO,EAAE,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,OAAO;AACnC,uBAAA,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,QAAQ;uBACnC,UAAU,KAAK,IAAI,CAAC,MAAM;AACjC,gBAAA,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;AAC5B,aAAA,CAAC,CAAC;AACN,SAAA;;AAGD,QAAA,IAAI,aAAa,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC,EAAE,EAAE;AACrC,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YACxE,WAAW,CAAC,IAAI,CAAC;AACb,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,cAAc,EAAE,KAAK;AACrB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;AAC5B,aAAA,CAAC,CAAC;AACN,SAAA;;;AAID,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,WAAW,GAAG,EAAE,CAAC;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACxB,gBAAA,aAAa,EAAE,CAAC;AAChB,gBAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC;gBACpF,WAAW,CAAC,IAAI,CAAC;AACb,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,cAAc,EAAE,KAAK;AACrB,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;AAC5B,iBAAA,CAAC,CAAC;AACN,aAAA;AACD,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpC,SAAA;KAEJ;AAED;;AAEG;AACK,IAAA,aAAa,CAAC,IAAU,EAAA;AAC5B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACjC,QAAA,MAAM,QAAQ,GAAG,CAA6C,0CAAA,EAAA,SAAS,IAAI,CAAC;QAC5E,OAAqB,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KAChF;AAED;;AAEG;AACK,IAAA,WAAW,CAAC,IAAU,EAAA;;QAE1B,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,EAAE;;AAEZ,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/C,UAAU,CAAC,MAAK;AACZ,gBAAA,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACrC,gBAAA,IAAI,SAAS,EAAE;oBACX,SAAS,CAAC,KAAK,EAAE,CAAC;AACrB,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;YACH,SAAS,CAAC,KAAK,EAAE,CAAC;AACrB,SAAA;KACJ;AAEM,IAAA,+BAA+B,CAAC,GAAS,EAAA;AAC5C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KAC7E;;uHAjdQ,0BAA0B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;4GAA1B,0BAA0B,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAvB,MAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,gCAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,mCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDzBvC,EAAsF,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,aAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAGd,EAAgB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAM,CAAA,YAAA,EAAA,CAAA;QACxF,EACsI,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AADpC,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,2DAAA,CAAA,MAAA,EAAA,EAAA,OAAS,8BAA0B,CAAC,EAAA,CAAA,CAAA;QAEpI,EAAgD,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAClD,EAAS,CAAA,YAAA,EAAA,CAAA;QACT,EAEgF,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAFT,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,2DAAA,CAAA,MAAA,EAAA,EAAA,OAAS,6BAAyB,CAAC,EAAA,CAAA,CAAA;QAGxG,EAA0C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC5C,EAAS,CAAA,YAAA,EAAA,CAAA;QACT,EACsI,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAD/D,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,2DAAA,CAAA,MAAA,EAAA,EAAA,OAAS,yBAAqB,CAAC,EAAA,CAAA,CAAA;QAEpG,EAA4C,CAAA,SAAA,CAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;AAC9C,QAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;QAEX,EAAoC,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAClC,EAAiH,CAAA,UAAA,CAAA,EAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QACnH,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAMM,CAAA,UAAA,CAAA,EAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QACR,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAA8E,CAAA,UAAA,CAAA,EAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,EAAA,CAAA,CAAA;QAChF,EAAwB,CAAA,YAAA,EAAA,CAAA;;QA9BD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAAe,EAA6B,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAGzC,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA3B,EAA2B,CAAA,WAAA,CAAA,WAAA,EAAA,QAAA,CAAA,CAAA;QAAC,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhB,EAAgB,CAAA,iBAAA,CAAA,GAAA,CAAA,UAAA,CAAA,CAAA;QACX,EAA0B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA1B,QAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,GAAA,CAAA,aAAA,CAA0B,CAAA,OAAA,EAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,QAAA,CAAA,SAAA,CAAA,CAAA;QAC/B,EAAmE,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,QAAA,CAAA,SAAA,CAAA,CAAA;QAI7H,EAA6D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA7D,EAA6D,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,QAAA,CAAA,aAAA,CAAA,CAAA;QAC7D,EAAuE,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,QAAA,CAAA,aAAA,CAAA,CAAA;QAIvE,EAAyD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAzD,EAAyD,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,QAAA,CAAA,SAAA,CAAA,CAAA;QAAC,EAAmE,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,QAAA,CAAA,SAAA,CAAA,CAAA;QAKvD,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAd,EAAc,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;QAEzC,EAAY,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAZ,EAAY,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAQ5C,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,OAAA,CAAA,CAAA;;AC2MnC,UAAA,CAAA;AAAC,IAAAI,OAAK,EAAE;;;;AAGP,CAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;uFAlNQ,0BAA0B,EAAA,CAAA;cAJtC,SAAS;2BACI,iCAAiC,EAAA,QAAA,EAAA,61EAAA,EAAA,CAAA;2DAmNnC,UAAU,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;;ICjOlB,EAAuM,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;IAAhJ,EAAgD,CAAA,WAAA,CAAA,wBAAA,EAAA,CAAA,MAAA,CAAA,cAAA,CAAA,CAAA;IAAC,EAA4B,CAAA,UAAA,CAAA,aAAA,EAAA,MAAA,CAAA,YAAA,CAAA,CAAA;AAAvG,IAAA,EAAA,CAAA,WAAA,CAAA,aAAA,EAAA,IAAA,CAAyB,CAAA,OAAA,EAAA,MAAA,CAAA,aAAA,GAAA,MAAA,CAAA,oBAAA,GAAA,IAAA,CAAA,CAAA;;;IACtD,EAAwI,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA9H,EAAgD,CAAA,WAAA,CAAA,wBAAA,EAAA,CAAA,MAAA,CAAA,cAAA,CAAA,CAAA;IAAC,EAA0D,CAAA,WAAA,CAAA,OAAA,EAAA,MAAA,CAAA,aAAA,GAAA,MAAA,CAAA,oBAAA,GAAA,IAAA,CAAA,CAAA;IAAC,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAX,EAAW,CAAA,iBAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;;IAEnJ,EACqB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAkE,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAAzE,EAAkE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlE,EAAkE,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,IAAA,CAAA,UAAA,CAAA,QAAA,CAAA,CAAA;;;IACvF,EAG2C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;;;IADzC,EAAsC,CAAA,UAAA,CAAA,YAAA,EAAA,MAAA,CAAA,uBAAA,CAAA,CAAA,OAAA,EAAA,MAAA,CAAA,aAAA,CAAA,4CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,CAAA;;;IAG1C,EAAqE,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAAzC,EAAsB,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,SAAA,CAAA,CAAA;IAAC,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAX,EAAW,CAAA,iBAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;;IAChF,EAAyE,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA7C,EAAwB,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,WAAA,CAAA,CAAA;IAAC,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;;;AAlBxF,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAyF,eAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;AAKtD,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,wEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,KAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAmB,CAAU,OAAA,EAAA,SAAA,gEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAmB,CAAA,iBAAA,EAAA,CAAA,CAA7B,EAAA,CAAA,CAAA;IAHlD,EAGiF,CAAA,YAAA,EAAA,CAAA;IAEjF,EAAuM,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACvM,EAA0J,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAE1J,EAC8F,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC9F,EAG2C,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC7C,EAAQ,CAAA,YAAA,EAAA,CAAA;IACR,EAAuF,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACvF,EAA6F,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC/F,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAf8B,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,eAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA,UAAA,EAAA,MAAA,CAAA,QAAA,CAAA,sCAAA,CAAA,SAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA;IAFxC,EAAuD,CAAA,WAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,KAAA,GAAA,MAAA,CAAA,KAAA,CAAA,SAAA,GAAA,IAAA,CAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,OAAA,GAAA,MAAA,CAAA,KAAA,CAAA,WAAA,GAAA,IAAA,CAAA,8BAAA,CAAA,eAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAKvE,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,MAAA,CAAA,YAAA,CAAA,CAAA;IACpB,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnB,EAAmB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,YAAA,CAAA,CAAA;IAEnB,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAEd,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAAA;IAKtB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAX,EAAW,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA;IACX,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;;IAclB,EAAqE,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAAzC,EAAsB,CAAA,UAAA,CAAA,IAAA,EAAA,OAAA,CAAA,KAAA,CAAA,SAAA,CAAA,CAAA;IAAC,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAX,EAAW,CAAA,iBAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;;;IAChF,EAAyE,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA7C,EAAwB,CAAA,UAAA,CAAA,IAAA,EAAA,OAAA,CAAA,KAAA,CAAA,WAAA,CAAA,CAAA;IAAC,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,iBAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA;;;;IAZ1F,EAA4F,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;AAMrD,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,0FAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,KAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAmB,CAAU,OAAA,EAAA,SAAA,kFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAmB,CAAA,iBAAA,EAAA,CAAA,CAA7B,EAAA,CAAA,CAAA;IAHpD,EAGmF,CAAA,YAAA,EAAA,CAAA;IACnF,EAEO,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IACT,EAAQ,CAAA,YAAA,EAAA,CAAA;IACR,EAAuF,CAAA,UAAA,CAAA,CAAA,EAAA,kEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACvF,EAA6F,CAAA,UAAA,CAAA,CAAA,EAAA,kEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAC/F,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;IAb0C,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,MAAA,CAAA,CAAA;IAK5B,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,eAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA,UAAA,EAAA,MAAA,CAAA,QAAA,CAAA,sCAAA,CAAA,SAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA;IAF1C,EAAuD,CAAA,WAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,KAAA,GAAA,MAAA,CAAA,KAAA,CAAA,SAAA,GAAA,IAAA,CAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,OAAA,GAAA,MAAA,CAAA,KAAA,CAAA,WAAA,GAAA,IAAA,CAAA,8BAAA,CAAA,eAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAQzE,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAX,EAAW,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA;IACX,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;;IAIxB,EACmD,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAAA,CAAA;IACjD,EAA4E,CAAA,kBAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA;IAC9E,EAAW,CAAA,YAAA,EAAA,CAAA;;;IAHuB,EAAwC,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,iBAAA,IAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;IAExC,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,eAAA,CAAA,CAAA;;ACjC9D;AAeA;AACM,MAAO,gCAAiC,SAAQ,wCAAwC,CAAA;;AAAjF,mBAAA,gCAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,6CAAA,CAAA,CAAA,OAAA,SAAA,wCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,6CAAA,KAAA,6CAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,gCAAgC,SAAhC,gCAAgC,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;kHAAhC,gCAAgC,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,yCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QAbzC,EASK,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AATkC,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,iFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,GAAA,MAAA,CAAA,EAAA,CAAkB,gIAInC,GAAgD,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,MAAA,CAAQ,IAJrB,CAKU,qBAAA,EAAA,SAAA,uFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAA6D,QAAQ,CAL/E,EAAA,CAAA,CAAA;QASpD,EAAiB,CAAA,YAAA,EAAA,CAAA;;QATiB,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,IAAA,CAAA,iDAAA,CAAA,aAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,WAAA,CAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,QAAA,CAAA,wEAAA,CAAA,UAAA,EAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,IAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,CAAA,4EAAA,CAAA,iCAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,CAAA;iFA8BhD,0BAA0B,EAAAoB,0BAAA,EAAAC,2BAAA,EAAAC,gCAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAjB1B,gCAAgC,EAAA,CAAA;cAf5C,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWT,IAAA,CAAA;AACJ,aAAA,CAAA;;AAKD;;AAEG;AAYI,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,6BAAsC,CAAA;AAgClF;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;KACpC;AAvCD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,4BAA4B,CAAC;KACvC;AAoBD,IAAA,IACW,aAAa,GAAA;AACpB,QAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;KAChC;AAaD;;AAEG;IACI,iBAAiB,GAAA;;;QAGpB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AACtC,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,SAAA;KACJ;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;AAED;;;AAGG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;;;QAG7B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAChD,YAAA,IAAI,YAAY,EAAE;AAAE,gBAAA,OAAO,YAAY,CAAC;AAAE,aAAA;AAC7C,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5B;;uHA/EQ,0BAA0B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;4GAA1B,0BAA0B,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,uCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;QDvCvC,EAmBM,CAAA,UAAA,CAAA,CAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEN,EAcwB,CAAA,UAAA,CAAA,CAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,EAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QAExB,EAGW,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAAA,CAAA;QACX,EAA6D,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;;QAzCvD,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,gBAAA,CAAA,CAAA;QAqBJ,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,kBAAA,CAAA,CAAA;QAgBrC,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAIV,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;ACFxB,0BAA0B,GAAA,UAAA,CAAA;AAXtC,IAAA,iBAAiB,CAAC;QACf,IAAI,EAAE,mBAAmB,CAAC,OAAO;AACjC,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,WAAW,EAAE,qCAAqC;AAClD,QAAA,eAAe,EAAE,gCAAgC;KACpD,CAAC;qCAyCgB,QAAQ,CAAA,CAAA;AApCb,CAAA,EAAA,0BAA0B,CAgFtC,CAAA;uFAhFY,0BAA0B,EAAA,CAAA;cAJtC,SAAS;2BACI,iCAAiC,EAAA,QAAA,EAAA,m5FAAA,EAAA,CAAA;2DAgBpC,aAAa,EAAA,CAAA;kBADnB,KAAK;YAOC,YAAY,EAAA,CAAA;kBADlB,KAAK;YAOC,oBAAoB,EAAA,CAAA;kBAD1B,KAAK;YAIK,aAAa,EAAA,CAAA;kBADvB,WAAW;mBAAC,kCAAkC,CAAA;;;;;;IC7D3C,EACoK,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAA5J,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,iEAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,qCAA2B,CAAA,CAAA,EAAA,CAAC,oKAAY,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,aAAA,CAAA,MAAA,CAAqB,CAAA,CAAjC,EAAA,CAAA,CAAA;IAAuH,EAAgB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;;;;IAD5I,EAAsC,CAAA,WAAA,CAAA,cAAA,EAAA,OAAA,CAAA,UAAA,CAAA,CAAA;IAAC,EAAqC,CAAA,UAAA,CAAA,UAAA,EAAA,OAAA,CAAA,UAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA;IAC7C,EAAmF,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,KAAA,CAAA,QAAA,CAAA,IAAA,GAAA,OAAA,CAAA,OAAA,CAAA,CAAA;IAAC,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,iBAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA;;;;IAKpL,EAEoI,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IADpF,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,kEAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,0CAA+B,CAAA,CAAA,EAAA,CAAC,uKACtE,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,eAAA,CAAA,MAAA,CAAuB,CAAA,CAD+C,EAAA,CAAA,CAAA;IAC2C,EAAkB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;;;;IAF1G,EAAwC,CAAA,WAAA,CAAA,cAAA,EAAA,SAAA,CAAA,UAAA,CAAA,CAAA;IACrF,EAAuC,CAAA,UAAA,CAAA,UAAA,EAAA,SAAA,CAAA,UAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA;IACH,EAAuF,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,KAAA,CAAA,QAAA,CAAA,MAAA,GAAA,SAAA,CAAA,OAAA,CAAA,CAAA;IAAC,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,iBAAA,CAAA,SAAA,CAAA,OAAA,CAAA,CAAA;;;;IAKtJ,EAG8C,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IADtC,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wEAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,YAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,qDAAyC,CAAA,CAAA,EAAA,CAAC,8KACxC,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,iBAAA,CAAA,MAAA,CAAyB,CAAA,CADe,EAAA,CAAA,CAAA;IACb,EAAoB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;;;IAHlB,EAA6C,CAAA,sBAAA,CAAA,qBAAA,EAAA,YAAA,CAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC9F,EAA0C,CAAA,WAAA,CAAA,cAAA,EAAA,YAAA,CAAA,UAAA,CAAA,CAAA;IAAC,EAAyC,CAAA,UAAA,CAAA,UAAA,EAAA,YAAA,CAAA,UAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA;IAE9C,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,iBAAA,CAAA,YAAA,CAAA,OAAA,CAAA,CAAA;;;;IANpE,EACyE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAApE,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,4DAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,+BAAuB,CAAA,CAAA,EAAA,CAAC,+JAAW,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,cAAA,CAAA,MAAA,CAAsB,CAAA,CAAjC,EAAA,CAAA,CAAA;IACpC,EAAqC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAA6D,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;IACxG,EAG2E,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAC7E,EAAM,CAAA,YAAA,EAAA,CAAA;;;IALiC,EAA6D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7D,EAA6D,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,KAAA,CAAA,QAAA,CAAA,QAAA,CAAA,CAAA;IACvD,EAAY,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAZ,EAAY,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;;AAM3D,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAA6D,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAGzD,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,+DAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAuB,CAAA,eAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACjC,EAAgE,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAClE,EAAS,CAAA,YAAA,EAAA,CAAA;IACT,EAEiC,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAA/B,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,+DAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAoB,CAAA,OAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAC9B,EAA+D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AACjE,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;;;IATa,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxD,EAAwD,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;IAC5E,EAAkE,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;IAI9C,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxD,EAAwD,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;IAC5E,EAAkE,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;;IAMxE,EAA8E,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,EAAA,CAAA,CAAA;;;IAAvC,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;ACrBxD,IAAY,QAGX,CAAA;AAHD,CAAA,UAAY,QAAQ,EAAA;AAChB,IAAA,QAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,QAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACb,CAAC,EAHW,QAAQ,KAAR,QAAQ,GAGnB,EAAA,CAAA,CAAA,CAAA;AAeD;;AAEG;AAKG,MAAO,uBAAwB,SAAQ,0BAA0B,CAAA;AA4HnE;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAhHpB;;AAEG;QACK,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;QASjB,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AACf,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AAC9B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;AAoD9C;;AAEG;QACK,IAAQ,CAAA,QAAA,GAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAEtD;;AAEG;QACK,IAAU,CAAA,UAAA,GAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAOxD;;AAEG;QACK,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AA6BzB,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAChB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC;KAC1E;AApID;;AAEG;AACK,IAAA,WAAW,eAAe,GAAA;;AAE9B,QAAA,OAAO,CAAC,CAAC;KACZ;AAED;;AAEG;AACH,IAAA,IAAY,QAAQ,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,EAAE,CAAC;KACzC;AAMD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,yBAAyB,CAAC;KACpC;AAYD;;AAEG;AACH,IAAA,IAAY,YAAY,GAAA;QACpB,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC;KACtF;AAED;;AAEG;AACH,IAAA,IAAY,cAAc,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC;KACpE;AAsBD;;AAEG;AACH,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;;AAED,QAAA,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC;KACpG;AA2BD,IAAA,IAAY,eAAe,GAAA;;AAEvB,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,KAAK,KAAK,CAAC;KACxD;AAED;;AAEG;AAEH,IAAA,IAAW,SAAS,GAAA;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxF,SAAA;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAcD;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;;AAEjB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC9B;AAED;;AAEG;AACI,IAAA,kBAAkB,CAAC,KAAe,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC;KAC1C;AAED;;AAEG;IACI,aAAa,CAAC,KAAiB,EAAE,IAAe,EAAA;AACnD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACvE,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED;;AAEG;AACI,IAAA,aAAa,CAAC,KAAoB,EAAA;QACrC,QAAQ,KAAK,CAAC,OAAO;AACjB,YAAA,KAAK,OAAO,CAAC,OAAO,EAAE;AAAE,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAAC,MAAM;AAAE,aAAA;AACpF,YAAA,KAAK,OAAO,CAAC,SAAS,EAAE;AAAE,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAAC,MAAM;AAAE,aAAA;AACjF,YAAA,KAAK,OAAO,CAAC,KAAK,EAAE;gBAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAAC,OAAO;AAAE,aAAA;AAC1D,YAAA,SAAS;gBAAE,OAAO;AAAE,aAAA;AACvB,SAAA;QACD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED;;AAEG;AACI,IAAA,WAAW,CAAC,KAAiB,EAAA;QAChC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAM,EAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1F,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED;;AAEG;AACI,IAAA,cAAc,CAAC,KAAY,EAAA;QAC9B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED;;AAEG;IACI,gBAAgB,GAAA;AACnB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;KAC5E;AAED;;AAEG;IACI,YAAY,GAAA;AACf,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;KACxE;AAED;;AAEG;AACK,IAAA,OAAO,CAAC,IAAY,EAAA;AACxB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;AACpC,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;KACpE;AAED;;AAEG;IACI,eAAe,CAAC,KAAiB,EAAE,MAAiB,EAAA;AACvD,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED;;AAEG;AACI,IAAA,eAAe,CAAC,KAAoB,EAAA;QACvC,QAAQ,KAAK,CAAC,OAAO;AACjB,YAAA,KAAK,OAAO,CAAC,OAAO,EAAE;AAAE,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAAC,MAAM;AAAE,aAAA;AACtF,YAAA,KAAK,OAAO,CAAC,SAAS,EAAE;AAAE,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBAAC,MAAM;AAAE,aAAA;AACnF,YAAA,KAAK,OAAO,CAAC,KAAK,EAAE;gBAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAAC,OAAO;AAAE,aAAA;AAC1D,YAAA,SAAS;gBAAE,OAAO;AAAE,aAAA;AACvB,SAAA;QACD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED;;AAEG;AACI,IAAA,aAAa,CAAC,KAAiB,EAAA;QAClC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,IAAM,EAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QACpG,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED;;AAEG;IACI,kBAAkB,GAAA;AACrB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACtF,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;KAClC;AAED;;AAEG;IACI,cAAc,GAAA;AACjB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;KAC9B;AAED;;AAEG;AACK,IAAA,SAAS,CAAC,MAAc,EAAA;AAC5B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;AACpC,QAAA,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;KACpE;AAED;;AAEG;AACK,IAAA,aAAa,CAAC,KAAK,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK,CAAC;KACpD;AAED;;AAEG;IACK,gBAAgB,CAAC,IAAY,EAAE,QAAkB,EAAA;AACrD,QAAA,IAAI,QAAQ,KAAK,QAAQ,CAAC,EAAE,EAAE;YAC1B,OAAO,IAAI,GAAG,EAAE,CAAC;AACpB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;IACI,iBAAiB,CAAC,KAAiB,EAAE,QAAkB,EAAA;AAC1D,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED;;AAEG;AACI,IAAA,iBAAiB,CAAC,KAAoB,EAAA;QACzC,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,OAAO,CAAC,OAAO,CAAC;AACrB,YAAA,KAAK,OAAO,CAAC,SAAS,EAAE;gBACpB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM;AACT,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,KAAK,EAAE;gBAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAAC,OAAO;AAAE,aAAA;AAC1D,YAAA,SAAS;gBAAE,OAAO;AAAE,aAAA;AACvB,SAAA;QACD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED;;AAEG;AACI,IAAA,eAAe,CAAC,KAAiB,EAAA;QACpC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED;;AAEG;AACI,IAAA,cAAc,CAAC,QAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,OAAO;AACV,SAAA;QACD,IAAI,CAAC,QAAQ,EAAE;YACX,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;AAC/E,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KAC9B;AAED;;AAEG;AACI,IAAA,WAAW,CAAC,QAAkB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACvB,OAAO;AACV,SAAA;AACD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;AACpC,QAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;KACpE;AAED;;AAEG;AACI,IAAA,eAAe,CAAC,KAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnI,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;AAED;;AAEG;IACK,yBAAyB,CAAC,KAAW,EAAE,WAAoB,EAAA;QAC/D,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvH,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC9B;AAED;;;AAGG;AACO,IAAA,cAAc,CAAC,KAAK,EAAA;AAC1B,QAAA,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3D,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AACnC,SAAA;AACD,QAAA,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC9B,SAAA;KACJ;AAED;;;AAGG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACtD;AAED;;AAEG;AAEK,IAAA,eAAe,CAAC,KAAiB,EAAE,MAAmB,EAAE,GAAW,EAAE,YAAkC,EAAA;AAC3G,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACpC,QAAA,MAAM,YAAY,GAAG,UAAU;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC;AAC1D,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACnD,YAAY,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC9B;AAED;;AAEG;IACK,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;KACjD;AAED;;AAEG;IACK,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC;KACnD;AAED;;AAEG;IACK,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC;KACpD;AAED;;AAEG;AACK,IAAA,aAAa,CAAC,WAAmB,EAAA;AACrC,QAAA,MAAM,OAAO,GAA8B,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACtG,QAAA,IAAI,OAAO,EAAE;YACT,MAAM,YAAY,GAAG,GAAG,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;AAC9D,YAAA,IAAI,YAAY,EAAE;gBAAE,YAAY,CAAC,KAAK,EAAE,CAAC;AAAE,aAAA;AAC9C,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAClB;AAED;;AAEG;IACI,KAAK,GAAA;QACR,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;AAED;;AAEG;IAEK,kBAAkB,GAAA;AACtB,QAAA,MAAM,YAAY,GAAG,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACjF,QAAA,IAAI,YAAY,EAAE;YACd,YAAY,CAAC,KAAK,EAAE,CAAC;AACxB,SAAA;KACJ;AAED;;AAEG;IACK,mBAAmB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpB,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,OAAO;AACV,SAAA;;AAED,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAC9B;AACI,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE;AACnD,YAAA,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE;AACtD,YAAA,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE;SAC5D,EACD,MAAM,IAAG;AACL,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,MAAM,CAAC,IAAI,CAAA,cAAA,CAAgB,CAAC,CAAC;AAC/G,YAAA,OAAO,QAAQ,CAAC,aAAa,KAAK,OAAO,CAAC;AAC9C,SAAC,CAAC,CAAC;AAEP,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAChD,SAAA;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;AACrF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;AAC1E,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;AAC1E,QAAA,IAAI,oBAAoB,CAAC;AACzB,QAAA,IAAI,gBAAgB,CAAC;AACrB,QAAA,IAAI,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,EAAE;YACtC,oBAAoB,GAAG,OAAO,CAAC;YAC/B,gBAAgB,GAAG,OAAO,CAAC;AAC9B,SAAA;AAAM,aAAA;YACH,oBAAoB,GAAG,OAAO,CAAC;YAC/B,gBAAgB,GAAG,OAAO,CAAC;AAC9B,SAAA;QACD,IAAI,CAAC,SAAS,GAAG;AACb,YAAA;AACI,gBAAA,OAAO,EAAE,oBAAoB;gBAC7B,KAAK,EAAE,IAAI,CAAC,eAAe;gBAC3B,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC;AAC5D,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;AACnD,aAAA;SACJ,CAAC;AAEF,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACxG,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAChC,WAAW,EACX,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,EAC3D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,IAAG;;YAE5B,IAAI,YAAY,GAAW,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,IAAI,KAAK,CAAC,EAAE;oBACZ,YAAY,GAAG,IAAI,CAAC;AACvB,iBAAA;AACJ,aAAA;AACD,YAAA,MAAM,KAAK,GAAc;AACrB,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,KAAK,EAAE,IAAI;gBACX,UAAU,EAAE,IAAI,KAAK,YAAY;aACpC,CAAC;AACF,YAAA,OAAO,KAAK,CAAC;AACjB,SAAC,CAAC,CAAC;QAEP,MAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACrH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAClC,aAAa,EACb,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,OAAO,CAAC,SAAS,CAClB,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,cAAc,CACnD,EACD,IAAI,CAAC,UAAU,CAAC,KAAK,CACxB,CAAC,GAAG,CAAC,MAAM,KAAK;;YAEb,OAAO,EAAE,IAAI,MAAM,CAAA,CAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC,cAAc;AAC7C,SAAA,CAAC,CAAC,CAAC;AAEJ,QAAA,IAAI,aAAa,EAAE;AACf,YAAA,MAAM,CAAC,qBAAqB,CAAC,MAAK;gBAC9B,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1B,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;AAED;;;;;AAKG;AACK,IAAA,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAA;AAC7C,QAAA,MAAM,SAAS,GAAG,YAAY,GAAG,IAAI,CAAC;QACtC,IAAI,SAAS,IAAI,QAAQ,EAAE;YACvB,OAAO,SAAS,GAAG,QAAQ,CAAC;AAC/B,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;AAED;;;;;AAKG;AACK,IAAA,gBAAgB,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAA;AACjD,QAAA,MAAM,SAAS,GAAG,YAAY,GAAG,IAAI,CAAC;QACtC,IAAI,SAAS,GAAG,CAAC,EAAE;YACf,OAAO,QAAQ,GAAG,SAAS,CAAC;AAC/B,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;AAED;;AAEG;AACK,IAAA,kBAAkB,CAAC,YAAoB,EAAE,GAAW,EAAE,iBAAyB,EAAE,SAAkB,EAAA;;QAEvG,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE;YAChE,YAAY,GAAG,CAAC,CAAC;AACpB,SAAA;AACD,QAAA,MAAM,WAAW,GAAG,uBAAuB,CAAC,eAAe,CAAC;QAC5D,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,QAAA,MAAM,QAAQ,GAAG,WAAW,GAAG,CAAC,CAAC;AACjC,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACzD,QAAA,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE;;YAE1B,UAAU,GAAG,iBAAiB,CAAC;AAClC,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;;YAEvC,UAAU,GAAG,SAAS,CAAC;AAC1B,SAAA;QAED,MAAM,UAAU,GAAG,IAAI,KAAK,CAAS,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACtE,IAAI,CAAC,KAAK,UAAU,EAAE;AAClB,gBAAA,OAAO,YAAY,CAAC;AACvB,aAAA;iBAAM,IAAI,CAAC,GAAG,UAAU,EAAE;AACvB,gBAAA,MAAM,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC;gBAC7B,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC1D,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC;gBAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACtD,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,UAAU,CAAC;KACrB;;iHAvmBQ,uBAAuB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;yGAAvB,uBAAuB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,OAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA1B,MAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,cAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,OAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,OAAA,EAAA,cAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,gCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QD1CpC,EAAsF,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,aAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AAG3B,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,qDAAA,CAAA,MAAA,EAAA,EAAA,OAAS,GAAmB,CAAA,WAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAC,CACnE,QAAA,EAAA,SAAA,sDAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,MAAA,CAAsB,CAD6C,EAAA,CAAA,CAAA;QAEhF,EAAqC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAyD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAM,CAAA,YAAA,EAAA,CAAA;QACpG,EAC6L,CAAA,UAAA,CAAA,CAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;QAC/L,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EACuC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AADgB,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,qDAAA,CAAA,MAAA,EAAA,EAAA,OAAS,GAAqB,CAAA,aAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAC,CACvE,QAAA,EAAA,SAAA,sDAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,MAAA,CAAsB,CADiD,EAAA,CAAA,CAAA;QAEpF,EAAqC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAA2D,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAM,CAAA,YAAA,EAAA,CAAA;QACtG,EAE+J,CAAA,UAAA,CAAA,EAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;QACjK,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAOM,CAAA,UAAA,CAAA,EAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACR,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAWM,CAAA,UAAA,CAAA,EAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACR,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAA8E,CAAA,UAAA,CAAA,EAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;QAChF,EAAwB,CAAA,YAAA,EAAA,CAAA;;QAvCD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAAe,EAA6B,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAKxC,EAAyD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAzD,EAAyD,CAAA,iBAAA,CAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,KAAA,CAAA,QAAA,CAAA,IAAA,CAAA,CAAA;QACvD,EAAQ,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAR,EAAQ,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QAKV,EAA2D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA3D,EAA2D,CAAA,iBAAA,CAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,KAAA,CAAA,QAAA,CAAA,MAAA,CAAA,CAAA;QACvD,EAAU,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAV,EAAU,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QAI/C,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,GAAA,CAAA,gBAAA,CAAA,CAAA;QAS1B,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,gBAAA,CAAA,CAAA;QAaP,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,OAAA,CAAA,CAAA;;ACmZnC,UAAA,CAAA;IAACzC,UAAQ,CAAC,EAAE,CAAC;;qCACkB,UAAU,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,CAAA,CAAA;;AAOxC,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AA6CD,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;;;AAMP,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,IAAA,CAAA,CAAA;uFA1cQ,uBAAuB,EAAA,CAAA;cAJnC,SAAS;2BACI,8BAA8B,EAAA,QAAA,EAAA,wiGAAA,EAAA,CAAA;2DAgCjC,gBAAgB,EAAA,CAAA;kBADtB,KAAK;YAEW,QAAQ,EAAA,CAAA;kBAAxB,MAAM;YACU,OAAO,EAAA,CAAA;kBAAvB,MAAM;AAiXC,SAAA,CAAA,EAAA,eAAe,MAqDf,kBAAkB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;AC/e9B;MAKa,MAAM,CAAA;AAER,IAAA,WAAW,QAAQ,GAAA;AACtB,QAAA,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KAC7B;AAEM,IAAA,WAAW,oBAAoB,GAAA;QAClC,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;KAC3C;AAEO,IAAA,WAAW,UAAU,GAAA;AACzB,QAAA,OAAY,MAAM,CAAC,SAAS,CAAC,CAAC;KACjC;AAaD;;AAEG;AACK,IAAA,WAAW,OAAO,GAAA;AACtB,QAAA,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAC9D;AAED;;AAEG;AACI,IAAA,OAAO,gBAAgB,GAAA;QAC1B,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC3B,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CACzD,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,EAC3D,WAAW,CAAC,CAAC,CAAC,CACjB,CAAC;AACL,SAAA;QACD,OAAO,IAAI,CAAC,mBAAmB,CAAC;KAEnC;AAED;;AAEG;IACK,OAAO,aAAa,CAAC,IAAY,EAAA;AACrC,QAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;YAC7B,IAAI,CAAC,UAAU,CACX,CAAC,IAAI,CAAC,EACN,MAAK;gBACD,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAChB,QAAQ,CAAC,QAAQ,EAAE,CAAC;aACvB,EACD,MAAK;gBACD,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAA,mCAAA,EAAsC,IAAI,CAAA,CAAE,CAAC,CAAC,CAAC;gBACxE,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACxB,aAAC,CACJ,CAAC;AACN,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;AACK,IAAA,OAAO,sBAAsB,GAAA;QACjC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAC5C,GAAG,CAAC,MAAQ,EAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAA,EAAG,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAC5E,WAAW,CAAC,CAAC,CAAC,CACjB,CAAC;AACL,SAAA;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED;;AAEG;AACK,IAAA,OAAO,WAAW,GAAA;QACtB,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,aAAa,GAAG,IAAI,UAAU,CAAM,QAAQ,IAAG;gBAChD,MAAM,MAAM,GAAsB,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnE,gBAAA,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC;gBAChC,MAAM,CAAC,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,YAAY,CAAC;AACzC,gBAAA,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;AAC5B,gBAAA,MAAM,CAAC,MAAM,GAAG,MAAK;oBACjB,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAChB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACxB,iBAAC,CAAC;AACF,gBAAA,MAAM,CAAC,OAAO,GAAG,MAAK;oBAClB,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC;oBAClE,MAAM,CAAC,MAAM,EAAE,CAAC;oBAChB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACxB,iBAAC,CAAC;AAEF,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aACrC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3B,SAAA;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;;AA/FD;;;;AAIG;AACY,MAAO,CAAA,OAAA,GAAG,QAAQ,CAAC;AA6FtC;;AAEG;AACG,SAAU,eAAe,CAAI,OAAyB,EAAA;IACxD,OAAO,gBAAgB,CACnB,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,EACjD,CAAC,OAAO,EAAE,QAAQ,KAAI;QAClB,QAAQ,CAAC,OAAO,EAAE,CAAC;AACnB,QAAA,OAAO,EAAE,CAAC;AACd,KAAC,CAAC,CAAC;AACX;;;;;ICjIE,EAA8E,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;;;IAAvC,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;ACUxD;AAiBA;AACM,MAAO,4BAA6B,SAAQ,wCAAwC,CAAA;;AAA7E,mBAAA,4BAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,yCAAA,CAAA,CAAA,OAAA,SAAA,oCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,yCAAA,KAAA,yCAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,4BAA4B,SAA5B,4BAA4B,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;8GAA5B,4BAA4B,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,qCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QAfrC,EAWK,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAX8B,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,6EAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,GAAA,MAAA,CAAA,EAAA,CAAkB,4HAM/B,GAAgD,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,MAAA,CAAQ,IANzB,CAOc,qBAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAA6D,QAAQ,CAPnF,EAAA,CAAA,CAAA;QAWhD,EAAiB,CAAA,YAAA,EAAA,CAAA;;QAXa,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,IAAA,CAAA,CAAA,OAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,IAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,QAAA,CAAA,CAAA,SAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,IAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,QAAA,CAAA,6DAAA,CAAA,UAAA,EAAA,CAAA,CAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,UAAA,EAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,IAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,CAAA,CAAA,6BAAA,EAAA,GAAA,CAAA,qCAAA,EAAA,CAAA,CAAA,iCAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,CAAA;yGAiD5C,sBAAsB,EAAAoB,0BAAA,EAAAC,2BAAA,EAAAC,gCAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAlCtB,4BAA4B,EAAA,CAAA;cAjBxC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;AAaT,IAAA,CAAA;AACJ,aAAA,CAAA;;AAKD;;AAEG;AA6BI,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,6BAAqC,CAAA;AAmD7E;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;;AAEhB,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;AAC5B,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;;QAE9B,IAAI,CAAC,aAAa,CAAC,IAAI;;AAEnB,QAAA,MAAM,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;;YAEnD,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CACjD,MAAM,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAC3C,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CACxD,CAAC;;YAEF,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB,CAAC,CACL,CAAC;KACL;AAzED;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,wBAAwB,CAAC;KACnC;AAcD;;AAEG;AACH,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;KACtD;AA4CD;;AAEG;IACI,eAAe,GAAA;QAClB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;AAED;;AAEG;AACI,IAAA,WAAW,CAAC,OAAsB,EAAA;QACrC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,MAAM,uBAAuB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvE,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,SAAA;KACJ;AAED;;AAEG;IACI,WAAW,GAAA;QACd,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;AAED;;AAEG;AAEI,IAAA,SAAS,CAAC,KAAoB,EAAA;;AAEjC,QAAA,MAAM,QAAQ,GAAG;AACb,YAAA,OAAO,CAAC,SAAS;AACjB,YAAA,OAAO,CAAC,OAAO;AACf,YAAA,OAAO,CAAC,SAAS;AACjB,YAAA,OAAO,CAAC,UAAU;AAClB,YAAA,OAAO,CAAC,IAAI;AACZ,YAAA,OAAO,CAAC,GAAG;AACX,YAAA,OAAO,CAAC,MAAM;AACd,YAAA,OAAO,CAAC,QAAQ;AAChB,YAAA,OAAO,CAAC,GAAG;SACd,CAAC;QACF,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAClC,KAAK,CAAC,eAAe,EAAE,CAAC;AAC3B,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,QAAQ,CAAC,QAA0B,EAAA;QACtC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAClC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtF,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;KACvC;AAED;;AAEG;AACI,IAAA,WAAW,CAAC,OAAe,EAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE;AACrD,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACnH,OAAO,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;KACrC;AAED;;AAEG;IACI,gBAAgB,CAAC,YAAoB,EAAE,UAAkB,EAAA;;AAE5D,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE;AACpG,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;;QAE5G,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC;AAAE,SAAA;;QAEjC,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;;QAE7G,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC;AAAE,SAAA;;AAE/B,QAAA,OAAO,IAAI,MAAM,CAAC,KAAK,CACnB,UAAU,CAAC,KAAK,CAAC,eAAe,EAChC,UAAU,CAAC,KAAK,CAAC,WAAW,EAC5B,QAAQ,CAAC,KAAK,CAAC,eAAe,EAC9B,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,CAAC;KACL;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;AAED;;AAEG;IACI,KAAK,GAAA;QACR,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACvB,SAAA;KACJ;AAED;;AAEG;AACO,IAAA,cAAc,CAAC,KAAa,EAAA;QAClC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;AAED,QAAA,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAC/B;AAED;;AAEG;IACO,eAAe,GAAA;AACrB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC/C,KAAK,CAAC,eAAe,EAAE,CAAC;;;QAGxB,IAAI,IAAI,CAAC,MAAM,IAAI,WAAW,KAAK,IAAI,CAAC,qBAAqB,EAAE;AAC3D,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AACxB,SAAA;KACJ;AAED;;AAEE;IACQ,oBAAoB,GAAA;QAC1B,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AACxB,SAAA;KACJ;AAED;;AAEG;IACK,YAAY,GAAA;;AAEhB,QAAA,IAAI,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;YACrF,OAAO;AACV,SAAA;;QAGD,IAAI,CAAC,aAAa,EAAE,CAAC;;AAGrB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,+BAA+B,EAAE,CAAC;;AAGvD,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;;AAGnF,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CACzB,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAChH,CAAC;QAEF,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;AAEG;IACK,+BAA+B,GAAA;;QAEnC,OAAO;;AAEH,YAAA,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,KAAK,KAAK,MAAM,GAAG,SAAS,GAAG,IAAI;AACnE,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,KAAK;AACrB,YAAA,YAAY,EAAE,KAAK;;YAEnB,GAAG,IAAI,CAAC,OAAO;SAClB,CAAC;KACL;AAED;;AAEG;AACK,IAAA,eAAe,CAAC,MAAiC,EAAA;QACrD,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,MAAM,gBAAgB,GAAgB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AAChG,YAAA,IAAI,gBAAgB,EAAE;AAClB,gBAAA,OAAO,gBAAgB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,oBAAA,gBAAgB,CAAC,eAAe,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACzE,iBAAA;AACD,gBAAA,gBAAgB,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AAC1D,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;AACK,IAAA,sBAAsB,CAAC,KAA8C,EAAA;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AACpC,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACjD,SAAA;KACJ;AAED;;AAEG;IACK,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAG,EAAG,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;YAAE,CAAC,CAAC,WAAW,EAAE,CAAC;SAAE,EAAE,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC9B;;+GAvTQ,sBAAsB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;6GAAtB,GAAiB,CAAA,SAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;;QDhE9B,EAA0C,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QACxC,EAAkF,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAClF,EAA8E,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;QAChF,EAAwB,CAAA,YAAA,EAAA,CAAA;;QAHD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAEhB,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,OAAA,CAAA,CAAA;;AC8D1B,sBAAsB,GAAA,UAAA,CAAA;AA5BlC,IAAA,iBAAiB,CAAC;QACf,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,WAAW,EAAE,iDAAiD;AAC9D,QAAA,eAAe,EAAE,4BAA4B;AAC7C,QAAA,gBAAgB,EAAE;AACd,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,KAAK,EAAE,iGAAiG;AACxG,gBAAA,WAAW,EAAE,uGAAuG;AACvH,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,kBAAkB;AAC1B,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,YAAY,EAAE,EAAE;AAChB,gBAAA,KAAK,EAAE,gGAAgG;AACvG,gBAAA,WAAW,EAAE,sGAAsG;AACtH,aAAA;AACJ,SAAA;KACJ,CAAC;qCA4DgB,QAAQ,CAAA,CAAA;AAvDb,CAAA,EAAA,sBAAsB,CAwTlC,CAAA;uFAxTY,sBAAsB,EAAA,CAAA;cAJlC,SAAS;2BACI,6BAA6B,EAAA,QAAA,EAAA,gQAAA,EAAA,CAAA;2DAgBhC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,KAAK;YAqBE,UAAU,EAAA,CAAA;kBADjB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAsE9B,SAAS,EAAA,CAAA;kBADf,YAAY;mBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;;;;ICrKjC,EAG8B,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IAF2C,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,iFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAyB,CAAA,uBAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAG1G,EAAgE,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAClE,EAAS,CAAA,YAAA,EAAA,CAAA;;;AAHP,IAAA,EAAA,CAAA,UAAA,CAAA,aAAA,EAAA,MAAA,CAAA,iBAAA,CAAiC,CAAA,OAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;IAAC,EAAoC,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;;;;IAIxE,EAEgE,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IADS,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,iFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAyB,CAAA,uBAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAE1G,EAAoF,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACpF,EAAM,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAoB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;IAFjC,EAAiC,CAAA,UAAA,CAAA,aAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IAE3B,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,iBAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;;;IAX9B,EAA2C,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACzC,EAKS,CAAA,UAAA,CAAA,CAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IACT,EAKS,CAAA,UAAA,CAAA,CAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IACX,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAZJ,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,qBAAA,CAAA,CAAA;IAM5B,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,qBAAA,CAAA,CAAA;;;;IAOtC,EAA0C,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACxC,EAAyG,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAA5B,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,sEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAiB,CAAA,SAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAAC,EAAO,CAAA,YAAA,EAAA,CAAA;IAClH,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAIf,EAAgE,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC9D,EAEF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAFL,EAEF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAFE,EAEF,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,KAAA,GAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,WAAA,CAAA,KAAA,CAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,GAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,WAAA,CAAA,KAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;;;IACA,EAA+D,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC7D,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IADL,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,WAAA,CAAA,SAAA,CAAA,KAAA,EAAA,GAAA,CAAA,CAAA;;AC3BJ;;AAEG;AAKG,MAAO,wBAAyB,SAAQ,6BAAkC,CAAA;AAqE5E;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;AA5DpB;;AAEG;QAEI,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAEzB;;AAEG;QAEI,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAEzB;;AAEG;QAEI,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;AAQrC;;AAEG;QAEI,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAEnC;;AAEG;AAEI,QAAA,IAAA,CAAA,MAAM,GAAyB,IAAI,YAAY,EAAU,CAAC;AAEjE;;AAEG;AAEI,QAAA,IAAA,CAAA,YAAY,GAAgC,IAAI,YAAY,EAAiB,CAAC;AAErF;;AAEG;AAEI,QAAA,IAAA,CAAA,SAAS,GAA6B,IAAI,YAAY,EAAc,CAAC;AAE5E;;AAEG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAAyB,IAAI,YAAY,EAAU,CAAC;AASvE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;KAC3E;AA5ED;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,0BAA0B,CAAC;KACrC;AAyED;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;KACvC;AAED;;AAEG;IAEI,aAAa,GAAA;QAChB,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACjE,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,SAAA;KACJ;AAED;;AAEG;IAEI,uBAAuB,GAAA;QAC1B,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3E,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAA;KACJ;AAED;;AAEG;AAEI,IAAA,SAAS,CAAC,KAAoB,EAAA;QACjC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,EAAE;;YAEtF,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACjC;AAED;;AAEG;AAEI,IAAA,MAAM,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED;;AAEG;AACI,IAAA,cAAc,CAAC,MAAa,EAAA;QAC/B,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,CAAC,eAAe,EAAE,CAAC;QACzB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAC/B,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;AAEG;AACI,IAAA,SAAS,CAAC,MAAkB,EAAA;QAC/B,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,CAAC,eAAe,EAAE,CAAC;KAC5B;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;;mHAjKQ,wBAAwB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA1B,MAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,eAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,CAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,KAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,gEAAA,EAAA,aAAA,EAAA,eAAA,EAAA,CAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,gEAAA,EAAA,aAAA,EAAA,eAAA,EAAA,CAAA,EAAA,aAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ADXrC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAA0C,aAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;QAGL,EAAmB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,gEAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,KAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA,eAAA,EAAA,SAAA,gEAAA,GAAA,EAAA,OAA8C,GAAe,CAAA,aAAA,EAAA,CAAA,EAAA,CAA7D,CACjC,eAAA,EAAA,SAAA,gEAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,MAAA,CAAsB,CADW,EAAA,CAAA,CAAA,SAAA,EAAA,SAAA,0DAAA,CAAA,MAAA,EAAA,EAAA,OACE,GAAiB,CAAA,SAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CADnB,CAC6B,MAAA,EAAA,SAAA,uDAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,MAAA,CAAA,MAAA,CAAc,CAD3C,EAAA,CAAA,CAAA;QADpD,EAEiG,CAAA,YAAA,EAAA,CAAA;QACjG,EAae,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACf,EAEe,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACjB,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAAuD,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAS,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACvE,EAAuD,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACrD,EAGO,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACP,EAEO,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACT,EAAO,CAAA,YAAA,EAAA,CAAA;QAEP,EAA6D,CAAA,SAAA,CAAA,EAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;QAnCD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QACc,EAAwC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAxC,EAAwC,CAAA,WAAA,CAAA,cAAA,EAAA,GAAA,CAAA,iBAAA,CAAA,CAAA;QAC7B,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArB,EAAqB,CAAA,UAAA,CAAA,UAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA,WAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,iBAAA,CAAA,CAAA,SAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;QAA9D,EAAwC,CAAA,WAAA,CAAA,iBAAA,EAAA,GAAA,CAAA,KAAA,CAAA,SAAA,CAAA,CAAA;QAG9C,EAA0B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA1B,EAA0B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,mBAAA,CAAA,CAAA;QAc1B,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAzB,EAAyB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,mBAAA,CAAA,CAAA;QAIV,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAtB,EAAsB,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,KAAA,CAAA,SAAA,CAAA,CAAA;QAAC,EAAS,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAT,EAAS,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QAChC,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAtB,EAAsB,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,KAAA,CAAA,SAAA,CAAA,CAAA;QAC7C,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAIhB,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAKF,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;ACoEnC,UAAA,CAAA;AAAC,IAAAzC,UAAQ,EAAE;;;;AAOV,CAAA,EAAA,wBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AAAC,IAAAA,UAAQ,EAAE;;;;AAOV,CAAA,EAAA,wBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AAAC,IAAAA,UAAQ,EAAE;;qCACa,aAAa,CAAA,CAAA;;AAMpC,CAAA,EAAA,wBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AAAC,IAAAA,UAAQ,EAAE;;qCACU,UAAU,CAAA,CAAA;;AAE9B,CAAA,EAAA,wBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;uFAlIQ,wBAAwB,EAAA,CAAA;cAJpC,SAAS;2BACI,+BAA+B,EAAA,QAAA,EAAA,szEAAA,EAAA,CAAA;2DAgBlC,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,SAAS,EAAA,CAAA;kBADf,KAAK;YAOC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAOC,qBAAqB,EAAA,CAAA;kBAD3B,KAAK;YAOC,gBAAgB,EAAA,CAAA;kBADtB,KAAK;YAOC,mBAAmB,EAAA,CAAA;kBADzB,KAAK;YAOC,MAAM,EAAA,CAAA;kBADZ,MAAM;YAOA,YAAY,EAAA,CAAA;kBADlB,MAAM;YAOA,SAAS,EAAA,CAAA;kBADf,MAAM;YAOA,gBAAgB,EAAA,CAAA;kBADtB,MAAM;AA0BA,SAAA,CAAA,EAAA,aAAa,EAYb,EAAA,EAAA,uBAAuB,EAYvB,EAAA,EAAA,SAAS,MAYT,MAAM,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;IC5Hf,EAA+H,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;;;;AAAjE,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,OAAA,CAAA,KAAA,CAAoB,CAAA,OAAA,EAAA,MAAA,CAAA,QAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA,CAAA;;;IAEhF,EACmE,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;;;;AAAjE,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,OAAA,CAAA,KAAA,CAAoB,CAAA,OAAA,EAAA,MAAA,CAAA,QAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA,CAAA;;;IAFxB,EAA0D,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACxD,EACmE,CAAA,UAAA,CAAA,CAAA,EAAA,qEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;IACrE,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAFgB,EAA8D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9D,EAA8D,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,sBAAA,CAAA,MAAA,CAAA,cAAA,CAAA,OAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;;;;;;;;ICQzF,EAA6G,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAApF,EAAW,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,mEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA2B,CAAA,mBAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAC9D,EAI2C,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;AAJ3B,IAAA,EAAA,CAAA,UAAA,CAAA,cAAA,EAAA,SAAA,kFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAgB,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,cAAA,CAAA,MAAA,CAAsB,CAAA,CAAA,EAAA,CAAC,8KAAc,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,MAAA,EAAQ,CAAA,CAAA,EAAA,CAAtB,CAAA,eAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,YAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,eAAA,EAAA,SAAA,mFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAIpC,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,oBAAA,EAAsB,CAAA,CAJc,EAAA,CAAA,CAAA;AAIZ,IAAA,EAAA,CAAA,YAAA,EAAiB,EAAA,CAAA;;;IALG,EAA2C,CAAA,WAAA,CAAA,yBAAA,EAAA,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IACY,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA5B,IAAA,EAAA,CAAA,UAAA,CAAA,qBAAA,EAAA,IAAA,CAA4B,CAAA,aAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,WAAA,CAAA,CAAA,OAAA,EAAA,MAAA,CAAA,eAAA,CAAA,MAAA,GAAA,MAAA,CAAA,eAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA,SAAA,EAAA,MAAA,CAAA,YAAA,CAAA,CAAA;;;;AAMpJ,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CACqD,gBAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAE1C,EAAQ,CAAA,UAAA,CAAA,MAAA,EAAA,SAAA,gEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,gBAAQ,CAAA,CAAA,EAAA,CAAC,8JAA+D,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,gBAAA,EAAkB,CAAA,CAAjF,EAAA,CAAA,CAAA;IAAxB,EAGwD,CAAA,YAAA,EAAA,CAAA;IACxD,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAkB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,EAAA,CAAA;;;IANpD,EAAoC,CAAA,WAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAEyE,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAhC,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,oBAAA,CAAgC,CAAA,gBAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAAA;AAAlG,IAAA,EAAA,CAAA,WAAA,CAAA,aAAA,EAAA,MAAA,CAAA,cAAA,CAAmC,6CAAA,CAAA,YAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAAA;IAInD,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,iBAAA,CAAA,MAAA,CAAA,cAAA,CAAA,CAAA;;;IAI7C,EAA0E,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACxE,EAAyF,CAAA,kBAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA;IAC3F,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;IADmB,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAzB,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,OAAA,CAAA,YAAA,CAAyB,CAAA,MAAA,EAAA,UAAA,CAAA,CAAA;;;IAF7D,EAAiC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAC/B,EAEe,CAAA,UAAA,CAAA,CAAA,EAAA,kEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjB,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAHoB,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAnB,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,eAAA,CAAmB,CAAA,cAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;;;IAKpD,EAAkE,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAChE,EAAyF,CAAA,kBAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA;IAC3F,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;IADmB,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAzB,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,OAAA,CAAA,YAAA,CAAyB,CAAA,MAAA,EAAA,UAAA,CAAA,CAAA;;;IAF7D,EAAkC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAChC,EAEe,CAAA,UAAA,CAAA,CAAA,EAAA,kEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjB,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAHoB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAX,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAW,CAAA,cAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;;;;IAShD,EAE+F,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;AAFvF,IAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,SAAA,yEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAQ,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,MAAA,EAAQ,CAAA,CAAA,EAAA,CAAC,CAC2B,OAAA,EAAA,SAAA,0EAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,UAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,MAAA,GAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,YAAA,CAAA,UAAA,EAAqB,IAAI,CAAC,CAAE,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,GAAiB,CAAA,KAAA,EAAA,CAAA,CADxE,EAAA,CAAA,CAAA;AAGvB,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CACmF,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAGjD,EAChC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,EAAA,CAAA;;;;IAPT,EAAwC,CAAA,WAAA,CAAA,cAAA,EAAA,UAAA,CAAA,UAAA,CAAA,CAAA;IACxC,EAA4B,CAAA,UAAA,CAAA,UAAA,EAAA,UAAA,CAAA,QAAA,CAAA,CAAA;AAFwB,IAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,UAAA,CAAA,UAAA,CAAwC,qCAAA,CAAA,aAAA,EAAA,UAAA,CAAA,KAAA,GAAA,UAAA,CAAA,KAAA,GAAA,UAAA,CAAA,KAAA,CAAA,CAAA;IAGtF,EAAsE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAtE,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,UAAA,CAAA,QAAA,GAAA,IAAA,GAAA,UAAA,CAAA,uBAAA,CAAsE,CAAA,mBAAA,EAAA,UAAA,CAAA,QAAA,GAAA,IAAA,GAAA,UAAA,CAAA,cAAA,IAAA,UAAA,CAAA,CAAA;IAEpE,EAA4C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA5C,IAAA,EAAA,CAAA,WAAA,CAAA,sBAAA,EAAA,CAAA,MAAA,CAAA,YAAA,CAA4C,CAAA,0BAAA,EAAA,MAAA,CAAA,YAAA,CAAA,CAAA;IAAC,EAA8B,CAAA,UAAA,CAAA,OAAA,EAAA,UAAA,CAAA,aAAA,CAAA,CAAA;IAEjD,EAChC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADgC,EAChC,CAAA,kBAAA,CAAA,EAAA,EAAA,UAAA,CAAA,QAAA,EAAA,EAAA,GAAA,CAAA,CAAA;;;;AAMJ,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAyE,gBAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAE9D,EAAQ,CAAA,UAAA,CAAA,MAAA,EAAA,SAAA,wEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,gBAAQ,CAAA,CAAA,EAAA,CAAC,oOAA2B,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,YAAA,CAAA,UAAA,EAAA,CAAA,UAAA,CAAA,UAAA,CAAwC,CAAA,CAAnE,EAAA,CAAA,CAAA;IAAxB,EAIqF,CAAA,YAAA,EAAA,CAAA;AACrF,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAGmF,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAElC,EAC/C,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,EAAA,EAAA,EAAA,CAAA;;;;IAXoF,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA7B,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,UAAA,CAAA,UAAA,CAA6B,yCAAA,CAAA,UAAA,EAAA,UAAA,CAAA,QAAA,CAAA,CAAA;AACxH,IAAA,EAAA,CAAA,WAAA,CAAA,cAAA,EAAA,UAAA,CAAA,UAAA,CAAuC,qCAAA,CAAA,aAAA,EAAA,UAAA,CAAA,KAAA,GAAA,UAAA,CAAA,KAAA,GAAA,UAAA,CAAA,KAAA,CAAA,CAAA;IAIhB,EAA+C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/C,EAA+C,CAAA,WAAA,CAAA,0BAAA,EAAA,OAAA,CAAA,YAAA,CAAA,CAAA;AAEtE,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,UAAA,CAAA,QAAA,GAAA,IAAA,GAAA,UAAA,CAAA,uBAAA,CAAsE,mCAAA,CAAA,mBAAA,EAAA,UAAA,CAAA,QAAA,GAAA,IAAA,GAAA,UAAA,CAAA,cAAA,IAAA,UAAA,CAAA,CAAA;IAGpE,EAA4C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5C,EAA4C,CAAA,WAAA,CAAA,sBAAA,EAAA,CAAA,OAAA,CAAA,YAAA,CAAA,CAAA;IAAC,EAC/C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAD+C,EAC/C,CAAA,kBAAA,CAAA,EAAA,EAAA,UAAA,CAAA,QAAA,EAAA,EAAA,GAAA,CAAA,CAAA;;;;AClEJ,MAAO,gCAAiC,SAAQ,wCAAwC,CAAA;;AAAjF,mBAAA,gCAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,6CAAA,CAAA,CAAA,OAAA,SAAA,wCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,6CAAA,KAAA,6CAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,gCAAgC,SAAhC,gCAAgC,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;kHAAhC,gCAAgC,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,iCAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,yCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QFlB7C,EAcyF,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAdlD,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,iFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,GAAA,MAAA,CAAA,EAAA,CAAkB,gIASrC,GAAgD,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,MAAA,CAAQ,IATnB,CAUQ,qBAAA,EAAA,SAAA,uFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAA6D,QAAQ,CAV7E,EAAA,CAAA,CAAA;QAevD,EAA+H,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;QAC/H,EAGe,CAAA,UAAA,CAAA,CAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACjB,EAAiB,CAAA,YAAA,EAAA,CAAA;;QApBsB,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,IAAA,CAAA,CAAA,OAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,WAAA,CAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,QAAA,CAAA,CAAA,UAAA,EAAA,CAAA,CAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,YAAA,EAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,IAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,UAAA,CAAA,CAAA,CAAA,SAAA,EAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,IAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,aAAA,IAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,UAAA,EAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,IAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,IAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,IAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,aAAA,IAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,CAAA,CAAA,6BAAA,EAAA,GAAA,CAAA,qCAAA,EAAA,CAAA,CAAA,iCAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,OAAA,IAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,WAAA,CAAA,CAAA,CAAA;QAe1B,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA/B,EAA+B,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;QAC7C,EAAyC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAzC,EAAyC,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,YAAA,CAAA,CAAA;kIEoE7C,0BAA0B,EAAAoE,wBAAA,EAAAC,0BAAA,EAAAC,2BAAA,EAAAC,gCAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAlE1B,gCAAgC,EAAA,CAAA;cAH5C,SAAS;;;AAMV;;AAEG;AA6DI,IAAM,0BAA0B,GAAhC,MAAM,0BAA8B,SAAQ,oCAA8C,CAAA;AAqD7F;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;AAxBpB;;AAEG;QAEI,IAAiC,CAAA,iCAAA,GAAG,IAAI,CAAC;QAsB5C,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAErD,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC/B;AA/DD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,4BAA4B,CAAC;KACvC;AAoCD,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;KAC5D;AAED,IAAA,IAAW,YAAY,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC;KAC/E;AAkBD;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;KACpB;AAED;;AAEG;AACI,IAAA,gBAAgB,CAAC,KAAoB,EAAA;;AAExC,QAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;QAG5C,KAAK,CAAC,wBAAwB,EAAE,CAAC;QACjC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;AAED;;AAEG;AACI,IAAA,iBAAiB,CAAC,QAAiB,EAAA;AACtC,QAAA,IAAI,QAAQ,EAAE;;AAEV,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAChB,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC3F,gBAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;gBACvB,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,aAAA;AACD,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,CAAC,uCAAuC,CAAC,CAAC;YACvG,IAAI,CAAC,OAAO,EAAE;gBACV,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;AAC5E,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1C,SAAA;KACJ;AAED;;AAEG;IACI,MAAM,GAAA;QACT,IAAI,IAAI,CAAC,aAAa,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,EAAE;AAC7C,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACzB,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,cAAc,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;IAEO,cAAc,GAAA;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,MAAM,UAAU,GAAiB,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;AAC5G,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,MAAM,QAAQ,GAAgB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjD,gBAAA,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;AAC3B,oBAAA,OAAO,QAAQ,CAAC;AACnB,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,OAAO,GAAiB,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;AACxG,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrC,MAAM,MAAM,GAAgB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5C,gBAAA,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;AACzB,oBAAA,OAAO,MAAM,CAAC;AACjB,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;AACI,IAAA,eAAe,CAAC,KAAoB,EAAA;AACvC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,OAAO,CAAC,KAAK,CAAC;AACnB,YAAA,KAAK,OAAO,CAAC,KAAK,EAAE;gBAChB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACzC,MAAM;AACT,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,OAAO,EAAE;gBAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACzC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/B,iBAAA;gBACD,OAAO;AACV,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,SAAS,EAAE;gBACpB,IAAI,KAAK,CAAC,MAAM,EAAE;oBACd,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5C,iBAAA;qBAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBAChD,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B,iBAAA;gBACD,OAAO;AACV,aAAA;AACD,YAAA,SAAS;gBACL,OAAO;AACV,aAAA;AACJ,SAAA;;QAGD,KAAK,CAAC,wBAAwB,EAAE,CAAC;QACjC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;AAED;;AAEG;AACI,IAAA,gBAAgB,CAAC,KAAoB,EAAA;AACxC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,OAAO,CAAC,OAAO,CAAC;AACrB,YAAA,KAAK,OAAO,CAAC,SAAS,EAAE;AACpB,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5C,gBAAA,IAAI,aAAa,IAAI,QAAQ,CAAC,aAAa,KAAK,aAAa,EAAE;AAC/B,oBAAA,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,aAAa,CAAC,sBAAsB,CAAE,CAAC,KAAK,EAAE,CAAC;oBAC3G,MAAM;AACT,iBAAA;gBACD,OAAO;AACV,aAAA;AACD,YAAA,SAAS;gBACL,OAAO;AACV,aAAA;AACJ,SAAA;;QAGD,KAAK,CAAC,wBAAwB,EAAE,CAAC;QACjC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;AAEM,IAAA,mBAAmB,CAAC,KAAoB,EAAA;QAC3C,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,OAAO,CAAC,SAAS,CAAC;AACvB,YAAA,KAAK,OAAO,CAAC,UAAU,EAAE;AACrB,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1C,gBAAA,IAAI,WAAW,EAAE;oBACb,WAAW,CAAC,KAAK,EAAE,CAAC;oBACpB,MAAM;AACT,iBAAA;gBACD,OAAO;AACV,aAAA;AACD,YAAA,SAAS;gBAAE,OAAO;AAAE,aAAA;AACvB,SAAA;;QAGD,KAAK,CAAC,wBAAwB,EAAE,CAAC;QACjC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;AAED;;;AAGG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;QAE7B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvC,gBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7B,aAAA;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACtD,oBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7B,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5B;AAED;;AAEG;IAEI,oBAAoB,GAAA;QACvB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAGO,cAAc,GAAA;QAClB,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KAC5D;AAED;;;;AAIG;IACK,sBAAsB,GAAA;AAC1B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,IAAI,EAAE;YAAE,OAAO;AAAE,SAAA;AAC/B,QAAA,MAAM,OAAO,GAAiB,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;QACxG,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO;AAAE,SAAA;;;AAGzB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,MAAM,GAAgB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAgB,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,CAAC,IAAI,EAAE;gBAAE,OAAO;AAAE,aAAA;YACtB,MAAM,SAAS,GAAgB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC1D,IAAI,CAAC,SAAS,EAAE;gBAAE,OAAO;AAAE,aAAA;YAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;;;;AAIhC,YAAA,MAAM,cAAc,GAAG,KAAK,GAAG,EAAE,CAAC;YAClC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,GAAG,IAAI,CAAC;AACjD,SAAA;KACJ;AACD;;AAEG;IACK,4BAA4B,GAAA;QAChC,MAAM,cAAc,GAAiB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAc,CAAC;QACjF,IAAI,CAAC,cAAc,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC;AAAE,SAAA;AACrC,QAAA,MAAM,WAAW,GAAG,GAAG,CAAC,eAAe,CAAC,cAAc,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;QACjG,IAAI,CAAC,WAAW,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC;AAAE,SAAA;QAClC,OAAO,WAAW,CAAC,WAAW,CAAC;KAClC;;uHAxTQ,0BAA0B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;4GAA1B,0BAA0B,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,gCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;;;;;;ADpFvC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAA0C,CAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAEkB,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,mEAAA,CAAA,MAAA,EAAA,EAAA,OAAW,6BAAyB,CAAC,EAAA,CAAA,CAAA;QAE7F,EACwC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAD6B,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,0DAAA,CAAA,MAAA,EAAA,EAAA,OAAW,GAAuB,CAAA,eAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAC,CAC1F,UAAA,EAAA,SAAA,2DAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,gBAAA,CAAA,MAAA,CAAwB,CADkE,EAAA,CAAA,CAAA;QAEtG,EAKgE,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QALzD,EAAQ,CAAA,UAAA,CAAA,MAAA,EAAA,SAAA,yDAAA,GAAA,EAAA,OAAA,GAAA,CAAA,MAAA,EAAQ,IAAC,CAIb,OAAA,EAAA,SAAA,0DAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,GAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,0BAA+B,IAAI,CAAC,CAAA,CAJvB,EAAA,CAAA,CAAA;QAAxB,EAKgE,CAAA,YAAA,EAAA,CAAA;QAChE,EAEkG,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAA/C,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,2DAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,GAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAS,EAAA,CAAA,WAAA,CAAA,GAAA,CAAA,aAAA,CAAA,MAAA,EAA+B,IAAI,CAAC,CAAA,CAAC,EAAA,CAAA,CAAA;QAC/F,EAAmD,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;AACrD,QAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;QAKX,EAG+B,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA;AAFc,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,0DAAA,CAAA,MAAA,EAAA,EAAA,OAAW,4BAAwB,CAAC,EAAA,CAAA,CAAA;QAG/E,EAMO,CAAA,UAAA,CAAA,EAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;QACP,EASM,CAAA,UAAA,CAAA,EAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QACN,EAIe,CAAA,UAAA,CAAA,EAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;QACf,EAIe,CAAA,UAAA,CAAA,EAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;AACjB,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;QAER,EAA6D,CAAA,SAAA,CAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,CAAA,CAAA;QAE7D,EAYc,CAAA,UAAA,CAAA,EAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;QAEd,EAkBc,CAAA,UAAA,CAAA,EAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;QAChB,EAAwB,CAAA,YAAA,EAAA,CAAA;;;;QAzFD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QACf,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAApB,EAAoB,CAAA,UAAA,CAAA,YAAA,EAAA,KAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,iBAAA,CAAA,yBAAA,CAAA,mCAAA,EAAA,GAAA,CAAA,iCAAA,CAAA,CAAA;QAKwB,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAArC,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,2BAAA,CAAqC,CAAA,aAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;AACnG,QAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAA4C,CAAA,YAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,iBAAA,GAAA,IAAA,GAAA,IAAA,CAAA,CAAA,WAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAAA,CAAA,eAAA,EAAA,GAAA,CAAA,MAAA,CAAA,6BAAA,CAAA,eAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA;QAMa,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArC,EAAqC,CAAA,WAAA,CAAA,aAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;AAD1E,QAAA,EAAA,CAAA,WAAA,CAAA,UAAA,EAAA,GAAA,CAAA,iBAAA,GAAA,IAAA,GAAA,IAAA,CAAiD,CAAA,cAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAUvE,EAA0C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA1C,EAA0C,CAAA,WAAA,CAAA,yBAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA;AAC1C,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,iCAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAAC,KAAA,EAAA,GAAA,CAAA,WAAA,GAAA,GAAA,GAAA,GAAA,CAAA,WAAA,GAAA,GAAA,CAAA,IAAA,CAAA,GAAA,CAAA,iCAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAAC,KAAA,CAAA,CAA2M,CAAA,IAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAAA,CAAA;QAEpM,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA;QAOjB,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA/B,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,QAAA,IAAA,GAAA,CAAA,aAAA,CAAA,CAAA;QAUtB,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA;QAKhB,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,UAAA,CAAA,CAAA;QAOd,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;ACwSnC,UAAA,CAAA;AAAC,IAAAzE,UAAQ,EAAE;;;;AAIV,CAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,IAAA,CAAA,CAAA;AAED,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;;;AAGP,CAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAnRQ,0BAA0B,GAAA,UAAA,CAAA;AA5DtC,IAAA,iBAAiB,CAAC;QACf,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,WAAW,EAAE,4CAA4C;AACzD,QAAA,eAAe,EAAE,gCAAgC;AACjD,QAAA,gBAAgB,EAAE;AACO,YAAA;gBACjB,IAAI,EAAE,mBAAmB,CAAC,KAAK;AAC/B,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,KAAK,EAAE,6FAA6F;AACpG,gBAAA,IAAI,EAAwB;oBACxB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,UAAU,EAAE;AACR,wBAAA;4BACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4BAAA,MAAM,EAAE,wBAAwB;AAChC,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,KAAK,EAAE,qFAAqF;AAC5F,4BAAA,QAAQ,EAAE,IAAI;AACjB,yBAAA;AACD,wBAAA;4BACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4BAAA,MAAM,EAAE,SAAS;AACjB,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,KAAK,EAAE,qFAAqF;AAC5F,4BAAA,QAAQ,EAAE,IAAI;AACjB,yBAAA;AACJ,qBAAA;AACD,oBAAA,OAAO,EAAE;AACL,wBAAA,WAAW,EAAE,CAAC;AACjB,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,KAAK,EAAE,8FAA8F;AACxG,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,KAAK,EAAE,8BAA8B;AACxC,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,wBAAwB;AAChC,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,YAAY,EAAE,EAAE;AAChB,gBAAA,KAAK,EAAE,2BAA2B;AACrC,aAAA;AACJ,SAAA;KACJ,CAAC;qCA8DgB,QAAQ,CAAA,CAAA;AAzDb,CAAA,EAAA,0BAA0B,CAyTtC,CAAA;uFAzTY,0BAA0B,EAAA,CAAA;cAJtC,SAAS;2BACI,+DAA+D,EAAA,QAAA,EAAA,kiNAAA,EAAA,CAAA;2DAalE,oBAAoB,EAAA,CAAA;kBAD1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAI5C,mBAAmB,EAAA,CAAA;kBADzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAI3C,cAAc,EAAA,CAAA;kBADpB,SAAS;mBAAC,SAAS,CAAA;YAIb,QAAQ,EAAA,CAAA;kBADd,SAAS;mBAAC,UAAU,CAAA;YAId,QAAQ,EAAA,CAAA;kBADd,KAAK;YAMC,YAAY,EAAA,CAAA;kBADlB,KAAK;YAOC,cAAc,EAAA,CAAA;kBADpB,KAAK;YAOC,iCAAiC,EAAA,CAAA;kBADvC,KAAK;AAqOC,SAAA,CAAA,EAAA,oBAAoB,MAMnB,cAAc,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACnW1B;;;;AAIG;MAKU,wBAAwB,CAAA;;mHAAxB,wBAAwB,GAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,CAAA,CAAA,EAAA,CAAA,CAAA;uFAAxB,wBAAwB,EAAA,CAAA;cAJpC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;;AAEP,gBAAA,QAAQ,EAAE,+BAA+B;AAC5C,aAAA,CAAA;;;;;;ACED;;AAEG;AAKG,MAAO,sBAAuB,SAAQ,0BAA0B,CAAA;AA8BlE;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAClC;AAnCD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,wBAAwB,CAAC;KACnC;AAgCD;;AAEG;AACI,IAAA,iBAAiB,CAAC,QAAiB,EAAA;AACtC,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACzB,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,SAAA;KACJ;AAED;;AAEG;AACI,IAAA,eAAe,CAAC,KAAoB,EAAA;QACvC,QAAQ,KAAK,CAAC,OAAO;AACjB,YAAA,KAAK,OAAO,CAAC,KAAK,EAAE;gBAChB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACzC,KAAK,CAAC,wBAAwB,EAAE,CAAC;gBACjC,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO;AACV,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,SAAS,EAAE;gBACpB,IAAI,KAAK,CAAC,MAAM,EAAE;oBACd,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5C,iBAAA;gBACD,OAAO;AACV,aAAA;AACD,YAAA,SAAS;gBAAE,OAAO;AAAE,aAAA;AACvB,SAAA;KACJ;AAED;;AAEG;IACI,kBAAkB,GAAA;QACrB,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,CAAC,iBAAiB,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChE,YAAA,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACxD,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACjD,SAAA;KACJ;AAED;;;AAGG;AACO,IAAA,cAAc,CAAC,KAAe,EAAA;AACpC,QAAA,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,IAAI,CAAC,KAAK,EAAE;AACR,gBAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC1B,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC3D,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC9E,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACzB,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9B,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACjD,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAClC;AAED;;;AAGG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,OAAO;AACH,gBAAA,mBAAmB,EAAE;AACjB,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CACnE,QAAQ,CAAC,yBAAyB,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAC3E;AACJ,iBAAA;aACJ,CAAC;AACL,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACtD;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,eAAe,EAAE,EAAE;SACtB,CAAC;KACL;;+GAzIQ,sBAAsB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;;ACnBnC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAA0C,aAAA,CAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAGxB,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,+DAAA,CAAA,MAAA,EAAA,EAAA,OAAW,6BAAyB,CAAC,EAAA,CAAA,CAAA;QACjD,EAAyG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAApC,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,sDAAA,CAAA,MAAA,EAAA,EAAA,OAAW,2BAAuB,CAAC,EAAA,CAAA,CAAA;QACtG,EAKkI,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAH5G,EAA0B,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,8DAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,YAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA,eAAA,EAAA,SAAA,8DAAA,GAAA,EAAA,OAAkB,wBAAoB,CAAtC,EAAA,CAAA,CAAA;QAFhD,EAKkI,CAAA,YAAA,EAAA,CAAA;QAClI,EAEwG,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAA/C,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,GAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAS,EAAA,CAAA,WAAA,CAAA,GAAA,CAAA,aAAA,CAAA,MAAA,EAA+B,IAAI,CAAC,CAAA,CAAC,EAAA,CAAA,CAAA;QACrG,EAAgD,CAAA,SAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAClD,QAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;AAEX,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAgG,CAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;QACpD,EAAmB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,wEAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,KAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA;QACb,EAAiB,CAAA,YAAA,EAAA,EAAA,EAAA,EAAA,CAAA;QAIvE,EAA6D,CAAA,SAAA,CAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;;QAxBD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAEb,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAApB,QAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,KAAA,CAAoB,0BAAA,CAAA,WAAA,EAAA,IAAA,CAAA,CAAA;QAKlB,EAA0B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA1B,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,YAAA,CAA0B,CAAA,aAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;AAD1C,QAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,GAAA,CAAA,QAAA,CAA+B,CAAA,eAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAAA,CAAA,YAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,iBAAA,GAAA,IAAA,GAAA,IAAA,CAAA,CAAA,WAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAAA,6BAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,CAAA;QAM4B,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArC,EAAqC,CAAA,WAAA,CAAA,aAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;AADhE,QAAA,EAAA,CAAA,WAAA,CAAA,UAAA,EAAA,GAAA,CAAA,iBAAA,GAAA,IAAA,GAAA,IAAA,CAAiD,CAAA,cAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAMtB,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA5B,EAA4B,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAAA,CAAA;QACnD,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAnB,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,KAAA,CAAmB,kBAAA,CAAA,YAAA,EAAA,IAAA,CAAA,CAAA;QAK7C,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;uFDJ1B,sBAAsB,EAAA,CAAA;cAJlC,SAAS;2BACI,6BAA6B,EAAA,QAAA,EAAA,w8DAAA,EAAA,CAAA;2DAahC,QAAQ,EAAA,CAAA;kBADd,SAAS;mBAAC,UAAU,CAAA;YAId,QAAQ,EAAA,CAAA;kBADd,SAAS;mBAAC,UAAU,CAAA;;;;;;;AElBzB;;AAEG;AAKG,MAAO,0BAA2B,SAAQ,0BAA0B,CAAA;AAsCtE;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,IAAI,EAAE,CAAC;KACvC;AA5CD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,4BAA4B,CAAC;KACvC;AAyCD;;AAEG;AACI,IAAA,iBAAiB,CAAC,QAAiB,EAAA;AACtC,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACzB,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,SAAA;KACJ;AAED;;AAEG;AACI,IAAA,eAAe,CAAC,KAAoB,EAAA;QACvC,QAAQ,KAAK,CAAC,OAAO;AACjB,YAAA,KAAK,OAAO,CAAC,KAAK,EAAE;AAChB,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACtB,oBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;oBAChC,OAAO;AACV,iBAAA;gBACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACzC,KAAK,CAAC,wBAAwB,EAAE,CAAC;gBACjC,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO;AACV,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,SAAS,EAAE;gBACpB,IAAI,KAAK,CAAC,MAAM,EAAE;oBACd,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5C,iBAAA;gBACD,OAAO;AACV,aAAA;AACD,YAAA,SAAS;gBAAE,OAAO;AAAE,aAAA;AACvB,SAAA;KACJ;AAED;;AAEG;IACI,kBAAkB,GAAA;QACrB,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,CAAC,iBAAiB,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChE,YAAA,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC5C,YAAA,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACxD,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACjD,SAAA;KACJ;AAED;;;AAGG;AACO,IAAA,cAAc,CAAC,KAAe,EAAA;AACpC,QAAA,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,IAAI,CAAC,KAAK,EAAE;AACR,gBAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC1B,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC3D,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC1E,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACzB,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9B,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACjD,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAClC;AAED;;AAEG;IACI,eAAe,CAAC,KAAe,EAAE,WAAqB,EAAA;AACzD,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAE3D,QAAA,IAAI,WAAW,EAAE;AACb,YAAA,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;AACvC,YAAA,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;AACnC,YAAA,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;YAErC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACtD,OAAO;AACV,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;AACrC,QAAA,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;QAEzC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACnD;AAED;;AAEG;AACI,IAAA,mBAAmB,CAAC,KAAY,EAAA;AACnC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAC5C;AAED;;;AAGG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,OAAO;AACH,gBAAA,mBAAmB,EAAE;AACjB,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CACvE,QAAQ,CAAC,yBAAyB,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AAChF,iBAAA;aACJ,CAAC;AACL,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC1D;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,eAAe,EAAE,EAAE;SACtB,CAAC;KACL;;uHAnLQ,0BAA0B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;4GAA1B,0BAA0B,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,gCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;;;;ACpBvC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAA0C,aAAA,CAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAGpC,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,mEAAA,CAAA,MAAA,EAAA,EAAA,OAAW,6BAAyB,CAAC,EAAA,CAAA,CAAA;QACrC,EAAyG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAApC,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,0DAAA,CAAA,MAAA,EAAA,EAAA,OAAW,2BAAuB,CAAC,EAAA,CAAA,CAAA;QACtG,EAKmD,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QALL,EAA0B,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,kEAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,YAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA,eAAA,EAAA,SAAA,kEAAA,GAAA,EAAA,OAAkB,wBAAoB,CAAtC,EAAA,CAAA,CAAA;QAAxE,EAKmD,CAAA,YAAA,EAAA,CAAA;QACnD,EAGiD,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAA/C,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,2DAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,GAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAS,EAAA,CAAA,WAAA,CAAA,GAAA,CAAA,aAAA,CAAA,MAAA,EAA+B,IAAI,CAAC,CAAA,CAAC,EAAA,CAAA,CAAA;QAC9C,EAAiD,CAAA,SAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AACnD,QAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;QAEX,EAA+G,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;QAGjC,EAAiB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,4EAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,eAAA,CAAA,MAAA,EAAwB,IAAI,CAAC,CAAC,EAAA,CAAA,CAAA;QAEvH,EAAiB,CAAA,YAAA,EAAA,CAAA;QACjB,EAC+D,CAAA,cAAA,CAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;AADG,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,4EAAA,CAAA,MAAA,EAAA,EAAA,OAAiB,2BAAuB,CAAC,EAAA,CAAA,CAAA;AAE3G,QAAA,EAAA,CAAA,YAAA,EAAiB,EAAA,CAAA;AAEnB,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAuC,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;AAEnC,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,4DAAA,CAAA,MAAA,EAAA,EAAA,OAAS,+BAA2B,CAAC,EAAA,CAAA,CAAA;QACrC,EAAgE,CAAA,SAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;QAClE,EAAS,CAAA,YAAA,EAAA,CAAA;QACT,EACkD,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;AAAhD,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,4DAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,GAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAS,EAAA,CAAA,WAAA,CAAA,GAAA,CAAA,aAAA,CAAA,MAAA,EAA+B,IAAI,CAAC,CAAA,CAAE,EAAA,CAAA,CAAA;QAC/C,EAA+D,CAAA,SAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AACjE,QAAA,EAAA,CAAA,YAAA,EAAS,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;QAMnB,EAA6D,CAAA,SAAA,CAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;;QA3CD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAEb,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAApB,QAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,KAAA,CAAoB,0BAAA,CAAA,WAAA,EAAA,IAAA,CAAA,CAAA;QAGM,EAA0B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA1B,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,YAAA,CAA0B,CAAA,aAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;AACtE,QAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAA4C,CAAA,YAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,iBAAA,GAAA,IAAA,GAAA,IAAA,CAAA,CAAA,WAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAAA,CAAA,eAAA,EAAA,GAAA,CAAA,MAAA,CAAA,6BAAA,CAAA,eAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA;QAO5C,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArC,EAAqC,CAAA,WAAA,CAAA,aAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;AAFD,QAAA,EAAA,CAAA,WAAA,CAAA,UAAA,EAAA,GAAA,CAAA,iBAAA,GAAA,IAAA,GAAA,IAAA,CAAiD,CAAA,cAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAOP,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA5B,EAA4B,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAAA,CAAA;QAG9D,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA7B,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,iBAAA,CAA6B,kBAAA,CAAA,YAAA,EAAA,IAAA,CAAA,CAAA;QAGnC,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA7B,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,iBAAA,CAA6B,kBAAA,CAAA,YAAA,EAAA,IAAA,CAAA,CAAA;QAKpB,EAAkE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlE,EAAkE,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;QAIlE,EAAkE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlE,EAAkE,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;QASnG,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;uFDtB1B,0BAA0B,EAAA,CAAA;cAJtC,SAAS;2BACI,iCAAiC,EAAA,QAAA,EAAA,yiGAAA,EAAA,CAAA;2DAapC,QAAQ,EAAA,CAAA;kBADd,SAAS;mBAAC,UAAU,CAAA;YAId,QAAQ,EAAA,CAAA;kBADd,SAAS;mBAAC,UAAU,CAAA;YAId,KAAK,EAAA,CAAA;kBADX,SAAS;mBAAC,OAAO,CAAA;;;AE/BtB;;AAEG;MAKU,4BAA4B,CAAA;AA0BrC;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAID;;AAEG;AACI,IAAA,WAAW,CAAC,OAAsB,EAAA;QACrC,IAAI,OAAO,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC;AACvC,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,EAAE;AAC9B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;AAC9E,SAAA;KACJ;;2HA/CQ,4BAA4B,GAAA,CAAA,EAAA,CAAA;8GAA5B,4BAA4B,EAAA,SAAA,EAAA,CAAA,CAAA,uBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,qCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAA5B,4BAA4B,EAAA,CAAA;cAJxC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,uBAAuB;AACjC,gBAAA,QAAQ,EAAE,EAAE;AACf,aAAA,CAAA;gBAOU,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,GAAG,EAAA,CAAA;kBADT,KAAK;YAOC,KAAK,EAAA,CAAA;kBADX,KAAK;;;;;;;;;;ICTF,EAAsE,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;AACpE,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAuB,YAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAGwB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8FAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,wCAA6B,CAAA,CAAA,EAAA,CAAC,oMAGrE,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,yBAAA,CAAA,MAAA,CAAiC,CAAA,CAHoC,EAAA,CAAA,CAAA;IADlF,EAIgD,CAAA,YAAA,EAAA,CAAA;IAChD,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAgB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,EAAA,CAAA;IAGtD,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;IAPP,EAAwC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAxC,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,UAAA,CAAA,SAAA,CAAA,SAAA,CAAA,CAAwC,gCAAA,CAAA,UAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IADtB,EAAgC,CAAA,WAAA,CAAA,YAAA,EAAA,SAAA,CAAA,KAAA,CAAA,CAAA,MAAA,EAAA,MAAA,CAAA,KAAA,CAAA,SAAA,CAAA,wDAAA,CAAA,eAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAK3B,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,iBAAA,CAAA,SAAA,CAAA,KAAA,CAAA,CAAA;;;IATjD,EAAgD,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAC9C,EAWe,CAAA,UAAA,CAAA,CAAA,EAAA,uEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjB,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAZoB,EAAY,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAZ,EAAY,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;;;AAc/C,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAkH,YAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAI5G,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,sEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,4CAA4B,CAAA,CAAA,EAAA,CAAC,2KAC3B,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,yBAAA,CAAA,MAAA,CAAiC,CAAA,CADN,EAAA,CAAA,CAAA;IAFxC,EAGgD,CAAA,YAAA,EAAA,CAAA;IAChD,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAmB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,EAAA,CAAA;;;IAHnB,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAxB,IAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,KAAA,CAAA,SAAA,CAAwB,sDAAA,CAAA,UAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IADpC,EAA8B,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA,cAAA,EAAA,MAAA,CAAA,UAAA,CAAA,MAAA,CAAA,eAAA,CAAA,CAAA,gCAAA,CAAA,eAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAIzB,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnB,EAAmB,CAAA,iBAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA;;;;;IAM9C,EAIwG,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;AADtG,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,6GAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAiB,eAAA,OAAyB,CAAA,wBAAA,CAAA,OAAO,SAAS,CAAA,CAAA,EAAA,CAAC,yNACzC,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,MAAA,EAAyB,OAAO,CAAC,CAAA,IADQ,CACK,SAAA,EAAA,SAAA,uGAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,oCAA4B,OAAO,CAAC,CAAA,CADzC,EAAA,CAAA,CAAA;IAE7D,EAAiB,CAAA,YAAA,EAAA,CAAA;;;IAJ0C,EAAuB,CAAA,UAAA,CAAA,OAAA,EAAA,OAAA,CAAA,aAAA,CAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA2B,KAAA,CAAA,CAAA,yCAAA,CAAA,IAAA,EAAA,OAAA,CAAA,KAAA,CAAA,cAAA,CAAA,CAAA;;;;IAKlF,EAIoG,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;AADlG,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,6GAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAiB,eAAA,OAAyB,CAAA,wBAAA,CAAA,KAAK,SAAS,CAAA,CAAA,EAAA,CAAC,yNACvC,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,MAAA,EAAyB,KAAK,CAAC,CAAA,IADQ,CACK,SAAA,EAAA,SAAA,uGAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,oCAA4B,KAAK,CAAC,CAAA,CADvC,EAAA,CAAA,CAAA;IAE3D,EAAiB,CAAA,YAAA,EAAA,CAAA;;;IAJ0C,EAAqB,CAAA,UAAA,CAAA,OAAA,EAAA,OAAA,CAAA,WAAA,CAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,CAAA,CAAA,uCAAA,CAAA,IAAA,EAAA,OAAA,CAAA,KAAA,CAAA,YAAA,CAAA,CAAA;;;IATlF,EACoG,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAAA,CAAA;IAClG,EAKiB,CAAA,UAAA,CAAA,CAAA,EAAA,qEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;IACjB,EAKiB,CAAA,UAAA,CAAA,CAAA,EAAA,qEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;IACnB,EAAW,CAAA,YAAA,EAAA,CAAA;;;IAbT,EAAkE,CAAA,WAAA,CAAA,yBAAA,EAAA,CAAA,MAAA,CAAA,OAAA,IAAA,MAAA,CAAA,OAAA,CAAA,MAAA,KAAA,CAAA,CAAA,CAAA;IAAC,EAA8B,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IAChE,EAA8C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9C,EAA8C,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,eAAA,IAAA,MAAA,CAAA,eAAA,CAAA,KAAA,CAAA,CAAA;IAMhD,EAA4C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5C,EAA4C,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,eAAA,IAAA,MAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA;;;;ACvB7E,MAAO,+BAAgC,SAAQ,6BAAwC,CAAA;AAyIzF,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;AArIb,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;AAC/E,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC;AACrF,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;AAChF,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;AAC9F,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;QAuC3F,IAAqB,CAAA,qBAAA,GAAG,IAAI,CAAC;AAY7B,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAE,CAAC;;;;QAOvC,IAAc,CAAA,cAAA,GAA8B,EAAE,CAAC;QAyEnD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAErD,QAAA,IAAI,CAAC,iCAAiC,GAAG,IAAI,CAAC;AAC9C,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;KACrE;AAxID;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,iCAAiC,CAAC;KAC5C;;AAoCD,IAAA,IAAW,oBAAoB,GAAA;QAC3B,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KAC7D;AAED,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;KAC3D;AAWO,IAAA,cAAc,CAAC,KAAW,EAAA;QAC9B,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;YAChD,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;AACzC,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACL,SAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEN,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;AACvB,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACd;IACO,cAAc,CAAC,GAAS,EAAE,KAAa,EAAA;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;YAChD,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;AACvC,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACL,SAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACN,IAAI,CAAC,OAAO,EAAE;YACV,IAAI,IAAI,CAAC,cAAc;mBAChB,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,+BAA+B,CAAC,oBAAoB,EAAE;AACvF,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;AACjC,aAAA;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACrB,gBAAA,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;AAC7B,gBAAA,KAAK,EAAE,KAAK;AACf,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;;AAEO,IAAA,iBAAiB,CAAC,KAAW,EAAA;QACjC,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACrC,QAAA,IAAI,GAAG,EAAE;AACL,YAAA,OAAO,GAAG,CAAC;AACd,SAAA;AACD,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,QAAQ,GAAG,EAAE,GAAG,+BAA+B,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAC1G,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,GAAG,EAAE,GAAG,+BAA+B,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAClG,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,OAAO,GAAG,EAAE,GAAG,+BAA+B,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AACtG,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,+BAA+B,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AAC9G,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,+BAA+B,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AAC9G,QAAA,GAAG,GAAG,+BAA+B,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACvG,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAChC,QAAA,OAAO,GAAG,CAAC;KACd;AAED,IAAA,IAAW,YAAY,GAAA;QACnB,IAAI,IAAI,CAAC,qBAAqB,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC/F,OAAO,IAAI,CAAC,UAAU,CAAC;AAC1B,SAAA;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AACtF,QAAA,IAAI,cAAc,EAAE;YAChB,OAAO,cAAc,CAAC,KAAK,CAAC;AAC/B,SAAA;aAAM,IAAI,IAAI,CAAC,qBAAqB,EAAE;YACnC,OAAO,IAAI,CAAC,UAAU,CAAC;AAC1B,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;KAClD;AAeM,IAAA,UAAU,CAAC,SAAoB,EAAA;QAClC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACvC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QACD,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,GAAG,EAAE;YAC/C,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KAEJ;AAEM,IAAA,WAAW,CAAC,KAAgB,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,sBAAsB,EAAE,CAAC;KACjC;IAEM,kBAAkB,GAAA;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAG;AACzD,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;AACrC,aAAA;SACJ,CAAC,CAAC,CAAC;AACJ,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;AACrC,SAAA;KACJ;IAEM,wBAAwB,CAAC,SAAiB,EAAE,KAAa,EAAA;AAC5D,QAAA,QAAQ,SAAS;AACb,YAAA,KAAK,+BAA+B,CAAC,aAAa,EAAE;gBAChD,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7C,MAAM;AACT,aAAA;AACD,YAAA,KAAK,+BAA+B,CAAC,WAAW,EAAE;gBAC9C,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3C,MAAM;AACT,aAAA;AACJ,SAAA;;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;KACrC;IAGO,sBAAsB,GAAA;QAC1B,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtD;AAES,IAAA,cAAc,CAAC,KAAgB,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,OAAO;AACV,SAAA;QACD,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;YAC1E,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACzC,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AACxC,SAAA;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;YAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3C,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,cAAc,EAAE;YAChB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACtD,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACjD,SAAA;AACD,QAAA,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAC/B;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,cAAc,EAAE,EAAE;AAClB,YAAA,YAAY,EAAE,EAAE;SACnB,CAAC;KACL;AAED;;;AAGG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvC,gBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7B,aAAA;AACJ,SAAA;QAED,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;AACpC,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,YAAA,IAAI,KAAK,EAAE;AAAE,gBAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;AAAE,aAAA;AAElD,YAAA,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAC/B,YAAA,IAAI,KAAK,EAAE;AAAE,gBAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;AAAE,aAAA;AACrD,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5B;AAEM,IAAA,gBAAgB,CAAC,KAA+B,EAAE,IAAY,EAAE,KAAgB,EAAA;QACnF,MAAM,MAAM,GAAqB,EAAE,CAAC;AACpC,QAAA,IAAI,IAAI,KAAK,+BAA+B,CAAC,aAAa,EAAE;AACxD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACxE,YAAA,IAAI,KAAK,EAAE;AACP,gBAAA,MAAM,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC;AACtC,aAAA;AAAM,iBAAA;AAEH,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK;AACtD,qBAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBACrE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACrD,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,IAAI,KAAK,+BAA+B,CAAC,WAAW,EAAE;AAC7D,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,YAAA,IAAI,KAAK,EAAE;AACP,gBAAA,MAAM,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC;AACtC,aAAA;AAAM,iBAAA;gBACH,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;oBACzG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACvD,iBAAA;AACJ,aAAA;AACJ,SAAA;QAED,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C;AAEO,IAAA,iBAAiB,CAAC,SAAgB,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC5D,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACjC,QAAA,IAAI,SAAS,EAAE;YACX,SAAS,GAAG,SAAS,CAAC;AACzB,SAAA;QACD,IAAI,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE;YAC/E,OAAO;AACH,gBAAA,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,IAAI,CAAC,oBAAoB;gBAClC,QAAQ,EAAE,uBAAuB,CAAC,KAAK;aAC1C,CAAC;AACL,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAEO,IAAA,eAAe,CAAC,OAAc,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAC1D,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7B,QAAA,IAAI,OAAO,EAAE;YACT,OAAO,GAAG,OAAO,CAAC;AACrB,SAAA;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE;YAC/E,OAAO;AACH,gBAAA,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,IAAI,CAAC,kBAAkB;gBAChC,QAAQ,EAAE,uBAAuB,CAAC,KAAK;aAC1C,CAAC;AACL,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;;AAGM,IAAA,eAAe,CAAC,KAAoB,EAAA;QACvC,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,OAAO,CAAC,KAAK,CAAC;AACnB,YAAA,KAAK,OAAO,CAAC,KAAK,EAAE;gBAChB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACzC,MAAM;AACT,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,SAAS,EAAE;gBACpB,IAAI,KAAK,CAAC,MAAM,EAAE;oBACd,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5C,iBAAA;gBACD,OAAO;AACV,aAAA;AACD,YAAA,SAAS;gBACL,OAAO;AACV,aAAA;AACJ,SAAA;;QAGD,KAAK,CAAC,wBAAwB,EAAE,CAAC;QACjC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;KAC1B;AAEM,IAAA,yBAAyB,CAAC,KAAoB,EAAA;QACjD,QAAQ,KAAK,CAAC,OAAO;;AAEjB,YAAA,KAAK,OAAO,CAAC,GAAG,EAAE;;AAEd,gBAAA,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE;oBACxC,KAAK,CAAC,cAAc,EAAE,CAAC;AAC1B,iBAAA;gBACD,KAAK,CAAC,wBAAwB,EAAE,CAAC;gBACjC,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,MAAM;AACT,aAAA;AACD,YAAA,SAAS;gBACL,OAAO;AACV,aAAA;AACJ,SAAA;KAEJ;IAEM,mBAAmB,CAAC,KAAoB,EAAE,KAAa,EAAA;;QAE1D,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,MAAM,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AAC3F,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE;gBAC5E,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;AAC/C,oBAAA,MAAM,WAAW,GAAG,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;AAC5F,oBAAA,IAAI,WAAW,EAAE;wBACb,WAAW,CAAC,KAAK,EAAE,CAAC;AACvB,qBAAA;AACJ,iBAAA;gBACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5C,aAAA;AACJ,SAAA;;AAED,QAAA,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,EAAE;YAClF,OAAO;AACV,SAAA;AAAM,aAAA;;AAEH,YAAA,IAAI,IAAI,CAAC,uCAAuC,EAAE,EAAE;gBAChD,KAAK,CAAC,cAAc,EAAE,CAAC;AAC1B,aAAA;YACD,KAAK,CAAC,wBAAwB,EAAE,CAAC;AACpC,SAAA;KACJ;IAEO,uCAAuC,GAAA;QAC3C,MAAM,GAAG,GAAG,GAAG,CAAC;AAChB,QAAA,MAAM,YAAY,GAAgB,QAAQ,CAAC,aAAa,CAAC;QACzD,MAAM,WAAW,GAAG,GAAG,CAAC,6BAA6B,CAAC,YAAY,CAAC,CAAC;;QAEpE,IAAI,YAAY,KAAK,WAAW,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;IAEO,8BAA8B,GAAA;AAClC,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,EAAE;AAC1C,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;;AAhZa,+BAAc,CAAA,cAAA,GAAG,yBAAyB,CAAC;AAC3C,+BAAe,CAAA,eAAA,GAAG,MAAM,CAAC;AACzB,+BAAoB,CAAA,oBAAA,GAAG,GAAG,CAAC;AAC3B,+BAAa,CAAA,aAAA,GAAG,OAAO,CAAC;AACxB,+BAAW,CAAA,WAAA,GAAG,KAAK,CAAC;iIALzB,+BAA+B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;iHAA/B,+BAA+B,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,eAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,8CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;oCAkCvB,4BAA4B,EAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;ADpEjD,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAA0C,yBAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAG+B,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,+DAAA,CAAA,MAAA,EAAA,EAAA,OAAW,2BAAuB,CAAC,EAAA,CAAA,CAAA;QACtG,EAOwE,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AADpC,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,+DAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,GAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAS,EAAA,CAAA,WAAA,CAAA,GAAA,CAAA,aAAA,CAAA,MAAA,EAA+B,IAAI,CAAC,CAAA,CAAC,EAAA,CAAA,CAAA;QANlF,EAOwE,CAAA,YAAA,EAAA,CAAA;QACxE,EAEkG,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAA/C,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,gEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,GAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAS,EAAA,CAAA,WAAA,CAAA,GAAA,CAAA,aAAA,CAAA,MAAA,EAA+B,IAAI,CAAC,CAAA,CAAC,EAAA,CAAA,CAAA;QAC/F,EAAmD,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;AACrD,QAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;QAKX,EAE+B,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA;QAC7B,EAae,CAAA,UAAA,CAAA,EAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;QAEf,EAQM,CAAA,UAAA,CAAA,EAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QAEN,EAcW,CAAA,UAAA,CAAA,EAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AACb,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;QAER,EAA6D,CAAA,SAAA,CAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;;;QAnED,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QACf,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAApB,QAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,KAAA,CAAoB,mCAAA,CAAA,mCAAA,EAAA,GAAA,CAAA,iCAAA,CAAA,CAAA;QAGM,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAtB,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,YAAA,CAAsB,CAAA,aAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;AAClE,QAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAA4C,CAAA,YAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,eAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,iBAAA,GAAA,IAAA,GAAA,IAAA,CAAA,CAAA,WAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAAA,6BAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,CAAA;QAQa,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArC,EAAqC,CAAA,WAAA,CAAA,aAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;AAD1E,QAAA,EAAA,CAAA,WAAA,CAAA,UAAA,EAAA,GAAA,CAAA,iBAAA,GAAA,IAAA,GAAA,IAAA,CAAiD,CAAA,cAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAUvE,EAA2M,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA3M,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,iCAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAAC,KAAA,EAAA,GAAA,CAAA,WAAA,GAAA,GAAA,GAAA,GAAA,CAAA,WAAA,GAAA,GAAA,CAAA,IAAA,CAAA,GAAA,CAAA,iCAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAAC,KAAA,CAAA,CAA2M,CAAA,IAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAAA,CAAA;QAE5L,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA/B,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,IAAA,GAAA,CAAA,OAAA,CAAA,MAAA,CAAA,CAAA;QAeW,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvD,EAAuD,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,gBAAA,IAAA,GAAA,CAAA,OAAA,IAAA,GAAA,CAAA,OAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;QAUrG,EAAqE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArE,EAAqE,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA,CAAA,GAAA,CAAA,eAAA,CAAA,IAAA,CAAA,GAAA,CAAA,OAAA,IAAA,GAAA,CAAA,OAAA,CAAA,MAAA,KAAA,CAAA,CAAA,CAAA;QAiB9D,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;ACiKnC,UAAA,CAAA;AAAC,IAAA7B,OAAK,EAAE;;;;AAGP,CAAA,EAAA,+BAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA,CAAA;uFApMQ,+BAA+B,EAAA,CAAA;cAJ3C,SAAS;2BACI,sCAAsC,EAAA,QAAA,EAAA,y7JAAA,EAAA,CAAA;2DAuBzC,cAAc,EAAA,CAAA;kBADpB,SAAS;mBAAC,SAAS,CAAA;YAIb,QAAQ,EAAA,CAAA;kBADd,SAAS;mBAAC,UAAU,CAAA;YAId,cAAc,EAAA,CAAA;kBADpB,SAAS;mBAAC,gBAAgB,CAAA;YAIpB,YAAY,EAAA,CAAA;kBADlB,SAAS;mBAAC,cAAc,CAAA;YAOlB,OAAO,EAAA,CAAA;kBADb,eAAe;mBAAC,4BAA4B,CAAA;YAOtC,iCAAiC,EAAA,CAAA;kBADvC,KAAK;YAIC,gBAAgB,EAAA,CAAA;kBADtB,KAAK;YAIC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAIC,qBAAqB,EAAA,CAAA;kBAD3B,KAAK;YAaC,kBAAkB,EAAA,CAAA;kBADxB,MAAM;YAqIC,sBAAsB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACjOlC;;;AAGG;MACU,gBAAgB,CAAA;AAOzB,IAAA,WAAA,CAAoB,KAA2B,EAAA;QAA3B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAsB;KAAK;IAE7C,WAAW,GAAA;QACd,MAAM,KAAK,GAAW,EAAE,CAAC;AACzB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;gBAAE,SAAS;AAAE,aAAA;AACvC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACtC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,WAAW,EAAE;AACnB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC;AACzD,aAAA;AACD,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,SAAA;AACD,QAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;;;;;;;;;KAUpB;AAEO,IAAA,UAAU,CAAC,OAAc,EAAA;QAC7B,MAAM,KAAK,GAAyB,EAAE,CAAC;AACvC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,SAAA;AACD,QAAA,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAG;YACnC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,KAAI;AACjC,gBAAA,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACpB,gBAAA,OAAO,KAAK,CAAC;aAChB,EAAE,EAAE,CAAC,CAAC;SACV,CAAC,CAAC,CAAC;KACP;AAEO,IAAA,iBAAiB,CAAC,KAAU,EAAA;QAChC,IAAI,KAAK,CAAC,MAAM,EAAE;YACd,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxD,SAAA;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACnC,SAAA;KACJ;AAEO,IAAA,OAAO,CAAC,KAAU,EAAA;QACtB,OAAO,IAAI,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;KACpF;AAEO,IAAA,YAAY,CAAC,KAAU,EAAA;AAC3B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;KAC1F;AAEO,IAAA,cAAc,CAAC,MAAW,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAChC,QAAQ,CAAC,OAAO,IAAG;YACf,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACjB,aAAA;YACD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CACnC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAC5D,CAAC;SACL,CAAC,CACL,CAAC;KACL;AAEO,IAAA,WAAW,CAAC,MAAW,EAAA;QAC3B,OAAO,IAAI,CAAC,IAAI,OAAO,CAAQ,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;KAC7F;;AA5ED;;AAEG;AACW,gBAAuB,CAAA,uBAAA,GAAG,qBAAqB;;;;;;ICgB3D,EAAgG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC9F,EACqE,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AACrE,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAA4E,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IACQ,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAQ,CAAA,YAAA,EAAA,CAAA;IACzG,EAAkF,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAChF,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;;AAAA,IAAA,EAAA,CAAA,YAAA,EAAQ,EAAA,CAAA;IAEV,EAG+G,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAFvG,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,6EAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,IAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAe,CAAA,YAAA,CAAA,IAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;;IAG/B,EAA4D,CAAA,SAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAC9D,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;;;;IAbqD,EAA8C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA9C,IAAA,EAAA,CAAA,WAAA,CAAA,mBAAA,EAAA,CAAA,MAAA,CAAA,WAAA,CAAA,OAAA,CAAA,CAA8C,CAAA,+BAAA,EAAA,MAAA,CAAA,WAAA,CAAA,OAAA,CAAA,CAAA,CAAA;IAGxB,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,iBAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IAE/F,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,OAAA,CAAA,IAAA,EAAA,IAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IAKM,EAAoE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAApE,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,mBAAA,CAAoE,CAAA,aAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IADpE,EAA4G,CAAA,WAAA,CAAA,YAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,EAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,2BAAA,EAAA,OAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;;IAZxH,EAA+B,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAC7B,EAeM,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAhBS,EAAU,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAV,EAAU,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;ACjBtC;AAgBA;AACM,MAAO,4BAA6B,SAAQ,wCAAwC,CAAA;;AAA7E,mBAAA,4BAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,yCAAA,CAAA,CAAA,OAAA,SAAA,oCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,yCAAA,KAAA,yCAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,4BAA4B,SAA5B,4BAA4B,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;8GAA5B,4BAA4B,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,qCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QAdrC,EAUK,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAV8B,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,6EAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,GAAA,MAAA,CAAA,EAAA,CAAkB,4HAK/B,GAAgD,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,MAAA,CAAQ,IALzB,CAMc,qBAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAA6D,QAAQ,CANnF,EAAA,CAAA,CAAA;QAUhD,EAAiB,CAAA,YAAA,EAAA,CAAA;;QAVa,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,IAAA,CAAA,CAAA,OAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,WAAA,CAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,QAAA,CAAA,CAAA,UAAA,EAAA,CAAA,CAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,kHAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,QAAA,CAAA,CAAA,WAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,SAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,CAAA,CAAA,6BAAA,EAAA,GAAA,CAAA,qCAAA,EAAA,CAAA,CAAA,iCAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,CAAA;yGA+B5C,sBAAsB,EAAAoB,0BAAA,EAAAC,2BAAA,EAAAC,gCAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAjBtB,4BAA4B,EAAA,CAAA;cAhBxC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;AAYT,IAAA,CAAA;AACJ,aAAA,CAAA;;AAKD;;AAEG;AAYI,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,6BAA4C,CAAA;AAiHpF;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;KAC9E;AAvHD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,wBAAwB,CAAC;KACnC;AA4BD;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAC3C;AAED;;AAEG;AACH,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,QAAQ;cACd,IAAI,CAAC,gBAAgB;kBACjB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAClG,kBAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ;cAC5E,IAAI,CAAC,QAAQ;AACX,kBAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,IAAI;AACtF,kBAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;KAClF;AAED;;AAEG;AACH,IAAA,IAAW,aAAa,GAAA;QACpB,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,QAAQ;AAC9C,cAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM;AAC/D,cAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEvE,IAAI,IAAI,CAAC,QAAQ,EAAE;;AAEf,YAAA,MAAM,aAAa,GAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC/F,YAAA,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAC/C,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ;AAChB,cAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;cAClH,SAAS,CAAC;KACnB;AAED;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;AACZ,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;KACpF;AAED;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;KAC5F;AAED;;AAEG;AACH,IAAA,IAAY,gBAAgB,GAAA;QACxB,OAAO,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;KAC9E;AAED;;AAEG;AACH,IAAA,IAAW,YAAY,GAAA;AACnB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;KACxD;AAED;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;KAC1D;AAED,IAAA,IAAW,wBAAwB,GAAA;AAC/B,QAAA,OAAO,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,CAAC;KACxD;IAYM,KAAK,GAAA;QACR,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;QAC1C,KAAK,CAAC,KAAK,EAAE,CAAC;KACjB;AAED;;AAEG;IACI,aAAa,GAAA;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC;KAC7E;AAED;;AAEG;AACI,IAAA,MAAM,CAAC,IAAkB,EAAA;;AAE5B,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACpD,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACrB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;;;AAGhC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,SAAA;QAED,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,uBAAuB,GAAG,UAAU,CAAC;AAC1C,QAAA,UAAU,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC;YAC/B,IAAI,EAAE,KAAK,IAAG;AACV,gBAAA,IAAI,IAAI,CAAC,uBAAuB,KAAK,UAAU,EAAE;AAC7C,oBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3B,iBAAA;aACJ;YACD,KAAK,EAAE,KAAK,IAAG;AACX,gBAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,2CAA2C,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;aACvG;AACJ,SAAA,CAAC,CAAC;KACN;AAED;;AAEG;AACK,IAAA,WAAW,CAAC,KAAwB,EAAA;AACxC,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACpC,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC;AAC1C,SAAA;aAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YACtB,MAAM,SAAS,GAAW,EAAE,CAAC;AAC7B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,aAAA;AACD,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AAC1B,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC;KAC7C;AAED;;AAEG;AACI,IAAA,YAAY,CAAC,KAAa,EAAA;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,SAAA;AAED,QAAA,MAAM,cAAc,GAAG,GAAG,CAAC,2BAA2B,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACvF,QAAA,IAAI,cAAc,EAAE;YAChB,cAAc,CAAC,KAAK,EAAE,CAAC;AAC1B,SAAA;KACJ;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;AAEM,IAAA,WAAW,CAAC,IAAU,EAAA;QACzB,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;KAC3D;AAED;;;AAGG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;;AAE7B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAA;;AAGD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;AAE3B,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;gBACxB,OAAO;AACH,oBAAA,aAAa,EAAE;AACX,wBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB;AAC1E,wBAAA,KAAK,EAAE,KAAK;wBACZ,QAAQ,EAAE,uBAAuB,CAAC,KAAK;AAC1C,qBAAA;iBACJ,CAAC;AACL,aAAA;;YAGD,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;AACpE,gBAAA,IAAI,SAAS,EAAE;AACX,oBAAA,SAAS,GAAG,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,CAAC;AAC/B,iBAAA;gBACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,SAAS,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,EAAE;AAChG,oBAAA,IAAI,OAAe,CAAC;AACpB,oBAAA,IAAI,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE;wBACxB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9G,qBAAA;AAAM,yBAAA;wBACH,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxG,qBAAA;oBACD,OAAO;AACH,wBAAA,eAAe,EAAE;AACb,4BAAA,OAAO,EAAE,OAAO;AAChB,4BAAA,KAAK,EAAE,KAAK;4BACZ,QAAQ,EAAE,uBAAuB,CAAC,KAAK;AAC1C,yBAAA;qBACJ,CAAC;AACL,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5B;;+GA1QQ,sBAAsB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;AD7CnC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAA0C,kBAAA,CAAA,CAAA,EAAA,eAAA,EAAA,CAAA,CAAA,CAAA;AAG+C,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,gEAAA,CAAA,MAAA,EAAA,EAAA,OAAW,kBAAc,CAAC,EAAA,CAAA,CAAA;AAC7G,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAkD,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AACgC,QAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,SAAA,uDAAA,GAAA,EAAA,OAAU,mBAAe,CAAC,EAAA,CAAA,CAAA;QAA1G,EAC4G,CAAA,YAAA,EAAA,CAAA;QAC5G,EACsI,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;QAAzD,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,GAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,GAAY,CAAA,KAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;QACjG,EAIF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAS,CAAA,YAAA,EAAA,CAAA;QACT,EAA0C,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;QACxC,EAKF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAI,EAAA,CAAA;QAEN,EAAG,CAAA,cAAA,CAAA,EAAA,EAAA,GAAA,CAAA,CAAA;QAAA,EACoI,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;;;AAAA,QAAA,EAAA,CAAA,YAAA,EAAI,EAAA,CAAA;QAE7I,EAAgC,CAAA,cAAA,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAkB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;QAAA,EAAI,CAAA,YAAA,EAAA,CAAA;QAEtD,EAiBe,CAAA,UAAA,CAAA,EAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACjB,EAAW,CAAA,YAAA,EAAA,CAAA;QACX,EAA6D,CAAA,SAAA,CAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;QA/CD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAC7B,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA7B,EAA6B,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAIgB,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,UAAA,EAAA,GAAA,CAAA,iBAAA,CAAA,CAAA;AACxE,QAAA,EAAA,CAAA,WAAA,CAAA,UAAA,EAAA,GAAA,CAAA,QAAA,IAAA,SAAA,CAAuC,CAAA,QAAA,EAAA,GAAA,CAAA,YAAA,GAAA,GAAA,CAAA,iBAAA,GAAA,SAAA,CAAA,CAAA;QACxB,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjC,EAAiC,CAAA,UAAA,CAAA,aAAA,EAAA,GAAA,CAAA,iBAAA,CAAA,CAAA;QAC6C,EAAiC,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,aAAA,CAAA,CAAA;QACnI,EAIF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAJE,EAIF,CAAA,kBAAA,CAAA,GAAA,EAAA,GAAA,CAAA,WAAA,KAAA,GAAA,CAAA,QAAA,GAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,UAAA,CAAA,MAAA,GAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,UAAA,CAAA,QAAA,CAAA,EAAA,GAAA,CAAA,CAAA;QAEE,EAKF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QALE,EAKF,CAAA,kBAAA,CAAA,GAAA,EAAA,GAAA,CAAA,QAAA,GAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,YAAA,CAAA,MAAA,GAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,YAAA,CAAA,QAAA,EAAA,GAAA,CAAA,CAAA;QAEC,EACoI,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QADpI,EACoI,CAAA,iBAAA,CAAA,GAAA,CAAA,YAAA,GAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,sBAAA,EAAA,GAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,EAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,sBAAA,EAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,YAAA,CAAA,CAAA,CAAA;QAEzG,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlB,EAAkB,CAAA,iBAAA,CAAA,GAAA,CAAA,cAAA,CAAA,CAAA;QAEnC,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA;QAmBT,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;ACD1B,sBAAsB,GAAA,UAAA,CAAA;AAXlC,IAAA,iBAAiB,CAAC;QACf,IAAI,EAAE,mBAAmB,CAAC,IAAI;AAC9B,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,WAAW,EAAE,6CAA6C;AAC1D,QAAA,eAAe,EAAE,4BAA4B;KAChD,CAAC;qCA0HgB,QAAQ,CAAA,CAAA;AArHb,CAAA,EAAA,sBAAsB,CA2QlC,CAAA;uFA3QY,sBAAsB,EAAA,CAAA;cAJlC,SAAS;2BACI,6BAA6B,EAAA,QAAA,EAAA,4mGAAA,EAAA,CAAA;2DAgBhC,SAAS,EAAA,CAAA;kBADf,SAAS;mBAAC,MAAM,CAAA;YAOV,QAAQ,EAAA,CAAA;kBADd,KAAK;YAOC,SAAS,EAAA,CAAA;kBADf,KAAK;YAOC,WAAW,EAAA,CAAA;kBADjB,KAAK;;;;ACnEV;AAeA;AACM,MAAO,4BAA6B,SAAQ,wCAAwC,CAAA;;AAA7E,mBAAA,4BAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,yCAAA,CAAA,CAAA,OAAA,SAAA,oCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,yCAAA,KAAA,yCAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,4BAA4B,SAA5B,4BAA4B,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;8GAA5B,4BAA4B,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,qCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QAbrC,EASK,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAT8B,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,6EAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,GAAA,MAAA,CAAA,EAAA,CAAkB,4HAI/B,GAAgD,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,MAAA,CAAQ,IAJzB,CAKc,qBAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAA6D,QAAQ,CALnF,EAAA,CAAA,CAAA;QAShD,EAAiB,CAAA,YAAA,EAAA,CAAA;;QATa,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,IAAA,CAAA,iDAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,QAAA,CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,WAAA,CAAA,CAAA,wEAAA,CAAA,UAAA,EAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,IAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,CAAA,4EAAA,CAAA,iCAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,CAAA;yGA6B5C,sBAAsB,EAAAF,0BAAA,EAAAC,2BAAA,EAAAC,gCAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAhBtB,4BAA4B,EAAA,CAAA;cAfxC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWT,IAAA,CAAA;AACJ,aAAA,CAAA;;AAKD;;AAEG;AAWI,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,6BAAkC,CAAA;AA4B1E;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnB;AAhCD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,wBAAwB,CAAC;KACnC;AAED,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;IACD,IAAW,QAAQ,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI;YACA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClC,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;;AAER,YAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC;gBACR,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,gBAAA,OAAO,EAAE,mBAAmB;AAC5B,gBAAA,MAAM,EAAE,qCAAqC;AAChD,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAWS,IAAA,cAAc,CAAC,KAAU,EAAA;QAC/B,IAAI,iBAAiB,GAAG,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI;AACA,gBAAA,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAClF,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;gBACR,OAAO,CAAC,GAAG,CAAC;oBACR,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,oBAAA,OAAO,EAAE,mBAAmB;AAC5B,oBAAA,MAAM,EAAE,qCAAqC;AAChD,iBAAA,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAEnD,QAAA,IAAI,KAAK,EAAE;YACP,IAAI,iBAAiB,KAAK,WAAW,EAAE;AACnC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1D,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;;+GArEQ,sBAAsB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA1B,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ACxCnC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAA0C,aAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAAA,CAAA;QAE5B,EAAsB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,iEAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,QAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA;QAChC,EAAA,CAAA,MAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAW,EAAA,CAAA;QAEb,EAAyD,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QAC3E,EAA6D,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;QAPD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAE3B,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAtB,EAAsB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA;QAGF,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAxB,EAAwB,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,KAAA,CAAA,WAAA,CAAA,CAAA;QAAC,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,iBAAA,CAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QAC9C,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;ADkC1B,sBAAsB,GAAA,UAAA,CAAA;AAVlC,IAAA,iBAAiB,CAAC;QACf,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,QAAA,MAAM,EAAE,kBAAkB;AAC1B,QAAA,WAAW,EAAE,gDAAgD;AAC7D,QAAA,eAAe,EAAE,4BAA4B;KAChD,CAAC;qCAqCgB,QAAQ,CAAA,CAAA;AAhCb,CAAA,EAAA,sBAAsB,CAsElC,CAAA;uFAtEY,sBAAsB,EAAA,CAAA;cAJlC,SAAS;2BACI,6BAA6B,EAAA,QAAA,EAAA,kXAAA,EAAA,CAAA;;;ME/B9B,wCAAwC,CAAA;AAEjD,IAAA,WAAA,CAAsB,wCAAkF,EAAA;QAAlF,IAAwC,CAAA,wCAAA,GAAxC,wCAAwC,CAA0C;KAAI;AAC5G;;;;;;AAMG;AACI,IAAA,MAAM,CAAC,KAAuB,EAAE,SAAiC,EAAE,WAAuB,EAAA;QAC7F,IAAI,CAAC,wCAAwC,CAAC,yCAAyC,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;KAC1H;AAED;;;;;;AAMG;AACI,IAAA,GAAG,CAAC,KAAuB,EAAE,SAAiC,EAAE,WAAuB,EAAA;AAC1F,QAAA,IAAI,CAAC,wCAAwC,CAAC,yCAAyC,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;KACjI;;mJAvBQ,wCAAwC,EAAA,EAAA,CAAA,QAAA,CAAAmB,wCAAA,CAAA,CAAA,CAAA,EAAA,CAAA;6HAAxC,wCAAwC,EAAA,OAAA,EAAxC,wCAAwC,CAAA,IAAA,EAAA,UAAA,EAFvC,MAAM,EAAA,CAAA,CAAA;uFAEP,wCAAwC,EAAA,CAAA;cAHpD,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA,CAAA;;;;;;;ACHG,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACwE,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;AACA,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,0EAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,IAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,EAAA,MAAA,CAAA,KAAA,CAAA,IAAA,CAAA,GAAA,MAAA,EAAA,CAAA,EAAA,CAAsB,CACjF,OAAA,EAAA,SAAA,kEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAoB,CAAA,kBAAA,EAAA,CAAA,CAD6D,EAAA,CAAA,CAAA;IAA5F,EAEgH,CAAA,YAAA,EAAA,CAAA;IAChH,EAEiG,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAA1B,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,mEAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,IAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAe,CAAA,YAAA,CAAA,IAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAC9F,EAA4D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAC9D,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;;;;IAP6D,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA;IAE1F,EAA2G,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,aAAA,CAAA,MAAA,CAAA,MAAA,CAAA,KAAA,EAAA,IAAA,GAAA,CAAA,EAAA,MAAA,CAAA,KAAA,CAAA,MAAA,CAAA,CAAA,CAAA;IAG3G,EAAoE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApE,EAAoE,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,mBAAA,CAAA,CAAA;IADpE,EAAgF,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,qBAAA,CAAA,CAAA;;;;IAPtF,EAAsE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACpE,EAUM,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACN,EAE4F,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IAAxB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,6DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAa,CAAA,WAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACzF,EAA2C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAC3C,EAAM,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAA+D,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,EAAA,CAAA;;;IAfxD,EAAS,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAT,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,KAAA,CAAS,CAAA,cAAA,EAAA,MAAA,CAAA,YAAA,CAAA,CAAA;IAa7B,EAAiE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjE,EAAiE,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,gBAAA,CAAA,CAAA;IADjE,EAAsC,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,kBAAA,CAAA,CAAA;IAGhC,EAA+D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/D,EAA+D,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,kBAAA,CAAA,CAAA;;ACX3E;;AAEG;AAKG,MAAO,sBAAuB,SAAQ,6BAAuC,CAAA;AAuB/E;;AAEG;IACH,WACI,CAAA,QAAkB,EACR,wCAAkF,EAAA;QAE5F,KAAK,CAAC,QAAQ,CAAC,CAAC;QAFN,IAAwC,CAAA,wCAAA,GAAxC,wCAAwC,CAA0C;KAG/F;AAvBD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,wBAAwB,CAAC;KACnC;AAED;;AAEG;AACH,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAC3C;AAYD;;AAEG;AACH,IAAA,IAAW,kBAAkB,GAAA;QACzB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CACvE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACvE,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;KACzE;AAED;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC;AAED;;AAEG;IACI,WAAW,CAAC,QAAgB,EAAE,EAAA;QACjC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAEpC,QAAA,IAAI,CAAC,wCAAwC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACnG;AAED;;AAEG;AACI,IAAA,YAAY,CAAC,KAAa,EAAA;QAC7B,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAEnB,QAAA,IAAI,CAAC,wCAAwC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACtG;AAED;;AAEG;IACI,kBAAkB,GAAA;QACrB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;AAED;;AAEG;IACI,YAAY,CAAC,KAAK,EAAE,IAAI,IAAI,OAAO,KAAK,CAAC,EAAE;AAElD;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;AAED;;;;;AAKG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;QAC7B,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AACrF,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE;YACjG,OAAO;AACH,gBAAA,SAAS,EAAE;AACP,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;AACnE,iBAAA;aACJ,CAAC;AACL,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5B;;+GAlHQ,sBAAsB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAe,wCAAA,CAAA,CAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;QDbnC,EAA0C,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QACxC,EAkBM,CAAA,UAAA,CAAA,CAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACN,EAA6D,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;QArBD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QACjC,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QAmBK,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;uFCP1B,sBAAsB,EAAA,CAAA;cAJlC,SAAS;2BACI,6BAA6B,EAAA,QAAA,EAAA,4+CAAA,EAAA,CAAA;+GAShC,SAAS,EAAA,CAAA;kBADf,SAAS;mBAAC,WAAW,CAAA;YAcX,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,iBAAiB,CAAA;;;;;;;;;IC7B9B,EAAuB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAAlB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAX,EAAW,CAAA,iBAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;;;AAMhC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAA4F,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IACP,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,sEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAW,CAAA,SAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACtG,EAAsD,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACxD,EAAS,CAAA,YAAA,EAAA,CAAA;IACT,EAA+I,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IAA5D,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,sEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAW,CAAA,SAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACtG,EAAwD,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAC1D,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;;;IALgG,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArC,EAAqC,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IAGrC,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArC,EAAqC,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;;;;AATlJ,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAA0E,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AACzB,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,sEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,KAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAmB,CAGvD,OAAA,EAAA,SAAA,8DAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAoB,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA,IAHmC,CAGrB,UAAA,EAAA,SAAA,iEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAuB,CAAA,eAAA,CAAA,MAAA,CAAA,CAAA,CAHF,EAAA,CAAA,CAAA,SAAA,EAAA,SAAA,gEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAGe,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,cAAA,CAAA,MAAA,CAAsB,CAAA,CAHrC,EAAA,CAAA,CAAA;IAAlE,EAGyG,CAAA,YAAA,EAAA,CAAA;IACzG,EAOO,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACT,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAZ2C,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAnB,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,KAAA,CAAmB,CAAA,UAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA,UAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA,KAAA,EAAA,MAAA,CAAA,GAAA,CAAA,CAAA,KAAA,EAAA,MAAA,CAAA,GAAA,CAAA,qBAAA,CAAA,aAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IAA0B,EAAiD,CAAA,WAAA,CAAA,MAAA,EAAA,MAAA,CAAA,cAAA,GAAA,YAAA,GAAA,IAAA,CAAA,CAAA,eAAA,EAAA,MAAA,CAAA,GAAA,CAAA,CAAA,eAAA,EAAA,MAAA,CAAA,GAAA,CAAA,CAAA,YAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA,eAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAItI,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAAA;;ACCjC;AAIA;AACM,MAAO,8BAA+B,SAAQ,wCAAwC,CAAA;;AAA/E,mBAAA,8BAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,2CAAA,CAAA,CAAA,OAAA,SAAA,sCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,2CAAA,KAAA,2CAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,8BAA8B,SAA9B,8BAA8B,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;gHAA9B,8BAA8B,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,uCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QCd3C,EAewI,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAfnG,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,+EAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,GAAA,MAAA,CAAA,EAAA,CAAkB,8HAcnC,GAAgD,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,MAAA,CAAQ,IAdrB,CAeU,qBAAA,EAAA,SAAA,qFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAA6D,QAAQ,CAf/E,EAAA,CAAA,CAAA;QAgBvD,EAAiB,CAAA,YAAA,EAAA,CAAA;;AAhBoB,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAkB,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,IAAA,CAAA,CAAA,OAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,QAAA,CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,WAAA,CAAA,CAAA,CAAA,UAAA,EAAA,CAAA,CAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,UAAA,EAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,IAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,IAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,KAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,IAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,IAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,IAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,cAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,CAAA,CAAA,6BAAA,EAAA,GAAA,CAAA,qCAAA,EAAA,CAAA,CAAA,iCAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,CAAA;yGDkE1C,wBAAwB,EAAAV,0BAAA,EAAAC,2BAAA,EAAAC,gCAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFApDxB,8BAA8B,EAAA,CAAA;cAJ1C,SAAS;;;AAOV;;AAEG;AA+CI,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,6BAAqC,CAAA;AA+D/E;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;AApCpB;;AAEG;QAEI,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAiC1B,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;;KAEhB;AAtED;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,0BAA0B,CAAC;KACrC;IAmEM,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;;QAGjB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1D,cAAE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI;AACtD,cAAE,IAAI,CAAC,WAAW,CAAC;KAC1B;AAED;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC9F;AAED;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC9F;AAED;;AAEG;AACI,IAAA,cAAc,CAAC,MAAqB,EAAA;;QAEvC,QAAQ,MAAM,CAAC,OAAO;AAClB,YAAA,KAAK,OAAO,CAAC,OAAO,EAAE;gBAClB,MAAM,CAAC,cAAc,EAAE,CAAC;;gBAExB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;gBAClD,UAAU,CAAC,MAAK;oBACZ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AACvD,iBAAC,CAAC,CAAC;gBACH,MAAM;AACT,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,SAAS,EAAE;gBACpB,MAAM,CAAC,cAAc,EAAE,CAAC;;gBAExB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;gBAClD,UAAU,CAAC,MAAK;oBACZ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AACvD,iBAAC,CAAC,CAAC;gBACH,MAAM;AACT,aAAA;AACD,YAAA,SAAS;gBAAE,OAAO;AAAE,aAAA;AACvB,SAAA;KACJ;AAED;;AAEG;IACI,SAAS,GAAA;QACZ,IAAI,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACrE,QAAA,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC;AAC1B,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AAClB,YAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AACpB,SAAA;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;AAED;;AAEG;IACI,SAAS,GAAA;QACZ,IAAI,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACrE,QAAA,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC;AAC1B,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AAClB,YAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;AACpB,SAAA;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;AAED;;AAEG;AACI,IAAA,YAAY,CAAC,MAAM,EAAA;AACtB,QAAA,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,cAAc,EAAE,CAAC;AAC3B,SAAA;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;KAC/C;AAED;;;;AAIG;AACI,IAAA,eAAe,CAAC,MAAM,EAAA;AACzB,QAAA,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,cAAc,EAAE,CAAC;AAC3B,SAAA;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KAChD;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;AAED;;AAEG;IACO,aAAa,GAAA;AACnB,QAAA,OAAO,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;KAC7D;AAED;;;AAGG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;;AAE7B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACzD,YAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAA;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC/B,OAAO;AACH,gBAAA,UAAU,EAAE;AACR,oBAAA,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;oBACxG,QAAQ,EAAE,uBAAuB,CAAC,KAAK;AAC1C,iBAAA;aACJ,CAAC;AACL,SAAA;;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AAC/D,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAA,IAAI,MAAM,EAAE;AAAE,gBAAA,OAAO,MAAM,CAAC;AAAE,aAAA;AACjC,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AAC/D,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAA,IAAI,MAAM,EAAE;AAAE,gBAAA,OAAO,MAAM,CAAC;AAAE,aAAA;AACjC,SAAA;QAED,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;YAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;;AAE1E,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;YAE/D,IAAI,GAAG,KAAK,CAAC,EAAE;gBACX,OAAO;AACH,oBAAA,kBAAkB,EAAE;AAChB,wBAAA,KAAK,EAAE,KAAK;AACZ,wBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa;AAC1E,6BAAA,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;wBAChD,QAAQ,EAAE,uBAAuB,CAAC,KAAK;AAC1C,qBAAA;iBACJ,CAAC;AACL,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5B;AAED;;;;AAIG;IACO,gBAAgB,CAAC,KAAa,EAAE,OAAe,EAAA;QACrD,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC;QACpE,MAAM,eAAe,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC;QACxE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/E,QAAA,OAAO,CAAC,QAAQ,GAAG,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;KAC9D;AAED;;;;;;AAMG;AACO,IAAA,gBAAgB,CAAC,OAAmB,EAAE,QAAQ,GAAG,IAAI,EAAA;AAC3D,QAAA,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE;YACzB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YACtE,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACtD,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YACtE,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACzD,SAAA;KACJ;;mHApRQ,wBAAwB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;;;;;ADlErC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAA0C,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEtC,EAAyC,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACzC,EAaM,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACR,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAA6D,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;QAnBD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAE9B,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA;QACJ,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,QAAA,CAAA,CAAA;QAeZ,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;ACgD1B,wBAAwB,GAAA,UAAA,CAAA;AA9CpC,IAAA,iBAAiB,CAAC;QACf,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,WAAW,EAAE,+CAA+C;AAC5D,QAAA,eAAe,EAAE,8BAA8B;AAC/C,QAAA,gBAAgB,EAAE;AACd,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,KAAK,EAAE,mBAAmB;AAC1B,gBAAA,YAAY,EAAE,CAAC;AACf,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE;AACL,oBAAA,YAAY,EAAE,KAAK;AACtB,iBAAA;AACJ,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,KAAK,EAAE,mBAAmB;AAC1B,gBAAA,YAAY,EAAE,GAAG;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE;AACL,oBAAA,YAAY,EAAE,KAAK;AACtB,iBAAA;AACJ,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,oBAAoB;AAC3B,gBAAA,YAAY,EAAE,CAAC;AACf,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE;AACL,oBAAA,YAAY,EAAE,KAAK;AACtB,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ,CAAC;qCAwEgB,QAAQ,CAAA,CAAA;AAnEb,CAAA,EAAA,wBAAwB,CAqRpC,CAAA;uFArRY,wBAAwB,EAAA,CAAA;cAJpC,SAAS;2BACI,+BAA+B,EAAA,QAAA,EAAA,0gDAAA,EAAA,CAAA;2DAgBlC,KAAK,EAAA,CAAA;kBADX,SAAS;mBAAC,OAAO,CAAA;YAOX,SAAS,EAAA,CAAA;kBADf,SAAS;mBAAC,WAAW,CAAA;YAOf,eAAe,EAAA,CAAA;kBADrB,SAAS;mBAAC,iBAAiB,CAAA;YAOrB,eAAe,EAAA,CAAA;kBADrB,SAAS;mBAAC,iBAAiB,CAAA;YAOrB,cAAc,EAAA,CAAA;kBADpB,KAAK;YAOC,IAAI,EAAA,CAAA;kBADV,KAAK;YAOC,WAAW,EAAA,CAAA;kBADjB,KAAK;YAOC,GAAG,EAAA,CAAA;kBADT,KAAK;YAOC,GAAG,EAAA,CAAA;kBADT,KAAK;;;MExHG,+CAA+C,CAAA;AACxD,IAAA,WAAA,CAAsB,wCAAkF,EAAA;QAAlF,IAAwC,CAAA,wCAAA,GAAxC,wCAAwC,CAA0C;KAAI;AAC5G;;;;;;AAMG;AACI,IAAA,MAAM,CAAC,KAAY,EAAE,SAAqB,EAAE,WAAuB,EAAA;QACtE,IAAI,CAAC,wCAAwC,CAAC,yCAAyC,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;KAC1H;AAED;;;;;;AAMG;AACI,IAAA,GAAG,CAAC,KAAY,EAAE,SAAqB,EAAE,WAAuB,EAAA;AACnE,QAAA,IAAI,CAAC,wCAAwC,CAAC,yCAAyC,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;KACjI;AAED;;;;AAIG;AACI,IAAA,OAAO,CAAC,KAAY,EAAE,WAAuB,EAAE,QAAgB,EAAA;QAClE,IAAI,CAAC,wCAAwC,CAAC,+BAA+B,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;KAC/G;AAED;;;;AAIG;AACI,IAAA,MAAM,CAAC,KAAY,EAAE,WAAuB,EAAE,QAAgB,EAAA;QACjE,IAAI,CAAC,wCAAwC,CAAC,+BAA+B,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;KAC/G;;iKAxCQ,+CAA+C,EAAA,EAAA,CAAA,QAAA,CAAAP,wCAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oIAA/C,+CAA+C,EAAA,OAAA,EAA/C,+CAA+C,CAAA,IAAA,EAAA,UAAA,EAF9C,MAAM,EAAA,CAAA,CAAA;uFAEP,+CAA+C,EAAA,CAAA;cAH3D,UAAU;AAAC,QAAA,IAAA,EAAA,CAAA;AACV,gBAAA,UAAU,EAAE,MAAM;AACnB,aAAA,CAAA;;;;ICkBW,EAA+H,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;;;;AAAjE,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,OAAA,CAAA,KAAA,CAAoB,CAAA,OAAA,EAAA,MAAA,CAAA,QAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA,CAAA;;;IAE9E,EACqE,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;;;;AAAjE,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,OAAA,CAAA,KAAA,CAAoB,CAAA,OAAA,EAAA,MAAA,CAAA,QAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA,CAAA;;;IAF5B,EAA0D,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACtD,EACqE,CAAA,UAAA,CAAA,CAAA,EAAA,wEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;IACzE,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAFkB,EAA8D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9D,EAA8D,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,sBAAA,CAAA,MAAA,CAAA,cAAA,CAAA,OAAA,CAAA,YAAA,CAAA,CAAA,CAAA;;;;;ICjBrG,EAA+G,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAC7G,EAA0C,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;;IADqB,EAAyC,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,KAAA,CAAA,WAAA,GAAA,IAAA,CAAA,CAAA;IAC5G,EAA0C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1C,EAA0C,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,0BAAA,CAAA,MAAA,CAAA,KAAA,CAAA,IAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;;IAOtC,EAGa,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;;;IAFX,EAAoD,CAAA,UAAA,CAAA,OAAA,EAAA,UAAA,CAAA,KAAA,GAAA,UAAA,CAAA,KAAA,GAAA,UAAA,CAAA,KAAA,CAAA,CAAA,OAAA,EAAA,UAAA,CAAA,KAAA,CAAA,gCAAA,CAAA,UAAA,EAAA,UAAA,CAAA,QAAA,CAAA,CAAA;;;IAFxD,EAA6C,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAC3C,EAGa,CAAA,UAAA,CAAA,CAAA,EAAA,+FAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;IACf,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;IAJA,EAAwE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxE,EAAwE,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,UAAA,CAAA,UAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,UAAA,CAAA,KAAA,EAAA,OAAA,CAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA;;;;IALzF,EAG4B,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;AAF8C,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,2GAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,IAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,EAAA,OAAA,CAAA,KAAA,CAAA,IAAA,CAAA,GAAA,MAAA,EAAA,CAAA,EAAA,CAAsB,CAC7E,eAAA,EAAA,SAAA,2GAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAoB,CAAA,kBAAA,EAAA,CAAA,CADyD,EAAA,CAAA,CAAA;IAG9F,EAKe,CAAA,UAAA,CAAA,CAAA,EAAA,kFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjB,EAAiB,CAAA,YAAA,EAAA,CAAA;;;;;;AAVkB,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,OAAA,GAAA,OAAA,CAAA,QAAA,EAAA,GAAA,WAAA,GAAA,cAAA,CAA+D,CAAA,YAAA,EAAA,IAAA,CAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,eAAA,CAAA,CAAA,SAAA,EAAA,MAAA,CAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA,OAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA,YAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAI/D,EAAU,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAV,EAAU,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;;;IAQ/C,EAI6F,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IADd,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,mFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,IAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAgB,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAEvG,EAA0C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC5C,EAAS,CAAA,YAAA,EAAA,CAAA;;;;AANgB,IAAA,EAAA,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,OAAA,GAAA,IAAA,CAAwB,oFAAA,CAAA,aAAA,EAAA,MAAA,CAAA,iBAAA,IAAA,MAAA,CAAA,wBAAA,CAAA,CAAA;IAE/C,EAAwF,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,WAAA,CAAA,sBAAA,CAAA,CAAA;;;;IAK1F,EAI4F,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IADd,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,mFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,IAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAe,CAAA,YAAA,CAAA,IAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAErG,EAA4C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC9C,EAAS,CAAA,YAAA,EAAA,CAAA;;;;AANgB,IAAA,EAAA,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,MAAA,GAAA,IAAA,CAAuB,mFAAA,CAAA,aAAA,EAAA,MAAA,CAAA,iBAAA,IAAA,MAAA,CAAA,wBAAA,CAAA,CAAA;IAE9C,EAAuF,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,WAAA,CAAA,qBAAA,CAAA,CAAA;;;;IAKzF,EAI4F,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IADd,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,mFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,IAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAe,CAAA,YAAA,CAAA,IAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAErG,EAA4D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC9D,EAAS,CAAA,YAAA,EAAA,CAAA;;;AAHP,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,WAAA,CAAA,mBAAA,CAA2E,CAAA,aAAA,EAAA,MAAA,CAAA,iBAAA,IAAA,MAAA,CAAA,wBAAA,CAAA,CAAA;IAD3E,EAAuF,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,WAAA,CAAA,qBAAA,CAAA,CAAA;;;AArC3F,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAEwE,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;IAEpE,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAQ,CAAA,YAAA,EAAA,CAAA;IACR,EACgD,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAChD,EAAgH,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAC9G,EAUiB,CAAA,UAAA,CAAA,CAAA,EAAA,mEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;IACnB,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAMS,CAAA,UAAA,CAAA,CAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACT,EAMS,CAAA,UAAA,CAAA,CAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACT,EAMS,CAAA,UAAA,CAAA,CAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACX,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IAxCJ,EAAqE,CAAA,WAAA,CAAA,aAAA,EAAA,OAAA,GAAA,OAAA,CAAA,QAAA,EAAA,GAAA,MAAA,GAAA,cAAA,CAAA,CAAA;IACpC,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,WAAA,GAAA,IAAA,CAAA,CAAA;IAC3D,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,WAAA,CAAA,mBAAA,CAAA,MAAA,CAAA,IAAA,GAAA,CAAA,EAAA,MAAA,CAAA,KAAA,CAAA,MAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IACI,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAEmC,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvD,EAAuD,CAAA,WAAA,CAAA,qBAAA,EAAA,MAAA,CAAA,QAAA,IAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAC5F,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAY1B,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAOd,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAOd,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnB,EAAmB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA;;;;IAQ9B,EAGmG,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IAAxB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,6EAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAa,CAAA,WAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAChG,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;;;AAL8C,IAAA,EAAA,CAAA,UAAA,CAAA,aAAA,EAAA,MAAA,CAAA,iBAAA,IAAA,MAAA,CAAA,KAAA,CAAA,MAAA,KAAA,MAAA,CAAA,OAAA,CAAA,MAAA,CAAoE,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,WAAA,CAAA,gBAAA,CAAA,CAAA;IAEzH,EAA6C,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,yBAAA,CAAA,CAAA;IAE7C,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,aAAA,EAAA,GAAA,CAAA,CAAA;;;IAjDF,EAAsE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACpE,EA0CM,CAAA,UAAA,CAAA,CAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACN,EAKS,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IACX,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAjDkB,EAAU,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAV,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,KAAA,CAAU,CAAA,cAAA,EAAA,MAAA,CAAA,YAAA,CAAA,CAAA;IA2CZ,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnB,EAAmB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA;;ADpC3C;AAsBA;AACM,MAAO,mCAAoC,SAAQ,wCAAwC,CAAA;AAtBjG,IAAA,WAAA,GAAA;;AAuBI;;;;;AAKG;AACI,QAAA,IAAA,CAAA,eAAe,GAAyD,CAAC,CAAgB,EAAE,CAAgB,KAAI;AAClH,YAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;AAC/D,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;YACD,OAAO,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnD,SAAC,CAAC;AACL,KAAA;;AAbY,mBAAA,mCAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,gDAAA,CAAA,CAAA,OAAA,SAAA,2CAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,gDAAA,KAAA,gDAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,mCAAmC,SAAnC,mCAAmC,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;qHAAnC,mCAAmC,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,aAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,4CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QApB5C,EAUK,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAVqC,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,oFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,GAAA,MAAA,CAAA,EAAA,CAAkB,mIAKtC,GAAgD,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,MAAA,CAAQ,IALlB,CAMO,qBAAA,EAAA,SAAA,0FAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAA6D,QAAQ,CAN5E,EAAA,CAAA,CAAA;QAWpD,EAA+H,CAAA,UAAA,CAAA,CAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;QAC/H,EAGe,CAAA,UAAA,CAAA,CAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACvB,EAAiB,CAAA,YAAA,EAAA,CAAA;;QAhByB,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,IAAA,CAAA,wCAAA,CAAA,OAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,QAAA,CAAA,6DAAA,CAAA,UAAA,EAAA,CAAA,CAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,UAAA,EAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,IAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,CAAA,CAAA,6BAAA,EAAA,GAAA,CAAA,qCAAA,EAAA,CAAA,CAAA,iCAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,CAAA;QAWvB,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA/B,EAA+B,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;QAC7C,EAAyC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAzC,EAAyC,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,YAAA,CAAA,CAAA;kIAyEvD,6BAA6B,EAAAQ,wBAAA,EAAAC,0BAAA,EAAAC,2BAAA,EAAAC,gCAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAjE7B,mCAAmC,EAAA,CAAA;cAtB/C,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;AAkBT,IAAA,CAAA;AACJ,aAAA,CAAA;;AAiBD;;AAEG;AAgDI,IAAM,6BAA6B,GAAnC,MAAM,6BACT,SAAQ,oCAAmD,CAAA;AAqF3D;;AAEG;IACH,WACI,CAAA,QAAkB,EACR,+CAAgG,EAAA;QAE1G,KAAK,CAAC,QAAQ,CAAC,CAAC;QAFN,IAA+C,CAAA,+CAAA,GAA/C,+CAA+C,CAAiD;AAhF9G;;AAEG;QACa,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;AA0BhC;;AAEG;AAEI,QAAA,IAAA,CAAA,aAAa,GAAW,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;AAE5E;;AAEG;QAEI,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAE1B;;AAEG;QAEI,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAsCrB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;AACpF,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KAC1B;AA9FD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,+BAA+B,CAAC;KAC1C;AAiDD;;AAEG;AACH,IAAA,IAAW,wBAAwB,GAAA;AAC/B,QAAA,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;KACtD;AACD;;AAEG;AACH,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAC3C;AAED;;;;AAIG;AACH,IAAA,IAAW,yBAAyB,GAAA;QAChC,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;AACxI,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CACvF,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;KACtJ;AAgBD;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC;AAED;;;;;AAKG;IACI,oBAAoB,CAAC,IAAY,EAAE,KAAa,EAAA;AACnD,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AACtE,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QACD,OAAO,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,CAAC;KAC5D;AAED;;;;;AAKG;AACI,IAAA,0BAA0B,CAAC,KAAa,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAM,KAAK,CAAC,CAAC;KACjD;AAED;;AAEG;IACI,WAAW,CAAC,QAAgB,IAAI,EAAA;;AAEnC,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;AAC7G,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QAED,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAEpC,QAAA,IAAI,CAAC,+CAA+C,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACvG,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;AACI,IAAA,YAAY,CAAC,KAAa,EAAA;QAC7B,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,OAAO;AACV,SAAA;QAED,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAEhC,IAAI,CAAC,+CAA+C,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAI,CAAA,EAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAG,EAAA,KAAK,GAAG,CAAC,CAAE,CAAA,CAAC,CAAC;KAClI;AAED;;;AAGG;AACI,IAAA,aAAa,CAAC,KAAa,EAAA;QAC9B,IAAI,KAAK,KAAK,CAAC,EAAE;YACb,OAAO;AACV,SAAA;QAED,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAEhC,IAAI,CAAC,+CAA+C,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAI,CAAA,EAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAG,EAAA,KAAK,GAAG,CAAC,CAAE,CAAA,CAAC,CAAC;KACpI;AAED;;AAEG;IACI,YAAY,CAAC,KAAK,EAAE,IAAI,IAAI,OAAO,KAAK,CAAC,EAAE;AAElD;;AAEG;AACI,IAAA,YAAY,CAAC,KAAa,EAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAE1B,QAAA,IAAI,CAAC,+CAA+C,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KAC7G;AAED;;;;;;;AAOG;IACI,QAAQ,CAAC,aAAqB,EAAE,gBAAwB,EAAA;QAC3D,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;QAE3C,IAAI,aAAa,GAAG,gBAAgB,EAAE;YAClC,KAAK,CAAC,MAAM,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;AACrD,YAAA,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AAClC,SAAA;AAAM,aAAA;AACH,YAAA,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAC/B,KAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;AACpD,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;AAED;;AAEG;IACI,kBAAkB,GAAA;QACrB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,MAAM,EAAE,EAAE;SACb,CAAC;KACL;AAED;;;;;AAKG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;QAC7B,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;AACrF,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE;YAChG,OAAO;AACH,gBAAA,SAAS,EAAE;AACP,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW;AAC1E,iBAAA;aACJ,CAAC;AACL,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5B;;6HA3PQ,6BAA6B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAK,+CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;+GAA7B,6BAA6B,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,aAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,mCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;QCjG1C,EAA0C,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QACxC,EAkDM,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACN,EAA6D,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;QArDD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QACjC,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QAmDK,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;AD6C1B,6BAA6B,GAAA,UAAA,CAAA;AA/CzC,IAAA,iBAAiB,CAAC;QACf,IAAI,EAAE,mBAAmB,CAAC,KAAK;AAC/B,QAAA,MAAM,EAAE,aAAa;AACrB,QAAA,WAAW,EAAE,gDAAgD;AAC7D,QAAA,eAAe,EAAE,mCAAmC;AACpD,QAAA,gBAAgB,EAAE;AACO,YAAA;gBACjB,IAAI,EAAE,mBAAmB,CAAC,KAAK;AAC/B,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,KAAK,EAAE,6FAA6F;AACpG,gBAAA,IAAI,EAAwB;oBACxB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,UAAU,EAAE;AACR,wBAAA;4BACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4BAAA,MAAM,EAAE,wBAAwB;AAChC,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,KAAK,EAAE,qFAAqF;AAC5F,4BAAA,QAAQ,EAAE,IAAI;AACjB,yBAAA;AACD,wBAAA;4BACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4BAAA,MAAM,EAAE,SAAS;AACjB,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,KAAK,EAAE,qFAAqF;AAC5F,4BAAA,QAAQ,EAAE,IAAI;AACjB,yBAAA;AACJ,qBAAA;AACD,oBAAA,OAAO,EAAE;AACL,wBAAA,WAAW,EAAE,CAAC;AACjB,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,KAAK,EAAE,8FAA8F;AACxG,aAAA;AACJ,SAAA;KACJ,CAAC;qCA+FgB,QAAQ;QACyC,+CAA+C,CAAA,CAAA;AA3FrG,CAAA,EAAA,6BAA6B,CA4PzC,CAAA;uFA5PY,6BAA6B,EAAA,CAAA;cAJzC,SAAS;2BACI,oCAAoC,EAAA,QAAA,EAAA,s8HAAA,EAAA,CAAA;sHAuBvC,SAAS,EAAA,CAAA;kBADf,SAAS;mBAAC,WAAW,CAAA;YAOf,aAAa,EAAA,CAAA;kBADnB,KAAK;YAOC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAOC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAOC,aAAa,EAAA,CAAA;kBADnB,KAAK;YAOC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAOC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAaK,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,iBAAiB,CAAA;;;AE5JlC;;AAEG;AACU,MAAA,kBAAkB,GAAmB;AAC9C,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACzD,IAAA,KAAK,EAAE,IAAI;EACb;AAEF;;;AAGG;AAMG,MAAO,0BAA2B,SAAQ,iBAAiB,CAAA;AAuB7D;;AAEG;AACH,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AAdZ;;AAEG;QACK,IAAsB,CAAA,sBAAA,GAAG,IAAI,CAAC;AAEtC;;AAEG;QACK,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;;AAQnB,QAAA,QAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC;KAC/C;AA5BD;;AAEG;IACH,IACW,cAAc,KAAc,OAAO,IAAI,CAAC,sBAAsB,CAAC,EAAE;IAC5E,IAAW,cAAc,CAAC,KAAc,EAAA;;QAEpC,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAA,EAAG,KAAK,CAAE,CAAA,KAAK,OAAO,CAAC,CAAC;QAChG,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;AAqBD;;;;;AAKG;AACI,IAAA,QAAQ,CAAC,CAAc,EAAA;QAC1B,MAAM,MAAM,GAAqB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzD,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,EAAE;YAC1C,MAAM,OAAO,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;YAC1D,MAAM,CAAC,aAAa,CAAC,GAAG;AACpB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO;gBAC7E,QAAQ,EAAE,uBAAuB,CAAC,OAAO;aAC5C,CAAC;AACL,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KACpC;AAED;;;;AAIG;AAEI,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjC,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,gBAAgB,EAAE;AACjC,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC;AAC1C,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtE,YAAA,IAAI,eAAe,KAAK,IAAI,CAAC,YAAY,EAAE;gBACvC,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,aAAA;AACJ,SAAA;KACJ;;uHAjEQ,0BAA0B,GAAA,CAAA,EAAA,CAAA;4GAA1B,0BAA0B,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,aAAA,EAAA,EAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,aAAA,EAAA,EAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,EAAA,CAAA,CAAA,EAAA,YAAA,EAAA,SAAA,uCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;iHAA1B,GAAiB,CAAA,SAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AAFf,KAAA,EAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA,CAAC,kBAAkB,CAAC,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAEtB,0BAA0B,EAAA,CAAA;cALtC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;;AAEP,gBAAA,QAAQ,EAAE,mQAAmQ;gBAC7Q,SAAS,EAAE,CAAC,kBAAkB,CAAC;AAClC,aAAA,CAAA;sCAOc,cAAc,EAAA,CAAA;kBADxB,KAAK;mBAAC,aAAa,CAAA;YAoDb,SAAS,EAAA,CAAA;kBADf,YAAY;mBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;;AC5EvC;AAeA;AACM,MAAO,gCAAiC,SAAQ,wCAAwC,CAAA;;AAAjF,mBAAA,gCAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,6CAAA,CAAA,CAAA,OAAA,SAAA,wCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,6CAAA,KAAA,6CAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,gCAAgC,SAAhC,gCAAgC,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;kHAAhC,gCAAgC,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,yCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QAbzC,EASK,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AATkC,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,iFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,GAAA,MAAA,CAAA,EAAA,CAAkB,gIAInC,GAAgD,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,MAAA,CAAQ,IAJrB,CAKU,qBAAA,EAAA,SAAA,uFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAA6D,QAAQ,CAL/E,EAAA,CAAA,CAAA;QASpD,EAAiB,CAAA,YAAA,EAAA,CAAA;;QATiB,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,IAAA,CAAA,iDAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,QAAA,CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,WAAA,CAAA,CAAA,wEAAA,CAAA,UAAA,EAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,IAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,CAAA,4EAAA,CAAA,iCAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,CAAA;yGA6BhD,0BAA0B,EAAAC,0BAAA,EAAAhB,0BAAA,EAAAC,2BAAA,EAAAC,gCAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAhB1B,gCAAgC,EAAA,CAAA;cAf5C,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWT,IAAA,CAAA;AACJ,aAAA,CAAA;;AAKD;;AAEG;AAWI,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,6BAAkC,CAAA;AAS9E;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnB;AAdD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,4BAA4B,CAAC;KACvC;AAWD;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;;uHA1BQ,0BAA0B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;4GAA1B,0BAA0B,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAtB,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,mCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ACtCvC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAA0C,aAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;QAGA,EAAmB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,kEAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,KAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AADzD,QAAA,EAAA,CAAA,YAAA,EACsF,EAAA,CAAA;QAExF,EAA6D,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;QAND,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAEa,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArB,EAAqB,CAAA,UAAA,CAAA,UAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,iBAAA,CAAA,sBAAA,CAAA,aAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;QAAhD,EAAyB,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QAG5B,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;ADiC1B,0BAA0B,GAAA,UAAA,CAAA;AAVtC,IAAA,iBAAiB,CAAC;QACf,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,WAAW,EAAE,2CAA2C;AACxD,QAAA,eAAe,EAAE,gCAAgC;KACpD,CAAC;qCAkBgB,QAAQ,CAAA,CAAA;AAbb,CAAA,EAAA,0BAA0B,CA2BtC,CAAA;uFA3BY,0BAA0B,EAAA,CAAA;cAJtC,SAAS;2BACI,iCAAiC,EAAA,QAAA,EAAA,mYAAA,EAAA,CAAA;;;AE/B/C;AACM,MAAgB,gCAAiC,SAAQ,oCAAyC,CAAA;AAsBpG;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;AA3BpB;;AAEG;QACa,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;KAyBhC;AAvBD;;AAEG;AACH,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAC3C;AAED;;;AAGG;AACH,IAAA,IAAc,0BAA0B,GAAA;AACpC,QAAA,OAAO,KAAK,CAAC;KAChB;AAWD;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KAC3C;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,SAAS,EAAE,EAAE;SAChB,CAAC;KACL;AAED;;AAEG;IACO,eAAe,GAAA;QACrB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED;;AAEG;AACO,IAAA,cAAc,CAAC,KAAU,EAAA;AAC/B,QAAA,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAC/B;;mIA7DiB,gCAAgC,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;kHAAhC,gCAAgC,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,6CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;uFAAhC,gCAAgC,EAAA,CAAA;cAFrD,SAAS;2DAYK,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,iBAAiB,CAAA;;;;ICCtB,EAEa,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;;;;IAFgD,EAAyC,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,aAAA,EAAA,KAAA,OAAA,CAAA,KAAA,CAAA,CAAA,OAAA,EAAA,OAAA,CAAA,KAAA,CAAA,yCAAA,CAAA,aAAA,EAAA,MAAA,CAAA,QAAA,CAAA,OAAA,CAAA,WAAA,CAAA,CAAA,CAAA;;;;IAM9F,EAEwB,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;AADpB,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,SAAA,iIAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAU,gGAC7B,CADkF,EAAA,CAAA,CAAA;IAEnE,EAAwB,CAAA,YAAA,EAAA,CAAA;;;;AAHD,IAAA,EAAA,CAAA,UAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,2BAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAA0D,+EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;;IAHzF,EACmG,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;IAC/F,EAKc,CAAA,UAAA,CAAA,CAAA,EAAA,qFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,CAAA,CAAA;IAClB,EAAa,CAAA,YAAA,EAAA,CAAA;;;;IAR+C,EAAyC,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,aAAA,EAAA,KAAA,OAAA,CAAA,KAAA,CAAA,CAAA,OAAA,EAAA,OAAA,CAAA,KAAA,CAAA,yCAAA,CAAA,aAAA,EAAA,MAAA,CAAA,QAAA,CAAA,OAAA,CAAA,WAAA,CAAA,CAAA,CAAA;;;IAJzG,EAA2C,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACvC,EAEa,CAAA,UAAA,CAAA,CAAA,EAAA,uEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;IACb,EAQa,CAAA,UAAA,CAAA,CAAA,EAAA,uEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;IACjB,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;IAZE,EAA8C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9C,EAA8C,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,2BAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA,CAAA;IAG9C,EAA6C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7C,EAA6C,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,2BAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA,CAAA;;;;ICR5D,EAGoE,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;;;IADlE,EAA6C,CAAA,UAAA,CAAA,YAAA,EAAA,SAAA,CAAA,uBAAA,CAAA,CAAA,mBAAA,EAAA,SAAA,CAAA,cAAA,IAAA,SAAA,CAAA,4BAAA,CAAA,aAAA,EAAA,GAAA,CAAA,CAAA;;;IAE/C,EACoH,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;AACpH,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAmG,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACxE,EAAsB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;IAA7B,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,iBAAA,CAAA,SAAA,CAAA,WAAA,CAAA,CAAA;;;IAGnD,EAC2D,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAAA,CAAA;IACzD,EAC6B,CAAA,SAAA,CAAA,CAAA,EAAA,4BAAA,EAAA,EAAA,CAAA,CAAA;IAC/B,EAAW,CAAA,YAAA,EAAA,CAAA;;;;;;IAHT,EAAwD,CAAA,UAAA,CAAA,UAAA,EAAA,OAAA,CAAA,iBAAA,IAAA,SAAA,CAAA,KAAA,KAAA,OAAA,CAAA,KAAA,CAAA,CAAA;IAC5B,EAAmC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAnC,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,SAAA,CAAA,eAAA,CAAmC,mBAAA,CAAA,aAAA,EAAA,cAAA,CAAA,CAAA;;;;IAnBnE,EAAqC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACnC,EAAsH,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAAzD,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uGAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,GAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAS,gCAAqB,IAAI,CAAC,SAAE,EAAA,CAAA,WAAA,CAAA,GAAA,CAAA,KAAA,EAAkB,CAAA,CAAC,EAAA,CAAA,CAAA;IACnH,EAGoD,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IAD3B,EAAmB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,iHAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,KAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;IAF5C,EAGoD,CAAA,YAAA,EAAA,CAAA;IACpD,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAgB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAChD,EAGoE,CAAA,UAAA,CAAA,CAAA,EAAA,yFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACpE,EACoH,CAAA,UAAA,CAAA,CAAA,EAAA,yFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACpH,EAEM,CAAA,UAAA,CAAA,CAAA,EAAA,wFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAIW,CAAA,UAAA,CAAA,EAAA,EAAA,8FAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAAA,CAAA;IACb,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;IAnB6D,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,KAAA,CAAA,SAAA,CAAA,CAAA,OAAA,EAAA,SAAA,CAAA,KAAA,CAAA,yBAAA,CAAA,UAAA,EAAA,MAAA,CAAA,iBAAA,IAAA,SAAA,CAAA,QAAA,CAAA,CAAA;AADnD,IAAA,EAAA,CAAA,WAAA,CAAA,YAAA,EAAA,SAAA,CAAA,KAAA,CAAgC,CAAA,kBAAA,EAAA,SAAA,CAAA,WAAA,CAAA,CAAA,cAAA,EAAA,SAAA,CAAA,UAAA,CAAA,CAAA,MAAA,EAAA,MAAA,CAAA,KAAA,CAAA,SAAA,CAAA,CAAA,aAAA,EAAA,SAAA,CAAA,KAAA,CAAA,CAAA,eAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAIpD,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,iBAAA,CAAA,SAAA,CAAA,KAAA,CAAA,CAAA;IAClC,EAAsE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtE,EAAsE,CAAA,UAAA,CAAA,MAAA,EAAA,EAAA,MAAA,CAAA,iBAAA,IAAA,SAAA,CAAA,QAAA,CAAA,IAAA,SAAA,CAAA,cAAA,CAAA,CAAA;IAItE,EAAqE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArE,EAAqE,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,iBAAA,IAAA,SAAA,CAAA,QAAA,KAAA,SAAA,CAAA,cAAA,CAAA,CAAA;IAEtE,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,SAAA,CAAA,WAAA,CAAA,CAAA;IAIyB,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,SAAA,CAAA,eAAA,CAAA,CAAA;;;IAlBzF,EAAsE,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACpE,EAsBe,CAAA,UAAA,CAAA,CAAA,EAAA,kFAAA,EAAA,EAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACjB,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAvBE,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,SAAA,CAAA,MAAA,CAAA,CAAA;;;IAFvC,EAA6C,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAC3C,EAwBe,CAAA,UAAA,CAAA,CAAA,EAAA,mEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACjB,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAzBoB,EAAY,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAZ,EAAY,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;;IAoCrC,EAGuD,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;;;IADrD,EAA6C,CAAA,UAAA,CAAA,YAAA,EAAA,UAAA,CAAA,uBAAA,CAAA,CAAA,mBAAA,EAAA,UAAA,CAAA,cAAA,IAAA,UAAA,CAAA,6BAAA,CAAA,aAAA,EAAA,IAAA,CAAA,CAAA;;;IAE/C,EACoH,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;;AAEtH,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAmG,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AACxE,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,+GAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,MAAA,IAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,UAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAS,iCAAqB,IAAI,CAAC,SAAE,EAAA,CAAA,WAAA,CAAA,IAAA,CAAA,KAAA,EAAkB,CAAA,CAAC,EAAA,CAAA,CAAA;IAC/E,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;IADL,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;;;;IAlBN,EAAqC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;AACnC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAA,CAAkG,UAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IAIrE,EAAmB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,iHAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,KAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;IAF5C,EAGoD,CAAA,YAAA,EAAA,CAAA;IACpD,EAAkF,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAAzD,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wGAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,IAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,UAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAS,iCAAqB,IAAI,CAAC,SAAE,EAAA,CAAA,WAAA,CAAA,IAAA,CAAA,KAAA,EAAkB,CAAA,CAAC,EAAA,CAAA,CAAA;IAAC,EAAgB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IACzG,EAGuD,CAAA,UAAA,CAAA,CAAA,EAAA,yFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACvD,EACoH,CAAA,UAAA,CAAA,CAAA,EAAA,yFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACtH,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAIM,CAAA,UAAA,CAAA,EAAA,EAAA,yFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAM,CAAA,YAAA,EAAA,CAAA;IACR,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;IAjB+D,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,KAAA,CAAA,SAAA,CAAA,CAAA,OAAA,EAAA,UAAA,CAAA,KAAA,CAAA,0BAAA,CAAA,UAAA,EAAA,OAAA,CAAA,iBAAA,IAAA,UAAA,CAAA,QAAA,CAAA,CAAA;AADnD,IAAA,EAAA,CAAA,WAAA,CAAA,YAAA,EAAA,UAAA,CAAA,KAAA,CAAgC,CAAA,kBAAA,EAAA,UAAA,CAAA,WAAA,CAAA,CAAA,cAAA,EAAA,UAAA,CAAA,UAAA,CAAA,CAAA,MAAA,EAAA,OAAA,CAAA,KAAA,CAAA,SAAA,CAAA,CAAA,aAAA,EAAA,UAAA,CAAA,KAAA,CAAA,CAAA,eAAA,EAAA,OAAA,CAAA,QAAA,CAAA,CAAA;IAIK,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,iBAAA,CAAA,UAAA,CAAA,KAAA,CAAA,CAAA;IAC3F,EAAsE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtE,EAAsE,CAAA,UAAA,CAAA,MAAA,EAAA,EAAA,OAAA,CAAA,iBAAA,IAAA,UAAA,CAAA,QAAA,CAAA,IAAA,UAAA,CAAA,cAAA,CAAA,CAAA;IAItE,EAAqE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArE,EAAqE,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,iBAAA,IAAA,UAAA,CAAA,QAAA,KAAA,UAAA,CAAA,cAAA,CAAA,CAAA;IAGxE,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,UAAA,CAAA,WAAA,CAAA,CAAA;;;IAhBpC,EAAsE,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACpE,EAqBe,CAAA,UAAA,CAAA,CAAA,EAAA,kFAAA,EAAA,EAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACjB,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAtBE,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,UAAA,CAAA,MAAA,CAAA,CAAA;;;IA0B/B,EACwG,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAAA,CAAA;IACtG,EAC6B,CAAA,SAAA,CAAA,CAAA,EAAA,4BAAA,EAAA,EAAA,CAAA,CAAA;IAC/B,EAAW,CAAA,YAAA,EAAA,CAAA;;;;;;IAHgD,EAA4C,CAAA,WAAA,CAAA,iBAAA,EAAA,CAAA,UAAA,CAAA,UAAA,CAAA,CAAA;IAArG,EAAwD,CAAA,UAAA,CAAA,UAAA,EAAA,OAAA,CAAA,iBAAA,IAAA,UAAA,CAAA,KAAA,KAAA,OAAA,CAAA,KAAA,CAAA,CAAA;IAC5B,EAAmC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAnC,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,UAAA,CAAA,eAAA,CAAmC,oBAAA,CAAA,aAAA,EAAA,eAAA,CAAA,CAAA;;;IAHnE,EAAqC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACnC,EAIW,CAAA,UAAA,CAAA,CAAA,EAAA,6FAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAAA,CAAA;IACb,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IALF,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,UAAA,CAAA,eAAA,CAAA,CAAA;;;IAF3C,EAAsE,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACpE,EAMe,CAAA,UAAA,CAAA,CAAA,EAAA,kFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACjB,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAPE,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,UAAA,CAAA,MAAA,CAAA,CAAA;;;IA3BzC,EAA+C,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAC7C,EAuBe,CAAA,UAAA,CAAA,CAAA,EAAA,mEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACf,EAAiC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC/B,EAQe,CAAA,UAAA,CAAA,CAAA,EAAA,mEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACjB,EAAM,CAAA,YAAA,EAAA,CAAA;IACR,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAnCoB,EAAY,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAZ,EAAY,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;IAyBV,EAAY,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAZ,EAAY,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;ADvB7C,MAAO,kCAAmC,SAAQ,wCAAwC,CAAA;AAC5F,IAAA,IAAW,OAAO,GAAA;QACd,IAAI,MAAM,GAAU,EAAE,CAAC;AACvB,QAAA,MAAM,aAAa,GAAU,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;AACpG,QAAA,MAAM,cAAc,GAAU,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAEpG,QAAA,IAAI,aAAa,EAAE;AACf,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACzC,SAAA;AACD,QAAA,IAAI,cAAc,EAAE;AAChB,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAEM,IAAA,2BAA2B,CAAC,eAAuB,EAAA;AACtD,QAAA,MAAM,aAAa,GAAyB,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QAC1H,MAAM,YAAY,GACQ,eAAe,CAAC,uBAAuB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;AAClG,QAAA,OAAO,YAAY,CAAC;KACvB;IAEM,OAAO,GAAA;QACV,IAAI,MAAM,GAAG,IAAI,CAAC;AAElB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACnD,MAAM,GAAG,KAAK,CAAC;AAClB,SAAA;AAED,QAAA,IAAI,MAAM,EAAE;YACR,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;YAC/D,MAAM,mCAAmC,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5H,YAAA,IAAI,mCAAmC,EAAE;AACrC,gBAAA,MAAM,GAAG,mCAAmC,CAAC,OAAO,EAAE,CAAC;AAC1D,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;IAEM,aAAa,GAAA;QAChB,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,6BAA6B,EAAE;AAC1F,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;AAChG,YAAA,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtD,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;;AAjDQ,mBAAA,kCAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,+CAAA,CAAA,CAAA,OAAA,SAAA,0CAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,+CAAA,KAAA,+CAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,kCAAkC,SAAlC,kCAAkC,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;oHAAlC,kCAAkC,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,YAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,YAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,2CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QAtB3C,EAIgF,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAJvC,EAAyB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,SAAA,oFAAA,CAAA,MAAA,EAAA,EAAA,OAI5C,GAAgD,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,MAAA,CAAQ,CAJZ,EAAA,CAAA,CAAA;QAK9D,EAae,CAAA,UAAA,CAAA,CAAA,EAAA,0DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACnB,EAAiB,CAAA,YAAA,EAAA,CAAA;;AAnBwB,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,MAAA,CAAyB,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,IAAA,CAAA,CAAA,OAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,QAAA,CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,cAAA,CAAA,WAAA,CAAA,wEAAA,CAAA,UAAA,EAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,IAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA;QAK/B,EAAU,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAV,EAAU,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;4JA4KpC,4BAA4B,EAAAY,wBAAA,EAAAC,0BAAA,EAAAC,2BAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFA3J5B,kCAAkC,EAAA,CAAA;cAxB9C,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;AAqBT,IAAA,CAAA;AACJ,aAAA,CAAA;;AA4DD;;AAEG;AA8FI,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,gCAAgC,CAAA;AAW9E;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;KAC7B;AAlBD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,8BAA8B,CAAC;KACzC;;2HANQ,4BAA4B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;8GAA5B,4BAA4B,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,YAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAd,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,CAAA,YAAA,EAAA,EAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,kFAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,oGAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,4DAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,kFAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,UAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,qCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QC1LzC,EAA0C,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QACxC,EA0Be,CAAA,UAAA,CAAA,CAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACf,EAoCe,CAAA,UAAA,CAAA,CAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACf,EAA6D,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;QAlED,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QACxB,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA5B,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,WAAA,KAAA,MAAA,CAAA,CAAA;QA2B5B,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,WAAA,KAAA,QAAA,CAAA,CAAA;QAqCvB,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;ADyH1B,4BAA4B,GAAA,UAAA,CAAA;AA7FxC,IAAA,iBAAiB,CACd;QACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,QAAA,MAAM,EAAE,aAAa;AACrB,QAAA,WAAW,EAAE,+CAA+C;AAC5D,QAAA,eAAe,EAAE,kCAAkC;AACnD,QAAA,0BAA0B,EAAE;AACxB,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,QAAQ;AACjB,aAAA;AACqB,YAAA;gBAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,UAAU,EAAE;AACc,oBAAA;wBAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,IAAI,EAAE,4BAA4B;AAClC,wBAAA,UAAU,EAAE,EAAE;AACjB,qBAAA;AACqB,oBAAA;wBAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,IAAI,EAAE,4BAA4B;AAClC,wBAAA,UAAU,EAAE,EAAE;AACjB,qBAAA;AACqB,oBAAA;wBAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,IAAI,EAAE,4BAA4B;AAClC,wBAAA,UAAU,EAAE,EAAE;AACjB,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,gBAAgB,EAAE;AACO,YAAA;gBACjB,IAAI,EAAE,mBAAmB,CAAC,KAAK;AAC/B,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,KAAK,EAAE,6FAA6F;AACpG,gBAAA,IAAI,EAAwB;oBACxB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,UAAU,EAAE;AACR,wBAAA;4BACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4BAAA,MAAM,EAAE,wBAAwB;AAChC,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,KAAK,EAAE,qFAAqF;AAC5F,4BAAA,QAAQ,EAAE,IAAI;AACjB,yBAAA;AACD,wBAAA;4BACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4BAAA,MAAM,EAAE,wBAAwB;AAChC,4BAAA,IAAI,EAAE,aAAa;AACnB,4BAAA,KAAK,EAAE,2FAA2F;AAClG,4BAAA,QAAQ,EAAE,IAAI;AACjB,yBAAA;AACD,wBAAA;4BACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4BAAA,MAAM,EAAE,SAAS;AACjB,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,KAAK,EAAE,qFAAqF;AAC5F,4BAAA,QAAQ,EAAE,IAAI;AACjB,yBAAA;AACJ,qBAAA;AACD,oBAAA,OAAO,EAAE;AACL,wBAAA,WAAW,EAAE,CAAC;AACjB,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,KAAK,EAAE,8FAA8F;AACxG,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,+BAA+B;AACrC,gBAAA,KAAK,EAAE,gDAAgD;AAC1D,aAAA;AACJ,SAAA;KACJ,CAAC;qCAoBY,QAAQ,CAAA,CAAA;AAfb,CAAA,EAAA,4BAA4B,CAoBxC,CAAA;uFApBY,4BAA4B,EAAA,CAAA;cAJxC,SAAS;2BACI,mCAAmC,EAAA,QAAA,EAAA,o1JAAA,EAAA,CAAA;2DAYtC,WAAW,EAAA,CAAA;kBADjB,KAAK;;;;;;IEhMN,EAAsE,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACpE,EAC2D,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AAAzD,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,+EAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,GAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAS,+BAAqB,IAAI,CAAC,SAAE,EAAA,CAAA,WAAA,CAAA,GAAA,CAAA,KAAA,EAAkB,CAAA,CAAC,EAAA,CAAA,CAAA;IACxD,EAImF,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IAD1D,EAAmB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,yFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,KAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;IAH5C,EAImF,CAAA,YAAA,EAAA,CAAA;IACnF,EAC2D,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;IACzD,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAQ,EAAA,CAAA;IAEb,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;IARR,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,SAAA,GAAA,cAAA,CAAA,CAAA,OAAA,EAAA,SAAA,CAAA,KAAA,CAAA,yBAAA,CAAA,UAAA,EAAA,MAAA,CAAA,iBAAA,IAAA,SAAA,CAAA,QAAA,CAAA,CAAA;IAFO,EAAgC,CAAA,WAAA,CAAA,YAAA,EAAA,SAAA,CAAA,KAAA,CAAA,CAAA,cAAA,EAAA,SAAA,CAAA,UAAA,CAAA,iDAAA,CAAA,eAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAMxD,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArC,EAAqC,CAAA,UAAA,CAAA,KAAA,EAAA,MAAA,CAAA,KAAA,CAAA,SAAA,GAAA,cAAA,CAAA,CAAA;IACxD,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,SAAA,CAAA,KAAA,EAAA,GAAA,CAAA,CAAA;;ACNF,MAAO,kCAAmC,SAAQ,gCAAgC,CAAA;AASpF;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnB;AAdD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,oCAAoC,CAAC;KAC/C;;uIAPQ,kCAAkC,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oHAAlC,kCAAkC,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,mBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAA,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,CAAA,YAAA,EAAA,EAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,KAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,2CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ADP/C,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAA0C,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEtC,EAac,CAAA,UAAA,CAAA,CAAA,EAAA,0DAAA,EAAA,CAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;AAChB,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;QAhBe,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAEJ,EAAY,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAZ,EAAY,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;;uFCKpC,kCAAkC,EAAA,CAAA;cAJ9C,SAAS;2BACI,0CAA0C,EAAA,QAAA,EAAA,2hCAAA,EAAA,CAAA;;;;;ICY9C,EAC+E,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC7E,EACe,CAAA,kBAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA;IACjB,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAF4B,EAAmC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAnC,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,SAAA,CAAA,eAAA,CAAmC,CAAA,MAAA,EAAA,SAAA,CAAA,CAAA;;;;;IAd3E,EAAoD,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAClD,EAG2D,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AAAzD,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,6EAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,GAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAS,+BAAqB,IAAI,CAAC,SAAE,EAAA,CAAA,WAAA,CAAA,GAAA,CAAA,KAAA,EAAkB,CAAA,CAAC,EAAA,CAAA,CAAA;AACxD,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAK,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IAGsB,EAAmB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,uFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,KAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AAF5C,IAAA,EAAA,CAAA,YAAA,EAGwF,EAAA,CAAA;IAE1F,EAAiC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAC/B,EAIM,CAAA,UAAA,CAAA,CAAA,EAAA,8DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AACR,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;IAEV,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;IAlB6E,EAExB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAFwB,EAExB,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAAE,KAAA,EAAA,SAAA,CAAA,UAAA,EAAA,MAAA,CAAA,iBAAA,IAAA,SAAA,CAAA,QAAA,CAAA,CAAA,CAAA;IAIU,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,KAAA,CAAA,SAAA,CAAA,CAAA,OAAA,EAAA,SAAA,CAAA,KAAA,CAAA,yBAAA,CAAA,UAAA,EAAA,MAAA,CAAA,iBAAA,IAAA,SAAA,CAAA,QAAA,CAAA,CAAA;IADnD,EAAgC,CAAA,WAAA,CAAA,YAAA,EAAA,SAAA,CAAA,KAAA,CAAA,CAAA,cAAA,EAAA,SAAA,CAAA,UAAA,CAAA,gCAAA,CAAA,eAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAMvE,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,SAAA,CAAA,eAAA,CAAA,CAAA;;;IAapC,EACwG,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAAA,CAAA;IACtG,EAC6B,CAAA,SAAA,CAAA,CAAA,EAAA,4BAAA,EAAA,EAAA,CAAA,CAAA;IAC/B,EAAW,CAAA,YAAA,EAAA,CAAA;;;;;;IAHgD,EAA4C,CAAA,WAAA,CAAA,iBAAA,EAAA,CAAA,SAAA,CAAA,UAAA,CAAA,CAAA;IAArG,EAAwD,CAAA,UAAA,CAAA,UAAA,EAAA,OAAA,CAAA,iBAAA,IAAA,SAAA,CAAA,KAAA,KAAA,OAAA,CAAA,KAAA,CAAA,CAAA;IAC5B,EAAmC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAnC,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,SAAA,CAAA,eAAA,CAAmC,mBAAA,CAAA,aAAA,EAAA,eAAA,CAAA,CAAA;;;IAHnE,EAAqC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACnC,EAIW,CAAA,UAAA,CAAA,CAAA,EAAA,kFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,EAAA,CAAA,CAAA;IACb,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IALF,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,SAAA,CAAA,eAAA,CAAA,CAAA;;;IAF3C,EAAsE,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACpE,EAMe,CAAA,UAAA,CAAA,CAAA,EAAA,uEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjB,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAPE,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,SAAA,CAAA,MAAA,CAAA,CAAA;;ACpBnC,MAAO,gCAAiC,SAAQ,gCAAgC,CAAA;AAYlF;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnB;AAlBD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,kCAAkC,CAAC;KAC7C;AAED,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACxD;;mIAVQ,gCAAgC,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;kHAAhC,gCAAgC,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,iBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAF,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,WAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,CAAA,YAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,sEAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,2BAAA,EAAA,wBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,yCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ADR7C,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAA0C,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAItC,EAmBe,CAAA,UAAA,CAAA,CAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACjB,EAAM,CAAA,YAAA,EAAA,CAAA;QAEN,EAAiC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAC/B,EAQe,CAAA,UAAA,CAAA,CAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACjB,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAA6D,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;QAtCD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAIJ,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjB,EAAiB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,cAAA,CAAA,CAAA;QAuBjB,EAAY,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAZ,EAAY,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QAUzB,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;uFC7B1B,gCAAgC,EAAA,CAAA;cAJ5C,SAAS;2BACI,wCAAwC,EAAA,QAAA,EAAA,0qEAAA,EAAA,CAAA;;;;;;ICIlD,EAOkC,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AALhC,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,oEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAS,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,uBAAA,CAAA,MAAA,CAA+B,CAAA,CAAA,EAAA,CAAC,CACX,4BAAA,EAAA,SAAA,yFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAoC,CAAA,4BAAA,CAAA,MAAA,CAAA,CAAA,CADzB,EAAA,CAAA,CAAA,4BAAA,EAAA,SAAA,yFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAEX,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,4BAAA,CAAA,MAAA,CAAoC,CAAA,CAFzB,EAAA,CAAA,CAAA;IAM3C,EAAS,CAAA,YAAA,EAAA,CAAA;;;AAFP,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,aAAA,CAAuB,CAAA,wBAAA,EAAA,IAAA,CAAA,CAAA;IADvB,EAAwD,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,aAAA,GAAA,MAAA,CAAA,aAAA,GAAA,IAAA,CAAA,CAAA;;;;IAI1D,EAG6D,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IAD3D,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,oEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAe,CAAA,aAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAEzB,EAAuG,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IACvG,EAAM,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAqB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;IAFlC,EAA0D,CAAA,UAAA,CAAA,aAAA,EAAA,MAAA,CAAA,iBAAA,IAAA,MAAA,CAAA,OAAA,IAAA,CAAA,MAAA,CAAA,OAAA,EAAA,CAAA,CAAA;IACpD,EAAyC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzC,EAAyC,CAAA,sBAAA,CAAA,WAAA,EAAA,MAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,CAAA;IAAC,EAA+C,CAAA,WAAA,CAAA,qBAAA,EAAA,CAAA,CAAA,MAAA,CAAA,eAAA,CAAA,CAAA;IACzF,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,iBAAA,CAAA,MAAA,CAAA,eAAA,CAAA,CAAA;;AClBjC;;AAEG;AAKG,MAAO,0BAA2B,SAAQ,6BAAqC,CAAA;AA6EjF;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;AAhCpB;;AAEG;AAEI,QAAA,IAAA,CAAA,WAAW,GAAyB,IAAI,YAAY,EAAU,CAAC;AAEtE;;AAEG;QACgB,IAAwB,CAAA,wBAAA,GAAG,IAAI,CAAC;AAOnD;;AAEG;QACO,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAc7B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;KAC5E;AAnFD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,4BAA4B,CAAC;KACvC;IAgFM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACnD;AAED;;AAEG;IACI,aAAa,GAAA;QAChB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACrC;AAED;;AAEG;AACI,IAAA,uBAAuB,CAAC,MAAM,EAAA;QACjC,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;AACV,SAAA;;;;AAKD,QAAA,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,CAAC,eAAe,EAAE,CAAC;YACzB,UAAU,CAAC,MAAK;AACZ,gBAAA,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACtB,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC/E,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;;AAEH,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC/E,aAAC,CAAC,CAAC;AACN,SAAA;QAED,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED;;;;;AAKG;AAEI,IAAA,4BAA4B,CAAC,MAAyB,EAAA;QACzD,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;AACV,SAAA;AAED,QAAA,IAAI,MAAM,KAAK,iBAAiB,CAAC,QAAQ,EAAE;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACjD,aAAA;AACJ,SAAA;KACJ;AAED;;;;;AAKG;AAEI,IAAA,4BAA4B,CAAC,MAAyB,EAAA;QACzD,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;AACV,SAAA;AAED,QAAA,IAAI,MAAM,KAAK,iBAAiB,CAAC,UAAU,EAAE;AACzC,YAAA,IAAI,CAAC,gCAAgC,GAAG,UAAU,CAAC,MAAK;AACpD,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAClD,aAAC,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;AACrC,SAAA;AAAM,aAAA,IAAI,MAAM,KAAK,iBAAiB,CAAC,UAAU,EAAE;YAChD,IAAI,IAAI,CAAC,gCAAgC,EAAE;AACvC,gBAAA,YAAY,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;AACvD,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,sBAAsB,CAAC,KAAa,EAAA;AACvC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;KACpC;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;;uHA1LQ,0BAA0B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;4GAA1B,0BAA0B,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAA,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,yIAAA,EAAA,CAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,8FAAA,EAAA,CAAA,EAAA,aAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,4BAAA,EAAA,4BAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,mCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ADZvC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAA0C,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEtC,EAMgB,CAAA,SAAA,CAAA,CAAA,EAAA,eAAA,EAAA,CAAA,CAAA,CAAA;QAChB,EAQS,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;QACT,EAMS,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;QACX,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAA6D,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;QA3BD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAEM,EAAgF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAhF,QAAA,EAAA,CAAA,WAAA,CAAA,wBAAA,EAAA,CAAA,GAAA,CAAA,cAAA,IAAA,CAAA,GAAA,CAAA,eAAA,IAAA,CAAA,GAAA,CAAA,OAAA,CAAgF,CAAA,sBAAA,EAAA,GAAA,CAAA,gBAAA,IAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QACzH,EAAqC,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,gBAAA,CAAA,CAAA,SAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA,wBAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;QAM9B,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,CAAA;QASpB,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAQV,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;ACwHnC,UAAA,CAAA;AAAC,IAAAzC,UAAQ,EAAE;;qCACiC,iBAAiB,CAAA,CAAA;;AAU5D,CAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,8BAAA,EAAA,IAAA,CAAA,CAAA;AAQD,UAAA,CAAA;AAAC,IAAAA,UAAQ,EAAE;;qCACiC,iBAAiB,CAAA,CAAA;;AAc5D,CAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,8BAAA,EAAA,IAAA,CAAA,CAAA;uFAxKQ,0BAA0B,EAAA,CAAA;cAJtC,SAAS;2BACI,iCAAiC,EAAA,QAAA,EAAA,yoDAAA,EAAA,CAAA;2DAgBpC,gBAAgB,EAAA,CAAA;kBADtB,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,cAAc,EAAA,CAAA;kBADpB,KAAK;YAOC,aAAa,EAAA,CAAA;kBADnB,KAAK;YAOC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAOC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAOC,oBAAoB,EAAA,CAAA;kBAD1B,KAAK;YAOC,WAAW,EAAA,CAAA;kBADjB,MAAM;AAiFA,SAAA,CAAA,EAAA,4BAA4B,MAmB5B,4BAA4B,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;AC/JvC;AAiBA;AACM,MAAO,8BAA+B,SAAQ,wCAAwC,CAAA;;AAA/E,mBAAA,8BAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,2CAAA,CAAA,CAAA,OAAA,SAAA,sCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,2CAAA,KAAA,2CAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,8BAA8B,SAA9B,8BAA8B,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;gHAA9B,8BAA8B,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,KAAA,EAAA,UAAA,EAAA,UAAA,EAAA,KAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,uCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QAfvC,EAUK,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAVgC,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,+EAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,GAAA,MAAA,CAAA,EAAA,CAAkB,8HAKjC,GAAgD,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,MAAA,CAAQ,IALvB,CAMY,qBAAA,EAAA,SAAA,qFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAA6D,QAAQ,CANjF,EAAA,CAAA,CAAA;QAWvD,EAAiB,CAAA,YAAA,EAAA,CAAA;;QAXoB,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,IAAA,CAAA,CAAA,OAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,WAAA,CAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,QAAA,CAAA,CAAA,KAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,UAAA,EAAA,CAAA,CAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,UAAA,EAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,IAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,CAAA,CAAA,6BAAA,EAAA,GAAA,CAAA,qCAAA,EAAA,CAAA,CAAA,iCAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,CAAA;yGAyG9C,wBAAwB,EAAAiE,0BAAA,EAAAC,2BAAA,EAAAC,gCAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFA1FxB,8BAA8B,EAAA,CAAA;cAjB1C,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;AAaT,IAAA,CAAA;AACJ,aAAA,CAAA;;AAKD;;AAEG;AAqFI,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,6BAAqC,CAAA;AAmC/E;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACd,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACb,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;KAClB;AA3CD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,0BAA0B,CAAC;KACrC;AAED;;;AAGG;AACH,IAAA,IAAc,0BAA0B,GAAA;AACpC,QAAA,OAAO,IAAI,CAAC;KACf;AAgCD;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;AAED;;AAEG;IACO,aAAa,GAAA;AACnB,QAAA,OAAO,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;KAC7D;AAED;;;AAGG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;;;AAG7B,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AAC/D,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAA,IAAI,MAAM,EAAE;AAAE,gBAAA,OAAO,MAAM,CAAC;AAAE,aAAA;AACjC,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;AAC/D,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAA,IAAI,MAAM,EAAE;AAAE,gBAAA,OAAO,MAAM,CAAC;AAAE,aAAA;AACjC,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5B;;mHAlFQ,wBAAwB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA1B,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,EAAA,SAAA,EAAA,KAAA,EAAA,KAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ACnHrC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAA0C,aAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;QAGA,EAAmB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,gEAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,KAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AADzD,QAAA,EAAA,CAAA,YAAA,EAEuF,EAAA,CAAA;QAEzF,EAA6D,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;QAPD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAG9B,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,UAAA,EAAA,GAAA,CAAA,iBAAA,CAAA,CAAA,SAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,KAAA,EAAA,GAAA,CAAA,GAAA,CAAA,CAAA,KAAA,EAAA,GAAA,CAAA,GAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA;QADH,EAAyB,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,eAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,eAAA,EAAA,GAAA,CAAA,GAAA,CAAA,CAAA,eAAA,EAAA,GAAA,CAAA,GAAA,CAAA,CAAA;QAIvC,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;AD6G1B,wBAAwB,GAAA,UAAA,CAAA;AApFpC,IAAA,iBAAiB,CAAC;QACf,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,WAAW,EAAE,0CAA0C;AACvD,QAAA,eAAe,EAAE,8BAA8B;AAC/C,QAAA,gBAAgB,EAAE;AACd,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,KAAK,EAAE,mBAAmB;AAC1B,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE;AACL,oBAAA,YAAY,EAAE,KAAK;AACtB,iBAAA;AACJ,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,KAAK,EAAE,mBAAmB;AAC1B,gBAAA,YAAY,EAAE,GAAG;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE;AACL,oBAAA,YAAY,EAAE,KAAK;AACtB,iBAAA;AACJ,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,oBAAoB;AAC3B,gBAAA,YAAY,EAAE,CAAC;AACf,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE;AACL,oBAAA,YAAY,EAAE,KAAK;AACtB,iBAAA;AACJ,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,KAAK,EAAE,wBAAwB;AAC/B,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE;AACL,oBAAA,YAAY,EAAE,KAAK;AACtB,iBAAA;AACJ,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,KAAK,EAAE,0BAA0B;AACjC,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE;AACL,oBAAA,YAAY,EAAE,KAAK;AACtB,iBAAA;AACJ,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,KAAK,EAAE,gCAAgC;AACvC,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE;AACL,oBAAA,YAAY,EAAE,KAAK;AACtB,iBAAA;AACJ,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,KAAK,EAAE,kCAAkC;AACzC,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE;AACL,oBAAA,YAAY,EAAE,KAAK;AACtB,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ,CAAC;qCA4CgB,QAAQ,CAAA,CAAA;AAvCb,CAAA,EAAA,wBAAwB,CAmFpC,CAAA;uFAnFY,wBAAwB,EAAA,CAAA;cAJpC,SAAS;2BACI,+BAA+B,EAAA,QAAA,EAAA,wiBAAA,EAAA,CAAA;2DAwBlC,IAAI,EAAA,CAAA;kBADV,KAAK;YAOC,GAAG,EAAA,CAAA;kBADT,KAAK;YAOC,GAAG,EAAA,CAAA;kBADT,KAAK;;;;;;;AEjJN,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA8D,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC9B,EAAO,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAC5C,EAGyF,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAFzE,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,6DAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,IAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAoB,CAAA,SAAA,CAAA,MAAA,EAAA,IAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;;;IAG5C,EAA+D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AACjE,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;;;;IANqB,EAAO,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAP,EAAO,CAAA,iBAAA,CAAA,MAAA,CAAA,CAAA;IAInC,EAAsF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtF,EAAsF,CAAA,UAAA,CAAA,OAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,SAAA,CAAA,SAAA,CAAA,WAAA,EAAA,MAAA,CAAA,CAAA,CAAA;IADtF,EAAgG,CAAA,WAAA,CAAA,YAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,SAAA,CAAA,SAAA,CAAA,WAAA,EAAA,MAAA,CAAA,CAAA,CAAA;;;IAchG,EAAwD,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,CAAA,CAAA;IAAA,EAAc,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;;;IAAvB,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,iBAAA,CAAA,aAAA,CAAA,CAAA;;;IAKtE,EAA2C,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAc,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAArB,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,iBAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA;;ACjBjE;AAgBA;AACM,MAAO,4BAA6B,SAAQ,wCAAwC,CAAA;;AAA7E,mBAAA,4BAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,yCAAA,CAAA,CAAA,OAAA,SAAA,oCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,yCAAA,KAAA,yCAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,4BAA4B,SAA5B,4BAA4B,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;8GAA5B,4BAA4B,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,qCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QAdrC,EAUK,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAV8B,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,6EAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,GAAA,MAAA,CAAA,EAAA,CAAkB,4HAK/B,GAAgD,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,MAAA,CAAQ,IALzB,CAMc,qBAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAA6D,QAAQ,CANnF,EAAA,CAAA,CAAA;QAUhD,EAAiB,CAAA,YAAA,EAAA,CAAA;;QAVa,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,IAAA,CAAA,iDAAA,CAAA,aAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,WAAA,CAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,QAAA,CAAA,wEAAA,CAAA,UAAA,EAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,IAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,WAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,CAAA,CAAA,6BAAA,EAAA,GAAA,CAAA,qCAAA,EAAA,CAAA,CAAA,iCAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,CAAA;yGA2B5C,sBAAsB,EAAAwB,0BAAA,EAAAC,2BAAA,EAAAC,gCAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAbtB,4BAA4B,EAAA,CAAA;cAhBxC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;AAYT,IAAA,CAAA;AACJ,aAAA,CAAA;;AAeM,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,6BAAuC,CAAA;AAkF/E;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;AA/EpB;;AAEG;QACI,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;AAEpB;;AAEG;QACI,IAAoB,CAAA,oBAAA,GAAa,EAAE,CAAC;AAE3C;;AAEG;QACI,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC;AAE3B;;AAEG;QAEI,IAAiB,CAAA,iBAAA,GAAG,GAAG,CAAC;AAE/B;;AAEG;AAEI,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;AAoB7E;;AAEG;QACK,IAAmB,CAAA,mBAAA,GAAa,EAAE,CAAC;AAa3C;;;;;;;AAOG;QACI,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC;QACvB,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC;QAClB,IAAwB,CAAA,wBAAA,GAAG,GAAG,CAAC;AAS3C,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC;KACtF;AAxFD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,wBAAwB,CAAC;KACnC;AAmCD;;AAEG;AACH,IAAA,IACW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;IACD,IAAW,WAAW,CAAC,KAAe,EAAA;AAClC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,0BAA0B,EAAE,CAAC;KACrC;AAUD;;AAEG;AACH,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAC3C;AAwBD;;AAEG;IACI,YAAY,GAAA;AACf,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,4CAA4C,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/B,SAAA;AAAM,aAAA;YACH,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;gBACpD,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/B,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;IACI,eAAe,GAAA;QAClB,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7C,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC;AAChD,SAAA;AAAM,aAAA;YACH,OAAO;AACV,SAAA;KACJ;AAED;;AAEG;IACI,4CAA4C,GAAA;QAC/C,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACtC,SAAA;AAAM,aAAA;YACH,OAAO;AACV,SAAA;KACJ;AAED;;AAEG;IAEI,oBAAoB,GAAA;AACvB,QAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;YACnF,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;AACpD,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1C,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC;AAED;;AAEG;AACI,IAAA,MAAM,CAAC,KAAY,EAAA;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED;;;AAGG;IACI,SAAS,CAAC,KAAiB,EAAE,KAAa,EAAA;;QAE7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACjC,QAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;QAEvB,MAAM,IAAI,GAAG,GAAG,CAAC,uBAAuB,CAAc,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC9E,QAAA,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,SAAA;;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED;;AAEG;AACI,IAAA,UAAU,CAAC,MAAa,EAAA;AAC3B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO;AACpB,aAAA,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC7B,aAAA,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;AAC1C,aAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;AAErD,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjB,YAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACjE,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAElB,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,CAAC,eAAe,EAAE,CAAC;KAC5B;AAED;;AAEG;IACK,0BAA0B,GAAA;AAC9B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;AAC3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACjF;AAED;;;AAGG;AACO,IAAA,cAAc,CAAC,KAAe,EAAA;QACpC,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAClC,QAAA,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAC/B;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,qBAAqB,EAAE,EAAE;AACzB,YAAA,wBAAwB,EAAE,EAAE;SAC/B,CAAC;KACL;;+GAlOQ,sBAAsB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;ADtCnC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAA0C,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEtC,EAQM,CAAA,UAAA,CAAA,CAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AACN,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAqB,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACmD,EAAgB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QAE7F,EAIuG,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAHrG,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,8DAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,OAAA,GAAA,MAAA,CAAA,EAAA,CAAqB,CAAkB,eAAA,EAAA,SAAA,8DAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,UAAA,CAAA,MAAA,CAAkB,CAApC,EAAA,CAAA,CAAA,MAAA,EAAA,SAAA,qDAAA,CAAA,MAAA,EAAA,EAAA,OAA8C,sBAAkB,CAAhE,EAAA,CAAA,CAAA,OAAA,EAAA,SAAA,sDAAA,GAAA,EAAA,OACZ,GAAiB,CAAA,eAAA,EAAA,CAAA,EAAA,CADL,CACe,MAAA,EAAA,SAAA,qDAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,MAAA,CAAA,MAAA,CAAc,CAD7B,EAAA,CAAA,CAAA,UAAA,EAAA,SAAA,yDAAA,GAAA,EAAA,OAC2C,kDAA8C,CADzF,EAAA,CAAA,CAAA;QADvB,EAIuG,CAAA,YAAA,EAAA,CAAA;QACvG,EAA6C,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAAA,CAAA;QAC3C,EAA+E,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;QACjF,EAAW,CAAA,YAAA,EAAA,CAAA;QACX,EAC8I,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAAtD,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wDAAA,GAAA,EAAA,OAAS,kBAAc,CAAC,EAAA,CAAA,CAAA;QAC9G,EAA6D,CAAA,SAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;QAC7D,EAAgE,CAAA,UAAA,CAAA,EAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAClE,QAAA,EAAA,CAAA,YAAA,EAAS,EAAA,EAAA,CAAA;QAGb,EAA6D,CAAA,SAAA,CAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;QA9BD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAEA,EAAU,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAV,EAAU,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QAUb,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArC,EAAqC,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,KAAA,CAAA,wBAAA,CAAA,CAAA;QAAC,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhB,EAAgB,CAAA,iBAAA,CAAA,GAAA,CAAA,YAAA,CAAA,CAAA;QAE/E,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAzB,QAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,GAAA,CAAA,YAAA,CAAyB,CAAA,SAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QAAgD,EAAyC,CAAA,WAAA,CAAA,MAAA,EAAA,GAAA,CAAA,KAAA,CAAA,qBAAA,CAAA,CAAA,eAAA,EAAA,GAAA,CAAA,QAAA,CAAA,wDAAA,CAAA,YAAA,EAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,SAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;QAK/G,EAAkC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlC,EAAkC,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,KAAA,CAAA,qBAAA,CAAA,CAAA;QACX,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvB,EAAuB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,oBAAA,CAAA,CAAA;QAGxC,EAAuE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvE,EAAuE,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,SAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;QAE9E,EAAkC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlC,EAAkC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,KAAA,IAAA,GAAA,CAAA,KAAA,CAAA,MAAA,KAAA,CAAA,CAAA,CAAA;QAIzB,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;AC+InC,UAAA,CAAA;AAAC,IAAAnE,UAAQ,EAAE;;;;AAOV,CAAA,EAAA,sBAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,IAAA,CAAA,CAAA;AA7IQ,sBAAsB,GAAA,UAAA,CAAA;AAVlC,IAAA,iBAAiB,CAAC;QACf,IAAI,EAAE,mBAAmB,CAAC,KAAK;AAC/B,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,WAAW,EAAE,8CAA8C;AAC3D,QAAA,eAAe,EAAE,4BAA4B;KAChD,CAAC;qCA2FgB,QAAQ,CAAA,CAAA;AAtFb,CAAA,EAAA,sBAAsB,CAmOlC,CAAA;uFAnOY,sBAAsB,EAAA,CAAA;cAJlC,SAAS;2BACI,6BAA6B,EAAA,QAAA,EAAA,0zEAAA,EAAA,CAAA;2DA+BhC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YAOC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAOS,OAAO,EAAA,CAAA;kBADrB,KAAK;YAOK,WAAW,EAAA,CAAA;kBADrB,KAAK;YAeC,WAAW,EAAA,CAAA;kBADjB,SAAS;mBAAC,aAAa,CAAA;YAOb,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,iBAAiB,CAAA;YAsEvB,oBAAoB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;;;ICrK3B,EAE6F,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IAArF,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,sEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAe,CAAA,aAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAC/B,EAAuG,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IACvG,EAAM,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAqB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;IAFF,EAA0D,CAAA,UAAA,CAAA,aAAA,EAAA,MAAA,CAAA,iBAAA,IAAA,MAAA,CAAA,OAAA,IAAA,CAAA,MAAA,CAAA,OAAA,EAAA,CAAA,CAAA;IAF9C,EAA2D,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,oBAAA,IAAA,MAAA,CAAA,eAAA,CAAA,CAAA;IAGjG,EAAyC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzC,EAAyC,CAAA,sBAAA,CAAA,WAAA,EAAA,MAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,CAAA;IAAC,EAA+C,CAAA,WAAA,CAAA,qBAAA,EAAA,CAAA,CAAA,MAAA,CAAA,eAAA,CAAA,CAAA;IACzF,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,iBAAA,CAAA,MAAA,CAAA,eAAA,CAAA,CAAA;;;;AAV/B,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAC8E,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;AAGrE,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,oEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,KAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAmB,CAAiE,eAAA,EAAA,SAAA,oEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAkB,CAAA,UAAA,CAAA,MAAA,CAAA,CAAA,CAAnF,EAAA,CAAA,CAAA;IAF1B,EAE+G,CAAA,YAAA,EAAA,CAAA;IAE/G,EAKS,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IACX,EAAM,CAAA,YAAA,EAAA,CAAA;;;AAZiD,IAAA,EAAA,CAAA,WAAA,CAAA,wBAAA,EAAA,MAAA,CAAA,eAAA,CAAgD,CAAA,cAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IAG7F,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA,UAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,yBAAA,CAAA,aAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IADsB,EAAyB,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA;IAInE,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,eAAA,CAAA,CAAA;;;;IAQhC,EAEyF,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAAA,CAAA;IAA/E,EAAmB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,4EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,KAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;IAA4D,EAAW,CAAA,YAAA,EAAA,CAAA;;;AADzF,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,QAAA,CAAqB,CAAA,UAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA,SAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,CAAA,CAAA,MAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA,aAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IADuC,EAAyB,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;;IAGhG,EAAmC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAAlB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAX,EAAW,CAAA,iBAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;;IAC9C,EAA8E,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,EAAA,CAAA,CAAA;;;IAAvC,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;ACdxD;AAiBA;AACM,MAAO,4BAA6B,SAAQ,wCAAwC,CAAA;;AAA7E,mBAAA,4BAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,yCAAA,CAAA,CAAA,OAAA,SAAA,oCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,yCAAA,KAAA,yCAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,4BAA4B,SAA5B,4BAA4B,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;8GAA5B,4BAA4B,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,qCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QAfrC,EAWK,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAX8B,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,6EAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,GAAA,MAAA,CAAA,EAAA,CAAkB,4HAM/B,GAAgD,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,MAAA,CAAQ,IANzB,CAOc,qBAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAA6D,QAAQ,CAPnF,EAAA,CAAA,CAAA;QAWhD,EAAiB,CAAA,YAAA,EAAA,CAAA;;QAXa,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,IAAA,CAAA,CAAA,OAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA,CAAA,WAAA,EAAA,GAAA,CAAA,cAAA,CAAA,OAAA,IAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,YAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,QAAA,CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,WAAA,CAAA,CAAA,wEAAA,CAAA,UAAA,EAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,IAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,OAAA,IAAA,GAAA,CAAA,cAAA,CAAA,OAAA,CAAA,WAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,CAAA,CAAA,6BAAA,EAAA,GAAA,CAAA,qCAAA,EAAA,CAAA,CAAA,iCAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,CAAA;yGA+C5C,sBAAsB,EAAAiE,0BAAA,EAAAC,2BAAA,EAAAC,gCAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAhCtB,4BAA4B,EAAA,CAAA;cAjBxC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;AAaT,IAAA,CAAA;AACJ,aAAA,CAAA;;AAKD;;AAEG;AA2BI,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,6BAAkC,CAAA;AA2D1E;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;AAZpB;;AAEG;AAEI,QAAA,IAAA,CAAA,WAAW,GAAyB,IAAI,YAAY,EAAU,CAAC;;AAUlE,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACd,QAAA,IAAI,CAAC,oBAAoB,GAAG,cAAc,CAAC;KAE9C;AAtED;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,wBAAwB,CAAC;KACnC;AAkED;;AAEG;IACI,aAAa,GAAA;QAChB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACrC;AAED;;AAEG;AACI,IAAA,UAAU,CAAC,KAAY,EAAA;QAC1B,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;AAC1B,SAAA;KACJ;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;;+GAnGQ,sBAAsB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA1B,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,OAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,OAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,uFAAA,EAAA,CAAA,EAAA,aAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDxDnC,EAA0C,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QAExC,EAYM,CAAA,UAAA,CAAA,CAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEN,EAEoG,CAAA,UAAA,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAAA,CAAA;QACpG,EAAqD,CAAA,UAAA,CAAA,CAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACrD,EAA8E,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;QAChF,EAAwB,CAAA,YAAA,EAAA,CAAA;;QArBD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAGjC,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA7B,EAA6B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,QAAA,IAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAaxB,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA5B,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,QAAA,IAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAGhC,EAA0B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA1B,EAA0B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,OAAA,IAAA,GAAA,CAAA,QAAA,CAAA,CAAA;QACV,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,OAAA,CAAA,CAAA;;ACoC1B,sBAAsB,GAAA,UAAA,CAAA;AA1BlC,IAAA,iBAAiB,CAAC;QACf,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,WAAW,EAAE,gDAAgD;AAC7D,QAAA,eAAe,EAAE,4BAA4B;AAC7C,QAAA,gBAAgB,EAAE;AACd,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,OAAO;AACjC,gBAAA,MAAM,EAAE,UAAU;AAClB,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,KAAK,EAAE,0FAA0F;AACpG,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,gBAAA,MAAM,EAAE,wBAAwB;AAChC,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,YAAY,EAAE,EAAE;AAChB,gBAAA,KAAK,EAAE,2BAA2B;AACrC,aAAA;AACJ,SAAA;KACJ,CAAC;qCAoEgB,QAAQ,CAAA,CAAA;AA/Db,CAAA,EAAA,sBAAsB,CAoGlC,CAAA;uFApGY,sBAAsB,EAAA,CAAA;cAJlC,SAAS;2BACI,6BAA6B,EAAA,QAAA,EAAA,2jDAAA,EAAA,CAAA;2DAgBhC,SAAS,EAAA,CAAA;kBADf,KAAK;YAQC,IAAI,EAAA,CAAA;kBADV,KAAK;YAQC,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAOC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAOC,oBAAoB,EAAA,CAAA;kBAD1B,KAAK;YAOC,oBAAoB,EAAA,CAAA;kBAD1B,KAAK;YAOC,WAAW,EAAA,CAAA;kBADjB,MAAM;;;;;;ACpGX;;AAEG;AAKG,MAAO,sBAAuB,SAAQ,0BAA0B,CAAA;AA8BlE;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAClC;AAnCD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,wBAAwB,CAAC;KACnC;AAgCD;;AAEG;AACI,IAAA,iBAAiB,CAAC,QAAiB,EAAA;AACtC,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACtB,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,SAAA;KACJ;AAED;;AAEG;AACI,IAAA,eAAe,CAAC,KAAoB,EAAA;QACvC,QAAQ,KAAK,CAAC,OAAO;AACjB,YAAA,KAAK,OAAO,CAAC,KAAK,EAAE;AAChB,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACtB,oBAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;oBAClC,OAAO;AACV,iBAAA;gBACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACzC,KAAK,CAAC,wBAAwB,EAAE,CAAC;gBACjC,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO;AACV,aAAA;AACD,YAAA,KAAK,OAAO,CAAC,SAAS,EAAE;gBACpB,IAAI,KAAK,CAAC,MAAM,EAAE;oBACd,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC5C,iBAAA;gBACD,OAAO;AACV,aAAA;AACD,YAAA,SAAS;gBAAE,OAAO;AAAE,aAAA;AACvB,SAAA;KACJ;AAEM,IAAA,kBAAkB,CAAC,KAAoB,EAAA;QAC1C,QAAQ,KAAK,CAAC,OAAO;AACjB,YAAA,KAAK,OAAO,CAAC,KAAK,EAAE;gBAChB,IAAI,CAAC,kBAAkB,EAAE,CAAC;;gBAG1B,KAAK,CAAC,wBAAwB,EAAE,CAAC;gBACjC,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO;AACV,aAAA;AACD,YAAA,SAAS;gBAAE,OAAO;AAAE,aAAA;AACvB,SAAA;KACJ;AAED;;AAEG;IACI,kBAAkB,GAAA;QACrB,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,CAAc,WAAA,EAAA,IAAI,CAAC,YAAY,CAAE,CAAA,CAAC,CAAC;QAChE,IAAI,CAAC,iBAAiB,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChE,YAAA,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACxD,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACjD,SAAA;KAEJ;AAED;;;AAGG;AACO,IAAA,cAAc,CAAC,KAAe,EAAA;AACpC,QAAA,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,IAAI,CAAC,KAAK,EAAE;AACR,gBAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC1B,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC3D,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC9E,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACzB,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9B,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACjD,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAClC;AAED;;;AAGG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,OAAO;AACH,gBAAA,mBAAmB,EAAE;AACjB,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;AACnE,iBAAA;aACJ,CAAC;AACL,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACtD;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,eAAe,EAAE,EAAE;SACtB,CAAC;KACL;;+GA3JQ,sBAAsB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;;ACnBnC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAA0C,aAAA,CAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAGpC,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,+DAAA,CAAA,MAAA,EAAA,EAAA,OAAW,6BAAyB,CAAC,EAAA,CAAA,CAAA;QACrC,EAAyG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAApC,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,sDAAA,CAAA,MAAA,EAAA,EAAA,OAAW,2BAAuB,CAAC,EAAA,CAAA,CAAA;QACtG,EAKgC,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAL8C,EAA0B,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,8DAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,YAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA,eAAA,EAAA,SAAA,8DAAA,GAAA,EAAA,OACrF,wBAAoB,CADiE,EAAA,CAAA,CAAA;QAAxG,EAKgC,CAAA,YAAA,EAAA,CAAA;QAChC,EAGiD,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAA/C,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,GAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAS,EAAA,CAAA,WAAA,CAAA,GAAA,CAAA,aAAA,CAAA,MAAA,EAA+B,IAAI,CAAC,CAAA,CAAC,EAAA,CAAA,CAAA;QAC9C,EAA8C,CAAA,SAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAChD,QAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;AAEX,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAgG,CAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;AAC1D,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,wEAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,KAAA,GAAA,MAAA,CAAA,EAAA,CAAmB,CACzC,UAAA,EAAA,SAAA,mEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,GAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,GAA+B,CAAA,aAAA,CAAA,MAAA,EAAA,IAAI,CAAC,CAAA,CADK,EAAA,CAAA,CAAA,SAAA,EAAA,SAAA,kEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,GAAA,GAAA,EAAA,CAAA,WAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OACQ,EAAA,CAAA,WAAA,CAAA,GAAA,CAAA,aAAA,CAAA,MAAA,EAA+B,IAAI,CAAC,CAAA,CAD5C,EAAA,CAAA,CAAA;QAGvD,EAAiB,CAAA,YAAA,EAAA,EAAA,EAAA,EAAA,CAAA;QAIvB,EAA6D,CAAA,SAAA,CAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;;QA3BD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAEb,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAApB,QAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,KAAA,CAAoB,0BAAA,CAAA,WAAA,EAAA,IAAA,CAAA,CAAA;QAGsC,EAA0B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA1B,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,YAAA,CAA0B,CAAA,aAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;AAA1D,QAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,GAAA,CAAA,QAAA,CAA+B,CAAA,eAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAAA,CAAA,YAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,iBAAA,GAAA,IAAA,GAAA,IAAA,CAAA,CAAA,WAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAAA,6BAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,CAAA;QAQ3E,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArC,EAAqC,CAAA,WAAA,CAAA,aAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;AAFD,QAAA,EAAA,CAAA,WAAA,CAAA,UAAA,EAAA,GAAA,CAAA,iBAAA,GAAA,IAAA,GAAA,IAAA,CAAiD,CAAA,cAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAOtB,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA5B,EAA4B,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAAA,CAAA;QACzD,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAnB,EAAmB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,UAAA,EAAA,IAAA,CAAA,oBAAA,CAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;QAOvC,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;uFDP1B,sBAAsB,EAAA,CAAA;cAJlC,SAAS;2BACI,6BAA6B,EAAA,QAAA,EAAA,ygEAAA,EAAA,CAAA;2DAahC,QAAQ,EAAA,CAAA;kBADd,SAAS;mBAAC,UAAU,CAAA;YAId,KAAK,EAAA,CAAA;kBADX,SAAS;mBAAC,OAAO,CAAA;;;;AEzBtB;AAeA;AACM,MAAO,oCAAqC,SAAQ,wCAAwC,CAAA;;AAArF,mBAAA,oCAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,iDAAA,CAAA,CAAA,OAAA,SAAA,4CAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,iDAAA,KAAA,iDAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,oCAAoC,SAApC,oCAAoC,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;sHAApC,oCAAoC,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,eAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,6CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QAb7C,EASK,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AATuC,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,qFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,GAAA,MAAA,CAAA,EAAA,CAAkB,oIAIxC,GAAgD,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,MAAA,CAAQ,IAJhB,CAKK,qBAAA,EAAA,SAAA,2FAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAA6D,QAAQ,CAL1E,EAAA,CAAA,CAAA;QASzD,EAAiB,CAAA,YAAA,EAAA,CAAA;;QATsB,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,IAAA,CAAA,iDAAA,CAAA,aAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,WAAA,CAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,cAAA,CAAA,QAAA,CAAA,wEAAA,CAAA,UAAA,EAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,IAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,CAAA,4EAAA,CAAA,iCAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,CAAA;yGA0BrD,8BAA8B,EAAAwB,0BAAA,EAAAC,2BAAA,EAAAC,gCAAA,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAb9B,oCAAoC,EAAA,CAAA;cAfhD,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWT,IAAA,CAAA;AACJ,aAAA,CAAA;;AAeM,IAAM,8BAA8B,GAApC,MAAM,8BAA+B,SAAQ,6BAAsC,CAAA;AAqCtF;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AAC3D,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;KAChE;AA5CD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,gCAAgC,CAAC;KAC3C;AAED;;;AAGG;AACH,IAAA,IAAc,0BAA0B,GAAA;AACpC,QAAA,OAAO,IAAI,CAAC;KACf;AAcD;;AAEG;AACH,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAC3C;AAaD;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC;AAED;;;AAGG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,4BAA4B;AAC/B,SAAA,CAAC,CAAC;KACN;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,cAAc,EAAE,EAAE;AAClB,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;AAED;;AAEG;IACI,iBAAiB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,iBAAiB,CAAC;KAChF;AAED;;AAEG;AACI,IAAA,aAAa,CAAC,KAAK,EAAA;QACtB,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,wBAAwB,EAAE,CAAC;AACpC,SAAA;KACJ;;+HA7FQ,8BAA8B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;gHAA9B,8BAA8B,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,eAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,2CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;QCnC3C,EAA0C,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,eAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;QAID,EAAmB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,sEAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,KAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA,aAAA,EAAA,SAAA,oEAAA,CAAA,MAAA,EAAA,EAAA,OAAiD,yBAAqB,CAAtE,EAAA,CAAA,CAAA;QADtD,EAC8H,CAAA,YAAA,EAAA,CAAA;QAC9H,EAAiE,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAA8B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAO,EAAA,EAAA,CAAA;QAI1G,EAA6D,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,CAAA,CAAA;QAC/D,EAAwB,CAAA,YAAA,EAAA,CAAA;;QAVD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QAIA,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAnB,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,KAAA,CAAmB,CAAA,UAAA,EAAA,GAAA,CAAA,iBAAA,EAAA,CAAA,CAAA;AADjB,QAAA,EAAA,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,SAAA,CAA6B,wCAAA,CAAA,cAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QAE7B,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA3B,EAA2B,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,KAAA,CAAA,cAAA,CAAA,CAAA;QAAC,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,GAAA,GAAA,CAAA,OAAA,GAAA,GAAA,CAAA,QAAA,CAAA,CAAA;QAI7E,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;AD0B1B,8BAA8B,GAAA,UAAA,CAAA;AAV1C,IAAA,iBAAiB,CAAC;QACf,IAAI,EAAE,mBAAmB,CAAC,OAAO;AACjC,QAAA,MAAM,EAAE,eAAe;AACvB,QAAA,WAAW,EAAE,kDAAkD;AAC/D,QAAA,eAAe,EAAE,oCAAoC;KACxD,CAAC;qCA8CgB,QAAQ,CAAA,CAAA;AAzCb,CAAA,EAAA,8BAA8B,CA8F1C,CAAA;uFA9FY,8BAA8B,EAAA,CAAA;cAJ1C,SAAS;2BACI,sCAAsC,EAAA,QAAA,EAAA,8pBAAA,EAAA,CAAA;2DAwBzC,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAOK,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,iBAAiB,CAAA;;;AE5DlC;;AAEG;AACK,MAAM,eAAe,GAAmB;AAC5C,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,IAAA,KAAK,EAAE,IAAI;CACd,CAAC;AAEF;;;AAGG;AAMG,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;AAqB1D;;AAEG;AACH,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AAxBZ;;;;;;;;;;;AAWG;QACc,IAAwB,CAAA,wBAAA,GAAW,IAAI,MAAM,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;AAGzF,QAAA,IAAA,CAAA,iBAAiB,GAAW,IAAI,CAAC,wBAAwB,CAAC;KAUhE;AAEF;;;;;AAKI;AACI,IAAA,QAAQ,CAAC,CAAc,EAAA;QAC1B,MAAM,MAAM,GAAqB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;;;AAGzD,QAAA,MAAM,KAAK,GAAW,CAAC,CAAC,KAAK,CAAC;;;QAI9B,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACpC,SAAA;QAED,MAAM,OAAO,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;QAE1D,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;;AAEpB,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM;AACtF,oBAAA,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB;AACxF,sBAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC;AAClG,aAAA;YAED,MAAM,CAAC,8BAA8B,CAAC,GAAG;gBACrC,OAAO,EAAE,IAAI,CAAC,YAAY;aAC7B,CAAC;AACL,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KACpC;;iHA9DQ,uBAAuB,GAAA,CAAA,EAAA,CAAA;yGAAvB,uBAAuB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,aAAA,EAAA,EAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAFrB,CAAC,eAAe,CAAC,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAEnB,uBAAuB,EAAA,CAAA;cALlC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;;AAER,gBAAA,QAAQ,EAAE,iJAAiJ;gBAC3J,SAAS,EAAE,CAAC,eAAe,CAAC;AAC/B,aAAA,CAAA;sCAiBU,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YAIC,YAAY,EAAA,CAAA;kBADlB,KAAK;;;ACpCV;;AAEG;AACI,MAAM,sBAAsB,GAAmB;AAClD,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,6BAA6B,CAAC;AAC5D,IAAA,KAAK,EAAE,IAAI;CACd,CAAC;AAEF;;AAEG;AAMG,MAAO,6BAA8B,SAAQ,iBAAiB,CAAA;AAsChE;;AAEG;AACH,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AATZ;;AAEG;QACK,IAA0B,CAAA,0BAAA,GAAG,IAAI,CAAC;QAOtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,MAAM,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;QACrE,IAAI,CAAC,0BAA0B,GAAG,IAAI,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;KACpF;AAvBD;;AAEG;IACH,IACW,kBAAkB,KAAc,OAAO,IAAI,CAAC,0BAA0B,CAAC,EAAE;IACpF,IAAW,kBAAkB,CAAC,KAAc,EAAA;;QAExC,IAAI,CAAC,0BAA0B,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAA,EAAG,KAAK,CAAE,CAAA,KAAK,OAAO,CAAC,CAAC;QACpG,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;AAgBD;;;;;AAKG;AACI,IAAA,QAAQ,CAAC,CAAc,EAAA;QAC1B,MAAM,MAAM,GAAqB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzD,QAAA,IAAI,KAAK,GAAW,CAAC,CAAC,KAAK,CAAC;;;QAI5B,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACpC,SAAA;QACD,MAAM,OAAO,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;QAC1D,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,CAAC,4BAA4B,CAAC,GAAG;AACnC,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,uBAAuB;gBAChG,QAAQ,EAAE,uBAAuB,CAAC,OAAO;aAC5C,CAAC;YACF,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;gBACtC,MAAM,CAAC,oCAAoC,CAAC,GAAG;AAC3C,oBAAA,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,iBAAiB;iBAC7F,CAAC;AACL,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;YACtD,MAAM,CAAC,oCAAoC,CAAC,GAAG;AAC3C,gBAAA,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,0BAA0B;aACtG,CAAC;AACL,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACvB,MAAM,CAAC,kCAAkC,CAAC,GAAG;AACzC,gBAAA,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,iBAAiB;aAC7F,CAAC;AACL,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KACpC;;6HAxFQ,6BAA6B,GAAA,CAAA,EAAA,CAAA;+GAA7B,6BAA6B,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,aAAA,EAAA,EAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAF3B,CAAC,sBAAsB,CAAC,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAE1B,6BAA6B,EAAA,CAAA;cALzC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;;AAEP,gBAAA,QAAQ,EAAE,qIAAqI;gBAC/I,SAAS,EAAE,CAAC,sBAAsB,CAAC;AACtC,aAAA,CAAA;sCA2Bc,kBAAkB,EAAA,CAAA;kBAD5B,KAAK;mBAAC,oBAAoB,CAAA;;;ACxC/B;;AAEG;AACI,MAAM,qBAAqB,GAAmB;AACjD,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,4BAA4B,CAAC;AAC3D,IAAA,KAAK,EAAE,IAAI;CACd,CAAC;AAEF;;AAEG;AAMG,MAAO,4BAA6B,SAAQ,iBAAiB,CAAA;AA0B/D;;AAEG;AACH,IAAA,WAAA,GAAA;AAAgB,QAAA,KAAK,EAAE,CAAC;AARxB;;AAEG;QACK,IAAqB,CAAA,qBAAA,GAAG,IAAI,CAAC;KAKX;AA3B1B;;AAEG;IACH,IACW,aAAa,KAAyC,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAE;IACrG,IAAW,aAAa,CAAC,KAAyC,EAAA;QAC9D,IAAI,IAAI,CAAC,2BAA2B,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE;AAC9E,YAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;AAC/C,YAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;AAC3C,SAAA;AACD,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACnC,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE;AACxB,YAAA,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACpG,SAAA;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;AAcD;;AAEG;IACI,WAAW,GAAA;QACd,IAAI,IAAI,CAAC,2BAA2B,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE;AAC9E,YAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;AAClD,SAAA;KACJ;AAED;;;;;AAKG;AACI,IAAA,QAAQ,CAAC,CAAc,EAAA;QAC1B,MAAM,MAAM,GAAqB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzD,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;YACxF,MAAM,OAAO,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;AAC1D,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;YAC9E,MAAM,CAAC,uBAAuB,CAAC,GAAG;gBAC9B,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;aACpG,CAAC;AACL,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KACpC;;2HAxDQ,4BAA4B,GAAA,CAAA,EAAA,CAAA;8GAA5B,4BAA4B,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,aAAA,EAAA,EAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAF1B,CAAC,qBAAqB,CAAC,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAEzB,4BAA4B,EAAA,CAAA;cALxC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;;AAEP,gBAAA,QAAQ,EAAE,kIAAkI;gBAC5I,SAAS,EAAE,CAAC,qBAAqB,CAAC;AACrC,aAAA,CAAA;sCAOc,aAAa,EAAA,CAAA;kBADvB,KAAK;mBAAC,eAAe,CAAA;;;ACzB1B;;AAEG;AACI,MAAM,0BAA0B,GAAmB;AACtD,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iCAAiC,CAAC;AAChE,IAAA,KAAK,EAAE,IAAI;CACd,CAAC;AAEF;;AAEG;AAMG,MAAO,iCAAkC,SAAQ,iBAAiB,CAAA;AAkBpE;;AAEG;AACH,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AATZ;;AAEG;QACK,IAAuB,CAAA,uBAAA,GAAG,IAAI,CAAC;KAOtC;AArBD;;AAEG;IACH,IACW,eAAe,KAAc,OAAO,IAAI,CAAC,uBAAuB,CAAC,EAAE;IAC9E,IAAW,eAAe,CAAC,KAAc,EAAA;;QAErC,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAA,EAAG,KAAK,CAAE,CAAA,KAAK,OAAO,CAAC,CAAC;QACjG,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;AAcD;;;;;AAKG;AACI,IAAA,QAAQ,CAAC,CAAc,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAA,EAAG,CAAC,CAAC,KAAK,CAAA,CAAE,CAAC,EAAE;;AAElE,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7B,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;;qIArCQ,iCAAiC,GAAA,CAAA,EAAA,CAAA;mHAAjC,iCAAiC,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,aAAA,EAAA,EAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,CAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAF/B,CAAC,0BAA0B,CAAC,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAE9B,iCAAiC,EAAA,CAAA;cAL7C,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;;AAEP,gBAAA,QAAQ,EAAE,iJAAiJ;gBAC3J,SAAS,EAAE,CAAC,0BAA0B,CAAC;AAC1C,aAAA,CAAA;sCAOc,eAAe,EAAA,CAAA;kBADzB,KAAK;mBAAC,oBAAoB,CAAA;;;MC8NlB,cAAc,CAAA;;+FAAd,cAAc,GAAA,CAAA,EAAA,CAAA;+FAAd,cAAc,EAAA,CAAA,CAAA;AARZ,mBAAA,cAAA,CAAA,IAAA,6BAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,SAAA,EAAA;;QAEP,yCAAyC;QACzC,wCAAwC;QACxC,+CAA+C;QAC/C,wCAAwC;AAC3C,KAAA,EAAA,OAAA,EAAA,CA3BG,eAAe;QACf,aAAa;QACb,eAAe;QACf,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,2BAA2B;QAC3B,gBAAgB;QAChB,cAAc;QACd,UAAU;QACV,YAAY;QACZ,qBAAqB;QACrB,uBAAuB;QACvB,cAAc;QACd,cAAc;QACd,kBAAkB;QAClB,cAAc;QACd,oBAAoB;QACpB,aAAa;QACb,wBAAwB,CAAA,EAAA,CAAA,CAAA;uFAUnB,cAAc,EAAA,CAAA;cAnK1B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE;;oBAEV,uBAAuB;oBACvB,6BAA6B;oBAC7B,0BAA0B;oBAC1B,uBAAuB;oBACvB,0BAA0B;oBAC1B,gCAAgC;oBAChC,2BAA2B;oBAC3B,iCAAiC;oBACjC,sBAAsB;oBACtB,4BAA4B;oBAC5B,0BAA0B;oBAC1B,gCAAgC;oBAChC,sBAAsB;oBACtB,0BAA0B;oBAC1B,+BAA+B;oBAC/B,4BAA4B;oBAC5B,sBAAsB;oBACtB,4BAA4B;oBAC5B,sBAAsB;oBACtB,4BAA4B;oBAC5B,sBAAsB;oBACtB,wBAAwB;oBACxB,8BAA8B;oBAC9B,qCAAqC;oBACrC,6BAA6B;oBAC7B,mCAAmC;oBACnC,0BAA0B;oBAC1B,gCAAgC;oBAChC,4BAA4B;oBAC5B,kCAAkC;oBAClC,0BAA0B;oBAC1B,kCAAkC;oBAClC,wBAAwB;oBACxB,wBAAwB;oBACxB,wBAAwB;oBACxB,8BAA8B;oBAC9B,gCAAgC;oBAChC,sBAAsB;oBACtB,sBAAsB;oBACtB,4BAA4B;oBAC5B,sBAAsB;oBACtB,4BAA4B;oBAC5B,8BAA8B;oBAC9B,oCAAoC;;oBAGpC,0BAA0B;oBAC1B,uBAAuB;oBACvB,6BAA6B;oBAC7B,4BAA4B;oBAC5B,iCAAiC;;oBAGjC,6CAA6C;oBAC7C,wBAAwB;oBACxB,wBAAwB;oBACxB,0BAA0B;oBAC1B,2BAA2B;oBAC3B,gCAAgC;oBAChC,0BAA0B;oBAC1B,iBAAiB;oBACjB,0BAA0B;oBAC1B,wBAAwB;AAC3B,iBAAA;AACD,gBAAA,OAAO,EAAE;;oBAEL,uBAAuB;oBACvB,6BAA6B;oBAC7B,0BAA0B;oBAC1B,uBAAuB;oBACvB,0BAA0B;oBAC1B,gCAAgC;oBAChC,2BAA2B;oBAC3B,iCAAiC;oBACjC,sBAAsB;oBACtB,4BAA4B;oBAC5B,0BAA0B;oBAC1B,gCAAgC;oBAChC,sBAAsB;oBACtB,0BAA0B;oBAC1B,+BAA+B;oBAC/B,4BAA4B;oBAC5B,sBAAsB;oBACtB,4BAA4B;oBAC5B,sBAAsB;oBACtB,4BAA4B;oBAC5B,sBAAsB;oBACtB,wBAAwB;oBACxB,8BAA8B;oBAC9B,qCAAqC;oBACrC,6BAA6B;oBAC7B,mCAAmC;oBACnC,0BAA0B;oBAC1B,gCAAgC;oBAChC,4BAA4B;oBAC5B,kCAAkC;oBAClC,0BAA0B;oBAC1B,kCAAkC;oBAClC,wBAAwB;oBACxB,wBAAwB;oBACxB,wBAAwB;oBACxB,8BAA8B;oBAC9B,gCAAgC;oBAChC,sBAAsB;oBACtB,sBAAsB;oBACtB,4BAA4B;oBAC5B,sBAAsB;oBACtB,4BAA4B;oBAC5B,8BAA8B;oBAC9B,oCAAoC;;oBAGpC,0BAA0B;oBAC1B,uBAAuB;oBACvB,6BAA6B;oBAC7B,4BAA4B;oBAC5B,iCAAiC;;oBAGjC,6CAA6C;oBAC7C,wBAAwB;oBACxB,wBAAwB;oBACxB,0BAA0B;oBAC1B,2BAA2B;oBAC3B,gCAAgC;oBAChC,0BAA0B;oBAC1B,iBAAiB;oBACjB,0BAA0B;oBAC1B,wBAAwB;AAC3B,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,eAAe;oBACf,aAAa;oBACb,eAAe;oBACf,YAAY;oBACZ,WAAW;oBACX,mBAAmB;oBACnB,2BAA2B;oBAC3B,gBAAgB;oBAChB,cAAc;oBACd,UAAU;oBACV,YAAY;oBACZ,qBAAqB;oBACrB,uBAAuB;oBACvB,cAAc;oBACd,cAAc;oBACd,kBAAkB;oBAClB,cAAc;oBACd,oBAAoB;oBACpB,aAAa;oBACb,wBAAwB;AAC3B,iBAAA;AACD,gBAAA,SAAS,EAAE;;oBAEP,yCAAyC;oBACzC,wCAAwC;oBACxC,+CAA+C;oBAC/C,wCAAwC;AAC3C,iBAAA;AACJ,aAAA,CAAA;;wFACY,cAAc,EAAA,EAAA,YAAA,EAAA;;QAhKnB,uBAAuB;QACvB,6BAA6B;QAC7B,0BAA0B;QAC1B,uBAAuB;QACvB,0BAA0B;QAC1B,gCAAgC;QAChC,2BAA2B;QAC3B,iCAAiC;QACjC,sBAAsB;QACtB,4BAA4B;QAC5B,0BAA0B;QAC1B,gCAAgC;QAChC,sBAAsB;QACtB,0BAA0B;QAC1B,+BAA+B;QAC/B,4BAA4B;QAC5B,sBAAsB;QACtB,4BAA4B;QAC5B,sBAAsB;QACtB,4BAA4B;QAC5B,sBAAsB;QACtB,wBAAwB;QACxB,8BAA8B;QAC9B,qCAAqC;QACrC,6BAA6B;QAC7B,mCAAmC;QACnC,0BAA0B;QAC1B,gCAAgC;QAChC,4BAA4B;QAC5B,kCAAkC;QAClC,0BAA0B;QAC1B,kCAAkC;QAClC,wBAAwB;QACxB,wBAAwB;QACxB,wBAAwB;QACxB,8BAA8B;QAC9B,gCAAgC;QAChC,sBAAsB;QACtB,sBAAsB;QACtB,4BAA4B;QAC5B,sBAAsB;QACtB,4BAA4B;QAC5B,8BAA8B;QAC9B,oCAAoC;;QAGpC,0BAA0B;QAC1B,uBAAuB;QACvB,6BAA6B;QAC7B,4BAA4B;QAC5B,iCAAiC;;QAGjC,6CAA6C;QAC7C,wBAAwB;QACxB,wBAAwB;QACxB,0BAA0B;QAC1B,2BAA2B;QAC3B,gCAAgC;QAChC,0BAA0B;QAC1B,iBAAiB;QACjB,0BAA0B;AAC1B,QAAA,wBAAwB,aAqExB,eAAe;QACf,aAAa;QACb,eAAe;QACf,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,2BAA2B;QAC3B,gBAAgB;QAChB,cAAc;QACd,UAAU;QACV,YAAY;QACZ,qBAAqB;QACrB,uBAAuB;QACvB,cAAc;QACd,cAAc;QACd,kBAAkB;QAClB,cAAc;QACd,oBAAoB;QACpB,aAAa;QACb,wBAAwB,CAAA,EAAA,OAAA,EAAA;;QApFxB,uBAAuB;QACvB,6BAA6B;QAC7B,0BAA0B;QAC1B,uBAAuB;QACvB,0BAA0B;QAC1B,gCAAgC;QAChC,2BAA2B;QAC3B,iCAAiC;QACjC,sBAAsB;QACtB,4BAA4B;QAC5B,0BAA0B;QAC1B,gCAAgC;QAChC,sBAAsB;QACtB,0BAA0B;QAC1B,+BAA+B;QAC/B,4BAA4B;QAC5B,sBAAsB;QACtB,4BAA4B;QAC5B,sBAAsB;QACtB,4BAA4B;QAC5B,sBAAsB;QACtB,wBAAwB;QACxB,8BAA8B;QAC9B,qCAAqC;QACrC,6BAA6B;QAC7B,mCAAmC;QACnC,0BAA0B;QAC1B,gCAAgC;QAChC,4BAA4B;QAC5B,kCAAkC;QAClC,0BAA0B;QAC1B,kCAAkC;QAClC,wBAAwB;QACxB,wBAAwB;QACxB,wBAAwB;QACxB,8BAA8B;QAC9B,gCAAgC;QAChC,sBAAsB;QACtB,sBAAsB;QACtB,4BAA4B;QAC5B,sBAAsB;QACtB,4BAA4B;QAC5B,8BAA8B;QAC9B,oCAAoC;;QAGpC,0BAA0B;QAC1B,uBAAuB;QACvB,6BAA6B;QAC7B,4BAA4B;QAC5B,iCAAiC;;QAGjC,6CAA6C;QAC7C,wBAAwB;QACxB,wBAAwB;QACxB,0BAA0B;QAC1B,2BAA2B;QAC3B,gCAAgC;QAChC,0BAA0B;QAC1B,iBAAiB;QACjB,0BAA0B;QAC1B,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACrNhC;;AAEG;AAKG,MAAO,gBAAiB,SAAQ,iBAAiB,CAAA;AAyKnD;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QApKZ,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QAQnB,IAAY,CAAA,YAAA,GAAG,QAAQ,CAAC;AAYhC;;;AAGG;QAEI,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC;AAE/B;;;AAGG;QAEI,IAAqB,CAAA,qBAAA,GAAG,IAAI,CAAC;AAoCpC;;AAEG;QAEI,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAEzB;;AAEG;AAEI,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAA4B,CAAC;AAE9D;;AAEG;AAEI,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAA4B,CAAC;KAiF9D;AA9KD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,kBAAkB,CAAC;KAC7B;AAsCD;;AAEG;IACH,IACW,WAAW,CAAC,cAAsB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,cAAc,EAAE;AACtC,YAAA,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC;AAEnC,YAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,UAAU,EAAE;gBACzC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AACnF,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE,UAAU,EAAE;gBAC1C,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACrF,aAAA;;;YAGD,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;AACpC,gBAAA,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;AACxC,gBAAA,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;AACzC,gBAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;AACzB,gBAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;AACzB,gBAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,gBAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;AACpB,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAoBD;;AAEG;AACH,IAAA,IACW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KACrD;AAED;;AAEG;AACH,IAAA,IACW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAClD;AAED;;AAEG;AACH,IAAA,IACW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;KACpD;AAED;;AAEG;AACH,IAAA,IACW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KACnD;AAED;;AAEG;AACH,IAAA,IACW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;KAC3C;AAED;;AAEG;AACH,IAAA,IACW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC3C;AAED;;AAEG;AACH,IAAA,IACW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;KACtD;AAED;;AAEG;AACH,IAAA,IACW,MAAM,GAAA;QACb,QAAQ,IAAI,CAAC,WAAW;AACpB,YAAA,KAAK,KAAK;AACN,gBAAA,OAAO,UAAU,CAAC;AACtB,YAAA,KAAK,QAAQ;AACT,gBAAA,OAAO,UAAU,CAAC;AACtB,YAAA,KAAK,MAAM;AACP,gBAAA,OAAO,UAAU,CAAC;AACtB,YAAA,KAAK,OAAO;AACR,gBAAA,OAAO,UAAU,CAAC;AACzB,SAAA;KACJ;AAUD;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;;;;;;;QAQjB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,yBAAyB,CAAC;QAE5E,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACvF,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;AAEpE,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3B,IAAI,CAAC,GAAG,CAAC,iCAAiC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjE,SAAA;AAAM,aAAA;YACH,IAAI,oBAAoB,GAAiB,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,aAAa,CAAC;AACvF,YAAA,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,oBAAoB,EAAE;;;AAGrD,gBAAA,IAAI,oBAAoB,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,EAAE;AACvF,oBAAA,IAAI,CAAC,kBAAkB,GAAG,oBAAoB,CAAC;oBAC/C,MAAM;AACT,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,kBAAkB,GAAG,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACvF,oBAAA,oBAAoB,GAAG,oBAAoB,CAAC,aAAa,CAAC;AAC7D,iBAAA;AACJ,aAAA;YAED,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5D,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YACjE,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACnE,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACjE,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACrE,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC7D,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAE7D,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC7D,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACpE,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC9D,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YAClE,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAE7D,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACvB,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBACvE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;gBAClD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAC9E,aAAA;YAED,QAAQ,IAAI,CAAC,WAAW;AACpB,gBAAA,KAAK,KAAK;oBACN,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;oBACtD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;oBACrE,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBAC7D,MAAM;AACV,gBAAA,KAAK,QAAQ;oBACT,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;oBACtD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;oBACrE,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBAC7D,MAAM;AACV,gBAAA,KAAK,MAAM;oBACP,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;oBACtD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAC5D,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;oBACrE,MAAM;AACV,gBAAA,KAAK,OAAO;oBACR,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;oBACtD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAC5D,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;oBACrE,MAAM;AACb,aAAA;YAED,IAAI,4BAA4B,GAAG,KAAK,CAAC;YACzC,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE;AACtE,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9D,oBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE;;;wBAGjF,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,wBAAwB,CAAC,EAAE;4BACtE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnG,yBAAA;AAAM,6BAAA;4BACH,4BAA4B,GAAG,IAAI,CAAC;4BACpC,IAAI,CAAC,sBAAsB,GAAgB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;4BAC/E,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;4BACnG,MAAM;AACT,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;YAED,IAAI,CAAC,4BAA4B,EAAE;gBAC/B,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACjE,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACzE,aAAA;YAED,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5E,SAAA;KACJ;AAED;;AAEG;IAEI,wBAAwB,GAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC/E,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACzE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;KACjF;AAGM,IAAA,sBAAsB,CAAC,MAAM,EAAA;QAChC,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,QAAQ,MAAM,CAAC,OAAO;gBAClB,KAAK,OAAO,CAAC,SAAS;AAClB,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACd,wBAAA,CAAC,EAAE,CAAC,gBAAgB,CAAC,aAAa;AAClC,wBAAA,CAAC,EAAE,CAAC;AACP,qBAAA,CAAC,CAAC;oBACH,MAAM;gBACV,KAAK,OAAO,CAAC,UAAU;AACnB,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;wBACd,CAAC,EAAE,gBAAgB,CAAC,aAAa;AACjC,wBAAA,CAAC,EAAE,CAAC;AACP,qBAAA,CAAC,CAAC;oBACH,MAAM;AACb,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,UAAU,EAAE;YACxB,QAAQ,MAAM,CAAC,OAAO;gBAClB,KAAK,OAAO,CAAC,OAAO;AAChB,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACd,wBAAA,CAAC,EAAE,CAAC;AACJ,wBAAA,CAAC,EAAE,CAAC,gBAAgB,CAAC,aAAa;AACrC,qBAAA,CAAC,CAAC;oBACH,MAAM;gBACV,KAAK,OAAO,CAAC,SAAS;AAClB,oBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACd,wBAAA,CAAC,EAAE,CAAC;wBACJ,CAAC,EAAE,gBAAgB,CAAC,aAAa;AACpC,qBAAA,CAAC,CAAC;oBACH,MAAM;AACb,aAAA;AACJ,SAAA;KACJ;IAEO,WAAW,CAAC,OAAe,EAAE,OAAe,EAAA;AAChD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;QACxC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAChE,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEjE,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,EAAE,CAAC;QAC5E,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAElF,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;QAChE,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC;KACjE;AAEO,IAAA,kBAAkB,CAAC,KAAiB,EAAA;QACxC,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvB,KAAK,CAAC,cAAc,EAAE,CAAC;AAC1B,SAAA;KACJ;AAEO,IAAA,UAAU,CAAC,KAAiB,EAAA;QAChC,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,EAAE,CAAC;AAC5E,YAAA,IAAI,UAAkB,CAAC;AACvB,YAAA,IAAI,UAAkB,CAAC;AAEvB,YAAA,IAAI,IAAY,CAAC;AACjB,YAAA,IAAI,IAAY,CAAC;YACjB,QAAQ,IAAI,CAAC,WAAW;AACpB,gBAAA,KAAK,KAAK;AACN,oBAAA,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC/E,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC7B,oBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AACvD,oBAAA,UAAU,GAAG,eAAe,CAAC,GAAG,KAAK,CAAC;wBAClC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI;AAC7D,wBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC;oBAC1G,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,GAAG,UAAU,GAAG,IAAI,CAAC;oBAC3D,MAAM;AACV,gBAAA,KAAK,QAAQ;AACT,oBAAA,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC/E,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC7B,oBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AACvD,oBAAA,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACnC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,GAAG,UAAU,GAAG,IAAI,CAAC;oBAC3D,MAAM;AACV,gBAAA,KAAK,MAAM;AACP,oBAAA,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAChF,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC7B,oBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACxD,oBAAA,UAAU,GAAG,eAAe,CAAC,IAAI,KAAK,CAAC;wBACnC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI;AAC9D,wBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC;oBAC5G,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC;oBAC5D,MAAM;AACV,gBAAA,KAAK,OAAO;AACR,oBAAA,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAChF,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC7B,oBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACxD,oBAAA,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACnC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC;oBAC5D,MAAM;AACb,aAAA;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;AACxD,SAAA;KACJ;IAEO,mBAAmB,GAAA;QACvB,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAClF,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC5E,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;AAEjF,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAExB,YAAA,IAAI,MAAc,CAAC;AACnB,YAAA,IAAI,MAAc,CAAC;YAEnB,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,EAAE,CAAC;YAC5E,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YAElF,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;YAC5D,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC;YAE1D,QAAQ,IAAI,CAAC,WAAW;AACpB,gBAAA,KAAK,MAAM;AACP,oBAAA,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC/B,MAAM,GAAG,CAAC,CAAC;oBACX,MAAM;AACV,gBAAA,KAAK,OAAO;AACR,oBAAA,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC/B,MAAM,GAAG,CAAC,CAAC;oBACX,MAAM;AACV,gBAAA,KAAK,KAAK;oBACN,MAAM,GAAG,CAAC,CAAC;AACX,oBAAA,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC/B,MAAM;AACV,gBAAA,KAAK,QAAQ;oBACT,MAAM,GAAG,CAAC,CAAC;AACX,oBAAA,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC/B,MAAM;AACb,aAAA;AAED,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACd,gBAAA,CAAC,EAAE,MAAM;AACT,gBAAA,CAAC,EAAE,MAAM;AACZ,aAAA,CAAC,CAAC;YAEH,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC7D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;YACxC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC7D,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAE9D,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;AACjD,SAAA;KACJ;IAEO,UAAU,CAAC,GAAG,YAAsB,EAAA;AACxC,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;KACzD;IAES,qBAAqB,GAAA;QAC3B,OAAO,KAAK,CAAC,qBAAqB,EAAE;AAC/B,aAAA,MAAM,CAAC;YACJ,qBAAqB;YACrB,gBAAgB;AACnB,SAAA,CAAC,CAAC;KACV;;AAxcc,gBAAa,CAAA,aAAA,GAAG,EAAE,CAAC;mGARzB,gBAAgB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;kGAAhB,gBAAgB,EAAA,SAAA,EAAA,CAAA,CAAA,aAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,6BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AAAhB,QAAA,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,SAAA,6CAAA,GAAA,EAAA,OAAA,GAAA,CAAA,wBAAA,EAA0B,sFAA1B,GAA8B,CAAA,sBAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;;;;;;uFAA9B,gBAAgB,EAAA,CAAA;cAJ5B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,aAAa;AACvB,gBAAA,QAAQ,EAAE,EAAE;AACf,aAAA,CAAA;2DA6BU,mBAAmB,EAAA,CAAA;kBADzB,KAAK;YAQC,gBAAgB,EAAA,CAAA;kBADtB,KAAK;YAQC,qBAAqB,EAAA,CAAA;kBAD3B,KAAK;YAOK,WAAW,EAAA,CAAA;kBADrB,KAAK;YAmCC,SAAS,EAAA,CAAA;kBADf,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,MAAM;YAOA,QAAQ,EAAA,CAAA;kBADd,MAAM;YAOI,QAAQ,EAAA,CAAA;kBADlB,WAAW;mBAAC,6BAA6B,CAAA;YAS/B,WAAW,EAAA,CAAA;kBADrB,WAAW;mBAAC,gCAAgC,CAAA;YASlC,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,8BAA8B,CAAA;YAShC,UAAU,EAAA,CAAA;kBADpB,WAAW;mBAAC,+BAA+B,CAAA;YASjC,UAAU,EAAA,CAAA;kBADpB,WAAW;mBAAC,sBAAsB,CAAA;YASxB,YAAY,EAAA,CAAA;kBADtB,WAAW;mBAAC,qBAAqB,CAAA;YASvB,eAAe,EAAA,CAAA;kBADzB,WAAW;mBAAC,uBAAuB,CAAA;YASzB,MAAM,EAAA,CAAA;kBADhB,WAAW;mBAAC,cAAc,CAAA;YAwIpB,wBAAwB,EAAA,CAAA;kBAD9B,YAAY;mBAAC,WAAW,CAAA;YASlB,sBAAsB,EAAA,CAAA;kBAD5B,YAAY;mBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MC7S1B,aAAa,CAAA;;6FAAb,aAAa,GAAA,CAAA,EAAA,CAAA;8FAAb,aAAa,EAAA,CAAA,CAAA;kGAFZ,YAAY,CAAA,EAAA,CAAA,CAAA;uFAEb,aAAa,EAAA,CAAA;cALzB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,YAAY,EAAE,CAAC,gBAAgB,CAAC;gBAChC,OAAO,EAAE,CAAC,gBAAgB,CAAC;gBAC3B,OAAO,EAAE,CAAC,YAAY,CAAC;AAC1B,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,aAAa,EAJP,EAAA,YAAA,EAAA,CAAA,gBAAgB,CAErB,EAAA,OAAA,EAAA,CAAA,YAAY,aADZ,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ICwBlB,uBAMX;AAND,CAAA,UAAY,sBAAsB,EAAA;AAC9B,IAAA,sBAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC,CAAA;AACjC,IAAA,sBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,sBAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C,CAAA;AAC3C,IAAA,sBAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC,CAAA;AACrC,IAAA,sBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACzB,CAAC,EANW,sBAAsB,KAAtB,sBAAsB,GAMjC,EAAA,CAAA,CAAA,CAAA;IAoBW,iBAMX;AAND,CAAA,UAAY,gBAAgB,EAAA;AACxB,IAAA,gBAAA,CAAA,IAAA,CAAA,GAAA,GAAQ,CAAA;AACR,IAAA,gBAAA,CAAA,IAAA,CAAA,GAAA,GAAQ,CAAA;AACR,IAAA,gBAAA,CAAA,IAAA,CAAA,GAAA,GAAQ,CAAA;AACR,IAAA,gBAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,gBAAA,CAAA,WAAA,CAAA,GAAA,GAAe,CAAA;AACnB,CAAC,EANW,gBAAgB,KAAhB,gBAAgB,GAM3B,EAAA,CAAA,CAAA,CAAA;IAEW,UAGX;AAHD,CAAA,UAAY,SAAS,EAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAU,CAAA;AACV,IAAA,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAY,CAAA;AAChB,CAAC,EAHW,SAAS,KAAT,SAAS,GAGpB,EAAA,CAAA,CAAA,CAAA;MAEY,4BAA4B,CAAA;IAC9B,aAAa,CAChB,MAA2B,EAC3B,OAAyB,EACzB,KAAyB,EACzB,WAAqB,EACrB,QAAkB,EAClB,IAAa,EAAA;AACb,QAAA,MAAM,GAAG,GAAkB;AACvB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,WAAW,GAAG,WAAW,GAAG,KAAK;AAC9C,YAAA,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK;SACxC,CAAC;AACF,QAAA,IAAI,IAAI,EAAE;AACN,YAAA,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,SAAA;;AAGD,QAAA,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,GAAG,CAAC,KAAK,EAAE;AACX,YAAA,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,cAAc,EAAE;AACjH,gBAAA,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,EAAE;AACxB,oBAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;AACnB,oBAAA,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,iBAAA;AACJ,aAAA;iBAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,mBAAmB,EAAE;AACtE,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;AAC7C,oBAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;AACnB,oBAAA,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,iBAAA;AACJ,aAAA;iBAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,gBAAgB,EAAE;AACnE,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE;AAClB,oBAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;AACnB,oBAAA,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACd;AAEM,IAAA,WAAW,CAAC,KAAoB,EAAA;AACnC,QAAA,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;AACvB,QAAA,OAAO,KAAK,CAAC;KAChB;AAEM,IAAA,eAAe,CAClB,KAAa,EACb,KAAa,EACb,UAAoB,EAAA;QACpB,OAAO;AACH,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,UAAU,GAAG,UAAU,GAAG,KAAK;SAC9C,CAAC;KACL;IAEM,cAAc,CACjB,KAAU,EACV,IAA6B,EAC7B,UAAU,GAAG,IAAI,EACjB,cAAoB,EAAA;AAEpB,QAAA,MAAM,GAAG,GAAuB;YAC5B,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,EAAE;AACzB,YAAA,IAAI,EAAE,IAAI,IAAI,sBAAsB,CAAC,SAAS;YAC9C,cAAc,EAAE,cAAc,GAAG,cAAc,GAAG,EAAE;AACpD,YAAA,YAAY,EAAE,IAAI;SACrB,CAAC;QAEF,IAAI,IAAI,KAAK,sBAAsB,CAAC,mBAAmB,IAAI,IAAI,KAAK,sBAAsB,CAAC,cAAc,EAAE;AACvG,YAAA,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;AACpB,SAAA;QAED,IAAI,IAAI,KAAK,sBAAsB,CAAC,SAAS,IAAI,IAAI,KAAK,sBAAsB,CAAC,cAAc;AACxF,eAAA,IAAI,KAAK,sBAAsB,CAAC,mBAAmB,EAAE;AACxD,YAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACzB,gBAAA,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,EAAE;AACzC,oBAAA,GAAG,CAAC,KAAK,GAAG,cAAc,CAAC;AAC9B,iBAAA;AAAM,qBAAA;AACH,oBAAA,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;AACxB,oBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;wBAC3B,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,cAAc,GAAG,EAAE,CAAC;AACvC,qBAAA;AAAM,yBAAA;wBACH,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,cAAc,GAAG,EAAE,CAAC;AACvC,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC3C,oBAAA,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC;AAC9B,iBAAA;AAAM,qBAAA;oBACH,IAAI,KAAK,KAAK,cAAc,EAAE;AAC1B,wBAAA,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC;AAClC,qBAAA;AACJ,iBAAA;AACD,gBAAA,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5B,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,IAAI,KAAK,sBAAsB,CAAC,gBAAgB,EAAE;AACzD,YAAA,MAAM,WAAW,GAAG,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,2BAA2B,CAAC;AACrF,YAAA,GAAG,CAAC,kBAAkB,GAAG,WAAW,CAAC;YACrC,IAAI;AACA,gBAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBACpB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;AAC5B,oBAAA,IAAI,cAAc,EAAE;AAChB,wBAAA,GAAG,CAAC,KAAK,GAAG,cAAc,CAAC;AAC9B,qBAAA;AAAM,yBAAA;AACH,wBAAA,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;wBACxB,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,cAAc,GAAG,IAAI,SAAS,EAAE,CAAC;AACpD,qBAAA;AACJ,iBAAA;AAAM,qBAAA;AACH,oBAAA,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC;AAC3B,oBAAA,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;AAClB,oBAAA,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5B,iBAAA;;gBAED,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AACtC,aAAA;YAAC,OAAO,CAAC,EAAE,GAAG;AAClB,SAAA;AAAM,aAAA;;AAEH,YAAA,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAClC,gBAAA,EAAE,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACzE,gBAAA,EAAE,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACvD,gBAAA,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;AAC5B,aAAA;AACJ,SAAA;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,KAAK,sBAAsB,CAAC,gBAAgB,EAAE;AAC/E,YAAA,GAAG,CAAC,IAAI,GAAG,sBAAsB,CAAC,mBAAmB,CAAC;AACzD,SAAA;AAED,QAAA,IAAI,UAAU,KAAK,GAAG,CAAC,IAAI,KAAK,sBAAsB,CAAC,mBAAmB,IAAI,GAAG,CAAC,IAAI,KAAK,sBAAsB,CAAC,cAAc,CAAC,EAAE;AAC/H,YAAA,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB,SAAA;AAAM,aAAA,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,sBAAsB,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,sBAAsB,CAAC,gBAAgB,EAAE;AAC7H,YAAA,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1B,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACd;AACJ;;ICvKW,0BAKX;AALD,CAAA,UAAY,yBAAyB,EAAA;AACjC,IAAA,yBAAA,CAAA,yBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV,IAAA,yBAAA,CAAA,yBAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAe,CAAA;AACf,IAAA,yBAAA,CAAA,yBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;AACb,IAAA,yBAAA,CAAA,yBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AAChB,CAAC,EALW,yBAAyB,KAAzB,yBAAyB,GAKpC,EAAA,CAAA,CAAA,CAAA;IAEW,4BAGX;AAHD,CAAA,UAAY,2BAA2B,EAAA;AACnC,IAAA,2BAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,2BAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACzB,CAAC,EAHW,2BAA2B,KAA3B,2BAA2B,GAGtC,EAAA,CAAA,CAAA,CAAA;IAgBW,kBAIX;AAJD,CAAA,UAAY,iBAAiB,EAAA;AACzB,IAAA,iBAAA,CAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR,IAAA,iBAAA,CAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV,IAAA,iBAAA,CAAA,iBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACf,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,GAI5B,EAAA,CAAA,CAAA,CAAA;AAED,CAAA,UAAY,2BAA2B,EAAA;AACnC,IAAA,2BAAA,CAAA,2BAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV,IAAA,2BAAA,CAAA,2BAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR,IAAA,2BAAA,CAAA,2BAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AAClB,CAAC,EAJW,2BAA2B,KAA3B,2BAA2B,GAItC,EAAA,CAAA,CAAA;;;;AC1ED;;;;;;AAMG;MAKU,wBAAwB,CAAA;AAJrC,IAAA,WAAA,GAAA;AA6BI;;AAEG;QAEI,IAAK,CAAA,KAAA,GAAG,OAAO,CAAC;AAEvB;;AAEG;QAEI,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAoBtB;;;AAGG;AAEI,QAAA,IAAA,CAAA,wBAAwB,GAC0C,IAAI,CAAC,+BAA+B,CAAC;AAc9G;;AAEG;QAEI,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAczB;;;;AAIG;QAEI,IAAyB,CAAA,yBAAA,GAAG,IAAI,CAAC;AAExC;;AAEG;AACI,QAAA,IAAA,CAAA,QAAQ,GAAsB,iBAAiB,CAAC,IAAI,CAAC;AA4D/D,KAAA;AA5BG;;;;AAIG;AACI,IAAA,+BAA+B,CAAC,UAAkB,EAAA;AACrD,QAAA,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;KAC7B;AAED;;;AAGG;IACI,oBAAoB,GAAA;QACvB,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;KAClD;AAED;;;;;AAKG;IACI,wBAAwB,CAAC,IAAS,EAAE,KAAa,EAAA;;;AAGpD,QAAA,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;KAChH;;mHAnKQ,wBAAwB,GAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,EAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,uCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;oCAuHnB,WAAW,EAAA,CAAA,CAAA,CAAA;;;;;;;;;uFAvHhB,wBAAwB,EAAA,CAAA;cAJpC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,sEAAsE;AAChF,gBAAA,QAAQ,EAAE,EAAE;AACf,aAAA,CAAA;gBAMU,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,MAAM,EAAA,CAAA;kBADZ,KAAK;YAOC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAOC,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,MAAM,EAAA,CAAA;kBADZ,KAAK;YAOC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YAOC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAOC,wBAAwB,EAAA,CAAA;kBAD9B,KAAK;YAQC,wBAAwB,EAAA,CAAA;kBAD9B,KAAK;YAQC,aAAa,EAAA,CAAA;kBADnB,KAAK;YAOC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAOC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAOC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAOC,kBAAkB,EAAA,CAAA;kBADxB,KAAK;YASC,yBAAyB,EAAA,CAAA;kBAD/B,KAAK;YAsBC,YAAY,EAAA,CAAA;kBADlB,YAAY;mBAAC,WAAW,CAAA;YAQlB,gBAAgB,EAAA,CAAA;kBADtB,YAAY;mBAAC,MAAM,CAAA;YAQb,gBAAgB,EAAA,CAAA;kBADtB,YAAY;mBAAC,MAAM,CAAA;;;ACjJxB;;;;;;AAMG;AAEG,MAAO,mBAAoB,SAAQ,iBAAiB,CAAA;AAD1D,IAAA,WAAA,GAAA;;AAmCI;;AAEG;QACK,IAAsB,CAAA,sBAAA,GAAG,IAAI,CAAC;AA4BzC,KAAA;AAhEG;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,qBAAqB,CAAC;KAChC;AAiCD;;;;;;AAMG;IACH,IACW,cAAc,CAAC,KAAc,EAAA;AACpC,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC;KAC9B;AAED;;AAEG;AACH,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAE,sBAAsB,CAAC;KACzC;;AAzDQ,mBAAA,mBAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,gCAAA,CAAA,CAAA,OAAA,SAAA,2BAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,gCAAA,KAAA,gCAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,mBAAmB,SAAnB,mBAAmB,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;qGAAnB,mBAAmB,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAAnB,mBAAmB,EAAA,CAAA;cAD/B,SAAS;gBAaU,aAAa,EAAA,CAAA;kBAA5B,KAAK;YAMU,SAAS,EAAA,CAAA;kBAAxB,KAAK;YAMU,kBAAkB,EAAA,CAAA;kBAAjC,KAAK;YAQU,YAAY,EAAA,CAAA;kBAA3B,KAAK;YAeK,cAAc,EAAA,CAAA;kBADxB,KAAK;YAkBU,YAAY,EAAA,CAAA;kBAA3B,KAAK;;;AC9DV;;;AAGG;MACU,6BAA6B,CAAA;AACtC,IAAA,WAAA,GAAA,GAAiB;AAEV,IAAA,mBAAmB,CAAC,KAAoB,EAAE,cAA0B,EAAE,QAAiB,EAAA;;;QAG1F,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAc,KAAK,CAAC,MAAM,CAAC,CAAC;QACpE,IAAI,YAAY,IAAI,QAAQ,EAAE;YAC1B,OAAO;AACV,SAAA;QACD,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,OAAO,CAAC,IAAI;gBACb,IAAI,KAAK,CAAC,MAAM,EAAE;oBACd,MAAM;AACT,iBAAA;AACD,gBAAA,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;gBAChD,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,MAAM;YACV,KAAK,OAAO,CAAC,KAAK;gBACd,IAAI,KAAK,CAAC,MAAM,EAAE;oBACd,MAAM;AACT,iBAAA;AACD,gBAAA,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;gBAChD,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,MAAM;AACb,SAAA;KACJ;AAEO,IAAA,0BAA0B,CAAC,cAA0B,EAAA;QACzD,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACtE,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAEM,kBAAkB,GAAA;QACrB,IAAI,MAAM,CAAC,YAAY,EAAE;YACrB,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE;AAC7B,gBAAA,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;AACjC,aAAA;iBAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,EAAE;AAC9C,gBAAA,MAAM,CAAC,YAAY,EAAE,CAAC,eAAe,EAAE,CAAC;AAC3C,aAAA;AACJ,SAAA;KACJ;IAEM,+BAA+B,CAAC,YAAmC,EAAE,UAAmB,EAAA;AAC3F,QAAA,IAAI,MAAc,CAAC;QACnB,QAAQ,YAAY,CAAC,IAAI;YACrB,KAAK,yBAAyB,CAAC,QAAQ;gBACnC,MAAM,GAAG,UAAU,CAAC;gBACpB,MAAM;AACV,YAAA;gBACI,MAAM,GAAG,cAAc,CAAC;gBACxB,MAAM;AACb,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AAEM,IAAA,yBAAyB,CAAC,MAAgC,EAAA;QAC7D,IAAI,MAAM,GAAG,MAAM,CAAC;QACpB,QAAQ,MAAM,CAAC,QAAQ;YACnB,KAAK,iBAAiB,CAAC,MAAM;gBACzB,MAAM,GAAG,WAAW,CAAC;gBACrB,MAAM;YACV,KAAK,iBAAiB,CAAC,OAAO;gBAC1B,MAAM,GAAG,YAAY,CAAC;gBACtB,MAAM;AACb,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;AAEG;AACI,IAAA,8BAA8B,CAAC,aAA0B,EAAA;AAC5D,QAAA,OAAO,aAAa,IAAI,aAAa,CAAC,OAAO,KAAK,OAAO;eAClD,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;KAC/E;AAED;;AAEG;AACI,IAAA,6CAA6C,CAChD,KAAoB,EACpB,aAA0B,EAC1B,UAAuB,EACvB,0BAAsC,EAAA;QAEtC,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACxD,MAAM,iBAAiB,GAAG,IAAI,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC;QAC7E,IAAI,YAAY,IAAI,iBAAiB,EAAE;;;AAGnC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;AAC5E,gBAAA,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,YAAY,EAAE;gBACrE,KAAK,CAAC,eAAe,EAAE,CAAC;AAC3B,aAAA;AAED,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,iBAAiB,EAAE;gBAC7E,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,KAAK,CAAC,wBAAwB,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAqB,aAAa,CAAC;AAC9C,gBAAA,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AAClC,aAAA;YACD,GAAG,GAAG,IAAI,CAAC;AACd,SAAA;AAAM,aAAA;YACH,MAAM,2BAA2B,GAAG,IAAI,CAAC,oDAAoD,CAAC,aAAa,CAAC,CAAC;AAC7G,YAAA,IAAI,2BAA2B,EAAE;AAC7B,gBAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,EAAE;oBAC/B,IAAI,KAAK,CAAC,QAAQ,EAAE;wBAChB,MAAM,YAAY,GAAG,GAAG,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC;wBACpE,YAAY,CAAC,KAAK,EAAE,CAAC;AACxB,qBAAA;AAAM,yBAAA;wBACH,UAAU,CAAC,KAAK,EAAE,CAAC;AACtB,qBAAA;oBACD,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;AAC3B,iBAAA;AACJ,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,8BAA8B,CAAC,aAAa,CAAC,EAAE;;gBAE3D,IAAI,KAAK,CAAC,QAAQ,EAAE;;;oBAGhB,UAAU,CAAC,KAAK,EAAE,CAAC;AACtB,iBAAA;AAAM,qBAAA;;oBAEH,MAAM,WAAW,GAAG,GAAG,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;oBAC/D,WAAW,CAAC,KAAK,EAAE,CAAC;AACvB,iBAAA;gBACD,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;AAC3B,aAAA;AAAM,iBAAA;;;gBAGH,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,EAAE;AAChD,oBAAA,IAAI,KAAK,CAAC;oBACV,IAAI,KAAK,CAAC,QAAQ,EAAE;AAChB,wBAAA,IAAI,aAAa,IAAI,aAAa,CAAC,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;4BAC/F,KAAK,GAAG,GAAG,CAAC,sBAAsB,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC;AAChF,yBAAA;AAAM,6BAAA;AACH,4BAAA,KAAK,GAAG,GAAG,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC;AAC1D,yBAAA;AACJ,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,aAAa,IAAI,aAAa,CAAC,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;4BAC/F,KAAK,GAAG,GAAG,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC;AAC5E,yBAAA;AAAM,6BAAA;AACH,4BAAA,KAAK,GAAG,GAAG,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;AACtD,yBAAA;AACJ,qBAAA;AACD,oBAAA,IAAI,KAAK,EAAE;wBACP,KAAK,CAAC,KAAK,EAAE,CAAC;wBACd,KAAK,CAAC,cAAc,EAAE,CAAC;wBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;AAC3B,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACd;AAED;;AAEE;AAEK,IAAA,gBAAgB,CAAC,KAAiB,EAAA;AACrC,QAAA,MAAM,aAAa,GAAgB,KAAK,CAAC,MAAM,CAAC;QAChD,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAC5D,QAAA,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAC,CAAC,CAAC;QAChF,IAAI,CAAC,CAAC,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AACpC,SAAA;KACJ;AAED;;AAEG;AACI,IAAA,iBAAiB,CAAC,KAAiB,EAAA;AACtC,QAAA,MAAM,aAAa,GAAgB,KAAK,CAAC,MAAM,CAAC;QAChD,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAC5D,QAAA,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAC,CAAC,CAAC;QAClF,IAAI,CAAC,CAAC,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;AACrC,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,+BAA+B,CAAC,KAA2B,EAAA;AAC9D,QAAA,IAAI,KAAK,CAAC,WAAW,CAAC,GAAG,KAAK,KAAK,EAAE;YACjC,MAAM,eAAe,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAE1G,IAAI,CAAC,eAAe,EAAE;gBAClB,OAAO;AACV,aAAA;YAED,IAAI,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE;gBACpD,OAAO,CAAC,GAAG,CAAC;oBACR,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,oBAAA,OAAO,EAAE,wHAAwH;AACjI,oBAAA,MAAM,EAAE,sCAAsC;AACjD,iBAAA,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;AACK,IAAA,oDAAoD,CAAC,aAA0B,EAAA;;AAEnF,QAAA,IAAI,aAAa,IAAI,aAAa,CAAC,OAAO,KAAK,QAAQ,EAAE;AACrD,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;AAEG;AACI,IAAA,cAAc,CAAC,aAA0B,EAAA;AAC5C,QAAA,OAAO,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAC;KAClG;AACJ,CAAA;AA9DG,UAAA,CAAA;AAAC,IAAAnE,UAAQ,EAAE;;qCACoB,UAAU,CAAA,CAAA;;AAOxC,CAAA,EAAA,6BAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA;;AC5LC,MAAO,gCAAiC,SAAQ,mCAAmC,CAAA;AAAzF,IAAA,WAAA,GAAA;;QACoB,IAAI,CAAA,IAAA,GAAG,gBAAgB,CAAC;QACjC,IAAoB,CAAA,oBAAA,GAAG,CAAC,CAAC,CAAC;QAUzB,IAAwC,CAAA,wCAAA,GAAG,KAAK,CAAC;KA0G5D;IAlHG,IAAW,uCAAuC,CAAC,KAAc,EAAA;AAC7D,QAAA,IAAI,CAAC,wCAAwC,GAAG,CAAC,CAAC,KAAK,CAAC;KAC3D;AAED,IAAA,IAAW,uCAAuC,GAAA;QAC9C,OAAO,IAAI,CAAC,wCAAwC,CAAC;KACxD;AAID;;AAEG;AACI,IAAA,yCAAyC,CAAC,iBAA6B,EAAE,QAAmB,EAC/F,sBAAkC,EAAE,kBAA8B,EAAA;AAElE,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,OAAO;AACV,SAAA;QAED,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;AAC1E,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC;AAEtC,QAAA,IAAI,qBAAqB,IAAI,kBAAkB,GAAG,mCAAmC,CAAC,SAAS,EAAE;YAC7F,QAAQ,CAAC,WAAW,CAAC,sBAAsB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;YACzE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AACtD,SAAA;QAED,IAAI,CAAC,qBAAqB,IAAI,kBAAkB,GAAG,mCAAmC,CAAC,SAAS,EAAE;YAC9F,IAAI,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE;gBACjF,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;AACjF,aAAA;YACD,OAAO;AACV,SAAA;AAED,QAAA,IAAI,kBAAkB,IAAI,mCAAmC,CAAC,SAAS,EAAE;YACrE,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC,aAAa,EAAE,YAAY,EAAE,CAAM,IAAA,CAAA,CAAC,CAAC;YAE9E,MAAM,sBAAsB,GAAG,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;;;YAGzF,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,YAAA,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,aAAa,CAAC,WAAW,CAAC;YAC7E,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC;YAE7F,IAAI,uBAAuB,IAAI,kBAAkB,EAAE;gBAC/C,OAAO;AACV,aAAA;YAED,IAAI,uBAAuB,GAAG,yBAAyB,EAAE;gBACrD,IAAI,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,iCAAiC,CAAC,EAAE;oBACxF,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAC9E,iBAAA;gBACD,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AACxD,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,kBAAkB,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,EAAE;AAClD,oBAAA,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK;AACvC,wBAAA,kBAAkB,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3D,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;IACI,4CAA4C,CAAC,kBAA8B,EAAE,sBAAkC,EAAA;AAClH,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC;AACtC,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;AAExC,QAAA,IAAI,mBAAmB,KAAK,IAAI,CAAC,oBAAoB,EAAE;AACnD,YAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;AAChD,YAAA,OAAO,IAAI,CAAC,0CAA0C,CAAC,KAAK,CAAC,CAAC;AACjE,SAAA;AAED,QAAA,IAAI,kBAAkB,GAAG,mCAAmC,CAAC,SAAS,EAAE;AACpE,YAAA,OAAO,IAAI,CAAC,0CAA0C,CAAC,KAAK,CAAC,CAAC;AACjE,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,kBAAkB,CAAC,aAAa,CAAC,YAAY,CAAC;AACnE,QAAA,MAAM,aAAa,GAAG,sBAAsB,CAAC,aAAa,CAAC,YAAY,CAAC;;AAGxE,QAAA,IAAI,YAAY,GAAG,aAAa,IAAI,GAAG,EAAE;AACrC,YAAA,OAAO,IAAI,CAAC,0CAA0C,CAAC,IAAI,CAAC,CAAC;AAChE,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,0CAA0C,CAAC,KAAK,CAAC,CAAC;KACjE;AAEO,IAAA,0CAA0C,CAAC,KAAc,EAAA;AAC7D,QAAA,IAAI,CAAC,uCAAuC,GAAG,KAAK,CAAC;AACrD,QAAA,OAAO,KAAK,CAAC;KAChB;AAEO,IAAA,mBAAmB,CAAC,aAA0B,EAAA;AAClD,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE;YACpD,OAAO;AACV,SAAA;QAED,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;AAC1D,YAAA,OAAO,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;AACtD,SAAA;;QAGD,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE;YACtD,MAAM,KAAK,GAAgB,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrD,YAAA,UAAU,IAAI,KAAK,CAAC,WAAW,CAAC;AACnC,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACrB;AACJ;;MCxHY,kDAAkD,GAC3D,IAAI,cAAc,CAAqB,2CAA2C;;AC0BhF,MAAO,gCACT,SAAQ,2BAAwE,CAAA;AAqBhF;;;AAGG;AACH,IAAA,WAAA,CAAY,aAA+B,EAAA;QACvC,KAAK,CAAC,aAAa,CAAC,CAAC;AAVlB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAuD,CAAC;AAG1F,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAA0D,CAAC;KAQ/F;AAEM,IAAA,WAAW,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;KAChF;IAEM,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,mBAAmB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,OAAO,GAAA;AACV,QAAA,OAAO,KAAK,CAAC;KAChB;IAEM,YAAY,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACjF;AAED;;AAEG;IACO,aAAa,GAAA;QACnB,OAAO;YACH,SAAS,EAAE,IAAI,CAAC,IAAI;YACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/B,YAAA,kBAAkB,EAAE,IAAI;SAC3B,CAAC;KACL;;mIA5DQ,gCAAgC,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAhC,mBAAA,gCAAA,CAAA,IAAA,6BAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,IAAA,EAAA,gCAAgC,EAP9B,SAAA,EAAA,CAAA,CAAA,gCAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,kDAAkD;AAC3D,gBAAA,WAAW,EAAE,UAAU,EAAC,MAAM,gCAAgC,EAAC;AAClE,aAAA;AACJ,SAAA,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,yCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAEQ,gCAAgC,EAAA,CAAA;cAV5C,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,gCAAgC;AAC1C,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,SAAS,EAAE;AACP,oBAAA;AACI,wBAAA,OAAO,EAAE,kDAAkD;AAC3D,wBAAA,WAAW,EAAE,UAAU,EAAC,sCAAsC,EAAC;AAClE,qBAAA;AACJ,iBAAA;AACJ,aAAA,CAAA;mEAMU,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAIC,YAAY,EAAA,CAAA;kBADlB,KAAK;YAIC,eAAe,EAAA,CAAA;kBADrB,MAAM;YAIA,WAAW,EAAA,CAAA;kBADjB,MAAM;;;MChDE,WAAW,CAAA;AAAxB,IAAA,WAAA,GAAA;QACY,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAEtB,QAAA,IAAA,CAAA,aAAa,GAAG;YACpB,KAAK,EAAE,CAAC,GAAG,IAAI;YACf,KAAK,EAAE,CAAC,GAAG,IAAI;YACf,KAAK,EAAE,CAAC,GAAG,EAAE;YACb,KAAK,EAAE,CAAC,GAAG,CAAC;AACZ,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,KAAK,EAAE,EAAE;SACZ,CAAC;KAmFL;;;AA/EU,IAAA,WAAW,CAAC,KAAa,EAAE,QAAQ,GAAG,OAAO,EAAA;QAChD,MAAM,WAAW,GAAgB,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAEtE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;KACrD;AAEO,IAAA,OAAO,CAAC,WAA+B,EAAE,KAAa,EAAE,QAAQ,GAAG,OAAO,EAAA;;AAE9E,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,SAAA;QAED,MAAM,YAAY,GAAG,KAAK,CAAC;QAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjE,QAAA,IAAI,MAAM,CAAC;;AAGX,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAA,GAAA,CAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACxD,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAG,EAAA,IAAI,CAAK,GAAA,CAAA,CAAC,CAAC;;;AAG7C,YAAA,WAAW,GAAG,KAAK;AACf,kBAAE,WAAW;AACb,kBAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI;sBAC3B,QAAQ,CAAC,eAAe;sBACxB,QAAQ,KAAK,UAAU;AACrB,0BAAE,WAAW,CAAC,UAAU,IAAI,WAAW;0BACrC,WAAW,CAAC;;;YAI1B,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,eAAe,CAAc,WAAW,CAAC,CAAC;;AAGhE,YAAA,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACtC,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;IAEO,YAAY,GAAA;QAChB,IAAI,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;;AAEjD,QAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;;AAGjD,QAAA,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;;AAGzC,QAAA;YACI,OAAO;YACP,OAAO;YACP,OAAO;YACP,OAAO;AACV,SAAA,CAAC,OAAO,CAAC,CAAC,UAAU,KAAI;YACrB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AAC3D,kBAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;kBACzD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAI,CAAA,EAAA,UAAU,CAAE,CAAA,CAAC,CAAC;AACtD,SAAC,CAAC,CAAC;;AAGH,QAAA,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACzC,WAAW,GAAG,SAAS,CAAC;KAC3B;;AAGO,IAAA,eAAe,CAAC,OAAoB,EAAA;AACxC,QAAA,IAAI,aAAa,CAAC;QAElB,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,gBAAgB,EAAE;;AAE/D,YAAA,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1F,SAAA;AAED,QAAA,OAAO,aAAa,CAAC;KACxB;AAEJ;;;;;;;;;;;;;;;;AClFO,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAC8F,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAGtB,EAAU,CAAA,UAAA,CAAA,QAAA,EAAA,SAAA,yDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA0B,CAAA,wBAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAF3G,EAE8G,CAAA,YAAA,EAAA,CAAA;IAC9G,EAAmC,CAAA,SAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IACrC,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAHF,EAA0C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1C,EAA0C,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,4BAAA,EAAA,CAAA,CAAA;AADC,IAAA,EAAA,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,2BAAA,EAAA,CAAiD,CAAA,cAAA,EAAA,MAAA,CAAA,4BAAA,EAAA,GAAA,MAAA,GAAA,OAAA,CAAA,CAAA;;;;;IAUhG,EAGoE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAFrB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,4DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,UAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAmB,CAAA,WAAA,CAAA,UAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAG1E,EAAM,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAiB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAC9B,EAEO,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACT,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IANJ,EAAuB,CAAA,UAAA,CAAA,OAAA,EAAA,UAAA,CAAA,MAAA,CAAA,CAAA;AAAiC,IAAA,EAAA,CAAA,WAAA,CAAA,WAAA,EAAA,OAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,CAAoD,CAAA,YAAA,EAAA,UAAA,CAAA,QAAA,GAAA,OAAA,CAAA,YAAA,CAAA,UAAA,CAAA,GAAA,IAAA,CAAA,CAAA;IAEtG,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,iBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,CAAA;IAErB,EAAwH,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxH,EAAwH,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,UAAA,CAAA,QAAA,KAAA,OAAA,CAAA,YAAA,CAAA,MAAA,EAAA,UAAA,CAAA,QAAA,KAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,CAAA,CAAA;;;AAG5H,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAEoE,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAC5D,EAAiB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAC9B,EACkI,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACpI,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IAL6D,EAAuB,CAAA,UAAA,CAAA,OAAA,EAAA,UAAA,CAAA,MAAA,CAAA,CAAA;IACxF,EAAiE,CAAA,WAAA,CAAA,YAAA,EAAA,UAAA,CAAA,QAAA,GAAA,OAAA,CAAA,YAAA,CAAA,UAAA,CAAA,GAAA,IAAA,CAAA,CAAA;IAC3D,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,iBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,CAAA;IAErB,EAAwH,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxH,EAAwH,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,UAAA,CAAA,QAAA,KAAA,OAAA,CAAA,YAAA,CAAA,MAAA,EAAA,UAAA,CAAA,QAAA,KAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,CAAA,CAAA;;;IAE5H,EACM,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;;;;IACN,EAG+D,CAAA,cAAA,CAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,CAAA;IAFlB,EAAW,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,8EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,YAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,6CAAiC,CAAA,CAAA,EAAA,CAAC,oLAE5E,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,MAAA,CAAwB,CAAA,CAFoD,EAAA,CAAA,CAAA;IAE3B,EAAc,CAAA,YAAA,EAAA,CAAA;;AAHhE,IAAA,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,KAAA,CAAmB,+BAAA,CAAA,kBAAA,EAAA,KAAA,CAAA,CAAA;;;;IAtBlC,EAGuF,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACrF,EAQM,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAMM,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EACM,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAG6E,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,CAAA;IAC/E,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IAxBJ,EAA8F,CAAA,sBAAA,CAAA,mEAAA,EAAA,UAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;IAD9F,EAAmC,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,UAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AAD2B,IAAA,EAAA,CAAA,WAAA,CAAA,OAAA,EAAA,UAAA,CAAA,KAAA,CAA2B,iCAAA,CAAA,cAAA,EAAA,YAAA,CAAA,CAAA;IAInF,EAA+D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/D,EAA+D,CAAA,UAAA,CAAA,MAAA,EAAA,UAAA,CAAA,QAAA,IAAA,UAAA,CAAA,QAAA,IAAA,OAAA,IAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAS/D,EAAkE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlE,EAAkE,CAAA,UAAA,CAAA,MAAA,EAAA,EAAA,UAAA,CAAA,QAAA,IAAA,UAAA,CAAA,QAAA,IAAA,OAAA,CAAA,IAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAOlE,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAEW,EAAqD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArD,EAAqD,CAAA,UAAA,CAAA,MAAA,EAAA,YAAA,KAAA,MAAA,CAAA,aAAA,CAAA,MAAA,GAAA,CAAA,IAAA,MAAA,CAAA,UAAA,CAAA,CAAA;;;IAmBzF,EACoB,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;;;IAD6C,EAA0B,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,cAAA,CAAA,CAAA;;;IAF7F,EACmE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IACjE,EACoB,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;IACpB,EAAuD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAM,CAAA,MAAA,CAAA,CAAA,EAAA,QAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;IACnE,EAA4C,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAyB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;IAHvD,EAA2C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3C,EAA2C,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,SAAA,IAAA,CAAA,MAAA,CAAA,uBAAA,CAAA,CAAA;IAGnB,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,iBAAA,CAAA,MAAA,CAAA,mBAAA,EAAA,CAAA,CAAA;;;IAgB3D,EAAwE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AACtE,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAkE,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAEpE,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IAFmB,EAAwC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxC,EAAwC,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;;;IAUnE,EAAgG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC9F,EAAoD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IAA1D,EAAoD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApD,EAAoD,CAAA,kBAAA,CAAA,GAAA,EAAA,OAAA,CAAA,kCAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;;;IAGpD,EAEO,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;;IADL,EAAoI,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,OAAA,CAAA,eAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,EAAA,CAAA,OAAA,CAAA,eAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA;;;IAEtI,EAAwC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IACtC,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IADL,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,gBAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAA;;;IACA,EAAuC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IACrC,EACiC,CAAA,SAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;IACnC,EAAO,CAAA,YAAA,EAAA,CAAA;;;;IAF2B,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAArC,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,OAAA,CAAA,mBAAA,CAAqC,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,CAAA;;;;IATzE,EAC2C,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAzC,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,mEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA8B,CAAA,gBAAA,CAAA,gBAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACxC,EAEO,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACP,EAEO,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACP,EAGO,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACT,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAVG,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,cAAA,CAAA,CAAA;IAGpB,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,mBAAA,CAAA,CAAA;IAG/B,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9B,EAA8B,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,mBAAA,CAAA,CAAA;;;;;;AAKvC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAGwF,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAGpF,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,oEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAqC,CAAA,eAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAGjD,EAAO,CAAA,YAAA,EAAA,CAAA;IACP,EAAyD,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC3D,EAAM,CAAA,YAAA,EAAA,CAAA;;;;AAT4B,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,KAAA,GAAA,EAAA,GAAA,CAAA,GAAA,IAAA,CAAA,CAA2D,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,WAAA,IAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA,CAAA;IAKzF,EAAoH,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApH,EAAoH,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,CAAA,CAAA,CAAA;AAFpH,IAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,GAAA,MAAA,GAAA,OAAA,CAAgE,CAAA,YAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,GAAA,OAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,KAAA,CAAA,QAAA,GAAA,OAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,KAAA,CAAA,MAAA,CAAA,CAAA;;;IAOpE,EAC8F,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AAC5F,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CACoB,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAEtB,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAJ4B,EAA2D,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,KAAA,GAAA,EAAA,GAAA,CAAA,GAAA,IAAA,CAAA,CAAA,CAAA;IACrD,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAf,IAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,IAAA,CAAe,CAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;;;;AAIvD,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAE0E,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAGpE,EAAU,CAAA,UAAA,CAAA,QAAA,EAAA,SAAA,sEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAmC,CAAA,qBAAA,CAAA,gBAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IADhD,EACmD,CAAA,YAAA,EAAA,CAAA;IACnD,EAAmC,CAAA,SAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;AACrC,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;;IAHmB,EAAwC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxC,EAAwC,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;;;IAMjE,EAC4E,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC1E,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IAFmB,EAAkD,CAAA,WAAA,CAAA,4BAAA,EAAA,OAAA,CAAA,aAAA,CAAA,CAAA;IACzE,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,gBAAA,CAAA,IAAA,GAAA,OAAA,CAAA,iBAAA,CAAA,gBAAA,CAAA,IAAA,EAAA,UAAA,CAAA,KAAA,CAAA,GAAA,GAAA,EAAA,GAAA,CAAA,CAAA;;;IAKE,EAEiC,CAAA,SAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;;;;;;AAD/B,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,UAAA,CAAA,YAAA,CAAgC,+BAAA,CAAA,UAAA,EAAA,YAAA,CAAA,CAAA;;;IALpC,EAGyB,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACvB,EAEiC,CAAA,UAAA,CAAA,CAAA,EAAA,8FAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;IACnC,EAAM,CAAA,YAAA,EAAA,CAAA;;;;AALJ,IAAA,EAAA,CAAA,WAAA,CAAA,4BAAA,EAAA,OAAA,CAAA,aAAA,CAAkD,CAAA,4BAAA,EAAA,OAAA,CAAA,aAAA,CAAA,CAAA;IAEjB,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,WAAA,CAAA,CAAA;;;IATzE,EAAgC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAC9B,EAGM,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAOM,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;IAZP,EAAiF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjF,EAAiF,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,UAAA,CAAA,YAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAA;IAKpF,EAAqG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArG,EAAqG,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,UAAA,CAAA,YAAA,CAAA,CAAA;;;;IArD5G,EAIiE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC/D,EAC4D,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC5D,EAYM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAWM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAKM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAQM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAae,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjB,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;;IA1DJ,EAAiE,CAAA,sBAAA,CAAA,sCAAA,EAAA,UAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AAFjE,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,OAAA,CAAA,iBAAA,CAAA,UAAA,CAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAsJ,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,UAAA,CAAA,QAAA,GAAA,IAAA,CAAA,CAAA,CAAA;IAGtJ,EAA8D,CAAA,WAAA,CAAA,UAAA,EAAA,OAAA,CAAA,qBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA;IACC,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,iBAAA,CAAA,UAAA,CAAA,CAAA,CAAA;IAExF,EAA0E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1E,EAA0E,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,IAAA,YAAA,KAAA,CAAA,CAAA,CAAA;IAc7E,EAAoG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApG,EAAoG,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,QAAA,IAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,MAAA,IAAA,YAAA,KAAA,CAAA,CAAA,CAAA;IAWjG,EAAmG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnG,EAAmG,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,QAAA,IAAA,gBAAA,CAAA,IAAA,CAAA,MAAA,IAAA,YAAA,KAAA,CAAA,CAAA,CAAA;IAOtG,EAAiH,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjH,EAAiH,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,UAAA,IAAA,OAAA,CAAA,aAAA,KAAA,UAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,QAAA,IAAA,YAAA,IAAA,CAAA,CAAA,CAAA;IAQrG,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,QAAA,CAAA,CAAA;;;IA/DpC,EAMqD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAI7C,EAGM,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AACR,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;IAER,EA6DM,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AACR,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;;IA5EN,EAAkF,CAAA,WAAA,CAAA,sBAAA,EAAA,gBAAA,CAAA,KAAA,KAAA,MAAA,CAAA,0BAAA,EAAA,CAAA,CAAA,wBAAA,EAAA,gBAAA,CAAA,KAAA,KAAA,MAAA,CAAA,0BAAA,EAAA,IAAA,MAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,sBAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,MAAA,CAAA,oBAAA,CAAA,SAAA,CAAA,CAAA,wBAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,MAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAA,aAAA,EAAA,MAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;IAQtE,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAMH,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA;;;;AAwFxC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CACqD,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAIN,EAAU,CAAA,UAAA,CAAA,QAAA,EAAA,SAAA,gEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAmC,CAAA,qBAAA,CAAA,gBAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAFzF,EAE4F,CAAA,YAAA,EAAA,CAAA;IAC5F,EAAmC,CAAA,SAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;AACrC,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;;IANN,EAAkD,CAAA,WAAA,CAAA,4BAAA,EAAA,OAAA,CAAA,aAAA,CAAA,CAAA;IAI9C,EAAwC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxC,EAAwC,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;AAFnB,IAAA,EAAA,CAAA,WAAA,CAAA,cAAA,EAAA,OAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,MAAA,GAAA,OAAA,CAAiE,CAAA,iBAAA,EAAA,OAAA,CAAA,KAAA,CAAA,eAAA,GAAA,gBAAA,CAAA,KAAA,CAAA,CAAA;;;IAa5F,EAAgG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC9F,EAAoD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IAA1D,EAAoD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApD,EAAoD,CAAA,kBAAA,CAAA,GAAA,EAAA,OAAA,CAAA,kCAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;;IAGpD,EAEO,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;;IADL,EAAoI,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,OAAA,CAAA,eAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,EAAA,CAAA,OAAA,CAAA,eAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA;;;IAEtI,EAAwC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IACtC,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IADL,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,gBAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAA;;;IACA,EAAuC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IACrC,EACiC,CAAA,SAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;IACnC,EAAO,CAAA,YAAA,EAAA,CAAA;;;;IAF2B,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAArC,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,QAAA,CAAA,mBAAA,CAAqC,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,CAAA;;;;IATzE,EACyF,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAvF,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,mEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAA8B,CAAA,gBAAA,CAAA,gBAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACxC,EAEO,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACP,EAEO,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACP,EAGO,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACT,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IAXqC,EAA6C,CAAA,UAAA,CAAA,IAAA,EAAA,OAAA,CAAA,gBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;IAC/E,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,cAAA,CAAA,CAAA;IAGpB,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,mBAAA,CAAA,CAAA;IAG/B,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9B,EAA8B,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,mBAAA,CAAA,CAAA;;;;AAKvC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAGwF,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAGpF,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,oEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAAqC,CAAA,eAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAGjD,EAAO,CAAA,YAAA,EAAA,CAAA;IACP,EAAyD,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC3D,EAAM,CAAA,YAAA,EAAA,CAAA;;;;AAT4B,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,KAAA,GAAA,EAAA,GAAA,CAAA,GAAA,IAAA,CAAA,CAA2D,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,WAAA,IAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA,CAAA;IAKzF,EAAoH,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApH,EAAoH,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,CAAA,CAAA,CAAA;AAFpH,IAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,GAAA,MAAA,GAAA,OAAA,CAAgE,CAAA,YAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,GAAA,OAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,KAAA,CAAA,QAAA,GAAA,OAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,KAAA,CAAA,MAAA,CAAA,CAAA;;;IAOpE,EAC8F,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AAC5F,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CACoB,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAEtB,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAJ4B,EAA2D,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,KAAA,GAAA,EAAA,GAAA,CAAA,GAAA,IAAA,CAAA,CAAA,CAAA;IACrD,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAf,IAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,IAAA,CAAe,CAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;;;;AAIvD,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAE0E,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAI3B,EAAU,CAAA,UAAA,CAAA,QAAA,EAAA,SAAA,sEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAAmC,CAAA,qBAAA,CAAA,gBAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAFzF,EAE4F,CAAA,YAAA,EAAA,CAAA;IAC5F,EAAmC,CAAA,SAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;AACrC,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;;IAFF,EAAwC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxC,EAAwC,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;AAFnB,IAAA,EAAA,CAAA,WAAA,CAAA,cAAA,EAAA,OAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,MAAA,GAAA,OAAA,CAAiE,CAAA,iBAAA,EAAA,OAAA,CAAA,KAAA,CAAA,eAAA,GAAA,gBAAA,CAAA,KAAA,CAAA,CAAA;;;IAO1F,EAEqG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACnG,EAA2E,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IAF1D,EAAkD,CAAA,WAAA,CAAA,4BAAA,EAAA,QAAA,CAAA,aAAA,CAAA,CAAA;AACzE,IAAA,EAAA,CAAA,UAAA,CAAA,IAAA,EAAA,QAAA,CAAA,gBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAA6C,CAAA,OAAA,EAAA,QAAA,CAAA,oBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;IAC7C,EAA2E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3E,EAA2E,CAAA,kBAAA,CAAA,GAAA,EAAA,gBAAA,CAAA,IAAA,GAAA,QAAA,CAAA,iBAAA,CAAA,gBAAA,CAAA,IAAA,EAAA,UAAA,CAAA,KAAA,CAAA,GAAA,GAAA,EAAA,EAAA,CAAA,CAAA;;;IAM3E,EAEiC,CAAA,SAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;;;;;;AAD/B,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,UAAA,CAAA,YAAA,CAAgC,+BAAA,CAAA,UAAA,EAAA,YAAA,CAAA,CAAA;;;IANpC,EAIuD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACrD,EAEiC,CAAA,UAAA,CAAA,CAAA,EAAA,8FAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;IACnC,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;AANmB,IAAA,EAAA,CAAA,WAAA,CAAA,4BAAA,EAAA,QAAA,CAAA,aAAA,CAAkD,CAAA,4BAAA,EAAA,QAAA,CAAA,aAAA,CAAA,CAAA;AACtB,IAAA,EAAA,CAAA,UAAA,CAAA,IAAA,EAAA,QAAA,CAAA,gBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAA6C,CAAA,OAAA,EAAA,QAAA,CAAA,oBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;IAE/D,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,WAAA,CAAA,CAAA;;;IAVzE,EAAgC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAC9B,EAGmF,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACnF,EAQM,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;IAbP,EAAiF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjF,EAAiF,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,UAAA,CAAA,YAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAA;IAKpF,EAAqG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArG,EAAqG,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,UAAA,CAAA,YAAA,CAAA,CAAA;;;IAUxG,EAC8E,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC5E,EAAmF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IADlE,EAAoD,CAAA,UAAA,CAAA,OAAA,EAAA,QAAA,CAAA,oBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;IAC3E,EAAmF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnF,EAAmF,CAAA,kBAAA,CAAA,GAAA,EAAA,gBAAA,CAAA,IAAA,GAAA,QAAA,CAAA,iBAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,OAAA,EAAA,UAAA,CAAA,KAAA,CAAA,GAAA,GAAA,EAAA,EAAA,CAAA,CAAA;;;IAInF,EAEiC,CAAA,SAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;;;;;;IAFsC,EAA6B,CAAA,UAAA,CAAA,cAAA,EAAA,gBAAA,CAAA,CAAA,UAAA,EAAA,UAAA,CAAA,gBAAA,CAAA,uCAAA,CAAA,UAAA,EAAA,YAAA,CAAA,CAAA;;;IAHtG,EAE8E,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC5E,EAEiC,CAAA,UAAA,CAAA,CAAA,EAAA,8FAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;IACnC,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IAJmB,EAAoD,CAAA,UAAA,CAAA,OAAA,EAAA,QAAA,CAAA,oBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;IAC1C,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,WAAA,CAAA,CAAA;;;IAPzE,EAA2D,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACzD,EAE2F,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC3F,EAMM,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;IAVP,EAAqF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArF,EAAqF,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,UAAA,CAAA,gBAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAA;IAIxF,EAAyG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzG,EAAyG,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,UAAA,CAAA,gBAAA,CAAA,CAAA;;;IAS1G,EAC8E,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC5E,EAAmF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IADlE,EAAoD,CAAA,UAAA,CAAA,OAAA,EAAA,QAAA,CAAA,oBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;IAC3E,EAAmF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnF,EAAmF,CAAA,kBAAA,CAAA,GAAA,EAAA,gBAAA,CAAA,IAAA,GAAA,QAAA,CAAA,iBAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,OAAA,EAAA,UAAA,CAAA,KAAA,CAAA,GAAA,GAAA,EAAA,EAAA,CAAA,CAAA;;;IAInF,EAEiC,CAAA,SAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;;;;;;AAD/B,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,UAAA,CAAA,gBAAA,CAAoC,uCAAA,CAAA,UAAA,EAAA,YAAA,CAAA,CAAA;;;IAJxC,EAE8E,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC5E,EAEiC,CAAA,UAAA,CAAA,CAAA,EAAA,6GAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;IACnC,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IAJmB,EAAoD,CAAA,UAAA,CAAA,OAAA,EAAA,QAAA,CAAA,oBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;IAC1C,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,WAAA,CAAA,CAAA;;;IAPzE,EAAuD,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACrD,EAE2F,CAAA,UAAA,CAAA,CAAA,EAAA,4EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC3F,EAMM,CAAA,UAAA,CAAA,CAAA,EAAA,4EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;IAVP,EAAqF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArF,EAAqF,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,UAAA,CAAA,gBAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,QAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAA;IAIxF,EAAyG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzG,EAAyG,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,IAAA,QAAA,CAAA,oBAAA,CAAA,WAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,UAAA,CAAA,gBAAA,CAAA,CAAA;;;;IAS5G,EAI0E,CAAA,cAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;IADxE,EAAmB,CAAA,UAAA,CAAA,iBAAA,EAAA,SAAA,wJAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,UAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,mFAAkE,CAAA,CAAA,EAAA,CAAC,8PACvE,EAAA,CAAA,WAAA,CAAA,QAAA,CAAA,qBAAA,CAAA,MAAA,CAAA,YAAA,EAAA,MAAA,CAAA,KAAA,CAAuD,CAAA,CADgB,EAAA,CAAA,CAAA;IAExF,EAAiC,CAAA,YAAA,EAAA,CAAA;;;;;;IAJ/B,EAAoC,CAAA,UAAA,CAAA,UAAA,EAAA,UAAA,CAAA,gBAAA,CAAA,CAAA,OAAA,EAAA,UAAA,CAAA,KAAA,CAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,OAAA,CAAA,CAAA,UAAA,EAAA,YAAA,CAAA,CAAA,cAAA,EAAA,gBAAA,CAAA,CAAA;;;IAHxC,EACuD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACrD,EAKiC,CAAA,UAAA,CAAA,CAAA,EAAA,8FAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;IACnC,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IAPJ,EAAoD,CAAA,UAAA,CAAA,OAAA,EAAA,QAAA,CAAA,oBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;IACnB,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,WAAA,CAAA,CAAA;;;IAfzE,EAA0D,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACxD,EAWe,CAAA,UAAA,CAAA,CAAA,EAAA,sEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACf,EAQM,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;IArBE,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,iBAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;IAY/C,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArC,EAAqC,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,iBAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;;;IAzF/C,EAKiE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC/D,EAC4D,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC5D,EAYM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAWM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAKM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EASM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAce,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACf,EAWe,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACf,EAsBe,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjB,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;;IAhGJ,EAAiE,CAAA,sBAAA,CAAA,sCAAA,EAAA,UAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AAFjE,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,OAAA,CAAA,iBAAA,CAAA,UAAA,CAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAsJ,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,UAAA,CAAA,QAAA,GAAA,IAAA,CAAA,CAAA,CAAA;AAGtJ,IAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,KAAA,GAAA,CAAA,CAA2C,CAAA,UAAA,EAAA,OAAA,CAAA,qBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA;IAEoB,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,iBAAA,CAAA,UAAA,CAAA,CAAA,CAAA;IAExF,EAA0E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1E,EAA0E,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,IAAA,YAAA,KAAA,CAAA,CAAA,CAAA;IAc7E,EAAoG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApG,EAAoG,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,QAAA,IAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,MAAA,IAAA,YAAA,KAAA,CAAA,CAAA,CAAA;IAWjG,EAAmG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnG,EAAmG,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,QAAA,IAAA,gBAAA,CAAA,IAAA,CAAA,MAAA,IAAA,YAAA,KAAA,CAAA,CAAA,CAAA;IAOtG,EAAiH,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjH,EAAiH,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,UAAA,IAAA,OAAA,CAAA,aAAA,KAAA,UAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,QAAA,IAAA,YAAA,IAAA,CAAA,CAAA,CAAA;IASrG,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,QAAA,CAAA,CAAA;IAef,EAA0C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1C,EAA0C,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,QAAA,IAAA,CAAA,UAAA,CAAA,gBAAA,CAAA,CAAA;IAY1C,EAAyC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzC,EAAyC,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,QAAA,IAAA,UAAA,CAAA,gBAAA,CAAA,CAAA;;;IA8BtD,EAAwE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IACtE,EAAkF,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,GAAA,CAAA,CAAA;IACpF,EAAM,CAAA,YAAA,EAAA,CAAA;;;IADkB,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,UAAA,CAAA,OAAA,EAAA,yBAAA,CAAA,KAAA,CAAA,CAAA;;;AANlE,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAA+E,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAKzE,EAEM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AACR,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,EAAA,CAAA;;;;IANN,EAAwE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAxE,IAAA,EAAA,CAAA,WAAA,CAAA,MAAA,EAAA,OAAA,CAAA,aAAA,KAAA,UAAA,GAAA,UAAA,GAAA,cAAA,CAAwE,CAAA,UAAA,EAAA,OAAA,CAAA,aAAA,KAAA,UAAA,GAAA,GAAA,GAAA,WAAA,CAAA,CAAA;IAGhC,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,UAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,gBAAA,CAAA,CAAA;;;;IAzI9E,EAiB0F,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAhBxF,EAAW,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,yDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,sCAA6B,CAAA,CAAA,EAAA,CAAC,0JAAU,EAAA,CAAA,WAAA,CAAA,QAAA,CAAA,mBAAA,CAAA,MAAA,CAA2B,CAAA,CAAA,EAAA,CAArC,CAC1B,aAAA,EAAA,SAAA,6DAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAAA,CAAA,sBAAA,GAAyB,6CAAgC,GAAG,IAAI,CAAA,CAAA,EAAA,CADtC,CAEhC,OAAA,EAAA,SAAA,uDAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,6CAAgC,CAAA,CAAA,EAAA,CAFA,CAU6B,UAAA,EAAA,SAAA,0DAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAAmC,CAAA,cAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,CAAA,IAVhE,CAWhC,OAAA,EAAA,SAAA,uDAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,uDAA0C,CAAA,CAAA,EAAA,CAXV,kOAWuB,EAAA,CAAA,WAAA,CAAA,QAAA,CAAA,oBAAA,CAAA,MAAA,EAAA,gBAAA,CAA0C,CAAA,CAAA,EAAA,CAXjE,CAY7B,UAAA,EAAA,SAAA,0DAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,uDAA0C,CAAA,CAAA,EAAA,CAZb,CAc3B,YAAA,EAAA,SAAA,4DAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAAoC,CAAA,sBAAA,CAAA,gBAAA,CAAA,CAAA,IAdT,CAcyB,YAAA,EAAA,SAAA,4DAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAAsC,CAAA,wBAAA,CAAA,gBAAA,CAAA,CAAA,CAd/D,EAAA,CAAA,CAAA;AAiBzC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAqD,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAGjD,EAQM,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAmGM,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAUM,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAM,CAAA,YAAA,EAAA,CAAA;;;;AA3IJ,IAAA,EAAA,CAAA,WAAA,CAAA,sBAAA,EAAA,gBAAA,CAAA,KAAA,KAAA,OAAA,CAAA,0BAAA,EAAA,CAAkF,0EAAA,CAAA,sBAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,SAAA,CAAA,CAAA,wBAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAA,aAAA,EAAA,OAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,wBAAA,EAAA,OAAA,CAAA,QAAA,CAAA,0EAAA,CAAA,6BAAA,EAAA,gBAAA,IAAA,IAAA,GAAA,IAAA,GAAA,gBAAA,CAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,CAAA,CAAA;AAOlF,IAAA,EAAA,CAAA,WAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,KAAA,IAAA,CAAA,GAAA,CAAA,GAAA,SAAA,CAAyD,CAAA,0BAAA,EAAA,gBAAA,CAAA,KAAA,CAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,KAAA,GAAA,CAAA,CAAA,CAAA,eAAA,EAAA,OAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,MAAA,GAAA,OAAA,CAAA,CAAA,eAAA,EAAA,OAAA,CAAA,6BAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,YAAA,EAAA,OAAA,CAAA,UAAA,IAAA,gBAAA,CAAA,KAAA,GAAA,gBAAA,CAAA,KAAA,GAAA,CAAA,GAAA,SAAA,CAAA,CAAA;IASrD,EAAuE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvE,EAAuE,CAAA,WAAA,CAAA,MAAA,EAAA,OAAA,CAAA,aAAA,KAAA,UAAA,GAAA,UAAA,GAAA,cAAA,CAAA,CAAA;IACjE,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,UAAA,CAAA,CAAA;IAUD,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,aAAA,CAAA,CAAA;IAqGtC,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,kBAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;;;;IAmBlD,EAC4G,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;IAAnE,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAA2C,CAAA,mCAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAAc,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAEpH,EACmF,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,GAAA,CAAA,CAAA;IACjF,EAAwE,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,GAAA,CAAA,CAAA;IAC1E,EAAM,CAAA,YAAA,EAAA,CAAA;;IADe,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,UAAA,CAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;;;;;;AAzS/C,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAC8F,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAGtB,EAAU,CAAA,UAAA,CAAA,QAAA,EAAA,SAAA,yDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA0B,CAAA,wBAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAF3G,EAE8G,CAAA,YAAA,EAAA,CAAA;IAC9G,EAAmC,CAAA,SAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IACrC,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAHF,EAA0C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1C,EAA0C,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,4BAAA,EAAA,CAAA,CAAA;AADC,IAAA,EAAA,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,2BAAA,EAAA,CAAiD,CAAA,cAAA,EAAA,MAAA,CAAA,4BAAA,EAAA,GAAA,MAAA,GAAA,OAAA,CAAA,CAAA;;;;IAUhG,EAGoE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAFrB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,4DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,UAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAmB,CAAA,WAAA,CAAA,UAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAG1E,EAAM,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAiB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAC9B,EAEO,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACT,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IANJ,EAAuB,CAAA,UAAA,CAAA,OAAA,EAAA,UAAA,CAAA,MAAA,CAAA,CAAA;AAAiC,IAAA,EAAA,CAAA,WAAA,CAAA,WAAA,EAAA,OAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,CAAoD,CAAA,YAAA,EAAA,UAAA,CAAA,QAAA,GAAA,OAAA,CAAA,YAAA,CAAA,UAAA,CAAA,GAAA,IAAA,CAAA,CAAA;IAEtG,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,iBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,CAAA;IAErB,EAAwH,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxH,EAAwH,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,UAAA,CAAA,QAAA,KAAA,OAAA,CAAA,YAAA,CAAA,MAAA,EAAA,UAAA,CAAA,QAAA,KAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,CAAA,CAAA;;;AAG5H,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAEoE,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAC5D,EAAiB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAC9B,EACkI,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACpI,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IAL6D,EAAuB,CAAA,UAAA,CAAA,OAAA,EAAA,UAAA,CAAA,MAAA,CAAA,CAAA;IACxF,EAAiE,CAAA,WAAA,CAAA,YAAA,EAAA,UAAA,CAAA,QAAA,GAAA,OAAA,CAAA,YAAA,CAAA,UAAA,CAAA,GAAA,IAAA,CAAA,CAAA;IAC3D,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,iBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,CAAA;IAErB,EAAwH,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxH,EAAwH,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,UAAA,CAAA,QAAA,KAAA,OAAA,CAAA,YAAA,CAAA,MAAA,EAAA,UAAA,CAAA,QAAA,KAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,CAAA,CAAA;;;IAE5H,EACM,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;;;;IACN,EAG+D,CAAA,cAAA,CAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,CAAA;IAFlB,EAAW,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,8EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,YAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,6CAAiC,CAAA,CAAA,EAAA,CAAC,oLAE5E,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,MAAA,CAAwB,CAAA,CAFoD,EAAA,CAAA,CAAA;IAE3B,EAAc,CAAA,YAAA,EAAA,CAAA;;AAHhE,IAAA,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,KAAA,CAAmB,+BAAA,CAAA,kBAAA,EAAA,KAAA,CAAA,CAAA;;;IAtBlC,EAGuF,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACrF,EAQM,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAMM,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EACM,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAG6E,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,CAAA;IAC/E,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IAxBJ,EAA8F,CAAA,sBAAA,CAAA,mEAAA,EAAA,UAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;IAD9F,EAAmC,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,UAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AAD2B,IAAA,EAAA,CAAA,WAAA,CAAA,OAAA,EAAA,UAAA,CAAA,KAAA,CAA2B,iCAAA,CAAA,cAAA,EAAA,YAAA,CAAA,CAAA;IAInF,EAA+D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/D,EAA+D,CAAA,UAAA,CAAA,MAAA,EAAA,UAAA,CAAA,QAAA,IAAA,UAAA,CAAA,QAAA,IAAA,OAAA,IAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAS/D,EAAkE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlE,EAAkE,CAAA,UAAA,CAAA,MAAA,EAAA,EAAA,UAAA,CAAA,QAAA,IAAA,UAAA,CAAA,QAAA,IAAA,OAAA,CAAA,IAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAOlE,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAEW,EAAqD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArD,EAAqD,CAAA,UAAA,CAAA,MAAA,EAAA,YAAA,KAAA,MAAA,CAAA,aAAA,CAAA,MAAA,GAAA,CAAA,IAAA,MAAA,CAAA,UAAA,CAAA,CAAA;;;IAmBzF,EACoB,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;;;IAD6C,EAA0B,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,cAAA,CAAA,CAAA;;;IAF7F,EACmE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IACjE,EACoB,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;IACpB,EAAuD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAM,CAAA,MAAA,CAAA,CAAA,EAAA,QAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;IACnE,EAA4C,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAyB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;IAHvD,EAA2C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3C,EAA2C,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,SAAA,IAAA,CAAA,MAAA,CAAA,uBAAA,CAAA,CAAA;IAGnB,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,iBAAA,CAAA,MAAA,CAAA,mBAAA,EAAA,CAAA,CAAA;;;IAgB3D,EAAwE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AACtE,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAkE,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAEpE,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IAFmB,EAAwC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxC,EAAwC,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;;;IAUnE,EAAgG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC9F,EAAoD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IAA1D,EAAoD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApD,EAAoD,CAAA,kBAAA,CAAA,GAAA,EAAA,OAAA,CAAA,kCAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;;IAGpD,EAEO,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;;IADL,EAAoI,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,OAAA,CAAA,eAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,EAAA,CAAA,OAAA,CAAA,eAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA;;;IAEtI,EAAwC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IACtC,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IADL,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,gBAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAA;;;IACA,EAAuC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IACrC,EACiC,CAAA,SAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;IACnC,EAAO,CAAA,YAAA,EAAA,CAAA;;;;IAF2B,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAArC,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,OAAA,CAAA,mBAAA,CAAqC,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,CAAA;;;;IATzE,EAC2C,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAzC,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,mEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA8B,CAAA,gBAAA,CAAA,gBAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACxC,EAEO,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACP,EAEO,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACP,EAGO,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACT,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAVG,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,cAAA,CAAA,CAAA;IAGpB,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,mBAAA,CAAA,CAAA;IAG/B,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9B,EAA8B,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,mBAAA,CAAA,CAAA;;;;AAKvC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAGwF,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAGpF,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,oEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAqC,CAAA,eAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAGjD,EAAO,CAAA,YAAA,EAAA,CAAA;IACP,EAAyD,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC3D,EAAM,CAAA,YAAA,EAAA,CAAA;;;;AAT4B,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,KAAA,GAAA,EAAA,GAAA,CAAA,GAAA,IAAA,CAAA,CAA2D,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,WAAA,IAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA,CAAA;IAKzF,EAAoH,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApH,EAAoH,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,CAAA,CAAA,CAAA;AAFpH,IAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,GAAA,MAAA,GAAA,OAAA,CAAgE,CAAA,YAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,GAAA,OAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,KAAA,CAAA,QAAA,GAAA,OAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,KAAA,CAAA,MAAA,CAAA,CAAA;;;IAOpE,EAC8F,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AAC5F,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CACoB,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAEtB,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAJ4B,EAA2D,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,KAAA,GAAA,EAAA,GAAA,CAAA,GAAA,IAAA,CAAA,CAAA,CAAA;IACrD,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAf,IAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,IAAA,CAAe,CAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;;;;AAIvD,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAE0E,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAGpE,EAAU,CAAA,UAAA,CAAA,QAAA,EAAA,SAAA,sEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAmC,CAAA,qBAAA,CAAA,gBAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IADhD,EACmD,CAAA,YAAA,EAAA,CAAA;IACnD,EAAmC,CAAA,SAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;AACrC,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;;IAHmB,EAAwC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxC,EAAwC,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;;;IAMjE,EAC4E,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC1E,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IAFmB,EAAkD,CAAA,WAAA,CAAA,4BAAA,EAAA,OAAA,CAAA,aAAA,CAAA,CAAA;IACzE,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,gBAAA,CAAA,IAAA,GAAA,OAAA,CAAA,iBAAA,CAAA,gBAAA,CAAA,IAAA,EAAA,UAAA,CAAA,KAAA,CAAA,GAAA,GAAA,EAAA,GAAA,CAAA,CAAA;;;IAKE,EAEiC,CAAA,SAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;;;;;;AAD/B,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,UAAA,CAAA,YAAA,CAAgC,+BAAA,CAAA,UAAA,EAAA,YAAA,CAAA,CAAA;;;IALpC,EAGyB,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACvB,EAEiC,CAAA,UAAA,CAAA,CAAA,EAAA,8FAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;IACnC,EAAM,CAAA,YAAA,EAAA,CAAA;;;;AALJ,IAAA,EAAA,CAAA,WAAA,CAAA,4BAAA,EAAA,OAAA,CAAA,aAAA,CAAkD,CAAA,4BAAA,EAAA,OAAA,CAAA,aAAA,CAAA,CAAA;IAEjB,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,WAAA,CAAA,CAAA;;;IATzE,EAAgC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAC9B,EAGM,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAOM,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;IAZP,EAAiF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjF,EAAiF,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,UAAA,CAAA,YAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAA;IAKpF,EAAqG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArG,EAAqG,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,UAAA,CAAA,YAAA,CAAA,CAAA;;;IArD5G,EAIiE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC/D,EAC4D,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC5D,EAYM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAWM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAKM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAQM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAae,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjB,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;;IA1DJ,EAAiE,CAAA,sBAAA,CAAA,sCAAA,EAAA,UAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AAFjE,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,OAAA,CAAA,iBAAA,CAAA,UAAA,CAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAsJ,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,UAAA,CAAA,QAAA,GAAA,IAAA,CAAA,CAAA,CAAA;IAGtJ,EAA8D,CAAA,WAAA,CAAA,UAAA,EAAA,OAAA,CAAA,qBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA;IACC,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,iBAAA,CAAA,UAAA,CAAA,CAAA,CAAA;IAExF,EAA0E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1E,EAA0E,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,IAAA,YAAA,KAAA,CAAA,CAAA,CAAA;IAc7E,EAAoG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApG,EAAoG,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,QAAA,IAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,MAAA,IAAA,YAAA,KAAA,CAAA,CAAA,CAAA;IAWjG,EAAmG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnG,EAAmG,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,QAAA,IAAA,gBAAA,CAAA,IAAA,CAAA,MAAA,IAAA,YAAA,KAAA,CAAA,CAAA,CAAA;IAOtG,EAAiH,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjH,EAAiH,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,UAAA,IAAA,OAAA,CAAA,aAAA,KAAA,UAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,QAAA,IAAA,YAAA,IAAA,CAAA,CAAA,CAAA;IAQrG,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,QAAA,CAAA,CAAA;;;IA/DpC,EAMqD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAI7C,EAGM,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AACR,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;IAER,EA6DM,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AACR,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;;IA5EN,EAAkF,CAAA,WAAA,CAAA,sBAAA,EAAA,gBAAA,CAAA,KAAA,KAAA,MAAA,CAAA,0BAAA,EAAA,CAAA,CAAA,wBAAA,EAAA,gBAAA,CAAA,KAAA,KAAA,MAAA,CAAA,0BAAA,EAAA,IAAA,MAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,sBAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,MAAA,CAAA,oBAAA,CAAA,SAAA,CAAA,CAAA,wBAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,MAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAA,aAAA,EAAA,MAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;IAQtE,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAMH,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA;;;;AAwFxC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CACqD,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAIN,EAAU,CAAA,UAAA,CAAA,QAAA,EAAA,SAAA,gEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAmC,CAAA,qBAAA,CAAA,gBAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAFzF,EAE4F,CAAA,YAAA,EAAA,CAAA;IAC5F,EAAmC,CAAA,SAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;AACrC,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;;IANN,EAAkD,CAAA,WAAA,CAAA,4BAAA,EAAA,OAAA,CAAA,aAAA,CAAA,CAAA;IAI9C,EAAwC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxC,EAAwC,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;AAFnB,IAAA,EAAA,CAAA,WAAA,CAAA,cAAA,EAAA,OAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,MAAA,GAAA,OAAA,CAAiE,CAAA,iBAAA,EAAA,OAAA,CAAA,KAAA,CAAA,eAAA,GAAA,gBAAA,CAAA,KAAA,CAAA,CAAA;;;IAa5F,EAAgG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC9F,EAAoD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IAA1D,EAAoD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApD,EAAoD,CAAA,kBAAA,CAAA,GAAA,EAAA,OAAA,CAAA,kCAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;;IAGpD,EAEO,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;;IADL,EAAoI,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,OAAA,CAAA,eAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,EAAA,CAAA,OAAA,CAAA,eAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA;;;IAEtI,EAAwC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IACtC,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IADL,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,gBAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAA;;;IACA,EAAuC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IACrC,EACiC,CAAA,SAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;IACnC,EAAO,CAAA,YAAA,EAAA,CAAA;;;;IAF2B,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAArC,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,QAAA,CAAA,mBAAA,CAAqC,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,CAAA;;;;IATzE,EACyF,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAvF,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,mEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAA8B,CAAA,gBAAA,CAAA,gBAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACxC,EAEO,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACP,EAEO,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACP,EAGO,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACT,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IAXqC,EAA6C,CAAA,UAAA,CAAA,IAAA,EAAA,OAAA,CAAA,gBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;IAC/E,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,cAAA,CAAA,CAAA;IAGpB,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,mBAAA,CAAA,CAAA;IAG/B,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9B,EAA8B,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,mBAAA,CAAA,CAAA;;;;AAKvC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAGwF,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAGpF,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,oEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAAqC,CAAA,eAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAGjD,EAAO,CAAA,YAAA,EAAA,CAAA;IACP,EAAyD,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC3D,EAAM,CAAA,YAAA,EAAA,CAAA;;;;AAT4B,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,KAAA,GAAA,EAAA,GAAA,CAAA,GAAA,IAAA,CAAA,CAA2D,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,WAAA,IAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA,CAAA;IAKzF,EAAoH,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApH,EAAoH,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,CAAA,CAAA,CAAA;AAFpH,IAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,GAAA,MAAA,GAAA,OAAA,CAAgE,CAAA,YAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,GAAA,OAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,KAAA,CAAA,QAAA,GAAA,OAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,SAAA,CAAA,IAAA,CAAA,KAAA,CAAA,MAAA,CAAA,CAAA;;;IAOpE,EAC8F,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AAC5F,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CACoB,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAEtB,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAJ4B,EAA2D,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,KAAA,GAAA,EAAA,GAAA,CAAA,GAAA,IAAA,CAAA,CAAA,CAAA;IACrD,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAf,IAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,IAAA,CAAe,CAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;;;;AAIvD,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAE0E,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAI3B,EAAU,CAAA,UAAA,CAAA,QAAA,EAAA,SAAA,sEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAAmC,CAAA,qBAAA,CAAA,gBAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAFzF,EAE4F,CAAA,YAAA,EAAA,CAAA;IAC5F,EAAmC,CAAA,SAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;AACrC,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;;IAFF,EAAwC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxC,EAAwC,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;AAFnB,IAAA,EAAA,CAAA,WAAA,CAAA,cAAA,EAAA,OAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,MAAA,GAAA,OAAA,CAAiE,CAAA,iBAAA,EAAA,OAAA,CAAA,KAAA,CAAA,eAAA,GAAA,gBAAA,CAAA,KAAA,CAAA,CAAA;;;IAO1F,EAEqG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACnG,EAA2E,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IAF1D,EAAkD,CAAA,WAAA,CAAA,4BAAA,EAAA,QAAA,CAAA,aAAA,CAAA,CAAA;AACzE,IAAA,EAAA,CAAA,UAAA,CAAA,IAAA,EAAA,QAAA,CAAA,gBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAA6C,CAAA,OAAA,EAAA,QAAA,CAAA,oBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;IAC7C,EAA2E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3E,EAA2E,CAAA,kBAAA,CAAA,GAAA,EAAA,gBAAA,CAAA,IAAA,GAAA,QAAA,CAAA,iBAAA,CAAA,gBAAA,CAAA,IAAA,EAAA,UAAA,CAAA,KAAA,CAAA,GAAA,GAAA,EAAA,EAAA,CAAA,CAAA;;;IAM3E,EAEiC,CAAA,SAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;;;;;;AAD/B,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,UAAA,CAAA,YAAA,CAAgC,+BAAA,CAAA,UAAA,EAAA,YAAA,CAAA,CAAA;;;IANpC,EAIuD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACrD,EAEiC,CAAA,UAAA,CAAA,CAAA,EAAA,8FAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;IACnC,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;AANmB,IAAA,EAAA,CAAA,WAAA,CAAA,4BAAA,EAAA,QAAA,CAAA,aAAA,CAAkD,CAAA,4BAAA,EAAA,QAAA,CAAA,aAAA,CAAA,CAAA;AACtB,IAAA,EAAA,CAAA,UAAA,CAAA,IAAA,EAAA,QAAA,CAAA,gBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAA6C,CAAA,OAAA,EAAA,QAAA,CAAA,oBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;IAE/D,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,WAAA,CAAA,CAAA;;;IAVzE,EAAgC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAC9B,EAGmF,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACnF,EAQM,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;IAbP,EAAiF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjF,EAAiF,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,UAAA,CAAA,YAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAA;IAKpF,EAAqG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArG,EAAqG,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,UAAA,CAAA,YAAA,CAAA,CAAA;;;IAUxG,EAC8E,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC5E,EAAmF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IADlE,EAAoD,CAAA,UAAA,CAAA,OAAA,EAAA,QAAA,CAAA,oBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;IAC3E,EAAmF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnF,EAAmF,CAAA,kBAAA,CAAA,GAAA,EAAA,gBAAA,CAAA,IAAA,GAAA,QAAA,CAAA,iBAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,OAAA,EAAA,UAAA,CAAA,KAAA,CAAA,GAAA,GAAA,EAAA,EAAA,CAAA,CAAA;;;IAInF,EAEiC,CAAA,SAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;;;;;;IAFsC,EAA6B,CAAA,UAAA,CAAA,cAAA,EAAA,gBAAA,CAAA,CAAA,UAAA,EAAA,UAAA,CAAA,gBAAA,CAAA,uCAAA,CAAA,UAAA,EAAA,YAAA,CAAA,CAAA;;;IAHtG,EAE8E,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC5E,EAEiC,CAAA,UAAA,CAAA,CAAA,EAAA,8FAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;IACnC,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IAJmB,EAAoD,CAAA,UAAA,CAAA,OAAA,EAAA,QAAA,CAAA,oBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;IAC1C,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,WAAA,CAAA,CAAA;;;IAPzE,EAA2D,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACzD,EAE2F,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC3F,EAMM,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;IAVP,EAAqF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArF,EAAqF,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,UAAA,CAAA,gBAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAA;IAIxF,EAAyG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzG,EAAyG,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,UAAA,CAAA,gBAAA,CAAA,CAAA;;;IAS1G,EAC8E,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC5E,EAAmF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IADlE,EAAoD,CAAA,UAAA,CAAA,OAAA,EAAA,QAAA,CAAA,oBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;IAC3E,EAAmF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnF,EAAmF,CAAA,kBAAA,CAAA,GAAA,EAAA,gBAAA,CAAA,IAAA,GAAA,QAAA,CAAA,iBAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,OAAA,EAAA,UAAA,CAAA,KAAA,CAAA,GAAA,GAAA,EAAA,EAAA,CAAA,CAAA;;;IAInF,EAEiC,CAAA,SAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;;;;;;AAD/B,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,UAAA,CAAA,gBAAA,CAAoC,uCAAA,CAAA,UAAA,EAAA,YAAA,CAAA,CAAA;;;IAJxC,EAE8E,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC5E,EAEiC,CAAA,UAAA,CAAA,CAAA,EAAA,6GAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;IACnC,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IAJmB,EAAoD,CAAA,UAAA,CAAA,OAAA,EAAA,QAAA,CAAA,oBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;IAC1C,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,WAAA,CAAA,CAAA;;;IAPzE,EAAuD,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACrD,EAE2F,CAAA,UAAA,CAAA,CAAA,EAAA,4EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC3F,EAMM,CAAA,UAAA,CAAA,CAAA,EAAA,4EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;IAVP,EAAqF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArF,EAAqF,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,UAAA,CAAA,gBAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,QAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAA;IAIxF,EAAyG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzG,EAAyG,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,IAAA,QAAA,CAAA,oBAAA,CAAA,WAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,UAAA,CAAA,gBAAA,CAAA,CAAA;;;;IAS5G,EAI0E,CAAA,cAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;IADxE,EAAmB,CAAA,UAAA,CAAA,iBAAA,EAAA,SAAA,wJAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,UAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,mFAAkE,CAAA,CAAA,EAAA,CAAC,8PACvE,EAAA,CAAA,WAAA,CAAA,QAAA,CAAA,qBAAA,CAAA,MAAA,CAAA,YAAA,EAAA,MAAA,CAAA,KAAA,CAAuD,CAAA,CADgB,EAAA,CAAA,CAAA;IAExF,EAAiC,CAAA,YAAA,EAAA,CAAA;;;;;;IAJ/B,EAAoC,CAAA,UAAA,CAAA,UAAA,EAAA,UAAA,CAAA,gBAAA,CAAA,CAAA,OAAA,EAAA,UAAA,CAAA,KAAA,CAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,CAAA,OAAA,CAAA,CAAA,UAAA,EAAA,YAAA,CAAA,CAAA,cAAA,EAAA,gBAAA,CAAA,CAAA;;;IAHxC,EACuD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACrD,EAKiC,CAAA,UAAA,CAAA,CAAA,EAAA,8FAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,CAAA,CAAA;IACnC,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IAPJ,EAAoD,CAAA,UAAA,CAAA,OAAA,EAAA,QAAA,CAAA,oBAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,CAAA,CAAA;IACnB,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,WAAA,CAAA,CAAA;;;IAfzE,EAA0D,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACxD,EAWe,CAAA,UAAA,CAAA,CAAA,EAAA,sEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACf,EAQM,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;IArBE,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,iBAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;IAY/C,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArC,EAAqC,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,iBAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;;;IAzF/C,EAKiE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC/D,EAC4D,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC5D,EAYM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAWM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAKM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EASM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAce,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACf,EAWe,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACf,EAsBe,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjB,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;;IAhGJ,EAAiE,CAAA,sBAAA,CAAA,sCAAA,EAAA,UAAA,CAAA,UAAA,EAAA,EAAA,CAAA,CAAA;AAFjE,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,OAAA,CAAA,iBAAA,CAAA,UAAA,CAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAsJ,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,UAAA,CAAA,QAAA,GAAA,IAAA,CAAA,CAAA,CAAA;AAGtJ,IAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,KAAA,GAAA,CAAA,CAA2C,CAAA,UAAA,EAAA,OAAA,CAAA,qBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA;IAEoB,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,iBAAA,CAAA,UAAA,CAAA,CAAA,CAAA;IAExF,EAA0E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1E,EAA0E,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,IAAA,YAAA,KAAA,CAAA,CAAA,CAAA;IAc7E,EAAoG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApG,EAAoG,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,QAAA,IAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,MAAA,IAAA,YAAA,KAAA,CAAA,CAAA,CAAA;IAWjG,EAAmG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnG,EAAmG,CAAA,UAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,QAAA,IAAA,gBAAA,CAAA,IAAA,CAAA,MAAA,IAAA,YAAA,KAAA,CAAA,CAAA,CAAA;IAOtG,EAAiH,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjH,EAAiH,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,UAAA,IAAA,OAAA,CAAA,aAAA,KAAA,UAAA,IAAA,gBAAA,CAAA,IAAA,IAAA,OAAA,CAAA,oBAAA,CAAA,QAAA,IAAA,YAAA,IAAA,CAAA,CAAA,CAAA;IASrG,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,QAAA,CAAA,CAAA;IAef,EAA0C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1C,EAA0C,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,QAAA,IAAA,CAAA,UAAA,CAAA,gBAAA,CAAA,CAAA;IAY1C,EAAyC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzC,EAAyC,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,QAAA,IAAA,UAAA,CAAA,gBAAA,CAAA,CAAA;;;IA8BtD,EAAwE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IACtE,EAAkF,CAAA,SAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,GAAA,CAAA,CAAA;IACpF,EAAM,CAAA,YAAA,EAAA,CAAA;;;IADkB,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,UAAA,CAAA,OAAA,EAAA,yBAAA,CAAA,KAAA,CAAA,CAAA;;;AANlE,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAA+E,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAKzE,EAEM,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AACR,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,EAAA,CAAA;;;;IANN,EAAwE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAxE,IAAA,EAAA,CAAA,WAAA,CAAA,MAAA,EAAA,OAAA,CAAA,aAAA,KAAA,UAAA,GAAA,UAAA,GAAA,cAAA,CAAwE,CAAA,UAAA,EAAA,OAAA,CAAA,aAAA,KAAA,UAAA,GAAA,GAAA,GAAA,WAAA,CAAA,CAAA;IAGhC,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,UAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,gBAAA,CAAA,CAAA;;;;IAzI9E,EAiB0F,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAhBxF,EAAW,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,yDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,sCAA6B,CAAA,CAAA,EAAA,CAAC,0JAAU,EAAA,CAAA,WAAA,CAAA,QAAA,CAAA,mBAAA,CAAA,MAAA,CAA2B,CAAA,CAAA,EAAA,CAArC,CAC1B,aAAA,EAAA,SAAA,6DAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAAA,CAAA,sBAAA,GAAyB,6CAAgC,GAAG,IAAI,CAAA,CAAA,EAAA,CADtC,CAEhC,OAAA,EAAA,SAAA,uDAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,6CAAgC,CAAA,CAAA,EAAA,CAFA,CAU6B,UAAA,EAAA,SAAA,0DAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAAmC,CAAA,cAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,CAAA,IAVhE,CAWhC,OAAA,EAAA,SAAA,uDAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,uDAA0C,CAAA,CAAA,EAAA,CAXV,kOAWuB,EAAA,CAAA,WAAA,CAAA,QAAA,CAAA,oBAAA,CAAA,MAAA,EAAA,gBAAA,CAA0C,CAAA,CAAA,EAAA,CAXjE,CAY7B,UAAA,EAAA,SAAA,0DAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,uDAA0C,CAAA,CAAA,EAAA,CAZb,CAc3B,YAAA,EAAA,SAAA,4DAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAAoC,CAAA,sBAAA,CAAA,gBAAA,CAAA,CAAA,IAdT,CAcyB,YAAA,EAAA,SAAA,4DAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,gBAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAAsC,CAAA,wBAAA,CAAA,gBAAA,CAAA,CAAA,CAd/D,EAAA,CAAA,CAAA;AAiBzC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAqD,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAGjD,EAQM,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAmGM,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAUM,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAM,CAAA,YAAA,EAAA,CAAA;;;;AA3IJ,IAAA,EAAA,CAAA,WAAA,CAAA,sBAAA,EAAA,gBAAA,CAAA,KAAA,KAAA,OAAA,CAAA,0BAAA,EAAA,CAAkF,0EAAA,CAAA,sBAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,SAAA,CAAA,CAAA,wBAAA,EAAA,gBAAA,CAAA,IAAA,KAAA,OAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAA,aAAA,EAAA,OAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,wBAAA,EAAA,OAAA,CAAA,QAAA,CAAA,0EAAA,CAAA,6BAAA,EAAA,gBAAA,IAAA,IAAA,GAAA,IAAA,GAAA,gBAAA,CAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,CAAA,CAAA;AAOlF,IAAA,EAAA,CAAA,WAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,KAAA,IAAA,CAAA,GAAA,CAAA,GAAA,SAAA,CAAyD,CAAA,0BAAA,EAAA,gBAAA,CAAA,KAAA,CAAA,CAAA,eAAA,EAAA,gBAAA,CAAA,KAAA,GAAA,CAAA,CAAA,CAAA,eAAA,EAAA,OAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,MAAA,GAAA,OAAA,CAAA,CAAA,eAAA,EAAA,OAAA,CAAA,6BAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,YAAA,EAAA,OAAA,CAAA,UAAA,IAAA,gBAAA,CAAA,KAAA,GAAA,gBAAA,CAAA,KAAA,GAAA,CAAA,GAAA,SAAA,CAAA,CAAA;IASrD,EAAuE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvE,EAAuE,CAAA,WAAA,CAAA,MAAA,EAAA,OAAA,CAAA,aAAA,KAAA,UAAA,GAAA,UAAA,GAAA,cAAA,CAAA,CAAA;IACjE,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,UAAA,CAAA,CAAA;IAUD,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,aAAA,CAAA,CAAA;IAqGtC,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,kBAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;;;;IAmBlD,EAC4G,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,GAAA,EAAA,GAAA,CAAA,CAAA;IAAnE,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAA2C,CAAA,mCAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAAc,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAEpH,EACmF,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,GAAA,CAAA,CAAA;IACjF,EAAwE,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,GAAA,CAAA,CAAA;IAC1E,EAAM,CAAA,YAAA,EAAA,CAAA;;IADe,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,UAAA,CAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;;AChQvD;;AAEG;AAKG,MAAO,kBAAmB,SAAQ,mBAAmB,CAAA;AA0+BvD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAh+BZ,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;AAC/B,QAAA,IAAA,CAAA,qBAAqB,GAA0B;AACnD,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,YAAY,EAAE,EAAE;SACnB,CAAC;QAEM,IAAmB,CAAA,mBAAA,GAAG,EAAE,CAAC;QACzB,IAAuB,CAAA,uBAAA,GAAG,GAAG,CAAC;QAC9B,IAAgC,CAAA,gCAAA,GAAG,MAAM,CAAC;QAC1C,IAAqB,CAAA,qBAAA,GAAG,GAAG,CAAC;QAC5B,IAAiC,CAAA,iCAAA,GAAG,GAAG,CAAC;QACxC,IAA2B,CAAA,2BAAA,GAAG,GAAG,CAAC;QAElC,IAA4B,CAAA,4BAAA,GAAG,KAAK,CAAC;QACrC,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;QAClB,IAA0B,CAAA,0BAAA,GAAmB,EAAE,CAAC;QAgBhD,IAAqB,CAAA,qBAAA,GAA4B,EAAE,CAAC;QACpD,IAAiB,CAAA,iBAAA,GAAwB,EAAE,CAAC;QAE5C,IAAiC,CAAA,iCAAA,GAAG,CAAC,CAAC,CAAC;AAIvC,QAAA,IAAA,CAAA,qBAAqB,GAAG,iBAAiB,CAAC,IAAI,CAAC;QAG/C,IAAuB,CAAA,uBAAA,GAAG,CAAC,CAAC,CAAC;QAC7B,IAA+B,CAAA,+BAAA,GAAG,CAAC,CAAC,CAAC;QACrC,IAAsB,CAAA,sBAAA,GAAG,CAAC,CAAC,CAAC;QAC5B,IAAwB,CAAA,wBAAA,GAAG,CAAC,CAAC,CAAC;QAE9B,IAA4B,CAAA,4BAAA,GAAG,CAAC,CAAC;QACjC,IAAoC,CAAA,oCAAA,GAAG,CAAC,CAAC,CAAC;QAE1C,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;QAC5B,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;QAC/B,IAAyC,CAAA,yCAAA,GAAG,KAAK,CAAC;QAGlD,IAAS,CAAA,SAAA,GAA+C,EAAE,CAAC;QAE3D,IAAgB,CAAA,gBAAA,GAA+B,EAAE,CAAC;QAClD,IAA6B,CAAA,6BAAA,GAAG,CAAC,CAAC,CAAC;QAEnC,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;QAC9B,IAA2B,CAAA,2BAAA,GAAG,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,oBAAoB,GAAG,eAAe,CAAC,oBAAoB,CAAC;QAO7D,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AACjB,QAAA,IAAA,CAAA,6BAA6B,GAAG,IAAI,6BAA6B,EAAE,CAAC;QAEpE,IAAkB,CAAA,kBAAA,GAAG,EAAE,CAAC;AAE/B;;AAEG;QACI,IAA+B,CAAA,+BAAA,GAAG,KAAK,CAAC;AA6C9B,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAyB,CAAC;AAE9E;;AAEG;AAEI,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAqB,CAAC;AAE/D;;AAEG;AACc,QAAA,IAAA,CAAA,qCAAqC,GAA0B,IAAI,YAAY,EAAW,CAAC;AAS3F,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAA+B,CAAC;AAS9D,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAoC,CAAC;AASxE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAA8D,CAAC;QA2C5G,IAAa,CAAA,aAAA,GAAwB,EAAE,CAAC;AAE/C;;AAEG;AAEI,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAQ,CAAC;AAQtD;;AAEG;QAEI,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;AAiBtC;;AAEG;QAEI,IAAuB,CAAA,uBAAA,GAAG,IAAI,CAAC;AAQtC;;AAEE;QAEK,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;AAEpC;;AAEG;AAEI,QAAA,IAAA,CAAA,eAAe,GAAyC,IAAI,YAAY,EAA0B,CAAC;AAUzF,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAA8B,CAAC;AAU9D,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAA8B,CAAC;AAU/D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAA8B,CAAC;AAc/E;;AAEG;QAEI,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC;AAiBhC;;;AAGG;QAEI,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAElC;;;;AAIG;QAEI,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;AAwX9B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAO,CAAC;AAE7C;;AAEG;QACI,IAAY,CAAA,YAAA,GAAQ,iBAAiB,CAAC;AAE7C;;AAEG;QACI,IAAoB,CAAA,oBAAA,GAAQ,yBAAyB,CAAC;AAwF5C,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAU,CAAC;AAG9C,QAAA,IAAA,CAAA,YAAY,GAA2C,IAAI,YAAY,EAA4B,CAAC;AAU1F,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAA+B,CAAC;AAU9D,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAA+B,CAAC;AA2CjF;;AAEG;QAEI,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AA0BzB;;AAEG;QAEI,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;AAEvB;;AAEG;QAEI,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC;AAElC;;AAEG;QAEI,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;AAE7B;;AAEG;QAEI,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;AAEtB;;;AAGG;QAEI,IAA4B,CAAA,4BAAA,GAAG,IAAI,CAAC;AAE3C;;AAEG;QAEI,IAAoC,CAAA,oCAAA,GAAG,IAAI,CAAC;AAEnD;;AAEG;QAEI,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAEzB;;AAEG;QAEI,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;AAEvC;;AAEG;QAEI,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAEzB;;;AAGG;QAEI,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC;AAEjC;;AAEG;QAEI,IAA0B,CAAA,0BAAA,GAAG,IAAI,CAAC;QAGlC,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QAErB,IAAY,CAAA,YAAA,GAAkB,EAAE,CAAC;QAElC,IAAiB,CAAA,iBAAA,GAAiC,EAAE,CAAC;QAErD,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;QAWnC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;KAC7E;AA5+BD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,oBAAoB,CAAC;KAC/B;AAqHD;;AAEG;;AAEH,IAAA,IAAqB,kBAAkB,GAAA;QACnC,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAcD;;AAEG;;AAEH,IAAA,IAAqB,aAAa,GAAA;QAC9B,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAGD;;AAEG;;AAEH,IAAA,IAAqB,oBAAoB,GAAA;QACrC,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAGD;;AAEG;;AAEH,IAAA,IAAqB,qBAAqB,GAAA;QACtC,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAGD;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IAED,IACW,OAAO,CAAC,KAA0C,EAAA;AACzD,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1B,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;AAWD;;AAEG;AACH,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACrC;IAED,IAAW,aAAa,CAAC,KAA8B,EAAA;AACnD,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,IAAI,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;QAChC,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/E,SAAC,CAAC,CAAC;KACN;AA6DD;;;AAGG;;AAEH,IAAA,IAAqB,YAAY,GAAA;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAGD;;;AAGG;;AAEH,IAAA,IAAqB,eAAe,GAAA;QAChC,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAGD;;;AAGG;;AAEH,IAAA,IAAqB,YAAY,GAAA;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAoFD;;AAEG;AACH,IAAA,IACW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;IAED,IAAW,YAAY,CAAC,YAAiB,EAAA;AACrC,QAAA,MAAM,YAAY,GAAG,CAAC,KAAK,IAAG;AAC1B,YAAA,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU,CACjC,MAAK;AACD,gBAAA,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AACpC,aAAC,EACD,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACpC,SAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAEd,QAAA,MAAM,QAAQ,GAAG,CAAC,OAAe,KAAI;AACjC,YAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;AAC7B,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,gBAAgB,EAAE;gBAC9C,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACrC,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,oBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACjC,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC;AAC/C,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC;AACzC,QAAA,IAAI,YAAY,EAAE;YACd,IAAI,YAAY,YAAY,wBAAwB,EAAE;gBAClD,IAAI,CAAC,sBAAsB,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,IAAG;AAClE,oBAAA,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC;oBAC9B,UAAU,CAAC,MAAK;wBACZ,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClB,wBAAA,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC;AACnC,qBAAC,CAAC,CAAC;AACP,iBAAC,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;AACH,gBAAA,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACrD,gBAAA,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAErD,gBAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAK;AACtC,oBAAA,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACxD,oBAAA,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAC5D,iBAAC,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;KACJ;AAoBD;;AAEG;AACH,IAAA,IACW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;KAC5F;IAED,IAAW,KAAK,CAAC,KAA0B,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,IAAI,iCAAiC,GAAG,KAAK,CAAC;;QAG9C,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,2BAAmC,CAAC;YACxC,IAAI,6BAA6B,GAAa,EAAE,CAAC;YAEjD,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,gBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,EAAE;AAC7D,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;wBACxD,6BAA6B,GAAG,EAAE,CAAC;AACnC,wBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAG;4BAC1B,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,gCAAA,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/E,6BAAA;AAAM,iCAAA;gCACH,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,6BAAA;AACL,yBAAC,CAAC,CAAC;AACN,qBAAA;AACJ,iBAAA;qBAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;oBACnD,IAAI,IAAI,CAAC,UAAU,EAAE;wBACjB,2BAA2B,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACnF,qBAAA;AAAM,yBAAA;wBACH,2BAA2B,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9E,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC9B,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAG;oBAClC,OAAyB;AACrB,wBAAA,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE;AACrB,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,gBAAgB,EAAE,EAAE;qBACvB,CAAC;AACN,iBAAC,CAAC,CAAC;AACN,aAAA;YAED,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,gBAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACxD,oBAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAE5B,oBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,EAAE;wBAC7D,IAAI,6BAA6B,CAAC,MAAM,EAAE;4BACtC,IAAI,IAAI,CAAC,UAAU,EAAE;gCACjB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gCAE3C,OAAO,cAAc,CAAC,MAAM,EAAE;AAC1B,oCAAA,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AACtC,oCAAA,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5B,oCAAA,MAAM,KAAK,GAAG,6BAA6B,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACpG,oCAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;wCACd,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACtD,wCAAA,6BAA6B,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAClD,qCAAA;AAAM,yCAAA;wCACH,iCAAiC,GAAG,IAAI,CAAC;AAC5C,qCAAA;AACD,oCAAA,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE;wCACvC,MAAM;AACT,qCAAA;oCAED,IAAI,WAAW,CAAC,QAAQ,EAAE;AACtB,wCAAA,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAG;AAChC,4CAAA,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;AAC1B,4CAAA,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,yCAAC,CAAC,CAAC;AACN,qCAAA;AACJ,iCAAA;AACJ,6BAAA;AAAM,iCAAA;AACH,gCAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AAC3B,oCAAA,MAAM,KAAK,GAAG,6BAA6B,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;AACxF,oCAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,wCAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,wCAAA,6BAA6B,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAClD,qCAAA;AAAM,yCAAA;wCACH,iCAAiC,GAAG,IAAI,CAAC;AAC5C,qCAAA;AACD,oCAAA,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE;wCACvC,MAAM;AACT,qCAAA;AACJ,iCAAA;AACJ,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AAAM,yBAAA;wBACH,iCAAiC,GAAG,IAAI,CAAC;AACzC,wBAAA,IAAI,2BAA2B,EAAE;4BAC7B,IAAI,IAAI,CAAC,UAAU,EAAE;gCACjB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gCAC3C,OAAO,cAAc,CAAC,MAAM,EAAE;AAC1B,oCAAA,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AACtC,oCAAA,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oCAE5B,IAAI,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,2BAA2B,EAAE;AAChF,wCAAA,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;;wCAE7B,iCAAiC,GAAG,KAAK,CAAC;wCAC1C,MAAM;AACT,qCAAA;oCAED,IAAI,WAAW,CAAC,QAAQ,EAAE;AACtB,wCAAA,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAG;AAChC,4CAAA,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,yCAAC,CAAC,CAAC;AACN,qCAAA;AACJ,iCAAA;AACJ,6BAAA;AAAM,iCAAA;AACH,gCAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;oCACtB,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,2BAA2B,EAAE;AACpE,wCAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;;wCAEtB,iCAAiC,GAAG,KAAK,CAAC;AAC7C,qCAAA;AACL,iCAAC,CAAC,CAAC;AACN,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,uBAA0C,CAAC;YAC/C,IAAI,wBAAwB,GAAwB,EAAE,CAAC;YAEvD,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,gBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,EAAE;AAC7D,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;wBACxD,wBAAwB,GAAG,EAAE,CAAC;AAC9B,wBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAG;4BAC1B,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,gCAAA,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,6BAAA;AAAM,iCAAA;AACH,gCAAA,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,6BAAA;AACL,yBAAC,CAAC,CAAC;AACN,qBAAA;AACJ,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;wBAC5C,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,4BAAA,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACjD,yBAAA;AAAM,6BAAA;AACH,4BAAA,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAAC;AAC5C,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC9B,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAG;oBAClC,OAAyB;AACrB,wBAAA,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE;AACrB,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,gBAAgB,EAAE,EAAE;qBACvB,CAAC;AACN,iBAAC,CAAC,CAAC;AACN,aAAA;YAED,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,oBAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAE5B,oBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,EAAE;wBAC7D,IAAI,wBAAwB,CAAC,MAAM,EAAE;4BACjC,IAAI,IAAI,CAAC,UAAU,EAAE;gCACjB,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gCAEnD,OAAO,cAAc,CAAC,MAAM,EAAE;AAC1B,oCAAA,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AACtC,oCAAA,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oCAE5B,MAAM,KAAK,GAAG,wBAAwB,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACjE,oCAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;wCACd,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACtD,wCAAA,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7C,qCAAA;AAAM,yCAAA;wCACH,iCAAiC,GAAG,IAAI,CAAC;AAC5C,qCAAA;AACD,oCAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE;wCAClC,MAAM;AACT,qCAAA;oCAED,IAAI,WAAW,CAAC,QAAQ,EAAE;AACtB,wCAAA,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAG;AAChC,4CAAA,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;AAC1B,4CAAA,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,yCAAC,CAAC,CAAC;AACN,qCAAA;AACJ,iCAAA;AACJ,6BAAA;AAAM,iCAAA;AACH,gCAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;oCAC3B,MAAM,KAAK,GAAG,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrD,oCAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,wCAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,wCAAA,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7C,qCAAA;AAAM,yCAAA;wCACH,iCAAiC,GAAG,IAAI,CAAC;AAC5C,qCAAA;AACD,oCAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE;wCAClC,MAAM;AACT,qCAAA;AACJ,iCAAA;AACJ,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AAAM,yBAAA;wBACH,iCAAiC,GAAG,IAAI,CAAC;AACzC,wBAAA,IAAI,uBAAuB,EAAE;4BACzB,IAAI,IAAI,CAAC,UAAU,EAAE;gCACjB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gCAC3C,OAAO,cAAc,CAAC,MAAM,EAAE;AAC1B,oCAAA,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AACtC,oCAAA,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5B,oCAAA,IAAI,WAAW,CAAC,IAAI,KAAK,uBAAuB,EAAE;;wCAE9C,iCAAiC,GAAG,KAAK,CAAC;AAC1C,wCAAA,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;wCAC7B,MAAM;AACT,qCAAA;oCAED,IAAI,WAAW,CAAC,QAAQ,EAAE;AACtB,wCAAA,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAG;AAChC,4CAAA,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,yCAAC,CAAC,CAAC;AACN,qCAAA;AACJ,iCAAA;AACJ,6BAAA;AAAM,iCAAA;gCACH,iCAAiC,GAAG,IAAI,CAAC;AACzC,gCAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;oCACtB,IAAI,IAAI,KAAK,uBAAuB,EAAE;;wCAElC,iCAAiC,GAAG,KAAK,CAAC;AAC1C,wCAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,qCAAA;AACL,iCAAC,CAAC,CAAC;AACN,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAElC,QAAA,IAAI,iCAAiC,EAAE;YACnC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7C,SAAA;QAED,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACjC,SAAA;KACJ;AAeD;;AAEG;AACH,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,EAAE;YAC7D,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACpG,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YACnC,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACxF,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;IAED,IAAW,SAAS,CAAC,SAAkD,EAAA;AACnE,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,EAAE;YAC7D,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,MAAM,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;gBACvD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7G,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,IAAI,EAAE,CAAC;gBAEzC,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,oBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,IAAG;wBAC9B,IAAI,CAAC,uBAAuB,CACxB,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,CAAC,IAAI,CAAC,4BAA4B,EAClC,SAAS,CAAC,GAAG,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,qBAAC,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,gBAAA,IAAI,CAAC,iBAAiB,GAAG,eAAe,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;AACrE,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AACzD,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,wCAAwC,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACxC;AAED,IAAA,IACW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACrC;IACD,IAAW,aAAa,CAAC,KAA2C,EAAA;AAChE,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;;;;;;;;;AAUnC,QAAA,IAAI,KAAK,KAAK,2BAA2B,CAAC,QAAQ,EAAE;AAChD,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC1H,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACtD,aAAA;AACJ,SAAA;KACJ;AAQD;;;;;AAKG;;AAEH,IAAA,IAAqB,QAAQ,GAAA;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAMD;;;AAGG;;AAEH,IAAA,IAAqB,WAAW,GAAA;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAGD;;;AAGG;;AAEH,IAAA,IAAqB,aAAa,GAAA;QAC9B,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAGD;;AAEG;AACH,IAAA,IACW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;IACD,IAAW,WAAW,CAAC,KAA+B,EAAA;AAClD,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,KAAK,EAAE;AACpC,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnD,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC7B,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,aAAA;YACD,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACjC,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;AACH,IAAA,IACW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACrC;IACD,IAAW,aAAa,CAAC,KAAwB,EAAA;AAC7C,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACnC,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACjC,SAAA;KACJ;AAcD;;AAEG;AACH,IAAA,IACW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,2BAA2B,CAAC;KAC3C;IACD,IAAW,mBAAmB,CAAC,KAAa,EAAA;AACxC,QAAA,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;QACzC,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;AAED;;AAEG;AACH,IAAA,IACW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;IACD,IAAW,cAAc,CAAC,KAAa,EAAA;AACnC,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IA6FM,wBAAwB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;KAC5D;IAEM,WAAW,GAAA;QACd,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChC,SAAA;KACJ;IAEM,WAAW,GAAA;;;QAGd,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;;;KAI3D;IAEM,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACpC,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,IAAG;gBAClC,OAAO,IAAI,CAAC,EAAE,CAAC;AACnB,aAAC,CAAC;AACL,SAAA;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACnE,SAAA;aAAM,IAAI,IAAI,CAAC,UAAU,EAAE;YACxB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC/D,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAChE,SAAA;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,gCAAgC,GAAG,IAAI,gCAAgC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;YAE1F,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;;YAE7F,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAE/G,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAClC,SAAA;QAED,IAAI,CAAC,aAAa,CAAC,IAAI;AACnB;;;;AAIG;QACH,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,QAAQ,CAAC;AACzD,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACjB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,IAAI,CAAC,aAAa,CAAC,aAAa,EAChC,aAAa,EACb,CAAG,EAAA,CAAC,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,UAAU,CAAI,EAAA,CAAA,CAAC,CAAC;SACrE,CAAC,CACT,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,eAAe,EAAE;AAChD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;AACnD,SAAA;QAED,IAAI,CAAC,wCAAwC,EAAE,CAAC;QAEhD,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,uCAAuC;AACxC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjG,SAAA;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;;QAG5B,UAAU,CAAC,MAAK;AACZ,YAAA,MAAM,WAAW,GAAG,GAAG,CAAC,6BAA6B,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAC5F,YAAA,IAAI,CAAC,mCAAmC,GAAG,CAAC,WAAW,CAAC;YACxD,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACpC,SAAC,CAAC,CAAC;KACN;AAED;;;;AAIG;AACI,IAAA,oBAAoB,CAAC,YAAmC,EAAA;AAC3D,QAAA,OAAO,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC,0BAA0B,EAAE,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,MAAM;aACvH,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;KAC3H;AAEM,IAAA,oBAAoB,CAAC,KAAoB,EAAA;QAC5C,IAAI,kCAAkC,GAAG,KAAK,CAAC;QAE/C,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,OAAO,CAAC,SAAS;gBAClB,kCAAkC,GAAG,IAAI,CAAC;gBAC1C,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM;YACV,KAAK,OAAO,CAAC,SAAS,CAAC;YACvB,KAAK,OAAO,CAAC,OAAO;gBAChB,kCAAkC,GAAG,IAAI,CAAC;gBAC1C,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,UAAU,CAAC,MAAK;AACZ,oBAAA,MAAM,cAAc,GAAgB,KAAK,CAAC,MAAM,CAAC;oBACjD,MAAM,WAAW,GAAG,GAAG,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;oBAC/D,WAAW,CAAC,KAAK,EAAE,CAAC;AACxB,iBAAC,CAAC,CAAC;gBACH,MAAM;YACV,KAAK,OAAO,CAAC,UAAU;gBACnB,kCAAkC,GAAG,IAAI,CAAC;gBAC1C,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,UAAU,CAAC,MAAK;AACZ,oBAAA,MAAM,cAAc,GAAgB,KAAK,CAAC,MAAM,CAAC;oBACjD,MAAM,WAAW,GAAG,GAAG,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;oBAC3D,WAAW,CAAC,KAAK,EAAE,CAAC;AACxB,iBAAC,CAAC,CAAC;gBACH,MAAM;AACb,SAAA;AAED,QAAA,IAAI,kCAAkC,EAAE;YACpC,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;AAC1B,SAAA;KACJ;AAEM,IAAA,mBAAmB,CAAC,KAAoB,EAAA;AAC3C,QAAA,IAAI,CAAC,6BAA6B,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KACrG;IAEO,eAAe,CAAC,SAAiB,EAAE,WAAqB,EAAA;QAC5D,IAAI,WAAW,KAAK,SAAS,EAAE;YAC3B,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC;AACnE,SAAA;aAAM,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,SAAS,CAAC;YAC1H,IAAI,IAAI,GAAG,SAAS,EAAE;gBAClB,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,SAAS,IAAI,SAAS,CAAC;AACpE,aAAA;iBAAM,IAAI,IAAI,IAAI,SAAS,EAAE;AAC1B,gBAAA,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,YAAY,CAAC;AAChH,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC;YAC7E,IAAI,IAAI,GAAG,SAAS,EAAE;gBAClB,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,SAAS,IAAI,SAAS,CAAC;AACpE,aAAA;iBAAM,IAAI,IAAI,IAAI,SAAS,EAAE;gBAC1B,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;AAC3D,aAAA;AACJ,SAAA;QACD,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAClC;AAEM,IAAA,qBAAqB,CAAC,KAAoB,EAAA;AAC7C,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,EAAE;AACnE,YAAA,eAAe,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;AACtE,SAAA;AAED,QAAA,MAAM,aAAa,GAAgB,KAAK,CAAC,MAAM,CAAC;QAChD,MAAM,UAAU,GAAG,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;;;;QAIlH,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACjC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,6BAA6B;iBAClD,6CAA6C,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;AACtH,YAAA,IAAI,YAAY,EAAE;gBACd,OAAO;AACV,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,EAAE;YACnE,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,OAAO;AACV,SAAA;QACD,IAAI,kCAAkC,GAAG,KAAK,CAAC;QAC/C,IAAI,6BAA6B,GAAG,KAAK,CAAC;QAE1C,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;AAElF,QAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,uBAAuB,CAAC;;;;AAIpE,QAAA,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;;QAGxC,QAAQ,KAAK,CAAC,OAAO;YACjB,KAAK,OAAO,CAAC,CAAC;;;gBAGV,IAAI,KAAK,CAAC,OAAO,EAAE;AACf,oBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,6BAA6B,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE;wBACnF,KAAK,CAAC,eAAe,EAAE,CAAC;AAC3B,qBAAA;yBAAM,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ;AACpC,2BAAA,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,EAAE;wBAChE,kCAAkC,GAAG,IAAI,CAAC;wBAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;AACpB,qBAAA;AACJ,iBAAA;gBACD,MAAM;YACV,KAAK,OAAO,CAAC,IAAI;gBACb,kCAAkC,GAAG,IAAI,CAAC;AAC1C,gBAAA,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;AACpC,oBAAA,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;oBAC/C,6BAA6B,GAAG,IAAI,CAAC;AACxC,iBAAA;gBACD,MAAM;YACV,KAAK,OAAO,CAAC,OAAO;gBAChB,kCAAkC,GAAG,IAAI,CAAC;AAC1C,gBAAA,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;AACpC,oBAAA,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE;;wBAE/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;AACxD,qBAAA;AAAM,yBAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,yBAAyB,EAAE,GAAG,CAAC,EAAE;AACtF,wBAAA,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;wBAChD,6BAA6B,GAAG,IAAI,CAAC;AACxC,qBAAA;AAAM,yBAAA;wBACH,UAAU,CAAC,MAAK;AACZ,4BAAA,MAAM,cAAc,GAAgB,KAAK,CAAC,MAAM,CAAC;4BACjD,MAAM,eAAe,GAAG,GAAG,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;4BACnE,eAAe,CAAC,KAAK,EAAE,CAAC;AAC5B,yBAAC,CAAC,CAAC;AACN,qBAAA;AACJ,iBAAA;gBACD,MAAM;YACV,KAAK,OAAO,CAAC,SAAS;gBAClB,kCAAkC,GAAG,IAAI,CAAC;AAC1C,gBAAA,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;AACpC,oBAAA,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE;;wBAE/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACzD,qBAAA;AAAM,yBAAA;;AAEH,wBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,cAAc,CAAC,CAAC;wBACpE,6BAA6B,GAAG,IAAI,CAAC;AACxC,qBAAA;AACJ,iBAAA;gBACD,MAAM;YACV,KAAK,OAAO,CAAC,MAAM;gBACf,kCAAkC,GAAG,IAAI,CAAC;AAC1C,gBAAA,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;AACpC,oBAAA,IAAI,CAAC,iCAAiC,CAAC,cAAc,CAAC,CAAC;oBACvD,6BAA6B,GAAG,IAAI,CAAC;AACxC,iBAAA;gBACD,MAAM;YACV,KAAK,OAAO,CAAC,QAAQ;gBACjB,IAAkB,KAAK,CAAC,UAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;oBACrE,kCAAkC,GAAG,IAAI,CAAC;AAC1C,oBAAA,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;AACpC,wBAAA,IAAI,CAAC,6BAA6B,CAAC,cAAc,CAAC,CAAC;wBACnD,6BAA6B,GAAG,IAAI,CAAC;AACxC,qBAAA;AACJ,iBAAA;gBACD,MAAM;YACV,KAAK,OAAO,CAAC,GAAG;gBACZ,kCAAkC,GAAG,IAAI,CAAC;AAC1C,gBAAA,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;AACpC,oBAAA,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;oBAC9C,6BAA6B,GAAG,IAAI,CAAC;AACxC,iBAAA;gBACD,MAAM;YACV,KAAK,OAAO,CAAC,KAAK,CAAC;YACnB,KAAK,OAAO,CAAC,KAAK;AACd,gBAAA,kCAAkC,GAAG,IAAI,CAAC,+BAA+B,CAAC,mBAAmB,EACzF,cAAc,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;gBAC1C,MAAM;YACV,KAAK,OAAO,CAAC,SAAS;gBAClB,kCAAkC,GAAG,IAAI,CAAC;gBAC1C,IAAI,CAAC,8BAA8B,CAAC,mBAAmB,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;gBACpF,MAAM;YACV,KAAK,OAAO,CAAC,UAAU;gBACnB,kCAAkC,GAAG,IAAI,CAAC;gBAC1C,IAAI,CAAC,+BAA+B,CAAC,mBAAmB,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;gBACrF,MAAM;AACb,SAAA;AAED,QAAA,IAAI,6BAA6B,EAAE;YAC/B,IAAI,KAAK,CAAC,QAAQ,EAAE;;;gBAGhB,IAAI,IAAI,CAAC,UAAU,EAAE;oBACjB,IAAI,CAAC,qCAAqC,EAAE,CAAC;AAChD,iBAAA;AACD,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACzE,gBAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE;oBACnC,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC,iBAAA;AAAM,qBAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,SAAS,EAAE;oBAC5C,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,uBAAuB,CAAC;AACrE,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,kCAAkC,EAAE;YACpC,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;AACzC,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;YACpC,UAAU,CACN,MAAK;AACD,gBAAA,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;AAC9C,aAAC,EACD,IAAI,CAAC,iCAAiC,CAAC,CAAC;AAC/C,SAAA;KACJ;IAEO,qCAAqC,GAAA;;;AAGzC,QAAA,IAAI,IAAI,CAAC,sBAAsB,KAAK,IAAI,CAAC,uBAAuB,EAAE;AAC9D,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC7D,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;AACxE,SAAA;KACJ;AAED;;;;AAIG;AACK,IAAA,+BAA+B,CAAC,mBAA0C,EAAE,cAAuB,EACvG,KAAoB,EAAE,aAA0B,EAAA;;;QAGhD,IAAI,qBAAqB,GAAG,KAAK,CAAC;AAClC,QAAA,IAAI,aAAa,IAAI,aAAa,CAAC,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;YAC/F,qBAAqB,GAAG,IAAI,CAAC;AAChC,SAAA;QACD,IAAI,kCAAkC,GAAG,KAAK,CAAC;AAE/C,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE;AACxB,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,EAAE;;;;;;AAMjC,gBAAA,IAAI,qBAAqB,EAAE;oBACvB,kCAAkC,GAAG,IAAI,CAAC;AAC7C,iBAAA;AACJ,aAAA;;;AAGJ,SAAA;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,qCAAqC,EAAE,CAAC;YAC7C,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;AAC/E,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,EAAE;AAC7D,YAAA,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;AACzD,SAAA;AAAM,aAAA;;AAEH,YAAA,IAAI,CAAC,IAAI,CAAC,+BAA+B,EAAE;AACvC,gBAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;oBACtB,OAAO,CAAC,GAAG,CAAC;wBACR,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,wBAAA,OAAO,EAAE,kDAAkD;AAC3D,wBAAA,MAAM,EAAE,0CAA0C;AACrD,qBAAA,CAAC,CAAC;AACN,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;AACpC,wBAAA,IAAI,cAAc,EAAE;AAChB,4BAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AAClD,yBAAA;AAAM,6BAAA;AACH,4BAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAC3D,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,EAAE;oBAC3D,kCAAkC,GAAG,IAAI,CAAC;AAC7C,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,kCAAkC,CAAC;KAC7C;AAEO,IAAA,+BAA+B,CAAC,mBAA0C,EAAE,aAA0B,EAAE,UAAe,EAAA;QAC3H,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,qCAAqC,EAAE,CAAC;YAC7C,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;AAC/E,SAAA;AACD,QAAA,IAAI,mBAAmB,CAAC,IAAI,KAAK,yBAAyB,CAAC,WAAW,EAAE;YACpE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;AACnD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;AACpD,aAAA;AAAM,iBAAA;AACH,gBAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,uBAAuB,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/E,oBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,yBAAyB,CAAC,WAAW,EAAE;AACtE,wBAAA,IAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBAC1C,MAAM;AACT,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,mBAAmB,CAAC,IAAI,KAAK,yBAAyB,CAAC,SAAS,EAAE;AACzE,YAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,uBAAuB,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/E,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,yBAAyB,CAAC,WAAW,EAAE;AACtE,oBAAA,IAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC1C,MAAM;AACT,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,EAAE;AACxD,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACpC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC;AACzD,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,IAAI,WAAW,GAAG,GAAG,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;YAC7D,IAAI,iBAAiB,GAAG,GAAG,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;YACrH,IAAI,kBAAkB,GAAG,GAAG,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;AAErH,YAAA,IAAI,kBAAkB,EAAE;AACpB,gBAAA,IAAI,CAAC,oCAAoC,GAAG,CAAC,CAAC,CAAC;AAC/C,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,kBAAkB,IAAI,CAAC,GAAG,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC7F,IAAI,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,kBAAkB,EAAE;;AAErE,wBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;AACtB,+BAAA,IAAI,CAAC,6BAA6B,CAAC,8BAA8B,CAAC,WAAW,CAAC,EAAE;;AAEnF,4BAAA,WAAW,GAAG,GAAG,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;4BACvD,iBAAiB,GAAG,GAAG,CAAC,mBAAmB,CACvC,WAAW,EACX,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;4BAC5D,kBAAkB,GAAG,GAAG,CAAC,mBAAmB,CACxC,WAAW,EACX,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;AAC9D,yBAAA;AAAM,6BAAA;AACH,4BAAA,IAAI,CAAC,oCAAoC,GAAG,CAAC,CAAC;4BAC9C,MAAM;AACT,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,IAAI,CAAC,oCAAoC,KAAK,CAAC,CAAC;mBAC7C,UAAU,KAAK,iBAAiB,EAAE;gBACrC,WAAW,CAAC,KAAK,EAAE,CAAC;AACvB,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,8BAA8B,CAAC,mBAA0C,EAAE,aAA0B,EAAE,UAAe,EAAA;QAC1H,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,qCAAqC,EAAE,CAAC;YAC7C,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;AAC/E,SAAA;AACD,QAAA,IAAI,mBAAmB,CAAC,IAAI,KAAK,yBAAyB,CAAC,WAAW,EAAE;YACpE,IAAI,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;AAClD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AACrD,aAAA;AAAM,iBAAA;AACH,gBAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,uBAAuB,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,oBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,yBAAyB,CAAC,WAAW,EAAE;AACtE,wBAAA,IAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBAC1C,MAAM;AACT,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,mBAAmB,CAAC,IAAI,KAAK,yBAAyB,CAAC,SAAS,EAAE;AACzE,YAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,uBAAuB,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACxD,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,yBAAyB,CAAC,WAAW,EAAE;AACtE,oBAAA,IAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC1C,MAAM;AACT,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,EAAE;AACxD,YAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACnC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;AAC3D,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AAChF,gBAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,uBAAuB,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;oBACxD,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE;AAC3C,wBAAA,IAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;wBAC3C,MAAM;AACT,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,IAAI,eAAe,GAAG,GAAG,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC;YACrE,MAAM,qBAAqB,GAAG,GAAG,CAAC,mBAAmB,CACjD,eAAe,EAAE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;YAC7E,MAAM,sBAAsB,GAAG,GAAG,CAAC,mBAAmB,CAClD,eAAe,EAAE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;AAC5E,YAAA,IAAI,sBAAsB,EAAE;AACxB,gBAAA,IAAI,CAAC,oCAAoC,GAAG,CAAC,CAAC,CAAC;AAC/C,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,sBAAsB,IAAI,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACrG,IAAI,sBAAsB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,sBAAsB,EAAE;wBAC7E,IAAI,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,OAAO,KAAK,OAAO;+BAC3C,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;;4BAE3E,eAAe,GAAG,qBAAqB,CAAC;AAC3C,yBAAA;AAAM,6BAAA;AACH,4BAAA,IAAI,CAAC,oCAAoC,GAAG,CAAC,CAAC;AACjD,yBAAA;wBACD,MAAM;AACT,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,eAAe,KAAK,UAAU,IAAI,qBAAqB,KAAK,UAAU,EAAE;AACxE,gBAAA,IAAI,CAAC,oCAAoC,GAAG,CAAC,CAAC,CAAC;AAClD,aAAA;YACD,IAAI,qBAAqB,KAAK,UAAU,EAAE;gBACtC,eAAe,CAAC,KAAK,EAAE,CAAC;AAC3B,aAAA;AACJ,SAAA;KACJ;AAEM,IAAA,qBAAqB,CAAC,YAAmC,EAAA;AAC5D,QAAA,OAAO,YAAY,CAAC,IAAI,KAAK,yBAAyB,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;KAChG;IAEM,oBAAoB,CAAC,KAAiB,EAAE,YAAmC,EAAA;AAC9E,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,MAAM,gBAAgB,GAAqB,YAAY,CAAC,IAAI,CAAC;AAC7D,YAAA,IAAI,CAAC,sBAAsB,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAC3D,SAAA;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,SAAS,GAAG,GAAG,CAAC,mBAAmB,CACxB,QAAQ,CAAC,aAAa,EAAE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;YAChG,MAAM,SAAS,GAAG,GAAG,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;AAC7G,YAAA,IAAI,SAAS,EAAE;gBACX,MAAM,UAAU,GAAG,SAAS,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;AAC/D,gBAAA,IAAI,CAAC,oCAAoC,GAAG,CAAC,CAAC,CAAC;AAC/C,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,oBAAA,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AAC7B,wBAAA,IAAI,CAAC,oCAAoC,GAAG,CAAC,CAAC;wBAC9C,MAAM;AACT,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE3D,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;KACN;IAEM,oBAAoB,CAAC,KAAK,EAAE,YAAmC,EAAA;AAClE,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;AACnD,YAAA,IAAI,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAE5D,YAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAC9B,gBAAA,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC,CAAC;AACpD,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,qBAAqB,CAAC,IAAS,EAAA;QAClC,IAAI,yBAAyB,GAAG,KAAK,CAAC;AACtC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,MAAM,IAAI,GAAqB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACrD,YAAA,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;gBACvB,yBAAyB,GAAG,IAAI,CAAC;gBACjC,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAC9B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnE,oBAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE;wBAC3D,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACnD,iBAAiB,GAAG,IAAI,CAAC;wBACzB,MAAM;AACT,qBAAA;AACJ,iBAAA;AACD,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrE,oBAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE;wBAC7D,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACrD,MAAM;AACT,qBAAA;AACJ,iBAAA;gBAED,IAAI,CAAC,iBAAiB,EAAE;oBACpB,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9D,iBAAA;gBAED,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE9B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC7B,MAAM;AACT,aAAA;AACJ,SAAA;;QAGD,IAAI,CAAC,yBAAyB,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChC,SAAA;KACJ;AAEM,IAAA,mCAAmC,CAAC,KAAK,EAAA;QAC5C,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,IAAI,CAAC,yCAAyC,EAAE;gBACjD,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChC,aAAA;AACD,YAAA,IAAI,CAAC,yCAAyC,GAAG,KAAK,CAAC;AAC3D,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,8BAA8B,CAAC,YAAmC,EAAA;QACrE,OAAO;YACH,QAAQ,EAAE,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC,0BAA0B,EAAE;AAClE,YAAA,sBAAsB,EAAE,YAAY,CAAC,IAAI,KAAK,yBAAyB,CAAC,SAAS;AACjF,YAAA,wBAAwB,EAAE,YAAY,CAAC,IAAI,KAAK,yBAAyB,CAAC,WAAW;AACrF,YAAA,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;SACnD,CAAC;KACL;IAEM,4BAA4B,GAAA;QAC/B,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAClB,MAAM,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC/G,aAAA;AAAM,iBAAA;gBACH,MAAM,GAAG,IAAI,CAAC;AACd,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAChD,MAAM,gBAAgB,GAAqB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACjE,oBAAA,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;wBACjD,MAAM,GAAG,KAAK,CAAC;wBACf,MAAM;AACT,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAEM,IAAA,sBAAsB,CAAC,YAAmC,EAAA;AAC7D,QAAA,IAAI,CAAC,wBAAwB,GAAG,YAAY,CAAC,KAAK,CAAC;KACtD;AAEM,IAAA,wBAAwB,CAAC,YAAmC,EAAA;AAC/D,QAAA,IAAI,IAAI,CAAC,wBAAwB,KAAK,YAAY,CAAC,KAAK,EAAE;AACtD,YAAA,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC,CAAC;AACtC,SAAA;KACJ;IAEO,iCAAiC,GAAA;QACrC,IAAI,8BAA8B,GAAG,KAAK,CAAC;QAC3C,IAAI,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,wCAAwC,CAAC,EAAE;YAC/E,8BAA8B,GAAG,IAAI,CAAC;AACzC,SAAA;AACD,QAAA,OAAO,8BAA8B,CAAC;KACzC;AAEM,IAAA,6BAA6B,CAAC,YAAmC,EAAA;QACpE,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,MAAM,gBAAgB,GAAqB,YAAY,CAAC,IAAI,CAAC;YAC7D,IAAI,gBAAgB,CAAC,QAAQ,EAAE;gBAC3B,IAAI,eAAe,GAAG,KAAK,CAAC;;gBAG5B,IAAI,oBAAoB,GAAG,KAAK,CAAC;AACjC,gBAAA,IAAI,CAAC,iCAAiC,CAAC,OAAO,CAAC,MAAM,IAAG;oBACpD,MAAM,kBAAkB,GAAuB,MAAM,CAAC;oBACtD,IAAI,MAAM,CAAC,YAAY,EAAE;AACrB,wBAAA,MAAM,cAAc,GAAqB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;wBAClE,IAAI,cAAc,CAAC,QAAQ,EAAE;AACzB,4BAAA,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE;gCAC9B,oBAAoB,GAAG,IAAI,CAAC;AAC/B,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AACL,iBAAC,CAAC,CAAC;;AAGH,gBAAA,MAAM,8BAA8B,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;gBAEhF,IAAI,oBAAoB,IAAI,8BAA8B,EAAE;oBACxD,eAAe,GAAG,IAAI,CAAC;AACvB,oBAAA,IAAI,CAAC,iCAAiC,CAAC,OAAO,CAAC,MAAM,IAAG;wBACpD,MAAM,kBAAkB,GAAuB,MAAM,CAAC;wBACtD,IAAI,MAAM,CAAC,YAAY,EAAE;AACrB,4BAAA,MAAM,cAAc,GAAqB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;4BAClE,IAAI,cAAc,CAAC,QAAQ,EAAE;AACzB,gCAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,EAAE;oCACvC,eAAe,GAAG,KAAK,CAAC;AAC3B,iCAAA;AACJ,6BAAA;AACJ,yBAAA;AACL,qBAAC,CAAC,CAAC;AACN,iBAAA;AAED,gBAAA,IAAI,eAAe,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC5C,oBAAA,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACxE,oBAAA,MAAM,sBAAsB,GAAG,IAAI,IAAG;wBAClC,WAAW,GAAG,IAAI,CAAC;AACvB,qBAAC,CAAC;AACF,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,CAAC,CAAC;AAClG,oBAAA,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;AACxC,oBAAA,YAAY,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;oBACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBAC3C,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACxD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACvD,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACnC,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AAEM,IAAA,iBAAiB,CAAC,YAAmC,EAAA;QACxD,IAAI,IAAI,CAAC,wBAAwB,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC;AAAE,SAAA;AAEnD,QAAA,MAAM,gBAAgB,GAAqB,YAAY,CAAC,IAAI,CAAC;AAC7D,QAAA,OAAO,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC,0BAA0B,EAAE;AACxD,eAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;AACrC,eAAA,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC,wBAAwB;eACpD,gBAAgB,CAAC,QAAQ,CAAC;KACpC;AAED;;;;;;;;AAQG;AACI,IAAA,YAAY,CAAC,MAAgC,EAAA;QAChD,QAAQ,MAAM,CAAC,QAAQ;YACnB,KAAK,iBAAiB,CAAC,MAAM;AACzB,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;YACzF,KAAK,iBAAiB,CAAC,OAAO;AAC1B,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;YACxF,KAAK,iBAAiB,CAAC,IAAI;AACvB,gBAAA,OAAO,IAAI,CAAC;AACnB,SAAA;KACJ;AAED;;AAEG;IACI,eAAe,GAAA;QAClB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAE/B,QAAA,MAAM,aAAa,IAAI,MAAK;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;AAC9E,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAExB,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,4BAA4B,GAAG,CAAC,CAAC;AACzC,aAAA;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;;;AAGf,gBAAA,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;AAC1C,gBAAA,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC3C,aAAA;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;AACpC,gBAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;AACzC,gBAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAC/B,oBAAA,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAClC,MAAK;wBACD,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,4BAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;gCACjB,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACnC,6BAAC,CAAC,CAAC;AACN,yBAAA;AACL,qBAAC,EACD,IAAI,CAAC,2BAA2B,CAAC,CAAC;AAC1C,iBAAC,CAAC,CAAC;AACN,aAAA;AACL,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAK;YACtC,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC3F,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAEhC,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;KACtC;IAGO,wBAAwB,GAAA;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,iCAAiC,CAAC,OAAO,CAAC,MAAM,IAAG;gBACpD,MAAM,kBAAkB,GAAuB,MAAM,CAAC;gBACtD,IAAI,MAAM,CAAC,YAAY,EAAE;oBACrB,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;AAC5C,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;AAED;;AAEG;IACI,WAAW,GAAA;QACd,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,IAAI,IAAG;AAC3C,YAAA,IAAI,EAAE,CAAC;AACX,SAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,uCAAuC,EAAE;YAC9C,IAAI,CAAC,uCAAuC,EAAE,CAAC;AAClD,SAAA;QACD,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,YAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAC7C,SAAA;QACD,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,YAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAC7C,SAAA;KACJ;AAED;;AAEG;IACI,kBAAkB,GAAA;QACrB,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;AAED;;AAEG;IACI,UAAU,CAAC,KAAiC,EAAE,IAA2B,EAAA;AAC5E,QAAA,IAAI,kBAAkB,GAAG,2BAA2B,CAAC,MAAM,CAAC;AAC5D,QAAA,IAAI,KAAK,EAAE;YACP,IAAI,KAAK,CAAC,OAAO,EAAE;AACf,gBAAA,kBAAkB,GAAG,2BAA2B,CAAC,IAAI,CAAC;AACzD,aAAA;YACD,IAAI,KAAK,CAAC,QAAQ,EAAE;AAChB,gBAAA,kBAAkB,GAAG,2BAA2B,CAAC,UAAU,CAAC;AAC/D,aAAA;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAkB,KAAK,CAAC,UAAW,CAAC,OAAO,KAAK,OAAO,EAAE;gBACvE,OAAO;AACV,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,uBAAuB,CAAC;AACpE,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAExD,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB,CAAC,WAAW,EAAE;gBACrD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE;oBAC9C,OAAO;AACV,iBAAA;gBAED,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,oBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,EAAE;AAC7D,wBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;AAC3B,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,qBAAA;AAAM,yBAAA;wBACH,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,4BAAA,IAAI,kBAAkB,KAAK,2BAA2B,CAAC,MAAM,EAAE;AAC3D,gCAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,IAAG;oCAC7B,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC3D,iCAAC,CAAC,CAAC;AAEH,gCAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AACzF,gCAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5C,gCAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,uBAAuB,CAAC;AACrE,6BAAA;AAAM,iCAAA,IAAI,kBAAkB,KAAK,2BAA2B,CAAC,IAAI,EAAE;AAChE,gCAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9E,6BAAA;AAAM,iCAAA,IAAI,kBAAkB,KAAK,2BAA2B,CAAC,UAAU,EAAE;gCACtE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACxE,gCAAA,IAAI,CAAC,6BAA6B,CAAC,kBAAkB,EAAE,CAAC;AAExD,gCAAA,IAAI,IAAI,CAAC,+BAA+B,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,6BAA6B,KAAK,CAAC,CAAC,EAAE;AAC1F,oCAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,+BAA+B,CAAC;AAC7E,iCAAA;AAED,gCAAA,IAAI,KAAK,GAAG,IAAI,CAAC,6BAA6B,CAAC;AAC/C,gCAAA,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACrB,gCAAA,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,6BAA6B,EAAE;AACjD,oCAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACnB,oCAAA,GAAG,GAAG,IAAI,CAAC,6BAA6B,CAAC;AAC5C,iCAAA;;AAED,gCAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gCAC1B,IAAI,UAAU,GAAqB,IAAI,CAAC;gCACxC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AAC/B,oCAAA,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,yBAAyB,CAAC,WAAW,EAAE;AACtE,wCAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;wCAC5E,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AAClD,qCAAA;AACJ,iCAAA;AACD,gCAAA,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtD,oCAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAChF,iCAAA;AACJ,6BAAA;4BACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACrD,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,EAAE;wBAC7D,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,4BAAA,IAAI,kBAAkB,KAAK,2BAA2B,CAAC,IAAI,EAAE;AACzD,gCAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACjC,gCAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,uBAAuB,CAAC;AACrE,6BAAA;AAAM,iCAAA;AACH,gCAAA,IAAI,kBAAkB,KAAK,2BAA2B,CAAC,UAAU,EAAE;oCAC/D,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACxE,oCAAA,IAAI,CAAC,6BAA6B,CAAC,kBAAkB,EAAE,CAAC;AAExD,oCAAA,IAAI,IAAI,CAAC,+BAA+B,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,6BAA6B,KAAK,CAAC,CAAC,EAAE;AAC1F,wCAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,+BAA+B,CAAC;AAC7E,qCAAA;AAED,oCAAA,IAAI,KAAK,GAAG,IAAI,CAAC,6BAA6B,CAAC;AAC/C,oCAAA,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACrB,oCAAA,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,6BAA6B,EAAE;AACjD,wCAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACnB,wCAAA,GAAG,GAAG,IAAI,CAAC,6BAA6B,CAAC;AAC5C,qCAAA;AAED,oCAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oCAC1B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE;AAC/B,wCAAA,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,yBAAyB,CAAC,WAAW,EAAE;4CACtE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,yCAAA;AACJ,qCAAA;AACJ,iCAAA;AAAM,qCAAA;oCACH,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,oCAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,uBAAuB,CAAC;AACrE,iCAAA;AAED,gCAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AAAM,yBAAA;wBACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;wBAC/D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAClF,qBAAA;AACJ,iBAAA;AACJ,aAAA;YAED,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,WAAW,CAAc,KAAK,CAAC,MAAM,CAAC,EAAE;gBACtD,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChC,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;IACK,sBAAsB,GAAA;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;AAChF,QAAA,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,YAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,KAAK,CAAC,EAAE;gBACxH,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;AACtD,aAAA;YACD,IAAI,CAAC,gCAAgC,EAAE,CAAC;AAC3C,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACzC,SAAA;KACJ;IAGO,8BAA8B,GAAA;QAClC,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,sBAAsB,EAAE,CAAC;KACjC;IAEO,gCAAgC,GAAA;AACpC,QAAA,IAAI,CAAC,2BAA2B,GAAG,CAAC,CAAC;KACxC;AAED;;AAEG;IACI,mBAAmB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC;KAC7F;AAED;;AAEG;IACI,oBAAoB,GAAA;AACvB,QAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,uBAAuB;AACvF,aAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;KAChE;AAED;;AAEG;IACI,gBAAgB,CAAC,IAA2B,EAAE,2BAAqC,EAAA;AACtF,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,2BAA2B,KAAK,SAAS;AACzE,YAAA,2BAA2B,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACjC;AAED;;AAEG;AACI,IAAA,eAAe,CAAC,KAAY,EAAE,IAA2B,EAAE,2BAAqC,EAAA;AACnG,QAAA,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;AAC3B,SAAA;QAED,IAAI,oBAAoB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,2BAA2B,KAAK,SAAS,GAAG,2BAA2B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnH,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7C,oBAAoB,GAAG,IAAI,CAAC;AAC/B,SAAA;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAErD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;QAG9B,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,+BAA+B,GAAG,KAAK,CAAC;YAE7C,IAAI,CAAC,wCAAwC,EAAE,CAAC;YAEhD,IAAI,CAAC,oBAAoB,EAAE;gBACvB,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;gBAC3D,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC;AAC/C,SAAA;KACJ;AAED;;AAEG;IACI,cAAc,GAAA;AACjB,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxC,IAAI,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAC9C,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACxC,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACjC;AAED;;AAEG;IACI,gBAAgB,GAAA;AACnB,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxC,IAAI,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAC9C,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACzC,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACjC;AAED;;;AAGG;AACI,IAAA,iBAAiB,CAAC,MAAgC,EAAA;QACrD,IAAI,eAAe,GAAG,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,IAAG;AACvC,YAAA,IAAI,aAAa,KAAK,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;gBACjF,eAAe,GAAG,aAAa,CAAC;AACnC,aAAA;AACL,SAAC,CAAC,CAAC;QAEH,OAAO,MAAM,KAAK,eAAe,CAAC;KACrC;AAED;;AAEG;IACI,gBAAgB,CAAC,MAAgC,EAAE,YAAmC,EAAA;AACzF,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAC/B,YAAA,EAAE,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE;AACpF,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC;KAC1D;AAEM,IAAA,gBAAgB,CAAC,KAAK,EAAA;QACzB,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QAC1D,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;KACnE;IAEM,eAAe,CAAC,WAAmB,EAAE,KAAK,EAAA;QAC7C,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAErE,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,CAAC;QAChH,MAAM,eAAe,GAAa,EAAE,CAAC;QACrC,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClD,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AAC1D,YAAA,UAAU,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACrD,SAAA;;;;AAKD,QAAA,MAAM,0BAA0B,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACrE,IAAI,wBAAwB,GAAG,0BAA0B,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC;;;;QAKhF,MAAM,eAAe,GAAG,WAAW,IAAI,oBAAoB,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7G,QAAA,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;QACtE,IAAI,qBAAqB,GAAG,uBAAuB,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC;;;;;AAM1E,QAAA,IAAI,wBAAwB,GAAG,kBAAkB,CAAC,cAAc,EAAE;YAC9D,IAAI,6BAA6B,GAAG,CAAC,CAAC;AACtC,YAAA,KAAK,IAAI,CAAC,GAAG,eAAe,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpE,gBAAA,6BAA6B,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACxE,aAAA;YAED,MAAM,+BAA+B,GAAG,UAAU,GAAG,6BAA6B,GAAG,uBAAuB,CAAC,WAAW,CAAC;AACzH,YAAA,MAAM,gCAAgC,GAAG,UAAU,GAAG,6BAA6B,GAAG,qBAAqB,CAAC;YAE5G,IAAI,6BAA6B,GAAG,CAAC,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,EAAE;gBACnC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAC3B,gCAAgC,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,+BAA+B,CAAC,EAC1G,kBAAkB,CAAC,cAAc,CAAC,CAAC;AACvC,gBAAA,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC;gBACpC,6BAA6B,IAAI,cAAc,CAAC;AACnD,aAAA;AACD,YAAA,wBAAwB,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;AACxD,YAAA,qBAAqB,GAAG,UAAU,GAAG,6BAA6B,GAAG,6BAA6B,CAAC;AACtG,SAAA;;;;;AAMD,QAAA,IAAI,qBAAqB,GAAG,kBAAkB,CAAC,cAAc,EAAE;YAC3D,IAAI,4BAA4B,GAAG,CAAC,CAAC;AACrC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACvC,gBAAA,4BAA4B,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACvE,aAAA;YAED,MAAM,gCAAgC,GAAG,UAAU,GAAG,4BAA4B,GAAG,0BAA0B,CAAC,WAAW,CAAC;AAC5H,YAAA,MAAM,iCAAiC,GAAG,UAAU,GAAG,4BAA4B,GAAG,wBAAwB,CAAC;YAE/G,IAAI,8BAA8B,GAAG,CAAC,CAAC;AACvC,YAAA,KAAK,IAAI,CAAC,GAAG,eAAe,EAAE,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAC3B,iCAAiC,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,gCAAgC,CAAC,EAC5G,kBAAkB,CAAC,cAAc,CAAC,CAAC;AACvC,gBAAA,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC;gBACpC,8BAA8B,IAAI,cAAc,CAAC;AACpD,aAAA;AACD,YAAA,wBAAwB,GAAG,UAAU,GAAG,4BAA4B,GAAG,8BAA8B,CAAC;AACtG,YAAA,qBAAqB,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;AAC5D,SAAA;AAED,QAAA,eAAe,CAAC,WAAW,CAAC,GAAG,wBAAwB,CAAC;AACxD,QAAA,eAAe,CAAC,eAAe,CAAC,GAAG,qBAAqB,CAAC;;QAGzD,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,IAAG;YAChC,MAAM,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AAC7C,YAAA,KAAK,EAAE,CAAC;AACZ,SAAC,CAAC,CAAC;;QAGH,UAAU,CAAC,MAAK;YACZ,KAAK,GAAG,CAAC,CAAC;AACV,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,IAAG;AAChC,gBAAA,MAAM,CAAC,eAAe,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,WAAW,CAAC;AACzH,gBAAA,KAAK,EAAE,CAAC;AACZ,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACnC;AAED;;AAEG;AACI,IAAA,WAAW,CAAC,MAAgC,EAAA;QAC/C,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,IAAG;YAC9B,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE;gBAChD,IAAI,IAAI,KAAK,MAAM,EAAE;AACjB,oBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,iBAAiB,CAAC,IAAI,EAAE;AAC1C,wBAAA,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC;AAC5C,qBAAA;AAAM,yBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,iBAAiB,CAAC,MAAM,EAAE;AACnD,wBAAA,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC;AAC7C,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC;AAC5C,qBAAA;AAED,oBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;AAC1C,oBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;oBACvB,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,IAAI,IAAI,CAAC,mCAAmC,EAAE;AAC1C,wBAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;AACzC,qBAAA;AACD,oBAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAE1C,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AACnG,oBAAA,IAAI,OAAO,EAAE;AACT,wBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;wBAC7D,UAAU,CACN,MAAK;4BACD,OAAO,CAAC,KAAK,EAAE,CAAC;yBACnB,EACD,GAAG,CAAC,CAAC;;;;AAIZ,qBAAA;AACJ,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC;AAC1C,iBAAA;AACJ,aAAA;AAED,YAAA,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;AAC3E,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;KAChD;AAED;;AAEG;IACI,cAAc,CAAC,KAAiB,EAAE,IAA2B,EAAA;QAChE,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACrC,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KAC9C;AAED;;AAEG;AACI,IAAA,0BAA0B,CAAC,iBAA2B,EAAA;QACzD,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,EAAE;gBAC7D,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,oBAAA,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACvC,iBAAA;AAAM,qBAAA;AACH,oBAAA,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;AAClC,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC7B,IAAI,IAAI,CAAC,UAAU,EAAE;wBACjB,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,qBAAA;AAAM,yBAAA;AACH,wBAAA,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrC,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,aAAa,EAAE;AACf,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChD,IAAI,KAAK,GAAG,KAAK,CAAC;gBAClB,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE;oBAC9C,KAAK,GAAG,IAAI,CAAC;AAChB,iBAAA;AAED,gBAAA,IAAI,KAAK,EAAE;AACP,oBAAA,IAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAE3C,oBAAA,IAAI,iBAAiB,EAAE;wBACnB,UAAU,CAAC,MAAK;AACZ,4BAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;AACzE,4BAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;4BAC/D,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,aAAa,CAAC,uCAAuC,CAAC,CAAC;AACrG,4BAAA,IAAI,mBAAmB,EAAE;AACrB,gCAAA,MAAM,eAAe,GAAG,mBAAmB,CAAC,qBAAqB,EAAE,CAAC,GAAG;AACjE,sCAAA,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;AACpD,gCAAA,sBAAsB,CAAC,SAAS,GAAG,eAAe,GAAG,iBAAiB,CAAC,SAAS;AAC1E,sCAAA,sBAAsB,CAAC,YAAY,GAAG,CAAC,CAAC;AACjD,6BAAA;AACL,yBAAC,CAAC,CAAC;AACN,qBAAA;oBAED,MAAM;AACT,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;IACI,qBAAqB,CAAC,IAA2B,EAAE,cAAwB,EAAA;;AAE9E,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB,CAAC,WAAW,EAAE;AACrD,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB,CAAC,QAAQ,EAAE;gBAClD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AACxG,gBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACpB,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,cAAc,EAAE;AACjB,wBAAA,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,qBAAA;AACJ,iBAAA;AACD,gBAAA,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,WAAW,EAAE;oBACvF,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1C,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxD,gBAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;oBACd,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxC,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC7C,IAAI,CAAC,cAAc,EAAE;AACjB,wBAAA,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC3C,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,IACpD,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/E,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,gBAAA,IAAI,QAAQ,EAAE;AACV,oBAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;wBACd,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxC,wBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACpD,qBAAA;AACJ,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;wBACd,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,wBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAClD,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc,EAAE;AAC9B,gBAAA,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,aAAA;AACJ,SAAA;;;AAID,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAExF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KACrD;AAED;;AAEG;IACI,wBAAwB,GAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;gBAC7D,IAAI,CAAC,SAAS,EAAE,CAAC;AACpB,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAG;oBAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5C,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACvB,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC;AAC1D,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,IAAG;AAC9B,gBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AACrD,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACrD,SAAA;KACJ;AAED;;AAEG;AACI,IAAA,cAAc,CAAC,IAA2B,EAAA;QAC7C,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB,CAAC,WAAW,EAAE;AACrD,gBAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5E,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,EAAE;gBACpE,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,IAAG;AACvD,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC1E,oBAAA,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,IAAI;4BACvE,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAC5D,iBAAC,CAAC,CAAC;AAEH,gBAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;oBACzB,QAAQ,GAAG,KAAK,CAAC;AACpB,iBAAA;AAAM,qBAAA;AACH,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,wBAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;4BACtD,QAAQ,GAAG,KAAK,CAAC;4BACjB,MAAM;AACT,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,EAAE;gBAC7D,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9C,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACjH,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC;KACnB;AAED;;AAEG;AACI,IAAA,eAAe,CAAC,KAAa,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;KACxC;AAED;;;AAGG;AACH,IAAA,IACW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC;KACvD;IACD,IAAW,YAAY,CAAC,KAAa,EAAA;QACjC,IAAI,KAAK,IAAI,CAAC,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AAC5B,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACxB,aAAA;AAED,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,SAAA;KACJ;AAED;;;AAGG;IACI,iBAAiB,CAAC,GAAQ,EAAE,IAAY,EAAA;QAC3C,IAAI,GAAG,IAAI,IAAI,EAAE;YACb,MAAM,YAAY,GAAa,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/C,YAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,gBAAA,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,aAAA;YAED,IAAI,UAAU,GAAG,GAAG,CAAC;AACrB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAA,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE;oBACjD,MAAM;AACT,iBAAA;AACJ,aAAA;AACD,YAAA,OAAO,UAAU,CAAC;AACrB,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;IACI,0BAA0B,GAAA;QAC7B,OAAO,IAAI,CAAC,uBAAuB,CAAC;KACvC;AAEO,IAAA,0BAA0B,CAAC,KAAa,EAAA;AAC5C,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC;KAC9D;AAED;;AAEG;IACI,yBAAyB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC;KACxG;AAEO,IAAA,uBAAuB,CAAC,KAAa,EAAE,WAAA,GAAuB,IAAI,EAAA;AACtE,QAAA,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;KACxD;AAED;;;;AAIG;AACI,IAAA,aAAa,CAAC,QAAgB,EAAA;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,gBAAgB;;QAEzD,CAAqI,kIAAA,EAAA,QAAQ,CAAyC,uCAAA,CAAA,CAAC,CAAC;AAE5L,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;AAEG;IACI,yBAAyB,CAAC,cAAuB,IAAI,EAAA;AACxD,QAAA,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;KAChD;AAED;;AAEG;IACI,iCAAiC,CAAC,cAAuB,IAAI,EAAA;AAChE,QAAA,MAAM,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC,0BAA0B,EAAE,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjG,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,KAAK,IAAI,CAAC,EAAE;YACZ,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AACpE,SAAA;AAED,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;KACvD;AAED;;AAEG;IACI,0BAA0B,CAAC,cAAuB,IAAI,EAAA;AACzD,QAAA,MAAM,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC,0BAA0B,EAAE,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEjG,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,KAAK,IAAI,CAAC,EAAE;AACZ,YAAA,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;AACxB,SAAA;AAED,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;KACvD;AAED;;;AAGG;AAEI,IAAA,sBAAsB,CAAC,WAAW,GAAG,IAAI,EAAE,WAAoB,EAAA;AAClE,QAAA,IAAI,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC,0BAA0B,EAAE,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;AAE/F,QAAA,IAAI,WAAW,EAAE;YACb,KAAK,GAAG,WAAW,CAAC;AACvB,SAAA;QAED,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,KAAK,IAAI,CAAC,EAAE;AACZ,YAAA,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;AACxB,SAAA;AAED,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;KACvD;AAED;;AAEG;IACI,6BAA6B,CAAC,cAAuB,IAAI,EAAA;AAC5D,QAAA,MAAM,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC,0BAA0B,EAAE,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjG,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AAEjE,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;KACvD;AAED;;AAEG;IACI,wBAAwB,CAAC,cAAuB,IAAI,EAAA;AACvD,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;KAC5E;AAED;;;AAGG;IACI,+BAA+B,CAAC,SAA+C,EAAE,WAAoB,EAAA;AACxG,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,IAAI,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACvC,gBAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAC3E,MAAM;AACT,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;AACK,IAAA,2BAA2B,CAAC,KAAa,EAAE,WAAoB,EAAE,UAAmB,IAAI,EAAA;QAC5F,IAAI,KAAK,GAAG,CAAC,EAAE;YACX,KAAK,GAAG,CAAC,CAAC;AACb,SAAA;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;AACzC,SAAA;AAED,QAAA,IAAI,WAAW,EAAE;AACb,YAAA,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACvC,SAAA;QAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;AAChD,eAAA,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ;AAC3D,eAAA,IAAI,CAAC,oCAAoC,IAAI,WAAW,EAAE;AAC7D,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,SAAA;AAED,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;QACzE,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,YAAY,GAAG,sBAAsB,CAAC,YAAY,CAAC;QACvG,MAAM,yBAAyB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,4BAA4B,CAAC;QAEhG,MAAM,6BAA6B,GAAG,yBAAyB,GAAG,sBAAsB,CAAC,SAAS,GAAG,oBAAoB;cACnH,IAAI,CAAC,4BAA4B,CAAC;AAExC,QAAA,IAAI,uBAAuB,GAAG,CAAC,CAAC,CAAC;AACjC,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,6BAA6B,GAAG,IAAI,CAAC,4BAA4B,GAAG,CAAC,CAAC,EAAE;YAC5F,uBAAuB,GAAG,KAAK,GAAG,IAAI,CAAC,4BAA4B,GAAG,CAAC,CAAC;AAC3E,SAAA;QAED,IAAI,KAAK,IAAI,6BAA6B,EAAE;YACxC,uBAAuB,GAAG,KAAK,CAAC;AACnC,SAAA;;QAGD,IAAI,uBAAuB,GAAG,CAAC,EAAE;;AAE7B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,IAAI,uBAAuB,GAAG,yBAAyB,CAAC,CAAC,CAAC;YAE3G,IAAI,IAAI,CAAC,WAAW,EAAE;;;AAGlB,gBAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,oBAAoB,GAAG,yBAAyB,CAAC,CAAC;;;;;AAMrG,gBAAA,IAAI,CAAC,4BAA4B,GAAG,uBAAuB,GAAG,mBAAmB,CAAC;gBAClF,IAAI,uBAAuB,GAAG,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,4BAA4B;AAC7F,sBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,oBAAA,IAAI,CAAC,4BAA4B,GAAG,CAAC,CAAC;AACzC,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,4BAA4B,GAAG,CAAC,CAAC;AACzC,aAAA;;YAGD,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC;AAChE,YAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7C,SAAA;AAAM,aAAA,IAAI,OAAO,EAAE;AAChB,YAAA,IAAI,WAAW,EAAE;gBACb,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChC,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACpC,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,oBAAoB,CAAC,KAAa,EAAA;AACtC,QAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACrC;AAEM,IAAA,6BAA6B,CAAC,YAAmC,EAAA;AACpE,QAAA,IAAI,MAAc,CAAC;AAEnB,QAAA,IAAI,YAAY,CAAC,IAAI,KAAK,yBAAyB,CAAC,WAAW,EAAE;YAC7D,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAChE,IAAI,eAAe,KAAK,SAAS,EAAE;AAC/B,gBAAA,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC;AACvC,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,YAAY,CAAC,IAAI,KAAK,yBAAyB,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE;AAC9F,YAAA,MAAM,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC7E,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAEM,IAAA,kCAAkC,CAAC,YAAmC,EAAA;AACzE,QAAA,IAAI,MAAc,CAAC;QACnB,QAAQ,YAAY,CAAC,IAAI;YACrB,KAAK,yBAAyB,CAAC,QAAQ;gBACnC,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;gBACxF,MAAM,GAAG,YAAY,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB;sBACnG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBACtG,MAAM;YACV,KAAK,yBAAyB,CAAC,WAAW;AACtC,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBAChE,MAAM,GAAG,cAAc,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc;sBAC/F,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBAClG,MAAM;AACb,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;IAEM,qBAAqB,CAAC,YAAmC,EAAE,KAAa,EAAA;QAC3E,UAAU,CAAC,MAAK;AACZ,YAAA,MAAM,gBAAgB,GAAqB,YAAY,CAAC,IAAI,CAAC;YAE7D,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9G,gBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACnG,gBAAA,IAAI,gBAAgB,KAAK,CAAC,CAAC,EAAE;oBACzB,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;AACvE,iBAAA;gBACD,IAAI,KAAK,GAAG,IAAI,CAAC;AACjB,gBAAA,KAAK,MAAM,QAAQ,IAAI,gBAAgB,CAAC,gBAAgB,EAAE;oBACtD,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AAC5D,wBAAA,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;4BAC7C,KAAK,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;4BAC1D,MAAM;AACT,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACD,gBAAA,IAAI,KAAK,EAAE;oBACP,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1E,iBAAA;gBACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC1D,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAEM,0BAA0B,GAAA;QAC7B,IAAI,CAAC,qBAAqB,GAAG;AACzB,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,YAAY,EAAE,EAAE;SACnB,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;KAC1D;AAEM,IAAA,wBAAwB,CAAC,YAAmC,EAAE,KAAa,EAAE,KAAU,EAAA;AAC1F,QAAA,MAAM,gBAAgB,GAAqB,YAAY,CAAC,IAAI,CAAC;AAC7D,QAAA,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAEjD,QAAA,YAAY,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AAC1B,YAAA,IAAI,MAAM,CAAC,KAAK,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACnF,gBAAA,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC;oBAC/B,KAAK,EAAE,MAAM,CAAC,MAAM;oBACpB,KAAK,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;AACzD,iBAAA,CAAC,CAAC;AACN,aAAA;AACL,SAAC,CAAC,CAAC;KACN;;AAGM,IAAA,kBAAkB,CAAC,YAAmC,EAAA;QACzD,OAAO,YAAY,CAAC,gBAAgB,IAAI,YAAY,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;KACpF;AAEM,IAAA,+BAA+B,CAAC,YAAmC,EAAA;AACtE,QAAA,OAAO,IAAI,CAAC,6BAA6B,CAAC,+BAA+B,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAC5G;AAEM,IAAA,yBAAyB,CAAC,MAAgC,EAAA;QAC7D,OAAO,IAAI,CAAC,6BAA6B,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;KAC/E;AAEM,IAAA,cAAc,CAAC,oBAA8B,EAAA;AAChD,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,EAAE;AAC7D,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACvB,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,SAAA;QAED,IAAI,CAAC,oBAAoB,EAAE;YACvB,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC,SAAA;KACJ;IAGM,4CAA4C,CAAC,UAAoB,EAAE,WAAqB,EAAA;QAC3F,IAAI,IAAI,CAAC,gCAAgC;aACpC,4CAA4C,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,CAAC,EAAE;AAErG,YAAA,IAAI,UAAU,EAAE;AACZ,gBAAA,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD,aAAA;AAED,YAAA,IAAI,WAAW,EAAE;gBACb,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,aAAA;AAED,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,IAAI,UAAU,EAAE;AACZ,YAAA,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1D,SAAA;AAED,QAAA,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;IAEM,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;KACvC;AAEM,IAAA,cAAc,CAAC,YAAsB,EACxC,mBAAuD,EACvD,qBAAgD,EAChD,oBAA0D,EAC1D,OAAO,GAAG,IAAI,EACd,+BAAyC,EAAE,cAAwB,EAAA;QACnE,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE;AAC9D,YAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACtD,SAAA;QAED,IAAI,CAAC,kBAAkB,GAAG;AACtB,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,uBAAuB,EAAE,CAAC;AAC1B,YAAA,wBAAwB,EAAE,CAAC;AAC3B,YAAA,cAAc,EAAE,qBAAqB;YACrC,2BAA2B,EAAE,IAAI,IAAI,EAAE;SAC1C,CAAC;AAEF,QAAA,IAAI,CAAC,oBAAoB,CACrB,mBAAmB,EACnB,oBAAoB,EACpB,OAAO,EACP,+BAA+B,EAC/B,IAAI,EACJ,cAAc,CAAC,CAAC;KACvB;IAEM,2BAA2B,GAAA;QAC9B,OAAO,IAAI,CAAC,4BAA4B,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB;AAChH,cAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;KAC/E;IAES,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,gBAAgB;AACnB,SAAA,CAAC,CAAC;KACN;IAEO,oBAAoB,CAAC,mBAAuD,EAChF,oBAA0D,EAC1D,OAAgB,EAAE,+BAAyC,EAC3D,aAAqC,EAAE,cAAwB,EAAA;QAC/D,UAAU,CACN,MAAK;YACD,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,aAAa,GAA0B,IAAI,CAAC;AAChD,YAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;AAC/F,gBAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC/F,cAAc,GAAG,IAAI,CAAC;AAEtB,oBAAA,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;AAClF,oBAAA,IAAI,KAAK;AACL,wBAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,CAAC,iBAAiB,EAAE,EAAE;wBAC3G,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;AACjC,+BAAA,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AACtG,4BAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC5D,yBAAA;wBACD,SAAS,GAAG,IAAI,CAAC;wBAEjB,IAAI,CAAC,+BAA+B,EAAE;AAClC,4BAAA,IAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC9C,yBAAA;AACD,wBAAA,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAEtC,wBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,KAAK,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AACrG,4BAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,KAAK,CAAC;AAC1C,4BAAA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC/C,gCAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,6BAAA;AACD,4BAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;AACtC,4BAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE;AACxC,gCAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAChD,6BAAA;4BACD,cAAc,GAAG,KAAK,CAAC;4BACvB,MAAM;AACT,yBAAA;AAED,wBAAA,IAAI,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AAC5E,4BAAA,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,CAAC;4BAClD,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,GAAG,CAAC,GAAG,CAAC,CAAC;4BACzD,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,GAAG,IAAI,IAAI,EAAE,CAAC;AACpE,yBAAA;wBAED,MAAM;AACT,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,CAAC,aAAa;+BACX,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC;+BACrF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CACjD,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,EAAE;AACjF,4BAAA,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACzC,yBAAA;AACJ,qBAAA;AAED,oBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,GAAG,CAAC;AACjD,2BAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK;AAC1B,gCAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;wBACpF,MAAM;AACT,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,cAAc,EAAE;AAChB,gBAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;AACvB,gBAAA,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE;AACvG,oBAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,KAAK,CAAC;AAC1C,oBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE;AACxC,wBAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC9C,wBAAA,IAAI,aAAa,EAAE;AACf,4BAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACrC,4BAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;AACzC,yBAAA;AAAM,6BAAA,IAAI,aAAa,EAAE;AACtB,4BAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACrC,4BAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;AACzC,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,oBAAoB,CACrB,mBAAmB,EACnB,oBAAoB,EACpB,OAAO,EACP,+BAA+B,EAC/B,aAAa,EACb,cAAc,CAAC,CAAC;AACvB,iBAAA;AACJ,aAAA;SACJ,EACD,GAAG,CAAC,CAAC;KACZ;IAEO,YAAY,GAAA;QAChB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACzD,UAAU,CAAC,MAAK;YACZ,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACjC,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAEO,SAAS,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,EAAE;YACvC,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ;gBACzD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5F,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,iBAAiB,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAErF,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,IAAI,0BAA0B,GAAG,IAAI,CAAC;gBACtC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;oBAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC/C,oBAAA,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE;wBAC5B,0BAA0B,GAAG,YAAY,CAAC;AAC1C,wBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,qBAAA;AACJ,iBAAA;gBAED,IAAI,2BAA2B,GAAG,KAAK,CAAC;AAExC,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBAClB,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACf,IAAI,oBAAoB,GAAG,IAAI,CAAC;AAChC,wBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,4BAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gCACvD,oBAAoB,GAAG,KAAK,CAAC;gCAC7B,MAAM;AACT,6BAAA;AACJ,yBAAA;AACD,wBAAA,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,kBAAkB,EAAE;4BAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;4BAClD,OAAO;AACV,yBAAA;AAAM,6BAAA;4BACH,IAAI,CAAC,oBAAoB,EAAE;AACvB,gCAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oCAChD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,yBAAyB,CAAC,MAAM,EAAE,CAAC;AACjG,iCAAA;AACJ,6BAAA;AAAM,iCAAA;gCACH,2BAA2B,GAAG,IAAI,CAAC;AACtC,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AAED,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACnB,oBAAA,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAK;wBAChF,2BAA2B,GAAG,IAAI,CAAC;qBACtC;AACJ,iBAAA,CAAC,CAAC;gBAEH,IAAI,2BAA2B,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACzE,oBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,wBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,4BAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAClD,gCAAA,OAAO,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAClF,6BAAC,CAAC,CAAC;AACN,yBAAA;AAAM,6BAAA;AACH,4BAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;gCAClD,OAAO,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAClG,6BAAC,CAAC,CAAC;AACN,yBAAA;AACJ,qBAAA;AAAM,yBAAA;;;;;AAKH,wBAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,wBAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,wBAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;4BACrB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;4BAC5C,IAAI,WAAW,CAAC,IAAI,EAAE;gCAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,6BAAA;4BACD,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,4BAAA,IAAI,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;4BACpC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;;;;;gCAK9B,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;AAC3C,oCAAA,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;AAC3C,wCAAA,OAAO,CAAC,CAAC;AACZ,qCAAA;AAAM,yCAAA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;wCAClD,OAAO,CAAC,CAAC,CAAC;AACb,qCAAA;AACJ,iCAAA;AAAM,qCAAA;AACH,oCAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1E,oCAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAE1E,oCAAA,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE;AAC9C,wCAAA,OAAO,CAAC,CAAC;AACZ,qCAAA;AAAM,yCAAA,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE;wCACrD,OAAO,CAAC,CAAC,CAAC;AACb,qCAAA;AACJ,iCAAA;gCACD,OAAO,CAAC,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC7F,6BAAC,CAAC,CAAC;AACH,4BAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAG;AACpB,gCAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,6BAAC,CAAC,CAAC;AACN,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AAED,gBAAA,IAAI,0BAA0B,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACvD,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AACvD,iBAAA;AACJ,aAAA;AAAM,iBAAA;;;gBAGH,MAAM,mBAAmB,GAA4B,EAAE,CAAC;AACxD,gBAAA,IAAI,oBAA6C,CAAC;AAClD,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,oBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,yBAAyB,CAAC,WAAW,EAAE;AACtE,wBAAA,IAAI,oBAAoB,EAAE;4BACtB,oBAAoB,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACtD,gCAAA,OAAO,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAClF,6BAAC,CAAC,CAAC;AACH,4BAAA,oBAAoB,CAAC,OAAO,CAAC,IAAI,IAAG;AAChC,gCAAA,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,6BAAC,CAAC,CAAC;AACN,yBAAA;wBACD,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;wBAChD,oBAAoB,GAAG,EAAE,CAAC;AAC7B,qBAAA;AAAM,yBAAA;wBACH,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,qBAAA;AACJ,iBAAA;AACD,gBAAA,IAAI,oBAAoB,EAAE;oBACtB,oBAAoB,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACtD,wBAAA,OAAO,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAClF,qBAAC,CAAC,CAAC;AACH,oBAAA,oBAAoB,CAAC,OAAO,CAAC,IAAI,IAAG;AAChC,wBAAA,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,qBAAC,CAAC,CAAC;AACN,iBAAA;AACD,gBAAA,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC;AAC5C,aAAA;YACD,IAAI,CAAC,wCAAwC,EAAE,CAAC;AACnD,SAAA;KACJ;AAEO,IAAA,0BAA0B,CAAC,CAAoB,EAAE,CAAoB,EAAE,KAAa,EAAA;QACxF,IAAI,MAAM,GAAG,CAAC,CAAC;AAEf,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;YACV,MAAM,GAAG,CAAC,CAAC;AACd,SAAA;AAAM,aAAA,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;YAChB,MAAM,GAAG,CAAC,CAAC;AACd,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;YAChB,MAAM,GAAG,CAAC,CAAC,CAAC;AACf,SAAA;AAAM,aAAA;YACH,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC9C,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAE9C,YAAA,MAAM,QAAQ,GAAG,OAAO,MAAM,CAAC;YAC/B,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACvB,gBAAA,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AAC9D,gBAAA,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;gBAE9D,IAAI,MAAM,GAAG,MAAM,EAAE;oBACjB,MAAM,GAAG,CAAC,CAAC;AACd,iBAAA;qBAAM,IAAI,MAAM,GAAG,MAAM,EAAE;oBACxB,MAAM,GAAG,CAAC,CAAC,CAAC;AACf,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;AAC5E,gBAAA,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;;;;AAK5E,gBAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC1B,oBAAA,MAAM,QAAQ,GAAG,CAAC,IAAY,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC;;oBAG9D,IAAI,KAAK,GAAG,CAAC,CAAC;oBACd,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;wBACnD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE;4BACjC,MAAM;AACT,yBAAA;AACD,wBAAA,KAAK,EAAE,CAAC;AACX,qBAAA;;;;;AAMD,oBAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AACpD,wBAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACnE,wBAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;wBACnE,IAAI,OAAO,GAAG,OAAO,EAAE;4BACnB,MAAM,GAAG,CAAC,CAAC;AACd,yBAAA;6BAAM,IAAI,OAAO,GAAG,OAAO,EAAE;4BAC1B,MAAM,GAAG,CAAC,CAAC,CAAC;AACf,yBAAA;AACJ,qBAAA;AAAM,yBAAA;wBACH,IAAI,MAAM,GAAG,MAAM,EAAE;4BACjB,MAAM,GAAG,CAAC,CAAC;AACd,yBAAA;6BAAM,IAAI,MAAM,GAAG,MAAM,EAAE;4BACxB,MAAM,GAAG,CAAC,CAAC,CAAC;AACf,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AAAM,qBAAA;oBACH,IAAI,MAAM,GAAG,MAAM,EAAE;wBACjB,MAAM,GAAG,CAAC,CAAC;AACd,qBAAA;yBAAM,IAAI,MAAM,GAAG,MAAM,EAAE;wBACxB,MAAM,GAAG,CAAC,CAAC,CAAC;AACf,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;IAEO,mBAAmB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,YAAY,CAAC;KACrH;IAEO,cAAc,GAAA;AAClB,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAChC,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAClC,SAAA;QACD,IAAI,mBAAmB,KAAK,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACpF,YAAA,IAAI,mBAAmB,EAAE;AACrB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,GAAG,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;AAC3G,gBAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;AAC3F,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;gBAC3D,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AAC5D,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,0BAA0B,GAAG,mBAAmB,CAAC;KACzD;IAEO,uBAAuB,GAAA;QAC3B,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACjE,QAAA,SAAS,CAAC,SAAS,GAAG,sEAAsE,CAAC;AAC7F,QAAA,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;QAChC,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QACrE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,wBAAwB,GAAG,cAAc,CAAC;KAClD;IAEO,uBAAuB,CAAC,gBAA0B,EAAE,WAAqB,EAAA;AAC7E,QAAA,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,aAAa,EAAE;;AAEnD,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;;AAGzE,YAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,UAAU;AAC/C,kBAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,sBAAsB,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;AAC3F,kBAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YAEhC,IAAI,sBAAsB,CAAC,YAAY,EAAE;gBACrC,MAAM,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,GAAG,sBAAsB,CAAC,YAAY,CAAC;AAC/F,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;AAChG,aAAA;YAED,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,cAAc,GAAG,KAAK,CAAC;YAE3B,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAC1B,YAAA,IAAI,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAEhD,YAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC/B,gBAAA,IAAI,IAAI,CAAC,WAAW,IAAI,gBAAgB,EAAE;oBACtC,IAAI,CAAC,aAAa,GAAG,CAAC,sBAAsB,CAAC,YAAY,GAAG,sBAAsB,CAAC,YAAY;AACzF,0BAAA,IAAI,CAAC,iCAAiC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,4BAA4B,CAAC,CAAC;AAC/G,oBAAA,UAAU,GAAG,IAAI,CAAC,iCAAiC,CAAC;AACpD,oBAAA,IAAI,CAAC,4BAA4B,GAAG,CAAC,CAAC;AACtC,oBAAA,sBAAsB,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;AACzD,iBAAA;AAAM,qBAAA;;;;AAIH,oBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,sBAAsB,CAAC,SAAS,EAAE;AACrE,wBAAA,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC,SAAS,CAAC;AACzD,qBAAA;AAED,oBAAA,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,4BAA4B,IAAI,IAAI,CAAC,aAAa;2BACxG,sBAAsB,CAAC,YAAY,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;oBAClF,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,4BAA4B,CAAC,CAAC;oBAChF,IAAI,UAAU,GAAG,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;wBAC5E,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,4BAA4B,CAAC;wBAC3E,cAAc,GAAG,IAAI,CAAC;AACzB,qBAAA;AACD,oBAAA,IAAI,CAAC,iCAAiC,GAAG,UAAU,CAAC;AACvD,iBAAA;;AAGD,gBAAA,IAAI,sBAAsB,CAAC,YAAY,IAAI,sBAAsB,CAAC,YAAY,EAAE;oBAC5E,UAAU,GAAG,CAAC,CAAC;AAClB,iBAAA;gBAED,iBAAiB,GAAG,UAAU,GAAG,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,aAAa,CAAC;;;AAGxF,gBAAA,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,4BAA4B;sBACxG,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAClE,aAAA;YAED,IAAI,cAAc,GAAG,KAAK,CAAC;YAE3B,IAAI,IAAI,CAAC,QAAQ,EAAE;;AAEf,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACjE,IAAI,mBAAmB,GAAG,aAAa,CAAC;AACxC,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,aAAa,CAAC;gBAC5F,IAAI,oBAAoB,GAAG,cAAc,CAAC;AAE1C,gBAAA,KAAK,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC,GAAG,aAAa,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;oBACjE,MAAM,cAAc,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/E,oBAAA,IAAI,CAAC,cAAc,IAAI,cAAc,EAAE;wBACnC,cAAc,GAAG,IAAI,CAAC;wBACtB,mBAAmB,GAAG,CAAC,CAAC;AAC3B,qBAAA;AACD,oBAAA,IAAI,cAAc,IAAI,CAAC,cAAc,EAAE;wBACnC,MAAM;AACT,qBAAA;AACD,oBAAA,oBAAoB,GAAG,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC;AACtD,iBAAA;gBAED,IAAI,oBAAoB,KAAK,CAAC,EAAE;oBAC5B,cAAc,GAAG,KAAK,CAAC;AAC1B,iBAAA;AAED,gBAAA,IAAI,cAAc,EAAE;oBAChB,IAAI,SAAS,GAAG,CAAC,CAAC;oBAClB,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,wBAAA,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ;4BAC5B,KAAK,iBAAiB,CAAC,MAAM;gCACzB,SAAS,GAAG,CAAC,CAAC;gCACd,MAAM;4BACV,KAAK,iBAAiB,CAAC,OAAO;gCAC1B,SAAS,GAAG,CAAC,CAAC,CAAC;gCACf,MAAM;AACV,4BAAA;gCACI,SAAS,GAAG,CAAC,CAAC;gCACd,MAAM;AACb,yBAAA;AACJ,qBAAA;AAED,oBAAA,MAAM,aAAa,GAAG;AAClB,wBAAA,KAAK,EAAE,mBAAmB;AAC1B,wBAAA,MAAM,EAAE,oBAAoB;AAC5B,wBAAA,iBAAiB,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAI;AACnC,4BAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AACvB,gCAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,oCAAA,IAAI,CAAC,aAAa,CAAC,mBAAmB,GAAG,CAAC,CAAC,GAAG;AAC1C,wCAAA,KAAK,EAAE,mBAAmB,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,yBAAyB,CAAC,MAAM;qCACzF,CAAC;AACL,iCAAA;gCACD,IAAI,CAAC,uBAAuB,EAAE,CAAC;;AAG/B,gCAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;gCAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;;;gCAIrB,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,6BAAA;yBACJ;AACD,wBAAA,SAAS,EAAE,SAAS;AACpB,wBAAA,SAAS,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI;qBAC/G,CAAC;AACF,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAEzC,IAAI,oBAAoB,IAAI,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,aAAa,EAAE;AAChF,wBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACtB,qBAAA;AACJ,iBAAA;AACJ,aAAA;YAED,IAAI,CAAC,cAAc,EAAE;;;;;gBAKjB,IAAI,MAAM,GAAG,sBAAsB,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;;;;;AAM/D,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,sBAAsB,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE;oBAClF,MAAM,GAAG,CAAC,CAAC;AACd,iBAAA;AAED,gBAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;oBAC/B,IAAI,CAAC,eAAe,GAAG,sBAAsB,CAAC,SAAS,GAAG,MAAM,CAAC;AAEjE,oBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;oBAC5D,IAAI,iBAAiB,GAAG,UAAU,GAAG,IAAI,CAAC,4BAA4B,GAAG,CAAC;AACnE,2BAAA,iBAAiB,GAAG,UAAU,GAAG,IAAI,CAAC,4BAA4B,EAAE;AACvE,wBAAA,IAAI,CAAC,eAAe,GAAG,sBAAsB,CAAC,SAAS;AACjD,8BAAA,CAAC,iBAAiB,GAAG,UAAU,GAAG,IAAI,CAAC,4BAA4B,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC;AACnG,qBAAA;;;;;AAMD,oBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,sBAAsB,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS;AAC7E,2BAAA,sBAAsB,CAAC,SAAS;4BACnC,sBAAsB,CAAC,YAAY,GAAG,sBAAsB,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC;AAC3F,2BAAA,cAAc,EAAE;AACnB,wBAAA,IAAI,CAAC,eAAe,GAAG,sBAAsB,CAAC,YAAY;8BACpD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;AACvE,qBAAA;oBAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AACtD,oBAAA,IAAI,WAAW,EAAE;AACb,wBAAA,IAAI,CAAC,4BAA4B,GAAG,CAAC,CAAC;AACzC,qBAAA;AACD,oBAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,iBAAiB,CAAC,CAAC,CAAC;AACjF,iBAAA;AAED,gBAAA,IAAI,CAAC,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AACpE,wBAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;AACjF,uBAAA,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE;;;;;AAKnC,oBAAA,IAAI,CAAC,0BAA0B,GAAG,EAAE,CAAC;AACrC,oBAAA,IAAI,CAAC,+BAA+B,GAAG,EAAE,CAAC;AAC1C,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU;AAC5B,4BAAC,sBAAsB,CAAC,YAAY,GAAG,sBAAsB,CAAC,YAAY;AACtE,+BAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;oBAChD,IAAI,IAAI,CAAC,YAAY,EAAE;wBACnB,KAAK,IAAI,CAAC,GAAG,iBAAiB,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;4BACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;4BAC5B,IAAI,KAAK,GAAG,UAAU,EAAE;gCACpB,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;oCACjD,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,oCAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC;wCACjC,IAAI,EAAE,mBAAmB,CAAC,IAAI;AAC9B,wCAAA,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI;wCAChF,KAAK,EAAE,mBAAmB,CAAC,KAAK;wCAChC,WAAW,EAAE,mBAAmB,CAAC,WAAW;wCAC5C,IAAI,EAAE,mBAAmB,CAAC,IAAI;AAC9B,wCAAA,KAAK,EAAE,KAAK;wCACZ,aAAa,EAAE,mBAAmB,CAAC,aAAa;wCAChD,OAAO,EAAE,mBAAmB,CAAC,OAAO;wCACpC,gBAAgB,EAAE,mBAAmB,CAAC,gBAAgB;AACzD,qCAAA,CAAC,CAAC;AACN,iCAAA;AAAM,qCAAA;oCACH,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAClG,iCAAA;AACJ,6BAAA;AACJ,yBAAA;AACJ,qBAAA;oBACD,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE;wBAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC5B,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;4BACjD,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,4BAAA,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC;gCACtC,IAAI,EAAE,mBAAmB,CAAC,IAAI;AAC9B,gCAAA,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI;gCAChF,KAAK,EAAE,mBAAmB,CAAC,KAAK;gCAChC,WAAW,EAAE,mBAAmB,CAAC,WAAW;gCAC5C,IAAI,EAAE,mBAAmB,CAAC,IAAI;AAC9B,gCAAA,KAAK,EAAE,KAAK;gCACZ,aAAa,EAAE,mBAAmB,CAAC,aAAa;gCAChD,OAAO,EAAE,mBAAmB,CAAC,OAAO;gCACpC,gBAAgB,EAAE,mBAAmB,CAAC,gBAAgB;AACzD,6BAAA,CAAC,CAAC;AACN,yBAAA;AAAM,6BAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,4BAA4B,EAAE;4BACzF,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACvG,yBAAA;AACJ,qBAAA;AACJ,iBAAA;gBACD,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACpE,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB,aAAA;AAED,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;oBACvB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACnC,iBAAA;AACJ,aAAA;YAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,gBAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa;oBAClC,IAAI,CAAC,6BAA6B,CAAC,cAAc,CAAc,QAAQ,CAAC,aAAa,CAAC,EAAE;;;oBAGxF,OAAO;AACV,iBAAA;AACD,gBAAA,IAAI,IAAI,CAAC,uBAAuB,KAAK,IAAI,CAAC,sBAAsB,EAAE;AAC9D,oBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAC3D,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChC,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;IAEO,aAAa,GAAA;AACjB,QAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAC1D,QAAA,MAAM,mBAAmB,IAAI,wBAAwB,IAAI,wBAAwB,CAAC,QAAQ;AACtF,YAAA,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,IAAI,CAAC,YAAY,YAAY,wBAAwB,EAAE;AACvD,oBAAA,MAAM,eAAe,GAA6B,IAAI,CAAC,YAAY,CAAC;AACpE,oBAAA,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,CAAC;AAClG,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC;AACvH,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,mBAAmB,EAAE;AAC7C,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAC7D,aAAA;iBAAM,IAAI,IAAI,CAAC,aAAa,EAAE;;;;;AAK3B,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAChD,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;oBACnC,IAAI,KAAK,GAAG,KAAK,CAAC;;;oBAGlB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AACjD,wBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,IAAG;AAChC,4BAAA,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE;gCAC7B,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3F,gCAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;oCACnC,IAAI,MAAM,CAAC,wBAAwB,EAAE;wCACjC,KAAK,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACxD,qCAAA;AACD,oCAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;wCAC3B,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,CAAC;AAChD,qCAAA;AACD,oCAAA,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE;wCACrD,KAAK,GAAG,IAAI,CAAC;AAChB,qCAAA;AACJ,iCAAA;AACJ,6BAAA;AACL,yBAAC,CAAC,CAAC;AACN,qBAAA;AAAM,yBAAA;;;wBAGH,KAAK,GAAG,IAAI,CAAC;AAChB,qBAAA;;;AAGD,oBAAA,IAAI,KAAK,EAAE;AACP,wBAAA,IAAI,mBAAmB,EAAE;;4BAErB,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;AACtE,yBAAA;;AAED,wBAAA,IAAI,KAAK,EAAE;AACP,4BAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC7B,SAAA;KACJ;IAEO,oBAAoB,GAAA;QACxB,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAClF,aAAA;YACD,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC5F,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CACvC,sBAAsB,EACtB,IAAI,CAAC,aAAa,KAAK,UAAU,CAAC,CAAC;AAC1C,SAAA;KACJ;IAEO,cAAc,CAAC,IAAsB,EAAE,KAAa,EAAE,oBAAyB,EAAE,aAAqB,EAAE,OAAe,EAAA;QAC3H,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;gBAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACnD,aAAA;AACJ,SAAA;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAChF,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC;AAE3B,QAAA,MAAM,YAAY,GAAG;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,yBAAyB,CAAC,QAAQ;AACxC,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;AAChC,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,OAAO,EAAE,OAAO;SACnB,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAEtC,QAAA,MAAM,qBAAqB,GAAG;AAC1B,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,QAAQ,EAAE,EAAE;SACf,CAAC;;AAGF,QAAA,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAE1D,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC7C,IAAI,oBAAoB,GAAG,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAG;AAC1B,gBAAA,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;AACpB,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzG,gBAAA,oBAAoB,EAAE,CAAC;AAC3B,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAEO,mBAAmB,GAAA;QACvB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AAC5C,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,MAAM,MAAM,GAAmE,EAAE,CAAC;AAElF,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,iBAAiB,CAAC,IAAI,EAAE;gBAC/C,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,KAAK,QAAQ;oBAC1D,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7F,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,KAAK,iBAAiB,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/E,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAClD,wBAAA,OAAO,aAAa,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACzE,qBAAC,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;YAED,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,gBAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,IAAG;AAC9B,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACvE,oBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;wBAC5B,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,wBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;AACrD,wBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC;AAC1C,qBAAA;oBACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE;wBACjD,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC;AACvE,qBAAA;oBACD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,iBAAC,CAAC,CAAC;AACN,aAAA;AAED,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACpB,oBAAA,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK;oBACrB,IAAI,EAAE,yBAAyB,CAAC,WAAW;AAC3C,oBAAA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;oBAChC,aAAa,EAAE,CAAC,GAAG,CAAC;oBACpB,OAAO,EAAE,MAAM,CAAC,MAAM;AACzB,iBAAA,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;oBACzC,IAAI,oBAAoB,GAAG,CAAC,CAAC;oBAC7B,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AAC3B,wBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACpB,4BAAA,IAAI,EAAE,IAAI;4BACV,IAAI,EAAE,yBAAyB,CAAC,SAAS;AACzC,4BAAA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;AAChC,4BAAA,aAAa,EAAE,oBAAoB;4BACnC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAClC,yBAAA,CAAC,CAAC;AACH,wBAAA,oBAAoB,EAAE,CAAC;AAC3B,qBAAC,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,UAAU,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,oBAAoB,GAAG,CAAC,CAAC;AAC7B,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACtB,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACvF,oBAAA,oBAAoB,EAAE,CAAC;AAC3B,iBAAC,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,oBAAA,MAAM,UAAU,GAA0B;wBACtC,KAAK,EAAE,KAAK,EAAE;AACd,wBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;wBAC3B,IAAI,EAAE,yBAAyB,CAAC,MAAM;AACtC,wBAAA,gBAAgB,EAAE,EAAE;qBACvB,CAAC;AAEF,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACvC,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,IAAG;oBAC/C,OAAO;wBACH,KAAK,EAAE,KAAK,EAAE;AACd,wBAAA,IAAI,EAAE,IAAI;wBACV,IAAI,EAAE,yBAAyB,CAAC,MAAM;qBACzC,CAAC;AACN,iBAAC,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AAC3B,aAAA;AACJ,SAAA;KACJ;IAEO,WAAW,CAAC,gBAA0B,EAAE,WAAqB,EAAA;AACjE,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QAE7B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;;QAG3B,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACrD,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;;;;;AAMxD,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,MAAM,GAAG,IAAI,CAAC,gCAAgC,EAAE;;;;AAIhD,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,gBAAA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;AAChG,aAAA;AACD,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AACrE,SAAA;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;AAEjB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC1C,YAAA,MAAM,wBAAwB,GAA0B;AACpD,gBAAA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;AAChC,gBAAA,IAAI,EAAoB;AACpB,oBAAA,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE;AACrB,oBAAA,gBAAgB,EAAE,EAAE;AACpB,oBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;AACnE,oBAAA,QAAQ,EAAE,IAAI;AACjB,iBAAA;gBACD,IAAI,EAAE,yBAAyB,CAAC,MAAM;AACtC,gBAAA,gBAAgB,EAAE,EAAE;aACvB,CAAC;AAEF,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AACrD,SAAA;AAED,QAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;KAC/D;AAEO,IAAA,4BAA4B,CAAC,+BAAwC,EAAA;AACzE,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;;;QAIzE,IAAI,CAAC,IAAI,CAAC,4BAA4B,IAAI,sBAAsB,CAAC,YAAY,EAAE;AAC3E,YAAA,IAAI,CAAC,4BAA4B,GAAG,sBAAsB,CAAC,YAAY,CAAC;AAC3E,SAAA;AAED,QAAA,IAAI,+BAA+B,EAAE;YACjC,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,SAAS,GAAG,+BAA+B,CAAC;AACxF,SAAA;QAED,IAAI,IAAI,CAAC,4BAA4B,EAAE;AACnC,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;AAC/F,YAAA,sBAAsB,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;AACvD,SAAA;AAAM,aAAA;AACH,YAAA,sBAAsB,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;AACtD,SAAA;KACJ;IAEM,+BAA+B,GAAA;QAClC,IAAI,CAAC,gCAAgC,CAAC,yCAAyC,CAC3E,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAEjG,QAAA,IAAI,IAAI,CAAC,gCAAgC,CAAC,4CAA4C,CAClF,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,CAAC,EAAE;AACvD,YAAA,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1D,SAAA;KACJ;AAED;;AAEG;IAEI,OAAO,GAAA;QACV,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAClC;AAED;;;AAGG;IAEK,yBAAyB,GAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACrF,OAAO;AACV,SAAA;QAED,IAAI,CAAC,+BAA+B,EAAE,CAAC;KAC1C;IAGO,eAAe,GAAA;AACnB,QAAA,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAEnF,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,WAAW,CAAC;AAC3E,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,UAAU,GAAG,YAAY,EAAE,YAAY,CAAC,CAAC;QAEvF,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC;AACzE,YAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAE1C,IAAI,IAAI,CAAC,oBAAoB,EAAE;;;;;;;;AAQ3B,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,YAAY,EAAE,CAAA,IAAA,CAAM,CAAC,CAAC;AAExF,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,IAAI,CAAC,iBAAiB,CAAC,aAAa,EACpC,OAAO,EACP,GAAG,aAAa,CAAA,EAAA,CAAI,CAAC,CAAC;AAE1B,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,IAAI,CAAC,aAAa,CAAC,aAAa,EAChC,OAAO,EACP,GAAG,aAAa,CAAA,EAAA,CAAI,CAAC,CAAC;gBAE1B,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,WAAW,CAAC;;AAGvE,gBAAA,IAAI,CAAC,aAAa;AACb,qBAAA,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;qBACxE,OAAO,CAAC,MAAM,IAAG;AACd,oBAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;;oBAE1E,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE;AACnD,wBAAA,MAAM,CAAC,eAAe,GAAG,QAAQ,GAAG,aAAa,CAAC;AACrD,qBAAA;AACL,iBAAC,CAAC,CAAC;AAEV,aAAA;;AAGD,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,IAAG;gBAChC,IAAI,MAAM,CAAC,eAAe,EAAE;AACxB,oBAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,WAAW,GAAG,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;AACxG,iBAAA;AACL,aAAC,CAAC,CAAC;;;;AAKH,YAAA,sBAAsB,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;YACnD,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,4BAA4B,GAAG,CAAC,CAAC;gBACtC,IAAI,CAAC,4BAA4B,EAAE,CAAC;AACxC,aAAC,CAAC,CAAC;YAEH,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACnC,SAAA;KACJ;IAGO,uBAAuB,GAAA;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAEO,uBAAuB,CAAC,IAAsB,EAAE,QAAiB,EAAE,SAAmB,EAAE,iBAA2B,EACvH,aAAkC,EAAA;AAClC,QAAA,IAAI,aAAa,EAAE;AACf,YAAA,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ;AAC3D,aAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAChE,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACnD,YAAA,IAAI,QAAQ,EAAE;AACV,gBAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClC,IAAI,CAAC,SAAS,EAAE;AACZ,wBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACd,oBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;oBACvE,IAAI,CAAC,SAAS,EAAE;AACZ,wBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAChD,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAEzB,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,EAAE;YAC7D,IAAI,CAAC,iBAAiB,EAAE;AACpB,gBAAA,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9B,gBAAA,OAAO,WAAW,EAAE;oBAChB,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAClD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;4BACnC,YAAY,GAAG,KAAK,CAAC;4BACrB,MAAM;AACT,yBAAA;AACJ,qBAAA;AACD,oBAAA,WAAW,CAAC,QAAQ,GAAG,YAAY,CAAC;AACpC,oBAAA,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;AACpC,iBAAA;AACJ,aAAA;YACD,IAAI,CAAC,CAAC,iBAAiB,IAAI,aAAa,KAAK,IAAI,CAAC,QAAQ,EAAE;AACxD,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAG;AAC9B,oBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACnB,wBAAA,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;AAC3B,qBAAA;AACD,oBAAA,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;AACnG,iBAAC,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;KACJ;IAEO,YAAY,GAAA;QAChB,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC;AACjH,SAAA;KACJ;AAED;;;AAGG;AACK,IAAA,qBAAqB,CAAC,KAAc,EAAA;QACxC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YACnD,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,OAAO;AACV,SAAA;AACD,QAAA,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,0BAA0B,GAAG,UAAU,CAAC,MAAK;AAC9C,YAAA,IAAI,GAAgB,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;AACjD,gBAAA,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa;AACrC,qBAAA,aAAa,CAAC,CAAA,4DAAA,EAA+D,KAAK,CAAA,EAAA,CAAI,CAAC,CAAC;AAC7F,gBAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACvC,aAAA;AACD,YAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE;gBAChC,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,aAAa,CAAC,wDAAwD,CAAC,CAAC;AACnH,gBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC;AAC9D,aAAA;YAED,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,YAAA,IAAI,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC;AACvC,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1F,YAAA,IAAI,mBAAmB,EAAE;AACrB,gBAAA,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC;AACvC,gBAAA,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAChD,aAAA;YAED,IAAI,eAAe,GAAG,KAAK,CAAC;AAC5B,YAAA,IAAI,GAAG,EAAE;gBACL,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,MAAM,aAAa,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,gBAAA,IAAI,aAAa,EAAE;AACf,oBAAA,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC;AAC9B,iBAAA;gBAED,eAAe,GAAG,MAAM,IAAI,YAAY,IAAI,MAAM,GAAG,eAAe,CAAC;AACxE,aAAA;YACD,IAAI,GAAG,IAAI,CAAC,eAAe,IAAI,KAAK,KAAK,SAAS,EAAE;;;AAGhD,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,gBAAgB,CAAC,mCAAmC,CAAC,CAAC;AAC9G,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC5C,oBAAA,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,oBAAA,IAAI,aAAa,CAAC,GAAG,GAAG,YAAY,EAAE;AAClC,wBAAA,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wBACpB,MAAM;AACT,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,GAAG,EAAE;gBACL,IAAI,IAAI,CAAC,oCAAoC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClE,oBAAA,MAAM,IAAI,GAAgB,GAAG,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;oBAC3G,MAAM,gBAAgB,GAAG,GAAG,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;;;AAG/D,oBAAA,IAAI,gBAAgB,EAAE;wBAClB,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAC5B,qBAAA;AAAM,yBAAA;wBACH,GAAG,CAAC,KAAK,EAAE,CAAC;AACf,qBAAA;AACJ,iBAAA;AAAM,qBAAA;oBACH,GAAG,CAAC,KAAK,EAAE,CAAC;AACf,iBAAA;gBACD,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;AACtD,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,iBAAiB,CAAC,KAA2B,EAAA;QACjD,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACxD,YAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBAC3B,KAAK,CAAC,2BAA2B,EAAE,CAAC;gBACpC,KAAK,CAAC,mBAAmB,EAAE,CAAC;gBAC5B,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;AACrE,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;AACvC,aAAA;YACD,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChC,SAAA;aAAM,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,wCAAwC,CAAC;eACrG,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,0BAA0B,CAAC,aAAa,EAAE;YAC1E,KAAK,CAAC,2BAA2B,EAAE,CAAC;AAEpC,YAAA,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,cAAc,CAAC,aAAa,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;gBACjH,MAAM,oBAAoB,GAAG,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBACzE,IAAI,CAAC,oBAAoB,EAAE;AACvB,oBAAA,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC5B,oBAAA,IAAI,CAAC,yCAAyC,GAAG,IAAI,CAAC;AACzD,iBAAA;AAAM,qBAAA;oBACH,KAAK,CAAC,mBAAmB,EAAE,CAAC;oBAC5B,MAAM,gBAAgB,GAAG,GAAG,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;AACnE,oBAAA,eAAe,CAAC,oBAAoB,CAAC,sBAAsB,CACvD,KAAK,CAAC,WAAW,EACjB,oBAAoB,EACpB,KAAK,CAAC,UAAU,EAChB,gBAAgB,CAAC,CAAC;AACzB,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,KAAK,CAAC,mBAAmB,EAAE,CAAC;gBAC5B,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AACtE,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;gBACpC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChC,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,6BAA6B,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC;AAC7E,SAAA;KACJ;IAEO,cAAc,GAAA;QAClB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;IAEO,kBAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,eAAe,EACvD,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvG,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;KACrC;IAEO,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,IAAG;gBAChC,IAAI,YAAY,KAAK,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC3D,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACzC,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;AAEM,IAAA,qBAAqB,CAAC,KAAoB,EAAA;AAC7C,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,KAAK,CAAC,OAAO,CAAC,KAAK,IAAG;gBAClB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAG;AAC5C,oBAAA,OAAO,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC;AAClC,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,YAAY,IAAI,YAAY,KAAK,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC3E,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACzC,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;AACD,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC7B,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,SAAA;KACJ;AAED;;;AAGG;IACI,wBAAwB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;KAC7D;AAED;;;;;AAKG;IACI,oBAAoB,CAAC,MAAgC,EAAE,YAAmC,EAAA;AAC7F,QAAA,IAAI,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE;AAC5B,YAAA,OAAO,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACpE,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC;AAC1E,kBAAE,MAAM,CAAC,wBAAwB,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;AACtF,SAAA;KACJ;AAED;;;;AAIG;IAEK,wBAAwB,GAAA;AAC5B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,4CAA4C,CAAC,CAAC;AACnH,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,gBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC9D,aAAA;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;KACzC;AAED;;;;AAIG;AAEK,IAAA,0BAA0B,CAAC,KAAc,EAAA;AAC7C,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;KACxC;IAEO,wCAAwC,GAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,2BAA2B,CAAC,QAAQ,EAAE;YAC7D,OAAO;AACV,SAAA;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE;AAC/C,oBAAA,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;oBACnC,MAAM;AACT,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,oBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,EAAE;AACvD,wBAAA,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;wBACnC,MAAM;AACT,qBAAA;AACJ,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE;AAC/C,wBAAA,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;wBACnC,MAAM;AACT,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,uBAAuB,CAAC,IAAsB,EAAA;QAClD,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,OAAO,WAAW,EAAE;AAChB,gBAAA,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC;AACxE,gBAAA,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;AACpC,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;IAEO,SAAS,GAAA;QACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,IAAG;AAC9B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,gBAAgB,CAAC,wBAAmC,EAAA;AACvD,QAAA,IAAI,CAAC,mBAAmB,GAAG,wBAAwB,CAAC;QACpD,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IAEO,qBAAqB,CAAC,wBAAmC,EAAE,IAAuB,EAAA;QACtF,IAAI,KAAK,GAAG,IAAI,CAAC;AACjB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,wBAAwB,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/D,MAAM,eAAe,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC7D,YAAA,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE;AAC7B,gBAAA,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AAC7C,oBAAA,OAAO,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC;AAC/B,iBAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,gBAAA,IAAI,MAAM,EAAE;AACR,oBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACvD,oBAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;wBACnC,IAAI,MAAM,CAAC,wBAAwB,EAAE;4BACjC,KAAK,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACxD,yBAAA;AACD,wBAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;4BAC3B,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,CAAC;AAChD,yBAAA;wBACD,MAAM,cAAc,GAAG,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC/D,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpD,wBAAA,MAAM,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,CAAC;wBACnF,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,CAAC;AAC7D,wBAAA,IAAI,eAAe;6BACd,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,cAAc;mCAC9D,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,SAAS,CAAC,EAAE;4BACzE,QAAQ,eAAe,CAAC,OAAO;gCAC3B,KAAK,gBAAgB,CAAC,EAAE;oCACpB,IAAI,MAAM,CAAC,yBAAyB,EAAE;wCAClC,IAAI,eAAe,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;4CACjD,KAAK,GAAG,KAAK,CAAC;AACjB,yCAAA;AACJ,qCAAA;AAAM,yCAAA;;wCAEH,IAAI,eAAe,KAAK,eAAe,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;4CAC1E,KAAK,GAAG,KAAK,CAAC;AACjB,yCAAA;AACJ,qCAAA;oCACD,MAAM;gCACV,KAAK,gBAAgB,CAAC,EAAE;AACpB,oCAAA,IAAI,CAAC,cAAc,IAAI,cAAc,KAAK,CAAC;AACvC,yCAAC,cAAc,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE;AAC1C,wCAAA,IAAI,EAAE,cAAc,IAAI,cAAc,CAAC,EAAE;4CACrC,KAAK,GAAG,KAAK,CAAC;AACjB,yCAAA;AACJ,qCAAA;oCACD,MAAM;gCACV,KAAK,gBAAgB,CAAC,EAAE;AACpB,oCAAA,IAAI,CAAC,cAAc,IAAI,cAAc,KAAK,CAAC;AACpC,4CAAC,cAAc,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE;AAC7C,wCAAA,IAAI,EAAE,cAAc,IAAI,cAAc,CAAC,EAAE;4CACrC,KAAK,GAAG,KAAK,CAAC;AACjB,yCAAA;AACJ,qCAAA;oCACD,MAAM;gCACV,KAAK,gBAAgB,CAAC,EAAE;AACpB,oCAAA,IAAI,EAAE,eAAe,KAAK,eAAe,CAAC,EAAE;wCACxC,KAAK,GAAG,KAAK,CAAC;AACjB,qCAAA;oCACD,MAAM;AACV,gCAAA;;oCAEI,IAAI,eAAe,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;wCACjD,KAAK,GAAG,KAAK,CAAC;AACjB,qCAAA;oCACD,MAAM;AACb,6BAAA;AACJ,yBAAA;6BAAM,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,mBAAmB,EAAE;AAClF,4BAAA,IAAI,KAAK,EAAE;gCACP,KAAK,GAAG,IAAI,CAAC,oCAAoC,CAC7C,wBAAwB,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;AACnE,6BAAA;AACJ,yBAAA;6BAAM,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,gBAAgB,EAAE;AAC/E,4BAAA,IAAI,KAAK,EAAE;gCACP,KAAK,GAAG,IAAI,CAAC,mCAAmC,CAC5C,wBAAwB,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;AACnE,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AAAM,yBAAA;wBACH,KAAK,GAAG,KAAK,CAAC;AACjB,qBAAA;AACJ,iBAAA;AAAM,qBAAA;oBACH,KAAK,GAAG,KAAK,CAAC;AACjB,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAEO,IAAA,mCAAmC,CACvC,wBAAmC,EAAE,eAA8B,EAAE,eAAuB,EAAA;AAC5F,QAAA,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3C,IAAI,GAAG,GAAG,KAAK,CAAC;AAChB,QAAA,KAAK,EACL,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,wBAAwB,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/D,MAAM,IAAI,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE;gBACnH,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;AACpE,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AAC/C,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;oBAC3C,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC;AACnD,oBAAA,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,GAAG,EAAE;wBAClC,GAAG,GAAG,IAAI,CAAC;AACX,wBAAA,MAAM,KAAK,CAAC;AACf,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACd;AAEO,IAAA,oCAAoC,CACxC,wBAAmC,EAAE,eAA8B,EAAE,eAAuB,EAAA;AAE5F,QAAA,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3C,IAAI,GAAG,GAAG,KAAK,CAAC;AAChB,QAAA,KAAK,EACL,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,wBAAwB,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/D,MAAM,IAAI,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,mBAAmB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE;AACtH,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,CAAC;oBAC3E,IAAI,eAAe,KAAK,eAAe,EAAE;wBACrC,GAAG,GAAG,IAAI,CAAC;AACX,wBAAA,MAAM,KAAK,CAAC;AACf,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACd;AAED;;;;;AAKG;IACK,wBAAwB,CAAC,KAAU,EAAE,KAAU,EAAA;AACnD,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;AAClB,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;;QAGD,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,IAAI,KAAK,EAAE,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC1C,YAAA,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAChC,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;AAC7C,oBAAA,OAAO,IAAI,CAAC;AACf,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;AAEG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,eAAe,EAAE,EAAE;SACtB,CAAC;KACL;;AA5vIc,kBAAc,CAAA,cAAA,GAAG,EAAE,CAAC;AACpB,kBAAA,CAAA,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;uGAFtC,kBAAkB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oGAAlB,kBAAkB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;oCAoLV,wBAAwB,EAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;uBAU3B,gCAAgC,EAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;ADzPlD,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAG2F,gBAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AAKrF,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,kDAAA,CAAA,MAAA,EAAA,EAAA,OAAW,gCAA4B,CAAC,EAAA,CAAA,CAAA;QACxC,EAC+B,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAC7B,EAMM,CAAA,UAAA,CAAA,CAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACR,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EA0BM,CAAA,UAAA,CAAA,CAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AACR,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,EAAA,CAAA;AAGV,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAKwC,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;QAIpC,EAMM,CAAA,UAAA,CAAA,EAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AACN,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CAAkH,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;QAI9G,EA+EM,CAAA,UAAA,CAAA,EAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QACR,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAC6E,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;QAC3E,EA+IM,CAAA,UAAA,CAAA,EAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AACN,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CAAoC,eAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QAEJ,EAAM,CAAA,MAAA,CAAA,EAAA,EAAA,QAAA,CAAA,CAAA;QAAA,EAAM,CAAA,YAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;QAKhD,EACkH,CAAA,UAAA,CAAA,EAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QACpH,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAGM,CAAA,UAAA,CAAA,EAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QACR,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAEM,CAAA,SAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;QAxTJ,EAAoD,CAAA,WAAA,CAAA,6BAAA,EAAA,GAAA,CAAA,cAAA,CAAA,CAAA,wBAAA,EAAA,GAAA,CAAA,aAAA,KAAA,UAAA,CAAA,CAAA,sBAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA,oBAAA,EAAA,CAAA,GAAA,CAAA,YAAA,CAAA,CAAA,8BAAA,EAAA,GAAA,CAAA,aAAA,KAAA,UAAA,IAAA,GAAA,CAAA,mBAAA,CAAA,CAAA;QAQjB,EAAsE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAtE,EAAsE,CAAA,WAAA,CAAA,MAAA,EAAA,GAAA,CAAA,aAAA,KAAA,UAAA,GAAA,cAAA,GAAA,cAAA,CAAA,CAAA;QAGhG,EAAqE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArE,EAAqE,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,aAAA,KAAA,UAAA,IAAA,GAAA,CAAA,mBAAA,IAAA,GAAA,CAAA,UAAA,CAAA,CAAA;QAOlD,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlB,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,aAAA,CAAA,CAAA;QA+B9C,EAA2D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA3D,QAAA,EAAA,CAAA,WAAA,CAAA,wBAAA,EAAA,GAAA,CAAA,aAAA,KAAA,UAAA,CAA2D,CAAA,sBAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA,qBAAA,EAAA,CAAA,GAAA,CAAA,UAAA,CAAA,CAAA,oBAAA,EAAA,CAAA,GAAA,CAAA,YAAA,CAAA,CAAA,sBAAA,EAAA,GAAA,CAAA,QAAA,CAAA,6FAAA,CAAA,oBAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA;QAMzD,EAAuG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvG,EAAuG,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,GAAA,CAAA,YAAA,CAAA,CAAA,CAAA;QAGpG,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA5B,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,CAAA,CAAA;QAQ3B,EAA0C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA1C,EAA0C,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,CAAA,CAAA,CAAA;QAAC,EAAyB,CAAA,WAAA,CAAA,aAAA,EAAA,IAAA,CAAA,CAAA;QAEtC,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA/B,EAA+B,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,0BAAA,CAAA,CAAA;QAiFP,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAxD,EAAwD,CAAA,WAAA,CAAA,uBAAA,EAAA,CAAA,GAAA,CAAA,uBAAA,CAAA,CAAA;QAC9G,EAAqC,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,kBAAA,CAAA,CAAA,CAAA;QACP,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAApC,EAAoC,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,+BAAA,CAAA,CAAA;QAuJhE,EAAyC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAzC,EAAyC,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,mCAAA,CAAA,CAAA;QAI9C,EAA8E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9E,EAA8E,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,MAAA,IAAA,GAAA,CAAA,kBAAA,IAAA,GAAA,CAAA,kBAAA,CAAA,SAAA,CAAA,CAAA;;AC8gD/E,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;;;AAUP,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,0BAAA,EAAA,IAAA,CAAA,CAAA;AA0KD,UAAA,CAAA;AAAC,IAAA7C,UAAQ,EAAE;;;;AAIV,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,gCAAA,EAAA,IAAA,CAAA,CAAA;AAszBD,UAAA,CAAA;AAAC,IAAAA,UAAQ,EAAE;;;;AAyBV,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,8CAAA,EAAA,IAAA,CAAA,CAAA;AAs7BD,UAAA,CAAA;AAAC,IAAAA,UAAQ,EAAE;;;;AAIV,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAMD,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;;;AAOP,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,CAAA;AAED,UAAA,CAAA;AAAC,IAAAA,OAAK,EAAE;;;;AAgEP,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAED,UAAA,CAAA;AAAC,IAAA7C,UAAQ,EAAE;;;;AAGV,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;AAmPD,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;;;AASP,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,0BAAA,EAAA,IAAA,CAAA,CAAA;AAOD,UAAA,CAAA;AAAC,IAAA7C,UAAQ,EAAE;;;;AAGV,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,4BAAA,EAAA,IAAA,CAAA,CAAA;uFAjiIQ,kBAAkB,EAAA,CAAA;cAJ9B,SAAS;2BACI,gBAAgB,EAAA,QAAA,EAAA,syvBAAA,EAAA,CAAA;2DA8FlB,gBAAgB,EAAA,CAAA;kBADvB,SAAS;mBAAC,kBAAkB,CAAA;YAIrB,aAAa,EAAA,CAAA;kBADpB,SAAS;mBAAC,QAAQ,CAAA;YAIX,kBAAkB,EAAA,CAAA;kBADzB,SAAS;mBAAC,aAAa,CAAA;YAIhB,cAAc,EAAA,CAAA;kBADrB,SAAS;mBAAC,SAAS,CAAA;YAIZ,sBAAsB,EAAA,CAAA;kBAD7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAItC,cAAc,EAAA,CAAA;kBADrB,SAAS;mBAAC,SAAS,CAAA;YAIZ,iBAAiB,EAAA,CAAA;kBADxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAIjC,sBAAsB,EAAA,CAAA;kBAD7B,SAAS;mBAAC,iBAAiB,CAAA;YAIpB,iBAAiB,EAAA,CAAA;kBADxB,SAAS;mBAAC,YAAY,CAAA;YAIf,mBAAmB,EAAA,CAAA;kBAD1B,SAAS;mBAAC,cAAc,CAAA;YAIjB,0BAA0B,EAAA,CAAA;kBADjC,SAAS;mBAAC,4BAA4B,CAAA;YAIhC,mBAAmB,EAAA,CAAA;kBADzB,YAAY;mBAAC,OAAO,CAAA;YAOA,kBAAkB,EAAA,CAAA;kBAAtC,MAAM;YAGU,gBAAgB,EAAA,CAAA;kBAAhC,MAAM;YAMA,eAAe,EAAA,CAAA;kBADrB,MAAM;YAMU,qCAAqC,EAAA,CAAA;kBAArD,MAAM;YAMc,aAAa,EAAA,CAAA;kBAAjC,MAAM;YAGU,WAAW,EAAA,CAAA;kBAA3B,MAAM;YAMc,oBAAoB,EAAA,CAAA;kBAAxC,MAAM;YAGU,gBAAgB,EAAA,CAAA;kBAAhC,MAAM;YAMc,qBAAqB,EAAA,CAAA;kBAAzC,MAAM;YAGU,gBAAgB,EAAA,CAAA;kBAAhC,MAAM;YAUI,OAAO,EAAA,CAAA;kBADjB,eAAe;mBAAC,wBAAwB,CAAA;YAWjC,iCAAiC,EAAA,CAAA;kBADxC,YAAY;mBAAC,gCAAgC,CAAA;YA8BvC,mBAAmB,EAAA,CAAA;kBADzB,MAAM;YAOA,MAAM,EAAA,CAAA;kBADZ,KAAK;YAOC,sBAAsB,EAAA,CAAA;kBAD5B,KAAK;YAOC,cAAc,EAAA,CAAA;kBADpB,KAAK;YAOC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAIC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAOC,uBAAuB,EAAA,CAAA;kBAD7B,KAAK;YAOC,wBAAwB,EAAA,CAAA;kBAD9B,KAAK;YAOC,oBAAoB,EAAA,CAAA;kBAD1B,KAAK;YAOC,eAAe,EAAA,CAAA;kBADrB,MAAM;YAQc,YAAY,EAAA,CAAA;kBAAhC,MAAM;YAGU,YAAY,EAAA,CAAA;kBAA5B,MAAM;YAOc,eAAe,EAAA,CAAA;kBAAnC,MAAM;YAGU,aAAa,EAAA,CAAA;kBAA7B,MAAM;YAOc,YAAY,EAAA,CAAA;kBAAhC,MAAM;YAGU,YAAY,EAAA,CAAA;kBAA5B,MAAM;YAMA,QAAQ,EAAA,CAAA;kBADd,KAAK;YAOC,sBAAsB,EAAA,CAAA;kBAD5B,KAAK;YAOC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YASC,+BAA+B,EAAA,CAAA;kBADrC,KAAK;YAQC,uBAAuB,EAAA,CAAA;kBAD7B,KAAK;YAQC,kBAAkB,EAAA,CAAA;kBADxB,KAAK;YASC,qBAAqB,EAAA,CAAA;kBAD3B,KAAK;YAkCC,mCAAmC,EAAA,CAAA;kBADzC,KAAK;YAOK,YAAY,EAAA,CAAA;kBADtB,KAAK;YAqDC,mBAAmB,EAAA,CAAA;kBADzB,KAAK;YAOC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAOC,mBAAmB,EAAA,CAAA;kBADzB,KAAK;YAOK,KAAK,EAAA,CAAA;kBADf,KAAK;YA4QC,WAAW,EAAA,CAAA;kBADjB,MAAM;YAiBI,SAAS,EAAA,CAAA;kBADnB,KAAK;YA8CK,aAAa,EAAA,CAAA;kBADvB,KAAK;YAuBC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YAIC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAUe,QAAQ,EAAA,CAAA;kBAA5B,MAAM;YAGU,MAAM,EAAA,CAAA;kBAAtB,MAAM;YAGA,YAAY,EAAA,CAAA;kBADlB,MAAM;YAQc,WAAW,EAAA,CAAA;kBAA/B,MAAM;YAGU,WAAW,EAAA,CAAA;kBAA3B,MAAM;YAOc,aAAa,EAAA,CAAA;kBAAjC,MAAM;YAGU,aAAa,EAAA,CAAA;kBAA7B,MAAM;YAMI,WAAW,EAAA,CAAA;kBADrB,KAAK;YAsBK,aAAa,EAAA,CAAA;kBADvB,KAAK;YAeC,cAAc,EAAA,CAAA;kBADpB,KAAK;YAOC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAOK,mBAAmB,EAAA,CAAA;kBAD7B,KAAK;YAaK,cAAc,EAAA,CAAA;kBADxB,KAAK;YAaC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAOC,mBAAmB,EAAA,CAAA;kBADzB,KAAK;YAOC,cAAc,EAAA,CAAA;kBADpB,KAAK;YAOC,SAAS,EAAA,CAAA;kBADf,KAAK;YAQC,4BAA4B,EAAA,CAAA;kBADlC,KAAK;YAOC,oCAAoC,EAAA,CAAA;kBAD1C,KAAK;YAOC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAOC,uBAAuB,EAAA,CAAA;kBAD7B,KAAK;YAOC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAQC,kBAAkB,EAAA,CAAA;kBADxB,KAAK;YAOC,0BAA0B,EAAA,CAAA;kBADhC,KAAK;YAIC,aAAa,EAAA,CAAA;kBADnB,KAAK;YA4yBE,wBAAwB,EAAA,EAAA,EAoLxB,8BAA8B,EAAA,EAAA,EA6d3B,YAAY,EAAA,CAAA;kBADtB,KAAK;YA8VC,4CAA4C,EAAA,EAAA,EA+8B5C,OAAO,EAAA,EAAA,EAUN,yBAAyB,EAAA,EAAA,EASzB,eAAe,EAAA,EAAA,EAkEf,uBAAuB,EAAA,EAAA,EAsPvB,wBAAwB,EAAA,EAAA,EAgBxB,0BAA0B,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA,CAAA;AAiOtC;;AAEG;AAMG,MAAO,kBAAmB,SAAQ,kBAAkB,CAAA;AAStD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAEhB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KAC1B;AAXD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,oBAAoB,CAAC;KAC/B;IAQS,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,gBAAgB;AACnB,SAAA,CAAC,CAAC;KACN;;uGAnBQ,kBAAkB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oGAAlB,kBAAkB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,QAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,iCAAA,CAAA,EAAA,CAAA,aAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,SAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,yCAAA,EAAA,UAAA,EAAA,GAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,YAAA,EAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,OAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,YAAA,EAAA,EAAA,CAAA,EAAA,CAAA,OAAA,EAAA,2DAAA,EAAA,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,6BAAA,EAAA,SAAA,EAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,eAAA,CAAA,EAAA,CAAA,SAAA,EAAA,EAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,8BAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,uBAAA,EAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,OAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,cAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,qBAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,qBAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,UAAA,EAAA,GAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,4BAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,cAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,gCAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,OAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qCAAA,CAAA,EAAA,CAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,OAAA,CAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,OAAA,CAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,cAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,cAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,OAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,wCAAA,EAAA,EAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,4BAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,yBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,2BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ADn0I/B,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAG2F,gBAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AAKrF,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,kDAAA,CAAA,MAAA,EAAA,EAAA,OAAW,gCAA4B,CAAC,EAAA,CAAA,CAAA;QACxC,EAC+B,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAC7B,EAMM,CAAA,UAAA,CAAA,CAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACR,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EA0BM,CAAA,UAAA,CAAA,CAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AACR,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,EAAA,CAAA;AAGV,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAKwC,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;QAIpC,EAMM,CAAA,UAAA,CAAA,EAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AACN,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CAAkH,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;QAI9G,EA+EM,CAAA,UAAA,CAAA,EAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QACR,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAC6E,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;QAC3E,EA+IM,CAAA,UAAA,CAAA,EAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AACN,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CAAoC,eAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QAEJ,EAAM,CAAA,MAAA,CAAA,EAAA,EAAA,QAAA,CAAA,CAAA;QAAA,EAAM,CAAA,YAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;QAKhD,EACkH,CAAA,UAAA,CAAA,EAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QACpH,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAGM,CAAA,UAAA,CAAA,EAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QACR,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAEM,CAAA,SAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;QAxTJ,EAAoD,CAAA,WAAA,CAAA,6BAAA,EAAA,GAAA,CAAA,cAAA,CAAA,CAAA,wBAAA,EAAA,GAAA,CAAA,aAAA,KAAA,UAAA,CAAA,CAAA,sBAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA,oBAAA,EAAA,CAAA,GAAA,CAAA,YAAA,CAAA,CAAA,8BAAA,EAAA,GAAA,CAAA,aAAA,KAAA,UAAA,IAAA,GAAA,CAAA,mBAAA,CAAA,CAAA;QAQjB,EAAsE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAtE,EAAsE,CAAA,WAAA,CAAA,MAAA,EAAA,GAAA,CAAA,aAAA,KAAA,UAAA,GAAA,cAAA,GAAA,cAAA,CAAA,CAAA;QAGhG,EAAqE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArE,EAAqE,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,aAAA,KAAA,UAAA,IAAA,GAAA,CAAA,mBAAA,IAAA,GAAA,CAAA,UAAA,CAAA,CAAA;QAOlD,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlB,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,aAAA,CAAA,CAAA;QA+B9C,EAA2D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA3D,QAAA,EAAA,CAAA,WAAA,CAAA,wBAAA,EAAA,GAAA,CAAA,aAAA,KAAA,UAAA,CAA2D,CAAA,sBAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA,qBAAA,EAAA,CAAA,GAAA,CAAA,UAAA,CAAA,CAAA,oBAAA,EAAA,CAAA,GAAA,CAAA,YAAA,CAAA,CAAA,sBAAA,EAAA,GAAA,CAAA,QAAA,CAAA,6FAAA,CAAA,oBAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA;QAMzD,EAAuG,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvG,EAAuG,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,GAAA,CAAA,YAAA,CAAA,CAAA,CAAA;QAGpG,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA5B,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,CAAA,CAAA;QAQ3B,EAA0C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA1C,EAA0C,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,CAAA,CAAA,CAAA;QAAC,EAAyB,CAAA,WAAA,CAAA,aAAA,EAAA,IAAA,CAAA,CAAA;QAEtC,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA/B,EAA+B,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,0BAAA,CAAA,CAAA;QAiFP,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAxD,EAAwD,CAAA,WAAA,CAAA,uBAAA,EAAA,CAAA,GAAA,CAAA,uBAAA,CAAA,CAAA;QAC9G,EAAqC,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,kBAAA,CAAA,CAAA,CAAA;QACP,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAApC,EAAoC,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,+BAAA,CAAA,CAAA;QAuJhE,EAAyC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAzC,EAAyC,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,mCAAA,CAAA,CAAA;QAI9C,EAA8E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9E,EAA8E,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,MAAA,IAAA,GAAA,CAAA,kBAAA,IAAA,GAAA,CAAA,kBAAA,CAAA,SAAA,CAAA,CAAA;;uFCghItE,kBAAkB,EAAA,CAAA;cAJ9B,SAAS;2BACI,gBAAgB,EAAA,QAAA,EAAA,syvBAAA,EAAA,CAAA;;;;;;;IC/zI1B,EAEmE,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IAD4B,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,6EAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,eAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,YAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAiC,CAAA,MAAA,CAAA,eAAA,CAAA,IAAA,CAAA,OAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACvE,EAAS,CAAA,YAAA,EAAA,CAAA;;;IAAxE,EAA8D,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,SAAA,CAAA,aAAA,CAAA,CAAA;;;IAFlE,EAE4E,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;;;;IAFnE,EAAoC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,eAAA,CAAA,CAAA,CAAA;;ACU3C,MAAO,qBAAsB,SAAQ,wBAAwB,CAAA;AAY/D,IAAA,WAAA,CAAoB,SAA6B,EAAA;AAC7C,QAAA,KAAK,EAAE,CAAC;QADQ,IAAS,CAAA,SAAA,GAAT,SAAS,CAAoB;AAX1C,QAAA,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC;AAc3C,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;KACvB;AAEM,IAAA,MAAM,CAAC,IAAS,EAAA;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;KAC9C;AAEM,IAAA,gBAAgB,CAAC,YAAmC,EAAA;AACvD,QAAA,OAAO,YAAY,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KACpG;;6GAxBQ,qBAAqB,EAAA,EAAA,CAAA,iBAAA,CAAA8E,kBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;uGAArB,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,uBAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,CAAA,uBAAA,EAAA,MAAA,EAAA,QAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,2BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;AAFnB,KAAA,EAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,UAAU,EAAC,MAAM,qBAAqB,EAAC,EAAE,CAAC,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAnC,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,oFAAA,EAAA,CAAA,EAAA,OAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDT5G,EAIc,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;uFCOD,qBAAqB,EAAA,CAAA;cALjC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4EAA4E,aAE3E,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,UAAU,EAAC,MAA2B,qBAAA,EAAC,EAAE,CAAC,EAAA,QAAA,EAAA,sZAAA,EAAA,CAAA;kEAMjG,IAAI,EAAA,CAAA;kBADV,KAAK;YAIS,YAAY,EAAA,CAAA;kBAD1B,SAAS;mBAAC,gBAAgB,CAAA;YAIZ,gBAAgB,EAAA,CAAA;kBAD9B,SAAS;mBAAC,gBAAgB,CAAA;;;;;;ACjBnB,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAA0E,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACxC,EAAO,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;;IAD1B,EAA0B,CAAA,UAAA,CAAA,OAAA,EAAA,OAAA,IAAA,IAAA,GAAA,IAAA,GAAA,OAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA;IACd,EAAO,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAP,EAAO,CAAA,iBAAA,CAAA,MAAA,CAAA,CAAA;;;IAF7C,EAAkF,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAC9E,EAEO,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACX,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAH+D,EAAO,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAP,EAAO,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,CAAA;;;IAD5E,EAIM,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;;;IAJ6B,EAAqC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,OAAA,EAAA,MAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;ACO1E,MAAO,mBAAoB,SAAQ,wBAAwB,CAAA;AALjE,IAAA,WAAA,GAAA;;AAMW,QAAA,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC;AAsBlD,KAAA;IAXU,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;KACnF;AAED;;;AAGC;IACM,iBAAiB,CAAC,GAAQ,EAAE,IAAY,EAAA;QAC3C,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KACtC;;AAtBQ,mBAAA,mBAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,gCAAA,CAAA,CAAA,OAAA,SAAA,2BAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,gCAAA,KAAA,gCAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,mBAAmB,SAAnB,mBAAmB,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;qGAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,uBAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,uBAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,yBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;AAFjB,KAAA,EAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,UAAU,EAAC,MAAM,mBAAmB,EAAC,EAAE,CAAC,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,CAAA,OAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,iBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDNtG,EAMc,CAAA,UAAA,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;uFCEL,mBAAmB,EAAA,CAAA;cAL/B,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wEAAwE,aAEvE,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,UAAU,EAAC,MAAyB,mBAAA,EAAC,EAAE,CAAC,EAAA,QAAA,EAAA,6XAAA,EAAA,CAAA;gBAS/F,IAAI,EAAA,CAAA;kBADV,KAAK;YAIS,YAAY,EAAA,CAAA;kBAD1B,SAAS;mBAAC,cAAc,CAAA;;;MCkBhB,eAAe,CAAA;;iGAAf,eAAe,GAAA,CAAA,EAAA,CAAA;gGAAf,eAAe,EAAA,CAAA,CAAA;oGAPpB,YAAY;QACZ,aAAa;QACb,kBAAkB;QAClB,aAAa;QACb,cAAc,CAAA,EAAA,CAAA,CAAA;uFAGT,eAAe,EAAA,CAAA;cAxB3B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE;oBACV,kBAAkB;oBAClB,wBAAwB;oBACxB,gCAAgC;oBAChC,kBAAkB;oBAClB,qBAAqB;oBACrB,mBAAmB;AACtB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,kBAAkB;oBAClB,wBAAwB;oBACxB,kBAAkB;oBAClB,qBAAqB;oBACrB,mBAAmB;AACtB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,aAAa;oBACb,kBAAkB;oBAClB,aAAa;oBACb,cAAc;AACjB,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,eAAe,mBAtBpB,kBAAkB;QAClB,wBAAwB;QACxB,gCAAgC;QAChC,kBAAkB;QAClB,qBAAqB;AACrB,QAAA,mBAAmB,aAUnB,YAAY;QACZ,aAAa;QACb,kBAAkB;QAClB,aAAa;AACb,QAAA,cAAc,aAXd,kBAAkB;QAClB,wBAAwB;QACxB,kBAAkB;QAClB,qBAAqB;QACrB,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ICjBf,0BAGX;AAHD,CAAA,UAAY,yBAAyB,EAAA;AACjC,IAAA,yBAAA,CAAA,KAAA,CAAA,GAAA,UAAgB,CAAA;AAChB,IAAA,yBAAA,CAAA,MAAA,CAAA,GAAA,kBAAyB,CAAA;AAC7B,CAAC,EAHW,yBAAyB,KAAzB,yBAAyB,GAGpC,EAAA,CAAA,CAAA,CAAA;MAGY,wBAAwB,CAAA;AA0CjC,IAAA,WAAA,CAAoB,iBAAoC,EAAA;QAApC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AAzCxD;;AAEG;AACI,QAAA,IAAA,CAAA,eAAe,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;AAEzG;;AAEG;AACI,QAAA,IAAA,CAAA,oBAAoB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAiB3E;;AAEG;QACK,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAEvB;;;AAGG;QACc,IAAoB,CAAA,oBAAA,GAAG,IAAI,CAAC;AAE7C;;AAEG;QACc,IAAsB,CAAA,sBAAA,GAAG,MAAM,CAAC;QAG7C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;KACpD;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;KAC5B;AAED;;;;;AAKG;AACI,IAAA,YAAY,CAAC,SAA6B,EAAE,YAAuC,EAAE,iBAAuB,EAAA;AAC/G,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACnH,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;AAC7D,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzF,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;AACvD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnF,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;QAErD,IAAI,CAAC,oBAAoB,CAAC,cAAc,CACpC,eAAe,EACf,iBAAiB,CACpB,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAEnB,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACtF,KAAK,EAAE,KAAK,IAAG;gBACX,OAAO,CAAC,GAAG,CAAC;oBACR,KAAK,EAAE,QAAQ,CAAC,OAAO;oBACvB,OAAO,EAAE,CAAoB,iBAAA,EAAA,KAAK,CAAE,CAAA;AACpC,oBAAA,MAAM,EAAE,+CAA+C;AAC1D,iBAAA,CAAC,CAAC;AAEH,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBAExF,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAC/B,WAAW,EACX,aAAa,CAChB,CAAC;AAEF,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;AAExB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;aACpC;YACD,QAAQ,EAAE,MAAK;gBACX,IAAI,CAAC,oBAAoB,CAAC,WAAW,CACjC,YAAY,EACZ,cAAc,CACjB,CAAC;AAEF,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;aACpC;AACJ,SAAA,CAAC,CAAC;KACN;AAED;;;;AAIG;AACK,IAAA,gBAAgB,CAAC,YAAuC,EAAA;QAC5D,OAAO,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,yBAAyB,CAAC,GAAG,CAAC;KACzH;AAED;;;;;AAKG;AACK,IAAA,gBAAgB,CACpB,SAA6B,EAC7B,YAAuC,EACvC,iBAAuB,EAAA;AAEvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACjD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,CAAA,EAAG,IAAI,CAAC,UAAU,CAAI,CAAA,EAAA,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAM,IAAA,CAAA,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;AAEjI,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAExC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,KAAK,KAAI;YAC9B,IAAI,aAAa,GAAG,EAAE,CAAC;YACvB,IAAI;AACA,gBAAA,IAAI,YAAY,KAAK,yBAAyB,CAAC,GAAG,EAAE;;AAEhD,oBAAA,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAC7F,iBAAA;AAAM,qBAAA;;oBAEH,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC5D,iBAAA;gBAED,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACnD,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;AACR,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAChF,aAAA;AACL,SAAC,CAAC;AAEF,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAC3C,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAC7C,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAC3B,CAAC;KACP;AAEO,IAAA,cAAc,CAAC,IAAY,EAAE,QAAgB,EAAE,QAAgB,EAAA;AACnE,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE,CAAC;AAEb,QAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;KAC5B;AAEO,IAAA,YAAY,CAAC,QAAe,EAAE,SAA6B,EAAE,iBAAuB,EAAA;QACxF,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,IAAG;YACjD,OAAO;gBACH,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;AACrB,gBAAA,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY;AAClC,gBAAA,wBAAwB,EAAE,MAAM,CAAC,wBAAwB,IAAI,SAAS;aACzE,CAAC;AACN,SAAC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAI;YACpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,KAAI;;AAE/C,gBAAA,IAAI,KAAK,GAAG,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBAEhE,IAAI,MAAM,CAAC,WAAW,EAAE;oBACpB,IAAI,MAAM,CAAC,wBAAwB,EAAE;;wBAEjC,KAAK,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;;;AAG5E,wBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;4BAC3B,IAAI;AACA,gCAAA,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACpC,6BAAA;AAAC,4BAAA,OAAO,CAAC,EAAE;gCACR,MAAM,IAAI,KAAK,CAAC,CAAA,eAAA,EAAkB,KAAK,CAAc,WAAA,EAAA,CAAC,CAAE,CAAA,CAAC,CAAC;AAC7D,6BAAA;AACJ,yBAAA;AAED,wBAAA,KAAK,GAAG,IAAI,CAAC,oCAAoC,CAAC,KAAK,CAAC,CAAC;AAC5D,qBAAA;AAAM,yBAAA;wBACH,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE;4BACpC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjC,yBAAA;wBACD,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC7E,qBAAA;AACJ,iBAAA;AAED,gBAAA,OAAO,KAAK,CAAC;AACjB,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;;AAGH,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,YAAA,MAAM,IAAI,KAAK,CAAC,uEAAuE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/G,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC5B;AAED;;;;AAIG;AACK,IAAA,YAAY,CAAC,KAAU,EAAA;QAC3B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAChD,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AAC1D,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAChC,SAAA;AAED,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;KACxB;AAED;;;;;AAKG;AACK,IAAA,oCAAoC,CAAC,KAAa,EAAA;AACtD,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;YACvC,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,OAAO,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC;KACxE;AAED;;;;;;AAMG;AACK,IAAA,0BAA0B,CAAC,QAAgB,EAAE,WAAmB,EAAE,SAA6B,EAAA;QACnG,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO;AACV,SAAA;QAED,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChD,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QAChC,OAAO,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;KACzC;AAED;;AAEG;AACK,IAAA,UAAU,CAAC,IAAY,EAAA;AAC3B,QAAA,MAAM,sBAAsB,GAAG,CAAA;;;;;;SAM9B,CAAC;AAEF,QAAA,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,sBAAsB,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;KACvC;;mHA1RQ,wBAAwB,EAAA,EAAA,CAAA,QAAA,CAAAc,iBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAxB,mBAAA,wBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,wBAAwB,WAAxB,wBAAwB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAxB,wBAAwB,EAAA,CAAA;cADpC,UAAU;;;ACdX;;AAEG;IACS,aAGX;AAHD,CAAA,UAAY,YAAY,EAAA;AACpB,IAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACV,CAAC,EAHW,YAAY,KAAZ,YAAY,GAGvB,EAAA,CAAA,CAAA;;ACID;;AAEG;AACI,MAAM,gCAAgC,GAAG,IAAI,cAAc,CAAoB,uBAAuB,CAAC;;ACR9G;;AAEG;MAOU,iBAAiB,CAAA;AAE1B,IAAA,WAAA,CAA8D,cAAc,EAAA;QAAd,IAAc,CAAA,cAAA,GAAd,cAAc,CAAA;AAe5E;;AAEG;AAEI,QAAA,IAAA,CAAA,uBAAuB,GAAuB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAoBtE;;AAEG;QAEI,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAanC;;AAEG;QACI,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;KA3DyD;AAEjF;;AAEG;AACH,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;KAC3E;AAsDM,IAAA,WAAW,CAAC,OAAsB,EAAA;QACrC,IAAI,OAAO,CAAC,KAAK,EAAE;YACf,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,SAAA;KACJ;AAED;;AAEG;IAEK,eAAe,GAAA;QACnB,MAAM,IAAI,GAAgB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,aAAa,CAAC;QACxE,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;;AAExD,QAAA,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;;AAExC,QAAA,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;AAC3C,QAAA,cAAc,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC3C,QAAA,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC;AACxC,QAAA,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;AACzC,QAAA,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;AACtC,QAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAEzC,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvD,cAAc,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QACzD,cAAc,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnD,cAAc,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrD,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvD,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvD,cAAc,CAAC,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;QAC7D,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;;AAGjD,QAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACrC,MAAM,YAAY,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;AAClE,QAAA,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;;AAG1B,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;KAC7C;;AAtGQ,mBAAA,iBAAA,CAAA,IAAA,GAAA,SAAA,yBAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,iBAAiB,uBAEN,gCAAgC,CAAA,CAAA,CAAA,EAAA,CAAA;mGAF3C,iBAAiB,EAAA,SAAA,EAAA,CAAA,CAAA,eAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,gCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;oCAkDZ,WAAW,EAAA,CAAA,CAAA,CAAA;;;;;AAsBzB,UAAA,CAAA;AAAC,IAAAZ,OAAK,EAAE;;;;AA8BP,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;uFAtGQ,iBAAiB,EAAA,CAAA;cAL7B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,eAAe;AACzB,gBAAA,QAAQ,EAAE,EAAE;AACf,aAAA,CAAA;;sBAIgB,MAAM;uBAAC,gCAAgC,CAAA;wBAa7C,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,uBAAuB,EAAA,CAAA;kBAD7B,KAAK;YAOC,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,SAAS,EAAA,CAAA;kBADf,KAAK;YAOC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAOC,mBAAmB,EAAA,CAAA;kBADzB,KAAK;YAOC,eAAe,EAAA,CAAA;kBADrB,YAAY;mBAAC,WAAW,CAAA;YAuBjB,eAAe,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACnFrB,MAAO,4BAA6B,SAAQ,mCAAmC,CAAA;AAArF,IAAA,WAAA,GAAA;;QACoB,IAAI,CAAA,IAAA,GAAG,WAAW,CAAC;AAC3B,QAAA,IAAA,CAAA,4BAA4B,GAAG;YACnC,OAAO,EAAE,CAAC,6BAA6B,CAAC;YACxC,SAAS,EAAE,CAAC,6BAA6B,CAAC;YAC1C,MAAM,EAAE,CAAC,6BAA6B,CAAC;SAC1C,CAAC;AAEM,QAAA,IAAA,CAAA,uBAAuB,GAAG;AAC9B,YAAA,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,CAAC,qBAAqB,CAAC;YAClC,MAAM,EAAE,CAAC,qBAAqB,CAAC;SAClC,CAAC;KA2EL;IAxEU,mBAAmB,CAAC,aAAoC,EAAE,EAAU,EAAA;AACvE,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,OAAO;AACV,SAAA;QAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AAE3E,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAEtF,QAAA,IAAI,CAAC,mBAAmB,IAAI,CAAC,cAAc,EAAE;YACzC,OAAO;AACV,SAAA;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE3B,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,cAAc,EAAE;gBAChB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,uBAAuB,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;AAClE,aAAA;AACD,YAAA,IAAI,mBAAmB,EAAE;gBACrB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,4BAA4B,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;AAC5E,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AACrB,YAAA,IAAI,cAAc,EAAE;gBAChB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,uBAAuB,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AAChE,aAAA;AACD,YAAA,IAAI,mBAAmB,EAAE;gBACrB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,4BAA4B,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;AAC1E,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,UAAU,EAAE;AACxB,YAAA,IAAI,cAAc,EAAE;gBAChB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,uBAAuB,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAC/D,aAAA;AACD,YAAA,IAAI,mBAAmB,EAAE;gBACrB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,4BAA4B,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AACzE,aAAA;AACJ,SAAA;KACJ;IAEO,sBAAsB,CAAC,aAAoC,EAAE,EAAU,EAAA;AAC3E,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE,EAAE;AACvB,YAAA,OAAO,SAAS,CAAC;AACpB,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;AAEvC,QAAA,IAAI,YAAwB,CAAC;AAE7B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,EAAE;AACrC,gBAAA,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACzB,MAAM;AACT,aAAA;AAAM,iBAAA,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,gBAAA,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,aAAA;AACJ,SAAA;;AAGD,QAAA,MAAM,mBAAmB,GAAG,YAAY,EAAE,aAAa,CAAC;AAExD,QAAA,IAAI,CAAC,mBAAmB,IAAI,CAAC,mBAAmB,CAAC,OAAO,IAAI,mBAAmB,CAAC,OAAO,KAAK,SAAS,EAAE;AACnG,YAAA,OAAO,SAAS,CAAC;AACpB,SAAA;AAED,QAAA,OAAO,mBAAmB,CAAC;KAC9B;AACJ,CAAA;AAzEG,UAAA,CAAA;AAAC,IAAAA,OAAK,EAAE;;qCACkC,SAAS,EAAA,MAAA,CAAA,CAAA;;AA2ClD,CAAA,EAAA,4BAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA;;;;;IC7DH,EAAsD,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAc,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;;;IAAnB,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,iBAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA;;;IAY5D,EAA2D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;;;IAA/B,EAAuB,CAAA,UAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;IAEnD,EACmI,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;;IARrI,EAI8E,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAAvC,EAA0B,CAAA,UAAA,CAAA,wBAAA,EAAA,SAAA,wFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAW,CAAA,MAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAC3E,EAA2D,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC3D,EAAM,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAC1B,EACmI,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACrI,EAAS,CAAA,YAAA,EAAA,CAAA;;;;AAP+B,IAAA,EAAA,CAAA,WAAA,CAAA,cAAA,EAAA,MAAA,CAAA,QAAA,IAAA,MAAA,CAAA,QAAA,CAA+C,CAAA,YAAA,EAAA,MAAA,CAAA,UAAA,CAAA,MAAA,CAAA,CAAA,CAAA;AAF3B,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,MAAA,CAAA,KAAA,CAAwB,gDAAA,CAAA,yBAAA,EAAA,MAAA,CAAA,uBAAA,CAAA,CAAA;AAClF,IAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,MAAA,CAAA,KAAA,CAAA,QAAA,CAAqC,qDAAA,CAAA,eAAA,EAAA,MAAA,CAAA,UAAA,CAAA,MAAA,CAAA,CAAA,CAAA;IAI9B,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnB,EAAmB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,SAAA,CAAA,CAAA;IACpB,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,iBAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;IACZ,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7B,EAA6B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,mBAAA,CAAA,CAAA;;;IAWpC,EAA2D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;;;IAA/B,EAAuB,CAAA,UAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;IAEnD,EACmI,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;;IATrI,EAKwB,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAAtB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAW,CAAA,MAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACrB,EAA2D,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC3D,EAAM,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAC1B,EACmI,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACrI,EAAS,CAAA,YAAA,EAAA,CAAA;;;;;;AAP+B,IAAA,EAAA,CAAA,WAAA,CAAA,cAAA,EAAA,OAAA,CAAA,QAAA,IAAA,MAAA,CAAA,QAAA,CAA+C,CAAA,YAAA,EAAA,OAAA,CAAA,UAAA,CAAA,MAAA,CAAA,CAAA,CAAA;IAArF,EAAqC,CAAA,UAAA,CAAA,UAAA,EAAA,OAAA,CAAA,QAAA,IAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAFrC,EAAyC,CAAA,WAAA,CAAA,eAAA,EAAA,OAAA,CAAA,KAAA,CAAA,QAAA,GAAA,IAAA,CAAA,CAAA,eAAA,EAAA,OAAA,CAAA,QAAA,IAAA,MAAA,CAAA,QAAA,CAAA,gHAAA,CAAA,eAAA,EAAA,OAAA,CAAA,UAAA,CAAA,MAAA,CAAA,CAAA,CAAA;IAKlC,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnB,EAAmB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,SAAA,CAAA,CAAA;IACpB,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,iBAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;IACZ,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7B,EAA6B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,mBAAA,CAAA,CAAA;;;IAtBxC,EAA6D,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAE3D,EASS,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAGT,EAUS,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACX,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;IAvBJ,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,KAAA,MAAA,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA;IAYtC,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,KAAA,MAAA,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA;;;IA4BvC,EAA2D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;;;IAA/B,EAAuB,CAAA,UAAA,CAAA,OAAA,CAAA,SAAA,CAAA,CAAA;;;;IAJrD,EAG0D,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IADR,EAA0B,CAAA,UAAA,CAAA,wBAAA,EAAA,SAAA,gFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAW,CAAA,MAAA,CAAA,OAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAEtF,EAA2D,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC3D,EAAM,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;;IAH1B,EAA+C,CAAA,WAAA,CAAA,cAAA,EAAA,OAAA,CAAA,QAAA,IAAA,OAAA,CAAA,QAAA,CAAA,CAAA;AAFgB,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,OAAA,CAAA,KAAA,CAAwB,CAAA,yBAAA,EAAA,OAAA,CAAA,uBAAA,CAAA,CAAA;IAIhF,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnB,EAAmB,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,SAAA,CAAA,CAAA;IACpB,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,iBAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;;;IAKnB,EAA2D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;;;IAA/B,EAAuB,CAAA,UAAA,CAAA,OAAA,CAAA,SAAA,CAAA,CAAA;;;IAEnD,EACmI,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;;IANrI,EAEwE,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAAtB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,+DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAW,CAAA,MAAA,CAAA,OAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACrE,EAA2D,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC3D,EAAM,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAC1B,EACmI,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACrI,EAAS,CAAA,YAAA,EAAA,CAAA;;;;IALP,EAA+C,CAAA,WAAA,CAAA,cAAA,EAAA,OAAA,CAAA,QAAA,IAAA,OAAA,CAAA,QAAA,CAAA,CAAA;IAD/C,EAAyG,CAAA,WAAA,CAAA,kBAAA,EAAA,OAAA,CAAA,mBAAA,GAAA,OAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,QAAA,CAAA,QAAA,GAAA,IAAA,CAAA,CAAA;IAElG,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnB,EAAmB,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,SAAA,CAAA,CAAA;IACpB,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,iBAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;IACZ,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7B,EAA6B,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,mBAAA,CAAA,CAAA;;;IAbxC,EAA6E,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAC3E,EAMS,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACT,EAOS,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACX,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IAfK,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,IAAA,KAAA,MAAA,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA;IAOtC,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,IAAA,KAAA,MAAA,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA;;;IAiB7D,EAC0C,CAAA,cAAA,CAAA,CAAA,EAAA,SAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IACxC,EAA+B,CAAA,SAAA,CAAA,CAAA,EAAA,eAAA,CAAA,CAAA;IACjC,EAAU,CAAA,YAAA,EAAA,CAAA;;;IAH0E,EAA4C,CAAA,WAAA,CAAA,iBAAA,EAAA,CAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IAAlE,EAAqB,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,QAAA,CAAA,CAAA;IACjF,EAAuC,CAAA,WAAA,CAAA,aAAA,EAAA,CAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;;;IAUjC,EACe,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IAJnB,EAAuD,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACrD,EAC+D,CAAA,cAAA,CAAA,CAAA,EAAA,SAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IAC7D,EACe,CAAA,UAAA,CAAA,CAAA,EAAA,oFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjB,EAAU,CAAA,YAAA,EAAA,CAAA;IACZ,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;;IALqD,EAA0C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1C,EAA0C,CAAA,WAAA,CAAA,iBAAA,EAAA,CAAA,OAAA,CAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA;IAApE,EAAyB,CAAA,UAAA,CAAA,IAAA,EAAA,OAAA,CAAA,KAAA,CAAA,QAAA,GAAA,KAAA,CAAA,CAAA;IAC/D,EAAqC,CAAA,WAAA,CAAA,aAAA,EAAA,CAAA,OAAA,CAAA,UAAA,CAAA,OAAA,CAAA,CAAA,CAAA;IACtB,EAAuF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvF,EAAuF,CAAA,UAAA,CAAA,kBAAA,EAAA,OAAA,CAAA,mBAAA,IAAA,OAAA,CAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAA,CAAA,eAAA,GAAA,IAAA,CAAA,CAAA;;;IAJ5G,EAA6D,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAC3D,EAMe,CAAA,UAAA,CAAA,CAAA,EAAA,qEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjB,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;IAPE,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,IAAA,KAAA,OAAA,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA;;;IAFzD,EAAoC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAClC,EAQe,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACjB,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IATiB,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;;AC9ChD;;;;;;;;;;;AAWG;AASG,MAAO,cAAe,SAAQ,mBAAmB,CAAA;AAmInD;;;AAGG;IACH,WACI,CAAA,QAAkB,EACmC,MAAc,EAAA;QACnE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAxIb,QAAA,IAAA,CAAA,QAAQ,GAAG,EAAE,CAAC;AACd,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC;AAEhC;;AAEG;AACI,QAAA,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC;AAyC/C;;AAEG;AAEI,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAqB,CAAC;AAE/D;;AAEG;AAEI,QAAA,IAAA,CAAA,sBAAsB,GAAoC,IAAI,YAAY,EAAqB,CAAC;AAEvG;;AAEG;AAEI,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEpE;;AAEG;AAEI,QAAA,IAAA,CAAA,uBAAuB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAW9E;;AAEG;QACI,IAAY,CAAA,YAAA,GAAG,YAAY,CAAC;QAuD/B,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAEzD,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,4BAA4B,GAAG,IAAI,4BAA4B,CAAC,MAAM,CAAC,CAAC;;YAE7E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;;YAExF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAE1G,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAClC,SAAA;KACJ;AA7ID;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,gBAAgB,CAAC;KAC3B;AAoBD;;AAEG;IACH,IACW,WAAW,CAAC,KAAuB,EAAA;AAC1C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1B;AAqDD;;AAEG;AACH,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;KAC3E;AAED;;AAEG;AACH,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;KAC3E;AAED,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;KACjD;AAED;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,CAAC;KACxE;IAoCM,kBAAkB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CACX,8DAA8D,CACjE,CAAC;AACL,SAAA;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;KAC1C;IAEM,qBAAqB,GAAA;AACxB,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;KAC1C;AAED;;;AAGG;AACI,IAAA,UAAU,CAAC,GAAsB,EAAA;QACpC,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC;KACnD;AAED;;AAEG;AAEI,IAAA,OAAO,CAAC,UAAU,GAAG,KAAK,EAAE,YAAY,GAAG,KAAK,EAAA;AACnD,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;KAClD;AAED;;;AAGG;AACI,IAAA,OAAO,CAAC,GAAsB,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACjB,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACzC;AAED;;;AAGG;AACI,IAAA,MAAM,CAAC,GAAsB,EAAA;;AAEhC,QAAA,IAAI,GAAG,EAAE;AACL,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;oBAC1B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;wBACjD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;AACzC,wBAAA,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC;AAC5B,wBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjC,qBAAA;AACD,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,oBAAA,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;oBACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC3B,MAAM;AACT,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;AACrB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/B,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YACvC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,SAAA;KACJ;AAED;;;AAGG;IAEI,yBAAyB,GAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACpC,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,4BAA4B,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,EACpE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KAC1E;AAED;;AAEG;IACK,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC7B;AAED;;AAEG;IAEK,eAAe,GAAA;QACnB,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;AAEG;IAEK,uBAAuB,GAAA;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;;AAGG;IACI,SAAS,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACpC,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;KAClD;AAED;;;;AAIG;AACI,IAAA,gBAAgB,CAAC,KAAa,EAAA;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,EAAE;YACf,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;KAC7B;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,QAAQ,EAAE,EAAE;SACf,CAAC;KACL;AAED;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,WAAW;AACd,SAAA,CAAC,CAAC;KACN;AAED;;;;AAIG;AACK,IAAA,2BAA2B,CAAC,KAAa,EAAA;QAC7C,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;YACnE,OAAO;AACV,SAAA;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAEjC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE;AACzB,gBAAA,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,aAAA;AACJ,SAAA;KACJ;AAED;;;;AAIG;AACK,IAAA,eAAe,CAAC,UAAU,GAAG,IAAI,EAAE,YAAY,GAAG,KAAK,EAAA;QAC3D,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAEnB,QAAA,MAAM,IAAI,GAAgB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AACzD,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AAEnC,QAAA,IAAI,WAAW,KAAK,CAAC,IAAI,YAAY,EAAE;AACnC,YAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AACnC,SAAA;QAED,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACpC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,YAAA,MAAM,GAAG,GAAsB,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1C,YAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;YAC3B,aAAa,IAAI,QAAQ,CAAC;AAC7B,SAAA;QAED,IAAI,aAAa,IAAI,WAAW,EAAE;AAC9B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACvC,gBAAA,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,IAAI,sBAAsB,GAAG,KAAK,CAAC;YACnC,MAAM,kBAAkB,GAAG,WAAW,CAAC;;AAGvC,YAAA,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAC;AAC3B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACvB,gBAAA,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,EAAE;oBACxB,iBAAiB,GAAG,CAAC,CAAC;oBACtB,MAAM;AACT,iBAAA;AACJ,aAAA;;YAGD,IAAI,iBAAiB,IAAI,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,iBAAiB,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC;gBAClD,WAAW,IAAI,QAAQ,CAAC;AAC3B,aAAA;YAED,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACvC,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAEvB,IAAI,iBAAiB,KAAK,CAAC,EAAE;AACzB,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,iBAAA;AAAM,qBAAA;AACH,oBAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;oBAC3B,SAAS,GAAG,QAAQ,CAAC;AACrB,oBAAA,IAAI,WAAW,GAAG,QAAQ,GAAG,kBAAkB,EAAE;AAC7C,wBAAA,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;AACtB,wBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAExB,IAAI,CAAC,sBAAsB,EAAE;4BACzB,sBAAsB,GAAG,IAAI,CAAC;;;;4BAI9B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;AAC7C,gCAAA,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;gCAClE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;AACzC,gCAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gCAC9B,WAAW,IAAI,SAAS,CAAC;AAC5B,6BAAA;;4BAED,WAAW,IAAI,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,WAAW,CAAC;AACvE,yBAAA;AACJ,qBAAA;AAAM,yBAAA;AACH,wBAAA,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;AACrB,wBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC3B,WAAW,IAAI,QAAQ,CAAC;AAC3B,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,UAAU,EAAE;YACZ,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,SAAA;KACJ;;AA7ZQ,mBAAA,cAAA,CAAA,IAAA,GAAA,SAAA,sBAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,cAAc,0DAyIa,mBAAmB,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA;gGAzI9C,cAAc,EAAA,SAAA,EAAA,CAAA,CAAA,WAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,6BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;oCA4EN,iBAAiB,EAAA,CAAA,CAAA,CAAA;oCAGjB,iBAAiB,EAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;AApFvB,KAAA,EAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA;AACP,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAC,MAAM,cAAc,EAAC,EAAE;AAC/E,YAAA,EAAE,OAAO,EAAE,gCAAgC,EAAE,WAAW,EAAE,UAAU,EAAC,MAAM,cAAc,EAAC,EAAE;AAC/F,SAAA,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,mCAAA,EAAA,uBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,cAAA,EAAA,YAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,mHAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,MAAA,EAAA,KAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,CAAA,EAAA,CAAA,eAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,uBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QD/CL,EAAiC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAC/B,EAAyE,CAAA,UAAA,CAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;AAEzE,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,CAA6J,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAGzJ,EAyBe,CAAA,UAAA,CAAA,CAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACf,EAAiB,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,MAAA,CAAA,CAAA;QAOL,EAAqB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QAClC,EAAwF,CAAA,SAAA,CAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC1F,EAAS,CAAA,YAAA,EAAA,CAAA;QACT,EAAyF,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QACvF,EAgBM,CAAA,UAAA,CAAA,EAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AACR,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;QAQhB,EAGU,CAAA,UAAA,CAAA,EAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,CAAA;QAGV,EAUe,CAAA,UAAA,CAAA,EAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;;;QAnFR,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA;QAEyF,EAA8C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9C,EAA8C,CAAA,WAAA,CAAA,cAAA,EAAA,GAAA,CAAA,aAAA,GAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAApJ,QAAA,EAAA,CAAA,WAAA,CAAA,0BAAA,EAAA,GAAA,CAAA,SAAA,KAAA,OAAA,CAAwD,CAAA,wBAAA,EAAA,CAAA,GAAA,CAAA,UAAA,CAAA,CAAA;QAG9B,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhB,EAAgB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;QA4B1C,EAAiD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAjD,QAAA,EAAA,CAAA,WAAA,CAAA,mBAAA,EAAA,GAAA,CAAA,QAAA,CAAA,MAAA,KAAA,CAAA,CAAiD,CAAA,iBAAA,EAAA,GAAA,CAAA,QAAA,CAAA,MAAA,KAAA,CAAA,CAAA,CAAA;QAI/C,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArC,EAAqC,CAAA,WAAA,CAAA,aAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;AAHD,QAAA,EAAA,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,eAAA,CAAmC,CAAA,eAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAIjE,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArB,EAAqB,CAAA,iBAAA,CAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAIsB,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAb,EAAa,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA;QAyBjD,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAnB,EAAmB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,aAAA,CAAA,CAAA;QAM7B,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAnB,EAAmB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,aAAA,CAAA,CAAA;;AC2J9B,UAAA,CAAA;AAAC,IAAA7C,UAAQ,EAAE;;;;AAGV,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AA2CD,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;;;AAQP,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,CAAA;AAYD,UAAA,CAAA;AAAC,IAAAA,OAAK,EAAE;;;;AAGP,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AAAC,IAAA7C,UAAQ,EAAE;;;;AAGV,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;uFAjQQ,cAAc,EAAA,CAAA;cAR1B,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAEV,SAAA,EAAA;AACP,oBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAC,MAAoB,cAAA,EAAC,EAAE;AAC/E,oBAAA,EAAE,OAAO,EAAE,gCAAgC,EAAE,WAAW,EAAE,UAAU,EAAC,MAAoB,cAAA,EAAC,EAAE;AAC/F,iBAAA,EAAA,QAAA,EAAA,mqLAAA,EAAA,CAAA;;sBA2II,QAAQ;;sBAAI,QAAQ;;sBAAI,MAAM;uBAAC,mBAAmB,CAAA;wBApHhD,SAAS,EAAA,CAAA;kBADf,KAAK;YAOC,mBAAmB,EAAA,CAAA;kBADzB,KAAK;YAOC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAOK,WAAW,EAAA,CAAA;kBADrB,KAAK;YASC,SAAS,EAAA,CAAA;kBADf,KAAK;YAOC,eAAe,EAAA,CAAA;kBADrB,MAAM;YAOA,sBAAsB,EAAA,CAAA;kBAD5B,MAAM;YAOA,aAAa,EAAA,CAAA;kBADnB,MAAM;YAOA,uBAAuB,EAAA,CAAA;kBAD7B,MAAM;YAOA,IAAI,EAAA,CAAA;kBADV,eAAe;mBAAC,iBAAiB,CAAA;YAI3B,aAAa,EAAA,CAAA;kBADnB,eAAe;mBAAC,iBAAiB,CAAA;YAa3B,QAAQ,EAAA,CAAA;kBAFd,WAAW;mBAAC,oBAAoB,CAAA;;kBAChC,KAAK;YAiC+B,qBAAqB,EAAA,CAAA;kBAAzD,SAAS;mBAAC,gBAAgB,CAAA;YAGpB,aAAa,EAAA,CAAA;kBADnB,YAAY;mBAAC,eAAe,CAAA;AAuDtB,SAAA,CAAA,EAAA,OAAO,EA8CP,EAAA,EAAA,yBAAyB,EAoBxB,EAAA,EAAA,eAAe,MAQf,uBAAuB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCxRtB,WAAW,CAAA;;yFAAX,WAAW,GAAA,CAAA,EAAA,CAAA;4FAAX,WAAW,EAAA,CAAA,CAAA;gGANhB,YAAY;QACZ,eAAe;QACf,YAAY;QACZ,cAAc,CAAA,EAAA,CAAA,CAAA;uFAGT,WAAW,EAAA,CAAA;cAhBvB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,cAAc;oBACd,iBAAiB;AACpB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,cAAc;oBACd,iBAAiB;AACpB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,eAAe;oBACf,YAAY;oBACZ,cAAc;AACjB,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,WAAW,mBAVhB,cAAc;AACd,QAAA,iBAAiB,aAGjB,YAAY;QACZ,eAAe;QACf,YAAY;AACZ,QAAA,cAAc,aAXd,cAAc;QACd,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACTzB;;;;AAIG;MAIU,0BAA0B,CAAA;AAHvC,IAAA,WAAA,GAAA;AAIqB,QAAA,IAAA,CAAA,6BAA6B,GAA0B,IAAI,YAAY,EAAW,CAAC;AAKvG,KAAA;IAHG,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC;KAC7C;;uHALQ,0BAA0B,GAAA,CAAA,EAAA,CAAA;4GAA1B,0BAA0B,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,+BAAA,EAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,6BAAA,EAAA,+BAAA,EAAA,EAAA,CAAA,CAAA;uFAA1B,0BAA0B,EAAA,CAAA;cAHtC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,iCAAiC;AAC9C,aAAA,CAAA;gBAEoB,6BAA6B,EAAA,CAAA;kBAA7C,MAAM;;;MCFE,uBAAuB,CAAA;;iHAAvB,uBAAuB,GAAA,CAAA,EAAA,CAAA;wGAAvB,uBAAuB,EAAA,CAAA,CAAA;4GAHxB,YAAY,CAAA,EAAA,CAAA,CAAA;uFAGX,uBAAuB,EAAA,CAAA;cALnC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,YAAY,EAAE,CAAC,0BAA0B,CAAC;gBAC1C,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,0BAA0B,CAAC;AACtC,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,uBAAuB,EAJnB,EAAA,YAAA,EAAA,CAAA,0BAA0B,CAC/B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,0BAA0B,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACGhC,MAAO,gCAAiC,SAAQ,mCAAmC,CAAA;AAAzF,IAAA,WAAA,GAAA;;QACoB,IAAI,CAAA,IAAA,GAAG,gBAAgB,CAAC;AACxC;;AAEG;QACI,IAAmB,CAAA,mBAAA,GAAG,QAAQ,CAAC;AA0BnB,QAAA,IAAA,CAAA,4BAA4B,GAAG;AAC9C,YAAA,MAAM,EAAE;AACJ,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,SAAS;AACnB,aAAA;AACD,YAAA,SAAS,EAAE;AACP,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,SAAS;AACnB,aAAA;AACD,YAAA,OAAO,EAAE;AACL,gBAAA,KAAK,EAAE,GAAG;AACV,gBAAA,KAAK,EAAE,GAAG;AACb,aAAA;SACJ,CAAC;AAEiB,QAAA,IAAA,CAAA,kCAAkC,GAAG;AACpD,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,OAAO,EAAE,GAAG;SACf,CAAC;AAEM,QAAA,IAAA,CAAA,qBAAqB,GAAG;YAC5B,OAAO,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,2BAA2B,CAAC;AAC/G,YAAA,SAAS,EAAE,CAAC,wBAAwB,EAAE,qBAAqB,CAAC;AAC5D,YAAA,MAAM,EAAE,CAAC,wBAAwB,EAAE,qBAAqB,CAAC;SAC5D,CAAC;AAEM,QAAA,IAAA,CAAA,yBAAyB,GAAG;AAChC,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,SAAS,EAAE,CAAC,wBAAwB,EAAE,qBAAqB,CAAC;AAC5D,YAAA,MAAM,EAAE,CAAC,wBAAwB,EAAE,qBAAqB,CAAC;SAC5D,CAAC;AAEM,QAAA,IAAA,CAAA,4BAA4B,GAAG;AACnC,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,SAAS,EAAE,CAAC,wBAAwB,EAAE,qBAAqB,CAAC;AAC5D,YAAA,MAAM,EAAE,CAAC,wBAAwB,EAAE,qBAAqB,CAAC;SAC5D,CAAC;AAEM,QAAA,IAAA,CAAA,qCAAqC,GAAG;YAC5C,OAAO,EAAE,CAAC,2BAA2B,CAAC;AACtC,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,MAAM,EAAE,EAAE;SACb,CAAC;AAEM,QAAA,IAAA,CAAA,kCAAkC,GAAG;YACzC,OAAO,EAAE,CAAC,2BAA2B,CAAC;AACtC,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,MAAM,EAAE,EAAE;SACb,CAAC;KA4ML;AArRG;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;QAClB,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;;YAE3B,IAAI,CAAC,IAAI,EAAE;gBACP,OAAO,IAAI,CAAC,mBAAmB,CAAC;AACnC,aAAA;AAED,YAAA,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACvG,gBAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,MAAM,EAAE;AACrC,oBAAA,OAAO,KAAK,CAAC;AAChB,iBAAA;AACD,gBAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,OAAO,EAAE;AACtC,oBAAA,OAAO,QAAQ,CAAC;AACnB,iBAAA;AACJ,aAAA;AACJ,SAAA;QAED,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AAqDM,IAAA,YAAY,CAAC,mBAA2B,EAAA;QAC3C,IAAI,IAAI,EAAE,KAAK,EAAE;AACb,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;YAE3B,IAAI,CAAC,IAAI,EAAE;AACP,gBAAA,OAAO,mBAAmB,CAAC;AAC9B,aAAA;YAED,QAAQ,IAAI,CAAC,IAAI;gBACb,KAAK,8BAA8B,CAAC,MAAM;AACtC,oBAAA,OAAO,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC;gBAC1D,KAAK,8BAA8B,CAAC,SAAS;AACzC,oBAAA,OAAO,IAAI,CAAC,kCAAkC,CAAC,SAAS,CAAC;gBAC7D,KAAK,8BAA8B,CAAC,OAAO,CAAC;AAC5C,gBAAA;AACI,oBAAA,OAAO,mBAAmB,CAAC;AAClC,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,mBAAmB,CAAC;KAC9B;IAEM,sBAAsB,CAAC,WAAmB,EAAE,WAAmB,EAAA;QAClE,IAAI,CAAC,WAAW,EAAE;YACd,WAAW,GAAG,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,KAAK,CAAC;AACjE,SAAA;QAED,IAAI,CAAC,WAAW,EAAE;YACd,WAAW,GAAG,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,KAAK,CAAC;AACjE,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACtB,OAAO,IAAI,CAAC,6BAA6B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACvE,SAAA;QAED,QAAQ,IAAI,CAAC,IAAI;YACb,KAAK,8BAA8B,CAAC,MAAM;AACtC,gBAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC;YACpD,KAAK,8BAA8B,CAAC,SAAS;AACzC,gBAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC;YACvD,KAAK,8BAA8B,CAAC,OAAO;gBACvC,OAAO,IAAI,CAAC,6BAA6B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC3E,SAAA;KACJ;AAED;;;;;AAKG;IAEI,mBAAmB,CAAC,gBAA4B,EAAE,aAAyB,EAAA;AAC9E,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,IAAI,CAAC,aAAa,EAAE;YACrC,OAAO;AACV,SAAA;AAED,QAAA,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,aAAa,CAAC,aAAa,CAAC;QACtE,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,EAAE,KAAK,gBAAgB,EAAE;YACxF,OAAO;AACV,SAAA;QAED,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QACvF,IAAI,CAAC,aAAa,EAAE;YAChB,OAAO;AACV,SAAA;QAED,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,aAAa,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;QAChG,IAAI,CAAC,gBAAgB,EAAE;YACnB,OAAO;AACV,SAAA;;QAGD,IAAI,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,wBAAwB,CAAC,EAAE;YACrE,OAAO;AACV,SAAA;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;;QAG3B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAErC,YAAA,IAAI,gBAAgB,EAAE;AAClB,gBAAA,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,qCAAqC,EAAE,SAAS,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAC9F,aAAA;AAED,YAAA,IAAI,aAAa,EAAE;AACf,gBAAA,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,kCAAkC,EAAE,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;AACxF,aAAA;AAED,YAAA,IAAI,gBAAgB,EAAE;gBAClB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,qBAAqB,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAChE,aAAA;AAED,YAAA,IAAI,aAAa,EAAE;gBACf,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,yBAAyB,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AACjE,aAAA;AAED,YAAA,IAAI,gBAAgB,EAAE;gBAClB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,4BAA4B,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;AACvE,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AACvB,YAAA,IAAI,gBAAgB,EAAE;AAClB,gBAAA,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,qCAAqC,EAAE,WAAW,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAChG,aAAA;AAED,YAAA,IAAI,aAAa,EAAE;AACf,gBAAA,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,kCAAkC,EAAE,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;AAC1F,aAAA;AAED,YAAA,IAAI,gBAAgB,EAAE;gBAClB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;AAClE,aAAA;AACD,YAAA,IAAI,aAAa,EAAE;gBACf,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,yBAAyB,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AACnE,aAAA;AACD,YAAA,IAAI,gBAAgB,EAAE;gBAClB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,4BAA4B,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;AACzE,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,UAAU,EAAE;AACxB,YAAA,IAAI,gBAAgB,EAAE;AAClB,gBAAA,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,qCAAqC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAC7F,aAAA;AAED,YAAA,IAAI,aAAa,EAAE;AACf,gBAAA,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,kCAAkC,EAAE,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;AACvF,aAAA;AAED,YAAA,IAAI,gBAAgB,EAAE;gBAClB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,qBAAqB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC/D,aAAA;AACD,YAAA,IAAI,aAAa,EAAE;gBACf,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,yBAAyB,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAChE,aAAA;AACD,YAAA,IAAI,gBAAgB,EAAE;gBAClB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,4BAA4B,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AACtE,aAAA;AACJ,SAAA;KACJ;AAED;;;;;AAKG;IACI,cAAc,CAAC,QAAwB,EAAE,IAAY,EAAA;QACxD,IAAI,CAAC,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACnE,OAAO;AACV,SAAA;AAED,QAAA,IAAI,MAAkB,CAAC;AACvB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE;;gBAEvF,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAE/C,gBAAA,IAAI,MAAM,EAAE;AACR,oBAAA,MAAM,GAAe;AACjB,wBAAA,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;qBAC7B,CAAC;oBACF,MAAM;AACT,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;IAEO,6BAA6B,CAAC,WAAmB,EAAE,WAAmB,EAAA;AAC1E,QAAA,IAAI,GAA2B,CAAC;QAChC,IAAI,WAAW,KAAK,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,KAAK;YAC/D,WAAW,KAAK,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,KAAK,EAAE;AAC7D,YAAA,GAAG,GAAG,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC;AACvD,SAAA;AAAM,aAAA;AACH,YAAA,GAAG,GAAG;AACF,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,KAAK,EAAE,WAAW;aACrB,CAAC;AACL,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACd;AACJ,CAAA;AAvJG,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;AACqC,IAAA,UAAA,CAAA,mBAAA,EAAA,CAAA,UAAU,EAAiB,UAAU,CAAA,CAAA;;AAyGjF,CAAA,EAAA,gCAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA;;;;;;ICvPD,EAAyD,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;;;IAQzD,EAE4E,CAAA,cAAA,CAAA,CAAA,EAAA,aAAA,EAAA,CAAA,CAAA,CAAA;IAA1E,EAAW,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,uFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAiB,CAAA,SAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAC/B,EAAc,CAAA,YAAA,EAAA,CAAA;;;IAFZ,EAAmC,CAAA,WAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA;AAD8B,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAD,KAAA,EAAA,MAAA,CAAA,UAAA,GAAA,CAAA,GAAA,IAAA,CAAA,CAAgC,CAAA,aAAA,EAAA,MAAA,CAAA,2BAAA,CAAA,CAAA;;;IAInG,EAAsD,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IAd1D,EAAsG,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACpG,EAAgI,CAAA,cAAA,CAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IAC9H,EAAyD,CAAA,UAAA,CAAA,CAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IAC3D,EAAU,CAAA,YAAA,EAAA,CAAA;IACV,EAIoD,CAAA,cAAA,CAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IAElD,EAGc,CAAA,UAAA,CAAA,CAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,CAAA,CAAA;IACd,EAAsD,CAAA,UAAA,CAAA,CAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACxD,EAAU,CAAA,YAAA,EAAA,CAAA;IACZ,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;IAfiE,EAAiD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjD,EAAiD,CAAA,WAAA,CAAA,2BAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAC9G,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,CAAA;IAElB,EAA2C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3C,EAA2C,CAAA,WAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA,oBAAA,EAAA,MAAA,CAAA,kBAAA,IAAA,MAAA,CAAA,2BAAA,KAAA,OAAA,CAAA,mGAAA,CAAA,2BAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAMnD,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAIf,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,CAAA;;;IASrC,EAAsD,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;;IAEtD,EAEqH,CAAA,cAAA,CAAA,CAAA,EAAA,aAAA,EAAA,CAAA,CAAA,CAAA;IAAnH,EAAW,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,uFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAiB,CAAA,SAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAC/B,EAAc,CAAA,YAAA,EAAA,CAAA;;;IAFZ,EAAmC,CAAA,WAAA,CAAA,gBAAA,EAAA,OAAA,CAAA,UAAA,CAAA,CAAA;AAD8B,IAAA,EAAA,CAAA,UAAA,CAAA,UAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,OAAA,CAAA,UAAA,GAAA,CAAA,GAAA,IAAA,CAAA,CAAgC,CAAA,aAAA,EAAA,OAAA,CAAA,2BAAA,CAAA,CAAA;IAEvB,EAAwC,CAAA,WAAA,CAAA,eAAA,EAAA,OAAA,CAAA,eAAA,EAAA,CAAA,CAAA;;;IAIpH,EAAyD,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IAd7D,EAAkG,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAChG,EAIoD,CAAA,cAAA,CAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IAClD,EAAsD,CAAA,UAAA,CAAA,CAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IAEtD,EAGc,CAAA,UAAA,CAAA,CAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,CAAA,CAAA;IAChB,EAAU,CAAA,YAAA,EAAA,CAAA;IACV,EAAgI,CAAA,cAAA,CAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IAC9H,EAAyD,CAAA,UAAA,CAAA,CAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IAC3D,EAAU,CAAA,YAAA,EAAA,CAAA;IACZ,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;IAfW,EAA2C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3C,EAA2C,CAAA,WAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA,qBAAA,EAAA,MAAA,CAAA,kBAAA,IAAA,MAAA,CAAA,2BAAA,KAAA,MAAA,CAAA,mGAAA,CAAA,2BAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAKlD,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,CAAA;IAEvB,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAK8C,EAAiD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjD,EAAiD,CAAA,WAAA,CAAA,2BAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAC9G,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,CAAA;;;IAK1C,EAAyD,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;;IAGzD,EAAsD,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;;;;ACPxD;;AAEG;MAKU,yBAAyB,CAAA;;qHAAzB,yBAAyB,GAAA,CAAA,EAAA,CAAA;2GAAzB,yBAAyB,EAAA,SAAA,EAAA,CAAA,CAAA,wBAAA,CAAA,CAAA,EAAA,kBAAA,EAAAH,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,kCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QAFvB,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;uFAE3B,yBAAyB,EAAA,CAAA;cAJrC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,wBAAwB;AAClC,gBAAA,QAAQ,EAAE,2BAA2B;AACxC,aAAA,CAAA;;AAGD;;AAEG;MAKU,sBAAsB,CAAA;;+GAAtB,sBAAsB,GAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,qBAAA,CAAA,CAAA,EAAA,kBAAA,EAAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QAFpB,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;uFAE3B,sBAAsB,EAAA,CAAA;cAJlC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,qBAAqB;AAC/B,gBAAA,QAAQ,EAAE,2BAA2B;AACxC,aAAA,CAAA;;AAGD;;AAEG;AAQG,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AA4NrD,IAAA,WAAA,CAAa,QAAkB,EACnB,gBAA4B,EACiB,MAAc,EAAA;QAEnE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAHR,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAY;AArNxC;;AAEG;QACO,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAO7C;;;AAGG;QACK,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAQlC;;AAEG;QACK,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAEnC;;AAEG;QACK,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;AAOvC;;AAEG;QACK,IAAmB,CAAA,mBAAA,GAAyB,QAAQ,CAAC;AAE7D;;;AAGG;AAEI,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEpE;;AAEG;AAEI,QAAA,IAAA,CAAA,uBAAuB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AA0B9E;;AAEG;QAEI,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAE7B;;AAEG;QAEI,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC;AAEjC;;;AAGG;QAEI,IAAmC,CAAA,mCAAA,GAAG,KAAK,CAAC;AAyBnD;;AAEG;QAEI,IAAoC,CAAA,oCAAA,GAAG,KAAK,CAAC;AAEpD;;AAEG;QAEI,IAAiB,CAAA,iBAAA,GAAG,GAAG,CAAC;AAE/B;;AAEG;QAEI,IAAiB,CAAA,iBAAA,GAAG,GAAG,CAAC;AAkB/B;;AAEG;QAEI,IAAkC,CAAA,kCAAA,GAAG,KAAK,CAAC;AAElD;;AAEG;QAEI,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AASjC;;AAEG;QACK,IAAmC,CAAA,mCAAA,GAAG,QAAQ,CAAC;AAuBvD;;AAEG;AAEI,QAAA,IAAA,CAAA,YAAY,GAA0C,IAAI,YAAY,EAA2B,CAAC;AAEzG;;AAEG;AAEI,QAAA,IAAA,CAAA,WAAW,GAA0C,IAAI,YAAY,EAA2B,CAAC;AAQpG,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,gCAAgC,GAAG,IAAI,gCAAgC,CAAC,MAAM,CAAC,CAAC;;YAErF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;;YAE9F,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAE1G,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAClC,SAAA;KACJ;AA1OD;;AAEG;AACF,IAAA,IAAc,aAAa,GAAA;AACxB,QAAA,OAAO,oBAAoB,CAAC;KAC/B;AAoGD;;;;AAIG;AACH,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;IAED,IACW,YAAY,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,KAAK,EAAE;YACrC,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAElC,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACzB,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACpC,SAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KACjC;AAoBD;;AAEG;IACH,IACW,WAAW,CAAC,KAA2B,EAAA;AAC9C,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,gCAAgC,EAAE;YACxC,OAAO;AACV,SAAA;AAED,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,gCAAgC,CAAC,mBAAmB,CAAC;AACtF,QAAA,IAAI,mBAAmB,KAAK,IAAI,CAAC,mBAAmB,EAAE;YAClD,IAAI,CAAC,gCAAgC,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACxF,SAAA;KACJ;AAcD;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAC;KACnC;AAOD;;AAEG;AACH,IAAA,IAAW,2BAA2B,GAAA;;QAElC,IAAI,IAAI,CAAC,kCAAkC,EAAE;YACzC,OAAO,IAAI,CAAC,WAAW,CAAC;AAC3B,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,gCAAgC,EAAE;YACxC,OAAO,IAAI,CAAC,WAAW,CAAC;AAC3B,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gCAAgC,CAAC,WAAW,CAAC;AAC9D,YAAA,IAAI,GAAG,KAAK,IAAI,CAAC,mCAAmC,EAAE;AAClD,gBAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC/B,gBAAA,IAAI,CAAC,mCAAmC,GAAG,GAAG,CAAC;AAClD,aAAA;AAED,YAAA,OAAO,IAAI,CAAC,gCAAgC,CAAC,WAAW,CAAC;AAC5D,SAAA;KACJ;AA+BD;;;;;;;AAOG;AACH,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,OAAO,2FAA2F,CAAC;KACtG;AAED;;AAEG;AACH,IAAA,IACW,aAAa,GAAA;QACpB,QAAQ,IAAI,CAAC,2BAA2B;AACpC,YAAA,KAAK,MAAM;AACP,gBAAA,OAAO,KAAK,CAAC;AACjB,YAAA,KAAK,KAAK;AACN,gBAAA,OAAO,QAAQ,CAAC;AACpB,YAAA,KAAK,OAAO;AACR,gBAAA,OAAO,KAAK,CAAC;AACjB,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA;AACI,gBAAA,OAAO,QAAQ,CAAC;AACvB,SAAA;KACJ;AAED;;AAEG;AACH,IAAA,IACW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED;;AAEG;IACH,IAAW,UAAU,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,kBAAkB,EAAE;YACnC,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACnB,UAAU,EAAE,IAAI,CAAC,kBAAkB;AACtC,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAClB,UAAU,EAAE,IAAI,CAAC,kBAAkB;AACtC,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC7B;AAED;;AAEG;IACI,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;AAED;;AAEG;IACI,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;KACzD;AAED;;AAEG;IACI,kBAAkB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;YACtB,OAAO,CAAC,GAAG,CAAC;gBACR,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,gBAAA,OAAO,EAAE,CAAqD,mDAAA,CAAA;AAC9D,gBAAA,MAAM,EAAE;oBACJ,OAAO,EAAE,IAAI,CAAC,OAAO;AACxB,iBAAA;AACD,gBAAA,MAAM,EAAE,uCAAuC;AAClD,aAAA,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC;gBACR,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,gBAAA,OAAO,EAAE,CAAkD,gDAAA,CAAA;AAC3D,gBAAA,MAAM,EAAE;oBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;AAClB,iBAAA;AACD,gBAAA,MAAM,EAAE,uCAAuC;AAClD,aAAA,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B,SAAA;KACJ;AAED;;AAEG;IACI,+BAA+B,GAAA;;QAElC,IAAI,IAAI,CAAC,mCAAmC,IAAI,CAAC,IAAI,CAAC,gCAAgC,EAAE;YACpF,OAAO,IAAI,CAAC,YAAY,CAAC;AAC5B,SAAA;QAED,OAAO,IAAI,CAAC,gCAAgC,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAChF;AAED;;AAEG;IACI,yCAAyC,GAAA;;QAE5C,IAAI,IAAI,CAAC,oCAAoC,IAAI,CAAC,IAAI,CAAC,gCAAgC,EAAE;YACrF,OAAO;gBACH,KAAK,EAAE,IAAI,CAAC,iBAAiB;gBAC7B,KAAK,EAAE,IAAI,CAAC,iBAAiB;aAChC,CAAC;AACL,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,gCAAgC,CAAC,sBAAsB,CAC/D,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;KACvD;AAED;;;AAGG;IAEI,yBAAyB,GAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC7D,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,gCAAgC,CAAC,mBAAmB,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;KACtH;AAED;;AAEG;IAEK,uBAAuB,GAAA;QAC3B,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC;AAED;;AAEG;IACK,qBAAqB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAC9B,OAAO;AACV,SAAA;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAExB,YAAA,MAAM,YAAY,GAA2B,IAAI,CAAC,yCAAyC,EAAE,CAAC;AAC9F,YAAA,MAAM,2BAA2B,GAAG,IAAI,CAAC,2BAA2B,CAAC;AACrE,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;YAE9D,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,EAAE;AACtE,gBAAA,IAAI,2BAA2B,KAAK,QAAQ,IAAI,2BAA2B,KAAK,KAAK,EAAE;AACnF,oBAAA,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AAChC,oBAAA,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AACtC,iBAAA;AAAM,qBAAA,IAAI,2BAA2B,KAAK,MAAM,IAAI,2BAA2B,KAAK,OAAO,EAAE;AAC1F,oBAAA,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AAC/B,oBAAA,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACvC,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,2BAA2B,KAAK,QAAQ,IAAI,2BAA2B,KAAK,KAAK;AAC/E,uBAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,YAAY,EAAE;oBACjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CACxB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;AAC3E,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;oBAEpE,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;AACpG,oBAAA,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAC1C,iBAAA;qBAAM,IAAI,CAAC,2BAA2B,KAAK,MAAM,IAAI,2BAA2B,KAAK,OAAO;AACtF,uBAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,WAAW,EAAE;oBAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CACxB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1E,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;oBAEpE,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;AACnG,oBAAA,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC3C,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC7B;AAED;;AAEG;IACI,UAAU,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;KACtC;AAED;;;AAGG;AACI,IAAA,SAAS,CAAC,MAAM,EAAA;QACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAExB,QAAA,MAAM,YAAY,GAA2B,IAAI,CAAC,yCAAyC,EAAE,CAAC;AAC9F,QAAA,MAAM,2BAA2B,GAAG,IAAI,CAAC,2BAA2B,CAAC;AACrE,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;AAE9D,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,EAAE;AACtE,YAAA,IAAI,2BAA2B,KAAK,QAAQ,IAAI,2BAA2B,KAAK,KAAK,EAAE;AACnF,gBAAA,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AAChC,gBAAA,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AACtC,aAAA;AAAM,iBAAA,IAAI,2BAA2B,KAAK,MAAM,IAAI,2BAA2B,KAAK,OAAO,EAAE;AAC1F,gBAAA,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AAC/B,gBAAA,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACvC,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,2BAA2B,KAAK,QAAQ,IAAI,2BAA2B,KAAK,KAAK,EAAE;AACnF,gBAAA,MAAM,aAAa,GAAG,2BAA2B,KAAK,QAAQ;AAC1D,oBAAA,aAAa,CAAC,YAAY,GAAG,MAAM,CAAC,CAAC;AACrC,oBAAA,aAAa,CAAC,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC;AAE1C,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;gBAChE,IAAI,CAAC,YAAY,GAAI,IAAI,CAAC,GAAG,CACzB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;gBAE3E,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AAClF,aAAA;AAAM,iBAAA,IAAI,2BAA2B,KAAK,MAAM,IAAI,2BAA2B,KAAK,OAAO,EAAE;AAC1F,gBAAA,MAAM,YAAY,GAAG,2BAA2B,KAAK,OAAO;AACxD,oBAAA,aAAa,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;AACpC,oBAAA,aAAa,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC;AAEzC,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC/D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CACxB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;gBAE1E,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AACjF,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC7B;AAED;;;AAGG;IACI,eAAe,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;KACtF;AAED;;;;;AAKG;AACK,IAAA,oBAAoB,CAAC,GAAW,EAAA;;AAEpC,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE;YACxG,OAAO;AACV,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;AAE1D,QAAA,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,QAAQ,EAAG;AACpC,YAAA,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;YAC/B,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,+BAA+B,EAAE,GAAG,IAAI,CAAC;AACvE,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAChD,SAAA;AAAM,aAAA,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,EAAE;YAC1C,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,+BAA+B,EAAE,GAAG,IAAI,CAAC;AACtE,YAAA,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACnC,SAAA;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;AAED;;;AAGG;IAEK,iBAAiB,GAAA;QACrB,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;AAED;;;AAGG;IACK,SAAS,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE;YACxG,OAAO;AACV,SAAA;AAED,QAAA,MAAM,4BAA4B,GAAG,IAAI,CAAC,+BAA+B,EAAE,CAAC;AAC5E,QAAA,MAAM,2BAA2B,GAAG,IAAI,CAAC,2BAA2B,CAAC;AACrE,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;QAE9D,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,4BAA4B;sBAC7D,4BAA4B,GAAG,IAAI,CAAC,YAAY,CAAC;;gBAEvD,IAAI,4BAA4B,KAAK,SAAS,EAAE;oBAC5C,YAAY,GAAG,4BAA4B,CAAC;AAC/C,iBAAA;AAED,gBAAA,IAAI,2BAA2B,KAAK,KAAK,IAAI,2BAA2B,KAAK,QAAQ,EAAE;AACnF,oBAAA,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,GAAG,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AACrE,oBAAA,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AACtC,iBAAA;AAAM,qBAAA,IAAI,2BAA2B,KAAK,MAAM,IAAI,2BAA2B,KAAK,OAAO,EAAE;AAC1F,oBAAA,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY,GAAG,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AACpE,oBAAA,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AACnC,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,2BAA2B,KAAK,KAAK,IAAI,2BAA2B,KAAK,QAAQ,EAAE;AACnF,gBAAA,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AACnC,aAAA;AAAM,iBAAA,IAAI,2BAA2B,KAAK,MAAM,IAAI,2BAA2B,KAAK,OAAO,EAAE;AAC1F,gBAAA,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AAClC,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAClC;AAED;;;;;AAKG;IAEK,uBAAuB,GAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE;YACxE,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC1B,OAAO;AACV,SAAA;AAED,QAAA,MAAM,2BAA2B,GAAG,IAAI,CAAC,2BAA2B,CAAC;AACrE,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;AAE9D,QAAA,IAAI,2BAA2B,KAAK,KAAK,IAAI,2BAA2B,KAAK,QAAQ,EAAE;AACnF,YAAA,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;AAClD,SAAA;AAAM,aAAA,IAAI,2BAA2B,KAAK,MAAM,IAAI,2BAA2B,KAAK,OAAO,EAAE;AAC1F,YAAA,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC;AACjD,SAAA;KACJ;AAED;;;;;AAKG;IACK,cAAc,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE;YACxE,OAAO;AACV,SAAA;AAED,QAAA,MAAM,YAAY,GAA2B,IAAI,CAAC,yCAAyC,EAAE,CAAC;AAC9F,QAAA,MAAM,2BAA2B,GAAG,IAAI,CAAC,2BAA2B,CAAC;AACrE,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;QAE9D,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,EAAE;AACtE,YAAA,IAAI,2BAA2B,KAAK,QAAQ,IAAI,2BAA2B,KAAK,KAAK,EAAE;AACnF,gBAAA,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;AACnC,gBAAA,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;AAC1C,aAAA;AAAM,iBAAA,IAAI,2BAA2B,KAAK,MAAM,IAAI,2BAA2B,KAAK,OAAO,EAAE;AAC1F,gBAAA,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;AAClC,gBAAA,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;AACzC,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,2BAA2B,KAAK,KAAK,IAAI,2BAA2B,KAAK,QAAQ,EAAE;AACnF,gBAAA,IAAI,CAAC,IAAI,CAAC,oCAAoC,EAAE;oBAC5C,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC;oBAC1D,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC;AAClH,iBAAA;AACJ,aAAA;AAAM,iBAAA,IAAI,2BAA2B,KAAK,MAAM,IAAI,2BAA2B,KAAK,OAAO,EAAE;gBAC1F,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAI,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC;gBAC1D,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,WAAW,GAAG,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC;AAChH,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;IACK,gBAAgB,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE;YACxE,OAAO;AACV,SAAA;AAED,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;AAE9D,QAAA,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;AAClC,QAAA,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;KACtC;;AAppBQ,mBAAA,kBAAA,CAAA,IAAA,GAAA,SAAA,0BAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,kBAAkB,+FA8NS,mBAAmB,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oGA9N9C,kBAAkB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;oCAkEb,yBAAyB,EAAA,CAAA,CAAA,CAAA;oCAMzB,sBAAsB,EAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;AA5EzB,KAAA,EAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,mCAAA,EAAA,qCAAA,EAAA,YAAA,EAAA,cAAA,EAAA,oCAAA,EAAA,sCAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kCAAA,EAAA,oCAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA;AACP,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAC,MAAM,kBAAkB,EAAC,EAAE;AACtF,SAAA,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,kBAAA,EAAA+B,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,SAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,eAAA,EAAA,EAAA,CAAA,EAAA,CAAA,OAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,qBAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,UAAA,EAAA,aAAA,EAAA,SAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,2BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QD1DL,EAgBe,CAAA,UAAA,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACf,EAgBe,CAAA,UAAA,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QAEf,EAEc,CAAA,UAAA,CAAA,CAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;QACd,EAEc,CAAA,UAAA,CAAA,CAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;QAxCC,EAAqF,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,2BAAA,KAAA,QAAA,IAAA,GAAA,CAAA,2BAAA,KAAA,OAAA,CAAA,CAAA;QAiBrF,EAAiF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjF,EAAiF,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,2BAAA,KAAA,KAAA,IAAA,GAAA,CAAA,2BAAA,KAAA,MAAA,CAAA,CAAA;;ACia5F,UAAA,CAAA;AAAC,IAAA3B,OAAK,EAAE;;;;AAOP,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AAAC,IAAA7C,UAAQ,EAAE;;;;AAGV,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;AAsJD,UAAA,CAAA;IAACA,UAAQ,CAAC,EAAE,CAAC;;;;AAGZ,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;AAiDD,UAAA,CAAA;AAAC,IAAAA,UAAQ,EAAE;;;;AAkBV,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;uFAjmBQ,kBAAkB,EAAA,CAAA;cAP9B,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAEf,SAAA,EAAA;AACP,oBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAC,MAAwB,kBAAA,EAAC,EAAE;AACtF,iBAAA,EAAA,QAAA,EAAA,k8GAAA,EAAA,CAAA;;sBAgOI,QAAQ;;sBAAI,QAAQ;;sBAAI,MAAM;uBAAC,mBAAmB,CAAA;wBAvKhD,aAAa,EAAA,CAAA;kBADnB,MAAM;YAOA,uBAAuB,EAAA,CAAA;kBAD7B,MAAM;YAOA,OAAO,EAAA,CAAA;kBADb,YAAY;mBAAC,yBAAyB,CAAA;YAOhC,IAAI,EAAA,CAAA;kBADV,YAAY;mBAAC,sBAAsB,CAAA;YAO7B,oBAAoB,EAAA,CAAA;kBAD1B,SAAS;mBAAC,eAAe,CAAA;YAOnB,uBAAuB,EAAA,CAAA;kBAD7B,SAAS;mBAAC,kBAAkB,CAAA;YAOtB,aAAa,EAAA,CAAA;kBADnB,KAAK;YAOC,kBAAkB,EAAA,CAAA;kBADxB,KAAK;YAQC,mCAAmC,EAAA,CAAA;kBADzC,KAAK;YAaK,YAAY,EAAA,CAAA;kBADtB,KAAK;YAkBC,oCAAoC,EAAA,CAAA;kBAD1C,KAAK;YAOC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YAOC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YAOK,WAAW,EAAA,CAAA;kBADrB,KAAK;YAiBC,kCAAkC,EAAA,CAAA;kBADxC,KAAK;YAOC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YAwCC,YAAY,EAAA,CAAA;kBADlB,MAAM;YAOA,WAAW,EAAA,CAAA;kBADjB,MAAM;YA6BI,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,OAAO,CAAA;YAST,aAAa,EAAA,CAAA;kBADvB,WAAW;mBAAC,sBAAsB,CAAA;YAmBxB,UAAU,EAAA,CAAA;kBADpB,KAAK;AAwGC,SAAA,CAAA,EAAA,yBAAyB,EAYxB,EAAA,EAAA,uBAAuB,EAyJvB,EAAA,EAAA,iBAAiB,MAoDjB,uBAAuB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACnoB5B,IAAM,iCAAiC,GAAvC,MAAM,iCAAkC,SAAQ,mCAAmC,CAAA;IAqFtF,WAAiE,CAAA,MAAc,EAAE,iBAA0B,EAAA;QACvG,KAAK,CAAC,MAAM,CAAC,CAAC;AApFlB;;AAEG;QACa,IAAI,CAAA,IAAA,GAAG,iBAAiB,CAAC;AAEzC;;;AAGG;QACI,IAAoC,CAAA,oCAAA,GAAG,KAAK,CAAC;AAEpD;;AAEG;QACI,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAEjC;;AAEG;QACI,IAAiC,CAAA,iCAAA,GAAG,KAAK,CAAC;AAEjD;;AAEG;QACI,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAEnC;;AAEG;QACI,IAAqC,CAAA,qCAAA,GAAG,KAAK,CAAC;AAErD;;AAEG;QACI,IAA4B,CAAA,4BAAA,GAAG,EAAE,CAAC;AASzC;;;;;;AAME;AACM,QAAA,IAAA,CAAA,uBAAuB,GAAG;AAC9B,YAAA,MAAM,EAAE;AACJ,gBAAA,GAAG,EAAE,IAAI;AACT,gBAAA,KAAK,EAAE,GAAG;AACb,aAAA;AACD,YAAA,SAAS,EAAE;AACP,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,KAAK,EAAE,GAAG;AACb,aAAA;AACD,YAAA,OAAO,EAAE;AACL,gBAAA,GAAG,EAAE,IAAI;AACT,gBAAA,KAAK,EAAE,GAAG;AACb,aAAA;SACJ,CAAC;AAEF;;AAEG;AACK,QAAA,IAAA,CAAA,sBAAsB,GAAG;AAC7B,YAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;AACvD,YAAA,SAAS,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;AACzD,YAAA,MAAM,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;SACzD,CAAC;AAEF;;AAEG;AACK,QAAA,IAAA,CAAA,+BAA+B,GAAG;AACtC,YAAA,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,CAAC,wBAAwB,CAAC;AACrC,YAAA,MAAM,EAAE,EAAE;SACb,CAAC;AAIE,QAAA,IAAI,iBAAiB,EAAE;YACnB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AACvD,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACpB,IAAI,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,iBAAiB,EAAE;oBAC7D,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;AACpE,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;AACvE,SAAA;KACJ;AAED;;;;;AAKG;AACI,IAAA,eAAe,CAAC,IAA6B,EAAA;QAChD,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AACjD,YAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC;AAC3C,SAAA;AAAM,aAAA;YACH,OAAO,IAAI,CAAC,GAAG,CAAC;AACnB,SAAA;KACJ;AAED;;;;AAIG;AACI,IAAA,mBAAmB,CAAC,iBAA8B,EAAE,iBAAiB,GAAG,IAAI,EAAA;AAC/E,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,OAAO;AACV,SAAA;QAED,IAAI,CAAC,iBAAiB,EAAE;YACpB,OAAO;AACV,SAAA;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE3B,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE5B,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,aAAa,CAAC,gCAAgC,CAAC,CAAC;AAC3F,QAAA,IAAI,mBAAmB,CAAC;AAExB,QAAA,IAAI,gBAAgB,EAAE;AAClB,YAAA,mBAAmB,GAAG,gBAAgB,CAAC,aAAa,CAAC;AACxD,SAAA;QAED,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,iBAAiB,IAAI,iBAAiB,EAAE;gBACxC,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,sBAAsB,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;AACpE,aAAA;AAED,YAAA,IAAI,mBAAmB,EAAE;gBACrB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,+BAA+B,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;AAC/E,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,UAAU,EAAE;YACxB,IAAI,iBAAiB,IAAI,iBAAiB,EAAE;gBACxC,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,sBAAsB,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AACjE,aAAA;AAED,YAAA,IAAI,mBAAmB,EAAE;gBACrB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,+BAA+B,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC5E,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YACrB,IAAI,iBAAiB,IAAI,iBAAiB,EAAE;gBACxC,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,sBAAsB,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAClE,aAAA;AAED,YAAA,IAAI,mBAAmB,EAAE;gBACrB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,+BAA+B,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;AAC7E,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;AACK,IAAA,gBAAgB,CAAC,IAA6B,EAAA;QAClD,IAAI,CAAC,oCAAoC,GAAG,IAAI;AAC5C,aAAC,IAAI,CAAC,IAAI,KAAK,8BAA8B,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,8BAA8B,CAAC,SAAS,CAAC,CAAC;QACpH,IAAI,CAAC,iBAAiB,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC;QAC9C,IAAI,CAAC,iCAAiC,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC;AAC9D,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,qCAAqC,GAAG,IAAI,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;QACzF,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC;KAClF;AAED;;;;AAIG;AACK,IAAA,+BAA+B,CAAC,IAA6B,EAAA;QACjE,QAAQ,IAAI,EAAE,IAAI;YACd,KAAK,8BAA8B,CAAC,MAAM;AACtC,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC;YACrG,KAAK,8BAA8B,CAAC,SAAS;AACzC,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC,CAAC;YACxG,KAAK,8BAA8B,CAAC,OAAO;AACvC,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC,CAAC;AACtG,YAAA;AACI,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC,CAAC;AACzG,SAAA;KACJ;CACJ,CAAA;AA9MY,iCAAiC,GAAA,UAAA,CAAA;IAqF7B,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;IAAE,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;AAAE,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,mBAAmB,CAAC,CAAA;;AArFvD,CAAA,EAAA,iCAAiC,CA8M7C;;;;;;;ICvND,EACwC,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAY,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;;;AAAvD,IAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,UAAA,CAAqB,CAAA,IAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAAiB,EAAY,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAZ,EAAY,CAAA,iBAAA,CAAA,MAAA,CAAA,MAAA,CAAA,CAAA;;;IAIpD,EAAgH,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAE9G,EAAmD,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IACrD,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAHwD,EAAiD,CAAA,WAAA,CAAA,2BAAA,EAAA,CAAA,MAAA,CAAA,YAAA,CAAA,CAAA;;;;IAkBzG,EAEoF,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAAnC,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8DAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAwB,CAAA,gBAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACjF,EAAsB,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAA4B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IACtD,EAA6B,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAgC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IACjE,EAC8C,CAAA,SAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAChD,EAAS,CAAA,YAAA,EAAA,CAAA;;;IAJe,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,iBAAA,CAAA,MAAA,CAAA,oBAAA,EAAA,CAAA,CAAA;IACrB,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,iBAAA,CAAA,MAAA,CAAA,wBAAA,EAAA,CAAA,CAAA;IAE3D,EAAuC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvC,EAAuC,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,eAAA,CAAA,aAAA,CAAA,CAAA;;;;IAK3C,EAEqE,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAFlC,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8DAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA+B,CAAA,uBAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAG1E,EAAgD,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAClD,EAAS,CAAA,YAAA,EAAA,CAAA;;;IAFP,EAAoC,CAAA,WAAA,CAAA,aAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAAA;;;;IAGtC,EAG8E,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAH7C,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAmB,CAAA,YAAA,CAAA,IAAA,EAAA,CAAA,CAAE,EAAA,CAAA,CAAA;IAI7D,EAAoD,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACtD,EAAS,CAAA,YAAA,EAAA,CAAA;;;IAFP,EAAwC,CAAA,WAAA,CAAA,aAAA,EAAA,MAAA,CAAA,kBAAA,CAAA,CAAA;IAFxC,EAA4C,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,eAAA,CAAA,YAAA,CAAA,KAAA,CAAA,CAAA;IAAC,EAAwC,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,kBAAA,EAAA,CAAA,CAAA;;;;IAKvF,EAGqF,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAFnF,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAsB,CAAA,oBAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAGhC,EAA+C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACjD,EAAS,CAAA,YAAA,EAAA,CAAA;;;IAJsD,EAA6D,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,kBAAA,IAAA,MAAA,CAAA,eAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;AAD7E,IAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,MAAA,CAAA,cAAA,CAAqC,CAAA,YAAA,EAAA,MAAA,CAAA,kBAAA,IAAA,MAAA,CAAA,sBAAA,CAAA,CAAA;;;;IAMpF,EAGqC,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAHV,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAa,CAAA,MAAA,CAAA,IAAA,EAAA,CAAA,CAAE,EAAA,CAAA,CAAA;IAIjD,EAA8C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAChD,EAAS,CAAA,YAAA,EAAA,CAAA;;;IAFP,EAAkC,CAAA,WAAA,CAAA,aAAA,EAAA,MAAA,CAAA,YAAA,CAAA,CAAA;IAFlC,EAAsC,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,eAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;IAAC,EAAwC,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,kBAAA,EAAA,CAAA,CAAA;;;;IAKjF,EAGoC,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAHV,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAY,CAAA,KAAA,CAAA,IAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAK9C,EAAmD,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACrD,EAAS,CAAA,YAAA,EAAA,CAAA;;;IAHP,EAAiC,CAAA,WAAA,CAAA,aAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IAH0C,EAAqC,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,eAAA,CAAA,KAAA,CAAA,KAAA,CAAA,CAAA;IAChH,EAA+C,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,eAAA,CAAA,KAAA,CAAA,KAAA,CAAA,CAAA;;;IASjD,EAA+D,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC7D,EAAiE,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IACnE,EAAM,CAAA,YAAA,EAAA,CAAA;;;AAGR,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAoD,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAEhD,EAAgE,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAClE,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;;AC9BN,MAAO,mBAAoB,SAAQ,mBAAmB,CAAA;IA4UxD,WACI,CAAA,QAAkB,EACX,WAAuB,EACV,wBAAkD,EAClD,SAA6B,EAC7B,cAA8B,EACG,MAAc,EAAA;;;;;;;QAQnE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAZT,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;QACV,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;QAClD,IAAS,CAAA,SAAA,GAAT,SAAS,CAAoB;QAC7B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AA5StD;;AAEG;QACI,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC;AAEtE;;AAEG;QACI,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC;AAwDhE;;AAEG;QACa,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAEnC;;AAEG;QACa,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;AAE5B;;AAEG;QACa,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;AAE1B;;AAEG;QACa,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;AAErC;;AAEG;QACa,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAEzC;;AAEG;QACa,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAE3C;;;AAGG;QACa,IAA4B,CAAA,4BAAA,GAAG,KAAK,CAAC;AAErD;;AAEG;QACa,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAE3C;;AAEG;QACa,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;AAEnC;;AAEG;QACa,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAEvC;;AAEG;QACa,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC;AAEzC;;AAEG;QACa,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAElC;;AAEG;QACa,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAErC;;AAEG;QACa,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAEvC;;AAEG;QACa,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAe1C;;AAEG;AAEI,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAO,CAAC;AAqBjD;;AAEG;QACa,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAEpC;;AAEG;QAEI,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC;AAEhC;;AAEG;QAEI,IAAqB,CAAA,qBAAA,GAAG,IAAI,CAAC;AAQpC;;AAEG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAA8B,yBAAyB,CAAC,GAAG,CAAC;AAQnF;;AAEG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEvE;;AAEG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEvE;;AAEG;AAEI,QAAA,IAAA,CAAA,YAAY,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEnE;;AAEG;AAEI,QAAA,IAAA,CAAA,OAAO,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAE9D;;AAEG;AAEI,QAAA,IAAA,CAAA,MAAM,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAE7D;;AAEG;AAEI,QAAA,IAAA,CAAA,KAAK,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAE5D;;AAEG;AAEI,QAAA,IAAA,CAAA,cAAc,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAErE;;AAEG;AAEI,QAAA,IAAA,CAAA,6BAA6B,GAA0B,IAAI,YAAY,EAAW,CAAC;AAE1F;;;AAGE;AAEK,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEpE;;AAEG;AAEI,QAAA,IAAA,CAAA,uBAAuB,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAEvE,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAiB,CAAA,iBAAA,GAAG,CAAC,CAAC;QACtB,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;QACnB,IAAuB,CAAA,uBAAA,GAAG,IAAI,CAAC;QAc9B,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;;AAoB1B,QAAA,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC;AAExD,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,iCAAiC,GAAG,IAAI,iCAAiC,CAAC,MAAM,CAAC,CAAC;;YAEvF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;;YAExF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAE1G,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAClC,SAAA;KACJ;AAxWD;;AAEG;AACH,IAAA,IAAW,4BAA4B,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,iCAAiC,CAAC,4BAA4B,CAAC;KAC9E;AAED;;AAEG;AACH,IAAA,IAAW,oCAAoC,GAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,iCAAiC,CAAC,oCAAoC,CAAC;KACtF;AAED;;AAEG;AACH,IAAA,IAAW,iCAAiC,GAAA;AACxC,QAAA,OAAO,IAAI,CAAC,iCAAiC,CAAC,iCAAiC,CAAC;KACnF;AAED;;AAEG;AACH,IAAA,IAAW,mBAAmB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,iCAAiC,CAAC,mBAAmB,CAAC;KACrE;AAED;;AAEG;AACH,IAAA,IAAW,qCAAqC,GAAA;AAC5C,QAAA,OAAO,IAAI,CAAC,iCAAiC,CAAC,qCAAqC,CAAC;KACvF;AA0CD;;AAEG;AACH,IAAA,IACW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED;;AAEG;IACH,IAAW,YAAY,CAAC,KAAyB,EAAA;AAC7C,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACtC,SAAA;KACJ;AAoFD;;AAEG;IACH,IAAoB,SAAS,CAAC,SAAc,EAAA;QACxC,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC1B,YAAA,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;AAC5B,SAAA;aAAM,IAAI,CAAC,CAAC,SAAS,EAAE;YACpB,KAAK,GAAG,CAAC,CAAC;AACb,SAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAClC;AAcD;;AAEG;IACH,IACW,gBAAgB,CAAC,KAAc,EAAA;AACtC,QAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;KACzC;AACD,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AA2GD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,qBAAqB,CAAC;KAChC;AAyCD;;AAEG;IACI,eAAe,GAAA;QAClB,UAAU,CAAC,MAAK;;;YAGZ,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;YACtC,IAAI,CAAC,YAAY,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,MAAK;AAC9E,gBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,EAAE;oBACnF,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,MAAK;AACzE,gBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;oBAC7B,IAAI,oBAAoB,GAAG,IAAI,CAAC;AAChC,oBAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAC/B,wBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;4BAC7E,oBAAoB,GAAG,KAAK,CAAC;AAChC,yBAAA;AACJ,qBAAA;AAAM,yBAAA;AACH,wBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACjF,wBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;4BAChD,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;4BAClD,IAAI,MAAM,KAAK,cAAc,EAAE;gCAC3B,oBAAoB,GAAG,KAAK,CAAC;gCAC7B,MAAM;AACT,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AAED,oBAAA,IAAI,oBAAoB,EAAE;AACtB,wBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC9B,qBAAA;AACJ,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAEM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;AAC5C,SAAA;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnG,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;AACjF,SAAA;KACJ;;;;;AAMM,IAAA,WAAW,CAAC,OAAsB,EAAA;QACrC,IAAI,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;QAEzE,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1F,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,cAAc,EAAE,YAAY,KAAK,IAAI,EAAE;AAC/C,YAAA,IAAI,CAAC,sBAAsB,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAA,CAAA,EAAI,kBAAkB,CAAA,CAAE,CAAC;AACxF,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,sBAAsB,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAA,CAAA,EAAI,kBAAkB,CAAA,CAAE,CAAC;AACvF,SAAA;KACJ;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,gCAAgC,EAAE;AACzD,YAAA,IAAI,CAAC,gCAAgC,CAAC,WAAW,EAAE,CAAC;AACvD,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,6BAA6B,EAAE;AACzD,YAAA,IAAI,CAAC,6BAA6B,CAAC,WAAW,EAAE,CAAC;AACpD,SAAA;KACJ;AAED;;;AAGG;IACI,+BAA+B,GAAA;AAClC,QAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC;KAC7C;AAED;;;AAGG;IAEK,eAAe,GAAA;QACnB,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;AAED;;AAEG;IAEK,uBAAuB,GAAA;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;;AAGG;AACI,IAAA,uBAAuB,CAAC,MAAM,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACjF,OAAO;AACV,SAAA;QAED,MAAM,CAAC,cAAc,EAAE,CAAC;AAExB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAE3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAE7B,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;YAChD,OAAO,CAAC,GAAG,CAAC;gBACR,KAAK,EAAE,QAAQ,CAAC,OAAO;AACvB,gBAAA,OAAO,EAAE,CAA6E,2EAAA,CAAA;AACtF,gBAAA,MAAM,EAAE,+CAA+C;AAC1D,aAAA,CAAC,CAAC;YAEH,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACpC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;KAChC;AAED;;;AAGG;AACI,IAAA,kBAAkB,CAAC,iBAAuB,EAAA;QAC7C,IAAI;AACA,YAAA,IAAI,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC5E,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAChC,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;AAC3G,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,GAAG,CAAC;gBACR,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,OAAO,EAAE,CAAuB,oBAAA,EAAA,KAAK,CAAG,CAAA,CAAA;AACxC,gBAAA,MAAM,EAAE,+CAA+C;AAC1D,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAED;;;AAGG;IACI,yBAAyB,GAAA;AAC5B,QAAA,IAAI,CAAC,iCAAiC,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;KACvH;AAED;;AAEG;IACI,YAAY,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;YAChD,OAAO;AACV,SAAA;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC;AAE/D,QAAA,IAAI,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;AAChD,QAAA,IAAI,IAAI,CAAC,iCAAiC,CAAC,iBAAiB,EAAE;AAC1D,YAAA,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;AAChD,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC7B;IAEM,SAAS,GAAA;QACZ,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrD,aAAA;iBAAM,IAAI,IAAI,CAAC,YAAY,EAAE;AAC1B,gBAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrD,aAAA;AACJ,SAAA;KACJ;AAEM,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QACrC,MAAM,IAAI,GAAG,GAAG,CAAC,kBAAkB,CAAc,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/D,QAAA,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC9B;AAED;;;AAGG;IACI,gBAAgB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1G;AAED;;;AAGG;IACI,oBAAoB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KACvE;AAED;;;AAGG;IACI,wBAAwB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC3E;AAED;;;AAGG;IACI,kBAAkB,GAAA;AACrB,QAAA,OAAO,CAAG,EAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAI,CAAA,EAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YACvG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;KAChD;IAEM,wBAAwB,GAAA;QAC3B,OAAO,CAAA,EAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK;cACzD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;KACpG;AAED;;AAEG;IACI,eAAe,GAAA;QAClB,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,CAAC;AAC7C,SAAA;KACJ;AAED;;AAEG;IACI,oBAAoB,GAAA;QACvB,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACvB;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,iBAAiB,EAAE,EAAE;AACrB,YAAA,cAAc,EAAE,EAAE;SACrB,CAAC;KACL;AAEO,IAAA,yBAAyB,CAAC,eAAmC,EAAA;QACjE,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,gBAAgB,GAAG,IAAI,CAAC;YAC5B,gBAAgB,GAAG,eAAe,CAAC,aAAa,CAAC,eAAe,CAAC,0BAA0B,EAAE,CAAC,CAAC;AAE/F,YAAA,MAAM,eAAe,GAAG,CAAC,CAAC,gBAAgB,CAAC;AAE3C,YAAA,IAAI,eAAe,IAAI,gBAAgB,KAAK,IAAI,CAAC,oBAAoB,EAAE;AACnE,gBAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE;oBACtE,UAAU,CAAC,MAAK;AACZ,wBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AAC5B,4BAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;AAC/B,yBAAA;AACL,qBAAC,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAC;AAChD,SAAA;KACJ;IAEO,2BAA2B,GAAA;QAC/B,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC;AACjE,aAAA;iBAAM,IAAI,IAAI,CAAC,cAAc,EAAE;AAC5B,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/G,gBAAA,IAAI,WAAW,EAAE;oBACb,IAAI,CAAC,oBAAoB,CAAC,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC;AAChE,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;;AArqBQ,mBAAA,mBAAA,CAAA,IAAA,GAAA,SAAA,2BAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,mBAAmB,wOAkVQ,mBAAmB,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA;qGAlV9C,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,iBAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,kCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;oCAwDd,kBAAkB,EAAA,CAAA,CAAA,CAAA;oCAwBlB,kBAAkB,EAAA,CAAA,CAAA,CAAA;;;;;;;;;;;uBANrB,0BAA0B,EAAA,CAAA,CAAA,CAAA;;;;;;AA9E1B,KAAA,EAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,+BAAA,EAAA,aAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA;AACP,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAC,MAAM,mBAAmB,EAAC,EAAE;AACvF,SAAA,CAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,kBAAA,EAAAwE,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,OAAA,EAAA,6FAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,eAAA,CAAA,EAAA,CAAA,QAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,OAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,4BAAA,CAAA,EAAA,CAAA,WAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,IAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,sGAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,4EAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,4EAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,4EAAA,EAAA,CAAA,EAAA,OAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,4EAAA,EAAA,CAAA,EAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,+BAAA,EAAA,EAAA,EAAA,CAAA,EAAA,+BAAA,CAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,kCAAA,EAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,mCAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,mCAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,mCAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,mCAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,mCAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,4BAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QD3CL,EACyD,CAAA,UAAA,CAAA,CAAA,EAAA,iCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;QACzD,EAAwD,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAApC,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,gEAAA,GAAA,EAAA,OAAiB,qBAAiB,CAAC,EAAA,CAAA,CAAA;QACrD,EAA2E,CAAA,SAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QAC7E,EAAa,CAAA,YAAA,EAAA,CAAA;QACb,EAGM,CAAA,UAAA,CAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACN,EAEiF,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAE/E,EAA6D,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;AAE7D,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACmH,aAAA,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;QAKL,EACnF,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;QAAA,EAAI,CAAA,YAAA,EAAA,CAAA;QAC3B,EAOS,CAAA,UAAA,CAAA,EAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;QACX,EAAM,CAAA,YAAA,EAAA,CAAA;QAEN,EAAkD,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QAChD,EAIS,CAAA,UAAA,CAAA,EAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;QACT,EAKS,CAAA,UAAA,CAAA,EAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;QACT,EAKS,CAAA,UAAA,CAAA,EAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;QACT,EAKS,CAAA,UAAA,CAAA,EAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;QACT,EAMS,CAAA,UAAA,CAAA,EAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;QACX,EAAM,CAAA,YAAA,EAAA,CAAA;QAEN,EAA4B,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QAC1B,EAEM,CAAA,UAAA,CAAA,EAAA,EAAA,mCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QACR,EAAM,CAAA,YAAA,EAAA,CAAA;QAEN,EAIO,CAAA,UAAA,CAAA,EAAA,EAAA,oCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AACT,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;QAER,EAKiE,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;AALpB,QAAA,EAAA,CAAA,UAAA,CAAA,+BAAA,EAAA,SAAA,0EAAA,GAAA,EAAA,OAAiC,qCAAiC,CAAC,EAAA,CAAA,CAAA;QAM5G,EAAyB,CAAA,YAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA;QAC7B,EAAM,CAAA,YAAA,EAAA,CAAA;;;QAtFmG,EAAY,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAG9E,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAb,EAAa,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,CAAA;QAE9C,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,iBAAA,CAAA,CAAA;QAK3B,EAAiD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAjD,QAAA,EAAA,CAAA,WAAA,CAAA,2BAAA,EAAA,CAAA,GAAA,CAAA,YAAA,CAAiD,CAAA,qBAAA,EAAA,EAAA,GAAA,CAAA,2BAAA,KAAA,QAAA,CAAA,CAAA,CAAA;QAKO,EAAiD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAjD,QAAA,EAAA,CAAA,WAAA,CAAA,2BAAA,EAAA,CAAA,GAAA,CAAA,YAAA,CAAiD,yCAAA,CAAA,wBAAA,EAAA,GAAA,CAAA,oCAAA,CAAA,CAAA;QAKrG,EAAwE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAxE,EAAwE,CAAA,WAAA,CAAA,sBAAA,EAAA,GAAA,CAAA,iBAAA,KAAA,CAAA,IAAA,CAAA,GAAA,CAAA,aAAA,CAAA,CAAA;QACvD,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA3B,EAA2B,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,KAAA,CAAA,cAAA,CAAA,CAAA;QAA8D,EACnF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QADmF,EACnF,CAAA,iBAAA,CAAA,GAAA,CAAA,gBAAA,EAAA,CAAA,CAAA;QAGpB,EAA4C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA5C,EAA4C,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,iBAAA,GAAA,CAAA,IAAA,GAAA,CAAA,aAAA,CAAA,CAAA;QAStC,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,kBAAA,CAAA,CAAA;QAKxB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,gBAAA,CAAA,CAAA;QAMH,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;QAMpC,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA;QAMhB,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAUlB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,gBAAA,CAAA,CAAA;QAKvB,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAWxB,EAA2H,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA3H,EAA2H,CAAA,sBAAA,CAAA,qFAAA,EAAA,GAAA,CAAA,4BAAA,EAAA,EAAA,CAAA,CAAA;QAH3H,EAAsD,CAAA,WAAA,CAAA,0BAAA,EAAA,GAAA,CAAA,mBAAA,CAAA,CAAA,uBAAA,EAAA,GAAA,CAAA,qCAAA,CAAA,oEAAA,CAAA,6BAAA,EAAA,CAAA,GAAA,CAAA,uBAAA,CAAA,CAAA;;ACgbpD,UAAA,CAAA;AAAC,IAAA3B,OAAK,EAAE;;;;AAGP,CAAA,EAAA,mBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AAAC,IAAA7C,UAAQ,EAAE;;;;AAGV,CAAA,EAAA,mBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;uFA9dQ,mBAAmB,EAAA,CAAA;cAP/B,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAEhB,SAAA,EAAA;AACP,oBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAC,MAAyB,mBAAA,EAAC,EAAE;AACvF,iBAAA,EAAA,QAAA,EAAA,mhLAAA,EAAA,CAAA;;sBAiVI,QAAQ;;sBACR,QAAQ;;sBACR,QAAQ;;sBACR,QAAQ;;sBAAI,QAAQ;;sBAAI,MAAM;uBAAC,mBAAmB,CAAA;wBA/RhD,aAAa,EAAA,CAAA;kBADnB,YAAY;mBAAC,QAAQ,CAAA;YAOf,kBAAkB,EAAA,CAAA;kBADxB,YAAY;mBAAC,kBAAkB,CAAA;YAOzB,gBAAgB,EAAA,CAAA;kBADtB,SAAS;mBAAC,WAAW,CAAA;YAOf,QAAQ,EAAA,CAAA;kBADd,SAAS;mBAAC,UAAU,CAAA;YAOd,6BAA6B,EAAA,CAAA;kBADnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;YAO7C,YAAY,EAAA,CAAA;kBADtB,YAAY;mBAAC,kBAAkB,CAAA;YAmBzB,YAAY,EAAA,CAAA;kBADlB,YAAY;mBAAC,cAAc,CAAA;YAMZ,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAKU,MAAM,EAAA,CAAA;kBAArB,KAAK;YAKU,KAAK,EAAA,CAAA;kBAApB,KAAK;YAKU,aAAa,EAAA,CAAA;kBAA5B,KAAK;YAKU,gBAAgB,EAAA,CAAA;kBAA/B,KAAK;YAKU,kBAAkB,EAAA,CAAA;kBAAjC,KAAK;YAMU,4BAA4B,EAAA,CAAA;kBAA3C,KAAK;YAKU,kBAAkB,EAAA,CAAA;kBAAjC,KAAK;YAKU,WAAW,EAAA,CAAA;kBAA1B,KAAK;YAKU,cAAc,EAAA,CAAA;kBAA7B,KAAK;YAKU,iBAAiB,EAAA,CAAA;kBAAhC,KAAK;YAKU,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAKU,YAAY,EAAA,CAAA;kBAA3B,KAAK;YAKU,cAAc,EAAA,CAAA;kBAA7B,KAAK;YAKU,iBAAiB,EAAA,CAAA;kBAAhC,KAAK;YAKc,SAAS,EAAA,CAAA;kBAA5B,KAAK;YAcC,eAAe,EAAA,CAAA;kBADrB,MAAM;YAOA,uBAAuB,EAAA,CAAA;kBAD7B,KAAK;YAOK,gBAAgB,EAAA,CAAA;kBAD1B,KAAK;YAaU,WAAW,EAAA,CAAA;kBAA1B,KAAK;YAMC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YAOC,qBAAqB,EAAA,CAAA;kBAD3B,KAAK;YAOC,SAAS,EAAA,CAAA;kBADf,KAAK;YAOC,gBAAgB,EAAA,CAAA;kBADtB,KAAK;YAOC,kBAAkB,EAAA,CAAA;kBADxB,KAAK;YAOC,gBAAgB,EAAA,CAAA;kBADtB,MAAM;YAOA,gBAAgB,EAAA,CAAA;kBADtB,MAAM;YAOA,YAAY,EAAA,CAAA;kBADlB,MAAM;YAOA,OAAO,EAAA,CAAA;kBADb,MAAM;YAOA,MAAM,EAAA,CAAA;kBADZ,MAAM;YAOA,KAAK,EAAA,CAAA;kBADX,MAAM;YAOA,cAAc,EAAA,CAAA;kBADpB,MAAM;YAOA,6BAA6B,EAAA,CAAA;kBADnC,MAAM;YAQA,aAAa,EAAA,CAAA;kBADnB,MAAM;YAOA,uBAAuB,EAAA,CAAA;kBAD7B,MAAM;AAgKC,SAAA,CAAA,EAAA,eAAe,MAQf,uBAAuB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MC9etB,gBAAgB,CAAA;;mGAAhB,gBAAgB,GAAA,CAAA,EAAA,CAAA;iGAAhB,gBAAgB,EAAA,CAAA,CAAA;AAJd,mBAAA,gBAAA,CAAA,IAAA,6BAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,SAAA,EAAA;QACP,wBAAwB;AAC3B,KAAA,EAAA,OAAA,EAAA,CARG,YAAY;QACZ,YAAY;QACZ,uBAAuB;QACvB,WAAW;QACX,aAAa,CAAA,EAAA,CAAA,CAAA;uFAMR,gBAAgB,EAAA,CAAA;cAlB5B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,mBAAmB;AACtB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,mBAAmB;AACtB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,YAAY;oBACZ,uBAAuB;oBACvB,WAAW;oBACX,aAAa;AAChB,iBAAA;AACD,gBAAA,SAAS,EAAE;oBACP,wBAAwB;AAC3B,iBAAA;AACJ,aAAA,CAAA;;wFACY,gBAAgB,EAAA,EAAA,YAAA,EAAA,CAbrB,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAGnB,YAAY;QACZ,YAAY;QACZ,uBAAuB;QACvB,WAAW;AACX,QAAA,aAAa,aAVb,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACN3B;;AAEG;AACG,MAAO,sBAAuB,SAAQ,eAAe,CAAA;AACvD;;;;;AAKG;AACH,IAAA,WAAA,CAAY,OAAuB,EAAA;QAC/B,KAAK,CAAC,OAAO,CAAC,CAAC;KAClB;;+GATQ,sBAAsB,EAAA,EAAA,CAAA,QAAA,CAAAK,cAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAtB,mBAAA,sBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,sBAAsB,WAAtB,sBAAsB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAtB,sBAAsB,EAAA,CAAA;cAJlC,UAAU;;;MCAE,8BAA8B,CAAA;AACvC,IAAA,WAAA,CAAoB,SAA6B,EAAA;QAA7B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAoB;KAAK;AAE/C,IAAA,uBAAuB,CAAC,MAA4C,EAAA;AACvE,QAAA,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,iBAAiB,EAAE;AACrD,YAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACjD,YAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACnD,YAAA,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjD,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,gBAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AACzE,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACrC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;4BACxC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,yBAAA;AACJ,qBAAA;oBACD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AAChC,wBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;wBACpB,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACjC,4BAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACtB,yBAAA;AACL,qBAAC,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;YACvD,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC3B,SAAA;KACJ;AAEM,IAAA,oBAAoB,CAAC,KAAa,EAAA;QACrC,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,IAAI,aAAa,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAChG,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,MAAM,CAAC;AACpC,YAAA,IAAI,CAAC,SAAS,CAAC,uBAAuB,GAAG,KAAK,CAAC;AAC/C,YAAA,IAAI,MAAM,EAAE;AACR,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;AAChC,oBAAA,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC;AACxC,iBAAA;AACD,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE;AAC5C,oBAAA,IAAI,CAAC,SAAS,CAAC,0BAA0B,GAAG,IAAI,CAAC;AACpD,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC;AAC1C,gBAAA,IAAI,CAAC,SAAS,CAAC,0BAA0B,GAAG,SAAS,CAAC;AACzD,aAAA;AACJ,SAAA;KACJ;IAGM,gBAAgB,GAAA;QACnB,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AAChC,SAAA;KACJ;IAEM,SAAS,GAAA;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;QAClF,MAAM,mBAAmB,GAA2B,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YACxE,OAAO;gBACH,OAAO,EAAE,IAAI,CAAC,KAAK;gBACnB,OAAO,EAAE,IAAI,CAAC,KAAK;gBACnB,QAAQ,EAAE,IAAI,CAAC,MAAM;gBACrB,QAAQ,EAAE,IAAI,CAAC,MAAM;gBACrB,iBAAiB,EAAE,IAAI,CAAC,eAAe;gBACvC,YAAY,EAAE,IAAI,CAAC,UAAU;gBAC7B,UAAU,EAAE,IAAI,CAAC,QAAQ;gBACzB,UAAU,EAAE,IAAI,CAAC,QAAQ;aAC5B,CAAC;AACN,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,mBAAmB,CAAC;KAC9B;AACJ,CAAA;AAvBG,UAAA,CAAA;AAAC,IAAAL,UAAQ,EAAE;;;;AAKV,CAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA;;;;;ICzDH,EAAkC,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IAAA,EAAuB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA3B,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,iBAAA,CAAA,MAAA,CAAA,mBAAA,CAAA,CAAA;;;IAOrD,EAA4H,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;;;IAA7D,EAAwC,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,4BAAA,CAAA,CAAA;;;IAEzG,EAAmF,CAAA,SAAA,CAAA,CAAA,EAAA,WAAA,EAAA,EAAA,CAAA,CAAA;;;IAA3C,EAA8B,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,oBAAA,CAAA,CAAA;;;;IACtE,EAEyB,CAAA,cAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA;IAD+D,EAA2B,CAAA,UAAA,CAAA,gBAAA,EAAA,SAAA,kHAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,KAAA,GAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA;IAEjH,EACgE,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IADmB,EAAqB,CAAA,UAAA,CAAA,iBAAA,EAAA,SAAA,kHAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,KAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AAEtG,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,EAAA,CAAmI,gCAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,CAAA;AAGrI,IAAA,EAAA,CAAA,YAAA,EAAiB,EAAA,CAAA;;;;;IARqF,EAAmB,CAAA,UAAA,CAAA,WAAA,EAAA,KAAA,CAAA,CAAA,YAAA,EAAA,KAAA,CAAA,CAAA,aAAA,EAAA,KAAA,CAAA,CAAA,WAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA,OAAA,EAAA,GAAA,CAAA,aAAA,CAAA,MAAA,CAAA,CAAA;IAGxE,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjC,EAAiC,CAAA,qBAAA,CAAA,eAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAApD,EAAkB,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA,WAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA,YAAA,EAAA,IAAA,CAAA,CAAA,mBAAA,EAAA,GAAA,CAAA,CAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;IAES,EAAmC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnC,EAAmC,CAAA,qBAAA,CAAA,QAAA,EAAA,MAAA,CAAA,sBAAA,CAAA,CAAA;IACtD,EAAmC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnC,EAAmC,CAAA,qBAAA,CAAA,QAAA,EAAA,MAAA,CAAA,sBAAA,CAAA,CAAA;IAC9B,EAAwC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxC,EAAwC,CAAA,qBAAA,CAAA,QAAA,EAAA,MAAA,CAAA,2BAAA,CAAA,CAAA;;;IAGrF,EAA8F,CAAA,SAAA,CAAA,CAAA,EAAA,WAAA,EAAA,EAAA,CAAA,CAAA;;;IAAtD,EAAyC,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,+BAAA,CAAA,CAAA;;;;AAnBnF,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAoH,aAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA,CAAA;AAE7D,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,qFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,YAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAA0B,CACI,eAAA,EAAA,SAAA,qFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA2B,CAAA,yBAAA,EAAA,CAAA,CAD/B,EAAA,CAAA,CAAA;IAA7E,EAC8G,CAAA,YAAA,EAAA,CAAA;IAC9G,EAC4F,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IAAtC,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8EAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA2B,CAAA,yBAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAAC,EAAqB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;IAC1H,EAA4H,CAAA,UAAA,CAAA,CAAA,EAAA,0EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,CAAA,CAAA;IAC9H,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAAmF,CAAA,UAAA,CAAA,CAAA,EAAA,kEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,CAAA,CAAA;IACnF,EASkB,CAAA,UAAA,CAAA,CAAA,EAAA,wEAAA,EAAA,CAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA;IAClB,EAA8F,CAAA,UAAA,CAAA,CAAA,EAAA,kEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,CAAA,CAAA;IAChG,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAlBiD,EAA0B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA1B,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,YAAA,CAA0B,yCAAA,CAAA,WAAA,EAAA,MAAA,CAAA,SAAA,CAAA,CAAA;IACnD,EAAqC,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IAE7D,EAAmD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnD,EAAmD,CAAA,UAAA,CAAA,UAAA,EAAA,CAAA,MAAA,CAAA,YAAA,IAAA,MAAA,CAAA,qBAAA,CAAA,CAAA;IAAuC,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,iBAAA,CAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IAC7F,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,qBAAA,CAAA,CAAA;IAErC,EAA0B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1B,EAA0B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,oBAAA,CAAA,CAAA;IACpB,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,eAAA,CAAA,CAAA;IAU3B,EAA0B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1B,EAA0B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,oBAAA,CAAA,CAAA;;ACN1C;;AAEG;AAKG,MAAO,uCAAwC,SAAQ,6BAA4C,CAAA;AAwFrG;;AAEG;IACH,WAAY,CAAA,QAAkB,EAAS,SAAiC,EAAA;QACpE,KAAK,CAAC,QAAQ,CAAC,CAAC;QADmB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAwB;AAzExE;;;AAGG;QAEI,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;QAsDhB,IAAoB,CAAA,oBAAA,GAAoB,IAAI,CAAC;AAgBhD,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC;AAC/B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AACxG,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;AAC9G,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,WAAW,CAAC,gBAAgB,CAAC;AACtH,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,WAAW,CAAC,gBAAgB,CAAC;AACtH,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,WAAW,CAAC,qBAAqB,CAAC;AAChI,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,iCAAiC,CAAC,OAAO,CAAC;AAChI,QAAA,IAAI,CAAC,4BAA4B,GAAG,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,+BAA+B,GAAG;AACnC,YAAA,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,uBAAuB,CAAC,OAAO;SAC5C,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,YAAY,IAAI,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC,CAAC,CAAC;KACtI;AApGD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,yCAAyC,CAAC;KACpD;AA+DD,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,2BAA2B,CAAC,QAAQ,GAAG,2BAA2B,CAAC,MAAM,CAAC;KACpG;IAgCM,WAAW,GAAA;QACd,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;AAChE,YAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;AAC3C,SAAA;KACJ;AAED;;AAEG;IAEI,yBAAyB,GAAA;;AAE5B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAClC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;AACpC,QAAA,IAAI,CAAC,4BAA4B;AAC7B,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEjG,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;AAChE,YAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;AAC3C,SAAA;AAED,QAAA,MAAM,OAAO,GAAiC;AAC1C,YAAA,YAAY,EAAE,SAAS;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,+BAA+B;SAC5D,CAAC;AAEF,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AACjE,YAAA,IAAI,EAAE,CAAC,QAAuB,KAAI;AAC9B,gBAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,oBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACzB,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC;oBAClE,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3B,wBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,SAAS,CAAC,OAAO,CAAC;AAC5F,wBAAA,IAAI,CAAC,+BAA+B,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACnF,qBAAA;AACJ,iBAAA;AACD,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,gBAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;gBACnC,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACnC;AACD,YAAA,KAAK,EAAE,CAAC,KAAgB,KAAI;gBACxB,IAAI,CAAC,oBAAoB,GAAG;AACxB,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,KAAK,CAAC,OAAO;yBAC5E,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;oBAClD,QAAQ,EAAE,uBAAuB,CAAC,KAAK;iBAC1C,CAAC;AACF,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,gBAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;gBACnC,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACnC;AACJ,SAAA,CAAC,CAAC;KACN;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;AAED;;AAEG;IAEK,wBAAwB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE;AAC7E,YAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC9C,SAAA;KACJ;;iJA9LQ,uCAAuC,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA+E,sBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;yHAAvC,uCAAuC,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,6CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;QDtBpD,EAA0C,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QACxC,EAA6D,CAAA,UAAA,CAAA,CAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;QAC7D,EAoBM,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACR,EAAwB,CAAA,YAAA,EAAA,CAAA;;QAvBD,EAAkB,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;QACnC,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA5B,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,qBAAA,CAAA,CAAA;QAC1B,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA3B,EAA2B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,qBAAA,CAAA,CAAA;;AC+I/B,UAAA,CAAA;AAAC,IAAA/E,UAAQ,EAAE;;;;AA+CV,CAAA,EAAA,uCAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,CAAA;AAeD,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;;;AAKP,CAAA,EAAA,uCAAA,CAAA,SAAA,EAAA,0BAAA,EAAA,IAAA,CAAA,CAAA;uFA9LQ,uCAAuC,EAAA,CAAA;cAJnD,SAAS;2BACI,iCAAiC,EAAA,QAAA,EAAA,uvEAAA,EAAA,CAAA;6FAYpC,eAAe,EAAA,CAAA;kBADrB,SAAS;mBAAC,cAAc,CAAA;YAelB,QAAQ,EAAA,CAAA;kBADd,KAAK;YASC,mBAAmB,EAAA,CAAA;kBADzB,KAAK;YAQC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YAQC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YAQC,sBAAsB,EAAA,CAAA;kBAD5B,KAAK;YAQC,sBAAsB,EAAA,CAAA;kBAD5B,KAAK;YAcC,QAAQ,EAAA,CAAA;kBADd,KAAK;AAqDC,SAAA,CAAA,EAAA,yBAAyB,MA8DxB,wBAAwB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MClLvB,qBAAqB,CAAA;AAC9B;;;AAGG;AACI,IAAA,OAAO,OAAO,GAAA;QACjB,OAAO;AACH,YAAA,QAAQ,EAAE,qBAAqB;AAC/B,YAAA,SAAS,EAAE;gBACP,sBAAsB;AACzB,aAAA;SACJ,CAAC;KACL;;6GAZQ,qBAAqB,GAAA,CAAA,EAAA,CAAA;sGAArB,qBAAqB,EAAA,CAAA,CAAA;0GAb1B,eAAe;QACf,YAAY;QACZ,eAAe;QACf,cAAc;QACd,WAAW;QACX,kBAAkB;QAClB,gBAAgB;QAChB,cAAc,CAAA,EAAA,CAAA,CAAA;uFAMT,qBAAqB,EAAA,CAAA;cAlBjC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE;oBACV,uCAAuC;AAC1C,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,eAAe;oBACf,YAAY;oBACZ,eAAe;oBACf,cAAc;oBACd,WAAW;oBACX,kBAAkB;oBAClB,gBAAgB;oBAChB,cAAc;AACjB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,uCAAuC;AAC1C,iBAAA;AACJ,aAAA,CAAA;;wFACY,qBAAqB,EAAA,EAAA,YAAA,EAAA,CAhB1B,uCAAuC,CAAA,EAAA,OAAA,EAAA,CAGvC,eAAe;QACf,YAAY;QACZ,eAAe;QACf,cAAc;QACd,WAAW;QACX,kBAAkB;QAClB,gBAAgB;AAChB,QAAA,cAAc,aAGd,uCAAuC,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACgC/C;;AAEG;IACS,cAMX;AAND,CAAA,UAAY,aAAa,EAAA;AACrB,IAAA,aAAA,CAAA,aAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,aAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACT,IAAA,aAAA,CAAA,aAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,IAAA,aAAA,CAAA,aAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AAClB,CAAC,EANW,aAAa,KAAb,aAAa,GAMxB,EAAA,CAAA,CAAA,CAAA;MA8CY,eAAe,CAAA;AAGxB,IAAA,WAAA,CAAoB,iBAAoC,EAAA;QAApC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QAFhD,IAAY,CAAA,YAAA,GAAkC,EAAE,CAAC;KAEG;AAE5D;;;;;AAKG;IACI,QAAQ,CAAC,SAAmB,EAAE,EAAW,EAAA;QAC5C,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;AAC9G,SAAA;AAED;;;AAGG;QAEH,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;AACrC,SAAA;AAAM,aAAA,IAAI,EAAE,EAAE;;AAEX,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;AACrC,SAAA;aAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;AACrC,SAAA;AAAM,aAAA;;AAEH,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;AACrC,SAAA;KACJ;AAED;;;;AAIG;AACI,IAAA,UAAU,CAAC,EAAW,EAAA;AACzB,QAAA,IAAI,EAAE,EAAE;AACJ,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAChC,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAChC,SAAA;KACJ;AAED;;;;;AAKG;IACI,SAAS,CAAC,IAAW,EAAE,EAAW,EAAA;AACrC,QAAA,IAAI,SAAmB,CAAC;QAExB,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;AAC5C,YAAA,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACrC,SAAA;AAAM,aAAA,IAAI,EAAE,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,EAAE,CAAA,YAAA,CAAc,CAAC,CAAC;AAC9F,SAAA;aAAM,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;AAC7C,YAAA,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACrC,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;AACpG,SAAA;AAED,QAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACxB;AAED;;;;;;;;AAQG;IACI,IAAI,CAAC,IAAW,EAAE,EAAW,EAAA;AAChC,QAAA,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,KAAwB,CAAC;QAC7B,QAAQ,IAAI,CAAC,QAAQ;YACjB,KAAK,aAAa,CAAC,KAAK;AACpB,gBAAA,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC;gBAChC,MAAM;YACV,KAAK,aAAa,CAAC,OAAO;AACtB,gBAAA,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC;gBAClC,MAAM;YACV,KAAK,aAAa,CAAC,aAAa,CAAC;AACjC,YAAA;AACI,gBAAA,KAAK,GAAG,iBAAiB,CAAC,aAAa,CAAC;gBACxC,MAAM;AACb,SAAA;QAED,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CACtC,IAAI,EACJ;AACI,YAAA,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE;YACrB,KAAK;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;AACpB,SAAA,CAAC,CAAC;KACV;;iGA1GQ,eAAe,EAAA,EAAA,CAAA,QAAA,CAAAY,iBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAf,mBAAA,eAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,eAAe,WAAf,eAAe,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAf,eAAe,EAAA,CAAA;cAD3B,UAAU;;;;;;ICxGL,EAGyD,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAHG,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,6DAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAA0B,CAAA,WAAA,CAAA,MAAA,EAAA,QAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAGvC,EAAO,CAAA,YAAA,EAAA,CAAA;;;;AAD9D,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAhB,KAAA,EAAA,QAAA,CAAA,UAAA,EAAA,CAAA,QAAA,CAAA,UAAA,CAAA,CAAiG,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,QAAA,CAAA,MAAA,CAAA,CAAA;;;IAc/F,EAAqG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IACnG,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAF+D,EAAiC,CAAA,WAAA,CAAA,YAAA,EAAA,QAAA,CAAA,OAAA,CAAA,CAAA;IAClG,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,QAAA,CAAA,OAAA,EAAA,GAAA,CAAA,CAAA;;;IACA,EAAoG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAClG,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAF8D,EAAiC,CAAA,WAAA,CAAA,YAAA,EAAA,QAAA,CAAA,OAAA,CAAA,CAAA;IACjG,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,QAAA,CAAA,OAAA,EAAA,GAAA,CAAA,CAAA;;;;IAII,EAA2F,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;AAApD,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,sEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAS,QAAY,CAAA,KAAA,EAAA,CAAA,CAAA,OAAC,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,oBAAA,CAAA,MAAA,CAA4B,CAAA,CAAC,EAAA,CAAA,CAAA;IACxF,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IADF,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,QAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;;;IAEE,EAAkF,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAChF,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAF4C,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAC/D,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,QAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;;;IACA,EAAyE,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IACvE,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAF6C,EAAuB,CAAA,UAAA,CAAA,YAAA,EAAA,QAAA,CAAA,GAAA,CAAA,CAAA;IACtE,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,QAAA,CAAA,WAAA,EAAA,GAAA,CAAA,CAAA;;;;IANF,EAA4E,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAvC,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,0EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA4B,CAAA,oBAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACzE,EAEI,CAAA,UAAA,CAAA,CAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IACJ,EAEI,CAAA,UAAA,CAAA,CAAA,EAAA,yDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAAM,CAAA,YAAA,EAAA,CAAA;;;IANA,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,cAAA,CAAA,CAAA;IAGzB,EAA0B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1B,EAA0B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,QAAA,CAAA,cAAA,CAAA,CAAA;;;IARlC,EAAsC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IACpC,EAEI,CAAA,UAAA,CAAA,CAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IACJ,EAOM,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAXA,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,KAAA,CAAA,CAAA;IAGd,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7B,EAA6B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,QAAA,CAAA,KAAA,IAAA,QAAA,CAAA,GAAA,CAAA,CAAA;;;IALvC,EAA2B,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA;IACzB,EAYM,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAQ,CAAA,YAAA,EAAA,CAAA;;;IAbgB,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,UAAA,CAAA,SAAA,EAAA,QAAA,CAAA,KAAA,CAAA,CAAA;;;;IA/B9C,EAEkK,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAFnH,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,qDAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,QAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA8B,CAAA,uBAAA,CAAA,QAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAIrF,EAAiC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAC/B,EACkD,CAAA,SAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;IAClD,EAGgE,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAClE,EAAM,CAAA,YAAA,EAAA,CAAA;IAEN,EACkH,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,aAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAI/E,EAAyB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IAC1D,EACmD,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAkC,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAI,EAAA,CAAA;IAE3F,EAAiC,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAC/B,EAEI,CAAA,UAAA,CAAA,EAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IACJ,EAEI,CAAA,UAAA,CAAA,EAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAEJ,EAcQ,CAAA,UAAA,CAAA,EAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;AACV,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;AAER,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAkE,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACP,EAAoB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;IACnF,EAAwD,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAC,EAAqB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,EAAA,CAAA;AAKxF,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAiC,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAG7B,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,yDAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,QAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAc,CAAA,OAAA,CAAA,QAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAExB,EAAsG,CAAA,SAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AACxG,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,EAAA,CAAA;;;;IAvD0D,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAjC,IAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,eAAA,CAAA,QAAA,CAAA,CAAiC,CAAA,OAAA,EAAA,MAAA,CAAA,YAAA,CAAA,QAAA,CAAA,CAAA,CAAA;IAE/E,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArC,EAAqC,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,KAAA,IAAA,QAAA,CAAA,UAAA,CAAA,CAAA;IAWzB,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,iBAAA,CAAA,MAAA,CAAA,YAAA,CAAA,QAAA,CAAA,CAAA,CAAA;IAEpD,EAAgD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhD,EAAgD,CAAA,WAAA,CAAA,YAAA,EAAA,QAAA,CAAA,KAAA,IAAA,QAAA,CAAA,OAAA,CAAA,CAAA;IAAC,EAAkC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlC,EAAkC,CAAA,iBAAA,CAAA,QAAA,CAAA,KAAA,IAAA,QAAA,CAAA,OAAA,CAAA,CAAA;IAGjF,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,KAAA,IAAA,CAAA,QAAA,CAAA,UAAA,CAAA,CAAA;IAGtC,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArC,EAAqC,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,KAAA,IAAA,QAAA,CAAA,UAAA,CAAA,CAAA;IAIjC,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,KAAA,CAAA,CAAA;IAkB8B,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,iBAAA,CAAA,QAAA,CAAA,QAAA,CAAA,CAAA;IACpB,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,kBAAA,CAAA,GAAA,EAAA,QAAA,CAAA,SAAA,EAAA,EAAA,CAAA,CAAA;IAQrD,EAA0E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1E,EAA0E,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,QAAA,CAAA,gBAAA,CAAA,CAAA;IAE5D,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvD,EAAuD,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,QAAA,CAAA,OAAA,CAAA,CAAA;;ACjDhG,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;AAepD;;;;;;AAMG;AACH,IAAA,WAAA,CACI,QAAkB,EACV,eAAgC,EAChC,aAA4B,EAAA;QAChC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAFZ,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAfhC,IAAmB,CAAA,mBAAA,GAAmB,EAAE,CAAC;KAiBhD;AA1BD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,mBAAmB,CAAC;KAC9B;AAuBD;;AAEG;IACI,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAE7C,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,IAAG;;AAEvE,YAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,iBAAiB,IAAI,KAAK,CAAC,WAAW,KAAK,iBAAiB,CAAC,IAAI,EAAE;AACnH,gBAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACpB,aAAA;SACJ,CAAC,CAAC,CAAC;KACP;AAED;;AAEG;IACI,WAAW,GAAA;QACd,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;AAC/D,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,uBAAuB,CAAC,KAAY,EAAA;AACvC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CACxG,CAAC;KACL;AAED;;;;AAIG;IACI,WAAW,CAAC,KAAY,EAAE,KAAY,EAAA;AACzC,QAAA,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;AACrC,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;KACpC;AAED;;;AAGG;AACI,IAAA,oBAAoB,CAAC,KAAY,EAAA;QACpC,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;AAED;;;;AAIG;IAEI,aAAa,CAAC,KAAY,EAAE,KAAU,EAAA;AACzC,QAAA,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;KACpC;AAED;;;;AAIG;AACI,IAAA,eAAe,CAAC,KAAY,EAAA;QAC/B,QAAQ,KAAK,CAAC,QAAQ;YAClB,KAAK,aAAa,CAAC,KAAK;gBACpB,OAAO,cAAc,CAAC,KAAK,CAAC;YAChC,KAAK,aAAa,CAAC,OAAO;gBACtB,OAAO,cAAc,CAAC,OAAO,CAAC;YAClC,KAAK,aAAa,CAAC,OAAO;gBACtB,OAAO,cAAc,CAAC,OAAO,CAAC;YAClC,KAAK,aAAa,CAAC,UAAU;gBACzB,OAAO,cAAc,CAAC,QAAQ,CAAC;YACnC,KAAK,aAAa,CAAC,aAAa,CAAC;AACjC,YAAA;gBACI,OAAO,cAAc,CAAC,IAAI,CAAC;AAClC,SAAA;KACJ;AAEM,IAAA,YAAY,CAAC,KAAY,EAAA;QAC5B,QAAQ,KAAK,CAAC,QAAQ;YAClB,KAAK,aAAa,CAAC,KAAK;gBACpB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC5D,KAAK,aAAa,CAAC,OAAO;gBACtB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC9D,KAAK,aAAa,CAAC,OAAO;gBACtB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC9D,KAAK,aAAa,CAAC,UAAU;gBACzB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;YACjE,KAAK,aAAa,CAAC,aAAa,CAAC;AACjC,YAAA;gBACI,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;AACrE,SAAA;KACJ;AAED;;;;AAIG;AACI,IAAA,IAAI,CAAC,KAAY,EAAA;;QAEpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE;AAC9H,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9G,YAAA,IAAI,aAAa,EAAE;gBACf,IAAI,aAAa,CAAC,UAAU,EAAE;AAC1B,oBAAA,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACvC,oBAAA,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;AACnC,iBAAA;AAED,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC/B,aAAA;YAED,IAAI,KAAK,CAAC,UAAU,EAAE;AAClB,gBAAA,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC/B,gBAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC3B,aAAA;AAED,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3B,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACvE,SAAA;KACJ;AAED;;;;AAIG;AACI,IAAA,OAAO,CAAC,KAAY,EAAA;QACvB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KACtC;AAED;;;;AAIG;AACK,IAAA,SAAS,CAAC,KAAY,EAAA;QAC1B,OAAO,KAAK,CAAC,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC;KAC1F;;qGA7KQ,iBAAiB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAuC,eAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAC,aAAA,CAAA,CAAA,CAAA,EAAA,CAAA;mGAAjB,iBAAiB,EAAA,SAAA,EAAA,CAAA,CAAA,eAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,oCAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,2RAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,+BAAA,EAAA,+BAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,oJAAA,EAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,kCAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,iCAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,YAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,0BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDZ9B,EAA2F,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEzF,EA+DM,CAAA,UAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACR,EAAM,CAAA,YAAA,EAAA,CAAA;;QAhEmB,EAAS,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAT,EAAS,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;;ACiG9B,UAAA,CAAA;AAAC,IAAAjF,UAAQ,EAAE;;;;AAGV,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;uFA1FQ,iBAAiB,EAAA,CAAA;cAJ7B,SAAS;2BACI,eAAe,EAAA,QAAA,EAAA,+4HAAA,EAAA,CAAA;+GAYlB,EAAE,EAAA,CAAA;kBADR,KAAK;YAgFC,aAAa,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCzEX,cAAc,CAAA;;+FAAd,cAAc,GAAA,CAAA,EAAA,CAAA;+FAAd,cAAc,EAAA,CAAA,CAAA;AAJZ,mBAAA,cAAA,CAAA,IAAA,6BAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,SAAA,EAAA;QACP,eAAe;AAClB,KAAA,EAAA,OAAA,EAAA,CARG,YAAY;QACZ,YAAY;QACZ,UAAU;QACV,WAAW;QACX,aAAa,CAAA,EAAA,CAAA,CAAA;uFAMR,cAAc,EAAA,CAAA;cAlB1B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE;oBACV,iBAAiB;AACpB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,iBAAiB;AACpB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,YAAY;oBACZ,UAAU;oBACV,WAAW;oBACX,aAAa;AAChB,iBAAA;AACD,gBAAA,SAAS,EAAE;oBACP,eAAe;AAClB,iBAAA;AACJ,aAAA,CAAA;;wFACY,cAAc,EAAA,EAAA,YAAA,EAAA,CAhBnB,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAMjB,YAAY;QACZ,YAAY;QACZ,UAAU;QACV,WAAW;AACX,QAAA,aAAa,aAPb,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;ACRzB;;;AAGG;AACH,IAAY,aAIX,CAAA;AAJD,CAAA,UAAY,aAAa,EAAA;AACrB,IAAA,aAAA,CAAA,aAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,aAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,IAAA,aAAA,CAAA,aAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AAChB,CAAC,EAJW,aAAa,KAAb,aAAa,GAIxB,EAAA,CAAA,CAAA,CAAA;AAED;;;;;;;;;;;;;;;AAeG;AAEH;;AAEG;AAEH;AACM,MAAgB,kBAA6B,SAAQ,aAAuB,CAAA;AAwG9E;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AA7EpB;;AAEG;QAEI,IAAY,CAAA,YAAA,GAA2B,iDAAiD,CAAC;AA0E5F,QAAA,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC;AAC5C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KAC3B;AAlED;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;;AAEhB,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QACtF,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,QAAQ,IAAI,CAAC,QAAQ;AACjB,YAAA,KAAK,aAAa,CAAC,OAAO,EAAE;AACxB,gBAAA,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC7C,MAAM;AACT,aAAA;AACD,YAAA,KAAK,aAAa,CAAC,QAAQ,EAAE;AACzB,gBAAA,aAAa,GAAG,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACjD,MAAM;AACT,aAAA;AACD,YAAA,SAAS;gBACL,OAAO,IAAI,CAAC,KAAK,CAAC;AACrB,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1E;AAED;;AAEG;AACH,IAAA,IAAW,IAAI,GAAA;QACX,QAAQ,IAAI,CAAC,QAAQ;AACjB,YAAA,KAAK,aAAa,CAAC,OAAO,EAAE;AACxB,gBAAA,OAAO,kBAAkB,CAAC;AAC7B,aAAA;AACD,YAAA,KAAK,aAAa,CAAC,QAAQ,EAAE;AACzB,gBAAA,OAAO,gBAAgB,CAAC;AAC3B,aAAA;AACD,YAAA,SAAS;AACL,gBAAA,OAAO,eAAe,CAAC;AAC1B,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;;QAEtB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,OAAO,IAAI,CAAC,OAAO,CAAC;AACvB,SAAA;QAED,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAkBD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,WAAW;YACX,gBAAgB;AACnB,SAAA,CAAC,CAAC;KACN;;uGA1HiB,kBAAkB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oGAAlB,kBAAkB,EAAA,SAAA,EAAA,SAAA,wBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;uFAAlB,kBAAkB,EAAA,CAAA;cAFvC,SAAS;2DAOC,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,WAAW,EAAA,CAAA;kBADjB,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,KAAK;YAQC,aAAa,EAAA,CAAA;kBADnB,KAAK;YAOC,gBAAgB,EAAA,CAAA;kBADtB,KAAK;YAOC,YAAY,EAAA,CAAA;kBADlB,KAAK;YASC,QAAQ,EAAA,CAAA;kBADd,KAAK;YA2DC,cAAc,EAAA,CAAA;kBADpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;AAwBjD;;;AAGG;AAEH;AACM,MAAgB,sBAAuB,SAAQ,kBAA2B,CAAA;;AAA1D,mBAAA,sBAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,mCAAA,CAAA,CAAA,OAAA,SAAA,8BAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,mCAAA,KAAA,mCAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,sBAAsB,SAAtB,sBAAsB,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAAtB,sBAAsB,EAAA,CAAA;cAF3C,SAAS;;;;;IC/JN,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAwD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA/G,EAAiC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxD,EAAwD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;IAG3J,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAuD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA7G,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvD,EAAuD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA;;;IAL5J,EAA+C,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IAClE,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA+J,CAAA,UAAA,CAAA,CAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IACjK,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA8J,CAAA,UAAA,CAAA,CAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAChK,EAAM,CAAA,YAAA,EAAA,CAAA;;;IANyC,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IAExD,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAGrB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;;;ACR9B;;AAEG;AAKG,MAAO,wBAAyB,SAAQ,sBAAsB,CAAA;AAShE;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;AACvE,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;KAClF;AAfD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,0BAA0B,CAAC;KACrC;AAYD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,uBAAuB;AAC1B,SAAA,CAAC,CAAC;KACN;;mHA1BQ,wBAAwB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,WAAA,EAAA,MAAA,EAAA,YAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAyC,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ADVrC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA6D,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC3B,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACtD,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QAC3C,EAA+D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACjE,EAAI,CAAA,YAAA,EAAA,CAAA;QACJ,EAQc,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;QAbgB,EAA8B,CAAA,UAAA,CAAA,YAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAC1B,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,iBAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QACtB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QACX,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAE,KAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;uFCO5C,wBAAwB,EAAA,CAAA;cAJpC,SAAS;2BACI,8BAA8B,EAAA,QAAA,EAAA,64BAAA,EAAA,CAAA;;;;;IDCxC,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAwD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA/G,EAAiC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxD,EAAwD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;IAG3J,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAuD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA7G,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvD,EAAuD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA;;;IAL5J,EAA+C,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IAClE,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA+J,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IACjK,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA8J,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAChK,EAAM,CAAA,YAAA,EAAA,CAAA;;;IANyC,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IAExD,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAGrB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;;;AER9B;;AAEG;AAKG,MAAO,oBAAqB,SAAQ,sBAAsB,CAAA;AAS5D;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnB;AAbD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,sBAAsB,CAAC;KACjC;AAUD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,kBAAkB;AACrB,SAAA,CAAC,CAAC;KACN;;2GAxBQ,oBAAoB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;sGAApB,oBAAoB,EAAA,SAAA,EAAA,CAAA,CAAA,WAAA,EAAA,MAAA,EAAA,QAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAF,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,6BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AFVjC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA6D,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC3B,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACtD,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QAC3C,EAA+D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACjE,EAAI,CAAA,YAAA,EAAA,CAAA;QACJ,EAQc,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;QAbgB,EAA8B,CAAA,UAAA,CAAA,YAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAC1B,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,iBAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QACtB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QACX,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAE,KAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;uFEO5C,oBAAoB,EAAA,CAAA;cAJhC,SAAS;2BACI,0BAA0B,EAAA,QAAA,EAAA,64BAAA,EAAA,CAAA;;;;;IFCpC,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAwD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA/G,EAAiC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxD,EAAwD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;IAG3J,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAuD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA7G,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvD,EAAuD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA;;;IAL5J,EAA+C,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IAClE,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA+J,CAAA,UAAA,CAAA,CAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IACjK,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA8J,CAAA,UAAA,CAAA,CAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAChK,EAAM,CAAA,YAAA,EAAA,CAAA;;;IANyC,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IAExD,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAGrB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;;;AGR9B;;AAEG;AAKG,MAAO,sBAAuB,SAAQ,sBAAsB,CAAA;AAS9D;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;KACxE;AAfD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,wBAAwB,CAAC;KACnC;AAYD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,oBAAoB;AACvB,SAAA,CAAC,CAAC;KACN;;+GA1BQ,sBAAsB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,WAAA,EAAA,MAAA,EAAA,UAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAF,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AHVnC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA6D,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC3B,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACtD,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QAC3C,EAA+D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACjE,EAAI,CAAA,YAAA,EAAA,CAAA;QACJ,EAQc,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;QAbgB,EAA8B,CAAA,UAAA,CAAA,YAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAC1B,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,iBAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QACtB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QACX,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAE,KAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;uFGO5C,sBAAsB,EAAA,CAAA;cAJlC,SAAS;2BACI,4BAA4B,EAAA,QAAA,EAAA,64BAAA,EAAA,CAAA;;;;;IHCtC,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAwD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA/G,EAAiC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxD,EAAwD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;IAG3J,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAuD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA7G,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvD,EAAuD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA;;;IAL5J,EAA+C,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IAClE,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA+J,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IACjK,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA8J,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAChK,EAAM,CAAA,YAAA,EAAA,CAAA;;;IANyC,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IAExD,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAGrB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;;;AIR9B;;AAEG;AAKG,MAAO,iBAAkB,SAAQ,sBAAsB,CAAA;AASzD;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAChE,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;KAC3E;AAfD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,mBAAmB,CAAC;KAC9B;AAYD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,eAAe;AAClB,SAAA,CAAC,CAAC;KACN;;qGA1BQ,iBAAiB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;mGAAjB,iBAAiB,EAAA,SAAA,EAAA,CAAA,CAAA,WAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAF,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,0BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AJV9B,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA6D,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC3B,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACtD,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QAC3C,EAA+D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACjE,EAAI,CAAA,YAAA,EAAA,CAAA;QACJ,EAQc,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;QAbgB,EAA8B,CAAA,UAAA,CAAA,YAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAC1B,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,iBAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QACtB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QACX,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAE,KAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;uFIO5C,iBAAiB,EAAA,CAAA;cAJ7B,SAAS;2BACI,uBAAuB,EAAA,QAAA,EAAA,64BAAA,EAAA,CAAA;;;;;IJCjC,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAwD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA/G,EAAiC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxD,EAAwD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;IAG3J,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAuD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA7G,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvD,EAAuD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA;;;IAL5J,EAA+C,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IAClE,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA+J,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IACjK,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA8J,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAChK,EAAM,CAAA,YAAA,EAAA,CAAA;;;IANyC,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IAExD,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAGrB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;;;AKR9B;;AAEG;AAKG,MAAO,qBAAsB,SAAQ,sBAAsB,CAAA;AAS7D;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACpE,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;KAC/E;AAhBD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,uBAAuB,CAAC;KAClC;AAaD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,mBAAmB;AACtB,SAAA,CAAC,CAAC;KACN;;6GA3BQ,qBAAqB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;uGAArB,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,WAAA,EAAA,MAAA,EAAA,SAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAF,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ALVlC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA6D,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC3B,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACtD,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QAC3C,EAA+D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACjE,EAAI,CAAA,YAAA,EAAA,CAAA;QACJ,EAQc,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;QAbgB,EAA8B,CAAA,UAAA,CAAA,YAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAC1B,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,iBAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QACtB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QACX,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAE,KAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;uFKO5C,qBAAqB,EAAA,CAAA;cAJjC,SAAS;2BACI,2BAA2B,EAAA,QAAA,EAAA,64BAAA,EAAA,CAAA;;;;;ILCrC,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAwD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA/G,EAAiC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxD,EAAwD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;IAG3J,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAuD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA7G,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvD,EAAuD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA;;;IAL5J,EAA+C,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IAClE,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA+J,CAAA,UAAA,CAAA,CAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IACjK,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA8J,CAAA,UAAA,CAAA,CAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAChK,EAAM,CAAA,YAAA,EAAA,CAAA;;;IANyC,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IAExD,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAGrB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;;;AMR9B;;AAEG;AAKG,MAAO,6BAA8B,SAAQ,sBAAsB,CAAA;AASrE;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7E,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACvB;AAhBD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,+BAA+B,CAAC;KAC1C;AAaD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,2BAA2B;YAC3B,mBAAmB;YACnB,4BAA4B;AAC/B,SAAA,CAAC,CAAC;KACN;;6HA7BQ,6BAA6B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;+GAA7B,6BAA6B,EAAA,SAAA,EAAA,CAAA,CAAA,WAAA,EAAA,MAAA,EAAA,kBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAF,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,sCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ANV1C,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA6D,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC3B,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACtD,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QAC3C,EAA+D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACjE,EAAI,CAAA,YAAA,EAAA,CAAA;QACJ,EAQc,CAAA,UAAA,CAAA,CAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;QAbgB,EAA8B,CAAA,UAAA,CAAA,YAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAC1B,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,iBAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QACtB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QACX,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAE,KAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;uFMO5C,6BAA6B,EAAA,CAAA;cAJzC,SAAS;2BACI,oCAAoC,EAAA,QAAA,EAAA,64BAAA,EAAA,CAAA;;;;;INC9C,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAwD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA/G,EAAiC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxD,EAAwD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;IAG3J,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAuD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA7G,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvD,EAAuD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA;;;IAL5J,EAA+C,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IAClE,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA+J,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IACjK,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA8J,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAChK,EAAM,CAAA,YAAA,EAAA,CAAA;;;IANyC,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IAExD,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAGrB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;;;AOR9B;;AAEG;AAKG,MAAO,4BAA6B,SAAQ,sBAAsB,CAAA;AASpE;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;AAC3E,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC;KACtF;AAfD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,8BAA8B,CAAC;KACzC;AAYD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,0BAA0B;AAC7B,SAAA,CAAC,CAAC;KACN;;2HA1BQ,4BAA4B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;8GAA5B,4BAA4B,EAAA,SAAA,EAAA,CAAA,CAAA,WAAA,EAAA,MAAA,EAAA,gBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAF,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,qCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;APVzC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA6D,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC3B,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACtD,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QAC3C,EAA+D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACjE,EAAI,CAAA,YAAA,EAAA,CAAA;QACJ,EAQc,CAAA,UAAA,CAAA,CAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;QAbgB,EAA8B,CAAA,UAAA,CAAA,YAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAC1B,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,iBAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QACtB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QACX,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAE,KAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;uFOO5C,4BAA4B,EAAA,CAAA;cAJxC,SAAS;2BACI,kCAAkC,EAAA,QAAA,EAAA,64BAAA,EAAA,CAAA;;;;;IPC5C,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAwD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA/G,EAAiC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxD,EAAwD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;IAG3J,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAuD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA7G,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvD,EAAuD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA;;;IAL5J,EAA+C,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IAClE,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA+J,CAAA,UAAA,CAAA,CAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IACjK,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA8J,CAAA,UAAA,CAAA,CAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAChK,EAAM,CAAA,YAAA,EAAA,CAAA;;;IANyC,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IAExD,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAGrB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;;;AQR9B;;AAEG;AAKG,MAAO,sBAAuB,SAAQ,sBAAsB,CAAA;AAS9D;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;KAC1C;AAdD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,wBAAwB,CAAC;KACnC;AAWD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,oBAAoB;AACvB,SAAA,CAAC,CAAC;KACN;;+GAzBQ,sBAAsB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,WAAA,EAAA,MAAA,EAAA,UAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAF,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ARVnC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA6D,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC3B,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACtD,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QAC3C,EAA+D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACjE,EAAI,CAAA,YAAA,EAAA,CAAA;QACJ,EAQc,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;QAbgB,EAA8B,CAAA,UAAA,CAAA,YAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAC1B,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,iBAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QACtB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QACX,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAE,KAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;uFQO5C,sBAAsB,EAAA,CAAA;cAJlC,SAAS;2BACI,4BAA4B,EAAA,QAAA,EAAA,64BAAA,EAAA,CAAA;;;;;IRCtC,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAwD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA/G,EAAiC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxD,EAAwD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;IAG3J,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAuD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA7G,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvD,EAAuD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA;;;IAL5J,EAA+C,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IAClE,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA+J,CAAA,UAAA,CAAA,CAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IACjK,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA8J,CAAA,UAAA,CAAA,CAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAChK,EAAM,CAAA,YAAA,EAAA,CAAA;;;IANyC,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IAExD,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAGrB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;;;ASR9B;;AAEG;AAKG,MAAO,gCAAiC,SAAQ,sBAAsB,CAAA;AASxE;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;AAChF,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACvB;AAhBD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,kCAAkC,CAAC;KAC7C;AAaD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,2BAA2B;YAC3B,mBAAmB;YACnB,+BAA+B;AAClC,SAAA,CAAC,CAAC;KACN;;mIA7BQ,gCAAgC,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;kHAAhC,gCAAgC,EAAA,SAAA,EAAA,CAAA,CAAA,WAAA,EAAA,MAAA,EAAA,qBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAF,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,yCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ATV7C,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA6D,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC3B,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACtD,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QAC3C,EAA+D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACjE,EAAI,CAAA,YAAA,EAAA,CAAA;QACJ,EAQc,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;QAbgB,EAA8B,CAAA,UAAA,CAAA,YAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAC1B,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,iBAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QACtB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QACX,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAE,KAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;uFSO5C,gCAAgC,EAAA,CAAA;cAJ5C,SAAS;2BACI,uCAAuC,EAAA,QAAA,EAAA,64BAAA,EAAA,CAAA;;;;;ITCjD,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAwD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA/G,EAAiC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxD,EAAwD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;IAG3J,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAuD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA7G,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvD,EAAuD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA;;;IAL5J,EAA+C,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IAClE,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA+J,CAAA,UAAA,CAAA,CAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IACjK,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA8J,CAAA,UAAA,CAAA,CAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAChK,EAAM,CAAA,YAAA,EAAA,CAAA;;;IANyC,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IAExD,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAGrB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;;;AUR9B;;AAEG;AAKG,MAAO,wBAAyB,SAAQ,sBAAsB,CAAA;AAShE;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;AACxE,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACvB;AAhBD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,0BAA0B,CAAC;KACrC;AAaD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,2BAA2B;YAC3B,mBAAmB;YACnB,uBAAuB;AAC1B,SAAA,CAAC,CAAC;KACN;;mHA7BQ,wBAAwB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,WAAA,EAAA,MAAA,EAAA,aAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAF,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AVVrC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA6D,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC3B,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACtD,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QAC3C,EAA+D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACjE,EAAI,CAAA,YAAA,EAAA,CAAA;QACJ,EAQc,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;QAbgB,EAA8B,CAAA,UAAA,CAAA,YAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAC1B,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,iBAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QACtB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QACX,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAE,KAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;uFUO5C,wBAAwB,EAAA,CAAA;cAJpC,SAAS;2BACI,+BAA+B,EAAA,QAAA,EAAA,64BAAA,EAAA,CAAA;;;;;IVCzC,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAwD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA/G,EAAiC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxD,EAAwD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;IAG3J,EAAmG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAuD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA7G,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAA,QAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAkB,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvD,EAAuD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA;;;IAL5J,EAA+C,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IAClE,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA+J,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IACjK,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAClC,EAA8J,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAChK,EAAM,CAAA,YAAA,EAAA,CAAA;;;IANyC,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IAExD,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAGrB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;;;AWR9B;;AAEG;AAKG,MAAO,qBAAsB,SAAQ,sBAAsB,CAAA;AAS7D;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC;KACzC;AAdD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,uBAAuB,CAAC;KAClC;AAWD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,mBAAmB;AACtB,SAAA,CAAC,CAAC;KACN;;6GAzBQ,qBAAqB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;uGAArB,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,WAAA,EAAA,MAAA,EAAA,SAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAAF,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;AXVlC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAA6D,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC3B,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACtD,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QAC3C,EAA+D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACjE,EAAI,CAAA,YAAA,EAAA,CAAA;QACJ,EAQc,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;QAbgB,EAA8B,CAAA,UAAA,CAAA,YAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAC1B,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,iBAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QACtB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QACX,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAE,KAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA;;uFWO5C,qBAAqB,EAAA,CAAA;cAJjC,SAAS;2BACI,2BAA2B,EAAA,QAAA,EAAA,64BAAA,EAAA,CAAA;;;MCwC5B,WAAW,CAAA;;yFAAX,WAAW,GAAA,CAAA,EAAA,CAAA;4FAAX,WAAW,EAAA,CAAA,CAAA;gGAJhB,YAAY;QACZ,aAAa,CAAA,EAAA,CAAA,CAAA;uFAGR,WAAW,EAAA,CAAA;cAhCvB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,wBAAwB;oBACxB,oBAAoB;oBACpB,sBAAsB;oBACtB,iBAAiB;oBACjB,qBAAqB;oBACrB,qBAAqB;oBACrB,sBAAsB;oBACtB,4BAA4B;oBAC5B,wBAAwB;oBACxB,gCAAgC;oBAChC,6BAA6B;AAChC,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,wBAAwB;oBACxB,oBAAoB;oBACpB,sBAAsB;oBACtB,iBAAiB;oBACjB,qBAAqB;oBACrB,qBAAqB;oBACrB,sBAAsB;oBACtB,4BAA4B;oBAC5B,wBAAwB;oBACxB,gCAAgC;oBAChC,6BAA6B;AAChC,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,aAAa;AAChB,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,WAAW,mBAjBhB,wBAAwB;QACxB,oBAAoB;QACpB,sBAAsB;QACtB,iBAAiB;QACjB,qBAAqB;QACrB,qBAAqB;QACrB,sBAAsB;QACtB,4BAA4B;QAC5B,wBAAwB;QACxB,gCAAgC;AAChC,QAAA,6BAA6B,aAG7B,YAAY;AACZ,QAAA,aAAa,aA3Bb,wBAAwB;QACxB,oBAAoB;QACpB,sBAAsB;QACtB,iBAAiB;QACjB,qBAAqB;QACrB,qBAAqB;QACrB,sBAAsB;QACtB,4BAA4B;QAC5B,wBAAwB;QACxB,gCAAgC;QAChC,6BAA6B,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;IC3BzB,kBAIX;AAJD,CAAA,UAAY,iBAAiB,EAAA;AACzB,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACzB,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,GAI5B,EAAA,CAAA,CAAA;;;;;ACDC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CACwG,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAC7C,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,4DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAgC,CAAA,8BAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAGjG,EAAmD,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACrD,EAAS,CAAA,YAAA,EAAA,CAAA;IACT,EACuF,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAsB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IACpH,EAEmE,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAFV,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,4DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAiC,CAAA,+BAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAGlG,EAAoD,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AACtD,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;;;IATP,EAA+D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/D,EAA+D,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,WAAA,CAAA,KAAA,CAAA,CAAA;IAD/D,EAAyE,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,WAAA,CAAA,KAAA,CAAA,CAAA;IAKY,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,iBAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;IAG3G,EAAgE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhE,EAAgE,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,YAAA,CAAA,KAAA,CAAA,CAAA;IADhE,EAA0E,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,YAAA,CAAA,KAAA,CAAA,CAAA;;;IAQ5E,EAC6F,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC3F,EAC4F,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC9F,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAFC,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,eAAA,CAAA,CAAA;;;IAGlC,EACgE,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;;;IADlC,EAA8C,CAAA,WAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,mBAAA,CAAA,CAAA;;;;IAM1E,EAGsH,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IADpH,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,qDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAyB,CAAA,YAAA,CAAA,OAAA,CAAA,WAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAEnC,EAAM,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAA0G,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;IAHvH,EAA8G,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,WAAA,CAAA,UAAA,GAAA,MAAA,CAAA,WAAA,CAAA,UAAA,GAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA;IAGxG,EAA0G,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1G,EAA0G,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,UAAA,GAAA,MAAA,CAAA,WAAA,CAAA,UAAA,GAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA;;;;IAIpH,EAE6C,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAA3C,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,sDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAgC,CAAA,mBAAA,CAAA,OAAA,CAAA,WAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAC1C,EAAmC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAyD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;AAHA,IAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,WAAA,CAAA,YAAA,EAAA,EAAA,CAAA,aAAA,CAAiC,CAAA,OAAA,EAAA,MAAA,CAAA,WAAA,CAAA,eAAA,CAAA,CAAA;IAAjF,EAA+C,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,WAAA,CAAA,eAAA,CAAA,CAAA;IAG/D,EAAyD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzD,EAAyD,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,SAAA,CAAA,KAAA,CAAA,CAAA;;;;IA3ClG,EAEwC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACtC,EAcM,CAAA,UAAA,CAAA,CAAA,EAAA,oCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAEN,EACsG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IACpG,EAIM,CAAA,UAAA,CAAA,CAAA,EAAA,oCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACN,EACgE,CAAA,UAAA,CAAA,CAAA,EAAA,oCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AAEhE,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA0G,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAEJ,EAAuB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAClI,EAKI,CAAA,UAAA,CAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IACN,EAAM,CAAA,YAAA,EAAA,CAAA;IAEN,EAII,CAAA,UAAA,CAAA,EAAA,EAAA,mCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAAM,CAAA,YAAA,EAAA,CAAA;IAEN,EAEkE,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAFT,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA0B,CAAA,wBAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAG3F,EAA8C,CAAA,SAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAChD,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;;;IAjDT,EAAqC,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,WAAA,CAAA,KAAA,CAAA,CAAA;IAC/B,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,KAAA,IAAA,MAAA,CAAA,KAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;IAkB7B,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,eAAA,CAAA,CAAA;IAKrB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,eAAA,CAAA,CAAA;IAIpB,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,WAAA,CAAA,KAAA,CAAA,CAAA;IACmE,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,KAAA,CAAA,CAAA;IAC9F,EAA+D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/D,EAA+D,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,WAAA,CAAA,gBAAA,IAAA,MAAA,CAAA,WAAA,CAAA,aAAA,CAAA,CAAA;IAQ1F,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9B,EAA8B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,WAAA,CAAA,YAAA,CAAA,CAAA;IASlC,EAA+D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/D,EAA+D,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,WAAA,CAAA,KAAA,CAAA,CAAA;IAD/D,EAAyE,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,WAAA,CAAA,KAAA,CAAA,CAAA;;AC9B7E;;AAEG;AACH,IAAK,mBAUJ,CAAA;AAVD,CAAA,UAAK,mBAAmB,EAAA;AACpB;;AAEG;AACH,IAAA,mBAAA,CAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AAEX;;AAEG;AACH,IAAA,mBAAA,CAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;AACjB,CAAC,EAVI,mBAAmB,KAAnB,mBAAmB,GAUvB,EAAA,CAAA,CAAA,CAAA;AAED;;;;;;;;;;;AAWG;AACH;;AAEG;AAKG,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;AAsElD;;;;;;AAMG;AACH,IAAA,WAAA,CACY,iBAAoC,EACpC,aAA4B,EACpC,QAAkB,EAAA;QAClB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAHR,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AA/BxC;;AAEG;AACI,QAAA,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC;AAS/C;;AAEG;QACK,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAE1B;;AAEG;QACK,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;KAczB;AAjFD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,iBAAiB,CAAC;KAC5B;AAcD;;AAEG;AACH,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KACtE;AAED;;AAEG;AACH,IAAA,IAAW,mBAAmB,GAAA;AAC1B,QAAA,OAAO,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;KAC1C;AAED;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,iBAAiB,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KAC1E;AAED;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KAC1E;AAOD;;AAEG;AACH,IAAA,IAAY,eAAe,GAAA;AACvB,QAAA,OAAqB,IAAI,CAAC,wBAAwB,CAAC,aAAc,CAAC;KACrE;AA0BD;;AAEG;IACI,QAAQ,GAAA;QAEX,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvC,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,0EAAA,CAA4E,CAAC,CAAC;AACjG,SAAA;KACJ;AAED;;AAEG;IACI,8BAA8B,GAAA;QACjC,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,OAAO;AACV,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,EAAE;aAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;aACb,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE;gBAC1C,YAAY,CAAC,WAAW,EAAE,CAAC;AAC9B,aAAA;AACL,SAAC,CAAC,CAAC;KACV;AAED;;AAEG;IACI,+BAA+B,GAAA;QAClC,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,OAAO;AACV,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,EAAE;aAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;aACb,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE;gBAC1C,YAAY,CAAC,WAAW,EAAE,CAAC;AAC9B,aAAA;AACL,SAAC,CAAC,CAAC;KACV;AAED;;AAEG;IACI,wBAAwB,GAAA;QAC3B,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,OAAO;AACV,SAAA;AAED,QAAA,MAAM,aAAa,GAAG;YAClB,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;AAChE,YAAA,OAAO,EAAE;AACL,gBAAA;AACI,oBAAA,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK;oBACpF,KAAK,EAAE,mBAAmB,CAAC,OAAO;AACrC,iBAAA;AACD,gBAAA;oBACI,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CACzF,IAAI,CAAC,WAAW,CAAC,WAAW,CAC/B;oBACD,KAAK,EAAE,mBAAmB,CAAC,SAAS;AACvC,iBAAA;AACJ,aAAA;YACD,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI;AAChE,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ;YAC3E,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;AAC1G,YAAA,OAAO,EAAE,EAAE;SACd,CAAC;AAEF,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CAClE,QAAQ,CAAC,CAAC,YAA0D,KAAI;AACpE,YAAA,IAAI,YAAY,IAAI,YAAY,CAAC,SAAS,EAAE;AACxC,gBAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK,mBAAmB,CAAC,SAAS;AAC/C,oBAAA,CAAA,iEAAyB;gBAEtD,IAAI,CAAC,KAAK,CACN,oBAAoB,EACpB,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE;AACrB,oBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;AACnC,oBAAA,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW;AAChD,oBAAA,wBAAwB,EAAE,QAAQ;AACrC,iBAAA,CACA,CAAC;AACF,gBAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC;AAChF,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC;AAC3B,aAAA;AACL,SAAC,CAAC,CAAC;AACF,aAAA,SAAS,CAAC;AACP,YAAA,IAAI,EAAE,CAAC,YAAY,KAAI;AACnB,gBAAA,IAAI,YAAY,IAAI,YAAY,CAAC,SAAS,EAAE;AACxC,oBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;wBACzB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AAE7C,wBAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE;4BAC1C,YAAY,CAAC,WAAW,EAAE,CAAC;AAC9B,yBAAA;AACJ,qBAAA;AAAM,yBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE;AACjC,wBAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE;6BACpD,IAAI,CAAC,KAAK,EAAE,CAAC;6BACb,SAAS,CAAC,MAAK;AACZ,4BAAA,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,4BAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAEvB,4BAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,EAAE;gCACjD,mBAAmB,CAAC,WAAW,EAAE,CAAC;AACrC,6BAAA;AAED,4BAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE;gCAC1C,YAAY,CAAC,WAAW,EAAE,CAAC;AAC9B,6BAAA;AACL,yBAAC,CAAC,CAAC;AACV,qBAAA;AAAM,yBAAA;AACH,wBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;AACpC,wBAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,EAAE;6BACrD,IAAI,CAAC,KAAK,EAAE,CAAC;6BACb,SAAS,CAAC,MAAK;AACZ,4BAAA,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjD,4BAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,EAAE;gCACjD,mBAAmB,CAAC,WAAW,EAAE,CAAC;AACrC,6BAAA;AAED,4BAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE;gCAC1C,YAAY,CAAC,WAAW,EAAE,CAAC;AAC9B,6BAAA;AACL,yBAAC,CAAC,CAAC;AACV,qBAAA;AACJ,iBAAA;aACJ;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;gBACb,OAAO,CAAC,GAAG,CAAC;AACR,oBAAA,kBAAkB,EAAE,kBAAkB;oBACtC,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,oBAAA,OAAO,EAAE,CAA0E,uEAAA,EAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAG,CAAA,CAAA;AACzG,oBAAA,MAAM,EAAE;AACJ,wBAAA,KAAK,EAAE,KAAK;wBACZ,WAAW,EAAE,IAAI,CAAC,WAAW;AAChC,qBAAA;AACD,oBAAA,MAAM,EAAE,4CAA4C;AACvD,iBAAA,CAAC,CAAC;aACN;AACJ,SAAA,CAAC,CAAC;KACV;AAED;;AAEG;AACI,IAAA,YAAY,CAAC,IAAgB,EAAA;QAChC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE;AAC/D,YAAA,sBAAsB,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;AACvG,SAAA;aAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;AACnE,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;AACpC,SAAA;QAED,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;YAC9B,WAAW,EAAE,IAAI,CAAC,KAAK;YACvB,kBAAkB,EAAE,IAAI,CAAC,WAAW;AACvC,SAAA,CAAC,CAAC;KACN;AAED;;AAEG;AACI,IAAA,mBAAmB,CAAC,IAAgB,EAAA;QAEvC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;YAC9B,IAAI,EAAE,IAAI,CAAC,YAAY;AAC1B,SAAA,CAAC,CAAC;KAEN;AAED;;AAEG;AACI,IAAA,mBAAmB,CAAC,IAAgB,EAAA;QAEvC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;YAC9B,IAAI,EAAE,IAAI,CAAC,YAAY;AAC1B,SAAA,CAAC,CAAC;KAEN;AAED;;AAEG;AACK,IAAA,KAAK,CAAC,WAAmB,EAAE,SAAiB,EAAE,cAAmB,EAAA;;AAGrE,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,gBAAgB;AACpC,eAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,gBAAgB;eACzD,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAEnE,YAAA,OAAO,CAAC,YAAY,CAChB,oBAAoB,CAAC,MAAM,EAC3B,WAAW,EACX,SAAS,EACT,cAAc,EACd,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,EAChD,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CACjE,CAAC;AACL,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,CAAC,YAAY,CAChB,oBAAoB,CAAC,MAAM,EAC3B,WAAW,EACX,SAAS,EACT,cAAc,CACjB,CAAC;AACL,SAAA;KACJ;AAED;;;;AAIG;IACK,uBAAuB,GAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,OAAO,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAEuC,QAAiB,CAAC,EAAE,EAAE,IAAI,CAAC;AAC5E,aAAA,IAAI,CAAC,QAAQ,CAAC,MAAK;AAChB,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE;gBAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9C,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,aAAA;AAED,YAAA,OAAO,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAEA,QAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACrF,SAAC,CAAC,EACE,GAAG,CAAC,MAAK;AACL,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,YAAA,OAAO,IAAI,CAAC;SACf,CAAC,CAAC,CAAC;KACf;AAED;;;;AAIG;IACK,sBAAsB,GAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,OAAO,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAEA,QAAiB,CAAC,EAAE,EAAE,IAAI,CAAC;AAC3E,aAAA,IAAI,CAAC,QAAQ,CAAC,MAAK;YAChB,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9C,gBAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC1B,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,aAAA;AAED,YAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,EAAEA,QAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACpF,SAAC,CAAC,EACE,GAAG,CAAC,MAAK;AACL,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SAC1B,CAAC,CAAC,CAAC;KACf;AAED;;;;;AAKG;AACK,IAAA,wBAAwB,CAAC,QAAwB,EAAA;AACrD,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,qBAAqB,EAAE;AAChE,aAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,YAAgC,KAAI;AAChD,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC,MAAK;gBAC7B,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAE9F,gBAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;AAC1C,oBAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC9E,iBAAA;AAAM,qBAAA;AACH,oBAAA,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACrC,iBAAA;AACL,aAAC,CAAC,CAAC;SACN,CAAC,CAAC,CAAC;KACX;;iGAzWQ,eAAe,EAAA,EAAA,CAAA,iBAAA,CAAAzB,iBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAwB,aAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;iGAAf,eAAe,EAAA,SAAA,EAAA,CAAA,CAAA,YAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,qBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;QDpD5B,EAoDM,CAAA,UAAA,CAAA,CAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;QApDA,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,KAAA,IAAA,GAAA,CAAA,KAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;;uFCoDxB,eAAe,EAAA,CAAA;cAJ3B,SAAS;2BACI,YAAY,EAAA,QAAA,EAAA,moHAAA,EAAA,CAAA;iHAef,wBAAwB,EAAA,CAAA;kBAD9B,SAAS;mBAAC,iBAAiB,CAAA;YAOrB,KAAK,EAAA,CAAA;kBADX,KAAK;;;MCxDG,YAAY,CAAA;;2FAAZ,YAAY,GAAA,CAAA,EAAA,CAAA;6FAAZ,YAAY,EAAA,CAAA,CAAA;iGAJjB,YAAY;QACZ,aAAa,CAAA,EAAA,CAAA,CAAA;uFAGR,YAAY,EAAA,CAAA;cARxB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,YAAY,EAAE,CAAC,eAAe,CAAC;gBAC/B,OAAO,EAAE,CAAC,eAAe,CAAC;AAC1B,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,aAAa;AAChB,iBAAA;AACJ,aAAA,CAAA;;wFACY,YAAY,EAAA,EAAA,YAAA,EAAA,CAPN,eAAe,CAAA,EAAA,OAAA,EAAA,CAG1B,YAAY;AACZ,QAAA,aAAa,aAHP,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ICPjB,oBAKX;AALD,CAAA,UAAY,mBAAmB,EAAA;AAC3B,IAAA,mBAAA,CAAA,mBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACT,IAAA,mBAAA,CAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;AACb,IAAA,mBAAA,CAAA,mBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;AAChB,IAAA,mBAAA,CAAA,mBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACb,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,GAK9B,EAAA,CAAA,CAAA;;;ICHG,EAAyD,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IAD3D,EAA8D,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;IAC5D,EAAyD,CAAA,UAAA,CAAA,CAAA,EAAA,4DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IAC3D,EAAK,CAAA,YAAA,EAAA,CAAA;;;;IADY,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,CAAA;;;IAGxC,EAAyD,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IAD3D,EAAyE,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;IACvE,EAAyD,CAAA,UAAA,CAAA,CAAA,EAAA,4DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IAC3D,EAAK,CAAA,YAAA,EAAA,CAAA;;;;IADY,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,CAAA;;;IAL5C,EAA+G,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAC7G,EAEK,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;IACL,EAEK,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;IACP,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAPuB,EAA8C,CAAA,WAAA,CAAA,cAAA,EAAA,MAAA,CAAA,aAAA,GAAA,CAAA,GAAA,IAAA,CAAA,CAAA;IACpE,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IAGxB,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;;;;IAO1B,EAAyL,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAA3E,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAoB,CAAA,OAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAA6C,EAAc,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA9D,EAA2C,CAAA,WAAA,CAAA,wBAAA,EAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IAAC,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,iBAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;;;IACvM,EAAyG,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAc,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAAjE,EAA2C,CAAA,WAAA,CAAA,wBAAA,EAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IAA1E,EAA8B,CAAA,WAAA,CAAA,YAAA,EAAA,OAAA,CAAA,KAAA,CAAA,CAAA;IAA6C,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,iBAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;;;IAIrH,EAAwB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,EAAA,gBAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAC5C,EAAwB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,EAAA,eAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAC5C,EAAuF,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;IAHzF,EAAkF,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAChF,EAA4C,CAAA,UAAA,CAAA,CAAA,EAAA,qEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC5C,EAA4C,CAAA,UAAA,CAAA,CAAA,EAAA,qEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC5C,EAAuF,CAAA,UAAA,CAAA,CAAA,EAAA,qEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACzF,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAJa,EAA8B,CAAA,UAAA,CAAA,UAAA,EAAA,OAAA,CAAA,mBAAA,CAAA,CAAA;IACzC,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,UAAA,CAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACf,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,UAAA,CAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACf,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,UAAA,CAAA,cAAA,EAAA,CAAA,CAAA,CAAA;;;IAR1B,EAA+F,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAC7F,EAA2M,CAAA,UAAA,CAAA,CAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAC3M,EAA8H,CAAA,UAAA,CAAA,CAAA,EAAA,8DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAG9H,EAIO,CAAA,UAAA,CAAA,CAAA,EAAA,8DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACT,EAAO,CAAA,YAAA,EAAA,CAAA;;;;IATmF,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,SAAA,CAAA,CAAA;IACrG,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,SAAA,CAAA,CAAA;IAGrB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAX,EAAW,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,CAAA;;;IALpB,EAUO,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;;;IAVmD,EAAoB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,eAAA,CAAA,CAAA;;ACDhF;;AAEG;AACG,MAAO,yBAA0B,SAAQ,mBAAmB,CAAA;AAiB9D,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAjBpB;;AAEG;QACa,IAAe,CAAA,eAAA,GAAqB,EAAE,CAAC;AAOvD;;AAEG;QAEI,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;KAIhC;AAED,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,2BAA2B,CAAC;KACtC;;qHAvBQ,yBAAyB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;2GAAzB,yBAAyB,EAAA,SAAA,EAAA,CAAA,CAAA,uBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,SAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,oCAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,aAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,4BAAA,CAAA,EAAA,CAAA,OAAA,EAAA,oDAAA,EAAA,UAAA,EAAA,GAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,qCAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,UAAA,CAAA,EAAA,CAAA,CAAA,EAAA,cAAA,CAAA,EAAA,CAAA,OAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,kCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDZtC,EAOM,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEN,EAYc,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;QArB+D,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,eAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;;uFCYhG,yBAAyB,EAAA,CAAA;cAPrC,SAAS;2BACI,uBAAuB,EAAA,QAAA,EAAA,8yCAAA,EAAA,CAAA;2DAUjB,eAAe,EAAA,CAAA;kBAA9B,KAAK;YAKU,mBAAmB,EAAA,CAAA;kBAAlC,KAAK;YAMC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;;;MCTG,sBAAsB,CAAA;;+GAAtB,sBAAsB,GAAA,CAAA,EAAA,CAAA;uGAAtB,sBAAsB,EAAA,CAAA,CAAA;2GAJ3B,YAAY;QACZ,aAAa,CAAA,EAAA,CAAA,CAAA;uFAGR,sBAAsB,EAAA,CAAA;cAZlC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,yBAAyB;AAC5B,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,yBAAyB;AAC5B,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,aAAa;AAChB,iBAAA;AACJ,aAAA,CAAA;;wFACY,sBAAsB,EAAA,EAAA,YAAA,EAAA,CAP3B,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAGzB,YAAY;AACZ,QAAA,aAAa,aAPb,yBAAyB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;;ICJ7B,EAAyI,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAA9B,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,0DAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAmB,CAAA,MAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAAC,EAAc,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAAlB,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,iBAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;;;IACvJ,EAAuE,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAc,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAAzE,EAA8B,CAAA,WAAA,CAAA,YAAA,EAAA,OAAA,CAAA,KAAA,CAAA,CAAA;IAAsB,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,iBAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;;;IAKrF,EAA2C,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,EAAA,gBAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAC/D,EAA2C,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,EAAA,eAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAC/D,EAAyF,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;IACzF,EAA2C,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,EAAA,eAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAJjE,EAA4E,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAC1E,EAA+D,CAAA,UAAA,CAAA,CAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAC/D,EAA+D,CAAA,UAAA,CAAA,CAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAC/D,EAAyF,CAAA,UAAA,CAAA,CAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACzF,EAA+D,CAAA,UAAA,CAAA,CAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACjE,EAAO,CAAA,YAAA,EAAA,CAAA;;;IALa,EAAsB,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,SAAA,CAAA,CAAA;IACjC,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,UAAA,CAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACf,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,UAAA,CAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACf,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,UAAA,CAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACf,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,UAAA,CAAA,cAAA,EAAA,CAAA,CAAA,CAAA;;;AAZ1B,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAwD,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAGpD,EAA2J,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAC3J,EAA4F,CAAA,UAAA,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAC9F,EAAO,CAAA,YAAA,EAAA,CAAA;IAGP,EAKO,CAAA,UAAA,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACT,EAAO,CAAA,YAAA,EAAA,CAAA;;;;IAZoC,EAA8C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9C,EAA8C,CAAA,WAAA,CAAA,sBAAA,EAAA,OAAA,CAAA,UAAA,CAAA,CAAA;IACjF,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,MAAA,CAAA,CAAA;IAC8B,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,MAAA,CAAA,CAAA;IAIhE,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAX,EAAW,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,CAAA;;ACFpB;;;;;;;;;;;AAWG;AAKG,MAAO,mBAAoB,SAAQ,iBAAiB,CAAA;AA8BtD;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC;KAC9C;AA7BD,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,mBAAmB,CAAC,UAAU,CAAC;KACzC;AAED;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,qBAAqB,CAAC;KAChC;AAsBD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,uBAAuB;YACvB,gBAAgB;YAChB,wBAAwB;AAC3B,SAAA,CAAC,CAAC;KACN;;AA/Cc,mBAAA,CAAA,UAAU,GAAG;IACxB,KAAK,EAAE,mBAAmB,CAAC,KAAK;IAChC,SAAS,EAAE,mBAAmB,CAAC,SAAS;IACxC,YAAY,EAAE,mBAAmB,CAAC,YAAY;IAC9C,KAAK,EAAE,mBAAmB,CAAC,KAAK;CACnC,CAAC;yGAPO,mBAAmB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;qGAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,4BAAA,CAAA,EAAA,CAAA,OAAA,EAAA,oDAAA,EAAA,UAAA,EAAA,GAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,qCAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,CAAA,EAAA,CAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,UAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,cAAA,CAAA,EAAA,CAAA,OAAA,EAAA,gCAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,cAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,UAAA,EAAA,uBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDtBhC,EAcO,CAAA,UAAA,CAAA,CAAA,EAAA,mCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;;QAdgB,EAAgB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;;uFCsB1B,mBAAmB,EAAA,CAAA;cAJ/B,SAAS;2BACI,gBAAgB,EAAA,QAAA,EAAA,+6BAAA,EAAA,CAAA;2DA0BV,WAAW,EAAA,CAAA;kBAA1B,KAAK;YAKU,SAAS,EAAA,CAAA;kBAAxB,KAAK;;;MCnCG,gBAAgB,CAAA;;mGAAhB,gBAAgB,GAAA,CAAA,EAAA,CAAA;iGAAhB,gBAAgB,EAAA,CAAA,CAAA;qGAHrB,YAAY,CAAA,EAAA,CAAA,CAAA;uFAGP,gBAAgB,EAAA,CAAA;cAX5B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,mBAAmB;AACtB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,mBAAmB;AACtB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;AACf,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,gBAAgB,EANrB,EAAA,YAAA,EAAA,CAAA,mBAAmB,CAGnB,EAAA,OAAA,EAAA,CAAA,YAAY,aANZ,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;;ICLzB,EAAsH,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IAAhC,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAqB,CAAA,aAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAAC,EAAS,CAAA,YAAA,EAAA,CAAA;;;;IAC/H,EAA4F,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IAAhC,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAqB,CAAA,aAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAAC,EAAS,CAAA,YAAA,EAAA,CAAA;;ACejG,MAAO,cAAe,SAAQ,iBAAiB,CAAA;AAuGjD;;;AAGG;AACH,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AA7FpB;;AAEG;QAEI,IAAO,CAAA,OAAA,GAAiB,EAAE,CAAC;AA4BlC;;AAEG;QAEI,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAUR,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAO,CAAC;AAoCxD;;;AAGG;QACI,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;KAQtC;AA3GD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,gBAAgB,CAAC;KAC3B;AAoBD;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;KAC9C;AAQD;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;KAC/C;AAQD;;;AAGG;;AAEH,IAAA,IAAqB,YAAY,GAAA;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAGD;;AAEG;AACH,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KACjE;AAOD;;AAEG;AACH,IAAA,IACW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IACD,IAAW,IAAI,CAAC,GAAQ,EAAA;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;AA0BD;;;AAGG;IACI,QAAQ,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;AAC1B,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACvC,SAAA;KACJ;AAED;;AAEG;IACI,eAAe,GAAA;QAClB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KAC3B;AAED;;AAEG;IACI,WAAW,GAAA;QACd,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,aAAa,CAAC,KAAK,EAAA;QACtB,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;gBAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3F,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;IACI,UAAU,GAAA;;QAEb,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,SAAA;;AAED,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAClD,QAAA,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;;QAG9E,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAClB,IAAI,CAAC,MAAM,EACX;gBACI,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,OAAO,EAAE,eAAe;AAC3B,aAAA,CACJ,CAAC;AACL,SAAA;KACJ;AAED;;AAEG;IACI,OAAO,GAAA;QACV,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACvB,SAAA;KACJ;;+FA7LQ,cAAc,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;gGAAd,cAAc,EAAA,SAAA,EAAA,CAAA,CAAA,WAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,uBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDjB3B,EAAsG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACpG,EAA+H,CAAA,UAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;QAC/H,EAAqG,CAAA,UAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;QACvG,EAAM,CAAA,YAAA,EAAA,CAAA;;AAH4C,QAAA,EAAA,CAAA,WAAA,CAAA,OAAA,EAAA,GAAA,CAAA,QAAA,CAAwB,CAAA,QAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAC5C,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA7B,EAA6B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,uBAAA,CAAA,CAAA;QAC7B,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,uBAAA,CAAA,CAAA;;uFCe/C,cAAc,EAAA,CAAA;cAJ1B,SAAS;2BACI,WAAW,EAAA,QAAA,EAAA,4XAAA,EAAA,CAAA;2DAgBd,IAAI,EAAA,CAAA;kBADV,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,KAAK,EAAA,CAAA;kBADX,KAAK;YAcC,MAAM,EAAA,CAAA;kBADZ,KAAK;YAcC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAQe,YAAY,EAAA,CAAA;kBAAhC,MAAM;YAGU,YAAY,EAAA,CAAA;kBAA5B,MAAM;YAkBI,IAAI,EAAA,CAAA;kBADd,KAAK;;;MCtFG,WAAW,CAAA;;yFAAX,WAAW,GAAA,CAAA,EAAA,CAAA;4FAAX,WAAW,EAAA,CAAA,CAAA;gGAJV,YAAY,CAAA,EAAA,CAAA,CAAA;uFAIb,WAAW,EAAA,CAAA;cALvB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,OAAO,EAAE,CAAC,YAAY,CAAC;gBACvB,OAAO,EAAE,CAAC,cAAc,CAAC;gBACzB,YAAY,EAAE,CAAC,cAAc,CAAC;AACjC,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,WAAW,EAFL,EAAA,YAAA,EAAA,CAAA,cAAc,CAFnB,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACF5B;AACM,MAAgB,YAAa,SAAQ,iBAAiB,CAAA;AAmFxD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC/D,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACjE,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAChE,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAClE,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC;QAChE,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;KACpD;AAhFD;;;AAGG;IACH,IACW,eAAe,CAAC,KAAsB,EAAA;AAC7C,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;KACxC;AACD,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,uBAAuB,CAAC;KACvC;AAED;;;AAGG;IACH,IACW,YAAY,CAAC,KAAsB,EAAA;AAC1C,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;KACrC;AACD,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AA4DS,IAAA,cAAc,CAAC,UAAkB,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE;AAChF,YAAA,OAAO,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC;AACzF,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,CAAC,EAAE;YAClF,OAAO,IAAI,CAAC,kBAAkB,CAAC;AAClC,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC;KACzF;AAES,IAAA,cAAc,CAAC,UAAkB,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE;AAChF,YAAA,OAAO,IAAI,CAAC,qBAAqB;gBAC7B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW;AAC7D,kBAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;AACzE,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,CAAC,EAAE;AAClF,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;AACzE,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,qBAAqB;YAC7B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa;AAC/D,cAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;KACvE;IAEO,gBAAgB,CAAC,UAAkB,EAAE,SAA0B,EAAA;QACnE,OAAO,SAAS,KAAK,UAAU,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;KAC1E;;AAxHsB,YAAA,CAAA,QAAQ,GAAG;AAC9B,IAAA,gBAAgB,EAAE,IAAI;AACtB,IAAA,iBAAiB,EAAE,GAAG;AACtB,IAAA,gBAAgB,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;AACxC,IAAA,cAAc,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;AACtC,IAAA,iBAAiB,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;AACzC,IAAA,SAAS,EAAE,MAAM;CACpB,CAAC;2FATgB,YAAY,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;8FAAZ,YAAY,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAAZ,YAAY,EAAA,CAAA;cAFjC,SAAS;2DAkBK,eAAe,EAAA,CAAA;kBADzB,KAAK;YAaK,YAAY,EAAA,CAAA;kBADtB,KAAK;YAYC,gBAAgB,EAAA,CAAA;kBADtB,KAAK;YAOC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YAMU,qBAAqB,EAAA,CAAA;kBAApC,KAAK;YAKU,KAAK,EAAA,CAAA;kBAApB,KAAK;YAKU,iBAAiB,EAAA,CAAA;kBAAhC,KAAK;YAMU,kBAAkB,EAAA,CAAA;kBAAjC,KAAK;YAMU,mBAAmB,EAAA,CAAA;kBAAlC,KAAK;YAMU,SAAS,EAAA,CAAA;kBAAxB,KAAK;;;ACjFV;;AAEG;AACG,SAAU,QAAQ,CAAC,KAAA,GAAgB,GAAG,EAAE,kBAAkB,GAAG,KAAK,EAAA;AACpE,IAAA,OAAOE,UAAY,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;AACnD;;ACQA,MAAM,wBAAwB,CAAA;AAC1B,IAAA,WAAA,CAAoB,OAAwC,EAAA;QAAxC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiC;KAAK;AAE1D,IAAA,KAAK,CAAC,MAAgB,EAAA;AACzB,QAAA,IAAI,MAAM,CAAC,2BAA2B,CAAC,EAAE;YACrC,MAAM,IAAI,KAAK,CAAC,CAAG,EAAA,2BAA2B,CAA2C,wCAAA,EAAA,MAAM,CAAC,IAAI,CAAE,CAAA,CAAC,CAAC;AAC3G,SAAA;;QAED,MAAM,CAAC,2BAA2B,CAAC;AAC/B,YAAA,CAAC,iBAAiB,EAAE,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;KAC3F;AACJ,CAAA;AAED;;;;AAIG;AACG,SAAU,eAAe,CAAC,OAAwC,EAAA;AACpE,IAAA,MAAM,SAAS,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;;AAExD,IAAA,OAAO,wBAAwB,CAAC;AAC5B,QAAA,IAAI,EAAE,iBAAiB;QACvB,cAAc,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAClD,KAAA,CAAC,CAAC;AACP;;ACtCA;AAEA;;AAEG;SACa,KAAK,GAAA;IACjB,OAAOC,OAAS,EAAE,CAAC;AACvB;;ACcA;;AAEE;MACW,iBAAiB,CAAA;AA0B1B;;;;;AAKG;AACH,IAAA,WAAA,CAAoB,KAAa,EAAU,OAAwB,EAAS,OAAqC,EAAA;QAA7F,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QAAU,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;QAAS,IAAO,CAAA,OAAA,GAAP,OAAO,CAA8B;KAAK;AA/BtH;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC5B,QAAA,OAAO,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;KAClD;AAED;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;AACZ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,OAAO,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;KACzC;AAED;;AAEG;IACH,IAAW,KAAK,CAAC,KAAQ,EAAA;QACrB,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChC,SAAA;KACJ;AASJ,CAAA;AAED;;AAEE;MACW,oBAAoB,CAAA;AA8B7B;;;AAGG;AACH,IAAA,WAAA,CAAoB,MAAuD,EAAA;QAAvD,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiD;KAAK;AAjChF;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;AACZ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,OAAO,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;KACzC;AAED;;AAEG;IACH,IAAW,KAAK,CAAC,KAAQ,EAAA;QACrB,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChC,SAAA;KACJ;AAaD;;AAEG;IACI,UAAU,GAAA;QACb,IAAI,CAAC,eAAe,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;AACzC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AAC9B,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CACnB,GAAG,EACH,IAAI,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CACvG,CAAC;AACN,SAAC,CAAC,CAAC;KACN;AACJ,CAAA;AAED;;AAEE;AACK,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AAE1D;;AAEE;MACW,aAAa,CAAA;AAA1B,IAAA,WAAA,GAAA;AAMI;;AAEG;QACI,IAAI,CAAA,IAAA,GAA8B,IAAI,oBAAoB,CAAM,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;KAU7F;AARG;;AAEG;IACI,aAAa,CAAI,GAAW,EAAE,OAAqC,EAAA;AACtE,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAAE,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AAAE,SAAA;QACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,iBAAiB,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChF,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC3B;AACJ,CAAA;AAED;;AAEE;MACW,oBAAoB,CAAA;AAC7B;;AAEG;AACK,IAAA,gBAAgB,CAAC,MAAW,EAAA;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE;AAC9B,YAAA,MAAM,CAAC,mBAAmB,CAAC,GAAG,IAAI,aAAa,EAAE,CAAC;AACrD,SAAA;AACD,QAAA,OAAO,MAAM,CAAC,mBAAmB,CAAC,CAAC;KACtC;AACD;;AAEG;AACI,IAAA,SAAS,CAAI,OAAqC,EAAE,MAAW,EAAE,WAAmB,EAAA;QACvF,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAChD,QAAA,MAAM,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;KACvE;AAED;;AAEG;IACI,YAAY,CAAI,MAAW,EAAE,WAAmB,EAAA;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAChD,QAAA,MAAM,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC;KACxC;AACJ,CAAA;AAED;;AAEE;AACI,SAAU,SAAS,CAAI,OAAsC,EAAA;AAC/D,IAAA,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,IAAA,OAAO,wBAAwB,CAAC;AAC5B,QAAA,IAAI,EAAE,WAAW;QACjB,iBAAiB,EAAE,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;AAClE,KAAA,CAAC,CAAC;AACP,CAAC;AAED;;AAEE;SACc,YAAY,GAAA;AACxB,IAAA,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,IAAA,OAAO,wBAAwB,CAAC;AAC5B,QAAA,IAAI,EAAE,WAAW;QACjB,iBAAiB,EAAE,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5D,KAAA,CAAC,CAAC;AACP;;MC3La,wBAAwB,CAAA;AALrC,IAAA,WAAA,GAAA;QAWW,IAAO,CAAA,OAAA,GAAiB,EAAE,CAAC;AAErC,KAAA;;mHARY,wBAAwB,GAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,sBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,cAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,eAAA,CAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,mCAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ACRrC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAkG,mBAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;QAGxF,EAAsB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACnC,EAAgG,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAClG,EAAS,CAAA,YAAA,EAAA,CAAA;QACT,EAAgG,CAAA,SAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;QAClG,EAAe,CAAA,YAAA,EAAA,CAAA;;QAP4D,EAAsB,CAAA,UAAA,CAAA,eAAA,EAAA,IAAA,CAAA,CAAA;QAGvF,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAtB,EAAsB,CAAA,iBAAA,CAAA,GAAA,CAAA,gBAAA,CAAA,CAAA;QAGb,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAnB,EAAmB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;;uFDEzB,wBAAwB,EAAA,CAAA;cALpC,SAAS;2BACI,sBAAsB,EAAA,QAAA,EAAA,0mBAAA,EAAA,CAAA;gBAOzB,gBAAgB,EAAA,CAAA;kBADtB,KAAK;YAIC,OAAO,EAAA,CAAA;kBADb,KAAK;;;;AEbR,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAA6I,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAExI,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;IACzB,EAAyG,CAAA,SAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAC5G,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;AAJsB,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,IAAA,CAAsB,CAAA,SAAA,EAAA,MAAA,CAAA,eAAA,EAAA,CAAA,CAAA;IAGnB,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA5B,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,gBAAA,CAA4B,CAAA,QAAA,EAAA,MAAA,CAAA,MAAA,CAAA,CAAA;;;ACG/D;;;;;;;;;;;;;;AAcG;AAOG,MAAO,oBAAqB,SAAQ,iBAAiB,CAAA;IAuCzD,WAAY,CAAA,QAAkB,EAAU,OAAmB,EAAA;QACzD,KAAK,CAAC,QAAQ,CAAC,CAAC;QADsB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AA9B3D;;AAEE;QAEK,IAAgB,CAAA,gBAAA,GAAiB,EAAE,CAAC;AAe3C;;AAEE;AAEK,QAAA,IAAA,CAAA,oBAAoB,GAAsB,IAAI,YAAY,EAAO,CAAC;AAEzE;;AAEE;QACK,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;KAIrB;AAvCD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACzB,QAAA,OAAO,sBAAsB,CAAC;KAC/B;AAoCD;;AAEE;IACK,eAAe,GAAA;QACpB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO;AACL,gBAAA,GAAG,EAAE,CAAG,EAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAI,EAAA,CAAA;AACvC,gBAAA,IAAI,EAAE,CAAG,EAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAI,EAAA,CAAA;aACzC,CAAC;AACH,SAAA;KACF;AAED;;AAEE;IAEK,SAAS,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAC9B,YAAA,MAAM,cAAc,GAAG,GAAG,CAAC,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACnF,YAAA,IAAI,cAAc,EAAE;gBAClB,cAAc,CAAC,KAAK,EAAE,CAAC;AACxB,aAAA;AACF,SAAA;KACF;;2GAlEU,oBAAoB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;sGAApB,oBAAoB,EAAA,SAAA,EAAA,CAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,kBAAA,EAAA3C,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,OAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,eAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,WAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,6BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QD3B/B,EAKa,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;;QALE,EAAY,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;;ACqF3B,UAAA,CAAA;IAACzC,UAAQ,CAAC,CAAC,CAAC;;;;AAQX,CAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;uFAlEU,oBAAoB,EAAA,CAAA;cALhC,SAAS;2BACE,kBAAkB,EAAA,QAAA,EAAA,sZAAA,EAAA,CAAA;oFAiBrB,gBAAgB,EAAA,CAAA;kBADtB,KAAK;YAOC,cAAc,EAAA,CAAA;kBADpB,KAAK;YAQC,MAAM,EAAA,CAAA;kBADZ,KAAK;YAOC,oBAAoB,EAAA,CAAA;kBAD1B,MAAM;YA4BA,SAAS,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;AClFlB;;;AAGE;MAIW,oBAAoB,CAAA;AAK7B,IAAA,WAAA,CAA0B,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;KACvC;AAED;;;AAGE;AACuC,IAAA,OAAO,CAAC,KAAY,EAAA;AACzD,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAqB,CAAC;AAC/C,QAAA,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YACrF,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACxD,SAAA;AAAM,aAAA;YACH,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACpD,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;KAEJ;;IAID,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC;KACtC;;AAIM,IAAA,OAAO,CAAC,KAAoB,EAAA;AAC/B,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,EAAE;YAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;AAC3B,SAAA;KACJ;AAED;;;AAGE;AACK,IAAA,eAAe,CAAC,MAAM,EAAA;AACzB,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC;AACtC,SAAA;QACD,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,GAAG,MAAM,CAAC;AAC5C,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC;AACtC,SAAC,CAAC,CAAC;KACN;;2GApDQ,oBAAoB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;sGAApB,oBAAoB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA,EAAA,YAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;mHAApB,GAAe,CAAA,OAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA,OAAA,EAAA,SAAA,6CAAA,GAAA,EAAA,OAAf,GAAe,CAAA,aAAA,EAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,CAAA,OAAA,EAAA,SAAA,6CAAA,CAAA,MAAA,EAAA,EAAA,OAAf,GAAe,CAAA,OAAA,CAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;;uFAAf,oBAAoB,EAAA,CAAA;cAHhC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,kBAAkB;AAC/B,aAAA,CAAA;6DAIU,cAAc,EAAA,CAAA;kBADpB,KAAK;YAUmC,OAAO,EAAA,CAAA;kBAA/C,YAAY;mBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAA;YAcvC,aAAa,EAAA,CAAA;kBADZ,YAAY;mBAAC,gBAAgB,CAAA;YAOvB,OAAO,EAAA,CAAA;kBADb,YAAY;mBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCfxB,iBAAiB,CAAA;;qGAAjB,iBAAiB,GAAA,CAAA,EAAA,CAAA;kGAAjB,iBAAiB,EAAA,CAAA,CAAA;sGAX1B,YAAY;QACZ,aAAa;QACb,cAAc;QACd,eAAe,CAAA,EAAA,CAAA,CAAA;uFAQN,iBAAiB,EAAA,CAAA;cAlB7B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE;oBACZ,oBAAoB;oBACpB,oBAAoB;oBACpB,wBAAwB;AACzB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP,YAAY;oBACZ,aAAa;oBACb,cAAc;oBACd,eAAe;AAChB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACP,oBAAoB;oBACpB,oBAAoB;oBACpB,wBAAwB;AACzB,iBAAA;AACF,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,iBAAiB,mBAhB1B,oBAAoB;QACpB,oBAAoB;AACpB,QAAA,wBAAwB,aAGxB,YAAY;QACZ,aAAa;QACb,cAAc;AACd,QAAA,eAAe,aAGf,oBAAoB;QACpB,oBAAoB;QACpB,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACftB,MAAO,gBAAiB,SAAQ,iBAAiB,CAAA;AA0BnD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAnBpB;;AAEG;AACI,QAAA,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC;AAO/C;;AAEG;AAEI,QAAA,IAAA,CAAA,oBAAoB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAOvE,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3D,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,+BAA+B,CAAC,CAAC;KACnG;AA9BD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,kBAAkB,CAAC;KAC7B;AA2BD;;;AAGG;AACI,IAAA,KAAK,CAAC,MAAM,EAAA;AACf,QAAA,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,cAAc,EAAE,CAAC;AAC3B,SAAA;AAED,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;KACpC;;mGA3CQ,gBAAgB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;kGAAhB,gBAAgB,EAAA,SAAA,EAAA,CAAA,CAAA,aAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,yBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QCR7B,EAAyF,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAAxB,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,iDAAA,CAAA,MAAA,EAAA,EAAA,OAAS,iBAAa,CAAC,EAAA,CAAA,CAAA;QACtF,EAAuD,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;QACvD,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAS,CAAA,YAAA,EAAA,CAAA;;QAFD,EAAyC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAzC,EAAyC,CAAA,WAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,CAAA;QAC/C,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,GAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;;uFDKa,gBAAgB,EAAA,CAAA;cAJ5B,SAAS;2BACI,aAAa,EAAA,QAAA,EAAA,2QAAA,EAAA,CAAA;2DAyBhB,oBAAoB,EAAA,CAAA;kBAD1B,MAAM;;;MEfE,aAAa,CAAA;;6FAAb,aAAa,GAAA,CAAA,EAAA,CAAA;8FAAb,aAAa,EAAA,CAAA,CAAA;kGAHlB,YAAY,CAAA,EAAA,CAAA,CAAA;uFAGP,aAAa,EAAA,CAAA;cAXzB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,gBAAgB;AACnB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,gBAAgB;AACnB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;AACf,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,aAAa,EANlB,EAAA,YAAA,EAAA,CAAA,gBAAgB,CAGhB,EAAA,OAAA,EAAA,CAAA,YAAY,aANZ,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACElB,MAAO,8BAA+B,SAAQ,mCAAmC,CAAA;AAAvF,IAAA,WAAA,GAAA;;QAEoB,IAAI,CAAA,IAAA,GAAG,aAAa,CAAC;QAE9B,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAIzB,QAAA,IAAA,CAAA,uBAAuB,GAAG;AAC9B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,OAAO,EAAE,MAAM;SAClB,CAAC;;QAGM,IAA4B,CAAA,4BAAA,GAAG,GAAG,CAAC;;QAGnC,IAA4B,CAAA,4BAAA,GAAG,GAAG,CAAC;KAgD9C;AA9CU,IAAA,mBAAmB,CAAC,cAA2B,EAAA;QAClD,IAAI,CAAC,cAAc,EAAE;YACjB,OAAO;AACV,SAAA;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE3B,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE5B,OAAO;KACV;AAED;;;AAGG;AACK,IAAA,gBAAgB,CAAC,IAA6B,EAAA;QAClD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;QACrE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;KAC5D;AAEO,IAAA,oBAAoB,CAAC,IAA6B,EAAA;QACtD,QAAQ,IAAI,EAAE,IAAI;YACd,KAAK,8BAA8B,CAAC,MAAM;gBACtC,OAAO,IAAI,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC;YAC/E,KAAK,8BAA8B,CAAC,SAAS;gBACzC,OAAO,IAAI,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC;YAClF,KAAK,8BAA8B,CAAC,OAAO;gBACvC,OAAO,IAAI,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;AAChF,YAAA;gBACI,OAAO,IAAI,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;AACnF,SAAA;KACJ;AAEO,IAAA,sBAAsB,CAAC,IAA6B,EAAA;QACxD,OAAO;YACH,GAAG,EAAE,IAAI,CAAC,4BAA4B;YACtC,GAAG,EAAE,IAAI,CAAC,4BAA4B;YACtC,SAAS,EAAE,IAAI,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC;SACzD,CAAC;KACL;AACJ;;;;ICtEG,EAAmC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACjC,EAA2D,CAAA,cAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,CAAA,CAAA;IACzD,EAAqE,CAAA,SAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;IACvE,EAAmB,CAAA,YAAA,EAAA,CAAA;IACrB,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAGb,EAAkC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAChC,EAA8F,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IACtH,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IADiF,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,iBAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;;IAGjH,EAG4B,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;IAHtB,EAA+B,CAAA,WAAA,CAAA,OAAA,EAAA,MAAA,CAAA,eAAA,CAAA,CAAA;AACuD,IAAA,EAAA,CAAA,WAAA,CAAA,8BAAA,EAAA,MAAA,CAAA,mBAAA,CAA0D,CAAA,0BAAA,EAAA,CAAA,MAAA,CAAA,mBAAA,CAAA,CAAA;IAApJ,EAAyF,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA2C,KAAA,EAAA,CAAA,MAAA,CAAA,UAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA,CAAA;;;IAG3F,EAG4B,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;IAHtB,EAA+B,CAAA,WAAA,CAAA,OAAA,EAAA,MAAA,CAAA,eAAA,CAAA,CAAA;AACuD,IAAA,EAAA,CAAA,WAAA,CAAA,8BAAA,EAAA,MAAA,CAAA,mBAAA,CAA0D,CAAA,0BAAA,EAAA,CAAA,MAAA,CAAA,mBAAA,CAAA,CAAA;IAApJ,EAAyF,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,MAAA,CAAA,UAAA,EAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA,CAAA;;;IAa/F,EAA4B,CAAA,SAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA;;;;ACb5B;;;;;;;;;;;AAWG;IAES,gBAGX;AAHD,CAAA,UAAY,eAAe,EAAA;AACvB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,IAAW,CAAA;AACX,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,GAAW,CAAA;AACf,CAAC,EAHW,eAAe,KAAf,eAAe,GAG1B,EAAA,CAAA,CAAA,CAAA;AAKK,MAAO,gBAAiB,SAAQ,iBAAiB,CAAA;IA0EnD,WAAY,CAAA,QAAkB,EAA2C,MAAc,EAAA;QACnF,KAAK,CAAC,QAAQ,CAAC,CAAC;QA3Db,IAAe,CAAA,eAAA,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;AA4BpF;;AAEG;QAEI,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAkBnB,QAAA,IAAA,CAAA,gBAAgB,GAA0B,IAAI,YAAY,EAAW,CAAC;AAEtE,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAE7D,IAAiB,CAAA,iBAAA,GAAG,GAAG,CAAC;AAM3B,QAAA,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;AAClC,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,8BAA8B,GAAG,IAAI,8BAA8B,CAAC,MAAM,CAAC,CAAC;;YAEjF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;;YAExF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAE1G,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAClC,SAAA;KACJ;AApFD,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,8BAA8B,CAAC,iBAAiB,CAAC;KAChE;AAED,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,8BAA8B,CAAC,iBAAiB,CAAC;KAChE;AAED;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,kBAAkB,CAAC;KAC7B;AAmCD;;AAEG;IACH,IACW,KAAK,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;AAED,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AA4BM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,OAAO,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,SAAA;KACJ;IAEM,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAEM,OAAO,GAAA;QACV,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;;AAGG;IAEI,yBAAyB,GAAA;QAC5B,IAAI,CAAC,8BAA8B,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;KAC5F;AAED;;AAEG;IAEK,uBAAuB,GAAA;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;AAEG;IAEK,eAAe,GAAA;QACnB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;YACtD,OAAO;AACV,SAAA;AAED,QAAA,MAAM,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAS,IAAI,CAAC,QAAQ,EAAE,4BAA4B,CAAC,IAAI,CAAC,CAAC;QACxG,MAAM,cAAc,GAAG,oBAAoB,GAAG,CAAC,GAAG,CAAO,KAAA,CAAA,CAAC,MAAM,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAChH,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC;YAC7D,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;YACpD,OAAO;AACV,SAAA;AAED,QAAA,IAAI,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,YAAY,IAAI,CAAC,CAAC;AACpF,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,IAAI,CAAC,CAAC;AACnF,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;AAE7F,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,8BAA8B,CAAC,mBAAmB,CAAC;;AAGpF,QAAA,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC;AAC1C,QAAA,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC;AAC1C,QAAA,MAAM,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC;;AAGhD,QAAA,IAAI,SAAS,EAAE;YACX,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,eAAe,EAAE,eAAe,CAAC,CAAC;;YAE3E,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;YACvD,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AAEvD,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;YACtC,IAAI,UAAU,GAAG,SAAS,EAAE;gBACxB,eAAe,GAAG,SAAS,CAAC;AAC/B,aAAA;AAAM,iBAAA,IAAI,UAAU,GAAG,SAAS,IAAI,UAAU,GAAG,SAAS,EAAE;;gBAEzD,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;AACjD,aAAA;iBAAM,IAAI,UAAU,GAAG,SAAS,IAAI,UAAU,GAAG,GAAG,GAAG,SAAS,EAAE;AAC/D,gBAAA,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1C,aAAA;iBAAM,IAAI,UAAU,GAAG,SAAS,IAAI,UAAU,GAAG,GAAG,GAAG,SAAS,EAAE;gBAC/D,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;AACjD,aAAA;YAED,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AACpD,SAAA;AAAM,aAAA;;YAEH,IAAI,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,YAAY,EAAE;;;AAG5E,gBAAA,MAAM,KAAK,GAAG,WAAW,GAAG,GAAG,CAAC;AAChC,gBAAA,eAAe,GAAG,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;AAC1D,aAAA;AAAM,iBAAA;;;gBAGH,eAAe,IAAI,CAAC,CAAC;AACxB,aAAA;YAED,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;YACvD,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;YAEvD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;AAEpD,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAClB,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AACjF,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AACpD,aAAA;AACJ,SAAA;QAED,UAAU,CAAC,MAAK;;;AAGZ,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC9B,SAAC,CAAC,CAAC;KACN;IAES,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,qBAAqB;AACxB,SAAA,CAAC,CAAC;KACN;IAES,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;;AApNQ,mBAAA,gBAAA,CAAA,IAAA,GAAA,SAAA,wBAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,gBAAgB,0DA0E2B,mBAAmB,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;kGA1E9D,gBAAgB,EAAA,SAAA,EAAA,CAAA,CAAA,aAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,sBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;QDzC7B,EAGkF,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AADrD,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,8CAAA,GAAA,EAAA,OAAS,qBAAiB,CAAC,EAAA,CAAA,CAAA;QAEpD,EAIe,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;AACf,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAwD,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACe,EAAY,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACxF,EAEe,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACjB,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAG4B,CAAA,UAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC5B,EAG4B,CAAA,UAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC5B,EAAwD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAAC,EAAqC,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;AAGxG,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAwK,CAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAGpK,EAAyB,CAAA,YAAA,CAAA,EAAA,CAAA,CAAA;AAC3B,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;QAGR,EAA4B,CAAA,UAAA,CAAA,EAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;;QA/B6B,EAAsC,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,iBAAA,CAAA,CAAA;AAC7F,QAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,CAAA,CAAA,GAAA,CAAA,UAAA,CAAmC,CAAA,kBAAA,EAAA,GAAA,CAAA,KAAA,CAAA,WAAA,CAAA,CAAA;QAClB,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlB,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,YAAA,CAAA,CAAA;QAMsC,EAAY,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAZ,EAAY,CAAA,iBAAA,CAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAClE,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAIK,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAItB,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAI7B,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAxB,EAAwB,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,KAAA,CAAA,WAAA,CAAA,CAAA;QAAE,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArC,EAAqC,CAAA,kBAAA,CAAA,GAAA,EAAA,GAAA,CAAA,eAAA,CAAA,eAAA,EAAA,EAAA,CAAA,CAAA;QAG3B,EAAoD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAApD,QAAA,EAAA,CAAA,WAAA,CAAA,0BAAA,EAAA,GAAA,CAAA,iBAAA,CAAoD,CAAA,wBAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA;QAEvH,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArC,EAAqC,CAAA,WAAA,CAAA,iBAAA,EAAA,CAAA,GAAA,CAAA,UAAA,CAAA,CAAA;QADlC,EAA2L,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAAQ,KAAA,EAAA,CAAA,GAAA,CAAA,UAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA,CAAA;QAM7L,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;;ACqHtB,UAAA,CAAA;AAAC,IAAAN,OAAK,EAAE;;;;AAGP,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AAAC,IAAA7C,UAAQ,EAAE;;;;AAGV,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;AAKD,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;;;AA2EP,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;uFAxMQ,gBAAgB,EAAA,CAAA;cAJ5B,SAAS;2BACI,aAAa,EAAA,QAAA,EAAA,48EAAA,EAAA,CAAA;;sBA6EU,QAAQ;;sBAAI,MAAM;uBAAC,mBAAmB,CAAA;wBAvDhE,QAAQ,EAAA,CAAA;kBADd,SAAS;mBAAC,UAAU,CAAA;YAId,uBAAuB,EAAA,CAAA;kBAD7B,KAAK;YAIC,MAAM,EAAA,CAAA;kBADZ,KAAK;YAIC,SAAS,EAAA,CAAA;kBADf,KAAK;YAIC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAIC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAIC,mBAAmB,EAAA,CAAA;kBADzB,KAAK;YAIC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAIC,YAAY,EAAA,CAAA;kBADlB,KAAK;YAMC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAOK,KAAK,EAAA,CAAA;kBADf,KAAK;YAUC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAIC,gBAAgB,EAAA,CAAA;kBADtB,MAAM;YA6CA,yBAAyB,EAAA,EAAA,EAQxB,uBAAuB,EAAA,EAAA,EAQvB,eAAe,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCxJd,aAAa,CAAA;;6FAAb,aAAa,GAAA,CAAA,EAAA,CAAA;8FAAb,aAAa,EAAA,CAAA,CAAA;kGALlB,YAAY;QACZ,UAAU;QACV,aAAa,CAAA,EAAA,CAAA,CAAA;uFAGR,aAAa,EAAA,CAAA;cATzB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,YAAY,EAAE,CAAC,gBAAgB,CAAC;gBAChC,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC3B,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,UAAU;oBACV,aAAa;AAChB,iBAAA;AACJ,aAAA,CAAA;;wFACY,aAAa,EAAA,EAAA,YAAA,EAAA,CARP,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAG3B,YAAY;QACZ,UAAU;AACV,QAAA,aAAa,aAJP,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;ACW9B;;AAEG;AAEH;MACa,mBAAmB,CAAA;AA0B5B;;AAEG;AACH,IAAA,WAAA,CAAsB,aAA4B,EAAA;QAA5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AApBlD;;;AAGG;QACI,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAWhB,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;KAMzB;IAbD,IAAY,KAAK,CAAC,KAAa,EAAA;QAC3B,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;AACnC,SAAA;AACD,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;AAUD;;AAEG;;IAEI,QAAQ,GAAA;;KAEd;AAED;;AAEG;IACI,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;AAC1E,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACtE,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QAEhC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,IAAG;AACnE,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACI,WAAW,GAAA;QACd,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC;KACzC;AAED;;;;;AAKG;AACI,IAAA,cAAc,CAAC,MAAyB,EAAA;QAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;KACf;AAED;;;;;AAKG;AACI,IAAA,IAAI,CAAC,OAAiB,EAAA;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAW,CAAC;AAC3C,QAAA,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED;;;;AAIG;AACI,IAAA,QAAQ,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;AAED;;AAEG;IACI,SAAS,GAAA;AACZ,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;KAC3B;AAED;;;;AAIG;AACI,IAAA,IAAI,CAAC,MAAgB,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;KAC7E;AAED;;AAEG;IACI,mBAAmB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACrC,SAAA;KACJ;;yGA/HQ,mBAAmB,EAAA,EAAA,CAAA,iBAAA,CAAAwC,aAAA,CAAA,CAAA,CAAA,EAAA,CAAA;qGAAnB,mBAAmB,EAAA,SAAA,EAAA,SAAA,yBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;uFAAnB,mBAAmB,EAAA,CAAA;cAF/B,SAAS;6DAIC,EAAE,EAAA,CAAA;kBADR,KAAK;YAIC,MAAM,EAAA,CAAA;kBADZ,SAAS;mBAAC,QAAQ,CAAA;;;AC5BvB;;;ICOM,EAAqF,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAsB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAAtE,EAA2B,CAAA,qBAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAiB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,iBAAA,CAAA,MAAA,CAAA,YAAA,CAAA,KAAA,CAAA,CAAA;;;;AAC3G,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAoD,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;IAClB,EAAqB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,OAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AACrD,IAAA,EAAA,CAAA,YAAA,EAAiB,EAAA,CAAA;;;IADe,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAArB,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAqB,CAAA,OAAA,EAAA,MAAA,CAAA,YAAA,CAAA,CAAA;;;;AAGvD,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAuD,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;IACrB,EAA2B,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,aAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AAC3D,IAAA,EAAA,CAAA,YAAA,EAAiB,EAAA,CAAA;;;IADe,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA3B,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,aAAA,CAA2B,CAAA,OAAA,EAAA,MAAA,CAAA,eAAA,CAAA,CAAA;;;IAG7D,EAAoF,CAAA,SAAA,CAAA,CAAA,EAAA,WAAA,EAAA,EAAA,CAAA,CAAA;;;IAA5B,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;AC+D7E;;;AAGG;AAKG,MAAO,2BAA4B,SAAQ,mBAAwE,CAAA;AAkBrH;;AAEG;AACH,IAAA,WAAA,CAAY,aAA4B,EAAA;QACpC,KAAK,CAAC,aAAa,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACxB;AAED;;;;AAIG;AACI,IAAA,cAAc,CAAC,MAAyB,EAAA;QAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;KACnB;AAED;;;;;AAKG;AACI,IAAA,IAAI,CAAC,OAAkC,EAAA;QAC1C,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;AACjG,SAAA;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;AACjD,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AACzC,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;AAC/C,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;AACnD,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG;AACzB,YAAA,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO;YAC9B,QAAQ,EAAE,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;SACvE,GAAG,IAAI,CAAC;AACT,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;AAEjD,QAAA,OAAO,MAAM,CAAC;KACjB;AAED,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,KAAK,CAAC;KAC3D;AACD,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,OAAO,CAAC;KAC7D;AAED;;AAEG;IACI,SAAS,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC;AACN,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,cAAc,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI;AAC5D,SAAA,CAAC,CAAC;KACN;AAED;;AAEG;IACI,QAAQ,GAAA;QACX,IAAI,CAAC,IAAI,CAAC;AACN,YAAA,SAAS,EAAE,KAAK;AACnB,SAAA,CAAC,CAAC;KACN;;yHAzFQ,2BAA2B,EAAA,EAAA,CAAA,iBAAA,CAAAA,aAAA,CAAA,CAAA,CAAA,EAAA,CAAA;6GAA3B,2BAA2B,EAAA,SAAA,EAAA,CAAA,CAAA,yBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,YAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,CAAA,EAAA,CAAA,QAAA,EAAA,EAAA,CAAA,EAAA,CAAA,IAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,IAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,eAAA,EAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,oCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ADvFxC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAkE,wBAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;QAEpC,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAK,EAAA,CAAA;AAE5C,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,oBAAA,CAAoB,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;QAEQ,EAAa,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAI,CAAA,YAAA,EAAA,CAAA;QACzC,EAA+G,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;QAC/G,EAGM,CAAA,UAAA,CAAA,EAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACN,EAGM,CAAA,UAAA,CAAA,EAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACN,EAAoF,CAAA,UAAA,CAAA,EAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,CAAA,CAAA;AACtF,QAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;AAET,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,mBAAA,CAAmB,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAGgC,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,6DAAA,GAAA,EAAA,OAAS,eAAW,CAAC,EAAA,CAAA,CAAA;QAAqC,EAAuB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;QAAA,EAAS,CAAA,YAAA,EAAA,CAAA;QAC3I,EAAqG,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;AAAxD,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,6DAAA,GAAA,EAAA,OAAS,cAAU,CAAC,EAAA,CAAA,CAAA;QAAoC,EAAsB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAS,EAAA,EAAA,CAAA;;QAvB9F,EAAuB,CAAA,UAAA,CAAA,eAAA,EAAA,KAAA,CAAA,CAAA;QAEnC,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QAIX,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAb,EAAa,CAAA,iBAAA,CAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QACjC,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlB,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,YAAA,CAAA,CAAA;QACU,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlB,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,YAAA,CAAA,CAAA;QAIlB,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAIzC,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QAIiC,EAAwC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAxC,QAAA,EAAA,CAAA,WAAA,CAAA,qBAAA,EAAA,GAAA,CAAA,UAAA,CAAwC,CAAA,oBAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAEhG,EAA8C,CAAA,UAAA,CAAA,UAAA,EAAA,GAAA,CAAA,eAAA,IAAA,CAAA,GAAA,CAAA,aAAA,CAAA,CAAA;QAA2D,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvB,EAAuB,CAAA,iBAAA,CAAA,GAAA,CAAA,iBAAA,CAAA,CAAA;QAC7B,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAtB,EAAsB,CAAA,iBAAA,CAAA,GAAA,CAAA,gBAAA,CAAA,CAAA;;uFCgElH,2BAA2B,EAAA,CAAA;cAJvC,SAAS;2BACI,yBAAyB,EAAA,QAAA,EAAA,glDAAA,EAAA,CAAA;;;;IC7E/B,EAAqG,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;;;AAA1D,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,CAAA,KAAA,CAAsB,CAAA,OAAA,EAAA,SAAA,CAAA,IAAA,CAAA,CAAA;;ACkDzE;;;AAGG;AAKG,MAAO,qBAAsB,SAAQ,mBAA4D,CAAA;AAoCnG;;AAEG;AACH,IAAA,WAAA,CAAY,aAA4B,EAAA;QACpC,KAAK,CAAC,aAAa,CAAC,CAAC;KACxB;AAED;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;KACpB;AAED;;;;AAIG;AACI,IAAA,cAAc,CAAC,MAAyB,EAAA;QAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;KACnB;AAED;;AAEG;IACI,SAAS,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC;AACN,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC;AAC1E,SAAA,CAAC,CAAC;KACN;AAED;;AAEG;IACI,QAAQ,GAAA;QACX,IAAI,CAAC,IAAI,CAAC;AACN,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,MAAM,EAAE,IAAI;AACf,SAAA,CAAC,CAAC;KACN;AAED;;;;;AAKG;AACI,IAAA,IAAI,CAAC,OAA4B,EAAA;QACpC,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;AACjG,SAAA;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;AACjD,QAAA,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;AACnD,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,EAAE,QAAQ,EAAE,uBAAuB,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;AACjH,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAEvC,QAAA,OAAO,MAAM,CAAC;KACjB;;6GArGQ,qBAAqB,EAAA,EAAA,CAAA,iBAAA,CAAAA,aAAA,CAAA,CAAA,CAAA,EAAA,CAAA;uGAArB,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,YAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,CAAA,EAAA,CAAA,QAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ADjElC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAkE,wBAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA;QAE1D,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAK,EAAA,CAAA;AAEtB,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,oBAAA,CAAoB,WAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,CAAA,CAAA;QAEgC,EAAuB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,sEAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,SAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA;QACrE,EAAqG,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;QACvG,EAAiB,CAAA,YAAA,EAAA,CAAA;QACjB,EAA+C,CAAA,SAAA,CAAA,CAAA,EAAA,WAAA,EAAA,CAAA,CAAA,CAAA;AACjD,QAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;AAGT,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,mBAAA,CAAmB,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AACgC,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uDAAA,GAAA,EAAA,OAAS,eAAW,CAAC,EAAA,CAAA,CAAA;QAAC,EAAuB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;QAAA,EAAS,CAAA,YAAA,EAAA,CAAA;QACvG,EAA2C,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAArB,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uDAAA,GAAA,EAAA,OAAS,cAAU,CAAC,EAAA,CAAA,CAAA;QAAC,EAAsB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAS,EAAA,EAAA,CAAA;;QAfpC,EAAuB,CAAA,UAAA,CAAA,eAAA,EAAA,KAAA,CAAA,CAAA;QAEzD,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QAImC,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAvB,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,SAAA,CAAuB,CAAA,OAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QACtC,EAAU,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAV,EAAU,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QAEhC,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvB,EAAuB,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,aAAA,CAAA,CAAA;QAKmC,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvB,EAAuB,CAAA,iBAAA,CAAA,GAAA,CAAA,iBAAA,CAAA,CAAA;QACnD,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAtB,EAAsB,CAAA,iBAAA,CAAA,GAAA,CAAA,gBAAA,CAAA,CAAA;;uFCkDxD,qBAAqB,EAAA,CAAA;cAJjC,SAAS;2BACI,mBAAmB,EAAA,QAAA,EAAA,uzBAAA,EAAA,CAAA;;;;ICxD3B,EAAqE,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;;;IACrE,EAA0B,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IAAA,EAAkB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAAtB,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,iBAAA,CAAA,MAAA,CAAA,cAAA,CAAA,CAAA;;;IAG1C,EAA8D,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IAC5D,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;;;IAF6B,EAA2B,CAAA,UAAA,CAAA,OAAA,EAAA,CAAA,OAAA,IAAA,IAAA,GAAA,IAAA,GAAA,OAAA,CAAA,KAAA,KAAA,EAAA,CAAA,CAAA;IAC3D,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,OAAA,IAAA,IAAA,GAAA,IAAA,GAAA,OAAA,CAAA,KAAA,KAAA,OAAA,EAAA,GAAA,CAAA,CAAA;;;IAHF,EAAwG,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IACtG,EAEK,CAAA,UAAA,CAAA,CAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IACP,EAAK,CAAA,YAAA,EAAA,CAAA;;;IAHkB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAX,EAAW,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;;;;AAMhC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAA8G,gBAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAEtD,EAAkC,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,oFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,oBAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;IAAtF,EAAuF,CAAA,YAAA,EAAA,CAAA;IACvF,EAAyB,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAuB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,EAAA,CAAA;;;;IAF5B,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,UAAA,CAAA,OAAA,EAAA,CAAA,QAAA,IAAA,IAAA,GAAA,IAAA,GAAA,QAAA,CAAA,KAAA,KAAA,EAAA,CAAA,CAAA;IACjB,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAd,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,QAAA,CAAc,CAAA,SAAA,EAAA,MAAA,CAAA,oBAAA,CAAA,CAAA;IAC1B,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,iBAAA,CAAA,CAAA,QAAA,IAAA,IAAA,GAAA,IAAA,GAAA,QAAA,CAAA,KAAA,KAAA,QAAA,CAAA,CAAA;;;IAJtD,EAAkC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IAChC,EAKM,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAM,CAAA,YAAA,EAAA,CAAA;;;IANkB,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;;;;AAQrC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAyF,gBAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,CAAA,CAAA;IAE9D,EAAqB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,8EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,OAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;IAA5C,EAA+C,CAAA,YAAA,EAAA,CAAA;IAC/C,EAAM,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAgB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,EAAA,CAAA;;;IADN,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;IACtC,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,iBAAA,CAAA,MAAA,CAAA,YAAA,CAAA,CAAA;;;IAI5B,EAA0B,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IAAA,EAAkB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAAtB,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,iBAAA,CAAA,MAAA,CAAA,cAAA,CAAA,CAAA;;ACqD1C,MAAO,+BACT,SAAQ,mBAAgF,CAAA;AAexF,IAAA,WAAA,CAAY,aAA4B,EAAA;QACpC,KAAK,CAAC,aAAa,CAAC,CAAC;KACxB;AAEM,IAAA,cAAc,CAAC,MAAyB,EAAA;QAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;KACnB;AAEM,IAAA,IAAI,CAAC,OAAsC,EAAA;QAC9C,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;AACrG,SAAA;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;AACjD,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AACzC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;AACnD,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;AAC7C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AACjC,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;AAC7C,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAC1D,OAAO,IAAG;AACN,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AACxB,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACtE,SAAC,EACD,CAAC,KAAK,KAAI;YACN,IAAI,CAAC,IAAI,CAAC;AACN,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,eAAe,EAAE,KAAK;AACzB,aAAA,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;AAEP,QAAA,OAAO,MAAM,CAAC;KACjB;AAEM,IAAA,IAAI,CAAC,MAAqC,EAAA;AAC7C,QAAA,IAAI,CAAC,sBAAsB,EAAE,WAAW,EAAE,CAAC;AAC3C,QAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACtB;IAEM,SAAS,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC;AACN,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,cAAc,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI;YACzD,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;AAClD,SAAA,CAAC,CAAC;KACN;IAEM,QAAQ,GAAA;QACX,IAAI,CAAC,IAAI,CAAC;AACN,YAAA,SAAS,EAAE,KAAK;AACnB,SAAA,CAAC,CAAC;KACN;;iIA1EQ,+BAA+B,EAAA,EAAA,CAAA,iBAAA,CAAAA,aAAA,CAAA,CAAA,CAAA,EAAA,CAAA;iHAA/B,+BAA+B,EAAA,SAAA,EAAA,CAAA,CAAA,8BAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,YAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,CAAA,EAAA,CAAA,QAAA,EAAA,EAAA,CAAA,EAAA,CAAA,IAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,IAAA,EAAA,mCAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,mCAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,eAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,CAAA,EAAA,SAAA,EAAA,eAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,wCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ADpF5C,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAkE,wBAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;QAEpC,EAAS,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAK,EAAA,CAAA;AAE1C,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,oBAAA,CAAoB,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAEhB,EAAqE,CAAA,UAAA,CAAA,CAAA,EAAA,4DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,CAAA,CAAA;QACrE,EAAgD,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;QAEhD,EAIK,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;QAEL,EAOM,CAAA,UAAA,CAAA,EAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEN,EAKM,CAAA,UAAA,CAAA,EAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACR,EAAO,CAAA,YAAA,EAAA,CAAA;QACP,EAAgD,CAAA,UAAA,CAAA,EAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;QAClD,EAAqB,CAAA,YAAA,EAAA,CAAA;AACrB,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,mBAAA,CAAmB,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAEf,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,iEAAA,GAAA,EAAA,OAAS,eAAW,CAAC,EAAA,CAAA,CAAA;QAA0C,EAAqB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;QAAA,EAAS,CAAA,YAAA,EAAA,CAAA;QAC/F,EAAmF,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAA7D,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,iEAAA,GAAA,EAAA,OAAS,cAAU,CAAC,EAAA,CAAA,CAAA;QAAyC,EAAoB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAS,EAAA,EAAA,CAAA;;QApC1E,EAAuB,CAAA,UAAA,CAAA,eAAA,EAAA,KAAA,CAAA,CAAA;QAEnC,EAAS,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAT,EAAS,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QAIb,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAb,EAAa,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QAC7B,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,CAAA;QAEnB,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAtC,EAAsC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,QAAA,IAAA,GAAA,CAAA,QAAA,KAAA,MAAA,CAAA,CAAA;QAMrC,EAA0B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA1B,EAA0B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,QAAA,KAAA,OAAA,CAAA,CAAA;QASqC,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlB,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,YAAA,CAAA,CAAA;QAOrF,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,CAAA;QAGkE,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAApB,EAAoB,CAAA,UAAA,CAAA,UAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QAC7C,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArB,EAAqB,CAAA,iBAAA,CAAA,GAAA,CAAA,iBAAA,CAAA,CAAA;QACH,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAApB,EAAoB,CAAA,iBAAA,CAAA,GAAA,CAAA,gBAAA,CAAA,CAAA;;uFCgD9F,+BAA+B,EAAA,CAAA;cAJ3C,SAAS;2BAEI,8BAA8B,EAAA,QAAA,EAAA,87DAAA,EAAA,CAAA;;;;IC5EtC,EAAqE,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,CAAA,CAAA;;;IAErE,EAAqF,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAsB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAAtE,EAA2B,CAAA,qBAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAiB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,iBAAA,CAAA,MAAA,CAAA,YAAA,CAAA,KAAA,CAAA,CAAA;;;;IAC3G,EAC6C,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;IAA7B,EAA4B,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,yFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,cAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;IAAC,EAAiB,CAAA,YAAA,EAAA,CAAA;;;AADiB,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,YAAA,CAAsB,CAAA,SAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAAA;;;;IAKvG,EAAuH,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAApB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,iEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAS,CAAA,OAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAAC,EAAc,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;;;IAAvB,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,iBAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA;;ACgDzI;;;AAGG;AAKG,MAAO,sBAAuB,SAAQ,mBAA8D,CAAA;AAiCtG;;AAEG;AACH,IAAA,WAAA,CAAY,aAA4B,EAAA;QACpC,KAAK,CAAC,aAAa,CAAC,CAAC;KACxB;AAED;;;;;AAKG;AACI,IAAA,IAAI,CAAC,OAA6B,EAAA;QACrC,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;AAC5F,SAAA;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACrC,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AACzC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC;AACtD,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;AAEG;IACI,OAAO,GAAA;QACV,IAAI,CAAC,IAAI,CAAC;YACN,cAAc,EAAE,IAAI,CAAC,cAAc;AACtC,SAAA,CAAC,CAAC;KACN;;+GAtEQ,sBAAsB,EAAA,EAAA,CAAA,iBAAA,CAAAA,aAAA,CAAA,CAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,oBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,CAAA,QAAA,EAAA,EAAA,CAAA,EAAA,CAAA,IAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,IAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,IAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ADtEnC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAsE,wBAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;QAExC,EAAS,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAK,EAAA,CAAA;AAE1C,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,oBAAA,CAAoB,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAEhB,EAAqE,CAAA,UAAA,CAAA,CAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,CAAA,CAAA;QACrE,EAAwB,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAW,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAI,CAAA,YAAA,EAAA,CAAA;QACvC,EAA+G,CAAA,UAAA,CAAA,EAAA,EAAA,oCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;QAC/G,EAC8D,CAAA,UAAA,CAAA,EAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,CAAA,CAAA;AAChE,QAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;QAET,EAAmB,CAAA,cAAA,CAAA,EAAA,EAAA,mBAAA,CAAA,CAAA;QACjB,EAA8I,CAAA,UAAA,CAAA,EAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAChJ,QAAA,EAAA,CAAA,YAAA,EAAoB,EAAA,CAAA;;AAfF,QAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,GAAA,CAAA,UAAA,CAAyB,CAAA,eAAA,EAAA,KAAA,CAAA,CAAA;QAEf,EAAS,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAT,EAAS,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QAIb,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAb,EAAa,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QACT,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,iBAAA,CAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QAC/B,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlB,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,YAAA,CAAA,CAAA;QACqB,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlB,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,YAAA,CAAA,CAAA;QAKxC,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA;;uFCwD9B,sBAAsB,EAAA,CAAA;cAJlC,SAAS;2BACI,oBAAoB,EAAA,QAAA,EAAA,0+BAAA,EAAA,CAAA;;;AChElC;;;AAGG;MAKU,sBAAsB,CAAA;AAE/B;;AAEG;AACH,IAAA,WAAA,CAAmB,aAA4B,EAAA;QAA5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;KAC9C;;+GANQ,sBAAsB,EAAA,EAAA,CAAA,iBAAA,CAAAA,aAAA,CAAA,CAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,oBAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ACXnC,QAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,CAAgF,iCAAA,CAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,CAAA,CAAA;;QAA5D,EAAsC,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,aAAA,CAAA,SAAA,CAAA,OAAA,CAAA,CAAA;QACjC,EAA2C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA3C,EAA2C,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,aAAA,CAAA,SAAA,CAAA,YAAA,CAAA,CAAA;QACtC,EAA+C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA/C,EAA+C,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,aAAA,CAAA,SAAA,CAAA,gBAAA,CAAA,CAAA;;uFDShE,sBAAsB,EAAA,CAAA;cAJlC,SAAS;2BACI,oBAAoB,EAAA,QAAA,EAAA,4SAAA,EAAA,CAAA;;;;IEMhC,EAA6E,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA/C,EAA0B,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,aAAA,CAAA,CAAA;IAAC,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,iBAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;IAC1F,EAAyF,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAmB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA3D,EAAgC,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,mBAAA,CAAA,CAAA;IAAC,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnB,EAAmB,CAAA,iBAAA,CAAA,MAAA,CAAA,eAAA,CAAA,CAAA;;;;ACNxG,MAAO,wBAAyB,SAAQ,eAAe,CAAA;;AAAhD,mBAAA,wBAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,qCAAA,CAAA,CAAA,OAAA,SAAA,gCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,qCAAA,KAAA,qCAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,wBAAwB,SAAxB,wBAAwB,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,sBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,kBAAA,EAAA1C,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,YAAA,EAAA,MAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,6BAAA,EAAA,gBAAA,EAAA,+BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,2BAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;ADTrC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAEiG,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAE7F,EAAoD,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;QACtD,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EACoL,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAClL,EAAqD,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QACvD,EAAM,CAAA,YAAA,EAAA,CAAA;QACN,EAAqG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACnG,EAAoD,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QACtD,EAAM,CAAA,YAAA,EAAA,CAAA;QAEN,EAAiG,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACjG,EAAmH,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACrH,EAAM,CAAA,YAAA,EAAA,CAAA;;QAhBD,EAAyB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,aAAA,CAAA,CAAA;AAAuD,QAAA,EAAA,CAAA,WAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA,CAAwB,mEAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,eAAA,GAAA,GAAA,CAAA,KAAA,CAAA,mBAAA,GAAA,IAAA,CAAA,CAAA;QAcpG,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QACf,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;;uFCNjB,wBAAwB,EAAA,CAAA;cAJpC,SAAS;2BACI,sBAAsB,EAAA,QAAA,EAAA,+mCAAA,EAAA,CAAA;;;MCoDvB,YAAY,CAAA;;2FAAZ,YAAY,GAAA,CAAA,EAAA,CAAA;6FAAZ,YAAY,EAAA,CAAA,CAAA;AAJV,mBAAA,YAAA,CAAA,IAAA,6BAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,SAAA,EAAA;QACP,aAAa;AAChB,KAAA,EAAA,OAAA,EAAA,CATG,cAAc;QACd,YAAY;QACZ,WAAW;QACX,kBAAkB;QAClB,cAAc;QACd,aAAa,CAAA,EAAA,CAAA,CAAA;uFAMR,YAAY,EAAA,CAAA;cArCxB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE;oBACV,qBAAqB;oBACrB,sBAAsB;oBACtB,2BAA2B;oBAC3B,+BAA+B;oBAC/B,eAAe;oBACf,sBAAsB;oBACtB,qBAAqB;oBACrB,qBAAqB;oBACrB,sBAAsB;oBACtB,wBAAwB;AAC3B,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,qBAAqB;oBACrB,sBAAsB;oBACtB,2BAA2B;oBAC3B,+BAA+B;oBAC/B,eAAe;oBACf,sBAAsB;oBACtB,qBAAqB;oBACrB,qBAAqB;oBACrB,sBAAsB;oBACtB,wBAAwB;AAC3B,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,cAAc;oBACd,YAAY;oBACZ,WAAW;oBACX,kBAAkB;oBAClB,cAAc;oBACd,aAAa;AAChB,iBAAA;AACD,gBAAA,SAAS,EAAE;oBACP,aAAa;AAChB,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,YAAY,mBAnCjB,qBAAqB;QACrB,sBAAsB;QACtB,2BAA2B;QAC3B,+BAA+B;QAC/B,eAAe;QACf,sBAAsB;QACtB,qBAAqB;QACrB,qBAAqB;QACrB,sBAAsB;AACtB,QAAA,wBAAwB,aAexB,cAAc;QACd,YAAY;QACZ,WAAW;QACX,kBAAkB;QAClB,cAAc;AACd,QAAA,aAAa,aAjBb,qBAAqB;QACrB,sBAAsB;QACtB,2BAA2B;QAC3B,+BAA+B;QAC/B,eAAe;QACf,sBAAsB;QACtB,qBAAqB;QACrB,qBAAqB;QACrB,sBAAsB;QACtB,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;ACxC5B,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAoI,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IAC7H,EAAU,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;IACrB,EAA4B,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAc,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;IAFO,EAAyD,CAAA,WAAA,CAAA,qBAAA,EAAA,MAAA,CAAA,OAAA,IAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;IAC3G,EAAU,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAV,EAAU,CAAA,iBAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA;IACa,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,iBAAA,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA;;;IAG9C,EAAiE,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;AATnE,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACwD,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAEpD,EAAgI,CAAA,SAAA,CAAA,CAAA,EAAA,eAAA,EAAA,CAAA,CAAA,CAAA;IAChI,EAGM,CAAA,UAAA,CAAA,CAAA,EAAA,oCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACR,EAAO,CAAA,YAAA,EAAA,CAAA;IACP,EAAiE,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACnE,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IATJ,EAAqD,CAAA,WAAA,CAAA,mCAAA,EAAA,MAAA,CAAA,SAAA,CAAA,CAAA;IAC/C,EAAkD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlD,EAAkD,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,KAAA,KAAA,EAAA,GAAA,aAAA,GAAA,MAAA,CAAA,OAAA,CAAA,CAAA;IACvC,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArC,EAAqC,CAAA,UAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAA,+BAAA,CAAA,OAAA,EAAA,MAAA,CAAA,IAAA,CAAA,CAAA;IACgE,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA;IAKrH,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjC,EAAiC,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,CAAA;;;IAGlD,EAA8G,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IAC5G,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;;;IAFsD,EAAkD,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,KAAA,KAAA,EAAA,GAAA,aAAA,GAAA,MAAA,CAAA,OAAA,CAAA,CAAA;IAC3G,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;;;IAIE,EAAiE,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;AAFnE,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAuG,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IACzD,EAAU,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IAC3D,EAAiE,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACnE,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IAFA,EAAuC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvC,EAAuC,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,KAAA,KAAA,EAAA,GAAA,MAAA,CAAA,OAAA,GAAA,EAAA,CAAA,CAAA;IAAC,EAAU,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAV,EAAU,CAAA,iBAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA;IACvC,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjC,EAAiC,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,CAAA;;;IAIhD,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;;MCjBd,aAAa,CAAA;AAMzB,CAAA;AAED;;;;;;;;;;;AAWG;AAKG,MAAO,eAAgB,SAAQ,mBAAmB,CAAA;AAoDpD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAvCb,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;AAEpB;;AAEG;AAEI,QAAA,IAAA,CAAA,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;AAEnC;;AAEG;QAEI,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;AAEjB;;AAEG;QAEI,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;AAuBd,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE;YACvC,OAAO,CAAC,GAAG,CAAC;gBACR,KAAK,EAAE,QAAQ,CAAC,OAAO;AACvB,gBAAA,OAAO,EAAE,0CAA0C;AACnD,gBAAA,MAAM,EAAE,CAAA,EAAG,IAAI,CAAC,aAAa,CAAc,YAAA,CAAA;AAC9C,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AA7DD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,iBAAiB,CAAC;KAC5B;AA0DD;;AAEG;IACI,QAAQ,GAAA;QACX,QAAQ,IAAI,CAAC,KAAK;YACd,KAAK,GAAG,EAAE;AACN,gBAAA,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;gBACvC,MAAM;AACT,aAAA;YACD,KAAK,GAAG,EAAE;AACN,gBAAA,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;gBACvC,MAAM;AACT,aAAA;YACD,KAAK,GAAG,EAAE;AACN,gBAAA,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;gBACvC,MAAM;AACT,aAAA;YACD,KAAK,GAAG,EAAE;AACN,gBAAA,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;gBACvC,MAAM;AACT,aAAA;AACD,YAAA,SAAS;AACL,gBAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AACrB,aAAA;AACJ,SAAA;KACJ;;AAlFc,eAAA,CAAA,IAAI,GAAG,aAAa,CAAC;AAErB,eAAO,CAAA,OAAA,GAAG,aAAa,CAAC;AACxB,eAAO,CAAA,OAAA,GAAG,aAAa,CAAC;AACxB,eAAO,CAAA,OAAA,GAAG,aAAa,CAAC;AACxB,eAAO,CAAA,OAAA,GAAG,oCAAoC,CAAC;iGAZrD,eAAe,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;iGAAf,eAAe,EAAA,SAAA,EAAA,CAAA,CAAA,YAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,kBAAA,EAAAF,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,OAAA,EAAA,uEAAA,EAAA,CAAA,EAAA,mCAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,CAAA,EAAA,CAAA,OAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,4BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,wBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QD7B5B,EAUM,CAAA,UAAA,CAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEN,EAEK,CAAA,UAAA,CAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;QAEL,EAGM,CAAA,UAAA,CAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEN,EAEc,CAAA,UAAA,CAAA,CAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;QAvBR,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,IAAA,KAAA,aAAA,CAAA,CAAA;QAY7B,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,IAAA,KAAA,eAAA,CAAA,CAAA;QAI7B,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArC,EAAqC,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,IAAA,KAAA,sBAAA,CAAA,CAAA;;uFCa9B,eAAe,EAAA,CAAA;cAJ3B,SAAS;2BACI,YAAY,EAAA,QAAA,EAAA,sxCAAA,EAAA,CAAA;2DAuBf,IAAI,EAAA,CAAA;kBADV,KAAK;YAOC,IAAI,EAAA,CAAA;kBADV,KAAK;YAOC,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,gBAAgB,EAAA,CAAA;kBADtB,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,QAAQ,EAAA,CAAA;kBADd,KAAK;;;MC7DG,YAAY,CAAA;;2FAAZ,YAAY,GAAA,CAAA,EAAA,CAAA;6FAAZ,YAAY,EAAA,CAAA,CAAA;iGAJjB,YAAY;QACZ,UAAU,CAAA,EAAA,CAAA,CAAA;uFAGL,YAAY,EAAA,CAAA;cAZxB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,eAAe;AAClB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,eAAe;AAClB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,UAAU;AACb,iBAAA;AACJ,aAAA,CAAA;;wFACY,YAAY,EAAA,EAAA,YAAA,EAAA,CAPjB,eAAe,CAAA,EAAA,OAAA,EAAA,CAGf,YAAY;AACZ,QAAA,UAAU,aAPV,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;ICNrB,EAA2F,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;;;IAArC,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,QAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,QAAA,CAAA,IAAA,CAAA,CAAA;;;IAKrE,EAAyE,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;;IAAzC,EAAkC,CAAA,UAAA,CAAA,aAAA,EAAA,MAAA,CAAA,QAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,QAAA,CAAA,QAAA,CAAA,CAAA;;;IADpE,EAAuC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACrC,EAAyE,CAAA,UAAA,CAAA,CAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACzE,EAAI,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA;IAAA,EAAyE,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IAChF,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;IAC7B,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAHE,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,QAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,QAAA,CAAA,QAAA,CAAA,CAAA;IAC1B,EAAyE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzE,EAAyE,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,aAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,CAAA;;;IAO/E,EAEM,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;;IAJV,EAAyG,CAAA,cAAA,CAAA,CAAA,EAAA,eAAA,EAAA,CAAA,CAAA,CAAA;IACvG,EAIc,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,CAAA,CAAA;IAChB,EAAgB,CAAA,YAAA,EAAA,CAAA;;;IANqB,EAAmE,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,aAAA,CAAA,IAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;;;IAgB1F,EAAiM,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;AAAzJ,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,kJAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,SAAA,CAAA,CAAA,OAAa,0CAAqB,CAAP,EAAA,CAAA,CAAA;IACnE,EAAiB,CAAA,YAAA,EAAA,CAAA;;;IADuB,EAA2B,CAAA,UAAA,CAAA,SAAA,EAAA,QAAA,CAAA,QAAA,CAAA,CAAA,OAAA,EAAA,QAAA,CAAA,IAAA,IAAA,QAAA,CAAA,QAAA,CAAA,CAAA,YAAA,EAAA,IAAA,CAAA,CAAA,UAAA,EAAA,QAAA,CAAA,QAAA,CAAA,CAAA,UAAA,EAAA,IAAA,CAAA,CAAA;;;IAHvE,EAA6F,CAAA,cAAA,CAAA,CAAA,EAAA,eAAA,EAAA,CAAA,CAAA,CAAA;IAC3F,EAIc,CAAA,UAAA,CAAA,CAAA,EAAA,0GAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,CAAA,CAAA;IAChB,EAAgB,CAAA,YAAA,EAAA,CAAA;;;IANwC,EAAoC,CAAA,UAAA,CAAA,OAAA,EAAA,QAAA,CAAA,IAAA,IAAA,QAAA,CAAA,QAAA,CAAA,CAAA;;;IAHhG,EAAmE,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACjE,EAA+B,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAsB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IAC1D,EAA8D,CAAA,cAAA,CAAA,CAAA,EAAA,WAAA,EAAA,EAAA,CAAA,CAAA;IAC5D,EAMgB,CAAA,UAAA,CAAA,CAAA,EAAA,4FAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,CAAA;IAClB,EAAY,CAAA,YAAA,EAAA,CAAA;IACd,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAVkB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,iBAAA,CAAA,UAAA,CAAA,KAAA,CAAA,IAAA,CAAA,CAAA;IAEnB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,SAAA,EAAA,UAAA,CAAA,KAAA,CAAA,KAAA,CAAA,CAAA;;;IAJ5D,EAAuC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACrC,EAWe,CAAA,UAAA,CAAA,CAAA,EAAA,4EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;;IACjB,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAZ8B,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,QAAA,CAAA,QAAA,CAAA,CAAA,CAAA;;;IAHvE,EAAoH,CAAA,cAAA,CAAA,CAAA,EAAA,eAAA,EAAA,CAAA,CAAA,CAAA;IAClH,EAec,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,CAAA,CAAA;IAChB,EAAgB,CAAA,YAAA,EAAA,CAAA;;;IAjB2B,EAAwE,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,aAAA,CAAA,IAAA,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA;;;ACfvH;;;;;;;;;;;AAWG;AAKG,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;AAiBzD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;AAlBD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,wBAAwB,CAAC;KACnC;AAeM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,OAAO,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AACrF,SAAA;KACJ;AAED;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,6BAA6B;AAChC,SAAA,CAAC,CAAC;KACN;;+GApCQ,sBAAsB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,kBAAA,EAAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,iCAAA,CAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QDpBnC,EAA6C,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAC3C,EAA2F,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;AAC3F,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,WAAA,EAAA,CAAA,CAA0C,CAAA,CAAA,EAAA,eAAA,EAAA,CAAA,CAAA,CAAA;QAEtC,EAMc,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,CAAA,CAAA;QAChB,EAAgB,CAAA,YAAA,EAAA,CAAA;QAChB,EAMgB,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,CAAA,CAAA;QAChB,EAiBgB,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,CAAA,CAAA;AAClB,QAAA,EAAA,CAAA,YAAA,EAAY,EAAA,CAAA;;QApCC,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,QAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,CAAA,QAAA,CAAA,IAAA,CAAA,CAAA;QAEhB,EAAwE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAxE,EAAwE,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,aAAA,CAAA,IAAA,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA;QASvE,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAnB,EAAmB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,QAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA;QAOnB,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAzB,EAAyB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,QAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;;uFCChC,sBAAsB,EAAA,CAAA;cAJlC,SAAS;2BACI,mBAAmB,EAAA,QAAA,EAAA,ktEAAA,EAAA,CAAA;2DAgBtB,QAAQ,EAAA,CAAA;kBADd,KAAK;;;MCLG,mBAAmB,CAAA;;yGAAnB,mBAAmB,GAAA,CAAA,EAAA,CAAA;oGAAnB,mBAAmB,EAAA,CAAA,CAAA;wGATxB,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,cAAc;QACd,aAAa;QACb,WAAW;QACX,cAAc,CAAA,EAAA,CAAA,CAAA;uFAGT,mBAAmB,EAAA,CAAA;cAjB/B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,sBAAsB;AACzB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,sBAAsB;AACzB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,WAAW;oBACX,YAAY;oBACZ,cAAc;oBACd,aAAa;oBACb,WAAW;oBACX,cAAc;AACjB,iBAAA;AACJ,aAAA,CAAA;;wFACY,mBAAmB,EAAA,EAAA,YAAA,EAAA,CAZxB,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAGtB,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,cAAc;QACd,aAAa;QACb,WAAW;AACX,QAAA,cAAc,aAZd,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACZ9B,IAAY,cAGX,CAAA;AAHD,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACnB,CAAC,EAHW,cAAc,KAAd,cAAc,GAGzB,EAAA,CAAA,CAAA,CAAA;AAED,CAAA,UAAc,cAAc,EAAA;AAGxB,IAAA,MAAM,eAAe,GAAG;AACpB,QAAA,cAAc,CAAC,GAAG;AAClB,QAAA,cAAc,CAAC,KAAK;KACvB,CAAC;IAEF,SAAS,UAAU,CAAC,KAAa,EAAA;AAC7B,QAAA,MAAM,qBAAqB,GAAG,cAAc,CAAC,GAAG,CAAC;AAEjD,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,qBAAqB,CAAC;AAChC,SAAA;AAED,QAAA,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;AAC5B,QAAA,OAAO,eAAe,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,IAAI,qBAAqB,CAAC;KACtG;IAED,SAAgB,gBAAgB,CAAC,KAAe,EAAA;AAC5C,QAAA,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;AAC7B,YAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AALe,IAAA,cAAA,CAAA,gBAAgB,mBAK/B,CAAA;AACL,CAAC,EAzBa,cAAc,KAAd,cAAc,GAyB3B,EAAA,CAAA,CAAA;;;ICxBG,EACyG,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;;;IAAvG,EAAgG,CAAA,sBAAA,CAAA,2EAAA,EAAA,OAAA,CAAA,WAAA,EAAA,EAAA,CAAA,CAAA;;;;IAJpG,EAE0C,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACxC,EACyG,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAC3G,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAJJ,EAAyF,CAAA,sBAAA,CAAA,wDAAA,EAAA,MAAA,CAAA,uBAAA,EAAA,EAAA,CAAA,CAAA;IACzF,EAAuC,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA,CAAA;IACjC,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;;;;IAQrB,EAAuE,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;IAAtB,EAAmB,CAAA,WAAA,CAAA,MAAA,EAAA,OAAA,CAAA,KAAA,CAAA,CAAA;;;;IACpE,EAA0E,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;IAA1B,EAAuB,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,WAAA,CAAA,CAAA;;;IAL3E,EAC4F,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IAC1F,EACgE,CAAA,cAAA,EAAA,CAAA;IADhE,EACgE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC9D,EAAuE,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACvE,EAA0E,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAC5E,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;IALN,EAAyF,CAAA,sBAAA,CAAA,wDAAA,EAAA,MAAA,CAAA,uBAAA,EAAA,EAAA,CAAA,CAAA;IAGhF,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;IAClB,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;;;IAWxB,EAE2C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;;;AAD2B,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,IAAA,CAAA,cAAA,CAAA,IAAA,CAAkC,CAAA,aAAA,EAAA,GAAA,CAAA,CAAA;;;IAGxG,EAEwE,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;;;;AADF,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,GAAA,CAAuB,iDAAA,CAAA,aAAA,EAAA,GAAA,CAAA,CAAA;;;IAG3F,EAAK,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IAAA,EAAa,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;IACxB,EAA0D,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAiB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EACH,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAFvE,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,iBAAA,CAAA,QAAA,CAAA,IAAA,CAAA,CAAA;IACkB,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,OAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAC,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,iBAAA,CAAA,QAAA,CAAA,QAAA,CAAA,CAAA;;;IAI/E,EAA8F,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;;;IAA/D,EAAuD,CAAA,sBAAA,CAAA,+BAAA,EAAA,MAAA,CAAA,IAAA,CAAA,SAAA,EAAA,EAAA,CAAA,CAAA;;;IAGpF,EAC4G,CAAA,SAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA;;;IAArD,EAAsB,CAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA;;;;;IA3CnF,EAC0F,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAExF,EAKM,CAAA,UAAA,CAAA,CAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAEN,EAOM,CAAA,UAAA,CAAA,CAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAEN,EAGsE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IAApE,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,+BAAuB,CAAA,CAAA,EAAA,CAAC,iJAAS,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,sBAAA,EAAwB,CAAA,CAAjC,EAAA,CAAA,CAAA;AACjC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAmE,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACpC,EAAc,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAElD,EAE2C,CAAA,UAAA,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAE3C,EAEwE,CAAA,UAAA,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACxE,EAIc,CAAA,UAAA,CAAA,EAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;IAChB,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAA8F,CAAA,UAAA,CAAA,EAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAC9F,EACmD,CAAA,cAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IACjD,EAC4G,CAAA,UAAA,CAAA,EAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA;IAC5G,EACF,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAI,EAAA,EAAA,CAAA;;;AA7CsC,IAAA,EAAA,CAAA,WAAA,CAAA,qBAAA,EAAA,CAAA,MAAA,CAAA,SAAA,CAAwC,gDAAA,CAAA,oBAAA,EAAA,MAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA;IAG9E,EAAuC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvC,EAAuC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,KAAA,IAAA,CAAA,MAAA,CAAA,uBAAA,CAAA,CAAA;IAOvC,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,KAAA,IAAA,MAAA,CAAA,uBAAA,CAAA,CAAA;IASkB,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;AAA1D,IAAA,EAAA,CAAA,WAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,CAAA,MAAA,GAAA,QAAA,GAAA,IAAA,CAA2C,CAAA,iBAAA,EAAA,MAAA,CAAA,KAAA,CAAA,SAAA,GAAA,GAAA,GAAA,MAAA,CAAA,KAAA,CAAA,gBAAA,CAAA,CAAA;IAIzB,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,WAAA,CAAA,WAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAC1D,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,SAAA,CAAA,CAAA;IAAC,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,iBAAA,CAAA,MAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA;IAEpC,EAAyD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzD,EAAyD,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,CAAA,cAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA,cAAA,CAAA,OAAA,CAAA,CAAA;IAIzD,EAAwD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxD,EAAwD,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,CAAA,cAAA,IAAA,MAAA,CAAA,IAAA,CAAA,cAAA,CAAA,OAAA,CAAA,CAAA;IAS1D,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,MAAA,CAAA,IAAA,CAAA,SAAA,CAAA,CAAA;IACI,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,sBAAA,CAAA,EAAA,EAAA,MAAA,CAAA,cAAA,EAAA,cAAA,CAAA,CAAA;AAApE,IAAA,EAAA,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,gBAAA,CAA6B,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAAE,KAAA,EAAA,MAAA,CAAA,IAAA,CAAA,SAAA,CAAA,CAAA,CAAA;IAEZ,EAA4D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5D,EAA4D,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,CAAA,MAAA,KAAA,IAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA,SAAA,IAAA,MAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA;IAE9E,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,IAAA,CAAA,YAAA,EAAA,GAAA,CAAA,CAAA;;IC+CQ,gBAGX;AAHD,CAAA,UAAY,eAAe,EAAA;AACvB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,eAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACf,CAAC,EAHW,eAAe,KAAf,eAAe,GAG1B,EAAA,CAAA,CAAA,CAAA;AAMK,MAAO,oBAAqB,SAAQ,YAAY,CAAA;IAiClD,WAAY,CAAA,QAAkB,EAAU,UAAsB,EAAA;QAC1D,KAAK,CAAC,QAAQ,CAAC,CAAC;QADoB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAjB9D;;AAEG;QACa,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAE3C;;AAEG;QACa,IAAuB,CAAA,uBAAA,GAAG,IAAI,CAAC;QAKxC,IAAuB,CAAA,uBAAA,GAAG,EAAE,CAAC;AAE7B,QAAA,IAAA,CAAA,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC;KAI1C;AAjCD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,sBAAsB,CAAC;KACjC;IA8BM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC/C,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC7D,YAAA,IAAI,CAAC,WAAW,GAAG,gCAAgC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC5G,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,uBAAuB,GAAG,+BAA+B,CAAC;AAClE,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACJ,IAAI,CAAC,UAAU,CAAC,aAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAG;AAC3E,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAEM,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC;KAC5C;IAEM,qBAAqB,GAAA;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC;KAC/C;IAEM,QAAQ,GAAA;;QAGX,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC7C,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,SAAA;;QAGD,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;;QAGD,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,YAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9B,gBAAA,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC;;gBAExE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;oBAChC,YAAY,IAAI,UAAU,CAAC;AAC9B,iBAAA;AACJ,aAAA;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAEtD,IAAI,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;;AAEpD,gBAAA,MAAM,IAAI,KAAK,CAAC,mLAAmL,CAAC,CAAC;AACxM,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,aAAA;AACJ,SAAA;KAEJ;;IAGS,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,yBAAyB;AAC5B,SAAA,CAAC,CAAC;KACN;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,gBAAgB,EAAE,EAAE;SACvB,CAAC;KACL;IAEM,iBAAiB,GAAA;QACpB,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC7C,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM;YACpB,KAAK,cAAc,CAAC,QAAQ;AACxB,gBAAA,OAAO,oBAAoB,CAAC;YAChC,KAAK,cAAc,CAAC,KAAK;AACrB,gBAAA,OAAO,iBAAiB,CAAC;YAC7B,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,OAAO,mBAAmB,CAAC;YAC/B,KAAK,cAAc,CAAC,IAAI;AACpB,gBAAA,OAAO,gBAAgB,CAAC;YAC5B,KAAK,cAAc,CAAC,QAAQ;AACxB,gBAAA,OAAO,oBAAoB,CAAC;YAChC,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,OAAO,mBAAmB,CAAC;YAC/B,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,OAAO,mBAAmB,CAAC;AAC/B,YAAA;AACI,gBAAA,OAAO,IAAI,CAAC;AACnB,SAAA;KACJ;;2GA1IQ,oBAAoB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;sGAApB,oBAAoB,EAAA,SAAA,EAAA,CAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,OAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,IAAA,CAAA,EAAA,CAAA,OAAA,EAAA,6DAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,OAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,IAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,OAAA,EAAA,OAAA,EAAA,8BAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,GAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,GAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,GAAA,EAAA,QAAA,EAAA,IAAA,CAAA,EAAA,CAAA,OAAA,EAAA,GAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,aAAA,CAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,QAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,6BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDrGjC,EA+CM,CAAA,UAAA,CAAA,CAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;QA/CA,EAAU,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA;;uFCqGH,oBAAoB,EAAA,CAAA;cAJhC,SAAS;2BACI,kBAAkB,EAAA,QAAA,EAAA,+7FAAA,EAAA,CAAA;oFAYZ,IAAI,EAAA,CAAA;kBAAnB,KAAK;YACU,OAAO,EAAA,CAAA;kBAAtB,KAAK;YACU,OAAO,EAAA,CAAA;kBAAtB,KAAK;YACU,KAAK,EAAA,CAAA;kBAApB,KAAK;YACU,UAAU,EAAA,CAAA;kBAAzB,KAAK;YACU,OAAO,EAAA,CAAA;kBAAtB,KAAK;YAKU,kBAAkB,EAAA,CAAA;kBAAjC,KAAK;YAKU,uBAAuB,EAAA,CAAA;kBAAtC,KAAK;;;;IC7HV,EAI4I,CAAA,SAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,CAAA,CAAA;;;;;AAJ5C,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,KAAA,CAAA,WAAA,GAAA,IAAA,CAAiC,CAAA,mBAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA,oBAAA,EAAA,MAAA,CAAA,kBAAA,CAAA,CAAA,qBAAA,EAAA,MAAA,CAAA,mBAAA,CAAA,CAAA,SAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,OAAA,EAAA,IAAA,CAAA,CAAA,OAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA,uBAAA,EAAA,MAAA,CAAA,qBAAA,CAAA,CAAA,YAAA,EAAA,OAAA,CAAA,UAAA,CAAA,CAAA,SAAA,EAAA,OAAA,CAAA,OAAA,CAAA,iDAAA,CAAA,yBAAA,EAAA,MAAA,CAAA,uBAAA,CAAA,CAAA;;ACQ3H,MAAO,eAAgB,SAAQ,YAAY,CAAA;AA8C7C,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAtCpB;;AAEG;QACa,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAE3C;;AAEG;QACa,IAAuB,CAAA,uBAAA,GAAG,IAAI,CAAC;KA+B9C;AA9CD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,iBAAiB,CAAC;KAC5B;AAYD,IAAA,IACW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;IAED,IAAW,UAAU,CAAC,IAAuB,EAAA;AACzC,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,aAA4B,CAAC;AAC5D,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;;QAE/B,IAAI,aAAa,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC/C,UAAU,CACN,MAAK;AACD,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAClC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;AAC7C,oBAAA,IAAI,aAAa,CAAC,EAAE,KAAK,SAAS,EAAE;wBAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACvD,wBAAA,IAAI,WAAW,EAAE;4BACb,WAAW,CAAC,KAAK,EAAE,CAAC;AACvB,yBAAA;AACJ,qBAAA;AACJ,iBAAA;aACJ,EACD,CAAC,CAAC,CAAC;AACV,SAAA;KACJ;;IAQS,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,yBAAyB;YACzB,mBAAmB;AACtB,SAAA,CAAC,CAAC;KACN;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;;iGAlEQ,eAAe,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;iGAAf,eAAe,EAAA,SAAA,EAAA,CAAA,CAAA,YAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,OAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,yBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,wBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDR5B,EAI4I,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,kBAAA,EAAA,CAAA,CAAA,CAAA;;QAJzG,EAAe,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA;;uFCQrC,eAAe,EAAA,CAAA;cAJ3B,SAAS;2BACI,YAAY,EAAA,QAAA,EAAA,oqBAAA,EAAA,CAAA;2DAeN,kBAAkB,EAAA,CAAA;kBAAjC,KAAK;YAKU,uBAAuB,EAAA,CAAA;kBAAtC,KAAK;YAGK,UAAU,EAAA,CAAA;kBADpB,KAAK;;;;;ICvBJ,EACkE,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;;;;AAAhE,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,YAAA,CAAsB,CAAA,aAAA,EAAA,GAAA,CAAA,CAAA;;;IACxB,EAA6D,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EACqC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAD3C,EACqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADrC,EACqC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,aAAA,CAAA,IAAA,CAAA,eAAA,CAAA,MAAA,CAAA,MAAA,CAAA,qBAAA,CAAA,CAAA,CAAA;;;IAClG,EAAmD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAiB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAAvB,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;;;AAPxE,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAiE,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAE7D,EACA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EACkE,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAClE,EACwG,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACxG,EAA0E,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AAC5E,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;IANJ,EACA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADA,EACA,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,UAAA,EAAA,GAAA,CAAA,CAAA;IAAO,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAA,CAAA;IAEnB,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,qBAAA,CAAA,CAAA;IAE3B,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;;;IAOvB,EAA+D,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IAEjE,EAAmC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IACjC,EAA6E,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;IAC/E,EAAM,CAAA,YAAA,EAAA,CAAA;;;IADkC,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,UAAA,CAAA,YAAA,EAAA,OAAA,CAAA,UAAA,CAAA,CAAA;;;;AANnE,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAoE,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAGhE,EAA+D,CAAA,UAAA,CAAA,CAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjE,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAEM,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACR,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IANF,EAAmD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnD,EAAmD,CAAA,WAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,UAAA,CAAA,MAAA,KAAA,CAAA,CAAA,CAAA;IADA,EAA4B,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA,CAAA;IAEhE,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,CAAA;IAE1C,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;;;IAMjC,EAAmC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IACjC,EAAmD,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;IACrD,EAAM,CAAA,YAAA,EAAA,CAAA;;;IADQ,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,UAAA,CAAA,YAAA,EAAA,OAAA,CAAA,UAAA,CAAA,CAAA;;;IAIrC,EAA+D,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IANnE,EAAsC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IACpC,EAEM,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACN,EACsD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACpD,EAA+D,CAAA,UAAA,CAAA,CAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;AACjE,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;;IANA,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;IAI/B,EAAmD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnD,EAAmD,CAAA,WAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,UAAA,CAAA,MAAA,KAAA,CAAA,CAAA,CAAA;IAD0B,EAA4B,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA,CAAA;IAE1F,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,CAAA;;;IAMlD,EAA+G,CAAA,SAAA,CAAA,CAAA,EAAA,WAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;AAC/G,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CACiD,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAChB,EAAgE,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;IACrG,EAAoD,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAqB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IAC7E,EAA+E,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAwB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;AAL9C,IAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,CAAa,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;IACzE,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,eAAA,CAAA,CAAA;IAC/B,EAA8C,CAAA,WAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,KAAA,CAAA,eAAA,CAAA,CAAA;IACf,EAAgE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhE,EAAgE,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,aAAA,CAAA,IAAA,CAAA,UAAA,CAAA,CAAA;IAC3C,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,iBAAA,CAAA,MAAA,CAAA,eAAA,CAAA,CAAA;IACM,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,iBAAA,CAAA,MAAA,CAAA,kBAAA,CAAA,CAAA;;ACiBrG,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;IAiFzD,WAAoB,CAAA,iBAAoC,EAAE,QAAkB,EAAA;QACxE,KAAK,CAAC,QAAQ,CAAC,CAAC;QADA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AAlExD;;;AAGG;QACa,IAAU,CAAA,UAAA,GAAsB,EAAE,CAAC;AAEnD;;AAEG;QACa,IAAiB,CAAA,iBAAA,GAAwB,EAAE,CAAC;AAO5D;;;AAGG;QACa,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;QA4C1B,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAI7B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;;AAEvB,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;AACrB,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC;KAC5C;AArFD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,wBAAwB,CAAC;KACnC;IAkFO,sBAAsB,GAAA;QAC1B,IAAI,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,cAAc,CAAC,GAAG;YAC3E,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,cAAc,CAAC,KAAK,EAAE;AAC/E,YAAA,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;AAC1G,SAAA;KACJ;IAEM,QAAQ,GAAA;QACX,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG;AACX,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,QAAQ,EAAE;AACN,gBAAA,OAAO,EAAE,KAAK;AACjB,aAAA;AACD,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,KAAK,EAAE;AACH,gBAAA,OAAO,EAAE,KAAK;AACjB,aAAA;AACD,YAAA,MAAM,EAAE;AACJ,gBAAA,OAAO,EAAE,KAAK;AACjB,aAAA;SACJ,CAAC;QACF,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAEM,eAAe,GAAA;QAClB,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,EAAE,CAAC;;QAGvB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7D,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,IAAG;AACvC,gBAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7B,gBAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7B,gBAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7B,gBAAA,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,GAAG;AACR,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,QAAQ,EAAE;AACN,oBAAA;AACI,wBAAA,eAAe,EAAE,MAAM;AACvB,wBAAA,WAAW,EAAE,WAAW;AACxB,wBAAA,IAAI,EAAE,MAAM;AACf,qBAAA;AACJ,iBAAA;aACJ,CAAC;AACL,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE;AAC7E,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;wBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,wBAAA,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK;wBAC7C,KAAK,EAAE,IAAI,CAAC,KAAK;AACpB,qBAAA,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACjC,SAAA;KACJ;AAED;;AAEG;IACI,OAAO,GAAA;QACV,IAAI,CAAC,eAAe,EAAE,CAAC;;AAEvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;KACxB;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;KACnC;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,eAAe,EAAE,EAAE;SACtB,CAAC;KACL;;+GArLQ,sBAAsB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;wGAAtB,sBAAsB,EAAA,SAAA,EAAA,CAAA,CAAA,oBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;QDxDnC,EAA4J,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAC1J,EASM,CAAA,UAAA,CAAA,CAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEN,EAQM,CAAA,UAAA,CAAA,CAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEN,EAQM,CAAA,UAAA,CAAA,CAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACR,EAAS,CAAA,YAAA,EAAA,CAAA;QAET,EAQc,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;QAzCyE,EAA8B,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA;QAC7G,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA7B,EAA6B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA,IAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAW7B,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhC,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,KAAA,OAAA,CAAA,CAAA;QAUhC,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,KAAA,KAAA,CAAA,CAAA;;uFCkCzB,sBAAsB,EAAA,CAAA;cAJlC,SAAS;2BACI,oBAAoB,EAAA,QAAA,EAAA,45EAAA,EAAA,CAAA;2FAgBd,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAMU,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAKU,iBAAiB,EAAA,CAAA;kBAAhC,KAAK;YAKU,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAMU,SAAS,EAAA,CAAA;kBAAxB,KAAK;YAKU,eAAe,EAAA,CAAA;kBAA9B,KAAK;YAKU,kBAAkB,EAAA,CAAA;kBAAjC,KAAK;YAKU,YAAY,EAAA,CAAA;kBAA3B,KAAK;YAKU,KAAK,EAAA,CAAA;kBAApB,KAAK;YAOU,qBAAqB,EAAA,CAAA;kBAApC,KAAK;YAOU,WAAW,EAAA,CAAA;kBAA1B,KAAK;YAKU,cAAc,EAAA,CAAA;kBAA7B,KAAK;YAEqB,KAAK,EAAA,CAAA;kBAA/B,SAAS;mBAAC,OAAO,CAAA;;;;AC9GhB,MAAO,8BAA+B,SAAQ,YAAY,CAAA;IA+E5D,WAAY,CAAA,QAAkB,EAAU,iBAAoC,EAAA;QACxE,KAAK,CAAC,QAAQ,CAAC,CAAC;QADoB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AAhE5E;;;AAGG;QACa,IAAU,CAAA,UAAA,GAAsB,EAAE,CAAC;AAOnD;;;AAGG;QACa,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AAEjC;;AAEG;QACa,IAAiB,CAAA,iBAAA,GAAgC,EAAE,CAAC;AAqCnD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAQ,CAAC;QAIpD,IAAiB,CAAA,iBAAA,GAAwB,EAAE,CAAC;AAK/C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;AACrB,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC;KAC5C;AAlFD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,gCAAgC,CAAC;KAC3C;AAyDD;;;AAGG;;AAEH,IAAA,IAAqB,eAAe,GAAA;QAChC,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IAeM,QAAQ,GAAA;QACX,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAEO,eAAe,GAAA;QAEnB,IAAI,UAAU,GAAG,CAAC,CAAC;;QAGnB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7D,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;;AAG3D,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;AACnD,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE;AAC3D,gBAAA,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;AACzG,aAAA;AACJ,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;;AAG3C,QAAA,MAAM,YAAY,GAAG,UAAU,GAAG,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAClE,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAElD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE;AACpD,YAAA,MAAM,IAAI,KAAK,CACX,uHAAuH,CAAC,CAAC;AAChI,SAAA;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAEnD,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC5B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1F,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBACxB,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK;gBACtC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK;AACtC,gBAAA,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;AACzC,gBAAA,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AACrB,gBAAA,UAAU,EAAE,IAAI;AACnB,aAAA,CAAC,CAAC;AACN,SAAA;;AAGD,QAAA,MAAM,YAAY,GAAG,UAAU,GAAG,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAClE,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACxB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI;AACpD,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;AACxC,YAAA,KAAK,EAAE,8BAA8B,CAAC,QAAQ,CAAC,SAAS;AACxD,YAAA,UAAU,EAAE,KAAK;AACpB,SAAA,CAAC,CAAC;KACN;AAED;;AAEG;IACI,aAAa,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC9B;AAED;;AAEG;IACI,OAAO,GAAA;QACV,IAAI,CAAC,eAAe,EAAE,CAAC;;AAGvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;KACxB;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;KACnC;;+HApKQ,8BAA8B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;gHAA9B,8BAA8B,EAAA,SAAA,EAAA,CAAA,CAAA,6BAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,oCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;QCtB3C,EAC2L,CAAA,SAAA,CAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;;QADhK,EAAyB,CAAA,UAAA,CAAA,YAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA,YAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,CAAA,YAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA,WAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA,mBAAA,EAAA,GAAA,CAAA,iBAAA,CAAA,wCAAA,CAAA,oBAAA,EAAA,GAAA,CAAA,kBAAA,CAAA,CAAA,cAAA,EAAA,GAAA,CAAA,YAAA,CAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,uBAAA,EAAA,GAAA,CAAA,qBAAA,CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;;uFDsBvC,8BAA8B,EAAA,CAAA;cAJ1C,SAAS;2BACI,6BAA6B,EAAA,QAAA,EAAA,2cAAA,EAAA,CAAA;2FAgBvB,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAMU,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAKU,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAMU,SAAS,EAAA,CAAA;kBAAxB,KAAK;YAKU,iBAAiB,EAAA,CAAA;kBAAhC,KAAK;YAKU,kBAAkB,EAAA,CAAA;kBAAjC,KAAK;YAKU,YAAY,EAAA,CAAA;kBAA3B,KAAK;YAKU,KAAK,EAAA,CAAA;kBAApB,KAAK;YAOU,qBAAqB,EAAA,CAAA;kBAApC,KAAK;YAKU,cAAc,EAAA,CAAA;kBAA7B,KAAK;YAOe,eAAe,EAAA,CAAA;kBAAnC,MAAM;YAGU,cAAc,EAAA,CAAA;kBAA9B,MAAM;YACoB,KAAK,EAAA,CAAA;kBAA/B,SAAS;mBAAC,OAAO,CAAA;;;MEzET,YAAY,CAAA;;2FAAZ,YAAY,GAAA,CAAA,EAAA,CAAA;6FAAZ,YAAY,EAAA,CAAA,CAAA;iGALjB,YAAY;QACZ,aAAa;QACb,UAAU,CAAA,EAAA,CAAA,CAAA;uFAGL,YAAY,EAAA,CAAA;cAfxB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,eAAe;oBACf,oBAAoB;AACvB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,eAAe;oBACf,oBAAoB;AACvB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,aAAa;oBACb,UAAU;AACb,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,YAAY,mBATjB,eAAe;AACf,QAAA,oBAAoB,aAGpB,YAAY;QACZ,aAAa;AACb,QAAA,UAAU,aAVV,eAAe;QACf,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCcf,mBAAmB,CAAA;;yGAAnB,mBAAmB,GAAA,CAAA,EAAA,CAAA;oGAAnB,mBAAmB,EAAA,CAAA,CAAA;wGANxB,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,aAAa,CAAA,EAAA,CAAA,CAAA;uFAGR,mBAAmB,EAAA,CAAA;cAhB/B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,sBAAsB;oBACtB,8BAA8B;AACjC,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,sBAAsB;oBACtB,8BAA8B;AACjC,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,WAAW;oBACX,YAAY;oBACZ,aAAa;AAChB,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,mBAAmB,mBAVxB,sBAAsB;AACtB,QAAA,8BAA8B,aAG9B,YAAY;QACZ,WAAW;QACX,YAAY;AACZ,QAAA,aAAa,aAXb,sBAAsB;QACtB,8BAA8B,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;ICXtC,EAAqG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACjG,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;IAC7B,EAAM,CAAA,YAAA,EAAA,CAAA;;;MCIO,mBAAmB,CAAA;AAJhC,IAAA,WAAA,GAAA;QAOW,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAezB,KAAA;AAbG;;AAEG;AACH,IAAA,IAAkC,MAAM,GAAA;QACpC,OAAO,IAAI,CAAC,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;KACzC;AAED;;AAEG;AACH,IAAA,IAAiC,UAAU,GAAA;AACvC,QAAA,OAAO,MAAM,CAAC;KACjB;;yGAjBQ,mBAAmB,GAAA,CAAA,EAAA,CAAA;qGAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,iBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,gCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;QDNhC,EAEM,CAAA,UAAA,CAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;QAFA,EAAY,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;;uFCML,mBAAmB,EAAA,CAAA;cAJ/B,SAAS;2BACI,iBAAiB,EAAA,QAAA,EAAA,sJAAA,EAAA,CAAA;gBAKpB,MAAM,EAAA,CAAA;kBADZ,KAAK;YAO4B,MAAM,EAAA,CAAA;kBAAvC,WAAW;mBAAC,eAAe,CAAA;YAOK,UAAU,EAAA,CAAA;kBAA1C,WAAW;mBAAC,cAAc,CAAA;;;;;ACZzB,MAAO,oBAAqB,SAAQ,iBAAiB,CAAA;AAkBvD;;;AAGG;IACH,WAAY,CAAA,QAAkB,EAAU,UAAsB,EAAA;QAC1D,KAAK,CAAC,QAAQ,CAAC,CAAC;QADoB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QARvD,IAAW,CAAA,WAAA,GAAa,EAAE,CAAC;KAUjC;AAvBD;;AAED;AACC,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,sBAAsB,CAAC;KACjC;IAoBM,kBAAkB,GAAA;QACrB,IAAI,CAAC,KAAK,EAAE,CAAC;KAChB;AAED;;AAEG;IACI,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,gFAAA,CAAkF,CAAC,CAAC;AACvG,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACnC;AAED;;;AAGG;AACK,IAAA,UAAU,CAAC,aAAsB,EAAA;QACrC,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,aAAa,EAAE;gBACf,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACjD,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC1B,SAAA;KACJ;AAED;;;AAGG;AACK,IAAA,IAAI,CAAC,EAAU,EAAA;AACnB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,EAAE,CAAA,CAAA,CAAG,CAAC,CAAC;AACpE,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;AAGG;AACI,IAAA,QAAQ,CAAC,EAAU,EAAA;AACtB,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC;;AAE9C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;;QAEtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;AAEhC,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;;AAE9B,QAAA,IAAI,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE;AACzB,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACzB,SAAA;AAED,QAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;KAC3C;AAED;;AAEG;IACI,IAAI,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AACpD,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sCAAA,CAAwC,CAAC,CAAC;AAC7D,SAAA;;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;;AAExC,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;;AAEvB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAC3B;AAED;;;AAGG;AAEK,IAAA,kBAAkB,CAAC,eAAwB,EAAA;QAC/C,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;AACrD,YAAA,MAAM,IAAI,GAAG,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACxE,YAAA,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,aAAA;AACJ,SAAA;KACJ;;2GAjHQ,oBAAoB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;sGAApB,oBAAoB,EAAA,SAAA,EAAA,CAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,mCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;ACTjC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAsF,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAE9E,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;AAC7B,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;AD+GN,UAAA,CAAA;AAAC,IAAA3C,UAAQ,EAAE;;qCACiC,OAAO,CAAA,CAAA;;AAOlD,CAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,IAAA,CAAA,CAAA;uFAjHQ,oBAAoB,EAAA,CAAA;cAJhC,SAAS;2BACI,kBAAkB,EAAA,QAAA,EAAA,yNAAA,EAAA,CAAA;oFAYrB,KAAK,EAAA,CAAA;kBADX,eAAe;mBAAC,MAAM,CAAA;YAIhB,WAAW,EAAA,CAAA;kBADjB,KAAK;YA+FE,kBAAkB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MEjGjB,iBAAiB,CAAA;;qGAAjB,iBAAiB,GAAA,CAAA,EAAA,CAAA;kGAAjB,iBAAiB,EAAA,CAAA,CAAA;sGAHtB,YAAY,CAAA,EAAA,CAAA,CAAA;uFAGP,iBAAiB,EAAA,CAAA;cAb7B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,oBAAoB;oBACpB,mBAAmB;AACtB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,oBAAoB;oBACpB,mBAAmB;AACtB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;AACf,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,iBAAiB,mBAPtB,oBAAoB;QACpB,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAGnB,YAAY,CAAA,EAAA,OAAA,EAAA,CARZ,oBAAoB;QACpB,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;ACG3B;;AAEG;AACG,MAAO,2BAA4B,SAAQ,iBAAiB,CAAA;AAwD9D,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAfb,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;KAgB1B;AAxDD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,6BAA6B,CAAC;KACxC;AAuCM,IAAA,MAAM,CAAC,KAAe,EAAA;QACzB,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;gBAC1C,OAAO,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;AACrC,SAAA;KACJ;IAMM,QAAQ,GAAA;;AAEX,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACpB,SAAA;QACD,IAAI,CAAC,OAAO,GAAiB;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;YACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;AAC7C,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK;;AAGlC,YAAA,mBAAmB,EAAE,KAAK;AAC1B,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,MAAM,EAAE;AACJ,gBAAA,KAAK,EAAE,CAAC;AACJ,wBAAA,OAAO,EAAE,IAAI;;AAEb,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,KAAK,EAAE;;AAEH,4BAAA,aAAa,EAAE,CAAC;;AAEhB,4BAAA,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;AACvB,yBAAA;qBACJ,CAAC;AACF,gBAAA,KAAK,EAAE,CAAC;AACJ,wBAAA,OAAO,EAAE,KAAK;qBACjB,CAAC;AACL,aAAA;SACJ,CAAC;KAEL;IAEM,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KAC3B;;yHA/FQ,2BAA2B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;6GAA3B,2BAA2B,EAAA,SAAA,EAAA,CAAA,CAAA,0BAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;QCdxC,EAA2J,CAAA,SAAA,CAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;;AAA9C,QAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,IAAA,CAAa,CAAA,SAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;;uFDc7G,2BAA2B,EAAA,CAAA;cARvC,SAAS;2BACI,0BAA0B,EAAA,QAAA,EAAA,uKAAA,EAAA,MAAA,EAAA,CAAA,sMAAA,CAAA,EAAA,CAAA;2DAmBpB,MAAM,EAAA,CAAA;kBAArB,KAAK;YAKU,QAAQ,EAAA,CAAA;kBAAvB,KAAK;YAKU,SAAS,EAAA,CAAA;kBAAxB,KAAK;YAQU,IAAI,EAAA,CAAA;kBAAnB,KAAK;YAKU,MAAM,EAAA,CAAA;kBAArB,KAAK;YASkC,kBAAkB,EAAA,CAAA;kBAAzD,SAAS;mBAAC,oBAAoB,CAAA;;;;IE1DnC,EAAiE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAgB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAAtB,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,iBAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA;;;;IAG/E,EAAgJ,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAAvE,EAAa,CAAA,UAAA,CAAA,WAAA,EAAA,SAAA,yEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,2BAAoB,CAAA,CAAA,EAAA,CAAC,yKAAe,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,kBAAA,EAAoB,CAAA,CAAnC,EAAA,CAAA,CAAA;IAAqC,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAFzJ,EAAuD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACrD,EACA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAuJ,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACzJ,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAFJ,EACA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADA,EACA,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,YAAA,EAAA,GAAA,CAAA,CAAA;IAAO,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,YAAA,CAAA,CAAA;;;IAO3B,EAAqD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAiB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAAvB,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;;;IACtE,EAAsD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAAiB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAAvB,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,iBAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA;;ACNvE;;;;AAIG;AAMG,MAAO,yBAA0B,SAAQ,iBAAiB,CAAA;AAoF5D,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAhBH,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAQ,CAAC;AAapD,QAAA,IAAA,CAAA,OAAO,GAAY,OAAO,CAAC,UAAU,EAAW,CAAC;KAIvD;AApFD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,2BAA2B,CAAC;KACtC;AAuDD;;AAEG;;AAEH,IAAA,IAAqB,eAAe,GAAA;QAChC,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;AAoBM,IAAA,QAAQ,CAAC,eAAA,GAAmC,GAAG,EAAE,eAAgC,GAAG,EAAA;QACvF,MAAM,QAAQ,GAAG,SAAS,CAAC;QAC3B,MAAM,WAAW,GAAG,SAAS,CAAC;QAC9B,MAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,QAAA,IAAI,eAAe,KAAK,UAAU,IAAI,YAAY,KAAK,UAAU,EAAE;AAC/D,YAAA,OAAO,UAAU,CAAC;AACrB,SAAA;;QAED,IAAI,IAAI,CAAC,eAAe,IAAI,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE;AAC7D,YAAA,OAAO,QAAQ,CAAC;AACnB,SAAA;QAED,IAAI,IAAI,CAAC,eAAe,IAAI,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,EAAE;AAChE,YAAA,OAAO,WAAW,CAAC;AACtB,SAAA;AAED,QAAA,OAAO,UAAU,CAAC;KACrB;IAEO,WAAW,GAAA;QACf,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;QAC3D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAC3F,QAAA,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,CAAC;;AAGpF,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACtD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAEzD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3G,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CACnF,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,sBAAsB,CAC9B,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxG,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KACtE;IAEM,WAAW,GAAA;QACd,IAAI,CAAC,WAAW,EAAE,CAAC;KACtB;IAEM,kBAAkB,GAAA;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC9B;IAEM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACjE,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAClD;AAED;;;AAGG;AACI,IAAA,MAAM,CAAC,KAAiC,EAAA;AAC3C,QAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACrC;AAED;;;AAGG;AACK,IAAA,qBAAqB,CAAC,KAAiC,EAAA;QAC3D,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;QAC7D,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;AAC9F,QAAA,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,CAAC;;AAGpF,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;AACvD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;AACvD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;QAE1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3G,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CACnF,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,sBAAsB,CAC9B,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxG,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KACtE;;qHA5KQ,yBAAyB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;2GAAzB,yBAAyB,EAAA,SAAA,EAAA,CAAA,CAAA,wBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,OAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,cAAA,CAAA,EAAA,CAAA,OAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,WAAA,EAAA,YAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,CAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,uBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,kCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDftC,EAAuF,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACvF,EAGM,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEN,EAAgF,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAC9E,EAAyJ,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAC3J,EAAM,CAAA,YAAA,EAAA,CAAA;QAEN,EAA4E,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAC5E,EAA6E,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;QAXvE,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA;QAChB,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA;QAK6B,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA5B,EAA4B,CAAA,WAAA,CAAA,QAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;QACnD,EAAyC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAzC,QAAA,EAAA,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,oBAAA,CAAyC,qCAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,YAAA,CAAA,CAAA;QAG/D,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QACf,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;;uFCIR,yBAAyB,EAAA,CAAA;cALrC,SAAS;2BACI,wBAAwB,EAAA,QAAA,EAAA,iyBAAA,EAAA,MAAA,EAAA,CAAA,sMAAA,CAAA,EAAA,CAAA;2DAelB,aAAa,EAAA,CAAA;kBAA5B,KAAK;YAKU,MAAM,EAAA,CAAA;kBAArB,KAAK;YAKU,YAAY,EAAA,CAAA;kBAA3B,KAAK;YAKU,aAAa,EAAA,CAAA;kBAA5B,KAAK;YAKU,SAAS,EAAA,CAAA;kBAAxB,KAAK;YAMU,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAMU,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAKU,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAKU,SAAS,EAAA,CAAA;kBAAxB,KAAK;YAKU,SAAS,EAAA,CAAA;kBAAxB,KAAK;YAEU,YAAY,EAAA,CAAA;kBAA3B,KAAK;YAMe,eAAe,EAAA,CAAA;kBAAnC,MAAM;YAGU,cAAc,EAAA,CAAA;kBAA9B,MAAM;;;AC5EL,MAAO,mBAAoB,SAAQ,YAAY,CAAA;AAwBjD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AANpB;;AAEG;QACa,IAAI,CAAA,IAAA,GAAoB,EAAE,CAAC;KAI1C;AAxBD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,qBAAqB,CAAC;KAChC;IAqBM,QAAQ,GAAA;QACX,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;IAEM,UAAU,GAAA;AACb,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC;AAEvD,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,gCAAgC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACvF,SAAA;KACJ;AAEO,IAAA,QAAQ,CAAC,GAAkB,EAAA;QAC/B,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;KAClE;AAEM,IAAA,QAAQ,CAAC,GAAkB,EAAA;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACjC,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC/B;AAEM,IAAA,QAAQ,CAAC,GAAkB,EAAA;;QAE9B,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC5C,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,SAAA;;QAGD,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;AAC5B,YAAA,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC;AAC5B,SAAA;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAElD,IAAI,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;;AAEpD,YAAA,MAAM,IAAI,KAAK,CAAC,sLAAsL,CAAC,CAAC;AAC3M,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,SAAA;KACJ;IAEM,SAAS,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;;AAGhD,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;YAChB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,SAAA;KACJ;IAEM,SAAS,CAAC,KAAa,EAAE,YAAsB,EAAA;QAClD,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAI;AAChC,YAAA,MAAM,cAAc,GAAG,YAAY,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7D,YAAA,IAAI,QAAQ,GAAG,KAAK,IAAI,cAAc,EAAE;gBACpC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC;AACnB,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAChC;AAEG;;;AAGD;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,wBAAwB;AAC3B,SAAA,CAAC,CAAC;KACN;;yGA3GQ,mBAAmB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;qGAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,iBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,4BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAAnB,mBAAmB,EAAA,CAAA;cAJ/B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,iBAAiB;AAC3B,gBAAA,QAAQ,EAAE,EAAE;AACf,aAAA,CAAA;2DAamB,GAAG,EAAA,CAAA;kBAAlB,KAAK;YAKU,KAAK,EAAA,CAAA;kBAApB,KAAK;YAKU,IAAI,EAAA,CAAA;kBAAnB,KAAK;;;;AC5BR,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA8E,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACS,EAAc,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;IAApB,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAd,EAAc,CAAA,iBAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA;;;IAO/F,EAG+E,CAAA,SAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA;;;;;;IAA/C,EAA4B,CAAA,WAAA,CAAA,QAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;AAHvB,IAAA,EAAA,CAAA,UAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,iBAAA,CAAuC,iDAAA,CAAA,qBAAA,EAAA,MAAA,CAAA,mBAAA,CAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,6CAAA,CAAA,KAAA,EAAA,MAAA,CAAA,CAAA,OAAA,EAAA,IAAA,CAAA,qBAAA,CAAA,OAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;;IAD9E,EAAuD,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACrD,EAG+E,CAAA,UAAA,CAAA,CAAA,EAAA,4EAAA,EAAA,CAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;IACjF,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAJK,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;;IAUlC,EAG+E,CAAA,SAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA;;;;;;IAA/C,EAA4B,CAAA,WAAA,CAAA,QAAA,EAAA,OAAA,CAAA,WAAA,CAAA,CAAA;AAHxB,IAAA,EAAA,CAAA,UAAA,CAAA,mBAAA,EAAA,OAAA,CAAA,iBAAA,CAAuC,kDAAA,CAAA,qBAAA,EAAA,OAAA,CAAA,mBAAA,CAAA,CAAA,mBAAA,EAAA,OAAA,CAAA,iBAAA,CAAA,8CAAA,CAAA,KAAA,EAAA,MAAA,CAAA,CAAA,OAAA,EAAA,IAAA,CAAA,sBAAA,CAAA,OAAA,EAAA,OAAA,CAAA,KAAA,CAAA,CAAA;;;IAD7E,EAAuD,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACrD,EAG+E,CAAA,UAAA,CAAA,CAAA,EAAA,4EAAA,EAAA,CAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;IACjF,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAJK,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;;IAenC,EAA6B,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IAC3B,EAGiD,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;IACnD,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAJQ,EAAuC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAvC,IAAA,EAAA,CAAA,UAAA,CAAA,mBAAA,EAAA,OAAA,CAAA,iBAAA,CAAuC,kDAAA,CAAA,qBAAA,EAAA,OAAA,CAAA,mBAAA,CAAA,CAAA,mBAAA,EAAA,OAAA,CAAA,iBAAA,CAAA,CAAA,kBAAA,EAAA,OAAA,CAAA,gBAAA,CAAA,CAAA,YAAA,EAAA,OAAA,CAAA,eAAA,CAAA,4BAAA,CAAA,yBAAA,EAAA,KAAA,CAAA,CAAA;;;AARzD,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAiD,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAE7C,EAG6F,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;IAE7F,EAKM,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AACR,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;IAXuC,EAAuC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAvC,IAAA,EAAA,CAAA,UAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,iBAAA,CAAuC,iDAAA,CAAA,qBAAA,EAAA,MAAA,CAAA,mBAAA,CAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,6CAAA,CAAA,YAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA,OAAA,EAAA,MAAA,CAAA,KAAA,CAAA,4BAAA,CAAA,yBAAA,EAAA,KAAA,CAAA,CAAA;IAK5E,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,eAAA,CAAA,CAAA;;AC7BjC;;;;;;;;;;;;;;;AAeG;AAKG,MAAO,kCAAmC,SAAQ,YAAY,CAAA;AAkEhE,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AApDpB;;AAEG;QACa,IAAI,CAAA,IAAA,GAAoB,EAAE,CAAC;AAE3C;;;AAGG;QACa,IAAU,CAAA,UAAA,GAAK,IAAI,CAAC;AAEpC;;AAEG;QACa,IAAU,CAAA,UAAA,GAAuB,EAAE,CAAC;AAkBpD;;AAEG;QACa,IAAS,CAAA,SAAA,GAAK,IAAI,CAAC;AAc5B,QAAA,IAAA,CAAA,OAAO,GAAY,OAAO,CAAC,UAAU,EAAW,CAAC;KAIvD;AAjED;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,oCAAoC,CAAC;KAC/C;AA8DD;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;KACvB;AAED;;;AAGG;AACI,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,OAAO,CAAC,gBAAgB,EAAE;AAC1B,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,SAAA;AAAM,aAAA,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE;YAClD,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,SAAA;KACJ;AAED;;AAEG;IACI,iBAAiB,GAAA;AACpB,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AAClG,YAAA,MAAM,gBAAgB,GAAG;gBACrB,YAAY,EAAE,IAAI,CAAC,gBAAgB;gBACnC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,yBAAyB,CAAC,UAAU;AAC7E,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,OAAO,EAAE,IAAI;aAChB,CAAC;YACF,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,gBAAA,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAClD,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACjD,SAAA;KACJ;IAEO,YAAY,GAAA;QAChB,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACtD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACjE,YAAA,WAAW,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YAElD,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,gBAAA,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC5B,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,oBAAA,SAAS,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;AACvC,iBAAA;AACJ,aAAA;iBAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AACzB,gBAAA,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;AAChC,aAAA;AACD,YAAA,SAAS,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,yBAAyB,CAAC,IAAI,CAAC,eAAe,CAAC;AACpG,YAAA,WAAW,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACrD,SAAA;KACJ;;uIAlIQ,kCAAkC,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oHAAlC,kCAAkC,EAAA,SAAA,EAAA,CAAA,CAAA,kCAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,+BAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,8BAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,yBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,2CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QD1B/C,EAA4C,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;QAE1C,EAEM,CAAA,UAAA,CAAA,CAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AAEN,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAC+B,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAE3B,EAKe,CAAA,UAAA,CAAA,CAAA,EAAA,0DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACjB,EAAM,CAAA,YAAA,EAAA,CAAA;QAGN,EAAkH,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAChH,EAKe,CAAA,UAAA,CAAA,CAAA,EAAA,0DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;AACjB,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;QAGR,EAcM,CAAA,UAAA,CAAA,CAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAER,EAAS,CAAA,YAAA,EAAA,CAAA;;QA1CD,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA7B,EAA6B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA,IAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAKjC,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA5B,EAA4B,CAAA,WAAA,CAAA,QAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;QAEI,EAAS,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAT,EAAS,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA;QAUT,EAAS,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAT,EAAS,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA;QASrC,EAAyC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAzC,EAAyC,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA,CAAA,MAAA,GAAA,CAAA,IAAA,GAAA,CAAA,UAAA,CAAA,CAAA;;uFCFpC,kCAAkC,EAAA,CAAA;cAJ9C,SAAS;2BACI,kCAAkC,EAAA,QAAA,EAAA,s5FAAA,EAAA,CAAA;2DAgB5B,MAAM,EAAA,CAAA;kBAArB,KAAK;YAKU,IAAI,EAAA,CAAA;kBAAnB,KAAK;YAMU,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAKU,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAMU,gBAAgB,EAAA,CAAA;kBAA/B,KAAK;YAKU,gBAAgB,EAAA,CAAA;kBAA/B,KAAK;YAKU,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAKU,SAAS,EAAA,CAAA;kBAAxB,KAAK;YAMU,eAAe,EAAA,CAAA;kBAA9B,KAAK;YAKU,WAAW,EAAA,CAAA;kBAA1B,KAAK;;;MCzDG,wBAAwB,CAAA;;mHAAxB,wBAAwB,GAAA,CAAA,EAAA,CAAA;yGAAxB,wBAAwB,EAAA,CAAA,CAAA;6GAN7B,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,aAAa,CAAA,EAAA,CAAA,CAAA;uFAGR,wBAAwB,EAAA,CAAA;cApBpC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,2BAA2B;oBAC3B,yBAAyB;oBACzB,mBAAmB;oBACnB,kCAAkC;AACrC,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,2BAA2B;oBAC3B,yBAAyB;oBACzB,mBAAmB;oBACnB,kCAAkC;AACrC,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,WAAW;oBACX,YAAY;oBACZ,aAAa;AAChB,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,wBAAwB,mBAZ7B,2BAA2B;QAC3B,yBAAyB;QACzB,mBAAmB;AACnB,QAAA,kCAAkC,aAGlC,YAAY;QACZ,WAAW;QACX,YAAY;AACZ,QAAA,aAAa,aAfb,2BAA2B;QAC3B,yBAAyB;QACzB,mBAAmB;QACnB,kCAAkC,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;;ICdxC,EAAiE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IAAC,EAAyB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAAhE,EAA+B,CAAA,WAAA,CAAA,aAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAAE,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,CAAA,CAAA;;;IAE3F,EAGa,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;;;IAFX,EAAyG,CAAA,UAAA,CAAA,YAAA,EAAA,CAAA,MAAA,CAAA,eAAA,IAAA,MAAA,CAAA,eAAA,CAAA,MAAA,KAAA,CAAA,GAAA,MAAA,CAAA,mBAAA,GAAA,MAAA,CAAA,eAAA,CAAA,CAAA;IACzG,EAAuC,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA;;;IAL3C,EAAkD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAChD,EAAiG,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAEjG,EAGa,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;AAEb,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA2D,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAEvD,EAGuC,CAAA,SAAA,CAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AACvC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAmD,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACC,EAAiC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;IACzF,EAAmD,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAiC,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,EAAA,CAAA;AAG9F,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CACqI,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAEjI,EAAiC,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;IACzC,EAAgF,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC9E,EAAiC,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,EAAA,EAAA,EAAA,CAAA;;;IAvBvC,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA;IAElB,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IASZ,EAA0C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA1C,IAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,MAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAA0C,wCAAA,CAAA,SAAA,EAAA,MAAA,CAAA,YAAA,CAAA,CAAA;IAGH,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjC,EAAiC,CAAA,iBAAA,CAAA,MAAA,CAAA,aAAA,CAAA,aAAA,CAAA,CAAA;IAChC,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjC,EAAiC,CAAA,iBAAA,CAAA,MAAA,CAAA,aAAA,CAAA,aAAA,CAAA,CAAA;IAMpF,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjC,EAAiC,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,aAAA,CAAA,aAAA,EAAA,EAAA,CAAA,CAAA;IAEjC,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjC,EAAiC,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,aAAA,CAAA,aAAA,EAAA,EAAA,CAAA,CAAA;;IChB7B,cAiBX;AAjBD,CAAA,UAAY,aAAa,EAAA;AACrB;;AAEG;AACH,IAAA,aAAA,CAAA,aAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AAER;;AAEG;AACH,IAAA,aAAA,CAAA,aAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AAEX;;;;AAIG;AACH,IAAA,aAAA,CAAA,aAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AAClB,CAAC,EAjBW,aAAa,KAAb,aAAa,GAiBxB,EAAA,CAAA,CAAA,CAAA;AA6BK,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AAsDrD;;;;AAIG;IACH,WAAY,CAAA,QAAkB,EAAU,iBAAoC,EAAA;QACxE,KAAK,CAAC,QAAQ,CAAC,CAAC;QADoB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;;QAvC3D,IAAgB,CAAA,gBAAA,GAAG,yBAAyB,CAAC;QAC7C,IAAsB,CAAA,sBAAA,GAAG,yBAAyB,CAAC;;QAGnD,IAAkB,CAAA,kBAAA,GAAG,wBAAwB,CAAC;QAC9C,IAAwB,CAAA,wBAAA,GAAG,wBAAwB,CAAC;;QAGpD,IAAiB,CAAA,iBAAA,GAAG,yBAAyB,CAAC;QAC9C,IAAuB,CAAA,uBAAA,GAAG,yBAAyB,CAAC;AAEpD,QAAA,IAAA,CAAA,eAAe,GAAoB;AAChD,YAAA;gBACI,WAAW,EAAE,IAAI,CAAC,gBAAgB;gBAClC,eAAe,EAAE,IAAI,CAAC,sBAAsB;gBAC5C,yBAAyB,EAAE,IAAI,CAAC,gBAAgB;AACnD,aAAA;AACD,YAAA;gBACI,WAAW,EAAE,IAAI,CAAC,kBAAkB;gBACpC,eAAe,EAAE,IAAI,CAAC,wBAAwB;gBAC9C,yBAAyB,EAAE,IAAI,CAAC,kBAAkB;AACrD,aAAA;AACD,YAAA;gBACI,WAAW,EAAE,IAAI,CAAC,iBAAiB;gBACnC,eAAe,EAAE,IAAI,CAAC,uBAAuB;gBAC7C,yBAAyB,EAAE,IAAI,CAAC,iBAAiB;AACpD,aAAA;SACJ,CAAC;KAcD;AA5DD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,oBAAoB,CAAC;KAC/B;AA2CD,IAAA,IAAW,UAAU,GAAA;QACjB,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,mBAAmB,CAAC;QACpE,OAAO,CAAC,EAAE,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;KAC9C;AAWD;;AAEG;IACI,QAAQ,GAAA;QACX,IAAI,CAAC,iBAAiB,EAAE,CAAC;;AAEzB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,EAAE,EAAE,OAAO,CAAC,CAAC;KAC9F;IAEO,iBAAiB,GAAA;QACrB,OAAO;AACH,YAAA,QAAQ,EAAE;AACN,gBAAA,SAAS,EAAE;AACP,oBAAA,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI,KAAI;wBACzB,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;qBAClD;AACJ,iBAAA;AACJ,aAAA;AACD,YAAA,MAAM,EAAE;AACJ,gBAAA,KAAK,EAAE,CAAC;AACJ,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,KAAK,EAAE;AACH,4BAAA,OAAO,EAAE,KAAK;AACd,4BAAA,GAAG,EAAE,CAAC;AACN,4BAAA,GAAG,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,SAAS;AAClE,4BAAA,aAAa,EAAE,CAAC;AACnB,yBAAA;qBACJ,CAAC;AACF,gBAAA,KAAK,EAAE,CAAC;AACJ,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,KAAK,EAAE;AACH,4BAAA,GAAG,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,SAAS;AACjE,4BAAA,GAAG,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,SAAS;AACpE,yBAAA;AACD,wBAAA,SAAS,EAAE;AACP,4BAAA,OAAO,EAAE,KAAK;AACjB,yBAAA;AACJ,qBAAA;AACA,iBAAA;AACJ,aAAA;AACD,YAAA,SAAS,EAAE;AACP,gBAAA,QAAQ,EAAE,CAAC;AACd,aAAA;AACD,YAAA,KAAK,EAAE;AACH,gBAAA,OAAO,EAAE,KAAK;AACjB,aAAA;AACD,YAAA,MAAM,EAAE;AACJ,gBAAA,OAAO,EAAE,KAAK;AACjB,aAAA;SACJ,CAAC;KACL;AAED;;AAEG;IACI,eAAe,GAAA;QAClB,IAAI,CAAC,OAAO,EAAE,CAAC;AACf,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;KAC1C;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;KACnC;;IAGO,kBAAkB,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC/G,OAAO;AACV,SAAA;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC;QACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AACnD,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YAC1D,OAAO,CAAC,eAAe,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,eAAe,CAAC;AAC1G,YAAA,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;YACxB,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC;AACtF,YAAA,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;AACxB,YAAA,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;AAC3B,YAAA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxB,YAAA,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;AAC3B,SAAA;KACJ;AAED;;AAEG;IACI,kBAAkB,GAAA;AACrB,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC;AACvD,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACzF,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,EAAE,CAAC;AACrD,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC1B,gBAAA,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB,GAAG,GAAG,GAAG,SAAS;gBACpE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC5C,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1H,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACtB,oBAAA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU;AACpC,oBAAA,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,sBAAsB;oBACvD,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC5C,iBAAA,CAAC,CAAC;AACN,aAAA;YACD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3H,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACtB,oBAAA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW;AACrC,oBAAA,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,uBAAuB;oBACxD,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC5C,iBAAA,CAAC,CAAC;AACN,aAAA;YACD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1H,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACtB,oBAAA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU;AACpC,oBAAA,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,sBAAsB;oBACvD,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC5C,iBAAA,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;IACK,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,OAAO;AACV,SAAA;QAED,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAG;;;;YAIpD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;YAElG,IAAI,UAAU,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE;AAC/G,gBAAA,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;AAC7G,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;AACI,IAAA,aAAa,CAAC,IAAmB,EAAA;AACpC,QAAA,OAAO,IAAI,KAAK,aAAa,CAAC,OAAO,IAAI,IAAI,KAAK,aAAa,CAAC,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;KACnG;AAED;;;;AAIG;IACK,eAAe,CAAC,WAAW,EAAE,IAAI,EAAA;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAClD,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,aAAa,CAAC,UAAU,EAAE;;AAEtD,YAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB;AACzB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;AAClC,kBAAE,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC;AACtE,YAAA,KAAK,GAAG,aAAa,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,SAAA;aAAM,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,aAAa,CAAC,OAAO,EAAE;AAC1D,YAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB;AACzB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;AAClC,kBAAE,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC;AACtE,YAAA,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;AACvB,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC;AACvD,YAAA,KAAK,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC;AAClI,SAAA;QAED,OAAO,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAC/F;AAED;;AAEG;IACI,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5D,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE;YACzC,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,SAAS;AAC3F,mBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ;AAC3E,mBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;AAEnF,YAAA,IAAI,aAAa,EAAE;AACf,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;AAC3E,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC1E,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAE1E,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,oBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;AAC3B,iBAAA;AACJ,aAAA;AACJ,SAAA;QAED,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACxB,SAAA;KACJ;;uGArRQ,kBAAkB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oGAAlB,kBAAkB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,wBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;AAFhB,KAAA,EAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA,CAAC,QAAQ,CAAC,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,WAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,YAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,2BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDpDzB,EA4BM,CAAA,UAAA,CAAA,CAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;QA5BA,EAAmB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,aAAA,CAAA,CAAA;;uFCsDZ,kBAAkB,EAAA,CAAA;cAL9B,SAAS;2BACI,gBAAgB,EAAA,SAAA,EAEf,CAAC,QAAQ,CAAC,EAAA,QAAA,EAAA,mjDAAA,EAAA,CAAA;2FASU,KAAK,EAAA,CAAA;kBAAnC,SAAS;mBAAC,WAAW,CAAA;YAIN,gBAAgB,EAAA,CAAA;kBAA/B,KAAK;YACU,aAAa,EAAA,CAAA;kBAA5B,KAAK;YACU,iBAAiB,EAAA,CAAA;kBAAhC,KAAK;YACU,eAAe,EAAA,CAAA;kBAA9B,KAAK;YACU,YAAY,EAAA,CAAA;kBAA3B,KAAK;;;;;ICpER,EAAyD,CAAA,cAAA,CAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,CAAA;IACvD,EAA2B,CAAA,UAAA,CAAA,CAAA,EAAA,gFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,CAAA,CAAA;IAC7B,EAAgB,CAAA,YAAA,EAAA,CAAA;;;IAF2B,EAAa,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,CAAA;;;;IAD1D,EAAgJ,CAAA,cAAA,CAAA,CAAA,EAAA,WAAA,EAAA,CAAA,CAAA,CAAA;IAAxF,EAAmB,CAAA,UAAA,CAAA,iBAAA,EAAA,SAAA,uFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAkB,CAAA,UAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAC5F,EAEgB,CAAA,UAAA,CAAA,CAAA,EAAA,kEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,CAAA,CAAA;IAClB,EAAY,CAAA,YAAA,EAAA,CAAA;;;AAJmF,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,MAAA,CAAA,UAAA,CAAyB,CAAA,eAAA,EAAA,IAAA,CAAA,CAAA;IACvF,EAAU,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAV,EAAU,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;;IAOvC,EACwC,CAAA,SAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,CAAA;;;AADuB,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,YAAA,KAAA,CAAA,GAAA,MAAA,CAAA,SAAA,GAAA,MAAA,CAAA,aAAA,GAAA,CAAA,GAAA,MAAA,CAAA,YAAA,CAA2E,CAAA,SAAA,EAAA,CAAA,CAAA,CAAA;;;IAE1I,EACwC,CAAA,SAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,CAAA;;;AADuB,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,YAAA,KAAA,CAAA,GAAA,MAAA,CAAA,SAAA,GAAA,MAAA,CAAA,aAAA,GAAA,CAAA,GAAA,MAAA,CAAA,YAAA,CAA2E,CAAA,SAAA,EAAA,CAAA,CAAA,CAAA;;;IAE1I,EAAmG,CAAA,SAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,CAAA;;IAAtC,EAAa,CAAA,UAAA,CAAA,SAAA,EAAA,CAAA,CAAA,CAAA;;;IAExE,EAAuH,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;;;IAA/C,EAA0B,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,cAAA,CAAA,CAAA;;;IADpG,EAA4J,CAAA,cAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA;IAC1J,EAAuH,CAAA,UAAA,CAAA,CAAA,EAAA,4EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;IACrH,EAC8G,CAAA,SAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;IAClH,EAAkB,CAAA,YAAA,EAAA,CAAA;;;;;IAJ2E,EAA0B,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IACjG,EAAkD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlD,EAAkD,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,IAAA,MAAA,CAAA,aAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;IACrB,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,UAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,eAAA,CAAA,KAAA,CAAA,CAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,qDAAA,CAAA,eAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;;ACMvF,MAAO,6BAA8B,SAAQ,iBAAiB,CAAA;IAsDhE,WAAY,CAAA,QAAkB,EAAU,iBAAoC,EAAA;QACxE,KAAK,CAAC,QAAQ,CAAC,CAAC;QADoB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QA7C5D,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAGrC;;;;AAIG;QACa,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;AAWjC;;;AAGG;QACa,IAAa,CAAA,aAAA,GAAG,GAAG,CAAC;AAEpC;;;AAGG;QACa,IAAa,CAAA,aAAA,GAAG,GAAG,CAAC;AASnB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAU,CAAC;AAIlD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAC7B,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;AAIrB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;KAC7B;AAvDD,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,+BAA+B,CAAC;KAC1C;AAoCD;;AAEG;;AAEH,IAAA,IAAqB,UAAU,GAAA;QAC3B,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAaM,QAAQ,GAAA;QACX,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;AAG/C,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAE9E,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,gBAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;;AAE5B,oBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACpC,iBAAA;AACJ,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;AAClF,SAAA;KACJ;AAED;;AAEG;AACI,IAAA,UAAU,CAAC,GAAsB,EAAA;AACpC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;AAED;;AAEG;IACI,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AAC1C,SAAA;QACD,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,IAAG;gBACzC,SAAS,CAAC,OAAO,EAAE,CAAC;AACxB,aAAC,CAAC,CAAC;AACN,SAAA;QAED,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE;YAC5E,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClD,SAAA;KACJ;AAED;;AAEG;AACI,IAAA,gBAAgB,CAAC,YAAiB,EAAA;QACrC,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC7C;AAED;;;;AAIG;IACI,YAAY,CAAC,KAAK,EAAE,IAAI,EAAA;QAC3B,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;KACnE;AAED;;AAEG;AACI,IAAA,aAAa,CAAC,YAAiB,EAAA;QAClC,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC;KACxD;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;KACnC;;6HAlIQ,6BAA6B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;+GAA7B,6BAA6B,EAAA,SAAA,EAAA,CAAA,CAAA,6BAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,mCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;uBAMxB,kBAAkB,EAAA,CAAA,CAAA,CAAA;;;;;QD3BpC,EAIY,CAAA,UAAA,CAAA,CAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,CAAA,CAAA;AACZ,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACsD,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAElD,EACwC,CAAA,UAAA,CAAA,CAAA,EAAA,8DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QACxC,EACwC,CAAA,UAAA,CAAA,CAAA,EAAA,8DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QACxC,EAAmG,CAAA,UAAA,CAAA,CAAA,EAAA,8DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QACnG,EAIkB,CAAA,UAAA,CAAA,CAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;AACpB,QAAA,EAAA,CAAA,YAAA,EAAa,EAAA,CAAA;;QAlBH,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;QAMhC,EAAiD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjD,EAAiD,CAAA,WAAA,CAAA,qBAAA,EAAA,GAAA,CAAA,YAAA,GAAA,CAAA,GAAA,IAAA,CAAA,CAAA;QAC0B,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAApC,QAAA,EAAA,CAAA,UAAA,CAAA,qBAAA,EAAA,GAAA,CAAA,YAAA,CAAoC,qBAAA,CAAA,kCAAA,EAAA,IAAA,CAAA,CAAA;QACvF,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,YAAA,IAAA,CAAA,CAAA,CAAA;QAEvB,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,YAAA,IAAA,CAAA,CAAA,CAAA;QAEvB,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,YAAA,IAAA,CAAA,CAAA,CAAA;QACL,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAd,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,SAAA,CAAc,CAAA,cAAA,EAAA,GAAA,CAAA,YAAA,CAAA,CAAA;;uFCQ/C,6BAA6B,EAAA,CAAA;cAJzC,SAAS;2BACI,6BAA6B,EAAA,QAAA,EAAA,s0DAAA,EAAA,CAAA;2FASE,mBAAmB,EAAA,CAAA;kBAA3D,YAAY;mBAAC,kBAAkB,CAAA;YAChB,SAAS,EAAA,CAAA;kBAAxB,KAAK;YACU,OAAO,EAAA,CAAA;kBAAtB,KAAK;YACU,YAAY,EAAA,CAAA;kBAA3B,KAAK;YACU,UAAU,EAAA,CAAA;kBAAzB,KAAK;YAOU,YAAY,EAAA,CAAA;kBAA3B,KAAK;YACU,aAAa,EAAA,CAAA;kBAA5B,KAAK;YACU,cAAc,EAAA,CAAA;kBAA7B,KAAK;YACU,iBAAiB,EAAA,CAAA;kBAAhC,KAAK;YACU,eAAe,EAAA,CAAA;kBAA9B,KAAK;YAKU,iBAAiB,EAAA,CAAA;kBAAhC,KAAK;YAMU,aAAa,EAAA,CAAA;kBAA5B,KAAK;YAMU,aAAa,EAAA,CAAA;kBAA5B,KAAK;YAMe,UAAU,EAAA,CAAA;kBAA9B,MAAM;YAGU,UAAU,EAAA,CAAA;kBAA1B,MAAM;;;MCnCE,eAAe,CAAA;;iGAAf,eAAe,GAAA,CAAA,EAAA,CAAA;gGAAf,eAAe,EAAA,CAAA,CAAA;AAJb,mBAAA,eAAA,CAAA,IAAA,6BAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,SAAA,EAAA;QACP,QAAQ;AACX,KAAA,EAAA,OAAA,EAAA,CAVG,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,kBAAkB;QAClB,YAAY;QACZ,WAAW;QACX,aAAa,CAAA,EAAA,CAAA,CAAA;uFAMR,eAAe,EAAA,CAAA;cAtB3B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,kBAAkB;oBAClB,6BAA6B;AAChC,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,kBAAkB;oBAClB,6BAA6B;AAChC,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,WAAW;oBACX,YAAY;oBACZ,kBAAkB;oBAClB,YAAY;oBACZ,WAAW;oBACX,aAAa;AAChB,iBAAA;AACD,gBAAA,SAAS,EAAE;oBACP,QAAQ;AACX,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,eAAe,mBAhBpB,kBAAkB;AAClB,QAAA,6BAA6B,aAG7B,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,kBAAkB;QAClB,YAAY;QACZ,WAAW;AACX,QAAA,aAAa,aAdb,kBAAkB;QAClB,6BAA6B,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;;;ICTjB,EAA4H,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,CAAA,CAAA;IAAtD,EAAqB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,0HAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,OAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;IAAiC,EAAiB,CAAA,YAAA,EAAA,CAAA;;;AAAvE,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAqB,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;;;;AAC3F,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAAuD,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,CAAA,CAAA;IACG,EAAgC,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,oHAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,kBAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AAAmG,IAAA,EAAA,CAAA,YAAA,EAAiB,EAAA,CAAA;;;IAD7K,EAAqB,CAAA,UAAA,CAAA,UAAA,EAAA,CAAA,MAAA,CAAA,OAAA,CAAA,CAAA;IACI,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAhC,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,kBAAA,CAAgC,kDAAA,CAAA,aAAA,EAAA,MAAA,CAAA,OAAA,CAAA,kBAAA,CAAA,WAAA,CAAA,CAAA;;;IAF1F,EAA6I,CAAA,UAAA,CAAA,CAAA,EAAA,kFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,CAAA,CAAA;IAC7I,EAEW,CAAA,UAAA,CAAA,CAAA,EAAA,4EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAAA,CAAA;;;IAHM,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAC1B,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,aAAA,CAAA,CAAA;;;;IAS/B,EAAmL,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;AAA1G,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,0HAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,UAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAwB,CAAsD,gBAAA,EAAA,SAAA,2HAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA0B,CAAA,kBAAA,CAAA,MAAA,CAAA,CAAA,CAAhF,EAAA,CAAA,CAAA;IAAkF,EAAiB,CAAA,YAAA,EAAA,CAAA;;;AAA3H,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,UAAA,CAAwB,CAAA,OAAA,EAAA,OAAA,CAAA,OAAA,CAAA,UAAA,CAAA,KAAA,CAAA,CAAA;;;;IAFjG,EAAmK,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;IAAvH,EAAsB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,yGAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,QAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;IAAiG,EAAiB,CAAA,YAAA,EAAA,CAAA;IACpL,EAAuK,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;IAAvH,EAAsB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,yGAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,QAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;IAAiG,EAAiB,CAAA,YAAA,EAAA,CAAA;IACxL,EAAoM,CAAA,UAAA,CAAA,CAAA,EAAA,kFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;;;IAFxJ,EAAsB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA,UAAA,EAAA,IAAA,CAAA,wCAAA,CAAA,aAAA,EAAA,MAAA,CAAA,OAAA,CAAA,QAAA,CAAA,WAAA,CAAA,CAAA;IAClB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA,UAAA,EAAA,IAAA,CAAA,wCAAA,CAAA,aAAA,EAAA,MAAA,CAAA,OAAA,CAAA,QAAA,CAAA,WAAA,CAAA,CAAA;IACrD,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAAA;;;;IAbjD,EAAuJ,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,CAAA,CAAA;AAArG,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,2FAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,aAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAA2B,CAAmB,gBAAA,EAAA,SAAA,4FAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAwB,CAAA,gBAAA,CAAA,MAAA,CAAA,CAAA,CAA3C,EAAA,CAAA,CAAA;IACzE,EAAiH,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;;IAC7G,EAKc,CAAA,UAAA,CAAA,CAAA,EAAA,iEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,CAAA,CAAA;IAClB,EAAa,CAAA,YAAA,EAAA,CAAA;IACb,EAAmE,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;IAC/D,EAIc,CAAA,UAAA,CAAA,CAAA,EAAA,iEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,CAAA,CAAA;AAClB,IAAA,EAAA,CAAA,YAAA,EAAa,EAAA,CAAA;;;AAfiC,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,aAAA,CAA2B,CAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;IAC7D,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAd,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,IAAA,CAAc,CAAA,OAAA,EAAA,EAAA,CAAA,WAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,CAAA,OAAA,CAAA,aAAA,CAAA,WAAA,EAAA,MAAA,CAAA,cAAA,IAAA,MAAA,CAAA,SAAA,CAAA,CAAA,CAAA;IAQd,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAf,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,KAAA,CAAe,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,cAAA,CAAA,KAAA,CAAA,CAAA;;;;IAa3B,EAAmL,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;AAA1G,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,4GAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,UAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAwB,CAAsD,gBAAA,EAAA,SAAA,6GAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA0B,CAAA,kBAAA,CAAA,MAAA,CAAA,CAAA,CAAhF,EAAA,CAAA,CAAA;IAAkF,EAAiB,CAAA,YAAA,EAAA,CAAA;;;AAA3H,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,UAAA,CAAwB,CAAA,OAAA,EAAA,OAAA,CAAA,OAAA,CAAA,UAAA,CAAA,KAAA,CAAA,CAAA;;;;AAHrG,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAgC,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;IACgB,EAAsB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,2FAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,QAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;IAAiG,EAAiB,CAAA,YAAA,EAAA,CAAA;IACpL,EAAuK,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;IAAvH,EAAsB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,2FAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,QAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;IAAiG,EAAiB,CAAA,YAAA,EAAA,CAAA;IACxL,EAAoM,CAAA,UAAA,CAAA,CAAA,EAAA,oEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;IACxM,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAH0C,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA,UAAA,EAAA,IAAA,CAAA,wCAAA,CAAA,aAAA,EAAA,MAAA,CAAA,OAAA,CAAA,QAAA,CAAA,WAAA,CAAA,CAAA;IAClB,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA,UAAA,EAAA,IAAA,CAAA,wCAAA,CAAA,aAAA,EAAA,MAAA,CAAA,OAAA,CAAA,QAAA,CAAA,WAAA,CAAA,CAAA;IACrD,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAAA;;ACXjD;;;;;;;;AAQG;MACU,4BAA4B,CAAA;AAyGrC;;AAEG;AACH,IAAA,WAAA,CAAoB,iBAAoC,EAAA;QAApC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QA3GjD,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC;QACjF,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;AAsErC;;AAEG;AACK,QAAA,IAAA,CAAA,KAAK,GAAG;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,kBAAkB,EAAE,EAAE;AACtB,YAAA,aAAa,EAAE,KAAK;SACvB,CAAC;AAGK,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAA4B,CAAC;AAGlE,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,YAAY,EAAW,CAAC;QAGzD,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;QAGtB,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QAMtB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AASpB,QAAA,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,cAAc;AAC7C,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC;KAC/F;AAzGD;;AAEG;IACH,IAAW,QAAQ,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACzC;AACD,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;KAC9B;AAED;;AAEG;IACH,IAAW,QAAQ,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACzC;AACD,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;KAC9B;AAED;;AAEG;IACH,IAAW,UAAU,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACzC;AACD,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;KAChC;AAED;;AAEG;IACH,IAAW,OAAO,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACzC;AACD,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;KAC7B;AAED;;AAEG;IACH,IAAW,kBAAkB,CAAC,KAAa,EAAA;AACvC,QAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC;QACtC,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACzC;AACD,IAAA,IAAW,kBAAkB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;KACxC;AAED;;AAEG;IACH,IAAW,aAAa,CAAC,KAAc,EAAA;AACnC,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACzC;AACD,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;KACnC;AA2CM,IAAA,KAAK,CAAC,QAAgB,EAAA;;AAEzB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACjD,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,kBAAkB,GAAG,oBAAoB,CAAC,yBAAyB,CAAC;AACzE,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAE5G,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACnF,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,aAAa,CAAC;AAE9E,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;AACtC,SAAA;AAED,QAAA,IAAI,WAAW,EAAE;AACb,YAAA,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC;AAC9C,SAAA;KACJ;IAEM,8BAA8B,GAAA;AACjC,QAAA,MAAM,SAAS,GAA6B;YACxC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,eAAe,EAAE,IAAI,CAAC,UAAU;AAChC,YAAA,OAAO,EAAE,KAAK;YACd,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC9C,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AACtC,YAAA,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC1B,YAAA,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC1B,YAAA,SAAS,CAAC,eAAe,GAAG,KAAK,CAAC;AAClC,YAAA,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AACjC,YAAA,SAAS,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AAC1D,SAAA;AAED,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;QAExC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KAC5D;AAED;;;AAGG;AACI,IAAA,gBAAgB,CAAC,KAA+B,EAAA;QACnD,MAAM,MAAM,GAAqB,EAAE,CAAC;AAEpC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,MAAM,CAAC,eAAe,CAAC,GAAG;AACtB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO;gBAC3C,QAAQ,EAAE,uBAAuB,CAAC,OAAO;aAC5C,CAAC;AACL,SAAA;aAAM,IAAI,IAAI,CAAC,aAAa,EAAE;YAC3B,MAAM,CAAC,aAAa,CAAC,GAAG;AACpB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,sBAAsB;gBAC5C,QAAQ,EAAE,uBAAuB,CAAC,OAAO;aAC5C,CAAC;AACL,SAAA;QAED,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C;AAED;;;AAGG;AACI,IAAA,kBAAkB,CAAC,KAA+B,EAAA;QACrD,MAAM,MAAM,GAAqB,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,UAAU,EAAE;YACtE,MAAM,CAAC,uBAAuB,CAAC,GAAG;AAC9B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;gBACxC,QAAQ,EAAE,uBAAuB,CAAC,OAAO;aAC5C,CAAC;AACL,SAAA;QAED,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5C;;2HArMQ,4BAA4B,EAAA,EAAA,CAAA,iBAAA,CAAAyD,iBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;8GAA5B,4BAA4B,EAAA,SAAA,EAAA,CAAA,CAAA,2BAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,kCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;QDtBzC,EAA2D,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QACvD,EAkBc,CAAA,UAAA,CAAA,CAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,CAAA,CAAA;QACd,EAMc,CAAA,UAAA,CAAA,CAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,CAAA,CAAA;QAClB,EAAO,CAAA,YAAA,EAAA,CAAA;;QA3Be,EAAa,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAClB,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlB,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,QAAA,CAAA,CAAA;QAmBlB,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA;;uFCErB,4BAA4B,EAAA,CAAA;cAbxC,SAAS;2BACI,2BAA2B,EAAA,QAAA,EAAA,wqFAAA,EAAA,CAAA;iEAiG9B,kBAAkB,EAAA,CAAA;kBADxB,MAAM;YAIA,0BAA0B,EAAA,CAAA;kBADhC,MAAM;YAIA,cAAc,EAAA,CAAA;kBADpB,KAAK;YAIC,aAAa,EAAA,CAAA;kBADnB,KAAK;YAIC,MAAM,EAAA,CAAA;kBADZ,KAAK;YAIC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAIC,YAAY,EAAA,CAAA;kBADlB,SAAS;mBAAC,cAAc,CAAA;;;MC/GhB,yBAAyB,CAAA;;qHAAzB,yBAAyB,GAAA,CAAA,EAAA,CAAA;0GAAzB,yBAAyB,EAAA,CAAA,CAAA;AAHzB,mBAAA,yBAAA,CAAA,IAAA,6BAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;uFAGzE,yBAAyB,EAAA,CAAA;cALrC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACR,YAAY,EAAE,CAAE,4BAA4B,CAAE;gBAC9C,OAAO,EAAE,CAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,CAAE;gBACtF,OAAO,EAAE,CAAE,4BAA4B,CAAE;AAC1C,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,yBAAyB,EAJpB,EAAA,YAAA,EAAA,CAAA,4BAA4B,CACjC,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,aACzE,4BAA4B,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACXzC;;AAEG;IACS,oBAUX;AAVD,CAAA,UAAY,mBAAmB,EAAA;;AAE3B,IAAA,mBAAA,CAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,IAAA,mBAAA,CAAA,mBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACT,IAAA,mBAAA,CAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,IAAA,mBAAA,CAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,IAAA,mBAAA,CAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR,IAAA,mBAAA,CAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,IAAA,mBAAA,CAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,IAAA,mBAAA,CAAA,mBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACd,CAAC,EAVW,mBAAmB,KAAnB,mBAAmB,GAU9B,EAAA,CAAA,CAAA;;;ICZC,EACkB,CAAA,SAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;;;IAD2D,EAAqB,CAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA;;;IAMlG,EACwG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAC3E,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAF4C,EAAwC,CAAA,UAAA,CAAA,MAAA,CAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,KAAA,CAAA,YAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,KAAA,CAAA,YAAA,CAAA,SAAA,CAAA,CAAA;IACnH,EAAmD,CAAA,WAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,KAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,KAAA,CAAA,YAAA,IAAA,IAAA,GAAA,IAAA,GAAA,MAAA,CAAA,KAAA,CAAA,YAAA,CAAA,SAAA,CAAA,CAAA,CAAA;IAAC,EAAiC,CAAA,qBAAA,CAAA,MAAA,EAAA,MAAA,CAAA,KAAA,CAAA,YAAA,CAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAAiB,EAC3E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAD2E,EAC3E,CAAA,iBAAA,CAAA,MAAA,CAAA,KAAA,CAAA,YAAA,CAAA,KAAA,CAAA,CAAA;;;;IAC7B,EAEyC,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;IAAvC,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,qDAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAA4B,CAAA,KAAA,CAAA,cAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACtC,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAHuB,EAA6E,CAAA,UAAA,CAAA,OAAA,EAAA,CAAA,CAAA,MAAA,CAAA,KAAA,CAAA,cAAA,GAAA,MAAA,CAAA,KAAA,CAAA,cAAA,GAAA,MAAA,CAAA,mBAAA,CAAA,CAAA;IAEtG,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,CAAA,MAAA,CAAA,KAAA,CAAA,YAAA,GAAA,MAAA,CAAA,KAAA,CAAA,YAAA,GAAA,MAAA,CAAA,mBAAA,EAAA,GAAA,CAAA,CAAA;;ACTF;;;;;;;;;;;;;;AAcG;AAMG,MAAO,qBAAsB,SAAQ,mBAAmB,CAAA;AA8I1D,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AAvIb,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAE9E;;AAEG;QAEI,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;KAkItC;AA/ID;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,uBAAuB,CAAC;KAClC;AAUD;;AAEG;AACH,IAAA,IACW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,mBAAmB,CAAC,QAAQ,CAAC;KAC7E;AAED;;AAEG;AACH,IAAA,IACW,OAAO,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,mBAAmB,CAAC,KAAK,CAAC;KAC1E;AAED;;AAEG;AACH,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,mBAAmB,CAAC,OAAO,CAAC;KAC5E;AAED;;AAEG;AACH,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,mBAAmB,CAAC,QAAQ,CAAC;KAC7E;AAED;;AAEG;AACH,IAAA,IACW,eAAe,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,mBAAmB,CAAC,IAAI,CAAC;KACzE;AAED;;AAEG;AACH,IAAA,IACW,YAAY,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,mBAAmB,CAAC,OAAO,CAAC;KAC5E;AAED;;AAEG;AACH,IAAA,IACW,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,mBAAmB,CAAC,MAAM,CAAC;KAC3E;AAED;;AAEG;AACH,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,mBAAmB,CAAC,OAAO,CAAC;KAC5E;AAED;;AAEG;AACH,IAAA,IACW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,uBAAuB,CAAC;KACrD;AAED;;;AAGG;AACH,IAAA,IACW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,aAAa,CAAC;KAC3E;AAOD,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACb,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AAC/B,SAAA;KACJ;AAED;;AAEG;AACH,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACb,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ;YACvB,KAAK,mBAAmB,CAAC,QAAQ;gBAC7B,OAAO,cAAc,CAAC,QAAQ,CAAC;YACnC,KAAK,mBAAmB,CAAC,KAAK;gBAC1B,OAAO,cAAc,CAAC,KAAK,CAAC;YAChC,KAAK,mBAAmB,CAAC,OAAO;gBAC5B,OAAO,cAAc,CAAC,OAAO,CAAC;YAClC,KAAK,mBAAmB,CAAC,IAAI;gBACzB,OAAO,cAAc,CAAC,IAAI,CAAC;YAC/B,KAAK,mBAAmB,CAAC,QAAQ;gBAC7B,OAAO,cAAc,CAAC,QAAQ,CAAC;YACnC,KAAK,mBAAmB,CAAC,OAAO;gBAC5B,OAAO,cAAc,CAAC,OAAO,CAAC;YAClC,KAAK,mBAAmB,CAAC,OAAO;gBAC5B,OAAO,cAAc,CAAC,OAAO,CAAC;AAClC,YAAA;AACI,gBAAA,OAAO,IAAI,CAAC;AACnB,SAAA;KACJ;AAMD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,WAAW;YACX,gBAAgB;YAChB,sBAAsB;AACzB,SAAA,CAAC,CAAC;KACN;;6GA3JQ,qBAAqB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;uGAArB,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,oBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,kCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;QDzBlC,EAAsG,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;QACpG,EACkB,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;QACpB,EAAO,CAAA,YAAA,EAAA,CAAA;QAEP,EAAM,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;QACJ,EACA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAEiC,CAAA,UAAA,CAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;QACjC,EAII,CAAA,UAAA,CAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;QACN,EAAO,CAAA,YAAA,EAAA,CAAA;;QAfD,EAAgE,CAAA,sBAAA,CAAA,6CAAA,EAAA,GAAA,CAAA,SAAA,EAAA,EAAA,CAAA,CAAA;QAAC,EAA8B,CAAA,WAAA,CAAA,UAAA,EAAA,CAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QACjF,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAzB,EAAyB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,UAAA,KAAA,IAAA,CAAA,CAAA;QAK3C,EACA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QADA,EACA,CAAA,kBAAA,CAAA,GAAA,EAAA,GAAA,CAAA,KAAA,CAAA,OAAA,EAAA,GAAA,CAAA,CAAA;QAAI,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,KAAA,CAAA,YAAA,CAAA,CAAA;QAGxB,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA5B,EAA4B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,GAAA,CAAA,KAAA,CAAA,cAAA,CAAA,CAAA;;uFCerB,qBAAqB,EAAA,CAAA;cAJjC,SAAS;2BACI,oBAAoB,EAAA,QAAA,EAAA,i9BAAA,EAAA,CAAA;2DAiBvB,uBAAuB,EAAA,CAAA;kBAD7B,KAAK;YAOK,UAAU,EAAA,CAAA;kBADpB,WAAW;mBAAC,0BAA0B,CAAA;YAS5B,OAAO,EAAA,CAAA;kBADjB,WAAW;mBAAC,uBAAuB,CAAA;YASzB,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,yBAAyB,CAAA;YAS3B,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,yBAAyB,CAAA;YAS3B,eAAe,EAAA,CAAA;kBADzB,WAAW;mBAAC,+BAA+B,CAAA;YASjC,YAAY,EAAA,CAAA;kBADtB,WAAW;mBAAC,yBAAyB,CAAA;YAS3B,QAAQ,EAAA,CAAA;kBADlB,WAAW;mBAAC,wBAAwB,CAAA;YAS1B,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,yBAAyB,CAAA;YAS3B,aAAa,EAAA,CAAA;kBADvB,WAAW;mBAAC,6BAA6B,CAAA;YAU/B,eAAe,EAAA,CAAA;kBADzB,WAAW;mBAAC,sCAAsC,CAAA;YAQnC,KAAK,EAAA,CAAA;kBAApB,KAAK;;;MC1GG,kBAAkB,CAAA;;uGAAlB,kBAAkB,GAAA,CAAA,EAAA,CAAA;mGAAlB,kBAAkB,EAAA,CAAA,CAAA;uGALvB,YAAY;QACZ,UAAU;QACV,aAAa,CAAA,EAAA,CAAA,CAAA;uFAGR,kBAAkB,EAAA,CAAA;cAb9B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,qBAAqB;AACxB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,qBAAqB;AACxB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,UAAU;oBACV,aAAa;AAChB,iBAAA;AACJ,aAAA,CAAA;;wFACY,kBAAkB,EAAA,EAAA,YAAA,EAAA,CARvB,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAGrB,YAAY;QACZ,UAAU;AACV,QAAA,aAAa,aARb,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCChB,yBAAyB,CAAA;AAJtC,IAAA,WAAA,GAAA;AAsEI;;AAEG;QAEI,IAAM,CAAA,MAAA,GAA4B,IAAI,CAAC;AAE9C;;AAEG;QAEI,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AAEtB;;AAEG;QAEI,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAEvB;;;AAGG;QACI,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;AAyDzB,KAAA;AAhIG;;AAEG;IACH,IACW,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;AAED;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAwDD;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;QAClB,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACxC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,MAAM,WAAW,GAAG,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAEjE,QAAA,QAAQ,WAAW;YACf,KAAK,cAAc,CAAC,QAAQ;AACxB,gBAAA,OAAO,oBAAoB,CAAC;YAChC,KAAK,cAAc,CAAC,KAAK;AACrB,gBAAA,OAAO,iBAAiB,CAAC;YAC7B,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,OAAO,mBAAmB,CAAC;YAC/B,KAAK,cAAc,CAAC,IAAI;AACpB,gBAAA,OAAO,gBAAgB,CAAC;YAC5B,KAAK,cAAc,CAAC,QAAQ;AACxB,gBAAA,OAAO,oBAAoB,CAAC;YAChC,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,OAAO,mBAAmB,CAAC;YAC/B,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,OAAO,mBAAmB,CAAC;AAC/B,YAAA;AACI,gBAAA,OAAO,IAAI,CAAC;AACnB,SAAA;KACJ;IAEM,QAAQ,GAAA;;;;AAIX,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;AAC1D,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;YACzE,OAAO,CAAC,GAAG,CAAC;gBACR,KAAK,EAAE,QAAQ,CAAC,OAAO;AACvB,gBAAA,OAAO,EAAE,kGAAkG;AAC3G,gBAAA,MAAM,EAAE,2BAA2B;AACtC,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAED;;AAEG;IACI,YAAY,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB,SAAA;KACJ;;qHAhJQ,yBAAyB,GAAA,CAAA,EAAA,CAAA;2GAAzB,yBAAyB,EAAA,SAAA,EAAA,CAAA,CAAA,wBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,kCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAAzB,yBAAyB,EAAA,CAAA;cAJrC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,wBAAwB;AAClC,gBAAA,QAAQ,EAAE,EAAE;AACf,aAAA,CAAA;gBAUU,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,YAAY,EAAA,CAAA;kBADlB,KAAK;YAOK,KAAK,EAAA,CAAA;kBADf,KAAK;YAoBC,MAAM,EAAA,CAAA;kBADZ,KAAK;YAOC,IAAI,EAAA,CAAA;kBADV,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,cAAc,EAAA,CAAA;kBADpB,KAAK;YAOC,SAAS,EAAA,CAAA;kBADf,KAAK;YAOC,MAAM,EAAA,CAAA;kBADZ,KAAK;YAOC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,KAAK;;;ACxFJ,MAAO,mCAAoC,SAAQ,mCAAmC,CAAA;AAA5F,IAAA,WAAA,GAAA;;QAEoB,IAAI,CAAA,IAAA,GAAG,mBAAmB,CAAC;KAS9C;AAPU,IAAA,mBAAmB,CAAC,mBAAgC,EAAA;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,OAAO;AACV,SAAA;QAED,OAAO;KACV;AACJ;;;;;;;ICXC,EAA0I,CAAA,SAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,CAAA;;;AAAlE,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,eAAA,GAAA,CAAA,CAA2B,CAAA,SAAA,EAAA,CAAA,CAAA,CAAA;;;IACnG,EAA4G,CAAA,SAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,CAAA;;IAAtC,EAAa,CAAA,UAAA,CAAA,SAAA,EAAA,CAAA,CAAA,CAAA;;;IAM7E,EACqF,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;;AAAnF,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,QAAA,CAAA,OAAA,CAAsB,CAAA,aAAA,EAAA,IAAA,CAAA,CAAA;;;IAI1B,EAAsG,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;;IAV1G,EACqF,CAAA,cAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAGzE,EAAgB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAC7B,EACqF,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAErF,EAAgC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAkB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;IAE3D,EAAsG,CAAA,UAAA,CAAA,CAAA,EAAA,+DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;AACxG,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;;;;AAXgD,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,QAAA,CAAA,UAAA,CAA8B,CAAA,UAAA,EAAA,MAAA,CAAA,WAAA,KAAA,UAAA,GAAA,IAAA,GAAA,QAAA,CAAA,UAAA,GAAA,MAAA,CAAA,eAAA,CAAA,CAAA;IAI1E,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,iBAAA,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA;IACf,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,OAAA,CAAA,CAAA;IAGO,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,iBAAA,CAAA,QAAA,CAAA,OAAA,CAAA,CAAA;IAErC,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAApC,IAAA,EAAA,CAAA,UAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,WAAA,CAAA,QAAA,CAAA,CAAoC,CAAA,yBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAL,KAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;;IAOvD,EAAgJ,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;;AAArE,IAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,IAAA,CAAe,CAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;;;IAGtF,EAAiG,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IACjG,EAAyC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAgC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;;IAAvC,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,iBAAA,CAAA,OAAA,CAAA,cAAA,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA,CAAA;;;IAH7E,EAAqD,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACnD,EAA+H,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAC7H,EAAiG,CAAA,UAAA,CAAA,CAAA,EAAA,0EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjG,EAAgF,CAAA,UAAA,CAAA,CAAA,EAAA,kEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAClF,EAAI,CAAA,YAAA,EAAA,CAAA;IACN,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;;;IAJqB,EAA4C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA5C,IAAA,EAAA,CAAA,WAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,KAAA,CAAA,SAAA,GAAA,KAAA,CAA4C,CAAA,kBAAA,EAAA,OAAA,CAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,CAAA;IAC7D,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA/B,IAAA,EAAA,CAAA,UAAA,CAAA,kBAAA,EAAA,IAAA,CAA+B,CAAA,yBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IACvC,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,QAAA,CAAA,IAAA,IAAA,CAAA,QAAA,CAAA,MAAA,CAAA,CAAA;;;IAJ3C,EAAgJ,CAAA,UAAA,CAAA,CAAA,EAAA,gEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;IAChJ,EAKe,CAAA,UAAA,CAAA,CAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;;;IANK,EAAkC,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,OAAA,IAAA,QAAA,CAAA,OAAA,CAAA,CAAA;IACvC,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,QAAA,CAAA,OAAA,IAAA,CAAA,QAAA,CAAA,OAAA,CAAA,CAAA;;;IAWjD,EAAiG,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IACjG,EAA6D,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAuB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA9B,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,iBAAA,CAAA,QAAA,CAAA,YAAA,CAAA,CAAA;;;;IAFtF,EAAG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IACD,EAAiG,CAAA,UAAA,CAAA,CAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjG,EAA2F,CAAA,UAAA,CAAA,CAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC3F,EAEkD,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAFmC,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,+DAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,QAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAAiB,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAE9D,EAAgB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAI,EAAA,CAAA;;;;;;IAJvD,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA/B,IAAA,EAAA,CAAA,UAAA,CAAA,kBAAA,EAAA,IAAA,CAA+B,CAAA,yBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IACvC,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,YAAA,CAAA,CAAA;IAE5B,EAA4E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA5E,IAAA,EAAA,CAAA,WAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,KAAA,CAAA,SAAA,GAAA,KAAA,GAAA,GAAA,IAAA,MAAA,CAAA,KAAA,CAAA,SAAA,GAAA,KAAA,CAAA,CAA4E,CAAA,kBAAA,EAAA,MAAA,CAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,CAAA;IAC5B,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,iBAAA,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA;;;IAOlE,EAAiG,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IACjG,EAA6D,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAuB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA9B,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,iBAAA,CAAA,QAAA,CAAA,YAAA,CAAA,CAAA;;;IAFtF,EAAG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IACD,EAAiG,CAAA,UAAA,CAAA,CAAA,EAAA,4DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjG,EAA2F,CAAA,UAAA,CAAA,CAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC3F,EACkD,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAgB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IACtE,EAA6D,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAsC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;;;;IAJ3F,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA/B,IAAA,EAAA,CAAA,UAAA,CAAA,kBAAA,EAAA,IAAA,CAA+B,CAAA,yBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IACvC,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,YAAA,CAAA,CAAA;IACiB,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,UAAA,CAAA,YAAA,EAAA,QAAA,CAAA,IAAA,CAAA,CAAA;IACrE,EAA+C,CAAA,WAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,CAAA;IAAC,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,iBAAA,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA;IAClC,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,CAAA;IAAC,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,iBAAA,CAAA,MAAA,CAAA,0BAAA,CAAA,QAAA,CAAA,CAAA,CAAA;;;IAOnG,EAAiG,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IACjG,EAA6D,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAuB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA9B,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,iBAAA,CAAA,QAAA,CAAA,YAAA,CAAA,CAAA;;;IAFtF,EAAG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IACD,EAAiG,CAAA,UAAA,CAAA,CAAA,EAAA,4DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjG,EAA2F,CAAA,UAAA,CAAA,CAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC3F,EACkD,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAgB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IACtE,EAA6D,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAsC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;;;;IAJ3F,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA/B,IAAA,EAAA,CAAA,UAAA,CAAA,kBAAA,EAAA,IAAA,CAA+B,CAAA,yBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IACvC,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,YAAA,CAAA,CAAA;IACkE,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,IAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAChH,EAA+C,CAAA,WAAA,CAAA,kBAAA,EAAA,OAAA,CAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,CAAA;IAAC,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,iBAAA,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA;IAClC,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,UAAA,CAAA,IAAA,EAAA,OAAA,CAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,CAAA;IAAC,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,iBAAA,CAAA,OAAA,CAAA,0BAAA,CAAA,QAAA,CAAA,CAAA,CAAA;;;IAMrG,EAA8F,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;;;IAA/D,EAAuD,CAAA,sBAAA,CAAA,+BAAA,EAAA,QAAA,CAAA,SAAA,EAAA,EAAA,CAAA,CAAA;;;IACtF,EACuD,CAAA,SAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA;;;IAArD,EAAsB,CAAA,UAAA,CAAA,QAAA,EAAA,QAAA,CAAA,MAAA,CAAA,CAAA;;;IAFxB,EAA8F,CAAA,UAAA,CAAA,CAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC9F,EACuD,CAAA,UAAA,CAAA,CAAA,EAAA,+DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA;;;IAFhD,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,QAAA,CAAA,SAAA,CAAA,CAAA;IACX,EAA0E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1E,EAA0E,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,MAAA,KAAA,SAAA,IAAA,QAAA,CAAA,MAAA,KAAA,IAAA,IAAA,CAAA,QAAA,CAAA,SAAA,CAAA,CAAA;;ACvC9F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCG;AAQG,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;IAgDxD,WAAY,CAAA,QAAkB,EAAuD,MAAc,EAAA;QAC/F,KAAK,CAAC,QAAQ,CAAC,CAAC;AAhDpB;;AAEG;QACI,IAAe,CAAA,eAAA,GAAG,GAAG,CAAC;AAwB7B;;AAEG;QAEI,IAAW,CAAA,WAAA,GAA4B,YAAY,CAAC;AAE3D;;AAEG;AAEI,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEpE;;AAEG;AAEI,QAAA,IAAA,CAAA,uBAAuB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEtE,QAAA,IAAA,CAAA,mCAAmC,GAAG,IAAI,mCAAmC,EAAE,CAAC;;AAKpF,QAAA,MAAM,gBAAgB,GAAiB,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,oCAAoC,CAAC,CAAC;AAChI,QAAA,IAAI,CAAC,WAAW,GAAG,gBAAgB,GAAG,UAAU,GAAG,YAAY,CAAC;;AAGhE,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,MAAK;AAChC,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;gBAC1B,UAAU,CAAC,MAAK;oBACZ,IAAI,CAAC,mCAAmC,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACjG,iBAAC,CAAC,CAAC;aACN,CAAC,CACL,CAAC;AACL,SAAA;KACJ;AA5CD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,uBAAuB,CAAC;KAClC;AAyCM,IAAA,cAAc,CAAC,KAAU,EAAA;AAC5B,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,GAAG,CAAC;AACd,SAAA;AACD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7D,SAAA;AACD,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACzB,IAAI;gBACA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACZ,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACJ,SAAA;QACD,OAAO,CAAA,EAAG,KAAK,CAAA,CAAE,CAAC;KACrB;AAEM,IAAA,WAAW,CAAC,IAA+B,EAAA;QAC9C,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,OAAO,IAAI,CAAC,kBAAkB,CAAC;AAClC,SAAA;QACD,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC;AACpC,aAAA;AAAM,iBAAA;gBACH,OAAO,IAAI,CAAC,oBAAoB,CAAC;AACpC,aAAA;AACJ,SAAA;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,OAAO,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC7B,SAAA;KACJ;AAED;;;;;;AAMG;AACI,IAAA,eAAe,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,OAAO;AACV,SAAA;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACf,OAAO;AACV,SAAA;AAED,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;AAC1C,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,SAAA;KACJ;AAEM,IAAA,0BAA0B,CAAC,IAA+B,EAAA;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9F;AAEM,IAAA,0BAA0B,CAAC,IAA+B,EAAA;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9F;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,SAAS,EAAE,EAAE;SAChB,CAAC;KACL;AAED;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,mBAAmB;YACnB,qBAAqB;YACrB,gBAAgB;AACnB,SAAA,CAAC,CAAC;KACN;;AA7JQ,mBAAA,qBAAA,CAAA,IAAA,GAAA,SAAA,6BAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,qBAAqB,0DAgDkC,mBAAmB,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA;uGAhD1E,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,oCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;oCAMb,yBAAyB,EAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;AAV/B,KAAA,EAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA;AACP,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAC,MAAM,qBAAqB,EAAC,EAAE;AACzF,SAAA,CAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,CAAA,QAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,CAAA,EAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,WAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,kFAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,OAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,UAAA,EAAA,GAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,QAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QDjEL,EAAyI,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QACvI,EAAqG,CAAA,SAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QACrG,EAA0I,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QAC1I,EAA4G,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QAC5G,EAYkB,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;QACpB,EAAa,CAAA,YAAA,EAAA,CAAA;QAGb,EAQc,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;QAGd,EAQc,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;QAGd,EAQc,CAAA,UAAA,CAAA,EAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;QAGd,EAQc,CAAA,UAAA,CAAA,EAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;QAGd,EAIc,CAAA,UAAA,CAAA,EAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;AApEM,QAAA,EAAA,CAAA,UAAA,CAAA,aAAA,EAAA,IAAA,CAAoB,CAAA,WAAA,EAAA,GAAA,CAAA,WAAA,KAAA,UAAA,CAAA,CAAA;QACD,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAzB,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,eAAA,CAAyB,CAAA,SAAA,EAAA,CAAA,CAAA,CAAA;QACtC,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhC,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,WAAA,KAAA,UAAA,CAAA,CAAA;QAChC,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhC,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,WAAA,KAAA,UAAA,CAAA,CAAA;QACtB,EAAU,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAV,EAAU,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;uFC+DjC,qBAAqB,EAAA,CAAA;cAPjC,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAElB,SAAA,EAAA;AACP,oBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAC,MAA2B,qBAAA,EAAC,EAAE;AACzF,iBAAA,EAAA,QAAA,EAAA,6hJAAA,EAAA,CAAA;;sBAkDgC,QAAQ;;sBAAI,QAAQ;;sBAAI,MAAM;uBAAC,mBAAmB,CAAA;wBAzC5E,KAAK,EAAA,CAAA;kBADX,eAAe;mBAAC,yBAAyB,CAAA;YAInC,gBAAgB,EAAA,CAAA;kBADtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAIxC,kBAAkB,EAAA,CAAA;kBADxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAI1C,oBAAoB,EAAA,CAAA;kBAD1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAI5C,oBAAoB,EAAA,CAAA;kBAD1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAc5C,WAAW,EAAA,CAAA;kBADjB,KAAK;YAOC,aAAa,EAAA,CAAA;kBADnB,MAAM;YAOA,uBAAuB,EAAA,CAAA;kBAD7B,MAAM;;;MClFE,kBAAkB,CAAA;;uGAAlB,kBAAkB,GAAA,CAAA,EAAA,CAAA;mGAAlB,kBAAkB,EAAA,CAAA,CAAA;uGARvB,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,kBAAkB;QAClB,UAAU;QACV,aAAa,CAAA,EAAA,CAAA,CAAA;uFAGR,kBAAkB,EAAA,CAAA;cAlB9B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,qBAAqB;oBACrB,yBAAyB;AAC5B,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,qBAAqB;oBACrB,yBAAyB;AAC5B,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,YAAY;oBACZ,YAAY;oBACZ,kBAAkB;oBAClB,UAAU;oBACV,aAAa;AAChB,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,kBAAkB,mBAZvB,qBAAqB;AACrB,QAAA,yBAAyB,aAGzB,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,kBAAkB;QAClB,UAAU;AACV,QAAA,aAAa,aAbb,qBAAqB;QACrB,yBAAyB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;;;;;ICDzB,EAAuG,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;IAA7B,EAAqB,CAAA,UAAA,CAAA,SAAA,EAAA,QAAA,CAAA,IAAA,CAAA,CAAA;;;IAG/F,EACoB,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;;IAD4B,EAAgC,CAAA,UAAA,CAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;;;IAQ5E,EACiM,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IAAA,EAAyB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;;;IAA7B,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,iBAAA,CAAA,OAAA,CAAA,eAAA,CAAA,KAAA,CAAA,CAAA;;;IAK5N,EAAiE,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAA4B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;;IAAtE,EAAkC,CAAA,UAAA,CAAA,IAAA,EAAA,OAAA,CAAA,KAAA,CAAA,aAAA,GAAA,SAAA,CAAA,CAAA;IAAC,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,iBAAA,CAAA,OAAA,CAAA,eAAA,CAAA,QAAA,CAAA,CAAA;;;IAE7F,EACwC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAA+B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;;IAA5E,EAAqC,CAAA,UAAA,CAAA,IAAA,EAAA,OAAA,CAAA,KAAA,CAAA,gBAAA,GAAA,SAAA,CAAA,CAAA;IAAC,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,iBAAA,CAAA,OAAA,CAAA,eAAA,CAAA,WAAA,CAAA,CAAA;;;IAEvE,EACsC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAiC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;;IAA5E,EAAmC,CAAA,UAAA,CAAA,IAAA,EAAA,OAAA,CAAA,KAAA,CAAA,cAAA,GAAA,SAAA,CAAA,CAAA;IAAC,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjC,EAAiC,CAAA,iBAAA,CAAA,OAAA,CAAA,eAAA,CAAA,aAAA,CAAA,CAAA;;;;IAEzE,EAGuC,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAHL,EAAW,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,2GAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAoC,CAAA,qBAAA,CAAA,MAAA,EAAA,SAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA,eAAA,EAAA,SAAA,iHAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAC/D,eAAA,OAAqC,CAAA,qBAAA,CAAA,MAAA,EAAA,SAAA,EAAA,IAAI,CAAC,CAAA,CADqB,EAAA,CAAA,CAAA;IAIhF,EAAkE,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACpE,EAAS,CAAA,YAAA,EAAA,CAAA;;;;IAFP,EAAoC,CAAA,UAAA,CAAA,UAAA,EAAA,QAAA,CAAA,SAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA;IADpC,EAA0C,CAAA,WAAA,CAAA,YAAA,EAAA,OAAA,CAAA,eAAA,CAAA,MAAA,CAAA,CAAA;;;;IA/B9C,EAEoE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAlE,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,4FAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,MAAA,QAAA,GAAA,OAAA,CAAA,SAAA,CAAA,CAAA,MAAA,SAAA,GAAA,OAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAwB,CAAA,WAAA,CAAA,QAAA,EAAA,SAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAElC,EAAuG,CAAA,UAAA,CAAA,CAAA,EAAA,8EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAEvG,EAAsC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAqB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAClE,EACoB,CAAA,UAAA,CAAA,CAAA,EAAA,2FAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;IAEpB,EAAwC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAqC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;AAEpF,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAqC,aAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAE3B,EAA6B,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAC1C,EAC8N,CAAA,UAAA,CAAA,EAAA,EAAA,4EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;AAEhO,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;IAEX,EAAgC,CAAA,cAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC9B,EAAoG,CAAA,UAAA,CAAA,EAAA,EAAA,+EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAEpG,EAC8E,CAAA,UAAA,CAAA,EAAA,EAAA,+EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAE9E,EAC8E,CAAA,UAAA,CAAA,EAAA,EAAA,+EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAChF,EAAO,CAAA,YAAA,EAAA,CAAA;IACP,EAKS,CAAA,UAAA,CAAA,EAAA,EAAA,iFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACX,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;;;AAnCuB,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,IAAA,CAAsB,CAAA,IAAA,EAAA,OAAA,CAAA,KAAA,CAAA,SAAA,GAAA,SAAA,CAAA,CAAA;IAItB,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,IAAA,CAAA,CAAA;IAEJ,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,iBAAA,CAAA,QAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;IACvC,EAA0B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1B,EAA0B,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,oBAAA,CAAA,CAAA;IAGN,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArC,EAAqC,CAAA,iBAAA,CAAA,OAAA,CAAA,2BAAA,CAAA,QAAA,CAAA,CAAA,CAAA;IAInE,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7B,EAA6B,CAAA,iBAAA,CAAA,OAAA,CAAA,mBAAA,CAAA,QAAA,CAAA,CAAA,CAAA;IAEhC,EAA4L,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5L,EAA4L,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,OAAA,KAAA,QAAA,CAAA,KAAA,CAAA,IAAA,KAAA,OAAA,CAAA,sBAAA,CAAA,SAAA,IAAA,QAAA,CAAA,KAAA,CAAA,IAAA,KAAA,OAAA,CAAA,sBAAA,CAAA,cAAA,IAAA,QAAA,CAAA,KAAA,CAAA,IAAA,KAAA,OAAA,CAAA,sBAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;IAK1L,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,QAAA,CAAA,QAAA,CAAA,CAAA;IAErB,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,QAAA,CAAA,WAAA,CAAA,CAAA;IAGxB,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,QAAA,CAAA,WAAA,CAAA,CAAA;IAGvB,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,QAAA,CAAA,WAAA,CAAA,CAAA;;;IAS9B,EAA0E,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,CAAA,CAAA;IACxE,EAA2E,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;;;;IAApF,EAA2E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3E,EAA2E,CAAA,kBAAA,CAAA,GAAA,EAAA,QAAA,CAAA,KAAA,CAAA,YAAA,GAAA,OAAA,CAAA,eAAA,CAAA,KAAA,GAAA,QAAA,CAAA,KAAA,CAAA,KAAA,EAAA,EAAA,CAAA,CAAA;;;IAC7E,EAA0E,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,CAAA,CAAA;IACxE,EAA6E,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;;;;IAAtF,EAA6E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7E,EAA6E,CAAA,kBAAA,CAAA,GAAA,EAAA,QAAA,CAAA,KAAA,CAAA,YAAA,GAAA,OAAA,CAAA,eAAA,CAAA,KAAA,GAAA,QAAA,CAAA,KAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA;;;IAJjF,EAAsC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EACpC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EACsF,CAAA,UAAA,CAAA,CAAA,EAAA,wFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IACtF,EACwF,CAAA,UAAA,CAAA,CAAA,EAAA,wFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IAC1F,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IALgC,EACpC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADoC,EACpC,CAAA,kBAAA,CAAA,EAAA,EAAA,QAAA,CAAA,MAAA,CAAA,KAAA,EAAA,GAAA,EAAA,QAAA,CAAA,OAAA,EAAA,GAAA,CAAA,CAAA;IAAS,EAA+D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/D,EAA+D,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,KAAA,CAAA,IAAA,KAAA,OAAA,CAAA,sBAAA,CAAA,gBAAA,CAAA,CAAA;IAE/D,EAA+D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/D,EAA+D,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,KAAA,CAAA,IAAA,KAAA,OAAA,CAAA,sBAAA,CAAA,gBAAA,CAAA,CAAA;;;IAatE,EAEa,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;;;AAFyC,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,UAAA,CAAA,KAAA,CAAsB,CAAA,OAAA,EAAA,UAAA,CAAA,KAAA,CAAA,CAAA;;;;IAL9E,EAI8C,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;AAJD,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,iIAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,OAAa,EAC/D,CAAA,WAAA,CAAA,QAAA,CAAA,MAAA,CAAA,KAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CADiF,CACzD,eAAA,EAAA,SAAA,iIAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA2B,CAAA,mBAAA,CAAA,SAAA,EAAA,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA,CADa,EAAA,CAAA,CAAA;IAK1E,EAEa,CAAA,UAAA,CAAA,CAAA,EAAA,sGAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;IACf,EAAiB,CAAA,YAAA,EAAA,CAAA;;;;IANmB,EAAuC,CAAA,WAAA,CAAA,gBAAA,EAAA,QAAA,CAAA,SAAA,CAAA,CAAA;IAF9B,EAA+B,CAAA,UAAA,CAAA,SAAA,EAAA,QAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA,SAAA,EAAA,IAAA,CAAA,CAAA,SAAA,EAAA,IAAA,CAAA,CAAA,aAAA,EAAA,OAAA,CAAA,eAAA,CAAA,SAAA,CAAA,CAAA,mCAAA,EAAA,KAAA,CAAA,CAAA;IAK3C,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,kBAAA,CAAA,CAAA;;;IAItD,EAAkD,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAqB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA5B,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,iBAAA,CAAA,QAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;;IACvE,EACoB,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;;IAD4B,EAAgC,CAAA,UAAA,CAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;;;IAK9E,EACkN,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAChN,EAA+B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAAtC,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,kBAAA,CAAA,GAAA,EAAA,OAAA,CAAA,gBAAA,CAAA,SAAA,EAAA,GAAA,CAAA,CAAA;;;IAQ/B,EACa,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;;;AADgC,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,WAAA,CAAA,KAAA,CAAuB,CAAA,OAAA,EAAA,WAAA,CAAA,KAAA,CAAA,CAAA;;;;IAPtE,EAM+D,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;AAJ9B,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,gJAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,OAAa,EACrD,CAAA,WAAA,CAAA,QAAA,CAAA,OAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CADkE,CACxC,eAAA,EAAA,SAAA,gJAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA2B,CAAA,mBAAA,CAAA,SAAA,EAAA,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA,CADJ,EAAA,CAAA,CAAA;IAKzD,EACa,CAAA,UAAA,CAAA,CAAA,EAAA,qHAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;IACf,EAAiB,CAAA,YAAA,EAAA,CAAA;;;;IAJf,EAA+D,CAAA,WAAA,CAAA,oCAAA,EAAA,CAAA,CAAA,QAAA,CAAA,WAAA,CAAA,CAAA;IAHhC,EAA0B,CAAA,UAAA,CAAA,SAAA,EAAA,QAAA,CAAA,OAAA,CAAA,CAAA,SAAA,EAAA,IAAA,CAAA,iBAAA,CAAA,mCAAA,EAAA,KAAA,CAAA,CAAA;IAKzB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAX,EAAW,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,QAAA,CAAA,CAAA;;;IAK7C,EACe,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;;IAFjB,EAAiF,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC/E,EACe,CAAA,UAAA,CAAA,CAAA,EAAA,4GAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjB,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;;IAFW,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAApC,IAAA,EAAA,CAAA,UAAA,CAAA,kBAAA,EAAA,OAAA,CAAA,WAAA,CAAA,QAAA,CAAA,CAAoC,CAAA,yBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,QAAA,EAAA,SAAA,CAAA,CAAA,CAAA;;;;IAGrD,EAG6F,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAH7C,EAAW,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,0HAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAoC,CAAA,qBAAA,CAAA,MAAA,EAAA,SAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA,eAAA,EAAA,SAAA,gIAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAE7E,eAAA,OAAqC,CAAA,qBAAA,CAAA,MAAA,EAAA,SAAA,EAAA,IAAI,CAAC,CAAA,CAFmC,EAAA,CAAA,CAAA;IAI9F,EAAkE,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACpE,EAAS,CAAA,YAAA,EAAA,CAAA;;;;IAF+C,EAAoC,CAAA,UAAA,CAAA,UAAA,EAAA,QAAA,CAAA,SAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA;IAF5E,EAA0C,CAAA,WAAA,CAAA,YAAA,EAAA,OAAA,CAAA,eAAA,CAAA,MAAA,CAAA,CAAA;;;IArB5D,EAA4C,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAC1C,EAAuC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACrC,EAEwC,CAAA,UAAA,CAAA,CAAA,EAAA,8FAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACxC,EASiB,CAAA,UAAA,CAAA,CAAA,EAAA,wGAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;IACnB,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAGM,CAAA,UAAA,CAAA,CAAA,EAAA,6FAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAKS,CAAA,UAAA,CAAA,CAAA,EAAA,gGAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACX,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;IAvBR,EAA6M,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7M,EAA6M,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,QAAA,CAAA,MAAA,CAAA,KAAA,KAAA,QAAA,CAAA,KAAA,CAAA,IAAA,KAAA,OAAA,CAAA,sBAAA,CAAA,cAAA,IAAA,QAAA,CAAA,KAAA,CAAA,IAAA,KAAA,OAAA,CAAA,sBAAA,CAAA,mBAAA,IAAA,QAAA,CAAA,KAAA,CAAA,IAAA,KAAA,OAAA,CAAA,sBAAA,CAAA,gBAAA,CAAA,CAAA,CAAA;IAG7M,EAA+E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/E,EAA+E,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,QAAA,CAAA,MAAA,CAAA,KAAA,IAAA,QAAA,CAAA,KAAA,CAAA,IAAA,KAAA,OAAA,CAAA,sBAAA,CAAA,SAAA,CAAA,CAAA;IAU9E,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,EAAA,QAAA,IAAA,IAAA,GAAA,IAAA,GAAA,QAAA,CAAA,MAAA,IAAA,IAAA,GAAA,IAAA,GAAA,QAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA,CAAA;IAIV,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,QAAA,CAAA,WAAA,CAAA,CAAA;;;;IArClD,EAEkF,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAhF,EAAiB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,sGAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,8BAAsB,CAAA,CAAA,EAAA,CAAC,4MAAgB,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,cAAA,CAAA,MAAA,CAAsB,CAAA,CAAtC,EAAA,CAAA,CAAA;IACxC,EAAqC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACnC,EAQiB,CAAA,UAAA,CAAA,CAAA,EAAA,yFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;IACjB,EAA8E,CAAA,UAAA,CAAA,CAAA,EAAA,+EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAC9E,EACoB,CAAA,UAAA,CAAA,CAAA,EAAA,4FAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;IACtB,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EA0Be,CAAA,UAAA,CAAA,CAAA,EAAA,uFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACjB,EAAO,CAAA,YAAA,EAAA,CAAA;;;;IArCA,EAA4C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5C,EAA4C,CAAA,UAAA,CAAA,MAAA,EAAA,EAAA,QAAA,CAAA,MAAA,IAAA,QAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA,CAAA;IAMxC,EAAyC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzC,EAAyC,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,MAAA,IAAA,QAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAC5B,EAA0B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1B,EAA0B,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,oBAAA,CAAA,CAAA;IAGjC,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,OAAA,CAAA,oBAAA,CAAA,CAAA;;;;IAnE9C,EAKe,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AAFb,IAAA,EAAA,CAAA,UAAA,CAAA,gBAAA,EAAA,SAAA,+FAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAkB,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,qBAAA,CAAA,MAAA,EAAA,SAAA,EAAqC,IAAI,CAAC,CAAA,CAAC,EAAA,CAAA,CAAA,OAAA,EAAA,SAAA,sFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAU,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,eAAA,EAAiB,CAAA,CAA3B,EAAA,CAAA,CAAA,eAAA,EAAA,SAAA,8FAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,QAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,SAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OACK,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,eAAA,CAAA,MAAA,EAAA,QAAA,EAAA,SAAA,CAAoC,CAAA,CADzC,EAAA,CAAA,CAAA;IAG7D,EAmCM,CAAA,UAAA,CAAA,CAAA,EAAA,uEAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAOc,CAAA,UAAA,CAAA,CAAA,EAAA,+EAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;IACd,EA4CO,CAAA,UAAA,CAAA,CAAA,EAAA,wEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACT,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;IA9FJ,EAAoC,CAAA,WAAA,CAAA,cAAA,EAAA,QAAA,CAAA,QAAA,CAAA,CAAA,aAAA,EAAA,QAAA,CAAA,OAAA,IAAA,CAAA,QAAA,CAAA,SAAA,CAAA,yCAAA,CAAA,gBAAA,EAAA,QAAA,CAAA,SAAA,CAAA,CAAA;IAGpC,EAAgD,CAAA,WAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,gBAAA,CAAA,SAAA,CAAA,CAAA,CAAA;IAE1C,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,QAAA,CAAA,SAAA,CAAA,CAAA;IA4CpB,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,SAAA,CAAA,CAAA;;;IAnD/B,EAAwD,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACtD,EA+FM,CAAA,UAAA,CAAA,CAAA,EAAA,iEAAA,EAAA,CAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACR,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAhGS,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,WAAA,CAAA,QAAA,CAAA,CAAA;;;;IAiGjD,EACgE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IADrC,EAAW,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,yEAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAsB,CAAA,cAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA,eAAA,EAAA,SAAA,+EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAkB,eAAA,OAAuB,CAAA,cAAA,CAAA,MAAA,EAAA,IAAI,CAAC,CAAA,CAA9C,EAAA,CAAA,CAAA;IAE3D,EAAsE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACpE,EAAoE,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACpE,EAAqC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAuB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,EAAA,CAAA;;;IAA9B,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,iBAAA,CAAA,OAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA;;;;IAEhE,EAC+C,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IADD,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,6EAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAkB,CAAA,gBAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAC3B,EAC/C,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;;;IADM,EAA+B,CAAA,UAAA,CAAA,UAAA,EAAA,OAAA,CAAA,kBAAA,CAAA,CAAA;IAAC,EAC/C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAD+C,EAC/C,CAAA,kBAAA,CAAA,EAAA,EAAA,OAAA,CAAA,eAAA,CAAA,KAAA,EAAA,GAAA,CAAA,CAAA;;;IA3GF,EAAiC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IAC/B,EAiGe,CAAA,UAAA,CAAA,CAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACf,EAKM,CAAA,UAAA,CAAA,CAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACN,EAES,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IACX,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IA3GE,EAAuC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvC,EAAuC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,WAAA,IAAA,MAAA,CAAA,WAAA,CAAA,QAAA,CAAA,CAAA;IAkGhD,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnB,EAAmB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAMhB,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,eAAA,CAAA,CAAA;;;IAIhC,EAAmD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACjD,EAAqF,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;IACvF,EAAM,CAAA,YAAA,EAAA,CAAA;;IADe,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,UAAA,CAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;;;IAS/C,EACa,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;;;AADyC,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,UAAA,CAAgB,CAAA,OAAA,EAAA,UAAA,CAAA,CAAA;;;IADxE,EAA0E,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACxE,EACa,CAAA,UAAA,CAAA,CAAA,EAAA,uEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;IACf,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAFkB,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,kBAAA,CAAA,CAAA;;;;IALxD,EAGqF,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;AAH/B,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,QAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,OAAa,EAChE,CAAA,WAAA,CAAA,QAAA,CAAA,KAAA,CAAA,cAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAD0F,CAC1E,eAAA,EAAA,SAAA,mFAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,wCAA2B,IAAI,EAAE,IAAI,CAAC,CAAA,CADoC,EAAA,CAAA,CAAA,eAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAE9B,EAAA,CAAA,WAAA,CAAA,QAAA,CAAA,wBAAA,CAAA,MAAA,EAAA,SAAA,CAAuC,CAAA,CAFT,EAAA,CAAA,CAAA;IAI3F,EAGe,CAAA,UAAA,CAAA,CAAA,EAAA,0DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACjB,EAAiB,CAAA,YAAA,EAAA,CAAA;;;;AARqC,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,QAAA,CAAA,KAAA,CAAA,cAAA,CAAuC,CAAA,UAAA,EAAA,IAAA,CAAA,CAAA,SAAA,EAAA,IAAA,CAAA,CAAA,SAAA,EAAA,IAAA,CAAA,CAAA,aAAA,EAAA,MAAA,CAAA,eAAA,CAAA,WAAA,CAAA,2CAAA,CAAA,mCAAA,EAAA,KAAA,CAAA,CAAA;IAI5E,EAAyD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzD,EAAyD,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,kBAAA,IAAA,MAAA,CAAA,kBAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;;;;IAQ1E,EAEwG,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;AAFtD,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,OAAa,EAC5D,CAAA,WAAA,CAAA,SAAA,CAAA,KAAA,CAAA,cAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CADsF,CACtE,eAAA,EAAA,SAAA,mFAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,UAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,yCAA2B,IAAI,EAAE,IAAI,CAAC,CAAA,CADgC,EAAA,CAAA,CAAA,eAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,UAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAEtE,EAAA,CAAA,WAAA,CAAA,QAAA,CAAA,wBAAA,CAAA,MAAA,EAAA,UAAA,CAAuC,CAAA,CAF+B,EAAA,CAAA,CAAA;IAGzF,EAAiB,CAAA,YAAA,EAAA,CAAA;;;;IAHiC,EAAuC,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,CAAA,KAAA,CAAA,cAAA,CAAA,CAAA,SAAA,EAAA,IAAA,CAAA,iBAAA,CAAA,aAAA,EAAA,MAAA,CAAA,eAAA,CAAA,WAAA,CAAA,CAAA;;;IAYrF,EACa,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;;;AADyC,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,WAAA,CAAgB,CAAA,OAAA,EAAA,WAAA,CAAA,CAAA;;;IADxE,EAA0E,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACxE,EACa,CAAA,UAAA,CAAA,CAAA,EAAA,uEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;IACf,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAFkB,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,SAAA,EAAA,QAAA,CAAA,kBAAA,CAAA,CAAA;;;;IALxD,EAGqF,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;AAH/B,IAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,OAAa,EAChE,CAAA,WAAA,CAAA,SAAA,CAAA,KAAA,CAAA,cAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAD0F,CAC1E,eAAA,EAAA,SAAA,mFAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,UAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,yCAA2B,IAAI,EAAE,IAAI,CAAC,CAAA,CADoC,EAAA,CAAA,CAAA,eAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,UAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAE9B,EAAA,CAAA,WAAA,CAAA,QAAA,CAAA,wBAAA,CAAA,MAAA,EAAA,UAAA,CAAuC,CAAA,CAFT,EAAA,CAAA,CAAA;IAI3F,EAGe,CAAA,UAAA,CAAA,CAAA,EAAA,0DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACjB,EAAiB,CAAA,YAAA,EAAA,CAAA;;;;AARqC,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,CAAA,KAAA,CAAA,cAAA,CAAuC,CAAA,SAAA,EAAA,IAAA,CAAA,CAAA,SAAA,EAAA,IAAA,CAAA,CAAA,aAAA,EAAA,MAAA,CAAA,eAAA,CAAA,WAAA,CAAA,CAAA,YAAA,EAAA,CAAA,CAAA,SAAA,CAAA,KAAA,CAAA,UAAA,CAAA,CAAA,mCAAA,EAAA,KAAA,CAAA,CAAA;IAI5E,EAAyD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzD,EAAyD,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,kBAAA,IAAA,MAAA,CAAA,kBAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;;;IAatE,EAEwB,CAAA,SAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,CAAA;;;AAFyC,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,WAAA,CAAA,KAAA,CAAsB,CAAA,OAAA,EAAA,WAAA,CAAA,KAAA,CAAA,CAAA;;;IADzF,EAA0E,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACxE,EAEwB,CAAA,UAAA,CAAA,CAAA,EAAA,kFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,CAAA;IAC1B,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAH6B,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,SAAA,EAAA,QAAA,CAAA,kBAAA,CAAA,CAAA;;;;IALnE,EAG+F,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;IAHpC,EAAa,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,SAAA,CAAA,KAAA,CAAA,cAAA,GAAA,MAAA,CACrE,IAD+F,CAC/E,eAAA,EAAA,SAAA,mFAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,UAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,yCAA2B,IAAI,EAAE,IAAI,CAAC,CAAA,IADyC,CAEnC,eAAA,EAAA,SAAA,mFAAA,CAAA,MAAA,EAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,KAAA,CAAA,CAAA,CAAA,MAAA,UAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,QAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,qDAAuC,CAAA,CAAA,EAAA,CAFJ,wMAG9B,EAAA,CAAA,WAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,MAAA,CAAyB,CAAA,CAHK,EAAA,CAAA,CAAA;IAIhG,EAIe,CAAA,UAAA,CAAA,CAAA,EAAA,0DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACjB,EAAiB,CAAA,YAAA,EAAA,CAAA;;;;IAT0C,EAAuC,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,CAAA,KAAA,CAAA,cAAA,CAAA,CAAA,SAAA,EAAA,IAAA,CAAA,CAAA,SAAA,EAAA,IAAA,CAAA,CAAA,aAAA,EAAA,MAAA,CAAA,eAAA,CAAA,WAAA,CAAA,CAAA,mCAAA,EAAA,KAAA,CAAA,CAAA;IAIjF,EAAyD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzD,EAAyD,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,kBAAA,IAAA,MAAA,CAAA,kBAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;;ACpGtE,MAAO,oBAAqB,SAAQ,iBAAiB,CAAA;AA8FvD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QA5Fb,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;QACd,IAAmB,CAAA,mBAAA,GAAyC,EAAE,CAAC;QAC/D,IAAkB,CAAA,kBAAA,GAAe,EAAE,CAAC;QAIpC,IAAe,CAAA,eAAA,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC;QACjF,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAoCjB,IAA8B,CAAA,8BAAA,GAAG,KAAK,CAAC;QACvC,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;QAC/B,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAE3B,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAA,CAAA,+BAA+B,GAAG,IAAI,KAAK,EAAE,CAAC;AAG/C,QAAA,IAAA,CAAA,SAAS,GAAc,SAAS,CAAC,MAAM,CAAC;QAcxC,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;QAGrB,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC;QAEvB,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;KAuBjC;AAnFD,IAAA,IAAW,sBAAsB,GAAA;AAC7B,QAAA,OAAO,sBAAsB,CAAC;KACjC;AACD,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,OAAO,gBAAgB,CAAC;KAC3B;AAED,IAAA,IACW,IAAI,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AACjD,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KACpB;AAED,IAAA,IACW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;KAC5C;IAyBD,IACW,iBAAiB,CAAC,KAAgB,EAAA;AACzC,QAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;QACvC,IAAI,CAAC,mCAAmC,EAAE,CAAC;KAC9C;AAED,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,yBAAyB,CAAC;KACzC;AAaD,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,sBAAsB,CAAC;KACjC;AAED;;;AAGG;IACK,qBAAqB,GAAA;QACzB,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AAC7C,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAClC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;AACpE,SAAA;KACJ;IAMM,QAAQ,GAAA;QACX,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;;QAGtB,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC;AAEM,IAAA,WAAW,CAAC,IAAmB,EAAA;AAClC,QAAA,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI;YACnB,KAAK,sBAAsB,CAAC,mBAAmB;gBAC3C,OAAO,IAAI,CAAC,mBAAmB,CAAC;YACpC,KAAK,sBAAsB,CAAC,cAAc;gBACtC,OAAO,IAAI,CAAC,oBAAoB,CAAC;YACrC,KAAK,sBAAsB,CAAC,gBAAgB;gBACxC,OAAO,IAAI,CAAC,sBAAsB,CAAC;YACvC,KAAK,sBAAsB,CAAC,SAAS,CAAC;AACtC,YAAA;gBACI,OAAO,IAAI,CAAC,YAAY,CAAC;AAChC,SAAA;KACJ;AAEM,IAAA,mBAAmB,CAAC,IAAmB,EAAA;AAC1C,QAAA,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI;YACnB,KAAK,sBAAsB,CAAC,mBAAmB;AAC3C,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzE,KAAK,sBAAsB,CAAC,cAAc;AACtC,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5B,KAAK,sBAAsB,CAAC,SAAS;AACjC,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5B,KAAK,sBAAsB,CAAC,gBAAgB;gBACxC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9D,oBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB;wBAChC,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;AACzG,iBAAA;AACR,SAAA;KACJ;AAEM,IAAA,2BAA2B,CAAC,IAAmB,EAAA;AAClD,QAAA,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI;YACnB,KAAK,sBAAsB,CAAC,mBAAmB;AAC3C,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;YAC3C,KAAK,sBAAsB,CAAC,cAAc;AACtC,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;YAC3C,KAAK,sBAAsB,CAAC,gBAAgB;AACxC,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;YAC3C,KAAK,sBAAsB,CAAC,SAAS,CAAC;AACtC,YAAA;gBACI,OAAO,IAAI,CAAC,OAAO,CAAC;AAC3B,SAAA;KACJ;IAEO,mBAAmB,GAAA;QACvB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACxC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;;gBAE7C,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE;oBAC/D,OAAO;AACV,iBAAA;gBACD,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC;AAC7C,gBAAA,IAAI,IAAI,CAAC,eAAe,KAAK,sBAAsB,CAAC,cAAc;AAC9D,oBAAA,IAAI,CAAC,eAAe,KAAK,sBAAsB,CAAC,mBAAmB;AACnE,oBAAA,IAAI,CAAC,eAAe,KAAK,sBAAsB,CAAC,gBAAgB,EAAE;;;AAGlE,oBAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,aAAa;2BAC7E,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC7D,OAAO;AACV,qBAAA;AAED,oBAAA,KAAK,EACL,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAClD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,wBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;;wBAEzB,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACzC,IAAI,MAAM,GAAG,GAAG,CAAC;AACjB,wBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,4BAAA,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;4BACrC,IAAI;AACA,gCAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC9B,6BAAA;AAAC,4BAAA,OAAO,CAAC,EAAE;gCACR,OAAO,CAAC,GAAG,CAAC;oCACR,KAAK,EAAE,QAAQ,CAAC,KAAK;oCACrB,OAAO,EAAE,4BAA4B,GAAG,CAAC;AACzC,oCAAA,MAAM,EAAE,0CAA0C;AACrD,iCAAA,CAAC,CAAC;AACH,gCAAA,MAAM,KAAK,CAAC;AACf,6BAAA;AACJ,yBAAA;;AAED,wBAAA,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACrE,4BAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxD,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAED,IACW,UAAU,CAAC,UAA+C,EAAA;AACjE,QAAA,IAAI,UAAU,EAAE;;AAEZ,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3E,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,oCAAoC,GAAG,KAAK,CAAC;AACjD,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACrD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;AACxD,oBAAA,IAAI,IAAI,EAAE;AACN,wBAAA,IAAI,IAAI,KAAK,sBAAsB,CAAC,cAAc;+BAC3C,IAAI,KAAK,sBAAsB,CAAC,mBAAmB;AACnD,+BAAA,IAAI,KAAK,sBAAsB,CAAC,gBAAgB,EAAE;AACrD,4BAAA,MAAM,MAAM,GAAkC;gCAC1C,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK;AACvC,gCAAA,UAAU,EAAE,IAAI;AAChB,gCAAA,eAAe,EAAE,IAAI;6BACxB,CAAC;AACF,4BAAA,IAAI,IAAI,KAAK,sBAAsB,CAAC,gBAAgB,EAAE;;;gCAGlD,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AACnE,6BAAA;AACD,4BAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;4BACtC,IAAI,CAAC,oCAAoC,EAAE;gCACvC,oCAAoC,GAAG,IAAI,CAAC;AAC/C,6BAAA;AACJ,yBAAA;AAAM,6BAAA,IAAI,IAAI,KAAK,sBAAsB,CAAC,SAAS,EAAE;AAClD,4BAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;gCAC1B,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK;AACvC,gCAAA,UAAU,EAAE,KAAK;AACjB,gCAAA,eAAe,EAAE,IAAI;AACxB,6BAAA,CAAC,CAAC;AACN,yBAAA;AAAM,6BAAA,IAAI,IAAI,KAAK,sBAAsB,CAAC,QAAQ,EAAE;4BACjD,oCAAoC,GAAG,KAAK,CAAC;AAChD,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AAED,gBAAA,IAAI,oCAAoC,EAAE;AACtC,oBAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC;AAC9C,iBAAA;AACJ,aAAA;YACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAChC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC9C,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC1B,SAAA;KACJ;AAGM,IAAA,mBAAmB,CAAC,KAAa,EAAE,cAAwB,EAAE,kBAA4B,EAAE,gBAA0B,EAAA;QACxH,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM;AAC9E,mBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;AAChC,mBAAA,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAE/E,MAAM,uBAAuB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;oBAChE,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;AACtD,iBAAC,CAAC,CAAC;AAEH,gBAAA,IAAI,kBAAkB,EAAE;AACpB,oBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE;wBACtC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;AAChD,qBAAA;AACD,oBAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,EAAE;wBACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACxB,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACnC,wBAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;AACpC,wBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC/C,wBAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;AACjD,qBAAA;oBACD,OAAO;AACV,iBAAA;AAED,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/C,gBAAA,IAAI,uBAAuB,CAAC,eAAe,KAAK,sBAAsB,CAAC,cAAc;AACjF,oBAAA,uBAAuB,CAAC,eAAe,KAAK,sBAAsB,CAAC,mBAAmB,EAAE;AACxF,oBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI;wBACxB,uBAAuB,CAAC,eAAe;4BACnC,uBAAuB,CAAC,eAAe,GAAG,sBAAsB,CAAC,cAAc,CAAC;AAExF,oBAAA,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE;AACtC,wBAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC;AAC9C,qBAAA;AACD,oBAAA,IAAI,cAAc,EAAE;AAChB,wBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACjC,wBAAA,IAAI,CAAC,mBAAmB,GAAG,uBAAuB,CAAC,KAAK,CAAC;wBACzD,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,gBAAgB,CAAC,EAAE,CAAC;AAChD,wBAAA,IAAI,uBAAuB,CAAC,eAAe,KAAK,sBAAsB,CAAC,cAAc,EAAE;4BACnF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;4BACjD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC7C,yBAAA;AAAM,6BAAA,IAAI,uBAAuB,CAAC,eAAe,KAAK,sBAAsB,CAAC,mBAAmB,EAAE;4BAC/F,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;4BACjD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC7C,yBAAA;AAAM,6BAAA;4BACH,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AAC9C,yBAAA;AAED,wBAAA,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAChE,qBAAA;AACJ,iBAAA;AAAM,qBAAA,IAAI,uBAAuB,CAAC,eAAe,KAAK,sBAAsB,CAAC,SAAS,EAAE;oBACrF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,GAAG,sBAAsB,CAAC,SAAS,CAAC;AACnE,iBAAA;AAAM,qBAAA,IAAI,uBAAuB,CAAC,eAAe,KAAK,sBAAsB,CAAC,gBAAgB,EAAE;oBAC5F,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,GAAG,sBAAsB,CAAC,gBAAgB,CAAC;AACvE,oBAAA,IAAI,cAAc,EAAE;wBAChB,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,gBAAgB,CAAC,EAAE,CAAC;wBAChD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,SAAS,EAAE,CAAC,CAAC;wBAC9D,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AAC3C,wBAAA,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;wBAC7D,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;AAClH,qBAAA;AACJ,iBAAA;AAED,gBAAA,IAAI,gBAAgB,EAAE;oBAClB,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,SAAS,EAAE;AACnE,wBAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,EAAE;4BACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;4BACxB,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACnC,4BAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;AACpC,4BAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC/C,4BAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;AACjD,yBAAA;AACJ,qBAAA;AAAM,yBAAA,IAAI,uBAAuB,CAAC,eAAe,KAAK,sBAAsB,CAAC,cAAc;AACxF,wBAAA,uBAAuB,CAAC,eAAe,KAAK,sBAAsB,CAAC,mBAAmB,EAAE;wBACxF,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,gBAAgB,CAAC,EAAE,CAAC;AACnD,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;;QAGD,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC;AAEO,IAAA,wBAAwB,CAAC,KAAa,EAAA;QAC1C,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;YACzC,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;AACpD,oBAAA,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;AAChC,iBAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,gBAAA,IAAI,MAAM,EAAE;oBACR,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE;AACrD,wBAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,aAAa,CAAC;AAClD,qBAAA;yBAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;AAChD,wBAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC;AAC5C,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAChC,qBAAA;AACJ,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAChC,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAClC,gBAAA,MAAM,EAAE,CAAC;AACZ,aAAA;AACD,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAClC,YAAA,OAAO,EAAE,CAAC;AACd,SAAC,CAAC,CAAC;KACN;IAGD,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACnC,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;KAClC;IAGD,UAAU,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzD,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AACnC,SAAA;AACD,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;KACvC;IAGM,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAA;QACzC,MAAM,CAAC,cAAc,EAAE,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC/D,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE;gBAC5C,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC9B,aAAA;AACJ,SAAA;KACJ;IAGO,mBAAmB,GAAA;QACvB,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE;YAClG,mBAAmB,GAAG,IAAI,CAAC;AAC9B,SAAA;AACD,QAAA,IAAI,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;KACvD;AAGO,IAAA,yBAAyB,CAAC,mBAA4B,EAAA;AAC1D,QAAA,IAAI,mBAAmB,EAAE;YACrB,MAAM,CAAC,GAAG,GAAG,CAAC;YACd,MAAM,eAAe,GAAG,CAAC,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACzE,YAAA,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC;YACpC,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAC7B,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAC7B,aAAA;AACJ,SAAA;KACJ;AAEM,IAAA,eAAe,CAAC,MAAM,EAAE,IAAmB,EAAE,KAAa,EAAA;QAC7D,IAAI,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,EAAE;AAC1G,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACnC,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;KAClC;IAGO,oBAAoB,GAAA;QACxB,MAAM,0BAA0B,GAAG,GAAG,CAAC,6BAA6B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxF,QAAA,IAAI,0BAA0B,EAAE;YAC5B,0BAA0B,CAAC,KAAK,EAAE,CAAC;AACtC,SAAA;KACJ;AAGM,IAAA,cAAc,CAAC,MAAM,EAAA;QACxB,IAAI,EAAE,MAAM,CAAC,OAAO,KAAK,EAAE,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,EAAE;YAC5F,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC9B,SAAA;AACD,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACpC,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;KACnC;IAEM,WAAW,CAAC,IAAmB,EAAE,KAAa,EAAA;QACjD,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,SAAA;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,SAAS,EAAE;AACtD,gBAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAK;AACvD,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9B,oBAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACvC,iBAAC,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9B,gBAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACtC,aAAA;AACJ,SAAA;KACJ;AAEM,IAAA,wBAAwB,CAAC,wBAAkC,EAAA;QAC9D,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE;AACnF,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/C,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;AAC/B,gBAAA,IAAI,IAAI,EAAE;oBACN,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAC3D,IAAI,CAAC,wBAAwB,EAAE;wBAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAC/C,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;IAEO,aAAa,GAAA;QACjB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,iCAAiC,EAAE,CAAC;QACzC,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE;AACnC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC/C,YAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;AACjD,SAAA;KACJ;AAEO,IAAA,mBAAmB,CAAC,KAAc,EAAA;AACtC,QAAA,MAAM,GAAG,GAAG;YACR,QAAQ,EAAE,IAAI,KAAK,EAAiB;SACvC,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC/D,IAAI,KAAK,IAAI,CAAC,EAAE;AACZ,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;AAC/B,gBAAA,IAAI,IAAI,EAAE;oBACN,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;wBAC9C,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvF,wBAAA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACrE,wBAAA,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAClC,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAmB,KAAI;oBACtD,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;wBAC9C,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvF,wBAAA,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACrE,wBAAA,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAClC,qBAAA;AACL,iBAAC,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACd;AAEM,IAAA,2BAA2B,CAAC,KAAiB,EAAA;QAChD,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;AACrE,SAAA;KACJ;IAEM,cAAc,CAAC,MAAM,EAAE,iBAA2B,EAAA;QACrD,MAAM,CAAC,cAAc,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEpF,QAAA,IAAI,iBAAiB,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,GAAgB,KAAK,CAAC,MAAM,CAAC;YAC9C,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC9B,SAAA;;QAGD,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC;IAGO,mBAAmB,GAAA;QACvB,MAAM,CAAC,GAAG,GAAG,CAAC;QACd,MAAM,6BAA6B,GAAG,CAAC,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvF,QAAA,IAAI,6BAA6B,EAAE;YAC/B,MAAM,4BAA4B,GAAG,CAAC,CAAC,iCAAiC,CAAC,6BAA6B,CAAC,CAAC;AACxG,YAAA,IAAI,4BAA4B,EAAE;gBAC9B,4BAA4B,CAAC,KAAK,EAAE,CAAC;AACxC,aAAA;AACJ,SAAA;KACJ;AAEM,IAAA,gBAAgB,CAAC,KAAa,EAAA;QACjC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;aAC1G,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,CAAC;aACxB,IAAI,CAAC,GAAG,CAAC,CAAC;KAClB;IAES,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,gBAAgB,EAAE,EAAE;AACpB,YAAA,cAAc,EAAE,EAAE;SACrB,CAAC;KACL;IAEO,gBAAgB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE;AACjF,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;AAC/B,YAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACpE,gBAAA,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG;AACtF,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAClC,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;AAChC,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACrC,aAAA;AACJ,SAAA;KACJ;IAEM,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,YAAY,GAAgB,KAAK,CAAC,MAAM,CAAC;QAC9C,MAAM,CAAC,GAAG,GAAG,CAAC;QACd,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACxE;IAEO,2BAA2B,GAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,CAAC,EAAE;AAC9E,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE;AACtC,gBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;AACpC,aAAA;AAAM,iBAAA;gBACH,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,SAAS;oBACjE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,cAAc,EAAE;oBACxE,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE;wBAC3F,YAAY,GAAG,IAAI,CAAC;AACvB,qBAAA;AACD,oBAAA,IAAI,YAAY,EAAE;AACd,wBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;AACpC,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;AACrC,qBAAA;AACJ,iBAAA;qBAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,mBAAmB,EAAE;AACpF,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE;AAC3F,wBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;AACpC,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;AACrC,qBAAA;AACJ,iBAAA;qBAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,gBAAgB,EAAE;oBACjF,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE;AACzC,wBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;AACpC,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;AACrC,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;IAEO,iCAAiC,GAAA;AACrC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAmB,KAAI;AACjF,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC;AAC1E,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,mBAA6B,EAAA;AACrE,QAAA,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,cAAc,EAAE,CAAC;AAC3B,SAAA;QACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAC5D,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;YACjF,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;YAC/C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3C,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC/C,YAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;AACjD,SAAA;QACD,IAAI,CAAC,6BAA6B,CAAC,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;;QAGlF,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC;AAGO,IAAA,6BAA6B,CAAC,KAAa,EAAE,mBAA4B,EAAE,iBAA8B,EAAA;AAC7G,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxD,SAAA;QACD,IAAI,mBAAmB,IAAI,iBAAiB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;YAC5E,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAC7B,SAAA;KACJ;AAEO,IAAA,qBAAqB,CAAC,KAAK,EAAA;QAC/B,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ;AACnE,cAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,GAAG,CAAC;QACd,IAAI,oBAAoB,EAAE,mBAAmB,CAAC;QAC9C,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC7C,YAAA,IAAI,oBAAoB,EAAE;gBACtB,mBAAmB,GAAG,CAAC,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1E,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,oBAAoB,GAAG,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpE,mBAAmB,GAAG,CAAC,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1E,SAAA;QACD,IAAI,CAAC,iBAAiB,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;aAAM,IAAI,iBAAiB,KAAK,CAAC,EAAE;AAChC,YAAA,OAAO,oBAAoB,CAAC;AAC/B,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,KAAK,KAAK,iBAAiB,GAAG,CAAC,EAAE;AACjC,gBAAA,OAAO,mBAAmB,CAAC;AAC9B,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,oBAAoB,CAAC;AAC/B,aAAA;AACJ,SAAA;KACJ;IAEM,gBAAgB,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE;gBAC7D,IAAI,CAAC,iBAAiB,GAAG;AACrB,oBAAA,QAAQ,EAAE,EAAE;iBACf,CAAC;AACL,aAAA;YACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC3E,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;gBACjD,IAAI,CAAC,WAAW,GAAG;AACf,oBAAA,QAAQ,EAAE,EAAE;iBACf,CAAC;AACL,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACrE,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC3B,SAAA;AACD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;;AAG9C,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;KAClC;AAEO,IAAA,0BAA0B,CAAC,KAAgB,EAAA;AAC/C,QAAA,MAAM,GAAG,GAAG;AACR,YAAA,QAAQ,EAAE,EAAE;SACf,CAAC;AAEF,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACtD,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;gBACnC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,gBAAgB,EAAE;AACtG,oBAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBACzB,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;wBACtC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvF,qBAAA;oBACD,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE;wBACxD,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAClH,qBAAA;AACJ,iBAAA;AAAM,qBAAA;AACH,oBAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACd;AAGM,IAAA,wBAAwB,CAAC,KAAgB,EAAA;AAC5C,QAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;KAC3B;IAEO,sBAAsB,GAAA;AAC1B,QAAA,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC3C,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACjB,gBAAA,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE;oBAC/B,OAAO;AACV,iBAAA;AACD,gBAAA,MAAM,IAAI,GAAG;AACT,oBAAA,KAAK,EAAE,GAAG;AACV,oBAAA,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC;iBAC/B,CAAC;AACF,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,aAAC,CAAC,CAAC;AACN,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;KACvB;AAEO,IAAA,sBAAsB,CAAC,IAAmB,EAAA;AAC9C,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;gBAC9C,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACzC,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACpC,SAAA;KACJ;AAEO,IAAA,oBAAoB,CACxB,MAAc,EACd,KAAa,EACb,OAAgB,EAChB,SAAkC,EAAA;AAElC,QAAA,MAAM,GAAG,GAAG;AACR,YAAA,MAAM,EAAE;AACJ,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,KAAK,EAAE,MAAM;AAChB,aAAA;YACD,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,gBAAgB,CAAC,EAAE;AAChD,YAAA,KAAK,EAAE;gBACH,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,EAAE;AACzB,gBAAA,cAAc,EAAE,EAAE;gBAClB,OAAO,EAAE,KAAK,GAAG,KAAK,GAAG,EAAE;gBAC3B,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,sBAAsB,CAAC,SAAS;AAC9D,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,UAAU,EAAE,CAAC,SAAS,KAAK,sBAAsB,CAAC,cAAc;AACzD,uBAAA,SAAS,KAAK,sBAAsB,CAAC,mBAAmB,IAAI,IAAI,GAAG,KAAK;AAClF,aAAA;AACD,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,IAAI;SAChB,CAAC;AAEF,QAAA,OAAO,GAAG,CAAC;KACd;AAEO,IAAA,qBAAqB,CAAC,UAAsC,EAAA;QAChE,MAAM,GAAG,GAAyC,EAAE,CAAC;AACrD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;AAExC,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,eAAe;mBAC7B,MAAM,CAAC,eAAe,KAAK,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE;gBACpE,SAAS;AACZ,aAAA;AACD,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACd;AAEO,IAAA,gBAAgB,CAAC,cAAwC,EAAA;AAC7D,QAAA,MAAM,GAAG,GAAuC;YAC5C,KAAK,EAAE,cAAc,CAAC,MAAM;YAC5B,KAAK,EAAE,cAAc,CAAC,KAAK;YAC3B,eAAe,EAAE,cAAc,CAAC,eAAe,GAAG,cAAc,CAAC,eAAe;AAC5E,gBAAA,sBAAsB,CAAC,SAAS;SACvC,CAAC;AACF,QAAA,IAAI,GAAG,CAAC,eAAe,KAAK,sBAAsB,CAAC,gBAAgB,EAAE;AACjE,YAAA,IAAI,cAAc,CAAC,kBAAkB,IAAI,cAAc,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;mBACzF,cAAc,CAAC,kBAAkB,CAAC,SAAS,KAAK,GAAG,CAAC,KAAK,EAAE;gBAC9D,GAAG,CAAC,aAAa,GAAG,cAAc,CAAC,kBAAkB,CAAC,UAAU,CAAC;AACpE,aAAA;AAAM,iBAAA;AACH,gBAAA,GAAG,CAAC,aAAa,GAAG,EAAE,CAAC;AAC1B,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,GAAG,CAAC;KACd;IAEO,YAAY,CAAC,IAAmB,EAAE,SAAkB,EAAA;AACxD,QAAA,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC9B,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC9B;;AAIM,IAAA,wBAAwB,CAAC,KAAK,EAAA;;;;AAIjC,QAAA,IAAI,IAAI,CAAC,+BAA+B,IAAI,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC9F,OAAO;AACV,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpD,SAAA;AACD,QAAA,IAAI,GAAG,GAAG,KAAK,EAAE,SAAS,CAAC;QAC3B,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE;AACjE,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACjD,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAA,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE;oBACpE,SAAS,GAAG,KAAK,CAAC;oBAClB,MAAM;AACT,iBAAA;AACJ,aAAA;AACD,YAAA,IAAI,SAAS,EAAE;AACX,gBAAA,IAAI,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE;oBAC/C,GAAG,GAAG,IAAI,CAAC;AACd,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACd;IAES,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CACvC,kBAAkB,EAClB,yBAAyB,EACzB,gBAAgB,CACnB,CAAC;KACL;IAEO,oBAAoB,CAAC,IAAmB,EAAE,MAAW,EAAA;AACzD,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,gBAAgB,EAAE;AAC7D,YAAA,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC;AACtC,SAAA;KACJ;AAEM,IAAA,iBAAiB,CAAC,KAAa,EAAA;QAClC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC;KACtD;;IAGO,mCAAmC,GAAA;AACvC,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACzG,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChD,gBAAA,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,gBAAgB,EAAE;AACnF,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACrD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC1C,wBAAA,IAAI,MAAM,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;4BACnE,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;AACpD,gCAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAClD,6BAAC,CAAC,CAAC;4BACH,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,YAAY,CAAC,KAAK,CAAC;AACtD,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;;2GAh4BQ,oBAAoB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;sGAApB,oBAAoB,EAAA,SAAA,EAAA,CAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,0BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;;;;;AAApB,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,SAAA,+CAAA,GAAA,EAAA,OAAA,GAAA,CAAA,aAAA,EAAe,oFAAf,GAAY,CAAA,UAAA,EAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,CAAA;;;;QDjDzB,EA4Ge,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACf,EAEM,CAAA,UAAA,CAAA,CAAA,EAAA,mCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEN,EAUc,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;QAEd,EAKc,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;QAEd,EAUc,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;QAEd,EAWc,CAAA,UAAA,CAAA,CAAA,EAAA,2CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;;QA3JC,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QA6GG,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;;AC8L7C,UAAA,CAAA;AAAC,IAAApD,UAAQ,EAAE;;;;AAmFV,CAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;AA2CD,UAAA,CAAA;AAAC,IAAAA,UAAQ,EAAE;;;;AASV,CAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,0BAAA,EAAA,IAAA,CAAA,CAAA;AAED,UAAA,CAAA;AAAC,IAAAA,UAAQ,EAAE;;;;AAOV,CAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;AAED,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;;;AAcP,CAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,CAAA;AAWD,UAAA,CAAA;AAAC,IAAAA,OAAK,EAAE;;;;AAMP,CAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,IAAA,CAAA,CAAA;AAED,UAAA,CAAA;AAAC,IAAA7C,UAAQ,EAAE;;;;AAQV,CAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAuGD,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;;;AAUP,CAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;AA4FD,UAAA,CAAA;AAAC,IAAAA,OAAK,EAAE;;sDAC8F,WAAW,CAAA,CAAA;;AAOhH,CAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,+BAAA,EAAA,IAAA,CAAA,CAAA;AA8ED,UAAA,CAAA;AAAC,IAAA7C,UAAQ,EAAE;;qCAC4B,SAAS,CAAA,CAAA;;AAE/C,CAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,0BAAA,EAAA,IAAA,CAAA,CAAA;AAkGD,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;;;AA2BP,CAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,0BAAA,EAAA,IAAA,CAAA,CAAA;uFAx1BQ,oBAAoB,EAAA,CAAA;cAJhC,SAAS;2BACI,kBAAkB,EAAA,QAAA,EAAA,ytUAAA,EAAA,CAAA;2DAwBjB,IAAI,EAAA,CAAA;kBADd,WAAW;mBAAC,WAAW,CAAA;YAUb,SAAS,EAAA,CAAA;kBADnB,WAAW;mBAAC,iBAAiB,CAAA;YAMvB,mBAAmB,EAAA,CAAA;kBADzB,SAAS;mBAAC,qBAAqB,CAAA;YAIzB,YAAY,EAAA,CAAA;kBADlB,SAAS;mBAAC,cAAc,CAAA;YAIlB,oBAAoB,EAAA,CAAA;kBAD1B,SAAS;mBAAC,sBAAsB,CAAA;YAI1B,sBAAsB,EAAA,CAAA;kBAD5B,SAAS;mBAAC,wBAAwB,CAAA;YAW5B,SAAS,EAAA,CAAA;kBADf,KAAK;YAKK,iBAAiB,EAAA,CAAA;kBAD3B,KAAK;YAWC,aAAa,EAAA,CAAA;kBADnB,KAAK;YAIC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAMC,SAAS,EAAA,CAAA;kBADf,KAAK;YA4HK,UAAU,EAAA,CAAA;kBADpB,KAAK;AAqDC,SAAA,CAAA,EAAA,mBAAmB,MA+G1B,aAAa,EAAA,CAAA;kBADZ,YAAY;mBAAC,SAAS,CAAA;YAOvB,UAAU,EAAA,CAAA;kBADT,YAAY;mBAAC,kBAAkB,CAAA;AAUzB,SAAA,CAAA,EAAA,wBAAwB,EAWvB,EAAA,EAAA,mBAAmB,EASnB,EAAA,EAAA,yBAAyB,MAyBzB,oBAAoB,EAAA,EAAA,EAQrB,cAAc,EAAA,EAAA,EA+Gb,mBAAmB,EAsGnB,EAAA,EAAA,6BAA6B,EAsF9B,EAAA,EAAA,wBAAwB,MAqGxB,wBAAwB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCr1BtB,iBAAiB,CAAA;;qGAAjB,iBAAiB,GAAA,CAAA,EAAA,CAAA;kGAAjB,iBAAiB,EAAA,CAAA,CAAA;sGAVtB,YAAY;QACZ,cAAc;QACd,WAAW;QACX,aAAa;QACb,kBAAkB;QAClB,aAAa;QACb,cAAc;QACd,mBAAmB,CAAA,EAAA,CAAA,CAAA;uFAGd,iBAAiB,EAAA,CAAA;cAhB7B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE;oBACV,oBAAoB;AAAC,iBAAA;AACzB,gBAAA,OAAO,EAAE;oBACL,oBAAoB;AAAC,iBAAA;AACzB,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,cAAc;oBACd,WAAW;oBACX,aAAa;oBACb,kBAAkB;oBAClB,aAAa;oBACb,cAAc;oBACd,mBAAmB;AACtB,iBAAA;AACJ,aAAA,CAAA;;wFACY,iBAAiB,EAAA,EAAA,YAAA,EAAA,CAdtB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAIpB,YAAY;QACZ,cAAc;QACd,WAAW;QACX,aAAa;QACb,kBAAkB;QAClB,aAAa;QACb,cAAc;AACd,QAAA,mBAAmB,aATnB,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;;ACd5B,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAyC,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;AACY,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,SAAA,qFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,IAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAe,CAA2C,oBAAA,EAAA,SAAA,6FAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAgD,CAAA,oBAAA,CAAA,MAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,CAAA,CAAA,CAA3F,EAAA,CAAA,CAAA;AAA6F,IAAA,EAAA,CAAA,YAAA,EAAwB,EAAA,CAAA;;;IAA9J,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAzB,IAAA,EAAA,CAAA,UAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,MAAA,CAAyB,qBAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;ACKpD;;;AAGG;MAKU,0BAA0B,CAAA;AAJvC,IAAA,WAAA,GAAA;AAsCW,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAY,CAAC;AAe1C,QAAA,IAAA,CAAA,kBAAkB,GAAgD,IAAI,YAAY,EAAiC,CAAC;AAyB9H,KAAA;AAnEG;;AAEG;AACH,IAAA,IACW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IACD,IAAW,MAAM,CAAC,KAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC/B;AAED;;AAEG;AACH,IAAA,IACW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IACD,IAAW,IAAI,CAAC,KAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;AACjC,SAAA;KACJ;AAoBD,IAAA,IAAW,WAAW,GAAA;AAClB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;KACzE;AAED,IAAA,IAAW,WAAW,GAAA;AAClB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;KACzE;IACM,oBAAoB,CAAC,MAAc,EAAE,IAAS,EAAA;AACjD,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KAChE;IACM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;KACrD;IACM,+BAA+B,GAAA;QAClC,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,EAAE,CAAC;AAChE,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;;uHAzEQ,0BAA0B,GAAA,CAAA,EAAA,CAAA;4GAA1B,0BAA0B,EAAA,SAAA,EAAA,CAAA,CAAA,yBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,gCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;uBAIxB,wBAAwB,EAAA,CAAA,CAAA,CAAA;;;;;QDlBvC,EAEM,CAAA,UAAA,CAAA,CAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;QAFA,EAAY,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;;uFCcL,0BAA0B,EAAA,CAAA;cAJtC,SAAS;2BACI,yBAAyB,EAAA,QAAA,EAAA,8PAAA,EAAA,CAAA;gBAQ5B,kBAAkB,EAAA,CAAA;kBADxB,SAAS;mBAAC,wBAAwB,CAAA;YAOxB,MAAM,EAAA,CAAA;kBADhB,KAAK;YAYK,IAAI,EAAA,CAAA;kBADd,KAAK;YAaC,UAAU,EAAA,CAAA;kBADhB,MAAM;YAUA,cAAc,EAAA,CAAA;kBADpB,KAAK;YAIC,YAAY,EAAA,CAAA;kBADlB,KAAK;YAIC,kBAAkB,EAAA,CAAA;kBADxB,MAAM;;;MC9DE,yBAAyB,CAAA;IAC3B,OAAO,QAAQ,CAAC,MAAW,EAAA;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;KAC7C;IAEM,OAAO,aAAa,CAAC,MAAc,EAAA;QACtC,IAAI,MAAM,GAAG,EAAE,CAAC;AAChB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,IAAI,QAAQ,CAAC;AACtB,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACjB;AACJ;;;MCFY,mCAAmC,CAAA;AALhD,IAAA,WAAA,GAAA;AAMW,QAAA,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;QAE9E,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAqJjC,KAAA;AA3IG,IAAA,IACW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IACD,IAAW,MAAM,CAAC,KAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,SAAA;KACJ;IAEM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,KAAK,GAAG,WAAW,CACpB,MAAK;YACD,IAAI,CAAC,iCAAiC,EAAE,CAAC;SAC5C,EACD,IAAI,CAAC,CAAC;AACV,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7B;IAEM,WAAW,GAAA;AACd,QAAA,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;IAEM,cAAc,GAAA;AACjB,QAAA,IAAI,MAAkB,CAAC;AACvB,QAAA,MAAM,2BAA2B,GAAmB,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC;AAC/F,QAAA,IAAI,IAAI,GAAG,2BAA2B,CAAC,SAAS,CAAC;AACjD,QAAA,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;AACzF,QAAA,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE;AACpC,YAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;gBAC/C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,sBAAsB,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAClG,aAAA;AACJ,SAAA;;;QAID,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC;AAElF,QAAA,OAAO,MAAM,CAAC;KACjB;IAEM,qBAAqB,GAAA;AACxB,QAAA,MAAM,2BAA2B,GAAmB,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC;AAE/F,QAAA,IAAI,GAAG,CAAC;AACR,QAAA,IAAI,KAAK,CAAC;AACV,QAAA,IAAI,MAAM,CAAC,YAAY,IAAI,QAAQ,CAAC,WAAW,EAAE;AAC7C,YAAA,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AAC/B,YAAA,KAAK,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,CAAC;AACtD,YAAA,GAAG,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;YAC5B,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,YAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvB,SAAA;AAAM,aAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;YACzC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;AAC3C,YAAA,KAAK,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,CAAC;YACrD,KAAK,CAAC,MAAM,EAAE,CAAC;AAClB,SAAA;AACD,QAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KAChC;IAEO,aAAa,GAAA;AACjB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACjE,QAAA,MAAM,2BAA2B,GAAmB,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC;AAC/F,QAAA,2BAA2B,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC;KAClE;IAEO,iBAAiB,CAAC,IAAS,EAAE,KAAa,EAAA;QAC9C,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,QAAQ,OAAO,IAAI;AACf,YAAA,KAAK,QAAQ,CAAC;AACd,YAAA,KAAK,SAAS;gBACV,MAAM,IAAI,IAAI,CAAC;gBACf,MAAM;AACV,YAAA,KAAK,QAAQ;AACT,gBAAA,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;gBACpD,MAAM;AACV,YAAA,KAAK,QAAQ;AACT,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACrB,MAAM,IAAI,GAAG,CAAC;AACd,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAClC,IAAI,CAAC,KAAK,CAAC,EAAE;4BACT,MAAM,IAAI,GAAG,CAAC;AACjB,yBAAA;wBACD,MAAM,IAAI,OAAO,CAAC;wBAClB,MAAM,IAAI,yBAAyB,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC7G,qBAAA;oBACD,MAAM,IAAI,OAAO,CAAC;oBAClB,MAAM,IAAI,yBAAyB,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AAClE,iBAAA;AAAM,qBAAA;oBACH,MAAM,IAAI,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;oBACjE,IAAI,eAAe,GAAG,IAAI,CAAC;AAC3B,oBAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE;wBACzB,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE;4BACtG,IAAI,CAAC,eAAe,EAAE;gCAClB,MAAM,IAAI,GAAG,CAAC;AACjB,6BAAA;4BACD,MAAM,IAAI,OAAO,CAAC;4BAClB,MAAM,IAAI,yBAAyB,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;AACtD,kCAAA,yBAAyB,GAAG,QAAQ,GAAG,WAAW,CAAC;4BACzD,IAAI,QAAQ,KAAK,MAAM,EAAE;gCACrB,MAAM,IAAI,sBAAsB,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1E,6BAAA;AAAM,iCAAA;AACH,gCAAA,MAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC/D,6BAAA;4BACD,eAAe,GAAG,KAAK,CAAC;AAC3B,yBAAA;AACJ,qBAAA;oBACD,MAAM,IAAI,OAAO,CAAC;oBAClB,MAAM,IAAI,yBAAyB,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;oBAC/D,MAAM;AACT,iBAAA;AACR,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAEO,IAAA,qCAAqC,CAAC,MAAW,EAAA;QACrD,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,CAAC,MAAM,EAAE;YAC3D,YAAY,GAAG,sBAAsB,CAAC;AACzC,SAAA;aAAM,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,CAAC,KAAK,EAAE;YACjE,YAAY,GAAG,qBAAqB,CAAC;AACxC,SAAA;AAED,QAAA,IAAI,YAAY,EAAE;AACd,YAAA,YAAY,GAAG,kCAAkC,GAAG,YAAY,GAAG,aAAa,CAAC;AACpF,SAAA;AAED,QAAA,OAAO,YAAY,CAAC;KACvB;IAEO,iCAAiC,GAAA;AACrC,QAAA,MAAM,2BAA2B,GAAmB,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC;AAC/F,QAAA,IAAI,CAAC,iBAAiB,GAAG,2BAA2B,CAAC,SAAS,CAAC;AAC/D,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC;KACtD;;yIAvJQ,mCAAmC,GAAA,CAAA,EAAA,CAAA;qHAAnC,mCAAmC,EAAA,SAAA,EAAA,CAAA,CAAA,oCAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,yCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;ACVhD,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAsF,aAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;QAE3E,EAA+B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAI,CAAA,YAAA,EAAA,CAAA;QACtC,EAAG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;QAAA,EACC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAA0C,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAAlC,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,oEAAA,GAAA,EAAA,OAAS,2BAAuB,CAAC,EAAA,CAAA,CAAA;QAAC,EAAiD,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAS,EAAA,EAAA,CAAA;QAG5G,EAAoK,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AACpK,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAmD,CAAA,EAAA,EAAA,MAAA,CAAA,CAAA;QACzC,EAAkC,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QAC/C,EAA6H,CAAA,cAAA,CAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAiC,CAAA,MAAA,CAAA,EAAA,EAAA,mCAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAO,EAAA,EAAA,CAAA;;QARlK,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA/B,EAA+B,CAAA,iBAAA,CAAA,GAAA,CAAA,OAAA,CAAA,UAAA,CAAA,QAAA,CAAA,CAAA;QAC/B,EACC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QADD,EACC,CAAA,kBAAA,CAAA,EAAA,EAAA,GAAA,CAAA,OAAA,CAAA,UAAA,CAAA,QAAA,EAAA,GAAA,CAAA,CAAA;QAA0C,EAAiD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjD,EAAiD,CAAA,iBAAA,CAAA,GAAA,CAAA,OAAA,CAAA,UAAA,CAAA,qBAAA,CAAA,IAAA,CAAA,CAAA;QAKzF,EAAkC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlC,EAAkC,CAAA,iBAAA,CAAA,GAAA,CAAA,OAAA,CAAA,UAAA,CAAA,WAAA,CAAA,CAAA;;uFDCnC,mCAAmC,EAAA,CAAA;cAL/C,SAAS;2BACI,oCAAoC,EAAA,QAAA,EAAA,s4BAAA,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA,CAAA;gBAetC,uBAAuB,EAAA,CAAA;kBAD9B,SAAS;mBAAC,kBAAkB,CAAA;YAIlB,MAAM,EAAA,CAAA;kBADhB,KAAK;;;AErBV;AACO,MAAM,kBAAkB,GAAe;AAC1C,IAAA,UAAU,EAAE;AACc,QAAA;YAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,gFAAgF;AACvF,YAAA,OAAO,EAAE;AACL,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,WAAW,EAAE;AACT,oBAAA,GAAG,EAAE,IAAI;AACT,oBAAA,KAAK,EAAE,UAAU;AACpB,iBAAA;AACJ,aAAA;AACD,YAAA,UAAU,EAAE;AACR,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,KAAK,EAAE,oBAAoB;AAC3B,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,iBAAiB,EAAE,mCAAmC;AACtD,oBAAA,WAAW,EAAE,wFAAwF;AACrG,oBAAA,OAAO,EAAE;AACL,wBAAA,KAAK,EAAE,EACN;AACD,wBAAA,YAAY,EAAE,yBAAyB;AAC1C,qBAAA;AACJ,iBAAA;AACD,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,KAAK,EAAE,sBAAsB;AAC7B,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,WAAW,EAAE,0FAA0F;AACvG,oBAAA,OAAO,EAAE;AACL,wBAAA,YAAY,EAAE,2BAA2B;AAC5C,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA;YACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,oBAAoB;AAC3B,YAAA,WAAW,EAAE,wFAAwF;AACrG,YAAA,aAAa,EAAE,mCAAmC;AAClD,YAAA,OAAO,EAAE;AACL,gBAAA,YAAY,EAAE,KAAK;AACtB,aAAA;AACJ,SAAA;AACD,QAAA;YACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,YAAA,MAAM,EAAE,wBAAwB;AAChC,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,EAAE,qBAAqB;AAC5B,YAAA,WAAW,EAAE,yFAAyF;AACtG,YAAA,OAAO,EAAE;AACL,gBAAA,YAAY,EAAE,KAAK;AACtB,aAAA;AACJ,SAAA;AACqB,QAAA;YAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,IAAI,EAAE,mBAAmB;AACzB,YAAA,KAAK,EAAE,+EAA+E;AACtF,YAAA,aAAa,EAAE,mCAAmC;AAClD,YAAA,OAAO,EAAE;AACL,gBAAA,WAAW,EAAE;AACT,oBAAA,GAAG,EAAE,IAAI;AACT,oBAAA,KAAK,EAAE,WAAW;AACrB,iBAAA;AACJ,aAAA;AACD,YAAA,UAAU,EAAE;AACR,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,OAAO;AACjC,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,KAAK,EAAE,gFAAgF;AACvF,oBAAA,OAAO,EAAE,EACR;AACJ,iBAAA;AACD,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,KAAK,EAAE,oFAAoF;AAC3F,oBAAA,OAAO,EAAE;AACL,wBAAA,YAAY,EAAE,KAAK;AACtB,qBAAA;AACJ,iBAAA;AACD,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,wBAAwB;AAChC,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,KAAK,EAAE,mFAAmF;AAC1F,oBAAA,OAAO,EAAE;AACL,wBAAA,YAAY,EAAE,KAAK;AACtB,qBAAA;AACJ,iBAAA;AACD,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,KAAK,EAAE,qFAAqF;AAC5F,oBAAA,OAAO,EAAE;AACL,wBAAA,YAAY,EAAE,KAAK;AACtB,qBAAA;AACJ,iBAAA;AACD,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,mBAAmB;AACzB,oBAAA,KAAK,EAAE,4FAA4F;AACnG,oBAAA,OAAO,EAAE;AACL,wBAAA,YAAY,EAAE,KAAK;AACtB,qBAAA;AACJ,iBAAA;AACD,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,mBAAmB;AACzB,oBAAA,KAAK,EAAE,yFAAyF;AAChG,oBAAA,OAAO,EAAE;AACL,wBAAA,YAAY,EAAE,KAAK;AACtB,qBAAA;AACJ,iBAAA;AACD,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,OAAO;AACjC,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,KAAK,EAAE,sFAAsF;AAC7F,oBAAA,aAAa,EAAE,gCAAgC;AAClD,iBAAA;AACD,gBAAA;oBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,kBAAkB;AACxB,oBAAA,KAAK,EAAE,wFAAwF;AAC/F,oBAAA,OAAO,EAAE;AACL,wBAAA,YAAY,EAAE,KAAK;AACtB,qBAAA;AACJ,iBAAA;AACqB,gBAAA;oBAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,oBAAA,MAAM,EAAE,SAAS;AACjB,oBAAA,IAAI,EAAE,uBAAuB;AAC7B,oBAAA,KAAK,EAAE,uCAAuC;AAC9C,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,OAAO,EAAE;AACL,wBAAA,WAAW,EAAE,CAAC;AACd,wBAAA,UAAU,EAAE,KAAK;AACjB,wBAAA,WAAW,EAAE;AACT,4BAAA,GAAG,EAAE,IAAI;AACT,4BAAA,KAAK,EAAE,WAAW;AACrB,yBAAA;AACJ,qBAAA;AACD,oBAAA,UAAU,EAAE;AACR,wBAAA;4BACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4BAAA,MAAM,EAAE,SAAS;AACjB,4BAAA,IAAI,EAAE,SAAS;AACf,4BAAA,KAAK,EAAE,uBAAuB;AAC9B,4BAAA,QAAQ,EAAE,KAAK;AACf,4BAAA,OAAO,EAAE;AACL,gCAAA,YAAY,EAAE,KAAK;AACtB,6BAAA;AACJ,yBAAA;AACD,wBAAA;4BACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4BAAA,MAAM,EAAE,wBAAwB;AAChC,4BAAA,IAAI,EAAE,gBAAgB;AACtB,4BAAA,KAAK,EAAE,+BAA+B;AACtC,4BAAA,QAAQ,EAAE,KAAK;AACf,4BAAA,OAAO,EAAE;AACL,gCAAA,YAAY,EAAE,KAAK;AACtB,6BAAA;AACJ,yBAAA;AACD,wBAAA;4BACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4BAAA,MAAM,EAAE,SAAS;AACjB,4BAAA,IAAI,EAAE,cAAc;AACpB,4BAAA,KAAK,EAAE,6BAA6B;AACpC,4BAAA,YAAY,EAAE,GAAG;AACjB,4BAAA,QAAQ,EAAE,KAAK;AACf,4BAAA,OAAO,EAAE;AACL,gCAAA,GAAG,EAAE,CAAC;AACN,gCAAA,GAAG,EAAE,OAAO;AACZ,gCAAA,IAAI,EAAE,CAAC;AACV,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AACD,oBAAA,cAAc,EAAE,KAAK;AACxB,iBAAA;AACJ,aAAA;AACJ,SAAA;AACqB,QAAA;YAClB,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,YAAA,MAAM,EAAE,kBAAkB;AAC1B,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,mFAAmF;AAC1F,YAAA,WAAW,EAAE,sFAAsF;AACnG,YAAA,OAAO,EAAE,EACR;AACD,YAAA,UAAU,EAAE,EACX;AACJ,SAAA;AACJ,KAAA;CACJ;;;;;IC7MW,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;;;;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,4BAAA,CAAA,OAAA,CAAA,EAAA,GAAA,CAAA,CAAA;;;;AAKI,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAmD,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACd,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAa,CAAA,WAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACxD,EAA2C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAC7C,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;;;;AAEX,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAqD,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAChB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAQ,CAAA,MAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACnD,EAA0C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC5C,EAAS,CAAA,YAAA,EAAA,CAAA;IACT,EAAqF,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAAlD,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAU,CAAA,QAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACrD,EAA4C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC9C,EAAS,CAAA,YAAA,EAAA,CAAA;IACT,EAAgF,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAA7C,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAQ,CAAA,MAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACnD,EAA4D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAC9D,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;;;;AAEX,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAqD,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAChB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAa,CAAA,WAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACxD,EAA2C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC7C,EAAS,CAAA,YAAA,EAAA,CAAA;IACT,EAAiF,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAA9C,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAQ,CAAA,MAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACnD,EAA0C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC5C,EAAS,CAAA,YAAA,EAAA,CAAA;IACT,EAAqF,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAAlD,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAU,CAAA,QAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACrD,EAA4C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC9C,EAAS,CAAA,YAAA,EAAA,CAAA;IACT,EAAgF,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAA7C,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAQ,CAAA,MAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACnD,EAA4D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAC9D,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;;;;AAEX,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAoD,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACf,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAQ,CAAA,MAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACnD,EAA0C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC5C,EAAS,CAAA,YAAA,EAAA,CAAA;IACT,EAAqF,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAAlD,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAU,CAAA,QAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACrD,EAA4C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC9C,EAAS,CAAA,YAAA,EAAA,CAAA;IACT,EAAgF,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAA7C,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAQ,CAAA,MAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACnD,EAA4D,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAC9D,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;;;;AAEX,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAyD,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACpB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,wFAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAa,CAAA,WAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IACxD,EAA2C,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AAC7C,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;;;IA7Cb,EAA+C,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC7C,EAIM,CAAA,UAAA,CAAA,CAAA,EAAA,gEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACN,EAUM,CAAA,UAAA,CAAA,CAAA,EAAA,gEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACN,EAaM,CAAA,UAAA,CAAA,CAAA,EAAA,gEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACN,EAUM,CAAA,UAAA,CAAA,CAAA,EAAA,gEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACN,EAIM,CAAA,UAAA,CAAA,CAAA,EAAA,gEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACR,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IA9CE,EAA2C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3C,EAA2C,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,uBAAA,CAAA,OAAA,CAAA,IAAA,MAAA,CAAA,CAAA;IAK3C,EAA6C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7C,EAA6C,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,uBAAA,CAAA,OAAA,CAAA,IAAA,QAAA,CAAA,CAAA;IAW7C,EAA6C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7C,EAA6C,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,uBAAA,CAAA,OAAA,CAAA,IAAA,QAAA,CAAA,CAAA;IAc7C,EAA4C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5C,EAA4C,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,uBAAA,CAAA,OAAA,CAAA,IAAA,OAAA,CAAA,CAAA;IAW5C,EAAiD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjD,EAAiD,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,uBAAA,CAAA,OAAA,CAAA,IAAA,YAAA,CAAA,CAAA;;;AAS/D,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAA0I,SAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA;IAElI,EAAmC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IAC5C,EAAI,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA;IAAA,EAAmC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IAC5C,EAAI,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA;IAAA,EAAmC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IAC5C,EAAI,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA;IAAA,EAAmC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;AAC5C,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI,CAAA,EAAA,EAAA,QAAA,CAAA,CAAA;IAAQ,EAAmC,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,EAAA,EAAA,EAAA,CAAA;;;IAJpD,EAAmC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnC,EAAmC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,UAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IACnC,EAAmC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnC,EAAmC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,UAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IACnC,EAAmC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnC,EAAmC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,UAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IACnC,EAAmC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnC,EAAmC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,UAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IAC3B,EAAmC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnC,EAAmC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,UAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;;;;AAOnD,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAA0E,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IACvC,EAA+B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IACrE,EAC4C,CAAA,cAAA,CAAA,CAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;AADgC,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,SAAA,iGAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAU,mEACzF,CAD4H,EAAA,CAAA,CAAA;IAC7E,EAA0B,CAAA,YAAA,EAAA,CAAA;IACtE,EAA+C,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAA+B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAI,EAAA,CAAA;;;IAHjD,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA;IACzB,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAApC,IAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,yBAAA,CAAoC,mDAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,sBAAA,CAAA,CAAA;IAE5B,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/B,EAA+B,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,MAAA,CAAA,CAAA;;;AAO5E,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,CAAsF,CAAA,CAAA,EAAA,QAAA,CAAA,CAAA;IAC5E,EAAqC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;;;IAA9C,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArC,EAAqC,CAAA,iBAAA,CAAA,OAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;;;IANnD,EAA6E,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA,CAAA,EAAA,IAAA,CAAA,SAAA,CAAA,CAAA,EAAA,QAAA,CAAA,CAAA;IAG/D,EAAqC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;IAExD,EAEK,CAAA,UAAA,CAAA,CAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;IACL,EAAI,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA;IAAA,EAAqC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IAC9C,EAAI,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA;IAAA,EAAqC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IAC9C,EAAI,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA;IAAA,EAAqC,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IAC9C,EAAI,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA;IAAA,EAAqC,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IAC9C,EAAI,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA;IAAA,EAAqC,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAK,EAAA,EAAA,CAAA;;;IATpC,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArC,EAAqC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IAE1C,EAA+E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA/E,EAA+E,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,cAAA,IAAA,MAAA,CAAA,cAAA,CAAA,CAAA,CAAA,IAAA,MAAA,CAAA,cAAA,CAAA,CAAA,CAAA,CAAA,QAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;IAGhF,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArC,EAAqC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IACrC,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArC,EAAqC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IACrC,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArC,EAAqC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IACrC,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArC,EAAqC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IACrC,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArC,EAAqC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;;MC5EtC,mCAAmC,CAAA;AAoF5C,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAnFnC,QAAA,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;QAG9E,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAGtB,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAChD,QAAA,IAAA,CAAA,kBAAkB,GAAe,yBAAyB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAWhG;;;AAGG;QACI,IAAc,CAAA,cAAA,GAAuB,EAAE,CAAC;AAcxC,QAAA,IAAA,CAAA,sBAAsB,GAAG;YAC5B,kBAAkB,EAAE,MAAc;gBAC9B,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC;aAC1D;AACD,YAAA,eAAe,EAAE,CAAC,OAA2B,KAAK,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ;SAChG,CAAC;KA2CD;AAtDD,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;KAC9D;AAWD;;AAEG;AACH,IAAA,IACW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IACD,IAAW,MAAM,CAAC,KAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAChC,SAAA;KACJ;AAED;;;;AAIG;AACH,IAAA,IAAW,sBAAsB,GAAA;QAC7B,OAAO,IAAI,CAAC,8BAA8B,CAAC;KAC9C;IACD,IAAW,sBAAsB,CAAC,KAAuB,EAAA;AACrD,QAAA,IAAI,CAAC,8BAA8B,GAAG,KAAK,CAAC;QAC5C,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI;AAC5D,eAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE;AAC5C,YAAA,IAAI,CAAC,+BAA+B;AAChC,gBAAA,eAAe,CAAC,sCAAsC,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAC5H,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC9D,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM;AACnC,gBAAA,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAC3G,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC;YACvE,UAAU,CAAC,MAAK;gBACZ,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,oBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;AACzE,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAKM,QAAQ,GAAA;;QAEX,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC;AACxE,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;AAC7B,QAAA,gBAAgB,CAAC,OAAO,CAAC,YAAY,IAAG;YACpC,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5G,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACzB,oBAAA,KAAK,EAAE,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC;oBAC7C,KAAK,EAAE,gBAAgB,GAAG,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC;AACnE,iBAAA,CAAC,CAAC;AACN,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,KAAK,GAAG,WAAW,CACpB,MAAK;YACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACjC,EACD,IAAI,CAAC,CAAC;;QAGV,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;AACrG,SAAC,CAAC,CAAC;KACN;IAEM,WAAW,GAAA;AACd,QAAA,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;IAEO,qBAAqB,GAAA;QACzB,IAAI,IAAI,CAAC,sBAAsB,EAAE;;YAE7B,MAAM,MAAM,GAA4B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC;;AAGhF,YAAA,MAAM,4BAA4B,GAAyB,eAAe,CAAC,uBAAuB,CAC9F,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;AACxC,YAAA,4BAA4B,CAAC,MAAM,GAAG,kBAAkB,CAAC;AACzD,YAAA,4BAA4B,CAAC,UAAU,GAAG,EAAE,CAAC;;YAG7C,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvD,YAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5G,YAAA,IAAI,oBAAoB,IAAI,oBAAoB,CAAC,gBAAgB,EAAE;AAC/D,gBAAA,4BAA4B,CAAC,MAAM,GAAG,SAAS,CAAC;gBAChD,4BAA4B,CAAC,UAAU,GAAG,yBAAyB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AACvH,aAAA;AAED,YAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACxG,gBAAA,yBAAyB,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;;;YAIrE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,aAAa,CACnE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACzE,SAAA;;QAGD,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAEM,IAAA,uBAAuB,CAAC,QAA4B,EAAA;QACvD,IAAI,MAAM,GAAG,QAAQ,CAAC;AAEtB,QAAA,IAAI,QAAQ,CAAC,GAAG,KAAK,MAAM,EAAE;YACzB,MAAM,GAAG,MAAM,CAAC;AACnB,SAAA;AAAM,aAAA;;AAEH,YAAA,IAAI,QAAQ,CAAC,GAAG,KAAK,YAAY,EAAE;gBAC/B,MAAM,GAAG,YAAY,CAAC;AACzB,aAAA;AAAM,iBAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,mBAAmB,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE;gBAC1F,MAAM,GAAG,QAAQ,CAAC;AACrB,aAAA;AAAM,iBAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,mBAAmB,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;gBACzF,MAAM,GAAG,OAAO,CAAC;AACpB,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAEM,IAAA,uBAAuB,CAAC,IAAwB,EAAA;QACnD,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;KAC1C;AAEM,IAAA,4BAA4B,CAAC,cAAkC,EAAA;QAClE,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,cAAc,CAAC,MAAM,EAAE;AACvB,YAAA,IAAI,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,mBAAmB,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE;gBACzF,MAAM,GAAG,UAAU,CAAC;AACvB,aAAA;AAAM,iBAAA,IAAI,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,mBAAmB,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;gBAC/F,MAAM,GAAG,SAAS,CAAC;AACtB,aAAA;AAAM,iBAAA;gBACH,MAAM,GAAG,EAAE,CAAC;AACf,aAAA;AACJ,SAAA;QAED,IAAI,IAAI,GAAG,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;QAE/D,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,IAAI,cAAc,CAAC,GAAG,KAAK,MAAM,EAAE;gBAC/B,MAAM,GAAG,EAAE,CAAC;gBACZ,IAAI,GAAG,QAAQ,CAAC;AACnB,aAAA;AAAM,iBAAA,IAAI,cAAc,CAAC,GAAG,KAAK,YAAY,EAAE;gBAC5C,IAAI,GAAG,YAAY,CAAC;AACvB,aAAA;AAAM,iBAAA;gBACH,IAAI,GAAG,gBAAgB,CAAC;AAC3B,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,MAAM,EAAE;YACR,MAAM,IAAI,GAAG,CAAC;AACjB,SAAA;QACD,OAAO,MAAM,GAAG,IAAI,CAAC;KACxB;IAEO,sBAAsB,GAAA;QAC1B,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,MAAM,mBAAmB,IAAoB,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI;AACrG,mBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC;YAEnH,MAAM,mBAAmB,GAAG,eAAe,CAAC,sCAAsC,CAAC,mBAAmB,CAAC,CAAC;AACxG,YAAA,MAAM,0BAA0B,GAAuB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;;YAGxF,IAAI,IAAI,CAAC,+BAA+B;AACjC,mBAAA,mBAAmB,IAAI,mBAAmB,KAAK,IAAI,CAAC,+BAA+B,EAAE;gBACxF,IAAI,IAAI,CAAC,+BAA+B,EAAE;;;;oBAItC,IAAI,0BAA0B,CAAC,gBAAgB,EAAE;wBAC7C,0BAA0B,CAAC,gBAAgB,CAAC,IAAI,CAAC,+BAA+B,CAAC,GAAG,EAAE,CAAC;wBACvF,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAG;AAChD,4BAAA,0BAA0B,CAAC,gBAAgB,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjG,yBAAC,CAAC,CAAC;AACN,qBAAA;oBAED,IAAI,0BAA0B,CAAC,eAAe,EAAE;AAC5C,wBAAA,0BAA0B,CAAC,eAAe,CAAC,IAAI,CAAC,+BAA+B,CAAC;AAC5E,4BAAA,0BAA0B,CAAC,MAAM,CAAC,OAAO,CAAC;AACjD,qBAAA;AACJ,iBAAA;;;;;;;;AASD,gBAAA,IAAI,mBAAmB,CAAC,IAAI,KAAK,mBAAmB,CAAC,MAAM,EAAE;AACzD,oBAAA,MAAM,0BAA0B,GAC5B,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAC5C,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CACvD,CAAC,0BAA0B,CAAC;oBACjC,IAAI,iCAAiC,GAAG,IAAI,CAAC;AAC7C,oBAAA,IAAI,0BAA0B,EAAE;wBAC5B,iCAAiC,GAAG,EAAE,CAAC;AACvC,wBAAA,0BAA0B,CAAC,OAAO,CAAC,IAAI,IAAG;4BACtC,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC;AACtF,yBAAC,CAAC,CAAC;AACN,qBAAA;oBAED,IAAI,CAAC,sBAAsB,CAAC,QAAQ;AAChC,wBAAA,0BAA0B,CAAC,gBAAgB,CAAC,eAAe,CAAC,sBAAsB,CAC9E,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;+BACvD,iCAAiC,IAAI,EAAE,CAAC;AAClD,iBAAA;AAAM,qBAAA,IAAI,mBAAmB,CAAC,IAAI,KAAK,mBAAmB,CAAC,KAAK,EAAE;oBAC/D,IAAI,CAAC,sBAAsB,CAAC,QAAQ;AAChC,wBAAA,0BAA0B,CAAC,gBAAgB,CAAC,eAAe,CAAC,sBAAsB,CAC9E,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI;AAC1D,4BAAA;AACI,gCAAA,IAAI,EAAE;oCACF,MAAM,EAAE,IAAI,uBAAuB,CAC/B;wCACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,wCAAA,MAAM,EAAE,SAAS;AACjB,wCAAA,IAAI,EAAE,EAAE;AACR,wCAAA,KAAK,EAAE,EAAE;qCACZ,EACD,IAAI,CAAC,kBAAkB,CAAC;AAC5B,oCAAA,GAAG,EAAE,YAAY;AACpB,iCAAA;AACD,gCAAA,QAAQ,EAAE,EAAE;AACZ,gCAAA,QAAQ,EAAE,IAAI;AACjB,6BAAA;yBACJ,CAAC;AACT,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,sBAAsB,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC7C,iBAAA;gBAED,0BAA0B,CAAC,MAAM,CAAC,OAAO,GAAG,0BAA0B,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;AAE5G,gBAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAE9D,MAAM,WAAW,GAAG,eAAe,CAAC,yBAAyB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAC9F,gBAAA,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE;AAChC,oBAAA,IAAI,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACtC,wBAAA,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC9C,4BAAA,0BAA0B,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,yBAAyB,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3G,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AAED,gBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACjC,aAAA;YAED,IAAI,CAAC,+BAA+B,GAAG,eAAe,CAAC,sCAAsC,CAAC,mBAAmB,CAAC,CAAC;AACtH,SAAA;KACJ;IAEO,qBAAqB,GAAA;AACzB,QAAA,MAAM,2BAA2B,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;AAC5G,QAAA,MAAM,IAAI,GAAqB;AAC3B,YAAA,IAAI,EAAsB;AACtB,gBAAA,MAAM,EAAE,2BAA2B;AACnC,gBAAA,gBAAgB,EAAE,EAAE;AACpB,gBAAA,eAAe,EAAE,EAAE;AACnB,gBAAA,GAAG,EAAE,MAAM;AACd,aAAA;AACD,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,IAAI;SACjB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC;AAC7C,SAAA;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC;AACnD,SAAA;QACD,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC;AACxE,QAAA,gBAAgB,CAAC,OAAO,CAAC,YAAY,IAAG;AACpC,YAAA,IAAI,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE;AACzE,gBAAA,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/F,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,2BAA2B,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;AAEvD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YACxB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,IAAG;gBACtC,MAAM,MAAM,GAAG,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC;AAC7D,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,CAAC;QAE7B,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AAClC,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;AAEO,IAAA,8BAA8B,CAAC,QAAwB,EAAA;QAC3D,IAAI,WAAW,GAAqB,IAAI,CAAC;AACzC,QAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,mBAAmB,CAAC,MAAM,EAAE;AAC9C,YAAA,WAAW,GAAG;AACV,gBAAA,IAAI,EAAsB;oBACtB,MAAM,EAAE,IAAI,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC;AACtE,oBAAA,gBAAgB,EAAE,EAAE;AACpB,oBAAA,eAAe,EAAE,EAAE;AACtB,iBAAA;AACD,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,QAAQ,EAAE,IAAI;aACjB,CAAC;YACF,MAAM,cAAc,GAAyB,QAAQ,CAAC;AACtD,YAAA,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,IAAG;gBAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC;AAChE,gBAAA,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,mBAAmB,CAAC,KAAK,EAAE;AACpD,YAAA,WAAW,GAAG;AACV,gBAAA,IAAI,EAAsB;oBACtB,MAAM,EAAE,IAAI,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC;AACtE,oBAAA,gBAAgB,EAAE,EAAE;AACpB,oBAAA,eAAe,EAAE,EAAE;AACtB,iBAAA;AACD,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,QAAQ,EAAE,IAAI;aACjB,CAAC;YACF,MAAM,aAAa,GAAwB,QAAQ,CAAC;YACpD,MAAM,MAAM,GAAG,IAAI,CAAC,8BAA8B,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACvE,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC;AAC/B,YAAA,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrC,SAAA;AAAM,aAAA;AACH,YAAA,WAAW,GAAG;AACV,gBAAA,IAAI,EAAsB;oBACtB,MAAM,EAAE,IAAI,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC;AACtE,oBAAA,gBAAgB,EAAE,EAAE;AACpB,oBAAA,eAAe,EAAE,EAAE;AACtB,iBAAA;AACD,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,QAAQ,EAAE,IAAI;aACjB,CAAC;AACL,SAAA;AAED,QAAA,OAAO,WAAW,CAAC;KACtB;IAEM,cAAc,GAAA;AACjB,QAAA,MAAM,MAAM,GAAe,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,QAAA,OAAO,MAAM,CAAC;KACjB;IAEM,WAAW,GAAA;QACd,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,KAAK,GAAQ;AACb,gBAAA,IAAI,EAAsB;oBACtB,MAAM,EAAE,IAAI,uBAAuB,CAC/B;wBACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,IAAI,EAAE,EAAE;AACR,wBAAA,KAAK,EAAE,EAAE;qBACZ,EACD,IAAI,CAAC,kBAAkB,CAAC;AAC5B,oBAAA,gBAAgB,EAAE,EAAE;AACpB,oBAAA,eAAe,EAAE,EAAE;AACtB,iBAAA;AACD,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,QAAQ,EAAE,IAAI;aACjB,CAAC;AAEF,YAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE;AAC5E,gBAAA,MAAM,aAAa,GAAG;AAClB,oBAAA;wBACI,MAAM,EAAE,IAAI,uBAAuB,CAC/B;4BACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4BAAA,MAAM,EAAE,SAAS;AACjB,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,KAAK,EAAE,EAAE;yBACZ,EACD,IAAI,CAAC,kBAAkB,CAAC;AAC5B,wBAAA,GAAG,EAAE,YAAY;AACpB,qBAAA;iBAAC,CAAC;AAEP,gBAAA,KAAK,GAAG;AACJ,oBAAA,IAAI,EAAsB;wBACtB,MAAM,EAAE,IAAI,uBAAuB,CAC/B;4BACI,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,4BAAA,MAAM,EAAE,SAAS;AACjB,4BAAA,IAAI,EAAE,EAAE;AACR,4BAAA,KAAK,EAAE,EAAE;yBACZ,EACD,IAAI,CAAC,kBAAkB,CAAC;AAC/B,qBAAA;AACD,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,IAAI;iBACjB,CAAC;AACL,aAAA;YAED,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AAClC,SAAC,CAAC,CAAC;KACN;IAEM,MAAM,GAAA;QACT,UAAU,CAAC,MAAK;AACZ,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;AACtD,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACvE,IAAI,KAAK,GAAG,CAAC,EAAE;gBACX,MAAM,IAAI,GAAG,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AAC/C,gBAAA,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnE,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAEtC,gBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;gBACnC,IAAI,CAAC,sBAAsB,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAE7D,gBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACjC,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAEM,QAAQ,GAAA;QACX,UAAU,CAAC,MAAK;AACZ,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;AACtD,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACvE,IAAI,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxC,MAAM,IAAI,GAAG,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AAC/C,gBAAA,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnE,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAEtC,gBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;gBACnC,IAAI,CAAC,sBAAsB,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAE7D,gBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACjC,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAEM,MAAM,GAAA;QACT,UAAU,CAAC,MAAK;AACZ,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;AACtD,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACvE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AAClC,SAAC,CAAC,CAAC;KACN;IAEM,kCAAkC,GAAA;QACrC,OAAO,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KACzG;AAEO,IAAA,wBAAwB,CAAC,cAAmB,EAAA;AAChD,QAAA,IAAI,QAAwB,CAAC;AAE7B,QAAA,MAAM,kBAAkB,GAAuB,cAAc,CAAC,IAAI,CAAC;QACnE,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC9E,IAAI,kBAAkB,CAAC,MAAM;AACtB,eAAA,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,mBAAmB,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE;AAChG,YAAA,IAAI,cAAoC,CAAC;AACzC,YAAA,IAAI,kBAAkB,CAAC,GAAG,KAAK,MAAM,EAAE;AACnC,gBAAA,cAAc,GAAG;AACb,oBAAA,UAAU,EAAE,EAAE;iBACjB,CAAC;AACF,gBAAA,IAAI,mBAAmB,CAAC,MAAM,KAAK,SAAS,EAAE;AAC1C,oBAAA,cAAc,CAAC,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC;AACtD,iBAAA;AACD,gBAAA,cAAc,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;AACrD,gBAAA,cAAc,CAAC,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC;AACpD,aAAA;AAAM,iBAAA;AACH,gBAAA,cAAc,GAAG;AACb,oBAAA,GAAG,mBAAmB;AACtB,oBAAA,UAAU,EAAE,EAAE;iBACjB,CAAC;AACL,aAAA;AAED,YAAA,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAG;AACpC,gBAAA,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzE,aAAC,CAAC,CAAC;YAEH,QAAQ,GAAG,cAAc,CAAC;AAC7B,SAAA;aAAM,IAAI,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,KAAK,OAAO,EAAE;AACrE,YAAA,MAAM,aAAa,GAAwB;AACvC,gBAAA,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;gBACrD,IAAI,EAAE,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAClE,CAAC;YACF,QAAQ,GAAG,aAAa,CAAC;AAC5B,SAAA;AAAM,aAAA;AACH,YAAA,QAAQ,GAAG,EAAE,GAAG,mBAAmB,EAAE,CAAC;AACzC,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC;KACnB;;yIA5hBQ,mCAAmC,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;qHAAnC,mCAAmC,EAAA,SAAA,EAAA,CAAA,CAAA,oCAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,yCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;QDnBhD,EAAoG,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,aAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAK5F,EAAsC,CAAA,UAAA,CAAA,iBAAA,EAAA,SAAA,sFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,sBAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA;QACtC,EAAmE,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QACjE,EAEc,CAAA,UAAA,CAAA,CAAA,EAAA,0DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,CAAA,CAAA;QAChB,EAAwB,CAAA,YAAA,EAAA,CAAA;QACxB,EAAiF,CAAA,cAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QAC/E,EAiDc,CAAA,UAAA,CAAA,CAAA,EAAA,0DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,CAAA,CAAA;AAChB,QAAA,EAAA,CAAA,YAAA,EAAwB,EAAA,CAAA;QAE1B,EAQM,CAAA,UAAA,CAAA,EAAA,EAAA,mDAAA,EAAA,EAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AACR,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;AAER,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,wBAAA,CAAwB,CAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEpB,EAKM,CAAA,UAAA,CAAA,EAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACN,EAcM,CAAA,UAAA,CAAA,EAAA,EAAA,mDAAA,EAAA,EAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AACR,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,EAAA,CAAA;;AAlG2C,QAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,IAAA,CAAmB,CAAA,cAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAGtC,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAxB,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,cAAA,CAAwB,CAAA,YAAA,EAAA,KAAA,CAAA,CAAA,UAAA,EAAA,KAAA,CAAA,CAAA,gBAAA,EAAA,KAAA,CAAA,CAAA,yBAAA,EAAA,GAAA,CAAA,uBAAA,CAAA,CAAA,WAAA,EAAA,GAAA,CAAA,sBAAA,CAAA,CAAA;QA6D9C,EAA0C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA1C,EAA0C,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,kCAAA,EAAA,CAAA,CAAA;QAa1C,EAAkE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlE,EAAkE,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,sBAAA,IAAA,GAAA,CAAA,sBAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA;QAMlE,EAAqE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArE,EAAqE,CAAA,UAAA,CAAA,MAAA,EAAA,EAAA,GAAA,CAAA,sBAAA,IAAA,GAAA,CAAA,sBAAA,CAAA,IAAA,CAAA,MAAA,CAAA,CAAA,CAAA;;uFChEpE,mCAAmC,EAAA,CAAA;cAL/C,SAAS;2BACI,oCAAoC,EAAA,QAAA,EAAA,g9LAAA,EAAA,MAAA,EAAA,CAAA,6RAAA,CAAA,EAAA,CAAA;6DAgBtC,YAAY,EAAA,CAAA;kBADnB,SAAS;mBAAC,cAAc,CAAA;YAIjB,UAAU,EAAA,CAAA;kBADjB,SAAS;mBAAC,YAAY,CAAA;YAkCZ,MAAM,EAAA,CAAA;kBADhB,KAAK;;MAufG,yCAAyC,CAAA;AAqDlD,IAAA,WAAA,CAAY,KAAyC,EAAA;AApD7C,QAAA,IAAA,CAAA,aAAa,GAAwB,IAAI,mBAAmB,EAAE,CAAC;QAC/D,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QAGvB,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAiDlB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;AA9CD,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IACD,IAAW,IAAI,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAE1B,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;AAElE,QAAA,IAAI,oBAA0C,CAAC;AAE/C,QAAA,gBAAgB,CAAC,OAAO,CAAC,YAAY,IAAG;AACpC,YAAA,IAAI,EAAE,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACpE,mBAAA,mBAAmB,CAAC,KAAK,CAAC,KAAK,YAAY,CAAC,IAAI;oBAE/C,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;wBACvF,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAC9F,EAAE;AACH,gBAAA,IAAI,YAAY,CAAC,MAAM,KAAK,YAAY,EAAE;oBACtC,oBAAoB,GAAG,YAAY,CAAC;AACvC,iBAAA;AAAM,qBAAA;oBACH,IAAI,YAAY,CAAC,eAAe,EAAE;wBAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,4BAAA,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY;AAC3F,yBAAA,CAAC,CAAC;AACN,qBAAA;AAAM,yBAAA;wBACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;AACpG,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,oBAAoB,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC;AACpH,SAAA;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/E,IAAI,CAAC,MAAM,GAAG,aAAa,GAAG,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7E,SAAA;KACJ;AAQJ,CAAA;MAEY,wCAAwC,CAAA;AAcpD,CAAA;MAEY,uBAAuB,CAAA;AAShC,IAAA,WAAA,CAAY,mBAAmC,EAAE,aAAiD,EAAE,MAAgB,EAAA;QAChH,IAAI,CAAC,QAAQ,GAAG,IAAI,yCAAyC,CAAC,aAAa,CAAC,CAAC;AAC7E,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;AAE9B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,wCAAwC,EAAE,CAAC;QAExE,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAClD,QAAA,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC;AACrC,QAAA,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC;QAC/D,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,mBAAmB,CAAC,YAAY,CAAC;QACvE,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,mBAAmB,CAAC,WAAW,CAAC;QACrE,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,mBAAmB,CAAC,aAAa,CAAC;QACzE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC;QACjF,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC;AAC/E,QAAA,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,GAAG,eAAe,CAAC,QAAQ,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;QACnH,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC;AAEjF,QAAA,IAAI,mBAAmB,CAAC,IAAI,KAAK,mBAAmB,CAAC,MAAM,EAAE;YACzD,IAAI,CAAC,iBAAiB,CAAC,cAAc,GAA0B,mBAAoB,CAAC,cAAc,CAAC;AACtG,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAE3C,QAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,mBAAmB,CAAC,MAAM,EAAE;AACxE,YAAA,IAAI,CAAC,UAAU,GAA0B,mBAAoB,CAAC,UAAU,CAAC;AAC5E,SAAA;AAAM,aAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,mBAAmB,CAAC,KAAK,EAAE;AAC9E,YAAA,IAAI,CAAC,IAAI,GAAyB,mBAAoB,CAAC,IAAI,CAAC;AAC/D,SAAA;KACJ;IAEM,qBAAqB,GAAA;AACxB,QAAA,MAAM,MAAM,GAAQ;YAChB,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC7C,YAAA,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;YAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,YAAA,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ;AACzC,YAAA,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY;AACjD,YAAA,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW;AAC/C,YAAA,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa;AACnD,YAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB;AAC3D,YAAA,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC,gBAAgB;YACzD,qBAAqB,EAAE,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC;AAC7F,YAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB;YAC3D,OAAO,EAAE,IAAI,CAAC,OAAO;SACxB,CAAC;AAEF,QAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,mBAAmB,CAAC,MAAM,EAAE;AACxE,YAAA,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACpC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC;AACjE,SAAA;AAAM,aAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,mBAAmB,CAAC,KAAK,EAAE;AAC9E,YAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC3B,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AACJ;;MChsBY,6BAA6B,CAAA;AAJ1C,IAAA,WAAA,GAAA;QAMY,IAAoB,CAAA,oBAAA,GAAG,gBAAgB,CAAC;AAQzC,QAAA,IAAA,CAAA,UAAU,GAA2B,IAAI,YAAY,EAAY,CAAC;AAgD5E,KAAA;IA9CU,QAAQ,GAAA;QACX,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAClC;IAEM,WAAW,GAAA;AACd,QAAA,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;IAEM,oBAAoB,GAAA;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,QAAA,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAC;KAChD;IAEM,oBAAoB,GAAA;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,QAAA,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAC;KAChD;IAEO,uBAAuB,GAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,WAAW,CACpB,MAAK;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;SACf,EACD,IAAI,CAAC,CAAC;KACb;IAEO,IAAI,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,gBAAgB,EAAE;AAChD,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtD,SAAA;AAAM,aAAA;YACH,IAAI;gBACA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;;AAG7C,gBAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;AAC1B,oBAAA,IAAI,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;wBAChC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AACpC,qBAAA;AACJ,iBAAA;gBACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;;AAER,gBAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACrC,aAAA;AACJ,SAAA;KACJ;;6HAzDQ,6BAA6B,GAAA,CAAA,EAAA,CAAA;+GAA7B,6BAA6B,EAAA,SAAA,EAAA,CAAA,CAAA,6BAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,8BAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,sCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QCN1C,EACoC,CAAA,cAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAAA,CAAA;AAD0D,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,wEAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,QAAA,GAAA,MAAA,CAAA,EAAA,CAAsB,CAAU,OAAA,EAAA,SAAA,gEAAA,GAAA,EAAA,OAAA,GAAA,CAAA,oBAAA,EAAsB,CAAhC,EAAA,CAAA,CAAA,MAAA,EAAA,SAAA,+DAAA,GAAA,EAAA,OACxG,0BAAsB,CADkF,EAAA,CAAA,CAAA;QAChF,EAAW,CAAA,YAAA,EAAA,CAAA;;QAD+C,EAAsB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA;;uFDMvG,6BAA6B,EAAA,CAAA;cAJzC,SAAS;2BACI,6BAA6B,EAAA,QAAA,EAAA,wNAAA,EAAA,CAAA;gBAUhC,IAAI,EAAA,CAAA;kBADV,KAAK;YAIC,UAAU,EAAA,CAAA;kBADhB,MAAM;;;;MELE,sCAAsC,CAAA;AALnD,IAAA,WAAA,GAAA;AAMW,QAAA,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;AA6DnG,KAAA;IArDU,4CAA4C,GAAA;QAC/C,IAAI,MAAM,GAAG,QAAQ,CAAC;QAEtB,IAAI,eAAe,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,IAAG;YACtC,IAAI,CAAC,eAAe,EAAE;gBAClB,MAAM,IAAI,QAAQ,CAAC;AACtB,aAAA;YACD,eAAe,GAAG,KAAK,CAAC;YAExB,MAAM,IAAI,IAAI,CAAC,8CAA8C,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC/E,SAAC,CAAC,CAAC;QAEH,MAAM,IAAI,QAAQ,CAAC;AAEnB,QAAA,MAAM,mBAAmB,GAAmB,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;AACnF,QAAA,mBAAmB,CAAC,SAAS,GAAG,MAAM,CAAC;KAC1C;IAEO,8CAA8C,CAAC,QAAwB,EAAE,KAAa,EAAA;QAC1F,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,QAAQ,CAAC,IAAI,EAAE;AACf,YAAA,MAAM,IAAI,yBAAyB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACzD,MAAM,IAAI,yBAAyB,GAAG,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC;AACrE,SAAA;AAED,QAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,mBAAmB,CAAC,KAAK,EAAE;YAC7C,MAAM,aAAa,GAAwB,QAAQ,CAAC;AACpD,YAAA,MAAM,IAAI,IAAI,CAAC,8CAA8C,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC7F,MAAM,IAAI,IAAI,CAAC;AAClB,SAAA;AAAM,aAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,mBAAmB,CAAC,MAAM,EAAE;YACrD,MAAM,cAAc,GAAyB,QAAQ,CAAC;YACtD,MAAM,IAAI,QAAQ,CAAC;YACnB,IAAI,eAAe,GAAG,IAAI,CAAC;AAC3B,YAAA,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,IAAG;gBAC5C,IAAI,CAAC,eAAe,EAAE;oBAClB,MAAM,IAAI,QAAQ,CAAC;AACtB,iBAAA;gBACD,eAAe,GAAG,KAAK,CAAC;gBACxB,MAAM,IAAI,IAAI,CAAC,8CAA8C,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1F,aAAC,CAAC,CAAC;AACH,YAAA,MAAM,IAAI,OAAO,GAAG,yBAAyB,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAChF,SAAA;AAAM,aAAA;YACH,IAAI,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;AAC5D,YAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,mBAAmB,CAAC,IAAI,EAAE;gBAC5C,IAAI,GAAG,MAAM,CAAC;AACjB,aAAA;AACD,YAAA,MAAM,IAAI,8BAA8B,GAAG,IAAI,GAAG,SAAS,CAAC;AAC/D,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;;+IA7DQ,sCAAsC,GAAA,CAAA,EAAA,CAAA;wHAAtC,sCAAsC,EAAA,SAAA,EAAA,CAAA,CAAA,wCAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,4CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;ACVnD,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAsF,aAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAEtE,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uEAAA,GAAA,EAAA,OAAS,kDAA8C,CAAC,EAAA,CAAA,CAAA;QAAC,EAA+B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAS,CAAA,YAAA,EAAA,CAAA;QACzG,EAAK,CAAA,SAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA;QACL,EAAG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;QAAA,EAAmB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAI,EAAA,CAAA;QAE9B,EAAwD,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACpD,EAA+L,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AACnM,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;;QAN+D,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA/B,EAA+B,CAAA,iBAAA,CAAA,GAAA,CAAA,OAAA,CAAA,cAAA,CAAA,IAAA,CAAA,CAAA;QAE7F,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAnB,EAAmB,CAAA,iBAAA,CAAA,GAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA;;uFDMjB,sCAAsC,EAAA,CAAA;cALlD,SAAS;2BACI,wCAAwC,EAAA,QAAA,EAAA,mnBAAA,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA,CAAA;gBAQ1C,mBAAmB,EAAA,CAAA;kBAD1B,SAAS;mBAAC,cAAc,CAAA;YAIlB,MAAM,EAAA,CAAA;kBADZ,KAAK;;;;;;;IEXN,EAA2D,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,CAAA;;;AAYjD,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAyC,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IACpC,EAA0C,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAI,EAAA,CAAA;;;IAA9C,EAA0C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1C,EAA0C,CAAA,iBAAA,CAAA,OAAA,CAAA,OAAA,CAAA,WAAA,CAAA,kBAAA,CAAA,CAAA;;;AAVrD,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAoK,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAE5H,EAA6B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;IACvE,EAAoC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAA8C,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAoE,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAoC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,EAAA,CAAA;AAEnM,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAwD,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAEpD,EACyE,CAAA,SAAA,CAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IACzE,EAEM,CAAA,UAAA,CAAA,EAAA,EAAA,gEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AACR,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,EAAA,CAAA;;;IAV8B,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7B,EAA6B,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,WAAA,CAAA,KAAA,CAAA,CAAA;IAC7B,EAA8C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9C,EAA8C,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,WAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,CAAA;IAAoE,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,iBAAA,CAAA,MAAA,CAAA,8BAAA,EAAA,CAAA,CAAA;IAI9H,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,MAAA,CAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,CAAA,yCAAA,CAAA,cAAA,EAAA,IAAA,CAAA,CAAA;IAErE,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjC,EAAiC,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,yBAAA,EAAA,CAAA,CAAA;;;AAM7C,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAA6L,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA;IACvL,EAAyB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;AAClC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,CAAI,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA;IACE,EAAwB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IACjC,EAAI,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA;IAAA,EAAwB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IACjC,EAAI,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,CAAA,CAAA;IAAA,EAAwB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IACjC,EAAI,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA;IAAA,EAAwB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IACjC,EAAI,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA;IAAA,EAAwB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;AACjC,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI,CAAA,EAAA,EAAA,QAAA,CAAA,CAAA;IAAQ,EAAwB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;AAC7C,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI,CAAA,EAAA,EAAA,QAAA,CAAA,CAAA;IAAQ,EAAwB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;AAC7C,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAI,CAAA,EAAA,EAAA,QAAA,CAAA,CAAA;IAAQ,EAAwB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;IAC7C,EAAI,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA;IAAA,EAAwB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IACjC,EAAI,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA;IAAA,EAAyB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IAClC,EAAI,CAAA,cAAA,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA;IAAA,EAAyB,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAK,EAAA,EAAA,CAAA;;;IAZhC,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;IAEvB,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IACxB,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IACxB,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IACxB,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IACxB,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IAChB,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IACxB,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IACxB,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IAChC,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;IACxB,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;IACzB,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;;;;AAQ3B,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAsF,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AAElF,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,EAAA,CAA8I,CAAA,CAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IAEhJ,EAAM,CAAA,YAAA,EAAA,CAAA;AACN,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAwD,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAE9C,EAA4B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;AAE3C,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAiE,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACvD,EAAwB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,kGAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,UAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;IAC9B,EAAuB,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAA6B,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;IAC7D,EAAqB,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAA2B,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,EAAA,CAAA;AAG7D,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAiE,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACvD,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,0FAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAa,CAAA,WAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAA+C,EAAkC,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;AAE3H,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAyG,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACiC,EAAmC,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAClL,EAAmF,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAAzB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,0FAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAc,CAAA,YAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAAC,EAAmC,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,EAAA,EAAA,EAAA,CAAA;;;IAlBjF,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAxB,IAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,aAAA,CAAwB,CAAA,QAAA,EAAA,MAAA,CAAA,UAAA,IAAA,QAAA,CAAA,CAAA;IACxB,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAxB,IAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,aAAA,CAAwB,CAAA,QAAA,EAAA,MAAA,CAAA,UAAA,IAAA,MAAA,CAAA,CAAA;IAIhE,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,UAAA,CAAA,KAAA,CAAA,CAAA;IAG1B,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxB,EAAwB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IACP,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7B,EAA6B,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,UAAA,CAAA,MAAA,CAAA,CAAA;IAC/B,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,UAAA,CAAA,IAAA,CAAA,CAAA;IAIlB,EAA6C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7C,EAA6C,CAAA,UAAA,CAAA,UAAA,EAAA,CAAA,MAAA,CAAA,6BAAA,EAAA,CAAA,CAAA;IAAC,EAAkC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlC,EAAkC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,iBAAA,CAAA,IAAA,CAAA,CAAA;IAGwB,EAAmC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnC,EAAmC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,uBAAA,CAAA,CAAA;IACxF,EAAmC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnC,EAAmC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,kBAAA,CAAA,IAAA,CAAA,CAAA;;;;AAQ5H,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAsF,cAAA,CAAA,CAAA,EAAA,6BAAA,EAAA,EAAA,CAAA,CAAA;IAErD,EAAe,CAAA,UAAA,CAAA,YAAA,EAAA,SAAA,oHAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,IAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AAAC,IAAA,EAAA,CAAA,YAAA,EAA8B,EAAA,EAAA,CAAA;;;IAA9C,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,CAAA,CAAA;;;IAOhD,EAA0G,CAAA,SAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,EAAA,CAAA,CAAA;;;IAAlE,EAAwB,CAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA;;;AA3E1E,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,CAAgH,CAAA,CAAA,EAAA,qBAAA,CAAA,CAAA;IAE5G,EAcM,CAAA,UAAA,CAAA,CAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACN,EAeM,CAAA,UAAA,CAAA,CAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACR,EAAsB,CAAA,YAAA,EAAA,CAAA;AACtB,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,wBAAA,CAAwB,oBAAA,CAAA,CAAA,EAAA,eAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IAGlB,EAyBc,CAAA,UAAA,CAAA,CAAA,EAAA,iEAAA,EAAA,EAAA,EAAA,EAAA,EAAA,aAAA,CAAA,CAAA;IAChB,EAAgB,CAAA,YAAA,EAAA,CAAA;IAChB,EAA4B,CAAA,cAAA,CAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,CAAA;IAC1B,EAMc,CAAA,UAAA,CAAA,EAAA,EAAA,kEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,CAAA,CAAA;IAChB,EAAgB,CAAA,YAAA,EAAA,CAAA;IAChB,EAAgD,CAAA,cAAA,CAAA,EAAA,EAAA,eAAA,EAAA,EAAA,CAAA,CAAA;IAC9C,EAEc,CAAA,UAAA,CAAA,EAAA,EAAA,kEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,CAAA,CAAA;IAChB,EAAgB,CAAA,YAAA,EAAA,EAAA,EAAA,EAAA,CAAA;;;;AA7Ea,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,IAAA,CAAmB,CAAA,cAAA,EAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;IAE5C,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9B,EAA8B,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,qBAAA,EAAA,CAAA,CAAA;IAe9B,EAA6B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA7B,EAA6B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,qBAAA,EAAA,CAAA,CAAA;IAkBxB,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAArB,IAAA,EAAA,CAAA,UAAA,CAAA,WAAA,EAAA,GAAA,CAAqB,CAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;;ACdlC,MAAO,yBAA0B,SAAQ,mBAAgD,CAAA;IA2D3F,WAAY,CAAA,aAA4B,EAAU,UAAsB,EAAA;QACpE,KAAK,CAAC,aAAa,CAAC,CAAC;QADyB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AA1DjE,QAAA,IAAA,CAAA,OAAO,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;QAE9E,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QACtB,IAAkB,CAAA,kBAAA,GAAG,QAAQ,CAAC;QAE9B,IAA+B,CAAA,+BAAA,GAAG,KAAK,CAAC;QAWzC,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;QAEnB,IAAgB,CAAA,gBAAA,GAAG,GAAG,CAAC;QAEvB,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAqBf,QAAA,IAAA,CAAA,YAAY,GAA6B,IAAI,YAAY,EAAc,CAAC;AAYxE,QAAA,IAAA,CAAA,UAAU,GAA2B,IAAI,YAAY,EAAY,CAAC;QAQrE,IAAI,CAAC,EAAE,GAAG,oBAAoB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;KAC1D;AAxCD,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;IACD,IAAW,UAAU,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAEhC,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,KAAK,KAAK,MAAM,EAAE;gBAClB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC;AAClE,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC;AAClE,aAAA;AACJ,SAAA;KACJ;AAQD,IAAA,IACW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IACD,IAAW,IAAI,CAAC,KAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;AAcD;;;;;AAKG;AACI,IAAA,IAAI,CAAC,OAAsB,EAAA;QAC9B,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;AACjG,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd,IAAI,CAAC,MAAM,GAAG;AACV,gBAAA,UAAU,EAAE,EAAE;aACjB,CAAC;AACL,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACZ,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AAClB,SAAA;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,yBAAyB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAErE,QAAA,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC;AACnC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,UAAU,CAAC,MAAK;AACZ,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,mCAAmC,CAAC,CAAC;AAC1G,YAAA,IAAI,gBAAgB,EAAE;AAClB,gBAAA,IAAI,CAAC,gBAAgB;AACjB,oBAAA,gBAAgB,CAAC,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC;AAC7C,aAAA;YACD,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC7B,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;AAEG;IACI,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,IAAI,EAAE,CAAC;KACf;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,GAAG,yBAAyB,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC,CAAC;AACtG,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,aAAa,GAAG,yBAAyB,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC,CAAC;AACtG,SAAA;QAED,IAAI,CAAC,MAAM,GAAG,yBAAyB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAEpC,QAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC;KAC/C;IAEM,6BAA6B,GAAA;AAChC,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,MAAM,KAAK,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;KACnH;IAEM,8BAA8B,GAAA;QACjC,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW;cACpE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC;KAC7G;IAEM,YAAY,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;KAC5B;IAEM,qBAAqB,GAAA;QACxB,OAAO,CAAC,IAAI,CAAC,+BAA+B;eACrC,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7E,eAAA,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;KAC/B;IAEM,yBAAyB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,+BAA+B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU;AAC7E,eAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;KACtE;;qHAzJQ,yBAAyB,EAAA,EAAA,CAAA,iBAAA,CAAAwC,aAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;2GAAzB,yBAAyB,EAAA,SAAA,EAAA,CAAA,CAAA,wBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,+BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;;;AD3BtC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAA6D,wBAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;QAE/B,EAAmB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAK,EAAA,CAAA;QAEpD,EAAoB,CAAA,cAAA,CAAA,CAAA,EAAA,oBAAA,CAAA,CAAA;QAClB,EAA2D,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,CAAA,CAAA;QAC3D,EAgFiB,CAAA,UAAA,CAAA,CAAA,EAAA,mDAAA,EAAA,EAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,CAAA,CAAA;QACnB,EAAqB,CAAA,YAAA,EAAA,CAAA;AACrB,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,mBAAA,CAAmB,aAAA,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAEO,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,2DAAA,GAAA,EAAA,OAAS,aAAS,CAAC,EAAA,CAAA,CAAA;QAAC,EAA8B,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;QAAA,EAAS,CAAA,YAAA,EAAA,EAAA,EAAA,EAAA,CAAA;;;QAxFzD,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAnB,EAAmB,CAAA,iBAAA,CAAA,GAAA,CAAA,OAAA,CAAA,KAAA,CAAA,CAAA;QAGzB,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,WAAA,CAAA,CAAA;QACqD,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QAoFlE,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9B,EAA8B,CAAA,iBAAA,CAAA,GAAA,CAAA,OAAA,CAAA,WAAA,CAAA,IAAA,CAAA,CAAA;;uFC/DjE,yBAAyB,EAAA,CAAA;cALrC,SAAS;2BACI,wBAAwB,EAAA,QAAA,EAAA,uhMAAA,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA,CAAA;sFAa1B,oBAAoB,EAAA,CAAA;kBAD3B,SAAS;mBAAC,aAAa,CAAA;YAIhB,mBAAmB,EAAA,CAAA;kBAD1B,SAAS;mBAAC,YAAY,CAAA;YAIf,mBAAmB,EAAA,CAAA;kBAD1B,SAAS;mBAAC,YAAY,CAAA;YAyBhB,MAAM,EAAA,CAAA;kBADZ,KAAK;YAIC,YAAY,EAAA,CAAA;kBADlB,MAAM;YAII,IAAI,EAAA,CAAA;kBADd,KAAK;YAUC,UAAU,EAAA,CAAA;kBADhB,MAAM;YAIA,cAAc,EAAA,CAAA;kBADpB,KAAK;;;;;;;;ICnFV,EAA4O,CAAA,cAAA,CAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAArK,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,SAAA,oGAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,IAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAe,CAAoG,oBAAA,EAAA,SAAA,4GAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAgD,CAAA,oBAAA,CAAA,MAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,CAAA,CAAA,CAApJ,EAAA,CAAA,CAAA;IAAsJ,EAA0B,CAAA,YAAA,EAAA,CAAA;;;IAAjN,EAAiB,CAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,MAAA,CAAA,CAAA,MAAA,EAAA,MAAA,CAAA,IAAA,CAAA,2DAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAAA;;;AACtE,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA0K,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IACnK,EAAgC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IACvC,EAAG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IAAA,EAAgC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IACvC,EAAG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IAAA,EAAgC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAI,EAAA,CAAA;;;IAFpC,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,eAAA,CAAA,IAAA,CAAA,CAAA;IAChC,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,eAAA,CAAA,IAAA,CAAA,CAAA;IAChC,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,eAAA,CAAA,IAAA,CAAA,CAAA;;;;AAEvC,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAgI,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IACD,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,0DAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAY,CAAA,UAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAAC,EAA2B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;;;IAApC,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,UAAA,CAAA,IAAA,CAAA,CAAA;;;;IAEjL,EAAwH,CAAA,cAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA;AAAtE,IAAA,EAAA,CAAA,UAAA,CAAA,cAAA,EAAA,SAAA,oGAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,MAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAmB,CAAA,YAAA,EAAA,SAAA,kGAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAA,CAAA,IAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;IAAmD,EAAyB,CAAA,YAAA,EAAA,CAAA;;;AAA/F,IAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,MAAA,CAAA,MAAA,CAAmB,qBAAA,CAAA,gBAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAAA;;ACIrE;;;AAGG;MAKU,mBAAmB,CAAA;AAiE5B,IAAA,WAAA,CAAoB,aAA4B,EAAA;QAA5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAhEzC,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC;AAmCxE,QAAA,IAAA,CAAA,UAAU,GAA2B,IAAI,YAAY,EAAY,CAAC;AAGlE,QAAA,IAAA,CAAA,kBAAkB,GAAgD,IAAI,YAAY,EAAiC,CAAC;KA2B1H;AAtDD;;AAEG;AACH,IAAA,IACW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;IACD,IAAW,MAAM,CAAC,KAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC/B;AAED;;AAEG;AACH,IAAA,IACW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IACD,IAAW,IAAI,CAAC,KAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;AAeD,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,uBAAuB,EAAE,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC,WAAW,CAAC;KACvF;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,uBAAuB,EAAE,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC,WAAW,CAAC;KACvF;AAED,IAAA,IAAW,mBAAmB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;KAC/C;AAUD;;AAEG;IACI,QAAQ,GAAA;QACX,IAAI,SAAS,EAAE,EAAE;AACb,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtE,SAAA;KACJ;IAEM,UAAU,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAA8B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC;AACnE,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,aAAA,SAAS,EAAE,CAAC;KACpB;IAEM,cAAc,GAAA;AACjB,QAAA,IAAI,CAAC,+BAA+B,EAAE,CAAC,cAAc,EAAE,CAAC;KAC3D;IAEM,oBAAoB,CAAC,MAAc,EAAE,IAAS,EAAA;AACjD,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KAChE;IACM,gBAAgB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC,+BAA+B,EAAE,CAAC;KAC3E;IACM,uBAAuB,GAAA;QAC1B,OAAO,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;KACvE;IAEM,+BAA+B,GAAA;QAClC,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC,kBAAkB,CAAC,2BAA2B,EAAE,CAAC;KAC1F;;yGAvGQ,mBAAmB,EAAA,EAAA,CAAA,iBAAA,CAAAA,aAAA,CAAA,CAAA,CAAA,EAAA,CAAA;qGAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,UAAA,EAAA,QAAA,EAAA,EAAA,CAAA,EAAA,CAAA,iBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,yBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;QDrBhC,EAAsQ,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,CAAA,CAAA;QACtQ,EAIM,CAAA,UAAA,CAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACN,EAEM,CAAA,UAAA,CAAA,CAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACN,EAAiJ,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,CAAA,CAAA;;QAT1G,EAAY,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAC7C,EAAuF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvF,EAAuF,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,MAAA,IAAA,GAAA,CAAA,MAAA,CAAA,UAAA,IAAA,GAAA,CAAA,MAAA,CAAA,UAAA,CAAA,MAAA,KAAA,CAAA,IAAA,CAAA,GAAA,CAAA,MAAA,CAAA,OAAA,CAAA,CAAA;QAKkB,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAGrG,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;;uFCY3B,mBAAmB,EAAA,CAAA;cAJ/B,SAAS;2BACI,mCAAmC,EAAA,QAAA,EAAA,8kCAAA,EAAA,CAAA;6DAUtC,MAAM,EAAA,CAAA;kBADZ,SAAS;mBAAC,QAAQ,CAAA;YAIX,oBAAoB,EAAA,CAAA;kBAD3B,YAAY;mBAAC,aAAa,CAAA;YAOhB,MAAM,EAAA,CAAA;kBADhB,KAAK;YAYK,IAAI,EAAA,CAAA;kBADd,KAAK;YAUC,UAAU,EAAA,CAAA;kBADhB,MAAM;YAIA,kBAAkB,EAAA,CAAA;kBADxB,MAAM;YAQA,cAAc,EAAA,CAAA;kBADpB,KAAK;;;MC7CG,eAAe,CAAA;;iGAAf,eAAe,GAAA,CAAA,EAAA,CAAA;gGAAf,eAAe,EAAA,CAAA,CAAA;oGAJpB,YAAY;QACZ,aAAa,CAAA,EAAA,CAAA,CAAA;uFAGR,eAAe,EAAA,CAAA;cAhB3B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE;oBACV,kBAAkB;oBAClB,yBAAyB;oBACzB,sBAAsB;AACzB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,kBAAkB;oBAClB,yBAAyB;oBACzB,sBAAsB;AACzB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,aAAa;AAChB,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,eAAe,mBAdpB,kBAAkB;QAClB,yBAAyB;AACzB,QAAA,sBAAsB,aAQtB,YAAY;AACZ,QAAA,aAAa,aANb,kBAAkB;QAClB,yBAAyB;QACzB,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;;;;;ICZ1B,EAAyE,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAgE,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAAvE,EAAgE,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhE,EAAgE,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,IAAA,CAAA,UAAA,CAAA,QAAA,CAAA,CAAA;;;IACzI,EAAyH,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;;;IAA1B,EAAiB,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;;;IAiBpG,EACgG,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IAA5F,EAA6B,CAAA,UAAA,CAAA,iBAAA,EAAA,SAAA,kGAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,aAAA,GAAA,MAAA,CAAA,CAAA,EAAA,CAAA,CAAA;AAC7B,IAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,EAAA,CACwB,CAAA,CAAA,EAAA,uBAAA,EAAA,EAAA,CAAA,CAAA;IAG5B,EAAiB,CAAA,YAAA,EAAA,CAAA;;;;IAN6B,EAAkB,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,QAAA,CAAA,CAAA,gBAAA,EAAA,KAAA,CAAA,CAAA,WAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA,mBAAA,EAAA,GAAA,CAAA,CAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;IAEmC,EAAyC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzC,EAAyC,CAAA,UAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,mBAAA,CAAA,CAAA;IAEpE,EAA2C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3C,EAA2C,CAAA,UAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,qBAAA,CAAA,CAAA;;ACZnI;AAgBA;AACM,MAAO,mCAAoC,SAAQ,wCAAwC,CAAA;;AAApF,mBAAA,mCAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,gDAAA,CAAA,CAAA,OAAA,SAAA,2CAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,gDAAA,KAAA,gDAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,mCAAmC,SAAnC,mCAAmC,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;qHAAnC,mCAAmC,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,MAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,6BAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,4CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QAd5C,EAUK,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAVgD,QAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,oFAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,IAAA,GAAA,MAAA,CAAA,EAAA,CAAkB,mIAEjD,GAAgD,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,gBAAA,CAAA,CAAA,MAAA,CAAQ,IAFP,CAMJ,qBAAA,EAAA,SAAA,0FAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,eAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAA6D,QAAQ,CANjE,EAAA,CAAA,CAAA;QAUlE,EAAiB,CAAA,YAAA,EAAA,CAAA;;QAV+B,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,IAAA,CAAA,iDAAA,CAAA,UAAA,EAAA,CAAA,CAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,UAAA,EAAA,CAAA,EAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,IAAA,GAAA,CAAA,cAAA,CAAA,GAAA,CAAA,cAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,yCAAA,CAAA,aAAA,EAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,WAAA,CAAA,CAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,GAAA,CAAA,QAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,cAAA,CAAA,CAAA,4EAAA,CAAA,iCAAA,EAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,IAAA,CAAA,GAAA,CAAA,cAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,CAAA;oMAgC9D,6BAA6B,CAAA,CAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;uFAlB7B,mCAAmC,EAAA,CAAA;cAhB/C,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;AAYT,IAAA,CAAA;AACJ,aAAA,CAAA;;AAKD;;AAEG;AAaI,IAAM,6BAA6B,GAAA,+BAAA,GAAnC,MAAM,6BAA8B,SAAQ,6BAAqC,CAAA;AAwDpF;;AAEG;AACH,IAAA,WAAA,CACI,QAAkB,EAAA;QAElB,KAAK,CAAC,QAAQ,CAAC,CAAC;AA3Db,QAAA,IAAA,CAAA,eAAe,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAG3G,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;QACtB,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;QAExB,IAAyC,CAAA,yCAAA,GAAG,EAAE,CAAC;QAoBhD,IAAQ,CAAA,QAAA,GAAuB,EAAE,CAAC;KAkCxC;AAnDD,IAAA,IAAW,aAAa,GAAA;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACrC;IACD,IAAW,aAAa,CAAC,gBAAkC,EAAA;AACvD,QAAA,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,CAAC;QAE9C,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,gBAAgB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACnE,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAClD,SAAA;KACJ;AAUD,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;IACD,IAAW,YAAY,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,KAAK,EAAE;gBACP,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC1B,oBAAA,IAAI,CAAC,KAAK,GAAG,8BAA8B,CAAC,wBAAwB,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7F,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,KAAK,GAAG,8BAA8B,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACzE,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACnB,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,8BAA8B,CAAC;KACzC;IAWM,gBAAgB,GAAA;AACnB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;KAC/B;IAEM,gBAAgB,GAAA;AACnB,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAChC;AAEM,IAAA,YAAY,CAAC,IAAS,EAAA;QACzB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC1C;AAES,IAAA,cAAc,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,KAAK,EAAE;YACP,IAAI,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AACvE,gBAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,SAAS,CAAC,8BAA8B,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACxG,aAAA;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE;AACrF,gBAAA,IAAI,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,8BAA8B,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACjG,gBAAA,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACvB,oBAAA,UAAU,GAAG,GAAG,GAAG,UAAU,CAAC;AACjC,iBAAA;AACD,gBAAA,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC;AAC1C,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,oBAAoB,GAAG,QAAQ,GAAG,KAAK,CAAC;AAChD,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAClC,SAAA;KACJ;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;SAClB,CAAC;KACL;IAEM,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC9B;IAEM,iBAAiB,GAAA;QACpB,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC9B,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC;AACpE,aAAA;AAAM,iBAAA;gBACH,MAAM,aAAa,GAAG,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/E,gBAAA,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,aAAa,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAC;AAC5G,aAAA;AACJ,SAAA;QAED,OAAO,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,GAAG,GAAG,CAAC;KAChE;AAEM,IAAA,mBAAmB,CAAC,IAAS,EAAA;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;AAEM,IAAA,qBAAqB,CAAC,IAAS,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;KAC3B;AAEM,IAAA,YAAY,CAAC,KAAU,EAAA;QAC1B,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAChC,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,cAAc,CAAC,IAAY,EAAA;QAC9B,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,QAAA,IAAI,kBAAkB,EAAE;AACpB,YAAA,IAAI,EAAE,kBAAkB,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE;gBAC7F,kBAAkB,CAAC,cAAc,CAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EACf,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAK;oBACxB,IAAI,IAAI,CAAC,yCAAyC,EAAE;AAChD,wBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,yCAAyC,CAAC;AAC/D,wBAAA,IAAI,CAAC,yCAAyC,GAAG,EAAE,CAAC;AACpD,wBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAA;iBACJ,EACD,IAAI,EACJ,CAAC,EACD,IAAI,EACJ,IAAI,CAAC,CAAC;AACb,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,yCAAyC,GAAG,IAAI,CAAC;AACzD,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;AACO,IAAA,QAAQ,CAAC,CAAc,EAAA;QAC7B,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AAC5E,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;gBAC7F,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,WAAW,CAAC,EAAE;oBACpE,OAAO;AACH,wBAAA,qBAAqB,EAAE;AACnB,4BAAA,KAAK,EAAE,KAAK;4BACZ,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC;4BACvE,QAAQ,EAAE,uBAAuB,CAAC,KAAK;AAC1C,yBAAA;qBACJ,CAAC;AACL,iBAAA;AACJ,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE;gBAC1F,OAAO;AACH,oBAAA,UAAU,EAAE;AACR,wBAAA,KAAK,EAAE,KAAK;AACZ,wBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,qBAAqB;wBACnD,QAAQ,EAAE,uBAAuB,CAAC,KAAK;AAC1C,qBAAA;iBACJ,CAAC;AACL,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5B;AAEO,IAAA,sBAAsB,CAAC,oBAAyB,EAAE,QAA4B,EAAE,IAAY,EAAA;AAChG,QAAA,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE;AACpC,YAAA,IAAI,oBAAoB,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC1C,gBAAA,MAAM,IAAI,GAAqB;AAC3B,oBAAA,IAAI,EAAE;AACF,wBAAA,GAAG,EAAE,GAAG;wBACR,IAAI,EAAE,IAAI,GAAG,GAAG;AACnB,qBAAA;iBACJ,CAAC;AAEF,gBAAA,IAAI,OAAO,oBAAoB,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;AAC/C,oBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;oBACnB,IAAI,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AAC/F,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC5C,oBAAA,+BAA6B,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACjF,iBAAA;AAED,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,gCAAgC,CAAC,GAAW,EAAA;QAChD,IAAI,MAAM,GAAG,EAAE,CAAC;AAEhB,QAAA,IAAI,GAAG,EAAE;AACL,YAAA,MAAM,GAAG,+BAA6B,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC7D,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;;AAjOc,6BAAa,CAAA,aAAA,GAA8B,EAAE,CAAC;6HADpD,6BAA6B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;+GAA7B,6BAA6B,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,EAAA,MAAA,EAAA,wBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,mCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;AD/C1C,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAsD,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACb,EAAS,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACrD,EAAgJ,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAChJ,EAAyH,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QAC7H,EAAQ,CAAA,YAAA,EAAA,CAAA;QACR,EAAwC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA;QAIE,EAA0B,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,sEAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,YAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA,OAAA,EAAA,SAAA,8DAAA,GAAA,EAAA,OAEgB,sBAAkB,CAFlC,EAAA,CAAA,CAAA,MAAA,EAAA,SAAA,6DAAA,GAAA,EAAA,OAE4C,sBAAkB,CAF9D,EAAA,CAAA,CAAA,OAAA,EAAA,SAAA,8DAAA,CAAA,MAAA,EAAA,EAAA,OAGb,wBAAoB,CAHP,EAAA,CAAA,CAAA;QAAxD,EAGkE,CAAA,YAAA,EAAA,CAAA;QAClE,EAC0H,CAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;AAA/B,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,+DAAA,CAAA,MAAA,EAAA,EAAA,OAAS,wBAAoB,CAAC,EAAA,CAAA,CAAA;QACrH,EAAmD,CAAA,SAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AACvD,QAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;AAEb,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAA6H,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QAErH,EAMiB,CAAA,UAAA,CAAA,EAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,EAAA,CAAA,CAAA;QACrB,EAAM,CAAA,YAAA,EAAA,EAAA,EAAA,EAAA,CAAA;QAIlB,EAAyD,CAAA,cAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;QAAA,EAAW,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QAC3E,EAA6D,CAAA,SAAA,CAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,CAAA,CAAA;;;QA/BpB,EAAS,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAT,EAAS,CAAA,iBAAA,CAAA,GAAA,CAAA,KAAA,CAAA,CAAA;QACW,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAd,EAAc,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA;QACS,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAb,EAAa,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QAGrE,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAApB,QAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,KAAA,CAAoB,CAAA,UAAA,EAAA,GAAA,CAAA,QAAA,CAAA,CAAA;QAEpC,EAAwC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAxC,QAAA,EAAA,CAAA,WAAA,CAAA,WAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAAwC,CAAA,eAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QACV,EAA0B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA1B,QAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,YAAA,CAA0B,CAAA,OAAA,EAAA,GAAA,CAAA,iBAAA,EAAA,CAAA,CAAA;QAAC,EAA4C,CAAA,WAAA,CAAA,eAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAAA,CAAA,YAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,QAAA,GAAA,IAAA,GAAA,IAAA,CAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,KAAA,CAAA,WAAA,CAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,CAAA;QAKjG,EAAqC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArC,EAAqC,CAAA,WAAA,CAAA,aAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;AADnB,QAAA,EAAA,CAAA,WAAA,CAAA,UAAA,EAAA,GAAA,CAAA,QAAA,GAAA,IAAA,GAAA,IAAA,CAAwC,CAAA,cAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAK8B,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA5B,EAA4B,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAAA,CAAA;QAE7F,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAW5B,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAxB,EAAwB,CAAA,UAAA,CAAA,IAAA,EAAA,GAAA,CAAA,KAAA,CAAA,WAAA,CAAA,CAAA;QAAC,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAX,EAAW,CAAA,iBAAA,CAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QAC9C,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;ACexB,6BAA6B,GAAA,+BAAA,GAAA,UAAA,CAAA;AAZzC,IAAA,iBAAiB,CAAC;QACf,IAAI,EAAE,mBAAmB,CAAC,MAAM;AAChC,QAAA,MAAM,EAAE,wBAAwB;AAChC,QAAA,WAAW,EAAE,6DAA6D;AAC1E,QAAA,eAAe,EAAE,mCAAmC;QACpD,IAAI,EAAE,CAAC,aAAa,CAAC;KACxB,CAAC;qCAkEgB,QAAQ,CAAA,CAAA;AA5Db,CAAA,EAAA,6BAA6B,CAmOzC,CAAA;uFAnOY,6BAA6B,EAAA,CAAA;cALzC,SAAS;2BACI,+CAA+C,EAAA,QAAA,EAAA,24FAAA,EAAA,MAAA,EAAA,CAAA,gIAAA,CAAA,EAAA,CAAA;2DA4BjD,iBAAiB,EAAA,CAAA;kBADxB,SAAS;mBAAC,UAAU,CAAA;YAIb,mBAAmB,EAAA,CAAA;kBAD1B,YAAY;mBAAC,MAAM,CAAA;;;MCpBX,gBAAgB,CAAA;;mGAAhB,gBAAgB,GAAA,CAAA,EAAA,CAAA;iGAAhB,gBAAgB,EAAA,CAAA,CAAA;qGAfrB,YAAY;QACZ,cAAc;QACd,WAAW;QACX,mBAAmB;QACnB,uBAAuB;QACvB,cAAc;QACd,eAAe;QACf,kBAAkB;QAClB,YAAY;QACZ,WAAW;QACX,eAAe;QACf,qBAAqB;QACrB,aAAa,CAAA,EAAA,CAAA,CAAA;uFAGR,gBAAgB,EAAA,CAAA;cA/B5B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE;oBACV,mBAAmB;oBACnB,0BAA0B;oBAC1B,yBAAyB;oBACzB,6BAA6B;oBAC7B,sCAAsC;oBACtC,mCAAmC;oBACnC,mCAAmC;oBACnC,6BAA6B;oBAC7B,mCAAmC;AACtC,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,mBAAmB;AACtB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,cAAc;oBACd,WAAW;oBACX,mBAAmB;oBACnB,uBAAuB;oBACvB,cAAc;oBACd,eAAe;oBACf,kBAAkB;oBAClB,YAAY;oBACZ,WAAW;oBACX,eAAe;oBACf,qBAAqB;oBACrB,aAAa;AAChB,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,gBAAgB,mBA7BrB,mBAAmB;QACnB,0BAA0B;QAC1B,yBAAyB;QACzB,6BAA6B;QAC7B,sCAAsC;QACtC,mCAAmC;QACnC,mCAAmC;QACnC,6BAA6B;AAC7B,QAAA,mCAAmC,aAMnC,YAAY;QACZ,cAAc;QACd,WAAW;QACX,mBAAmB;QACnB,uBAAuB;QACvB,cAAc;QACd,eAAe;QACf,kBAAkB;QAClB,YAAY;QACZ,WAAW;QACX,eAAe;QACf,qBAAqB;AACrB,QAAA,aAAa,aAfb,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;AC9B3B;;AAEG;MACU,eAAe,CAAA;AAGxB;;;;AAIG;AACH,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtC,IAAI,CAAC,wBAAwB,GAAG,IAAI,2BAA2B,CAAC,UAAU,CAAC,CAAC;KAC/E;AAED,IAAA,IAAW,kBAAkB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC;KAChD;;iGAdQ,eAAe,EAAA,EAAA,CAAA,QAAA,CAAApF,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAf,mBAAA,eAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,eAAe,WAAf,eAAe,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAf,eAAe,EAAA,CAAA;cAJ3B,UAAU;;;MCaE,mBAAmB,CAAA;AAa5B,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAX3B,IAAQ,CAAA,QAAA,GAAgB,EAAE,CAAC;AAE1B,QAAA,IAAA,CAAA,gBAAgB,GAA2B,IAAI,OAAO,EAAiB,CAAC;AACxE,QAAA,IAAA,CAAA,kBAAkB,GAAuB,IAAI,OAAO,EAAa,CAAC;AAClE,QAAA,IAAA,CAAA,mBAAmB,GAAiC,IAAI,OAAO,EAAuB,CAAC;AAQ3F,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;aACvC,IAAI,CACD,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,CAAC;aACnD,SAAS,CAAC,KAAK,IAAG;YACf,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACxC,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACpC,aAAA;AACL,SAAC,CAAC,CAAC;KACV;IAEM,OAAO,CAAC,IAAe,EAAE,qBAA8B,EAAA;AAC1D,QAAA,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACvB,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,sBAAsB,EAAE,qBAAqB;AAChD,aAAA,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACjC,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,aAAA;AACJ,SAAA;KACJ;AAEM,IAAA,UAAU,CAAC,IAAe,EAAA;AAC7B,QAAA,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACvC,SAAA;KACJ;IAEM,YAAY,CAAC,IAAe,EAAE,QAAa,EAAA;AAC9C,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC1B,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,gBAAgB,EAAE,QAAQ;AAC7B,SAAA,CAAC,CAAC;KACN;IAEM,SAAS,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KAC/C;IAEM,WAAW,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACjD;IAEM,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;KAClD;IAEM,oBAAoB,GAAA;AACvB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;KAC/B;IAEM,qBAAqB,GAAA;AACxB,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;KACvC;IAEM,YAAY,CAAC,gBAAwB,GAAG,EAAA;QAC3C,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,OAAO,IAAI,CAAC,SAAS,CAAC;AACzB,SAAA;AAED,QAAA,OAAO,aAAa,CAAC;KACxB;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,kBAAkB,EAAE,WAAW,EAAE,CAAC;KAC1C;;yGApFQ,mBAAmB,EAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAnB,mBAAA,mBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,mBAAmB,WAAnB,mBAAmB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAnB,mBAAmB,EAAA,CAAA;cAD/B,UAAU;;;;ICZL,EAA6F,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAqB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA5B,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,iBAAA,CAAA,MAAA,CAAA,eAAA,CAAA,CAAA;;;IAClH,EAAmE,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAA2B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAAlC,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,iBAAA,CAAA,MAAA,CAAA,qBAAA,CAAA,CAAA;;;AAJlG,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAkJ,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;IAE9I,EACA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAyH,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACzH,EAAqG,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AACvG,IAAA,EAAA,CAAA,YAAA,EAAK,EAAA,CAAA;;;IAJD,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IAAC,EAAqC,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IACnE,EACA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADA,EACA,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,aAAA,EAAA,GAAA,CAAA,CAAA;IAAO,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,qBAAA,CAAA,CAAA;IAC3B,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,qBAAA,CAAA,CAAA;;;;ACMxC;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AAEF;;AAEG;AAKE,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;AA2DpD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAnDb,IAAQ,CAAA,QAAA,GAAgB,EAAE,CAAC;AAQlC;;AAEG;QACa,IAAe,CAAA,eAAA,GAAG,GAAG,CAAC;AAgCtC;;AAEG;AACI,QAAA,IAAA,CAAA,qBAAqB,GAA0B,IAAI,qBAAqB,EAAE,CAAC;QAE1E,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;QAKrB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;KACpD;AA9DD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,mBAAmB,CAAC;KAC9B;IA2DM,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;AAEjB,QAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;QAC1C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,aAAa,KAAI;;YAEvD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;;AAG5C,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAE1B,SAAC,CAAC,EACF,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,SAAS,CACtC,CAAC,IAAI,KAAO,EAAA,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAE,CACrD,CACJ,CAAC;AACF,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC;AAC5C,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;KAClF;IAEM,WAAW,GAAA;QACd,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;KAC9C;AAEM,IAAA,aAAa,CAChB,SAAiC,EACjC,KAA6B,EAC7B,KAA0B,EAAA;QAE1B,IAAI,kBAAkB,GAAqD,IAAI,CAAC;QAChF,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,KAAI;YACzB,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,kBAAkB,GAAG,IAAI,CAAC,aAAa;qBAClC,gBAAgB,CAAC,SAAS,CAAC,mCAAmC,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpF,qBAAA,IAAI,CACD,GAAG,CAAC,CAAC,MAAM,KAAI;;AAEX,oBAAA,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;AACzC,oBAAA,IAAI,cAAc,EAAE;AAChB,wBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC;AACpC,qBAAA;AAED,oBAAA,OAAO,cAAc,CAAC;iBACzB,CAAC,CAAC,CAAC;;AAGZ,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AAED,YAAA,OAAO,KAAK,CAAC;AACjB,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,kBAAkB,CAAC;KAC7B;AAED;;;AAGG;IACI,kBAAkB,GAAA;QACrB,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;AACrF,YAAA,IAAI,gBAAgB,EAAE;AAClB,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAC5B,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,cAAc;AACjB,SAAA,CAAC,CAAC;KACN;AAED;;AAEG;AACI,IAAA,0BAA0B,CAAC,uBAA+B,EAAA;AAC7D,QAAA,IAAI,CAAC,qBAAqB,GAAG,uBAAuB,CAAC;QACrD,MAAM,wBAAwB,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;QAC3H,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,GAAG,GAAG,GAAG,wBAAwB,CAAC;KAChF;;qGA5JQ,iBAAiB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;mGAAjB,iBAAiB,EAAA,SAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,kBAAA,EAAA0C,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,sCAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,gHAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,aAAA,EAAA,cAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,QAAA,EAAA,EAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,YAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,OAAA,EAAA,kDAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,2BAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,0BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QD3C9B,EAA+G,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAC7G,EAMM,CAAA,UAAA,CAAA,CAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACN,EAAmK,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AACjK,QAAA,EAAA,CAAA,SAAA,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAyF,CAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,CAAA,CAAA;QAEzF,EAA4H,CAAA,cAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;QAC1H,EAA0D,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;QAC5D,EAAkB,CAAA,YAAA,EAAA,CAAA;QAClB,EAAsG,CAAA,cAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;QACpG,EAAsD,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QACtD,EAAuD,CAAA,YAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA;QACvD,EAAsD,CAAA,YAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA;AACxD,QAAA,EAAA,CAAA,YAAA,EAAkB,EAAA,EAAA,CAAA;;;QAjByG,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAnB,EAAmB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,aAAA,CAAA,CAAA;QAOnE,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAArB,QAAA,EAAA,CAAA,UAAA,CAAA,aAAA,EAAA,KAAA,CAAqB,yCAAA,CAAA,qBAAA,EAAA,EAAA,CAAA,CAAA;QAC3D,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAb,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,GAAA,CAAa,CAAA,SAAA,EAAA,CAAA,CAAA,CAAA;QACf,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAb,EAAa,CAAA,UAAA,CAAA,SAAA,EAAA,CAAA,CAAA,CAAA;QAC/B,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAhB,QAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,CAAA,CAAgB,CAAA,SAAA,EAAA,GAAA,CAAA,2BAAA,KAAA,QAAA,GAAA,EAAA,GAAA,wBAAA,CAAA,CAAA;QAGhB,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhB,EAAgB,CAAA,UAAA,CAAA,YAAA,EAAA,CAAA,CAAA,CAAA;;uFC6BxB,iBAAiB,EAAA,CAAA;cAJ7B,SAAS;2BACI,cAAc,EAAA,QAAA,EAAA,4pDAAA,EAAA,CAAA;2DAkBjB,UAAU,EAAA,CAAA;kBADhB,KAAK;YAYC,SAAS,EAAA,CAAA;kBADf,KAAK;YAIC,aAAa,EAAA,CAAA;kBADnB,KAAK;YAOC,qBAAqB,EAAA,CAAA;kBAD3B,KAAK;;;ACzEV;;;AAGG;AACG,MAAO,+BAAgC,SAAQ,mCAAmC,CAAA;AAAxF,IAAA,WAAA,GAAA;;QACoB,IAAI,CAAA,IAAA,GAAG,cAAc,CAAC;AAC9B,QAAA,IAAA,CAAA,kBAAkB,GAAG;AACzB,YAAA,OAAO,EAAE,CAAC,yBAAyB,EAAE,wBAAwB,EAAE,2BAA2B,CAAC;YAC3F,SAAS,EAAE,CAAC,uBAAuB,CAAC;YACpC,MAAM,EAAE,CAAC,uBAAuB,CAAC;SACpC,CAAC;AAEM,QAAA,IAAA,CAAA,+BAA+B,GAAG;YACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,YAAA,SAAS,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;AAC/D,YAAA,MAAM,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;SAC/D,CAAC;AAEM,QAAA,IAAA,CAAA,wBAAwB,GAAG;AAC/B,YAAA,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,CAAC,qBAAqB,CAAC;YAClC,MAAM,EAAE,CAAC,qBAAqB,CAAC;SAClC,CAAC;AAEM,QAAA,IAAA,CAAA,gCAAgC,GAAG;YACvC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,YAAA,SAAS,EAAE,CAAC,wBAAwB,EAAE,+BAA+B,CAAC;AACtE,YAAA,MAAM,EAAE,CAAC,wBAAwB,EAAE,+BAA+B,CAAC;SACtE,CAAC;AAEM,QAAA,IAAA,CAAA,6BAA6B,GAAG;YACpC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,YAAA,SAAS,EAAE,CAAC,uBAAuB,EAAE,qBAAqB,CAAC;AAC3D,YAAA,MAAM,EAAE,CAAC,uBAAuB,EAAE,qBAAqB,CAAC;SAC3D,CAAC;AAEe,QAAA,IAAA,CAAA,oBAAoB,GAAG;AACpC,YAAA,0CAA0C,EAAE,KAAK;SACpD,CAAC;KA2RL;AAzRG;;;AAGE;IAEI,eAAe,CAAC,kBAA2B,EAAE,WAAuB,EAAA;QACvE,IAAI,CAAC,kBAAkB,EAAE;YACrB,OAAO;AACV,SAAA;QAED,IAAI,CAAC,WAAW,EAAE;YACd,OAAO;AACV,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAE3C,MAAM,qBAAqB,GAAI,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;QAC/F,IAAI,CAAC,qBAAqB,EAAE;YACxB,OAAO;AACV,SAAA;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;;AAG3B,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,8BAA8B,CAAC,OAAO,EAAE;AACrD,YAAA,qBAAqB,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;YAC3C,OAAO;AACX,SAAA;;AAGD,QAAA,IAAI,qBAAqB,CAAC,YAAY,IAAI,GAAG,EAAE;YAC3C,MAAM,MAAM,GAAG,qBAAqB,CAAC,aAAa,CAAC,kCAAkC,CAAC,CAAC;YACvF,IAAI,CAAC,MAAM,EAAE;gBACT,OAAO;AACV,aAAA;AAED,YAAA,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;AAErB,YAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;;;;AAI9B,gBAAA,qBAAqB,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;gBAC3C,OAAO;AACV,aAAA;YAED,qBAAqB,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AAC/D,SAAA;KACJ;AAED;;;;;AAKG;IACK,iCAAiC,CAAC,kBAA2B,EAAE,iBAA6B,EAAA;AAC/F,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,OAAO;AACV,SAAA;QAED,IAAI,CAAC,kBAAkB,EAAE;YACrB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;YACxD,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;KAC/D;AAED;;;;AAIG;AACI,IAAA,mBAAmB,CAAC,eAA2B,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;YACpD,OAAO;AACV,SAAA;AAED,QAAA,IAAI,eAAe,EAAE,aAAa,EAAE,iBAAiB,KAAK,CAAC,EAAE;;YAEzD,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;aAC7C,EAAE,GAAG,CAAC,CAAC;YAER,OAAO;AACV,SAAA;;AAGD,QAAA,IAAI,eAAe,CAAC,aAAa,CAAC,aAAa,IAAI,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,EAAE;AACpG,YAAA,MAAM,aAAa,GAAG,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AACxF,YAAA,IAAI,aAAa,KAAK,cAAc,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,EAAE;;AAEhG,gBAAA,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;gBAC/C,OAAO;AACV,aAAA;AACJ,SAAA;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;AAEtE,QAAA,IAAI,SAAS,CAAC;AAEd,QAAA,IAAI,mBAAmB,EAAE,oBAAoB,EAAE,mBAAmB,CAAC;AAEnE,QAAA,IAAI,kBAAkB,CAAC;;;AAGvB,QAAA,IAAI,iBAAiB,EAAE;AACnB,YAAA,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;YAEpE,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,CAAC;YACxF,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;YAC1F,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,CAAC;AAC3F,SAAA;QAED,IAAI,mBAAmB,GAAG,IAAI,CAAC;;QAG/B,IAAI,CAAC,oBAAoB,IAAI,CAAC,mBAAmB,IAAI,CAAC,mBAAmB,EAAE;YACvE,mBAAmB,GAAG,KAAK,CAAC;;AAE5B,YAAA,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAC5C,SAAA;AAED,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;AACzG,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;AAC3G,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;QAEzG,IAAI,CAAC,kBAAkB,IAAI,CAAC,mBAAmB,IAAI,CAAC,kBAAkB,EAAE;YACpE,OAAO;AACV,SAAA;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAE/C,IAAI,mBAAmB,IAAI,iBAAiB,EAAE;AAC1C,YAAA,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,aAAa,EAChE,CAAC,YAAY,CAAC,CAAC,CAAC;AACvB,SAAA;;;;QAKD,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,eAAe,EAAE,aAAa,EAAE;AAChC,gBAAA,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,wBAAwB,EAAE,WAAW,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;AAClF,aAAA;AAED,YAAA,IAAI,mBAAmB,EAAE;gBACrB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,+BAA+B,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;AAC/E,aAAA;AAED,YAAA,IAAI,mBAAmB,EAAE;AACrB,gBAAA,IAAI,mBAAmB,EAAE;AACxB,iBAAA;AAED,gBAAA,IAAI,oBAAoB,EAAE;oBACtB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,gCAAgC,EAAE,WAAW,EAAE,oBAAoB,CAAC,CAAC;AACjF,iBAAA;AAED,gBAAA,IAAI,mBAAmB,EAAE;AACxB,iBAAA;AAED,gBAAA,IAAI,iBAAiB,EAAE;oBACnB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,6BAA6B,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAExE,oBAAA,IAAI,SAAS,EAAE;wBACX,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,kBAAkB,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AACxD,qBAAA;AACJ,iBAAA;AACJ,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,UAAU,EAAE;YACxB,IAAI,eAAe,EAAE,aAAa,EAAE;AAChC,gBAAA,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,wBAAwB,EAAE,QAAQ,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;AAC/E,aAAA;AAED,YAAA,IAAI,SAAS,EAAE;gBACX,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACrD,aAAA;AAED,YAAA,IAAI,mBAAmB,EAAE;gBACrB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,+BAA+B,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC5E,aAAA;AAED,YAAA,IAAI,oBAAoB,EAAE;gBACtB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,gCAAgC,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AAC9E,aAAA;AAED,YAAA,IAAI,iBAAiB,EAAE;gBACnB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,6BAA6B,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AACxE,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YACrB,IAAI,eAAe,EAAE,aAAa,EAAE;AAChC,gBAAA,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,wBAAwB,EAAE,SAAS,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;AAChF,aAAA;AAED,YAAA,IAAI,SAAS,EAAE;gBACX,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,kBAAkB,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACtD,aAAA;AAED,YAAA,IAAI,mBAAmB,EAAE;gBACrB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,+BAA+B,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;AAC7E,aAAA;AAED,YAAA,IAAI,oBAAoB,EAAE;gBACtB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,gCAAgC,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAC/E,aAAA;AAED,YAAA,IAAI,iBAAiB,EAAE;gBACnB,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,6BAA6B,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;AACzE,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,qBAAqB,CAAC,eAA2B,EAAA;QACrD,IAAI,KAAK,GAAG,EAAE,CAAC;AACf,QAAA,MAAM,4BAA4B,GAAG,eAAe,CAAC,aAAa,CAAC;QACnE,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,MAAM,GAAG,4BAA4B,CAAC;AAC1C,QAAA,OAAO,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,MAAM,EAAE;AACR,gBAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AACjC,aAAA;AAED,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,KAAK,iBAAiB,EAAE;gBACtF,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM;AACT,aAAA;YACD,KAAK,IAAI,CAAC,CAAC;AACd,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAEO,IAAA,sBAAsB,CAAC,iBAA8B,EAAA;QACzD,IAAI,CAAC,iBAAiB,EAAE;AACpB,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,MAAM,KAAK,GAAG,iBAAiB,EAAE,KAAK,EAAE,KAAK,CAAC;QAC9C,IAAI,KAAK,KAAK,MAAM,EAAE;AAClB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;IAEO,kBAAkB,CAAC,iBAA8B,EAAE,MAAc,EAAA;AACrE,QAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE;YACtC,OAAO;AACV,SAAA;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE;AAC1D,YAAA,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,KAAK,MAAM,EAAE;AACtE,gBAAA,OAAoB,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrD,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KACpB;AACJ,CAAA;AArRE,UAAA,CAAA;AAAC,IAAA3C,UAAQ,EAAE;;8CACsD,UAAU,CAAA,CAAA;;AA2C1E,CAAA,EAAA,+BAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA;;;ACrFE,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;AAS1D,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnB;AATD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,yBAAyB,CAAC;KACpC;IAMM,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KAC1B;AAED;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,qBAAqB;YACrB,gBAAgB;AACnB,SAAA,CAAC,CAAC;KACN;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC3B,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;AAChC,YAAA,MAAM,OAAO,GAAwB,IAAI,CAAC,WAAW,CAAC,aAAc,CAAC;AACrE,YAAA,IAAI,OAAO,CAAC,iBAAiB,KAAK,CAAC,EAAE;gBACjC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAChD,oBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC5C,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAC/C,oBAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC/C,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;;iHA1CQ,uBAAuB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;yGAAvB,uBAAuB,EAAA,SAAA,EAAA,CAAA,CAAA,qBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,kBAAA,EAAAyC,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,gCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QAFrB,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;uFAE3B,uBAAuB,EAAA,CAAA;cAJnC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,qBAAqB;AAC/B,gBAAA,QAAQ,EAAE,2BAA2B;AACxC,aAAA,CAAA;;;;ACCK,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;AAS1D,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnB;AATD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,yBAAyB,CAAC;KACpC;AAMD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,qBAAqB;AACxB,SAAA,CAAC,CAAC;KACN;;iHApBQ,uBAAuB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;yGAAvB,uBAAuB,EAAA,SAAA,EAAA,CAAA,CAAA,qBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,kBAAA,EAAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,gCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QAFrB,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;uFAE3B,uBAAuB,EAAA,CAAA;cAJnC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,qBAAqB;AAC/B,gBAAA,QAAQ,EAAE,2BAA2B;AACxC,aAAA,CAAA;;;;ACCK,MAAO,wBAAyB,SAAQ,iBAAiB,CAAA;AAS3D,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnB;AATD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,0BAA0B,CAAC;KACrC;AAMD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,sBAAsB;YACtB,sBAAsB;AACzB,SAAA,CAAC,CAAC;KACN;;mHArBQ,wBAAwB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,sBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,kBAAA,EAAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QAFtB,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;uFAE3B,wBAAwB,EAAA,CAAA;cAJpC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,sBAAsB;AAChC,gBAAA,QAAQ,EAAE,2BAA2B;AACxC,aAAA,CAAA;;;;ACCK,MAAO,2BAA4B,SAAQ,iBAAiB,CAAA;AAS9D,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnB;AATD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,6BAA6B,CAAC;KACxC;AAMD;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,yBAAyB;AAC5B,SAAA,CAAC,CAAC;KACN;;yHApBQ,2BAA2B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;6GAA3B,2BAA2B,EAAA,SAAA,EAAA,CAAA,CAAA,yBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,kBAAA,EAAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,oCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QAFzB,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;uFAE3B,2BAA2B,EAAA,CAAA;cAJvC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,yBAAyB;AACnC,gBAAA,QAAQ,EAAE,2BAA2B;AACxC,aAAA,CAAA;;;;;ACJG,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAA8D,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IACqB,EAAiB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAK,EAAA,CAAA;;;IAAxD,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjC,EAAiC,CAAA,WAAA,CAAA,YAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IAAC,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,iBAAA,CAAA,MAAA,CAAA,aAAA,CAAA,CAAA;;;IAe5F,EACwB,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAiB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;;;;;;AAD1C,IAAA,EAAA,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,KAAA,GAAA,GAAA,GAAA,IAAA,CAA4B,CAAA,OAAA,EAAA,QAAA,CAAA,KAAA,CAAA,CAAA;IACT,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,iBAAA,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA;;;IAarC,EAAkG,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;;;;IAA3C,EAAoC,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,eAAA,CAAA,WAAA,CAAA,CAAA,CAAA;;;IAC3F,EAAmG,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;;;IAAjD,EAA0C,CAAA,WAAA,CAAA,kBAAA,EAAA,WAAA,CAAA,OAAA,CAAA,CAAA;;;IAC5F,EAA6H,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;;;IAA7C,EAAsC,CAAA,WAAA,CAAA,kBAAA,EAAA,OAAA,CAAA,WAAA,CAAA,CAAA;;;;IAd1H,EAUoG,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IALlG,EAA0B,CAAA,UAAA,CAAA,wBAAA,EAAA,SAAA,8EAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,WAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAiC,CAAA,wBAAA,CAAA,WAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAM5D,EAAgF,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC9E,EAAkG,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAClG,EAAmG,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACnG,EAA6H,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC/H,EAAM,CAAA,YAAA,EAAA,CAAA;AACN,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAoC,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAEmG,EAAmB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,EAAA,CAAA;;;;;;IARzI,EAAyE,CAAA,uBAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,MAAA,CAAA,KAAA,CAAA,MAAA,EAAA,GAAA,EAAA,IAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,MAAA,CAAA,KAAA,CAAA,KAAA,EAAA,GAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;AANjG,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,WAAA,CAAA,WAAA,CAAA,QAAA,CAA2C,CAAA,kBAAA,EAAA,WAAA,CAAA,WAAA,CAAA,MAAA,IAAA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,CAAA,oBAAA,EAAA,WAAA,CAAA,WAAA,CAAA,MAAA,IAAA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,kBAAA,CAAA,CAAA,YAAA,EAAA,WAAA,CAAA,WAAA,CAAA,MAAA,IAAA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA,aAAA,EAAA,WAAA,CAAA,WAAA,CAAA,MAAA,IAAA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,WAAA,CAAA,CAAA,OAAA,EAAA,WAAA,CAAA,KAAA,CAAA,CAAA;IAD3C,EAAkD,CAAA,WAAA,CAAA,eAAA,EAAA,MAAA,CAAA,eAAA,KAAA,WAAA,CAAA,CAAA;IAS1C,EAA8B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA9B,EAA8B,CAAA,UAAA,CAAA,MAAA,EAAA,WAAA,CAAA,gBAAA,CAAA,CAAA;IAC9B,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,WAAA,CAAA,OAAA,CAAA,CAAA;IACrB,EAAmD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnD,EAAmD,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,WAAA,CAAA,OAAA,IAAA,CAAA,WAAA,CAAA,gBAAA,CAAA,CAAA;IAGX,EAA0D,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA1D,IAAA,EAAA,CAAA,WAAA,CAAA,WAAA,EAAA,CAAA,EAAA,WAAA,CAAA,IAAA,IAAA,WAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAA0D,CAAA,cAAA,EAAA,EAAA,WAAA,CAAA,IAAA,IAAA,WAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA,CAAA;IAAlG,EAAuC,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,MAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,KAAA,CAAA,CAAA;IACwF,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAnB,EAAmB,CAAA,iBAAA,CAAA,WAAA,CAAA,KAAA,CAAA,CAAA;;;IArB9J,EAAsG,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IACpG,EAC+C,CAAA,UAAA,CAAA,CAAA,EAAA,4CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC/C,EAoBI,CAAA,UAAA,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IACN,EAAK,CAAA,YAAA,EAAA,CAAA;;;;IAvByE,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,KAAA,KAAA,MAAA,CAAA,YAAA,CAAA,CAAA;IAErF,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,UAAA,CAAA,SAAA,EAAA,QAAA,CAAA,OAAA,CAAA,CAAA;;;;IA0B/C,EAEkC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAAhC,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,kEAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAqB,CAAA,cAAA,CAAA,SAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAAC,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAH1C,EAA6B,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IAC3B,EAEwC,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC1C,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAHmB,EAAS,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAT,EAAS,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,MAAA,CAAA,CAAA;;;IAMlC,EAA6G,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IAC3G,EAA2B,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;;;IADO,EAAyC,CAAA,WAAA,CAAA,YAAA,EAAA,OAAA,CAAA,eAAA,CAAA,KAAA,CAAA,CAAA;IAChF,EAA2B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3B,EAA2B,CAAA,kBAAA,CAAA,GAAA,EAAA,OAAA,CAAA,eAAA,CAAA,KAAA,EAAA,EAAA,CAAA,CAAA;;;IAF/B,EAA0C,CAAA,cAAA,CAAA,CAAA,EAAA,qBAAA,CAAA,CAAA;IACxC,EACkC,CAAA,UAAA,CAAA,CAAA,EAAA,4DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IACpC,EAAsB,CAAA,YAAA,EAAA,CAAA;;;IAFgE,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,MAAA,CAAA,eAAA,CAAA,CAAA;;;ACJ/G;;AAEG;AAKG,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;AA+E1D,IAAA,WAAA,CACI,QAAkB,EACX,MAAc,EACb,aAAkC,EAClC,eAAgC,EAChC,UAA6B,EAC7B,eAAgC,EACC,MAAc,EAAA;QAEvD,KAAK,CAAC,QAAQ,CAAC,CAAC;QAPT,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACb,IAAa,CAAA,aAAA,GAAb,aAAa,CAAqB;QAClC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;QAC7B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AA5E5C;;;AAGG;QACI,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QAEd,IAAY,CAAA,YAAA,GAAG,SAAS,CAAC;QAElC,IAAM,CAAA,MAAA,GAA2B,EAAE,CAAC;AAI3C;;AAEG;QACI,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;QAOZ,IAAgB,CAAA,gBAAA,GAAmC,EAAE,CAAC;QAYtD,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;QAGlB,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;QAGxB,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AAE9B;;AAEG;QAEI,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAKlC;;;;;AAKG;QAEI,IAAsB,CAAA,sBAAA,GAAG,IAAI,CAAC;QAS7B,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;QAarB,IAAI,CAAC,YAAY,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAEhF,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,+BAA+B,GAAG,IAAI,+BAA+B,CAAC,MAAM,CAAC,CAAC;;YAEnF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;;YAExF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAE1G,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAClC,SAAA;KACJ;AAnGD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,yBAAyB,CAAC;KACpC;IAgGM,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;AAEjB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC,aAAa,KAAI;;AAEvD,YAAA,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC;YAC1C,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAClF,YAAA,IAAI,CAAC,gCAAgC,GAAG,aAAa,CAAC,sBAAsB,CAAC;YAC7E,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACjC,CAAC,CACL,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5E,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,YAAsD,KAAI;;AAEzG,gBAAA,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE;oBAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACvC,iBAAA;AAAM,qBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,iBAAA;AAAM,qBAAA;AACH,oBAAA,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;AACnG,iBAAA;AACD,gBAAA,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;aACnC,CAAC,CACL,CAAC;AACL,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC1C,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC9B,SAAA;QACD,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,+BAA+B,CAAC,CAAC;KAChG;AAEM,IAAA,WAAW,CAAC,OAAO,EAAA;AACtB,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,OAAO,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/E,SAAA;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,sBAAsB,EAAE,CAAC;KACjC;AAED;;AAEG;IAEK,uBAAuB,GAAA;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAGO,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,+BAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACnG;IAGO,yBAAyB,GAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;YACtD,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,+BAA+B,CAAC,iCAAiC,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACrH;IAEM,SAAS,GAAA;QACZ,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxD,YAAA,IAAI,OAAO,EAAE;gBACT,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,aAAA;AACJ,SAAA;KACJ;IAEM,kBAAkB,GAAA;QACrB,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;AACtF,YAAA,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,EAAE;AACvC,gBAAA,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACzB,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AAC1B,aAAA;AACJ,SAAA;;;;QAKD,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACvD,SAAA;KACJ;IAEM,UAAU,GAAA;;;AAGb,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAE7C,MAAM,UAAU,GAAqB,EAAE,CAAC;AACxC,QAAA,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC1D,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AACtC,YAAA,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE;gBAClB,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/C,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAC9B,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAChG,iBAAA;AACD,gBAAA,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnD,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,QAAA,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;AAC3B,YAAA,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,aAAA;AACJ,SAAA;KACJ;IAEM,sBAAsB,GAAA;AACzB,QAAA,MAAM,OAAO,GAAyC,IAAI,CAAC,eAAe,CAAC;AAC3E,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;YACpC,OAAO;AACV,SAAA;QAED,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAE1D,IAAI,OAAO,CAAC,sBAAsB,EAAE;gBAChC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC5D,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACvC,aAAA;AAED,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACjC,SAAA;QAED,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAE/B,IAAI,OAAO,CAAC,IAAI,EAAE;YACd,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC3C,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7D,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7D,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,gCAAgC,CAAC;KAC1E;IAEM,oBAAoB,GAAA;;;AAGvB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;QAC3C,MAAM,eAAe,GAAyC,aAAa,CAAC;QAC5E,IAAI,eAAe,CAAC,IAAI,EAAE;YACtB,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AAC5D,SAAA;QAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;YACnC,IAAI,YAAY,KAAK,aAAa,EAAE;gBAChC,MAAM,oBAAoB,GAAyC,YAAY,CAAC;gBAChF,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACzD,gBAAA,oBAAoB,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;oBACxD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC/D,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC,CAAC;KACN;IAEM,wBAAwB,GAAA;AAC3B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;YAC9B,MAAM,eAAe,GAAyC,OAAO,CAAC;YACtE,IAAI,eAAe,CAAC,IAAI,EAAE;AACtB,gBAAA,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5E,IAAI,aAAa,KAAK,eAAe,EAAE;oBACnC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAClF,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,eAAe,CAAC,OAAqC,EAAA;QACxD,MAAM,gBAAgB,GAAG,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,gBAAgB,EAAE;AAC1B,YAAA,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;AACrD,SAAA;AACD,QAAA,OAAO,gBAAgB,CAAC;KAC3B;AAEM,IAAA,aAAa,CAChB,SAAiC,EACjC,KAA6B,EAC7B,KAA0B,EAAA;QAC1B,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACxE,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,qBAAqB;AACxB,SAAA,CAAC,CAAC;KACN;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,MAAM,EAAE,EAAE;SACb,CAAC;KACL;AAEM,IAAA,cAAc,CAAC,KAA2B,EAAA;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAC7D,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,aAAa,EACnB,OAAO,CAAC,QAAQ,CACnB,CAAC;QACF,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;AAChH,aAAA,SAAS,CAAC;YACP,IAAI,EAAE,MAAM,IAAG;AACX,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,iBAAA;aACJ;YACD,KAAK,EAAE,KAAK,IAAG;AACX,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC/D,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9G,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,iBAAA;AAED,gBAAA,OAAO,KAAK,CAAC;aAChB;AACJ,SAAA,CAAC,CAAC;KACV;AAED;;;;;;;;;;;;AAYG;AACK,IAAA,oBAAoB,CAAC,WAA4B,EAAA;QACrD,IAAI,WAAW,YAAY,SAAS,EAAE;YAClC,MAAM,KAAK,GAAG,EAAE,CAAC;AACjB,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AAC5C,gBAAA,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,KAAK,CAAC;AAEhB,SAAA;aAAM,IAAI,WAAW,YAAY,SAAS,EAAE;YACzC,OAAO,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAwB,KAAI;AACzD,gBAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9C,aAAC,CAAC,CAAC;AACN,SAAA;QAED,OAAO,WAAW,CAAC,KAAK,CAAC;KAC5B;AAED;;;;;;AAMG;AACI,IAAA,wBAAwB,CAAC,UAAwC,EAAA;AACpE,QAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;QAClC,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACvE,SAAA;AAED,QAAA,IAAI,CAAC,+BAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;KACnG;AAED;;AAEE;IACK,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC;QACpC,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,KAAK,CAAC;AACzC,SAAC,CAAC,CAAC;KACN;AAED;;AAEE;IACM,aAAa,GAAA;AAEjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAE/B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,YAAA,OAAO,QAAQ,CAAC;AACnB,SAAA;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAEpD,QAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAG;AAC7B,YAAA,IAAI,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE;AAC7D,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;;YAGD,IAAI,OAAO,CAAC,QAAQ,EAAE;gBAClB,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtF,gBAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,oBAAA,OAAO,IAAI,CAAC;AACf,iBAAA;AACJ,aAAA;AAED,YAAA,OAAO,KAAK,CAAC;AACjB,SAAC,CAAC,CAAC;KACN;;AAxbQ,mBAAA,uBAAA,CAAA,IAAA,GAAA,SAAA,+BAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,uBAAuB,gQAsFR,mBAAmB,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;yGAtFlC,uBAAuB,EAAA,SAAA,EAAA,CAAA,CAAA,qBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,6BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;uBAqErB,iBAAiB,EAAA,CAAA,CAAA,CAAA;;;;;;;AD5HhC,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAA0H,CAAA,CAAA,EAAA,yBAAA,EAAA,CAAA,CAAA,CAAA;QAEtH,EAES,CAAA,UAAA,CAAA,CAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;QACT,EAAsG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,cAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QAG5B,EAAoB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,wEAAA,CAAA,MAAA,EAAA,EAAA,OAAA,GAAA,CAAA,MAAA,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA,QAAA,EAAA,SAAA,iEAAA,GAAA,EAAA,OAE5E,cAAU,CAFkE,EAAA,CAAA,CAAA;AAEhE,QAAA,EAAA,CAAA,YAAA,EAAiB,EAAA,EAAA,CAAA;AAG7C,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CACmG,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;QAG/F,EAwBK,CAAA,UAAA,CAAA,EAAA,EAAA,sCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;AACP,QAAA,EAAA,CAAA,YAAA,EAAK,EAAA,EAAA,CAAA;QAGT,EAIM,CAAA,UAAA,CAAA,EAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QACR,EAA0B,CAAA,YAAA,EAAA,CAAA;QAC1B,EAGsB,CAAA,UAAA,CAAA,EAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,EAAA,CAAA,CAAA;QACtB,EAAsB,CAAA,cAAA,CAAA,EAAA,EAAA,sBAAA,CAAA,CAAA;QACpB,EAA+B,CAAA,SAAA,CAAA,EAAA,EAAA,eAAA,CAAA,CAAA;QACjC,EAAuB,CAAA,YAAA,EAAA,CAAA;QACvB,EAAqB,CAAA,cAAA,CAAA,EAAA,EAAA,qBAAA,CAAA,CAAA;QACnB,EAAyB,CAAA,YAAA,CAAA,EAAA,CAAA,CAAA;AAC3B,QAAA,EAAA,CAAA,YAAA,EAAsB,EAAA,CAAA;;QA5D4C,EAAqD,CAAA,WAAA,CAAA,8BAAA,EAAA,GAAA,CAAA,cAAA,CAAA,CAAA;QAA3G,EAAqD,CAAA,UAAA,CAAA,eAAA,EAAA,GAAA,CAAA,cAAA,GAAA,EAAA,GAAA,GAAA,CAAA,aAAA,CAAA,CAAA;QAEvB,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,CAAA;QAGzC,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjC,EAAiC,CAAA,WAAA,CAAA,YAAA,EAAA,GAAA,CAAA,aAAA,CAAA,CAAA;QAGsB,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAApB,EAAoB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,MAAA,CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,oBAAA,CAAA,mBAAA,CAAA,OAAA,EAAA,GAAA,CAAA,gBAAA,GAAA,GAAA,CAAA,gBAAA,CAAA,MAAA,GAAA,CAAA,CAAA,CAAA;QAMxF,EAA8F,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA9F,EAA8F,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,sBAAA,GAAA,oDAAA,GAAA,EAAA,CAAA,CAAA;QAGxE,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,UAAA,CAAA,CAAA;QA4BrC,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAMP,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAlB,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,GAAA,CAAA,UAAA,CAAA,CAAA;;AC6JtC,UAAA,CAAA;AAAC,IAAAzC,UAAQ,EAAE;;;;AAGV,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;AAED,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;;;AAGP,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAED,UAAA,CAAA;AAAC,IAAAA,OAAK,EAAE;;;;AAOP,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,CAAA;uFA1KQ,uBAAuB,EAAA,CAAA;cAJnC,SAAS;2BACI,qBAAqB,EAAA,QAAA,EAAA,o7IAAA,EAAA,CAAA;;sBAyF1B,QAAQ;;sBAAI,MAAM;uBAAC,mBAAmB,CAAA;wBAxDpC,oBAAoB,EAAA,CAAA;kBAD1B,KAAK;YAKC,aAAa,EAAA,CAAA;kBADnB,SAAS;mBAAC,eAAe,CAAA;YAInB,aAAa,EAAA,CAAA;kBADnB,KAAK;YAIC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAIC,UAAU,EAAA,CAAA;kBADhB,KAAK;YAIC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAIC,cAAc,EAAA,CAAA;kBADpB,KAAK;YAOC,kBAAkB,EAAA,CAAA;kBADxB,KAAK;YAIC,SAAS,EAAA,CAAA;kBADf,KAAK;YAUC,sBAAsB,EAAA,CAAA;kBAD5B,KAAK;YAIC,iBAAiB,EAAA,CAAA;kBADvB,SAAS;mBAAC,iBAAiB,CAAA;YAqFpB,uBAAuB,EAAA,EAAA,EAKvB,eAAe,EAAA,EAAA,EAKf,yBAAyB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;;AChN/B,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;IAkBxD,WAAY,CAAA,QAAkB,EAA2C,MAAc,EAAA;QACnF,KAAK,CAAC,QAAQ,CAAC,CAAC;AAjBpB;;;AAGG;AAEI,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAchE,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,+BAA+B,GAAG,IAAI,+BAA+B,CAAC,MAAM,CAAC,CAAC;;YAEnF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;;YAExF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAE1G,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAClC,SAAA;KACJ;AArBD;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,uBAAuB,CAAC;KAClC;AAkBD;;AAEG;IACI,OAAO,GAAA;QACV,IAAI,CAAC,yBAAyB,EAAE,CAAC;KACpC;AAED;;AAEG;IACO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,KAAK,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YACxC,mBAAmB;AACtB,SAAA,CAAC,CAAC;KACN;AAED;;AAEG;IACK,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC7B;AAED;;AAEG;IAEK,uBAAuB,GAAA;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;;AAGG;IAEK,yBAAyB,GAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;YACtD,OAAO;AACV,SAAA;QAED,IAAI,CAAC,+BAA+B,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC9E;;AA1EQ,mBAAA,qBAAA,CAAA,IAAA,GAAA,SAAA,6BAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,qBAAqB,0DAkBsB,mBAAmB,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;uGAlB9D,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,kBAAA,EAAAF,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QCXlC,EAAsD,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;QACtD,EAAuD,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QACvD,EAAsD,CAAA,YAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;;ADmElD,UAAA,CAAA;AAAC,IAAA3C,UAAQ,EAAE;;;;AAGV,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;AAMD,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;;;AAOP,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,CAAA;uFA1EQ,qBAAqB,EAAA,CAAA;cAJjC,SAAS;2BACI,mBAAmB,EAAA,QAAA,EAAA,uLAAA,EAAA,CAAA;;sBAqBI,QAAQ;;sBAAI,MAAM;uBAAC,mBAAmB,CAAA;wBAXhE,aAAa,EAAA,CAAA;kBADnB,MAAM;AAqDC,SAAA,CAAA,EAAA,uBAAuB,MASvB,yBAAyB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ME9DxB,kBAAkB,CAAA;AACpB,IAAA,aAAa,CAChB,SAAiC,EACjC,KAA6B,EAC7B,KAA0B,EAAA;AAC1B,QAAA,OAAO,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;KACjF;;uGANQ,kBAAkB,GAAA,CAAA,EAAA,CAAA;AAAlB,mBAAA,kBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,kBAAkB,WAAlB,kBAAkB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAlB,kBAAkB,EAAA,CAAA;cAD9B,UAAU;;;MCVE,qBAAqB,CAAA;AAa9B,IAAA,WAAA,CAAoB,YAAiC,EAAA;QAAjC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAqB;QAX9C,IAAe,CAAA,eAAA,GAAc,IAAI,CAAC;AAMlC,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,YAAY,EAAO,CAAC;QAIrD,IAAO,CAAA,OAAA,GAAc,IAAI,CAAC;KACyB;AAEnD,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,eAAe,EAAE;AACvD,YAAA,IAAI,CAAC,iCAAiC,EAAE,WAAW,EAAE,CAAC;AAEtD,YAAA,IAAI,CAAC,iCAAiC,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;gBAC5F,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAChE,aAAC,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE;;YAE3C,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC/E,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;AACvC,SAAA;KACJ;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,iCAAiC,EAAE,WAAW,EAAE,CAAC;KACzD;;6GAlCQ,qBAAqB,EAAA,EAAA,CAAA,iBAAA,CAAAyC,mBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;uGAArB,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,CAAA;uFAArB,qBAAqB,EAAA,CAAA;cADjC,SAAS;eAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAA;mEAGjC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAIC,wBAAwB,EAAA,CAAA;kBAD9B,KAAK;YAIC,0BAA0B,EAAA,CAAA;kBADhC,MAAM;;;MC2CE,cAAc,CAAA;;+FAAd,cAAc,GAAA,CAAA,EAAA,CAAA;+FAAd,cAAc,EAAA,CAAA,CAAA;AALZ,mBAAA,cAAA,CAAA,IAAA,6BAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,SAAA,EAAA;QACP,mBAAmB;QACnB,kBAAkB;AACrB,KAAA,EAAA,OAAA,EAAA,CAhCG,eAAe;QACf,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,aAAa;QACb,WAAW;QACX,cAAc,CAAA,EAAA,CAAA,CAAA;uFA2BT,cAAc,EAAA,CAAA;cApC1B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,eAAe;oBACf,YAAY;oBACZ,YAAY;oBACZ,YAAY;oBACZ,YAAY;oBACZ,aAAa;oBACb,WAAW;oBACX,cAAc;AACjB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,iBAAiB;oBACjB,qBAAqB;oBACrB,uBAAuB;oBACvB,uBAAuB;oBACvB,wBAAwB;oBACxB,qBAAqB;oBACrB,2BAA2B;oBAC3B,uBAAuB;AAC1B,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,iBAAiB;oBACjB,qBAAqB;oBACrB,uBAAuB;oBACvB,uBAAuB;oBACvB,wBAAwB;oBACxB,qBAAqB;oBACrB,2BAA2B;oBAC3B,uBAAuB;AAC1B,iBAAA;AACD,gBAAA,SAAS,EAAE;oBACP,mBAAmB;oBACnB,kBAAkB;AACrB,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,cAAc,mBAdnB,iBAAiB;QACjB,qBAAqB;QACrB,uBAAuB;QACvB,uBAAuB;QACvB,wBAAwB;QACxB,qBAAqB;QACrB,2BAA2B;AAC3B,QAAA,uBAAuB,aA3BvB,eAAe;QACf,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,YAAY;QACZ,aAAa;QACb,WAAW;AACX,QAAA,cAAc,aAGd,iBAAiB;QACjB,qBAAqB;QACrB,uBAAuB;QACvB,uBAAuB;QACvB,wBAAwB;QACxB,qBAAqB;QACrB,2BAA2B;QAC3B,uBAAuB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;AC9B/B;MACsB,2BAA2B,CAAA;IAKtC,aAAa,CAChB,KAA6B,EAC7B,KAA0B,EAAA;QAC1B,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE;AACpE,YAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC/E,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAMD,IAAA,IAAW,YAAY,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,YAAY,EAAE;AACvH,YAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,YAAY,CAAC;AAC1D,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;;yHAzBiB,2BAA2B,GAAA,CAAA,EAAA,CAAA;6GAA3B,2BAA2B,EAAA,SAAA,EAAA,SAAA,iCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;uBAE/B,uBAAuB,EAAA,CAAA,CAAA,CAAA;;;;;uFAFnB,2BAA2B,EAAA,CAAA;cAFhD,SAAS;gBAKC,uBAAuB,EAAA,CAAA;kBAD7B,YAAY;mBAAC,uBAAuB,CAAA;;;;;ICXvC,EAAuD,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,CAAA,CAAA;;ACgBnD,MAAO,wBAAyB,SAAQ,iBAAiB,CAAA;IAqC3D,WAAY,CAAA,QAAkB,EAAU,sBAA8C,EAAA;QAClF,KAAK,CAAC,QAAQ,CAAC,CAAC;QADoB,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;AArB/E,QAAA,IAAA,CAAA,MAAM,GAAsB,IAAI,YAAY,EAAO,CAAC;AAwBvD,QAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACvB;IAhB8B,QAAQ,GAAA;QACnC,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,0BAA0B,CAAC;KACrC;IASM,eAAe,GAAA;QAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CACnF,QAAQ,CAAC,CAAC,QAAiC,KAAI;AAC3C,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAEzB,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAC1E,aAAA;AAED,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;;YAErB,UAAU,CAAC,MACP,IAAI,CAAC,eAAe,EAAE,EACtB,GAAG,CACN,CAAC;YACF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;YAC3F,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1C,SAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AACnB,YAAA,IAAI,MAAM,EAAE;AACR,gBAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,aAAA;SACJ,CACA,CAAC,CAAC;QACP,KAAK,CAAC,eAAe,EAAE,CAAC;KAC3B;IAEM,WAAW,GAAA;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC3B,SAAA;QACD,KAAK,CAAC,WAAW,EAAE,CAAC;KACvB;AAED;;AAEG;IAEK,eAAe,GAAA;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAEf,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC/E,aAAA;AACD,YAAA,MAAM,OAAO,GAAgB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AAC5D,YAAA,MAAM,eAAe,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACxD,YAAA,MAAM,aAAa,GAAkB;gBACjC,MAAM,EAAE,eAAe,CAAC,MAAM;gBAC9B,MAAM,EAAE,eAAe,CAAC,MAAM;gBAC9B,IAAI,EAAE,eAAe,CAAC,IAAI;gBAC1B,KAAK,EAAE,eAAe,CAAC,KAAK;gBAC5B,GAAG,EAAE,eAAe,CAAC,GAAG;gBACxB,KAAK,EAAE,eAAe,CAAC,KAAK;aAC/B,CAAC;YAEF,MAAM,cAAc,GAAG,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACxD,YAAA,IAAI,cAAc,EAAE;AAChB,gBAAA,MAAM,kBAAkB,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAC;gBAClE,aAAa,CAAC,cAAc,GAAG;oBAC3B,YAAY,EAAE,cAAc,CAAC,YAAY;oBACzC,WAAW,EAAE,cAAc,CAAC,WAAW;oBACvC,YAAY,EAAE,cAAc,CAAC,YAAY;oBACzC,WAAW,EAAE,cAAc,CAAC,WAAW;oBACvC,GAAG,EAAE,kBAAkB,CAAC,GAAG;oBAC3B,KAAK,EAAE,kBAAkB,CAAC,KAAK;oBAC/B,MAAM,EAAE,kBAAkB,CAAC,MAAM;oBACjC,IAAI,EAAE,kBAAkB,CAAC,IAAI;iBAChC,CAAC;AACF,gBAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;gBACtC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC5E,aAAA;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAC/D,SAAA;KACJ;AAEO,IAAA,kBAAkB,CAAC,UAAwB,EAAA;AAC/C,QAAA,IAAI,UAAU,EAAE;YACZ,IAAI,UAAU,CAAC,MAAM,EAAE;gBACnB,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC;AACvD,aAAA;iBAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE;AACtC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;AACxD,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,gBAAgB,CAAC,WAAoB,EAAA;AACzC,QAAA,MAAM,OAAO,GAAgB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AAC5D,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACxD,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;;QAGxE,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;QAClD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC;QACxD,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;QACrD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC;;AAGvD,QAAA,IAAI,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE;;AAE9B,YAAA,MAAM,MAAM,GAAG,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC;AAC5C,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,MAAM,CAAC;AAC5C,SAAA;AAED,QAAA,IAAI,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE;;AAEpC,YAAA,MAAM,MAAM,GAAG,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAClD,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,MAAM,CAAC;AAC5C,SAAA;AAED,QAAA,IAAI,IAAI,GAAG,kBAAkB,CAAC,IAAI,EAAE;AAChC,YAAA,MAAM,MAAM,GAAG,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC;AAC9C,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,IAAI,MAAM,CAAC;AAC7C,SAAA;AAED,QAAA,IAAI,KAAK,GAAG,kBAAkB,CAAC,KAAK,EAAE;AAClC,YAAA,MAAM,MAAM,GAAG,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC;AAChD,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,IAAI,MAAM,CAAC;AAC7C,SAAA;KACJ;;mHAnKQ,wBAAwB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAArC,sBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;0GAAxB,wBAAwB,EAAA,SAAA,EAAA,CAAA,CAAA,uBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;uGAAxB,GAAU,CAAA,QAAA,EAAA,CAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA;;QDjBvB,EAAwE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QACtE,EAAuD,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,CAAA,CAAA;QACzD,EAAM,CAAA,YAAA,EAAA,CAAA;;QADgB,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAb,EAAa,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,CAAA,CAAA;;ACkG/B,UAAA,CAAA;AAAC,IAAAJ,OAAK,EAAE;;;;AAoCP,CAAA,EAAA,wBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;uFAtHQ,wBAAwB,EAAA,CAAA;cAJpC,SAAS;2BACI,uBAAuB,EAAA,QAAA,EAAA,yJAAA,EAAA,CAAA;6FAU1B,WAAW,EAAA,CAAA;kBADjB,SAAS;mBAAC,aAAa,CAAA;YAIjB,WAAW,EAAA,CAAA;kBADjB,KAAK;YAIC,KAAK,EAAA,CAAA;kBADX,KAAK;YAIC,MAAM,EAAA,CAAA;kBADZ,MAAM;YAWwB,QAAQ,EAAA,CAAA;kBAAtC,YAAY;mBAAC,eAAe,CAAA;YAyDrB,eAAe,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCvFd,qBAAqB,CAAA;;6GAArB,qBAAqB,GAAA,CAAA,EAAA,CAAA;sGAArB,qBAAqB,EAAA,CAAA,CAAA;0GAJ1B,YAAY;QACZ,kBAAkB,CAAA,EAAA,CAAA,CAAA;uFAGb,qBAAqB,EAAA,CAAA;cARjC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,YAAY,EAAE,CAAC,wBAAwB,CAAC;gBACxC,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACnC,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,kBAAkB;AACrB,iBAAA;AACJ,aAAA,CAAA;;wFACY,qBAAqB,EAAA,EAAA,YAAA,EAAA,CAPf,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAGnC,YAAY;AACZ,QAAA,kBAAkB,aAHZ,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;;;;;ICDhC,EAAoF,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;;;IAA1D,EAAkD,CAAA,sBAAA,CAAA,+BAAA,EAAA,OAAA,CAAA,SAAA,EAAA,EAAA,CAAA,CAAA;;;IAF9E,EAA2C,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACzC,EAAuE,CAAA,SAAA,CAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,CAAA;IACvE,EAAoF,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACtF,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IAFE,EAAmB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAnB,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAmB,CAAA,WAAA,EAAA,KAAA,CAAA,CAAA;IAC3B,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;;IAetB,EAAsG,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;;IAT5G,EAAqD,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACnD,EAA4H,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,OAAA,CAAA,QAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAGhH,EAAgB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,EAAA,CAAA;IAGjC,EAAwC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAC,CAAA,MAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IAChD,EAA2B,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACzB,EAAsG,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;AACxG,IAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;IAEV,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;IAX6D,EAAiD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjD,EAAiD,CAAA,WAAA,CAAA,oBAAA,EAAA,MAAA,CAAA,OAAA,IAAA,MAAA,CAAA,SAAA,CAAA,CAAA;IAG/G,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,iBAAA,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA;IAKT,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAApC,IAAA,EAAA,CAAA,UAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,WAAA,CAAA,QAAA,CAAA,CAAoC,CAAA,yBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAO,KAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;;IAQvD,EAAgJ,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;;AAArE,IAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,IAAA,CAAe,CAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;;;IAGtF,EAAiG,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IACjG,EAAyC,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;IAAA,EAAgC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;;IAAvC,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,iBAAA,CAAA,OAAA,CAAA,cAAA,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA,CAAA;;;IAH7E,EAAqD,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACnD,EAA+H,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAC7H,EAAiG,CAAA,UAAA,CAAA,CAAA,EAAA,qEAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjG,EAAgF,CAAA,UAAA,CAAA,CAAA,EAAA,6DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IAClF,EAAI,CAAA,YAAA,EAAA,CAAA;IACN,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;;;;IAJqB,EAA4C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA5C,IAAA,EAAA,CAAA,WAAA,CAAA,iBAAA,EAAA,OAAA,CAAA,KAAA,CAAA,SAAA,GAAA,KAAA,CAA4C,CAAA,kBAAA,EAAA,OAAA,CAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,CAAA;IAC7D,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA/B,IAAA,EAAA,CAAA,UAAA,CAAA,kBAAA,EAAA,IAAA,CAA+B,CAAA,yBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IACvC,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,QAAA,CAAA,IAAA,IAAA,CAAA,QAAA,CAAA,MAAA,CAAA,CAAA;;;IAJ3C,EAAgJ,CAAA,UAAA,CAAA,CAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;IAChJ,EAKe,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;;;IANK,EAAkC,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,OAAA,IAAA,QAAA,CAAA,OAAA,CAAA,CAAA;IACvC,EAAoC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApC,EAAoC,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,QAAA,CAAA,OAAA,IAAA,CAAA,QAAA,CAAA,OAAA,CAAA,CAAA;;;IAWjD,EAAiG,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IACjG,EAA6D,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAuB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA9B,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,iBAAA,CAAA,QAAA,CAAA,YAAA,CAAA,CAAA;;;;IAFtF,EAAiC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAC/B,EAAiG,CAAA,UAAA,CAAA,CAAA,EAAA,sDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjG,EAA2F,CAAA,UAAA,CAAA,CAAA,EAAA,8CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC3F,EAEkD,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAFmC,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,0DAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,QAAA,GAAA,WAAA,CAAA,SAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,QAAiB,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAE9D,EAAgB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAI,EAAA,CAAA;;;;;;IAJvD,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA/B,IAAA,EAAA,CAAA,UAAA,CAAA,kBAAA,EAAA,IAAA,CAA+B,CAAA,yBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IACvC,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,YAAA,CAAA,CAAA;IAE5B,EAA4E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA5E,IAAA,EAAA,CAAA,WAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,KAAA,CAAA,SAAA,GAAA,KAAA,GAAA,GAAA,IAAA,MAAA,CAAA,KAAA,CAAA,SAAA,GAAA,KAAA,CAAA,CAA4E,CAAA,kBAAA,EAAA,MAAA,CAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,CAAA;IAC5B,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,iBAAA,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA;;;IAOlE,EAAiG,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IACjG,EAA6D,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAuB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA9B,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,iBAAA,CAAA,QAAA,CAAA,YAAA,CAAA,CAAA;;;IAFtF,EAAiC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAC/B,EAAiG,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjG,EAA2F,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC3F,EACkD,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAgB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IACtE,EAA6D,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAsC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;;;;IAJ3F,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA/B,IAAA,EAAA,CAAA,UAAA,CAAA,kBAAA,EAAA,IAAA,CAA+B,CAAA,yBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAAA,KAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IACvC,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,YAAA,CAAA,CAAA;IACiB,EAAwB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAxB,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,QAAA,CAAA,IAAA,CAAwB,+BAAA,CAAA,aAAA,EAAA,QAAA,CAAA,WAAA,CAAA,CAAA;IACrE,EAA+C,CAAA,WAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,CAAA;IAAC,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,iBAAA,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA;IAClC,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,CAAA;IAAC,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,iBAAA,CAAA,MAAA,CAAA,0BAAA,CAAA,QAAA,CAAA,CAAA,CAAA;;;IAOnG,EAAiG,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IACjG,EAA6D,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAuB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAA9B,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,iBAAA,CAAA,QAAA,CAAA,YAAA,CAAA,CAAA;;;IAFtF,EAAiC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAC/B,EAAiG,CAAA,UAAA,CAAA,CAAA,EAAA,uDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,EAAA,CAAA,CAAA;IACjG,EAA2F,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC3F,EACkD,CAAA,cAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAgB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAI,CAAA,YAAA,EAAA,CAAA;IACtE,EAA6D,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAsC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;;;;IAJ3F,EAA+B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAA/B,IAAA,EAAA,CAAA,UAAA,CAAA,kBAAA,EAAA,IAAA,CAA+B,CAAA,yBAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAAA,KAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IACvC,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,YAAA,CAAA,CAAA;IACkE,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlB,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,IAAA,EAAA,EAAA,CAAA,aAAA,CAAA,CAAA;IAChH,EAA+C,CAAA,WAAA,CAAA,kBAAA,EAAA,MAAA,CAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,CAAA;IAAC,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,iBAAA,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA;IAClC,EAA4B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5B,EAA4B,CAAA,UAAA,CAAA,IAAA,EAAA,MAAA,CAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,CAAA;IAAC,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtC,EAAsC,CAAA,iBAAA,CAAA,MAAA,CAAA,0BAAA,CAAA,QAAA,CAAA,CAAA,CAAA;;;IAMrG,EAA8F,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,CAAA,CAAA;;;IAA/D,EAAuD,CAAA,sBAAA,CAAA,+BAAA,EAAA,QAAA,CAAA,SAAA,EAAA,EAAA,CAAA,CAAA;;;IACtF,EACuD,CAAA,SAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA;;;IAArD,EAAsB,CAAA,UAAA,CAAA,QAAA,EAAA,QAAA,CAAA,MAAA,CAAA,CAAA;;;IAFxB,EAA8F,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAC9F,EACuD,CAAA,UAAA,CAAA,CAAA,EAAA,0DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA;;;IAFhD,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,CAAA,QAAA,CAAA,SAAA,CAAA,CAAA;IACX,EAA0E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1E,EAA0E,CAAA,UAAA,CAAA,MAAA,EAAA,QAAA,CAAA,MAAA,KAAA,SAAA,IAAA,QAAA,CAAA,MAAA,KAAA,IAAA,IAAA,CAAA,QAAA,CAAA,SAAA,CAAA,CAAA;;ACtEhG;;;;;;;;;;;AAWG;AAKG,MAAO,gBAAiB,SAAQ,iBAAiB,CAAA;AAiDnD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnB;AAED;;;AAGG;AACI,IAAA,cAAc,CAAC,KAAU,EAAA;AAC5B,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,GAAG,CAAC;AACd,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7D,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACzB,IAAI;gBACA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACZ,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACJ,SAAA;QAED,OAAO,CAAA,EAAG,KAAK,CAAA,CAAE,CAAC;KACrB;AAED;;;;AAIG;AACI,IAAA,WAAW,CAAC,IAAiB,EAAA;QAChC,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,OAAO,IAAI,CAAC,kBAAkB,CAAC;AAClC,SAAA;QACD,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC;AACpC,aAAA;AAAM,iBAAA;gBACH,OAAO,IAAI,CAAC,oBAAoB,CAAC;AACpC,aAAA;AACJ,SAAA;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED;;;;AAIG;AACI,IAAA,0BAA0B,CAAC,IAAiB,EAAA;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACzF;AAED;;;;AAIG;AACI,IAAA,0BAA0B,CAAC,IAAiB,EAAA;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACzF;AAED;;;AAGG;IACO,WAAW,GAAA;QACjB,OAAO;AACH,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,SAAS,EAAE,EAAE;SAChB,CAAC;KACL;AAED,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,kBAAkB,CAAC;KAC7B;;mGAhIQ,gBAAgB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;kGAAhB,gBAAgB,EAAA,SAAA,EAAA,CAAA,CAAA,aAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,sBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;;;;;;;;ADpB7B,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAsD,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAIlD,EAGe,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QACf,EAAmC,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;QAAA,EAAY,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAK,EAAA,CAAA;QAItD,EAYe,CAAA,UAAA,CAAA,CAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;QAIf,EAQc,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;QAGd,EAQc,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;QAGd,EAQc,CAAA,UAAA,CAAA,EAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;QAGd,EAQc,CAAA,UAAA,CAAA,EAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;QAGd,EAIc,CAAA,UAAA,CAAA,EAAA,EAAA,wCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;QAChB,EAAM,CAAA,YAAA,EAAA,CAAA;;QAzEa,EAA0B,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA1B,EAA0B,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,IAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAIN,EAAY,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAZ,EAAY,CAAA,iBAAA,CAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAIlB,EAAU,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAV,EAAU,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;;uFCQ9B,gBAAgB,EAAA,CAAA;cAJ5B,SAAS;2BACI,aAAa,EAAA,QAAA,EAAA,k2IAAA,EAAA,CAAA;2DAQhB,MAAM,EAAA,CAAA;kBADZ,KAAK;YAOC,OAAO,EAAA,CAAA;kBADb,KAAK;YAOC,SAAS,EAAA,CAAA;kBADf,KAAK;YAOC,KAAK,EAAA,CAAA;kBADX,KAAK;YAOC,gBAAgB,EAAA,CAAA;kBADtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAOxC,kBAAkB,EAAA,CAAA;kBADxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAO1C,oBAAoB,EAAA,CAAA;kBAD1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAO5C,oBAAoB,EAAA,CAAA;kBAD1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;MCN1C,WAAW,CAAA;AAqFpB,IAAA,WAAA,CAAY,KAAa,EAAE,KAAa,EAAS,UAA8B,EAAE,EAAA;QAAhC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAyB;AAhBjF;;AAEG;QACI,IAAM,CAAA,MAAA,GAA4B,IAAI,CAAC;AAE9C;;AAEG;QACI,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAEvB;;;AAGG;QACI,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;AAGlB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;AAE/C,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;AAC1D,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,SAAA;KACJ;AAtFD;;AAEG;IACH,IAAW,KAAK,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;AAED;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAwED;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;QAClB,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACxC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,MAAM,WAAW,GAAG,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAEjE,QAAA,QAAQ,WAAW;YACf,KAAK,cAAc,CAAC,QAAQ;AACxB,gBAAA,OAAO,oBAAoB,CAAC;YAChC,KAAK,cAAc,CAAC,KAAK;AACrB,gBAAA,OAAO,iBAAiB,CAAC;YAC7B,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,OAAO,mBAAmB,CAAC;YAC/B,KAAK,cAAc,CAAC,IAAI;AACpB,gBAAA,OAAO,gBAAgB,CAAC;YAC5B,KAAK,cAAc,CAAC,QAAQ;AACxB,gBAAA,OAAO,oBAAoB,CAAC;YAChC,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,OAAO,mBAAmB,CAAC;YAC/B,KAAK,cAAc,CAAC,OAAO;AACvB,gBAAA,OAAO,mBAAmB,CAAC;AAC/B,YAAA;AACI,gBAAA,OAAO,gBAAgB,CAAC;AAC/B,SAAA;KACJ;AAED;;AAEG;IACI,YAAY,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB,SAAA;KACJ;AACJ;;MCrLY,aAAa,CAAA;;6FAAb,aAAa,GAAA,CAAA,EAAA,CAAA;8FAAb,aAAa,EAAA,CAAA,CAAA;kGATlB,YAAY;QACZ,UAAU;QACV,kBAAkB;QAClB,YAAY,CAAA,EAAA,CAAA,CAAA;uFAMP,aAAa,EAAA,CAAA;cAdzB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE;oBACV,gBAAgB;AACnB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,UAAU;oBACV,kBAAkB;oBAClB,YAAY;AACf,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,gBAAgB;AACnB,iBAAA;AACJ,aAAA,CAAA;;wFACY,aAAa,EAAA,EAAA,YAAA,EAAA,CAZlB,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAGhB,YAAY;QACZ,UAAU;QACV,kBAAkB;AAClB,QAAA,YAAY,aAGZ,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;IChBpB,EAAqD,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACnD,EAAgG,CAAA,SAAA,CAAA,CAAA,EAAA,aAAA,EAAA,CAAA,CAAA,CAAA;IAClG,EAAe,CAAA,qBAAA,EAAA,CAAA;;;IADA,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAtB,IAAA,EAAA,CAAA,UAAA,CAAA,QAAA,EAAA,OAAA,CAAA,MAAA,CAAsB,4BAAA,CAAA,OAAA,EAAA,OAAA,CAAA,KAAA,CAAA,CAAA;;;IAFvC,EAAqD,CAAA,cAAA,CAAA,CAAA,EAAA,iBAAA,CAAA,CAAA;IACnD,EAEe,CAAA,UAAA,CAAA,CAAA,EAAA,+DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACjB,EAAkB,CAAA,YAAA,EAAA,CAAA;;;IAHe,EAAU,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAV,EAAU,CAAA,UAAA,CAAA,SAAA,EAAA,QAAA,CAAA,CAAA;;ACyCvC,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;AAJ5D,IAAA,WAAA,GAAA;;AAKI;;AAEG;QACI,IAAa,CAAA,aAAA,GAA+B,EAAE,CAAC;QA6C9C,IAAe,CAAA,eAAA,GAAwB,EAAE,CAAC;AACrD,KAAA;AAtCG;;AAEG;IACH,IACW,UAAU,CAAC,KAA0B,EAAA;AAC5C,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAChD;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED;;AAEG;AACH,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,uBAAuB,CAAC;KAClC;AAEO,IAAA,iBAAiB,CAAC,KAA0B,EAAA;AAChD,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAA+B,CAAC;AAE1D,QAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;AAEtC,YAAA,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACrB,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzC,gBAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,aAAA;AAAM,iBAAA;gBACH,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;KACxD;;AA/CQ,mBAAA,qBAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,kCAAA,CAAA,CAAA,OAAA,SAAA,6BAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,kCAAA,KAAA,kCAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,qBAAqB,SAArB,qBAAqB,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;uGAArB,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,mBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,aAAA,EAAA,cAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QD3ClC,EAAyG,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;QACvG,EAIkB,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,CAAA;QACpB,EAAa,CAAA,YAAA,EAAA,CAAA;;AANa,QAAA,EAAA,CAAA,UAAA,CAAA,aAAA,EAAA,KAAA,CAAqB,kCAAA,CAAA,qBAAA,EAAA,EAAA,CAAA,CAAA;QACV,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAhB,EAAgB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,aAAA,CAAA,CAAA;;uFC0CxC,qBAAqB,EAAA,CAAA;cAJjC,SAAS;2BACI,mBAAmB,EAAA,QAAA,EAAA,iaAAA,EAAA,CAAA;gBAatB,YAAY,EAAA,CAAA;kBADlB,KAAK;YAOK,UAAU,EAAA,CAAA;kBADpB,KAAK;;;MCvCG,kBAAkB,CAAA;;uGAAlB,kBAAkB,GAAA,CAAA,EAAA,CAAA;mGAAlB,kBAAkB,EAAA,CAAA,CAAA;uGARvB,YAAY;QACZ,aAAa;QACb,YAAY,CAAA,EAAA,CAAA,CAAA;uFAMP,kBAAkB,EAAA,CAAA;cAb9B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE;oBACV,qBAAqB;AACxB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,aAAa;oBACb,YAAY;AACf,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,qBAAqB;AACxB,iBAAA;AACJ,aAAA,CAAA;;wFACY,kBAAkB,EAAA,EAAA,YAAA,EAAA,CAXvB,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAGrB,YAAY;QACZ,aAAa;AACb,QAAA,YAAY,aAGZ,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;IChB7B,EAC0E,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;;IADnC,EAAyB,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,YAAA,CAAA,CAAA;;;ACO1D,MAAO,oBAAqB,SAAQ,iBAAiB,CAAA;AAWvD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnB;AAZD,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,sBAAsB,CAAC;KACjC;;2GAHQ,oBAAoB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;sGAApB,oBAAoB,EAAA,SAAA,EAAA,CAAA,CAAA,kBAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,kBAAA,EAAAX,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,cAAA,EAAA,EAAA,EAAA,OAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,UAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,6BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QDPjC,EAC0E,CAAA,UAAA,CAAA,CAAA,EAAA,mCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AAC1E,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAyD,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAChB,EAAc,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAM,CAAA,YAAA,EAAA,CAAA;QAC3D,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;QAC3B,EAAM,CAAA,YAAA,EAAA,CAAA;;QALA,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,YAAA,CAAA,CAAA;QAGiB,EAAc,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAd,EAAc,CAAA,iBAAA,CAAA,GAAA,CAAA,UAAA,CAAA,CAAA;;uFCI1C,oBAAoB,EAAA,CAAA;cAJhC,SAAS;2BACI,kBAAkB,EAAA,QAAA,EAAA,qUAAA,EAAA,CAAA;2DASrB,UAAU,EAAA,CAAA;kBADhB,KAAK;YAIC,YAAY,EAAA,CAAA;kBADlB,KAAK;;;;ICdR,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;;IAMzB,EAAiE,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IAHnE,EAEgC,CAAA,cAAA,CAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,CAAA,CAAA;IAC9B,EAAiE,CAAA,UAAA,CAAA,CAAA,EAAA,wDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACnE,EAAmB,CAAA,YAAA,EAAA,CAAA;;;;AAHwB,IAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,MAAA,CAAA,UAAA,CAAyB,CAAA,cAAA,EAAA,MAAA,CAAA,YAAA,CAAA,CAAA;IAAlE,EAAwC,CAAA,WAAA,CAAA,UAAA,EAAA,MAAA,CAAA,WAAA,GAAA,CAAA,GAAA,IAAA,CAAA,CAAA;IAEzB,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjC,EAAiC,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,CAAA;;;IAK9C,EAAiE,CAAA,kBAAA,CAAA,CAAA,CAAA,CAAA;;;IAFrE,EAAqC,CAAA,uBAAA,CAAA,CAAA,CAAA,CAAA;IACnC,EAA+G,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAC7G,EAAiE,CAAA,UAAA,CAAA,CAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;IACnE,EAAM,CAAA,YAAA,EAAA,CAAA;IACR,EAAe,CAAA,qBAAA,EAAA,CAAA;;;;IAHyD,EAAwC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxC,EAAwC,CAAA,WAAA,CAAA,UAAA,EAAA,MAAA,CAAA,WAAA,GAAA,CAAA,GAAA,IAAA,CAAA,CAAA;IAC7F,EAAiC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjC,EAAiC,CAAA,UAAA,CAAA,kBAAA,EAAA,GAAA,CAAA,CAAA;;;ACL9C,MAAO,aAAc,SAAQ,iBAAiB,CAAA;AAqChD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AArBpB;;AAEG;QAGI,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAExB;;AAEG;QAGI,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;AAE1B;;AAEG;QAEI,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;KAI7B;AAtCD,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,eAAe,CAAC;KAC1B;;6FAHQ,aAAa,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;+FAAb,aAAa,EAAA,SAAA,EAAA,CAAA,CAAA,UAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,0BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;QDP1B,EAEc,CAAA,UAAA,CAAA,CAAA,EAAA,oCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;QAEd,EAImB,CAAA,UAAA,CAAA,CAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,CAAA,CAAA;QAEnB,EAIe,CAAA,UAAA,CAAA,CAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,CAAA,CAAA;;QAVI,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAArB,EAAqB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,cAAA,CAAA,CAAA;QAMzB,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,cAAA,CAAA,CAAA;;uFCHtB,aAAa,EAAA,CAAA;cAJzB,SAAS;2BACI,UAAU,EAAA,QAAA,EAAA,0qBAAA,EAAA,CAAA;2DAYb,UAAU,EAAA,CAAA;kBADhB,KAAK;YAOC,YAAY,EAAA,CAAA;kBADlB,KAAK;YAQC,QAAQ,EAAA,CAAA;kBAFd,WAAW;mBAAC,qBAAqB,CAAA;;kBACjC,KAAK;YAQC,WAAW,EAAA,CAAA;kBAFjB,WAAW;mBAAC,0BAA0B,CAAA;;kBACtC,KAAK;YAOC,cAAc,EAAA,CAAA;kBADpB,KAAK;;;MCnBG,UAAU,CAAA;;uFAAV,UAAU,GAAA,CAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,CAAA,CAAA;+FALf,YAAY;QACZ,YAAY;QACZ,oBAAoB,CAAA,EAAA,CAAA,CAAA;uFAGf,UAAU,EAAA,CAAA;cAftB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,aAAa;oBACb,oBAAoB;AACvB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,aAAa;oBACb,oBAAoB;AACvB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,YAAY;oBACZ,oBAAoB;AACvB,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,UAAU,mBATf,aAAa;AACb,QAAA,oBAAoB,aAGpB,YAAY;QACZ,YAAY;AACZ,QAAA,oBAAoB,aAVpB,aAAa;QACb,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;ACHtB,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;AAKxD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnB;AAND,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,cAAc,CAAC;KACzB;;6GAHQ,qBAAqB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;uGAArB,qBAAqB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,kBAAA,EAAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,8BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QAFnB,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;uFAE3B,qBAAqB,EAAA,CAAA;cAJjC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,gBAAgB;AAC1B,gBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACxC,aAAA,CAAA;;;MCKY,kBAAkB,CAAA;;uGAAlB,kBAAkB,GAAA,CAAA,EAAA,CAAA;mGAAlB,kBAAkB,EAAA,CAAA,CAAA;uGAHvB,YAAY,CAAA,EAAA,CAAA,CAAA;uFAGP,kBAAkB,EAAA,CAAA;cAP9B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,OAAO,EAAE,CAAC,qBAAqB,CAAC;gBAChC,YAAY,EAAE,CAAC,qBAAqB,CAAC;AACrC,gBAAA,OAAO,EAAE;oBACL,YAAY;AACf,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,kBAAkB,EALZ,EAAA,YAAA,EAAA,CAAA,qBAAqB,CAEhC,EAAA,OAAA,EAAA,CAAA,YAAY,aAHN,qBAAqB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;ACE7B,MAAO,oBAAqB,SAAQ,iBAAiB,CAAA;AAKvD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnB;AAND,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,kBAAkB,CAAC;KAC7B;;2GAHQ,oBAAoB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;sGAApB,oBAAoB,EAAA,SAAA,EAAA,CAAA,CAAA,eAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,kBAAA,EAAAA,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,6BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QAFlB,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;uFAE3B,oBAAoB,EAAA,CAAA;cAJhC,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,eAAe;AACzB,gBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACxC,aAAA,CAAA;;;MCKY,iBAAiB,CAAA;;qGAAjB,iBAAiB,GAAA,CAAA,EAAA,CAAA;kGAAjB,iBAAiB,EAAA,CAAA,CAAA;sGAHtB,YAAY,CAAA,EAAA,CAAA,CAAA;uFAGP,iBAAiB,EAAA,CAAA;cAP7B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,OAAO,EAAE,CAAC,oBAAoB,CAAC;gBAC/B,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,gBAAA,OAAO,EAAE;oBACL,YAAY;AACf,iBAAA;AACJ,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,iBAAiB,EALX,EAAA,YAAA,EAAA,CAAA,oBAAoB,CAE/B,EAAA,OAAA,EAAA,CAAA,YAAY,aAHN,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;ICE5B,EAAmE,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;;;IAA1B,EAAkB,CAAA,UAAA,CAAA,MAAA,CAAA,QAAA,CAAA,CAAA;;;IAY7D,EAAoE,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;;;IAA3B,EAAmB,CAAA,UAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;;ACK1D,MAAO,+BAAgC,SAAQ,iBAAiB,CAAA;AAwGlE,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;AApGpB;;AAEG;QACI,IAAe,CAAA,eAAA,GAAiC,EAAE,CAAC;QAEnD,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QAKf,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;QAGjB,IAAQ,CAAA,QAAA,GAAG,sBAAsB,CAAC;QAGlC,IAAS,CAAA,SAAA,GAAG,uBAAuB,CAAC;QAGpC,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC;QAgDb,IAAiB,CAAA,iBAAA,GAAG,CAAC,CAAC,CAAC;AAExC;;AAEG;AAEI,QAAA,IAAA,CAAA,kBAAkB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEzE;;AAEG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAuBnE,QAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,iBAAiB,CAAC;KACjE;AA3GD,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,iCAAiC,CAAC;KAC5C;AAuBD;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED;;AAEG;IACH,IACW,OAAO,CAAC,KAAmC,EAAA;QAClD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC7B,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,+BAA+B,GAAG,CAAC,CAAC,CAAC;AAC7C,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;KAC1D;AAED;;AAEG;AACH,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,+BAA+B,CAAC;KAC/C;AAED;;AAEG;IACH,IAAW,uBAAuB,CAAC,KAAa,EAAA;AAC5C,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,OAAO,CAAC,GAAG,CAAC;AACR,gBAAA,kBAAkB,EAAE,iCAAiC;gBACrD,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,gBAAA,OAAO,EAAE,iCAAiC;AAC1C,gBAAA,MAAM,EAAE,+CAA+C;AAC1D,aAAA,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,CAAC,+BAA+B,GAAG,KAAK,CAAC;KAChD;AAgBD;;;;AAIG;AACI,IAAA,kBAAkB,CAAC,KAAa,EAAA;QACnC,OAAO,KAAK,GAAG,CAAC,CAAC;KACpB;AAED;;;;AAIG;AACI,IAAA,gBAAgB,CAAC,KAAa,EAAA;QACjC,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;KAC3C;AAQD;;;AAGG;IACI,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAEtD,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACtB,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACvB,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,uBAAuB,CAAC,KAAa,EAAA;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACnC,OAAO,CAAC,CAAC,KAAK,CAAC;AACnB,SAAC,CAAC,CAAC;QAEH,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpD,IAAI,oBAAoB,KAAK,CAAC,CAAC,IAAI,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE;YACvE,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,+BAA+B,GAAG,oBAAoB,GAAG,CAAC,CAAC;KACnE;AAED;;AAEG;IACI,kBAAkB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACvD,YAAA,IAAI,CAAC,uBAAuB,IAAI,CAAC,CAAC;AACrC,SAAA;AAED,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;KAClC;AAED;;AAEG;IACI,gBAAgB,GAAA;QACnB,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACzD,YAAA,IAAI,CAAC,uBAAuB,IAAI,CAAC,CAAC;AACrC,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;KAChC;AAED;;;AAGG;IACI,0BAA0B,GAAA;QAC7B,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;KAC5D;AAED;;;AAGG;IACI,8BAA8B,GAAA;QACjC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC;KAChE;AAED;;;AAGG;IACI,wBAAwB,GAAA;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC;KAChE;AAED;;;;AAIG;AACK,IAAA,cAAc,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAClH,OAAO;AACV,SAAA;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;KACrC;;iIAxMQ,+BAA+B,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;iHAA/B,+BAA+B,EAAA,SAAA,EAAA,CAAA,CAAA,8BAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,8BAAA,EAAA,sBAAA,EAAA,6BAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,wCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;ADxB5C,QAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAA4F,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAMtF,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,gEAAA,GAAA,EAAA,OAAS,wBAAoB,CAAC,EAAA,CAAA,CAAA;QAC9B,EAAmE,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACnE,EAAmH,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACjH,EAA2I,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,QAAA,EAAA,CAAA,YAAA,EAAO,EAAA,EAAA,CAAA;QAGxJ,EAI+B,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAA7B,QAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,gEAAA,GAAA,EAAA,OAAS,sBAAkB,CAAC,EAAA,CAAA,CAAA;QAC5B,EAAmH,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;QACjH,EAA+I,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;QAAA,EAAO,CAAA,YAAA,EAAA,CAAA;QACxJ,EAAoE,CAAA,UAAA,CAAA,CAAA,EAAA,+CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;AACtE,QAAA,EAAA,CAAA,YAAA,EAAS,EAAA,CAAA;;QApB6C,EAAmC,CAAA,WAAA,CAAA,mBAAA,EAAA,CAAA,GAAA,CAAA,MAAA,CAAA,CAAA;QAGrF,EAAiD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjD,EAAiD,CAAA,UAAA,CAAA,GAAA,CAAA,OAAA,CAAA,GAAA,CAAA,uBAAA,CAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,CAAA,OAAA,CAAA,GAAA,CAAA,uBAAA,CAAA,CAAA,KAAA,CAAA,CAAA;QACjD,EAA+C,CAAA,WAAA,CAAA,uBAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAC/C,EAAwD,CAAA,UAAA,CAAA,UAAA,EAAA,GAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,uBAAA,CAAA,CAAA,CAAA;QAEjD,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;QAEpB,EAA2I,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA3I,EAA2I,CAAA,kBAAA,CAAA,GAAA,EAAA,GAAA,CAAA,OAAA,CAAA,GAAA,CAAA,uBAAA,CAAA,GAAA,GAAA,CAAA,OAAA,CAAA,GAAA,CAAA,uBAAA,CAAA,CAAA,KAAA,GAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,IAAA,CAAA,OAAA,CAAA,QAAA,EAAA,EAAA,CAAA,CAAA;QAI/I,EAAiD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjD,EAAiD,CAAA,UAAA,CAAA,GAAA,CAAA,OAAA,CAAA,GAAA,CAAA,uBAAA,CAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,CAAA,OAAA,CAAA,GAAA,CAAA,uBAAA,CAAA,CAAA,KAAA,CAAA,CAAA;QACjD,EAA+C,CAAA,WAAA,CAAA,uBAAA,EAAA,GAAA,CAAA,eAAA,CAAA,CAAA;QAC/C,EAAsD,CAAA,UAAA,CAAA,UAAA,EAAA,GAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,uBAAA,CAAA,CAAA,CAAA;QAGpD,EAA+I,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAA/I,EAA+I,CAAA,kBAAA,CAAA,GAAA,EAAA,GAAA,CAAA,OAAA,CAAA,GAAA,CAAA,uBAAA,GAAA,CAAA,CAAA,GAAA,GAAA,CAAA,OAAA,CAAA,GAAA,CAAA,uBAAA,GAAA,CAAA,CAAA,CAAA,KAAA,GAAA,GAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,IAAA,CAAA,OAAA,CAAA,IAAA,EAAA,EAAA,CAAA,CAAA;QAC1I,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAf,EAAe,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,SAAA,CAAA,CAAA;;uFCKb,+BAA+B,EAAA,CAAA;cAJ3C,SAAS;2BACI,8BAA8B,EAAA,QAAA,EAAA,yiDAAA,EAAA,CAAA;2DAkBjC,SAAS,EAAA,CAAA;kBADf,KAAK;YAIC,QAAQ,EAAA,CAAA;kBADd,KAAK;YAIC,SAAS,EAAA,CAAA;kBADf,KAAK;YAIC,eAAe,EAAA,CAAA;kBADrB,KAAK;YAcK,OAAO,EAAA,CAAA;kBADjB,KAAK;YA0CC,kBAAkB,EAAA,CAAA;kBADxB,MAAM;YAOA,gBAAgB,EAAA,CAAA;kBADtB,MAAM;;;;;IC1GT,EAAwJ,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IAAjF,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,oFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,MAA6B,CAAA,qBAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAC5G,EAAmH,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACjH,EAAkC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;IAFrC,EAAmC,CAAA,UAAA,CAAA,UAAA,EAAA,MAAA,CAAA,sBAAA,CAAA,CAAA;IAEvC,EAAkC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlC,EAAkC,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,4BAAA,EAAA,EAAA,CAAA,CAAA;;;;IAEtC,EAGmD,CAAA,cAAA,CAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;IADjD,EAAsB,CAAA,UAAA,CAAA,oBAAA,EAAA,SAAA,6IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,kCAA2B,CAAA,CAAA,EAAA,CAAC,sPAC9B,EAAA,CAAA,WAAA,CAAA,MAAA,CAAA,mBAAA,CAAA,MAAA,CAA2B,CAAA,CADG,EAAA,CAAA,CAAA;IACD,EAA+B,CAAA,YAAA,EAAA,CAAA;;;IAFhF,EAAmB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA;;;;IAGrB,EAAwH,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IAA7E,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,oFAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAA2B,CAAA,mBAAA,CAAA,MAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAC9E,EAAmH,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA;IACjH,EAAgC,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;IAAvC,EAAgC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhC,EAAgC,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,CAAA;;;IAXtC,EAAmJ,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IACjJ,EAGS,CAAA,UAAA,CAAA,CAAA,EAAA,4DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IACT,EAGkF,CAAA,UAAA,CAAA,CAAA,EAAA,kFAAA,EAAA,CAAA,EAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,CAAA,CAAA;IAClF,EAGS,CAAA,UAAA,CAAA,CAAA,EAAA,4DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IACX,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAZyH,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,mBAAA,CAAA,CAAA;IAI9D,EAAyB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzB,EAAyB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,mBAAA,CAAA,CAAA;IAIlB,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;;ACClH,MAAO,oCAAqC,SAAQ,iBAAiB,CAAA;AAoGvE,IAAA,WAAA,CACI,QAAkB,EAAA;QAClB,KAAK,CAAC,QAAQ,CAAC,CAAC;AAjGpB;;AAEG;QAEI,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC;AAEhC;;AAEG;QAEI,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC;AAElC;;AAEG;QAEI,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC;AAQlC;;AAEG;QAEI,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;AAQtC;;AAEG;AACO,QAAA,IAAA,CAAA,+BAA+B,GAAG,IAAI,YAAY,EAAO,CAAC;AAEpE;;AAEG;AACO,QAAA,IAAA,CAAA,6BAA6B,GAAG,IAAI,YAAY,EAAO,CAAC;AAElE;;AAEG;AACO,QAAA,IAAA,CAAA,6BAA6B,GAAG,IAAI,YAAY,EAAO,CAAC;AAElE;;AAEG;AACO,QAAA,IAAA,CAAA,6BAA6B,GAAG,IAAI,YAAY,EAAO,CAAC;AAoClE;;AAEG;QACK,IAAe,CAAA,eAAA,GAAiC,EAAE,CAAC;KAK1D;AAtGD,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,sCAAsC,CAAC;KACjD;AAgED;;AAEG;IACH,IAAW,OAAO,CAAC,OAAqC,EAAA;AACpD,QAAA,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;KAClC;AAED;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED;;AAEG;AACH,IAAA,IAAW,4BAA4B,GAAA;AACnC,QAAA,OAAQ,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;KACxG;AAED;;AAEG;AACH,IAAA,IAAW,0BAA0B,GAAA;AACjC,QAAA,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;KACnG;AAYD;;;;AAIG;AACI,IAAA,kBAAkB,CAAC,GAAsB,EAAA;AAC5C,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;YACpB,OAAO;AACV,SAAA;QAED,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,8BAA8B,EAAE,EAAE;YAClE,OAAO;AACV,SAAA;QAED,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACxD;AAED;;;AAGG;AAEI,IAAA,mBAAmB,CAAC,MAAM,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnD;AAED;;;AAGG;AAEI,IAAA,mBAAmB,CAAC,MAAM,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnD;AAED;;;AAGG;AAEI,IAAA,qBAAqB,CAAC,MAAM,EAAA;AAC/B,QAAA,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrD;AAED;;;AAGG;AAEI,IAAA,mBAAmB,CAAC,MAAM,EAAA;AAC7B,QAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnD;;2IApKQ,oCAAoC,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;sHAApC,oCAAoC,EAAA,SAAA,EAAA,CAAA,CAAA,iCAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,0CAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;uBAgElC,+BAA+B,EAAA,CAAA,CAAA,CAAA;;;;;QD1E9C,EAaM,CAAA,UAAA,CAAA,CAAA,EAAA,mDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;QAbsE,EAAqE,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,mBAAA,IAAA,GAAA,CAAA,mBAAA,IAAA,GAAA,CAAA,iBAAA,CAAA,CAAA;;ACwI7I,UAAA,CAAA;AAAC,IAAAI,OAAK,EAAE;;;;AAOP,CAAA,EAAA,oCAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;AAMD,UAAA,CAAA;AAAC,IAAAA,OAAK,EAAE;;;;AAOP,CAAA,EAAA,oCAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;AAMD,UAAA,CAAA;AAAC,IAAAA,OAAK,EAAE;;;;AAGP,CAAA,EAAA,oCAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,IAAA,CAAA,CAAA;AAMD,UAAA,CAAA;AAAC,IAAAA,OAAK,EAAE;;;;AAGP,CAAA,EAAA,oCAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;uFApKQ,oCAAoC,EAAA,CAAA;cAJhD,SAAS;2BACI,iCAAiC,EAAA,QAAA,EAAA,goCAAA,EAAA,CAAA;2DAYpC,iBAAiB,EAAA,CAAA;kBADvB,KAAK;YAOC,mBAAmB,EAAA,CAAA;kBADzB,KAAK;YAOC,mBAAmB,EAAA,CAAA;kBADzB,KAAK;YAOC,gBAAgB,EAAA,CAAA;kBADtB,KAAK;YAOC,sBAAsB,EAAA,CAAA;kBAD5B,KAAK;YAOC,cAAc,EAAA,CAAA;kBADpB,KAAK;YAMI,+BAA+B,EAAA,CAAA;kBAAxC,MAAM;YAKG,6BAA6B,EAAA,CAAA;kBAAtC,MAAM;YAKG,6BAA6B,EAAA,CAAA;kBAAtC,MAAM;YAKG,6BAA6B,EAAA,CAAA;kBAAtC,MAAM;YAMA,YAAY,EAAA,CAAA;kBADlB,SAAS;mBAAC,+BAA+B,CAAA;AA+DnC,SAAA,CAAA,EAAA,mBAAmB,EAanB,EAAA,EAAA,mBAAmB,EAanB,EAAA,EAAA,qBAAqB,MASrB,mBAAmB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MC3JjB,4BAA4B,CAAA;;2HAA5B,4BAA4B,GAAA,CAAA,EAAA,CAAA;6GAA5B,4BAA4B,EAAA,CAAA,CAAA;iHAJjC,YAAY;QACZ,YAAY,CAAA,EAAA,CAAA,CAAA;uFAGP,4BAA4B,EAAA,CAAA;cAZxC,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,+BAA+B;AAClC,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,+BAA+B;AAClC,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,YAAY;AACf,iBAAA;AACJ,aAAA,CAAA;;wFACY,4BAA4B,EAAA,EAAA,YAAA,EAAA,CAPjC,+BAA+B,CAAA,EAAA,OAAA,EAAA,CAG/B,YAAY;AACZ,QAAA,YAAY,aAPZ,+BAA+B,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCQ1B,iCAAiC,CAAA;;qIAAjC,iCAAiC,GAAA,CAAA,EAAA,CAAA;kHAAjC,iCAAiC,EAAA,CAAA,CAAA;sHALtC,YAAY;QACZ,WAAW;QACX,4BAA4B,CAAA,EAAA,CAAA,CAAA;uFAGvB,iCAAiC,EAAA,CAAA;cAT7C,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,OAAO,EAAE,CAAC,oCAAoC,CAAC;gBAC/C,YAAY,EAAE,CAAC,oCAAoC,CAAC;AACpD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,WAAW;oBACX,4BAA4B;AAC/B,iBAAA;AACJ,aAAA,CAAA;;wFACY,iCAAiC,EAAA,EAAA,YAAA,EAAA,CAP3B,oCAAoC,CAAA,EAAA,OAAA,EAAA,CAE/C,YAAY;QACZ,WAAW;AACX,QAAA,4BAA4B,aALtB,oCAAoC,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;;ACA5C,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AAKrD,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnB;AAND,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,WAAW,CAAC;KACtB;;uGAHQ,kBAAkB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAA,CAAA;oGAAlB,kBAAkB,EAAA,SAAA,EAAA,CAAA,CAAA,aAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,kBAAA,EAAAJ,KAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAA,2BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;QAFhB,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;uFAE3B,kBAAkB,EAAA,CAAA;cAJ9B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,aAAa;AACvB,gBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACxC,aAAA,CAAA;;;MCSY,eAAe,CAAA;;iGAAf,eAAe,GAAA,CAAA,EAAA,CAAA;gGAAf,eAAe,EAAA,CAAA,CAAA;oGALpB,YAAY;QACZ,kBAAkB;QAClB,iBAAiB,CAAA,EAAA,CAAA,CAAA;uFAGZ,eAAe,EAAA,CAAA;cAT3B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;gBACN,OAAO,EAAE,CAAC,kBAAkB,CAAC;gBAC7B,YAAY,EAAE,CAAC,kBAAkB,CAAC;AAClC,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,kBAAkB;oBAClB,iBAAiB;AACpB,iBAAA;AACJ,aAAA,CAAA;;wFACY,eAAe,EAAA,EAAA,YAAA,EAAA,CAPT,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAE7B,YAAY;QACZ,kBAAkB;AAClB,QAAA,iBAAiB,aALX,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACJhC;;AAEG;MACU,UAAU,CAAA;AAgBnB;;;;;AAKG;IACH,WAA4B,CAAA,oBAA+B,EAAE,OAA0B,EAAA;QAA3D,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAW;AACvD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;AAED;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;AAED;;AAEG;IACH,IAAW,SAAS,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;AAED;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED;;AAEG;IACH,IAAW,QAAQ,CAAC,KAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;AAED;;AAEG;IACI,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KAC3B;AAED;;AAEG;IACI,IAAI,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;AACJ;;ACxED;;AAEG;MACU,WAAW,CAAA;AAqBpB;;;;AAIG;AACH,IAAA,WAAA,CAAY,OAA2B,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;AAED;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED;;AAEG;IACH,IAAW,KAAK,CAAC,KAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;AAED;;AAEG;AACH,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED;;AAEG;IACH,IAAW,MAAM,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;AAED;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IACD,IAAW,SAAS,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC5B;AAED;;AAEG;IACI,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KAC3B;AACJ;;MC1EY,aAAa,CAAA;AAkEtB;;AAEG;AACH,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;AACvC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;KAC/B;AA3ED;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,OAAO,CAAC,UAAU,EAAW,CAAC;KACxC;AAwED;;AAEG;AACH,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED;;AAEG;AACH,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED;;AAEG;IACH,IAAW,UAAU,CAAC,KAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;KACjC;AAED;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED;;AAEG;IACH,IAAW,OAAO,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;AAED;;AAEG;AACH,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED;;AAEG;IACH,IAAW,UAAU,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;KACjC;AAED;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACrC;AAED;;AAEG;IACH,IAAW,eAAe,CAAC,KAAa,EAAA;AACpC,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;KACtC;AAED;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,uBAAuB,CAAC;KACvC;AAED;;AAEG;IACH,IAAW,iBAAiB,CAAC,KAAa,EAAA;AACtC,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;KACxC;AAED;;AAEG;AACH,IAAA,IAAW,qBAAqB,GAAA;QAC5B,OAAO,IAAI,CAAC,2BAA2B,CAAC;KAC3C;AAED;;AAEG;IACH,IAAW,qBAAqB,CAAC,KAAc,EAAA;AAC3C,QAAA,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;KAC5C;AAED;;AAEG;AACH,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED;;AAEG;IACH,IAAW,cAAc,CAAC,KAAc,EAAA;AACpC,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;KACrC;AAED;;AAEG;AACH,IAAA,IAAW,0BAA0B,GAAA;QACjC,OAAO,IAAI,CAAC,gCAAgC,CAAC;KAChD;AAED;;AAEG;IACH,IAAW,0BAA0B,CAAC,KAAc,EAAA;AAChD,QAAA,IAAI,CAAC,gCAAgC,GAAG,KAAK,CAAC;KACjD;AAED;;AAEG;AACH,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED;;AAEG;IACH,IAAW,gBAAgB,CAAC,KAAc,EAAA;AACtC,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;KACvC;AAED;;AAEG;AACH,IAAA,IAAW,yBAAyB,GAAA;QAChC,OAAO,IAAI,CAAC,+BAA+B,CAAC;KAC/C;AAED;;AAEG;IACH,IAAW,yBAAyB,CAAC,KAAc,EAAA;AAC/C,QAAA,IAAI,CAAC,+BAA+B,GAAG,KAAK,CAAC;KAChD;AAED;;;;;;;AAOG;AACI,IAAA,cAAc,CAAC,QAAgB,EAAE,iBAA4B,EAAE,SAAiB,EAAA;AAEnF,QAAA,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AACnE,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAElF,QAAA,IAAI,aAAa,EAAE;AACf,YAAA,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,SAAA;KACJ;AAED;;;;;;;;AAQG;AACI,IAAA,qBAAqB,CAAC,QAAgB,EAAE,iBAA4B,EAAE,SAAiB,EAAE,KAAa,EAAA;AAEzG,QAAA,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AACnE,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAElF,QAAA,IAAI,aAAa,EAAE;YACf,IAAI,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,gBAAA,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,aAAA;AAAM,iBAAA;gBACH,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9C,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,SAAA;KACJ;AAED;;;;;;;AAOG;IACI,wBAAwB,CAAC,SAAiB,EAAE,KAAa,EAAA;AAC5D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAE1E,IAAI,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;YACrC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;;;AAKG;IACI,eAAe,CAAC,SAAiB,EAAE,KAAa,EAAA;QACnD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACrE,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACjF,SAAA;KACJ;AAED;;;;AAIE;AACK,IAAA,oBAAoB,CAAC,IAAgB,EAAA;AACxC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrC;AAED;;;;;;AAMG;AACI,IAAA,UAAU,CAAC,SAAiB,EAAA;AAC/B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAE1E,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AACjB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;AAEG;AACI,IAAA,aAAa,CAAC,iBAA4B,EAAA;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;KAClH;AACJ;;ACxVD;;AAEG;MACU,2BAA2B,CAAA;AAepC;;;;AAIG;IACH,WAAY,CAAA,MAAiC,EAAE,aAAqC,EAAA;AAfpF;;AAEG;QACK,IAAO,CAAA,OAAA,GAA0B,EAAE,CAAC;AAE5C;;AAEG;QACK,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAQxB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACtC;AAED;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED;;AAEG;AACH,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,IAAI,MAAM,GAAG,CAAC,EAAE;AACZ,YAAA,OAAO,EAAE,KAAK,EAAE,2BAA2B,CAAC,aAAa,EAAE,IAAI,EAAE,2BAA2B,CAAC,aAAa,EAAE,CAAC;AAChH,SAAA;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KACnC;AAED;;AAEG;AACH,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,IAAI,MAAM,KAAK,CAAC,EAAE;AACd,YAAA,OAAO,EAAE,KAAK,EAAE,2BAA2B,CAAC,aAAa,EAAE,IAAI,EAAE,2BAA2B,CAAC,aAAa,EAAE,CAAC;AAChH,SAAA;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KACnC;AAED;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAI,KAAK,CAAC,KAAK,KAAK,2BAA2B,CAAC,aAAa,EAAE;AAC3D,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;AAChC,QAAA,IAAI,OAAO,CAAC,KAAK,KAAK,2BAA2B,CAAC,aAAa,EAAE;AAC7D,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE;YAC/B,OAAO,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AAC1C,SAAA;QAED,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE;AACnC,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACvE,OAAO,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC;AAC7D,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC5B,QAAA,IAAI,KAAK,CAAC,KAAK,KAAK,2BAA2B,CAAC,aAAa,EAAE;AAC3D,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;AAChC,QAAA,IAAI,OAAO,CAAC,KAAK,KAAK,2BAA2B,CAAC,aAAa,EAAE;AAC7D,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE;YAC/B,OAAO,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AAC1C,SAAA;QAED,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE;AACnC,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3E,OAAO,OAAO,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;AAC/D,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;QAChC,OAAO,OAAO,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAChF;AAED;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;AAClB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC;KAC1D;AAED;;AAEG;AACH,IAAA,IAAW,qBAAqB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,CAAC;KACrD;AAED;;;;AAIG;IACI,YAAY,CAAC,MAA2B,IAAI,EAAA;AAC/C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,GAAG,EAAE;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,SAAA;KACJ;AAED;;;;AAIG;AACI,IAAA,WAAW,CAAC,GAAwB,EAAA;QACvC,IAAI,CAAC,IAAI,CAAC,WAAW;AACd,eAAA,CAAC,GAAG;AACJ,eAAA,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;AACpC,eAAA,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;AACnC,eAAA,GAAG,CAAC,KAAK,KAAK,2BAA2B,CAAC,aAAa;AACvD,eAAA,GAAG,CAAC,IAAI,KAAK,2BAA2B,CAAC,aAAa,EAAE;AAC3D,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;AAChC,QAAA,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;AAC1D,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;;;;AAKG;IACI,YAAY,CAAC,MAA2B,IAAI,EAAA;QAC/C,IAAI,CAAC,GAAG,EAAE;AACN,YAAA,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AACzB,SAAA;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;AACtG,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC,MAAM,CAAC;AACtB,SAAA;AAED,QAAA,OAAO,CAAC,CAAC;KACZ;AAED;;;;;;;AAOG;AACI,IAAA,cAAc,CAAC,QAAgB,EAAE,iBAA4B,EAAE,SAAiB,EAAA;QACnF,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC;KAC7E;AAED;;;;;;;;AAQG;AACI,IAAA,qBAAqB,CAAC,QAAgB,EAAE,iBAA4B,EAAE,SAAiB,EAAE,KAAa,EAAA;AACzG,QAAA,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;KAC3F;AAED;;;;;;;AAOG;IACK,wBAAwB,CAAC,SAAiB,EAAE,KAAa,EAAA;QAC7D,OAAO,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KACxE;AAED;;;;;AAKG;IACI,eAAe,CAAC,SAAiB,EAAE,KAAa,EAAA;QACnD,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KACxD;AAED;;;;;;AAMG;AACI,IAAA,UAAU,CAAC,SAAiB,EAAA;QAC/B,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KACnD;;AAlPsB,2BAAa,CAAA,aAAA,GAAG,CAAC,CAAC;;ACHvC,MAAO,6BAA8B,SAAQ,mCAAmC,CAAA;AAAtF,IAAA,WAAA,GAAA;;AACI;;;AAGG;QACI,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAEzB;;AAEG;AACK,QAAA,IAAA,CAAA,wBAAwB,GAAG;YAC/B,OAAO,EAAE,CAAC,2BAA2B,CAAC;YACtC,SAAS,EAAE,CAAC,2BAA2B,CAAC;AACxC,YAAA,MAAM,EAAE,EAAE;SACb,CAAC;KA8CL;AA5CG;;;;AAIG;AAEI,IAAA,mBAAmB,CAAC,YAAwB,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,OAAO;AACV,SAAA;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE3B,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE5B,IAAI,CAAC,YAAY,EAAE;YACf,OAAO;AACV,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACrC,IAAI,YAAY,CAAC,aAAa,EAAE;AAC5B,gBAAA,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,wBAAwB,EAAE,SAAS,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;AAC7E,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE;YACvB,IAAI,YAAY,CAAC,aAAa,EAAE;AAC5B,gBAAA,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,wBAAwB,EAAE,WAAW,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;AAC/E,aAAA;AACJ,SAAA;aAAM,IAAI,IAAI,CAAC,UAAU,EAAE;YACxB,IAAI,YAAY,CAAC,aAAa,EAAE;AAC5B,gBAAA,IAAI,CAAC,4BAA4B,CAC7B,IAAI,CAAC,wBAAwB,EAAE,QAAQ,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;AAC5E,aAAA;AACJ,SAAA;KACJ;AAEO,IAAA,gBAAgB,CAAC,IAA6B,EAAA;AAClD,QAAA,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,8BAA8B,CAAC,OAAO,CAAC,CAAC;KACpF;AACJ,CAAA;AAvCG,UAAA,CAAA;AAAC,IAAAI,OAAK,EAAE;;qCACiC,UAAU,CAAA,CAAA;;AAiClD,CAAA,EAAA,6BAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA;;;;ICxDD,EAAqF,CAAA,SAAA,CAAA,CAAA,EAAA,WAAA,EAAA,EAAA,CAAA,CAAA;;;AAHvF,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAC4J,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA;IACrH,EAAa,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAK,CAAA,YAAA,EAAA,CAAA;IACvD,EAAqF,CAAA,UAAA,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,EAAA,CAAA,CAAA;IACvF,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAJmD,EAAyB,CAAA,WAAA,CAAA,eAAA,EAAA,IAAA,CAAA,CAAA;IAE3C,EAAa,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAb,EAAa,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,CAAA;IACvB,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;;;IAI5C,EAA0D,CAAA,SAAA,CAAA,CAAA,EAAA,WAAA,EAAA,EAAA,CAAA,CAAA;;;IAF5D,EAC6G,CAAA,cAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;IAC3G,EAA0D,CAAA,UAAA,CAAA,CAAA,EAAA,iDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,EAAA,CAAA,CAAA;IAC5D,EAAa,CAAA,YAAA,EAAA,CAAA;;;AAFX,IAAA,EAAA,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,IAAA,CAAwB,wDAAA,CAAA,UAAA,EAAA,MAAA,CAAA,UAAA,CAAA,QAAA,CAAA,CAAA;IACZ,EAAiB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;;;IAE/B,EAA8B,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IAC5B,EAA+C,CAAA,SAAA,CAAA,CAAA,EAAA,YAAA,EAAA,EAAA,CAAA,CAAA;IACjD,EAAM,CAAA,YAAA,EAAA,CAAA;;;IADQ,EAAqB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAArB,EAAqB,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,WAAA,CAAA,CAAA;;;;;;;IAKjC,EAU8B,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAA5B,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,+DAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAiB,CAAA,YAAA,CAAA,OAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAC3B,EACwD,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IACtD,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IACP,EAIoE,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAClE,EACF,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAAA,EAAA,CAAA,YAAA,EAAO,EAAA,CAAA;;;;;IAlBP,EAA6C,CAAA,WAAA,CAAA,YAAA,EAAA,OAAA,KAAA,OAAA,CAAA,gBAAA,CAAA,CAAA,cAAA,EAAA,OAAA,KAAA,OAAA,CAAA,gBAAA,CAAA,uDAAA,CAAA,wBAAA,EAAA,OAAA,KAAA,OAAA,CAAA,gBAAA,CAAA,CAAA;AAF7C,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,CAAA,IAAA,CAAoB,CAAA,sBAAA,EAAA,OAAA,CAAA,aAAA,CAAA,CAAA,gBAAA,EAAA,aAAA,IAAA,OAAA,GAAA,CAAA,CAAA,CAAA,CAAA,UAAA,EAAA,OAAA,CAAA,kBAAA,CAAA,SAAA,EAAA,OAAA,CAAA,CAAA,CAAA,4BAAA,EAAA,OAAA,CAAA,kBAAA,CAAA,SAAA,EAAA,OAAA,CAAA,CAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,GAAA,EAAA,SAAA,CAAA,SAAA,EAAA,OAAA,KAAA,OAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,MAAA,CAAA,CAAA,CAAA;IACI,EAA8B,CAAA,WAAA,CAAA,YAAA,EAAA,SAAA,CAAA,IAAA,CAAA,CAAA;IAShD,EAA2E,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA3E,EAA2E,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,GAAA,EAAA,SAAA,CAAA,SAAA,CAAA,CAAA,CAAA;IAE/E,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,CAAA,SAAA,CAAA,SAAA,GAAA,OAAA,GAAA,CAAA,GAAA,EAAA,EAAA,GAAA,CAAA,CAAA;IACM,EAG2C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAH3C,EAG2C,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,GAAA,EAAA,OAAA,KAAA,OAAA,CAAA,gBAAA,IAAA,SAAA,CAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EAAA,CAAA,SAAA,CAAA,SAAA,EAAA,CAAA,OAAA,CAAA,uBAAA,CAAA,CAAA,CAAA;IAE/C,EACF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADE,EACF,CAAA,kBAAA,CAAA,GAAA,EAAA,SAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAA;;;IAvBJ,EAC+K,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC7K,EAsBS,CAAA,UAAA,CAAA,CAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACX,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAvBsB,EAAW,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAX,EAAW,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,MAAA,CAAA,CAAA;;;IAwC/B,EAA0G,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;;;IAAtB,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,iBAAA,CAAA,QAAA,CAAA,IAAA,CAAA,CAAA;;;;;IAV3H,EAQwE,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAHtE,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,qEAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,SAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAkB,CAAA,WAAA,CAAA,SAAA,CAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAI5B,EAAuF,CAAA,cAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAAA,EAA0C,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAO,CAAA,YAAA,EAAA,CAAA;IACxI,EAAgI,CAAA,UAAA,CAAA,CAAA,EAAA,oDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;IAClI,EAAS,CAAA,YAAA,EAAA,CAAA;;;;;AAVO,IAAA,EAAA,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,GAAA,EAAA,SAAA,KAAA,OAAA,CAAA,SAAA,CAAA,CAAyG,CAAA,UAAA,EAAA,OAAA,CAAA,iBAAA,CAAA,QAAA,EAAA,SAAA,CAAA,CAAA,CAAA,4BAAA,EAAA,OAAA,CAAA,iBAAA,CAAA,QAAA,EAAA,SAAA,CAAA,CAAA,CAAA,sBAAA,EAAA,OAAA,CAAA,aAAA,CAAA,CAAA,gBAAA,EAAA,YAAA,IAAA,SAAA,GAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,OAAA,CAAA,UAAA,GAAA,IAAA,GAAA,QAAA,CAAA,IAAA,CAAA,CAAA;IAOvH,EAAiD,CAAA,WAAA,CAAA,YAAA,EAAA,OAAA,CAAA,UAAA,GAAA,IAAA,GAAA,QAAA,CAAA,IAAA,CAAA,CAAA;IACsC,EAA0C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1C,EAA0C,CAAA,kBAAA,CAAA,EAAA,EAAA,OAAA,CAAA,gBAAA,GAAA,CAAA,EAAA,GAAA,EAAA,SAAA,GAAA,CAAA,EAAA,EAAA,CAAA,CAAA;IACzC,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,OAAA,CAAA,UAAA,CAAA,CAAA;;;;IAZ5G,EAC6H,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC3H,EAWS,CAAA,UAAA,CAAA,CAAA,EAAA,6CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IACX,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAbmD,EAAmE,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,OAAA,CAAA,UAAA,CAAA,CAAA,CAAA;IACtF,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAvB,EAAuB,CAAA,UAAA,CAAA,SAAA,EAAA,OAAA,CAAA,gBAAA,EAAA,CAAA,CAAA;;;;;IAJ/D,EAC4I,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC1I,EAcM,CAAA,UAAA,CAAA,CAAA,EAAA,oCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;AACN,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAmD,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAG/C,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,sDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAY,CAAA,UAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAGtB,EACkG,CAAA,SAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,CAAA;AACpG,IAAA,EAAA,CAAA,YAAA,EAAS,EAAA,EAAA,CAAA;;;IAvBU,EAAiD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAjD,EAAiD,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,MAAA,CAAA,gBAAA,IAAA,CAAA,MAAA,CAAA,qBAAA,CAAA,CAAA;IAoBlE,EAAkI,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAlI,EAAkI,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,UAAA,GAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,iBAAA,GAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,eAAA,CAAA,CAAA;AAF3G,IAAA,EAAA,CAAA,WAAA,CAAA,eAAA,EAAA,MAAA,CAAA,UAAA,CAAiC,CAAA,YAAA,EAAA,MAAA,CAAA,UAAA,GAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,iBAAA,GAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,eAAA,CAAA,CAAA;IAItD,EAAwF,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAxF,EAAwF,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,MAAA,CAAA,UAAA,EAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA,CAAA;;;IAQ9F,EAA2C,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;IACzC,EAAyD,CAAA,SAAA,CAAA,CAAA,EAAA,oBAAA,EAAA,EAAA,CAAA,CAAA;IAC3D,EAAM,CAAA,YAAA,EAAA,CAAA;;;IADgB,EAAe,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAf,EAAe,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,KAAA,CAAA,CAAA;;;IAkBrC,EAAkH,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAChH,EAAoD,CAAA,SAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,EAAA,CAAA,CAAA;IACtD,EAAM,CAAA,YAAA,EAAA,CAAA;;;;IAIR,EAC0B,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IAAxB,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,iEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAa,CAAA,WAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAAC,EAAsB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;;;IAD0E,EAAsC,CAAA,UAAA,CAAA,sBAAA,EAAA,OAAA,CAAA,aAAA,CAAA,CAAA;IAC/I,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,iBAAA,CAAA,OAAA,CAAA,cAAA,EAAA,CAAA,CAAA;;;;AAhBlD,IAAA,EAAA,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,CACqK,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAEjD,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAa,CAAA,WAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAChF,EAA4C,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;IAE5G,EACkF,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IADiD,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAa,CAAA,WAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAExJ,EAAsB,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;IACjC,EAEM,CAAA,UAAA,CAAA,CAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACR,EAAM,CAAA,YAAA,EAAA,CAAA;IACN,EAC4C,CAAA,cAAA,CAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IADoE,EAAS,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,uDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,IAAA,CAAA,CAAA,CAAA,MAAA,OAAA,GAAA,EAAA,CAAA,aAAA,EAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,OAAa,CAAA,WAAA,EAAA,CAAA,CAAC,EAAA,CAAA,CAAA;IAC3F,EAA4C,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAAS,CAAA,YAAA,EAAA,CAAA;IACjG,EACyD,CAAA,UAAA,CAAA,EAAA,EAAA,yCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,CAAA,CAAA;IAC3D,EAAM,CAAA,YAAA,EAAA,CAAA;;;IAf+B,EAA0C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA1C,EAA0C,CAAA,WAAA,CAAA,sBAAA,EAAA,CAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAEzE,EAAoD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApD,EAAoD,CAAA,WAAA,CAAA,iBAAA,EAAA,CAAA,MAAA,CAAA,yBAAA,CAAA,CAAA;AADmB,IAAA,EAAA,CAAA,UAAA,CAAA,sBAAA,EAAA,MAAA,CAAA,aAAA,CAAsC,CAAA,UAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IACxD,EAA4C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5C,EAA4C,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA;IAEP,EAAsC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAtC,IAAA,EAAA,CAAA,UAAA,CAAA,sBAAA,EAAA,MAAA,CAAA,aAAA,CAAsC,sCAAA,CAAA,4BAAA,EAAA,MAAA,CAAA,iBAAA,CAAA,CAAA;IAEhI,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAtB,EAAsB,CAAA,kBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,cAAA,EAAA,EAAA,EAAA,CAAA,CAAA;IAClB,EAAgB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA;IAKtB,EAAyC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzC,EAAyC,CAAA,WAAA,CAAA,iBAAA,EAAA,CAAA,MAAA,CAAA,cAAA,CAAA,CAAA;IAD8B,EAAsC,CAAA,UAAA,CAAA,sBAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAA;IACnE,EAA4C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAA5C,EAA4C,CAAA,iBAAA,CAAA,MAAA,CAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA;IACnE,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,cAAA,CAAA,CAAA;;;ACtD7C;;AAEG;AACH,IAAK,WAKJ,CAAA;AALD,CAAA,UAAK,WAAW,EAAA;AACZ,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,WAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,WAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACrB,CAAC,EALI,WAAW,KAAX,WAAW,GAKf,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;AACH,MAAM,mBAAmB,CAAA;AAQxB,CAAA;AAED;;;;;;;;;;;;;;;;AAgBG;AAEH;;AAEG;AAQG,MAAO,eACT,SAAQ,oBAAwD,CAAA;AAuOhE;;;;;AAKG;IACH,WACI,CAAA,QAAkB,EACX,WAAuB,EACtB,UAA6B,EAC7B,iBAAoC,EAC5C,wBAAkD,EACG,MAAc,EAAA;AAEnE,QAAA,KAAK,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;QANnC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;QACtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;QAC7B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AA7IhD;;;;AAIG;AACI,QAAA,IAAA,CAAA,aAAa,GAAwB;AACxC,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,QAAQ,EAAE,EAAE;YACZ,kBAAkB,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;YAC9C,UAAU,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,EAC3E,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC;YACvC,KAAK,EAAE,WAAW,CAAC,KAAK;SAC3B,CAAC;AAWF;;AAEG;AAEa,QAAA,IAAA,CAAA,IAAI,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEpE;;AAEG;AAEa,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAE7E;;AAEG;AAEa,QAAA,IAAA,CAAA,WAAW,GAAyC,IAAI,YAAY,EAA0B,CAAC;AAE/G;;AAEG;AAEa,QAAA,IAAA,CAAA,eAAe,GAAuC,IAAI,YAAY,EAAwB,CAAC;AAE/G;;AAEG;AAEa,QAAA,IAAA,CAAA,QAAQ,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAExE;;;AAGG;AAEI,QAAA,IAAA,CAAA,aAAa,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAEpE;;AAEG;AAEI,QAAA,IAAA,CAAA,uBAAuB,GAAuB,IAAI,YAAY,EAAQ,CAAC;AAE9E;;AAEG;AACI,QAAA,IAAA,CAAA,OAAO,GAAY,OAAO,CAAC,UAAU,EAAW,CAAC;AAiBxD;;AAEG;QACI,IAAuB,CAAA,uBAAA,GAAG,IAAI,CAAC;AAEtC;;AAEG;AACI,QAAA,IAAA,CAAA,KAAK,GAAc;YACtB,QAAQ,EAAE,mBAAmB,CAAC,IAAI;YAClC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB;SACtE,CAAC;AAiDE,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;AAC9C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAEvB,QAAA,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,6BAA6B,GAAG,IAAI,6BAA6B,CAAC,MAAM,CAAC,CAAC;;YAE/E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;;YAExF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAE1G,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAClC,SAAA;KACJ;AA/PD;;AAEG;IACH,IACW,KAAK,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAE3B,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9D,SAAA;KACJ;AAED;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AA4MD;;AAEG;AACH,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;KAC9C;AA+BD;;;AAGG;AACH,IAAA,IAAW,wBAAwB,GAAA;AAC/B,QAAA,MAAM,mBAAmB,GAAG;AACxB,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,QAAQ,EAAE,iBAAiB;SAC9B,CAAC;QACF,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC5D,QAAA,OAAO,mBAAmB,CAAC;KAC9B;AAED;;AAEG;AACH,IAAA,IAAW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED;;AAEG;AACH,IAAA,IAAW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC7C;AAED;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAClD;AAED;;AAEG;AACH,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAED;;AAEG;IACI,gBAAgB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;KAClC;AAED;;AAEG;AACH,IAAA,IAAW,oBAAoB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;KAC9C;AAED,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC;KAChE;AAED,IAAA,IAAW,WAAW,GAAA;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC;KACrD;AAED,IAAA,IAAW,qBAAqB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,CAAC;KACrD;IAGM,uBAAuB,GAAA;QAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAGM,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC7B;AAED;;;AAGG;IAEI,yBAAyB,GAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,OAAO;AACV,SAAA;QAED,IAAI,CAAC,6BAA6B,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE1E,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC;AACpE,SAAC,CAAC,CAAC;KACN;;IAGM,kBAAkB,CAAC,KAAkB,EAAE,KAAa,EAAA;AACvD,QAAA,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;KAC/E;;IAGM,iBAAiB,CAAC,IAAgB,EAAE,KAAa,EAAA;AACpD,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;KACxE;AAED;;AAEG;IACI,cAAc,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE;YAClE,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5C,OAAO,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAC5G,aAAA;AAAM,iBAAA;gBACH,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3G,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AACxD,SAAA;KACJ;AAED;;AAEG;IACI,cAAc,GAAA;QACjB,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;KACtG;AAED;;AAEE;AACF,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC;KACnF;AAED,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;AACpC,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAClG,SAAA;KACJ;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC;KAChF;AAED;;AAEG;IACH,IAAW,SAAS,CAAC,KAAa,EAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACjC,YAAA,OAAO,CAAC,QAAQ,CAAC,kCAAkC,EAAE,8CAA8C,EAAE;AACjG,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;AACjC,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YAEnB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC;YAC3D,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AAC1C,SAAA;KACJ;AAED;;AAEG;IACH,IAAW,gBAAgB,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACrB,YAAA,OAAO,CAAC,QAAQ,CAAC,uCAAuC,EAAE,qDAAqD,EAAE;AAC7G,gBAAA,WAAW,EAAE,KAAK;gBAClB,KAAK,EAAE,IAAI,CAAC,MAAM;AACrB,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC3B,SAAA;KACJ;AAED;;;;AAIG;IACI,oBAAoB,GAAA;QACvB,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AAChC,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;KACtC;AAED;;;;AAIG;IACI,mBAAmB,GAAA;QACtB,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAChD,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC/B,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;KACrC;AAED;;;;AAIG;IACI,eAAe,GAAA;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AAC3B,SAAA;AAED,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;KACtC;AAED;;AAEG;IACI,cAAc,GAAA;QACjB,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;AACvC,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;YACjC,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC9B,OAAO;AACV,aAAA;YACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC7B,SAAA;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,EAAE;;;AAGhD,YAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAChD,SAAA;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;AAEG;IACI,kBAAkB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,IAAI,CAAC,SAAS,EAAE,CAAC;AACpB,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;AAElB,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpD,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,aAAA;AAED,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACtB,SAAA;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;AAEG;IACI,kBAAkB,GAAA;QACrB,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;YACvC,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC,SAAA;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,EAAE;;YAEhD,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;AACjD,SAAA;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;KAE1B;AAED;;AAEG;IACI,sBAAsB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;AACtB,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;gBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;AAElB,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;oBACpD,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,iBAAA;AAED,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC/D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC;AAClD,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,SAAS,EAAE,CAAC;AACpB,SAAA;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAED;;AAEE;IAEM,iBAAiB,GAAA;AACrB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,GAAG,wBAAwB,GAAG,iBAAiB,CAAC;QAC3F,MAAM,SAAS,GAAG,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AAC5D,QAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACH,YAAA,SAAS,CAAC,CAAC,CAAE,CAAC,KAAK,EAAE,CAAC;AAC5C,SAAA;KACJ;AAED;;AAEG;IACI,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,2BAA2B,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACvF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;QAChD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;QAC1D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC;QAC9D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;QAChD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC;QACtE,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC;QAChF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;QACvD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;AAC9E,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAEnB,KAAK,CAAC,QAAQ,EAAE,CAAC;AAEjB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,YAAA,OAAO,CAAC,QAAQ,CAAC,0BAA0B,EAAE,mCAAmC,EAAE;gBAC9E,KAAK,EAAE,IAAI,CAAC,MAAM;AACrB,aAAA,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACb,YAAA,OAAO,CAAC,QAAQ,CAAC,0BAA0B,EAAE,qCAAqC,EAAE;gBAChF,KAAK,EAAE,IAAI,CAAC,KAAK;AACpB,aAAA,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;AAEhC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAoB,CAAC;QAC9C,IAAI,WAAW,CAAC,QAAQ,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;AACtD,SAAA;QACD,IAAI,WAAW,CAAC,UAAU,EAAE;YACxB,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;AAC1D,SAAA;AAED,QAAA,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,CAAC;;QAE1C,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAE3B,QAAA0C,iBAAe,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,UAAU,EAAE,oBAAoB,CAAC,SAAS,EAAE,CAAC,CAAC;AAC1H,QAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAE7C,QAAA,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAK;YACrC,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,WAAW,CAAC,QAAQ,EAAE;;gBAEnD,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC;AAC/C,aAAA;;AAED,YAAAA,iBAAe,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,UAAU,EAAE,oBAAoB,CAAC,SAAS,EAAE,CAAC,CAAC;AAC9H,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACI,UAAU,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;KACtC;AAED;;AAEG;IACI,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,8BAA8B,CAAC,MAAK;AACrC,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACI,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,8BAA8B,CAAC,MAAK;YACrC,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/B,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACI,WAAW,GAAA;QACd,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,sBAAsB,CAA+B;gBACvE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC7D,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;AAC/D,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;AACrE,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AACpE,aAAA,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;gBACpB,IAAI,MAAM,CAAC,SAAS,EAAE;AAClB,oBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACpB,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACpB,SAAA;KACJ;AAED;;;AAGG;IACK,sBAAsB,GAAA;QAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAE/C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAE7B,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;YAC1D,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AAC1C,SAAA;KACJ;AAED;;AAEG;IACI,WAAW,GAAA;;QAEd,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;gBAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;gBAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5B,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/B,aAAA;AACD,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC7B,SAAA;KACJ;AAED;;AAEG;IACK,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CACxD,CAAC,gBAAsC,KAAI;YACvC,IAAI,gBAAgB,CAAC,OAAO,EAAE;gBAC1B,IAAI,IAAI,CAAC,qBAAqB,EAAE;oBAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/B,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC/C,aAAA;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC5B,SAAC,CAAC,CAAC;KACV;AAED;;;AAGG;IACK,oBAAoB,GAAA;QACxB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/B,SAAA;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;IAEO,sBAAsB,GAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAA0B;AAC7D,YAAA,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW;AACnE,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO;AAC7E,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK;SAC5E,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;KAChC;AAEO,IAAA,8BAA8B,CAAC,sBAAkC,EAAA;AACrE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAChD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC;AAC1D,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,sBAAsB,CAA+B;gBACvE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC7D,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;gBAC/D,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;AACjG,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AACpE,aAAA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CACtB,CAAC,MAAM,KAAI;gBACP,IAAI,MAAM,CAAC,SAAS,EAAE;AAClB,oBAAA,sBAAsB,EAAE,CAAC;AAC5B,iBAAA;AACL,aAAC,CAAC,CAAC;AACV,SAAA;AAAM,aAAA;AACH,YAAA,sBAAsB,EAAE,CAAC;AAC5B,SAAA;KACJ;AAED;;;;AAIG;AACI,IAAA,YAAY,CAAC,iBAAyB,EAAA;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,yBAAyB,IAAI,iBAAiB,IAAI,IAAI,CAAC,UAAU,EAAE;;YAEzE,IAAI,WAAW,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,iBAAiB,EAAE;gBAChE,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,MAAM,EAAE;AACpD,YAAA,IAAI,CAAC,8BAA8B,CAAC,MAAK;AACrC,gBAAA,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC;AACpC,gBAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;gBACnB,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC;AAC/C,gBAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC3D,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;oBAC9B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC;AACpC,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;AAED;;;;AAIG;AACI,IAAA,WAAW,CAAC,gBAAwB,EAAA;AACvC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,KAAK,gBAAgB,CAAC;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,yBAAyB,IAAI,gBAAgB,IAAI,IAAI,CAAC,SAAS,EAAE;;YAEvE,IAAI,CAAC,YAAY,EAAE;gBACf,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,UAAU,IAAI,CAAC,YAAY,KAAK,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC9E,gBAAA,IAAI,CAAC,8BAA8B,CAAC,MAAK;AACrC,oBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC5B,oBAAA,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC;oBAClC,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3B,iBAAC,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;KACJ;IAES,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;YACvE,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,mBAAmB,EAAE,CAAC;AACzD,YAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CACzC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,EACvE,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,IAAG;AACxD,gBAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;gBAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACrC,CAAC,CACL,CAAC;YACF,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9D,SAAA;KACJ;IAES,cAAc,GAAA;QACpB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC;AACvC,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACvC,SAAA;KACJ;AAED;;;AAGG;IACK,2BAA2B,GAAA;AAC/B,QAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;KAC1E;AAED;;;AAGG;IACK,0BAA0B,GAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC;AACvC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;KACpC;IAEO,eAAe,GAAA;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;;AAGzG,QAAA,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAE3B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBAClB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3B,gBAAA,SAAS,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI;gBAC5D,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI;AAC5D,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAED;;;;AAIG;AACK,IAAA,mBAAmB,CAAC,KAAmB,EAAA;AAC3C,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACpE,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,GAAG,CAAA,EAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;AACpF,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACnF,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC;AAEnE,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;KAC1C;;AAn5BQ,mBAAA,eAAA,CAAA,IAAA,GAAA,SAAA,uBAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,eAAe,uOAoPY,mBAAmB,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA;iGApP9C,eAAe,EAAA,SAAA,EAAA,CAAA,CAAA,YAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,qBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;;;;AAJb,KAAA,EAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA;AACP,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAC,MAAM,eAAe,EAAC,EAAE;AACnF,SAAA,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,YAAA,EAAA,8BAAA,EAAA,qBAAA,EAAA,yBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,mJAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,sKAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,wBAAA,EAAA,8BAAA,CAAA,EAAA,CAAA,OAAA,EAAA,mIAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,yBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,IAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,WAAA,EAAA,EAAA,CAAA,EAAA,CAAA,OAAA,EAAA,4JAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,iCAAA,CAAA,EAAA,CAAA,IAAA,EAAA,6BAAA,CAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,CAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,UAAA,CAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,iCAAA,EAAA,gBAAA,EAAA,6BAAA,CAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,UAAA,EAAA,GAAA,EAAA,WAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,0JAAA,EAAA,CAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,UAAA,EAAA,GAAA,EAAA,WAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,6BAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,gCAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,CAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,oOAAA,EAAA,WAAA,EAAA,QAAA,EAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,CAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,8BAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,OAAA,EAAA,0EAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,wBAAA,EAAA,8BAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,8BAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,OAAA,CAAA,EAAA,CAAA,OAAA,EAAA,mFAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,OAAA,CAAA,EAAA,CAAA,OAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,OAAA,CAAA,EAAA,CAAA,YAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,wBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;QD/FL,EAAiG,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAE/F,EAIM,CAAA,UAAA,CAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACN,EAGa,CAAA,UAAA,CAAA,CAAA,EAAA,qCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;QACb,EAEM,CAAA,UAAA,CAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEN,EAyBM,CAAA,UAAA,CAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAEN,EAAuK,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACrK,EA2BM,CAAA,UAAA,CAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAGN,EACyE,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QACvE,EAEM,CAAA,UAAA,CAAA,CAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;QAGN,EAAqD,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AACvD,QAAA,EAAA,CAAA,YAAA,EAAM,EAAA,CAAA;QAIR,EAiBM,CAAA,UAAA,CAAA,EAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;QACR,EAAM,CAAA,YAAA,EAAA,CAAA;;QArGE,EAAiD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjD,EAAiD,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,OAAA,IAAA,CAAA,GAAA,CAAA,gBAAA,IAAA,CAAA,GAAA,CAAA,UAAA,CAAA,CAAA;QAK1C,EAAiD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjD,EAAiD,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,gBAAA,IAAA,GAAA,CAAA,UAAA,IAAA,CAAA,GAAA,CAAA,OAAA,CAAA,CAAA;QAIxD,EAAsB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAtB,EAAsB,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,gBAAA,CAAA,CAAA;QAIP,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,gBAAA,CAAA,CAAA;QA2BmE,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvD,EAAuD,CAAA,WAAA,CAAA,yBAAA,EAAA,GAAA,CAAA,qBAAA,CAAA,CAAA;QAC9J,EAAiD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAjD,EAAiD,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,gBAAA,IAAA,CAAA,GAAA,CAAA,qBAAA,CAAA,CAAA;QA8B2C,EAAuD,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvD,EAAuD,CAAA,WAAA,CAAA,yBAAA,EAAA,GAAA,CAAA,qBAAA,CAAA,CAAA;QACvJ,EAAsE,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,CAAA,oBAAA,CAAA,WAAA,CAAA,CAAA,CAAA;QAChE,EAAmC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAnC,EAAmC,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,oBAAA,CAAA,QAAA,CAAA,CAAA;QAUzB,EAAuB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;QAAvB,EAAuB,CAAA,UAAA,CAAA,MAAA,EAAA,CAAA,GAAA,CAAA,gBAAA,CAAA,CAAA;;AC2VzC,UAAA,CAAA;AAAC,IAAAvF,UAAQ,EAAE;;;;AAGV,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;AAED,UAAA,CAAA;AAAC,IAAA6C,OAAK,EAAE;;;;AAGP,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAMD,UAAA,CAAA;AAAC,IAAAA,OAAK,EAAE;;;;AAWP,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,CAAA;uFAxWQ,eAAe,EAAA,CAAA;cAP3B,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEX,SAAA,EAAA;AACP,oBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAC,MAAqB,eAAA,EAAC,EAAE;AACnF,iBAAA,EAAA,QAAA,EAAA,81PAAA,EAAA,CAAA;;sBAsPI,QAAQ;;sBAAI,QAAQ;;sBAAI,MAAM;uBAAC,mBAAmB,CAAA;wBA5O5C,KAAK,EAAA,CAAA;kBADf,KAAK;YA+BC,aAAa,EAAA,CAAA;kBADnB,KAAK;YAiBC,gBAAgB,EAAA,CAAA;kBADtB,KAAK;YA+DC,YAAY,EAAA,CAAA;kBADlB,SAAS;mBAAC,cAAc,CAAA;YAOT,WAAW,EAAA,CAAA;kBAD1B,MAAM;YAOS,IAAI,EAAA,CAAA;kBADnB,MAAM;YAOS,aAAa,EAAA,CAAA;kBAD5B,MAAM;YAOS,WAAW,EAAA,CAAA;kBAD1B,MAAM;YAOS,eAAe,EAAA,CAAA;kBAD9B,MAAM;YAOS,QAAQ,EAAA,CAAA;kBADvB,MAAM;YAQA,aAAa,EAAA,CAAA;kBADnB,MAAM;YAOA,uBAAuB,EAAA,CAAA;kBAD7B,MAAM;YA4KA,uBAAuB,EAAA,EAAA,EAKvB,eAAe,EAAA,EAAA,EASf,yBAAyB,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MC5ZvB,YAAY,CAAA;;2FAAZ,YAAY,GAAA,CAAA,EAAA,CAAA;6FAAZ,YAAY,EAAA,CAAA,CAAA;iGAbjB,YAAY;QACZ,YAAY;QACZ,UAAU;QACV,YAAY;QACZ,kBAAkB;QAClB,wBAAwB;QACxB,aAAa;QACb,kBAAkB;QAClB,WAAW;QACX,YAAY,CAAA,EAAA,CAAA,CAAA;uFAIP,YAAY,EAAA,CAAA;cArBxB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,YAAY,EAAE;oBACV,eAAe;AAClB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,eAAe;AAClB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,YAAY;oBACZ,UAAU;oBACV,YAAY;oBACZ,kBAAkB;oBAClB,wBAAwB;oBACxB,aAAa;oBACb,kBAAkB;oBAClB,WAAW;oBACX,YAAY;AACf,iBAAA;AACD,gBAAA,SAAS,EAAE,EAAE;AAChB,aAAA,CAAA;;wFACY,YAAY,EAAA,EAAA,YAAA,EAAA,CAnBjB,eAAe,CAAA,EAAA,OAAA,EAAA,CAMf,YAAY;QACZ,YAAY;QACZ,UAAU;QACV,YAAY;QACZ,kBAAkB;QAClB,wBAAwB;QACxB,aAAa;QACb,kBAAkB;QAClB,WAAW;AACX,QAAA,YAAY,aAZZ,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MChBD,cAAc,CAAA;AAChC,IAAA,IAAW,qBAAqB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC;KACf;AACJ,CAAA;AAEK,SAAU,aAAa,CAAC,SAAc,EAAA;IACxC,OAAO;AACH,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,WAAW,EAAE,UAAU,CAAC,MAAM,SAAS,CAAC;KAC3C,CAAC;AACN;;ACLA;;AAEG;AAEH;AACM,MAAgB,mBAClB,SAAQ,aAA+B,CAAA;AA4GvC;;;;AAIG;IACH,WAAY,CAAA,QAAkB,EAAE,MAAuB,EAAA;QACnD,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,EAAQ,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;AACtD,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,OAAO,EAAU,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;QAC5D,IAAI,CAAC,qBAAqB,GAAG,MAAM,IAAI,MAAM,CAAC,qBAAqB,CAAC;KACvE;AAjGD;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;AAED;;;;;AAKG;AACH,IAAA,IAAW,OAAO,GAAA;AACd,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;;;;;;AAQG;AACH,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED;;;;AAIG;AACH,IAAA,IAAW,YAAY,GAAA;AACnB,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;;;;;AAOG;AACH,IAAA,IAAW,MAAM,GAAA;AACb,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;;AAGG;AACH,IAAA,IAAW,WAAW,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;KAC5B;AA4BD;;AAEG;IACI,WAAW,GAAA;QACd,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;KACvC;AAED;;;AAGG;IACO,YAAY,GAAA;AAClB,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;KACnB;AAED;;AAEG;AACI,IAAA,oBAAoB,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC9B;AAED;;AAEG;IACI,QAAQ,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAC3B,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,EACxC,GAAG,CAAC,KAAK,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CACrC,CAAC;KACL;AAED;;AAEG;IACO,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;KAChC;AAED;;AAEG;IACO,gBAAgB,GAAA;QACtB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7C;AAED;;AAEG;IACO,UAAU,GAAA;AAChB,QAAA,OAAO,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;KAChF;;yGAhLiB,mBAAmB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA2C,cAAA,CAAA,CAAA,CAAA,EAAA,CAAA;qGAAnB,mBAAmB,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAAnB,mBAAmB,EAAA,CAAA;cAFxC,SAAS;;AAqLJ,MAAgB,0BAAuD,SAAQ,mBAAgC,CAAA;AAAI;;AC3LzH;;AAEG;AAEH;AACM,MAAgB,uBAClB,SAAQ,mBAA6C,CAAA;AAOrD;;AAEG;IACO,kBAAkB,GAAA;QACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;AAED;;AAEG;IACO,YAAY,GAAA;QAClB,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;KACxF;AAED;;AAEG;IACO,UAAU,GAAA;QAChB,OAAO,KAAK,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KAC1G;AAED;;;;AAIG;IACI,kBAAkB,GAAA;QACrB,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;YAClG,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAC9B,aAAA;AACJ,SAAA;KACJ;;AAzCiB,mBAAA,uBAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,oCAAA,CAAA,CAAA,OAAA,SAAA,+BAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,oCAAA,KAAA,oCAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,uBAAuB,SAAvB,uBAAuB,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;yGAAvB,uBAAuB,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAAvB,uBAAuB,EAAA,CAAA;cAF5C,SAAS;;;ACJV;;AAEG;AAEH;AACM,MAAgB,+BAClB,SAAQ,uBAAiD,CAAA;AAOzD;;AAEG;AACH,IAAA,IAAc,WAAW,GAAA;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;AAsBD;;AAEG;IACI,QAAQ,GAAA;QACX,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;;AAElD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;;QAG3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;KAC1F;AAED;;AAEG;AACI,IAAA,oBAAoB,CAAC,KAAa,EAAA;AACrC,QAAA,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,eAAe,EAAE,CAAC;AAC1B,SAAA;KACJ;AAED;;AAEG;IACO,kBAAkB,GAAA;QACxB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,KAAK,CAAC,kBAAkB,EAAE,CAAC;KAC9B;;AAnEiB,mBAAA,+BAAA,CAAA,IAAA,6BAAA,YAAA,EAAA,IAAA,4CAAA,CAAA,CAAA,OAAA,SAAA,uCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,4CAAA,KAAA,4CAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,+BAA+B,SAA/B,+BAA+B,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;iHAA/B,+BAA+B,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAA/B,+BAA+B,EAAA,CAAA;cAFpD,SAAS;;;ACHV;;AAEG;AACG,MAAgB,iCAClB,SAAQ,uBAAiD,CAAA;AAEzD;;AAEG;AACH,IAAA,IAAc,WAAW,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KAC/C;AAMJ;;ACjBD;;AAEG;MAEU,iBAAiB,CAAA;AACnB,IAAA,iBAAiB,CAAC,mBAAwC,EAAA;AAC7D,QAAA,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;KACzC;AAED;;;AAGG;AACI,IAAA,sBAAsB,CAAC,mBAAwC,EAAA;QAClE,IAAI,CAAC,mBAAmB,CAAC,YAAY;AACjC,YAAA,mBAAmB,CAAC,+BAA+B;AACnD,YAAA,mBAAmB,CAAC,+BAA+B,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;YACtE,IAAI,mBAAmB,CAAC,+BAA+B,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC5E,OAAO,CAAC,GAAG,CAAC;AACR,oBAAA,kBAAkB,EAAE,qBAAqB;oBACzC,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,oBAAA,OAAO,EAAE,2CAA2C;AACpD,oBAAA,MAAM,EAAE,0CAA0C;AACrD,iBAAA,CAAC,CAAC;AACN,aAAA;YAED,MAAM,+BAA+B,GAAG,mBAAmB,CAAC,+BAA+B,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACzG,YAAA,mBAAmB,CAAC,wBAAwB,GAAG,+BAA+B,CAAC;AAC/E,YAAA,mBAAmB,CAAC,YAAY,GAAG,+BAA+B,CAAC,YAAY,CAAC;AAChF,YAAA,+BAA+B,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;AACzE,SAAA;aAAM,IAAI,mBAAmB,CAAC,YAAY;AACvC,YAAA,mBAAmB,CAAC,mBAAmB;AACvC,YAAA,mBAAmB,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;YAC1D,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;gBAChE,OAAO,CAAC,GAAG,CAAC;AACR,oBAAA,kBAAkB,EAAE,qBAAqB;oBACzC,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,oBAAA,OAAO,EAAE,2CAA2C;AACpD,oBAAA,MAAM,EAAE,0CAA0C;AACrD,iBAAA,CAAC,CAAC;AACN,aAAA;YACD,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACjF,YAAA,mBAAmB,CAAC,YAAY,GAAG,mBAAmB,CAAC;AACvD,YAAA,mBAAmB,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAC7D,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,wBAAwB,CAAC,mBAAwC,EAAA;AACpE,QAAA,IAAI,mBAAmB,CAAC,YAAY,IAAI,mBAAmB,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;YACvF,IAAI,mBAAmB,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;gBACzD,OAAO,CAAC,GAAG,CAAC;AACR,oBAAA,kBAAkB,EAAE,qBAAqB;oBACzC,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,oBAAA,OAAO,EAAE,uCAAuC;AAChD,oBAAA,MAAM,EAAE,0CAA0C;AACrD,iBAAA,CAAC,CAAC;AACN,aAAA;AACD,YAAA,mBAAmB,CAAC,cAAc,GAAG,mBAAmB,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;;AAGnF,YAAA,mBAAmB,CAAC,gBAAgB,EAAE,CAAC,IAAI,CACvC,mBAAmB,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACpE,gBAAA,mBAAmB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;aAClD,CAAC,CACL,CAAC;AACL,SAAA;KACJ;AAED;;;AAGG;AACI,IAAA,yBAAyB,CAAC,mBAAwC,EAAA;QACrE,IAAI,CAAC,mBAAmB,EAAE;YACtB,OAAO;AACV,SAAA;AAED,QAAA,MAAM,cAAc,GAAG,mBAAmB,CAAC,cAAc,CAAC;QAC1D,IAAI,CAAC,cAAc,EAAE;YACjB,OAAO;AACV,SAAA;AAED,QAAA,MAAM,+BAA+B,GAAG,mBAAmB,CAAC,wBAAwB,CAAC;QACrF,IAAI,CAAC,+BAA+B,EAAE;YAClC,OAAO;AACV,SAAA;AAED,QAAA,+BAA+B,CAAC,6BAA6B,CAAC,SAAS,CAAC,MAAK;YACzE,cAAc,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,YAAY,CAAC,8BAA8B,EAAE,CAAC,CAAC;AACnH,SAAC,CAAC,CAAC;AAEH,QAAA,+BAA+B,CAAC,6BAA6B,CAAC,SAAS,CAAC,MAAK;YACzE,cAAc,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,YAAY,CAAC,8BAA8B,EAAE,CAAC,CAAC;AACnH,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;AACI,IAAA,WAAW,CAAC,mBAAwC,EAAA;AACvD,QAAA,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,mBAAmB,CAAC,YAAY,IAAI,CAAC,CAAC,mBAAmB,CAAC,cAAc,CAAC;KAC3G;;qGAzGQ,iBAAiB,GAAA,CAAA,EAAA,CAAA;AAAjB,mBAAA,iBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,iBAAiB,WAAjB,iBAAiB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAjB,iBAAiB,EAAA,CAAA;cAD7B,UAAU;;;;ACKL,MAAO,mBAAoB,SAAQ,iBAAiB,CAAA;IAqDtD,WAAY,CAAA,QAAkB,EAAY,iBAAoC,EAAA;QAC1E,KAAK,CAAC,QAAQ,CAAC,CAAC;QADsB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QAlCvE,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAE5B;;AAEG;QACI,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QAyBd,IAAe,CAAA,eAAA,GAAiC,EAAE,CAAC;KAM1D;AAtDD,IAAA,IAAc,aAAa,GAAA;AACvB,QAAA,OAAO,qBAAqB,CAAC;KAChC;IAuBD,IAAW,cAAc,CAAC,MAAsB,EAAA;AAC5C,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACvC,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;oBACzC,OAAO;AACH,wBAAA,OAAO,EAAE,CAAC;qBACb,CAAC;AACN,iBAAC,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC;KACxC;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACtC;AAED,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;IAUM,kBAAkB,GAAA;QACrB,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;AAED;;;AAGG;IACI,gBAAgB,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC7B;IAGM,OAAO,GAAA;AACV,QAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;KAClD;AAEM,IAAA,kBAAkB,CAAC,GAAsB,EAAA;AAC5C,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;YACpB,OAAO;AACV,SAAA;QAED,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,8BAA8B,EAAE,EAAE;YAClE,OAAO;AACV,SAAA;QAED,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACxD;;yGApFQ,mBAAmB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAAC,iBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;qGAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,iBAAA,CAAA,CAAA,EAAA,cAAA,EAAA,SAAA,kCAAA,CAAA,EAAA,EAAA,GAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;oCAKX,cAAc,EAAA,CAAA,CAAA,CAAA;oCAGd,+BAA+B,EAAA,CAAA,CAAA,CAAA;oCAG/B,oCAAoC,EAAA,CAAA,CAAA,CAAA;;;;;;;;QCxBzD,EAAa,CAAA,cAAA,CAAA,CAAA,EAAA,aAAA,CAAA,CAAA;QACX,EAAyB,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA;QAC3B,EAAc,CAAA,YAAA,EAAA,CAAA;;ADgFV,UAAA,CAAA;AAAC,IAAAzF,UAAQ,EAAE;;;;AAGV,CAAA,EAAA,mBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;uFAxEQ,mBAAmB,EAAA,CAAA;cAJ/B,SAAS;2BACI,iBAAiB,EAAA,QAAA,EAAA,oEAAA,EAAA,CAAA;wFASpB,YAAY,EAAA,CAAA;kBADlB,eAAe;AAAC,YAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;YAI/C,mBAAmB,EAAA,CAAA;kBADzB,eAAe;AAAC,YAAA,IAAA,EAAA,CAAA,+BAA+B,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;YAIhE,+BAA+B,EAAA,CAAA;kBADrC,eAAe;AAAC,YAAA,IAAA,EAAA,CAAA,oCAAoC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;YAQrE,YAAY,EAAA,CAAA;kBADlB,KAAK;YAoDC,OAAO,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MEpDL,gBAAgB,CAAA;;mGAAhB,gBAAgB,GAAA,CAAA,EAAA,CAAA;iGAAhB,gBAAgB,EAAA,CAAA,CAAA;AAJd,mBAAA,gBAAA,CAAA,IAAA,6BAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,SAAA,EAAA;QACP,iBAAiB;AACpB,KAAA,EAAA,OAAA,EAAA,CAVG,YAAY;QACZ,YAAY;QACZ,4BAA4B;QAC5B,iBAAiB;QACjB,eAAe;QACf,kBAAkB;QAClB,iCAAiC,CAAA,EAAA,CAAA,CAAA;uFAM5B,gBAAgB,EAAA,CAAA;cApB5B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,mBAAmB;AACtB,iBAAA;AACD,gBAAA,YAAY,EAAE;oBACV,mBAAmB;AACtB,iBAAA;AACD,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,YAAY;oBACZ,4BAA4B;oBAC5B,iBAAiB;oBACjB,eAAe;oBACf,kBAAkB;oBAClB,iCAAiC;AACpC,iBAAA;AACD,gBAAA,SAAS,EAAE;oBACP,iBAAiB;AACpB,iBAAA;AACJ,aAAA,CAAA;;wFACY,gBAAgB,EAAA,EAAA,YAAA,EAAA,CAfrB,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAGnB,YAAY;QACZ,YAAY;QACZ,4BAA4B;QAC5B,iBAAiB;QACjB,eAAe;QACf,kBAAkB;AAClB,QAAA,iCAAiC,aAZjC,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCTd,eAAe,CAAA;AACjB,IAAA,WAAW,CAAC,OAAO,EAAA;QACtB,IAAI,OAAO,CAAC,GAAG;AACR,eAAA,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;;;YAG7B,OAAO;AACV,SAAA;QAED,OAAO,CAAC,GAAG,CAAC;AACR,YAAA,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrB,YAAA,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,EAAE,CAAC;AACxE,YAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;AAC1B,YAAA,kBAAkB,EAAE,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO;AAC9E,SAAA,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC;AACV,YAAA,IAAI,EAAE,mBAAmB;AACzB,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,MAAM,EAAE,cAAc;AACtB,YAAA,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;AACtB,SAAA,CAAC,CAAC;KACN;AACJ;;ACvBD;;;AAGG;AACG,MAAO,mBAAoB,SAAQ,YAAY,CAAA;AACjD,IAAA,WAAA,CAAY,eAAuC,EAAA;QAC/C,KAAK,CAAC,eAAe,CAAC,CAAC;KAC1B;;yGAHQ,mBAAmB,EAAA,EAAA,CAAA,QAAA,CAAAiD,sBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAnB,mBAAA,mBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,mBAAmB,WAAnB,mBAAmB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAnB,mBAAmB,EAAA,CAAA;cAL/B,UAAU;;;ACCX;;;AAGG;AACG,MAAO,eAAgB,SAAQ,QAAQ,CAAA;AACzC,IAAA,WAAA,CAAY,GAAe,EAAA;QACvB,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;;iGAJQ,eAAe,EAAA,EAAA,CAAA,QAAA,CAAAhD,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAf,mBAAA,eAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,eAAe,WAAf,eAAe,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAf,eAAe,EAAA,CAAA;cAL3B,UAAU;;;ACCX;;AAEG;AACG,MAAO,WAAY,SAAQ,WAAW,CAAA;AACxC,IAAA,WAAA,CAAY,eAAuC,EAAA;QAC/C,KAAK,CAAC,eAAe,CAAC,CAAC;KAC1B;;yFAHQ,WAAW,EAAA,EAAA,CAAA,QAAA,CAAAgD,sBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAX,mBAAA,WAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,WAAW,WAAX,WAAW,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAX,WAAW,EAAA,CAAA;cAJvB,UAAU;;;ACQX;;AAEG;IACS,kBAaX;AAbD,CAAA,UAAY,iBAAiB,EAAA;AACzB;;AAEG;AACH,IAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX;;AAEG;AACH,IAAA,iBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC;;AAEG;AACH,IAAA,iBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACvB,CAAC,EAbW,iBAAiB,KAAjB,iBAAiB,GAa5B,EAAA,CAAA,CAAA,CAAA;AAED;;AAEG;MACU,oBAAoB,CAAA;AAG7B;;;AAGG;IACI,OAAO,QAAQ,CAAC,iBAAoC,EAAA;AACvD,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AAC5B,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACtD,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,GAAG,EAAE;AACnE,YAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;YAC1D,OAAO;AACV,SAAA;QAED,IAAI,CAAC,kBAAkB,CAAC;YACpB,IAAI,EAAE,oBAAoB,CAAC,WAAW;AACtC,YAAA,UAAU,EAAE,CAAC,OAAoB,KAAI;gBACjC,IAAI,CAAC,OAAO,EAAE;AACV,oBAAA,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,gEAAgE,CAAC,CAAC;AAC7G,oBAAA,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;AACtB,iBAAA;AAED,gBAAA,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;gBAE/B,IAAI,CAAC,UAAU,EAAE;AACb,oBAAA,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,sDAAsD,CAAC,CAAC;AACnG,oBAAA,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;AACtB,iBAAA;AAED,gBAAA,IAAI,oBAAoB,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,UAAU,CAAC;AACnE,oBAAA,oBAAoB,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,UAAU,CAAC,EAAE;;AAEvE,oBAAA,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;AACtB,iBAAA;gBAED,OAAO,oBAAoB,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,KAAK,EAAE,UAAU,CAAC;qBAC7E,IAAI,CACD,IAAI,CAAC,CAAC,CAAC,EACP,QAAQ,CAAC,aAAa,IAAG;oBACrB,OAAO,iBAAiB,CAAC,KAAK,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;AACpE,iBAAC,CAAC,EACF,QAAQ,CAAC,MAAK;AACV,oBAAA,OAAO,KAAK,CAAC;iBAChB,CAAC,CAAC,CAAC;aACf;AACD,YAAA,cAAc,EAAE,CAAC,QAA2B,KAAI;AAC5C,gBAAA,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;aACvB;AACD,YAAA,YAAY,EAAE,CAAC,KAAgB,KAAI;AAC/B,gBAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;aAClC;AACJ,SAAA,CAAC,CAAC;KACN;AAED;;;;AAIG;AACI,IAAA,OAAO,sBAAsB,CAAC,iBAAoC,EAAE,aAA4B,EAAA;AACnG,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AAC5B,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACtD,QAAA,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,OAAO,EAAE;AACjD,YAAA,oBAAoB,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,IAAI,CAAC;iBACzD,IAAI,CACD,IAAI,CAAC,CAAC,CAAC,EACP,QAAQ,CAAC,aAAa,IAAG;AACrB,gBAAA,OAAO,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACpD,aAAC,CAAC,CAAC;AACN,iBAAA,SAAS,EAAE,CAAC;AACjB,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;AACK,IAAA,OAAO,gBAAgB,CAAC,iBAAoC,EAAE,UAAkB,EAAA;AACpF,QAAA,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;KACxG;AAED;;AAEG;AACK,IAAA,OAAO,gBAAgB,CAAC,iBAAyB,EAAE,UAAkB,EAAA;QACzE,MAAM,uBAAuB,GAAG,6CAA6C,CAAC;QAC9E,MAAM,sBAAsB,GAAG,kDAAkD,CAAC;QAClF,MAAM,wBAAwB,GAAG,mDAAmD,CAAC;;AAErF,QAAA,IAAI,iBAAiB,KAAK,iBAAiB,CAAC,eAAe,EAAE;AACzD,YAAA,MAAM,YAAY,GAAG;AACjB,gBAAA,cAAc,CAAC,sBAAsB;AACrC,gBAAA,cAAc,CAAC,qBAAqB;AACpC,gBAAA,cAAc,CAAC,qBAAqB;gBACpC,uBAAuB;gBACvB,sBAAsB;gBACtB,wBAAwB;aAC3B,CAAC;AACF,YAAA,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;IAEO,OAAO,gBAAgB,CAC3B,iBAAoC,EACpC,YAAqB,EACrB,aAAqB,EAAE,EAAA;;QAEvB,OAAO,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC;aACxD,IAAI,CACD,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,OAAO,IAAG;YACV,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC,YAAY,CAAC,OAAO,CAAC;AAEnE,YAAA,IAAI,YAA+B,CAAC;AACpC,YAAA,IAAI,OAAO,EAAE;AACT,gBAAA,YAAY,GAAG;oBACX,GAAG,EAAE,iBAAiB,CAAC,OAAO,CAAC,UAAU,GAAG,WAAW,CAAC,+BAA+B;oBACvF,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI;iBAC7D,CAAC;AACL,aAAA;AAED,YAAA,MAAM,aAAa,GAAyB;AACxC,gBAAA,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK;gBACnC,OAAO,EAAE,YAAY;oBACjB,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AAChH,gBAAA,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK;AAC5C,gBAAA,YAAY,EAAE,YAAY;aAC7B,CAAC;AAEF,YAAA,OAAO,aAAa,CAAC;SACxB,CAAC,CAAC,CAAC;KACf;;AAvIc,oBAAW,CAAA,WAAA,GAAG,sBAAsB;;AC1BjD,MAAO,gBAAiB,SAAQ,wBAAwB,CAAA;AAG1D;;;;;AAKG;IACH,WAAoB,CAAA,MAAc,EAAE,GAAe,EAAA;QAC/C,KAAK,CAAC,GAAG,CAAC,CAAC;QADK,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KAEjC;AAED;;AAEG;IACI,KAAK,GAAA;QACR,MAAM,QAAQ,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;YAClB,OAAO;AACV,SAAA;QAED,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,KAAK,CACjB,EAAE,CAAC,CAAC,CAAC,EACL,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CACjC;;;;AAIA,aAAA,IAAI,CACD,SAAS,CAAC,MAAK;AACX,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;;YAGvB,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,QAAQ,EAAE;gBACtC,IAAI,GAAG,GAAG,CAAC;AACX,gBAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AAC7C,aAAA;;YAGD,QAAQ,GAAG,GAAG,CAAC;AACf,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;SACnB,CAAC,EACF,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,EACtB,YAAY,CAAC,QAAQ,CAAC,EACtB,SAAS,EAAE,MAAK;;YAEZ,IAAI,QAAQ,GAAG,IAAI,EAAE;gBACjB,IAAI,GAAG,QAAQ,CAAC;AAChB,gBAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,aAAA;AAED,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;SACnB,EAAE,CACN;AACA,aAAA,SAAS,EAAE,CAAC;KACpB;AAED;;AAEG;IACI,IAAI,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;KACpC;;mGAlEQ,gBAAgB,EAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAA9C,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAhB,mBAAA,gBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,gBAAgB,WAAhB,gBAAgB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAhB,gBAAgB,EAAA,CAAA;cAD5B,UAAU;;;AC6CX;;;AAGG;MACU,iBAAiB,CAAA;AA2B1B;;AAEG;AACH,IAAA,WAAA,CACY,iBAAoC,EACpC,gBAAkC,EAClC,MAAc,EACd,cAA8B,EAAA;QAH9B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAhCzB,QAAA,IAAA,CAAA,wBAAwB,GAAqB,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;QAMnF,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;QACtB,IAAgB,CAAA,gBAAA,GAAuC,EAAE,CAAC;AAC1D,QAAA,IAAA,CAAA,WAAW,GAA8C;AAC7D,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,aAAa,EAAE,CAAC;AAChB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,KAAK,EAAE,IAAI;SACd,CAAC;AACM,QAAA,IAAA,CAAA,iBAAiB,GAA0D;AAC/E,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,aAAa,EAAE,CAAC;AAChB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,QAAQ,EAAE,IAAI;SACjB,CAAC;KAaD;AAED;;;;;;;;AAQG;AACI,IAAA,UAAU,CAAC,OAAiC,EAAA;QAC/C,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;AAC3D,QAAA,IAAI,CAAC,OAAO,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;;AAG/C,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAE5E,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;QAEjC,IAAI,cAAc,GAAG,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AACjC,aAAA,IAAI,CACD,GAAG,CAAC,KAAK,IAAG;YACR,IAAI,KAAK,YAAY,eAAe,EAAE;AAClC,gBAAA,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC5B,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;AAC1C,aAAA;AAAM,iBAAA,IAAI,KAAK,YAAY,aAAa,IAAI,cAAc,EAAE;gBACzD,kBAAkB,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBACnH,cAAc,GAAG,IAAI,CAAC;AACtB,gBAAA,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC/D,aAAA;AACL,SAAC,CAAC,EACF,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAC/C,SAAS,CAAC,KAAK,IACX,UAAU,CAAC,4BAA4B,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AAChF,aAAA,IAAI,CAAC,GAAG,CAAC,eAAe,KAAS,EAAE,KAAK,EAAE,eAAe,EAAE,CAAA,CAAC,CAAC,CAAC,CAClF;AACA,aAAA,SAAS,CAAC,CAAC,IAAgE,KAAI;;;AAG5E,YAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,EAAE;AAChD,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC;oBAChC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;oBAC7C,oBAAoB,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oBAC/C,cAAc,EAAE,IAAI,CAAC,eAAe;AACvC,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC/B,aAAA;AACL,SAAC,CAAC,CAAC;QAEP,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACnG;AAED;;AAEG;IACI,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;KACpC;AAED;;;;AAIG;IACI,qBAAqB,CAAC,aAA4B,EAAE,QAAgB,EAAA;AACvE,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC;KACnD;AAEO,IAAA,2BAA2B,CAAC,OAAgB,EAAA;AAChD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAClC,QAAA,IAAI,OAAO,EAAE;YACT,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AACjE,SAAA;AAAM,aAAA;YACH,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAClE,SAAA;AAED,QAAA,kBAAkB,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KACxH;AAEO,IAAA,MAAM,CAAC,IAAS,EAAA;;QAEpB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAE5D,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE;AAC5F,YAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AACjC,SAAA;AAED,QAAA,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAC/D,QAAA,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,oCAAoC,EAAE;AAC5C,YAAA,IAAI,CAAC,oCAAoC,GAAG,IAAI,oCAAoC,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YACjH,IAAI,CAAC,oCAAoC,CAAC,QAAQ,CAAC,CAAC,OAAO,KAAI;AAC3D,gBAAA,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAClD,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACpB,aAAC,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE;AACtC,YAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,8BAA8B,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;YACrG,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,OAAO,KAAI;gBACrD,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxD,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACpB,aAAC,CAAC,CAAC;AACN,SAAA;AAED,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KAC5B;AAED;;;AAGG;AACK,IAAA,cAAc,CAAC,IAA0B,EAAA;QAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,aAAa,EAAE;YACf,MAAM,GAAG,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/C,SAAA;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;KACrD;AAED;;;;AAIG;AACK,IAAA,MAAM,CAAC,IAAiB,EAAA;AAC5B,QAAA,MAAM,OAAO,GAA8C,IAAI,CAAC,WAAW,CAAC;AAC5E,QAAA,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE;AACvB,YAAA,MAAM,MAAM,GAAG;gBACX,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,aAAa;AAC9C,gBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;gBAC7B,KAAK,EAAE,OAAO,CAAC,KAAK;aACvB,CAAC;AACF,YAAA,IAAI,OAAO,CAAC,KAAK,KAAK,YAAY,CAAC,UAAU,EAAE;AAC3C,gBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,gBAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;AAChC,aAAA;AAED,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAClC,SAAA;AAED,QAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACnC,QAAA,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC;AACxC,QAAA,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAiB,CAAC;;AAGlD,QAAA,OAAO,CAAC,KAAK,GAAG,UAAU,CACtB,MAAK;AACD,YAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,aAAa;gBAC9C,KAAK,EAAE,OAAO,CAAC,KAAK;AACvB,aAAA,CAAC,CAAC;AACH,YAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,YAAA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC5B,SAAC,EACD,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAEvC,IAAI,CAAC,iBAAiB,CAAC,aAAa;aACnC,IAAI,CACD,IAAI,CAAC,CAAC,CAAC,EACP,QAAQ,CAAC,MAAK;AACV,YAAAoF,iBAAe,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAClD,MAAM,IAAG;AACL,gBAAA,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,0BAA0B,GAAG,kCAAkC,CAAC,CAAC;gBAC9G,kBAAkB,CAAC,oCAAoC,EAAE,CAAC;AAC9D,aAAC,CACJ,CAAC;AAEF,YAAA,MAAM,UAAU,GAAG,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3E,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3G,SAAC,CAAC,EACF,GAAG,CAAC,OAAO,IAAG;YACV,kBAAkB,CAAC,kBAAkB,CACjC,mBAAmB,EAAE,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1F,YAAA,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;;YAGpC,IAAI,OAAO,CAAC,KAAK,EAAE;AACf,gBAAA,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5B,gBAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;oBACrB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,aAAa;oBAC9C,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;AACvB,iBAAA,CAAC,CAAC;AACH,gBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,gBAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;AAC7B,gBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,gBAAA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC3B,aAAA;SACJ,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,EAAE,MAAM,KAAI;AACzB,YAAA,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC;YACpC,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB,YAAA,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;AACpB,gBAAA,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACxC,aAAA;AAAM,iBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAClC,OAAO,GAAG,KAAK,CAAC;AACnB,aAAA;AAAM,iBAAA;gBACH,IAAI,KAAK,CAAC,KAAK,EAAE;AACb,oBAAA,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;AACzB,iBAAA;qBAAM,IAAI,KAAK,CAAC,OAAO,EAAE;AACtB,oBAAA,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC3B,iBAAA;AACJ,aAAA;AAED,YAAA,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;;YAGxB,IAAI,OAAO,CAAC,KAAK,EAAE;AACf,gBAAA,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvC,gBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,gBAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;AAC7B,gBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,gBAAA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC3B,aAAA;AAED,YAAA,OAAO,KAAK,CAAC;AACjB,SAAC,CAAC,CAAC;AACN,aAAA,SAAS,EAAE,CAAC;AAEb,QAAA,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;KACnC;AAED;;;;AAIG;AACK,IAAA,aAAa,CAAC,IAAU,EAAA;AAC5B,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAClC,QAAA,MAAM,OAAO,GAA0D,IAAI,CAAC,iBAAiB,CAAC;AAC9F,QAAA,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE;AACvB,YAAA,MAAM,MAAM,GAAG;gBACX,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,aAAa;gBAC9C,KAAK,EAAE,OAAO,CAAC,KAAK;aACvB,CAAC;AACF,YAAA,IAAI,OAAO,CAAC,KAAK,KAAK,kBAAkB,CAAC,UAAU,EAAE;AACjD,gBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,gBAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;AAChC,aAAA;AAED,YAAA,kBAAkB,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3H,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAClC,SAAA;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3C,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;;YAE1B,OAAO,OAAO,CAAC,OAAO,CAAC;AACnB,gBAAA,UAAU,EAAE,CAAC;gBACb,KAAK,EAAE,kBAAkB,CAAC,WAAW;AACxC,aAAA,CAAC,CAAC;AACN,SAAA;AAED,QAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACnC,QAAA,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC;AAC9C,QAAA,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAuB,CAAC;;AAGxD,QAAA,OAAO,CAAC,KAAK,GAAG,UAAU,CACtB,MAAK;AACD,YAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACrB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,aAAa;gBAC9C,KAAK,EAAE,OAAO,CAAC,KAAK;AACvB,aAAA,CAAC,CAAC;AACH,YAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,YAAA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;;AAGxB,YAAA,IAAI,OAAO,CAAC,KAAK,KAAK,kBAAkB,CAAC,UAAU,EAAE;AACjD,gBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,gBAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;AAChC,aAAA;AACL,SAAC,EACD,iBAAiB,CAAC,eAAe,CAAC,CAAC;;AAGvC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC;aACtE,IAAI,CACL,OAAO,IAAG;AACN,YAAA,kBAAkB,CAAC,kBAAkB,CACjC,mBAAmB,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACzF,YAAA,IAAI,OAAO,EAAE;;AAET,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,gBAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvE,gBAAA,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC;AAClD,aAAA;AAAM,iBAAA;;AAEH,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,gBAAA,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC;AAChD,aAAA;;YAGD,IAAI,OAAO,CAAC,KAAK,EAAE;AACf,gBAAA,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5B,gBAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;oBACrB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,aAAa;oBAC9C,KAAK,EAAE,OAAO,CAAC,KAAK;AACvB,iBAAA,CAAC,CAAC;AACH,gBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,gBAAA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxB,gBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,gBAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;AAChC,aAAA;SACJ,EACD,KAAK,IAAG;;AAEJ,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,YAAA,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC;;YAG7C,IAAI,OAAO,CAAC,KAAK,EAAE;AACf,gBAAA,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5B,gBAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;oBACrB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,aAAa;oBAC9C,KAAK,EAAE,OAAO,CAAC,KAAK;AACvB,iBAAA,CAAC,CAAC;AACH,gBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,gBAAA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxB,gBAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,gBAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;AAChC,aAAA;AACL,SAAC,CAAC,CAAC;AACP,QAAA,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;KACnC;AAEO,IAAA,UAAU,CAAC,IAAqB,EAAA;AACpC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAClC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,EAAE;YACxC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC;AACtD,cAAE,IAAI,CAAC,SAAS,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1D,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;;AAG3B,QAAAA,iBAAe,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;;AAGlC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE;aAC/C,IAAI,CACD,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAC3G,GAAG,CAAC,MAAM,kBAAkB,CAAC,kBAAkB,CAC3C,mBAAmB,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CACtF;AACJ,aAAA,SAAS,EAAE,CAAC;KACpB;AAEO,IAAA,UAAU,CAAC,IAAqB,EAAA;AACpC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC;AAC7E,aAAA,IAAI,CAAC,MAAM,KAAuB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAA,CAAC,CAAC;KACnE;AAEO,IAAA,2BAA2B,CAAC,OAA6B,EAAA;AAC7D,QAAA,OAAO,EAAE,IAAI,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACnE;;AAxZc,iBAAe,CAAA,eAAA,GAAG,IAAI,CAAC;qGAD7B,iBAAiB,EAAA,EAAA,CAAA,QAAA,CAAA9B,iBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAiC,gBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAC,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAA,EAAA,CAAA,cAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAjB,mBAAA,iBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,iBAAiB,WAAjB,iBAAiB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAjB,iBAAiB,EAAA,CAAA;cAL7B,UAAU;;;AC9CX;;;AAGG;AAEG,MAAO,qBAAsB,SAAQ,qBAAqB,CAAA;IAC5D,WACI,CAAA,iBAAoC,EAAE,eAAuC,EAAA;AAC7E,QAAA,KAAK,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;KAC7C;;6GAJQ,qBAAqB,EAAA,EAAA,CAAA,QAAA,CAAAlC,iBAAA,CAAA,EAAA,EAAA,CAAA,QAAA,CAAAmC,sBAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAArB,mBAAA,qBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,qBAAqB,WAArB,qBAAqB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAArB,qBAAqB,EAAA,CAAA;cADjC,UAAU;;;ACEL,MAAO,0BAA2B,SAAQ,gCAAgC,CAAA;AAC5E;;;;AAIG;AACH,IAAA,WAAA,CAAY,GAAe,EAAA;QACvB,KAAK,CAAC,GAAG,CAAC,CAAC;KACd;AAED;;;;AAIG;IACI,0BAA0B,CAAC,GAAW,EAAE,IAAY,EAAA;QACvD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;QAClD,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,OAAO,CAAC,QAAQ,CAAC,uDAAuD,EACpE,gCAAgC,CAAC,CAAC;YACtC,OAAO,UAAU,CAAC,MAAK;AACnB,gBAAA,OAAO,EAAC,KAAK,EAAE,+BAA+B,EAAC,CAAC;AACpD,aAAC,CAAC,CAAC;AAEN,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,EAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAC,CAAC,CAAC;AACjD,SAAA;KACJ;AAED;;;;AAIG;IACI,4BAA4B,CAAC,GAAW,EAAE,OAAqB,EAAA;QAClE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;QAClD,OAAO,GAAG,OAAO,IAAiB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAClD,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,EAAC,SAAS,EAAE,GAAG,EAAC,CAAC,CAAC,IAAI,CAC3C,GAAG,CAAC,IAAI,IAAG;YACD,OAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;AACrE,YAAA,OAAO,OAAO,CAAC;SAClB,CAAC,CAAC,CAAC;KACX;;uHA1CQ,0BAA0B,EAAA,EAAA,CAAA,QAAA,CAAA3F,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAA1B,mBAAA,0BAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,0BAA0B,WAA1B,0BAA0B,CAAA,IAAA,EAAA,CAAA,CAAA;uFAA1B,0BAA0B,EAAA,CAAA;cADtC,UAAU;;;ACLX;;;AAGG;AACG,MAAO,mBAAoB,SAAQ,YAAY,CAAA;AACjD,IAAA,WAAA,CAAY,GAAe,EAAA;QACvB,KAAK,CAAC,GAAG,CAAC,CAAC;KACd;;yGAHQ,mBAAmB,EAAA,EAAA,CAAA,QAAA,CAAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;AAAnB,mBAAA,mBAAA,CAAA,KAAA,6BAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,KAAA,EAAA,mBAAmB,WAAnB,mBAAmB,CAAA,IAAA,EAAA,CAAA,CAAA;uFAAnB,mBAAmB,EAAA,CAAA;cAL/B,UAAU;;;MCwEE,iBAAiB,CAAA;;qGAAjB,iBAAiB,GAAA,CAAA,EAAA,CAAA;kGAAjB,iBAAiB,EAAA,CAAA,CAAA;AAtCf,mBAAA,iBAAA,CAAA,IAAA,6BAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,SAAA,EAAA;QACP,eAAe;QACf,UAAU;QACV,eAAe;QACf,eAAe;QACf,mBAAmB;QACnB,sBAAsB;QACtB,mBAAmB;QACnB,iBAAiB;QACjB,uBAAuB;QACvB,oBAAoB;QACpB,mBAAmB;QACnB,iBAAiB;QACjB,qBAAqB;QACrB,cAAc;QACd,WAAW;QACX,YAAY;QACZ,sBAAsB;QACtB,UAAU;QACV,gBAAgB;QAChB,iBAAiB;QACjB,mBAAmB;QACnB,WAAW;QACX,mBAAmB;QACnB,iBAAiB;QACjB,uBAAuB;QACvB,eAAe;QACf,eAAe;QACf,YAAY;QACZ,gBAAgB;QAChB,UAAU;QACV,qBAAqB;QACrB,0BAA0B;QAC1B,gBAAgB;QAChB,WAAW;AACX,QAAA,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE;AACvD,KAAA,EAAA,CAAA,CAAA;uFAEQ,iBAAiB,EAAA,CAAA;cAvC7B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,SAAS,EAAE;oBACP,eAAe;oBACf,UAAU;oBACV,eAAe;oBACf,eAAe;oBACf,mBAAmB;oBACnB,sBAAsB;oBACtB,mBAAmB;oBACnB,iBAAiB;oBACjB,uBAAuB;oBACvB,oBAAoB;oBACpB,mBAAmB;oBACnB,iBAAiB;oBACjB,qBAAqB;oBACrB,cAAc;oBACd,WAAW;oBACX,YAAY;oBACZ,sBAAsB;oBACtB,UAAU;oBACV,gBAAgB;oBAChB,iBAAiB;oBACjB,mBAAmB;oBACnB,WAAW;oBACX,mBAAmB;oBACnB,iBAAiB;oBACjB,uBAAuB;oBACvB,eAAe;oBACf,eAAe;oBACf,YAAY;oBACZ,gBAAgB;oBAChB,UAAU;oBACV,qBAAqB;oBACrB,0BAA0B;oBAC1B,gBAAgB;oBAChB,WAAW;AACX,oBAAA,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE;AACvD,iBAAA;AACJ,aAAA,CAAA;;;AC3ED;;AAEG;MACmB,YAAY,CAAA;AAC9B;;;;;;;;;AASG;IACH,WAA6B,CAAA,SAAqB,EAAE,2BAAoC,EAAA;QAA3D,IAAS,CAAA,SAAA,GAAT,SAAS,CAAY;AAC9C,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,2BAA2B,EAAE;YAChD,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC9B,SAAA;KACJ;AAsBJ;;ACgCD;;;;;;;;AAQG;MACmB,kBAAkB,CAAA;AA4BpC;;;;AAIG;IACH,WAAsB,CAAA,aAAA,GAAwB,oBAAoB,EAAY,iBAAqC,EAAA;QAA7F,IAAa,CAAA,aAAA,GAAb,aAAa,CAA+B;QAAY,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAoB;AAhC3G,QAAA,IAAA,CAAA,mBAAmB,GAAG,OAAO,CAAC,UAAU,EAAW,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAOzG;;AAEG;QACI,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;KAsBkG;AA4DxH;;AAEG;AACH,IAAA,IAAc,gBAAgB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;KAC1B;AAED;;AAEG;IACI,SAAS,GAAA;;;AAIZ,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnD,IAAI,CAAC,SAAS,EAAE,CAAC;KACpB;AAED;;;AAGG;IACI,MAAM,GAAA;QACT,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAEnB,QAAA,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;AAGnD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAEpB,QAAA,IAAI,YAAY,CAAC;QAEjB,IAAI,CAAC,SAAS,EAAE;AACX,aAAA,IAAI,CACD,QAAQ,CAAC,CAAC,UAAU,KAAI;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YAC9C,YAAY,GAAG,UAAU,CAAC;AAC1B,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;SACpC,CAAC,EACF,IAAI,CAAC,CAAC,CAAC,CACV,CAAC,SAAS,CAAC;AACR,YAAA,IAAI,EAAE,CAAC,UAAU,KAAI;AACjB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACnB,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,gBAAA,IAAI,UAAU,EAAE;AACZ,oBAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;AAC/B,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;AACjC,iBAAA;AAED,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACnD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,aAAa,EAAE,CAAC;aACxB;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACT,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACnB,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAC3B;AACR,SAAA,CAAC,CAAC;KACV;AAEM,IAAA,aAAa,CAChB,SAAiC,EACjC,KAA6B,EAC7B,KAA0B,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACxD,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChH,iBAAA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;;AAEjB,gBAAA,MAAM,kBAAkB,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;AAC7C,gBAAA,IAAI,kBAAkB,EAAE;AACpB,oBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,iBAAA;AACD,gBAAA,OAAO,kBAAkB,CAAC;aAC7B,CAAC,CAAC,CAAC;AACX,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;IAEM,mCAAmC,CACtC,SAAoB,EACpB,QAAqB,EAAA;QACrB,OAAO;AACH,YAAA,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,wBAAwB;AACnE,YAAA,iBAAiB,EAAE,IAAI,CAAC,mBAAmB,CAAC,yBAAyB;AACrE,YAAA,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,qBAAqB;AACvD,YAAA,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB;SACtD,CAAC;KACL;AAED;;AAEG;IACO,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACrC,YAAA,IAAI,EAAE,CAAC,IAAI,KAAI;AACX,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC/B;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACb,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACzB,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;;aAEvB;YACD,QAAQ,EAAE,MAAK;AACX,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACxB;AACJ,SAAA,CAAC,CAAC;KACN;AAED;;AAEG;IACO,SAAS,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAClC;AAED;;;;;;;AAOG;AACO,IAAA,2BAA2B,CACjC,OAAwB,EACxB,UAAe,EACf,kBAAuG,EACvG,eAAuB,EAAA;AACvB,QAAA,MAAM,WAAW,GAAG,OAAO,YAAY,SAAS,CAAC;QACjD,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,WAAW,GAAG,OAAO,YAAY,SAAS,CAAC;AAC9C,SAAA;AAED,QAAA,IAAI,WAAW,EAAE;;AAEb,YAAA,IAAI,CAAC,gBAAgB,CACjB,OAAoB,EACpB,UAAU,CAAC,eAAe,CAAC,GACG,kBAAkB,EAAE,CAAC;AAC1D,SAAA;AAAM,aAAA,IAAI,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,wBAAwB,CACzB,OAAoB,EACpB,UAAU,CAAC,eAAe,CAAC,GACG,kBAAkB,EAAE,CAAC;AAC1D,SAAA;AAAM,aAAA;;AAEH,YAAA,UAAU,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;AACpC,SAAA;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE;YACjC,IAAI,WAAW,IAAI,WAAW,EAAE;;gBAE5B,OAAO;AACV,aAAA;YAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC;YACpC,IAAI,CAAC,QAAQ,EAAE;gBACX,OAAO;AACV,aAAA;AAED,YAAA,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE;gBAC9B,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACpC,oBAAA,IAAI,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5B,oBAAA,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;wBAC7B,OAAO,GAAG,OAAO,EAAE,CAAC;AACvB,qBAAA;AAED,oBAAA,UAAU,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC;;oBAGtC,MAAM;AACT,iBAAA;AACJ,aAAA;AACJ,SAAA;KACJ;AAED;;;;;;AAMG;AACO,IAAA,gBAAgB,CAAC,IAAe,EAAE,UAAe,EAAE,kBAA+C,EAAA;AACxG,QAAA,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;AAC5B,YAAA,IAAI,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;gBAClC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,gBAAA,IAAI,OAAO,EAAE;AACT,oBAAA,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,UAAU,EAAE,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AACpG,iBAAA;AACJ,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,kBAAkB,CAAC,SAAS,EAAE;AAC7C,YAAA,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7C,SAAA;KACJ;AAED;;;;;;AAMG;AACO,IAAA,wBAAwB,CAAC,SAAoB,EAAE,UAAe,EAAE,kBAA+C,EAAA;QACrH,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;;YAE5B,YAAY,GAAG,KAAK,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC;gBACR,MAAM,EAAE,IAAI,CAAC,aAAa;gBAC1B,KAAK,EAAE,QAAQ,CAAC,OAAO;AACvB,gBAAA,OAAO,EAAE,CAA8C,4CAAA,CAAA;oBACnD,CAAmC,gCAAA,EAAA,OAAO,UAAU,CAAuB,qBAAA,CAAA;AAClF,aAAA,CAAC,CAAC;AACN,SAAA;QAED,MAAM,WAAW,GAAG,UAAwB,CAAC;AAE7C,QAAA,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE;YACzC,YAAY,GAAG,KAAK,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC;gBACR,MAAM,EAAE,IAAI,CAAC,aAAa;gBAC1B,KAAK,EAAE,QAAQ,CAAC,OAAO;AACvB,gBAAA,OAAO,EAAE,CAAkD,gDAAA,CAAA;AACvD,oBAAA,CAAA,aAAA,EAAgB,SAAS,CAAC,MAAM,cAAc,WAAW,CAAC,MAAM,CAAuB,qBAAA,CAAA;AAC9F,aAAA,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,YAAY,EAAE;AACd,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,gBAAA,MAAM,WAAW,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC3B,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC3C,gBAAA,IAAI,OAAO,EAAE;oBACT,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC;AAC1F,iBAAA;AACJ,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,kBAAkB,CAAC,SAAS,EAAE;AAClD,YAAA,kBAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAClD,SAAA;KACJ;AAED;;AAEG;IACK,oBAAoB,GAAA;QACxB,IAAI,CAAC,IAAI,CAAC,YAAY;AACjB,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACvB,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAChB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAC,CAAC,CAAC;QAEP,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;AAED;;AAEG;AACK,IAAA,cAAc,CAAC,IAAU,EAAA;;AAE7B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,OAAO;AACV,SAAA;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACzE;AAED;;;;AAIG;AACK,IAAA,aAAa,CAAC,YAAwB,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;KACjC;AACJ;;AC/cD;;AAEG;AACG,MAAgB,sBAAmC,SAAQ,YAAwB,CAAA;AAIrF;;;;;AAKG;AACH,IAAA,WAAA,CAAY,SAAsB,EAAA;;;AAG9B,QAAA,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAExB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC;AACxB,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QAEjC,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1C,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC9B,SAAA;KACJ;AAED;;;;AAIG;AACI,IAAA,UAAU,CAAC,SAA6C,EAAA;AAC3D,QAAA,OAAO,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;KAC7F;AAeJ;;ACjDK,SAAU,kBAAkB,CAAC,KAA6B,EAAA;;IAE5D,IAAI,MAAM,GAA8B,EAAE,CAAC;AAC3C,IAAA,KAAK,IAAI,MAAM,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE;AACrD,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACrD,KAAA;;AAGD,IAAA,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE;AAChE,QAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE;AAC9B,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChH,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,MAAM,CAAC;AAClB;;ACOA;;AAEG;AAEG,MAAgB,cAClB,SAAQ,uBAAuB,CAAA;AAI/B;;;AAGG;AACH,IAAA,WAAA,CAAY,GAAQ,EAAS,eAAgC,EAAS,WAAwB,EAAA;QAC1F,KAAK,CAAC,GAAG,CAAC,CAAC;QADc,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAAS,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;KAE7F;IAEM,eAAe,GAAA;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AAC9C,YAAA,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAG;;;;gBAIvC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;oBAC1D,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7C,iBAAA;AACL,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAiB,KAAI;;gBAE7E,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;;gBAGxB,IAAI,QAAQ,CAAC,aAAa,EAAE;oBACxB,MAAM,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AAC1E,oBAAA,IAAI,CAAC,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAC3C,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;AAED;;AAEG;AACO,IAAA,MAAM,CAAC,MAAc,EAAE,OAAe,EAAE,GAAG,IAAW,EAAA;QAC5D,IAAI,MAAM,KAAK,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YACrE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;QAED,OAAO,KAAK,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrD;AAED;;;AAGG;AACO,IAAA,eAAe,CAAC,KAAa,EAAA;AACnC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;AAED;;;AAGG;AACO,IAAA,UAAU,CAAC,MAA8B,EAAA;;;AAG/C,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC;aACpE,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;KAC9B;;+FApEiB,cAAc,EAAA,EAAA,CAAA,iBAAA,CAAAyC,IAAA,CAAA,GAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,EAAA,CAAA;gGAAd,cAAc,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA;uFAAd,cAAc,EAAA,CAAA;cADnC,SAAS;;;AC3BV;AACA;AACA;AAEA;;AAEG;;ACNH;;AAEG;;;;"}