ngx-register-base 1.3.1 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/checkbox-selector/checkbox-selector.component.mjs +129 -0
- package/esm2022/lib/components/checkbox-selector/checkbox-selector.types.mjs +8 -0
- package/esm2022/lib/components/column-settings/column-settings.component.mjs +249 -0
- package/esm2022/lib/components/column-settings/components/column-settings-template/column-settings-template.component.mjs +80 -0
- package/esm2022/lib/components/column-settings/consts/column-settings.consts.mjs +10 -0
- package/esm2022/lib/components/column-settings/index.mjs +3 -0
- package/esm2022/lib/components/column-settings/types/column-settings.types.mjs +7 -0
- package/esm2022/lib/components/divider/divider.component.mjs +16 -0
- package/esm2022/lib/components/filter-button/filter-button.component.mjs +19 -0
- package/esm2022/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.mjs +31 -0
- package/esm2022/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.mjs +57 -0
- package/esm2022/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.mjs +110 -0
- package/esm2022/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.mjs +130 -0
- package/esm2022/lib/components/filters/components/filter-list/filter-list.service.mjs +89 -0
- package/esm2022/lib/components/filters/components/filter-list/filters-section/filters-section.component.mjs +41 -0
- package/esm2022/lib/components/filters/components/filter-list.module.mjs +45 -0
- package/esm2022/lib/components/filters/index.mjs +3 -0
- package/esm2022/lib/components/filters/register-table-filter.component.mjs +155 -0
- package/esm2022/lib/components/filters/register-table-filter.module.mjs +39 -0
- package/esm2022/lib/components/index.mjs +11 -0
- package/esm2022/lib/components/inputs/index.mjs +20 -0
- package/esm2022/lib/components/inputs/inputs.module.mjs +166 -0
- package/esm2022/lib/components/inputs/param-calendar-year/param-calendar-year.component.mjs +45 -0
- package/esm2022/lib/components/inputs/param-custom/param-custom.component.mjs +12 -0
- package/esm2022/lib/components/inputs/param-date/param-date.component.mjs +76 -0
- package/esm2022/lib/components/inputs/param-date-range/param-date-range.component.mjs +60 -0
- package/esm2022/lib/components/inputs/param-date-time/param-date-time.component.mjs +86 -0
- package/esm2022/lib/components/inputs/param-date-time-range/param-date-time-range.component.mjs +95 -0
- package/esm2022/lib/components/inputs/param-month/param-month.component.mjs +50 -0
- package/esm2022/lib/components/inputs/param-month-range/param-month-range.component.mjs +62 -0
- package/esm2022/lib/components/inputs/param-multi-select/param-multi-select.component.mjs +309 -0
- package/esm2022/lib/components/inputs/param-select/param-select.component.mjs +225 -0
- package/esm2022/lib/components/inputs/param-switcher/param-switcher.component.mjs +21 -0
- package/esm2022/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.mjs +28 -0
- package/esm2022/lib/components/inputs/param-switcher-date-time-range/index.mjs +3 -0
- package/esm2022/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.mjs +105 -0
- package/esm2022/lib/components/inputs/param-switcher-date-time-range/types/param-switcher-date-time-range.types.mjs +10 -0
- package/esm2022/lib/components/inputs/param-text/param-text.component.mjs +40 -0
- package/esm2022/lib/components/inputs/param-textarea/param-textarea.component.mjs +38 -0
- package/esm2022/lib/components/inputs/param-toggle/param-toggle.component.mjs +20 -0
- package/esm2022/lib/components/inputs/param-tree/consts/param-tree.consts.mjs +37 -0
- package/esm2022/lib/components/inputs/param-tree/index.mjs +8 -0
- package/esm2022/lib/components/inputs/param-tree/param-tree.component.mjs +207 -0
- package/esm2022/lib/components/inputs/param-tree/services/param-tree.service.mjs +116 -0
- package/esm2022/lib/components/inputs/param-tree/services/sync-tree-loader.service.mjs +20 -0
- package/esm2022/lib/components/inputs/param-tree/tokens/param-tree.tokens.mjs +3 -0
- package/esm2022/lib/components/inputs/param-tree/types/param-tree.types.mjs +2 -0
- package/esm2022/lib/components/inputs/param-tree/utils/param-tree.utils.mjs +9 -0
- package/esm2022/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.mjs +80 -0
- package/esm2022/lib/components/inputs/param-tree-select/param-tree-select.component.mjs +85 -0
- package/esm2022/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.mjs +15 -0
- package/esm2022/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.mjs +12 -0
- package/esm2022/lib/components/menu-constructor/index.mjs +5 -0
- package/esm2022/lib/components/menu-constructor/sproc-menu-constructor.component.mjs +559 -0
- package/esm2022/lib/components/menu-constructor/store/sproc-abstract-menu-constructor.store.mjs +3 -0
- package/esm2022/lib/components/menu-constructor/store/sproc-menu-constructor.consts.mjs +5 -0
- package/esm2022/lib/components/menu-constructor/store/sproc-menu.tokens.mjs +3 -0
- package/esm2022/lib/components/page-menu/index.mjs +6 -0
- package/esm2022/lib/components/page-menu/schema/sproc-page-menu.consts.mjs +9 -0
- package/esm2022/lib/components/page-menu/schema/sproc-page-menu.schema.mjs +2 -0
- package/esm2022/lib/components/page-menu/schema/sproc-page-menu.tokens.mjs +4 -0
- package/esm2022/lib/components/page-menu/schema/sproc-page-menu.types.mjs +3 -0
- package/esm2022/lib/components/page-menu/sproc-page-menu.component.mjs +275 -0
- package/esm2022/lib/components/paginator/paginator.component.mjs +159 -0
- package/esm2022/lib/components/paginator/types/paginator.types.mjs +2 -0
- package/esm2022/lib/components/register-table/consts/register-table.consts.mjs +4 -0
- package/esm2022/lib/components/register-table/directives/cell-template.directive.mjs +19 -0
- package/esm2022/lib/components/register-table/directives/header-template.directive.mjs +18 -0
- package/esm2022/lib/components/register-table/index.mjs +4 -0
- package/esm2022/lib/components/register-table/model/schema.mjs +10 -0
- package/esm2022/lib/components/register-table/pipes/class-by-type.pipe.mjs +33 -0
- package/esm2022/lib/components/register-table/pipes/sticky-column.pipe.mjs +17 -0
- package/esm2022/lib/components/register-table/register-table.component.mjs +544 -0
- package/esm2022/lib/components/reset-settings-form/reset-settings-form.component.mjs +18 -0
- package/esm2022/lib/components/search-input/search-input.component.mjs +28 -0
- package/esm2022/lib/components/sliding-panel/sliding-panel.component.mjs +48 -0
- package/esm2022/lib/components/sliding-panel/sliding-panel.module.mjs +19 -0
- package/esm2022/lib/consts/date-time.consts.mjs +2 -0
- package/esm2022/lib/consts/index.mjs +4 -0
- package/esm2022/lib/consts/inputs.consts.mjs +4 -0
- package/esm2022/lib/consts/month.consts.mjs +77 -0
- package/esm2022/lib/consts/params.consts.mjs +2 -0
- package/esm2022/lib/consts/register-base.consts.mjs +26 -0
- package/esm2022/lib/core/form-group-wrapper/errors-consts.mjs +8 -0
- package/esm2022/lib/core/form-group-wrapper/form-group-wrapper.mjs +81 -0
- package/esm2022/lib/core/form-group-wrapper/index.mjs +2 -0
- package/esm2022/lib/core/index.mjs +5 -0
- package/esm2022/lib/core/input-control/index.mjs +2 -0
- package/esm2022/lib/core/input-control/input-control.mjs +11 -0
- package/esm2022/lib/core/param/index.mjs +6 -0
- package/esm2022/lib/core/param/param-base.mjs +215 -0
- package/esm2022/lib/core/param/param-date-base.mjs +26 -0
- package/esm2022/lib/core/param/param-select-base.mjs +114 -0
- package/esm2022/lib/core/param/param-text-base.mjs +25 -0
- package/esm2022/lib/core/param/param.tokens.mjs +4 -0
- package/esm2022/lib/core/register-base/index.mjs +3 -0
- package/esm2022/lib/core/register-base/register-base.mjs +575 -0
- package/esm2022/lib/core/register-base/register-base.store.mjs +43 -0
- package/esm2022/lib/directives/date/date-time.types.mjs +34 -0
- package/esm2022/lib/directives/date/format-date.pipe.mjs +33 -0
- package/esm2022/lib/directives/index.mjs +3 -0
- package/esm2022/lib/directives/number/number-only.directive.mjs +41 -0
- package/esm2022/lib/directives/sticky/index.mjs +3 -0
- package/esm2022/lib/directives/sticky/sticky-relative.directive.mjs +32 -0
- package/esm2022/lib/directives/sticky/sticky-relative.service.mjs +32 -0
- package/esm2022/lib/directives/sticky/sticky.directive.mjs +169 -0
- package/esm2022/lib/services/date-time.service.mjs +314 -0
- package/esm2022/lib/services/dialog/dialog.service.mjs +53 -0
- package/esm2022/lib/services/dialog/dialog.types.mjs +2 -0
- package/esm2022/lib/services/dialog/index.mjs +3 -0
- package/esm2022/lib/services/dom-intersection.service.mjs +22 -0
- package/esm2022/lib/services/filter/filters-state.service.mjs +65 -0
- package/esm2022/lib/services/filter/filters-transmit.service.mjs +82 -0
- package/esm2022/lib/services/filter/filters.service.mjs +23 -0
- package/esm2022/lib/services/index.mjs +8 -0
- package/esm2022/lib/services/inputs-state.service.mjs +130 -0
- package/esm2022/lib/services/inputs.service.mjs +88 -0
- package/esm2022/lib/services/key-pressed.service.mjs +37 -0
- package/esm2022/lib/services/resize-window-observer.service.mjs +33 -0
- package/esm2022/lib/services/selected-objects-state.service.mjs +123 -0
- package/esm2022/lib/store/fast-query-store.service.mjs +110 -0
- package/esm2022/lib/store/index.mjs +2 -0
- package/esm2022/lib/types/event.types.mjs +2 -0
- package/esm2022/lib/types/hasura.types.mjs +2 -0
- package/esm2022/lib/types/index.mjs +7 -0
- package/esm2022/lib/types/inputs.types.mjs +19 -0
- package/esm2022/lib/types/params.types.mjs +2 -0
- package/esm2022/lib/types/register-base.types.mjs +6 -0
- package/esm2022/lib/types/sub-types.mjs +2 -0
- package/esm2022/lib/types/user-profile.types.mjs +2 -0
- package/esm2022/lib/utils/functions.mjs +10 -0
- package/esm2022/lib/utils/get-url-segment.mjs +35 -0
- package/esm2022/lib/utils/index.mjs +5 -0
- package/esm2022/lib/utils/prizm.shared.module.mjs +284 -0
- package/esm2022/lib/utils/rxjs.mjs +28 -0
- package/esm2022/lib/utils/select-all-utils.mjs +11 -0
- package/esm2022/ngx-register-base.mjs +5 -0
- package/esm2022/public-api.mjs +9 -0
- package/fesm2022/ngx-register-base.mjs +7479 -0
- package/fesm2022/ngx-register-base.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/checkbox-selector/checkbox-selector.component.d.ts +33 -0
- package/lib/components/checkbox-selector/checkbox-selector.types.d.ts +7 -0
- package/lib/components/column-settings/column-settings.component.d.ts +80 -0
- package/lib/components/column-settings/components/column-settings-template/column-settings-template.component.d.ts +24 -0
- package/lib/components/column-settings/consts/column-settings.consts.d.ts +8 -0
- package/lib/components/column-settings/types/column-settings.types.d.ts +22 -0
- package/lib/components/divider/divider.component.d.ts +6 -0
- package/lib/components/filter-button/filter-button.component.d.ts +8 -0
- package/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.d.ts +14 -0
- package/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.d.ts +25 -0
- package/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.d.ts +39 -0
- package/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.d.ts +41 -0
- package/lib/components/filters/components/filter-list/filter-list.service.d.ts +20 -0
- package/lib/components/filters/components/filter-list/filters-section/filters-section.component.d.ts +15 -0
- package/lib/components/filters/components/filter-list.module.d.ts +15 -0
- package/lib/components/filters/register-table-filter.component.d.ts +40 -0
- package/lib/components/filters/register-table-filter.module.d.ts +13 -0
- package/lib/components/inputs/inputs.module.d.ts +31 -0
- package/lib/components/inputs/param-calendar-year/param-calendar-year.component.d.ts +19 -0
- package/lib/components/inputs/param-custom/param-custom.component.d.ts +6 -0
- package/lib/components/inputs/param-date/param-date.component.d.ts +20 -0
- package/lib/components/inputs/param-date-range/param-date-range.component.d.ts +26 -0
- package/lib/components/inputs/param-date-time/param-date-time.component.d.ts +25 -0
- package/lib/components/inputs/param-date-time-range/param-date-time-range.component.d.ts +28 -0
- package/lib/components/inputs/param-month/param-month.component.d.ts +18 -0
- package/lib/components/inputs/param-month-range/param-month-range.component.d.ts +21 -0
- package/lib/components/inputs/param-multi-select/param-multi-select.component.d.ts +46 -0
- package/lib/components/inputs/param-select/param-select.component.d.ts +34 -0
- package/lib/components/inputs/param-switcher/param-switcher.component.d.ts +8 -0
- package/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.d.ts +2 -0
- package/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.d.ts +19 -0
- package/lib/components/inputs/param-switcher-date-time-range/types/param-switcher-date-time-range.types.d.ts +8 -0
- package/lib/components/inputs/param-text/param-text.component.d.ts +10 -0
- package/lib/components/inputs/param-textarea/param-textarea.component.d.ts +10 -0
- package/lib/components/inputs/param-toggle/param-toggle.component.d.ts +9 -0
- package/lib/components/inputs/param-tree/consts/param-tree.consts.d.ts +7 -0
- package/lib/components/inputs/param-tree/param-tree.component.d.ts +41 -0
- package/lib/components/inputs/param-tree/services/param-tree.service.d.ts +37 -0
- package/lib/components/inputs/param-tree/services/sync-tree-loader.service.d.ts +10 -0
- package/{src/lib/components/inputs/param-tree/tokens/param-tree.tokens.ts → lib/components/inputs/param-tree/tokens/param-tree.tokens.d.ts} +1 -2
- package/lib/components/inputs/param-tree/types/param-tree.types.d.ts +32 -0
- package/lib/components/inputs/param-tree/utils/param-tree.utils.d.ts +7 -0
- package/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.d.ts +31 -0
- package/lib/components/inputs/param-tree-select/param-tree-select.component.d.ts +30 -0
- package/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.d.ts +6 -0
- package/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.d.ts +5 -0
- package/lib/components/menu-constructor/sproc-menu-constructor.component.d.ts +113 -0
- package/lib/components/menu-constructor/store/sproc-abstract-menu-constructor.store.d.ts +24 -0
- package/lib/components/menu-constructor/store/sproc-menu-constructor.consts.d.ts +36 -0
- package/{src/lib/components/menu-constructor/store/sproc-menu.tokens.ts → lib/components/menu-constructor/store/sproc-menu.tokens.d.ts} +1 -4
- package/lib/components/page-menu/schema/sproc-page-menu.consts.d.ts +7 -0
- package/lib/components/page-menu/schema/sproc-page-menu.schema.d.ts +30 -0
- package/lib/components/page-menu/schema/sproc-page-menu.tokens.d.ts +3 -0
- package/lib/components/page-menu/schema/sproc-page-menu.types.d.ts +36 -0
- package/lib/components/page-menu/sproc-page-menu.component.d.ts +48 -0
- package/lib/components/paginator/paginator.component.d.ts +52 -0
- package/lib/components/paginator/types/paginator.types.d.ts +15 -0
- package/lib/components/register-table/consts/register-table.consts.d.ts +3 -0
- package/lib/components/register-table/directives/cell-template.directive.d.ts +9 -0
- package/lib/components/register-table/directives/header-template.directive.d.ts +9 -0
- package/lib/components/register-table/model/schema.d.ts +52 -0
- package/lib/components/register-table/pipes/class-by-type.pipe.d.ts +8 -0
- package/lib/components/register-table/pipes/sticky-column.pipe.d.ts +7 -0
- package/lib/components/register-table/register-table.component.d.ts +165 -0
- package/lib/components/reset-settings-form/reset-settings-form.component.d.ts +9 -0
- package/lib/components/search-input/search-input.component.d.ts +11 -0
- package/lib/components/sliding-panel/sliding-panel.component.d.ts +14 -0
- package/lib/components/sliding-panel/sliding-panel.module.d.ts +9 -0
- package/lib/consts/date-time.consts.d.ts +1 -0
- package/lib/consts/index.d.ts +3 -0
- package/lib/consts/inputs.consts.d.ts +4 -0
- package/lib/consts/month.consts.d.ts +49 -0
- package/lib/consts/params.consts.d.ts +1 -0
- package/lib/consts/register-base.consts.d.ts +19 -0
- package/lib/core/form-group-wrapper/errors-consts.d.ts +5 -0
- package/lib/core/form-group-wrapper/form-group-wrapper.d.ts +15 -0
- package/lib/core/input-control/input-control.d.ts +11 -0
- package/lib/core/param/param-base.d.ts +68 -0
- package/lib/core/param/param-date-base.d.ts +18 -0
- package/lib/core/param/param-select-base.d.ts +42 -0
- package/lib/core/param/param-text-base.d.ts +15 -0
- package/{src/lib/core/param/param.tokens.ts → lib/core/param/param.tokens.d.ts} +1 -2
- package/lib/core/register-base/register-base.d.ts +168 -0
- package/lib/core/register-base/register-base.store.d.ts +35 -0
- package/lib/directives/date/date-time.types.d.ts +32 -0
- package/lib/directives/date/format-date.pipe.d.ts +10 -0
- package/lib/directives/number/number-only.directive.d.ts +10 -0
- package/lib/directives/sticky/sticky-relative.directive.d.ts +13 -0
- package/lib/directives/sticky/sticky-relative.service.d.ts +15 -0
- package/lib/directives/sticky/sticky.directive.d.ts +27 -0
- package/lib/services/date-time.service.d.ts +80 -0
- package/lib/services/dialog/dialog.service.d.ts +22 -0
- package/{src/lib/services/dialog/dialog.types.ts → lib/services/dialog/dialog.types.d.ts} +4 -8
- package/lib/services/dom-intersection.service.d.ts +8 -0
- package/lib/services/filter/filters-state.service.d.ts +21 -0
- package/lib/services/filter/filters-transmit.service.d.ts +28 -0
- package/lib/services/filter/filters.service.d.ts +12 -0
- package/lib/services/inputs-state.service.d.ts +57 -0
- package/lib/services/inputs.service.d.ts +28 -0
- package/lib/services/key-pressed.service.d.ts +15 -0
- package/lib/services/resize-window-observer.service.d.ts +11 -0
- package/lib/services/selected-objects-state.service.d.ts +47 -0
- package/lib/store/fast-query-store.service.d.ts +19 -0
- package/{src/lib/types/event.types.ts → lib/types/event.types.d.ts} +1 -1
- package/lib/types/hasura.types.d.ts +35 -0
- package/lib/types/inputs.types.d.ts +41 -0
- package/lib/types/params.types.d.ts +27 -0
- package/lib/types/register-base.types.d.ts +123 -0
- package/lib/types/sub-types.d.ts +8 -0
- package/lib/types/user-profile.types.d.ts +17 -0
- package/lib/utils/functions.d.ts +3 -0
- package/lib/utils/get-url-segment.d.ts +7 -0
- package/lib/utils/prizm.shared.module.d.ts +14 -0
- package/lib/utils/rxjs.d.ts +10 -0
- package/lib/utils/select-all-utils.d.ts +8 -0
- package/package.json +15 -12
- package/schematics/ng-update/replace-menu-state-token/index.d.ts +2 -0
- package/schematics/ng-update/replace-menu-state-token/index.js +29 -0
- package/schematics/ng-update/replace-menu-state-token/index.js.map +1 -0
- package/schematics/ng-update/update-prefix/index.d.ts +2 -0
- package/schematics/ng-update/update-prefix/index.js +33 -0
- package/schematics/ng-update/update-prefix/index.js.map +1 -0
- package/schematics/utils/{utils.ts → utils.d.ts} +2 -9
- package/schematics/utils/utils.js +25 -0
- package/schematics/utils/utils.js.map +1 -0
- package/ng-package.json +0 -15
- package/schematics/ng-update/replace-menu-state-token/index.ts +0 -33
- package/schematics/ng-update/update-prefix/index.ts +0 -38
- package/src/lib/components/checkbox-selector/checkbox-selector.component.html +0 -91
- package/src/lib/components/checkbox-selector/checkbox-selector.component.less +0 -67
- package/src/lib/components/checkbox-selector/checkbox-selector.component.ts +0 -176
- package/src/lib/components/checkbox-selector/checkbox-selector.types.ts +0 -8
- package/src/lib/components/column-settings/column-settings.component.html +0 -160
- package/src/lib/components/column-settings/column-settings.component.less +0 -131
- package/src/lib/components/column-settings/column-settings.component.ts +0 -352
- package/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.html +0 -65
- package/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.less +0 -79
- package/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.ts +0 -114
- package/src/lib/components/column-settings/consts/column-settings.consts.ts +0 -9
- package/src/lib/components/column-settings/types/column-settings.types.ts +0 -26
- package/src/lib/components/divider/divider.component.html +0 -4
- package/src/lib/components/divider/divider.component.less +0 -10
- package/src/lib/components/divider/divider.component.ts +0 -12
- package/src/lib/components/filter-button/filter-button.component.html +0 -20
- package/src/lib/components/filter-button/filter-button.component.less +0 -41
- package/src/lib/components/filter-button/filter-button.component.ts +0 -18
- package/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.html +0 -22
- package/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.less +0 -23
- package/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.ts +0 -31
- package/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.html +0 -49
- package/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.less +0 -37
- package/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.ts +0 -66
- package/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.html +0 -147
- package/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.less +0 -45
- package/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.ts +0 -114
- package/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.html +0 -44
- package/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.less +0 -49
- package/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.ts +0 -167
- package/src/lib/components/filters/components/filter-list/filter-list.service.ts +0 -97
- package/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.html +0 -18
- package/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.less +0 -55
- package/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.ts +0 -69
- package/src/lib/components/filters/components/filter-list.module.ts +0 -29
- package/src/lib/components/filters/register-table-filter.component.html +0 -53
- package/src/lib/components/filters/register-table-filter.component.less +0 -17
- package/src/lib/components/filters/register-table-filter.component.ts +0 -167
- package/src/lib/components/filters/register-table-filter.module.ts +0 -22
- package/src/lib/components/inputs/inputs.module.ts +0 -104
- package/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.html +0 -49
- package/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.less +0 -70
- package/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.ts +0 -52
- package/src/lib/components/inputs/param-custom/param-custom.component.html +0 -1
- package/src/lib/components/inputs/param-custom/param-custom.component.ts +0 -9
- package/src/lib/components/inputs/param-date/param-date.component.html +0 -55
- package/src/lib/components/inputs/param-date/param-date.component.less +0 -67
- package/src/lib/components/inputs/param-date/param-date.component.ts +0 -77
- package/src/lib/components/inputs/param-date-range/param-date-range.component.html +0 -45
- package/src/lib/components/inputs/param-date-range/param-date-range.component.less +0 -75
- package/src/lib/components/inputs/param-date-range/param-date-range.component.ts +0 -67
- package/src/lib/components/inputs/param-date-time/param-date-time.component.html +0 -70
- package/src/lib/components/inputs/param-date-time/param-date-time.component.less +0 -72
- package/src/lib/components/inputs/param-date-time/param-date-time.component.ts +0 -101
- package/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.html +0 -67
- package/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.less +0 -103
- package/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.ts +0 -128
- package/src/lib/components/inputs/param-month/param-month.component.html +0 -46
- package/src/lib/components/inputs/param-month/param-month.component.less +0 -72
- package/src/lib/components/inputs/param-month/param-month.component.ts +0 -55
- package/src/lib/components/inputs/param-month-range/param-month-range.component.html +0 -39
- package/src/lib/components/inputs/param-month-range/param-month-range.component.less +0 -71
- package/src/lib/components/inputs/param-month-range/param-month-range.component.ts +0 -76
- package/src/lib/components/inputs/param-multi-select/param-multi-select.component.html +0 -84
- package/src/lib/components/inputs/param-multi-select/param-multi-select.component.less +0 -108
- package/src/lib/components/inputs/param-multi-select/param-multi-select.component.ts +0 -448
- package/src/lib/components/inputs/param-select/param-select.component.html +0 -106
- package/src/lib/components/inputs/param-select/param-select.component.less +0 -26
- package/src/lib/components/inputs/param-select/param-select.component.ts +0 -318
- package/src/lib/components/inputs/param-switcher/param-switcher.component.html +0 -8
- package/src/lib/components/inputs/param-switcher/param-switcher.component.less +0 -53
- package/src/lib/components/inputs/param-switcher/param-switcher.component.ts +0 -13
- package/src/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.ts +0 -29
- package/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.html +0 -19
- package/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.less +0 -76
- package/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.ts +0 -134
- package/src/lib/components/inputs/param-switcher-date-time-range/types/param-switcher-date-time-range.types.ts +0 -8
- package/src/lib/components/inputs/param-text/param-text.component.html +0 -59
- package/src/lib/components/inputs/param-text/param-text.component.less +0 -33
- package/src/lib/components/inputs/param-text/param-text.component.ts +0 -36
- package/src/lib/components/inputs/param-textarea/param-textarea.component.html +0 -61
- package/src/lib/components/inputs/param-textarea/param-textarea.component.less +0 -21
- package/src/lib/components/inputs/param-textarea/param-textarea.component.ts +0 -33
- package/src/lib/components/inputs/param-toggle/param-toggle.component.html +0 -40
- package/src/lib/components/inputs/param-toggle/param-toggle.component.less +0 -69
- package/src/lib/components/inputs/param-toggle/param-toggle.component.ts +0 -14
- package/src/lib/components/inputs/param-tree/consts/param-tree.consts.ts +0 -59
- package/src/lib/components/inputs/param-tree/param-tree.component.html +0 -51
- package/src/lib/components/inputs/param-tree/param-tree.component.less +0 -3
- package/src/lib/components/inputs/param-tree/param-tree.component.ts +0 -282
- package/src/lib/components/inputs/param-tree/services/param-tree.service.ts +0 -176
- package/src/lib/components/inputs/param-tree/services/sync-tree-loader.service.ts +0 -18
- package/src/lib/components/inputs/param-tree/types/param-tree.types.ts +0 -39
- package/src/lib/components/inputs/param-tree/utils/param-tree.utils.ts +0 -18
- package/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.html +0 -78
- package/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.less +0 -109
- package/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.ts +0 -89
- package/src/lib/components/inputs/param-tree-select/param-tree-select.component.html +0 -54
- package/src/lib/components/inputs/param-tree-select/param-tree-select.component.less +0 -56
- package/src/lib/components/inputs/param-tree-select/param-tree-select.component.ts +0 -91
- package/src/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.html +0 -5
- package/src/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.ts +0 -13
- package/src/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.html +0 -4
- package/src/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.ts +0 -11
- package/src/lib/components/menu-constructor/sproc-menu-constructor.component.html +0 -95
- package/src/lib/components/menu-constructor/sproc-menu-constructor.component.less +0 -183
- package/src/lib/components/menu-constructor/sproc-menu-constructor.component.ts +0 -687
- package/src/lib/components/menu-constructor/store/sproc-abstract-menu-constructor.store.ts +0 -32
- package/src/lib/components/menu-constructor/store/sproc-menu-constructor.consts.ts +0 -46
- package/src/lib/components/page-menu/README.md +0 -60
- package/src/lib/components/page-menu/schema/sproc-page-menu.consts.ts +0 -8
- package/src/lib/components/page-menu/schema/sproc-page-menu.schema.ts +0 -35
- package/src/lib/components/page-menu/schema/sproc-page-menu.tokens.ts +0 -5
- package/src/lib/components/page-menu/schema/sproc-page-menu.types.ts +0 -42
- package/src/lib/components/page-menu/sproc-page-menu.component.html +0 -166
- package/src/lib/components/page-menu/sproc-page-menu.component.less +0 -228
- package/src/lib/components/page-menu/sproc-page-menu.component.ts +0 -337
- package/src/lib/components/paginator/paginator.component.html +0 -97
- package/src/lib/components/paginator/paginator.component.less +0 -101
- package/src/lib/components/paginator/paginator.component.ts +0 -192
- package/src/lib/components/paginator/types/paginator.types.ts +0 -16
- package/src/lib/components/register-table/consts/register-table.consts.ts +0 -3
- package/src/lib/components/register-table/directives/cell-template.directive.ts +0 -11
- package/src/lib/components/register-table/directives/header-template.directive.ts +0 -11
- package/src/lib/components/register-table/model/schema.ts +0 -62
- package/src/lib/components/register-table/pipes/class-by-type.pipe.ts +0 -28
- package/src/lib/components/register-table/pipes/sticky-column.pipe.ts +0 -11
- package/src/lib/components/register-table/register-table.component.html +0 -257
- package/src/lib/components/register-table/register-table.component.less +0 -151
- package/src/lib/components/register-table/register-table.component.ts +0 -743
- package/src/lib/components/reset-settings-form/reset-settings-form.component.html +0 -14
- package/src/lib/components/reset-settings-form/reset-settings-form.component.less +0 -26
- package/src/lib/components/reset-settings-form/reset-settings-form.component.ts +0 -15
- package/src/lib/components/search-input/search-input.component.html +0 -6
- package/src/lib/components/search-input/search-input.component.less +0 -17
- package/src/lib/components/search-input/search-input.component.ts +0 -31
- package/src/lib/components/sliding-panel/sliding-panel.component.html +0 -13
- package/src/lib/components/sliding-panel/sliding-panel.component.less +0 -112
- package/src/lib/components/sliding-panel/sliding-panel.component.ts +0 -36
- package/src/lib/components/sliding-panel/sliding-panel.module.ts +0 -11
- package/src/lib/consts/date-time.consts.ts +0 -1
- package/src/lib/consts/index.ts +0 -8
- package/src/lib/consts/inputs.consts.ts +0 -9
- package/src/lib/consts/month.consts.ts +0 -82
- package/src/lib/consts/params.consts.ts +0 -1
- package/src/lib/consts/register-base.consts.ts +0 -40
- package/src/lib/core/form-group-wrapper/errors-consts.ts +0 -6
- package/src/lib/core/form-group-wrapper/form-group-wrapper.ts +0 -109
- package/src/lib/core/input-control/input-control.ts +0 -30
- package/src/lib/core/param/param-base.ts +0 -262
- package/src/lib/core/param/param-date-base.ts +0 -30
- package/src/lib/core/param/param-select-base.ts +0 -118
- package/src/lib/core/param/param-text-base.ts +0 -23
- package/src/lib/core/register-base/register-base.store.ts +0 -84
- package/src/lib/core/register-base/register-base.ts +0 -854
- package/src/lib/directives/date/date-time.types.ts +0 -36
- package/src/lib/directives/date/format-date.pipe.ts +0 -28
- package/src/lib/directives/number/number-only.directive.ts +0 -36
- package/src/lib/directives/sticky/sticky-relative.directive.ts +0 -30
- package/src/lib/directives/sticky/sticky-relative.service.ts +0 -34
- package/src/lib/directives/sticky/sticky.directive.ts +0 -189
- package/src/lib/services/date-time.service.ts +0 -399
- package/src/lib/services/dialog/dialog.service.ts +0 -62
- package/src/lib/services/dom-intersection.service.ts +0 -23
- package/src/lib/services/filter/filters-state.service.ts +0 -83
- package/src/lib/services/filter/filters-transmit.service.ts +0 -105
- package/src/lib/services/filter/filters.service.ts +0 -21
- package/src/lib/services/inputs-state.service.ts +0 -157
- package/src/lib/services/inputs.service.ts +0 -114
- package/src/lib/services/key-pressed.service.ts +0 -40
- package/src/lib/services/resize-window-observer.service.ts +0 -37
- package/src/lib/services/selected-objects-state.service.ts +0 -159
- package/src/lib/store/fast-query-store.service.ts +0 -132
- package/src/lib/types/hasura.types.ts +0 -41
- package/src/lib/types/inputs.types.ts +0 -63
- package/src/lib/types/params.types.ts +0 -42
- package/src/lib/types/register-base.types.ts +0 -161
- package/src/lib/types/sub-types.ts +0 -15
- package/src/lib/types/user-profile.types.ts +0 -18
- package/src/lib/utils/functions.ts +0 -11
- package/src/lib/utils/get-url-segment.ts +0 -46
- package/src/lib/utils/prizm.shared.module.ts +0 -176
- package/src/lib/utils/rxjs.ts +0 -33
- package/src/lib/utils/select-all-utils.ts +0 -16
- package/tsconfig.lib.json +0 -16
- package/tsconfig.lib.prod.json +0 -11
- package/tsconfig.schematics.json +0 -26
- package/tsconfig.spec.json +0 -15
- /package/{src/lib/components/column-settings/index.ts → lib/components/column-settings/index.d.ts} +0 -0
- /package/{src/lib/components/filters/index.ts → lib/components/filters/index.d.ts} +0 -0
- /package/{src/lib/components/index.ts → lib/components/index.d.ts} +0 -0
- /package/{src/lib/components/inputs/index.ts → lib/components/inputs/index.d.ts} +0 -0
- /package/{src/lib/components/inputs/param-switcher-date-time-range/index.ts → lib/components/inputs/param-switcher-date-time-range/index.d.ts} +0 -0
- /package/{src/lib/components/inputs/param-tree/index.ts → lib/components/inputs/param-tree/index.d.ts} +0 -0
- /package/{src/lib/components/menu-constructor/index.ts → lib/components/menu-constructor/index.d.ts} +0 -0
- /package/{src/lib/components/page-menu/index.ts → lib/components/page-menu/index.d.ts} +0 -0
- /package/{src/lib/components/register-table/index.ts → lib/components/register-table/index.d.ts} +0 -0
- /package/{src/lib/core/form-group-wrapper/index.ts → lib/core/form-group-wrapper/index.d.ts} +0 -0
- /package/{src/lib/core/index.ts → lib/core/index.d.ts} +0 -0
- /package/{src/lib/core/input-control/index.ts → lib/core/input-control/index.d.ts} +0 -0
- /package/{src/lib/core/param/index.ts → lib/core/param/index.d.ts} +0 -0
- /package/{src/lib/core/register-base/index.ts → lib/core/register-base/index.d.ts} +0 -0
- /package/{src/lib/directives/index.ts → lib/directives/index.d.ts} +0 -0
- /package/{src/lib/directives/sticky/index.ts → lib/directives/sticky/index.d.ts} +0 -0
- /package/{src/lib/services/dialog/index.ts → lib/services/dialog/index.d.ts} +0 -0
- /package/{src/lib/services/index.ts → lib/services/index.d.ts} +0 -0
- /package/{src/lib/store/index.ts → lib/store/index.d.ts} +0 -0
- /package/{src/lib/types/index.ts → lib/types/index.d.ts} +0 -0
- /package/{src/lib/utils/index.ts → lib/utils/index.d.ts} +0 -0
- /package/{src/public-api.ts → public-api.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngx-register-base.mjs","sources":["../../../projects/ngx-register-base/src/lib/components/column-settings/types/column-settings.types.ts","../../../projects/ngx-register-base/src/lib/components/column-settings/consts/column-settings.consts.ts","../../../projects/ngx-register-base/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.ts","../../../projects/ngx-register-base/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.html","../../../projects/ngx-register-base/src/lib/services/dialog/dialog.service.ts","../../../projects/ngx-register-base/src/lib/consts/date-time.consts.ts","../../../projects/ngx-register-base/src/lib/directives/date/date-time.types.ts","../../../projects/ngx-register-base/src/lib/services/date-time.service.ts","../../../projects/ngx-register-base/src/lib/core/input-control/input-control.ts","../../../projects/ngx-register-base/src/lib/consts/inputs.consts.ts","../../../projects/ngx-register-base/src/lib/services/inputs.service.ts","../../../projects/ngx-register-base/src/lib/utils/functions.ts","../../../projects/ngx-register-base/src/lib/utils/get-url-segment.ts","../../../projects/ngx-register-base/src/lib/utils/rxjs.ts","../../../projects/ngx-register-base/src/lib/utils/select-all-utils.ts","../../../projects/ngx-register-base/src/lib/services/filter/filters-transmit.service.ts","../../../projects/ngx-register-base/src/lib/services/filter/filters.service.ts","../../../projects/ngx-register-base/src/lib/types/inputs.types.ts","../../../projects/ngx-register-base/src/lib/types/register-base.types.ts","../../../projects/ngx-register-base/src/lib/services/inputs-state.service.ts","../../../projects/ngx-register-base/src/lib/services/filter/filters-state.service.ts","../../../projects/ngx-register-base/src/lib/services/resize-window-observer.service.ts","../../../projects/ngx-register-base/src/lib/consts/register-base.consts.ts","../../../projects/ngx-register-base/src/lib/components/checkbox-selector/checkbox-selector.types.ts","../../../projects/ngx-register-base/src/lib/services/selected-objects-state.service.ts","../../../projects/ngx-register-base/src/lib/consts/month.consts.ts","../../../projects/ngx-register-base/src/lib/components/reset-settings-form/reset-settings-form.component.ts","../../../projects/ngx-register-base/src/lib/components/reset-settings-form/reset-settings-form.component.html","../../../projects/ngx-register-base/src/lib/components/divider/divider.component.ts","../../../projects/ngx-register-base/src/lib/components/divider/divider.component.html","../../../projects/ngx-register-base/src/lib/components/column-settings/column-settings.component.ts","../../../projects/ngx-register-base/src/lib/components/column-settings/column-settings.component.html","../../../projects/ngx-register-base/src/lib/components/filter-button/filter-button.component.ts","../../../projects/ngx-register-base/src/lib/components/filter-button/filter-button.component.html","../../../projects/ngx-register-base/src/lib/components/page-menu/schema/sproc-page-menu.consts.ts","../../../projects/ngx-register-base/src/lib/components/page-menu/schema/sproc-page-menu.tokens.ts","../../../projects/ngx-register-base/src/lib/components/page-menu/sproc-page-menu.component.ts","../../../projects/ngx-register-base/src/lib/components/page-menu/sproc-page-menu.component.html","../../../projects/ngx-register-base/src/lib/components/page-menu/schema/sproc-page-menu.types.ts","../../../projects/ngx-register-base/src/lib/core/form-group-wrapper/errors-consts.ts","../../../projects/ngx-register-base/src/lib/core/form-group-wrapper/form-group-wrapper.ts","../../../projects/ngx-register-base/src/lib/core/param/param.tokens.ts","../../../projects/ngx-register-base/src/lib/core/param/param-base.ts","../../../projects/ngx-register-base/src/lib/core/param/param-date-base.ts","../../../projects/ngx-register-base/src/lib/store/fast-query-store.service.ts","../../../projects/ngx-register-base/src/lib/core/param/param-select-base.ts","../../../projects/ngx-register-base/src/lib/core/param/param-text-base.ts","../../../projects/ngx-register-base/src/lib/core/register-base/register-base.store.ts","../../../projects/ngx-register-base/src/lib/core/register-base/register-base.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.html","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.html","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list.service.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.html","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.html","../../../projects/ngx-register-base/src/lib/components/sliding-panel/sliding-panel.component.ts","../../../projects/ngx-register-base/src/lib/components/sliding-panel/sliding-panel.component.html","../../../projects/ngx-register-base/src/lib/components/filters/register-table-filter.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/register-table-filter.component.html","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.html","../../../projects/ngx-register-base/src/lib/utils/prizm.shared.module.ts","../../../projects/ngx-register-base/src/lib/components/filters/components/filter-list.module.ts","../../../projects/ngx-register-base/src/lib/components/sliding-panel/sliding-panel.module.ts","../../../projects/ngx-register-base/src/lib/components/filters/register-table-filter.module.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-custom/param-custom.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-custom/param-custom.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-date/param-date.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-date/param-date.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-range/param-date-range.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-range/param-date-range.component.html","../../../projects/ngx-register-base/src/lib/directives/date/format-date.pipe.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-time/param-date-time.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-time/param-date-time.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-month/param-month.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-month/param-month.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-month-range/param-month-range.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-month-range/param-month-range.component.html","../../../projects/ngx-register-base/src/lib/consts/params.consts.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-multi-select/param-multi-select.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-multi-select/param-multi-select.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-select/param-select.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-select/param-select.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher/param-switcher.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher/param-switcher.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher-date-time-range/types/param-switcher-date-time-range.types.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-text/param-text.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-text/param-text.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-textarea/param-textarea.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-textarea/param-textarea.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-toggle/param-toggle.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-toggle/param-toggle.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/consts/param-tree.consts.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/tokens/param-tree.tokens.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/services/param-tree.service.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/services/sync-tree-loader.service.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/utils/param-tree.utils.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/param-tree.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree/param-tree.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree-select/param-tree-select.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/param-tree-select/param-tree-select.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.ts","../../../projects/ngx-register-base/src/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.html","../../../projects/ngx-register-base/src/lib/components/inputs/inputs.module.ts","../../../projects/ngx-register-base/src/lib/components/menu-constructor/store/sproc-menu-constructor.consts.ts","../../../projects/ngx-register-base/src/lib/components/menu-constructor/store/sproc-menu.tokens.ts","../../../projects/ngx-register-base/src/lib/components/menu-constructor/sproc-menu-constructor.component.ts","../../../projects/ngx-register-base/src/lib/components/menu-constructor/sproc-menu-constructor.component.html","../../../projects/ngx-register-base/src/lib/components/menu-constructor/store/sproc-abstract-menu-constructor.store.ts","../../../projects/ngx-register-base/src/lib/components/register-table/directives/cell-template.directive.ts","../../../projects/ngx-register-base/src/lib/components/register-table/model/schema.ts","../../../projects/ngx-register-base/src/lib/services/dom-intersection.service.ts","../../../projects/ngx-register-base/src/lib/components/register-table/directives/header-template.directive.ts","../../../projects/ngx-register-base/src/lib/services/key-pressed.service.ts","../../../projects/ngx-register-base/src/lib/components/register-table/pipes/class-by-type.pipe.ts","../../../projects/ngx-register-base/src/lib/components/register-table/pipes/sticky-column.pipe.ts","../../../projects/ngx-register-base/src/lib/components/register-table/consts/register-table.consts.ts","../../../projects/ngx-register-base/src/lib/components/checkbox-selector/checkbox-selector.component.ts","../../../projects/ngx-register-base/src/lib/components/checkbox-selector/checkbox-selector.component.html","../../../projects/ngx-register-base/src/lib/directives/number/number-only.directive.ts","../../../projects/ngx-register-base/src/lib/directives/sticky/sticky-relative.service.ts","../../../projects/ngx-register-base/src/lib/directives/sticky/sticky.directive.ts","../../../projects/ngx-register-base/src/lib/directives/sticky/sticky-relative.directive.ts","../../../projects/ngx-register-base/src/lib/components/paginator/paginator.component.ts","../../../projects/ngx-register-base/src/lib/components/paginator/paginator.component.html","../../../projects/ngx-register-base/src/lib/components/register-table/register-table.component.ts","../../../projects/ngx-register-base/src/lib/components/register-table/register-table.component.html","../../../projects/ngx-register-base/src/lib/components/search-input/search-input.component.ts","../../../projects/ngx-register-base/src/lib/components/search-input/search-input.component.html","../../../projects/ngx-register-base/src/ngx-register-base.ts"],"sourcesContent":["export interface ITableColumnSettings {\n columns: IColumnSettings[];\n stickyLeft: IColumnSettings[];\n stickyRight: IColumnSettings[];\n}\n\nexport interface IColumnSettings {\n id: string;\n name: string;\n status: EColumnStatus | IColumnStatus;\n children?: IColumnSettings[];\n}\n\n/** @deprecated используйте EColumnStatus */\nexport type IColumnStatus = 'sticky' | 'hidden' | 'default';\n\nexport enum EColumnStatus {\n STICKY = 'sticky',\n HIDDEN = 'hidden',\n DEFAULT = 'default',\n}\n\nexport interface IColumnSettingsChanges {\n settings: ITableColumnSettings | null;\n id?: string;\n}\n","// Icons\nexport const ICON_SETTINGS = '/assets/ngx-register-base/icons/settings.svg';\nexport const ICON_ERASER = '/assets/ngx-register-base/icons/eraser.svg';\nexport const ICON_CANCEL_CLOSE = '/assets/ngx-register-base/icons/cancel-close.svg';\nexport const ICON_EDITOR_DOTS = '/assets/ngx-register-base/icons/16-editor-dots.svg';\nexport const ICON_CHEVRONS_RIGHT = '/assets/ngx-register-base/icons/chevrons/chevrons-right.svg';\nexport const ICON_EYE = '/assets/ngx-register-base/icons/eye.svg';\nexport const ICON_EYE_CLOSED = '/assets/ngx-register-base/icons/eye-closed.svg';\nexport const ICON_LOCK = '/assets/ngx-register-base/icons/lock.svg';\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\nimport { EColumnStatus, IColumnSettings } from '../../types/column-settings.types';\nimport {\n CdkDrag,\n CdkDragDrop,\n CdkDragPlaceholder,\n CdkDropList,\n moveItemInArray,\n transferArrayItem,\n} from '@angular/cdk/drag-drop';\nimport { NgOptimizedImage } from '@angular/common';\nimport { TuiHintDirective } from '@taiga-ui/core';\nimport {\n ICON_CHEVRONS_RIGHT,\n ICON_EDITOR_DOTS,\n ICON_EYE,\n ICON_EYE_CLOSED,\n ICON_LOCK,\n} from '../../consts/column-settings.consts';\nimport { TuiExpand } from '@taiga-ui/experimental';\n\n@Component({\n selector: 'sproc-column-settings-template',\n standalone: true,\n imports: [\n NgOptimizedImage,\n CdkDrag,\n CdkDragPlaceholder,\n CdkDropList,\n TuiExpand,\n TuiHintDirective,\n ],\n templateUrl: './column-settings-template.component.html',\n styleUrl: './column-settings-template.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColumnSettingsTemplateComponent {\n public column = input.required<IColumnSettings>();\n public parent = input<IColumnSettings>();\n public expand = input(true);\n\n protected readonly iconEditorDots = ICON_EDITOR_DOTS;\n protected readonly iconChevron = ICON_CHEVRONS_RIGHT;\n protected readonly iconEye = ICON_EYE;\n protected readonly iconEyeClosed = ICON_EYE_CLOSED;\n protected readonly iconLock = ICON_LOCK;\n\n protected readonly EColumnStatus = EColumnStatus;\n\n protected readonly status = computed(() => this.column().status);\n protected readonly canExpand = computed(() => {\n const wantExpand = this.expand();\n const children = this.column().children ?? [];\n const haveChildren = children.length > 0;\n\n return wantExpand && haveChildren;\n });\n protected readonly expanded = signal(false);\n\n protected collapseNested(): void {\n this.expanded.set(false);\n }\n\n protected toggleNested(): void {\n this.expanded.update((value) => !value);\n }\n\n protected isHiddenColumn(column: IColumnSettings): boolean {\n return column.status === EColumnStatus.HIDDEN;\n }\n\n protected toggleVisibility(column: IColumnSettings): void {\n const isHidden = column.status === EColumnStatus.HIDDEN;\n column.status = isHidden ? EColumnStatus.DEFAULT : EColumnStatus.HIDDEN;\n\n const { children } = column;\n\n // Если есть дочерние узлы то устанавливать статус текущего узла\n if (children) {\n column.children = children.map((childColumn) => ({ ...childColumn, status: column.status }));\n }\n\n const parentColumn = this.parent();\n const parentChildren = parentColumn?.children;\n\n if (parentColumn && parentChildren && parentChildren.length > 0) {\n const allChildrenHidden = parentChildren.every(\n (childColumn) => childColumn.status === EColumnStatus.HIDDEN\n );\n\n parentColumn.status = allChildrenHidden ? EColumnStatus.HIDDEN : EColumnStatus.DEFAULT;\n }\n }\n\n protected dropIntoChildren(event: CdkDragDrop<IColumnSettings[]>): void {\n const currentChildren = this.column().children;\n\n if (!currentChildren) {\n console.warn('Попытка переместить в столбец без дочернего массива:', this.column());\n return;\n }\n\n if (event.previousContainer === event.container) {\n moveItemInArray(currentChildren, event.previousIndex, event.currentIndex);\n } else {\n transferArrayItem(\n event.previousContainer.data,\n currentChildren,\n event.previousIndex,\n event.currentIndex\n );\n }\n }\n}\n","@let col = column();\n@let isHidden = isHiddenColumn(col);\n@let currentEyeIcon = isHidden ? iconEyeClosed : iconEye;\n@let childrenColumns = col.children ?? [];\n\n<div\n class=\"column-item\"\n [class.hidden]=\"isHidden\"\n cdkDrag\n [cdkDragData]=\"col\"\n (cdkDragStarted)=\"collapseNested()\"\n>\n <img [ngSrc]=\"iconEditorDots\" [width]=\"16\" [height]=\"32\" alt=\"\" />\n @if (canExpand()) {\n <img\n class=\"expanded\"\n [ngSrc]=\"iconChevron\"\n [width]=\"16\"\n [height]=\"16\"\n [attr.expanded]=\"expanded()\"\n alt=\"\"\n (click)=\"toggleNested()\"\n />\n }\n <span class=\"column-item__name\">{{ col.name }}</span>\n @if (status() === EColumnStatus.STICKY) {\n <img\n class=\"pointer\"\n [ngSrc]=\"iconLock\"\n [width]=\"16\"\n [height]=\"16\"\n tuiHint=\"Нельзя скрыть закрепленную колонку\"\n />\n } @else {\n <img\n class=\"eye-icon\"\n [ngSrc]=\"currentEyeIcon\"\n [width]=\"16\"\n [height]=\"16\"\n tuiHint=\"Показать/Скрыть колонку\"\n (click)=\"toggleVisibility(col)\"\n />\n }\n\n <ng-template cdkDragPlaceholder>\n <div class=\"custom-placeholder\"></div>\n </ng-template>\n</div>\n\n@if (canExpand()) {\n <tui-expand\n class=\"nested-columns\"\n cdkDropList\n [expanded]=\"expanded()\"\n [cdkDropListData]=\"childrenColumns\"\n (cdkDropListDropped)=\"dropIntoChildren($event)\"\n >\n @for (childCol of childrenColumns; track childCol.id) {\n <sproc-column-settings-template\n [column]=\"childCol\"\n [parent]=\"col\"\n ></sproc-column-settings-template>\n }\n </tui-expand>\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { PrizmDialogService } from '@prizm-ui/components';\nimport { Observable } from 'rxjs';\nimport { DialogContext, DialogOptions, DialogOverlayInsidePlacement } from './dialog.types';\nimport { tuiDialog, TuiDialogOptions, TuiDialogService } from '@taiga-ui/core';\nimport { PolymorpheusContent } from '@taiga-ui/polymorpheus';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n private readonly _dialogService = inject(PrizmDialogService);\n private readonly _tuiDialogService = inject(TuiDialogService);\n\n public openModal(\n template: unknown,\n config: Partial<DialogOptions<unknown, unknown>>\n ): Observable<any> {\n return this._dialogService.open(template, {\n closeable: false,\n width: 440,\n position: DialogOverlayInsidePlacement.CENTER,\n backdrop: true,\n ...config,\n });\n }\n\n public openModalTaiga<Context extends DialogContext, Result = any>(\n component: new (...args: any[]) => unknown,\n context: Context,\n injector?: Injector\n ): Observable<Result> {\n const dialog = tuiDialog(component, {\n injector,\n closeable: context.closeable ?? false,\n dismissible: context.dismissible ?? true,\n size: context.size ?? 'auto',\n }) as (data: any) => Observable<Result>;\n\n return dialog({\n ...context,\n });\n }\n\n /**\n * Универсальная функция открытия диалога\n *\n * @param content - контент (компонент, ng-template или функция)\n * @param context - данные для передачи в контент\n * @param options - доп. настройки диалога (ширина, заголовок и т.д.)\n */\n public openTuiDialogWithTemplate<T = void>(\n content: PolymorpheusContent<TuiDialogOptions<T>>,\n context?: Partial<TuiDialogOptions<T>>,\n options?: Partial<TuiDialogOptions<T>>\n ): Observable<T> {\n return this._tuiDialogService.open<T>(content, {\n ...context,\n ...options,\n });\n }\n}\n","export const STORED_TIMEZONE = 'storedTimezone';\n","import { PrizmDay, PrizmTime } from '@prizm-ui/components';\n\nexport enum EDatePattern {\n MONTH_YEAR = 'MM.yyyy',\n DATE = 'dd.MM.yyyy',\n SHORT_YEAR_DATE = 'dd.MM.yy',\n DATE_TIME_WITHOUT_SECONDS = 'dd.MM.yyyy HH:mm',\n DATE_TIME = 'dd.MM.yyyy HH:mm:ss',\n YEAR_MONTH_DAY = 'yyyy-MM-dd',\n DD_MM_YYYY = 'dd-MM-yyyy',\n DATE_TIME_ISO_MARKED_TIMEZONE = `yyyy-MM-dd'T'HH:mm:ss`,\n YYYY_MM_DD = 'yyyy/MM/dd',\n MMMM_YYYY = 'MMMM YYYY',\n DATE_TIME_ISO_PATTERN = 'YYYY-MM-DDTHH:mm:ss',\n DATE_TIME_FOR_TRACKER = 'YYYY-MM-DD HH:mm:ss',\n DATE_TIME_FOR_TRACKER_NOT_SIMPLE = 'yyyy-MM-dd HH:mm:ss',\n TUI_YMD = 'YMD',\n DAY = 'd',\n HOUR_MINUTE = 'HH:mm',\n}\n\nexport enum EMomentPattern {\n YYYY_MM_DD = 'YYYY-MM-DD',\n YYYYMMDD = 'yyyy/MM/DD',\n}\n\nexport enum ETimezone {\n UTC = '+00:00',\n MSK = '+03:00',\n AQT = '+05:00',\n NVS = '+07:00',\n IRK = '+08:00',\n YAK = '+09:00',\n}\n\nexport type SmaPrizmDateTime = [PrizmDay, PrizmTime | undefined];\n","import { Injectable } from '@angular/core';\nimport { format } from 'date-fns';\nimport moment, { Moment } from 'moment-timezone';\nimport { BehaviorSubject } from 'rxjs';\nimport { STORED_TIMEZONE } from '../consts/date-time.consts';\nimport { EDatePattern, ETimezone, SmaPrizmDateTime } from '../directives/date/date-time.types';\nimport {\n PrizmDateTimeRange,\n PrizmDay,\n PrizmDayRange,\n PrizmTime,\n PrizmTimeRange,\n} from '@prizm-ui/components';\nimport { TuiDay } from '@taiga-ui/cdk';\n\nexport interface ITimeZone {\n time_diff: string;\n string: string;\n value: string;\n}\n\nexport interface ICurrentTime_TZ {\n current_time: string;\n picked_time_zone: ITimeZone;\n}\n\n// Не менять формат, названия и ' ' оставлять всегда\n// 'UTC ' - оставлять\n// Eсли менять,изменить фильтры в ДО\nexport const timezoneSelectItems = [\n 'UTC +00:00',\n 'Europe/Moscow +03:00',\n 'Asia/Aqtau +05:00',\n 'Asia/Yekaterinburg +05:00',\n 'Asia/Novosibirsk +07:00',\n 'Asia/Krasnoyarsk +07:00',\n 'Asia/Irkutsk +08:00',\n 'Asia/Yakutsk +09:00',\n];\nexport const TIME_ZONES: ITimeZone[] = [\n {\n value: 'Etc/GMT',\n string: '+00:00 UTC',\n time_diff: ETimezone.UTC,\n },\n {\n value: 'Europe/Moscow',\n string: '+03:00 Москва',\n time_diff: ETimezone.MSK,\n },\n {\n value: 'Asia/Aqtau',\n string: '+05:00 Тюмень',\n time_diff: ETimezone.AQT,\n },\n {\n value: 'Asia/Novosibirsk',\n string: '+07:00 Томск',\n time_diff: ETimezone.NVS,\n },\n {\n value: 'Asia/Irkutsk',\n string: '+08:00 Иркутск',\n time_diff: ETimezone.IRK,\n },\n {\n value: 'Asia/Yakutsk',\n string: '+09:00 Якутск',\n time_diff: ETimezone.YAK,\n },\n];\n\nexport const TIME_ZONE_HINTS: Record<string, string> = {\n '+00:00': '+00:00 UTC',\n '+03:00': 'ГПН-БС, ГПН-ГЕО, ГПН-НС, ГПН-ТП, ГПН-Щ, МНГП, НТЦ, Парадная, СПД',\n '+05:00':\n 'ГПН-А, ГПН-БГП, ГПН-З, ГПН-ИТО, ГПН-М, ГПН-Н, ГПН-О, ГПН-Р, ГПН-С, ГПН-Х, ГПН-Я, МРТ, МсНГ, МЭН, ННГГФ, НТН, НЭН, СН-МНГ',\n '+07:00': 'ГПН-В, МНГ-Г, ИН-ВНК',\n '+08:00': 'Игнялинское м/р',\n '+09:00': 'Чаяндинское м/р, Тымпучиканское м/р, Вакунайское м/р, Тас-Юряхское м/р',\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DateTimeService {\n public readonly currentTimeTZ: ICurrentTime_TZ = {\n picked_time_zone: TIME_ZONES[1],\n current_time: new Date().toISOString(),\n };\n\n private readonly _isTimeZoneChanged = new BehaviorSubject<ITimeZone>(\n this.currentTimeTZ.picked_time_zone\n );\n public isTimeZoneChanged$ = this._isTimeZoneChanged.asObservable();\n\n public constructor() {\n const storedTimeZone = localStorage.getItem(STORED_TIMEZONE);\n\n if (storedTimeZone) {\n this.currentTimeTZ.picked_time_zone = JSON.parse(storedTimeZone) as ITimeZone;\n } else {\n this.currentTimeTZ.current_time = this.getCurrentTime();\n }\n }\n\n public updateTimezone(time_zone: ITimeZone): void {\n localStorage.setItem(STORED_TIMEZONE, JSON.stringify(time_zone));\n\n this.currentTimeTZ.picked_time_zone = time_zone;\n this.currentTimeTZ.current_time = this.getCurrentTime();\n this._isTimeZoneChanged.next(this.currentTimeTZ.picked_time_zone);\n }\n\n public refreshDatePicked(): void {\n this._isTimeZoneChanged.next(this.currentTimeTZ.picked_time_zone);\n }\n\n public getCurrentTime(): string {\n const options: Intl.DateTimeFormatOptions = {\n timeZone: this.currentTimeTZ.picked_time_zone.value,\n hour12: false,\n hour: '2-digit',\n minute: '2-digit',\n };\n return new Date().toLocaleString('en-GB', options);\n }\n\n public triggerTimeUpdate(timeZone: ITimeZone): void {\n this._isTimeZoneChanged.next(timeZone);\n }\n\n /**\n * @param utc время в UTC\n * @param pattern\n * Строка состоящая из:\n *dd - день,\n *MM - месяц,\n *yyyy - год,\n *HH - часы в 24ч-формате,\n *hh - часы в 12ч-формате,\n *mm - минуты,\n *ss - секунды,\n *sss - миллисекунды,\n */\n public parseDate(utc: string, pattern: string): string {\n const date: Date = this.isoToLocalDate(utc);\n\n return format(date, pattern);\n }\n\n /** @deprecated use parseDate(iso: string, pattern: string): string method */\n public parseDateToMMYYYY(iso: string): string {\n const options: Intl.DateTimeFormatOptions = {\n hour12: false,\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n };\n\n const date = this.isoToLocalDate(iso).toLocaleString('en-GB', options);\n const [_, month, year] = date.split('/');\n\n return `${month}.${year}`;\n }\n\n /** @deprecated use parseDate(iso: string, pattern: string): string method */\n public parseDateToDDMMYYYY(iso: string): string {\n const options: Intl.DateTimeFormatOptions = {\n hour12: false,\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n };\n\n const date = this.isoToLocalDate(iso).toLocaleString('en-GB', options);\n const [day, month, year] = date.split('/');\n\n return `${day}.${month}.${year}`;\n }\n\n public isoToLocalDate(iso: string, tzDiff?: string): Date {\n const date = this.isoToUTCDate(iso);\n let diffTZ = tzDiff;\n if (!tzDiff) {\n diffTZ = this.currentTimeTZ.picked_time_zone.time_diff;\n }\n\n const hours = Number.parseInt(diffTZ!, 10);\n date.setHours(date.getHours() + hours);\n\n return date;\n }\n\n public isoToUTCDate(iso: string): Date {\n let dateString = iso;\n\n // Перевод из таймзоны сервера к UTC\n if (this._hasTimeZone(iso)) {\n dateString = new Date(iso).toISOString();\n }\n\n if (dateString.includes('Z')) {\n dateString = dateString.slice(0, dateString.lastIndexOf('Z'));\n }\n\n return new Date(dateString);\n }\n\n private _hasTimeZone(iso: string): boolean {\n const timeZoneRegex = /[+-]\\d{2}(:\\d{2})?$/;\n\n return timeZoneRegex.test(iso);\n }\n\n /**\n * Возвращает дату конвертированную в ISO формат без учета таймзоны\n * */\n public dateToIsoWithoutTimeZone(date: Date): string | null {\n let result = null;\n\n if (date) {\n const timestamp = date.getTime() - date.getTimezoneOffset() * 60_000;\n const correctDate = new Date(timestamp);\n\n result = correctDate.toISOString();\n }\n\n return result;\n }\n\n public formatDateSave(date?: string | null, option?: 'YMD'): string {\n let result = '';\n if (date) {\n result = option ? format(date, 'yyyy-MM-dd') : format(date, EDatePattern.DATE);\n }\n return result;\n }\n\n public formatTimeSave(date?: string): string {\n const dateTime: Date = new Date(date!);\n const result = [dateTime.getHours(), dateTime.getMinutes(), dateTime.getSeconds()]\n .map((time) => (time < 10 ? `0${time}` : time))\n .join(':');\n return result;\n }\n\n public toISOString(date: Date, tzDiff?: string): string {\n let diffTZ = tzDiff;\n if (!tzDiff) {\n diffTZ = this.currentTimeTZ.picked_time_zone.time_diff;\n }\n\n const m = this._momentWithTZ(date, diffTZ!);\n\n return m.toISOString();\n }\n\n public _momentWithTZ(date: Date, timezone: string): Moment {\n const iso = this._dateToISOSliceZ(date);\n let tz = timezone;\n if (timezone === ETimezone.UTC) {\n tz = 'Z';\n }\n\n return moment.parseZone(`${iso}${tz}`);\n }\n\n private _dateToISOSliceZ(date: Date): string {\n const iso = this.dateToIsoWithoutTimeZone(date)!;\n\n return iso.includes('Z') ? iso.slice(0, iso.lastIndexOf('Z')) : iso;\n }\n\n public convertDateToISOWithTZ(date: Date, tz: string): string {\n const pad = (str: number) => str.toString().padStart(2, '0');\n const datePart = `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\n const timePart = `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;\n\n return `${datePart}T${timePart}${tz}`;\n }\n\n public now(): Date {\n const date = new Date();\n const [hour, minutes] = this.currentTimeTZ.current_time\n .split(':')\n .map((value) => Number.parseInt(value, 10));\n date.setHours(hour);\n date.setMinutes(minutes);\n\n return date;\n }\n\n /**\n * return объект типа moment с таймзоной выбранной в приложении\n * */\n public momentNowWithLocalTimezone(): Moment {\n return moment.tz(this.currentTimeTZ.picked_time_zone.value);\n }\n\n public nowUTC(): Date {\n return new Date(moment.utc().format());\n }\n\n public getWorkingDatesCount(startDate: Date, endDate: Date): number {\n const sunday = 0;\n const saturday = 6;\n\n let count = 0;\n const currentDate = new Date(startDate);\n\n while (currentDate <= endDate) {\n const dayOfWeek = currentDate.getDay();\n\n if (dayOfWeek !== sunday && dayOfWeek !== saturday) {\n count += 1;\n }\n\n currentDate.setDate(currentDate.getDate() + 1);\n }\n\n return count;\n }\n\n public getCurrentDateWithoutTime(): Date {\n const currentDate = new Date();\n\n currentDate.setHours(0);\n currentDate.setMinutes(0);\n currentDate.setSeconds(0);\n currentDate.setMilliseconds(0);\n\n return currentDate;\n }\n\n public getDateWithoutTime(date: Date): Date {\n date.setHours(0);\n date.setMinutes(0);\n date.setSeconds(0);\n date.setMilliseconds(0);\n\n return date;\n }\n\n public getXMonthBackDate(monthBackNumber: number): Date {\n const currentDate = new Date();\n currentDate.setMonth(currentDate.getMonth() - monthBackNumber);\n return currentDate;\n }\n\n public prizmDateTimeRangeToNativeDates(range: PrizmDateTimeRange): { from: Date; to: Date } {\n const { dayRange, timeRange } = range;\n\n const from = this.prizmDateTimeToNativeDate([dayRange.from, timeRange?.from]);\n const to = this.prizmDateTimeToNativeDate([dayRange.to, timeRange?.to]);\n\n return { from, to };\n }\n\n public prizmDateTimeRangeFromNativeDates(from: Date, to: Date): PrizmDateTimeRange {\n return new PrizmDateTimeRange(\n PrizmDayRange.fromLocalNativeDate(from, to),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n public prizmDateTimeToNativeDate(prizmDateTime: SmaPrizmDateTime): Date {\n const [day, time] = prizmDateTime;\n const date = new Date(day.toLocalNativeDate());\n\n if (time) {\n date.setHours(time.hours, time.minutes, time.seconds, time.ms);\n }\n\n return date;\n }\n\n public getTuiDayFromString(date: string): TuiDay {\n const localDate = this.isoToLocalDate(date);\n return new TuiDay(localDate.getFullYear(), localDate.getMonth(), localDate.getDate());\n }\n\n public getTuiDayFromDate(date: Date): TuiDay {\n return new TuiDay(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n public transferTuiDayToString(date: TuiDay | null, pattern?: EDatePattern): string | null {\n return date ? format(date.toLocalNativeDate(), pattern ?? EDatePattern.YEAR_MONTH_DAY) : null;\n }\n\n public toSmaPrizmDateTime(dateString: string): SmaPrizmDateTime {\n const date = new Date(dateString);\n const hours = date.getHours();\n const min = date.getMinutes();\n const day = PrizmDay.fromLocalNativeDate(date);\n const time = new PrizmTime(hours, min);\n return [day, time];\n }\n}\n","import {\n AsyncValidatorFn,\n FormControl,\n FormControlOptions,\n FormControlState,\n ValidatorFn,\n} from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { IInputControl, InputControlGqlValue } from '../../types/inputs.types';\nimport { signal, WritableSignal } from '@angular/core';\n\nexport class InputControl<ValueType = any, SavedValueType = any>\n extends FormControl\n implements IInputControl<ValueType, SavedValueType>\n{\n public saved_value$!: BehaviorSubject<SavedValueType | null>;\n public gql_value: InputControlGqlValue;\n /** По полю применена фильтрация */\n applied?: WritableSignal<boolean>;\n\n constructor(\n value: FormControlState<ValueType> | ValueType,\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | FormControlOptions | null,\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null\n ) {\n super(value, validatorOrOpts, asyncValidator);\n this.saved_value$ = new BehaviorSubject<SavedValueType | null>(null);\n this.applied = signal(false);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { IInputsStateConfig } from '../types';\n\nexport const INPUTS_STATE_CONFIG_KEY = new InjectionToken<IInputsStateConfig>(\n 'INPUTS_STATE_CONFIG_KEY'\n);\n\nexport const WARN_SEARCH_INPUT_UNDEFINED =\n 'Поле поиска не инициализировано. Пожалуйста задайте конфигурацию searchInput: true при провайде INPUTS_STATE_CONFIG_KEY';\n","import { Injectable, Injector, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { FormGroupWrapper } from '../core/form-group-wrapper/form-group-wrapper';\nimport { ITpUserSettingsSettingsFilter } from '../types/register-base.types';\nimport { ExtractForm } from '../types/sub-types';\nimport { IInputControl, IInputsStateConfig } from '../types/inputs.types';\nimport { InputControl } from '../core/input-control/input-control';\nimport { INPUTS_STATE_CONFIG_KEY, WARN_SEARCH_INPUT_UNDEFINED } from '../consts/inputs.consts';\n\n@Injectable()\nexport class InputsService<FormType> implements OnDestroy {\n protected readonly config: IInputsStateConfig;\n protected readonly unsubscribe$ = new Subject<void>();\n\n private readonly _searchInput: IInputControl<string | null> | undefined;\n public inputs!: FormGroupWrapper<FormType>;\n\n constructor(private readonly injector: Injector) {\n this.config = this.injector.get(INPUTS_STATE_CONFIG_KEY, {});\n\n const { searchInput } = this.config;\n\n if (searchInput) {\n this._searchInput = new InputControl<string | null>(null);\n }\n }\n\n public get searchInput(): IInputControl<string | null> | undefined {\n if (!this._searchInput) {\n console.warn(WARN_SEARCH_INPUT_UNDEFINED);\n }\n\n return this._searchInput;\n }\n\n public get searchValue(): string | null | undefined {\n return this.searchInput?.getRawValue();\n }\n\n public init(group: FormGroupWrapper<FormType>): void {\n this.inputs = group;\n }\n\n public get values(): ExtractForm<FormType> {\n return this.inputs.getRawValue() as ExtractForm<FormType>;\n }\n\n public get dirtyValues(): Partial<ExtractForm<FormType>> {\n return this.inputs.getDirtyValues();\n }\n\n public clear(): void {\n this.inputs.reset();\n }\n\n public setUserSettingsFilterValues(values: ITpUserSettingsSettingsFilter[]): void {\n this.clear();\n\n for (const { id, value } of values) {\n const key = id as keyof FormType;\n const control = this._control<any, any>(key);\n\n if (control?.saved_value$) {\n control.saved_value$.next(value);\n } else {\n console.warn(`Не найдено поле: ${id} для установки значения:`, value);\n }\n }\n }\n\n private _control<ValueType extends FormType[keyof FormType], SavedValueType>(\n key: keyof FormType\n ): IInputControl<ValueType, SavedValueType> {\n return this.inputs.controls[key] as IInputControl<ValueType, SavedValueType>;\n }\n\n public get userSettingsFilter(): ITpUserSettingsSettingsFilter[] {\n return Object.entries(this.inputs.controls).map(([id, abstractControl]) => {\n const control = abstractControl as IInputControl;\n const value = control.saved_value$.getValue();\n const savedValue = value === null ? null : value;\n\n return {\n id,\n value: savedValue,\n };\n });\n }\n\n public get gqlFilter(): Record<string, any>[] {\n const filter: Record<string, any>[] = [];\n\n for (const abstractControl of Object.values(this.inputs.controls)) {\n const control = abstractControl as IInputControl;\n\n if (control.gql_value) {\n filter.push(control.gql_value);\n }\n\n control.applied?.set(!!control.gql_value);\n }\n\n if (this.searchValue && this.searchInput?.gql_value) {\n filter.push(this.searchInput.gql_value);\n }\n\n return filter;\n }\n\n public ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","export function isNonNull<T>(value: T): value is NonNullable<T> {\n return value !== null;\n}\n\nexport function isDefined<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\nexport function toPx(n: number): string {\n return `${n || 0}px`;\n}\n","export const CARD = 'card';\n\ntype SegmentPosition = 'first' | 'last';\n\nconst getCardSegment = (url: URL): string | null => {\n if (url.pathname.includes(CARD) && url.search) {\n const id = url.searchParams.get('id');\n if (id) {\n const segments = url.pathname.split('/').filter(Boolean);\n const cardIndex = segments.indexOf(CARD.replace(/^\\//, ''));\n\n if (cardIndex !== -1 && cardIndex > 0) {\n const tableIndex = cardIndex - 1;\n const relevantPath = segments.slice(tableIndex, cardIndex + 1).join('/');\n return `${relevantPath}?id=${id}`;\n }\n }\n }\n return null;\n};\n\nconst getSegmentOfPathName = (pathname: string, position: SegmentPosition): string => {\n const url = new URL(pathname, window.location.origin);\n const segments = url.pathname.split('/').filter(Boolean);\n\n if (position === 'first') {\n return segments[0] ?? '/';\n }\n\n const cardSegment = getCardSegment(url);\n if (cardSegment !== null) {\n return cardSegment;\n }\n\n return segments.pop() ?? '';\n};\n\nexport const getFirstSegmentOfPathName = (pathname: string): string =>\n getSegmentOfPathName(pathname, 'first');\n\n/**\n * Функция возвращает первый сегмент ссылки\n * Если первого сегмента нет, возвращается корневой сегмент - '/'\n * */\nexport const getLastSegmentOfPathName = (pathname: string): string =>\n getSegmentOfPathName(pathname, 'last');\n","import {asyncScheduler, distinctUntilChanged, MonoTypeOperatorFunction, Observable, of,} from 'rxjs';\nimport {observeOn} from 'rxjs/operators';\nimport {isEqual} from 'lodash';\n\nexport function distinctUntilChangedJSONs<T>(): MonoTypeOperatorFunction<T> {\n return distinctUntilChanged((prev, curr) => isEqual(prev, curr));\n}\n\n/**\n * Перемещает выполнение функции на указанное количество итераций в цикле событий.\n *\n * @param count - Количество итераций цикла событий для перемещения.\n * @returns Оператор, который можно использовать с Observable для продолжения цепочки.\n */\nexport function moveInEventLoopIteration<T>(count: number): MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) => {\n if (!count) {\n return source;\n }\n\n let newSource = source.pipe(observeOn(asyncScheduler, 0));\n\n if (count > 1) {\n newSource = newSource.pipe(moveInEventLoopIteration(count - 1));\n }\n\n return newSource;\n };\n}\n\nexport function just(): Observable<null> {\n return of(null);\n}\n","import { IFilterSelectValue } from '../types';\n\nexport const SELECT_ALL_ID = '-1';\nexport const SELECT_ALL_NAME = 'Выбрать все';\n\nexport function removeSelectAll(arr: IFilterSelectValue[] | null): IFilterSelectValue[] | null {\n const array = arr?.slice() ?? null;\n\n if (array && array[0] && 'id' in array[0] && array[0].id === SELECT_ALL_ID) {\n array.shift();\n }\n\n return array;\n}\n\nexport const selectAllItem = { id: SELECT_ALL_ID, name: SELECT_ALL_NAME };\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { filter, map, Observable, Subject, takeUntil } from 'rxjs';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { IInputControl } from '../../types/inputs.types';\nimport { FormGroupWrapper } from '../../core/form-group-wrapper/form-group-wrapper';\nimport { distinctUntilChangedJSONs } from '../../utils';\nimport { ITpUserSettingsSettingsFilter } from '../../types/register-base.types';\n\nexport const FILTERS_QUERY_PARAMS_KEY = 'filters';\nexport const FILTERS_QUERY_PARAMS_VALUE_EMPTY = 'empty';\nexport const SEARCH_QUERY_PARAMS_KEY = 'search';\n\n@Injectable()\nexport class FiltersTransmitService implements OnDestroy {\n protected readonly _unsubscribe$ = new Subject<void>();\n\n protected formGroup?: FormGroupWrapper<any>;\n protected searchInput?: IInputControl<string | null>;\n\n constructor(\n private readonly _router: Router,\n private readonly _route: ActivatedRoute\n ) {}\n\n public setForm(formGroup: FormGroupWrapper<any>): void {\n this.formGroup = formGroup;\n }\n\n public setSearchInput(searchInput: IInputControl<string | null> | undefined): void {\n this.searchInput = searchInput;\n }\n\n public subscribeOnApplyFormValues(observable: Observable<unknown>): void {\n observable\n .pipe(\n distinctUntilChangedJSONs(),\n filter(() => !!this.formGroup),\n map(() => this.formGroup!),\n takeUntil(this._unsubscribe$)\n )\n .subscribe((formGroup) => {\n const filtersEmpty = Object.values(formGroup.getRawValue()).every((val) => val === null);\n const filters = filtersEmpty ? FILTERS_QUERY_PARAMS_VALUE_EMPTY : this.stringifyValues;\n const search = this.searchInput?.getRawValue() || undefined;\n\n this._setQueryParams({\n [SEARCH_QUERY_PARAMS_KEY]: search,\n [FILTERS_QUERY_PARAMS_KEY]: filters,\n });\n });\n }\n\n public get stringifyValues(): string | undefined {\n const values = Object.entries(this.formGroup?.controls ?? {})\n .map(([id, abstractControl]) => {\n const control = abstractControl as IInputControl;\n const value = control.saved_value$.getValue();\n const savedValue = value === null ? null : value;\n\n return {\n id,\n value: savedValue,\n };\n })\n .filter(({ value }) => value !== null);\n\n if (values.length > 0) {\n return JSON.stringify(values);\n }\n\n return;\n }\n\n public get filters(): ITpUserSettingsSettingsFilter[] | undefined {\n const param = this._route.snapshot.queryParams[FILTERS_QUERY_PARAMS_KEY];\n\n if (param === FILTERS_QUERY_PARAMS_VALUE_EMPTY) {\n return;\n }\n\n if (param) {\n return JSON.parse(param);\n }\n\n return [];\n }\n\n public get search(): string | undefined {\n return this._route.snapshot.queryParams[SEARCH_QUERY_PARAMS_KEY];\n }\n\n private _setQueryParams(queryParams: Record<string, string | undefined>): void {\n this._router.navigate([], {\n relativeTo: this._route,\n queryParams,\n queryParamsHandling: 'merge',\n replaceUrl: true,\n });\n }\n\n public ngOnDestroy(): void {\n this._unsubscribe$.next();\n this._unsubscribe$.complete();\n }\n}\n","import { Injectable, Injector, Optional } from '@angular/core';\nimport { InputsService } from '../inputs.service';\nimport { FiltersTransmitService } from './filters-transmit.service';\nimport { FormGroupWrapper } from '../../core/form-group-wrapper/form-group-wrapper';\n\n@Injectable()\nexport class FiltersService<FormType> extends InputsService<FormType> {\n constructor(\n injector: Injector,\n @Optional() private readonly _transmitter: FiltersTransmitService\n ) {\n super(injector);\n }\n\n public override init(group: FormGroupWrapper<FormType>): void {\n super.init(group);\n\n this._transmitter?.setForm(this.inputs);\n this._transmitter?.setSearchInput(this.searchInput);\n }\n}\n","import { FormControl } from '@angular/forms';\nimport { WhereBoolExp } from 'hasura';\nimport { BehaviorSubject } from 'rxjs';\nimport { JsonValue } from 'type-fest';\nimport { WritableSignal } from '@angular/core';\n\nexport enum EInputsState {\n HIDDEN,\n FILTER_LIST,\n SAVED_LIST,\n ON_EDIT_FILTER,\n ON_SAVE_FILTER,\n}\n\nexport enum EInputsAction {\n CANCEL,\n APPLY_FILTERS,\n APPLY_SAVED_FILTER,\n AFTER_SAVE_FILTER,\n EDIT_FILTER_NAME,\n EDIT_FILTER,\n OPEN,\n}\n\nexport interface IInputsState {\n state: EInputsState;\n action: EInputsAction;\n}\n\nexport interface IInputsStateConfig {\n defaultPin?: boolean;\n searchInput?: boolean;\n}\n\nexport interface IInputControl<ValueType = any, SavedValueType = any>\n extends FormControl<ValueType> {\n saved_value$: BehaviorSubject<SavedValueType | null>;\n gql_value: InputControlGqlValue;\n /** По полю применена фильтрация */\n applied?: WritableSignal<boolean>;\n}\n\nexport type InputControlSaveValue = JsonValue | null;\n\nexport type InputControlGqlValue =\n | WhereBoolExp<Record<string, any>>\n // TODO точнее типизировать\n | any\n | undefined;\n\nexport type GqlFields = (string | GqlField)[] | GqlField;\n\nexport interface GqlField {\n [key: string]:\n | string\n | string[]\n | number\n | number[]\n | boolean\n | boolean[]\n | GqlField\n | GqlField[];\n}\n","import { Observable, Subscription } from 'rxjs';\nimport { WhereBoolExp } from 'hasura';\nimport { SETTINGS_TYPE } from '../consts/register-base.consts';\nimport { IUserProfile } from './user-profile.types';\nimport { IHasuraQueryFilter, ThWidthEntry } from '../components/register-table/model/schema';\nimport { MutationResult } from 'apollo-angular';\nimport { ITableColumnSettings } from '../components/column-settings/types/column-settings.types';\n\nexport interface IRegisterBase {\n /** @deprecated плохая практика, используйте событие visibleRowsChanges из RegisterTableComponent */\n is_visible?: boolean;\n id: any;\n}\n\nexport interface ITpUserSettings {\n id: string;\n id_user: string;\n name: string;\n module_name: string;\n settings: ITpUserSettingsSettings;\n settings_type: SETTINGS_TYPE;\n}\n\nexport interface ITpUserSettingsSettings {\n name?: string;\n favorite?: boolean;\n filter?: ITpUserSettingsSettingsFilter[];\n tableFields?: ITableColumnSettings;\n expandType?: string;\n switchValue?: 0 | 1;\n menuState?: boolean;\n tableColumnsWidth?: ThWidthEntry[];\n pageRowsLimit?: number;\n referer?: string;\n pinned?: boolean;\n}\n\nexport interface ITpUserSettingsSettingsFilter {\n id: string;\n value: unknown;\n}\n\nexport enum ERegisterObjectState {\n SELECTED = 'SELECTED',\n UNSELECTED = 'UNSELECTED',\n}\n\nexport interface IRegisterObject<T = any> {\n object?: T;\n state: ERegisterObjectState;\n}\n\nexport type ObjectsSubscriptionConfig<DataType, FilterType = Record<string, any>> = {\n filter: FilterType;\n callback?: (data: DataType[]) => void;\n noSet?: boolean;\n};\n\n/** Интерфейс сервиса управления пользовательскими настройками */\nexport interface IUserSettingsLoader<T extends ITpUserSettings = any> {\n /** Пользовательские настройки */\n settings$: Observable<T[]>;\n /** Запрос пользовательских настроек по фильтру */\n fetchUserSettings$(where: WhereBoolExp<T>, hidden?: boolean): Observable<T[]>;\n /** Запрос пользовательских настроек по фильтру (Эффект для фильтров) */\n fetchUserSettingsByUserId: (\n observableOrValue:\n | {\n userId: string;\n settingsType: SETTINGS_TYPE;\n moduleName: string;\n }\n | Observable<{\n userId: string;\n settingsType: SETTINGS_TYPE;\n moduleName: string;\n }>\n ) => Subscription;\n /** Состояние загрузки пользовательских настроек */\n loading$: Observable<boolean>;\n /** Мутация на создание или обновление пользовательской настройки */\n upsertUserSettingsByUserId: (\n observableOrValue:\n | {\n settings: Partial<T>;\n hidden?: boolean;\n updateSettings?: boolean;\n }\n | Observable<{\n settings: Partial<T>;\n hidden?: boolean;\n updateSettings?: boolean;\n }>\n ) => Subscription;\n /** Мутация на обновление пользовательской настройки (Эффект для фильтров) */\n updateUserSettingsSettingsById: (\n observableOrValue:\n | {\n id: string;\n settings: ITpUserSettingsSettings;\n }\n | Observable<{\n id: string;\n settings: ITpUserSettingsSettings;\n }>\n ) => Subscription;\n /** Удаление пользовательской настройки (Эффект для фильтров) */\n deleteUserSettingsById: (\n observableOrValue:\n | {\n id: string;\n updateSettings?: boolean;\n }\n | Observable<{\n id: string;\n updateSettings?: boolean;\n }>\n ) => Subscription;\n /** Результат выполнения мутации */\n upsertReturningOne$(type: SETTINGS_TYPE): Observable<ITpUserSettings | null>;\n /** Завершение создания или обновления пользовательской настройки */\n upsertEnded$: Observable<void>;\n}\n\n/** Интерфейс сервиса управления аутентификацией пользователя */\nexport interface IUserProfileLoader<T extends IUserProfile, PermissionType = unknown> {\n /** Аутентифицированный пользователь */\n getUserProfile(): T;\n /** Метод проверки привилегий пользователя */\n checkPermissions(permissions: PermissionType[], every?: boolean): boolean;\n}\n\nexport interface IBaseRegisterStoreState<T> {\n loading: boolean;\n count: number;\n total: number;\n objects: T[];\n}\n\nexport interface IBaseRegisterStore<Type extends Record<string, any>> {\n readonly deleteByIds: (\n ids: string[],\n date: Date,\n ...args: unknown[]\n ) => Observable<MutationResult<Type[]> | null>;\n\n readonly fetchTotal: (\n observableOrValue: Record<string, any> | Observable<Record<string, any>>\n ) => Subscription;\n readonly fetchObjects: (\n observableOrValue:\n | {\n filter: IHasuraQueryFilter<Type>;\n callback?: (data: Type[]) => void;\n }\n | Observable<{\n filter: IHasuraQueryFilter<Type>;\n callback?: (data: Type[]) => void;\n }>\n ) => Subscription;\n}\n","import { DestroyRef, inject, Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { EInputsAction, EInputsState, GqlFields, IInputsState } from '../types';\nimport { Router } from '@angular/router';\nimport { getLastSegmentOfPathName } from '../utils';\nimport { RegisterTableCellSorter } from '../components/register-table/model/schema';\n\nexport const DEFAULT_LIMIT = 30;\n\n@Injectable()\nexport class InputsStateService<T = any> implements OnDestroy {\n protected readonly unsubscribe$ = new Subject<void>();\n\n protected readonly _page$ = new BehaviorSubject<number>(1);\n protected readonly _limit$ = new BehaviorSubject<number | null>(null);\n protected readonly _offset$ = new BehaviorSubject<number>(0);\n protected readonly _count$ = new BehaviorSubject<number>(0);\n protected readonly _sorter$ = new BehaviorSubject<RegisterTableCellSorter<T>[]>([]);\n protected readonly _name$ = new BehaviorSubject<string>('');\n protected readonly _state$ = new BehaviorSubject<IInputsState>({\n state: EInputsState.HIDDEN,\n action: EInputsAction.OPEN,\n });\n // TODO: заменить на нормальный тип\n protected readonly _gqlValues$ = new BehaviorSubject<GqlFields>([]);\n protected readonly _pinned$ = new BehaviorSubject<boolean>(false);\n\n public readonly page$ = this._page$.asObservable();\n public readonly limit$ = this._limit$.asObservable();\n public readonly offset$ = this._offset$.asObservable();\n public readonly count$ = this._count$.asObservable();\n public readonly sorter$ = this._sorter$.asObservable();\n public readonly name$ = this._name$.asObservable();\n public readonly state$ = this._state$.asObservable();\n public readonly gqlValues$ = this._gqlValues$.asObservable();\n public readonly pinned$ = this._pinned$.asObservable();\n\n protected readonly destroyRef = inject(DestroyRef);\n\n protected readonly router = inject(Router);\n\n protected readonly modulePath = getLastSegmentOfPathName(this.router.url);\n\n public readonly pinStorageKey = `@pin/${this.modulePath}`;\n public readonly pinnedInputsStorageKey = `@pinned-inputs/${this.modulePath}`;\n\n public toggle(): void {\n const isOpen = this.state.state !== EInputsState.HIDDEN;\n\n // если фильтр был открыт, значит его закрывают - открепляем\n if (isOpen) {\n this.setPin(false);\n }\n\n this.setState({\n state: isOpen ? EInputsState.HIDDEN : EInputsState.FILTER_LIST,\n action: EInputsAction.OPEN,\n });\n }\n\n public togglePin(): void {\n this.setPin(!this.isPin);\n }\n\n public ngOnDestroy(): void {\n this._page$.complete();\n this._limit$.complete();\n this._name$.complete();\n this._offset$.complete();\n this._count$.complete();\n this._state$.complete();\n this._sorter$.complete();\n this._gqlValues$.complete();\n this._pinned$.complete();\n\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n\n this.onDestroy();\n }\n\n protected onDestroy(): void {}\n\n public setPage(page: number): void {\n this._page$.next(page);\n }\n\n public setLimit(limit: number): void {\n this._limit$.next(limit);\n }\n\n public setOffset(offset: number): void {\n this._offset$.next(offset);\n }\n\n public setSorter(sort: RegisterTableCellSorter<T>[]): void {\n this._sorter$.next(sort);\n }\n\n public setName(name: string): void {\n this._name$.next(name);\n }\n\n public setCount(count: number): void {\n this._count$.next(count);\n }\n\n public setState(state: IInputsState): void {\n if (!(this.isPin && state.state === EInputsState.HIDDEN)) {\n this._state$.next(state);\n }\n }\n\n public setGqlValues(values: GqlFields): void {\n this._gqlValues$.next(values);\n }\n\n public setPin(isPin: boolean): void {\n this._pinned$.next(isPin);\n }\n\n public get page(): number {\n return this._page$.getValue();\n }\n\n public get limit(): number {\n return this._limit$.getValue() ?? DEFAULT_LIMIT;\n }\n\n public get offset(): number {\n return this._offset$.getValue();\n }\n\n public get state(): IInputsState {\n return this._state$.getValue();\n }\n\n public get count(): number {\n return this._count$.getValue();\n }\n\n public get sorter(): RegisterTableCellSorter<T>[] {\n return this._sorter$.getValue();\n }\n\n public get name(): string {\n return this._name$.getValue();\n }\n\n public get gqlValues(): GqlFields {\n return this._gqlValues$.getValue();\n }\n\n public get isPin(): boolean {\n return this._pinned$.getValue();\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, filter, filter as rxjsFilter, ReplaySubject, skip, take } from 'rxjs';\nimport { InputsStateService } from '../inputs-state.service';\nimport { FiltersTransmitService } from './filters-transmit.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationStart } from '@angular/router';\nimport { ITpUserSettings } from '../../types/register-base.types';\nimport { isNonNull } from '../../utils';\nimport { getFirstSegmentOfPathName } from '../../utils/get-url-segment';\n\n@Injectable()\nexport class FiltersStateService<T> extends InputsStateService<T> {\n private readonly _transmitter = inject(FiltersTransmitService, { optional: true });\n\n private readonly _selectedSavedFilter = new BehaviorSubject<ITpUserSettings | null>(null);\n private readonly _isFilterNameChanged$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(\n false\n );\n private readonly _searchFilterValue$: ReplaySubject<string> = new ReplaySubject<string>();\n\n public readonly selectedSavedFilter = this._selectedSavedFilter.asObservable();\n public readonly searchFilterValue$ = this._searchFilterValue$.asObservable();\n\n public readonly pageStorageKey = `@page/${this.modulePath}`;\n\n constructor() {\n super();\n\n this._transmitter?.subscribeOnApplyFormValues(this.gqlValues$);\n this._cachePage();\n }\n\n private _cachePage(): void {\n this.limit$.pipe(filter(isNonNull), take(1)).subscribe((limit) => {\n const cachedPage = localStorage.getItem(this.pageStorageKey);\n\n if (cachedPage) {\n const page = Number(cachedPage);\n this.setPage(page);\n this.setOffset(limit * (page - 1));\n }\n });\n\n this.page$.pipe(skip(1), takeUntilDestroyed(this.destroyRef)).subscribe((page) => {\n localStorage.setItem(this.pageStorageKey, page.toString());\n });\n\n this._subscribeOnNavigateToOtherModules();\n }\n\n private _subscribeOnNavigateToOtherModules(): void {\n this.router.events\n .pipe(\n rxjsFilter(\n (event) =>\n event instanceof NavigationStart &&\n getFirstSegmentOfPathName(event.url) !== this.modulePath\n ),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n localStorage.removeItem(this.pageStorageKey);\n });\n }\n\n public setSelectedSavedFilter(value: ITpUserSettings | null): void {\n this._selectedSavedFilter.next(value);\n }\n\n public setSearchFilterValue(value: string): void {\n this._searchFilterValue$.next(value);\n }\n\n public getSelectedSavedFilter(): ITpUserSettings | null {\n return this._selectedSavedFilter.getValue();\n }\n\n public override onDestroy(): void {\n this._selectedSavedFilter.complete();\n this._isFilterNameChanged$.complete();\n this._searchFilterValue$.complete();\n }\n}\n","import { afterNextRender, DestroyRef, inject, Injectable, NgZone, signal } from '@angular/core';\nimport { debounceTime, distinctUntilChanged, fromEvent, map } from 'rxjs';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\n\nconst RESIZE_WINDOW_DEBOUNCE_MLS = 100;\n\n@Injectable()\nexport class ResizeWindowObserverService {\n private readonly _zone = inject(NgZone);\n private readonly _destroyRef = inject(DestroyRef);\n\n public readonly innerHeight = signal(window.innerHeight);\n public readonly innerWidth = signal(window.innerWidth);\n\n public readonly innerHeight$ = toObservable(this.innerHeight);\n\n constructor() {\n afterNextRender(() => {\n this._zone.runOutsideAngular(() => {\n fromEvent(window, 'resize')\n .pipe(\n debounceTime(RESIZE_WINDOW_DEBOUNCE_MLS),\n map(() => ({\n height: window.innerHeight,\n width: window.innerWidth,\n })),\n distinctUntilChanged(),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(({ height, width }) => {\n this.innerHeight.set(height);\n this.innerWidth.set(width);\n });\n });\n });\n }\n}\n","import {\n ERegisterObjectState,\n ITpUserSettings,\n IUserProfileLoader,\n IUserSettingsLoader,\n} from '../types/register-base.types';\nimport { InjectionToken } from '@angular/core';\nimport { IUserProfile } from '../types/user-profile.types';\n\nexport const SEARCH_INPUT_DEBOUNCE_TIME_MLS = 1000;\nexport const THS_WIDTH_CHANGES_DEBOUNCE_TIME_MLS = 2000;\n\nexport const invertState = (state: ERegisterObjectState): ERegisterObjectState => {\n if (state === ERegisterObjectState.SELECTED) {\n return ERegisterObjectState.UNSELECTED;\n }\n\n return ERegisterObjectState.SELECTED;\n};\n\nexport enum EOrder {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport enum SETTINGS_TYPE {\n FILTER = 0,\n COLUMNS = 1,\n PAGE_MENU_STATE = 2,\n REGISTER_PAGE_ROWS_LIMIT = 4,\n REGISTER_PINNED_INPUTS = 5,\n}\n\nexport const USER_SETTINGS_LOADER = new InjectionToken<IUserSettingsLoader<ITpUserSettings>>(\n 'USER_SETTINGS_LOADER'\n);\n\nexport const USER_PROFILE_LOADER = new InjectionToken<IUserProfileLoader<IUserProfile>>(\n 'USER_PROFILE_LOADER'\n);\n","export type ApplySelectionTypes = Omit<SelectionTypes, SelectionTypes.COUNT> | number | null;\n\nexport enum SelectionTypes {\n ALL = 'ALL',\n VISIBLE = 'VISIBLE',\n INVERSE = 'INVERSE',\n COUNT = 'COUNT',\n}\n","import { computed, DestroyRef, inject, Injectable, signal } from '@angular/core';\nimport { ScalarUUID } from 'hasura';\nimport { BehaviorSubject, skip, take } from 'rxjs';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { ERegisterObjectState, IRegisterObject } from '../types/register-base.types';\nimport { invertState } from '../consts/register-base.consts';\nimport { isDefined } from '../utils';\nimport {\n ApplySelectionTypes,\n SelectionTypes,\n} from '../components/checkbox-selector/checkbox-selector.types';\n\n/** Сервис хранения состояния выбранных в реестре объектов */\n@Injectable()\nexport class SelectedObjectsStateService<T extends { id: ScalarUUID } = any> {\n /** Состояние всех загруженных объектов реестра */\n public readonly state = signal(new Map<ScalarUUID, IRegisterObject<T>>());\n /** Ключи всех выбранных объектов реестра */\n public readonly selectedKeys = computed(() => {\n const selected = this._filterStateObjectsByState(this.state(), ERegisterObjectState.SELECTED);\n\n return new Set(selected.keys());\n });\n /** Ключи всех выбранных или не выбранных объектов реестра (зависит от stateUnfetchedObjects) */\n public readonly keys = computed(() => {\n const unfetchedState = this.stateUnfetchedObjects();\n\n return new Set(\n this._filterStateObjectsByState(this.state(), invertState(unfetchedState)).keys()\n );\n });\n /** Значения всех выбранных объектов реестра */\n public readonly selectedValues = computed(() => {\n const selected = this._filterStateObjectsByState(this.state(), ERegisterObjectState.SELECTED);\n\n return new Set(\n [...selected.values()].map(({ object }) => object).filter((object) => isDefined(object))\n );\n });\n /** Значения всех не выбранных объектов реестра */\n public readonly unselectedValues = computed(() => {\n const selected = this._filterStateObjectsByState(this.state(), ERegisterObjectState.UNSELECTED);\n\n return new Set(\n [...selected.values()].map(({ object }) => object).filter((object) => isDefined(object))\n );\n });\n /** Значения всех выбранных или не выбранных объектов реестра (зависит от stateUnfetchedObjects) */\n public readonly values = computed(() => {\n const unfetchedState = this.stateUnfetchedObjects();\n\n return new Set(\n [...this._filterStateObjectsByState(this.state(), invertState(unfetchedState)).values()]\n .map(({ object }) => object)\n .filter((object) => isDefined(object))\n );\n });\n\n public readonly selectionType$ = new BehaviorSubject<ApplySelectionTypes>(null);\n public readonly stateUnfetchedObjects$ = new BehaviorSubject<ERegisterObjectState>(\n ERegisterObjectState.UNSELECTED\n );\n\n public readonly stateUnfetchedObjects = toSignal(this.stateUnfetchedObjects$.asObservable(), {\n initialValue: ERegisterObjectState.UNSELECTED,\n });\n\n private readonly _dr = inject(DestroyRef);\n\n constructor() {\n this._subscribeOnSelectionType();\n }\n\n /**\n * Установить состояние всем загруженным объектам\n *\n * @param nextState - устанавливаемое состояние\n * */\n public setAllStateObjectsByState(nextState: ERegisterObjectState): void {\n if (nextState === ERegisterObjectState.UNSELECTED) {\n this.stateUnfetchedObjects$.next(ERegisterObjectState.UNSELECTED);\n }\n\n for (const key of this.state().keys()) {\n this.setStateObjectByKey(key, { state: nextState });\n }\n\n this._refresh();\n }\n\n /**\n * Обновить свойства загруженного объекта по ключу\n *\n * @param key - ключ загруженного объекта\n * @param updates - обновление, содержащее свойства которые нужно обновить\n * */\n public setStateObjectByKey(key: ScalarUUID, updates: Partial<IRegisterObject<T>>): void {\n const objects = new Map(this.state());\n\n const stateObject = objects.get(key) ?? { state: ERegisterObjectState.UNSELECTED };\n objects.set(key, { ...stateObject, ...updates });\n\n this.state.set(objects);\n }\n\n public loadStateObjects(data: T[]): void {\n const state = this.stateUnfetchedObjects$?.getValue();\n\n for (const object of data) {\n if (!this.state().has(object.id)) {\n this.setStateObjectByKey(object.id, { object, state });\n }\n }\n\n this._refresh();\n }\n\n private _refresh(): void {\n this.state.update((state) => new Map(state));\n }\n\n public resetState(data?: T[]): void {\n this.stateUnfetchedObjects$\n .asObservable()\n .pipe(skip(1), take(1))\n .subscribe(() => {\n this.state.set(new Map());\n\n if (data) {\n this.loadStateObjects(data);\n }\n });\n this.selectionType$.next(null);\n }\n\n private _filterStateObjectsByState(\n stateObjects: Map<ScalarUUID, IRegisterObject<T>>,\n filterState: ERegisterObjectState\n ) {\n return new Map([...stateObjects].filter(([_, { state }]) => state === filterState));\n }\n\n private _subscribeOnSelectionType(): void {\n this.selectionType$\n .asObservable()\n .pipe(takeUntilDestroyed(this._dr))\n .subscribe((type) => {\n let newState = ERegisterObjectState.UNSELECTED;\n\n if (type === SelectionTypes.ALL) {\n newState = ERegisterObjectState.SELECTED;\n } else if (type === SelectionTypes.INVERSE) {\n newState = invertState(this.stateUnfetchedObjects$.getValue());\n }\n\n this.stateUnfetchedObjects$.next(newState);\n });\n }\n}\n","export enum EMonth {\n JAN,\n FEB,\n MAR,\n APR,\n MAY,\n JUN,\n JUL,\n AUG,\n SEP,\n OCT,\n NOV,\n DEC,\n}\n\nexport enum MonthsNumber {\n January = 1,\n February = 2,\n March = 3,\n April = 4,\n May = 5,\n June = 6,\n July = 7,\n August = 8,\n September = 9,\n October = 10,\n November = 11,\n December = 12,\n}\n\nexport enum MonthsName {\n January = 'Январь',\n February = 'Февраль',\n March = 'Март',\n April = 'Апрель',\n May = 'Май',\n June = 'Июнь',\n July = 'Июль',\n August = 'Август',\n September = 'Сентябрь',\n October = 'Октябрь',\n November = 'Ноябрь',\n December = 'Декабрь',\n}\n\nexport class MonthMapper {\n public static readonly MONTH_NUMBER_NAMES: Map<string, MonthsNumber> = new Map([\n [MonthsName.January, MonthsNumber.January],\n [MonthsName.February, MonthsNumber.February],\n [MonthsName.March, MonthsNumber.March],\n [MonthsName.April, MonthsNumber.April],\n [MonthsName.May, MonthsNumber.May],\n [MonthsName.June, MonthsNumber.June],\n [MonthsName.July, MonthsNumber.July],\n [MonthsName.August, MonthsNumber.August],\n [MonthsName.September, MonthsNumber.September],\n [MonthsName.October, MonthsNumber.October],\n [MonthsName.November, MonthsNumber.November],\n [MonthsName.December, MonthsNumber.December],\n ]);\n\n public static getMonthNumber(monthName: string): number | undefined {\n return this.MONTH_NUMBER_NAMES.get(monthName);\n }\n\n public static getRusNamesArr(): string[] {\n const rusNamesArr: string[] = [...this.MONTH_NUMBER_NAMES.keys()];\n return rusNamesArr;\n }\n\n public static getNumbersArr(): number[] {\n const numberArr: number[] = [...this.MONTH_NUMBER_NAMES.values()];\n return numberArr;\n }\n\n public static getMonthRusNameByNumber(monthNumber: number): string | undefined {\n const monthName = Object.keys(MonthsNumber).find(\n (key) => MonthsNumber[key as keyof typeof MonthsNumber] === monthNumber\n );\n return monthName ? MonthsName[monthName as keyof typeof MonthsName] : undefined;\n }\n}\n","import { Component } from '@angular/core';\n\nexport enum SvgSrc {\n WARNING = 'assets/ngx-register-base/icons/circle-exclamation-empty.svg',\n}\n\n@Component({\n selector: 'sproc-reset-settings-form',\n templateUrl: './reset-settings-form.component.html',\n styleUrls: ['./reset-settings-form.component.less'],\n standalone: true,\n})\nexport class ResetSettingsFormComponent {\n protected readonly svgSrc = SvgSrc;\n}\n","<section class=\"reset-warning\">\n <div class=\"main-warning\">\n Сбросить все параметры <br />\n отображения реестра?\n </div>\n <div style=\"display: flex; flex-direction: row; padding: 16px 0 0 10px\">\n <img [src]=\"svgSrc.WARNING\" alt=\"!\" />\n\n <span class=\"info\"\n >будут сброшены настройки отображения столбцов реестра <br />\n (порядок, ширина, отображение и т.д.)</span\n >\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'sproc-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.less'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DividerComponent {\n @Input() layout: 'horizontal' | 'vertical' = 'horizontal';\n}\n","<div\n [class.horizontal-solid]=\"layout === 'horizontal'\"\n [class.vertical-solid]=\"layout === 'vertical'\"\n></div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n OnInit,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { filter, map, skip } from 'rxjs';\nimport { TuiButton, TuiIcon, TuiPopup, TuiScrollbar } from '@taiga-ui/core';\nimport { TuiDrawer } from '@taiga-ui/kit';\nimport {\n CdkDragDrop,\n CdkDropList,\n CdkDropListGroup,\n moveItemInArray,\n transferArrayItem,\n} from '@angular/cdk/drag-drop';\nimport {\n outputFromObservable,\n takeUntilDestroyed,\n toObservable,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport {\n EColumnStatus,\n IColumnSettings,\n IColumnSettingsChanges,\n ITableColumnSettings,\n} from './types/column-settings.types';\nimport { WaResizeObserver } from '@ng-web-apis/resize-observer';\nimport { ColumnSettingsTemplateComponent } from './components/column-settings-template/column-settings-template.component';\nimport { ICON_CANCEL_CLOSE, ICON_ERASER, ICON_SETTINGS } from './consts/column-settings.consts';\nimport { DialogService, ResizeWindowObserverService } from '../../services';\nimport { getLastSegmentOfPathName, isNonNull } from '../../utils';\nimport { SETTINGS_TYPE, USER_PROFILE_LOADER, USER_SETTINGS_LOADER } from '../../consts';\nimport { ResetSettingsFormComponent } from '../reset-settings-form/reset-settings-form.component';\nimport { DividerComponent } from '../divider/divider.component';\nimport { ITpUserSettings } from '../../types';\n\n@Component({\n selector: 'sproc-column-settings',\n standalone: true,\n templateUrl: './column-settings.component.html',\n styleUrls: ['./column-settings.component.less'],\n imports: [\n TuiButton,\n TuiIcon,\n TuiDrawer,\n TuiPopup,\n DividerComponent,\n ResetSettingsFormComponent,\n CdkDropList,\n CdkDropListGroup,\n TuiScrollbar,\n WaResizeObserver,\n ColumnSettingsTemplateComponent,\n ],\n providers: [ResizeWindowObserverService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColumnSettingsComponent implements OnInit {\n public resetColumnSettingsRef = viewChild('resetSettings', { read: TemplateRef<unknown> });\n public resetColumnSettingsFooter = viewChild('resetSettingsFooter', {\n read: TemplateRef<unknown>,\n });\n\n public defaultSettings = input.required<ITableColumnSettings>();\n /** Высота всего компонента настроек */\n public height = input<number | undefined>();\n public disabled = input(false);\n /** показ заголовка листа фикс. слева колонок */\n public showLeftListHeader = input(true);\n /** показ заголовка листа фикс. справа колонок */\n public showRightListHeader = input(true);\n /** заголовок листа с колонками (нефиксированные) */\n public columnsListHeader = input('Колонки');\n /** показ фикс. справа колонок */\n public showFixedRightList = input(false);\n /** функция предикат - возможность добавления элемента в лист фикс. слева колонок */\n public fixedLeftListEnterPredicate = input<() => boolean>(() => true);\n /** функция предикат - возможность добавления элемента в лист колонок (нефиксированные) */\n public columnsListEnterPredicate = input<() => boolean>(() => true);\n /** функция предикат - возможность добавления элемента в лист фикс. справа колонок */\n public fixedRightListEnterPredicate = input<() => boolean>(() => true);\n\n protected readonly openSettings = signal(false);\n protected readonly inputSettings = signal<ITableColumnSettings | null>(null);\n protected readonly fixedLeftColumns = computed(() => this.inputSettings()?.stickyLeft ?? []);\n protected readonly columns = computed(() => this.inputSettings()?.columns ?? []);\n protected readonly fixedRightColumns = computed(() => this.inputSettings()?.stickyRight ?? []);\n\n public columnsChanges = outputFromObservable<IColumnSettingsChanges>(\n toObservable(this.inputSettings).pipe(\n skip(1),\n map((settings) => ({ settings }))\n )\n );\n\n protected readonly settingsStore = inject(USER_SETTINGS_LOADER);\n\n private readonly _dr = inject(DestroyRef);\n private readonly _router = inject(Router);\n private readonly _userProfileService = inject(USER_PROFILE_LOADER);\n private readonly _dialogService = inject(DialogService);\n private readonly _resizeWindowObserver = inject(ResizeWindowObserverService);\n\n protected readonly iconSettings = ICON_SETTINGS;\n protected readonly iconEraser = ICON_ERASER;\n protected readonly iconCancelClose = ICON_CANCEL_CLOSE;\n\n protected readonly columnSettingsHeaderHeightPx = 40;\n protected readonly columnSettingsSubtitleHeightPx = 32;\n protected readonly scrollBoxFixedColumnsHeightPx = signal(0);\n protected readonly scrollBoxRightFixedColumnsHeightPx = signal(0);\n protected readonly scrollBoxFixedColumnsMaxHeightPx = 287;\n protected readonly scrollBoxColumnsMaxHeightPx = signal(0);\n protected readonly columnSettingsFooterHeightPx = 48;\n protected readonly columnListHeightPx = toSignal(\n this._resizeWindowObserver.innerHeight$.pipe(\n skip(1),\n map((innerHeight) => this._calcColumnListHeightPx(innerHeight))\n ),\n {\n initialValue: this._calcColumnListHeightPx(this._resizeWindowObserver.innerHeight()),\n }\n );\n protected readonly columnListBottomPaddingPx = 8;\n\n private readonly _idUser = this._userProfileService.getUserProfile().id;\n private readonly _moduleName = getLastSegmentOfPathName(this._router.url);\n\n private _columnsSettings: ITpUserSettings | undefined;\n\n constructor() {\n this.setDefaultSettings();\n this._effectOnSetScrollBoxColumnsMaxHeight();\n }\n\n public setDefaultSettings(): void {\n effect(() => {\n const defaultSettings = this.defaultSettings();\n const clonedSettings = JSON.parse(JSON.stringify(defaultSettings));\n\n untracked(() => {\n this.inputSettings.set(clonedSettings);\n });\n });\n }\n\n private _effectOnSetScrollBoxColumnsMaxHeight(): void {\n effect(() => {\n const parentHeightPx = this.columnListHeightPx();\n const fixedHeightPx = this.scrollBoxFixedColumnsHeightPx();\n const rightFixedHeightPx = this.scrollBoxRightFixedColumnsHeightPx();\n const sumFixedHeightPx = fixedHeightPx + rightFixedHeightPx;\n\n untracked(() => {\n const newHeightPx = this._calcScrollBoxColumnsMaxHeightPx(parentHeightPx, sumFixedHeightPx);\n this.scrollBoxColumnsMaxHeightPx.set(newHeightPx);\n });\n });\n }\n\n public ngOnInit(): void {\n this.subscribeOnSettings();\n this.fetchSettings(this._idUser, this._moduleName);\n }\n\n private fetchSettings(userId: string, moduleName: string): void {\n this.settingsStore.fetchUserSettingsByUserId({\n userId,\n settingsType: SETTINGS_TYPE.COLUMNS,\n moduleName,\n });\n }\n\n private subscribeOnSettings(): void {\n this.settingsStore.settings$\n .pipe(\n filter((settings) => settings.length > 0),\n map(([settings]) => settings),\n filter((settings) => isNonNull(settings)),\n takeUntilDestroyed(this._dr)\n )\n .subscribe((settings) => {\n this._columnsSettings = settings;\n const { tableFields } = settings.settings;\n\n if (tableFields) {\n this.inputSettings.set(tableFields);\n this.close();\n }\n });\n }\n\n protected deleteSettings(): void {\n const clonedSettings = JSON.parse(JSON.stringify(this.defaultSettings()));\n this.inputSettings.set(clonedSettings);\n\n if (this._columnsSettings) {\n this.settingsStore.deleteUserSettingsById({\n id: this._columnsSettings?.id,\n updateSettings: true,\n });\n }\n\n this.close();\n }\n\n protected saveSettings(settings: ITableColumnSettings): void {\n this.settingsStore.upsertUserSettingsByUserId({\n settings: {\n id: this._columnsSettings?.id,\n module_name: this._moduleName,\n settings: {\n ...this._columnsSettings?.settings,\n tableFields: settings,\n },\n settings_type: SETTINGS_TYPE.COLUMNS,\n },\n updateSettings: true,\n });\n }\n\n protected saveTableSettings(): void {\n this.saveSettings({\n stickyLeft: this.fixedLeftColumns(),\n columns: this.columns(),\n stickyRight: this.fixedRightColumns(),\n });\n }\n\n protected openResetDialog(): void {\n this._dialogService\n .openModal(this.resetColumnSettingsRef(), {\n closeable: true,\n width: 466,\n footer: this.resetColumnSettingsFooter(),\n dismissible: true,\n })\n .subscribe();\n }\n\n protected toggle(): void {\n this.openSettings.update((isOpen) => !isOpen);\n }\n\n protected close(): void {\n this.openSettings.set(false);\n }\n\n protected dropIntoFixedLeft(event: CdkDragDrop<IColumnSettings[]>): void {\n const droppedElement = event.previousContainer.data[event.previousIndex];\n this._setStatusRecursive(droppedElement, EColumnStatus.STICKY);\n this._moveDroppedItem(event);\n }\n\n protected dropIntoColumns(event: CdkDragDrop<IColumnSettings[]>): void {\n const fromOther = event.previousContainer !== event.container;\n\n if (fromOther) {\n const droppedElement = event.previousContainer.data[event.previousIndex];\n this._setStatusRecursive(droppedElement, EColumnStatus.DEFAULT);\n }\n\n this._moveDroppedItem(event);\n }\n\n private _moveDroppedItem(event: CdkDragDrop<IColumnSettings[]>): void {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n transferArrayItem(\n event.previousContainer.data,\n event.container.data,\n event.previousIndex,\n event.currentIndex\n );\n }\n }\n\n protected toggleVisibility(col: IColumnSettings): void {\n const isHidden = col.status === EColumnStatus.HIDDEN;\n col.status = isHidden ? EColumnStatus.DEFAULT : EColumnStatus.HIDDEN;\n }\n\n protected showAllColumns(): void {\n const settings = this.inputSettings();\n\n if (!settings) {\n throw new Error('Настройки таблицы не инициализированы');\n }\n\n this._setColumnsStatusRecursive(settings.columns, EColumnStatus.DEFAULT);\n }\n\n protected isHiddenColumn(column: IColumnSettings): boolean {\n return column.status === EColumnStatus.HIDDEN;\n }\n\n protected onFixedScrollbarResize([fixedScrollbar]: readonly ResizeObserverEntry[]): void {\n this.scrollBoxFixedColumnsHeightPx.set(fixedScrollbar.contentRect.height);\n }\n\n protected onRightFixedScrollbarResize([fixedScrollbar]: readonly ResizeObserverEntry[]): void {\n this.scrollBoxRightFixedColumnsHeightPx.set(fixedScrollbar.contentRect.height);\n }\n\n private _calcColumnListHeightPx(windowInnerHeight: number): number {\n const mainHeaderPx = 52;\n const columnSettingsHeaderFooterSumHeightPx =\n this.columnSettingsHeaderHeightPx + this.columnSettingsFooterHeightPx;\n\n return windowInnerHeight - mainHeaderPx - columnSettingsHeaderFooterSumHeightPx;\n }\n\n private _calcScrollBoxColumnsMaxHeightPx(\n parentHeightPx: number,\n fixedScrollbarHeightPx: number\n ): number {\n const twoSubtitleHeightPx = 2 * this.columnSettingsSubtitleHeightPx;\n const bottomPaddingPx = this.columnListBottomPaddingPx;\n\n return parentHeightPx - twoSubtitleHeightPx - fixedScrollbarHeightPx - bottomPaddingPx;\n }\n\n private _setStatusRecursive(column: IColumnSettings, status: EColumnStatus): void {\n column.status = status;\n\n if (column.children) {\n this._setColumnsStatusRecursive(column.children, status);\n }\n }\n\n private _setColumnsStatusRecursive(columns: IColumnSettings[], status: EColumnStatus): void {\n for (const [index, col] of columns.entries()) {\n columns[index] = { ...col, status };\n\n if (col.children) {\n this._setColumnsStatusRecursive(col.children, status);\n }\n }\n }\n}\n","<button\n tuiButton\n class=\"column-settings__main-button\"\n appearance=\"outline-grayscale\"\n size=\"m\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n <tui-icon class=\"column-settings__icon gray\" [icon]=\"iconSettings\"></tui-icon>\n</button>\n\n<tui-drawer\n *tuiPopup=\"openSettings()\"\n class=\"column-settings__popup\"\n direction=\"right\"\n [overlay]=\"true\"\n (click.self)=\"close()\"\n>\n <header class=\"header\" [style.height.px]=\"columnSettingsHeaderHeightPx\">\n <span class=\"header__title\">Настройка таблицы</span>\n <div class=\"header__buttons\">\n <button\n tuiIconButton\n class=\"reset-button\"\n appearance=\"flat\"\n size=\"m\"\n (click)=\"openResetDialog()\"\n >\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconEraser\"></tui-icon>\n </button>\n <sproc-divider layout=\"vertical\"></sproc-divider>\n <button tuiIconButton class=\"close-button\" appearance=\"flat\" size=\"m\" (click)=\"close()\">\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconCancelClose\"></tui-icon>\n </button>\n </div>\n </header>\n <div\n cdkDropListGroup\n class=\"column-container tui__t-content--no-default-padding\"\n [style.height.px]=\"columnListHeightPx()\"\n >\n <div\n cdkDropList\n class=\"column-list\"\n [cdkDropListData]=\"fixedLeftColumns()\"\n (cdkDropListDropped)=\"dropIntoFixedLeft($event)\"\n [cdkDropListEnterPredicate]=\"fixedLeftListEnterPredicate()\"\n >\n @if (showLeftListHeader()) {\n <div class=\"column-list__label-container\">\n <span class=\"subtitle\" [style.height.px]=\"columnSettingsSubtitleHeightPx\">\n Фиксированные колонки слева\n </span>\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onFixedScrollbarResize($event)\"\n >\n @for (fixedLeftColumn of fixedLeftColumns(); track fixedLeftColumn.id) {\n <sproc-column-settings-template\n [column]=\"fixedLeftColumn\"\n ></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n <sproc-divider></sproc-divider>\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"columns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"columnsListEnterPredicate()\"\n >\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >{{ columnsListHeader() }}</span\n >\n <span class=\"show-all\" (click)=\"showAllColumns()\">Показать все</span>\n </div>\n <tui-scrollbar [style.max-height.px]=\"scrollBoxColumnsMaxHeightPx()\">\n @for (column of columns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\"></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n @if (showFixedRightList()) {\n <sproc-divider></sproc-divider>\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"fixedRightColumns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"fixedRightListEnterPredicate()\"\n >\n @if (showRightListHeader()) {\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >Фиксированные колонки справа</span\n >\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onRightFixedScrollbarResize($event)\"\n >\n @for (column of fixedRightColumns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\"></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n }\n </div>\n <footer class=\"footer\" [style.height.px]=\"columnSettingsFooterHeightPx\">\n <button\n tuiButton\n class=\"save-button\"\n size=\"m\"\n appearance=\"primary\"\n (click)=\"saveTableSettings()\"\n >\n Сохранить\n </button>\n </footer>\n</tui-drawer>\n\n<ng-template #resetSettings>\n <sproc-reset-settings-form></sproc-reset-settings-form>\n</ng-template>\n\n<ng-template #resetSettingsFooter let-completeWith=\"completeWith\">\n <div style=\"width: 100%; display: flex; justify-content: center; gap: 8px\">\n <button\n tuiButton\n style=\"width: 196px\"\n appearance=\"primary-destructive\"\n size=\"l\"\n (click)=\"deleteSettings(); completeWith(true)\"\n >\n Сбросить\n </button>\n <button\n tuiButton\n style=\"width: 196px\"\n appearance=\"outline-grayscale\"\n size=\"l\"\n (click)=\"completeWith(false)\"\n >\n Отмена\n </button>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { TuiButton, TuiHint } from '@taiga-ui/core';\nimport { NgOptimizedImage } from '@angular/common';\n\n@Component({\n selector: 'sproc-filter-button',\n templateUrl: './filter-button.component.html',\n styleUrl: './filter-button.component.less',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TuiButton, TuiHint, NgOptimizedImage],\n})\nexport class FilterButtonComponent {\n public filterApplied = input.required<boolean>();\n public disabled = input(false);\n\n public filterToggle = output<void>();\n}\n","<button\n tuiButton\n size=\"m\"\n appearance=\"outline-grayscale\"\n tuiHint\n tuiHintDirection=\"bottom\"\n [class.--indicator]=\"filterApplied()\"\n [disabled]=\"disabled()\"\n (click)=\"filterToggle.emit()\"\n>\n <img ngSrc=\"assets/ngx-register-base/icons/filter.svg\" alt=\"\" height=\"16\" width=\"16\" />\n\n <tui-hint\n *tuiHint\n class=\"filter-button__tooltip\"\n [class.filter-button__tooltip--showed]=\"filterApplied()\"\n >\n <span>К реестру применены фильтры</span>\n </tui-hint>\n</button>\n","export const SIDE_MENU_OPENED_WIDTH = 350;\nexport const SIDE_MENU_CLOSED_WIDTH = 48;\n\nexport enum EPageMenuIconsSrc {\n CHEVRON_RIGHT = 'assets/ngx-register-base/icons/chevron-right.svg',\n CHEVRON_UP = 'assets/ngx-register-base/icons/chevron-up.svg',\n MENU_CHEVRON = 'assets/ngx-register-base/icons/chevron-menu.svg',\n}\n","import { InjectionToken } from '@angular/core';\nimport { AbstractMenuStateService } from './sproc-page-menu.types';\n\nexport const PAGE_MENU_STATE = new InjectionToken<AbstractMenuStateService>('PAGE_MENU_STATE');\n// export const PAGE_MENU_STORE = new InjectionToken<AbstractMenuStateService>('PAGE_MENU_STATE');\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n HostBinding,\n inject,\n input,\n OnInit,\n signal,\n} from '@angular/core';\nimport {\n EPageMenuIconsSrc,\n SIDE_MENU_CLOSED_WIDTH,\n SIDE_MENU_OPENED_WIDTH,\n} from './schema/sproc-page-menu.consts';\nimport { Router, RouterLink } from '@angular/router';\nimport { AbstractMenuStateService, IClsMenuItem } from './schema/sproc-page-menu.types';\nimport { PAGE_MENU_STATE } from './schema/sproc-page-menu.tokens';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { INavigation } from './schema/sproc-page-menu.schema';\nimport { AsyncPipe, NgClass, NgOptimizedImage, NgTemplateOutlet } from '@angular/common';\nimport { animate, style, transition, trigger } from '@angular/animations';\n\n@Component({\n selector: 'sproc-page-menu',\n templateUrl: './sproc-page-menu.component.html',\n styleUrls: ['./sproc-page-menu.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [RouterLink, NgTemplateOutlet, NgClass, AsyncPipe, NgOptimizedImage],\n animations: [\n trigger('fadeInOut', [\n transition(':enter', [\n style({\n opacity: 0,\n transform: 'translateY(-10px)',\n transformOrigin: 'top',\n }),\n animate(\n '0.15s ease-in',\n style({\n opacity: 1,\n transform: 'translateY(0)',\n })\n ),\n ]),\n ]),\n ],\n})\nexport class SprocPageMenuComponent implements OnInit {\n public menuItems = input.required<IClsMenuItem[]>();\n public menuIconsSrc = input<string>('');\n public openLogoSrc = input<string>('');\n public closedLogoSrc = input<string>('');\n public findActiveSection =\n input.required<(reset: () => void, findRoute: (routeToFind: string) => void) => void>();\n\n // TODO Добавить кастомную ширину меню\n @HostBinding('style.--page-menu-opened-width')\n public readonly menuOpenedWidth = `${SIDE_MENU_OPENED_WIDTH}px`;\n @HostBinding('style.--page-menu-closed-width')\n public readonly menuClosedWidth = `${SIDE_MENU_CLOSED_WIDTH}px`;\n\n private readonly _router = inject(Router);\n private readonly _state = inject<AbstractMenuStateService>(PAGE_MENU_STATE);\n private readonly _dr = inject(DestroyRef);\n\n protected readonly toggleDisabled$ = this._state.toggleDisabled$;\n protected menuState = toSignal(this._state.isOpen$);\n protected selectedSection = signal<string>('register');\n protected expandedIds = signal<Set<string>>(new Set());\n\n protected selectedItem = computed(() =>\n this.selectedSection() ? this.codeToItem[this.selectedSection()] : null\n );\n\n // Хранит parent элементы выбранного пункта меню\n protected parentItems = computed(() => {\n const item = this.selectedItem();\n if (!item) {\n return [];\n }\n\n const parents: INavigation[] = [];\n let current = item.parent;\n while (current) {\n parents.push(current);\n current = current.parent;\n }\n return parents;\n });\n protected parentItemCodes = computed<Set<string>>(() => {\n const parentItems = this.parentItems();\n\n return new Set(parentItems.map((val) => val.code ?? ''));\n });\n\n public navigationHierarchy = signal<INavigation[]>([]);\n\n protected codeToItem: Record<string, INavigation> = {};\n\n protected isOpenServiceVersionInfo = false;\n\n protected readonly ICONS_SRC = EPageMenuIconsSrc;\n\n constructor() {\n // Построить меню и найти активную секцию\n effect(\n () => {\n const menuItems = this.menuItems();\n this.buildMenu(menuItems);\n this._findActiveSection();\n },\n { allowSignalWrites: true }\n );\n }\n\n public addMenuScrollbar(id: string): void {\n setTimeout(() => {\n // TODO Меню второго уровня есть скролл,третьего нет\n const collapsedMenu = document.querySelector<HTMLElement>(`[id=\"${id}\"]`);\n const sideMenu = collapsedMenu?.querySelector<HTMLElement>('#side-menu__subitems');\n const sideMenuLevelTwo = sideMenu?.querySelector<HTMLElement>('#side-menu__subitems');\n\n const subitem = sideMenuLevelTwo\n ? sideMenuLevelTwo.querySelectorAll('.side-menu__subitem')\n : sideMenu?.querySelectorAll('.side-menu__subitem');\n if (subitem) {\n const lastSubitem = subitem[subitem.length - 1];\n const rect = lastSubitem?.getBoundingClientRect();\n\n if (sideMenu && window.innerHeight - rect.bottom < 0) {\n // 40 тк высота плашки меню\n sideMenu.style.height = `${\n subitem.length * 40 + (window.innerHeight - rect.bottom - 1)\n }px`;\n sideMenu.style.overflowY = 'scroll';\n sideMenu.style.overflowX = 'hidden';\n }\n if (window.innerHeight - rect.bottom < 0 && sideMenuLevelTwo) {\n // 40 тк высота плашки меню\n sideMenuLevelTwo.style.height = `${\n subitem.length * 40 + (window.innerHeight - rect.bottom - 1)\n }px`;\n sideMenuLevelTwo.style.overflowY = 'scroll';\n sideMenuLevelTwo.style.overflowX = 'hidden';\n }\n }\n }, 0);\n }\n\n public ngOnInit(): void {\n this._state.isOpen$.subscribe((menuState) => {\n if (menuState) {\n this.findRoute(this.selectedSection());\n } else {\n this.collapseMenu();\n }\n });\n }\n\n protected toggleNavigation(): void {\n this._state.toggle();\n }\n\n protected toggleItem(item: INavigation): void {\n this.addMenuScrollbar(item.id || '');\n\n this.expandedIds.update((currentExpand) => {\n const code = item.code;\n const copy = new Set<string>(currentExpand);\n\n if (copy.has(code)) {\n copy.delete(code);\n } else {\n copy.clear();\n copy.add(code);\n\n const parents = this.getParents(item);\n for (const parent of parents) {\n copy.add(parent.code);\n }\n }\n\n return copy;\n });\n }\n\n protected collapseMenu(exception?: INavigation): void {\n let codes: string[] = [];\n if (exception) {\n const parents = this.getParents(exception);\n codes = [exception.code, ...parents.map((parent) => parent.code)];\n }\n\n this.expandedIds.set(new Set<string>(codes));\n }\n\n protected get isMenuOpened(): boolean {\n return this._state.isOpen;\n }\n\n protected get isMenuClosed(): boolean {\n return !this._state.isOpen;\n }\n\n protected isExternalLink(route: string | undefined): boolean {\n if (!route) {\n return false;\n }\n return /^(https?:\\/\\/|www\\.)/i.test(route);\n }\n\n protected handleNavigation(item: INavigation): void {\n if (!item.route) {\n return;\n }\n\n if (this.isExternalLink(item.route)) {\n window.open(item.route, '_blank');\n } else {\n this._router.navigate([item.route]);\n this.selectedSection.set(item.code ?? '');\n\n if (this.isMenuClosed) {\n this.collapseMenu();\n }\n }\n }\n\n protected serviceInfoOnActiveZone(active: boolean): void {\n this.isOpenServiceVersionInfo = active && this.isOpenServiceVersionInfo;\n }\n\n protected serviceInfoOnObscured(obscured: boolean): void {\n if (obscured) {\n this.isOpenServiceVersionInfo = false;\n }\n }\n\n private buildMenu(menu: IClsMenuItem[]): void {\n const sortedMenuItems = [...menu].sort((a, b) => (a.order_num ?? 0) - (b.order_num ?? 0));\n\n const menuHash: Record<string, INavigation> = {};\n for (const item of sortedMenuItems) {\n menuHash[item.id] = {\n title: item.title ?? '',\n route: item.route ?? '',\n id: item.id,\n children: [],\n code: item.code,\n icon: item.icon,\n accessedRoles: undefined,\n parent: undefined,\n };\n }\n\n const rootMenuItems: INavigation[] = [];\n\n for (const item of sortedMenuItems) {\n if (item.id_parent && menuHash[item.id_parent]) {\n const parent = menuHash[item.id_parent];\n const child = menuHash[item.id];\n child.parent = parent;\n parent.children?.push(child);\n } else {\n rootMenuItems.push(menuHash[item.id]);\n }\n }\n\n this.navigationHierarchy.set(rootMenuItems);\n\n this.codeToItem = {};\n for (const id of Object.keys(menuHash)) {\n const item = menuHash[id];\n if (item.code) {\n this.codeToItem[item.code] = item;\n }\n }\n }\n\n private findRoute(routeToFind: string): void {\n const routeItem = this.codeToItem[routeToFind];\n\n if (!routeItem) {\n return;\n }\n\n if (this.isMenuOpened) {\n this.toggleItem(routeItem);\n }\n\n this.selectedSection.set(routeItem.code ?? '');\n }\n\n private _findActiveSection(): void {\n this.findActiveSection()(this.resetSelection, this.findRoute);\n }\n\n private getParents(item: INavigation): INavigation[] {\n const parents: INavigation[] = [];\n let current = item.parent;\n\n while (current) {\n parents.push(current);\n current = current.parent;\n }\n\n return parents;\n }\n\n private resetSelection(): void {\n this.expandedIds.set(new Set<string>());\n this.selectedSection.set('');\n }\n\n private collectChildren(item: INavigation): INavigation[] {\n const result: INavigation[] = [];\n const queue: INavigation[] = item.children?.slice() ?? [];\n\n let index = 0;\n while (index < queue.length) {\n const node = queue[index];\n result.push(node);\n\n if (node.children) {\n queue.push(...node.children);\n }\n\n index += 1;\n }\n\n return result;\n }\n}\n","<section [class]=\"menuState() ? 'side-menu side-menu_opened' : 'side-menu side-menu_closed'\">\n <div class=\"side-menu__header\">\n <img\n [src]=\"menuState() ? openLogoSrc() : closedLogoSrc()\"\n alt=\"Logo Icon\"\n class=\"side-menu__header__logo\"\n />\n <img\n (click)=\"toggleNavigation()\"\n [class.disabled]=\"toggleDisabled$ | async\"\n [height]=\"16\"\n [ngClass]=\"menuState() ? 'side-menu__header__chevron_opened' : 'side-menu__header__chevron_closed'\"\n [ngSrc]=\"ICONS_SRC.MENU_CHEVRON\" [width]=\"16\" alt=\"Menu Chevron\"/>\n </div>\n\n @if (menuState()) {\n <div class=\"expanded-menu-content\">\n @for (navigation_item of navigationHierarchy(); track $index) {\n <ng-container\n *ngTemplateOutlet=\"\n menuItemOpened;\n context: { navigation_item: navigation_item, level: 0 }\n \"\n ></ng-container>\n }\n </div>\n\n <ng-content></ng-content>\n } @else {\n @for (navigation_item of navigationHierarchy(); track $index) {\n <ng-container\n *ngTemplateOutlet=\"closedMenu; context: { navigation_item: navigation_item }\"\n ></ng-container>\n }\n }\n</section>\n\n<ng-template #menuItemOpened let-level=\"level\" let-navigation_item=\"navigation_item\">\n @let isExpanded = expandedIds().has(navigation_item.code);\n @let childrenCount = navigation_item.children.length;\n @let code = navigation_item.code;\n @let route = navigation_item.code;\n @let icon = navigation_item.icon;\n @let isHighlighted = selectedSection() === code;\n\n <a\n (click)=\"childrenCount === 0 ? handleNavigation(navigation_item) : toggleItem(navigation_item)\"\n [@fadeInOut]\n [class.menu-item_selected]=\"isHighlighted\"\n [class.padding-level-0]=\"level === 0\"\n [routerLink]=\"childrenCount > 0 || isExternalLink(route) ? undefined : route\"\n [style.padding-left.px]=\"level === 0 ? 0 : 44 + level * 20\"\n class=\"menu-item\"\n >\n @if (icon) {\n <span class=\"menu-item__icon\">\n <img [alt]=\"icon\" [width]=\"16\" [height]=\"16\" [ngSrc]=\"menuIconsSrc() + icon + '.svg'\">\n </span>\n }\n <span class=\"menu-item__title\"> {{ navigation_item.title }} </span>\n @if (childrenCount > 0) {\n <img\n class=\"menu-item__chevron\"\n [class.menu-item__chevron_rotated]=\"!isExpanded\"\n [alt]=\"icon\" [width]=\"16\" [height]=\"16\"\n [ngSrc]=\"ICONS_SRC.CHEVRON_UP\">\n }\n </a>\n @if (isExpanded && childrenCount > 0) {\n @for (children of navigation_item.children ?? []; track $index) {\n <ng-container\n *ngTemplateOutlet=\"menuItemOpened; context: { navigation_item: children, level: level + 1 }\"\n ></ng-container>\n }\n }\n</ng-template>\n\n<ng-template #closedMenu let-navigation_item=\"navigation_item\">\n @let isExpanded = expandedIds().has(navigation_item.code);\n @let childrenCount = navigation_item.children.length;\n @let code = navigation_item.code;\n @let route = navigation_item.code;\n @let icon = navigation_item.icon;\n @let isHighlighted = selectedSection() === code || parentItemCodes().has(code);\n\n <div\n (mouseleave)=\"collapseMenu()\"\n [id]=\"navigation_item.id\"\n class=\"collapsed-menu-content\"\n >\n @if (icon) {\n <a\n class=\"menu-item__icon_closed\"\n [class.menu-item_selected]=\"isHighlighted\"\n (click)=\"childrenCount === 0 ? handleNavigation(navigation_item) : toggleItem(navigation_item)\"\n [routerLink]=\"childrenCount > 0 || isExternalLink(route) ? undefined : route\"\n (mouseenter)=\"toggleItem(navigation_item)\">\n <img\n [height]=\"16\"\n [width]=\"16\"\n [ngSrc]=\"menuIconsSrc() + icon + '.svg'\" alt=\"Menu Chevron\"/>\n </a>\n }\n <ng-container\n *ngTemplateOutlet=\"\n menuClosedItem;\n context: { item: navigation_item, level: 1, topPadding: 1 }\n \"\n >\n </ng-container>\n @if (isExpanded && childrenCount > 0) {\n <div class=\"static-item\">\n <span class=\"static-item__element\">\n {{ navigation_item.title }}\n </span>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #menuClosedItem let-item=\"item\" let-level=\"level\" let-topPadding=\"topPadding\">\n @let isExpanded = expandedIds().has(item.code);\n <div [id]=\"item.id\">\n @if (isExpanded && item.children.length > 0) {\n <div\n class=\"side-menu__subitems\"\n [class.padding-level-1]=\"level === 1\"\n [style.top.px]=\"topPadding * 40\"\n id=\"side-menu__subitems\"\n >\n @for (navigation_item of item.children; track navigation_item; let index = $index) {\n @let childrenCount = navigation_item.children.length;\n @let code = navigation_item.code;\n @let route = navigation_item.code;\n @let isHighlighted = selectedSection() === code || parentItemCodes().has(code);\n <a\n class=\"side-menu__subitem\"\n [class.menu-item_selected]=\"isHighlighted\"\n (mouseenter)=\"childrenCount > 0 ? toggleItem(navigation_item) : collapseMenu(navigation_item)\"\n (click)=\"childrenCount === 0 ? handleNavigation(navigation_item) : toggleItem(navigation_item)\"\n [routerLink]=\"childrenCount > 0 || isExternalLink(route) ? undefined : route\"\n >\n <span\n [class.padding-level-1]=\"level === 1\">{{\n navigation_item.title\n }}</span>\n\n @if (childrenCount > 0) {\n <img\n class=\"chevron-right\"\n [height]=\"16\"\n [width]=\"16\"\n [ngSrc]=\"ICONS_SRC.CHEVRON_RIGHT\" alt=\"Menu Chevron\"/>\n }\n </a>\n <ng-container\n *ngTemplateOutlet=\"\n menuClosedItem;\n context: { item: navigation_item, level: level + 1, topPadding: index }\n \"\n ></ng-container>\n }\n </div>\n }\n </div>\n</ng-template>\n","import { Observable } from 'rxjs';\nimport { ScalarUUID } from 'hasura';\n\nexport interface IClsMenuItem {\n code: string;\n id: ScalarUUID;\n id_parent: string;\n route: string | null;\n title: string | null;\n icon: string | undefined;\n allowed_roles: string[] | null;\n is_deleted: boolean;\n order_num: number | null;\n children?: IClsMenuItem[];\n}\n\nexport abstract class AbstractMenuStateService {\n /**\n * Observable, отражающий текущее состояние меню (открыто / закрыто)\n */\n public abstract readonly isOpen$: Observable<boolean>;\n\n /**\n * Observable, сигнализирующий, доступно ли переключение меню\n */\n public abstract readonly toggleDisabled$: Observable<boolean>;\n\n /**\n * Текущее синхронное состояние меню\n */\n public abstract get isOpen(): boolean;\n\n /**\n * Принудительно установить состояние меню\n */\n public abstract setOpen(value: boolean): void;\n\n /**\n * Переключить состояние меню\n */\n public abstract toggle(): void;\n}\n","export enum ERuntimeErrorCode {\n // Structure validation errors\n NO_CONTROLS = 1000,\n MISSING_CONTROL = 1001,\n MISSING_CONTROL_VALUE = 1002,\n}\n","import {\n AbstractControl,\n FormArray,\n FormGroup,\n ɵFormGroupRawValue,\n ɵFormGroupValue,\n} from '@angular/forms';\nimport { ɵRuntimeError as RuntimeError } from '@angular/core';\nimport { ERuntimeErrorCode } from './errors-consts';\nimport { ControlsWrapper, ExtractForm } from '../../types/sub-types';\n\nfunction assertAllValuesPresent(control: any, isGroup: boolean, value: any): void {\n control._forEachChild((_: unknown, key: string | number) => {\n if (value[key] === undefined) {\n throw new RuntimeError(ERuntimeErrorCode.MISSING_CONTROL_VALUE, '');\n }\n });\n}\n\nexport function assertControlPresent(parent: any, isGroup: boolean, key: string | number): void {\n const controls = parent.controls as { [key: string | number]: unknown };\n const collection = isGroup ? Object.keys(controls) : controls;\n\n if (collection.length === 0) {\n throw new RuntimeError(ERuntimeErrorCode.NO_CONTROLS, '');\n }\n\n if (!controls[key]) {\n throw new RuntimeError(ERuntimeErrorCode.MISSING_CONTROL, '');\n }\n}\n\n/** @deprecated заменить на FormGroup */\nexport class FormGroupWrapper<TItem> extends FormGroup<ControlsWrapper<TItem>> {\n public override setValue(\n value: TItem & ɵFormGroupRawValue<any>,\n options?: { onlySelf?: boolean; emitEvent?: boolean }\n ): void {\n assertAllValuesPresent(this, true, value);\n\n for (const name of Object.keys(value) as (keyof TItem)[]) {\n assertControlPresent(this, true, name as any);\n const control = (this.controls as any)[name];\n const currentValue = (value as any)[name];\n\n if (control instanceof FormArray && Array.isArray(currentValue)) {\n control.clear();\n\n for (const item of currentValue as AbstractControl<any, any>[]) {\n item.setParent(control);\n control.push(item, { emitEvent: options?.emitEvent });\n }\n } else {\n control.setValue(currentValue, {\n onlySelf: true,\n emitEvent: options?.emitEvent,\n });\n }\n }\n\n this.updateValueAndValidity(options);\n }\n\n public override patchValue(\n value: Partial<TItem> | ɵFormGroupValue<any>,\n options?: { onlySelf?: boolean; emitEvent?: boolean }\n ): void {\n if (value === null) {\n return;\n }\n\n for (const name of Object.keys(value) as (keyof TItem)[]) {\n const control = (this.controls as any)[name];\n const currentValue = value[name as keyof ({ [key: string]: any } | Partial<TItem>)]!;\n\n if (control) {\n if (control instanceof FormArray && Array.isArray(currentValue)) {\n control.clear();\n\n for (const item of currentValue as AbstractControl<any, any>[]) {\n item.setParent(control);\n control.push(item, { emitEvent: options?.emitEvent });\n }\n } else {\n control.patchValue(currentValue, {\n onlySelf: true,\n emitEvent: options?.emitEvent,\n });\n }\n }\n }\n\n this.updateValueAndValidity(options);\n }\n\n public getDirtyValues(): Partial<ExtractForm<TItem>> {\n const values: Partial<ExtractForm<TItem>> = {};\n\n for (const key of Object.keys(this.controls)) {\n const control = this.get(key);\n\n if (control?.dirty) {\n values[key as keyof TItem] = control.getRawValue();\n }\n }\n\n return values;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\n/** Максимальное кол-во символов в текстовых полях */\nexport const MAX_LENGTH_TEXT_PARAMS = new InjectionToken<number>('MAX_LENGTH_TEXT_PARAMS');\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectorRef,\n computed,\n DestroyRef,\n Directive,\n forwardRef,\n inject,\n Injector,\n input,\n Input,\n OnInit,\n Optional,\n Self,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl, Validators } from '@angular/forms';\nimport { filter, skip, tap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IInputControl, InputControlGqlValue, InputControlSaveValue } from '../../types';\nimport {\n FormatterGqlValueType,\n FormatterSavedValueType,\n ParserSavedValueType,\n} from '../../types/params.types';\nimport { distinctUntilChangedJSONs } from '../../utils';\n\n@Directive({\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ParamBase),\n multi: true,\n },\n ],\n})\nexport abstract class ParamBase<\n ValueType extends any | null,\n SavedValueType extends InputControlSaveValue,\n >\n implements ControlValueAccessor, OnInit, AfterViewInit, AfterContentInit\n{\n /** Название */\n @Input() label = '';\n /** Текст при пустом значении control (null) */\n placeholder = input<string>('');\n /** Режим просмотра, по умолчанию выключен */\n @Input() readmode = false;\n /** Кнопка быстрой очистки поля, по умолчанию включена */\n @Input() forceClear = true;\n /** Текст при наведении на значение control */\n @Input() hint: string | null = null;\n /** Готовые стили для использования поля в панели фильтров/параметров или на карточке, по умолчанию стили для карточки */\n @Input() paramStyle: 'filter' | 'card' = 'card';\n /** Метод для конвертации значения control при сохранении (используется при сохранении фильтров в БД) */\n @Input() set formatSavedValue(\n formatter: FormatterSavedValueType<ValueType, SavedValueType> | undefined\n ) {\n if (formatter) {\n this.formatterSavedValue = formatter;\n }\n }\n /** Метод для конвертации сохраненного значения в control (используется при установке сохраненных фильтров из БД) */\n @Input() set parseSavedValue(\n parser: ParserSavedValueType<SavedValueType, ValueType> | undefined\n ) {\n if (parser) {\n this.parserSavedValue = parser;\n }\n }\n /** Метод для конвертации значения control в GQL-значение (используется при вычислении gql_value control) */\n @Input() set formatGqlValue(formatter: FormatterGqlValueType<ValueType> | undefined) {\n if (formatter) {\n this.formatterGqlValue = formatter;\n }\n }\n /** Метод для отображения значения в режиме просмотра */\n buildShowedValue = input((_: ValueType): string => '');\n\n @Input() set required(required: boolean) {\n this._required = required;\n this._setControlRequired(required);\n }\n\n public get required(): boolean {\n return this.control?.hasValidator(Validators.required) ?? false;\n }\n\n @Input() set disabled(disabled: boolean) {\n this._disabled = disabled;\n this._setControlDisabled(disabled);\n }\n\n public get disabled(): boolean {\n return this.control?.disabled ?? false;\n }\n\n @Optional()\n @Self()\n private readonly _ngControl = inject(NgControl);\n\n protected readonly cdr = inject(ChangeDetectorRef);\n protected readonly dr = inject(DestroyRef);\n\n protected control!: IInputControl<ValueType, SavedValueType>;\n protected formatterSavedValue: (value: ValueType, injector?: Injector) => SavedValueType = (\n value\n ) => value as unknown as SavedValueType;\n protected parserSavedValue: (value: SavedValueType, injector?: Injector) => ValueType = (value) =>\n value as unknown as ValueType;\n protected formatterGqlValue: (value: ValueType, injector?: Injector) => InputControlGqlValue = (\n _\n ) => undefined as InputControlGqlValue;\n\n private _required = false;\n private _disabled = false;\n private _isOuterUpdatingSavedValue = true;\n\n protected showedValue = '';\n\n protected readonly applied = computed(() => this.control.applied?.() ?? false);\n\n constructor(private _injector: Injector) {\n if (this._ngControl) {\n this._ngControl.valueAccessor = this;\n }\n }\n\n public get value(): ValueType | undefined {\n return this.control?.getRawValue();\n }\n\n public writeValue(value: ValueType): void {\n this._updateShowedValue(value);\n }\n\n public clear(): void {\n this.control.reset();\n this.control.markAsDirty();\n }\n\n public registerOnChange(onChange: (value: ValueType) => void): void {\n this.onChange = onChange;\n }\n\n protected onChange: (value: ValueType) => void = () => {};\n\n public registerOnTouched(onTouched: () => void): void {\n this.onTouched = onTouched;\n }\n\n protected onTouched = (): void => {};\n\n public ngOnInit(): void {\n this.onInit();\n }\n\n protected onInit(): void {}\n\n public ngAfterViewInit(): void {\n this.afterViewInit();\n }\n\n protected afterViewInit(): void {}\n\n protected get isInvalidAndNotPristine(): boolean {\n return this.control.invalid && !this.control.pristine;\n }\n\n protected isNotEmpty(): boolean {\n const v = this.value;\n\n return !(\n v === null ||\n v === undefined ||\n (typeof v === 'string' && v.trim() === '') ||\n (Array.isArray(v) && v.length === 0) ||\n (typeof v === 'object' && !Array.isArray(v) && Object.keys(v).length === 0)\n );\n }\n\n public ngAfterContentInit(): void {\n this.control =\n this._ngControl && (this._ngControl.control as IInputControl<ValueType, SavedValueType>);\n\n if (this.control) {\n if (this._required) {\n this._setControlRequired(this._required);\n }\n\n if (this._disabled) {\n this._setControlDisabled(this._disabled);\n }\n\n this._subscribeOnValue();\n this._subscribeOnSavedValue();\n }\n\n this.afterContentInit();\n }\n\n private _subscribeOnValue(): void {\n this.control.valueChanges\n .pipe(\n distinctUntilChangedJSONs(),\n tap((value) => this._updateSavedValue(value)),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((value) => {\n this.control.gql_value = this.formatterGqlValue(value, this._injector);\n this._updateShowedValue(value);\n\n if (this.isNotEmpty()) {\n this.control.applied?.set(false);\n }\n });\n }\n\n private _updateShowedValue(value: ValueType): void {\n this.showedValue = this.buildShowedValue()(value);\n this.cdr.markForCheck();\n }\n\n private _updateSavedValue(value: ValueType): void {\n this._isOuterUpdatingSavedValue = false;\n const savedValue = this.formatterSavedValue(value, this._injector);\n this.control.saved_value$?.next(savedValue);\n this._isOuterUpdatingSavedValue = true;\n }\n\n private _subscribeOnSavedValue(): void {\n this.control.saved_value$\n ?.pipe(\n skip(1), // при подписывании на saved_value$ первым приходит null - пропускаем\n filter(() => this._isOuterUpdatingSavedValue),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((savedValue) => {\n const value =\n savedValue === null ? null : this.parserSavedValue(savedValue, this._injector);\n this.control.setValue(value as ValueType);\n });\n }\n\n protected afterContentInit(): void {}\n\n private _setControlRequired(required: boolean): void {\n if (required) {\n this.control?.addValidators(Validators.required);\n } else {\n this.control?.removeValidators(Validators.required);\n }\n }\n\n private _setControlDisabled(disabled: boolean): void {\n if (disabled) {\n this.control?.disable();\n } else {\n this.control?.enable();\n }\n }\n}\n","import { Directive, Injector } from '@angular/core';\nimport { DateTimeService } from '../../services/date-time.service';\nimport { ParamBase } from './param-base';\nimport { PrizmDateTypes } from '../../utils/prizm.shared.module';\nimport { InputControlSaveValue } from '../../types';\nimport { EDatePattern, ETimezone } from '../../directives/date/date-time.types';\n\n@Directive()\nexport abstract class ParamDateBase<\n ValueType extends PrizmDateTypes | null,\n SavedValueType extends InputControlSaveValue,\n> extends ParamBase<ValueType, SavedValueType> {\n protected readonly ETimezone = ETimezone;\n protected readonly EDatePattern = EDatePattern;\n\n protected readonly _dts = this._dateInjector.get(DateTimeService);\n\n protected readonly timezoneChange = this._dts.isTimeZoneChanged$;\n\n constructor(private _dateInjector: Injector) {\n super(_dateInjector);\n }\n\n protected rebuildDateInNewTimezone(date: Date, prevDiff: string, currDiff: string): Date {\n const iso = this._dts.convertDateToISOWithTZ(date, prevDiff);\n const utc = new Date(iso).toISOString();\n\n return this._dts.isoToLocalDate(utc, currDiff);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Apollo } from 'apollo-angular';\nimport { DocumentNode } from 'graphql/language';\nimport gql from 'graphql-tag';\nimport { QueryOptions } from '@apollo/client/core';\nimport { map, Observable, of, take } from 'rxjs';\nimport { MetaQuery } from '../types/params.types';\n\n@Injectable()\nexport class FastQueryStore {\n private cachedTime = -12_345;\n private cachedVariables = '';\n private cachedData: { data: Record<string, any>[]; totalElements: number } = {\n data: [],\n totalElements: 0,\n };\n\n private readonly _apollo = inject(Apollo);\n\n public getResults(\n meta: MetaQuery,\n withoutAggregate?: boolean,\n selectedIdsWhere?: object\n ): Observable<{ data: Record<string, any>[]; totalElements: number; selectedIdsQuery?: any[] }> {\n const offset = meta.offset ?? 0;\n const { limit } = meta;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { order_by } = meta;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { distinct_on, where } = meta;\n let variables: Record<string, any> = { offset, limit, order_by, distinct_on };\n\n if (where) {\n variables = {\n ...variables,\n where,\n ...(selectedIdsWhere && { selectedIdsWhere }),\n };\n }\n\n const currentTime = Date.now();\n const diff = (currentTime - this.cachedTime) / 20_000;\n if (JSON.stringify(variables) === this.cachedVariables && diff <= 1) {\n return of(this.cachedData);\n }\n const query = this.generateGqlQuery(meta, withoutAggregate, !!where && !!selectedIdsWhere);\n const queryOptions: QueryOptions = {\n query,\n fetchPolicy: 'no-cache',\n variables,\n };\n\n return this._apollo.watchQuery<any>(queryOptions).valueChanges.pipe(\n take(1),\n map(({ data }) => {\n const { table } = meta;\n\n const totalElements = withoutAggregate\n ? data[table.name].length\n : data[`${table.name}_aggregate`].aggregate.count;\n const selectedIdsQuery = data?.selectedIdsQuery;\n const result = { data: data[table.name], totalElements, selectedIdsQuery };\n this.cachedVariables = JSON.stringify(variables);\n this.cachedData = result;\n this.cachedTime = Date.now();\n return result;\n })\n );\n }\n\n public generateGqlQuery(\n meta: MetaQuery,\n withoutAggregate?: boolean,\n withPickedSearch?: boolean\n ): DocumentNode {\n const data = this._buildDeepDataFromValue(meta.table.valueField);\n\n return gql`\n query queryFilter${meta.table.name}(\n $where: ${meta.table.name}_bool_exp\n $selectedIdsWhere: ${meta.table.name}_bool_exp\n $limit: Int\n $offset: Int\n $order_by: [${meta.table.name}_order_by!]\n $distinct_on: [${meta.table.name}_select_column!]\n ) {\n ${\n meta.table.name\n } (where: $where, limit: $limit, offset: $offset, order_by: $order_by, distinct_on: $distinct_on) {\n ${meta.table.idField}\n ${data}\n }\n\n ${\n withoutAggregate\n ? ''\n : `${meta.table.name}_aggregate (where: $where) {\n aggregate {\n count\n }\n }`\n }\n\n ${\n withPickedSearch\n ? `\n selectedIdsQuery: ${meta.table.name}(where: $selectedIdsWhere) {\n ${meta.table.idField}\n ${data}\n }\n `\n : ''\n }\n\n }\n `;\n }\n\n private _buildDeepDataFromValue(value: string): string {\n const resultArray = value.split(' ');\n const arr = [];\n for (const el of resultArray) {\n let result = '';\n const deepValues = el.split('.');\n for (let i = deepValues.length - 1; i > 0; i--) {\n result = `{${deepValues[i]} ${result}}`;\n }\n arr.push(deepValues[0] + result);\n }\n return arr.join(' ');\n }\n}\n","import { Directive, Injector, Input, output } from '@angular/core';\nimport { ParamBase } from './param-base';\nimport { BehaviorSubject } from 'rxjs';\nimport { PolymorphContent } from '@prizm-ui/components';\nimport { InputControlSaveValue } from '../../types';\nimport { InferArrayType } from '../../types/sub-types';\nimport { MetaQuery } from '../../types/params.types';\nimport { FastQueryStore } from '../../store/fast-query-store.service';\n\n@Directive()\nexport abstract class ParamSelectBase<\n ValueType,\n SavedValueType extends InputControlSaveValue,\n> extends ParamBase<ValueType, SavedValueType> {\n @Input() items: NonNullable<InferArrayType<ValueType>>[] = [];\n @Input() searchable: boolean = false;\n @Input() maxDropdownHeight = 342;\n @Input() valueTemplate?: PolymorphContent;\n @Input() listItemTemplate?: PolymorphContent;\n @Input() nullContent: PolymorphContent | string | null = 'Не выбрано';\n /** Массив полей по которым будет производиться фильтрация _or */\n @Input() searchSubfields: string[] = [];\n /** Флаг строгого поиска: строгий - _eq, не строгий - _ilike */\n @Input() strictSearch = false;\n @Input() selectClasses?: string;\n @Input() limit = 50;\n /** форматтер для задания кастомного отображения значения в поле */\n @Input() formatShowedValue: (value: any, field: string) => string = (value, field) =>\n value[field];\n /** мета для автоматической подргузки значений из таблицы */\n @Input() set meta(meta: MetaQuery | null) {\n if (JSON.stringify(meta) !== JSON.stringify(this.meta)) {\n this._meta$.next(meta);\n }\n }\n public get meta(): MetaQuery | null {\n return this._meta$.getValue();\n }\n\n public itemsChange = output<NonNullable<InferArrayType<ValueType>>[]>();\n\n private readonly _meta$ = new BehaviorSubject<MetaQuery | null>(null);\n\n protected readonly meta$ = this._meta$.asObservable();\n\n protected readonly store = this._selectInjector.get(FastQueryStore);\n\n public loading = false;\n\n constructor(private _selectInjector: Injector) {\n super(_selectInjector);\n }\n\n protected buildWhere(searchValue?: string): object | undefined {\n const paramWhere = this.meta?.where;\n const { valueField } = this.metaFields;\n\n // Создаем массив условий _ilike для дополнительных полей\n const ilikeConditions = [];\n\n if (searchValue) {\n if (this.searchSubfields) {\n ilikeConditions.push(\n ...this.searchSubfields.map((field) =>\n this.buildNestedCondition(field, searchValue, false)\n )\n );\n }\n\n if (valueField) {\n ilikeConditions.push(this.buildNestedCondition(valueField, searchValue, this.strictSearch));\n }\n }\n\n // Если параметр where не задан, но есть значение для поиска и поле valueField, возвращаем только условия _ilike\n if (!paramWhere && ilikeConditions.length > 0) {\n return { _or: ilikeConditions };\n }\n\n // Если параметр where задан, добавляем условия _ilike к существующим условиям\n if (paramWhere) {\n return {\n ...(paramWhere as object),\n _or: ilikeConditions.length === 0 ? undefined : ilikeConditions,\n };\n }\n\n // Если ничего не задано, возвращаем undefined\n return;\n }\n\n protected buildNestedCondition(field: string, value: string, strict: boolean): object {\n const parts = field.split('.');\n const current = {};\n let temp: any = current;\n\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i];\n temp[part] = {};\n temp = temp[part];\n }\n\n const lastPart = parts[parts.length - 1];\n temp[lastPart] = strict ? { _eq: value } : { _ilike: `%${value}%` };\n\n return current;\n }\n\n protected get metaFields(): { idField: string | null; valueField: string | null } {\n const idField = this.meta?.table.idField ?? null;\n const valueField = this.meta?.table.valueField.split(' ')[0] ?? null;\n\n return {\n idField,\n valueField,\n };\n }\n}\n","import { Directive, inject, input } from '@angular/core';\nimport { ParamBase } from './param-base';\nimport { MAX_LENGTH_TEXT_PARAMS } from './param.tokens';\n\nconst DEFAULT_MAX_LENGTH = 1000;\n\n@Directive()\nexport abstract class ParamTextBase extends ParamBase<string | null, string | null> {\n private readonly _initMaxLength =\n inject(MAX_LENGTH_TEXT_PARAMS, { optional: true }) ?? DEFAULT_MAX_LENGTH;\n\n public override placeholder = input('Введите значение');\n public override buildShowedValue = input(\n (value: string | null): string => value?.toString() ?? '-'\n );\n\n /**\n * Максимальное кол-во символов\n *\n * @default 1000\n * */\n public maxLength = input(this._initMaxLength);\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { PrizmTableCellSorter } from '@prizm-ui/components';\nimport { Apollo, MutationResult } from 'apollo-angular';\nimport { Observable, ReplaySubject, Subscription } from 'rxjs';\nimport { IHasuraQueryFilter } from '../../components/register-table/model/schema';\nimport { GqlFields } from '../../types/inputs.types';\nimport { IBaseRegisterStore, IBaseRegisterStoreState } from '../../types/register-base.types';\nimport { HasuraError } from '../../types/hasura.types';\n\n@Injectable()\nexport abstract class RegisterBaseStore<\n Type extends Record<string, any>,\n State extends IBaseRegisterStoreState<Type> = IBaseRegisterStoreState<Type>,\n >\n extends ComponentStore<State>\n implements IBaseRegisterStore<Type>\n{\n protected apollo = inject(Apollo);\n\n readonly error = (e: HasuraError): void => {\n console.error(e);\n this.setLoading(false);\n };\n\n public getBaseFilter(params?: any): Record<string, any> {\n return {} as Record<string, any>;\n }\n\n readonly mutationCompleted$ = new ReplaySubject<boolean>();\n readonly loading$ = this.select((state) => state.loading);\n readonly count$ = this.select((state) => state.count);\n readonly total$ = this.select((state) => state.total);\n\n readonly objects$ = this.select((state) => state.objects);\n readonly setObjects = this.updater(\n (store, objects: Type[]): State => ({\n ...store,\n loading: false,\n objects,\n })\n );\n\n readonly setLoading = this.updater((store, loading: boolean): State => ({ ...store, loading }));\n readonly setCount = this.updater(\n (store, count: number): State => ({\n ...store,\n count,\n })\n );\n\n readonly setTotal = this.updater(\n (state, total: number): State => ({\n ...state,\n total,\n })\n );\n\n abstract readonly deleteByIds: (\n ids: string[],\n ...args: unknown[]\n ) => Observable<MutationResult<Type[]> | null>;\n abstract readonly fetchTotal: (\n observableOrValue: Record<string, any> | Observable<Record<string, any>>\n ) => Subscription;\n abstract readonly fetchObjects: (\n observableOrValue:\n | {\n filter: IHasuraQueryFilter<Type>;\n callback?: (data: Type[]) => void;\n }\n | Observable<{\n filter: IHasuraQueryFilter<Type>;\n callback?: (data: Type[]) => void;\n }>\n ) => Subscription;\n\n abstract buildFilter(\n limit: number | undefined,\n offset: number | undefined,\n gqlFilter: GqlFields | undefined,\n sorter?: PrizmTableCellSorter<Type>[]\n ): IHasuraQueryFilter<Type>;\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n inject,\n Injector,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n debounceTime,\n filter as rxjsFilter,\n map,\n Observable,\n ReplaySubject,\n Subscription,\n switchMap,\n take,\n tap,\n throwError,\n} from 'rxjs';\nimport {\n ERegisterObjectState,\n IRegisterBase,\n IRegisterObject,\n ITpUserSettings,\n ITpUserSettingsSettingsFilter,\n ObjectsSubscriptionConfig,\n IUserProfile,\n EInputsAction,\n EInputsState,\n GqlField,\n GqlFields,\n} from '../../types';\nimport {\n EColumnStatus,\n IColumnSettings,\n IColumnSettingsChanges,\n} from '../../components/column-settings/types/column-settings.types';\nimport {\n IColumnData,\n IHasuraQueryFilter,\n RegisterTableCellSorter,\n ThWidthEntry,\n} from '../../components';\nimport {\n ApplySelectionTypes,\n SelectionTypes,\n} from '../../components/checkbox-selector/checkbox-selector.types';\nimport {\n FiltersStateService,\n FiltersService,\n FiltersTransmitService,\n SelectedObjectsStateService,\n} from '../../services';\nimport {\n SEARCH_INPUT_DEBOUNCE_TIME_MLS,\n SETTINGS_TYPE,\n USER_PROFILE_LOADER,\n USER_SETTINGS_LOADER,\n} from '../../consts/register-base.consts';\nimport { getLastSegmentOfPathName, isNonNull } from '../../utils';\nimport { FormGroupWrapper } from '../form-group-wrapper';\nimport { DEFAULT_LIMIT } from '../../services/inputs-state.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport _ from 'lodash';\nimport { ScalarUUID } from 'hasura';\nimport { RegisterBaseStore } from './register-base.store';\n\n@Directive()\nexport abstract class RegisterBase<T extends IRegisterBase, Form = any>\n implements OnInit, AfterViewInit, OnDestroy\n{\n /** Сервисы управления фильтрами */\n protected readonly filtersService = inject(FiltersService);\n protected readonly stateService = inject(FiltersStateService);\n protected readonly transmitter = inject(FiltersTransmitService, { optional: true });\n /** Сервис управления пользователем */\n protected readonly userService = inject(USER_PROFILE_LOADER);\n /** Сервис управления данными в реестре */\n protected readonly baseStore = inject(RegisterBaseStore<T>, { optional: true });\n // TODO удалить optional: true после выполнения задачи SMA2-3134\n protected readonly selectedService = inject(SelectedObjectsStateService<T>, {\n optional: true,\n });\n // TODO protected readonly navigationService = inject(NavigationService);\n protected readonly router = inject(Router);\n protected readonly cdr = inject(ChangeDetectorRef);\n protected readonly destroyRef = inject(DestroyRef);\n\n private readonly settingsService = inject(USER_SETTINGS_LOADER);\n\n public readonly filterApplied$: Observable<boolean> = this.stateService.gqlValues$.pipe(\n map((filter) => Number(filter.length) > 0)\n );\n public readonly page$ = this.stateService.page$;\n public readonly limit$ = this.stateService.limit$;\n public readonly selectedRecordsLoading$ = new BehaviorSubject(false);\n\n public columnsData: IColumnData[];\n public columns: string[];\n public data: T[] = [];\n public visibleData: T[] = [];\n public dataCount = 0;\n /** @deprecated Используйте selectedObjectsFromState */\n public selectedObjects = new Set<any>();\n /** @deprecated Используйте selectedIdsFromState */\n public selectedIds = new Set<ScalarUUID>();\n public _user = this.userService.getUserProfile();\n public stickyLeftIds: string[] = [];\n public stickyRightIds: string[] = [];\n public currentFilter: IHasuraQueryFilter<T> | null = null;\n /**\n * Форма фильтров\n */\n protected filtersForm!: FormGroupWrapper<Form>;\n protected filterState: ITpUserSettingsSettingsFilter[] = [];\n\n private _limit!: number;\n private _offset!: number;\n private _filterState!: GqlFields;\n private _modulePath = getLastSegmentOfPathName(this.router.url);\n private _defaultFilterApplied$ = new ReplaySubject<boolean>();\n /**\n * Всего записей, без учета фильтра\n */\n public abstract totalNotFiltered$: Observable<number>;\n /**\n * Маршруты для бредкрамба\n */\n public abstract routes: any[];\n /**\n * Контрол строки поиска\n */\n public searchInput = this.filtersService.searchInput!;\n /**\n * Действие завершено\n */\n public abstract actionCompleted$: ReplaySubject<boolean>;\n /**\n * Получение общего количества записей\n */\n public abstract fetchTotalObjects: (\n observableOrValue: Record<string, any> | Observable<Record<string, any>>\n ) => Subscription;\n /**\n * Запрос на количество отфильтрованных записей\n */\n public fetchTotalFilteredObjects:\n | ((observableOrValue: Record<string, any> | Observable<Record<string, any>>) => Subscription)\n | undefined;\n /**\n * Подписка на получение всех объектов и с обратным вызовом\n */\n public abstract objectsSubscription: (\n observableOrValue: ObjectsSubscriptionConfig<T> | Observable<ObjectsSubscriptionConfig<T>>\n ) => Subscription;\n /**\n * Базовый фильтр, по умолчанию\n */\n public abstract baseFilter: (user: IUserProfile | undefined) => Record<string, any>;\n\n /**\n * Сборка фильтра\n */\n public abstract buildFilter(\n limit?: number,\n offset?: number,\n gqlFilter?: GqlFields,\n sorter?: RegisterTableCellSorter<T>[]\n ): any;\n\n /**\n * Сборка фильтров реестра\n */\n protected abstract get buildForm(): FormGroupWrapper<Form>;\n\n public get limit(): number {\n return this._limit;\n }\n\n public get offset(): number {\n return this._offset;\n }\n\n /** Uuid'ы всех выбранных или исключаемых объектов реестра (зависит от состояния еще не загруженных объектов) */\n public get idsFromState(): Set<ScalarUUID> {\n const service: SelectedObjectsStateService<T> | null = this.selectedService;\n\n if (!service) {\n throw new Error('SelectedObjectsStateService не запровайжен');\n }\n\n return service.keys();\n }\n\n /** Все выбранные uuid'ы реестра */\n public get selectedIdsFromState(): Set<ScalarUUID> {\n const service: SelectedObjectsStateService<T> | null = this.selectedService;\n\n if (!service) {\n throw new Error('SelectedObjectsStateService не запровайжен');\n }\n\n return service.selectedKeys();\n }\n\n /** Все выбранные объекты реестра */\n public get selectedObjectsFromState(): Set<T> {\n const service: SelectedObjectsStateService<T> | null = this.selectedService;\n\n if (!service) {\n throw new Error('SelectedObjectsStateService не запровайжен');\n }\n\n return service.selectedValues();\n }\n\n private _columnsSettings: ITpUserSettings | undefined;\n private _pageRowsLimitSetting: ITpUserSettings | undefined;\n\n private readonly _defaultColumnsWidths: Map<string, string | undefined>;\n\n private readonly _selectionType$ =\n this.selectedService?.selectionType$ ?? new BehaviorSubject<ApplySelectionTypes>(null);\n\n public readonly stateObjects = this.selectedService?.state;\n\n protected constructor(\n protected readonly injector: Injector,\n columnsData: IColumnData[]\n ) {\n this.columnsData = columnsData;\n this._defaultColumnsWidths = new Map(columnsData.map((col) => [col.name, col.width]));\n this.columns = this._getDefaultColumnsRecursive(columnsData);\n this._subscribeOnSettings();\n this._fetchSavedPageRowsLimit();\n const state = this.router.getCurrentNavigation()?.extras?.state;\n if (state) {\n this.filterState = this.parseToFilters(state);\n }\n }\n\n private _subscribeOnSettings(): void {\n this.settingsService.settings$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(([userSetting]) => {\n const { tableColumnsWidth } = userSetting?.settings ?? {};\n const type = userSetting?.settings_type;\n\n if (type && type !== SETTINGS_TYPE.COLUMNS) {\n return;\n }\n\n const cleanedCurrent = this._omitUndefined(\n this._columnsSettings?.settings.tableColumnsWidth\n );\n const cleanedNew = this._omitUndefined(tableColumnsWidth);\n\n if (!_.isEqual(cleanedCurrent, cleanedNew)) {\n this._setColumnsWidth(tableColumnsWidth);\n }\n\n this._columnsSettings = userSetting;\n });\n }\n\n private _omitUndefined(arr: ThWidthEntry[] | undefined) {\n return _.map(arr ?? [], (obj) => _.omitBy(obj, _.isUndefined));\n }\n\n private _setColumnsWidth(columnsWidth: ThWidthEntry[] | undefined): void {\n const thsWidthMap = new Map(columnsWidth?.map(({ name, width }) => [name, width]));\n\n this.columnsData = this.columnsData.map((col) => {\n const defaultWidth = this._defaultColumnsWidths.get(col.name)!;\n const currentWidth = thsWidthMap.has(col.name) ? thsWidthMap.get(col.name) : null;\n\n const width = currentWidth === null ? defaultWidth : currentWidth;\n\n return {\n ...col,\n width,\n };\n });\n }\n\n private _fetchSavedPageRowsLimit(): void {\n this.settingsService\n .fetchUserSettings$(\n {\n id_user: {\n _eq: this._user.id,\n },\n settings_type: {\n _eq: SETTINGS_TYPE.REGISTER_PAGE_ROWS_LIMIT,\n },\n module_name: {\n _eq: this._modulePath,\n },\n },\n true\n )\n .subscribe(([firstSetting]) => {\n this._pageRowsLimitSetting = firstSetting;\n const { pageRowsLimit } = firstSetting?.settings ?? {};\n\n this.stateService.setLimit(pageRowsLimit ?? DEFAULT_LIMIT);\n });\n }\n\n public ngOnInit(): void {\n this.filtersForm = this.buildForm;\n this.filtersService.init(this.filtersForm);\n this.stateService.setState({ state: EInputsState.HIDDEN, action: EInputsAction.OPEN });\n\n this.fetchTotalObjects(this.baseFilter(this._user));\n this._subscribeOnMutationCompleted();\n this.subscribeOnPaging();\n\n // TODO проверить нужна ли Перезагрузка страницы\n // if (this.navigationService.previousUrl === null) {\n // this.stateService.setOffset(0);\n // this.stateService.setPage(1);\n // }\n\n this.baseStore?.count$?.subscribe((count) => {\n this.dataCount = count;\n this.stateService.setCount(count);\n });\n }\n\n public ngAfterViewInit(searchLimiter = 2): void {\n this._setFilters();\n this.subscribeOnSearchChanges(searchLimiter);\n }\n\n private _setFilters(): void {\n const queryFilters = this.transmitter?.filters;\n const querySearch = this.transmitter?.search;\n let filters: ITpUserSettingsSettingsFilter[] | undefined;\n\n if (querySearch) {\n this.searchInput.setValue(querySearch);\n }\n\n if (!queryFilters || queryFilters.length > 0) {\n filters = queryFilters || [];\n }\n\n this.applyBaseFilter();\n this._initDefaultFilter(filters);\n }\n\n protected applyBaseFilter(_data?: any): void {}\n\n public ngOnDestroy(): void {\n this.actionCompleted$.complete();\n this.selectedRecordsLoading$.complete();\n this.filtersService.clear();\n this.stateService.setOffset(0);\n this.stateService.setGqlValues({});\n\n if (this.searchInput?.value) {\n this.stateService.setSearchFilterValue('');\n this.stateService.setGqlValues(this.filtersService.gqlFilter);\n }\n }\n\n protected applyFilters(filters: ITpUserSettingsSettingsFilter[]): void {\n this.filtersService.setUserSettingsFilterValues(filters);\n this.stateService.setGqlValues(this.filtersService.gqlFilter);\n }\n\n protected setData(data: T[], count?: number): void {\n this.data = data;\n\n if (count !== undefined) {\n this.dataCount = count;\n this.stateService.setCount(count);\n }\n\n this.cdr.markForCheck();\n }\n\n protected updateAllStateObjectsByState(state: ERegisterObjectState): void {\n this.selectedService?.setAllStateObjectsByState(state);\n }\n\n protected updateStateObjectByKey(key: ScalarUUID, updates: Partial<IRegisterObject<T>>): void {\n this.selectedService?.setStateObjectByKey(key, updates);\n }\n\n protected clearSelections(data?: T[]): void {\n this.selectedIds.clear();\n this.selectedObjects.clear();\n\n if (this.selectedService) {\n this.selectedService?.resetState(data);\n this.buildActions({\n row: [],\n count: 0,\n });\n }\n }\n\n protected actionCompleted(): void {\n const filter = this.buildFilter(this.limit, this.offset, this._filterState);\n this.currentFilter = filter;\n\n this.clearSelections();\n this.objectsSubscription({ filter });\n }\n\n protected buildActions(_data: { row: T[]; count: number }): void {}\n\n protected subscribeOnSearchChanges(limiter: number): void {\n this.searchInput?.valueChanges\n .pipe(\n rxjsFilter((value) => !value || value.length > limiter),\n debounceTime(SEARCH_INPUT_DEBOUNCE_TIME_MLS),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.stateService.setGqlValues(this.filtersService.gqlFilter);\n });\n }\n\n public updateRegister(): void {\n this.stateService.setLimit(this.stateService.limit);\n }\n\n public subscribeOnPaging(): void {\n this._defaultFilterApplied$\n .pipe(\n take(1),\n switchMap(() =>\n combineLatest([\n this.stateService.limit$.pipe(rxjsFilter(isNonNull)),\n this.stateService.offset$,\n this.stateService.gqlValues$.pipe(\n tap((data) => {\n if (Number(data.length) > 0) {\n this.selectChanged(null);\n }\n })\n ),\n this.stateService.sorter$,\n ]).pipe(debounceTime(250))\n ),\n catchError((e) => {\n console.error('pagination', e);\n\n return throwError(() => new Error(e));\n }),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(([limit, offset, gqlFilter, sorter]) => {\n const filter = this.buildFilter(limit, offset, gqlFilter, sorter);\n const gqlFilterUpdated = !_.isEqual(this._filterState, gqlFilter);\n this.currentFilter = filter;\n this._filterState = gqlFilter;\n this._limit = limit;\n this._offset = offset;\n if (this.stateObjects) {\n if (gqlFilterUpdated) {\n this.selectedService?.resetState();\n }\n\n this.objectsSubscription({ filter, callback: this._setStateObjects.bind(this) });\n } else {\n this.objectsSubscription({ filter });\n }\n this.fetchTotalFilteredObjects?.(filter.where);\n });\n }\n\n private _setStateObjects(data: T[]): void {\n this.selectedService?.loadStateObjects(data);\n }\n\n public selectChanged(value: ApplySelectionTypes): void {\n this._selectionType$.next(value);\n\n const stateObjects = this.stateObjects;\n\n if (stateObjects) {\n this._changeStateObjects(stateObjects(), value);\n\n return;\n }\n\n const filter = this._selectChangedFilter(value);\n this.currentFilter = filter;\n\n this.buildActions({\n row: [...(this.selectedObjects ?? [])],\n count: this.selectedObjects ? this.selectedObjects.size : 0,\n });\n\n if (!filter) {\n return;\n }\n\n this.selectedRecordsLoading$.next(true);\n this.objectsSubscription({\n filter,\n callback: this._setSelected.bind(this),\n });\n }\n\n private _changeStateObjects(\n stateObjects: Map<ScalarUUID, IRegisterObject<T>>,\n value: ApplySelectionTypes\n ): void {\n if (value === SelectionTypes.ALL) {\n this.updateAllStateObjectsByState(ERegisterObjectState.SELECTED);\n } else if (value === SelectionTypes.INVERSE) {\n this._inverseStateObjects(stateObjects);\n } else if (value === SelectionTypes.VISIBLE) {\n this._selectVisibleStateObjects();\n } else if (typeof value === 'number') {\n this._selectFirstNStateObjects(value);\n } else {\n this.clearSelections(this.data);\n }\n\n this.buildActions({\n row: [...this.selectedObjectsFromState],\n count: this.selectedObjectsFromState.size,\n });\n }\n\n private _inverseStateObjects(stateObjects: Map<ScalarUUID, IRegisterObject<T>>): void {\n for (const [key, { state }] of stateObjects) {\n const inverseState =\n state === ERegisterObjectState.SELECTED\n ? ERegisterObjectState.UNSELECTED\n : ERegisterObjectState.SELECTED;\n\n this.updateStateObjectByKey(key, { state: inverseState });\n }\n }\n\n private _selectVisibleStateObjects(): void {\n this.updateAllStateObjectsByState(ERegisterObjectState.UNSELECTED);\n for (const visibleObject of this.visibleData) {\n this.updateStateObjectByKey(visibleObject.id, { state: ERegisterObjectState.SELECTED });\n }\n }\n\n private _selectFirstNStateObjects(value: number): void {\n this.updateAllStateObjectsByState(ERegisterObjectState.UNSELECTED);\n\n if (value > this.limit) {\n const { sorter } = this.stateService;\n const filter = this.buildFilter(\n value,\n this.offset,\n this._filterState,\n sorter.length > 0 ? sorter : undefined\n );\n this.objectsSubscription({\n filter,\n callback: this._selectFirstNLoadingObjects.bind(this),\n noSet: true,\n });\n } else {\n const firstNObjects = this.data.slice(0, value);\n this._selectFirstNLoadingObjects(firstNObjects);\n }\n }\n\n private _selectFirstNLoadingObjects(objects: T[]): void {\n for (const object of objects) {\n this.updateStateObjectByKey(object.id, { state: ERegisterObjectState.SELECTED, object });\n }\n }\n\n public filterToggle(): void {\n this.stateService.toggle();\n }\n\n public onPaginatorChange(paginatorChange: {\n first: number;\n page: number;\n pagesCount: number | null;\n rows: number;\n }): void {\n const { rows, first, page } = paginatorChange;\n\n if (this.stateService.limit !== rows) {\n this.stateService.setLimit(rows);\n this._savePageRowsLimit(rows);\n }\n\n if (this.stateService.offset !== first - 1) {\n this.stateService.setOffset(first - 1);\n }\n\n if (this.stateService.page !== page) {\n this.stateService.setPage(page);\n }\n }\n\n private _savePageRowsLimit(pageRowsLimit: number): void {\n this.settingsService\n .upsertReturningOne$(SETTINGS_TYPE.REGISTER_PAGE_ROWS_LIMIT)\n .subscribe((setting) => {\n this._pageRowsLimitSetting = setting || undefined;\n });\n this.settingsService.upsertUserSettingsByUserId({\n settings: {\n id: this._pageRowsLimitSetting?.id,\n settings_type: SETTINGS_TYPE.REGISTER_PAGE_ROWS_LIMIT,\n module_name: this._modulePath,\n settings: { pageRowsLimit },\n },\n hidden: true,\n });\n }\n\n public updateColumnSettings({ settings }: IColumnSettingsChanges): void {\n if (settings) {\n this.stickyLeftIds = this._getColumnIdsRecursive(settings.stickyLeft);\n this.stickyRightIds = this._getColumnIdsRecursive(\n settings.stickyRight,\n (el) => el.status === EColumnStatus.DEFAULT\n );\n this.columns = [\n ...this.stickyLeftIds,\n ...this._getColumnIdsRecursive(\n settings.columns,\n (el) => el.status === EColumnStatus.DEFAULT\n ),\n ...this.stickyRightIds,\n ];\n }\n\n this.cdr.markForCheck();\n }\n\n private _getColumnIdsRecursive(\n columns: IColumnSettings[],\n predicate?: (value: IColumnSettings, index: number, array: IColumnSettings[]) => unknown\n ): string[] {\n const filteredColumns = predicate\n ? columns.filter((col, index, array) => predicate(col, index, array))\n : columns;\n\n return filteredColumns.flatMap((column) => {\n const { id, children } = column;\n\n if (children) {\n return [id, ...this._getColumnIdsRecursive(children, predicate)];\n }\n\n return [id];\n });\n }\n\n public updateSort(sort: RegisterTableCellSorter<any>[]): void {\n this.stateService.setSorter(sort);\n }\n\n protected saveThsWidthToUserSettings(tableColumnsWidth: ThWidthEntry[]): void {\n const settings = this._columnsSettings;\n if (settings) {\n settings.settings.tableColumnsWidth = tableColumnsWidth;\n }\n\n this.settingsService.upsertUserSettingsByUserId({\n settings: {\n id: this._columnsSettings?.id,\n settings_type: SETTINGS_TYPE.COLUMNS,\n module_name: this._modulePath,\n settings: { ...this._columnsSettings?.settings, tableColumnsWidth },\n },\n hidden: true,\n updateSettings: true,\n });\n }\n\n protected get filtersAreOpened(): boolean {\n return this.stateService.state.state !== EInputsState.HIDDEN;\n }\n\n private _subscribeOnMutationCompleted(): void {\n this.actionCompleted$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.actionCompleted());\n }\n\n private _initDefaultFilter(queryFilters: ITpUserSettingsSettingsFilter[] | undefined): void {\n this.settingsService\n .fetchUserSettings$({\n id_user: {\n _eq: this._user.id,\n },\n settings_type: {\n _in: [SETTINGS_TYPE.FILTER, SETTINGS_TYPE.REGISTER_PINNED_INPUTS],\n },\n module_name: {\n _eq: this._modulePath,\n },\n })\n .pipe(take(1))\n .subscribe((userSettings) => {\n const pinnedFilter = userSettings.find(\n ({ settings_type: type }) => type === SETTINGS_TYPE.REGISTER_PINNED_INPUTS\n );\n const isPinned = !!pinnedFilter?.settings.pinned;\n const favoriteFilter = userSettings.find(({ settings }) => settings.favorite);\n\n if (isPinned) {\n this.stateService.setPin(true);\n this.stateService.setState({\n state: EInputsState.FILTER_LIST,\n action: EInputsAction.APPLY_SAVED_FILTER,\n });\n }\n\n if (queryFilters || this.searchInput?.getRawValue()) {\n this.applyFilters(queryFilters ?? []);\n } else if (pinnedFilter && isPinned) {\n this._applyFilterSettings(pinnedFilter);\n } else if (favoriteFilter) {\n this._applyFilterSettings(favoriteFilter);\n }\n\n this._defaultFilterApplied$.next(true);\n });\n }\n\n private _applyFilterSettings(settings: ITpUserSettings): void {\n this.filtersService.setUserSettingsFilterValues(settings.settings.filter ?? []);\n const { gqlFilter } = this.filtersService;\n this.stateService.setGqlValues(gqlFilter);\n this.stateService.setState({\n state: EInputsState.HIDDEN,\n action: EInputsAction.APPLY_SAVED_FILTER,\n });\n }\n\n private _selectChangedFilter(selection: ApplySelectionTypes): any {\n let filter = null;\n\n if (selection === null) {\n this.clearSelections();\n return;\n }\n\n if (selection === SelectionTypes.ALL || typeof selection === 'number') {\n filter = this._handleAllOrNumberSelection(selection);\n } else if (selection === SelectionTypes.VISIBLE) {\n this._selectVisibleItems();\n } else if (selection === SelectionTypes.INVERSE) {\n filter = this._handleInverseSelection();\n }\n\n return filter;\n }\n\n private _handleAllOrNumberSelection(selection: ApplySelectionTypes): any {\n let filter = null;\n const { sorter } = this.stateService;\n\n if (selection === SelectionTypes.ALL) {\n filter = this.buildFilter(undefined, undefined, this._filterState);\n } else if (typeof selection === 'number') {\n if (selection > this.limit) {\n filter = this.buildFilter(\n selection,\n 0,\n this._filterState,\n sorter.length > 0 ? sorter : undefined\n );\n } else {\n this._selectFirstNItems(selection);\n }\n }\n\n return filter;\n }\n\n private _selectFirstNItems(count: number): void {\n this.selectedObjects = new Set(this.data.slice(0, count));\n this.selectedIds = new Set(this.data.map((d) => d.id).slice(0, count));\n }\n\n private _selectVisibleItems(): void {\n this.selectedObjects = new Set(this.visibleData);\n this.selectedIds = new Set(this.visibleData.map((d) => d.id));\n }\n\n private _handleInverseSelection(): any {\n const inverseFilter = { id: { _nin: [...this.selectedIds] } } as GqlField;\n const updatedFilterState = Array.isArray(this._filterState)\n ? [...this._filterState, inverseFilter]\n : [this._filterState, inverseFilter];\n\n return this.buildFilter(undefined, undefined, updatedFilterState);\n }\n\n private _setSelected(data: T[]): void {\n this.selectedObjects = new Set(data);\n this.selectedIds = new Set(data.map((d) => d.id));\n this.selectedRecordsLoading$.next(false);\n }\n\n protected parseToFilters(input: { [key: string]: any }): ITpUserSettingsSettingsFilter[] {\n return Object.entries(input).map(([key, value]) => ({\n id: key,\n value,\n }));\n }\n\n protected get selectedCount(): number {\n const selectedSize = this.selectedService?.selectedValues()?.size ?? null;\n const unselectedSize = this.selectedService?.unselectedValues()?.size ?? 0;\n const unfetchedObjects = this.selectedService?.stateUnfetchedObjects();\n const isNotSelected = unfetchedObjects !== ERegisterObjectState.SELECTED;\n\n if (selectedSize === null) {\n return this.selectedIds.size;\n }\n\n return isNotSelected ? selectedSize : this.dataCount - unselectedSize;\n }\n\n private _getDefaultColumnsRecursive(columnsData: IColumnData[]): string[] {\n return columnsData.flatMap((column) => {\n const { name, children } = column;\n\n if (children) {\n return [name, ...this._getDefaultColumnsRecursive(children)];\n }\n\n return [name];\n });\n }\n\n protected get notAllFetched(): boolean {\n const unfetchedState = this.selectedService!.stateUnfetchedObjects();\n const allFetched = this.stateObjects!().size === this.dataCount;\n\n return unfetchedState === ERegisterObjectState.SELECTED && !allFetched;\n }\n}\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { FiltersStateService } from '../../../../../services';\n\n@Component({\n selector: 'sproc-filter-edit',\n templateUrl: './filter-edit.component.html',\n styleUrls: ['./filter-edit.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterEditComponent implements OnInit, OnDestroy {\n public readonly valueControl: FormControl<string | null> = new FormControl<string | null>('');\n private subscription: Subscription | null = null;\n\n constructor(private readonly _filterStateService: FiltersStateService<any>) {}\n\n public ngOnInit(): void {\n const name = this._filterStateService.getSelectedSavedFilter()?.name ?? '';\n\n this.valueControl.setValue(name);\n this._filterStateService.setName(name);\n this.subscription = this.valueControl.valueChanges.subscribe((value) => {\n this._filterStateService.setName(value ?? '');\n });\n }\n\n public ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","<div class=\"input-wrapper\">\n <prizm-input-layout [clearButton]=\"clearButtonTemplate\" size=\"s\">\n <input [formControl]=\"valueControl\" placeholder=\"Введите название фильтра\" prizmInput />\n </prizm-input-layout>\n</div>\n\n<ng-template\n #clearButtonTemplate\n let-showStatusButton=\"showStatusButton\"\n let-disabled=\"disabled\"\n let-clear=\"clear\"\n>\n <button\n class=\"{{ showStatusButton ? '' : 'alone' }}\"\n [interactive]=\"true\"\n [disabled]=\"disabled\"\n [prizmHint]=\"'Нажмите для очистки'\"\n [prizmHintTheme]=\"'light'\"\n [prizmInputIconButton]=\"'cancel-delete-content'\"\n (click)=\"clear($event)\"\n ></button>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { map, Subscription } from 'rxjs';\nimport { SETTINGS_TYPE, USER_PROFILE_LOADER, USER_SETTINGS_LOADER } from '../../../../../consts';\nimport { EInputsAction, EInputsState, ITpUserSettings } from '../../../../../types';\nimport { FiltersStateService } from '../../../../../services';\nimport { getLastSegmentOfPathName } from '../../../../../utils/get-url-segment';\n\ninterface IFilterSavedItem {\n id: string;\n user_id: string;\n name: string;\n favorite: boolean;\n selected: boolean;\n filter: Record<string, any>;\n settingType: SETTINGS_TYPE;\n sourceSettings: ITpUserSettings;\n}\n\n@Component({\n selector: 'sproc-filter-list-saved',\n templateUrl: './filter-list-saved.component.html',\n styleUrls: ['./filter-list-saved.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterListSavedComponent implements OnInit, OnDestroy {\n public savedItems: IFilterSavedItem[] = [];\n\n private filterStateSubscription: Subscription | null = null;\n private savedFiltersSubscription: Subscription | null = null;\n private selectedFilter: ITpUserSettings | null = null;\n private modulePath?: string;\n\n private readonly _userSettingsStore = inject(USER_SETTINGS_LOADER);\n private readonly _userProfileService = inject(USER_PROFILE_LOADER);\n\n public readonly loading$ = this._userSettingsStore.loading$;\n\n constructor(\n private readonly _router: Router,\n private readonly _filterStateService: FiltersStateService<any>,\n private readonly _cdr: ChangeDetectorRef\n ) {}\n\n public ngOnInit(): void {\n this.modulePath = getLastSegmentOfPathName(this._router.url);\n this.subscribeOnSettings();\n this.subscribeOnFilterState();\n }\n\n public ngOnDestroy(): void {\n this.filterStateSubscription?.unsubscribe();\n this.savedFiltersSubscription?.unsubscribe();\n }\n\n private subscribeOnFilterState(): void {\n this.filterStateSubscription = this._filterStateService.state$.subscribe((state) => {\n if (state.state === EInputsState.SAVED_LIST) {\n this._userSettingsStore.fetchUserSettingsByUserId({\n userId: this._userProfileService.getUserProfile().id,\n settingsType: SETTINGS_TYPE.FILTER,\n moduleName: this.modulePath!,\n });\n }\n });\n }\n\n private subscribeOnSettings(): void {\n this.savedFiltersSubscription = this._userSettingsStore.settings$\n .pipe(\n map((filters) =>\n filters.map((filter) => ({\n id: filter.id,\n user_id: filter.id_user,\n name: filter.name,\n selected: false,\n favorite: filter.settings.favorite!,\n filter: filter.settings.filter!,\n settingType: filter.settings_type,\n sourceSettings: filter,\n }))\n )\n )\n .subscribe((values) => {\n this.savedItems = values.filter(\n (value) => value.settingType === undefined || value.settingType === SETTINGS_TYPE.FILTER\n );\n this._cdr.markForCheck();\n });\n }\n\n public onSelect(id: string): void {\n this.savedItems = this.savedItems.map((item) => {\n if (id === item.id) {\n this.selectedFilter = item.sourceSettings;\n this._filterStateService.setSelectedSavedFilter(item.sourceSettings);\n return { ...item, selected: true };\n }\n return { ...item, selected: false };\n });\n this._cdr.markForCheck();\n }\n\n public onFavorite(id: string): void {\n const foundedItem = this.savedItems.find((item) => item.id === id);\n const defaultFounded = this.savedItems.find((item) => item.favorite && item.id !== id);\n if (!foundedItem) {\n return;\n }\n foundedItem.favorite = !foundedItem.favorite;\n\n if (defaultFounded) {\n this.savedItems = this.savedItems.map((item) => {\n const newItem = { ...item };\n\n if (item.sourceSettings.id === defaultFounded.sourceSettings.id) {\n newItem.favorite = false;\n }\n\n return newItem;\n });\n this._userSettingsStore.updateUserSettingsSettingsById({\n id: defaultFounded.sourceSettings.id,\n settings: {\n ...defaultFounded.sourceSettings.settings,\n favorite: false,\n },\n });\n }\n this._userSettingsStore.updateUserSettingsSettingsById({\n id,\n settings: {\n ...foundedItem.sourceSettings.settings,\n favorite: foundedItem.favorite,\n },\n });\n this._cdr.markForCheck();\n }\n\n public onEdit(id: string): void {\n const foundedFilter = this.savedItems.find((item) => id === item.id);\n if (foundedFilter) {\n this._filterStateService.setSelectedSavedFilter(foundedFilter.sourceSettings);\n this._filterStateService.setState({\n state: EInputsState.ON_EDIT_FILTER,\n action: EInputsAction.EDIT_FILTER,\n });\n }\n }\n\n public onDelete(id: string): void {\n const foundedIndex = this.savedItems.findIndex((item) => item.id === id);\n if (foundedIndex === -1) {\n return;\n }\n this.savedItems.splice(foundedIndex, 1);\n this._userSettingsStore.deleteUserSettingsById({ id });\n this._cdr.markForCheck();\n }\n}\n","<div class=\"sproc-filter-list-saved\">\n <prizm-loader [showLoader]=\"$any(loading$ | async)\" [overlay]=\"true\">\n <span *ngIf=\"savedItems.length === 0\" class=\"input-text-12px\"\n >Сохраненых фильтров не найдено\n </span>\n <div\n *ngFor=\"let item of savedItems; let i = index\"\n [class.selected]=\"item.selected\"\n class=\"sproc-filter-list-saved-item\"\n (click)=\"onSelect(item.id)\"\n >\n <div class=\"input-text-12px\">{{ item.name }}</div>\n\n <div class=\"sproc-filter-list-saved-item-action-buttons\">\n <button\n [icon]=\"item.favorite ? 'social-star-fill' : 'social-star'\"\n prizmIconButton\n appearanceType=\"ghost\"\n [appearance]=\"item.favorite ? 'primary' : 'secondary'\"\n size=\"xl\"\n (click)=\"onFavorite(item.id)\"\n ></button>\n\n <button\n [icon]=\"'editor-mode'\"\n prizmIconButton\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n size=\"xl\"\n (click)=\"onEdit(item.id)\"\n ></button>\n\n <button\n [icon]=\"'delete'\"\n prizmIconButton\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n size=\"xl\"\n (click)=\"onDelete(item.id)\"\n ></button>\n </div>\n </div>\n </prizm-loader>\n</div>\n","import { inject, Injectable } from '@angular/core';\nimport { ReplaySubject, take } from 'rxjs';\nimport { EInputsAction, EInputsState, GqlFields, ITpUserSettings } from '../../../../types';\nimport { FiltersService, FiltersStateService } from '../../../../services';\nimport { SETTINGS_TYPE, USER_SETTINGS_LOADER } from '../../../../consts';\n\n@Injectable()\nexport class FilterListService {\n public readonly apply$ = new ReplaySubject<GqlFields>();\n\n public modulePath!: string;\n\n private _pinnedFilterSetting: ITpUserSettings | undefined;\n\n private readonly settingsStore = inject(USER_SETTINGS_LOADER);\n\n constructor(\n private readonly _filtersService: FiltersService<any>,\n private readonly _filterStateService: FiltersStateService<any>\n ) {}\n\n public applyFilter(): void {\n this.apply$.next(this._filtersService.gqlFilter);\n this._filterStateService.setState({\n state: EInputsState.FILTER_LIST,\n action: EInputsAction.APPLY_FILTERS,\n });\n }\n\n public applySavedFilter(): void {\n const savedFilter = this._filterStateService.getSelectedSavedFilter();\n if (savedFilter) {\n this._filtersService.setUserSettingsFilterValues(savedFilter.settings?.filter ?? []);\n this._filterStateService.setSelectedSavedFilter(null);\n this._filterStateService.setState({\n state: EInputsState.FILTER_LIST,\n action: EInputsAction.APPLY_SAVED_FILTER,\n });\n this.apply$.next(this._filtersService.gqlFilter);\n } else {\n console.error('Выбранный фильтр не найден');\n }\n }\n\n public saveFilter(): void {\n if (!this.modulePath) {\n console.error('modulePath не инициализирован');\n }\n\n const saved = this._filterStateService.getSelectedSavedFilter();\n this.settingsStore.upsertEnded$.pipe(take(1)).subscribe(() => {\n this._filterStateService.setSelectedSavedFilter(null);\n this._filterStateService.setState({\n state: EInputsState.SAVED_LIST,\n action: EInputsAction.AFTER_SAVE_FILTER,\n });\n });\n\n this.settingsStore.upsertUserSettingsByUserId({\n settings: {\n id: saved?.id ?? undefined,\n name: this._filterStateService.name,\n settings: {\n favorite: saved?.settings?.favorite ?? false,\n filter: this._filtersService.userSettingsFilter,\n },\n module_name: this.modulePath,\n settings_type: SETTINGS_TYPE.FILTER,\n },\n });\n }\n\n public clear(): void {\n this._filtersService.clear();\n }\n\n public savePinnedFilters(): void {\n this.settingsStore\n .upsertReturningOne$(SETTINGS_TYPE.REGISTER_PINNED_INPUTS)\n .subscribe((setting) => {\n this._pinnedFilterSetting = setting ?? undefined;\n });\n\n this.settingsStore.upsertUserSettingsByUserId({\n settings: {\n id: this._pinnedFilterSetting?.id,\n settings: {\n filter: this._filtersService.userSettingsFilter,\n pinned: this._filterStateService.isPin,\n },\n module_name: this.modulePath,\n settings_type: SETTINGS_TYPE.REGISTER_PINNED_INPUTS,\n },\n hidden: true,\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { map } from 'rxjs';\nimport { FilterListService } from '../filter-list.service';\nimport { Router } from '@angular/router';\nimport { getLastSegmentOfPathName } from '../../../../../utils/get-url-segment';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EInputsAction, EInputsState, GqlFields } from '../../../../../types';\nimport { FiltersStateService } from '../../../../../services';\n\n@Component({\n selector: 'sproc-filter-list-header',\n templateUrl: './filter-list-header.component.html',\n styleUrls: ['./filter-list-header.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [FilterListService],\n})\nexport class FilterListHeaderComponent implements OnInit {\n @Input() total: number | null = 0;\n @Input() showTotal = true;\n @Input() showPin = true;\n @Input() showCloseButton = true;\n @Input() acceptButtonDisabled = false;\n @Input() applyButtonDisabled = false;\n @Input() filterListHeaderTitle = 'Фильтр';\n\n @Output() pinnedChange = new EventEmitter<boolean>();\n @Output() applyFilter = new EventEmitter<GqlFields>();\n @Output() resetFilter = new EventEmitter<void>();\n\n private readonly _dr = inject(DestroyRef);\n\n public readonly count$ = this._filterStateService.count$;\n public readonly filterState$ = this._filterStateService.state$.pipe(\n map((filterState) => filterState.state)\n );\n\n public readonly FilterState = EInputsState;\n\n constructor(\n private readonly _router: Router,\n private readonly _filterStateService: FiltersStateService<any>,\n private readonly _filterListService: FilterListService\n ) {}\n\n public ngOnInit(): void {\n this._filterListService.modulePath = getLastSegmentOfPathName(this._router.url);\n\n this._filterListService.apply$.pipe(takeUntilDestroyed(this._dr)).subscribe((gql) => {\n this.applyFilter.emit(gql);\n this._filterListService.savePinnedFilters();\n });\n }\n\n public onTogglePin(): void {\n this._filterStateService.togglePin();\n this.pinnedChange.emit(this._filterStateService.isPin);\n this._filterListService.savePinnedFilters();\n }\n\n public onSavedList(): void {\n this._filterStateService.setState({\n state: EInputsState.SAVED_LIST,\n action: EInputsAction.OPEN,\n });\n }\n\n public onSave(): void {\n this._filterStateService.setState({\n state: EInputsState.ON_SAVE_FILTER,\n action: EInputsAction.AFTER_SAVE_FILTER,\n });\n }\n\n public onApplyFilter(): void {\n this._filterListService.applyFilter();\n }\n\n public onReset(): void {\n this._filterListService.clear();\n }\n\n public onClose(): void {\n this._filterStateService.setPin(false);\n this._filterStateService.setState({ state: EInputsState.HIDDEN, action: EInputsAction.CANCEL });\n }\n\n public onApplySavedFilter(): void {\n this._filterListService.applySavedFilter();\n }\n\n public onSaveFilter(): void {\n this._filterListService.saveFilter();\n }\n\n public onBack(): void {\n this._filterStateService.setState({\n state: EInputsState.FILTER_LIST,\n action: EInputsAction.OPEN,\n });\n }\n\n protected get isPin(): boolean {\n return this._filterStateService.isPin;\n }\n}\n","<ng-container [ngSwitch]=\"filterState$ | async\">\n <h4 *ngSwitchCase=\"FilterState.FILTER_LIST\">{{ filterListHeaderTitle }}</h4>\n <h4 *ngSwitchCase=\"FilterState.SAVED_LIST\">Сохраненные фильтры</h4>\n <h4 *ngSwitchCase=\"FilterState.ON_EDIT_FILTER\">Редактирование фильтра</h4>\n <h4 *ngSwitchCase=\"FilterState.ON_SAVE_FILTER\">Сохранить фильтр</h4>\n</ng-container>\n\n<div class=\"sproc-filter-list-header-actions-button\">\n <ng-container [ngSwitch]=\"filterState$ | async\">\n <ng-container\n *ngSwitchCase=\"FilterState.FILTER_LIST\"\n [ngTemplateOutlet]=\"filterListTemplate\"\n ></ng-container>\n <ng-container\n *ngSwitchCase=\"FilterState.SAVED_LIST\"\n [ngTemplateOutlet]=\"savedListTemplate\"\n ></ng-container>\n <ng-container\n *ngSwitchCase=\"FilterState.ON_EDIT_FILTER\"\n [ngTemplateOutlet]=\"saveFilterTemplate\"\n ></ng-container>\n <ng-container\n *ngSwitchCase=\"FilterState.ON_SAVE_FILTER\"\n [ngTemplateOutlet]=\"saveFilterTemplate\"\n ></ng-container>\n <ng-container *ngSwitchDefault [ngTemplateOutlet]=\"backButtonTemplate\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #filterListTemplate>\n <ng-container *ngIf=\"showPin\">\n <button\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n (click)=\"onTogglePin()\"\n >\n <img\n [src]=\"\n 'assets/ngx-register-base/icons/' + (isPin ? 'thumbtack-directly.svg' : 'thumbtack.svg')\n \"\n />\n </button>\n\n <sproc-divider layout=\"vertical\"></sproc-divider>\n </ng-container>\n\n <button\n icon=\"social-star\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n (click)=\"onSavedList()\"\n ></button>\n\n <button\n icon=\"tools-content-save\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n (click)=\"onSave()\"\n ></button>\n\n <sproc-divider layout=\"vertical\"></sproc-divider>\n\n <button\n icon=\"selection-check-simple\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"primary\"\n prizmButton\n class=\"icon-button\"\n [disabled]=\"applyButtonDisabled\"\n (click)=\"onApplyFilter()\"\n ></button>\n\n <button\n icon=\"tools-eraser\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n (click)=\"onReset()\"\n ></button>\n\n <button\n *ngIf=\"showCloseButton\"\n icon=\"cancel-close\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"danger\"\n prizmButton\n class=\"icon-button\"\n (click)=\"onClose()\"\n ></button>\n</ng-template>\n\n<ng-template #savedListTemplate>\n <button\n icon=\"selection-check-simple\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"primary\"\n prizmButton\n class=\"icon-button\"\n [disabled]=\"acceptButtonDisabled\"\n (click)=\"onApplySavedFilter()\"\n ></button>\n\n <ng-container *ngTemplateOutlet=\"backButtonTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #saveFilterTemplate>\n <button\n icon=\"tools-content-save\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n [disabled]=\"acceptButtonDisabled\"\n (click)=\"onSaveFilter()\"\n ></button>\n\n <ng-container *ngTemplateOutlet=\"backButtonTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #backButtonTemplate>\n <button\n icon=\"arrows-corner-up-left\"\n size=\"s\"\n appearanceType=\"ghost\"\n appearance=\"secondary\"\n prizmButton\n class=\"icon-button\"\n prizmHint=\"Главное меню фильтров\"\n prizmHintTheme=\"light\"\n (click)=\"onBack()\"\n ></button>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n EventEmitter,\n inject,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { map } from 'rxjs';\nimport { FilterListService } from '../filter-list.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EInputsState, GqlFields } from '../../../../../types';\nimport { FiltersStateService } from '../../../../../services';\nimport { getLastSegmentOfPathName } from '../../../../../utils/get-url-segment';\n\n@Component({\n selector: 'sproc-filter-list-footer',\n templateUrl: './filter-list-footer.component.html',\n styleUrls: ['./filter-list-footer.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [FilterListService],\n})\nexport class FilterListFooterComponent implements OnInit {\n @Input() acceptButtonDisabled = false;\n @Input() applyButtonDisabled = false;\n @Input() footerApplyButtonLabel = 'Применить';\n @Output() apply: EventEmitter<GqlFields> = new EventEmitter<GqlFields>();\n\n private readonly _dr = inject(DestroyRef);\n\n public readonly filterState$ = this._filterStateService.state$.pipe(\n map((filterState) => filterState.state)\n );\n\n public readonly FilterState = EInputsState;\n\n constructor(\n private readonly _router: Router,\n private readonly _filterStateService: FiltersStateService<any>,\n private readonly _filterListService: FilterListService\n ) {}\n\n public ngOnInit(): void {\n this._filterListService.modulePath = getLastSegmentOfPathName(this._router.url);\n\n this._filterListService.apply$.pipe(takeUntilDestroyed(this._dr)).subscribe((gql) => {\n this.apply.emit(gql);\n this._filterListService.savePinnedFilters();\n });\n }\n\n public onApplyFilter(): void {\n this._filterListService.applyFilter();\n }\n\n public onApplySavedFilter(): void {\n this._filterListService.applySavedFilter();\n }\n\n public onSaveFilter(): void {\n this._filterListService.saveFilter();\n }\n}\n","<div class=\"sproc-filter-list-footer-container\">\n <ng-container [ngSwitch]=\"filterState$ | async\">\n <ng-container *ngSwitchCase=\"FilterState.FILTER_LIST\">\n <button\n class=\"filter-list__button\"\n prizmButton\n size=\"s\"\n [disabled]=\"applyButtonDisabled\"\n (click)=\"onApplyFilter()\"\n >\n {{ footerApplyButtonLabel }}\n </button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"FilterState.SAVED_LIST\">\n <button\n class=\"filter-list__button\"\n prizmButton\n size=\"s\"\n [disabled]=\"acceptButtonDisabled\"\n (click)=\"onApplySavedFilter()\"\n >\n Применить\n </button>\n </ng-container>\n\n <ng-container\n *ngSwitchCase=\"FilterState.ON_EDIT_FILTER\"\n [ngTemplateOutlet]=\"onEditFilter\"\n ></ng-container>\n\n <ng-container\n *ngSwitchCase=\"FilterState.ON_SAVE_FILTER\"\n [ngTemplateOutlet]=\"onEditFilter\"\n ></ng-container>\n\n <ng-template #onEditFilter>\n <button\n class=\"filter-list__button\"\n prizmButton\n size=\"s\"\n [disabled]=\"acceptButtonDisabled\"\n (click)=\"onSaveFilter()\"\n >\n Сохранить\n </button>\n </ng-template>\n </ng-container>\n</div>\n","import { Component, ElementRef, HostBinding, Input, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'sproc-sliding-panel',\n templateUrl: './sliding-panel.component.html',\n styleUrls: ['./sliding-panel.component.less'],\n})\nexport class SlidingPanelComponent {\n @HostBinding('style.--header-offset-height')\n get headerOffsetHeightPx(): string {\n const height: number = this._headerContainer?.nativeElement.children[0]?.offsetHeight ?? 0;\n\n return `${height}px`;\n }\n\n @HostBinding('style.--footer-offset-height')\n get footerOffsetHeightPx(): string {\n const height: number = this._footerContainer?.nativeElement.children[0]?.offsetHeight ?? 0;\n\n return `${height}px`;\n }\n\n @HostBinding('style.--sub-offset-height')\n get subOffsetHeightPx(): string {\n return `${this.subOffsetHeight}px`;\n }\n\n /** Доп. отступ для вычисления высоты панели (в пикселях) */\n @Input() subOffsetHeight = 0;\n\n /** Состояние видимости панели */\n @Input() isOpen: boolean | null | undefined = false;\n\n @ViewChild('headerContainer') private readonly _headerContainer: ElementRef | undefined;\n @ViewChild('footerContainer') private readonly _footerContainer: ElementRef | undefined;\n}\n","<div class=\"sproc-sliding-panel\" [attr.show]=\"!!isOpen\">\n <div #headerContainer>\n <ng-content select=\"[header]\"></ng-content>\n </div>\n\n <prizm-scrollbar class=\"scrolled-content\">\n <ng-content />\n </prizm-scrollbar>\n\n <div #footerContainer>\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { combineLatest, debounceTime, map, Subject, takeUntil, of } from 'rxjs';\nimport {\n EInputsAction,\n EInputsState,\n GqlFields,\n IInputsState,\n ITpUserSettings,\n ITpUserSettingsSettingsFilter,\n} from '../../types';\nimport { FiltersService, FiltersStateService } from '../../services';\nimport { RegisterBaseStore } from '../../core';\nimport { PAGE_MENU_STATE } from '../page-menu';\n\n@Component({\n selector: 'sproc-register-table-filter',\n templateUrl: './register-table-filter.component.html',\n styleUrls: ['./register-table-filter.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RegisterTableFilterComponent<Type extends Record<string, any>>\n implements OnInit, AfterViewInit, OnDestroy\n{\n /** Высота всего компонента фильтров */\n @Input() height: string | undefined;\n @Input() showTotal = true;\n @Input() showPin = true;\n @Input() showCloseButton = true;\n @Input() acceptButtonDisabled = false;\n @Input() applyButtonDisabled = false;\n /** Доп. отступ для вычисления высоты панели (в пикселях) */\n @Input() subOffsetHeight = 0;\n @Input() filterListHeaderTitle = 'Фильтр';\n @Input() footerApplyButtonLabel = 'Применить';\n\n @Output() clickApplyButton = new EventEmitter<void>();\n\n private readonly _menuState = inject(PAGE_MENU_STATE);\n\n private readonly _unsubscribe$: Subject<void> = new Subject<void>();\n\n public readonly FilterState = EInputsState;\n public readonly filterState$ = this._filterStateService.state$.pipe(\n map((filterState) => filterState.state)\n );\n public readonly isOpen$ = this.filterState$.pipe(map((state) => state !== EInputsState.HIDDEN));\n public readonly total$ = this._store.total$ ?? of(0);\n\n private _currentFilters: ITpUserSettingsSettingsFilter[] = [];\n private _previousState: IInputsState = {\n state: EInputsState.HIDDEN,\n action: EInputsAction.CANCEL,\n };\n\n constructor(\n private readonly _store: RegisterBaseStore<Type>,\n private readonly _filterStateService: FiltersStateService<Type>,\n private readonly _filterListService: FiltersService<Type>\n ) {}\n\n public ngOnInit(): void {\n combineLatest([this._filterStateService.state$, this._filterStateService.selectedSavedFilter])\n .pipe(takeUntil(this._unsubscribe$))\n .subscribe({\n next: ([state, selected]) => {\n if (state.state === EInputsState.SAVED_LIST) {\n this.acceptButtonDisabled = !selected;\n return;\n }\n\n if (state.state === EInputsState.ON_EDIT_FILTER) {\n this.acceptButtonDisabled = false;\n return;\n }\n\n if (state.state === EInputsState.ON_SAVE_FILTER) {\n this.acceptButtonDisabled = false;\n return;\n }\n this.acceptButtonDisabled = true;\n },\n });\n\n if (this._filterStateService.isPin) {\n this._filterStateService.setState({\n state: EInputsState.FILTER_LIST,\n action: EInputsAction.OPEN,\n });\n }\n }\n\n protected closeMenu(isPin: boolean): void {\n if (isPin) {\n this._menuState.setOpen(false);\n }\n }\n\n public onApplyFilter(gqlFilter: GqlFields, savePage?: boolean): void {\n if (!savePage) {\n this._filterStateService.setOffset(0);\n this._filterStateService.setPage(1);\n }\n this._filterStateService.setGqlValues(gqlFilter);\n this.clickApplyButton.next();\n }\n\n public ngAfterViewInit(): void {\n this._subscribeOnState();\n }\n\n private _subscribeOnState(): void {\n combineLatest([this._filterStateService.state$, this._filterStateService.selectedSavedFilter])\n .pipe(debounceTime(500), takeUntil(this._unsubscribe$))\n .subscribe(([state, settings]) => {\n this._setFilters(state, settings);\n });\n }\n\n private _setFilters(state: IInputsState, settings: ITpUserSettings | null): void {\n const { state: currentState, action: currentAction } = state;\n const { state: previousState } = this._previousState;\n\n switch (currentState) {\n case EInputsState.ON_EDIT_FILTER:\n if (previousState !== EInputsState.ON_EDIT_FILTER) {\n this._filterListService.setUserSettingsFilterValues(settings?.settings?.filter ?? []);\n }\n break;\n case EInputsState.SAVED_LIST:\n if (\n previousState !== EInputsState.SAVED_LIST &&\n previousState !== EInputsState.ON_EDIT_FILTER &&\n previousState !== EInputsState.ON_SAVE_FILTER\n ) {\n this._currentFilters = this._filterListService.userSettingsFilter;\n }\n break;\n case EInputsState.FILTER_LIST:\n if (previousState !== EInputsState.FILTER_LIST) {\n if (currentAction === EInputsAction.CANCEL) {\n this._filterListService.setUserSettingsFilterValues(this._currentFilters);\n } else if (currentAction === EInputsAction.APPLY_SAVED_FILTER) {\n this._currentFilters = settings?.settings?.filter ?? [];\n }\n }\n break;\n default:\n console.warn('Состояние фильтра', currentState);\n break;\n }\n }\n\n public ngOnDestroy(): void {\n this._unsubscribe$.next();\n this._unsubscribe$.complete();\n }\n}\n","<sproc-sliding-panel [isOpen]=\"isOpen$ | async\" [subOffsetHeight]=\"subOffsetHeight\">\n <sproc-filter-list-header\n header\n [showTotal]=\"showTotal\"\n [showPin]=\"showPin\"\n [showCloseButton]=\"showCloseButton\"\n [total]=\"total$ | async\"\n [acceptButtonDisabled]=\"acceptButtonDisabled\"\n [applyButtonDisabled]=\"applyButtonDisabled\"\n [filterListHeaderTitle]=\"filterListHeaderTitle\"\n (pinnedChange)=\"closeMenu($event)\"\n (applyFilter)=\"onApplyFilter($event)\"\n ></sproc-filter-list-header>\n\n <ng-container [ngSwitch]=\"filterState$ | async\">\n <ng-container *ngSwitchCase=\"FilterState.FILTER_LIST\" [ngTemplateOutlet]=\"filtersTemplate\">\n </ng-container>\n\n <div *ngSwitchCase=\"FilterState.SAVED_LIST\">\n <sproc-filter-list-saved></sproc-filter-list-saved>\n </div>\n\n <div *ngSwitchCase=\"FilterState.ON_EDIT_FILTER\">\n <sproc-filter-edit></sproc-filter-edit>\n\n <sproc-divider></sproc-divider>\n\n <ng-container [ngTemplateOutlet]=\"filtersTemplate\"></ng-container>\n </div>\n\n <div *ngSwitchCase=\"FilterState.ON_SAVE_FILTER\">\n <sproc-filter-edit></sproc-filter-edit>\n </div>\n\n <ng-template #filtersTemplate>\n @defer (on viewport) {\n <ng-content />\n } @loading (minimum 1s) {\n <tui-loader size=\"m\" class=\"loader\"></tui-loader>\n } @placeholder {\n <span>...</span>\n }\n </ng-template>\n </ng-container>\n\n <sproc-filter-list-footer\n footer\n [acceptButtonDisabled]=\"acceptButtonDisabled\"\n [applyButtonDisabled]=\"applyButtonDisabled\"\n (apply)=\"onApplyFilter($event)\"\n [footerApplyButtonLabel]=\"footerApplyButtonLabel\"\n ></sproc-filter-list-footer>\n</sproc-sliding-panel>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n inject,\n Injector,\n input,\n runInInjectionContext,\n signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { combineLatest, of, switchMap } from 'rxjs';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { IInputControl } from '../../../../../types';\n\n@Component({\n selector: 'sproc-filters-section',\n templateUrl: './filters-section.component.html',\n styleUrls: ['./filters-section.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FiltersSectionComponent {\n public controls = contentChildren<NgControl>(NgControl, { descendants: true });\n\n public label = input<string>('');\n\n protected isOpen = signal(true);\n protected haveAppliedFilters = computed(() => this._sameControlApplied());\n\n private _sameControlApplied = computed(() => this._checkSomeControlApplied());\n\n private _controlsChanges = toSignal(\n toObservable(this.controls).pipe(\n switchMap((controls) =>\n combineLatest(\n controls.map(({ control }) =>\n runInInjectionContext(this._injector, () => {\n const applied = (control as IInputControl)?.applied;\n\n return applied ? toObservable(applied) : of(false);\n })\n )\n )\n )\n ),\n { initialValue: [] }\n );\n\n private readonly _injector = inject(Injector);\n\n protected toggleHeader(): void {\n this.isOpen.update((isOpen) => !isOpen);\n }\n\n private _checkSomeControlApplied(): boolean {\n return this._controlsChanges().some((controlValue) => {\n if (!controlValue) {\n return false;\n }\n\n if (Array.isArray(controlValue)) {\n return controlValue.some((value) => !!value);\n }\n\n return true;\n });\n }\n}\n","<div class=\"panel-head\" (click)=\"toggleHeader()\">\n <div class=\"title\">\n <span class=\"title__font\">{{ label() }}</span>\n @if (haveAppliedFilters()) {\n <div class=\"title__wrapper--relative\">\n <div class=\"title-wrapper--absolute indicator__wrapper\">\n <div class=\"indicator__icon indicator--danger\"></div>\n </div>\n </div>\n }\n </div>\n\n <prizm-icons [name]=\"isOpen() ? 'chevrons-up' : 'chevrons-down'\" size=\"16\"></prizm-icons>\n</div>\n\n<div class=\"filters-block\" [attr.show]=\"isOpen()\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport {\n PrizmButtonComponent,\n PrizmCheckboxComponent,\n PrizmColumnSettingsComponent,\n PrizmDateTimeRange,\n PrizmDay,\n PrizmDayRange,\n PrizmDialogComponent,\n PrizmDropdownHostModule,\n PrizmHintDirective,\n PrizmIndicatorComponent,\n PrizmInputCommonModule,\n PrizmInputLayoutDateModule,\n PrizmInputLayoutDateRangeModule,\n PrizmInputLayoutDateTimeModule,\n PrizmInputIconButtonComponent,\n PrizmInputLayoutDateComponent,\n PrizmInputLayoutDateRangeComponent,\n PrizmInputLayoutDateTimeRangeComponent,\n PrizmInputLayoutDateTimeRangeModule,\n PrizmInputLayoutMonthRangeComponent,\n PrizmInputLayoutTimeModule,\n PrizmInputLayoutMonthModule,\n PrizmInputMultiSelectComponent,\n PrizmInputMultiSelectModule,\n PrizmInputNumberModule,\n PrizmInputSelectModule,\n PrizmInputTextModule,\n PrizmLoaderComponent,\n PrizmMonth,\n PrizmMonthRange,\n PrizmPaginatorComponent,\n PrizmPanelComponent,\n PrizmProgressModule,\n PrizmScrollbarModule,\n PrizmSelectInputComponent,\n PrizmSidebarComponent,\n PrizmSplitterModule,\n PrizmStickyModule,\n PrizmSwitcherComponent,\n PrizmTableModule,\n PrizmTabsModule,\n PrizmToastModule,\n PrizmToggleComponent,\n PrizmTooltipModule,\n PrizmTreeModule,\n PrizmCardComponent,\n PrizmDropdownControllerDirective,\n PrizmRadioButtonComponent,\n PrizmBreadcrumbDirective,\n PrizmBreadcrumbsComponent,\n PrizmStepperModule,\n} from '@prizm-ui/components';\nimport { PrizmFlagIconsComponent } from '@prizm-ui/flag-icons';\nimport { PrizmDestroyService } from '@prizm-ui/helpers';\nimport { PrizmIconsComponent } from '@prizm-ui/icons';\nimport { TuiDay } from '@taiga-ui/cdk';\nimport { SmaPrizmDateTime } from '../directives/date/date-time.types';\n\nexport type PrizmDateTypes =\n | TuiDay\n | PrizmDay\n | PrizmDayRange\n | SmaPrizmDateTime\n | PrizmDateTimeRange\n | PrizmMonth\n | PrizmMonthRange;\n\n@NgModule({\n imports: [\n FormsModule,\n ReactiveFormsModule,\n PrizmTableModule,\n PrizmScrollbarModule,\n PrizmCheckboxComponent,\n PrizmStickyModule,\n PrizmButtonComponent,\n PrizmInputTextModule,\n PrizmIconsComponent,\n PrizmPaginatorComponent,\n PrizmInputSelectModule,\n PrizmPanelComponent,\n PrizmToggleComponent,\n PrizmTabsModule,\n PrizmDropdownHostModule,\n PrizmLoaderComponent,\n PrizmSelectInputComponent,\n PrizmInputMultiSelectModule,\n PrizmInputLayoutDateModule,\n PrizmFlagIconsComponent,\n PrizmInputLayoutDateRangeModule,\n PrizmDialogComponent,\n PrizmInputLayoutDateComponent,\n PrizmColumnSettingsComponent,\n PrizmSwitcherComponent,\n PrizmTooltipModule,\n PrizmInputMultiSelectComponent,\n PrizmInputLayoutDateRangeComponent,\n PrizmSidebarComponent,\n PrizmToastModule,\n PrizmInputLayoutDateTimeModule,\n PrizmInputCommonModule,\n PrizmInputIconButtonComponent,\n PrizmInputLayoutMonthModule,\n PrizmHintDirective,\n PrizmTreeModule,\n PrizmInputNumberModule,\n PrizmInputLayoutDateTimeRangeModule,\n PrizmProgressModule,\n PrizmInputLayoutMonthRangeComponent,\n PrizmInputLayoutDateTimeRangeComponent,\n PrizmCardComponent,\n PrizmDropdownControllerDirective,\n PrizmRadioButtonComponent,\n PrizmBreadcrumbDirective,\n PrizmBreadcrumbsComponent,\n PrizmStepperModule,\n PrizmIndicatorComponent,\n ],\n exports: [\n FormsModule,\n ReactiveFormsModule,\n PrizmTableModule,\n PrizmScrollbarModule,\n PrizmCheckboxComponent,\n PrizmStickyModule,\n PrizmButtonComponent,\n PrizmInputTextModule,\n PrizmIconsComponent,\n PrizmPaginatorComponent,\n PrizmInputSelectModule,\n PrizmPanelComponent,\n PrizmToggleComponent,\n PrizmTabsModule,\n PrizmDropdownHostModule,\n PrizmLoaderComponent,\n PrizmSelectInputComponent,\n PrizmInputMultiSelectModule,\n PrizmInputLayoutDateModule,\n PrizmFlagIconsComponent,\n PrizmInputLayoutDateRangeModule,\n PrizmDialogComponent,\n PrizmInputLayoutDateComponent,\n PrizmColumnSettingsComponent,\n PrizmSwitcherComponent,\n PrizmTooltipModule,\n PrizmInputMultiSelectComponent,\n PrizmInputLayoutDateRangeComponent,\n PrizmSidebarComponent,\n PrizmToastModule,\n PrizmInputLayoutDateTimeModule,\n PrizmInputCommonModule,\n PrizmInputIconButtonComponent,\n PrizmInputLayoutMonthModule,\n PrizmHintDirective,\n PrizmTreeModule,\n PrizmInputNumberModule,\n PrizmInputLayoutDateTimeRangeModule,\n PrizmProgressModule,\n PrizmInputLayoutTimeModule,\n PrizmInputLayoutMonthRangeComponent,\n PrizmInputLayoutDateTimeRangeComponent,\n PrizmSplitterModule,\n PrizmCardComponent,\n PrizmDropdownControllerDirective,\n PrizmRadioButtonComponent,\n PrizmBreadcrumbDirective,\n PrizmBreadcrumbsComponent,\n PrizmStepperModule,\n PrizmIndicatorComponent,\n ],\n providers: [PrizmDestroyService],\n})\nexport class PrizmSharedModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FilterListFooterComponent } from './filter-list/filter-list-footer/filter-list-footer.component';\nimport { FilterListHeaderComponent } from './filter-list/filter-list-header/filter-list-header.component';\nimport { FilterEditComponent } from './filter-list/filter-edit/filter-edit.component';\nimport { FilterListSavedComponent } from './filter-list/filter-list-saved/filter-list-saved.component';\nimport { FiltersSectionComponent } from './filter-list/filters-section/filters-section.component';\nimport { DividerComponent } from '../../divider/divider.component';\nimport { PrizmSharedModule } from '../../../utils/prizm.shared.module';\n\n@NgModule({\n declarations: [\n FilterListHeaderComponent,\n FilterEditComponent,\n FilterListSavedComponent,\n FiltersSectionComponent,\n FilterListFooterComponent,\n ],\n imports: [CommonModule, FormsModule, ReactiveFormsModule, PrizmSharedModule, DividerComponent],\n exports: [\n FilterEditComponent,\n FilterListSavedComponent,\n FiltersSectionComponent,\n FilterListHeaderComponent,\n FilterListFooterComponent,\n ],\n})\nexport class FilterListModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SlidingPanelComponent } from './sliding-panel.component';\nimport { PrizmScrollbarComponent } from '@prizm-ui/components';\n\n@NgModule({\n declarations: [SlidingPanelComponent],\n imports: [CommonModule, PrizmScrollbarComponent],\n exports: [SlidingPanelComponent],\n})\nexport class SlidingPanelModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { RegisterTableFilterComponent } from './register-table-filter.component';\nimport { FilterListModule } from './components/filter-list.module';\nimport { SlidingPanelModule } from '../sliding-panel/sliding-panel.module';\nimport { DividerComponent } from '../divider/divider.component';\nimport { TuiLoader } from '@taiga-ui/core';\n\n@NgModule({\n declarations: [RegisterTableFilterComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n FilterListModule,\n DividerComponent,\n SlidingPanelModule,\n TuiLoader,\n ],\n exports: [RegisterTableFilterComponent],\n})\nexport class RegisterTableFilterModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n input,\n viewChild,\n} from '@angular/core';\nimport { type TuiBooleanHandler } from '@taiga-ui/cdk';\nimport { TuiSizeL, TuiSizeM } from '@taiga-ui/core';\nimport { ParamBase } from '../../../core/param/param-base';\nimport { TuiInputYearComponent } from '@taiga-ui/legacy';\n\n@Component({\n selector: 'sproc-param-calendar-year',\n templateUrl: './param-calendar-year.component.html',\n styleUrls: ['./param-calendar-year.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamCalendarYearComponent extends ParamBase<number, string> {\n private readonly _cdr = inject(ChangeDetectorRef);\n public yearInputComponent = viewChild<TuiInputYearComponent>('yearInput');\n\n override buildShowedValue = input((value: number): string => value?.toString() ?? '-');\n protected readonly disabledHandler: TuiBooleanHandler<number> = (value) =>\n this.disabledYears().includes(value);\n\n public disabledYears = input<number[]>([]);\n public min = input<number | null>(null);\n public max = input<number | null>(null);\n public size = input<TuiSizeL | TuiSizeM>('m');\n protected isYearPickerOpen = false;\n\n protected click(): void {\n this.isYearPickerOpen = !this.isYearPickerOpen;\n\n const yearComponent = this.yearInputComponent();\n if (yearComponent) {\n const inputEl = yearComponent.nativeFocusableElement!;\n const onDocumentClick = (event: MouseEvent) => {\n if (!inputEl.contains(event.target as Node) && this.isYearPickerOpen) {\n (yearComponent as any).onOpenChange(false);\n yearComponent.checkControlUpdate();\n document.removeEventListener('click', onDocumentClick);\n this.isYearPickerOpen = false;\n this._cdr.markForCheck();\n }\n };\n document.addEventListener('click', onDocumentClick);\n }\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n <tui-textfield\n [tuiTextfieldSize]=\"size()\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"true\"\n (click)=\"click()\"\n >\n <tui-input-year\n #yearInput\n [formControl]=\"control\"\n [max]=\"max()\"\n [min]=\"min()\"\n [disabledItemHandler]=\"disabledHandler\"\n >\n Выберите год\n </tui-input-year>\n </tui-textfield>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { ParamBase } from '../../../core/param/param-base';\n\n@Component({\n selector: 'sproc-param-custom',\n templateUrl: './param-custom.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamCustomComponent extends ParamBase<any, any> {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { TuiIcon } from '@taiga-ui/core';\n\n@Component({\n selector: 'sproc-param-invalid-icon',\n standalone: true,\n imports: [TuiIcon],\n templateUrl: './param-invalid-icon.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamInvalidIconComponent {}\n","<tui-icon\n class=\"invalid-icon\"\n icon=\"assets/ngx-register-base/icons/circle-exclamation-fill.svg\"\n></tui-icon>\n","import { ChangeDetectionStrategy, Component, Input, input } from '@angular/core';\nimport { TuiAppearance, TuiTextfield } from '@taiga-ui/core';\nimport { TuiInputDate } from '@taiga-ui/kit';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { TuiDay } from '@taiga-ui/cdk';\nimport { ParamInvalidIconComponent } from '../sub-components/param-invalid-icon/param-invalid-icon.component';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { EDatePattern } from '../../../directives/date/date-time.types';\n\nexport type InputDateSaveValue = string | null;\n\n@Component({\n selector: 'sproc-param-date',\n templateUrl: './param-date.component.html',\n styleUrls: ['./param-date.component.less'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n TuiTextfield,\n TuiInputDate,\n ReactiveFormsModule,\n NgIf,\n NgTemplateOutlet,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n TuiAppearance,\n TuiTextfieldControllerModule,\n ParamInvalidIconComponent,\n ],\n})\nexport class ParamDateComponent extends ParamDateBase<TuiDay | null, InputDateSaveValue> {\n override placeholder = input('Выберите дату');\n @Input() min: TuiDay | null = null;\n @Input() max: TuiDay | null = null;\n @Input() override set formatSavedValue(\n formatter: FormatterSavedValueType<TuiDay | null, InputDateSaveValue> | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputDateSaveValue, TuiDay | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n override buildShowedValue = input((value: TuiDay | null): string =>\n value ? this._defaultDateConvert(value) : '-'\n );\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultDateConvert(value: TuiDay): string {\n return this._dts.parseDate(value.toString(EDatePattern.TUI_YMD, '-'), EDatePattern.DATE);\n }\n\n private _defaultFormatterSaveValue(value: TuiDay | null): InputDateSaveValue {\n if (!value) {\n return null;\n }\n\n const iso = this._dts.toISOString(value.toLocalNativeDate());\n\n return this._dts.parseDate(iso, EDatePattern.YEAR_MONTH_DAY);\n }\n\n private _defaultParserSaveValue(value: InputDateSaveValue): TuiDay | null {\n if (!value) {\n return null;\n }\n\n return TuiDay.fromLocalNativeDate(this._dts.isoToLocalDate(value));\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n <tui-textfield\n tuiAppearance=\"sproc-input-appearance\"\n tuiTextfieldSize=\"m\"\n [tuiTextfieldLabelOutside]=\"true\"\n [style.--t-icon-end]=\"'url(/assets/ngx-register-base/icons/calendar-blank.svg)'\"\n [style.--t-icon-size]=\"'16px'\"\n >\n <input\n tuiInputDate\n [min]=\"min\"\n [max]=\"max\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n />\n <tui-calendar *tuiTextfieldDropdown />\n\n <div class=\"textfield-icons-container\">\n @if (isInvalidAndNotPristine) {\n <sproc-param-invalid-icon></sproc-param-invalid-icon>\n }\n </div>\n </tui-textfield>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input, Input } from '@angular/core';\nimport { PrizmDay, PrizmDayLike, PrizmDayRange } from '@prizm-ui/components';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { EDatePattern } from '../../../directives/date/date-time.types';\nimport { TuiDay } from '@taiga-ui/cdk';\n\nexport type InputDateRangeSavedValue = { from: string; to: string } | null;\n\n@Component({\n selector: 'sproc-param-date-range',\n templateUrl: './param-date-range.component.html',\n styleUrls: ['./param-date-range.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamDateRangeComponent extends ParamDateBase<\n PrizmDayRange | null,\n InputDateRangeSavedValue\n> {\n public maxLength = input<PrizmDayLike | null>(null);\n /** текст сообщения об ошибке */\n public errorMessage = input<string>('');\n override placeholder = input('Выберите период');\n @Input() min: TuiDay | PrizmDay | undefined;\n @Input() max: TuiDay | PrizmDay | undefined;\n @Input() override set formatSavedValue(\n formatter: FormatterSavedValueType<PrizmDayRange | null, InputDateRangeSavedValue> | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputDateRangeSavedValue, PrizmDayRange | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n override buildShowedValue = input(\n (value: PrizmDayRange | null): string => value?.toString() ?? '-'\n );\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultFormatterSaveValue(range: PrizmDayRange | null): InputDateRangeSavedValue {\n if (!range) {\n return null;\n }\n\n const isoFrom = this._dts.toISOString(range.from.toLocalNativeDate());\n const isoTo = this._dts.toISOString(range.to.toLocalNativeDate());\n\n return {\n from: this._dts.parseDate(isoFrom, EDatePattern.YEAR_MONTH_DAY),\n to: this._dts.parseDate(isoTo, EDatePattern.YEAR_MONTH_DAY),\n };\n }\n\n private _defaultParserSaveValue(value: InputDateRangeSavedValue): PrizmDayRange | null {\n if (!value) {\n return null;\n }\n\n const from = this._dts.isoToLocalDate(value.from);\n const to = this._dts.isoToLocalDate(value.to);\n\n return PrizmDayRange.fromLocalNativeDate(from, to);\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n @if (errorMessage() && control.invalid) {\n <div class=\"errorMessage\">{{ errorMessage() }}</div>\n }\n </div>\n\n <prizm-input-layout class=\"flex-shrink--zero\" size=\"s\" [forceClear]=\"forceClear\">\n <prizm-input-layout-date-range\n [placeholder]=\"placeholder()\"\n [maxLength]=\"maxLength()\"\n [min]=\"$any(min)\"\n [max]=\"$any(max)\"\n [formControl]=\"control\"\n ></prizm-input-layout-date-range>\n </prizm-input-layout>\n </div>\n </ng-template>\n</ng-container>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport moment from 'moment';\nimport { DateTimeService, ITimeZone } from '../../services/date-time.service';\n\n@Pipe({\n name: 'formatDate',\n standalone: true,\n})\nexport class FormatDatePipe implements PipeTransform {\n constructor(private readonly _dateTimeService: DateTimeService) {}\n\n transform(value: unknown, valueTZ: string, pattern: string, _?: ITimeZone | null): unknown {\n let utc = null;\n\n if (value instanceof Date) {\n const iso = this._dateTimeService.convertDateToISOWithTZ(value, valueTZ);\n utc = moment(iso).toISOString();\n } else if (typeof value === 'string') {\n utc = value;\n }\n\n if (!utc) {\n return value;\n }\n\n return this._dateTimeService.parseDate(utc, pattern);\n }\n}\n","import { ChangeDetectionStrategy, Component, input, Input } from '@angular/core';\nimport { PrizmDay, PrizmTime, PrizmTimeMode } from '@prizm-ui/components';\nimport { distinctUntilChanged, filter, map, pairwise } from 'rxjs';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type SmaPrizmDateTime = [PrizmDay, PrizmTime | undefined];\n\nexport type InputDateTimeSaveValue = string | null;\n\n@Component({\n selector: 'sproc-param-date-time',\n templateUrl: './param-date-time.component.html',\n styleUrls: ['./param-date-time.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamDateTimeComponent extends ParamDateBase<\n SmaPrizmDateTime | null,\n InputDateTimeSaveValue\n> {\n override placeholder = input('Выберите дату и время');\n @Input() min: PrizmDay | [PrizmDay, PrizmTime] | undefined;\n @Input() max: PrizmDay | [PrizmDay, PrizmTime] | undefined;\n @Input() timeMode: PrizmTimeMode = 'HH:MM';\n @Input() override set formatSavedValue(\n formatter: FormatterSavedValueType<SmaPrizmDateTime | null, InputDateTimeSaveValue> | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputDateTimeSaveValue, SmaPrizmDateTime | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultFormatterSaveValue(value: SmaPrizmDateTime | null): InputDateTimeSaveValue {\n if (!value) {\n return null;\n }\n\n const date = this._dts.prizmDateTimeToNativeDate(value);\n\n return this._dts.toISOString(date);\n }\n\n private _defaultParserSaveValue(value: InputDateTimeSaveValue): SmaPrizmDateTime | null {\n if (!value) {\n return null;\n }\n\n const date = this._dts.isoToLocalDate(value);\n\n return this._valueFromLocalNativeDate(date);\n }\n\n protected override onInit(): void {\n this._subscribeOnTimeZoneChanges();\n }\n\n protected clearValue(): void {\n this.control.setValue(null);\n }\n\n protected get nativeDate(): Date | null {\n if (!this.value) {\n return null;\n }\n return typeof this.value === 'string'\n ? this._dts.isoToLocalDate(this.value)\n : this._dts.prizmDateTimeToNativeDate(this.value);\n }\n\n private _subscribeOnTimeZoneChanges(): void {\n this.timezoneChange\n .pipe(\n distinctUntilChanged((prev, curr) => prev.time_diff === curr.time_diff),\n pairwise(),\n map(([prev, curr]) => ({\n prevDiff: prev.time_diff,\n currDiff: curr.time_diff,\n value: this.value,\n })),\n filter(({ value }) => !!value),\n takeUntilDestroyed(this.dr)\n )\n .subscribe(({ prevDiff, currDiff, value }) => {\n const date = this._dts.prizmDateTimeToNativeDate(value!);\n const newDate = this.rebuildDateInNewTimezone(date, prevDiff, currDiff);\n\n this.control.setValue(this._valueFromLocalNativeDate(newDate), { emitEvent: false });\n });\n }\n\n private _valueFromLocalNativeDate(date: Date): SmaPrizmDateTime {\n return [PrizmDay.fromLocalNativeDate(date), PrizmTime.fromLocalNativeDate(date)];\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span *ngIf=\"nativeDate; else emptyTemplate\">\n {{\n nativeDate\n | formatDate\n : (timezoneChange | async)!.time_diff!\n : EDatePattern.DATE_TIME_WITHOUT_SECONDS\n : (timezoneChange | async)\n }}\n </span>\n <ng-template #emptyTemplate>-</ng-template>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n <prizm-input-layout\n class=\"flex-shrink--zero\"\n size=\"s\"\n [forceClear]=\"forceClear\"\n [clearButton]=\"clearButtonTemplate\"\n >\n <prizm-input-layout-date-time\n [placeholder]=\"placeholder()\"\n [max]=\"$any(max)\"\n [min]=\"$any(min)\"\n [formControl]=\"control\"\n ></prizm-input-layout-date-time>\n <ng-template\n #clearButtonTemplate\n let-showStatusButton=\"showStatusButton\"\n let-disabled=\"disabled\"\n >\n <button\n [interactive]=\"true\"\n [disabled]=\"disabled\"\n prizmHint=\"Нажмите для очистки\"\n prizmHintTheme=\"light\"\n prizmInputIconButton=\"cancel-delete-content\"\n class=\"{{ showStatusButton ? '' : 'alone' }}\"\n (click)=\"clearValue()\"\n ></button>\n </ng-template>\n </prizm-input-layout>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input, Input } from '@angular/core';\nimport {\n PrizmDateTime,\n PrizmDateTimeRange,\n PrizmDay,\n PrizmDayLike,\n PrizmDayRange,\n PrizmTime,\n PrizmTimeMode,\n PrizmTimeRange,\n} from '@prizm-ui/components';\nimport { distinctUntilChanged, filter, map, pairwise } from 'rxjs';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type InputDateTimeRangeSaveValue = {\n from: string;\n to: string;\n} | null;\n\n@Component({\n selector: 'sproc-param-date-time-range',\n templateUrl: './param-date-time-range.component.html',\n styleUrls: ['./param-date-time-range.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamDateTimeRangeComponent extends ParamDateBase<\n PrizmDateTimeRange | null,\n InputDateTimeRangeSaveValue\n> {\n override placeholder = input('Выберите период');\n @Input() min: PrizmDay | undefined;\n @Input() max: PrizmDay | undefined;\n @Input() timeMode: PrizmTimeMode = 'HH:MM';\n @Input() maxLength: PrizmDayLike | null = null;\n @Input() override set formatSavedValue(\n formatter:\n | FormatterSavedValueType<PrizmDateTimeRange | null, InputDateTimeRangeSaveValue>\n | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputDateTimeRangeSaveValue, PrizmDateTimeRange | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultFormatterSaveValue(\n range: PrizmDateTimeRange | null\n ): InputDateTimeRangeSaveValue {\n if (!range) {\n return null;\n }\n\n const { from, to } = this._dts.prizmDateTimeRangeToNativeDates(range);\n\n return {\n from: this._dts.toISOString(from),\n to: this._dts.toISOString(to),\n };\n }\n\n private _defaultParserSaveValue(value: InputDateTimeRangeSaveValue): PrizmDateTimeRange | null {\n if (!value) {\n return null;\n }\n\n const from = this._dts.isoToLocalDate(value.from);\n const to = this._dts.isoToLocalDate(value.to);\n\n return new PrizmDateTimeRange(\n PrizmDayRange.fromLocalNativeDate(from, to),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n protected override onInit(): void {\n this._subscribeOnTimeZoneChanges();\n }\n\n private _subscribeOnTimeZoneChanges(): void {\n this.timezoneChange\n .pipe(\n distinctUntilChanged((prev, curr) => prev.time_diff === curr.time_diff),\n pairwise(),\n map(([prev, curr]) => ({\n prevDiff: prev.time_diff,\n currDiff: curr.time_diff,\n value: this.value,\n })),\n filter(({ value }) => !!value),\n takeUntilDestroyed(this.dr)\n )\n .subscribe(({ prevDiff, currDiff, value }) => {\n const { from, to } = this._dts.prizmDateTimeRangeToNativeDates(value!);\n\n const newFrom = this.rebuildDateInNewTimezone(from, prevDiff, currDiff);\n const newTo = this.rebuildDateInNewTimezone(to, prevDiff, currDiff);\n\n this.control.setValue(this._dts.prizmDateTimeRangeFromNativeDates(newFrom, newTo), {\n emitEvent: false,\n });\n });\n }\n\n protected get from(): Date | null {\n return this._getDateFromRange('from');\n }\n\n protected get to(): Date | null {\n return this._getDateFromRange('to');\n }\n\n private _getDateFromRange(date: 'from' | 'to'): Date | null {\n if (!this.value) {\n return null;\n }\n\n const { dayRange, timeRange } = this.value;\n\n return new PrizmDateTime(dayRange[date], timeRange?.[date]).toLocalNativeDate();\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span *ngIf=\"value; else emptyTemplate\">\n {{\n from\n | formatDate\n : (timezoneChange | async)!.time_diff!\n : EDatePattern.DATE_TIME_WITHOUT_SECONDS\n : (timezoneChange | async)\n }}\n -\n {{\n to\n | formatDate\n : (timezoneChange | async)!.time_diff!\n : EDatePattern.DATE_TIME_WITHOUT_SECONDS\n : (timezoneChange | async)\n }}\n </span>\n <ng-template #emptyTemplate>-</ng-template>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n <img\n *ngIf=\"hint\"\n src=\"assets/ngx-register-base/icons/circle-info-empty.svg\"\n [prizmHint]=\"hint\"\n prizmHintTheme=\"light\"\n style=\"margin-bottom: 2px\"\n />\n </div>\n\n <prizm-input-layout class=\"flex-shrink--zero\" size=\"s\" [forceClear]=\"forceClear\">\n <prizm-input-layout-date-time-range\n [placeholder]=\"placeholder()\"\n [timeMode]=\"timeMode\"\n [maxLength]=\"maxLength\"\n [min]=\"$any(min)\"\n [max]=\"$any(max)\"\n [formControl]=\"control\"\n ></prizm-input-layout-date-time-range>\n </prizm-input-layout>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input, Input } from '@angular/core';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { PrizmMonth } from '@prizm-ui/components';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { EMonth, MonthMapper } from '../../../consts/month.consts';\n\nexport type InputMonthSavedValue = string | null;\n\n@Component({\n selector: 'sproc-param-month',\n templateUrl: './param-month.component.html',\n styleUrls: ['./param-month.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamMonthComponent extends ParamDateBase<PrizmMonth | null, InputMonthSavedValue> {\n override placeholder = input('Выберите месяц');\n @Input() override set formatSavedValue(\n formatter: FormatterSavedValueType<PrizmMonth | null, InputMonthSavedValue> | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputMonthSavedValue, PrizmMonth | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n override buildShowedValue = input((value: PrizmMonth | null): string =>\n value ? `${this._formatMonth(value.month)} ${value.year}` : '-'\n );\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultFormatterSaveValue(month: PrizmMonth | null): InputMonthSavedValue {\n if (!month) {\n return null;\n }\n\n return this._dts.toISOString(month.toLocalNativeDate());\n }\n\n private _defaultParserSaveValue(value: InputMonthSavedValue): PrizmMonth | null {\n if (!value) {\n return null;\n }\n\n const date = this._dts.isoToLocalDate(value);\n\n return new PrizmMonth(date.getFullYear(), date.getMonth());\n }\n\n private _formatMonth(month: EMonth): string {\n return MonthMapper.getRusNamesArr()[month];\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <span class=\"value\">\n <span>{{ showedValue }}</span>\n </span>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n <img\n *ngIf=\"hint\"\n src=\"assets/ngx-register-base/icons/circle-info-empty.svg\"\n [prizmHint]=\"hint\"\n prizmHintTheme=\"light\"\n style=\"margin-bottom: 2px\"\n />\n </div>\n\n <prizm-input-layout size=\"s\" [forceClear]=\"forceClear\">\n <prizm-input-layout-month\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n ></prizm-input-layout-month>\n </prizm-input-layout>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input, Input } from '@angular/core';\nimport { PrizmMonth, PrizmMonthRange } from '@prizm-ui/components';\nimport { ParamDateBase } from '../../../core/param/param-date-base';\nimport { FormatterSavedValueType, ParserSavedValueType } from '../../../types/params.types';\nimport { EMonth, MonthMapper } from '../../../consts/month.consts';\n\nexport type InputMonthRangeSavedValue = { from: string; to: string } | null;\n\n@Component({\n selector: 'sproc-param-month-range',\n templateUrl: './param-month-range.component.html',\n styleUrls: ['./param-month-range.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamMonthRangeComponent extends ParamDateBase<\n PrizmMonthRange | null,\n InputMonthRangeSavedValue\n> {\n override placeholder = input('Выберите период');\n @Input() override set formatSavedValue(\n formatter:\n | FormatterSavedValueType<PrizmMonthRange | null, InputMonthRangeSavedValue>\n | undefined\n ) {\n this.formatterSavedValue = formatter ?? this._defaultFormatterSaveValue;\n }\n @Input() override set parseSavedValue(\n parser: ParserSavedValueType<InputMonthRangeSavedValue, PrizmMonthRange | null> | undefined\n ) {\n this.parserSavedValue = parser ?? this._defaultParserSaveValue;\n }\n override buildShowedValue = input((range: PrizmMonthRange | null): string => {\n if (!range) {\n return '-';\n }\n\n const { from, to } = range;\n\n const fromRuString = `${this._formatMonth(from.month)} ${from.year}`;\n const toRuString = `${this._formatMonth(to.month)} ${to.year}`;\n\n return `${fromRuString} - ${toRuString}`;\n });\n\n protected override formatterSavedValue = this._defaultFormatterSaveValue;\n protected override parserSavedValue = this._defaultParserSaveValue;\n\n private _defaultFormatterSaveValue(range: PrizmMonthRange | null): InputMonthRangeSavedValue {\n if (!range) {\n return null;\n }\n\n return {\n from: this._dts.toISOString(range.from.toLocalNativeDate()),\n to: this._dts.toISOString(range.to.toLocalNativeDate()),\n };\n }\n\n private _defaultParserSaveValue(value: InputMonthRangeSavedValue): PrizmMonthRange | null {\n if (!value) {\n return null;\n }\n\n const from = this._dts.isoToLocalDate(value.from);\n const to = this._dts.isoToLocalDate(value.to);\n\n return new PrizmMonthRange(\n new PrizmMonth(from.getFullYear(), from.getMonth()),\n new PrizmMonth(to.getFullYear(), to.getMonth())\n );\n }\n\n private _formatMonth(month: EMonth): string {\n return MonthMapper.getRusNamesArr()[month];\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <span class=\"value\">\n <span>{{ showedValue }}</span>\n </span>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n <prizm-input-layout size=\"s\" [forceClear]=\"forceClear\">\n <prizm-input-layout-month-range\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n ></prizm-input-layout-month-range>\n </prizm-input-layout>\n </div>\n </ng-template>\n</ng-container>\n","export const PARAM_SEARCH_INPUT_DEBOUNCE_TIME_MLS = 1000;\n","import {\n DOCUMENT,\n NgIf,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgTemplateOutlet,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n Inject,\n Injector,\n input,\n OnDestroy,\n output,\n signal,\n} from '@angular/core';\nimport { PrizmMultiSelectSearchMatcher } from '@prizm-ui/components';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n delay,\n distinctUntilChanged,\n filter,\n map,\n of,\n skip,\n Subscription,\n switchMap,\n tap,\n} from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TUI_ITEMS_HANDLERS, TuiAppearance, TuiHint, TuiIcon, TuiTextfield } from '@taiga-ui/core';\nimport { TuiMultiSelectModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TuiContext, TuiIdentityMatcher, TuiStringHandler } from '@taiga-ui/cdk';\nimport { FastQueryStore } from '../../../store/fast-query-store.service';\nimport { IFilterSelectValue, MetaQuery } from '../../../types/params.types';\nimport { ParamSelectBase } from '../../../core/param/param-select-base';\nimport { SELECT_ALL_ID, selectAllItem } from '../../../utils/select-all-utils';\nimport { distinctUntilChangedJSONs } from '../../../utils';\nimport { PARAM_SEARCH_INPUT_DEBOUNCE_TIME_MLS } from '../../../consts/params.consts';\n\n@Component({\n selector: 'sproc-param-multi-select',\n templateUrl: './param-multi-select.component.html',\n styleUrls: ['./param-multi-select.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n FastQueryStore,\n {\n provide: TUI_ITEMS_HANDLERS,\n deps: [forwardRef(() => ParamMultiSelectComponent)],\n useFactory: (component: ParamMultiSelectComponent) => ({\n stringify: component.stringify,\n identityMatcher: component.identityMatcher,\n disabledItemHandler: signal((_: IFilterSelectValue) => false),\n }),\n },\n ],\n standalone: true,\n imports: [\n NgTemplateOutlet,\n NgIf,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n TuiIcon,\n TuiHint,\n TuiMultiSelectModule,\n ReactiveFormsModule,\n TuiTextfield,\n TuiAppearance,\n TuiTextfieldControllerModule,\n ],\n})\nexport class ParamMultiSelectComponent\n extends ParamSelectBase<IFilterSelectValue[], IFilterSelectValue[]>\n implements OnDestroy\n{\n override readonly placeholder = input('Выберите значения');\n readonly itemSelectAll = input(false);\n readonly searchMatcher = input<PrizmMultiSelectSearchMatcher<IFilterSelectValue>>(\n (search: string, item: IFilterSelectValue) =>\n item.name?.toLowerCase().includes(search.toLowerCase())\n );\n readonly shortPickedLength = input(true);\n\n readonly stringify = input<TuiStringHandler<IFilterSelectValue | TuiContext<IFilterSelectValue>>>(\n (item) => ('name' in item ? item.name : item.$implicit.name)\n );\n\n readonly identityMatcher = input<TuiIdentityMatcher<IFilterSelectValue>>(\n (a, b) => a?.id === b?.id\n );\n\n override readonly buildShowedValue = input(\n (values: IFilterSelectValue[]): string => values?.map((v) => v.name).join(',\\n') ?? '-'\n );\n\n readonly onSelect = output<IFilterSelectValue[]>();\n\n protected readonly selectAllItem: IFilterSelectValue = selectAllItem;\n\n protected onCancelButtonSubscription!: Subscription;\n\n protected searchValue = '';\n\n protected readonly onSearch$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n private onSearchSubscription: Subscription | null = null;\n private cachedString = '';\n\n private onClearButtonSubscription: Subscription | null = null;\n public choosedHint = '';\n\n constructor(\n injector: Injector,\n @Inject(DOCUMENT) private document: Document\n ) {\n super(injector);\n }\n\n public override onInit(): void {\n this._subscribeOnSearch();\n\n if (this.itemSelectAll()) {\n this.items.unshift(this.selectAllItem);\n }\n }\n\n private _subscribeOnSearch() {\n this.onSearch$\n .pipe(\n debounceTime(PARAM_SEARCH_INPUT_DEBOUNCE_TIME_MLS),\n distinctUntilChanged(),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((value) => {\n this.fetchItems(value);\n });\n }\n\n public override afterViewInit(): void {\n if (this.meta?.table && this.searchable) {\n this._subscribeOnClearButton();\n }\n\n if (this.meta) {\n this._observeFetchItems();\n }\n\n this._subscribeOnMetaChanges();\n this._subscribeOnValueControl();\n\n if (this.control?.value?.some((elem: any) => elem.id === SELECT_ALL_ID)) {\n if (this.items.length > 0) {\n this.control.setValue(this.items);\n }\n if (this.items.length === 1) {\n this.fetchItems();\n }\n }\n }\n\n private _observeFetchItems(): void {\n this.control.valueChanges\n .pipe(\n filter(Boolean),\n filter((values) => {\n const someValueNotHaveName = values.some((value) => !value.name);\n const everyValuesExistsInItems = values.every(({ id }) =>\n this.items.some((item) => item.id === id)\n );\n\n return someValueNotHaveName && everyValuesExistsInItems;\n }),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((values) => {\n const ids = new Set(values.map((value) => value.id));\n const filledValues = this.items.filter(({ id }) => ids.has(id));\n\n this.control.setValue(filledValues, { emitEvent: false });\n });\n\n combineLatest([\n this.control.valueChanges.pipe(\n map((values) => values?.map((value) => value.id) ?? []),\n distinctUntilChangedJSONs(),\n filter((ids) => ids.some((id) => !this.items.some((item) => item.id === id)))\n ),\n this.meta$,\n ])\n .pipe(takeUntilDestroyed(this.dr))\n .subscribe(() => {\n this.fetchItems();\n });\n }\n\n private _subscribeOnMetaChanges(): void {\n this.meta$.pipe(takeUntilDestroyed(this.dr)).subscribe(() => {\n this.fetchItems();\n });\n }\n\n private _subscribeOnValueControl(): void {\n let controlValue = this.control.value;\n\n this.control?.valueChanges\n .pipe(\n distinctUntilChangedJSONs(),\n map((values) => values ?? []),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((values) => {\n if (this.itemSelectAll()) {\n if (\n this.items.length - values.length === 1 &&\n values.filter((elem) => elem.id === SELECT_ALL_ID).length === 0 &&\n controlValue.includes(this.selectAllItem)\n ) {\n this.control.setValue([], { emitEvent: false });\n }\n\n if (values?.some((elem) => elem.id === SELECT_ALL_ID)) {\n this.control.setValue(this.items, { emitEvent: false });\n }\n\n if (\n this.items.length !== values.length &&\n controlValue?.includes(this.selectAllItem) &&\n values?.some((elem) => elem.id === SELECT_ALL_ID)\n ) {\n this.control.setValue(\n values.filter((elem) => elem !== this.selectAllItem),\n { emitEvent: false }\n );\n }\n }\n controlValue = this.control.value;\n });\n }\n\n public ngOnDestroy(): void {\n this.onSearch$.complete();\n this.onSearchSubscription?.unsubscribe();\n this.onCancelButtonSubscription?.unsubscribe();\n this.onClearButtonSubscription?.unsubscribe();\n }\n\n protected fetchItems(searchValue?: string): void {\n const { idField, valueField } = this.metaFields;\n if (!this.meta?.table?.name || idField === null || valueField === null) {\n return;\n }\n\n const selectedItemIDs = this._getSelectedItemIDs(searchValue);\n\n this.loading = true;\n const where = this.buildWhere(searchValue);\n const selectedItemIdsWhere = this._buildSelectedItemIdsWhere(where, selectedItemIDs, idField);\n let fetchAll = false;\n\n if (this.control.value?.some((elem: any) => elem.id === SELECT_ALL_ID)) {\n fetchAll = true;\n }\n const qParams: MetaQuery = {\n table: this.meta.table,\n where,\n order_by: this.meta.order_by,\n offset: this.meta.offset,\n distinct_on: this.meta.distinct_on,\n subquery: this.meta.subquery,\n };\n if (!fetchAll) {\n qParams.limit = this.meta.limit ?? this.limit;\n }\n\n this.store\n .getResults(qParams, true, selectedItemIdsWhere)\n .pipe(\n tap((data) => {\n this._handleResults(data, idField, valueField, selectedItemIDs);\n }),\n tap(() => {\n if (\n this.itemSelectAll() &&\n this.items.length > 0 &&\n !this.items.includes(this.selectAllItem)\n ) {\n this.items.unshift(this.selectAllItem);\n }\n if (fetchAll) {\n this.control.setValue(this.items, { emitEvent: false });\n }\n this.loading = false;\n this.cdr.markForCheck();\n }),\n takeUntilDestroyed(this.dr)\n )\n .subscribe(() => {\n this.choosedHint =\n this.control\n .getRawValue()\n ?.map((elem: any) => elem.name)\n .join(', ') ?? '';\n });\n }\n\n private _subscribeOnClearButton(): void {\n this.onClearButtonSubscription?.unsubscribe();\n this.onClearButtonSubscription = this.onSearch$\n .pipe(\n skip(1),\n switchMap((value) => {\n if (value.length > 0 && this.cachedString.length === 0) {\n const elements = this.document.querySelectorAll('.input-search');\n const clearButtonClicks$ = [];\n for (let i = 0; i < elements.length; i++) {\n const founded = elements.item(i);\n const item = founded?.parentElement;\n if (founded && item && item.className === 'prizm-input-form-body') {\n clearButtonClicks$.push(\n of(null).pipe(\n delay(300),\n switchMap(() => {\n const clearButton = item.parentElement?.getElementsByClassName(\n 'prizm-input-label-clear-btn prizm-input-button-default clear-icon interactive ng-star-inserted'\n );\n if (clearButton?.[0]) {\n clearButton[0].addEventListener('click', () => {\n this.onSearch$.next('');\n });\n }\n return of(null);\n })\n )\n );\n }\n }\n return clearButtonClicks$.length > 0 ? clearButtonClicks$[0] : of(null);\n }\n this.cachedString = value;\n return of(null);\n }),\n takeUntilDestroyed(this.dr)\n )\n .subscribe();\n }\n\n private _getSelectedItemIDs(searchValue?: string): string[] | undefined {\n if (!searchValue || searchValue === '') {\n return this.value?.filter((elem) => elem.id !== SELECT_ALL_ID).map((val: any) => val.id);\n }\n\n return;\n }\n\n private _buildSelectedItemIdsWhere(\n where: any,\n selectedItemIDs: string[] | undefined,\n idField: string\n ): object | undefined {\n if (where && selectedItemIDs && selectedItemIDs.length > 0) {\n return { _and: [{ [idField]: { _in: selectedItemIDs } }, where] };\n }\n return;\n }\n\n private _handleResults(\n data: any,\n idField: string,\n valueField: string,\n selectedItemIDs: string[] | undefined\n ): void {\n this.items = data.data.map((item: any) => ({\n ...item,\n id: item[idField] ?? '',\n name: this._getNameFromField(item, valueField),\n }));\n\n if (this.itemSelectAll() && this.items.length > 0) {\n this.items.unshift(this.selectAllItem);\n }\n\n this._updateControlValues(data, idField, valueField, selectedItemIDs);\n }\n\n private _updateControlValues(\n data: any,\n idField: string,\n valueField: string,\n selectedItemIDs: string[] | undefined\n ): void {\n const idsSelectedValues = new Set(this.value?.map((val: any) => val[idField]) ?? []);\n const availableItems =\n data.selectedIdsQuery\n ?.filter((item: any) => idsSelectedValues.has(item[idField]))\n .map((item: any) => ({\n ...item,\n id: item[idField] ?? '',\n name: this._getNameFromField(item, valueField),\n })) ?? [];\n\n if (selectedItemIDs && selectedItemIDs.length > 0 && availableItems.length > 0) {\n this.control?.setValue(availableItems, { emitEvent: !this.itemSelectAll });\n }\n\n const itemsThatDontExist = availableItems.filter(\n (new_item: any) => !this.items?.some((value: any) => value.id === new_item.id)\n );\n\n this.items.push(...itemsThatDontExist);\n this.itemsChange.emit(this.items);\n }\n\n private _getNameFromField(item: any, field: string): string {\n if (field.includes('.')) {\n return this._getNameFromDeepField(item, field);\n }\n return this.formatShowedValue(item, field);\n }\n\n private _getNameFromDeepField(item: any, field: string): string {\n const deepFields = field.split('.');\n let tempObject = { ...item };\n\n for (const deepField of deepFields) {\n tempObject = tempObject[deepField];\n }\n\n return tempObject;\n }\n\n protected onSearch(value: string | null): void {\n if (this.searchable) {\n this.onSearch$.next(value ?? '');\n }\n }\n\n protected getListLength(list: IFilterSelectValue[]): string {\n const length = list.some((item) => item?.id === SELECT_ALL_ID) ? list.length - 1 : list.length;\n return length === 1 ? '' : String(length);\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"value ? showedValueTemplate : emptyTemplate\">\n <ng-template #showedValueTemplate>\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <pre class=\"value\">{{ showedValue }}</pre>\n </ng-template>\n <ng-template ngSwitchDefault>\n <div class=\"value\" [tuiHint]=\"showedValue\">\n <span>{{ showedValue }}</span>\n </div>\n </ng-template>\n </ng-container>\n </ng-template>\n <ng-template #emptyTemplate>\n <span class=\"value\">-</span>\n </ng-template>\n </ng-container>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n <tui-icon\n *ngIf=\"hint\"\n icon=\"assets/ngx-register-base/icons/circle-info-empty.svg\"\n [tuiHint]=\"hint\"\n class=\"hintIcon\"\n ></tui-icon>\n </div>\n <tui-multi-select\n [formControl]=\"control\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"true\"\n tuiAppearance=\"sproc-input-appearance\"\n [valueContent]=\"valueContent\"\n tuiTextfieldSize=\"m\"\n [stringify]=\"stringify()\"\n [identityMatcher]=\"identityMatcher()\"\n (searchChange)=\"onSearch($event)\"\n [editable]=\"searchable\"\n >\n <span class=\"placeholder\">{{ placeholder() }}</span>\n\n <tui-data-list-wrapper\n *tuiDataList\n tuiMultiSelectGroup\n [items]=\"items\"\n [itemContent]=\"listItemTemplate ?? itemContent\"\n ></tui-data-list-wrapper>\n </tui-multi-select>\n\n <ng-template #itemContent let-data>\n {{ data.name }}\n </ng-template>\n <ng-template #valueContent let-list>\n @let isSingle = list.length === 1;\n <span [class]=\"isSingle ? 'choosed choosed-one' : 'choosed choosed-many'\">\n {{ isSingle ? list[0].name : shortPickedLength() ? 'Выбрано: ' : null }}\n {{ getListLength(list) }}\n </span>\n </ng-template>\n </div>\n </ng-template>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n forwardRef,\n input,\n OnDestroy,\n Output,\n signal,\n} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n tap,\n} from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n TUI_ITEMS_HANDLERS,\n TuiAppearance,\n TuiDropdown,\n TuiHint,\n TuiLoader,\n TuiTextfield,\n} from '@taiga-ui/core';\nimport {\n TuiChevron,\n TuiComboBox,\n TuiDataListWrapper,\n TuiFilterByInputPipe,\n TuiSelect,\n} from '@taiga-ui/kit';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common';\nimport { TuiStringMatcher } from '@taiga-ui/cdk';\nimport { ParamInvalidIconComponent } from '../sub-components/param-invalid-icon/param-invalid-icon.component';\nimport { FastQueryStore } from '../../../store/fast-query-store.service';\nimport { ParamSelectBase } from '../../../core/param/param-select-base';\nimport { IFilterSelectValue } from '../../../types/params.types';\nimport { PARAM_SEARCH_INPUT_DEBOUNCE_TIME_MLS } from '../../../consts/params.consts';\n\n@Component({\n selector: 'sproc-param-select',\n templateUrl: './param-select.component.html',\n styleUrls: ['./param-select.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n FastQueryStore,\n {\n provide: TUI_ITEMS_HANDLERS,\n deps: [forwardRef(() => ParamSelectComponent)],\n useFactory: (component: ParamSelectComponent) => ({\n stringify: component.stringify,\n identityMatcher: component.identityMatcher,\n disabledItemHandler: signal(() => false),\n }),\n },\n ],\n standalone: true,\n imports: [\n TuiTextfield,\n TuiAppearance,\n TuiTextfieldControllerModule,\n ReactiveFormsModule,\n TuiDataListWrapper,\n TuiFilterByInputPipe,\n NgTemplateOutlet,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n TuiComboBox,\n ParamInvalidIconComponent,\n NgIf,\n TuiSelect,\n TuiDropdown,\n TuiLoader,\n TuiChevron,\n TuiHint,\n ],\n})\nexport class ParamSelectComponent\n extends ParamSelectBase<IFilterSelectValue | null, IFilterSelectValue | null>\n implements OnDestroy\n{\n override placeholder = input('Выберите значение');\n readonly stringify = input<(item: IFilterSelectValue) => string>((item) =>\n String(item.name ?? '')\n );\n readonly identityMatcher = input<(a: IFilterSelectValue, b: IFilterSelectValue) => boolean>(\n (a, b) => a.id === b.id\n );\n readonly matcher = input<TuiStringMatcher<IFilterSelectValue>>(\n (item: IFilterSelectValue, query: string) => {\n if (!query || String(query).trim() === '') {\n return true;\n }\n return String(item?.name ?? '')\n .toLowerCase()\n .includes(String(query).toLowerCase());\n }\n );\n override buildShowedValue = input(\n (value: IFilterSelectValue | null): string => value?.name ?? '-'\n );\n public strict = input<boolean>(true);\n\n @Output() onSelect = new EventEmitter<IFilterSelectValue>();\n\n protected readonly search$ = new BehaviorSubject<string | undefined>(undefined);\n\n public override afterViewInit(): void {\n this._observeFetchItems();\n if (this.meta) {\n this._subscribeOnMetaChanges();\n this._subscribeOnSearch();\n }\n }\n\n public ngOnDestroy(): void {\n this.search$.complete();\n }\n\n private _subscribeOnSearch(): void {\n this.search$\n .pipe(debounceTime(PARAM_SEARCH_INPUT_DEBOUNCE_TIME_MLS), takeUntilDestroyed(this.dr))\n .subscribe((searchValue: string | undefined) => {\n this.fetchItems(searchValue);\n });\n }\n\n private _observeFetchItems(): void {\n this._observeValueFill();\n this._observeEmptyValue();\n this._observeValueFetch();\n }\n\n private _observeValueFill(): void {\n this.control.valueChanges\n .pipe(\n filter(Boolean),\n filter((value) => !value.name),\n takeUntilDestroyed(this.dr)\n )\n .subscribe((value) => {\n const id = this._getIdFromValue(value);\n const filledValue = this.items.find((item) => item.id === id);\n\n if (filledValue) {\n this.control.setValue(filledValue, { emitEvent: false });\n }\n });\n }\n\n private _observeEmptyValue(): void {\n this.control.valueChanges\n .pipe(\n filter((value) => value === null),\n takeUntilDestroyed(this.dr)\n )\n .subscribe(() => {\n this.search$.next('');\n this.fetchItems();\n });\n }\n\n private _observeValueFetch(): void {\n combineLatest([\n this.control.valueChanges.pipe(\n map((value) => value?.id ?? null),\n distinctUntilChanged(),\n filter((id) => !this.items.some((item) => item.id === id))\n ),\n this.meta$,\n ])\n .pipe(takeUntilDestroyed(this.dr))\n .subscribe(() => this.fetchItems());\n }\n\n private _getIdFromValue(value: unknown): string | number | null {\n return typeof value === 'object' && value !== null\n ? ((value as { id?: string | number }).id ?? null)\n : (value as string | number | null);\n }\n\n private _subscribeOnMetaChanges(): void {\n this.meta$.pipe(takeUntilDestroyed(this.dr)).subscribe(() => {\n this.fetchItems();\n });\n }\n\n protected fetchItems(searchValue?: string): void {\n const { idField, valueField } = this.metaFields;\n\n if (!this.meta?.table?.name || idField === null || valueField === null) {\n return;\n }\n\n const selectedItemIDs = this._getSelectedItemIDs(searchValue);\n\n this.loading = true;\n const where = this.buildWhere(searchValue);\n const selectedItemIdsWhere = this._buildSelectedItemIdsWhere(where, selectedItemIDs, idField);\n\n this.store\n .getResults(\n {\n table: this.meta.table,\n where,\n order_by: this.meta.order_by,\n offset: this.meta.offset,\n distinct_on: this.meta.distinct_on,\n subquery: this.meta.subquery,\n limit: this.meta.limit ?? this.limit,\n },\n true,\n selectedItemIdsWhere\n )\n .pipe(\n tap((data) => {\n this._handleResults(data, idField, valueField, selectedItemIDs);\n }),\n tap(() => {\n this.loading = false;\n this.cdr.markForCheck();\n }),\n takeUntilDestroyed(this.dr)\n )\n .subscribe();\n }\n\n private _getSelectedItemIDs(searchValue?: string): string[] | undefined {\n if (this.value && (!searchValue || searchValue === '')) {\n const idField = this.meta?.table.idField ?? 'id';\n return [this.value[idField]];\n }\n\n return undefined;\n }\n\n private _buildSelectedItemIdsWhere(\n where: any,\n selectedItemIDs: string[] | undefined,\n idField: string\n ): object | undefined {\n if (where && selectedItemIDs && selectedItemIDs.length > 0 && selectedItemIDs[0]) {\n return { _and: [{ [idField]: { _in: selectedItemIDs } }, where] };\n }\n\n return undefined;\n }\n\n private _handleResults(\n data: any,\n idField: string,\n valueField: string,\n selectedItemIDs: string[] | undefined\n ): void {\n this.items = data.data.map((item: any) => ({\n ...item,\n id: item[idField] ?? '',\n name: this._getNameFromField(item, valueField),\n }));\n\n this._updateControlValues(data, idField, valueField, selectedItemIDs);\n }\n\n private _getNameFromField(item: any, field: string): string {\n if (field.includes('.')) {\n return this._getNameFromDeepField(item, field);\n }\n\n return this.formatShowedValue(item, field);\n }\n\n private _getNameFromDeepField(item: any, field: string): string {\n const deepFields = field.split('.');\n let tempObject = { ...item };\n\n for (const deepField of deepFields) {\n tempObject = tempObject[deepField];\n }\n\n return tempObject;\n }\n\n private _updateControlValues(\n data: any,\n idField: string,\n valueField: string,\n selectedItemIDs: string[] | undefined\n ): void {\n const idSelectedValue = this.value?.[idField];\n const availableItems =\n data.selectedIdsQuery\n ?.filter((item: any) => idSelectedValue === item[idField])\n .map((item: any) => ({\n ...item,\n id: item[idField] ?? '',\n name: this._getNameFromField(item, valueField),\n })) ?? [];\n\n if (selectedItemIDs && selectedItemIDs.length > 0 && availableItems.length > 0) {\n const [item] = availableItems;\n this.control?.setValue(item);\n }\n\n const itemsThatDontExist = availableItems.filter(\n (new_item: any) => !this.items.some((value: any) => value.id === new_item.id)\n );\n\n this.items.push(...itemsThatDontExist);\n this.itemsChange.emit(this.items);\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n }\n <div [tuiHint]=\"value && showedValue !== '-' ? hintContent : undefined\" class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n @if (searchable) {\n <tui-textfield\n tuiTextfieldSize=\"m\"\n tuiAppearance=\"sproc-input-appearance\"\n tuiChevron\n [tuiTextfieldCleaner]=\"true\"\n [tuiHint]=\"value && showedValue !== '-' ? hintContent : undefined\"\n tuiHintDirection=\"top\"\n [content]=\"valueTemplate\"\n >\n <input\n (input)=\"search$.next($any($event.target).value)\"\n tuiComboBox\n [strict]=\"strict()\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"control\"\n />\n\n <tui-loader [showLoader]=\"loading\" [overlay]=\"true\">\n <tui-data-list-wrapper\n new\n *tuiTextfieldDropdown\n [items]=\"items | tuiFilterByInput: matcher()\"\n [itemContent]=\"listItemTemplate ?? dropdownOptionContent\"\n [tuiDropdownMaxHeight]=\"maxDropdownHeight\"\n (itemClick)=\"onSelect.emit($event)\"\n />\n </tui-loader>\n\n <ng-container *ngTemplateOutlet=\"textfieldIcons\"></ng-container>\n </tui-textfield>\n } @else {\n <tui-textfield\n tuiTextfieldSize=\"m\"\n tuiAppearance=\"sproc-input-appearance\"\n tuiChevron\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"true\"\n [tuiHint]=\"value && showedValue !== '-' ? hintContent : undefined\"\n tuiHintDirection=\"top\"\n [content]=\"valueTemplate\"\n [tuiDropdownMaxHeight]=\"maxDropdownHeight\"\n >\n <input tuiSelect [placeholder]=\"placeholder()\" [formControl]=\"control\" />\n\n <tui-loader [showLoader]=\"loading\" [overlay]=\"true\">\n <tui-data-list-wrapper\n new\n *tuiTextfieldDropdown\n [items]=\"items\"\n [itemContent]=\"listItemTemplate ?? dropdownOptionContent\"\n (itemClick)=\"onSelect.emit($event)\"\n />\n </tui-loader>\n\n <ng-container *ngTemplateOutlet=\"textfieldIcons\"></ng-container>\n </tui-textfield>\n }\n <ng-template #dropdownOptionContent let-data>\n <div>\n {{ stringify()(data) }}\n </div>\n </ng-template>\n\n <ng-template #textfieldIcons>\n <div class=\"textfield-icons-container\">\n @if (isInvalidAndNotPristine) {\n <sproc-param-invalid-icon></sproc-param-invalid-icon>\n }\n </div>\n </ng-template>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #hintContent> {{ showedValue }} </ng-template>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { PrizmSwitcherItem } from '@prizm-ui/components';\nimport { ParamBase } from '../../../core';\n\n@Component({\n selector: 'sproc-param-switcher',\n templateUrl: './param-switcher.component.html',\n styleUrls: ['./param-switcher.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamSwitcherComponent extends ParamBase<number, number> {\n @Input() switchers: PrizmSwitcherItem[] = [];\n}\n","<div class=\"param-switcher\">\n <div *ngIf=\"label\" class=\"label\">\n <span *ngIf=\"label\" class=\"label__text\">{{ label }}</span>\n <span *ngIf=\"required\" class=\"label--required\">*</span>\n </div>\n\n <prizm-switcher [formControl]=\"control\" [switchers]=\"switchers\"></prizm-switcher>\n</div>\n","export enum ESwitcherValue {\n MONTH,\n FIRST,\n SECOND,\n THIRD,\n FOURTH,\n YEAR,\n}\n","import { PrizmSwitcherItem } from '@prizm-ui/components';\nimport { ESwitcherValue } from '../types/param-switcher-date-time-range.types';\n\nexport const SwitcherItems: PrizmSwitcherItem[] = [\n {\n id: ESwitcherValue.MONTH,\n title: 'мес',\n },\n {\n id: ESwitcherValue.FIRST,\n title: '1 кв',\n },\n {\n id: ESwitcherValue.SECOND,\n title: '2 кв',\n },\n {\n id: ESwitcherValue.THIRD,\n title: '3 кв',\n },\n {\n id: ESwitcherValue.FOURTH,\n title: '4 кв',\n },\n {\n id: ESwitcherValue.YEAR,\n title: 'год',\n },\n];\n","import { Component } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport {\n PrizmDateTimeRange,\n PrizmDay,\n PrizmDayRange,\n PrizmTime,\n PrizmTimeRange,\n} from '@prizm-ui/components';\nimport { SwitcherItems } from './consts/param-switcher-date-time-range.consts';\nimport { ESwitcherValue } from './types/param-switcher-date-time-range.types';\nimport { ParamDateTimeRangeComponent } from '../param-date-time-range/param-date-time-range.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { EMonth } from '../../../consts/month.consts';\n\n@Component({\n selector: 'sproc-param-switcher-date-time-range',\n templateUrl: './param-switcher-date-time-range.component.html',\n styleUrls: ['./param-switcher-date-time-range.component.less'],\n})\nexport class ParamSwitcherDateTimeRangeComponent extends ParamDateTimeRangeComponent {\n protected switcherControl = new FormControl<ESwitcherValue | null>(null);\n protected switchers = SwitcherItems;\n\n public override onInit(): void {\n super.onInit();\n this._subscribeOnSwitcher();\n }\n\n public override afterViewInit(): void {\n super.afterViewInit();\n this.switcherControl.setValue(ESwitcherValue.MONTH);\n }\n\n private _subscribeOnSwitcher(): void {\n this.switcherControl.valueChanges\n .pipe(takeUntilDestroyed(this.dr))\n .subscribe((switcherValue) => {\n const now = new Date();\n const year = now.getFullYear();\n const month: EMonth = now.getMonth();\n\n let controlValue: PrizmDateTimeRange | null = null;\n\n if (switcherValue === ESwitcherValue.MONTH) {\n controlValue = this._calcMonthRange(year, month);\n } else if (switcherValue === ESwitcherValue.FIRST) {\n controlValue = this._calcFirstQuarterRange(year);\n } else if (switcherValue === ESwitcherValue.SECOND) {\n controlValue = this._calcSecondQuarterRange(year);\n } else if (switcherValue === ESwitcherValue.THIRD) {\n controlValue = this._calcThirdQuarterRange(year);\n } else if (switcherValue === ESwitcherValue.FOURTH) {\n controlValue = this._calcFourthQuarterRange(year);\n } else if (switcherValue === ESwitcherValue.YEAR) {\n controlValue = this._calcYearRange(year);\n }\n\n this.control.setValue(controlValue);\n });\n }\n\n private _calcMonthRange(year: number, month: EMonth): PrizmDateTimeRange {\n const from = new Date(year, month, 1);\n const to = new Date(year, month);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n private _calcFirstQuarterRange(year: number): PrizmDateTimeRange {\n const from = new Date(year, EMonth.JAN, 1);\n const to = new Date(year, EMonth.MAR);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n private _calcSecondQuarterRange(year: number): PrizmDateTimeRange {\n const from = new Date(year, EMonth.APR, 1);\n const to = new Date(year, EMonth.JUN);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n private _calcThirdQuarterRange(year: number): PrizmDateTimeRange {\n const from = new Date(year, EMonth.JUL, 1);\n const to = new Date(year, EMonth.SEP);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n private _calcFourthQuarterRange(year: number): PrizmDateTimeRange {\n const from = new Date(year, EMonth.OCT, 1);\n const to = new Date(year, EMonth.DEC);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n\n private _calcYearRange(year: number): PrizmDateTimeRange {\n const from = new Date(year, EMonth.JAN, 1);\n const to = new Date(year, EMonth.DEC);\n to.setMonth(to.getMonth() + 1);\n to.setMilliseconds(to.getMilliseconds() - 1);\n\n return new PrizmDateTimeRange(\n new PrizmDayRange(PrizmDay.fromLocalNativeDate(from), PrizmDay.fromLocalNativeDate(to)),\n new PrizmTimeRange(PrizmTime.fromLocalNativeDate(from), PrizmTime.fromLocalNativeDate(to))\n );\n }\n}\n","<div class=\"param-custom-template\">\n <div *ngIf=\"label\" class=\"label\">\n <span *ngIf=\"label\" class=\"label__text\">{{ label }}</span>\n <span *ngIf=\"required\" class=\"label--required\">*</span>\n </div>\n\n <prizm-switcher [switchers]=\"switchers\" [formControl]=\"switcherControl\"></prizm-switcher>\n\n <prizm-input-layout class=\"flex-shrink--zero\" size=\"s\" [forceClear]=\"forceClear\">\n <prizm-input-layout-date-time-range\n [placeholder]=\"placeholder()\"\n [timeMode]=\"timeMode\"\n [maxLength]=\"maxLength\"\n [min]=\"$any(min)\"\n [max]=\"$any(max)\"\n [formControl]=\"control\"\n ></prizm-input-layout-date-time-range>\n </prizm-input-layout>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common';\nimport { TuiAppearance, TuiHint, TuiTextfield } from '@taiga-ui/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { MaskitoOptions } from '@maskito/core';\nimport { MaskitoDirective } from '@maskito/angular';\nimport { ParamInvalidIconComponent } from '../sub-components/param-invalid-icon/param-invalid-icon.component';\nimport { ParamTextBase } from '../../../core/param';\n\n@Component({\n selector: 'sproc-param-text',\n templateUrl: './param-text.component.html',\n styleUrls: ['./param-text.component.less'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n NgIf,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n TuiTextfield,\n ParamInvalidIconComponent,\n ReactiveFormsModule,\n TuiHint,\n TuiTextfieldControllerModule,\n TuiAppearance,\n MaskitoDirective,\n ],\n})\nexport class ParamTextComponent extends ParamTextBase {\n public maskOptions = input<MaskitoOptions | null>(null);\n /** сообщение об ошибке для текстового поля */\n public errorMessage = input<string>('');\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\" [tuiHint]=\"value && showedValue !== '-' ? hintContent : undefined\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n @if (errorMessage() && control.invalid) {\n <div class=\"errorMessage\">{{ errorMessage() }}</div>\n }\n </div>\n\n <tui-textfield\n tuiAppearance=\"sproc-input-appearance\"\n tuiTextfieldSize=\"m\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"forceClear\"\n [tuiHint]=\"value && showedValue !== '-' ? hintContent : undefined\"\n tuiHintDirection=\"top\"\n >\n <input\n tuiTextfield\n [formControl]=\"control\"\n [maskito]=\"maskOptions()\"\n [placeholder]=\"placeholder()\"\n [maxLength]=\"maxLength()\"\n />\n <div class=\"textfield-icons-container\">\n @if (isInvalidAndNotPristine) {\n <sproc-param-invalid-icon></sproc-param-invalid-icon>\n }\n </div>\n </tui-textfield>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #hintContent> {{ showedValue }} </ng-template>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TuiAppearance, TuiHint, TuiTextfield } from '@taiga-ui/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { TuiTextarea, TuiTextareaLimit } from '@taiga-ui/kit';\nimport { ParamInvalidIconComponent } from '../sub-components/param-invalid-icon/param-invalid-icon.component';\nimport { ParamTextBase } from '../../../core/param';\n\n@Component({\n selector: 'sproc-param-textarea',\n templateUrl: './param-textarea.component.html',\n styleUrls: ['./param-textarea.component.less'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgTemplateOutlet,\n TuiTextfield,\n ParamInvalidIconComponent,\n ReactiveFormsModule,\n TuiHint,\n TuiTextfieldControllerModule,\n TuiAppearance,\n TuiTextarea,\n TuiTextareaLimit,\n ],\n})\nexport class ParamTextareaComponent extends ParamTextBase {\n /** Минимальное кол-во строк в инпуте */\n public min = input(6);\n /** Максимальное кол-во строк в инпуте */\n public max = input(6);\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n @switch (paramStyle) {\n @case ('filter') {\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n }\n @default {\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n }\n }\n }\n <div class=\"value\">\n <span [tuiHint]=\"value && showedValue !== '-' ? showedValue : undefined\">{{\n showedValue\n }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n <div class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n }\n <tui-textfield\n tuiAppearance=\"sproc-input-appearance\"\n tuiTextfieldSize=\"m\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"forceClear\"\n [tuiHint]=\"value && showedValue !== '-' ? hintContent : undefined\"\n >\n <textarea\n tuiTextarea\n tuiTextfieldSize=\"m\"\n [formControl]=\"control\"\n [max]=\"max()\"\n [min]=\"min()\"\n [maxLength]=\"maxLength()\"\n [limit]=\"maxLength()\"\n [placeholder]=\"placeholder()\"\n ></textarea>\n <div class=\"textfield-icons-container\">\n @if (isInvalidAndNotPristine) {\n <sproc-param-invalid-icon></sproc-param-invalid-icon>\n }\n </div>\n </tui-textfield>\n\n <ng-template #hintContent> {{ showedValue }} </ng-template>\n </div>\n </ng-template>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { ParamBase } from '../../../core/param/param-base';\nimport { TuiSizeM, TuiSizeS } from '@taiga-ui/core';\n\n@Component({\n selector: 'sproc-param-toggle',\n templateUrl: './param-toggle.component.html',\n styleUrls: ['./param-toggle.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamToggleComponent extends ParamBase<boolean, boolean> {\n public override buildShowedValue = input((value: boolean): string => (value ? 'Да' : 'Нет'));\n public size = input<TuiSizeS | TuiSizeM>('s');\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n <ng-container *ngIf=\"label\">\n <ng-container [ngSwitch]=\"paramStyle\">\n <ng-template ngSwitchCase=\"filter\">\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n </ng-template>\n <ng-template ngSwitchDefault>\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </ng-template>\n </ng-container>\n </ng-container>\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit empty-switcher\" [attr.sproc-param-style]=\"paramStyle\">\n <div *ngIf=\"label\" class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n\n <input\n tuiSwitch\n type=\"checkbox\"\n [size]=\"size()\"\n class=\"card-toggle-button\"\n [formControl]=\"control\"\n />\n </div>\n </ng-template>\n</ng-container>\n","import { ParamTreeService } from '../services/param-tree.service';\nimport { ITreeNode } from '../types/param-tree.types';\n\nexport const TREE_LOADING_NODE: ITreeNode = { name: 'LOADING' };\n\nexport const DEBOUNCE_TIME_FOR_SYNC_NEXT_VALUES = 250;\n\nexport const notEmpty: (children?: ITreeNode[]) => boolean = (children) =>\n !!children && children.length > 0 && children[0] !== TREE_LOADING_NODE;\n\nfunction getCurrentChildren<T>(node: ITreeNode<T>, service: ParamTreeService<T>): ITreeNode<T>[] {\n const serviceChildren = service.getChildren(node);\n if (notEmpty(serviceChildren)) {\n return serviceChildren;\n }\n\n return [];\n}\n\nexport function treeNodesFlatten<T>(\n node: ITreeNode<T>,\n service: ParamTreeService<T>\n): ITreeNode<T>[] {\n const children = getCurrentChildren(node, service);\n const flattenedChildren: ITreeNode<T>[] = [node];\n\n for (const child of children) {\n const flattened = treeNodesFlatten<T>(child, service);\n flattenedChildren.push(...flattened);\n }\n\n return flattenedChildren;\n}\n\nexport function updatesCheckedNodesEqual<T>(\n prev: ITreeNode<T>[] | undefined,\n curr: ITreeNode<T>[] | undefined,\n service: ParamTreeService<T>\n): boolean {\n if (!prev && !curr) {\n return true;\n }\n\n if (!prev || !curr) {\n return false;\n }\n\n if (prev.length !== curr.length) {\n return false;\n }\n\n for (const [i] of prev.entries()) {\n if (!service.equals(prev[i], curr[i])) {\n return false;\n }\n }\n\n return true;\n}\n","import { InjectionToken } from '@angular/core';\nimport { SmaTreeLoader } from '../types/param-tree.types';\n\nexport const TREE_LOADER = new InjectionToken<SmaTreeLoader<unknown>>('SMA_TREE_LOADER');\n","import { DestroyRef, inject, Injectable, signal } from '@angular/core';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n debounceTime,\n EMPTY,\n expand,\n filter,\n from,\n iif,\n map,\n mergeMap,\n Observable,\n of,\n Subject,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport { TUI_TREE_LOADING, TUI_TREE_START } from '@taiga-ui/kit';\nimport { startWith } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ILoadConfig, ITreeNode, SmaTreeLoader } from '../types/param-tree.types';\nimport { TREE_LOADER } from '../tokens/param-tree.tokens';\nimport { just } from '../../../../utils';\nimport { DEBOUNCE_TIME_FOR_SYNC_NEXT_VALUES } from '../consts/param-tree.consts';\n\n@Injectable()\nexport class ParamTreeService<T> {\n private readonly _loading = inject<ITreeNode<T>>(TUI_TREE_LOADING);\n private readonly _start$ = inject<ITreeNode<T>>(TUI_TREE_START, { optional: true });\n private readonly _loader = inject<SmaTreeLoader<ITreeNode<T>>>(TREE_LOADER);\n private readonly _destroyRef = inject(DestroyRef);\n\n private readonly _loaderNode$ = new Subject<ITreeNode<T>>();\n private readonly _defaultNodeOpenedState$ = new BehaviorSubject<boolean | undefined>(undefined);\n private readonly _lastCheckedNode$ = new BehaviorSubject<ITreeNode<T> | null>(null);\n private readonly _load$ = new Subject<ILoadConfig<T>>();\n private readonly _parentChildrenMap = new Map<ITreeNode<T>, ITreeNode<T>[]>([\n [this._loading, []],\n ]);\n private readonly _nodes$ = new BehaviorSubject<ITreeNode<T>[]>([]);\n private readonly _loadedChildren$ = new Subject<ITreeNode<T>[]>();\n\n public readonly defaultNodeOpenedState$ = this._defaultNodeOpenedState$.asObservable();\n public readonly lastCheckedNode$ = this._lastCheckedNode$.asObservable();\n public readonly loaderNode$ = this._loaderNode$.asObservable();\n\n public readonly openedNodesState = signal(new Map<ITreeNode<T>, boolean>());\n public readonly checkedNodesState = signal(new Map<ITreeNode<T>, boolean | null>());\n\n private _firstLevelNodes: ITreeNode<T>[] = this._start$ ? [this._start$] : [];\n private _firstLevelNodesLoaded = false;\n\n public readonly nodes$ = this._nodes$.asObservable();\n\n constructor() {\n this._load$\n .pipe(\n mergeMap((load) =>\n this._load(load.node, !load.config?.initial).pipe(\n map((firstLevelNodes) => ({ load, firstLevelNodes }))\n )\n ),\n tap(({ load: { config }, firstLevelNodes }) => {\n if (config?.initial) {\n this._firstLevelNodes = firstLevelNodes ?? [];\n }\n }),\n mergeMap(({ load }) =>\n iif(() => !!load.config?.opened, this._recursiveLoad(load.node), just())\n ),\n map(() => this._firstLevelNodes),\n startWith([this._loading]),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((nodes) => {\n this._nodes$.next(nodes);\n });\n\n combineLatest([this.loaderNode$, this.defaultNodeOpenedState$])\n .pipe(debounceTime(DEBOUNCE_TIME_FOR_SYNC_NEXT_VALUES), takeUntilDestroyed(this._destroyRef))\n .subscribe(([loader, opened]) => {\n this.loadFirstLevelNodes(loader, opened);\n });\n }\n\n private _recursiveLoad(startedNode: ITreeNode<T>) {\n return of(startedNode).pipe(\n expand((node) => {\n if (this.hasChildren(node)) {\n return this._load(node).pipe(\n switchMap((children) => from(children)),\n catchError(() => EMPTY)\n );\n }\n\n if (node.children) {\n return from(node.children);\n }\n\n return EMPTY;\n })\n );\n }\n\n public loadFirstLevelNodes(node: ITreeNode<T>, opened: boolean = true): void {\n if (!this._firstLevelNodesLoaded) {\n this._load$.next({ node, config: { initial: true, opened } });\n this._firstLevelNodesLoaded = true;\n }\n }\n\n private _load(node: ITreeNode<T>, setChildren = true): Observable<ITreeNode<T>[]> {\n return this._loader.loadChildren(node).pipe(\n tap((children) => {\n if (setChildren) {\n for (const child of children) {\n child.parent = node;\n }\n node.children = children;\n this._parentChildrenMap.set(node, children);\n this._loadedChildren$.next(children);\n }\n\n const childfree = [node, ...children].filter((item) => !this.hasChildren(item));\n for (const item of childfree) {\n this._parentChildrenMap.set(item, []);\n }\n })\n );\n }\n\n public loadChildren(node: ITreeNode<T>): Observable<ITreeNode<T>[]> {\n const result = this._loadedChildren$.asObservable().pipe(\n filter(([firstChild]) => firstChild?.parent === node),\n take(1)\n );\n const children = this.getChildren(node);\n\n if (children && children[0] !== this._loading) {\n return of(children);\n }\n\n this._parentChildrenMap.set(node, [this._loading]);\n this._load$.next({ node });\n\n return result;\n }\n\n public getChildren(node: ITreeNode<T>): ITreeNode<T>[] {\n return this._parentChildrenMap.get(node) || [this._loading];\n }\n\n public hasChildren(node: ITreeNode<T>): boolean {\n return this._loader.hasChildren(node);\n }\n\n public getTopLevelNodes(): ITreeNode<T>[] {\n return this._firstLevelNodes;\n }\n\n public setLoaderNode(loaderNode: ITreeNode<T>, defaultNodeOpenedState?: boolean): void {\n this._loaderNode$.next(loaderNode);\n this._defaultNodeOpenedState$.next(defaultNodeOpenedState);\n }\n\n public setLastCheckedNode(node: ITreeNode<T> | null): void {\n this._lastCheckedNode$.next(node);\n }\n\n public equals(node1: ITreeNode<T>, node2: ITreeNode<T>): boolean {\n return this._loader.equals(node1, node2);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { ITreeNode, SmaTreeLoader } from '../types/param-tree.types';\n\n@Injectable()\nexport class SyncTreeLoaderService<T> implements SmaTreeLoader<ITreeNode<T>> {\n public loadChildren({ children }: ITreeNode<T>): Observable<ITreeNode<T>[]> {\n return of(children ?? []);\n }\n\n public hasChildren({ haveChildren }: ITreeNode<T>): boolean {\n return !!haveChildren;\n }\n\n public equals(value1: ITreeNode<T>, value2: ITreeNode<T>): boolean {\n return value1 === value2;\n }\n}\n","import { ITreeNode } from '../types/param-tree.types';\n\ninterface IArgs<T> {\n item: T;\n children?: ITreeNode<T>[];\n}\n\nexport function transformItemToNode<T extends Record<string, any>>({\n item,\n children,\n}: IArgs<T>): ITreeNode<T> {\n return {\n name: item['name'],\n haveChildren: !!children,\n children: children || [],\n data: item,\n };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n output,\n TemplateRef,\n untracked,\n} from '@angular/core';\nimport { TuiCheckbox, TuiTree } from '@taiga-ui/kit';\nimport { TuiLabel, TuiLoader } from '@taiga-ui/core';\nimport { FormsModule } from '@angular/forms';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { EMPTY, expand, filter, from, of, switchMap, take, takeUntil, tap } from 'rxjs';\nimport { ChildrenHandlerType, ITreeNode } from './types/param-tree.types';\nimport { ParamTreeService } from './services/param-tree.service';\nimport {\n TREE_LOADING_NODE,\n treeNodesFlatten,\n updatesCheckedNodesEqual,\n} from './consts/param-tree.consts';\n\n/** Компонент иерархического списка */\n@Component({\n selector: 'sproc-param-tree',\n standalone: true,\n imports: [TuiTree, TuiLabel, TuiCheckbox, FormsModule, AsyncPipe, TuiLoader, NgTemplateOutlet],\n templateUrl: './param-tree.component.html',\n styleUrl: './param-tree.component.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamTreeComponent<T> {\n /**\n * Режим выбора нескольких значений\n *\n * @default Выбор единственного узла */\n public multi = input(false);\n /** Задать выбранные узлы */\n public checkedNodes = input<ITreeNode<T>[]>([]);\n /** Кастомный шаблон узла */\n public nodeTemplate = input<TemplateRef<any> | null>(null);\n\n /** Выбранные узлы верхнего уровня */\n public readonly selectedNodesChange = output<ITreeNode<T>[]>();\n\n private readonly _treeService = inject(ParamTreeService<T>);\n private readonly _dr = inject(DestroyRef);\n\n protected readonly defaultNodeOpenedState = toSignal(this._treeService.defaultNodeOpenedState$);\n protected readonly openedNodesState = this._treeService.openedNodesState;\n protected readonly checkedNodesState = this._treeService.checkedNodesState;\n\n private readonly _lastCheckedNode = toSignal(this._treeService.lastCheckedNode$, {\n initialValue: null,\n });\n private readonly updatesCheckedNodes = computed(() => this.checkedNodes(), {\n equal: (prev, curr) => updatesCheckedNodesEqual(prev, curr, this._treeService),\n });\n\n protected readonly treeNodes$ = this._treeService.nodes$;\n\n protected readonly TREE_LOADER = TREE_LOADING_NODE;\n protected readonly childrenHandler: ChildrenHandlerType<T> = (node) =>\n this._treeService.getChildren(node);\n\n constructor() {\n effect(() => {\n const nodes = this.updatesCheckedNodes();\n\n untracked(() => {\n if (nodes.length === 0) {\n this.checkedNodesState.set(new Map<ITreeNode<T>, boolean | null>());\n } else {\n this._tryToSetNodesRecursive(nodes);\n }\n });\n });\n }\n\n protected getValue(\n currentNode: ITreeNode<T>,\n state: Map<ITreeNode<T>, boolean | null>\n ): boolean | null {\n return this.multi()\n ? this._isSelectedMulti(currentNode, state)\n : this._isSelectedSingle(currentNode, state);\n }\n\n private _isSelectedMulti(\n currentNode: ITreeNode<T>,\n state: Map<ITreeNode<T>, boolean | null>\n ): boolean | null {\n let result: boolean | null = null;\n const flattenNodes = treeNodesFlatten<T>(currentNode, this._treeService);\n const firstNode = flattenNodes[0];\n\n if (firstNode) {\n result = !!state.get(firstNode);\n }\n\n for (const node of flattenNodes) {\n if (result !== !!state.get(node)) {\n const currentLevelNode = flattenNodes.filter((value) => value.parent === node.parent);\n\n return currentLevelNode.every((value) => !!state.get(value)) ? true : null;\n }\n }\n\n return result;\n }\n\n private _isSelectedSingle(\n currentNode: ITreeNode<T>,\n state: Map<ITreeNode<T>, boolean | null>\n ): boolean | null {\n const lastNode = this._lastCheckedNode();\n const flattenNodes = treeNodesFlatten<T>(currentNode, this._treeService);\n const isLinkedNode = flattenNodes.some((node) => !!state.get(node));\n\n if (!isLinkedNode || !lastNode) {\n return false;\n }\n\n return lastNode === currentNode ||\n this._isDeepParent(currentNode, lastNode) ||\n this._isDeepChild(currentNode, lastNode)\n ? true\n : null;\n }\n\n private _isDeepParent(parent: ITreeNode<T>, child: ITreeNode<T>): boolean {\n if (!child.parent) {\n return false;\n }\n\n if (parent === child.parent && parent.children!.length === 1) {\n return true;\n }\n\n if (child.parent.children && child.parent.children.length !== 1) {\n return false;\n }\n\n return this._isDeepParent(parent, child.parent);\n }\n\n private _isDeepChild(child: ITreeNode<T>, parent: ITreeNode<T>): boolean {\n if (!parent.children || parent.children.length === 0) {\n return false;\n }\n\n for (const node of parent.children) {\n if (node === child) {\n return true;\n }\n\n if (this._isDeepChild(child, node)) {\n return true;\n }\n }\n\n return false;\n }\n\n protected onToggle(currentNode: ITreeNode<T>): void {\n this._treeService\n .loadChildren(currentNode)\n .pipe(takeUntilDestroyed(this._dr))\n .subscribe((children) => {\n const parent = children?.[0]?.parent;\n\n if (parent && this.checkedNodesState().get(parent)) {\n for (const child of children) {\n this.checkedNodesState().set(child, true);\n }\n }\n });\n }\n\n protected onChecked = (currentNode: ITreeNode<T>, check: boolean) => {\n this._treeService.setLastCheckedNode(check ? currentNode : null);\n const flattenNodes = treeNodesFlatten<T>(currentNode, this._treeService);\n\n if (this.multi()) {\n for (const node of flattenNodes) {\n this.checkedNodesState().set(node, check);\n }\n } else {\n this.checkedNodesState().clear();\n\n for (const node of flattenNodes) {\n this.checkedNodesState().set(node, true);\n }\n }\n\n this._updateCheckedNodes();\n };\n\n private _updateCheckedNodes(options?: { emitEvent: boolean }): void {\n const topLevelNodes = this._treeService.getTopLevelNodes();\n const state = new Map<ITreeNode<T>, boolean | null>();\n this._calcCheckedStateNodes(topLevelNodes, state);\n this.checkedNodesState.set(state);\n\n if (options?.emitEvent !== false) {\n this.selectedNodesChange.emit(this._findFullySelectedNodes(topLevelNodes));\n }\n }\n\n private _findFullySelectedNodes(nodes: ITreeNode<T>[]): ITreeNode<T>[] {\n const fullySelectedNodes: ITreeNode<T>[] = [];\n\n for (const node of nodes) {\n const checked = this.getValue(node, this.checkedNodesState());\n\n if (checked) {\n fullySelectedNodes.push(node);\n } else if (checked === null) {\n const children = this._treeService.getChildren(node);\n const fullySelectedChildren = this._findFullySelectedNodes(children);\n fullySelectedNodes.push(...fullySelectedChildren);\n }\n }\n\n return fullySelectedNodes;\n }\n\n private _calcCheckedStateNodes(\n nodes: ITreeNode<T>[],\n state: Map<ITreeNode<T>, boolean | null>\n ): void {\n for (const node of nodes) {\n const checked = this.getValue(node, this.checkedNodesState());\n\n if (checked !== false) {\n state.set(node, checked);\n const children = this._treeService.getChildren(node);\n this._calcCheckedStateNodes(children, state);\n }\n }\n }\n\n private _tryToSetNodesRecursive(newNodes: ITreeNode<T>[]): void {\n const topLevelNodes = this._treeService.getTopLevelNodes();\n const searchNodesCompleteState = new Map(newNodes.map((newNode) => [newNode, false]));\n const allComplete = (state: Map<ITreeNode<T>, boolean>) => [...state.values()].every(Boolean);\n const analogNodes: ITreeNode<T>[] = [];\n\n from(topLevelNodes)\n .pipe(\n expand((node) =>\n this._treeService.hasChildren(node)\n ? this._treeService.loadChildren(node).pipe(switchMap((children) => from(children)))\n : EMPTY\n ),\n tap((node) => {\n const foundNode = newNodes.find((newNode) => this._treeService.equals(node, newNode));\n\n if (foundNode) {\n searchNodesCompleteState.set(foundNode, true);\n analogNodes.push(node);\n }\n }),\n filter(() => allComplete(searchNodesCompleteState)),\n take(1),\n // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n takeUntil(of(null).pipe(filter(() => allComplete(searchNodesCompleteState)))),\n takeUntilDestroyed(this._dr)\n )\n .subscribe({\n complete: () => {\n for (const node of analogNodes) {\n this.onChecked(node, true);\n }\n },\n });\n }\n}\n","<div class=\"tree-custom-class__container\">\n @for (node of treeNodes$ | async; track node) {\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\"></tui-loader>\n } @else {\n @if (defaultNodeOpenedState() === undefined) {\n <tui-tree\n class=\"tui_tree--not-collapsed\"\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n >\n </tui-tree>\n } @else {\n <tui-tree\n [value]=\"node\"\n [content]=\"contentTemplate\"\n [childrenHandler]=\"childrenHandler\"\n [tuiTreeController]=\"!!defaultNodeOpenedState()\"\n [map]=\"openedNodesState()\"\n (toggled)=\"onToggle($event)\"\n >\n </tui-tree>\n }\n }\n }\n</div>\n\n<ng-template #contentTemplate let-node>\n @let isChecked = checkedNodesState().get(node);\n\n @if (node === TREE_LOADER) {\n <tui-loader [showLoader]=\"true\" [overlay]=\"true\" size=\"s\"></tui-loader>\n } @else if (nodeTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate()\"\n [ngTemplateOutletContext]=\"{ node, isChecked, onChecked }\"\n ></ng-container>\n } @else {\n <label tuiLabel class=\"tree-custom-class__label-checkbox-container\">\n <input\n size=\"s\"\n tuiCheckbox\n type=\"checkbox\"\n [ngModel]=\"isChecked\"\n (ngModelChange)=\"onChecked(node, $event)\"\n />\n <small>{{ node.name }}</small>\n </label>\n }\n</ng-template>\n","import { Component, effect, inject, Injector, input, signal } from '@angular/core';\nimport { TuiAppearance, TuiHint, TuiIcon, TuiTextfield } from '@taiga-ui/core';\nimport { TUI_TREE_LOADING, TuiChevron, TuiComboBox } from '@taiga-ui/kit';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { ITreeNode } from '../param-tree/types/param-tree.types';\nimport { ParamTreeComponent } from '../param-tree/param-tree.component';\nimport { ParamTreeService } from '../param-tree/services/param-tree.service';\nimport { TREE_LOADING_NODE } from '../param-tree/consts/param-tree.consts';\nimport { FastQueryStore } from '../../../store/fast-query-store.service';\nimport { ParamSelectBase } from '../../../core/param/param-select-base';\nimport { distinctUntilChangedJSONs } from '../../../utils';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type InputTreeSelectSavedValue<T> = ITreeNode<T> & { [key: string]: any };\n\n/** Компонент выбора единственного значения из иерархического списка */\n@Component({\n selector: 'sproc-param-tree-multi-select',\n standalone: true,\n imports: [\n NgTemplateOutlet,\n TuiIcon,\n TuiHint,\n ReactiveFormsModule,\n TuiTextfieldControllerModule,\n ParamTreeComponent,\n TuiAppearance,\n TuiTextfield,\n TuiChevron,\n TuiComboBox,\n ],\n templateUrl: './param-tree-multi-select.component.html',\n styleUrl: './param-tree-multi-select.component.less',\n providers: [\n ParamTreeService,\n { provide: TUI_TREE_LOADING, useValue: TREE_LOADING_NODE },\n FastQueryStore,\n ],\n})\nexport class ParamTreeMultiSelectComponent<T> extends ParamSelectBase<\n ITreeNode<T>[],\n InputTreeSelectSavedValue<T>[]\n> {\n /** Передача загрузочного узла для загрузки начального уровня иерархического списка */\n public loaderNode = input.required<ITreeNode<T>>();\n /**\n * Возможность раскрывать/скрывать узлы иерархического списка.\n * Логическое значение - это значение узла по умолчанию (раскрыты/скрыты).\n *\n * @default Без указания параметра (или значении null) - все узлы раскрыты без возможности изменять состояние.\n * */\n public defaultNodeOpenedState = input<boolean>();\n public stringify = input<(item: ITreeNode<T>) => string>((item) => String(item.name));\n public shortPickedLength = input(true);\n\n public override readonly buildShowedValue = input(\n (values: ITreeNode[]): string => values?.map((v) => v.name).join(',\\n') ?? '-'\n );\n public override placeholder = input('Выберите значения');\n\n private readonly _treeService = inject(ParamTreeService);\n\n protected readonly checkedNodes = signal<ITreeNode<T>[]>([]);\n\n constructor(injector: Injector) {\n super(injector);\n effect(() => {\n this._treeService.setLoaderNode(this.loaderNode(), this.defaultNodeOpenedState());\n });\n }\n\n protected override afterViewInit(): void {\n this._subscribeForUpdateCheckedNodes();\n }\n\n private _subscribeForUpdateCheckedNodes(): void {\n this.control.valueChanges\n .pipe(distinctUntilChangedJSONs(), takeUntilDestroyed(this.dr))\n .subscribe((value) => {\n this.checkedNodes.set(value ?? []);\n });\n }\n\n protected setSelectedNodes(node: ITreeNode<T>[]): void {\n this.control.setValue(node);\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n @switch (paramStyle) {\n @case ('filter') {\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n }\n @default {\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n }\n }\n }\n <ng-container [ngTemplateOutlet]=\"value ? showedValueTemplate : emptyTemplate\">\n <ng-template #showedValueTemplate>\n @switch (paramStyle) {\n @case ('filter') {\n <pre class=\"value\">{{ showedValue }}</pre>\n }\n @default {\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n }\n }\n </ng-template>\n <ng-template #emptyTemplate>\n <span class=\"value\">-</span>\n </ng-template>\n </ng-container>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n <div class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n @if (hint) {\n <tui-icon\n icon=\"assets/ngx-register-base/icons/circle-info-empty.svg\"\n [tuiHint]=\"hint\"\n class=\"hintIcon\"\n ></tui-icon>\n }\n </div>\n }\n <tui-textfield\n tuiChevron\n tuiTextfieldSize=\"m\"\n tuiAppearance=\"sproc-input-appearance\"\n [stringify]=\"stringify()\"\n [tuiTextfieldCleaner]=\"forceClear\"\n [tuiTextfieldLabelOutside]=\"true\"\n [content]=\"valueContent\"\n >\n <input tuiComboBox [placeholder]=\"placeholder()\" [formControl]=\"control\" />\n <ng-container *tuiTextfieldDropdown [ngTemplateOutlet]=\"paramTreeTemplate\"></ng-container>\n </tui-textfield>\n <ng-template #valueContent let-list>\n {{ shortPickedLength() ? 'Выбрано: ' : null }} {{ list.length }}\n </ng-template>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #paramTreeTemplate>\n <sproc-param-tree\n [multi]=\"true\"\n [checkedNodes]=\"checkedNodes()\"\n (selectedNodesChange)=\"setSelectedNodes($event)\"\n ></sproc-param-tree>\n</ng-template>\n","import { Component, effect, inject, Injector, input, signal } from '@angular/core';\nimport { ParamTreeComponent } from '../param-tree/param-tree.component';\nimport { ITreeNode } from '../param-tree/types/param-tree.types';\nimport { TuiAppearance, TuiDropdown, TuiTextfield } from '@taiga-ui/core';\nimport { TUI_TREE_LOADING, TuiChevron, TuiSelect, } from '@taiga-ui/kit';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TREE_LOADING_NODE } from '../param-tree/consts/param-tree.consts';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ParamTreeService } from '../param-tree/services/param-tree.service';\nimport { FastQueryStore } from '../../../store/fast-query-store.service';\nimport { ParamSelectBase } from '../../../core/param/param-select-base';\nimport { distinctUntilChangedJSONs } from '../../../utils';\n\nexport type InputTreeSelectSavedValue<T> = ITreeNode<T> & { [key: string]: any };\n\n/** Компонент выбора единственного значения из иерархического списка */\n@Component({\n selector: 'sproc-param-tree-select',\n standalone: true,\n imports: [\n ParamTreeComponent,\n TuiTextfield,\n TuiSelect,\n TuiChevron,\n FormsModule,\n TuiDropdown,\n ReactiveFormsModule,\n NgTemplateOutlet,\n TuiAppearance,\n TuiTextfieldControllerModule,\n ],\n templateUrl: './param-tree-select.component.html',\n styleUrl: './param-tree-select.component.less',\n providers: [\n ParamTreeService,\n { provide: TUI_TREE_LOADING, useValue: TREE_LOADING_NODE },\n FastQueryStore,\n ],\n})\nexport class ParamTreeSelectComponent<T> extends ParamSelectBase<\n ITreeNode<T>,\n InputTreeSelectSavedValue<T>\n> {\n /** Передача загрузочного узла для загрузки начального уровня иерархического списка */\n public loaderNode = input.required<ITreeNode<T>>();\n /**\n * Возможность раскрывать/скрывать узлы иерархического списка.\n * Логическое значение - это значение узла по умолчанию (раскрыты/скрыты).\n *\n * @default Без указания параметра (или значении null) - все узлы раскрыты без возможности изменять состояние.\n * */\n public defaultNodeOpenedState = input<boolean>();\n\n public stringify = input<(item: ITreeNode<T>) => string>((item) => String(item.name));\n\n public override buildShowedValue = input((value: ITreeNode<T>): string => value?.name ?? '-');\n public override placeholder = input('Выберите значение');\n\n private readonly _treeService = inject(ParamTreeService);\n\n protected readonly checkedNodes = signal<ITreeNode<T>[]>([]);\n\n constructor(injector: Injector) {\n super(injector);\n effect(() => {\n this._treeService.setLoaderNode(this.loaderNode(), this.defaultNodeOpenedState());\n });\n }\n\n protected override afterViewInit(): void {\n this._subscribeForUpdateCheckedNodes();\n }\n\n private _subscribeForUpdateCheckedNodes(): void {\n this.control.valueChanges\n .pipe(distinctUntilChangedJSONs(), takeUntilDestroyed(this.dr))\n .subscribe((value) => {\n if (value) {\n this.checkedNodes.set([value]);\n } else {\n this.checkedNodes.set([]);\n }\n });\n }\n\n protected setSelectedNodes([node]: ITreeNode<T>[]): void {\n this.control.setValue(node ?? null);\n }\n}\n","<ng-container [ngTemplateOutlet]=\"readmode ? readTemplate : editTemplate\">\n <ng-template #readTemplate>\n <div class=\"container container--read\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n @switch (paramStyle) {\n @case ('filter') {\n <div class=\"label-wrapper\">\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n </div>\n }\n @default {\n <span class=\"label\">{{ label }}</span>\n <div class=\"dashed-row\"></div>\n }\n }\n }\n <div class=\"value\">\n <span>{{ showedValue }}</span>\n </div>\n </div>\n </ng-template>\n <ng-template #editTemplate>\n <div class=\"container container--edit\" [attr.sproc-param-style]=\"paramStyle\">\n @if (label) {\n <div class=\"label-wrapper\" [class.applied]=\"applied()\">\n <span class=\"label\" [class.required]=\"required\">\n {{ label }}\n </span>\n </div>\n }\n <tui-textfield\n tuiChevron\n tuiTextfieldSize=\"m\"\n tuiAppearance=\"sproc-input-appearance\"\n [stringify]=\"stringify()\"\n [tuiTextfieldLabelOutside]=\"forceClear\"\n [tuiTextfieldCleaner]=\"true\"\n [tuiDropdownMaxHeight]=\"maxDropdownHeight\"\n >\n <input tuiSelect [placeholder]=\"placeholder()\" [formControl]=\"control\" />\n <ng-container *tuiTextfieldDropdown [ngTemplateOutlet]=\"paramTreeTemplate\"></ng-container>\n </tui-textfield>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #paramTreeTemplate>\n <sproc-param-tree\n [multi]=\"false\"\n [checkedNodes]=\"checkedNodes()\"\n (selectedNodesChange)=\"setSelectedNodes($event)\"\n ></sproc-param-tree>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, output } from '@angular/core';\nimport { TuiIcon } from '@taiga-ui/core';\n\n@Component({\n selector: 'sproc-param-delete-content-button',\n standalone: true,\n imports: [TuiIcon],\n templateUrl: './param-delete-content-btn.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ParamDeleteContentBtnComponent {\n readonly iconClicked = output<void>();\n}\n","<tui-icon\n class=\"cleaner-icon\"\n (click)=\"iconClicked.emit()\"\n icon=\"assets/ngx-register-base/icons/delete-content.svg\"\n></tui-icon>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ParamSelectComponent } from './param-select/param-select.component';\nimport { ParamMultiSelectComponent } from './param-multi-select/param-multi-select.component';\nimport { ParamDateRangeComponent } from './param-date-range/param-date-range.component';\nimport { ParamMonthComponent } from './param-month/param-month.component';\nimport { ParamMonthRangeComponent } from './param-month-range/param-month-range.component';\nimport { ParamToggleComponent } from './param-toggle/param-toggle.component';\nimport { ParamTextComponent } from './param-text/param-text.component';\nimport { ParamDateTimeRangeComponent } from './param-date-time-range/param-date-time-range.component';\nimport { ParamCustomComponent } from './param-custom/param-custom.component';\nimport { ParamSwitcherComponent } from './param-switcher/param-switcher.component';\nimport { ParamDateComponent } from './param-date/param-date.component';\nimport { ParamSwitcherDateTimeRangeComponent } from './param-switcher-date-time-range/param-switcher-date-time-range.component';\nimport { ParamDateTimeComponent } from './param-date-time/param-date-time.component';\nimport {\n TuiAppearance,\n TuiButton,\n TuiIcon,\n TuiTextfieldComponent,\n TuiTextfieldDirective,\n TuiTextfieldDropdownDirective,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core';\nimport { TuiInputModule, TuiInputYearModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport {\n TuiChevron,\n TuiDataListWrapperComponent,\n TuiFilterByInputPipe,\n TuiSelectDirective,\n TuiSwitch,\n} from '@taiga-ui/kit';\nimport { TuiInputSearch } from '@taiga-ui/layout';\nimport { ParamTextareaComponent } from './param-textarea/param-textarea.component';\nimport { ParamCalendarYearComponent } from './param-calendar-year/param-calendar-year.component';\nimport { FormatDatePipe } from '../../directives/date/format-date.pipe';\nimport { PrizmSharedModule } from '../../utils/prizm.shared.module';\nimport { PrizmInputMultiSelectModule } from '@prizm-ui/components';\nimport { ParamDeleteContentBtnComponent } from './sub-components/param-delete-content-icon/param-delete-content-btn.component';\nimport { ParamInvalidIconComponent } from './sub-components/param-invalid-icon/param-invalid-icon.component';\n\n@NgModule({\n declarations: [\n ParamDateRangeComponent,\n ParamDateTimeComponent,\n ParamMonthComponent,\n ParamMonthRangeComponent,\n ParamToggleComponent,\n ParamDateTimeRangeComponent,\n ParamCustomComponent,\n ParamSwitcherComponent,\n ParamSwitcherDateTimeRangeComponent,\n ParamSwitcherDateTimeRangeComponent,\n ParamCalendarYearComponent,\n ],\n imports: [\n CommonModule,\n ParamTextComponent,\n PrizmSharedModule,\n PrizmInputMultiSelectModule,\n TuiTextfieldComponent,\n TuiTextfieldDirective,\n TuiTextfieldOptionsDirective,\n TuiAppearance,\n TuiInputModule,\n TuiTextfieldControllerModule,\n TuiIcon,\n TuiButton,\n TuiChevron,\n TuiSelectDirective,\n TuiDataListWrapperComponent,\n TuiTextfieldDropdownDirective,\n TuiFilterByInputPipe,\n TuiInputSearch,\n ParamMultiSelectComponent,\n ParamSelectComponent,\n ParamDateComponent,\n TuiSwitch,\n ParamTextareaComponent,\n TuiInputYearModule,\n FormatDatePipe,\n ParamDeleteContentBtnComponent,\n ParamInvalidIconComponent,\n ],\n exports: [\n ParamSelectComponent,\n ParamMultiSelectComponent,\n ParamDateRangeComponent,\n ParamDateTimeComponent,\n ParamMonthComponent,\n ParamMonthRangeComponent,\n ParamToggleComponent,\n ParamTextComponent,\n ParamDateTimeRangeComponent,\n ParamCustomComponent,\n ParamSwitcherComponent,\n ParamDateComponent,\n ParamSwitcherDateTimeRangeComponent,\n ParamSwitcherDateTimeRangeComponent,\n ParamTextareaComponent,\n ParamCalendarYearComponent,\n ],\n})\nexport class InputsModule {}\n","import { ScalarUUID } from 'hasura';\nimport { IClsMenuItem } from '../../page-menu';\n\nexport interface FlatNode {\n id: ScalarUUID;\n id_parent: ScalarUUID | null;\n title: string;\n code: string;\n route: string;\n icon: string;\n order_num: number;\n allowed_roles: string | null;\n depth: number;\n collapsed?: boolean;\n}\n\nexport const ROOT_TITLE = 'root';\n\nexport const NEW_ITEM_PREFIX = 'NEW_';\n\nexport const MIGRATION_HINT =\n 'Генерирует SQL код для миграции таблицы cls_menu_item. Генерация кода происходит на основе последней версии сохраненного меню.';\n\nexport interface IClsMenuItemResponse {\n usr_cls_menu_item: IClsMenuItem[];\n}\n\nexport type AlertAppearance = 'info' | 'negative' | 'warning' | 'positive' | 'neutral';\n\nexport interface IClsMenuItemInput {\n title: string | null;\n route: string | null;\n code: string | null;\n icon: string | null;\n order_num: number;\n allowed_roles: string[] | null;\n id_parent: ScalarUUID | null;\n}\n\nexport interface IMenuConstructorError {\n label: string;\n content: any;\n appearance: AlertAppearance;\n}\n\nexport const EMPTY_UUID = '00000000-0000-0000-0000-000000000000';\n","import { InjectionToken } from '@angular/core';\nimport { SprocAbstractMenuConstructorStore } from './sproc-abstract-menu-constructor.store';\n\nexport const MENU_CONSTRUCTOR_STORE_TOKEN = new InjectionToken<SprocAbstractMenuConstructorStore>(\n 'MENU_CONSTRUCTOR_STORE_TOKEN',\n);\n","import { Component, computed, DestroyRef, inject, OnInit, output, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n CdkDrag,\n CdkDragDrop,\n CdkDragHandle,\n CdkDragPreview,\n CdkDropList,\n} from '@angular/cdk/drag-drop';\nimport { AsyncPipe, NgForOf } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { filter } from 'rxjs';\nimport { SprocAbstractMenuConstructorStore } from './store/sproc-abstract-menu-constructor.store';\nimport {\n EMPTY_UUID,\n FlatNode,\n IClsMenuItemInput,\n IMenuConstructorError,\n MIGRATION_HINT,\n NEW_ITEM_PREFIX,\n ROOT_TITLE,\n} from './store/sproc-menu-constructor.consts';\nimport { IClsMenuItem } from '../page-menu';\nimport { MENU_CONSTRUCTOR_STORE_TOKEN } from './store/sproc-menu.tokens';\n\n@Component({\n standalone: true,\n selector: 'sproc-menu-constructor',\n templateUrl: './sproc-menu-constructor.component.html',\n styleUrls: ['./sproc-menu-constructor.component.less'],\n imports: [CdkDrag, CdkDropList, NgForOf, FormsModule, CdkDragPreview, CdkDragHandle, AsyncPipe],\n})\nexport class SprocMenuConstructorComponent implements OnInit {\n private _store = inject(MENU_CONSTRUCTOR_STORE_TOKEN);\n private _ref = inject(DestroyRef);\n\n protected ROOT_TITLE = ROOT_TITLE;\n protected loading$ = this._store.loading$;\n protected originalTree: Map<string, FlatNode> = new Map([]);\n protected MIGRATION_HINT = MIGRATION_HINT;\n private deletedIds: string[] = [];\n\n public errorMsgOutput = output<IMenuConstructorError>();\n\n // плоское представление иерархического меню\n protected flatTree = signal<FlatNode[]>([]);\n\n // ветка элементов, которая перетаскивается\n protected draggedBranch = signal<FlatNode[]>([]);\n\n // вычисляемое свойство, возвращающее только видимые (не свернутые) элементы\n protected visibleFlatTree = computed<FlatNode[]>(() => {\n const flatTree = this.flatTree();\n return this._getVisibleFrom(flatTree);\n });\n\n private _pendingRecalc = false;\n\n ngOnInit(): void {\n this._store.menuItems$\n .pipe(\n filter((arr) => Array.isArray(arr) && arr.length > 0),\n takeUntilDestroyed(this._ref)\n )\n .subscribe((value) => {\n this.flatTree.set(this._convertToFlatNode(value));\n this.originalTree = new Map(this.flatTree().map((item) => [item.id, { ...item }]));\n });\n }\n\n /**\n * Переключает состояние свернутости узла (collapse/expand)\n * После изменения создает новый массив для триггера обновления сигнала\n */\n protected toggleCollapse(node: FlatNode): void {\n node.collapsed = !node.collapsed;\n this.flatTree.set([...this.flatTree()]);\n }\n\n /**\n * Начало перетаскивания: сохраняет всю ветку узла, которую тянут\n */\n protected dragStarted(node: FlatNode): void {\n const branch = this._collectBranch(this.flatTree(), node);\n this.draggedBranch.set(branch);\n }\n\n /**\n * Завершение перетаскивания: очищает информацию о текущей ветке\n */\n protected dragEnded(): void {\n this.draggedBranch.set([]);\n }\n\n /**\n * Основная логика drag&drop при отпускании элемента\n * Определяет новую позицию узла, пересчитывает глубины и связи\n */\n protected drop(event: CdkDragDrop<FlatNode[]>): void {\n const before = [...this.flatTree()];\n const visibleBefore = this._getVisibleFrom(before);\n const prevIdx = event.previousIndex;\n const currIdx = event.currentIndex;\n\n // Получает перетаскиваемый элемент из списка видимых\n const draggedVisible = visibleBefore[prevIdx];\n if (!draggedVisible) {\n return;\n }\n\n // Находит индекс узла в полном массиве\n const start = before.findIndex((n) => n.id === draggedVisible.id);\n if (start < 0) {\n return;\n }\n\n // Собирает всю ветку, начинающуюся с перетаскиваемого узла\n const branch = this._collectBranch(before, before[start]);\n const branchIds = new Set(branch.map((n) => n.id));\n\n // Убирает ветку из исходного списка\n const full = before.filter((n) => !branchIds.has(n.id));\n\n // Определяет видимые элементы после удаления ветки\n const visible = this._getVisibleFrom(full);\n const prevVisible = visible[currIdx - 1] ?? null;\n const nextVisible = visible[currIdx] ?? null;\n\n // Индекс вставки ветки в новый список\n const insert = nextVisible ? full.findIndex((n) => n.id === nextVisible.id) : full.length;\n\n // Рассчитывает глубину вставляемой ветки в зависимости от соседей\n let targetDepth;\n if (prevVisible && nextVisible) {\n targetDepth =\n prevVisible.depth < nextVisible.depth ? prevVisible.depth + 1 : nextVisible.depth;\n } else if (prevVisible && !nextVisible) {\n targetDepth = prevVisible.depth;\n } else if (!prevVisible && nextVisible) {\n targetDepth = nextVisible.depth;\n } else {\n targetDepth = 0;\n }\n\n // Вставляет ветку в новое место\n full.splice(insert, 0, ...branch);\n // Сдвигает глубину всей ветки\n this._applyDepthShift(branch, targetDepth - branch[0].depth);\n\n // Планирует пересчет структуры дерева\n this._scheduleRecalc(full);\n }\n\n /**\n * Увеличивает глубину (depth) конкретного узла, если возможно\n */\n protected indent(node: FlatNode): void {\n const arr = [...this.flatTree()];\n const index = arr.indexOf(node);\n if (index === -1) {\n return;\n }\n\n const proposedDepth = node.depth + 1;\n // Ищет подходящего родителя с нужной глубиной\n const parentCandidate = [...arr]\n .slice(0, index)\n .reverse()\n .find((n) => n.depth === proposedDepth - 1);\n\n if (!parentCandidate) {\n return;\n }\n\n node.depth = proposedDepth;\n this._scheduleRecalc(arr);\n }\n\n /**\n * Уменьшает глубину (depth) узла + по возможности превращает его в родителя\n */\n protected outdent(node: FlatNode): void {\n const arr = [...this.flatTree()];\n const index = arr.indexOf(node);\n if (index === -1 || node.depth <= 0) {\n return;\n }\n node.depth = Math.max(0, node.depth - 1);\n this._scheduleRecalc(arr);\n }\n\n /**\n * Увеличивает глубину всей ветки узла (вместе с потомками)\n */\n protected indentBranch(node: FlatNode): void {\n const arr = [...this.flatTree()];\n const index = arr.indexOf(node);\n if (index === -1) {\n return;\n }\n const proposedDepth = node.depth + 1;\n const parentCandidate = [...arr]\n .slice(0, index)\n .reverse()\n .find((n) => n.depth === proposedDepth - 1);\n\n if (!parentCandidate) {\n return;\n }\n\n const branch = this._collectBranch(arr, node);\n this._applyDepthShift(branch, 1);\n\n this._scheduleRecalc(arr);\n }\n\n /**\n * Уменьшает глубину всей ветки узла\n */\n protected outdentBranch(node: FlatNode): void {\n const arr = [...this.flatTree()];\n const branch = this._collectBranch(arr, node);\n this._applyDepthShift(branch, -1);\n this._scheduleRecalc(arr);\n }\n\n /**\n * Проверяет, есть ли у узла дочерние элементы\n */\n protected hasChildren(node: FlatNode): boolean {\n const arr = this.flatTree();\n const idx = arr.indexOf(node);\n if (idx === -1) {\n return false;\n }\n for (let i = idx + 1; i < arr.length; i++) {\n const next = arr[i];\n if (next.depth <= node.depth) {\n break;\n }\n if (next.depth === node.depth + 1) {\n return true;\n }\n }\n return false;\n }\n\n protected save(): void {\n // Флаг для логгирования на время отладки\n const logging = false;\n\n const changedElements = this.flatTree().filter((newItem) => {\n const originalItem = this.originalTree.get(newItem.id);\n\n // Новый элемент\n if (!originalItem) {\n if (logging) {\n console.log(`Новый элемент ${newItem.title}`);\n }\n\n return true;\n }\n\n const {\n order_num: originalOrderNum,\n id_parent: originalIdParent,\n title: originalTitle,\n allowed_roles: originalRoles,\n code: originalCode,\n route: originalRoute,\n icon: originalIcon,\n } = originalItem;\n\n const {\n order_num: newOrderNum,\n id_parent: newIdParent,\n title: newTitle,\n allowed_roles: newRoles,\n code: newCode,\n route: newRoute,\n icon: newIcon,\n } = newItem;\n\n const changedFields: string[] = [];\n\n if (originalOrderNum !== newOrderNum) {\n changedFields.push(`order_num: ${originalOrderNum} → ${newOrderNum}`);\n }\n if (originalIdParent !== newIdParent) {\n changedFields.push(`id_parent: ${originalIdParent} → ${newIdParent}`);\n }\n if (originalTitle !== newTitle) {\n changedFields.push(`title: ${originalTitle} → ${newTitle}`);\n }\n if (originalCode !== newCode) {\n changedFields.push(`code: ${originalCode} → ${newCode}`);\n }\n if (originalRoute !== newRoute) {\n changedFields.push(`route: ${originalRoute} → ${newRoute}`);\n }\n if (originalIcon !== newIcon) {\n changedFields.push(`icon: ${originalIcon} → ${newIcon}`);\n }\n if (JSON.stringify(originalRoles) !== JSON.stringify(newRoles)) {\n changedFields.push(`allowed_roles: ${originalRoles} → ${newRoles}`);\n }\n\n return changedFields.length > 0;\n });\n\n const isBlank = (s: unknown): boolean => typeof s !== 'string' || s.trim() === '';\n\n const isRouteValid = ({ route, code }: FlatNode): boolean => {\n // route считается заданным, только если это непустая строка\n const hasRoute = route.trim() !== '';\n\n return !hasRoute || route === code;\n };\n\n const invalidCodeTitles: string[] = [];\n const invalidRouteTitles: FlatNode[] = [];\n\n for (const el of changedElements) {\n if (isBlank(el.code)) {\n invalidCodeTitles.push(el.title ?? '(без названия)');\n }\n\n if (!isRouteValid(el)) {\n invalidRouteTitles.push(el);\n }\n }\n\n if (invalidCodeTitles.length > 0) {\n this.errorMsgOutput.emit({\n label: 'Конструктор меню',\n appearance: 'negative',\n // eslint-disable-next-line xss/no-mixed-html\n content: `Все поля code должны быть заполнены. </br>\n Исправьте следующие поля: </br>\n ${invalidCodeTitles.map((t) => `- ${t}`).join('</br>')}\n `,\n });\n\n return;\n }\n\n if (invalidRouteTitles.length > 0) {\n this.errorMsgOutput.emit({\n label: 'Конструктор меню',\n appearance: 'negative',\n // eslint-disable-next-line xss/no-mixed-html\n content: `Все поля code должны быть равны полю route. </br>\n Исправьте следующие поля: </br>\n ${invalidRouteTitles.map((t) => `- ${t.title} (${t.code} | ${t.route})`).join('</br>')}\n `,\n });\n\n return;\n }\n\n const elRoute = (route: string): string | null => (route === '' ? null : route);\n\n const normalizeElement = (el: FlatNode): IClsMenuItemInput => ({\n title: el.title.trim(),\n route: elRoute(el.route.trim()),\n code: el.code,\n icon: el.icon,\n order_num: el.order_num,\n allowed_roles: el.allowed_roles\n ? el.allowed_roles.split(',').map((value) => value.trim())\n : null,\n id_parent: el.id_parent,\n });\n\n const objectsToSave = changedElements\n .filter(({ id }) => !id.includes(NEW_ITEM_PREFIX))\n .map((el) => ({\n _set: normalizeElement(el),\n where: { id: { _eq: el.id } },\n }));\n\n const objectsToInsert = changedElements\n .filter(({ id }) => id.includes(NEW_ITEM_PREFIX))\n .map((element) => {\n element.id = EMPTY_UUID;\n\n return normalizeElement(element);\n });\n\n const objectsToDelete = [...this.deletedIds];\n\n if (logging) {\n console.log(`Измененные элементы`, objectsToSave);\n console.log(`Новые элементы`, objectsToInsert);\n console.log('Удалённые элементы:', objectsToDelete);\n }\n\n this._store.updateMenu(objectsToSave, objectsToInsert, objectsToDelete);\n\n this.deletedIds = [];\n }\n\n protected handleFold(state: boolean): void {\n for (const element of this.flatTree()) {\n if (element.title !== ROOT_TITLE) {\n element.collapsed = state;\n }\n }\n\n this.flatTree.set([...this.flatTree()]);\n }\n\n /**\n * Удаляет один элемент из дерева.\n * Потомки становятся дочерними элементами родителя удалённого узла.\n */\n protected deleteItem(node: FlatNode): void {\n const arr = [...this.flatTree()];\n const index = arr.indexOf(node);\n if (index === -1) {\n return;\n }\n\n const parentId = node.id_parent;\n const nodeDepth = node.depth;\n\n // Находим потомков, которые были напрямую под этим узлом\n for (let i = index + 1; i < arr.length; i++) {\n const next = arr[i];\n if (next.depth <= nodeDepth) {\n break;\n }\n if (next.depth === nodeDepth + 1) {\n // потомок становится ребёнком родителя удалённого узла\n next.id_parent = parentId ?? null;\n next.depth = nodeDepth; // поднимаем на один уровень вверх\n } else if (next.depth > nodeDepth + 1) {\n // поднимаем остальные на один уровень вверх\n next.depth -= 1;\n }\n }\n\n // Удаляем сам элемент\n arr.splice(index, 1);\n\n // Если id не временный — добавляем в список на удаление\n if (!node.id.includes(NEW_ITEM_PREFIX)) {\n this.deletedIds.push(node.id);\n }\n\n this._scheduleRecalc(arr);\n }\n\n /**\n * Добавляет новый элемент в дерево.\n * По умолчанию он создаётся как дочерний элемент root.\n */\n protected addNewItem(): void {\n const arr = [...this.flatTree()];\n\n const rootNode = arr.find((n) => n.title === this.ROOT_TITLE);\n\n if (!rootNode) {\n console.error('Root элемент не найден. Новый пункт не может быть добавлен.');\n return;\n }\n\n const newNode: FlatNode = {\n id: `${NEW_ITEM_PREFIX}${crypto.randomUUID()}`,\n id_parent: rootNode.id,\n title: 'Новый пункт меню',\n route: '',\n icon: '',\n order_num: 1,\n allowed_roles: null,\n collapsed: true,\n code: '',\n depth: rootNode.depth + 1,\n };\n\n const insertIndex = arr.findIndex((n) => n.id === rootNode.id) + 1;\n arr.splice(insertIndex, 0, newNode);\n\n this._scheduleRecalc(arr);\n }\n\n /**\n * Сбрасывает текущее состояние в исходное\n */\n protected reset(): void {\n const originalMenu = structuredClone(this._store.originalMenu);\n this.flatTree.set(this._convertToFlatNode(originalMenu));\n this.deletedIds = [];\n }\n\n /**\n * Проверяет, находится ли элемент в текущей перетаскиваемой ветке\n */\n protected isDragged(node: FlatNode): boolean {\n return this.draggedBranch().some((n) => n.id === node.id);\n }\n\n /**\n * Собирает всю ветку элементов начиная с указанного узла (включая потомков)\n */\n private _collectBranch(arr: FlatNode[], root: FlatNode): FlatNode[] {\n const start = arr.indexOf(root);\n if (start < 0) {\n return [];\n }\n const branch: FlatNode[] = [{ ...root }];\n for (let i = start + 1; i < arr.length; i++) {\n const n = arr[i];\n if (n.depth > root.depth) {\n branch.push(n);\n } else {\n break;\n }\n }\n return branch;\n }\n\n /**\n * Сдвигает глубину всех элементов ветки на указанную разницу\n * Не допускает отрицательных глубин\n */\n private _applyDepthShift(branch: FlatNode[], diff: number): void {\n if (diff === 0) {\n return;\n }\n for (const n of branch) {\n n.depth = Math.max(0, n.depth + diff);\n }\n }\n\n /**\n * Преобразует иерархический JSON в плоский массив FlatNode[]\n * Сохраняет порядок элементов и их вложенность\n */\n private _convertToFlatNode(data: IClsMenuItem[]): FlatNode[] {\n // Глубокая копия, чтобы не портить оригинал\n const cloned = structuredClone(data);\n\n const map = new Map<string, IClsMenuItem>();\n const roots: IClsMenuItem[] = [];\n\n for (const item of cloned) {\n map.set(item.id, item);\n }\n\n for (const item of cloned) {\n if (item.id_parent && map.has(item.id_parent)) {\n const parent = map.get(item.id_parent)!;\n if (!parent.children) {\n parent.children = [];\n }\n parent.children.push(item);\n } else {\n roots.push(item);\n }\n }\n\n const flat: FlatNode[] = [];\n const walk = (node: IClsMenuItem, depth: number): void => {\n flat.push({\n id: node.id,\n id_parent: node.id_parent,\n title: node.title ?? '',\n route: node.route ?? '',\n icon: node.icon ?? '',\n order_num: node.order_num ?? 0,\n allowed_roles: node.allowed_roles?.join(',') ?? null,\n collapsed: node.title !== ROOT_TITLE,\n code: node.code ?? '',\n depth,\n });\n\n if (node.children?.length) {\n const sortedChildren = [...node.children].sort(\n (a, b) => (a.order_num ?? 0) - (b.order_num ?? 0)\n );\n for (const child of sortedChildren) {\n walk(child, depth + 1);\n }\n }\n };\n\n const sortedRoots = [...roots].sort((a, b) => (a.order_num ?? 0) - (b.order_num ?? 0));\n for (const root of sortedRoots) {\n walk(root, 0);\n }\n\n return flat;\n }\n\n /**\n * Возвращает список видимых элементов на основе флагов collapsed\n * Использует стек для отслеживания свернутости на каждом уровне\n */\n private _getVisibleFrom(arr: FlatNode[] | (() => FlatNode[])): FlatNode[] {\n const source = typeof arr === 'function' ? arr() : arr;\n const out: FlatNode[] = [];\n const collapsedStack: boolean[] = [];\n\n for (const n of source) {\n while (collapsedStack.length > n.depth) {\n collapsedStack.pop();\n }\n\n if (!collapsedStack.includes(true)) {\n out.push(n);\n collapsedStack[n.depth] = !!n.collapsed;\n }\n }\n\n return out;\n }\n\n /**\n * Пересчитывает order_num и id_parent у всех элементов массива\n * После перемещений поддерживает корректную структуру дерева\n * order_num назначается относительно родителя (1..N)\n */\n private _recalculateTree(arr: FlatNode[]): void {\n const parents: FlatNode[] = [];\n const childCounters = new Map<string | null, number>();\n\n for (const node of arr) {\n while (parents.length > 0 && parents[parents.length - 1].depth >= node.depth) {\n parents.pop();\n }\n\n const parent = parents.length > 0 ? parents[parents.length - 1] : null;\n node.id_parent = parent ? parent.id : null;\n\n // вычисляем порядковый номер среди братьев\n if (node.title !== ROOT_TITLE) {\n const parentId = node.id_parent ?? null;\n const currentCount = childCounters.get(parentId) ?? 1;\n node.order_num = currentCount;\n childCounters.set(parentId, currentCount + 1);\n }\n\n parents.push(node);\n }\n }\n\n /**\n * Асинхронно планирует пересчет дерева через requestAnimationFrame\n * Это предотвращает множественные лишние пересчеты при частых изменениях\n */\n private _scheduleRecalc(arr: FlatNode[]): void {\n if (this._pendingRecalc) {\n return;\n }\n\n this._pendingRecalc = true;\n requestAnimationFrame(() => {\n this._recalculateTree([...arr]);\n const current = this.flatTree();\n if (!this._arraysEqual(current, arr)) {\n this.flatTree.set([...arr]);\n }\n this._pendingRecalc = false;\n });\n }\n\n /**\n * Проверяет равенство двух массивов FlatNode по ключевым свойствам\n */\n private _arraysEqual(a: FlatNode[], b: FlatNode[]): boolean {\n if (a.length !== b.length) {\n return false;\n }\n for (const [i, element] of a.entries()) {\n if (\n element.id !== b[i].id ||\n element.depth !== b[i].depth ||\n element.order_num !== b[i].order_num\n ) {\n return false;\n }\n }\n\n return true;\n }\n}\n","<div class=\"menu-constructor\">\n <div class=\"pane editor\">\n <div class=\"pane-header\">\n <h2>Редактор меню</h2>\n <div class=\"buttons\">\n <button [disabled]=\"$any(loading$ | async)\" class=\"btn secondary\" (click)=\"addNewItem()\">\n +\n </button>\n <button [disabled]=\"$any(loading$ | async)\" class=\"btn secondary\" (click)=\"reset()\">\n Сбросить\n </button>\n <button [disabled]=\"$any(loading$ | async)\" class=\"btn primary\" (click)=\"save()\">\n Сохранить\n </button>\n <button [disabled]=\"$any(loading$ | async)\" class=\"btn primary\" (click)=\"handleFold(false)\">\n Раскрыть все элементы\n </button>\n <button [disabled]=\"$any(loading$ | async)\" class=\"btn primary\" (click)=\"handleFold(true)\">\n Скрыть все элементы\n </button>\n </div>\n </div>\n\n <div\n class=\"list-wrapper\"\n cdkDropList\n [cdkDropListData]=\"visibleFlatTree()\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListLockAxis]=\"'y'\"\n >\n @for (node of visibleFlatTree(); track node.id + '-' + node.order_num) {\n <div\n class=\"node\"\n [style.marginLeft.px]=\"node.depth * 24\"\n [class.dragged]=\"isDragged(node)\"\n cdkDrag\n (cdkDragStarted)=\"dragStarted(node)\"\n (cdkDragEnded)=\"dragEnded()\"\n >\n <div class=\"node-bar\" cdkDragHandle>\n @if (hasChildren(node)) {\n <button\n class=\"collapse-btn\"\n (click)=\"toggleCollapse(node); $event.stopPropagation()\"\n [title]=\"node.collapsed ? 'Развернуть' : 'Свернуть'\"\n >\n {{ node.collapsed ? '▶' : '▼' }}\n </button>\n }\n\n @if (node.title === ROOT_TITLE) {\n <span class=\"root-title\">Корневой элемент</span>\n } @else {\n <div class=\"left-control\">\n <span class=\"grip\">⋮⋮</span>\n <input class=\"inp title\" [(ngModel)]=\"node.title\" placeholder=\"Название\" />\n <input\n class=\"inp code\"\n [required]=\"true\"\n [(ngModel)]=\"node.code\"\n placeholder=\"code\"\n />\n <input class=\"inp route\" [(ngModel)]=\"node.route\" placeholder=\"route\" />\n <input class=\"inp icon\" [(ngModel)]=\"node.icon\" placeholder=\"icon\" />\n <input class=\"inp roles\" [(ngModel)]=\"node.allowed_roles\" placeholder=\"Роли\" />\n </div>\n\n <div class=\"depth-controls\">\n <button class=\"btn small\" (click)=\"outdent(node)\">←</button>\n <button class=\"btn small\" (click)=\"indent(node)\">→</button>\n @if (hasChildren(node)) {\n <button class=\"btn small\" (click)=\"outdentBranch(node)\">⇐</button>\n <button class=\"btn small\" (click)=\"indentBranch(node)\">⇒</button>\n }\n <button class=\"btn small\" (click)=\"deleteItem(node)\">Удалить</button>\n </div>\n }\n </div>\n\n <ng-template cdkDragPreview>\n <div class=\"drag-branch-preview\">\n <div\n class=\"preview-bar\"\n *ngFor=\"let n of draggedBranch()\"\n [style.marginLeft.px]=\"(n.depth - node.depth) * 20\"\n >\n {{ n.title }}\n </div>\n </div>\n </ng-template>\n </div>\n }\n </div>\n </div>\n</div>\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { IClsMenuItemInput } from './sproc-menu-constructor.consts';\nimport { IClsMenuItem } from '../../page-menu';\nimport { Apollo } from 'apollo-angular';\nimport { DestroyRef, Injectable } from '@angular/core';\nimport { ScalarUUID } from 'hasura';\n\nexport abstract class SprocAbstractMenuConstructorStore {\n protected abstract _menuItems$: BehaviorSubject<IClsMenuItem[]>;\n protected abstract _loading$: BehaviorSubject<boolean>;\n protected abstract _apollo: Apollo;\n protected abstract _dr: DestroyRef;\n\n public abstract menuItems$: Observable<IClsMenuItem[]>;\n public abstract loading$: Observable<boolean>;\n public abstract originalMenu: IClsMenuItem[];\n\n public abstract getMenu(): IClsMenuItem[];\n\n public abstract updateMenu(\n objectsToUpdate: {\n _set: IClsMenuItemInput;\n where: { [key: string]: any };\n }[],\n objectsToInsert?: IClsMenuItemInput[],\n idsToDelete?: ScalarUUID[]\n ): void;\n\n protected abstract setLoading(state: boolean): void;\n\n protected abstract _fetchMenu(): void;\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[cellTemplateName]',\n standalone: true,\n})\nexport class CellTemplateDirective {\n @Input() cellTemplateName!: string;\n\n constructor(public tpl: TemplateRef<any>) {}\n}\n","import { OrderBy, WhereBoolExp } from 'hasura';\n\nexport type ColumnDataTypes = 'text' | 'num' | 'checkbox' | 'icon' | 'iconSvg' | 'empty' | 'date';\n\nexport enum EColumnDataType {\n TEXT = 'text',\n NUM = 'num',\n CHECKBOX = 'checkbox',\n ICON = 'icon',\n ICON_SVG = 'iconSvg',\n DATE = 'date',\n}\n\nexport interface IColumnData {\n name: string;\n type: EColumnDataType | ColumnDataTypes;\n value?: string;\n width?: string;\n isHeadTemplate?: boolean;\n isTemplate?: boolean;\n sortable?: boolean;\n tooltipText?: string;\n textStyle?: Record<string, string>;\n rowspan?: number;\n colspan?: number;\n children?: IColumnData[];\n datePattern?: string;\n numberPipe?: string;\n svgSrc?: string;\n isCell?: boolean;\n class?: string;\n classTd?: string;\n isLoading?: boolean;\n postfix?: string;\n fixed?: boolean;\n headerStyle?: string;\n}\n\nexport type ThWidthEntry = Pick<IColumnData, 'name' | 'width'>;\n\nexport interface IHasuraQueryFilter<T extends Record<string, any>> {\n where?: WhereBoolExp<T>;\n distinct_on?: (keyof T)[];\n limit?: number;\n offset?: number;\n order_by?: OrderBy<T>;\n}\n\nexport type RegisterTableSortOptions = {\n order: RegisterTableCellSortOrder;\n id: string;\n};\nexport type RegisterTableCellSorterHandler<T> = (\n a: T,\n b: T,\n options: RegisterTableSortOptions\n) => number;\nexport type RegisterTableCellSorter<T> = {\n options: RegisterTableSortOptions;\n sorter?: RegisterTableCellSorterHandler<T>;\n};\nexport type RegisterTableCellSortOrder = 'asc' | 'desc';\n","import { ElementRef, Injectable } from '@angular/core';\nimport { Observable, distinctUntilChanged, map, mergeMap } from 'rxjs';\n\n@Injectable()\nexport class DomIntersectionService {\n createAndObserve(element: ElementRef): Observable<boolean> {\n return new Observable<IntersectionObserverEntry[]>((observer) => {\n const intersectionObserver = new IntersectionObserver((entries) => {\n observer.next(entries);\n });\n\n intersectionObserver.observe(element.nativeElement);\n\n return () => {\n intersectionObserver.disconnect();\n };\n }).pipe(\n mergeMap((entries: IntersectionObserverEntry[]) => entries),\n map((entry) => entry.isIntersecting),\n distinctUntilChanged()\n );\n }\n}\n","import { Directive, input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[headerTemplateName]',\n standalone: true,\n})\nexport class HeaderTemplateDirective {\n public headerTemplateName = input.required<string>();\n\n constructor(public tpl: TemplateRef<any>) {}\n}\n","import { inject, Injectable, InjectionToken, OnDestroy } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport const KEY_PRESSED = new InjectionToken<string>('KEY_PRESSED_TOKEN');\n\n@Injectable()\nexport class KeyPressedService implements OnDestroy {\n private _keyName = inject(KEY_PRESSED);\n\n private readonly _isPressed$ = new BehaviorSubject(false);\n\n public readonly isPressed$ = this._isPressed$.asObservable();\n\n constructor() {\n window.addEventListener('keydown', this._keydownListener);\n window.addEventListener('keyup', this._keyupListener);\n }\n\n public isPressed(): boolean {\n return this._isPressed$.getValue();\n }\n\n public ngOnDestroy(): void {\n this._isPressed$.complete();\n window.removeEventListener('keydown', this._keydownListener);\n window.removeEventListener('keyup', this._keyupListener);\n }\n\n private readonly _keydownListener = (event: KeyboardEvent) => {\n if (event.key === this._keyName) {\n this._isPressed$.next(true);\n }\n };\n\n private readonly _keyupListener = (event: KeyboardEvent) => {\n if (event.key === this._keyName) {\n this._isPressed$.next(false);\n }\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ColumnDataTypes, EColumnDataType } from '../model/schema';\n\n@Pipe({\n name: 'classByType',\n standalone: true,\n})\nexport class ClassByTypePipe implements PipeTransform {\n transform(type: ColumnDataTypes | EColumnDataType, element: 'th' | 'td' = 'th'): string {\n let classNamePostfix = 'text';\n\n if (element === 'td') {\n if (type === EColumnDataType.CHECKBOX) {\n classNamePostfix = 'checkbox';\n } else if (type === EColumnDataType.NUM) {\n classNamePostfix = 'num';\n } else if (type === EColumnDataType.DATE) {\n classNamePostfix = 'date';\n }\n }\n\n if (type === EColumnDataType.ICON || type === EColumnDataType.ICON_SVG) {\n classNamePostfix = 'icon';\n }\n\n return `register-table__cell-${classNamePostfix}`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'stickyColumn',\n standalone: true,\n})\nexport class StickyColumnPipe implements PipeTransform {\n transform(value: string, array: string[] | undefined): boolean {\n return array?.includes(value) ?? false;\n }\n}\n","export const CHECKBOX_SELECTOR_KEY = 'checkbox-selector';\nexport const CHECKBOX_SELECTOR_WIDTH_PX = 32;\nexport const MIN_COL_WIDTH_PX = 8;\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { SelectionTypes, ApplySelectionTypes } from './checkbox-selector.types';\nimport { TuiButtonLoading, TuiCheckbox, TuiInputNumber, TuiTooltip } from '@taiga-ui/kit';\nimport { TuiButton, TuiDropdown, TuiIcon, TuiTextfield } from '@taiga-ui/core';\nimport { FormsModule } from '@angular/forms';\nimport { TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { ScalarUUID } from 'hasura';\nimport { ERegisterObjectState } from '../../types';\nimport { SelectedObjectsStateService } from '../../services';\n\n@Component({\n selector: 'sproc-checkbox-selector',\n templateUrl: './checkbox-selector.component.html',\n styleUrls: ['./checkbox-selector.component.less'],\n standalone: true,\n imports: [\n TuiCheckbox,\n TuiDropdown,\n TuiTextfield,\n FormsModule,\n TuiTextfieldControllerModule,\n TuiButton,\n TuiButtonLoading,\n TuiInputNumber,\n TuiTooltip,\n TuiIcon,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxSelectorComponent {\n public totalRecords = input<number>();\n /** @deprecated используйте stateObjects */\n public selected = input(new Set<ScalarUUID>());\n public disabled = input(false);\n public loading = input<boolean | null>(false);\n public inputMaxValue = input<number | null>(null);\n\n public onApply = output<ApplySelectionTypes>();\n\n private readonly _selectedService = inject(SelectedObjectsStateService, { optional: true });\n\n protected readonly ESelectionTypes = SelectionTypes;\n\n protected isOpen = signal(false);\n protected selectedElement = signal<SelectionTypes | null>(null);\n protected inputValue = signal<number | null>(null);\n\n protected readonly inputDescription = computed(() => {\n const max = this.inputMaxValue();\n\n if (max === null) {\n return '';\n }\n\n return `Максимум для ввода - ${max}`;\n });\n\n protected stateObjects = this._selectedService?.state;\n protected stateUnfetchedObjects = this._selectedService?.stateUnfetchedObjects;\n\n constructor() {\n effect(() => {\n const loading = this.loading();\n const isOpen = this.loading();\n\n if (loading === false && isOpen) {\n untracked(() => {\n this.close();\n });\n }\n });\n }\n\n protected selectElement(newElement: SelectionTypes): void {\n this.selectedElement.update((currentElement) =>\n currentElement === newElement ? null : newElement\n );\n }\n\n protected onInputFocus(): void {\n this.selectedElement.set(SelectionTypes.COUNT);\n }\n\n protected applySelection(): void {\n let result: SelectionTypes | number | null = this.selectedElement();\n\n if (!result) {\n return;\n }\n\n if (result === SelectionTypes.COUNT) {\n result = this.inputValue();\n }\n\n this.onApply.emit(result);\n this.close();\n }\n\n protected toggle(): void {\n if (!this.disabled()) {\n this.isOpen.update((isOpen) => !isOpen);\n }\n }\n\n protected calcIndeterminate(): boolean {\n const state = this.stateObjects?.();\n\n if (state) {\n const fetchedObjects = [...state.values()];\n const selectedObjects = fetchedObjects.filter(\n (obj) => obj.state === ERegisterObjectState.SELECTED\n );\n\n const someFetchedIsNotSelected = fetchedObjects.length !== selectedObjects.length;\n const fetchedIsAll = fetchedObjects.length === this.totalRecords();\n const unfetchedAreSelected = this.stateUnfetchedObjects!() === ERegisterObjectState.SELECTED;\n\n if (selectedObjects.length > 0) {\n return someFetchedIsNotSelected || !(fetchedIsAll || unfetchedAreSelected);\n }\n\n return !fetchedIsAll && unfetchedAreSelected;\n }\n\n return this.selected().size > 0 && this.selected().size !== this.totalRecords();\n }\n\n protected calcChecked(): boolean {\n const state = this.stateObjects?.();\n\n if (state) {\n const fetchedObjects = [...state.values()];\n const selectedObjects = fetchedObjects.filter(\n (obj) => obj.state === ERegisterObjectState.SELECTED\n );\n\n const fetchedAreSelected = fetchedObjects.length === selectedObjects.length;\n const selectedIsAll = selectedObjects.length === this.totalRecords();\n const unfetchedAreSelected = this.stateUnfetchedObjects!() === ERegisterObjectState.SELECTED;\n\n return (\n selectedObjects.length > 0 && fetchedAreSelected && (selectedIsAll || unfetchedAreSelected)\n );\n }\n\n return this.selected().size > 0 && this.selected().size === this.totalRecords();\n }\n\n protected close(): void {\n if (!this.disabled()) {\n this.isOpen.set(false);\n }\n }\n\n protected inputValueChanges(value: number): void {\n this.selectedElement.set(SelectionTypes.COUNT);\n this.inputValue.set(value);\n }\n\n protected dropSelection(): void {\n this.inputValue.set(null);\n this.selectedElement.set(null);\n this.onApply.emit(null);\n this.close();\n }\n}\n","<div class=\"checkbox__container\" (click)=\"toggle(); $event.stopImmediatePropagation()\">\n @let indeterminate = calcIndeterminate();\n @let checked = calcChecked();\n\n <input\n tuiCheckbox\n size=\"s\"\n type=\"checkbox\"\n [indeterminate]=\"indeterminate\"\n [tuiDropdown]=\"dropdown\"\n [tuiDropdownManual]=\"isOpen()\"\n [checked]=\"checked\"\n />\n</div>\n\n<ng-template #dropdown>\n <section class=\"dropdown__content\" id=\"checkbox__dropdown__content\">\n @let selected = selectedElement();\n\n <span\n class=\"dropdown__element\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.ALL\"\n (click)=\"selectElement(ESelectionTypes.ALL)\"\n >\n Выбрать все\n </span>\n <span\n class=\"dropdown__element\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.VISIBLE\"\n (click)=\"selectElement(ESelectionTypes.VISIBLE)\"\n >\n Выбрать видимое\n </span>\n <span\n class=\"dropdown__element\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.INVERSE\"\n (click)=\"selectElement(ESelectionTypes.INVERSE)\"\n >\n Кроме выделенного\n </span>\n <div\n class=\"dropdown__select-value\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.COUNT\"\n >\n <span>Выбрать</span>\n <tui-textfield\n tuiTextfieldSize=\"s\"\n tuiTextfieldAppearance=\"textfield\"\n [tuiTextfieldCleaner]=\"true\"\n class=\"flex-1\"\n >\n <input\n tuiInputNumber\n placeholder=\"Введите число\"\n [max]=\"inputMaxValue()\"\n [ngModel]=\"inputValue()\"\n (ngModelChange)=\"inputValueChanges($event)\"\n (focusin)=\"onInputFocus()\"\n />\n\n @if (inputDescription()) {\n <tui-icon\n icon=\"assets/ngx-register-base/icons/circle-question-empty.svg\"\n [tuiTooltip]=\"inputDescription()\"\n />\n }\n </tui-textfield>\n </div>\n <div class=\"dropdown__footer\">\n <button\n tuiButton\n class=\"dropdown__button dropdown__button__apply\"\n size=\"m\"\n appearance=\"outline\"\n [loading]=\"loading()\"\n (click)=\"applySelection()\"\n >\n Применить\n </button>\n <button\n tuiButton\n class=\"dropdown__button dropdown__button__cancel\"\n size=\"m\"\n appearance=\"outline-grayscale\"\n (click)=\"dropSelection()\"\n >\n Отмена\n </button>\n </div>\n </section>\n</ng-template>\n","import { Directive, HostListener, input } from '@angular/core';\nimport { InputElementEvent } from '../../types';\n\n/** Ввод только числовых выражений */\n@Directive({\n standalone: true,\n selector: '[numberOnly]',\n})\nexport class NumberOnlyDirective {\n /** Разрешать пользователю вводить дробные числа (возможность использовать точку или запятую) */\n public allowFractional = input(false);\n\n @HostListener('input', ['$event'])\n public onInput(event: InputElementEvent): void {\n const element = event.target;\n let value = element.value;\n\n if (this.allowFractional()) {\n value = value.replace(/,/g, '.');\n\n value = value.replace(/[^\\d.]/g, '');\n\n // Проверяем, чтобы точка была только одна\n const parts: string[] = value.split('.');\n if (parts.length > 2) {\n value = `${parts.shift()!}.${parts.join('')}`;\n }\n } else {\n value = value.replace(/\\D/g, '');\n }\n\n if (element.value !== value) {\n element.value = value;\n }\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { StickyDirective } from './sticky.directive';\nimport { Subject } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\n@Injectable()\nexport class StickyRelativeService implements OnDestroy {\n public element!: HTMLElement;\n\n private readonly _changesChildren$ = new Subject<void>();\n\n private readonly _resizeObserver = new ResizeObserver(() => {\n this._changesChildren$.next();\n });\n\n public readonly changesChildren$ = this._changesChildren$.pipe(shareReplay(1));\n\n public add(item: StickyDirective): void {\n this._resizeObserver.observe(item.elRef.nativeElement);\n }\n\n public delete(item: StickyDirective): void {\n this._resizeObserver.unobserve(item.elRef.nativeElement);\n }\n\n public nextChangesChildren(): void {\n this._changesChildren$.next();\n }\n\n public ngOnDestroy(): void {\n this._resizeObserver.disconnect();\n this._changesChildren$.complete();\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n HostBinding,\n inject,\n input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n} from '@angular/core';\nimport { filter, map, observeOn, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { StickyRelativeService } from './sticky-relative.service';\nimport { animationFrameScheduler, of, Subject } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { toPx } from '../../utils';\nimport { moveInEventLoopIteration } from '../../utils';\n\n@Directive({\n selector: '[stickyLeft], [stickyRight], [stickyTop], [stickyBottom]',\n standalone: true,\n})\nexport class StickyDirective implements OnChanges, OnDestroy, OnInit {\n @HostBinding('class.sticky-left')\n public stickyLeft = input<boolean>();\n @HostBinding('class.sticky-right')\n public stickyRight = input<boolean>();\n @HostBinding('class.sticky-top')\n public stickyTop = input<boolean>();\n @HostBinding('class.sticky-bottom')\n public stickyBottom = input<boolean>();\n public stickyRelative = input<HTMLElement | undefined>();\n public position = input('sticky');\n public stylesOnSticky = input<Record<string, unknown> | undefined>();\n\n @HostBinding('style.position')\n get applySticky(): string {\n return this.stickyLeft() || this.stickyRight() || this.stickyTop() || this.stickyBottom()\n ? this.position()\n : '';\n }\n\n public readonly elRef = inject(ElementRef);\n\n private readonly _relativeService = inject(StickyRelativeService);\n private readonly _renderer = inject(Renderer2);\n private readonly _destroyRef = inject(DestroyRef);\n\n private readonly _destroyPrevious = new Subject<void>();\n private readonly _changedSides = {\n right: true,\n left: true,\n top: true,\n bottom: true,\n };\n\n private _setActiveStyle = false;\n\n public ngOnInit(): void {\n this._relativeService.add(this);\n }\n\n public ngOnDestroy(): void {\n this._relativeService.delete(this);\n this._destroyPrevious.complete();\n }\n\n public ngOnChanges(): void {\n this._init();\n }\n\n private _init(): void {\n this._destroyPrevious.next();\n\n const parent = this.stickyRelative() ?? this._relativeService?.element;\n this._relativeService?.changesChildren$\n .pipe(\n map(() => this.elRef.nativeElement.getBoundingClientRect()),\n observeOn(animationFrameScheduler),\n filter((i) => Boolean(i.width || i.height)),\n switchMap((result) => {\n if (this.stickyRight() || this._changedSides.right) {\n this._renderer.removeStyle(this.elRef.nativeElement, 'right');\n }\n if (this.stickyLeft() || this._changedSides.left) {\n this._renderer.removeStyle(this.elRef.nativeElement, 'left');\n }\n if (this.stickyTop() || this._changedSides.top) {\n this._renderer.removeStyle(this.elRef.nativeElement, 'top');\n }\n if (this.stickyBottom() || this._changedSides.bottom) {\n this._renderer.removeStyle(this.elRef.nativeElement, 'bottom');\n }\n\n this._clearStylesIfSet();\n\n return of(result).pipe(moveInEventLoopIteration(1));\n }),\n tap(() => {\n const parentRect = parent?.getBoundingClientRect();\n const elRect = this.elRef.nativeElement.getBoundingClientRect();\n let styleRight = 0;\n\n this._setStylesIfExist();\n\n if (this.stickyLeft()) {\n const left = parentRect?.left ? elRect.left - parentRect.left : elRect.left;\n this._renderer.setStyle(this.elRef.nativeElement, 'left', toPx(left));\n this._changedSides.left = true;\n } else {\n this._changedSides.left = true;\n }\n if (this.stickyRight()) {\n styleRight = Number.parseInt(this.elRef.nativeElement.style.right || '0', 10);\n\n let right = elRect.right;\n let scrollOffset = 0;\n let diff = 0;\n if (parent) {\n scrollOffset = parent.scrollWidth - parent.clientWidth - parent.scrollLeft;\n diff = Math.abs(elRect.right - parentRect.right - scrollOffset - styleRight);\n right = Math.floor(diff);\n }\n this._renderer.setStyle(this.elRef.nativeElement, 'right', toPx(right));\n this._changedSides.right = true;\n } else {\n this._changedSides.right = true;\n }\n if (this.stickyTop()) {\n const top = parentRect?.top ? elRect.top - parentRect.top : elRect.top;\n this._renderer.setStyle(this.elRef.nativeElement, 'top', toPx(top));\n this._changedSides.top = true;\n } else {\n this._changedSides.top = true;\n }\n if (this.stickyBottom()) {\n const bottom = parentRect?.bottom ? elRect.bottom - parentRect.bottom : elRect.bottom;\n this._renderer.setStyle(this.elRef.nativeElement, 'bottom', toPx(bottom));\n this._changedSides.bottom = true;\n } else {\n this._changedSides.bottom = true;\n }\n\n this._setStylesIfExist();\n }),\n // eslint-disable-next-line rxjs/no-unsafe-takeuntil\n takeUntil(this._destroyPrevious),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n\n private _clearStylesIfSet(): void {\n if (!this._setActiveStyle) {\n return;\n }\n\n const stylesOnSticky = this.stylesOnSticky();\n const keys = stylesOnSticky && Object.keys(stylesOnSticky);\n if (!keys?.length) {\n return;\n }\n\n for (const key of keys) {\n this.elRef.nativeElement.style[key] = '';\n }\n\n this._setActiveStyle = false;\n }\n\n private _setStylesIfExist(): void {\n if (!this.stickyRight() && !this.stickyLeft() && !this.stickyBottom() && !this.stickyTop()) {\n return;\n }\n\n const stylesOnSticky = this.stylesOnSticky();\n const keys = stylesOnSticky && Object.keys(stylesOnSticky);\n if (!keys?.length) {\n return;\n }\n\n for (const key of keys) {\n this.elRef.nativeElement.style[key] = (this.stylesOnSticky()?.[key] as string) ?? '';\n }\n\n this._setActiveStyle = true;\n }\n}\n","import { DestroyRef, Directive, ElementRef, inject, input, OnInit } from '@angular/core';\nimport { StickyRelativeService } from './sticky-relative.service';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { skip } from 'rxjs';\nimport {distinctUntilChangedJSONs} from '../../utils';\n\n@Directive({\n selector: '[stickyRelative]',\n standalone: true,\n providers: [StickyRelativeService],\n})\nexport class StickyRelativeDirective implements OnInit {\n public columns = input.required<unknown[]>();\n\n private _columnsChanges$ = toObservable(this.columns).pipe(distinctUntilChangedJSONs(), skip(1));\n\n private readonly _stickyRelativeService = inject(StickyRelativeService);\n private readonly _dr = inject(DestroyRef);\n private readonly _elRef = inject(ElementRef);\n\n constructor() {\n this._columnsChanges$.pipe(takeUntilDestroyed(this._dr)).subscribe(() => {\n this._stickyRelativeService.nextChangesChildren();\n });\n }\n\n public ngOnInit(): void {\n this._stickyRelativeService.element = this._elRef.nativeElement;\n }\n}\n","import { coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n input,\n model,\n OnDestroy,\n output,\n signal,\n} from '@angular/core';\nimport { PolymorphContent, PolymorphModule } from '@prizm-ui/components';\nimport { debounceTime, Subject } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiButton, TuiDataListDirective, TuiHint, TuiLoader } from '@taiga-ui/core';\nimport { TuiDataListWrapperComponent, TuiPagination } from '@taiga-ui/kit';\nimport { TuiComboBoxModule, TuiTextfieldControllerModule } from '@taiga-ui/legacy';\nimport { IPaginatorOptions, IPaginatorOutput } from './types/paginator.types';\nimport { DividerComponent } from '../divider/divider.component';\nimport { NumberOnlyDirective } from '../../directives/number/number-only.directive';\n\nexport enum SvgSrc {\n CHEVRONS_DOUBLE_LEFT = 'assets/ngx-register-base/icons/chevrons-double-left.svg',\n CHEVRONS_DOUBLE_RIGHT = 'assets/ngx-register-base/icons/chevrons-double-right.svg',\n}\n\n@Component({\n selector: 'sproc-paginator',\n imports: [\n DividerComponent,\n CommonModule,\n PolymorphModule,\n ReactiveFormsModule,\n FormsModule,\n TuiPagination,\n TuiButton,\n TuiComboBoxModule,\n TuiDataListWrapperComponent,\n TuiTextfieldControllerModule,\n TuiDataListDirective,\n TuiLoader,\n TuiHint,\n NumberOnlyDirective,\n ],\n templateUrl: './paginator.component.html',\n styleUrls: ['./paginator.component.less'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaginatorComponent implements OnDestroy {\n public textOnPage = input<PolymorphContent>('Строк на странице');\n public totalRecords = input(0, {\n transform: (value: NumberInput) => Math.max(coerceNumberProperty(value), 0),\n });\n /** Количество видимых страниц вокруг активной страницы */\n public pageLinkSize = input(3);\n public showMoreDisabled = input(false);\n public disabled = input(false);\n /** Количество отображаемых строк на странице */\n public rows = model<NumberInput>(0);\n /** Текущая страница */\n public page = model<NumberInput>(1);\n public paginatorOptions = input<IPaginatorOptions>({\n noRowsSelector: false,\n noRowsSelectorLabel: false,\n noFilterInfo: false,\n noInfo: false,\n noPages: false,\n });\n public rowsCountOptions = input(new Array<number>());\n public selectedCounter = input(0);\n public totalNotFiltered = input(0);\n public isLoading = input(false);\n /** Ограничения на количество отображаемых строк на странице */\n public minRowsCount = input<number>(1);\n public maxRowsCount = input<number>(99);\n protected isIncorrectRowsCount = signal(false);\n protected rowsCountErrorMessage = signal('');\n\n public paginatorChange = output<IPaginatorOutput>();\n public pageChange = output<number>();\n public rowsChange = output<number | null>();\n\n protected readonly SvgSrc = SvgSrc;\n protected pagesCount = computed(() => {\n const total = this.totalRecords();\n this.rows();\n\n return Math.ceil(total / this.currentRows);\n });\n\n private readonly _dr = inject(DestroyRef);\n\n protected readonly currentRowsInputChange = new Subject<NumberInput>();\n\n constructor() {\n this.currentRowsInputChange\n .pipe(debounceTime(500), takeUntilDestroyed(this._dr))\n .subscribe((value) => {\n this.changeRows(value);\n });\n }\n\n public ngOnDestroy(): void {\n this.currentRowsInputChange.complete();\n }\n\n protected changePage(page: number): void {\n const prev = this.currentPage;\n this.page.set(page);\n\n if (this.currentPage !== prev) {\n this.emitPageChange();\n }\n }\n\n protected toFirstPage(): void {\n this.changePage(0);\n }\n\n protected toLastPage(): void {\n this.changePage(this.pagesCount());\n }\n\n private emitPageChange(): void {\n this.pageChange.emit(this.currentPage);\n this._emitPaginatorChanges();\n }\n\n protected changeRows(rows: NumberInput): void {\n const rowsCount = Number(rows);\n\n if (!rowsCount) {\n this.rowsCountErrorMessage.set('');\n this.isIncorrectRowsCount.set(false);\n return;\n }\n\n const min = this.minRowsCount();\n const max = this.maxRowsCount();\n\n if (rowsCount < min || rowsCount > max) {\n this.rowsCountErrorMessage.set(`Поле принимает значение от ${min} до ${max}`);\n this.isIncorrectRowsCount.set(true);\n return;\n }\n\n this.rowsCountErrorMessage.set('');\n this.isIncorrectRowsCount.set(false);\n\n if (this.currentRows === rows) {\n return;\n }\n\n this.rows.set(rows);\n this.rowsChange.emit(this.currentRows);\n\n if (this.currentPage > this.pagesCount()) {\n this.changePage(0);\n } else {\n this._emitPaginatorChanges();\n }\n }\n\n private _emitPaginatorChanges(): void {\n this.paginatorChange.emit({\n page: this.currentPage,\n first: (this.currentPage - 1) * this.currentRows + 1,\n rows: this.currentRows,\n pagesCount: this.pagesCount(),\n });\n }\n\n /** get-методы */\n protected get currentPage(): number {\n return Math.max(coerceNumberProperty(this.page()), 1);\n }\n\n protected get currentRows(): number {\n let inputRows = Math.max(coerceNumberProperty(this.rows()), 0);\n\n if (!inputRows) {\n [inputRows] = this.rowsCountOptions();\n }\n\n return inputRows;\n }\n}\n","<tui-loader class=\"loader\" [showLoader]=\"isLoading()\" [overlay]=\"true\">\n <div class=\"container\">\n <div class=\"content\">\n @if (!paginatorOptions().noRowsSelector && !paginatorOptions().noRowsSelectorLabel) {\n <span class=\"rows rows__count\">\n <ng-container *polymorphOutlet=\"textOnPage() as title\">\n {{ title }}\n </ng-container>\n </span>\n }\n @if (!paginatorOptions().noRowsSelector) {\n <div class=\"rows-selector\">\n <tui-combo-box\n numberOnly\n [ngModel]=\"currentRows\"\n [ngModelOptions]=\"{ standalone: true }\"\n [strict]=\"false\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldCleaner]=\"false\"\n tuiTextfieldSize=\"s\"\n [disabled]=\"disabled()\"\n [tuiHint]=\"rowsCountErrorMessage()\"\n [tuiHintManual]=\"isIncorrectRowsCount()\"\n (ngModelChange)=\"currentRowsInputChange.next($event)\"\n >\n <tui-data-list-wrapper\n *tuiDataList\n [items]=\"rowsCountOptions().length ? rowsCountOptions() : [currentRows]\"\n />\n </tui-combo-box>\n </div>\n }\n\n <div class=\"selected-panel\">\n <div class=\"selected-container\">\n <span>Выбрано</span>\n <span class=\"selected-counter\">{{ selectedCounter() }}</span>\n </div>\n <sproc-divider layout=\"vertical\"></sproc-divider>\n @if (!paginatorOptions().noFilterInfo) {\n <div class=\"selected-container\">\n <span>Отфильтровано</span>\n <span class=\"selected-counter\">{{ totalRecords() }}</span>\n <span>из</span>\n <span class=\"selected-counter\">{{ totalNotFiltered() }}</span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"content\">\n @if (!paginatorOptions().noInfo) {\n <span class=\"rows rows__show\" [hidden]=\"disabled()\">\n Показано строк: {{ (currentPage - 1) * currentRows + 1 }}-{{\n currentPage * currentRows > totalRecords() ? totalRecords() : currentPage * currentRows\n }}\n <ng-container> из {{ totalRecords() }} </ng-container>\n </span>\n }\n\n <div class=\"paginator\">\n <button\n tuiIconButton\n class=\"paginator__control\"\n appearance=\"flat\"\n type=\"button\"\n size=\"xs\"\n tabIndex=\"-1\"\n [disabled]=\"disabled() || currentPage === 1\"\n (click)=\"toFirstPage()\"\n >\n <img [src]=\"SvgSrc.CHEVRONS_DOUBLE_LEFT\" />\n </button>\n <tui-pagination\n [index]=\"currentPage - 1\"\n [length]=\"pagesCount()\"\n [activePadding]=\"pageLinkSize()\"\n (indexChange)=\"changePage($event + 1)\"\n />\n @if (paginatorOptions().noToLastPageBtn ?? true) {\n <button\n tuiIconButton\n class=\"paginator__control\"\n appearance=\"flat\"\n type=\"button\"\n size=\"xs\"\n tabIndex=\"-1\"\n [disabled]=\"disabled() || currentPage === pagesCount() || currentPage === 0\"\n (click)=\"toLastPage()\"\n >\n <img [src]=\"SvgSrc.CHEVRONS_DOUBLE_RIGHT\" />\n </button>\n }\n </div>\n </div>\n </div>\n</tui-loader>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n OnDestroy,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { DomIntersectionService } from '../../services/dom-intersection.service';\nimport { TuiHint, TuiIcon, TuiLoader, TuiScrollbar } from '@taiga-ui/core';\nimport { TuiTable, TuiTableSortChange } from '@taiga-ui/addon-table';\nimport { AsyncPipe, DecimalPipe, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n ColumnDataTypes,\n EColumnDataType,\n IColumnData,\n RegisterTableCellSorter,\n ThWidthEntry,\n} from './model/schema';\nimport { TuiCheckbox } from '@taiga-ui/kit';\nimport { EDatePattern, ETimezone } from '../../directives/date/date-time.types';\nimport {\n outputFromObservable,\n takeUntilDestroyed,\n toObservable,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport { HeaderTemplateDirective } from './directives/header-template.directive';\nimport { DateTimeService } from '../../services/date-time.service';\nimport { CellTemplateDirective } from './directives/cell-template.directive';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { KEY_PRESSED, KeyPressedService } from '../../services/key-pressed.service';\nimport { EOrder, THS_WIDTH_CHANGES_DEBOUNCE_TIME_MLS } from '../../consts/register-base.consts';\nimport { ClassByTypePipe } from './pipes/class-by-type.pipe';\nimport { StickyColumnPipe } from './pipes/sticky-column.pipe';\nimport {\n CHECKBOX_SELECTOR_KEY,\n CHECKBOX_SELECTOR_WIDTH_PX,\n MIN_COL_WIDTH_PX,\n} from './consts/register-table.consts';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n map,\n skip,\n Subject,\n switchMap,\n tap,\n} from 'rxjs';\nimport { CheckboxSelectorComponent } from '../checkbox-selector/checkbox-selector.component';\nimport { distinctUntilChangedJSONs } from '../../utils';\nimport { StickyDirective, StickyRelativeDirective } from '../../directives';\nimport { ScalarUUID } from 'hasura';\nimport { ERegisterObjectState, IRegisterObject } from '../../types';\nimport { ApplySelectionTypes } from '../checkbox-selector/checkbox-selector.types';\nimport { SelectedObjectsStateService } from '../../services';\nimport { TuiResizable, TuiResizer } from '@taiga-ui/cdk';\nimport { FormatDatePipe } from '../../directives/date/format-date.pipe';\nimport { IPaginatorOutput } from '../paginator/types/paginator.types';\nimport { PaginatorComponent } from '../paginator/paginator.component';\n\n/** Общий компонент для создания таблицы ресстра */\n@Component({\n selector: 'sproc-register-table',\n templateUrl: './register-table.component.html',\n styleUrls: ['./register-table.component.less'],\n standalone: true,\n imports: [\n TuiScrollbar,\n TuiLoader,\n NgClass,\n NgStyle,\n TuiCheckbox,\n NgTemplateOutlet,\n DecimalPipe,\n FormatDatePipe,\n AsyncPipe,\n FormsModule,\n ReactiveFormsModule,\n TuiLoader,\n TuiTable,\n ClassByTypePipe,\n StickyColumnPipe,\n TuiHint,\n PaginatorComponent,\n CheckboxSelectorComponent,\n StickyDirective,\n StickyRelativeDirective,\n TuiIcon,\n TuiResizer,\n TuiResizable,\n ],\n providers: [\n DomIntersectionService,\n KeyPressedService,\n {\n provide: KEY_PRESSED,\n useValue: 'Shift',\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RegisterTableComponent implements OnDestroy {\n /** Переданный контент для заголовков таблицы, темплейты с директивой HeaderTemplateDirective */\n public headerTemplates = contentChildren<HeaderTemplateDirective>(HeaderTemplateDirective);\n /** Переданный контент для ячеек таблицы, темплейты с директивой CellTemplateDirective */\n public cellTemplates = contentChildren<CellTemplateDirective>(CellTemplateDirective);\n\n /** Элементы строк таблицы */\n public bodyRows = viewChildren('bodyRow', { read: ElementRef });\n /** Элемент скролла таблицы */\n public scrollbar = viewChild(TuiScrollbar, { read: ElementRef });\n /** Состояние загрузки данных таблицы */\n public isLoading = input.required<boolean | null>();\n /** Состояние загрузки данных пагинации */\n public isPaginatorLoading = input<boolean>(false);\n /** Номер страницы */\n public page = input.required<number | null>();\n /** Количество записей на одной странице */\n public limit = input.required<number | null>();\n /** Отображение колонки выбора строк (по умолчанию отображается) */\n public checkboxColumn = input(true);\n /** Список столбцов */\n public columns = input.required<string[]>();\n /** Данные столбцов */\n public columnsData = input.required<IColumnData[]>();\n /** Идентификаторы фиксированных слева столбцов */\n public stickyLeftIds = input<string[] | undefined>();\n /** Идентификаторы фиксированных слева столбцов */\n public stickyRightIds = input<string[] | undefined>();\n /** Всего записей */\n public totalRecords = input.required<number>();\n /** Всего записей, без учета фильтра */\n public totalNotFiltered = input.required<number>();\n /** Значения таблицы */\n public rowData = input.required<any[]>();\n /**\n * @description Идентификаторы выбранных записей\n *\n * @deprecated Используйте stateObjects\n * */\n public selectedIds = input(new Set<ScalarUUID>());\n /**\n * @description Объекты выбранных записей\n *\n * @deprecated Используйте stateObjects\n * */\n public selectedObjects = input(new Set<any>());\n /** Загрузка дополнительных записей при выборе соответствущего пункта в чекбокс-селекторе */\n public isSelectloading = input<boolean | null>(false);\n /** Текст пустой таблицы */\n public emptyText = input<string>('Нет данных');\n /** Дизейбл сортировки */\n public sortingDisabled = input(false);\n /** Максимальное значения выбора чекбоксов через поле ввода */\n public checkboxInputMaxValue = input<number | null>(null);\n /** Дизейбл выбора чекбоксов */\n public checkboxDisabled = input(false);\n /** Дизейбл выбора чекбоксов */\n public paginatorDisabled = input(false);\n\n public selectedCounter = computed(() => {\n const selectedSize = this._selectedService?.selectedValues()?.size ?? null;\n const unselectedSize = this._selectedService?.unselectedValues()?.size ?? 0;\n const unfetchedObjects = this._selectedService?.stateUnfetchedObjects();\n const isNotSelected = unfetchedObjects !== ERegisterObjectState.SELECTED;\n\n if (selectedSize === null) {\n this._deprecatedSelectedRowsCounter();\n return this.selectedIds().size;\n }\n\n return isNotSelected ? selectedSize : this.totalRecords() - unselectedSize;\n });\n\n protected readonly dts = inject(DateTimeService);\n protected readonly destroyRef = inject(DestroyRef);\n\n private readonly _shift = inject(KeyPressedService);\n private readonly _domIntersectionService = inject(DomIntersectionService);\n // TODO удалить optional: true после выполнения задачи SMA2-3134\n private readonly _selectedService = inject(SelectedObjectsStateService, {\n optional: true,\n });\n\n /** Событие выбора в чекбокс-селекторе */\n public selectChanged = output<ApplySelectionTypes>();\n /** Событие изменения значений пагинатора */\n public paginatorChange = output<IPaginatorOutput>();\n /** Событие нажатия на строку */\n public rowClick = output<any>();\n /** Событие двойного нажатия на строку */\n public rowDblClick = output<any>();\n /** Событие нажатия на строку */\n public rowSelected = output<{ row: any[]; count: number }>();\n /** Событие сортировки значений в таблице */\n public sort = output<RegisterTableCellSorter<any>[]>();\n /** Событие изменения ширины колонки */\n private readonly _thsWidthMap = computed(\n () => new Map(this.columnsData().map(({ name, width }) => [name, new BehaviorSubject(width)]))\n );\n public thsWidthChange = outputFromObservable<ThWidthEntry[]>(\n toObservable(this._thsWidthMap).pipe(\n switchMap((changes) =>\n combineLatest(\n [...changes.entries()].map(([name, $width]) =>\n $width.asObservable().pipe(map((width) => ({ name, width })))\n )\n ).pipe(\n distinctUntilChangedJSONs(),\n debounceTime(THS_WIDTH_CHANGES_DEBOUNCE_TIME_MLS),\n skip(1)\n )\n )\n )\n );\n /** Событие изменения видимых строк таблицы */\n private readonly _observerRowsVisibilityDOM$ = toObservable(this.bodyRows).pipe(\n switchMap((bodyRows) =>\n combineLatest(\n bodyRows.map((bodyRow, index) =>\n this._domIntersectionService.createAndObserve(bodyRow).pipe(\n // TODO удалить tap, как только перестанет использоваться is_visible по проекту\n tap((isVisible) => {\n this.rowData()[index].is_visible = isVisible;\n }),\n map((isVisible) => (isVisible ? this.rowData()[index] : undefined))\n )\n )\n ).pipe(map((visibleRows) => visibleRows.filter((visibleRow) => !!visibleRow)))\n )\n );\n public visibleRowsChange = outputFromObservable<any[]>(this._observerRowsVisibilityDOM$);\n\n protected readonly EColumnDataType = EColumnDataType;\n protected readonly ETimezone = ETimezone;\n protected readonly EDatePattern = EDatePattern;\n protected readonly ERegisterObjectState = ERegisterObjectState;\n\n protected readonly CHECKBOX_SELECTOR_KEY = CHECKBOX_SELECTOR_KEY;\n protected readonly CHECKBOX_SELECTOR_WIDTH_PX = CHECKBOX_SELECTOR_WIDTH_PX;\n\n protected readonly stickyThStyle = Object.freeze({ 'z-index': 22 });\n protected readonly stickyTdStyle = Object.freeze({ 'z-index': 21 });\n\n protected readonly columnsWithCheckboxes = computed(() => [\n CHECKBOX_SELECTOR_KEY,\n ...this.columns(),\n ]);\n protected readonly scrollPosition = signal<{ top: number; left: number }>({ top: 0, left: 0 });\n protected readonly tableWidth = toSignal(\n combineLatest([toObservable(this.columnsWithCheckboxes), toObservable(this._thsWidthMap)]).pipe(\n map(\n ({ 0: visibleColumns, 1: changes }) =>\n new Map([...changes.entries()].filter(([thName]) => visibleColumns.includes(thName)))\n ),\n switchMap((changes) =>\n combineLatest(\n [...changes.entries()].map(({ 1: $width }) =>\n $width.asObservable().pipe(map((width) => width))\n )\n ).pipe(\n map((widths) => {\n let tableWidth = this.checkboxColumn() ? CHECKBOX_SELECTOR_WIDTH_PX : 0;\n\n for (const width of widths) {\n tableWidth += width ? Number(width) : 0;\n }\n\n return tableWidth;\n })\n )\n )\n )\n );\n\n protected stateObjects = this._selectedService?.state;\n\n protected visibleColumnsTree = computed(() =>\n this._filterVisibleColumns(this.columnsData(), this.columns())\n );\n protected maxDepth = computed(() => this._getMaxDepth(this.visibleColumnsTree()));\n protected leaves = computed(() => this._getFlatLeaves(this.visibleColumnsTree()));\n\n protected headerRows = computed(() => {\n const maxDepth = this.maxDepth();\n const rows: { col: IColumnData; rowspan: number; colspan: number }[][] = Array.from(\n { length: maxDepth },\n () => []\n );\n\n if (maxDepth === 0) {\n return rows;\n }\n\n for (const col of this.visibleColumnsTree()) {\n this._buildHeaderRecursive(col, 0, maxDepth, rows);\n }\n\n return rows;\n });\n\n private _deprecatedSelectedRowsCounter = signal(0);\n\n protected readonly timeZoneChanges$ = this.dts.isTimeZoneChanged$;\n\n protected readonly columnOrders = new Map<string, RegisterTableCellSorter<any>>();\n\n private readonly _projectedHeadersMap = new Map<string, TemplateRef<any>>();\n private readonly _projectedCellsMap = new Map<string, TemplateRef<any>>();\n\n private readonly _clickedRow$ = new Subject<unknown>();\n\n private readonly _hoveredRow$ = new BehaviorSubject<unknown>(null);\n\n protected lastSelectedRow: unknown;\n\n constructor() {\n this._setScrollPositionAfterDataLoading();\n this._projectHeaderTemplates();\n this._projectCellTemplates();\n // TODO удалить метод, как только перестанет использоваться is_visible по проекту\n this._syncRowVisibilityDOM();\n\n effect(() => {\n const data = this.rowData();\n\n if (data.length > 0 && !this.lastSelectedRow) {\n [this.lastSelectedRow] = data;\n }\n });\n }\n\n private _setScrollPositionAfterDataLoading(): void {\n effect(() => {\n if (!this.isLoading()) {\n untracked(() => {\n const { top, left } = this.scrollPosition();\n const scrollbarElement = this.scrollbar()?.nativeElement;\n\n if (scrollbarElement) {\n scrollbarElement.scrollTop = top;\n scrollbarElement.scrollLeft = left;\n }\n });\n }\n });\n }\n\n private _projectHeaderTemplates(): void {\n effect(() => {\n this._projectedHeadersMap.clear();\n for (const template of this.headerTemplates()) {\n this._projectedHeadersMap.set(template.headerTemplateName(), template.tpl);\n }\n });\n }\n\n private _projectCellTemplates(): void {\n effect(() => {\n this._projectedCellsMap.clear();\n for (const template of this.cellTemplates()) {\n this._projectedCellsMap.set(template.cellTemplateName, template.tpl);\n }\n });\n }\n\n private _syncRowVisibilityDOM(): void {\n this._observerRowsVisibilityDOM$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe();\n }\n\n public ngOnDestroy(): void {\n this._clickedRow$.complete();\n this._hoveredRow$.complete();\n for (const subject of this._thsWidthMap().values()) {\n subject.complete();\n }\n }\n\n protected getProjectionHeaderByName(name: string): TemplateRef<any> | undefined {\n return this._projectedHeadersMap.get(name);\n }\n\n protected getProjectionCellByName(name: string): TemplateRef<any> | undefined {\n return this._projectedCellsMap.get(name);\n }\n\n protected sortChange({ sortComparator }: TuiTableSortChange<Partial<Record<string, any>>>): void {\n if (!sortComparator) {\n return;\n }\n\n const id = sortComparator({}, {}) as any as string;\n const columnOrder = this.columnOrders.get(id);\n\n if (this._shift.isPressed()) {\n this.updateColumnOrder(id, columnOrder);\n } else {\n this.columnOrders.clear();\n this.updateColumnOrder(id, columnOrder);\n }\n\n this.sort.emit([...this.columnOrders.values()]);\n }\n\n private updateColumnOrder(\n id: string,\n columnOrder: RegisterTableCellSorter<any> | undefined\n ): void {\n if (columnOrder) {\n const { options } = columnOrder;\n const { order } = options;\n\n if (order === EOrder.DESC) {\n this.columnOrders.delete(id);\n } else {\n this.columnOrders.set(id, { options: { ...options, order: EOrder.DESC } });\n }\n } else {\n this.columnOrders.set(id, { options: { id, order: EOrder.ASC } });\n }\n }\n\n protected setThName(thName: string): any {\n return () => thName;\n }\n\n protected checkAvailableColumnSorting(columnData: IColumnData): boolean {\n const { sortable, type } = columnData;\n const availableSortColumnTypes: ColumnDataTypes[] = [\n EColumnDataType.TEXT,\n EColumnDataType.DATE,\n EColumnDataType.NUM,\n ];\n\n return !this.sortingDisabled() && sortable !== false && availableSortColumnTypes.includes(type);\n }\n\n protected checkResizeBlocked(columnData: IColumnData): boolean {\n const resizableBlockedTypes: ColumnDataTypes[] = [\n EColumnDataType.CHECKBOX,\n EColumnDataType.ICON,\n EColumnDataType.ICON_SVG,\n ];\n\n return columnData.fixed || resizableBlockedTypes.includes(columnData.type);\n }\n\n protected onRowHover(row: unknown): void {\n this._hoveredRow$.next(row);\n }\n\n protected onRowClick(event: MouseEvent, row: unknown): void {\n const blueHighlightsSelected = window.getSelection();\n blueHighlightsSelected?.removeAllRanges();\n\n const stateObjects = this.stateObjects?.();\n\n // TODO оставить только if после SMA2-3134\n if (stateObjects) {\n if (event.shiftKey) {\n this._changeRangeRowsState(stateObjects, this.lastSelectedRow, row);\n } else {\n if (event.ctrlKey) {\n this._changeOnlyRowState(stateObjects, row, true);\n } else {\n this._changeOnlyRowState(stateObjects, row);\n }\n this.lastSelectedRow = row;\n }\n\n this.rowClick.emit(row);\n\n const selectedObjects = this._selectedService?.selectedValues();\n\n if (selectedObjects) {\n this.rowSelected.emit({\n row: [...selectedObjects],\n count: selectedObjects.size,\n });\n }\n\n this._clickedRow$.next(row);\n return;\n }\n\n if (event.shiftKey) {\n this._selectRangeRows(this.lastSelectedRow, row);\n } else {\n if (event.ctrlKey) {\n this._selectOnlyRow(row, true);\n } else {\n this._selectOnlyRow(row);\n }\n this.lastSelectedRow = row;\n }\n\n this.rowClick.emit(row);\n this.rowSelected.emit({\n row: [...this.selectedObjects()],\n count: this.selectedObjects().size,\n });\n }\n\n private _changeOnlyRowState(\n state: Map<ScalarUUID, IRegisterObject>,\n row: unknown,\n saveSelected?: boolean\n ): void {\n if (typeof row !== 'object' || !row || !('id' in row)) {\n console.error('Поле id отсутствует в элементе', row);\n return;\n }\n\n const id = row.id as string;\n const wasSelected = state.get(id)?.state === ERegisterObjectState.SELECTED;\n\n if (saveSelected) {\n this.updateStateObjectByKey(id, {\n state: wasSelected ? ERegisterObjectState.UNSELECTED : ERegisterObjectState.SELECTED,\n });\n } else {\n this.updateAllStateObjectsByState(ERegisterObjectState.UNSELECTED);\n this.updateStateObjectByKey(id, { state: ERegisterObjectState.SELECTED });\n }\n }\n\n private _selectOnlyRow(row: unknown, saveSelected?: boolean): void {\n if (typeof row !== 'object' || !row || !('id' in row)) {\n console.error('Поле id отсутствует в элементе', row);\n return;\n }\n\n const id = row.id as string;\n const wasSelected = this.selectedIds().has(id);\n\n if (saveSelected) {\n if (wasSelected) {\n this.selectedIds().delete(id);\n this.selectedObjects().delete(row);\n } else {\n this.selectedIds().add(id);\n this.selectedObjects().add(row);\n }\n } else {\n this.selectedIds().clear();\n this.selectedObjects().clear();\n this.selectedIds().add(id);\n this.selectedObjects().add(row);\n }\n this._emitDeprecatedSelectedRows();\n }\n\n private _emitDeprecatedSelectedRows(): void {\n this._deprecatedSelectedRowsCounter.update((value) => value + 1);\n }\n\n private _changeRangeRowsState(\n stateObjects: Map<ScalarUUID, IRegisterObject>,\n previousRow: unknown,\n currentRow: unknown\n ): void {\n this.updateAllStateObjectsByState(ERegisterObjectState.UNSELECTED);\n\n let prevIndex = this.rowData().indexOf(previousRow);\n let currIndex = this.rowData().indexOf(currentRow);\n\n if (prevIndex > currIndex) {\n const tempIndex = prevIndex;\n prevIndex = currIndex;\n currIndex = tempIndex;\n }\n\n const idsObjectsShouldSelected: Set<ScalarUUID> = new Set(\n this.rowData()\n .slice(prevIndex === -1 ? 0 : prevIndex, currIndex + 1)\n .map((row) => row.id)\n );\n\n const slicedStateObjects = new Map(\n [...stateObjects].filter(([key]) => idsObjectsShouldSelected.has(key))\n );\n\n for (const key of slicedStateObjects.keys()) {\n this.updateStateObjectByKey(key, { state: ERegisterObjectState.SELECTED });\n }\n }\n\n private _selectRangeRows(previousRow: unknown, currentRow: unknown): void {\n let prevIndex = this.rowData().indexOf(previousRow);\n let currIndex = this.rowData().indexOf(currentRow);\n\n if (prevIndex > currIndex) {\n const tempIndex = prevIndex;\n prevIndex = currIndex;\n currIndex = tempIndex;\n }\n\n const itemsShouldSelected = this.rowData().slice(\n prevIndex === -1 ? 0 : prevIndex,\n currIndex + 1\n );\n\n this.selectedIds().clear();\n this.selectedObjects().clear();\n this._emitDeprecatedSelectedRows();\n\n for (const item of itemsShouldSelected) {\n this.selectedIds().add(item.id);\n this.selectedObjects().add(item);\n }\n }\n\n protected thResizeChanges(name: string, width: number): void {\n const thWidthChangesEntry = this._thsWidthMap().get(name);\n\n if (thWidthChangesEntry) {\n const validWidth = width > MIN_COL_WIDTH_PX ? width : MIN_COL_WIDTH_PX;\n thWidthChangesEntry.next(validWidth.toString());\n }\n }\n\n protected getThWidth(name: string): string | undefined {\n const thWidthChangesEntry = this._thsWidthMap().get(name);\n\n return thWidthChangesEntry?.getValue();\n }\n\n protected saveScrollEndPosition(): void {\n const scrollbarElement = this.scrollbar()?.nativeElement;\n\n if (scrollbarElement && !this.isLoading()) {\n const { scrollTop, scrollLeft } = scrollbarElement;\n\n this.scrollPosition.set({\n top: scrollTop,\n left: scrollLeft,\n });\n }\n }\n\n protected updateAllStateObjectsByState(state: ERegisterObjectState): void {\n this._selectedService?.setAllStateObjectsByState(state);\n }\n\n protected updateStateObjectByKey(key: ScalarUUID, updates: Partial<IRegisterObject>): void {\n this._selectedService?.setStateObjectByKey(key, updates);\n }\n\n protected markRowBeforeSelect(row: unknown): boolean {\n const shiftPressed = this._shift.isPressed();\n const prevRow = this.lastSelectedRow;\n const hoveredRow = this._hoveredRow$.getValue();\n\n if (shiftPressed && prevRow && hoveredRow) {\n let beforeIndex = this.rowData().indexOf(prevRow);\n let afterIndex = this.rowData().indexOf(hoveredRow);\n\n if (beforeIndex > afterIndex) {\n const tempIndex = beforeIndex;\n beforeIndex = afterIndex;\n afterIndex = tempIndex;\n }\n\n const currentIndex = this.rowData().indexOf(row);\n\n return beforeIndex <= currentIndex && currentIndex <= afterIndex;\n }\n\n return false;\n }\n\n private _buildHeaderRecursive(\n col: IColumnData,\n level: number,\n maxDepth: number,\n rows: { col: IColumnData; rowspan: number; colspan: number }[][]\n ): number {\n const children = col.children || [];\n const hasChildren = children.length > 0;\n\n const customRowspan = col.rowspan || 1;\n const nextLevel = level + customRowspan;\n\n let colspan = 0;\n\n if (hasChildren) {\n for (const child of children) {\n colspan += this._buildHeaderRecursive(child, nextLevel, maxDepth, rows);\n }\n } else {\n colspan = 1;\n }\n\n const rowspan = hasChildren ? customRowspan : maxDepth - level;\n\n if (rows[level]) {\n rows[level].push({ col, rowspan, colspan });\n }\n\n return colspan;\n }\n\n private _getFlatLeaves(columns: IColumnData[]): IColumnData[] {\n return columns.flatMap((col) => {\n if (col.children && col.children.length > 0) {\n return this._getFlatLeaves(col.children);\n }\n return [col];\n });\n }\n\n private _filterVisibleColumns(columns: IColumnData[], showedNames: string[]): IColumnData[] {\n return columns\n .map((col) => {\n if (col.children && col.children.length > 0) {\n const visibleChildren = this._filterVisibleColumns(col.children, showedNames);\n return { ...col, children: visibleChildren };\n }\n return col;\n })\n .filter((col) => showedNames.includes(col.name) || (col.children && col.children.length > 0));\n }\n\n private _getMaxDepth(columns: IColumnData[]): number {\n if (!columns || columns.length === 0) {\n return 0;\n }\n\n return 1 + Math.max(...columns.map((c) => this._getMaxDepth(c.children || [])));\n }\n}\n","<section class=\"register-table__section\">\n <tui-scrollbar class=\"register-table__scrollable\" (scrollend)=\"saveScrollEndPosition()\">\n <tui-loader class=\"register-table__loader\" [showLoader]=\"isLoading() || false\" [overlay]=\"true\">\n <table\n tuiTable\n class=\"table\"\n stickyRelative\n [columns]=\"columnsWithCheckboxes()\"\n [style.width.px]=\"tableWidth()\"\n tuiSortBy=\"\"\n (sortChange)=\"sortChange($event)\"\n >\n <thead>\n @for (hrow of headerRows(); track $index) {\n <tr tuiThGroup>\n @if ($first && checkboxColumn()) {\n <th\n tuiTh\n *tuiHead=\"CHECKBOX_SELECTOR_KEY\"\n class=\"register-table__th-background--table-cell-blue register-table__cell-icon register-table__cell-checkbox-selector\"\n [style.width.px]=\"CHECKBOX_SELECTOR_WIDTH_PX\"\n [sorter]=\"null\"\n [rowSpan]=\"maxDepth()\"\n >\n <sproc-checkbox-selector\n [selected]=\"selectedIds()\"\n [totalRecords]=\"totalRecords()\"\n [loading]=\"isSelectloading()\"\n [disabled]=\"checkboxDisabled()\"\n (onApply)=\"selectChanged.emit($event)\"\n ></sproc-checkbox-selector>\n </th>\n }\n @for (cell of hrow; track cell.col.name) {\n @let thClass = cell.col.class ?? '';\n @let thType = cell.col.type;\n @let thName = cell.col.name;\n @let sortable = checkAvailableColumnSorting(cell.col);\n @let resizeBlocked = checkResizeBlocked(cell.col);\n <th\n tuiTh\n tuiResizable\n *tuiHead=\"thName\"\n [ngClass]=\"['register-table__th', thType | classByType, thClass]\"\n [stickyLeft]=\"cell.col.fixed ?? (thName | stickyColumn: stickyLeftIds())\"\n [stickyRight]=\"cell.col.fixed ?? (thName | stickyColumn: stickyRightIds())\"\n [stylesOnSticky]=\"stickyThStyle\"\n [style]=\"cell.col.headerStyle ?? ''\"\n [style.min-width.px]=\"getThWidth(thName)\"\n [style.width.px]=\"getThWidth(thName)\"\n [style.max-width.px]=\"getThWidth(thName)\"\n [tuiSortable]=\"sortable\"\n [sorter]=\"sortable ? setThName(thName) : null\"\n [tuiHint]=\"cell.col.tooltipText ?? null\"\n [rowSpan]=\"cell.rowspan\"\n [colSpan]=\"cell.colspan\"\n [attr.order]=\"columnOrders.get(thName)?.options?.order\"\n >\n @if (cell.col.isHeadTemplate) {\n @let thProjection = getProjectionHeaderByName(thName);\n\n @if (thProjection) {\n <ng-container\n [ngTemplateOutlet]=\"thProjection\"\n [ngTemplateOutletContext]=\"{\n $implicit: cell.col,\n }\"\n ></ng-container>\n }\n } @else {\n @switch (thType) {\n @case (EColumnDataType.ICON) {\n <tui-icon\n class=\"register-table--icon-color\"\n [icon]=\"cell.col.value!\"\n ></tui-icon>\n }\n @case (EColumnDataType.ICON_SVG) {\n <img [src]=\"cell.col.value\" [alt]=\"thName\" />\n }\n @case (EColumnDataType.TEXT) {\n @if (cell.col.svgSrc) {\n <img [src]=\"cell.col.svgSrc\" [alt]=\"thName\" />\n }\n <span class=\"text-overflow--ellipsis\" [ngStyle]=\"cell.col.textStyle\">\n {{ cell.col.value }}\n </span>\n }\n @case (EColumnDataType.NUM) {\n <span [ngStyle]=\"cell.col.textStyle\">\n {{ cell.col.value }}\n </span>\n }\n @case (EColumnDataType.DATE) {\n <span [ngStyle]=\"cell.col.textStyle\">\n {{ cell.col.value }}\n </span>\n }\n @case (EColumnDataType.CHECKBOX) {\n {{ cell.col.value }}\n }\n }\n }\n @if (!resizeBlocked) {\n <div\n class=\"register-table__cell-resizer\"\n [tuiResizer]=\"[1, 0]\"\n (tuiSizeChange)=\"thResizeChanges(cell.col.name, $event[0])\"\n (click)=\"$event.stopPropagation()\"\n ></div>\n }\n </th>\n }\n </tr>\n }\n </thead>\n @let rows = rowData();\n <tbody tuiTbody>\n @for (row of rows; track row.id) {\n @let state = stateObjects?.();\n @let trSelected =\n state\n ? state.get(row.id)?.state === ERegisterObjectState.SELECTED\n : selectedIds().has(row.id);\n\n <tr\n #bodyRow\n tuiTr\n class=\"register-table__row\"\n [class.selected]=\"trSelected\"\n [class.shift-pressed]=\"markRowBeforeSelect(row)\"\n (mouseenter)=\"onRowHover(row)\"\n (mouseleave)=\"onRowHover(null)\"\n (click)=\"onRowClick($event, row)\"\n (dblclick)=\"rowDblClick.emit(row)\"\n >\n @if (checkboxColumn()) {\n <td\n tuiTd\n *tuiCell=\"CHECKBOX_SELECTOR_KEY\"\n class=\"register-table__cell-checkbox-selector\"\n >\n <input\n tuiCheckbox\n size=\"s\"\n type=\"checkbox\"\n class=\"checkbox\"\n [checked]=\"trSelected\"\n [disabled]=\"checkboxDisabled()\"\n />\n </td>\n }\n @for (columnData of leaves(); track columnData.name) {\n @let tdType = columnData.type;\n @let tdKey = columnData.name;\n @let tdValue = row[tdKey];\n @let tdClass = columnData.classTd ?? '';\n\n <td\n tuiTd\n *tuiCell=\"tdKey\"\n [ngClass]=\"[tdType | classByType: 'td', tdClass]\"\n [stickyLeft]=\"tdKey | stickyColumn: stickyLeftIds()\"\n [stickyRight]=\"tdKey | stickyColumn: stickyRightIds()\"\n [stylesOnSticky]=\"stickyTdStyle\"\n >\n @if (columnData.isTemplate) {\n @let tdProjection = getProjectionCellByName(tdKey);\n\n @if (tdProjection) {\n <ng-container\n [ngTemplateOutlet]=\"tdProjection\"\n [ngTemplateOutletContext]=\"{\n $implicit: tdValue,\n row,\n }\"\n ></ng-container>\n }\n } @else {\n @switch (tdType) {\n @case (EColumnDataType.ICON) {\n @if (tdValue) {\n <tui-icon\n class=\"register-table--icon-color\"\n [icon]=\"columnData.value!\"\n ></tui-icon>\n }\n }\n @case (EColumnDataType.ICON_SVG) {\n @if (tdValue) {\n <img [src]=\"columnData.value\" [alt]=\"tdKey\" />\n }\n }\n @case (EColumnDataType.CHECKBOX) {\n <input\n tuiCheckbox\n size=\"s\"\n type=\"checkbox\"\n class=\"checkbox\"\n [checked]=\"!!tdValue\"\n [disabled]=\"true\"\n />\n }\n @case (EColumnDataType.TEXT) {\n <span [tuiHint]=\"tdValue\">\n {{ tdValue ?? '' }}\n </span>\n <span>\n {{ tdValue ? columnData.postfix : '' }}\n </span>\n }\n @case (EColumnDataType.NUM) {\n {{ tdValue ?? '' | number: columnData.numberPipe }}\n {{ tdValue ? columnData.postfix : '' }}\n }\n @case (EColumnDataType.DATE) {\n {{\n (tdValue\n | formatDate\n : ETimezone.UTC\n : columnData.datePattern ?? EDatePattern.DATE_TIME_WITHOUT_SECONDS\n : (timeZoneChanges$ | async)) ?? ''\n }}\n {{ tdValue ? columnData.postfix : '' }}\n }\n }\n }\n </td>\n }\n </tr>\n } @empty {\n <tr class=\"empty-layer\">\n <td colspan=\"100%\">\n <div class=\"centered-text\">{{ emptyText() }}</div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </tui-loader>\n </tui-scrollbar>\n\n <sproc-paginator\n class=\"register-table__paginator\"\n [page]=\"page()\"\n [rows]=\"limit()\"\n [pageLinkSize]=\"1\"\n [totalRecords]=\"totalRecords()\"\n [totalNotFiltered]=\"totalNotFiltered()\"\n [rowsCountOptions]=\"[30, 40, 50]\"\n [selectedCounter]=\"selectedCounter()\"\n (paginatorChange)=\"paginatorChange.emit($event)\"\n [disabled]=\"paginatorDisabled()\"\n [isLoading]=\"isPaginatorLoading()\"\n >\n </sproc-paginator>\n</section>\n","import { ChangeDetectionStrategy, Component, Injector, input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { TuiIcon, TuiTextfield } from '@taiga-ui/core';\nimport { CommonModule } from '@angular/common';\nimport { InputsModule } from '../inputs';\nimport { FormatterGqlValueType, IInputControl } from '../../types';\n\n@Component({\n selector: 'sproc-search-input',\n standalone: true,\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, ReactiveFormsModule, InputsModule, TuiIcon, TuiTextfield],\n})\nexport class SearchInputComponent {\n public searchControl = input.required<\n FormControl<string | null> | IInputControl<string | null>\n >();\n public searchGqlFormatter = input<FormatterGqlValueType<string>>();\n public disabled = input<boolean>(false);\n\n public readonly formatGqlValueProxy: FormatterGqlValueType<string> = (\n value: string,\n injector?: Injector\n ) => {\n const formatter = this.searchGqlFormatter();\n const trimmedValue = value.trim();\n return formatter ? formatter(trimmedValue, injector) : undefined;\n };\n}\n","<sproc-param-custom [formControl]=\"searchControl()\" [formatGqlValue]=\"formatGqlValueProxy\">\n <tui-textfield tuiTextfieldSize=\"m\" [tuiTextfieldCleaner]=\"true\">\n <input placeholder=\"Поиск\" tuiTextfield [formControl]=\"searchControl()\" />\n <tui-icon icon=\"@tui.search\" [style.width.px]=\"16\" />\n </tui-textfield>\n</sproc-param-custom>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["DialogOverlayInsidePlacement","i1.FiltersTransmitService","rxjsFilter","SvgSrc","RuntimeError","i1.FiltersStateService","i2.FiltersStateService","i3","i4","i1.FiltersService","i3.FilterListService","i5","i6.DividerComponent","i1","i1.RegisterBaseStore","i2.FiltersService","i4.FilterEditComponent","i5.FilterListSavedComponent","i6.FilterListHeaderComponent","i7.FilterListFooterComponent","i8.DividerComponent","i9.SlidingPanelComponent","i10","i2","moment","i1.DateTimeService","i4.FormatDatePipe","map","filter","switchMap","tap","takeUntil","i2.ParamCustomComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgBY;AAAZ,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,aAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACrB,CAAC,EAJW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;;AChBzB;AACO,MAAM,aAAa,GAAG,8CAA8C;AACpE,MAAM,WAAW,GAAG,4CAA4C;AAChE,MAAM,iBAAiB,GAAG,kDAAkD;AAC5E,MAAM,gBAAgB,GAAG,oDAAoD;AAC7E,MAAM,mBAAmB,GAAG,6DAA6D;AACzF,MAAM,QAAQ,GAAG,yCAAyC;AAC1D,MAAM,eAAe,GAAG,gDAAgD;AACxE,MAAM,SAAS,GAAG,0CAA0C;;MC4BtD,+BAA+B,CAAA;AAf5C,IAAA,WAAA,GAAA;AAgBS,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAmB;QAC1C,IAAA,CAAA,MAAM,GAAG,KAAK,EAAmB;AACjC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;QAER,IAAA,CAAA,cAAc,GAAG,gBAAgB;QACjC,IAAA,CAAA,WAAW,GAAG,mBAAmB;QACjC,IAAA,CAAA,OAAO,GAAG,QAAQ;QAClB,IAAA,CAAA,aAAa,GAAG,eAAe;QAC/B,IAAA,CAAA,QAAQ,GAAG,SAAS;QAEpB,IAAA,CAAA,aAAa,GAAG,aAAa;AAE7B,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC;AAC7C,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,IAAI,EAAE;AAC7C,YAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;YAExC,OAAO,UAAU,IAAI,YAAY;AACnC,QAAA,CAAC,CAAC;AACiB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;AAwD5C,IAAA;IAtDW,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;IAEU,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC;IACzC;AAEU,IAAA,cAAc,CAAC,MAAuB,EAAA;AAC9C,QAAA,OAAO,MAAM,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM;IAC/C;AAEU,IAAA,gBAAgB,CAAC,MAAuB,EAAA;QAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM;AACvD,QAAA,MAAM,CAAC,MAAM,GAAG,QAAQ,GAAG,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM;AAEvE,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM;;QAG3B,IAAI,QAAQ,EAAE;YACZ,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,MAAM,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9F;AAEA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE;AAClC,QAAA,MAAM,cAAc,GAAG,YAAY,EAAE,QAAQ;QAE7C,IAAI,YAAY,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/D,YAAA,MAAM,iBAAiB,GAAG,cAAc,CAAC,KAAK,CAC5C,CAAC,WAAW,KAAK,WAAW,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,CAC7D;AAED,YAAA,YAAY,CAAC,MAAM,GAAG,iBAAiB,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,OAAO;QACxF;IACF;AAEU,IAAA,gBAAgB,CAAC,KAAqC,EAAA;QAC9D,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ;QAE9C,IAAI,CAAC,eAAe,EAAE;YACpB,OAAO,CAAC,IAAI,CAAC,sDAAsD,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YACnF;QACF;QAEA,IAAI,KAAK,CAAC,iBAAiB,KAAK,KAAK,CAAC,SAAS,EAAE;YAC/C,eAAe,CAAC,eAAe,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC;QAC3E;aAAO;AACL,YAAA,iBAAiB,CACf,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAC5B,eAAe,EACf,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,CACnB;QACH;IACF;+GA5EW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpC5C,i5DAiEA,EAAA,MAAA,EAAA,CAAA,i5HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7Ba,+BAA+B,mHAXxC,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,WAAW,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,6BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,SAAS,6EACT,gBAAgB,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAMP,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAf3C,SAAS;+BACE,gCAAgC,EAAA,UAAA,EAC9B,IAAI,EAAA,OAAA,EACP;wBACP,gBAAgB;wBAChB,OAAO;wBACP,kBAAkB;wBAClB,WAAW;wBACX,SAAS;wBACT,gBAAgB;qBACjB,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,i5DAAA,EAAA,MAAA,EAAA,CAAA,i5HAAA,CAAA,EAAA;;;MExBpC,aAAa,CAAA;AAH1B,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC3C,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAiD9D,IAAA;IA/CQ,SAAS,CACd,QAAiB,EACjB,MAAgD,EAAA;AAEhD,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE;AACxC,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,KAAK,EAAE,GAAG;YACV,QAAQ,EAAEA,2BAA4B,CAAC,MAAM;AAC7C,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,GAAG,MAAM;AACV,SAAA,CAAC;IACJ;AAEO,IAAA,cAAc,CACnB,SAA0C,EAC1C,OAAgB,EAChB,QAAmB,EAAA;AAEnB,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE;YAClC,QAAQ;AACR,YAAA,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK;AACrC,YAAA,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;AACxC,YAAA,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM;AAC7B,SAAA,CAAsC;AAEvC,QAAA,OAAO,MAAM,CAAC;AACZ,YAAA,GAAG,OAAO;AACX,SAAA,CAAC;IACJ;AAEA;;;;;;AAMG;AACI,IAAA,yBAAyB,CAC9B,OAAiD,EACjD,OAAsC,EACtC,OAAsC,EAAA;AAEtC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAI,OAAO,EAAE;AAC7C,YAAA,GAAG,OAAO;AACV,YAAA,GAAG,OAAO;AACX,SAAA,CAAC;IACJ;+GAlDW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACTM,MAAM,eAAe,GAAG,gBAAgB;;ACE/C,IAAY,YAiBX;AAjBD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,YAAA,CAAA,GAAA,SAAsB;AACtB,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,YAAmB;AACnB,IAAA,YAAA,CAAA,iBAAA,CAAA,GAAA,UAA4B;AAC5B,IAAA,YAAA,CAAA,2BAAA,CAAA,GAAA,kBAA8C;AAC9C,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,qBAAiC;AACjC,IAAA,YAAA,CAAA,gBAAA,CAAA,GAAA,YAA6B;AAC7B,IAAA,YAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,YAAA,CAAA,+BAAA,CAAA,GAAA,uBAAuD;AACvD,IAAA,YAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,YAAA,CAAA,uBAAA,CAAA,GAAA,qBAA6C;AAC7C,IAAA,YAAA,CAAA,uBAAA,CAAA,GAAA,qBAA6C;AAC7C,IAAA,YAAA,CAAA,kCAAA,CAAA,GAAA,qBAAwD;AACxD,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,KAAe;AACf,IAAA,YAAA,CAAA,KAAA,CAAA,GAAA,GAAS;AACT,IAAA,YAAA,CAAA,aAAA,CAAA,GAAA,OAAqB;AACvB,CAAC,EAjBW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;AAmBxB,IAAY,cAGX;AAHD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,YAAuB;AACzB,CAAC,EAHW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;AAK1B,IAAY,SAOX;AAPD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,QAAc;AACd,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,QAAc;AACd,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,QAAc;AACd,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,QAAc;AACd,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,QAAc;AACd,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,QAAc;AAChB,CAAC,EAPW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;;ACArB;AACA;AACA;AACO,MAAM,mBAAmB,GAAG;IACjC,YAAY;IACZ,sBAAsB;IACtB,mBAAmB;IACnB,2BAA2B;IAC3B,yBAAyB;IACzB,yBAAyB;IACzB,qBAAqB;IACrB,qBAAqB;;AAEhB,MAAM,UAAU,GAAgB;AACrC,IAAA;AACE,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,MAAM,EAAE,YAAY;QACpB,SAAS,EAAE,SAAS,CAAC,GAAG;AACzB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,MAAM,EAAE,eAAe;QACvB,SAAS,EAAE,SAAS,CAAC,GAAG;AACzB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,MAAM,EAAE,eAAe;QACvB,SAAS,EAAE,SAAS,CAAC,GAAG;AACzB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,kBAAkB;AACzB,QAAA,MAAM,EAAE,cAAc;QACtB,SAAS,EAAE,SAAS,CAAC,GAAG;AACzB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,cAAc;AACrB,QAAA,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,SAAS,CAAC,GAAG;AACzB,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,cAAc;AACrB,QAAA,MAAM,EAAE,eAAe;QACvB,SAAS,EAAE,SAAS,CAAC,GAAG;AACzB,KAAA;;AAGI,MAAM,eAAe,GAA2B;AACrD,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,QAAQ,EAAE,kEAAkE;AAC5E,IAAA,QAAQ,EACN,0HAA0H;AAC5H,IAAA,QAAQ,EAAE,sBAAsB;AAChC,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,QAAQ,EAAE,wEAAwE;;MAMvE,eAAe,CAAA;AAW1B,IAAA,WAAA,GAAA;AAVgB,QAAA,IAAA,CAAA,aAAa,GAAoB;AAC/C,YAAA,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC;AAC/B,YAAA,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACvC;QAEgB,IAAA,CAAA,kBAAkB,GAAG,IAAI,eAAe,CACvD,IAAI,CAAC,aAAa,CAAC,gBAAgB,CACpC;AACM,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;QAGhE,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC;QAE5D,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAc;QAC/E;aAAO;YACL,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE;QACzD;IACF;AAEO,IAAA,cAAc,CAAC,SAAoB,EAAA;AACxC,QAAA,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAEhE,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,SAAS;QAC/C,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE;QACvD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;IACnE;IAEO,iBAAiB,GAAA;QACtB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;IACnE;IAEO,cAAc,GAAA;AACnB,QAAA,MAAM,OAAO,GAA+B;AAC1C,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK;AACnD,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;SAClB;QACD,OAAO,IAAI,IAAI,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC;IACpD;AAEO,IAAA,iBAAiB,CAAC,QAAmB,EAAA;AAC1C,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;IACxC;AAEA;;;;;;;;;;;;AAYG;IACI,SAAS,CAAC,GAAW,EAAE,OAAe,EAAA;QAC3C,MAAM,IAAI,GAAS,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AAE3C,QAAA,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;IAC9B;;AAGO,IAAA,iBAAiB,CAAC,GAAW,EAAA;AAClC,QAAA,MAAM,OAAO,GAA+B;AAC1C,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,GAAG,EAAE,SAAS;SACf;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC;AACtE,QAAA,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAExC,QAAA,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,IAAI,EAAE;IAC3B;;AAGO,IAAA,mBAAmB,CAAC,GAAW,EAAA;AACpC,QAAA,MAAM,OAAO,GAA+B;AAC1C,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,GAAG,EAAE,SAAS;SACf;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC;AACtE,QAAA,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAE1C,QAAA,OAAO,GAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,IAAI,EAAE;IAClC;IAEO,cAAc,CAAC,GAAW,EAAE,MAAe,EAAA;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;QACnC,IAAI,MAAM,GAAG,MAAM;QACnB,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS;QACxD;QAEA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAO,EAAE,EAAE,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC;AAEtC,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,YAAY,CAAC,GAAW,EAAA;QAC7B,IAAI,UAAU,GAAG,GAAG;;AAGpB,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;YAC1B,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;QAC1C;AAEA,QAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B,YAAA,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/D;AAEA,QAAA,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC;IAC7B;AAEQ,IAAA,YAAY,CAAC,GAAW,EAAA;QAC9B,MAAM,aAAa,GAAG,qBAAqB;AAE3C,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;IAChC;AAEA;;AAEK;AACE,IAAA,wBAAwB,CAAC,IAAU,EAAA;QACxC,IAAI,MAAM,GAAG,IAAI;QAEjB,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,MAAM;AACpE,YAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AAEvC,YAAA,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE;QACpC;AAEA,QAAA,OAAO,MAAM;IACf;IAEO,cAAc,CAAC,IAAoB,EAAE,MAAc,EAAA;QACxD,IAAI,MAAM,GAAG,EAAE;QACf,IAAI,IAAI,EAAE;YACR,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;QAChF;AACA,QAAA,OAAO,MAAM;IACf;AAEO,IAAA,cAAc,CAAC,IAAa,EAAA;AACjC,QAAA,MAAM,QAAQ,GAAS,IAAI,IAAI,CAAC,IAAK,CAAC;AACtC,QAAA,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE;aAC9E,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,CAAA,CAAE,GAAG,IAAI,CAAC;aAC7C,IAAI,CAAC,GAAG,CAAC;AACZ,QAAA,OAAO,MAAM;IACf;IAEO,WAAW,CAAC,IAAU,EAAE,MAAe,EAAA;QAC5C,IAAI,MAAM,GAAG,MAAM;QACnB,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS;QACxD;QAEA,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAO,CAAC;AAE3C,QAAA,OAAO,CAAC,CAAC,WAAW,EAAE;IACxB;IAEO,aAAa,CAAC,IAAU,EAAE,QAAgB,EAAA;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QACvC,IAAI,EAAE,GAAG,QAAQ;AACjB,QAAA,IAAI,QAAQ,KAAK,SAAS,CAAC,GAAG,EAAE;YAC9B,EAAE,GAAG,GAAG;QACV;QAEA,OAAO,MAAM,CAAC,SAAS,CAAC,CAAA,EAAG,GAAG,CAAA,EAAG,EAAE,CAAA,CAAE,CAAC;IACxC;AAEQ,IAAA,gBAAgB,CAAC,IAAU,EAAA;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAE;QAEhD,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG;IACrE;IAEO,sBAAsB,CAAC,IAAU,EAAE,EAAU,EAAA;AAClD,QAAA,MAAM,GAAG,GAAG,CAAC,GAAW,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QAC5D,MAAM,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,WAAW,EAAE,CAAA,CAAA,EAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA,CAAA,EAAI,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,CAAE;QAC3F,MAAM,QAAQ,GAAG,CAAA,EAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAA,EAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA,CAAA,EAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA,CAAE;AAE9F,QAAA,OAAO,GAAG,QAAQ,CAAA,CAAA,EAAI,QAAQ,CAAA,EAAG,EAAE,EAAE;IACvC;IAEO,GAAG,GAAA;AACR,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE;QACvB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;aACxC,KAAK,CAAC,GAAG;AACT,aAAA,GAAG,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAExB,QAAA,OAAO,IAAI;IACb;AAEA;;AAEK;IACE,0BAA0B,GAAA;AAC/B,QAAA,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC7D;IAEO,MAAM,GAAA;QACX,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;IACxC;IAEO,oBAAoB,CAAC,SAAe,EAAE,OAAa,EAAA;QACxD,MAAM,MAAM,GAAG,CAAC;QAChB,MAAM,QAAQ,GAAG,CAAC;QAElB,IAAI,KAAK,GAAG,CAAC;AACb,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AAEvC,QAAA,OAAO,WAAW,IAAI,OAAO,EAAE;AAC7B,YAAA,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE;YAEtC,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ,EAAE;gBAClD,KAAK,IAAI,CAAC;YACZ;YAEA,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAChD;AAEA,QAAA,OAAO,KAAK;IACd;IAEO,yBAAyB,GAAA;AAC9B,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE;AAE9B,QAAA,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvB,QAAA,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;AACzB,QAAA,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;AACzB,QAAA,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC;AAE9B,QAAA,OAAO,WAAW;IACpB;AAEO,IAAA,kBAAkB,CAAC,IAAU,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAEvB,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,iBAAiB,CAAC,eAAuB,EAAA;AAC9C,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE;QAC9B,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,eAAe,CAAC;AAC9D,QAAA,OAAO,WAAW;IACpB;AAEO,IAAA,+BAA+B,CAAC,KAAyB,EAAA;AAC9D,QAAA,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK;AAErC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC7E,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;AAEvE,QAAA,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;IACrB;IAEO,iCAAiC,CAAC,IAAU,EAAE,EAAQ,EAAA;AAC3D,QAAA,OAAO,IAAI,kBAAkB,CAC3B,aAAa,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,EAC3C,IAAI,cAAc,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAC3F;IACH;AAEO,IAAA,yBAAyB,CAAC,aAA+B,EAAA;AAC9D,QAAA,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,aAAa;QACjC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAE9C,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;QAChE;AAEA,QAAA,OAAO,IAAI;IACb;AAEO,IAAA,mBAAmB,CAAC,IAAY,EAAA;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAC3C,QAAA,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;IACvF;AAEO,IAAA,iBAAiB,CAAC,IAAU,EAAA;AACjC,QAAA,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IACxE;IAEO,sBAAsB,CAAC,IAAmB,EAAE,OAAsB,EAAA;QACvE,OAAO,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,OAAO,IAAI,YAAY,CAAC,cAAc,CAAC,GAAG,IAAI;IAC/F;AAEO,IAAA,kBAAkB,CAAC,UAAkB,EAAA;AAC1C,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC;AACjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;QAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC;AACtC,QAAA,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;IACpB;+GAxTW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACzEK,MAAO,YACX,SAAQ,WAAW,CAAA;AAQnB,IAAA,WAAA,CACE,KAA8C,EAC9C,eAAyE,EACzE,cAA6D,EAAA;AAE7D,QAAA,KAAK,CAAC,KAAK,EAAE,eAAe,EAAE,cAAc,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CAAwB,IAAI,CAAC;AACpE,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;IAC9B;AACD;;MC1BY,uBAAuB,GAAG,IAAI,cAAc,CACvD,yBAAyB;AAGpB,MAAM,2BAA2B,GACtC,yHAAyH;;MCE9G,aAAa,CAAA;AAOxB,IAAA,WAAA,CAA6B,QAAkB,EAAA;QAAlB,IAAA,CAAA,QAAQ,GAAR,QAAQ;AALlB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAMnD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAuB,EAAE,EAAE,CAAC;AAE5D,QAAA,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM;QAEnC,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAgB,IAAI,CAAC;QAC3D;IACF;AAEA,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC;QAC3C;QAEA,OAAO,IAAI,CAAC,YAAY;IAC1B;AAEA,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE;IACxC;AAEO,IAAA,IAAI,CAAC,KAAiC,EAAA;AAC3C,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;IACrB;AAEA,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAA2B;IAC3D;AAEA,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;IACrC;IAEO,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;IACrB;AAEO,IAAA,2BAA2B,CAAC,MAAuC,EAAA;QACxE,IAAI,CAAC,KAAK,EAAE;QAEZ,KAAK,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE;YAClC,MAAM,GAAG,GAAG,EAAoB;YAChC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAW,GAAG,CAAC;AAE5C,YAAA,IAAI,OAAO,EAAE,YAAY,EAAE;AACzB,gBAAA,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YAClC;iBAAO;gBACL,OAAO,CAAC,IAAI,CAAC,CAAA,iBAAA,EAAoB,EAAE,CAAA,wBAAA,CAA0B,EAAE,KAAK,CAAC;YACvE;QACF;IACF;AAEQ,IAAA,QAAQ,CACd,GAAmB,EAAA;QAEnB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAA6C;IAC9E;AAEA,IAAA,IAAW,kBAAkB,GAAA;QAC3B,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC,KAAI;YACxE,MAAM,OAAO,GAAG,eAAgC;YAChD,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC7C,YAAA,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,KAAK;YAEhD,OAAO;gBACL,EAAE;AACF,gBAAA,KAAK,EAAE,UAAU;aAClB;AACH,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IAAW,SAAS,GAAA;QAClB,MAAM,MAAM,GAA0B,EAAE;AAExC,QAAA,KAAK,MAAM,eAAe,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;YACjE,MAAM,OAAO,GAAG,eAAgC;AAEhD,YAAA,IAAI,OAAO,CAAC,SAAS,EAAE;AACrB,gBAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAChC;YAEA,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QAC3C;QAEA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE;YACnD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QACzC;AAEA,QAAA,OAAO,MAAM;IACf;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IAC9B;+GAtGW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAb,aAAa,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;ACTK,SAAU,SAAS,CAAI,KAAQ,EAAA;IACnC,OAAO,KAAK,KAAK,IAAI;AACvB;AAEM,SAAU,SAAS,CAAI,KAA2B,EAAA;AACtD,IAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAC9C;AAEM,SAAU,IAAI,CAAC,CAAS,EAAA;AAC5B,IAAA,OAAO,CAAA,EAAG,CAAC,IAAI,CAAC,IAAI;AACtB;;ACVO,MAAM,IAAI,GAAG;AAIpB,MAAM,cAAc,GAAG,CAAC,GAAQ,KAAmB;AACjD,IAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;QAC7C,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QACrC,IAAI,EAAE,EAAE;AACN,YAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACxD,YAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAE3D,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE;AACrC,gBAAA,MAAM,UAAU,GAAG,SAAS,GAAG,CAAC;AAChC,gBAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACxE,gBAAA,OAAO,CAAA,EAAG,YAAY,CAAA,IAAA,EAAO,EAAE,EAAE;YACnC;QACF;IACF;AACA,IAAA,OAAO,IAAI;AACb,CAAC;AAED,MAAM,oBAAoB,GAAG,CAAC,QAAgB,EAAE,QAAyB,KAAY;AACnF,IAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AACrD,IAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAExD,IAAA,IAAI,QAAQ,KAAK,OAAO,EAAE;AACxB,QAAA,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG;IAC3B;AAEA,IAAA,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC;AACvC,IAAA,IAAI,WAAW,KAAK,IAAI,EAAE;AACxB,QAAA,OAAO,WAAW;IACpB;AAEA,IAAA,OAAO,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;AAC7B,CAAC;AAEM,MAAM,yBAAyB,GAAG,CAAC,QAAgB,KACxD,oBAAoB,CAAC,QAAQ,EAAE,OAAO;AAExC;;;AAGK;AACE,MAAM,wBAAwB,GAAG,CAAC,QAAgB,KACvD,oBAAoB,CAAC,QAAQ,EAAE,MAAM;;SCzCvB,yBAAyB,GAAA;AACvC,IAAA,OAAO,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAClE;AAEA;;;;;AAKG;AACG,SAAU,wBAAwB,CAAI,KAAa,EAAA;IACvD,OAAO,CAAC,MAAqB,KAAI;QAC/B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,MAAM;QACf;AAEA,QAAA,IAAI,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AAEzD,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACjE;AAEA,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC;AACH;SAEgB,IAAI,GAAA;AAClB,IAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACjB;;AC9BO,MAAM,aAAa,GAAG;AACtB,MAAM,eAAe,GAAG;AAEzB,SAAU,eAAe,CAAC,GAAgC,EAAA;IAC9D,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,IAAI,IAAI;IAElC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,EAAE;QAC1E,KAAK,CAAC,KAAK,EAAE;IACf;AAEA,IAAA,OAAO,KAAK;AACd;AAEO,MAAM,aAAa,GAAG,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,eAAe;;ACPhE,MAAM,wBAAwB,GAAG,SAAS;AAC1C,MAAM,gCAAgC,GAAG,OAAO;AAChD,MAAM,uBAAuB,GAAG,QAAQ;MAGlC,sBAAsB,CAAA;IAMjC,WAAA,CACmB,OAAe,EACf,MAAsB,EAAA;QADtB,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,MAAM,GAAN,MAAM;AAPN,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;IAQnD;AAEI,IAAA,OAAO,CAAC,SAAgC,EAAA;AAC7C,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC5B;AAEO,IAAA,cAAc,CAAC,WAAqD,EAAA;AACzE,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;IAChC;AAEO,IAAA,0BAA0B,CAAC,UAA+B,EAAA;QAC/D;AACG,aAAA,IAAI,CACH,yBAAyB,EAAE,EAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAC9B,GAAG,CAAC,MAAM,IAAI,CAAC,SAAU,CAAC,EAC1B,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;AAE9B,aAAA,SAAS,CAAC,CAAC,SAAS,KAAI;YACvB,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,IAAI,CAAC;AACxF,YAAA,MAAM,OAAO,GAAG,YAAY,GAAG,gCAAgC,GAAG,IAAI,CAAC,eAAe;YACtF,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,SAAS;YAE3D,IAAI,CAAC,eAAe,CAAC;gBACnB,CAAC,uBAAuB,GAAG,MAAM;gBACjC,CAAC,wBAAwB,GAAG,OAAO;AACpC,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,IAAI,EAAE;aACzD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,eAAe,CAAC,KAAI;YAC7B,MAAM,OAAO,GAAG,eAAgC;YAChD,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC7C,YAAA,MAAM,UAAU,GAAG,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,KAAK;YAEhD,OAAO;gBACL,EAAE;AACF,gBAAA,KAAK,EAAE,UAAU;aAClB;AACH,QAAA,CAAC;AACA,aAAA,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,KAAK,IAAI,CAAC;AAExC,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC/B;QAEA;IACF;AAEA,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,wBAAwB,CAAC;AAExE,QAAA,IAAI,KAAK,KAAK,gCAAgC,EAAE;YAC9C;QACF;QAEA,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1B;AAEA,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,uBAAuB,CAAC;IAClE;AAEQ,IAAA,eAAe,CAAC,WAA+C,EAAA;AACrE,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE;YACxB,UAAU,EAAE,IAAI,CAAC,MAAM;YACvB,WAAW;AACX,YAAA,mBAAmB,EAAE,OAAO;AAC5B,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;IACJ;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;IAC/B;+GA1FW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAtB,sBAAsB,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ACNK,MAAO,cAAyB,SAAQ,aAAuB,CAAA;IACnE,WAAA,CACE,QAAkB,EACW,YAAoC,EAAA;QAEjE,KAAK,CAAC,QAAQ,CAAC;QAFc,IAAA,CAAA,YAAY,GAAZ,YAAY;IAG3C;AAEgB,IAAA,IAAI,CAAC,KAAiC,EAAA;AACpD,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAEjB,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;IACrD;+GAbW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAd,cAAc,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;0BAII;;;ICHO;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,YAAA,CAAA,YAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW;AACX,IAAA,YAAA,CAAA,YAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU;AACV,IAAA,YAAA,CAAA,YAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc;AACd,IAAA,YAAA,CAAA,YAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc;AAChB,CAAC,EANW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;IAQZ;AAAZ,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,aAAA,CAAA,aAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAa;AACb,IAAA,aAAA,CAAA,aAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAkB;AAClB,IAAA,aAAA,CAAA,aAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAiB;AACjB,IAAA,aAAA,CAAA,aAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAgB;AAChB,IAAA,aAAA,CAAA,aAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW;AACX,IAAA,aAAA,CAAA,aAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACN,CAAC,EARW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;;IC4Bb;AAAZ,CAAA,UAAY,oBAAoB,EAAA;AAC9B,IAAA,oBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,oBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AAC3B,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,GAAA,EAAA,CAAA,CAAA;;ACnCzB,MAAM,aAAa,GAAG,EAAE;MAGlB,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAElC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AAClD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAA+B,EAAE,CAAC;AAChE,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;QACxC,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAe;YAC7D,KAAK,EAAE,YAAY,CAAC,MAAM;YAC1B,MAAM,EAAE,aAAa,CAAC,IAAI;AAC3B,SAAA,CAAC;;AAEiB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAY,EAAE,CAAC;AAChD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC;AAEjD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAClC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AACpC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;AACtC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AACpC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;AACtC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAClC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AACpC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAC5C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;AAEnC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAE/B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAEvB,IAAA,CAAA,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAEzD,QAAA,IAAA,CAAA,aAAa,GAAG,CAAA,KAAA,EAAQ,IAAI,CAAC,UAAU,EAAE;AACzC,QAAA,IAAA,CAAA,sBAAsB,GAAG,CAAA,eAAA,EAAkB,IAAI,CAAC,UAAU,EAAE;AAgH7E,IAAA;IA9GQ,MAAM,GAAA;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,YAAY,CAAC,MAAM;;QAGvD,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACpB;QAEA,IAAI,CAAC,QAAQ,CAAC;AACZ,YAAA,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,WAAW;YAC9D,MAAM,EAAE,aAAa,CAAC,IAAI;AAC3B,SAAA,CAAC;IACJ;IAEO,SAAS,GAAA;QACd,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAExB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;QAE5B,IAAI,CAAC,SAAS,EAAE;IAClB;AAEU,IAAA,SAAS,KAAU;AAEtB,IAAA,OAAO,CAAC,IAAY,EAAA;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB;AAEO,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;AAEO,IAAA,SAAS,CAAC,MAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;IAC5B;AAEO,IAAA,SAAS,CAAC,IAAkC,EAAA;AACjD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B;AAEO,IAAA,OAAO,CAAC,IAAY,EAAA;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB;AAEO,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;AAEO,IAAA,QAAQ,CAAC,KAAmB,EAAA;AACjC,QAAA,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,YAAY,CAAC,MAAM,CAAC,EAAE;AACxD,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;AAEO,IAAA,YAAY,CAAC,MAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/B;AAEO,IAAA,MAAM,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B;AAEA,IAAA,IAAW,IAAI,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;IAC/B;AAEA,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,aAAa;IACjD;AAEA,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IACjC;AAEA,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAChC;AAEA,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAChC;AAEA,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IACjC;AAEA,IAAA,IAAW,IAAI,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;IAC/B;AAEA,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;IACpC;AAEA,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IACjC;+GAjJW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;ACEK,MAAO,mBAAuB,SAAQ,kBAAqB,CAAA;AAc/D,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QAdQ,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEjE,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAyB,IAAI,CAAC;AACxE,QAAA,IAAA,CAAA,qBAAqB,GAA6B,IAAI,eAAe,CACpF,KAAK,CACN;AACgB,QAAA,IAAA,CAAA,mBAAmB,GAA0B,IAAI,aAAa,EAAU;AAEzE,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;AAC9D,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;AAE5D,QAAA,IAAA,CAAA,cAAc,GAAG,CAAA,MAAA,EAAS,IAAI,CAAC,UAAU,EAAE;QAKzD,IAAI,CAAC,YAAY,EAAE,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC;QAC9D,IAAI,CAAC,UAAU,EAAE;IACnB;IAEQ,UAAU,GAAA;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC/D,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;YAE5D,IAAI,UAAU,EAAE;AACd,gBAAA,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;YACpC;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC/E,YAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC5D,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,kCAAkC,EAAE;IAC3C;IAEQ,kCAAkC,GAAA;QACxC,IAAI,CAAC,MAAM,CAAC;aACT,IAAI,CACHC,MAAU,CACR,CAAC,KAAK,KACJ,KAAK,YAAY,eAAe;AAChC,YAAA,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,UAAU,CAC3D,EACD,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aAEpC,SAAS,CAAC,MAAK;AACd,YAAA,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;AAC9C,QAAA,CAAC,CAAC;IACN;AAEO,IAAA,sBAAsB,CAAC,KAA6B,EAAA;AACzD,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;IACvC;AAEO,IAAA,oBAAoB,CAAC,KAAa,EAAA;AACvC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;IACtC;IAEO,sBAAsB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;IAC7C;IAEgB,SAAS,GAAA;AACvB,QAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;AACpC,QAAA,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE;AACrC,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;IACrC;+GAtEW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAnB,mBAAmB,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;ACND,MAAM,0BAA0B,GAAG,GAAG;MAGzB,2BAA2B,CAAA;AAStC,IAAA,WAAA,GAAA;AARiB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AACtB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAEjC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;AACxC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AAEtC,QAAA,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;QAG3D,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;AAChC,gBAAA,SAAS,CAAC,MAAM,EAAE,QAAQ;qBACvB,IAAI,CACH,YAAY,CAAC,0BAA0B,CAAC,EACxC,GAAG,CAAC,OAAO;oBACT,MAAM,EAAE,MAAM,CAAC,WAAW;oBAC1B,KAAK,EAAE,MAAM,CAAC,UAAU;iBACzB,CAAC,CAAC,EACH,oBAAoB,EAAE,EACtB,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;qBAErC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAI;AAC/B,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;AAC5B,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;+GA5BW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAA3B,2BAA2B,EAAA,CAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC;;;ACGM,MAAM,8BAA8B,GAAG,IAAI;AAC3C,MAAM,mCAAmC,GAAG,IAAI;AAEhD,MAAM,WAAW,GAAG,CAAC,KAA2B,KAA0B;AAC/E,IAAA,IAAI,KAAK,KAAK,oBAAoB,CAAC,QAAQ,EAAE;QAC3C,OAAO,oBAAoB,CAAC,UAAU;IACxC;IAEA,OAAO,oBAAoB,CAAC,QAAQ;AACtC,CAAC;IAEW;AAAZ,CAAA,UAAY,MAAM,EAAA;AAChB,IAAA,MAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,MAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EAHW,MAAM,KAAN,MAAM,GAAA,EAAA,CAAA,CAAA;IAKN;AAAZ,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,aAAA,CAAA,aAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,aAAA,CAAA,aAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAmB;AACnB,IAAA,aAAA,CAAA,aAAA,CAAA,0BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,0BAA4B;AAC5B,IAAA,aAAA,CAAA,aAAA,CAAA,wBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,wBAA0B;AAC5B,CAAC,EANW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;MAQZ,oBAAoB,GAAG,IAAI,cAAc,CACpD,sBAAsB;MAGX,mBAAmB,GAAG,IAAI,cAAc,CACnD,qBAAqB;;ACpCvB,IAAY,cAKX;AALD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACjB,CAAC,EALW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;;ACU1B;MAEa,2BAA2B,CAAA;AAuDtC,IAAA,WAAA,GAAA;;AArDgB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,EAAkC,CAAC;;AAEzD,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,oBAAoB,CAAC,QAAQ,CAAC;YAE7F,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACjC,QAAA,CAAC,CAAC;;AAEc,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE;YAEnD,OAAO,IAAI,GAAG,CACZ,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAClF;AACH,QAAA,CAAC,CAAC;;AAEc,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC7C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,oBAAoB,CAAC,QAAQ,CAAC;AAE7F,YAAA,OAAO,IAAI,GAAG,CACZ,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CACzF;AACH,QAAA,CAAC,CAAC;;AAEc,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC/C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,oBAAoB,CAAC,UAAU,CAAC;AAE/F,YAAA,OAAO,IAAI,GAAG,CACZ,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CACzF;AACH,QAAA,CAAC,CAAC;;AAEc,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE;YAEnD,OAAO,IAAI,GAAG,CACZ,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE;iBACpF,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM;AAC1B,iBAAA,MAAM,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CACzC;AACH,QAAA,CAAC,CAAC;AAEc,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAsB,IAAI,CAAC;QAC/D,IAAA,CAAA,sBAAsB,GAAG,IAAI,eAAe,CAC1D,oBAAoB,CAAC,UAAU,CAChC;QAEe,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,EAAE;YAC3F,YAAY,EAAE,oBAAoB,CAAC,UAAU;AAC9C,SAAA,CAAC;AAEe,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;QAGvC,IAAI,CAAC,yBAAyB,EAAE;IAClC;AAEA;;;;AAIK;AACE,IAAA,yBAAyB,CAAC,SAA+B,EAAA;AAC9D,QAAA,IAAI,SAAS,KAAK,oBAAoB,CAAC,UAAU,EAAE;YACjD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;QACnE;QAEA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACrC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACrD;QAEA,IAAI,CAAC,QAAQ,EAAE;IACjB;AAEA;;;;;AAKK;IACE,mBAAmB,CAAC,GAAe,EAAE,OAAoC,EAAA;QAC9E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAErC,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,oBAAoB,CAAC,UAAU,EAAE;AAClF,QAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC;AAEhD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IACzB;AAEO,IAAA,gBAAgB,CAAC,IAAS,EAAA;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,EAAE,QAAQ,EAAE;AAErD,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;AAChC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YACxD;QACF;QAEA,IAAI,CAAC,QAAQ,EAAE;IACjB;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9C;AAEO,IAAA,UAAU,CAAC,IAAU,EAAA;AAC1B,QAAA,IAAI,CAAC;AACF,aAAA,YAAY;aACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;aACrB,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;YAEzB,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAC7B;AACF,QAAA,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;IAChC;IAEQ,0BAA0B,CAChC,YAAiD,EACjD,WAAiC,EAAA;QAEjC,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,KAAK,KAAK,WAAW,CAAC,CAAC;IACrF;IAEQ,yBAAyB,GAAA;AAC/B,QAAA,IAAI,CAAC;AACF,aAAA,YAAY;AACZ,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC;AACjC,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,QAAQ,GAAG,oBAAoB,CAAC,UAAU;AAE9C,YAAA,IAAI,IAAI,KAAK,cAAc,CAAC,GAAG,EAAE;AAC/B,gBAAA,QAAQ,GAAG,oBAAoB,CAAC,QAAQ;YAC1C;AAAO,iBAAA,IAAI,IAAI,KAAK,cAAc,CAAC,OAAO,EAAE;gBAC1C,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC;YAChE;AAEA,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5C,QAAA,CAAC,CAAC;IACN;+GA/IW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAA3B,2BAA2B,EAAA,CAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC;;;ICbW;AAAZ,CAAA,UAAY,MAAM,EAAA;AAChB,IAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG;AACH,IAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG;AACH,IAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG;AACH,IAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG;AACH,IAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG;AACH,IAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG;AACH,IAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG;AACH,IAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG;AACH,IAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG;AACH,IAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG;AACH,IAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAG;AACH,IAAA,MAAA,CAAA,MAAA,CAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAA,KAAG;AACL,CAAC,EAbW,MAAM,KAAN,MAAM,GAAA,EAAA,CAAA,CAAA;IAeN;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,YAAA,CAAA,YAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AACZ,IAAA,YAAA,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS;AACT,IAAA,YAAA,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS;AACT,IAAA,YAAA,CAAA,YAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO;AACP,IAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACR,IAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACR,IAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,YAAA,CAAA,YAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACb,IAAA,YAAA,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,EAAA,CAAA,GAAA,SAAY;AACZ,IAAA,YAAA,CAAA,YAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,GAAA,UAAa;AACb,IAAA,YAAA,CAAA,YAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,GAAA,UAAa;AACf,CAAC,EAbW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;IAeZ;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,sCAAkB;AAClB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,4CAAoB;AACpB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,0BAAc;AACd,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,sCAAgB;AAChB,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,oBAAW;AACX,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,0BAAa;AACb,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,0BAAa;AACb,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,sCAAiB;AACjB,IAAA,UAAA,CAAA,WAAA,CAAA,GAAA,kDAAsB;AACtB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,4CAAmB;AACnB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,sCAAmB;AACnB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,4CAAoB;AACtB,CAAC,EAbW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;MAeT,WAAW,CAAA;aACC,IAAA,CAAA,kBAAkB,GAA8B,IAAI,GAAG,CAAC;AAC7E,QAAA,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC;AAC1C,QAAA,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC;AAC5C,QAAA,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;AACtC,QAAA,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC;AACtC,QAAA,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC;AAClC,QAAA,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;AACpC,QAAA,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;AACpC,QAAA,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;AACxC,QAAA,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC;AAC9C,QAAA,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC;AAC1C,QAAA,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC;AAC5C,QAAA,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC;AAC7C,KAAA,CAAC,CAAC;IAEI,OAAO,cAAc,CAAC,SAAiB,EAAA;QAC5C,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC;IAC/C;AAEO,IAAA,OAAO,cAAc,GAAA;QAC1B,MAAM,WAAW,GAAa,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;AACjE,QAAA,OAAO,WAAW;IACpB;AAEO,IAAA,OAAO,aAAa,GAAA;QACzB,MAAM,SAAS,GAAa,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;AACjE,QAAA,OAAO,SAAS;IAClB;IAEO,OAAO,uBAAuB,CAAC,WAAmB,EAAA;QACvD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAC9C,CAAC,GAAG,KAAK,YAAY,CAAC,GAAgC,CAAC,KAAK,WAAW,CACxE;AACD,QAAA,OAAO,SAAS,GAAG,UAAU,CAAC,SAAoC,CAAC,GAAG,SAAS;IACjF;;;AC9EF,IAAYC,QAEX;AAFD,CAAA,UAAY,MAAM,EAAA;AAChB,IAAA,MAAA,CAAA,SAAA,CAAA,GAAA,6DAAuE;AACzE,CAAC,EAFWA,QAAM,KAANA,QAAM,GAAA,EAAA,CAAA,CAAA;MAUL,0BAA0B,CAAA;AANvC,IAAA,WAAA,GAAA;QAOqB,IAAA,CAAA,MAAM,GAAGA,QAAM;AACnC,IAAA;+GAFY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,qFCZvC,g/BAcA,EAAA,MAAA,EAAA,CAAA,4bAAA,CAAA,EAAA,CAAA,CAAA;;4FDFa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,cAGzB,IAAI,EAAA,QAAA,EAAA,g/BAAA,EAAA,MAAA,EAAA,CAAA,4bAAA,CAAA,EAAA;;;MEDL,gBAAgB,CAAA;AAP7B,IAAA,WAAA,GAAA;QAQW,IAAA,CAAA,MAAM,GAA8B,YAAY;AAC1D,IAAA;+GAFY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,uGCT7B,6HAIA,EAAA,MAAA,EAAA,CAAA,yHAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDKa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,UAAA,EAGb,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6HAAA,EAAA,MAAA,EAAA,CAAA,yHAAA,CAAA,EAAA;8BAGtC,MAAM,EAAA,CAAA;sBAAd;;;ME0DU,uBAAuB,CAAA;AAyElC,IAAA,WAAA,GAAA;AAxEO,QAAA,IAAA,CAAA,sBAAsB,GAAG,SAAS,CAAC,eAAe,EAAE,EAAE,IAAI,GAAE,WAAoB,CAAA,EAAE,CAAC;AACnF,QAAA,IAAA,CAAA,yBAAyB,GAAG,SAAS,CAAC,qBAAqB,EAAE;YAClE,IAAI,GAAE,WAAoB,CAAA;AAC3B,SAAA,CAAC;AAEK,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,QAAQ,EAAwB;;QAExD,IAAA,CAAA,MAAM,GAAG,KAAK,EAAsB;AACpC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;;AAEvB,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC;;AAEhC,QAAA,IAAA,CAAA,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC;;AAEjC,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC;;AAEpC,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAC,KAAK,CAAC;;QAEjC,IAAA,CAAA,2BAA2B,GAAG,KAAK,CAAgB,MAAM,IAAI,CAAC;;QAE9D,IAAA,CAAA,yBAAyB,GAAG,KAAK,CAAgB,MAAM,IAAI,CAAC;;QAE5D,IAAA,CAAA,4BAA4B,GAAG,KAAK,CAAgB,MAAM,IAAI,CAAC;AAEnD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAA8B,IAAI,CAAC;AACzD,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,UAAU,IAAI,EAAE,CAAC;AACzE,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC;AAC7D,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,WAAW,IAAI,EAAE,CAAC;AAEvF,QAAA,IAAA,CAAA,cAAc,GAAG,oBAAoB,CAC1C,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CACnC,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,QAAQ,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAClC,CACF;AAEkB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAE9C,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AACxB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;AACtC,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,2BAA2B,CAAC;QAEzD,IAAA,CAAA,YAAY,GAAG,aAAa;QAC5B,IAAA,CAAA,UAAU,GAAG,WAAW;QACxB,IAAA,CAAA,eAAe,GAAG,iBAAiB;QAEnC,IAAA,CAAA,4BAA4B,GAAG,EAAE;QACjC,IAAA,CAAA,8BAA8B,GAAG,EAAE;AACnC,QAAA,IAAA,CAAA,6BAA6B,GAAG,MAAM,CAAC,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,kCAAkC,GAAG,MAAM,CAAC,CAAC,CAAC;QAC9C,IAAA,CAAA,gCAAgC,GAAG,GAAG;AACtC,QAAA,IAAA,CAAA,2BAA2B,GAAG,MAAM,CAAC,CAAC,CAAC;QACvC,IAAA,CAAA,4BAA4B,GAAG,EAAE;AACjC,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAC9C,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAC1C,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAChE,EACD;YACE,YAAY,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;AACrF,SAAA,CACF;QACkB,IAAA,CAAA,yBAAyB,GAAG,CAAC;QAE/B,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC,EAAE;QACtD,IAAA,CAAA,WAAW,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAKvE,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,qCAAqC,EAAE;IAC9C;IAEO,kBAAkB,GAAA;QACvB,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAC9C,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAElE,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC;AACxC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEQ,qCAAqC,GAAA;QAC3C,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAChD,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,6BAA6B,EAAE;AAC1D,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kCAAkC,EAAE;AACpE,YAAA,MAAM,gBAAgB,GAAG,aAAa,GAAG,kBAAkB;YAE3D,SAAS,CAAC,MAAK;gBACb,MAAM,WAAW,GAAG,IAAI,CAAC,gCAAgC,CAAC,cAAc,EAAE,gBAAgB,CAAC;AAC3F,gBAAA,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,WAAW,CAAC;AACnD,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEO,QAAQ,GAAA;QACb,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;IACpD;IAEQ,aAAa,CAAC,MAAc,EAAE,UAAkB,EAAA;AACtD,QAAA,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC;YAC3C,MAAM;YACN,YAAY,EAAE,aAAa,CAAC,OAAO;YACnC,UAAU;AACX,SAAA,CAAC;IACJ;IAEQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,aAAa,CAAC;aAChB,IAAI,CACH,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EACzC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,EAC7B,MAAM,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,EACzC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC;AAE7B,aAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;AACtB,YAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ;AAChC,YAAA,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC,QAAQ;YAEzC,IAAI,WAAW,EAAE;AACf,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC;gBACnC,IAAI,CAAC,KAAK,EAAE;YACd;AACF,QAAA,CAAC,CAAC;IACN;IAEU,cAAc,GAAA;AACtB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC;AAEtC,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC;AACxC,gBAAA,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE;AAC7B,gBAAA,cAAc,EAAE,IAAI;AACrB,aAAA,CAAC;QACJ;QAEA,IAAI,CAAC,KAAK,EAAE;IACd;AAEU,IAAA,YAAY,CAAC,QAA8B,EAAA;AACnD,QAAA,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC;AAC5C,YAAA,QAAQ,EAAE;AACR,gBAAA,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,QAAQ,EAAE;AACR,oBAAA,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ;AAClC,oBAAA,WAAW,EAAE,QAAQ;AACtB,iBAAA;gBACD,aAAa,EAAE,aAAa,CAAC,OAAO;AACrC,aAAA;AACD,YAAA,cAAc,EAAE,IAAI;AACrB,SAAA,CAAC;IACJ;IAEU,iBAAiB,GAAA;QACzB,IAAI,CAAC,YAAY,CAAC;AAChB,YAAA,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,WAAW,EAAE,IAAI,CAAC,iBAAiB,EAAE;AACtC,SAAA,CAAC;IACJ;IAEU,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC;AACF,aAAA,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE;AACxC,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,MAAM,EAAE,IAAI,CAAC,yBAAyB,EAAE;AACxC,YAAA,WAAW,EAAE,IAAI;SAClB;AACA,aAAA,SAAS,EAAE;IAChB;IAEU,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC;IAC/C;IAEU,KAAK,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B;AAEU,IAAA,iBAAiB,CAAC,KAAqC,EAAA;AAC/D,QAAA,MAAM,cAAc,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QACxE,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC;AAC9D,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC9B;AAEU,IAAA,eAAe,CAAC,KAAqC,EAAA;QAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,KAAK,KAAK,CAAC,SAAS;QAE7D,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,cAAc,GAAG,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;YACxE,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,aAAa,CAAC,OAAO,CAAC;QACjE;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC9B;AAEQ,IAAA,gBAAgB,CAAC,KAAqC,EAAA;QAC5D,IAAI,KAAK,CAAC,iBAAiB,KAAK,KAAK,CAAC,SAAS,EAAE;AAC/C,YAAA,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC;QAChF;aAAO;YACL,iBAAiB,CACf,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAC5B,KAAK,CAAC,SAAS,CAAC,IAAI,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,CACnB;QACH;IACF;AAEU,IAAA,gBAAgB,CAAC,GAAoB,EAAA;QAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM;AACpD,QAAA,GAAG,CAAC,MAAM,GAAG,QAAQ,GAAG,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM;IACtE;IAEU,cAAc,GAAA;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;QAErC,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;QAC1D;QAEA,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;IAC1E;AAEU,IAAA,cAAc,CAAC,MAAuB,EAAA;AAC9C,QAAA,OAAO,MAAM,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM;IAC/C;IAEU,sBAAsB,CAAC,CAAC,cAAc,CAAiC,EAAA;QAC/E,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC;IAC3E;IAEU,2BAA2B,CAAC,CAAC,cAAc,CAAiC,EAAA;QACpF,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC;IAChF;AAEQ,IAAA,uBAAuB,CAAC,iBAAyB,EAAA;QACvD,MAAM,YAAY,GAAG,EAAE;QACvB,MAAM,qCAAqC,GACzC,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,4BAA4B;AAEvE,QAAA,OAAO,iBAAiB,GAAG,YAAY,GAAG,qCAAqC;IACjF;IAEQ,gCAAgC,CACtC,cAAsB,EACtB,sBAA8B,EAAA;AAE9B,QAAA,MAAM,mBAAmB,GAAG,CAAC,GAAG,IAAI,CAAC,8BAA8B;AACnE,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB;AAEtD,QAAA,OAAO,cAAc,GAAG,mBAAmB,GAAG,sBAAsB,GAAG,eAAe;IACxF;IAEQ,mBAAmB,CAAC,MAAuB,EAAE,MAAqB,EAAA;AACxE,QAAA,MAAM,CAAC,MAAM,GAAG,MAAM;AAEtB,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1D;IACF;IAEQ,0BAA0B,CAAC,OAA0B,EAAE,MAAqB,EAAA;AAClF,QAAA,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE;YAC5C,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE;AAEnC,YAAA,IAAI,GAAG,CAAC,QAAQ,EAAE;gBAChB,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;YACvD;QACF;IACF;+GA1RW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,4BAAA,EAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAHvB,CAAC,2BAA2B,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAI2B,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEtE,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvErB,yrLAgKA,EAAA,MAAA,EAAA,CAAA,oiJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED3GI,SAAS,oIACT,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,QAAQ,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,gBAAgB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,0BAA0B,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,WAAW,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,6BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,gBAAgB,+GAChB,+BAA+B,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAKtB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBArBnC,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,OAAA,EAGP;wBACP,SAAS;wBACT,OAAO;wBACP,SAAS;wBACT,QAAQ;wBACR,gBAAgB;wBAChB,0BAA0B;wBAC1B,WAAW;wBACX,gBAAgB;wBAChB,YAAY;wBACZ,gBAAgB;wBAChB,+BAA+B;AAChC,qBAAA,EAAA,SAAA,EACU,CAAC,2BAA2B,CAAC,EAAA,eAAA,EACvB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yrLAAA,EAAA,MAAA,EAAA,CAAA,oiJAAA,CAAA,EAAA;;;MEtDpC,qBAAqB,CAAA;AARlC,IAAA,WAAA,GAAA;AASS,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAW;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;QAEvB,IAAA,CAAA,YAAY,GAAG,MAAM,EAAQ;AACrC,IAAA;+GALY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZlC,6oBAoBA,EAAA,MAAA,EAAA,CAAA,8pBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVY,SAAS,6cAAW,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAEnC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,UAAA,EAGnB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,6oBAAA,EAAA,MAAA,EAAA,CAAA,8pBAAA,CAAA,EAAA;;;AEV1C,MAAM,sBAAsB,GAAG;AAC/B,MAAM,sBAAsB,GAAG;IAE1B;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,eAAA,CAAA,GAAA,kDAAkE;AAClE,IAAA,iBAAA,CAAA,YAAA,CAAA,GAAA,+CAA4D;AAC5D,IAAA,iBAAA,CAAA,cAAA,CAAA,GAAA,iDAAgE;AAClE,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;;MCAhB,eAAe,GAAG,IAAI,cAAc,CAA2B,iBAAiB;AAC7F;;MC+Ca,sBAAsB,CAAA;AAwDjC,IAAA,WAAA,GAAA;AAvDO,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAkB;AAC5C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,EAAE,CAAC;AAChC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAS,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,iBAAiB,GACtB,KAAK,CAAC,QAAQ,EAAyE;;AAIzE,QAAA,IAAA,CAAA,eAAe,GAAG,CAAA,EAAG,sBAAsB,CAAA,EAAA,CAAI;AAE/C,QAAA,IAAA,CAAA,eAAe,GAAG,CAAA,EAAG,sBAAsB,CAAA,EAAA,CAAI;AAE9C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAA2B,eAAe,CAAC;AAC1D,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AAEtB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe;QACtD,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACzC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAS,UAAU,CAAC;AAC5C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAc,IAAI,GAAG,EAAE,CAAC;QAE5C,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAChC,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,IAAI,CACxE;;AAGS,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;YAChC,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,OAAO,EAAE;YACX;YAEA,MAAM,OAAO,GAAkB,EAAE;AACjC,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM;YACzB,OAAO,OAAO,EAAE;AACd,gBAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AACrB,gBAAA,OAAO,GAAG,OAAO,CAAC,MAAM;YAC1B;AACA,YAAA,OAAO,OAAO;AAChB,QAAA,CAAC,CAAC;AACQ,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAc,MAAK;AACrD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AAEtC,YAAA,OAAO,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAC1D,QAAA,CAAC,CAAC;AAEK,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAgB,EAAE,CAAC;QAE5C,IAAA,CAAA,UAAU,GAAgC,EAAE;QAE5C,IAAA,CAAA,wBAAwB,GAAG,KAAK;QAEvB,IAAA,CAAA,SAAS,GAAG,iBAAiB;;QAI9C,MAAM,CACJ,MAAK;AACH,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YACzB,IAAI,CAAC,kBAAkB,EAAE;AAC3B,QAAA,CAAC,EACD,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC5B;IACH;AAEO,IAAA,gBAAgB,CAAC,EAAU,EAAA;QAChC,UAAU,CAAC,MAAK;;YAEd,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAc,CAAA,KAAA,EAAQ,EAAE,CAAA,EAAA,CAAI,CAAC;YACzE,MAAM,QAAQ,GAAG,aAAa,EAAE,aAAa,CAAc,sBAAsB,CAAC;YAClF,MAAM,gBAAgB,GAAG,QAAQ,EAAE,aAAa,CAAc,sBAAsB,CAAC;YAErF,MAAM,OAAO,GAAG;AACd,kBAAE,gBAAgB,CAAC,gBAAgB,CAAC,qBAAqB;AACzD,kBAAE,QAAQ,EAAE,gBAAgB,CAAC,qBAAqB,CAAC;YACrD,IAAI,OAAO,EAAE;gBACX,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,gBAAA,MAAM,IAAI,GAAG,WAAW,EAAE,qBAAqB,EAAE;AAEjD,gBAAA,IAAI,QAAQ,IAAI,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;;oBAEpD,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,GACtB,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAC7D,CAAA,EAAA,CAAI;AACJ,oBAAA,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ;AACnC,oBAAA,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ;gBACrC;AACA,gBAAA,IAAI,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,EAAE;;oBAE5D,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,GAC9B,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAC7D,CAAA,EAAA,CAAI;AACJ,oBAAA,gBAAgB,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ;AAC3C,oBAAA,gBAAgB,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ;gBAC7C;YACF;QACF,CAAC,EAAE,CAAC,CAAC;IACP;IAEO,QAAQ,GAAA;QACb,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;YAC1C,IAAI,SAAS,EAAE;gBACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC;iBAAO;gBACL,IAAI,CAAC,YAAY,EAAE;YACrB;AACF,QAAA,CAAC,CAAC;IACJ;IAEU,gBAAgB,GAAA;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;IACtB;AAEU,IAAA,UAAU,CAAC,IAAiB,EAAA;QACpC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;QAEpC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,aAAa,KAAI;AACxC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS,aAAa,CAAC;AAE3C,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAClB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACnB;iBAAO;gBACL,IAAI,CAAC,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAEd,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACrC,gBAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,oBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBACvB;YACF;AAEA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,YAAY,CAAC,SAAuB,EAAA;QAC5C,IAAI,KAAK,GAAa,EAAE;QACxB,IAAI,SAAS,EAAE;YACb,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAC1C,KAAK,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QACnE;QAEA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,GAAG,CAAS,KAAK,CAAC,CAAC;IAC9C;AAEA,IAAA,IAAc,YAAY,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM;IAC3B;AAEA,IAAA,IAAc,YAAY,GAAA;AACxB,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;IAC5B;AAEU,IAAA,cAAc,CAAC,KAAyB,EAAA;QAChD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,KAAK;QACd;AACA,QAAA,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5C;AAEU,IAAA,gBAAgB,CAAC,IAAiB,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf;QACF;QAEA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;QACnC;aAAO;YACL,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;AAEzC,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,YAAY,EAAE;YACrB;QACF;IACF;AAEU,IAAA,uBAAuB,CAAC,MAAe,EAAA;QAC/C,IAAI,CAAC,wBAAwB,GAAG,MAAM,IAAI,IAAI,CAAC,wBAAwB;IACzE;AAEU,IAAA,qBAAqB,CAAC,QAAiB,EAAA;QAC/C,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK;QACvC;IACF;AAEQ,IAAA,SAAS,CAAC,IAAoB,EAAA;AACpC,QAAA,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;QAEzF,MAAM,QAAQ,GAAgC,EAAE;AAChD,QAAA,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE;AAClC,YAAA,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AAClB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;AACvB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;gBACvB,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,gBAAA,QAAQ,EAAE,EAAE;gBACZ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,aAAa,EAAE,SAAS;AACxB,gBAAA,MAAM,EAAE,SAAS;aAClB;QACH;QAEA,MAAM,aAAa,GAAkB,EAAE;AAEvC,QAAA,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE;YAClC,IAAI,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;gBACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/B,gBAAA,KAAK,CAAC,MAAM,GAAG,MAAM;AACrB,gBAAA,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC;YAC9B;iBAAO;gBACL,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvC;QACF;AAEA,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC;AAE3C,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;QACpB,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACtC,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC;AACzB,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;YACnC;QACF;IACF;AAEQ,IAAA,SAAS,CAAC,WAAmB,EAAA;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAE9C,IAAI,CAAC,SAAS,EAAE;YACd;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAC5B;QAEA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;IAChD;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC;IAC/D;AAEQ,IAAA,UAAU,CAAC,IAAiB,EAAA;QAClC,MAAM,OAAO,GAAkB,EAAE;AACjC,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM;QAEzB,OAAO,OAAO,EAAE;AACd,YAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AACrB,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM;QAC1B;AAEA,QAAA,OAAO,OAAO;IAChB;IAEQ,cAAc,GAAA;QACpB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,GAAG,EAAU,CAAC;AACvC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9B;AAEQ,IAAA,eAAe,CAAC,IAAiB,EAAA;QACvC,MAAM,MAAM,GAAkB,EAAE;QAChC,MAAM,KAAK,GAAkB,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;QAEzD,IAAI,KAAK,GAAG,CAAC;AACb,QAAA,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;AAC3B,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;AACzB,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAEjB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9B;YAEA,KAAK,IAAI,CAAC;QACZ;AAEA,QAAA,OAAO,MAAM;IACf;+GA5RW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gCAAA,EAAA,sBAAA,EAAA,gCAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnDnC,ugMAsKA,EAAA,MAAA,EAAA,CAAA,w6GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDvIY,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAChE;YACV,OAAO,CAAC,WAAW,EAAE;gBACnB,UAAU,CAAC,QAAQ,EAAE;AACnB,oBAAA,KAAK,CAAC;AACJ,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE,mBAAmB;AAC9B,wBAAA,eAAe,EAAE,KAAK;qBACvB,CAAC;AACF,oBAAA,OAAO,CACL,eAAe,EACf,KAAK,CAAC;AACJ,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,CAAC,CACH;iBACF,CAAC;aACH,CAAC;AACH,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAEU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA1BlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,mBAGV,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,WACP,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAA,UAAA,EACjE;wBACV,OAAO,CAAC,WAAW,EAAE;4BACnB,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,KAAK,CAAC;AACJ,oCAAA,OAAO,EAAE,CAAC;AACV,oCAAA,SAAS,EAAE,mBAAmB;AAC9B,oCAAA,eAAe,EAAE,KAAK;iCACvB,CAAC;AACF,gCAAA,OAAO,CACL,eAAe,EACf,KAAK,CAAC;AACJ,oCAAA,OAAO,EAAE,CAAC;AACV,oCAAA,SAAS,EAAE,eAAe;AAC3B,iCAAA,CAAC,CACH;6BACF,CAAC;yBACH,CAAC;AACH,qBAAA,EAAA,QAAA,EAAA,ugMAAA,EAAA,MAAA,EAAA,CAAA,w6GAAA,CAAA,EAAA;wDAYe,eAAe,EAAA,CAAA;sBAD9B,WAAW;uBAAC,gCAAgC;gBAG7B,eAAe,EAAA,CAAA;sBAD9B,WAAW;uBAAC,gCAAgC;;;ME9CzB,wBAAwB,CAAA;AAyB7C;;ACzCD,IAAY,iBAKX;AALD,CAAA,UAAY,iBAAiB,EAAA;;AAE3B,IAAA,iBAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,IAAA,CAAA,GAAA,aAAkB;AAClB,IAAA,iBAAA,CAAA,iBAAA,CAAA,iBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,iBAAsB;AACtB,IAAA,iBAAA,CAAA,iBAAA,CAAA,uBAAA,CAAA,GAAA,IAAA,CAAA,GAAA,uBAA4B;AAC9B,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;;ACW7B,SAAS,sBAAsB,CAAC,OAAY,EAAE,OAAgB,EAAE,KAAU,EAAA;IACxE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAU,EAAE,GAAoB,KAAI;AACzD,QAAA,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YAC5B,MAAM,IAAIC,aAAY,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,EAAE,CAAC;QACrE;AACF,IAAA,CAAC,CAAC;AACJ;SAEgB,oBAAoB,CAAC,MAAW,EAAE,OAAgB,EAAE,GAAoB,EAAA;AACtF,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAA+C;AACvE,IAAA,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,QAAQ;AAE7D,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3B,MAAM,IAAIA,aAAY,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC;IAC3D;AAEA,IAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAClB,MAAM,IAAIA,aAAY,CAAC,iBAAiB,CAAC,eAAe,EAAE,EAAE,CAAC;IAC/D;AACF;AAEA;AACM,MAAO,gBAAwB,SAAQ,SAAiC,CAAA;IAC5D,QAAQ,CACtB,KAAsC,EACtC,OAAqD,EAAA;AAErD,QAAA,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;QAEzC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAoB,EAAE;AACxD,YAAA,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAW,CAAC;YAC7C,MAAM,OAAO,GAAI,IAAI,CAAC,QAAgB,CAAC,IAAI,CAAC;AAC5C,YAAA,MAAM,YAAY,GAAI,KAAa,CAAC,IAAI,CAAC;YAEzC,IAAI,OAAO,YAAY,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;gBAC/D,OAAO,CAAC,KAAK,EAAE;AAEf,gBAAA,KAAK,MAAM,IAAI,IAAI,YAA2C,EAAE;AAC9D,oBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACvB,oBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;gBACvD;YACF;iBAAO;AACL,gBAAA,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE;AAC7B,oBAAA,QAAQ,EAAE,IAAI;oBACd,SAAS,EAAE,OAAO,EAAE,SAAS;AAC9B,iBAAA,CAAC;YACJ;QACF;AAEA,QAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;IACtC;IAEgB,UAAU,CACxB,KAA4C,EAC5C,OAAqD,EAAA;AAErD,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB;QACF;QAEA,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAoB,EAAE;YACxD,MAAM,OAAO,GAAI,IAAI,CAAC,QAAgB,CAAC,IAAI,CAAC;AAC5C,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAuD,CAAE;YAEpF,IAAI,OAAO,EAAE;gBACX,IAAI,OAAO,YAAY,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;oBAC/D,OAAO,CAAC,KAAK,EAAE;AAEf,oBAAA,KAAK,MAAM,IAAI,IAAI,YAA2C,EAAE;AAC9D,wBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACvB,wBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;oBACvD;gBACF;qBAAO;AACL,oBAAA,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE;AAC/B,wBAAA,QAAQ,EAAE,IAAI;wBACd,SAAS,EAAE,OAAO,EAAE,SAAS;AAC9B,qBAAA,CAAC;gBACJ;YACF;QACF;AAEA,QAAA,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;IACtC;IAEO,cAAc,GAAA;QACnB,MAAM,MAAM,GAAgC,EAAE;AAE9C,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAE7B,YAAA,IAAI,OAAO,EAAE,KAAK,EAAE;gBAClB,MAAM,CAAC,GAAkB,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE;YACpD;QACF;AAEA,QAAA,OAAO,MAAM;IACf;AACD;;AC1GD;MACa,sBAAsB,GAAG,IAAI,cAAc,CAAS,wBAAwB;;MCiCnE,SAAS,CAAA;;IAmB7B,IAAa,gBAAgB,CAC3B,SAAyE,EAAA;QAEzE,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS;QACtC;IACF;;IAEA,IAAa,eAAe,CAC1B,MAAmE,EAAA;QAEnE,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM;QAChC;IACF;;IAEA,IAAa,cAAc,CAAC,SAAuD,EAAA;QACjF,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;QACpC;IACF;IAIA,IAAa,QAAQ,CAAC,QAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;AACzB,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;IACpC;AAEA,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK;IACjE;IAEA,IAAa,QAAQ,CAAC,QAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;AACzB,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;IACpC;AAEA,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,KAAK;IACxC;AA2BA,IAAA,WAAA,CAAoB,SAAmB,EAAA;QAAnB,IAAA,CAAA,SAAS,GAAT,SAAS;;QA/EpB,IAAA,CAAA,KAAK,GAAG,EAAE;;AAEnB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,CAAC;;QAEtB,IAAA,CAAA,QAAQ,GAAG,KAAK;;QAEhB,IAAA,CAAA,UAAU,GAAG,IAAI;;QAEjB,IAAA,CAAA,IAAI,GAAkB,IAAI;;QAE1B,IAAA,CAAA,UAAU,GAAsB,MAAM;;QAwB/C,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAY,KAAa,EAAE,CAAC;AAsBrC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;AAE5B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAGhC,QAAA,IAAA,CAAA,mBAAmB,GAA8D,CACzF,KAAK,KACF,KAAkC;AAC7B,QAAA,IAAA,CAAA,gBAAgB,GAA8D,CAAC,KAAK,KAC5F,KAA6B;AACrB,QAAA,IAAA,CAAA,iBAAiB,GAAoE,CAC7F,CAAC,KACE,SAAiC;QAE9B,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,0BAA0B,GAAG,IAAI;QAE/B,IAAA,CAAA,WAAW,GAAG,EAAE;AAEP,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,KAAK,CAAC;AAyBpE,QAAA,IAAA,CAAA,QAAQ,GAA+B,MAAK,EAAE,CAAC;AAM/C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAW,EAAE,CAAC;AA5BlC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI;QACtC;IACF;AAEA,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;IACpC;AAEO,IAAA,UAAU,CAAC,KAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;IAChC;IAEO,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;IAC5B;AAEO,IAAA,gBAAgB,CAAC,QAAoC,EAAA;AAC1D,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAC1B;AAIO,IAAA,iBAAiB,CAAC,SAAqB,EAAA;AAC5C,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC5B;IAIO,QAAQ,GAAA;QACb,IAAI,CAAC,MAAM,EAAE;IACf;AAEU,IAAA,MAAM,KAAU;IAEnB,eAAe,GAAA;QACpB,IAAI,CAAC,aAAa,EAAE;IACtB;AAEU,IAAA,aAAa,KAAU;AAEjC,IAAA,IAAc,uBAAuB,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;IACvD;IAEU,UAAU,GAAA;AAClB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK;AAEpB,QAAA,OAAO,EACL,CAAC,KAAK,IAAI;AACV,YAAA,CAAC,KAAK,SAAS;aACd,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAC1C,aAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;aACnC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAC5E;IACH;IAEO,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,OAAO;YACV,IAAI,CAAC,UAAU,IAAK,IAAI,CAAC,UAAU,CAAC,OAAoD;AAE1F,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC;YAC1C;AAEA,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC;YAC1C;YAEA,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,sBAAsB,EAAE;QAC/B;QAEA,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,OAAO,CAAC;aACV,IAAI,CACH,yBAAyB,EAAE,EAC3B,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAC7C,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AAE5B,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;AACtE,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAE9B,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC;YAClC;AACF,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,kBAAkB,CAAC,KAAgB,EAAA;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC;AACjD,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEQ,IAAA,iBAAiB,CAAC,KAAgB,EAAA;AACxC,QAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK;AACvC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;QAClE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC;AAC3C,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI;IACxC;IAEQ,sBAAsB,GAAA;QAC5B,IAAI,CAAC,OAAO,CAAC;AACX,cAAE,IAAI,CACJ,IAAI,CAAC,CAAC,CAAC;AACP,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,0BAA0B,CAAC,EAC7C,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AAE5B,aAAA,SAAS,CAAC,CAAC,UAAU,KAAI;YACxB,MAAM,KAAK,GACT,UAAU,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;AAChF,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAkB,CAAC;AAC3C,QAAA,CAAC,CAAC;IACN;AAEU,IAAA,gBAAgB,KAAU;AAE5B,IAAA,mBAAmB,CAAC,QAAiB,EAAA;QAC3C,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC;QAClD;aAAO;YACL,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC;QACrD;IACF;AAEQ,IAAA,mBAAmB,CAAC,QAAiB,EAAA;QAC3C,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;QACzB;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;QACxB;IACF;+GAhOoB,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,SAAS,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EARlB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,SAAS,CAAC;AACxC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAEmB,SAAS,EAAA,UAAA,EAAA,CAAA;kBAT9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,eAAe,CAAC;AACxC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA;6EAQU,KAAK,EAAA,CAAA;sBAAb;gBAIQ,QAAQ,EAAA,CAAA;sBAAhB;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;gBAEY,gBAAgB,EAAA,CAAA;sBAA5B;gBAQY,eAAe,EAAA,CAAA;sBAA3B;gBAQY,cAAc,EAAA,CAAA;sBAA1B;gBAQY,QAAQ,EAAA,CAAA;sBAApB;gBASY,QAAQ,EAAA,CAAA;sBAApB;gBAWgB,UAAU,EAAA,CAAA;sBAF1B;;sBACA;;;AC1FG,MAAgB,aAGpB,SAAQ,SAAoC,CAAA;AAQ5C,IAAA,WAAA,CAAoB,aAAuB,EAAA;QACzC,KAAK,CAAC,aAAa,CAAC;QADF,IAAA,CAAA,aAAa,GAAb,aAAa;QAPd,IAAA,CAAA,SAAS,GAAG,SAAS;QACrB,IAAA,CAAA,YAAY,GAAG,YAAY;QAE3B,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC;AAE9C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB;IAIhE;AAEU,IAAA,wBAAwB,CAAC,IAAU,EAAE,QAAgB,EAAE,QAAgB,EAAA;AAC/E,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;QAEvC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC;IAChD;+GApBoB,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAb,aAAa,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADlC;;;MCEY,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;QAEU,IAAA,CAAA,UAAU,GAAG,CAAC,MAAM;QACpB,IAAA,CAAA,eAAe,GAAG,EAAE;AACpB,QAAA,IAAA,CAAA,UAAU,GAA2D;AAC3E,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,aAAa,EAAE,CAAC;SACjB;AAEgB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAkH1C,IAAA;AAhHQ,IAAA,UAAU,CACf,IAAe,EACf,gBAA0B,EAC1B,gBAAyB,EAAA;AAEzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC;AAC/B,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;;AAEtB,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI;;AAEzB,QAAA,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI;QACnC,IAAI,SAAS,GAAwB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE;QAE7E,IAAI,KAAK,EAAE;AACT,YAAA,SAAS,GAAG;AACV,gBAAA,GAAG,SAAS;gBACZ,KAAK;AACL,gBAAA,IAAI,gBAAgB,IAAI,EAAE,gBAAgB,EAAE,CAAC;aAC9C;QACH;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE;QAC9B,MAAM,IAAI,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,IAAI,MAAM;AACrD,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,eAAe,IAAI,IAAI,IAAI,CAAC,EAAE;AACnE,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;QAC5B;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,gBAAgB,CAAC;AAC1F,QAAA,MAAM,YAAY,GAAiB;YACjC,KAAK;AACL,YAAA,WAAW,EAAE,UAAU;YACvB,SAAS;SACV;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAM,YAAY,CAAC,CAAC,YAAY,CAAC,IAAI,CACjE,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAI;AACf,YAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;YAEtB,MAAM,aAAa,GAAG;kBAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnB,kBAAE,IAAI,CAAC,CAAA,EAAG,KAAK,CAAC,IAAI,CAAA,UAAA,CAAY,CAAC,CAAC,SAAS,CAAC,KAAK;AACnD,YAAA,MAAM,gBAAgB,GAAG,IAAI,EAAE,gBAAgB;AAC/C,YAAA,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,gBAAgB,EAAE;YAC1E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AAChD,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM;AACxB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE;AAC5B,YAAA,OAAO,MAAM;QACf,CAAC,CAAC,CACH;IACH;AAEO,IAAA,gBAAgB,CACrB,IAAe,EACf,gBAA0B,EAC1B,gBAA0B,EAAA;AAE1B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AAEhE,QAAA,OAAO,GAAG,CAAA;yBACW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;kBACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;6BACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;;;sBAGtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;yBACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;;UAG9B,IAAI,CAAC,KAAK,CAAC,IACb,CAAA;YACI,IAAI,CAAC,KAAK,CAAC,OAAO;YAClB,IAAI;;;UAIN;AACE,cAAE;AACF,cAAE,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;;;;AAKxB,SAAA,CAAA;;QAGA;AACE,cAAE;4BACgB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;UACjC,IAAI,CAAC,KAAK,CAAC,OAAO;UAClB,IAAI;;AAEP,MAAA;AACG,cAAE,EACN;;;KAGD;IACH;AAEQ,IAAA,uBAAuB,CAAC,KAAa,EAAA;QAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QACpC,MAAM,GAAG,GAAG,EAAE;AACd,QAAA,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE;YAC5B,IAAI,MAAM,GAAG,EAAE;YACf,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;AAChC,YAAA,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC9C,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,CAAG;YACzC;YACA,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QAClC;AACA,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;IACtB;+GAzHW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAd,cAAc,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;ACEK,MAAgB,eAGpB,SAAQ,SAAoC,CAAA;;IAiB5C,IAAa,IAAI,CAAC,IAAsB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACtD,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACxB;IACF;AACA,IAAA,IAAW,IAAI,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;IAC/B;AAYA,IAAA,WAAA,CAAoB,eAAyB,EAAA;QAC3C,KAAK,CAAC,eAAe,CAAC;QADJ,IAAA,CAAA,eAAe,GAAf,eAAe;QAnC1B,IAAA,CAAA,KAAK,GAA6C,EAAE;QACpD,IAAA,CAAA,UAAU,GAAY,KAAK;QAC3B,IAAA,CAAA,iBAAiB,GAAG,GAAG;QAGvB,IAAA,CAAA,WAAW,GAAqC,YAAY;;QAE5D,IAAA,CAAA,eAAe,GAAa,EAAE;;QAE9B,IAAA,CAAA,YAAY,GAAG,KAAK;QAEpB,IAAA,CAAA,KAAK,GAAG,EAAE;;AAEV,QAAA,IAAA,CAAA,iBAAiB,GAA0C,CAAC,KAAK,EAAE,KAAK,KAC/E,KAAK,CAAC,KAAK,CAAC;QAWP,IAAA,CAAA,WAAW,GAAG,MAAM,EAA4C;AAEtD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAmB,IAAI,CAAC;AAElD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;QAElC,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC;QAE5D,IAAA,CAAA,OAAO,GAAG,KAAK;IAItB;AAEU,IAAA,UAAU,CAAC,WAAoB,EAAA;AACvC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK;AACnC,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU;;QAGtC,MAAM,eAAe,GAAG,EAAE;QAE1B,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,eAAe,CAAC,IAAI,CAClB,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,KAChC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CACrD,CACF;YACH;YAEA,IAAI,UAAU,EAAE;AACd,gBAAA,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7F;QACF;;QAGA,IAAI,CAAC,UAAU,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE;QACjC;;QAGA,IAAI,UAAU,EAAE;YACd,OAAO;AACL,gBAAA,GAAI,UAAqB;AACzB,gBAAA,GAAG,EAAE,eAAe,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,eAAe;aAChE;QACH;;QAGA;IACF;AAEU,IAAA,oBAAoB,CAAC,KAAa,EAAE,KAAa,EAAE,MAAe,EAAA;QAC1E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QAC9B,MAAM,OAAO,GAAG,EAAE;QAClB,IAAI,IAAI,GAAQ,OAAO;AAEvB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACzC,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACf,YAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACnB;QAEA,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG,EAAE;AAEnE,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,IAAc,UAAU,GAAA;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;AAChD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI;QAEpE,OAAO;YACL,OAAO;YACP,UAAU;SACX;IACH;+GA1GoB,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAf,eAAe,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,KAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBADpC;6EAKU,KAAK,EAAA,CAAA;sBAAb;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAEQ,eAAe,EAAA,CAAA;sBAAvB;gBAEQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBAEQ,iBAAiB,EAAA,CAAA;sBAAzB;gBAGY,IAAI,EAAA,CAAA;sBAAhB;;;AC1BH,MAAM,kBAAkB,GAAG,IAAI;AAGzB,MAAgB,aAAc,SAAQ,SAAuC,CAAA;AADnF,IAAA,WAAA,GAAA;;AAEmB,QAAA,IAAA,CAAA,cAAc,GAC7B,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,kBAAkB;AAE1D,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,kBAAkB,CAAC;AACvC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CACtC,CAAC,KAAoB,KAAa,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,CAC3D;AAED;;;;AAIK;AACE,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;AAC9C,IAAA;+GAfqB,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAb,aAAa,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ACKK,MAAgB,iBAIpB,SAAQ,cAAqB,CAAA;AAL/B,IAAA,WAAA,GAAA;;AAQY,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAExB,QAAA,IAAA,CAAA,KAAK,GAAG,CAAC,CAAc,KAAU;AACxC,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACxB,QAAA,CAAC;AAMQ,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,aAAa,EAAW;AACjD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;AAChD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;AAC5C,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;AAE5C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;AAChD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,OAAO,CAChC,CAAC,KAAK,EAAE,OAAe,MAAa;AAClC,YAAA,GAAG,KAAK;AACR,YAAA,OAAO,EAAE,KAAK;YACd,OAAO;AACR,SAAA,CAAC,CACH;QAEQ,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,OAAgB,MAAa,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AACtF,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,OAAO,CAC9B,CAAC,KAAK,EAAE,KAAa,MAAa;AAChC,YAAA,GAAG,KAAK;YACR,KAAK;AACN,SAAA,CAAC,CACH;AAEQ,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,OAAO,CAC9B,CAAC,KAAK,EAAE,KAAa,MAAa;AAChC,YAAA,GAAG,KAAK;YACR,KAAK;AACN,SAAA,CAAC,CACH;AA2BF,IAAA;AA1DQ,IAAA,aAAa,CAAC,MAAY,EAAA;AAC/B,QAAA,OAAO,EAAyB;IAClC;+GAhBoB,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAjB,iBAAiB,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBADtC;;;MCiEqB,YAAY,CAAA;AA2GhC,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO;IACrB;;AAGA,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,MAAM,OAAO,GAA0C,IAAI,CAAC,eAAe;QAE3E,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;QAC/D;AAEA,QAAA,OAAO,OAAO,CAAC,IAAI,EAAE;IACvB;;AAGA,IAAA,IAAW,oBAAoB,GAAA;AAC7B,QAAA,MAAM,OAAO,GAA0C,IAAI,CAAC,eAAe;QAE3E,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;QAC/D;AAEA,QAAA,OAAO,OAAO,CAAC,YAAY,EAAE;IAC/B;;AAGA,IAAA,IAAW,wBAAwB,GAAA;AACjC,QAAA,MAAM,OAAO,GAA0C,IAAI,CAAC,eAAe;QAE3E,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;QAC/D;AAEA,QAAA,OAAO,OAAO,CAAC,cAAc,EAAE;IACjC;IAYA,WAAA,CACqB,QAAkB,EACrC,WAA0B,EAAA;QADP,IAAA,CAAA,QAAQ,GAAR,QAAQ;;AA3JV,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;QAC1C,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAEhE,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC;;AAEzC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,EAAC,iBAAoB,GAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAE5D,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,EAAC,2BAA8B,GAAE;AAC1E,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC;;AAEiB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEjC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,oBAAoB,CAAC;QAE/C,IAAA,CAAA,cAAc,GAAwB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CACrF,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAC3C;AACe,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;AAC/B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;AACjC,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;QAI7D,IAAA,CAAA,IAAI,GAAQ,EAAE;QACd,IAAA,CAAA,WAAW,GAAQ,EAAE;QACrB,IAAA,CAAA,SAAS,GAAG,CAAC;;AAEb,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,GAAG,EAAO;;AAEhC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,GAAG,EAAc;AACnC,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;QACzC,IAAA,CAAA,aAAa,GAAa,EAAE;QAC5B,IAAA,CAAA,cAAc,GAAa,EAAE;QAC7B,IAAA,CAAA,aAAa,GAAiC,IAAI;QAK/C,IAAA,CAAA,WAAW,GAAoC,EAAE;QAKnD,IAAA,CAAA,WAAW,GAAG,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACvD,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,aAAa,EAAW;AAS7D;;AAEG;AACI,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,WAAY;AAyFpC,QAAA,IAAA,CAAA,eAAe,GAC9B,IAAI,CAAC,eAAe,EAAE,cAAc,IAAI,IAAI,eAAe,CAAsB,IAAI,CAAC;AAExE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK;AAMxD,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;QAC9B,IAAI,CAAC,qBAAqB,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC;QAC5D,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,wBAAwB,EAAE;AAC/B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,KAAK;QAC/D,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAC/C;IACF;IAEQ,oBAAoB,GAAA;QAC1B,IAAI,CAAC,eAAe,CAAC;AAClB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,KAAI;YAC3B,MAAM,EAAE,iBAAiB,EAAE,GAAG,WAAW,EAAE,QAAQ,IAAI,EAAE;AACzD,YAAA,MAAM,IAAI,GAAG,WAAW,EAAE,aAAa;YAEvC,IAAI,IAAI,IAAI,IAAI,KAAK,aAAa,CAAC,OAAO,EAAE;gBAC1C;YACF;AAEA,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CACxC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,iBAAiB,CAClD;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC;YAEzD,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE;AAC1C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;YAC1C;AAEA,YAAA,IAAI,CAAC,gBAAgB,GAAG,WAAW;AACrC,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,cAAc,CAAC,GAA+B,EAAA;QACpD,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;IAChE;AAEQ,IAAA,gBAAgB,CAAC,YAAwC,EAAA;QAC/D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAElF,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AAC9C,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAE;YAC9D,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI;AAEjF,YAAA,MAAM,KAAK,GAAG,YAAY,KAAK,IAAI,GAAG,YAAY,GAAG,YAAY;YAEjE,OAAO;AACL,gBAAA,GAAG,GAAG;gBACN,KAAK;aACN;AACH,QAAA,CAAC,CAAC;IACJ;IAEQ,wBAAwB,GAAA;AAC9B,QAAA,IAAI,CAAC;AACF,aAAA,kBAAkB,CACjB;AACE,YAAA,OAAO,EAAE;AACP,gBAAA,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AACnB,aAAA;AACD,YAAA,aAAa,EAAE;gBACb,GAAG,EAAE,aAAa,CAAC,wBAAwB;AAC5C,aAAA;AACD,YAAA,WAAW,EAAE;gBACX,GAAG,EAAE,IAAI,CAAC,WAAW;AACtB,aAAA;AACF,SAAA,EACD,IAAI;AAEL,aAAA,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAI;AAC5B,YAAA,IAAI,CAAC,qBAAqB,GAAG,YAAY;YACzC,MAAM,EAAE,aAAa,EAAE,GAAG,YAAY,EAAE,QAAQ,IAAI,EAAE;YAEtD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,IAAI,aAAa,CAAC;AAC5D,QAAA,CAAC,CAAC;IACN;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS;QACjC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1C,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC;AAEtF,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,6BAA6B,EAAE;QACpC,IAAI,CAAC,iBAAiB,EAAE;;;;;;QAQxB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,KAAK,KAAI;AAC1C,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;AACnC,QAAA,CAAC,CAAC;IACJ;IAEO,eAAe,CAAC,aAAa,GAAG,CAAC,EAAA;QACtC,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC;IAC9C;IAEQ,WAAW,GAAA;AACjB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO;AAC9C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM;AAC5C,QAAA,IAAI,OAAoD;QAExD,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC;QACxC;QAEA,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,YAAA,OAAO,GAAG,YAAY,IAAI,EAAE;QAC9B;QAEA,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;IAClC;IAEU,eAAe,CAAC,KAAW,EAAA,EAAS;IAEvC,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AAChC,QAAA,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE;AACvC,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;AAElC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QAC/D;IACF;AAEU,IAAA,YAAY,CAAC,OAAwC,EAAA;AAC7D,QAAA,IAAI,CAAC,cAAc,CAAC,2BAA2B,CAAC,OAAO,CAAC;QACxD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;IAC/D;IAEU,OAAO,CAAC,IAAS,EAAE,KAAc,EAAA;AACzC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAEhB,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnC;AAEA,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEU,IAAA,4BAA4B,CAAC,KAA2B,EAAA;AAChE,QAAA,IAAI,CAAC,eAAe,EAAE,yBAAyB,CAAC,KAAK,CAAC;IACxD;IAEU,sBAAsB,CAAC,GAAe,EAAE,OAAoC,EAAA;QACpF,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC;IACzD;AAEU,IAAA,eAAe,CAAC,IAAU,EAAA;AAClC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;AAE5B,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,IAAI,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC;AAChB,gBAAA,GAAG,EAAE,EAAE;AACP,gBAAA,KAAK,EAAE,CAAC;AACT,aAAA,CAAC;QACJ;IACF;IAEU,eAAe,GAAA;AACvB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC;AAC3E,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM;QAE3B,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IACtC;IAEU,YAAY,CAAC,KAAkC,EAAA,EAAS;AAExD,IAAA,wBAAwB,CAAC,OAAe,EAAA;QAChD,IAAI,CAAC,WAAW,EAAE;AACf,aAAA,IAAI,CACHF,MAAU,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,EACvD,YAAY,CAAC,8BAA8B,CAAC,EAC5C,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aAEpC,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAC/D,QAAA,CAAC,CAAC;IACN;IAEO,cAAc,GAAA;QACnB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IACrD;IAEO,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,MACR,aAAa,CAAC;YACZ,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAACA,MAAU,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,YAAY,CAAC,OAAO;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAC/B,GAAG,CAAC,CAAC,IAAI,KAAI;gBACX,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAC3B,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBAC1B;AACF,YAAA,CAAC,CAAC,CACH;YACD,IAAI,CAAC,YAAY,CAAC,OAAO;AAC1B,SAAA,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAC3B,EACD,UAAU,CAAC,CAAC,CAAC,KAAI;AACf,YAAA,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;YAE9B,OAAO,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEpC,aAAA,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,KAAI;AAChD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC;AACjE,YAAA,MAAM,gBAAgB,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC;AACjE,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS;AAC7B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,gBAAgB,EAAE;AACpB,oBAAA,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE;gBACpC;AAEA,gBAAA,IAAI,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClF;iBAAO;AACL,gBAAA,IAAI,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;YACtC;YACA,IAAI,CAAC,yBAAyB,GAAG,MAAM,CAAC,KAAK,CAAC;AAChD,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,gBAAgB,CAAC,IAAS,EAAA;AAChC,QAAA,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,IAAI,CAAC;IAC9C;AAEO,IAAA,aAAa,CAAC,KAA0B,EAAA;AAC7C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AAEhC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY;QAEtC,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC;YAE/C;QACF;QAEA,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AAC/C,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM;QAE3B,IAAI,CAAC,YAAY,CAAC;YAChB,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;AACtC,YAAA,KAAK,EAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC;AAC5D,SAAA,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE;YACX;QACF;AAEA,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,mBAAmB,CAAC;YACvB,MAAM;YACN,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,SAAA,CAAC;IACJ;IAEQ,mBAAmB,CACzB,YAAiD,EACjD,KAA0B,EAAA;AAE1B,QAAA,IAAI,KAAK,KAAK,cAAc,CAAC,GAAG,EAAE;AAChC,YAAA,IAAI,CAAC,4BAA4B,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAClE;AAAO,aAAA,IAAI,KAAK,KAAK,cAAc,CAAC,OAAO,EAAE;AAC3C,YAAA,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC;QACzC;AAAO,aAAA,IAAI,KAAK,KAAK,cAAc,CAAC,OAAO,EAAE;YAC3C,IAAI,CAAC,0BAA0B,EAAE;QACnC;AAAO,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACpC,YAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;QACvC;aAAO;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QACjC;QAEA,IAAI,CAAC,YAAY,CAAC;AAChB,YAAA,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC;AACvC,YAAA,KAAK,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI;AAC1C,SAAA,CAAC;IACJ;AAEQ,IAAA,oBAAoB,CAAC,YAAiD,EAAA;QAC5E,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,YAAY,EAAE;AAC3C,YAAA,MAAM,YAAY,GAChB,KAAK,KAAK,oBAAoB,CAAC;kBAC3B,oBAAoB,CAAC;AACvB,kBAAE,oBAAoB,CAAC,QAAQ;YAEnC,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAC3D;IACF;IAEQ,0BAA0B,GAAA;AAChC,QAAA,IAAI,CAAC,4BAA4B,CAAC,oBAAoB,CAAC,UAAU,CAAC;AAClE,QAAA,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,WAAW,EAAE;AAC5C,YAAA,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,CAAC,QAAQ,EAAE,CAAC;QACzF;IACF;AAEQ,IAAA,yBAAyB,CAAC,KAAa,EAAA;AAC7C,QAAA,IAAI,CAAC,4BAA4B,CAAC,oBAAoB,CAAC,UAAU,CAAC;AAElE,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY;AACpC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAC7B,KAAK,EACL,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,EACjB,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,CACvC;YACD,IAAI,CAAC,mBAAmB,CAAC;gBACvB,MAAM;gBACN,QAAQ,EAAE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC;AACrD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;AAC/C,YAAA,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC;QACjD;IACF;AAEQ,IAAA,2BAA2B,CAAC,OAAY,EAAA;AAC9C,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC1F;IACF;IAEO,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;IAC5B;AAEO,IAAA,iBAAiB,CAAC,eAKxB,EAAA;QACC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,eAAe;QAE7C,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,IAAI,EAAE;AACpC,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;AAChC,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAC/B;QAEA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,KAAK,GAAG,CAAC,EAAE;YAC1C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QACxC;QAEA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,EAAE;AACnC,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;QACjC;IACF;AAEQ,IAAA,kBAAkB,CAAC,aAAqB,EAAA;AAC9C,QAAA,IAAI,CAAC;AACF,aAAA,mBAAmB,CAAC,aAAa,CAAC,wBAAwB;AAC1D,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,qBAAqB,GAAG,OAAO,IAAI,SAAS;AACnD,QAAA,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC;AAC9C,YAAA,QAAQ,EAAE;AACR,gBAAA,EAAE,EAAE,IAAI,CAAC,qBAAqB,EAAE,EAAE;gBAClC,aAAa,EAAE,aAAa,CAAC,wBAAwB;gBACrD,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,EAAE,aAAa,EAAE;AAC5B,aAAA;AACD,YAAA,MAAM,EAAE,IAAI;AACb,SAAA,CAAC;IACJ;IAEO,oBAAoB,CAAC,EAAE,QAAQ,EAA0B,EAAA;QAC9D,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,UAAU,CAAC;YACrE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAC/C,QAAQ,CAAC,WAAW,EACpB,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO,CAC5C;YACD,IAAI,CAAC,OAAO,GAAG;gBACb,GAAG,IAAI,CAAC,aAAa;gBACrB,GAAG,IAAI,CAAC,sBAAsB,CAC5B,QAAQ,CAAC,OAAO,EAChB,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO,CAC5C;gBACD,GAAG,IAAI,CAAC,cAAc;aACvB;QACH;AAEA,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEQ,sBAAsB,CAC5B,OAA0B,EAC1B,SAAwF,EAAA;QAExF,MAAM,eAAe,GAAG;cACpB,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;cAClE,OAAO;AAEX,QAAA,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACxC,YAAA,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,MAAM;YAE/B,IAAI,QAAQ,EAAE;AACZ,gBAAA,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAClE;YAEA,OAAO,CAAC,EAAE,CAAC;AACb,QAAA,CAAC,CAAC;IACJ;AAEO,IAAA,UAAU,CAAC,IAAoC,EAAA;AACpD,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;IACnC;AAEU,IAAA,0BAA0B,CAAC,iBAAiC,EAAA;AACpE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB;QACtC,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,GAAG,iBAAiB;QACzD;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC;AAC9C,YAAA,QAAQ,EAAE;AACR,gBAAA,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBAC7B,aAAa,EAAE,aAAa,CAAC,OAAO;gBACpC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE;AACpE,aAAA;AACD,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,cAAc,EAAE,IAAI;AACrB,SAAA,CAAC;IACJ;AAEA,IAAA,IAAc,gBAAgB,GAAA;QAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,KAAK,YAAY,CAAC,MAAM;IAC9D;IAEQ,6BAA6B,GAAA;AACnC,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aACxC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IAC5C;AAEQ,IAAA,kBAAkB,CAAC,YAAyD,EAAA;AAClF,QAAA,IAAI,CAAC;AACF,aAAA,kBAAkB,CAAC;AAClB,YAAA,OAAO,EAAE;AACP,gBAAA,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AACnB,aAAA;AACD,YAAA,aAAa,EAAE;gBACb,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,sBAAsB,CAAC;AAClE,aAAA;AACD,YAAA,WAAW,EAAE;gBACX,GAAG,EAAE,IAAI,CAAC,WAAW;AACtB,aAAA;SACF;AACA,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC,CAAC,YAAY,KAAI;YAC1B,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CACpC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,aAAa,CAAC,sBAAsB,CAC3E;YACD,MAAM,QAAQ,GAAG,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM;AAChD,YAAA,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,QAAQ,CAAC,QAAQ,CAAC;YAE7E,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;AAC9B,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;oBACzB,KAAK,EAAE,YAAY,CAAC,WAAW;oBAC/B,MAAM,EAAE,aAAa,CAAC,kBAAkB;AACzC,iBAAA,CAAC;YACJ;YAEA,IAAI,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE;AACnD,gBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,EAAE,CAAC;YACvC;AAAO,iBAAA,IAAI,YAAY,IAAI,QAAQ,EAAE;AACnC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC;YACzC;iBAAO,IAAI,cAAc,EAAE;AACzB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;YAC3C;AAEA,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,oBAAoB,CAAC,QAAyB,EAAA;AACpD,QAAA,IAAI,CAAC,cAAc,CAAC,2BAA2B,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;AAC/E,QAAA,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,cAAc;AACzC,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC;AACzC,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YACzB,KAAK,EAAE,YAAY,CAAC,MAAM;YAC1B,MAAM,EAAE,aAAa,CAAC,kBAAkB;AACzC,SAAA,CAAC;IACJ;AAEQ,IAAA,oBAAoB,CAAC,SAA8B,EAAA;QACzD,IAAI,MAAM,GAAG,IAAI;AAEjB,QAAA,IAAI,SAAS,KAAK,IAAI,EAAE;YACtB,IAAI,CAAC,eAAe,EAAE;YACtB;QACF;QAEA,IAAI,SAAS,KAAK,cAAc,CAAC,GAAG,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACrE,YAAA,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC;QACtD;AAAO,aAAA,IAAI,SAAS,KAAK,cAAc,CAAC,OAAO,EAAE;YAC/C,IAAI,CAAC,mBAAmB,EAAE;QAC5B;AAAO,aAAA,IAAI,SAAS,KAAK,cAAc,CAAC,OAAO,EAAE;AAC/C,YAAA,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE;QACzC;AAEA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,2BAA2B,CAAC,SAA8B,EAAA;QAChE,IAAI,MAAM,GAAG,IAAI;AACjB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY;AAEpC,QAAA,IAAI,SAAS,KAAK,cAAc,CAAC,GAAG,EAAE;AACpC,YAAA,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;QACpE;AAAO,aAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACxC,YAAA,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;gBAC1B,MAAM,GAAG,IAAI,CAAC,WAAW,CACvB,SAAS,EACT,CAAC,EACD,IAAI,CAAC,YAAY,EACjB,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,CACvC;YACH;iBAAO;AACL,gBAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;YACpC;QACF;AAEA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,kBAAkB,CAAC,KAAa,EAAA;AACtC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxE;IAEQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/D;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,MAAM,aAAa,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAc;QACzE,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY;cACtD,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa;cACpC,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC;QAEtC,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,kBAAkB,CAAC;IACnE;AAEQ,IAAA,YAAY,CAAC,IAAS,EAAA;QAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1C;AAEU,IAAA,cAAc,CAAC,KAA6B,EAAA;AACpD,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM;AAClD,YAAA,EAAE,EAAE,GAAG;YACP,KAAK;AACN,SAAA,CAAC,CAAC;IACL;AAEA,IAAA,IAAc,aAAa,GAAA;AACzB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,cAAc,EAAE,EAAE,IAAI,IAAI,IAAI;AACzE,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,gBAAgB,EAAE,EAAE,IAAI,IAAI,CAAC;QAC1E,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,qBAAqB,EAAE;AACtE,QAAA,MAAM,aAAa,GAAG,gBAAgB,KAAK,oBAAoB,CAAC,QAAQ;AAExE,QAAA,IAAI,YAAY,KAAK,IAAI,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI;QAC9B;AAEA,QAAA,OAAO,aAAa,GAAG,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,cAAc;IACvE;AAEQ,IAAA,2BAA2B,CAAC,WAA0B,EAAA;AAC5D,QAAA,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACpC,YAAA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM;YAEjC,IAAI,QAAQ,EAAE;gBACZ,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;YAC9D;YAEA,OAAO,CAAC,IAAI,CAAC;AACf,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IAAc,aAAa,GAAA;QACzB,MAAM,cAAc,GAAG,IAAI,CAAC,eAAgB,CAAC,qBAAqB,EAAE;AACpE,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAa,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS;QAE/D,OAAO,cAAc,KAAK,oBAAoB,CAAC,QAAQ,IAAI,CAAC,UAAU;IACxE;+GAzwBoB,YAAY,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAZ,YAAY,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADjC;;;MC/DY,mBAAmB,CAAA;AAI9B,IAAA,WAAA,CAA6B,mBAA6C,EAAA;QAA7C,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;AAHhC,QAAA,IAAA,CAAA,YAAY,GAA+B,IAAI,WAAW,CAAgB,EAAE,CAAC;QACrF,IAAA,CAAA,YAAY,GAAwB,IAAI;IAE6B;IAEtE,QAAQ,GAAA;AACb,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,EAAE,IAAI,IAAI,EAAE;AAE1E,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YACrE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;AAC/C,QAAA,CAAC,CAAC;IACJ;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE;IAClC;+GAlBW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,yDCXhC,u3BAsBA,EAAA,MAAA,EAAA,CAAA,+gFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,uFAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDXa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,u3BAAA,EAAA,MAAA,EAAA,CAAA,+gFAAA,CAAA,EAAA;;;MEuBpC,wBAAwB,CAAA;AAanC,IAAA,WAAA,CACmB,OAAe,EACf,mBAA6C,EAC7C,IAAuB,EAAA;QAFvB,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,IAAI,GAAJ,IAAI;QAfhB,IAAA,CAAA,UAAU,GAAuB,EAAE;QAElC,IAAA,CAAA,uBAAuB,GAAwB,IAAI;QACnD,IAAA,CAAA,wBAAwB,GAAwB,IAAI;QACpD,IAAA,CAAA,cAAc,GAA2B,IAAI;AAGpC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACjD,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAElD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ;IAMxD;IAEI,QAAQ,GAAA;QACb,IAAI,CAAC,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAC5D,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,sBAAsB,EAAE;IAC/B;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,uBAAuB,EAAE,WAAW,EAAE;AAC3C,QAAA,IAAI,CAAC,wBAAwB,EAAE,WAAW,EAAE;IAC9C;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YACjF,IAAI,KAAK,CAAC,KAAK,KAAK,YAAY,CAAC,UAAU,EAAE;AAC3C,gBAAA,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC;oBAChD,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC,EAAE;oBACpD,YAAY,EAAE,aAAa,CAAC,MAAM;oBAClC,UAAU,EAAE,IAAI,CAAC,UAAW;AAC7B,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACrD,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,OAAO,KACV,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;YACvB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAS;AACnC,YAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAO;YAC/B,WAAW,EAAE,MAAM,CAAC,aAAa;AACjC,YAAA,cAAc,EAAE,MAAM;SACvB,CAAC,CAAC,CACJ;AAEF,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;YACpB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAC7B,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,KAAK,aAAa,CAAC,MAAM,CACzF;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1B,QAAA,CAAC,CAAC;IACN;AAEO,IAAA,QAAQ,CAAC,EAAU,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AAC7C,YAAA,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE;AAClB,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;gBACzC,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC;gBACpE,OAAO,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;YACpC;YACA,OAAO,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;AACrC,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IAC1B;AAEO,IAAA,UAAU,CAAC,EAAU,EAAA;AAC1B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;QAClE,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;QACtF,IAAI,CAAC,WAAW,EAAE;YAChB;QACF;AACA,QAAA,WAAW,CAAC,QAAQ,GAAG,CAAC,WAAW,CAAC,QAAQ;QAE5C,IAAI,cAAc,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AAC7C,gBAAA,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE;AAE3B,gBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,cAAc,CAAC,cAAc,CAAC,EAAE,EAAE;AAC/D,oBAAA,OAAO,CAAC,QAAQ,GAAG,KAAK;gBAC1B;AAEA,gBAAA,OAAO,OAAO;AAChB,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,kBAAkB,CAAC,8BAA8B,CAAC;AACrD,gBAAA,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,EAAE;AACpC,gBAAA,QAAQ,EAAE;AACR,oBAAA,GAAG,cAAc,CAAC,cAAc,CAAC,QAAQ;AACzC,oBAAA,QAAQ,EAAE,KAAK;AAChB,iBAAA;AACF,aAAA,CAAC;QACJ;AACA,QAAA,IAAI,CAAC,kBAAkB,CAAC,8BAA8B,CAAC;YACrD,EAAE;AACF,YAAA,QAAQ,EAAE;AACR,gBAAA,GAAG,WAAW,CAAC,cAAc,CAAC,QAAQ;gBACtC,QAAQ,EAAE,WAAW,CAAC,QAAQ;AAC/B,aAAA;AACF,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IAC1B;AAEO,IAAA,MAAM,CAAC,EAAU,EAAA;AACtB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpE,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,aAAa,CAAC,cAAc,CAAC;AAC7E,YAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;gBAChC,KAAK,EAAE,YAAY,CAAC,cAAc;gBAClC,MAAM,EAAE,aAAa,CAAC,WAAW;AAClC,aAAA,CAAC;QACJ;IACF;AAEO,IAAA,QAAQ,CAAC,EAAU,EAAA;AACxB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;AACxE,QAAA,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;YACvB;QACF;QACA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,CAAC;AACtD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IAC1B;+GArIW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,+DChCrC,8/CA4CA,EAAA,MAAA,EAAA,CAAA,muCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,kFAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDZa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;+BACE,yBAAyB,EAAA,eAAA,EAGlB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8/CAAA,EAAA,MAAA,EAAA,CAAA,muCAAA,CAAA,EAAA;;;MEvBpC,iBAAiB,CAAA;IAS5B,WAAA,CACmB,eAAoC,EACpC,mBAA6C,EAAA;QAD7C,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;AAVtB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,aAAa,EAAa;AAMtC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,oBAAoB,CAAC;IAK1D;IAEI,WAAW,GAAA;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;AAChD,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;YAChC,KAAK,EAAE,YAAY,CAAC,WAAW;YAC/B,MAAM,EAAE,aAAa,CAAC,aAAa;AACpC,SAAA,CAAC;IACJ;IAEO,gBAAgB,GAAA;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE;QACrE,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,eAAe,CAAC,2BAA2B,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC;AACpF,YAAA,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,IAAI,CAAC;AACrD,YAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;gBAChC,KAAK,EAAE,YAAY,CAAC,WAAW;gBAC/B,MAAM,EAAE,aAAa,CAAC,kBAAkB;AACzC,aAAA,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;QAClD;aAAO;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC;QAC7C;IACF;IAEO,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC;QAChD;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE;AAC/D,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC3D,YAAA,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,IAAI,CAAC;AACrD,YAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;gBAChC,KAAK,EAAE,YAAY,CAAC,UAAU;gBAC9B,MAAM,EAAE,aAAa,CAAC,iBAAiB;AACxC,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC;AAC5C,YAAA,QAAQ,EAAE;AACR,gBAAA,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,SAAS;AAC1B,gBAAA,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI;AACnC,gBAAA,QAAQ,EAAE;AACR,oBAAA,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,IAAI,KAAK;AAC5C,oBAAA,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB;AAChD,iBAAA;gBACD,WAAW,EAAE,IAAI,CAAC,UAAU;gBAC5B,aAAa,EAAE,aAAa,CAAC,MAAM;AACpC,aAAA;AACF,SAAA,CAAC;IACJ;IAEO,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;IAC9B;IAEO,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC;AACF,aAAA,mBAAmB,CAAC,aAAa,CAAC,sBAAsB;AACxD,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO,IAAI,SAAS;AAClD,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC;AAC5C,YAAA,QAAQ,EAAE;AACR,gBAAA,EAAE,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAE;AACjC,gBAAA,QAAQ,EAAE;AACR,oBAAA,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB;AAC/C,oBAAA,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK;AACvC,iBAAA;gBACD,WAAW,EAAE,IAAI,CAAC,UAAU;gBAC5B,aAAa,EAAE,aAAa,CAAC,sBAAsB;AACpD,aAAA;AACD,YAAA,MAAM,EAAE,IAAI;AACb,SAAA,CAAC;IACJ;+GAxFW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAjB,iBAAiB,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;MCmBY,yBAAyB,CAAA;AAsBpC,IAAA,WAAA,CACmB,OAAe,EACf,mBAA6C,EAC7C,kBAAqC,EAAA;QAFrC,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAxB5B,IAAA,CAAA,KAAK,GAAkB,CAAC;QACxB,IAAA,CAAA,SAAS,GAAG,IAAI;QAChB,IAAA,CAAA,OAAO,GAAG,IAAI;QACd,IAAA,CAAA,eAAe,GAAG,IAAI;QACtB,IAAA,CAAA,oBAAoB,GAAG,KAAK;QAC5B,IAAA,CAAA,mBAAmB,GAAG,KAAK;QAC3B,IAAA,CAAA,qBAAqB,GAAG,QAAQ;AAE/B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAW;AAC1C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAa;AAC3C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ;AAE/B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AAEzB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM;QACxC,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CACjE,GAAG,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,KAAK,CAAC,CACxC;QAEe,IAAA,CAAA,WAAW,GAAG,YAAY;IAMvC;IAEI,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAE/E,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AAClF,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,YAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE;AAC7C,QAAA,CAAC,CAAC;IACJ;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE;QACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACtD,QAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE;IAC7C;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;YAChC,KAAK,EAAE,YAAY,CAAC,UAAU;YAC9B,MAAM,EAAE,aAAa,CAAC,IAAI;AAC3B,SAAA,CAAC;IACJ;IAEO,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;YAChC,KAAK,EAAE,YAAY,CAAC,cAAc;YAClC,MAAM,EAAE,aAAa,CAAC,iBAAiB;AACxC,SAAA,CAAC;IACJ;IAEO,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;IACvC;IAEO,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;IACjC;IAEO,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC;AACtC,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;IACjG;IAEO,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE;IAC5C;IAEO,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE;IACtC;IAEO,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;YAChC,KAAK,EAAE,YAAY,CAAC,WAAW;YAC/B,MAAM,EAAE,aAAa,CAAC,IAAI;AAC3B,SAAA,CAAC;IACJ;AAEA,IAAA,IAAc,KAAK,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK;IACvC;+GAvFW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAFzB,CAAC,iBAAiB,CAAC,0BCvBhC,ktIAmJA,EAAA,MAAA,EAAA,CAAA,0tGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,kFAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD1Ha,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,mBAGnB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,ktIAAA,EAAA,MAAA,EAAA,CAAA,0tGAAA,CAAA,EAAA;uIAGrB,KAAK,EAAA,CAAA;sBAAb;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,oBAAoB,EAAA,CAAA;sBAA5B;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBACQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAES,YAAY,EAAA,CAAA;sBAArB;gBACS,WAAW,EAAA,CAAA;sBAApB;gBACS,WAAW,EAAA,CAAA;sBAApB;;;MEXU,yBAAyB,CAAA;AAcpC,IAAA,WAAA,CACmB,OAAe,EACf,mBAA6C,EAC7C,kBAAqC,EAAA;QAFrC,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAhB5B,IAAA,CAAA,oBAAoB,GAAG,KAAK;QAC5B,IAAA,CAAA,mBAAmB,GAAG,KAAK;QAC3B,IAAA,CAAA,sBAAsB,GAAG,WAAW;AACnC,QAAA,IAAA,CAAA,KAAK,GAA4B,IAAI,YAAY,EAAa;AAEvD,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;QAEzB,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CACjE,GAAG,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,KAAK,CAAC,CACxC;QAEe,IAAA,CAAA,WAAW,GAAG,YAAY;IAMvC;IAEI,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAE/E,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AAClF,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACpB,YAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE;AAC7C,QAAA,CAAC,CAAC;IACJ;IAEO,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;IACvC;IAEO,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE;IAC5C;IAEO,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE;IACtC;+GAvCW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAFzB,CAAC,iBAAiB,CAAC,0BCvBhC,m4CAiDA,EAAA,MAAA,EAAA,CAAA,0qBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,kFAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDxBa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,mBAGnB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,m4CAAA,EAAA,MAAA,EAAA,CAAA,0qBAAA,CAAA,EAAA;uIAGrB,oBAAoB,EAAA,CAAA;sBAA5B;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBACQ,sBAAsB,EAAA,CAAA;sBAA9B;gBACS,KAAK,EAAA,CAAA;sBAAd;;;MEtBU,qBAAqB,CAAA;AALlC,IAAA,WAAA,GAAA;;QA0BW,IAAA,CAAA,eAAe,GAAG,CAAC;;QAGnB,IAAA,CAAA,MAAM,GAA+B,KAAK;AAIpD,IAAA;AA3BC,IAAA,IACI,oBAAoB,GAAA;AACtB,QAAA,MAAM,MAAM,GAAW,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,IAAI,CAAC;QAE1F,OAAO,CAAA,EAAG,MAAM,CAAA,EAAA,CAAI;IACtB;AAEA,IAAA,IACI,oBAAoB,GAAA;AACtB,QAAA,MAAM,MAAM,GAAW,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,IAAI,CAAC;QAE1F,OAAO,CAAA,EAAG,MAAM,CAAA,EAAA,CAAI;IACtB;AAEA,IAAA,IACI,iBAAiB,GAAA;AACnB,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,eAAe,IAAI;IACpC;+GAlBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,miBCPlC,oVAaA,EAAA,MAAA,EAAA,CAAA,63LAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDNa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,oVAAA,EAAA,MAAA,EAAA,CAAA,63LAAA,CAAA,EAAA;8BAM3B,oBAAoB,EAAA,CAAA;sBADvB,WAAW;uBAAC,8BAA8B;gBAQvC,oBAAoB,EAAA,CAAA;sBADvB,WAAW;uBAAC,8BAA8B;gBAQvC,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,2BAA2B;gBAM/B,eAAe,EAAA,CAAA;sBAAvB;gBAGQ,MAAM,EAAA,CAAA;sBAAd;gBAE8C,gBAAgB,EAAA,CAAA;sBAA9D,SAAS;uBAAC,iBAAiB;gBACmB,gBAAgB,EAAA,CAAA;sBAA9D,SAAS;uBAAC,iBAAiB;;;MEJjB,4BAA4B,CAAA;AAkCvC,IAAA,WAAA,CACmB,MAA+B,EAC/B,mBAA8C,EAC9C,kBAAwC,EAAA;QAFxC,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAhC5B,IAAA,CAAA,SAAS,GAAG,IAAI;QAChB,IAAA,CAAA,OAAO,GAAG,IAAI;QACd,IAAA,CAAA,eAAe,GAAG,IAAI;QACtB,IAAA,CAAA,oBAAoB,GAAG,KAAK;QAC5B,IAAA,CAAA,mBAAmB,GAAG,KAAK;;QAE3B,IAAA,CAAA,eAAe,GAAG,CAAC;QACnB,IAAA,CAAA,qBAAqB,GAAG,QAAQ;QAChC,IAAA,CAAA,sBAAsB,GAAG,WAAW;AAEnC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAQ;AAEpC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC;AAEpC,QAAA,IAAA,CAAA,aAAa,GAAkB,IAAI,OAAO,EAAQ;QAEnD,IAAA,CAAA,WAAW,GAAG,YAAY;QAC1B,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CACjE,GAAG,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,KAAK,CAAC,CACxC;QACe,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;QAC/E,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;QAE5C,IAAA,CAAA,eAAe,GAAoC,EAAE;AACrD,QAAA,IAAA,CAAA,cAAc,GAAiB;YACrC,KAAK,EAAE,YAAY,CAAC,MAAM;YAC1B,MAAM,EAAE,aAAa,CAAC,MAAM;SAC7B;IAME;IAEI,QAAQ,GAAA;AACb,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;AAC1F,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;AAClC,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAI;gBAC1B,IAAI,KAAK,CAAC,KAAK,KAAK,YAAY,CAAC,UAAU,EAAE;AAC3C,oBAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,QAAQ;oBACrC;gBACF;gBAEA,IAAI,KAAK,CAAC,KAAK,KAAK,YAAY,CAAC,cAAc,EAAE;AAC/C,oBAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;oBACjC;gBACF;gBAEA,IAAI,KAAK,CAAC,KAAK,KAAK,YAAY,CAAC,cAAc,EAAE;AAC/C,oBAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;oBACjC;gBACF;AACA,gBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;YAClC,CAAC;AACF,SAAA,CAAC;AAEJ,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;AAClC,YAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;gBAChC,KAAK,EAAE,YAAY,CAAC,WAAW;gBAC/B,MAAM,EAAE,aAAa,CAAC,IAAI;AAC3B,aAAA,CAAC;QACJ;IACF;AAEU,IAAA,SAAS,CAAC,KAAc,EAAA;QAChC,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;QAChC;IACF;IAEO,aAAa,CAAC,SAAoB,EAAE,QAAkB,EAAA;QAC3D,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;QACrC;AACA,QAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,SAAS,CAAC;AAChD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;IAC9B;IAEO,eAAe,GAAA;QACpB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,iBAAiB,GAAA;AACvB,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;AAC1F,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;aACrD,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAI;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC;AACnC,QAAA,CAAC,CAAC;IACN;IAEQ,WAAW,CAAC,KAAmB,EAAE,QAAgC,EAAA;QACvE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK;QAC5D,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,cAAc;QAEpD,QAAQ,YAAY;YAClB,KAAK,YAAY,CAAC,cAAc;AAC9B,gBAAA,IAAI,aAAa,KAAK,YAAY,CAAC,cAAc,EAAE;AACjD,oBAAA,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC;gBACvF;gBACA;YACF,KAAK,YAAY,CAAC,UAAU;AAC1B,gBAAA,IACE,aAAa,KAAK,YAAY,CAAC,UAAU;oBACzC,aAAa,KAAK,YAAY,CAAC,cAAc;AAC7C,oBAAA,aAAa,KAAK,YAAY,CAAC,cAAc,EAC7C;oBACA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB;gBACnE;gBACA;YACF,KAAK,YAAY,CAAC,WAAW;AAC3B,gBAAA,IAAI,aAAa,KAAK,YAAY,CAAC,WAAW,EAAE;AAC9C,oBAAA,IAAI,aAAa,KAAK,aAAa,CAAC,MAAM,EAAE;wBAC1C,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,IAAI,CAAC,eAAe,CAAC;oBAC3E;AAAO,yBAAA,IAAI,aAAa,KAAK,aAAa,CAAC,kBAAkB,EAAE;wBAC7D,IAAI,CAAC,eAAe,GAAG,QAAQ,EAAE,QAAQ,EAAE,MAAM,IAAI,EAAE;oBACzD;gBACF;gBACA;AACF,YAAA;AACE,gBAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC;gBAC/C;;IAEN;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;IAC/B;+GAvIW,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAR,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,ocC9BzC,yvDAqDA,EAAA,MAAA,EAAA,CAAA,kMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,mBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,qBAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAf,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDvBa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;+BACE,6BAA6B,EAAA,eAAA,EAGtB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yvDAAA,EAAA,MAAA,EAAA,CAAA,kMAAA,CAAA,EAAA;4IAMtC,MAAM,EAAA,CAAA;sBAAd;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,oBAAoB,EAAA,CAAA;sBAA5B;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBAEQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,qBAAqB,EAAA,CAAA;sBAA7B;gBACQ,sBAAsB,EAAA,CAAA;sBAA9B;gBAES,gBAAgB,EAAA,CAAA;sBAAzB;;;MEvBU,uBAAuB,CAAA;AANpC,IAAA,WAAA,GAAA;QAOS,IAAA,CAAA,QAAQ,GAAG,eAAe,CAAY,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAEvE,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC;AAEtB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;QACrB,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEjE,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAErE,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CACjC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC9B,SAAS,CAAC,CAAC,QAAQ,KACjB,aAAa,CACX,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,KACvB,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAK;AACzC,YAAA,MAAM,OAAO,GAAI,OAAyB,EAAE,OAAO;AAEnD,YAAA,OAAO,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;AACpD,QAAA,CAAC,CAAC,CACH,CACF,CACF,CACF,EACD,EAAE,YAAY,EAAE,EAAE,EAAE,CACrB;AAEgB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAmB9C,IAAA;IAjBW,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC;IACzC;IAEQ,wBAAwB,GAAA;QAC9B,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,YAAY,KAAI;YACnD,IAAI,CAAC,YAAY,EAAE;AACjB,gBAAA,OAAO,KAAK;YACd;AAEA,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAC/B,gBAAA,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;YAC9C;AAEA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;IACJ;+GA7CW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EACW,SAAS,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBxD,0lBAkBA,EAAA,MAAA,EAAA,CAAA,iiGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDIa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;+BACE,uBAAuB,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0lBAAA,EAAA,MAAA,EAAA,CAAA,iiGAAA,CAAA,EAAA;;;ME2JpC,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAvG1B,WAAW;YACX,mBAAmB;YACnB,gBAAgB;YAChB,oBAAoB;YACpB,sBAAsB;YACtB,iBAAiB;YACjB,oBAAoB;YACpB,oBAAoB;YACpB,mBAAmB;YACnB,uBAAuB;YACvB,sBAAsB;YACtB,mBAAmB;YACnB,oBAAoB;YACpB,eAAe;YACf,uBAAuB;YACvB,oBAAoB;YACpB,yBAAyB;YACzB,2BAA2B;YAC3B,0BAA0B;YAC1B,uBAAuB;YACvB,+BAA+B;YAC/B,oBAAoB;YACpB,6BAA6B;YAC7B,4BAA4B;YAC5B,sBAAsB;YACtB,kBAAkB;YAClB,8BAA8B;YAC9B,kCAAkC;YAClC,qBAAqB;YACrB,gBAAgB;YAChB,8BAA8B;YAC9B,sBAAsB;YACtB,6BAA6B;YAC7B,2BAA2B;YAC3B,kBAAkB;YAClB,eAAe;YACf,sBAAsB;YACtB,mCAAmC;YACnC,mBAAmB;YACnB,mCAAmC;YACnC,sCAAsC;YACtC,kBAAkB;YAClB,gCAAgC;YAChC,yBAAyB;YACzB,wBAAwB;YACxB,yBAAyB;YACzB,kBAAkB;AAClB,YAAA,uBAAuB,aAGvB,WAAW;YACX,mBAAmB;YACnB,gBAAgB;YAChB,oBAAoB;YACpB,sBAAsB;YACtB,iBAAiB;YACjB,oBAAoB;YACpB,oBAAoB;YACpB,mBAAmB;YACnB,uBAAuB;YACvB,sBAAsB;YACtB,mBAAmB;YACnB,oBAAoB;YACpB,eAAe;YACf,uBAAuB;YACvB,oBAAoB;YACpB,yBAAyB;YACzB,2BAA2B;YAC3B,0BAA0B;YAC1B,uBAAuB;YACvB,+BAA+B;YAC/B,oBAAoB;YACpB,6BAA6B;YAC7B,4BAA4B;YAC5B,sBAAsB;YACtB,kBAAkB;YAClB,8BAA8B;YAC9B,kCAAkC;YAClC,qBAAqB;YACrB,gBAAgB;YAChB,8BAA8B;YAC9B,sBAAsB;YACtB,6BAA6B;YAC7B,2BAA2B;YAC3B,kBAAkB;YAClB,eAAe;YACf,sBAAsB;YACtB,mCAAmC;YACnC,mBAAmB;YACnB,0BAA0B;YAC1B,mCAAmC;YACnC,sCAAsC;YACtC,mBAAmB;YACnB,kBAAkB;YAClB,gCAAgC;YAChC,yBAAyB;YACzB,wBAAwB;YACxB,yBAAyB;YACzB,kBAAkB;YAClB,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAId,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,SAAA,EAFjB,CAAC,mBAAmB,CAAC,YArG9B,WAAW;YACX,mBAAmB;YACnB,gBAAgB;YAChB,oBAAoB;YACpB,sBAAsB;YACtB,iBAAiB;YACjB,oBAAoB;YACpB,oBAAoB;YACpB,mBAAmB;YACnB,uBAAuB;YACvB,sBAAsB;YACtB,mBAAmB;YACnB,oBAAoB;YACpB,eAAe;YACf,uBAAuB;YACvB,oBAAoB;YACpB,yBAAyB;YACzB,2BAA2B;YAC3B,0BAA0B;YAC1B,uBAAuB;YACvB,+BAA+B;YAC/B,oBAAoB;YACpB,6BAA6B;YAC7B,4BAA4B;YAC5B,sBAAsB;YACtB,kBAAkB;YAClB,8BAA8B;YAC9B,kCAAkC;YAClC,qBAAqB;YACrB,gBAAgB;YAChB,8BAA8B;YAC9B,sBAAsB;YACtB,6BAA6B;YAC7B,2BAA2B;YAE3B,eAAe;YACf,sBAAsB;YACtB,mCAAmC;YACnC,mBAAmB;YACnB,mCAAmC;YACnC,sCAAsC;YACtC,kBAAkB;YAElB,yBAAyB;YAEzB,yBAAyB;YACzB,kBAAkB;AAClB,YAAA,uBAAuB,EAGvB,WAAW;YACX,mBAAmB;YACnB,gBAAgB;YAChB,oBAAoB;YAEpB,iBAAiB;YAEjB,oBAAoB;YAGpB,sBAAsB;YAGtB,eAAe;YACf,uBAAuB;YAGvB,2BAA2B;YAC3B,0BAA0B;YAE1B,+BAA+B;YAK/B,kBAAkB;YAIlB,gBAAgB;YAChB,8BAA8B;YAC9B,sBAAsB;YAEtB,2BAA2B;YAE3B,eAAe;YACf,sBAAsB;YACtB,mCAAmC;YACnC,mBAAmB;YACnB,0BAA0B;YAG1B,mBAAmB;YAMnB,kBAAkB,CAAA,EAAA,CAAA,CAAA;;4FAKT,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAzG7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,WAAW;wBACX,mBAAmB;wBACnB,gBAAgB;wBAChB,oBAAoB;wBACpB,sBAAsB;wBACtB,iBAAiB;wBACjB,oBAAoB;wBACpB,oBAAoB;wBACpB,mBAAmB;wBACnB,uBAAuB;wBACvB,sBAAsB;wBACtB,mBAAmB;wBACnB,oBAAoB;wBACpB,eAAe;wBACf,uBAAuB;wBACvB,oBAAoB;wBACpB,yBAAyB;wBACzB,2BAA2B;wBAC3B,0BAA0B;wBAC1B,uBAAuB;wBACvB,+BAA+B;wBAC/B,oBAAoB;wBACpB,6BAA6B;wBAC7B,4BAA4B;wBAC5B,sBAAsB;wBACtB,kBAAkB;wBAClB,8BAA8B;wBAC9B,kCAAkC;wBAClC,qBAAqB;wBACrB,gBAAgB;wBAChB,8BAA8B;wBAC9B,sBAAsB;wBACtB,6BAA6B;wBAC7B,2BAA2B;wBAC3B,kBAAkB;wBAClB,eAAe;wBACf,sBAAsB;wBACtB,mCAAmC;wBACnC,mBAAmB;wBACnB,mCAAmC;wBACnC,sCAAsC;wBACtC,kBAAkB;wBAClB,gCAAgC;wBAChC,yBAAyB;wBACzB,wBAAwB;wBACxB,yBAAyB;wBACzB,kBAAkB;wBAClB,uBAAuB;AACxB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,WAAW;wBACX,mBAAmB;wBACnB,gBAAgB;wBAChB,oBAAoB;wBACpB,sBAAsB;wBACtB,iBAAiB;wBACjB,oBAAoB;wBACpB,oBAAoB;wBACpB,mBAAmB;wBACnB,uBAAuB;wBACvB,sBAAsB;wBACtB,mBAAmB;wBACnB,oBAAoB;wBACpB,eAAe;wBACf,uBAAuB;wBACvB,oBAAoB;wBACpB,yBAAyB;wBACzB,2BAA2B;wBAC3B,0BAA0B;wBAC1B,uBAAuB;wBACvB,+BAA+B;wBAC/B,oBAAoB;wBACpB,6BAA6B;wBAC7B,4BAA4B;wBAC5B,sBAAsB;wBACtB,kBAAkB;wBAClB,8BAA8B;wBAC9B,kCAAkC;wBAClC,qBAAqB;wBACrB,gBAAgB;wBAChB,8BAA8B;wBAC9B,sBAAsB;wBACtB,6BAA6B;wBAC7B,2BAA2B;wBAC3B,kBAAkB;wBAClB,eAAe;wBACf,sBAAsB;wBACtB,mCAAmC;wBACnC,mBAAmB;wBACnB,0BAA0B;wBAC1B,mCAAmC;wBACnC,sCAAsC;wBACtC,mBAAmB;wBACnB,kBAAkB;wBAClB,gCAAgC;wBAChC,yBAAyB;wBACzB,wBAAwB;wBACxB,yBAAyB;wBACzB,kBAAkB;wBAClB,uBAAuB;AACxB,qBAAA;oBACD,SAAS,EAAE,CAAC,mBAAmB,CAAC;AACjC,iBAAA;;;MClJY,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBAfzB,yBAAyB;YACzB,mBAAmB;YACnB,wBAAwB;YACxB,uBAAuB;YACvB,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAEjB,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAE3F,mBAAmB;YACnB,wBAAwB;YACxB,uBAAuB;YACvB,yBAAyB;YACzB,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAGhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YATjB,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;;4FAShE,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAjB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,yBAAyB;wBACzB,mBAAmB;wBACnB,wBAAwB;wBACxB,uBAAuB;wBACvB,yBAAyB;AAC1B,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;AAC9F,oBAAA,OAAO,EAAE;wBACP,mBAAmB;wBACnB,wBAAwB;wBACxB,uBAAuB;wBACvB,yBAAyB;wBACzB,yBAAyB;AAC1B,qBAAA;AACF,iBAAA;;;MCjBY,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAJd,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAC1B,YAAY,EAAE,uBAAuB,aACrC,qBAAqB,CAAA,EAAA,CAAA,CAAA;gHAEpB,kBAAkB,EAAA,OAAA,EAAA,CAHnB,YAAY,EAAE,uBAAuB,CAAA,EAAA,CAAA,CAAA;;4FAGpC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;AACrC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,uBAAuB,CAAC;oBAChD,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA;;;MCYY,yBAAyB,CAAA;+GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAzB,yBAAyB,EAAA,YAAA,EAAA,CAXrB,4BAA4B,CAAA,EAAA,OAAA,EAAA,CAEzC,YAAY;YACZ,mBAAmB;YACnB,gBAAgB;YAChB,gBAAgB;YAChB,kBAAkB;AAClB,YAAA,SAAS,aAED,4BAA4B,CAAA,EAAA,CAAA,CAAA;AAE3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,YATlC,YAAY;YACZ,mBAAmB;YACnB,gBAAgB;YAEhB,kBAAkB;YAClB,SAAS,CAAA,EAAA,CAAA,CAAA;;4FAIA,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAZrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,4BAA4B,CAAC;AAC5C,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,gBAAgB;wBAChB,gBAAgB;wBAChB,kBAAkB;wBAClB,SAAS;AACV,qBAAA;oBACD,OAAO,EAAE,CAAC,4BAA4B,CAAC;AACxC,iBAAA;;;ACDK,MAAO,0BAA2B,SAAQ,SAAyB,CAAA;AANzE,IAAA,WAAA,GAAA;;AAOmB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,kBAAkB,GAAG,SAAS,CAAwB,WAAW,CAAC;AAEhE,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,CAAC,KAAa,KAAa,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAC;AACnE,QAAA,IAAA,CAAA,eAAe,GAA8B,CAAC,KAAK,KACpE,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;AAE/B,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAW,EAAE,CAAC;AACnC,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAgB,IAAI,CAAC;AAChC,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAgB,IAAI,CAAC;AAChC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAsB,GAAG,CAAC;QACnC,IAAA,CAAA,gBAAgB,GAAG,KAAK;AAoBnC,IAAA;IAlBW,KAAK,GAAA;AACb,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,gBAAgB;AAE9C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAC/C,IAAI,aAAa,EAAE;AACjB,YAAA,MAAM,OAAO,GAAG,aAAa,CAAC,sBAAuB;AACrD,YAAA,MAAM,eAAe,GAAG,CAAC,KAAiB,KAAI;AAC5C,gBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACnE,oBAAA,aAAqB,CAAC,YAAY,CAAC,KAAK,CAAC;oBAC1C,aAAa,CAAC,kBAAkB,EAAE;AAClC,oBAAA,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,eAAe,CAAC;AACtD,oBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,oBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBAC1B;AACF,YAAA,CAAC;AACD,YAAA,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC;QACrD;IACF;+GA/BW,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,u2BCnBvC,0sDAiDA,EAAA,MAAA,EAAA,CAAA,k0TAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,mEAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,kBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD9Ba,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;+BACE,2BAA2B,EAAA,eAAA,EAGpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0sDAAA,EAAA,MAAA,EAAA,CAAA,k0TAAA,CAAA,EAAA;;;AET3C,MAAO,oBAAqB,SAAQ,SAAmB,CAAA;+GAAhD,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,iFCRjC,6BACA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDOa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,oBAAoB,EAAA,eAAA,EAEb,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6BAAA,EAAA;;;MEIpC,yBAAyB,CAAA;+GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVtC,4HAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEY,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIN,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;+BACE,0BAA0B,EAAA,UAAA,EACxB,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EAED,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4HAAA,EAAA;;;AE0B3C,MAAO,kBAAmB,SAAQ,aAAgD,CAAA;AApBxF,IAAA,WAAA,GAAA;;AAqBW,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,eAAe,CAAC;QACpC,IAAA,CAAA,GAAG,GAAkB,IAAI;QACzB,IAAA,CAAA,GAAG,GAAkB,IAAI;QAWzB,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,CAAC,KAAoB,KACrD,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,GAAG,CAC9C;AAEkB,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,0BAA0B;AACrD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,uBAAuB;AAuBnE,IAAA;IAtCC,IAAsB,gBAAgB,CACpC,SAAiF,EAAA;QAEjF,IAAI,CAAC,mBAAmB,GAAG,SAAS,IAAI,IAAI,CAAC,0BAA0B;IACzE;IACA,IAAsB,eAAe,CACnC,MAA2E,EAAA;QAE3E,IAAI,CAAC,gBAAgB,GAAG,MAAM,IAAI,IAAI,CAAC,uBAAuB;IAChE;AAQQ,IAAA,mBAAmB,CAAC,KAAa,EAAA;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC;IAC1F;AAEQ,IAAA,0BAA0B,CAAC,KAAoB,EAAA;QACrD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;AAE5D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC,cAAc,CAAC;IAC9D;AAEQ,IAAA,uBAAuB,CAAC,KAAyB,EAAA;QACvD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpE;+GAzCW,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,y6BClC/B,w6DAuDA,EAAA,MAAA,EAAA,CAAA,8xTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,mEAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,kBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,eAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhCI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,IAAI,6FACJ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,YAAY,qFACZ,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,4BAA4B,6SAC5B,yBAAyB,EAAA,QAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGhB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBApB9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAGhB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,YAAY;wBACZ,mBAAmB;wBACnB,IAAI;wBACJ,gBAAgB;wBAChB,QAAQ;wBACR,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,4BAA4B;wBAC5B,yBAAyB;AAC1B,qBAAA,EAAA,QAAA,EAAA,w6DAAA,EAAA,MAAA,EAAA,CAAA,8xTAAA,CAAA,EAAA;8BAIQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACqB,gBAAgB,EAAA,CAAA;sBAArC;gBAKqB,eAAe,EAAA,CAAA;sBAApC;;;AE5BG,MAAO,uBAAwB,SAAQ,aAG5C,CAAA;AATD,IAAA,WAAA,GAAA;;AAUS,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAsB,IAAI,CAAC;;AAE5C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,EAAE,CAAC;AAC9B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,iBAAiB,CAAC;AAatC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAC/B,CAAC,KAA2B,KAAa,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,CAClE;AAEkB,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,0BAA0B;AACrD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,uBAAuB;AA0BnE,IAAA;IAzCC,IAAsB,gBAAgB,CACpC,SAA8F,EAAA;QAE9F,IAAI,CAAC,mBAAmB,GAAG,SAAS,IAAI,IAAI,CAAC,0BAA0B;IACzE;IACA,IAAsB,eAAe,CACnC,MAAwF,EAAA;QAExF,IAAI,CAAC,gBAAgB,GAAG,MAAM,IAAI,IAAI,CAAC,uBAAuB;IAChE;AAQQ,IAAA,0BAA0B,CAAC,KAA2B,EAAA;QAC5D,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAEjE,OAAO;AACL,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC;AAC/D,YAAA,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,cAAc,CAAC;SAC5D;IACH;AAEQ,IAAA,uBAAuB,CAAC,KAA+B,EAAA;QAC7D,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;AACjD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAE7C,OAAO,aAAa,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC;IACpD;+GAlDW,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,4qCCfpC,0sDA6CA,EAAA,MAAA,EAAA,CAAA,srUAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,KAAA,EAAA,KAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD9Ba,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;+BACE,wBAAwB,EAAA,eAAA,EAGjB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0sDAAA,EAAA,MAAA,EAAA,CAAA,srUAAA,CAAA,EAAA;8BAUtC,GAAG,EAAA,CAAA;sBAAX;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACqB,gBAAgB,EAAA,CAAA;sBAArC;gBAKqB,eAAe,EAAA,CAAA;sBAApC;;;MEtBU,cAAc,CAAA;AACzB,IAAA,WAAA,CAA6B,gBAAiC,EAAA;QAAjC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAAoB;AAEjE,IAAA,SAAS,CAAC,KAAc,EAAE,OAAe,EAAE,OAAe,EAAE,CAAoB,EAAA;QAC9E,IAAI,GAAG,GAAG,IAAI;AAEd,QAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACzB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;YACxE,GAAG,GAAGW,QAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;QACjC;AAAO,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpC,GAAG,GAAG,KAAK;QACb;QAEA,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,KAAK;QACd;QAEA,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;IACtD;+GAlBW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACUK,MAAO,sBAAuB,SAAQ,aAG3C,CAAA;AATD,IAAA,WAAA,GAAA;;AAUW,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,uBAAuB,CAAC;QAG5C,IAAA,CAAA,QAAQ,GAAkB,OAAO;AAYvB,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,0BAA0B;AACrD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,uBAAuB;AA+DnE,IAAA;IA3EC,IAAsB,gBAAgB,CACpC,SAA+F,EAAA;QAE/F,IAAI,CAAC,mBAAmB,GAAG,SAAS,IAAI,IAAI,CAAC,0BAA0B;IACzE;IACA,IAAsB,eAAe,CACnC,MAAyF,EAAA;QAEzF,IAAI,CAAC,gBAAgB,GAAG,MAAM,IAAI,IAAI,CAAC,uBAAuB;IAChE;AAKQ,IAAA,0BAA0B,CAAC,KAA8B,EAAA;QAC/D,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;QAEvD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC;AAEQ,IAAA,uBAAuB,CAAC,KAA6B,EAAA;QAC3D,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAE5C,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;IAC7C;IAEmB,MAAM,GAAA;QACvB,IAAI,CAAC,2BAA2B,EAAE;IACpC;IAEU,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC7B;AAEA,IAAA,IAAc,UAAU,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,OAAO,IAAI,CAAC,KAAK,KAAK;cACzB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK;cACnC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC;IACrD;IAEQ,2BAA2B,GAAA;AACjC,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,EACvE,QAAQ,EAAE,EACV,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM;YACrB,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC,EACH,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,EAC9B,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;aAE5B,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAI;YAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAM,CAAC;AACxD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAEvE,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACtF,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,yBAAyB,CAAC,IAAU,EAAA;AAC1C,QAAA,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAClF;+GAlFW,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,m4BCjBnC,siFAsEA,EAAA,MAAA,EAAA,CAAA,yqUAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,KAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAa,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDrDa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACE,uBAAuB,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,siFAAA,EAAA,MAAA,EAAA,CAAA,yqUAAA,CAAA,EAAA;8BAOtC,GAAG,EAAA,CAAA;sBAAX;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACqB,gBAAgB,EAAA,CAAA;sBAArC;gBAKqB,eAAe,EAAA,CAAA;sBAApC;;;AEHG,MAAO,2BAA4B,SAAQ,aAGhD,CAAA;AATD,IAAA,WAAA,GAAA;;AAUW,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAGtC,IAAA,CAAA,QAAQ,GAAkB,OAAO;QACjC,IAAA,CAAA,SAAS,GAAwB,IAAI;AAc3B,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,0BAA0B;AACrD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,uBAAuB;AA6EnE,IAAA;IA3FC,IAAsB,gBAAgB,CACpC,SAEa,EAAA;QAEb,IAAI,CAAC,mBAAmB,GAAG,SAAS,IAAI,IAAI,CAAC,0BAA0B;IACzE;IACA,IAAsB,eAAe,CACnC,MAAgG,EAAA;QAEhG,IAAI,CAAC,gBAAgB,GAAG,MAAM,IAAI,IAAI,CAAC,uBAAuB;IAChE;AAKQ,IAAA,0BAA0B,CAChC,KAAgC,EAAA;QAEhC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC;QAErE,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACjC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;SAC9B;IACH;AAEQ,IAAA,uBAAuB,CAAC,KAAkC,EAAA;QAChE,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;AACjD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;AAE7C,QAAA,OAAO,IAAI,kBAAkB,CAC3B,aAAa,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,EAC3C,IAAI,cAAc,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAC3F;IACH;IAEmB,MAAM,GAAA;QACvB,IAAI,CAAC,2BAA2B,EAAE;IACpC;IAEQ,2BAA2B,GAAA;AACjC,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,EACvE,QAAQ,EAAE,EACV,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM;YACrB,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC,EACH,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,EAC9B,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;aAE5B,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAI;AAC3C,YAAA,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,KAAM,CAAC;AAEtE,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACvE,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAEnE,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;AACjF,gBAAA,SAAS,EAAE,KAAK;AACjB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,IAAc,IAAI,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;IACvC;AAEA,IAAA,IAAc,EAAE,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;IACrC;AAEQ,IAAA,iBAAiB,CAAC,IAAmB,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK;AAE1C,QAAA,OAAO,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,iBAAiB,EAAE;IACjF;+GAnGW,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,8gCC3BxC,04EAmEA,EAAA,MAAA,EAAA,CAAA,67VAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sCAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,KAAA,EAAA,KAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAa,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDxCa,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;+BACE,6BAA6B,EAAA,eAAA,EAGtB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,04EAAA,EAAA,MAAA,EAAA,CAAA,67VAAA,CAAA,EAAA;8BAOtC,GAAG,EAAA,CAAA;sBAAX;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACqB,gBAAgB,EAAA,CAAA;sBAArC;gBAOqB,eAAe,EAAA,CAAA;sBAApC;;;AE7BG,MAAO,mBAAoB,SAAQ,aAAsD,CAAA;AAN/F,IAAA,WAAA,GAAA;;AAOW,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,gBAAgB,CAAC;AAWrC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,CAAC,KAAwB,KACzD,KAAK,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAA,CAAE,GAAG,GAAG,CAChE;AAEkB,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,0BAA0B;AACrD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,uBAAuB;AAuBnE,IAAA;IAtCC,IAAsB,gBAAgB,CACpC,SAAuF,EAAA;QAEvF,IAAI,CAAC,mBAAmB,GAAG,SAAS,IAAI,IAAI,CAAC,0BAA0B;IACzE;IACA,IAAsB,eAAe,CACnC,MAAiF,EAAA;QAEjF,IAAI,CAAC,gBAAgB,GAAG,MAAM,IAAI,IAAI,CAAC,uBAAuB;IAChE;AAQQ,IAAA,0BAA0B,CAAC,KAAwB,EAAA;QACzD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;QAEA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;IACzD;AAEQ,IAAA,uBAAuB,CAAC,KAA2B,EAAA;QACzD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAE5C,QAAA,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC5D;AAEQ,IAAA,YAAY,CAAC,KAAa,EAAA;AAChC,QAAA,OAAO,WAAW,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC;IAC5C;+GAvCW,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,grBCdhC,yqDA8CA,EAAA,MAAA,EAAA,CAAA,yqUAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,8BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDhCa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACE,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yqDAAA,EAAA,MAAA,EAAA,CAAA,yqUAAA,CAAA,EAAA;8BAIzB,gBAAgB,EAAA,CAAA;sBAArC;gBAKqB,eAAe,EAAA,CAAA;sBAApC;;;AEPG,MAAO,wBAAyB,SAAQ,aAG7C,CAAA;AATD,IAAA,WAAA,GAAA;;AAUW,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,iBAAiB,CAAC;AAatC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,CAAC,KAA6B,KAAY;YAC1E,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,OAAO,GAAG;YACZ;AAEA,YAAA,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,KAAK;AAE1B,YAAA,MAAM,YAAY,GAAG,CAAA,EAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,EAAE;AACpE,YAAA,MAAM,UAAU,GAAG,CAAA,EAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA,CAAA,EAAI,EAAE,CAAC,IAAI,EAAE;AAE9D,YAAA,OAAO,CAAA,EAAG,YAAY,CAAA,GAAA,EAAM,UAAU,EAAE;AAC1C,QAAA,CAAC,CAAC;AAEiB,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,0BAA0B;AACrD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,uBAAuB;AA8BnE,IAAA;IAxDC,IAAsB,gBAAgB,CACpC,SAEa,EAAA;QAEb,IAAI,CAAC,mBAAmB,GAAG,SAAS,IAAI,IAAI,CAAC,0BAA0B;IACzE;IACA,IAAsB,eAAe,CACnC,MAA2F,EAAA;QAE3F,IAAI,CAAC,gBAAgB,GAAG,MAAM,IAAI,IAAI,CAAC,uBAAuB;IAChE;AAiBQ,IAAA,0BAA0B,CAAC,KAA6B,EAAA;QAC9D,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;QAEA,OAAO;AACL,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3D,YAAA,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC;SACxD;IACH;AAEQ,IAAA,uBAAuB,CAAC,KAAgC,EAAA;QAC9D,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;AACjD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;AAE7C,QAAA,OAAO,IAAI,eAAe,CACxB,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EACnD,IAAI,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAChD;IACH;AAEQ,IAAA,YAAY,CAAC,KAAa,EAAA;AAChC,QAAA,OAAO,WAAW,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC;IAC5C;+GA5DW,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,srBCdrC,67CAuCA,EAAA,MAAA,EAAA,CAAA,mpUAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mCAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDzBa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;+BACE,yBAAyB,EAAA,eAAA,EAGlB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,67CAAA,EAAA,MAAA,EAAA,CAAA,mpUAAA,CAAA,EAAA;8BAOzB,gBAAgB,EAAA,CAAA;sBAArC;gBAOqB,eAAe,EAAA,CAAA;sBAApC;;;AE1BI,MAAM,oCAAoC,GAAG,IAAI;;AC+ElD,MAAO,yBACX,SAAQ,eAA2D,CAAA;IAsCnE,WAAA,CACE,QAAkB,EACQ,QAAkB,EAAA;QAE5C,KAAK,CAAC,QAAQ,CAAC;QAFW,IAAA,CAAA,QAAQ,GAAR,QAAQ;AArClB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC;QAC5B,IAAA,CAAA,aAAa,GAAG,KAAK,CAC5B,CAAC,MAAc,EAAE,IAAwB,KACvC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAC1D;AACQ,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC;AAE/B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CACxB,CAAC,IAAI,MAAM,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAC7D;AAEQ,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAC1B;AAEiB,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CACxC,CAAC,MAA4B,KAAa,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CACxF;QAEQ,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAwB;QAE/B,IAAA,CAAA,aAAa,GAAuB,aAAa;QAI1D,IAAA,CAAA,WAAW,GAAG,EAAE;AAEP,QAAA,IAAA,CAAA,SAAS,GAA4B,IAAI,eAAe,CAAS,EAAE,CAAC;QAC/E,IAAA,CAAA,oBAAoB,GAAwB,IAAI;QAChD,IAAA,CAAA,YAAY,GAAG,EAAE;QAEjB,IAAA,CAAA,yBAAyB,GAAwB,IAAI;QACtD,IAAA,CAAA,WAAW,GAAG,EAAE;IAOvB;IAEgB,MAAM,GAAA;QACpB,IAAI,CAAC,kBAAkB,EAAE;AAEzB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QACxC;IACF;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,YAAY,CAAC,oCAAoC,CAAC,EAClD,oBAAoB,EAAE,EACtB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AAE5B,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACxB,QAAA,CAAC,CAAC;IACN;IAEgB,aAAa,GAAA;QAC3B,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;YACvC,IAAI,CAAC,uBAAuB,EAAE;QAChC;AAEA,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,kBAAkB,EAAE;QAC3B;QAEA,IAAI,CAAC,uBAAuB,EAAE;QAC9B,IAAI,CAAC,wBAAwB,EAAE;QAE/B,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE;YACvE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YACnC;YACA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC3B,IAAI,CAAC,UAAU,EAAE;YACnB;QACF;IACF;IAEQ,kBAAkB,GAAA;QACxB,IAAI,CAAC,OAAO,CAAC;aACV,IAAI,CACH,MAAM,CAAC,OAAO,CAAC,EACf,MAAM,CAAC,CAAC,MAAM,KAAI;AAChB,YAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AAChE,YAAA,MAAM,wBAAwB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,KACnD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAC1C;YAED,OAAO,oBAAoB,IAAI,wBAAwB;QACzD,CAAC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AAE5B,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,YAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;YACpD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAE/D,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC3D,QAAA,CAAC,CAAC;AAEJ,QAAA,aAAa,CAAC;AACZ,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAC5B,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EACvD,yBAAyB,EAAE,EAC3B,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC9E;AACD,YAAA,IAAI,CAAC,KAAK;SACX;AACE,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;aAChC,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,UAAU,EAAE;AACnB,QAAA,CAAC,CAAC;IACN;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC1D,IAAI,CAAC,UAAU,EAAE;AACnB,QAAA,CAAC,CAAC;IACJ;IAEQ,wBAAwB,GAAA;AAC9B,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;QAErC,IAAI,CAAC,OAAO,EAAE;aACX,IAAI,CACH,yBAAyB,EAAE,EAC3B,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,EAAE,CAAC,EAC7B,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AAE5B,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;gBACxB,IACE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC;AACvC,oBAAA,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC;oBAC/D,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EACzC;AACA,oBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBACjD;AAEA,gBAAA,IAAI,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE;AACrD,oBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBACzD;gBAEA,IACE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;AACnC,oBAAA,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;AAC1C,oBAAA,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,aAAa,CAAC,EACjD;oBACA,IAAI,CAAC,OAAO,CAAC,QAAQ,CACnB,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,EACpD,EAAE,SAAS,EAAE,KAAK,EAAE,CACrB;gBACH;YACF;AACA,YAAA,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;AACnC,QAAA,CAAC,CAAC;IACN;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACzB,QAAA,IAAI,CAAC,oBAAoB,EAAE,WAAW,EAAE;AACxC,QAAA,IAAI,CAAC,0BAA0B,EAAE,WAAW,EAAE;AAC9C,QAAA,IAAI,CAAC,yBAAyB,EAAE,WAAW,EAAE;IAC/C;AAEU,IAAA,UAAU,CAAC,WAAoB,EAAA;QACvC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,EAAE;YACtE;QACF;QAEA,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC;AAE7D,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AAC1C,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC;QAC7F,IAAI,QAAQ,GAAG,KAAK;QAEpB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE;YACtE,QAAQ,GAAG,IAAI;QACjB;AACA,QAAA,MAAM,OAAO,GAAc;AACzB,YAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YACtB,KAAK;AACL,YAAA,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;AAC5B,YAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;AACxB,YAAA,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;AAClC,YAAA,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;SAC7B;QACD,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;QAC/C;AAEA,QAAA,IAAI,CAAC;AACF,aAAA,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,oBAAoB;AAC9C,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,IAAI,KAAI;YACX,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC;AACjE,QAAA,CAAC,CAAC,EACF,GAAG,CAAC,MAAK;YACP,IACE,IAAI,CAAC,aAAa,EAAE;AACpB,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBACrB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EACxC;gBACA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YACxC;YACA,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YACzD;AACA,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACzB,CAAC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;aAE5B,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW;AACd,gBAAA,IAAI,CAAC;AACF,qBAAA,WAAW;sBACV,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,IAAI;AAC7B,qBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACvB,QAAA,CAAC,CAAC;IACN;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,yBAAyB,EAAE,WAAW,EAAE;AAC7C,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;aACnC,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,CAAC,KAAK,KAAI;AAClB,YAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC;gBAChE,MAAM,kBAAkB,GAAG,EAAE;AAC7B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,oBAAA,MAAM,IAAI,GAAG,OAAO,EAAE,aAAa;oBACnC,IAAI,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,uBAAuB,EAAE;AACjE,wBAAA,kBAAkB,CAAC,IAAI,CACrB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CACX,KAAK,CAAC,GAAG,CAAC,EACV,SAAS,CAAC,MAAK;4BACb,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,sBAAsB,CAC5D,gGAAgG,CACjG;AACD,4BAAA,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE;gCACpB,WAAW,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AAC5C,oCAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AACzB,gCAAA,CAAC,CAAC;4BACJ;AACA,4BAAA,OAAO,EAAE,CAAC,IAAI,CAAC;wBACjB,CAAC,CAAC,CACH,CACF;oBACH;gBACF;AACA,gBAAA,OAAO,kBAAkB,CAAC,MAAM,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;YACzE;AACA,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;QACjB,CAAC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AAE5B,aAAA,SAAS,EAAE;IAChB;AAEQ,IAAA,mBAAmB,CAAC,WAAoB,EAAA;AAC9C,QAAA,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,EAAE,EAAE;AACtC,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1F;QAEA;IACF;AAEQ,IAAA,0BAA0B,CAChC,KAAU,EACV,eAAqC,EACrC,OAAe,EAAA;QAEf,IAAI,KAAK,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1D,YAAA,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE;QACnE;QACA;IACF;AAEQ,IAAA,cAAc,CACpB,IAAS,EACT,OAAe,EACf,UAAkB,EAClB,eAAqC,EAAA;AAErC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;AACzC,YAAA,GAAG,IAAI;AACP,YAAA,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACvB,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC;AAC/C,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QACxC;QAEA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC;IACvE;AAEQ,IAAA,oBAAoB,CAC1B,IAAS,EACT,OAAe,EACf,UAAkB,EAClB,eAAqC,EAAA;QAErC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AACpF,QAAA,MAAM,cAAc,GAClB,IAAI,CAAC;AACH,cAAE,MAAM,CAAC,CAAC,IAAS,KAAK,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3D,aAAA,GAAG,CAAC,CAAC,IAAS,MAAM;AACnB,YAAA,GAAG,IAAI;AACP,YAAA,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACvB,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC;SAC/C,CAAC,CAAC,IAAI,EAAE;AAEb,QAAA,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9E,YAAA,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5E;AAEA,QAAA,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAC9C,CAAC,QAAa,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAC/E;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;IAEQ,iBAAiB,CAAC,IAAS,EAAE,KAAa,EAAA;AAChD,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC;QAChD;QACA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC;IAC5C;IAEQ,qBAAqB,CAAC,IAAS,EAAE,KAAa,EAAA;QACpD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACnC,QAAA,IAAI,UAAU,GAAG,EAAE,GAAG,IAAI,EAAE;AAE5B,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AAClC,YAAA,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC;QACpC;AAEA,QAAA,OAAO,UAAU;IACnB;AAEU,IAAA,QAAQ,CAAC,KAAoB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC;IACF;AAEU,IAAA,aAAa,CAAC,IAA0B,EAAA;AAChD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,EAAE,KAAK,aAAa,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM;AAC9F,QAAA,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C;AA/WW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,0CAyC1B,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAzCP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EA5BzB;YACT,cAAc;AACd,YAAA;AACE,gBAAA,OAAO,EAAE,kBAAkB;gBAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,yBAAyB,CAAC,CAAC;AACnD,gBAAA,UAAU,EAAE,CAAC,SAAoC,MAAM;oBACrD,SAAS,EAAE,SAAS,CAAC,SAAS;oBAC9B,eAAe,EAAE,SAAS,CAAC,eAAe;oBAC1C,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAqB,KAAK,KAAK,CAAC;iBAC9D,CAAC;AACH,aAAA;SACF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9DH,orGAoFA,+4UDnBI,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,QAAQ,6EACR,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,OAAO,8PAEP,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,+EAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,mEAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,kBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEnB,aAAa,uJACb,4BAA4B,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjCrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,eAAA,EAGnB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;wBACT,cAAc;AACd,wBAAA;AACE,4BAAA,OAAO,EAAE,kBAAkB;4BAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,MAAK,yBAA0B,CAAC,CAAC;AACnD,4BAAA,UAAU,EAAE,CAAC,SAAoC,MAAM;gCACrD,SAAS,EAAE,SAAS,CAAC,SAAS;gCAC9B,eAAe,EAAE,SAAS,CAAC,eAAe;gCAC1C,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAqB,KAAK,KAAK,CAAC;6BAC9D,CAAC;AACH,yBAAA;AACF,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,OAAA,EACP;wBACP,gBAAgB;wBAChB,IAAI;wBACJ,QAAQ;wBACR,YAAY;wBACZ,eAAe;wBACf,OAAO;wBACP,OAAO;wBACP,oBAAoB;wBACpB,mBAAmB;wBACnB,YAAY;wBACZ,aAAa;wBACb,4BAA4B;AAC7B,qBAAA,EAAA,QAAA,EAAA,orGAAA,EAAA,MAAA,EAAA,CAAA,u1UAAA,CAAA,EAAA;;0BA2CE,MAAM;2BAAC,QAAQ;;;AEpCd,MAAO,oBACX,SAAQ,eAAqE,CAAA;AAxC/E,IAAA,WAAA,GAAA;;AA2CW,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,mBAAmB,CAAC;AACxC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAuC,CAAC,IAAI,KACpE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CACxB;AACQ,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAC9B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CACxB;QACQ,IAAA,CAAA,OAAO,GAAG,KAAK,CACtB,CAAC,IAAwB,EAAE,KAAa,KAAI;AAC1C,YAAA,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AACzC,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE;AAC3B,iBAAA,WAAW;iBACX,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC1C,QAAA,CAAC,CACF;AACQ,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAC/B,CAAC,KAAgC,KAAa,KAAK,EAAE,IAAI,IAAI,GAAG,CACjE;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAU,IAAI,CAAC;AAE1B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAsB;AAExC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAqB,SAAS,CAAC;AA6MhF,IAAA;IA3MiB,aAAa,GAAA;QAC3B,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI,CAAC,kBAAkB,EAAE;QAC3B;IACF;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IACzB;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CAAC,YAAY,CAAC,oCAAoC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AACpF,aAAA,SAAS,CAAC,CAAC,WAA+B,KAAI;AAC7C,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AAC9B,QAAA,CAAC,CAAC;IACN;IAEQ,kBAAkB,GAAA;QACxB,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,OAAO,CAAC;aACV,IAAI,CACH,MAAM,CAAC,OAAO,CAAC,EACf,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAC9B,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AAE5B,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACnB,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AACtC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;YAE7D,IAAI,WAAW,EAAE;AACf,gBAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC1D;AACF,QAAA,CAAC,CAAC;IACN;IAEQ,kBAAkB,GAAA;QACxB,IAAI,CAAC,OAAO,CAAC;AACV,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC,EACjC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;aAE5B,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,EAAE;AACnB,QAAA,CAAC,CAAC;IACN;IAEQ,kBAAkB,GAAA;AACxB,QAAA,aAAa,CAAC;YACZ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAC5B,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC,EACjC,oBAAoB,EAAE,EACtB,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAC3D;AACD,YAAA,IAAI,CAAC,KAAK;SACX;AACE,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;aAChC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IACvC;AAEQ,IAAA,eAAe,CAAC,KAAc,EAAA;AACpC,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK;AAC5C,eAAI,KAAkC,CAAC,EAAE,IAAI,IAAI;cAC9C,KAAgC;IACvC;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC1D,IAAI,CAAC,UAAU,EAAE;AACnB,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,UAAU,CAAC,WAAoB,EAAA;QACvC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU;AAE/C,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,EAAE;YACtE;QACF;QAEA,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC;AAE7D,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AAC1C,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC;AAE7F,QAAA,IAAI,CAAC;AACF,aAAA,UAAU,CACT;AACE,YAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YACtB,KAAK;AACL,YAAA,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;AAC5B,YAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;AACxB,YAAA,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;AAClC,YAAA,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;YAC5B,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;SACrC,EACD,IAAI,EACJ,oBAAoB;AAErB,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,IAAI,KAAI;YACX,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC;AACjE,QAAA,CAAC,CAAC,EACF,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACzB,CAAC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AAE5B,aAAA,SAAS,EAAE;IAChB;AAEQ,IAAA,mBAAmB,CAAC,WAAoB,EAAA;AAC9C,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,WAAW,IAAI,WAAW,KAAK,EAAE,CAAC,EAAE;YACtD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;YAChD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B;AAEA,QAAA,OAAO,SAAS;IAClB;AAEQ,IAAA,0BAA0B,CAChC,KAAU,EACV,eAAqC,EACrC,OAAe,EAAA;AAEf,QAAA,IAAI,KAAK,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,EAAE;AAChF,YAAA,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE;QACnE;AAEA,QAAA,OAAO,SAAS;IAClB;AAEQ,IAAA,cAAc,CACpB,IAAS,EACT,OAAe,EACf,UAAkB,EAClB,eAAqC,EAAA;AAErC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;AACzC,YAAA,GAAG,IAAI;AACP,YAAA,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACvB,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC;AAC/C,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC;IACvE;IAEQ,iBAAiB,CAAC,IAAS,EAAE,KAAa,EAAA;AAChD,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC;QAChD;QAEA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC;IAC5C;IAEQ,qBAAqB,CAAC,IAAS,EAAE,KAAa,EAAA;QACpD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACnC,QAAA,IAAI,UAAU,GAAG,EAAE,GAAG,IAAI,EAAE;AAE5B,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AAClC,YAAA,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC;QACpC;AAEA,QAAA,OAAO,UAAU;IACnB;AAEQ,IAAA,oBAAoB,CAC1B,IAAS,EACT,OAAe,EACf,UAAkB,EAClB,eAAqC,EAAA;QAErC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;AAC7C,QAAA,MAAM,cAAc,GAClB,IAAI,CAAC;AACH,cAAE,MAAM,CAAC,CAAC,IAAS,KAAK,eAAe,KAAK,IAAI,CAAC,OAAO,CAAC;AACxD,aAAA,GAAG,CAAC,CAAC,IAAS,MAAM;AACnB,YAAA,GAAG,IAAI;AACP,YAAA,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACvB,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC;SAC/C,CAAC,CAAC,IAAI,EAAE;AAEb,QAAA,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9E,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc;AAC7B,YAAA,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC;QAC9B;AAEA,QAAA,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAC9C,CAAC,QAAa,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAU,KAAK,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAC9E;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;+GAxOW,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAlCpB;YACT,cAAc;AACd,YAAA;AACE,gBAAA,OAAO,EAAE,kBAAkB;gBAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,oBAAoB,CAAC,CAAC;AAC9C,gBAAA,UAAU,EAAE,CAAC,SAA+B,MAAM;oBAChD,SAAS,EAAE,SAAS,CAAC,SAAS;oBAC9B,eAAe,EAAE,SAAS,CAAC,eAAe;AAC1C,oBAAA,mBAAmB,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;iBACzC,CAAC;AACH,aAAA;SACF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7DH,s0HA0GA,EAAA,MAAA,EAAA,CAAA,4iSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,mEAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,kBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzCI,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,4BAA4B,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC5B,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,+EAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAEnB,oBAAoB,EAAA,IAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,QAAQ,6EACR,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,WAAW,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,yBAAyB,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,mKAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGJ,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAID,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAvChC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,eAAA,EAGb,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;wBACT,cAAc;AACd,wBAAA;AACE,4BAAA,OAAO,EAAE,kBAAkB;4BAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,MAAK,oBAAqB,CAAC,CAAC;AAC9C,4BAAA,UAAU,EAAE,CAAC,SAA+B,MAAM;gCAChD,SAAS,EAAE,SAAS,CAAC,SAAS;gCAC9B,eAAe,EAAE,SAAS,CAAC,eAAe;AAC1C,gCAAA,mBAAmB,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;6BACzC,CAAC;AACH,yBAAA;AACF,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,aAAa;wBACb,4BAA4B;wBAC5B,mBAAmB;wBACnB,kBAAkB;wBAClB,oBAAoB;wBACpB,gBAAgB;wBAChB,QAAQ;wBACR,YAAY;wBACZ,eAAe;wBACf,WAAW;wBACX,yBAAyB;wBACzB,IAAI;wBACJ,SAAS;wBACT,WAAW;wBACX,SAAS;wBACT,UAAU;wBACV,OAAO;AACR,qBAAA,EAAA,QAAA,EAAA,s0HAAA,EAAA,MAAA,EAAA,CAAA,4iSAAA,CAAA,EAAA;8BA4BS,QAAQ,EAAA,CAAA;sBAAjB;;;AEpGG,MAAO,sBAAuB,SAAQ,SAAyB,CAAA;AANrE,IAAA,WAAA,GAAA;;QAOW,IAAA,CAAA,SAAS,GAAwB,EAAE;AAC7C,IAAA;+GAFY,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,uHCVnC,6TAQA,EAAA,MAAA,EAAA,CAAA,ulGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDEa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACE,sBAAsB,EAAA,eAAA,EAGf,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6TAAA,EAAA,MAAA,EAAA,CAAA,ulGAAA,CAAA,EAAA;8BAGtC,SAAS,EAAA,CAAA;sBAAjB;;;IEXS;AAAZ,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,cAAA,CAAA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,cAAA,CAAA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACN,CAAC,EAPW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;;ACGnB,MAAM,aAAa,GAAwB;AAChD,IAAA;QACE,EAAE,EAAE,cAAc,CAAC,KAAK;AACxB,QAAA,KAAK,EAAE,KAAK;AACb,KAAA;AACD,IAAA;QACE,EAAE,EAAE,cAAc,CAAC,KAAK;AACxB,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;AACD,IAAA;QACE,EAAE,EAAE,cAAc,CAAC,MAAM;AACzB,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;AACD,IAAA;QACE,EAAE,EAAE,cAAc,CAAC,KAAK;AACxB,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;AACD,IAAA;QACE,EAAE,EAAE,cAAc,CAAC,MAAM;AACzB,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;AACD,IAAA;QACE,EAAE,EAAE,cAAc,CAAC,IAAI;AACvB,QAAA,KAAK,EAAE,KAAK;AACb,KAAA;CACF;;ACRK,MAAO,mCAAoC,SAAQ,2BAA2B,CAAA;AALpF,IAAA,WAAA,GAAA;;AAMY,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,WAAW,CAAwB,IAAI,CAAC;QAC9D,IAAA,CAAA,SAAS,GAAG,aAAa;AA+GpC,IAAA;IA7GiB,MAAM,GAAA;QACpB,KAAK,CAAC,MAAM,EAAE;QACd,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEgB,aAAa,GAAA;QAC3B,KAAK,CAAC,aAAa,EAAE;QACrB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC;IACrD;IAEQ,oBAAoB,GAAA;QAC1B,IAAI,CAAC,eAAe,CAAC;AAClB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AAChC,aAAA,SAAS,CAAC,CAAC,aAAa,KAAI;AAC3B,YAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE;AAC9B,YAAA,MAAM,KAAK,GAAW,GAAG,CAAC,QAAQ,EAAE;YAEpC,IAAI,YAAY,GAA8B,IAAI;AAElD,YAAA,IAAI,aAAa,KAAK,cAAc,CAAC,KAAK,EAAE;gBAC1C,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;YAClD;AAAO,iBAAA,IAAI,aAAa,KAAK,cAAc,CAAC,KAAK,EAAE;AACjD,gBAAA,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;YAClD;AAAO,iBAAA,IAAI,aAAa,KAAK,cAAc,CAAC,MAAM,EAAE;AAClD,gBAAA,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;YACnD;AAAO,iBAAA,IAAI,aAAa,KAAK,cAAc,CAAC,KAAK,EAAE;AACjD,gBAAA,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;YAClD;AAAO,iBAAA,IAAI,aAAa,KAAK,cAAc,CAAC,MAAM,EAAE;AAClD,gBAAA,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;YACnD;AAAO,iBAAA,IAAI,aAAa,KAAK,cAAc,CAAC,IAAI,EAAE;AAChD,gBAAA,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAC1C;AAEA,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;AACrC,QAAA,CAAC,CAAC;IACN;IAEQ,eAAe,CAAC,IAAY,EAAE,KAAa,EAAA;QACjD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;QAChC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC9B,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAE5C,QAAA,OAAO,IAAI,kBAAkB,CAC3B,IAAI,aAAa,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,EACvF,IAAI,cAAc,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAC3F;IACH;AAEQ,IAAA,sBAAsB,CAAC,IAAY,EAAA;AACzC,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;QACrC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC9B,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAE5C,QAAA,OAAO,IAAI,kBAAkB,CAC3B,IAAI,aAAa,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,EACvF,IAAI,cAAc,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAC3F;IACH;AAEQ,IAAA,uBAAuB,CAAC,IAAY,EAAA;AAC1C,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;QACrC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC9B,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAE5C,QAAA,OAAO,IAAI,kBAAkB,CAC3B,IAAI,aAAa,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,EACvF,IAAI,cAAc,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAC3F;IACH;AAEQ,IAAA,sBAAsB,CAAC,IAAY,EAAA;AACzC,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;QACrC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC9B,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAE5C,QAAA,OAAO,IAAI,kBAAkB,CAC3B,IAAI,aAAa,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,EACvF,IAAI,cAAc,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAC3F;IACH;AAEQ,IAAA,uBAAuB,CAAC,IAAY,EAAA;AAC1C,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;QACrC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC9B,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAE5C,QAAA,OAAO,IAAI,kBAAkB,CAC3B,IAAI,aAAa,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,EACvF,IAAI,cAAc,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAC3F;IACH;AAEQ,IAAA,cAAc,CAAC,IAAY,EAAA;AACjC,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;QACrC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC9B,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAE5C,QAAA,OAAO,IAAI,kBAAkB,CAC3B,IAAI,aAAa,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,EACvF,IAAI,cAAc,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAC3F;IACH;+GAhHW,mCAAmC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,mGCpBhD,qtBAmBA,EAAA,MAAA,EAAA,CAAA,wpHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sCAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,KAAA,EAAA,KAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDCa,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAL/C,SAAS;+BACE,sCAAsC,EAAA,QAAA,EAAA,qtBAAA,EAAA,MAAA,EAAA,CAAA,wpHAAA,CAAA,EAAA;;;AEe5C,MAAO,kBAAmB,SAAQ,aAAa,CAAA;AArBrD,IAAA,WAAA,GAAA;;AAsBS,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAwB,IAAI,CAAC;;AAEhD,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,EAAE,CAAC;AACxC,IAAA;+GAJY,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/B/B,8qEA2DA,EAAA,MAAA,EAAA,CAAA,++RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1CI,gBAAgB,oJAChB,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,YAAY,qFACZ,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,kFAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,mEAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,kBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEf,yBAAyB,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACzB,mBAAmB,mvBAEnB,4BAA4B,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBArB9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAGhB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,gBAAgB;wBAChB,IAAI;wBACJ,QAAQ;wBACR,YAAY;wBACZ,eAAe;wBACf,YAAY;wBACZ,yBAAyB;wBACzB,mBAAmB;wBACnB,OAAO;wBACP,4BAA4B;wBAC5B,aAAa;wBACb,gBAAgB;AACjB,qBAAA,EAAA,QAAA,EAAA,8qEAAA,EAAA,MAAA,EAAA,CAAA,++RAAA,CAAA,EAAA;;;AEFG,MAAO,sBAAuB,SAAQ,aAAa,CAAA;AAlBzD,IAAA,WAAA,GAAA;;;AAoBS,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;;AAEd,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;AACtB,IAAA;+GALY,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BnC,6hEA6DA,EAAA,MAAA,EAAA,CAAA,+9RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7CI,gBAAgB,mdAEhB,yBAAyB,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACzB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEnB,4BAA4B,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,WAAW,qGACX,gBAAgB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAlBlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,gBAAgB;wBAChB,YAAY;wBACZ,yBAAyB;wBACzB,mBAAmB;wBACnB,OAAO;wBACP,4BAA4B;wBAC5B,aAAa;wBACb,WAAW;wBACX,gBAAgB;AACjB,qBAAA,EAAA,QAAA,EAAA,6hEAAA,EAAA,MAAA,EAAA,CAAA,+9RAAA,CAAA,EAAA;;;AEfG,MAAO,oBAAqB,SAAQ,SAA2B,CAAA;AANrE,IAAA,WAAA,GAAA;;QAOkB,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,CAAC,KAAc,MAAc,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;AACrF,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAsB,GAAG,CAAC;AAC9C,IAAA;+GAHY,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,2WCVjC,+3CAwCA,EAAA,MAAA,EAAA,CAAA,6tTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FD9Ba,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACE,oBAAoB,EAAA,eAAA,EAGb,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+3CAAA,EAAA,MAAA,EAAA,CAAA,6tTAAA,CAAA,EAAA;;;MELpC,iBAAiB,GAAc,EAAE,IAAI,EAAE,SAAS;AAEtD,MAAM,kCAAkC,GAAG,GAAG;AAE9C,MAAM,QAAQ,GAAwC,CAAC,QAAQ,KACpE,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,iBAAiB;AAExE,SAAS,kBAAkB,CAAI,IAAkB,EAAE,OAA4B,EAAA;IAC7E,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;AACjD,IAAA,IAAI,QAAQ,CAAC,eAAe,CAAC,EAAE;AAC7B,QAAA,OAAO,eAAe;IACxB;AAEA,IAAA,OAAO,EAAE;AACX;AAEM,SAAU,gBAAgB,CAC9B,IAAkB,EAClB,OAA4B,EAAA;IAE5B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC;AAClD,IAAA,MAAM,iBAAiB,GAAmB,CAAC,IAAI,CAAC;AAEhD,IAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;QAC5B,MAAM,SAAS,GAAG,gBAAgB,CAAI,KAAK,EAAE,OAAO,CAAC;AACrD,QAAA,iBAAiB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IACtC;AAEA,IAAA,OAAO,iBAAiB;AAC1B;SAEgB,wBAAwB,CACtC,IAAgC,EAChC,IAAgC,EAChC,OAA4B,EAAA;AAE5B,IAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;AAClB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;AAClB,QAAA,OAAO,KAAK;IACd;IAEA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AAC/B,QAAA,OAAO,KAAK;IACd;IAEA,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACrC,YAAA,OAAO,KAAK;QACd;IACF;AAEA,IAAA,OAAO,IAAI;AACb;;MCvDa,WAAW,GAAG,IAAI,cAAc,CAAyB,iBAAiB;;MC0B1E,gBAAgB,CAAA;AA4B3B,IAAA,WAAA,GAAA;AA3BiB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAe,gBAAgB,CAAC;QACjD,IAAA,CAAA,OAAO,GAAG,MAAM,CAAe,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAClE,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAA8B,WAAW,CAAC;AAC1D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAgB;AAC1C,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,eAAe,CAAsB,SAAS,CAAC;AAC9E,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAsB,IAAI,CAAC;AAClE,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,OAAO,EAAkB;QACtC,IAAA,CAAA,kBAAkB,GAAG,IAAI,GAAG,CAA+B;AAC1E,YAAA,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACpB,SAAA,CAAC;AACe,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAiB,EAAE,CAAC;AACjD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAkB;AAEjD,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE;AACtE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACxD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AAE9C,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,IAAI,GAAG,EAAyB,CAAC;AAC3D,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,IAAI,GAAG,EAAgC,CAAC;AAE3E,QAAA,IAAA,CAAA,gBAAgB,GAAmB,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;QACrE,IAAA,CAAA,sBAAsB,GAAG,KAAK;AAEtB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAGlD,QAAA,IAAI,CAAC;aACF,IAAI,CACH,QAAQ,CAAC,CAAC,IAAI,KACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAC/C,GAAG,CAAC,CAAC,eAAe,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC,CACtD,CACF,EACD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,KAAI;AAC5C,YAAA,IAAI,MAAM,EAAE,OAAO,EAAE;AACnB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe,IAAI,EAAE;YAC/C;AACF,QAAA,CAAC,CAAC,EACF,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,KAChB,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CACzE,EACD,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAChC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAC1B,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAErC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,QAAA,CAAC,CAAC;QAEJ,aAAa,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,uBAAuB,CAAC;AAC3D,aAAA,IAAI,CAAC,YAAY,CAAC,kCAAkC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aAC3F,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAI;AAC9B,YAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC;AAC1C,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,cAAc,CAAC,WAAyB,EAAA;AAC9C,QAAA,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CACzB,MAAM,CAAC,CAAC,IAAI,KAAI;AACd,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;AAC1B,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAC1B,SAAS,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,EACvC,UAAU,CAAC,MAAM,KAAK,CAAC,CACxB;YACH;AAEA,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC5B;AAEA,YAAA,OAAO,KAAK;QACd,CAAC,CAAC,CACH;IACH;AAEO,IAAA,mBAAmB,CAAC,IAAkB,EAAE,MAAA,GAAkB,IAAI,EAAA;AACnE,QAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAChC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;AAC7D,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;QACpC;IACF;AAEQ,IAAA,KAAK,CAAC,IAAkB,EAAE,WAAW,GAAG,IAAI,EAAA;AAClD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CACzC,GAAG,CAAC,CAAC,QAAQ,KAAI;YACf,IAAI,WAAW,EAAE;AACf,gBAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC5B,oBAAA,KAAK,CAAC,MAAM,GAAG,IAAI;gBACrB;AACA,gBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;gBACxB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC3C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtC;YAEA,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC/E,YAAA,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;gBAC5B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YACvC;QACF,CAAC,CAAC,CACH;IACH;AAEO,IAAA,YAAY,CAAC,IAAkB,EAAA;AACpC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,IAAI,CACtD,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC,EACrD,IAAI,CAAC,CAAC,CAAC,CACR;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAEvC,IAAI,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE;AAC7C,YAAA,OAAO,EAAE,CAAC,QAAQ,CAAC;QACrB;AAEA,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;AAE1B,QAAA,OAAO,MAAM;IACf;AAEO,IAAA,WAAW,CAAC,IAAkB,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC7D;AAEO,IAAA,WAAW,CAAC,IAAkB,EAAA;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;IACvC;IAEO,gBAAgB,GAAA;QACrB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;IAEO,aAAa,CAAC,UAAwB,EAAE,sBAAgC,EAAA;AAC7E,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AAClC,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,sBAAsB,CAAC;IAC5D;AAEO,IAAA,kBAAkB,CAAC,IAAyB,EAAA;AACjD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;IACnC;IAEO,MAAM,CAAC,KAAmB,EAAE,KAAmB,EAAA;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;IAC1C;+GAjJW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAhB,gBAAgB,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;MCvBY,qBAAqB,CAAA;IACzB,YAAY,CAAC,EAAE,QAAQ,EAAgB,EAAA;AAC5C,QAAA,OAAO,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC3B;IAEO,WAAW,CAAC,EAAE,YAAY,EAAgB,EAAA;QAC/C,OAAO,CAAC,CAAC,YAAY;IACvB;IAEO,MAAM,CAAC,MAAoB,EAAE,MAAoB,EAAA;QACtD,OAAO,MAAM,KAAK,MAAM;IAC1B;+GAXW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAArB,qBAAqB,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;SCGe,mBAAmB,CAAgC,EACjE,IAAI,EACJ,QAAQ,GACC,EAAA;IACT,OAAO;AACL,QAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;QAClB,YAAY,EAAE,CAAC,CAAC,QAAQ;QACxB,QAAQ,EAAE,QAAQ,IAAI,EAAE;AACxB,QAAA,IAAI,EAAE,IAAI;KACX;AACH;;ACSA;MASa,kBAAkB,CAAA;AAkC7B,IAAA,WAAA,GAAA;AAjCA;;;AAGuC;AAChC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;;AAEpB,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAiB,EAAE,CAAC;;AAExC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAA0B,IAAI,CAAC;;QAG1C,IAAA,CAAA,mBAAmB,GAAG,MAAM,EAAkB;AAE7C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,EAAC,gBAAmB,EAAC;AAC1C,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;QAEtB,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC;AAC5E,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB;AACrD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB;QAEzD,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE;AAC/E,YAAA,YAAY,EAAE,IAAI;AACnB,SAAA,CAAC;QACe,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE;AACzE,YAAA,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC;AAC/E,SAAA,CAAC;AAEiB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;QAErC,IAAA,CAAA,WAAW,GAAG,iBAAiB;AAC/B,QAAA,IAAA,CAAA,eAAe,GAA2B,CAAC,IAAI,KAChE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC;AAoH3B,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,WAAyB,EAAE,KAAc,KAAI;AAClE,YAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC;YAChE,MAAM,YAAY,GAAG,gBAAgB,CAAI,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC;AAExE,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,gBAAA,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;oBAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;gBAC3C;YACF;iBAAO;AACL,gBAAA,IAAI,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE;AAEhC,gBAAA,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;oBAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC1C;YACF;YAEA,IAAI,CAAC,mBAAmB,EAAE;AAC5B,QAAA,CAAC;QAlIC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE;YAExC,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;oBACtB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,GAAG,EAAgC,CAAC;gBACrE;qBAAO;AACL,oBAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;gBACrC;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEU,QAAQ,CAChB,WAAyB,EACzB,KAAwC,EAAA;QAExC,OAAO,IAAI,CAAC,KAAK;cACb,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK;cACxC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC;IAChD;IAEQ,gBAAgB,CACtB,WAAyB,EACzB,KAAwC,EAAA;QAExC,IAAI,MAAM,GAAmB,IAAI;QACjC,MAAM,YAAY,GAAG,gBAAgB,CAAI,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC;AACxE,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC;QAEjC,IAAI,SAAS,EAAE;YACb,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;QACjC;AAEA,QAAA,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;YAC/B,IAAI,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAChC,gBAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC;gBAErF,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI;YAC5E;QACF;AAEA,QAAA,OAAO,MAAM;IACf;IAEQ,iBAAiB,CACvB,WAAyB,EACzB,KAAwC,EAAA;AAExC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACxC,MAAM,YAAY,GAAG,gBAAgB,CAAI,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC;QACxE,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC9B,YAAA,OAAO,KAAK;QACd;QAEA,OAAO,QAAQ,KAAK,WAAW;AAC7B,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC;AACzC,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ;AACvC,cAAE;cACA,IAAI;IACV;IAEQ,aAAa,CAAC,MAAoB,EAAE,KAAmB,EAAA;AAC7D,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,QAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5D,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/D,YAAA,OAAO,KAAK;QACd;QAEA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IACjD;IAEQ,YAAY,CAAC,KAAmB,EAAE,MAAoB,EAAA;AAC5D,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACpD,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE;AAClC,YAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAClB,gBAAA,OAAO,IAAI;YACb;YAEA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;AAClC,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,OAAO,KAAK;IACd;AAEU,IAAA,QAAQ,CAAC,WAAyB,EAAA;AAC1C,QAAA,IAAI,CAAC;aACF,YAAY,CAAC,WAAW;AACxB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC;AACjC,aAAA,SAAS,CAAC,CAAC,QAAQ,KAAI;YACtB,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC,EAAE,MAAM;AAEpC,YAAA,IAAI,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAClD,gBAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;oBAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC;gBAC3C;YACF;AACF,QAAA,CAAC,CAAC;IACN;AAqBQ,IAAA,mBAAmB,CAAC,OAAgC,EAAA;QAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE;AAC1D,QAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgC;AACrD,QAAA,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,KAAK,CAAC;AACjD,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;AAEjC,QAAA,IAAI,OAAO,EAAE,SAAS,KAAK,KAAK,EAAE;AAChC,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAC5E;IACF;AAEQ,IAAA,uBAAuB,CAAC,KAAqB,EAAA;QACnD,MAAM,kBAAkB,GAAmB,EAAE;AAE7C,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAE7D,IAAI,OAAO,EAAE;AACX,gBAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B;AAAO,iBAAA,IAAI,OAAO,KAAK,IAAI,EAAE;gBAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpD,MAAM,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;AACpE,gBAAA,kBAAkB,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC;YACnD;QACF;AAEA,QAAA,OAAO,kBAAkB;IAC3B;IAEQ,sBAAsB,CAC5B,KAAqB,EACrB,KAAwC,EAAA;AAExC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAE7D,YAAA,IAAI,OAAO,KAAK,KAAK,EAAE;AACrB,gBAAA,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;gBACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC;AACpD,gBAAA,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC;YAC9C;QACF;IACF;AAEQ,IAAA,uBAAuB,CAAC,QAAwB,EAAA;QACtD,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE;QAC1D,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AACrF,QAAA,MAAM,WAAW,GAAG,CAAC,KAAiC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QAC7F,MAAM,WAAW,GAAmB,EAAE;QAEtC,IAAI,CAAC,aAAa;AACf,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,IAAI,KACV,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI;cAC9B,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;cACjF,KAAK,CACV,EACD,GAAG,CAAC,CAAC,IAAI,KAAI;YACX,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAErF,IAAI,SAAS,EAAE;AACb,gBAAA,wBAAwB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC;AAC7C,gBAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB;AACF,QAAA,CAAC,CAAC,EACF,MAAM,CAAC,MAAM,WAAW,CAAC,wBAAwB,CAAC,CAAC,EACnD,IAAI,CAAC,CAAC,CAAC;;QAEP,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,WAAW,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAC7E,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC;AAE7B,aAAA,SAAS,CAAC;YACT,QAAQ,EAAE,MAAK;AACb,gBAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AAC9B,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC5B;YACF,CAAC;AACF,SAAA,CAAC;IACN;+GArPW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnC/B,8jDAmDA,EAAA,MAAA,EAAA,CAAA,yEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrBqB,QAAQ,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,iIAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAKlF,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAA,eAAA,EAG7E,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8jDAAA,EAAA,MAAA,EAAA,CAAA,yEAAA,CAAA,EAAA;;;AEhBjD;AAwBM,MAAO,6BAAiC,SAAQ,eAGrD,CAAA;AAsBC,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC5B,KAAK,CAAC,QAAQ,CAAC;;AArBV,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAgB;AAClD;;;;;AAKK;QACE,IAAA,CAAA,sBAAsB,GAAG,KAAK,EAAW;AACzC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAiC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9E,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC;AAEb,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAC/C,CAAC,MAAmB,KAAa,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAC/E;AACe,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,mBAAmB,CAAC;AAEvC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAErC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAiB,EAAE,CAAC;QAI1D,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACnF,QAAA,CAAC,CAAC;IACJ;IAEmB,aAAa,GAAA;QAC9B,IAAI,CAAC,+BAA+B,EAAE;IACxC;IAEQ,+BAA+B,GAAA;QACrC,IAAI,CAAC,OAAO,CAAC;aACV,IAAI,CAAC,yBAAyB,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7D,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACnB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;AACpC,QAAA,CAAC,CAAC;IACN;AAEU,IAAA,gBAAgB,CAAC,IAAoB,EAAA;AAC7C,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC7B;+GA9CW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAN7B;YACT,gBAAgB;AAChB,YAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE;YAC1D,cAAc;AACf,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvCH,8rFA8EA,EAAA,MAAA,EAAA,CAAA,42UAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDxDI,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,OAAO,8PAEP,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,4BAA4B,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,kBAAkB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,mEAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,kBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEb,UAAU,iFACV,WAAW,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAUF,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAvBzC,SAAS;+BACE,+BAA+B,EAAA,UAAA,EAC7B,IAAI,EAAA,OAAA,EACP;wBACP,gBAAgB;wBAChB,OAAO;wBACP,OAAO;wBACP,mBAAmB;wBACnB,4BAA4B;wBAC5B,kBAAkB;wBAClB,aAAa;wBACb,YAAY;wBACZ,UAAU;wBACV,WAAW;qBACZ,EAAA,SAAA,EAGU;wBACT,gBAAgB;AAChB,wBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE;wBAC1D,cAAc;AACf,qBAAA,EAAA,QAAA,EAAA,8rFAAA,EAAA,MAAA,EAAA,CAAA,42UAAA,CAAA,EAAA;;;AEtBH;AAwBM,MAAO,wBAA4B,SAAQ,eAGhD,CAAA;AAoBC,IAAA,WAAA,CAAY,QAAkB,EAAA;QAC5B,KAAK,CAAC,QAAQ,CAAC;;AAnBV,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAgB;AAClD;;;;;AAKK;QACE,IAAA,CAAA,sBAAsB,GAAG,KAAK,EAAW;AAEzC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAiC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAErE,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,CAAC,KAAmB,KAAa,KAAK,EAAE,IAAI,IAAI,GAAG,CAAC;AAC7E,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,mBAAmB,CAAC;AAEvC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAErC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAiB,EAAE,CAAC;QAI1D,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACnF,QAAA,CAAC,CAAC;IACJ;IAEmB,aAAa,GAAA;QAC9B,IAAI,CAAC,+BAA+B,EAAE;IACxC;IAEQ,+BAA+B,GAAA;QACrC,IAAI,CAAC,OAAO,CAAC;aACV,IAAI,CAAC,yBAAyB,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7D,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACnB,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YAChC;iBAAO;AACL,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B;AACF,QAAA,CAAC,CAAC;IACN;IAEU,gBAAgB,CAAC,CAAC,IAAI,CAAiB,EAAA;QAC/C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;IACrC;+GAhDW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EANxB;YACT,gBAAgB;AAChB,YAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE;YAC1D,cAAc;AACf,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvCH,o0DAsDA,EAAA,MAAA,EAAA,CAAA,6sTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhCI,kBAAkB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,mEAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,kBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGlB,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACV,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,mKAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,aAAa,uJACb,4BAA4B,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAUnB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAvBpC,SAAS;+BACE,yBAAyB,EAAA,UAAA,EACvB,IAAI,EAAA,OAAA,EACP;wBACP,kBAAkB;wBAClB,YAAY;wBACZ,SAAS;wBACT,UAAU;wBACV,WAAW;wBACX,WAAW;wBACX,mBAAmB;wBACnB,gBAAgB;wBAChB,aAAa;wBACb,4BAA4B;qBAC7B,EAAA,SAAA,EAGU;wBACT,gBAAgB;AAChB,wBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE;wBAC1D,cAAc;AACf,qBAAA,EAAA,QAAA,EAAA,o0DAAA,EAAA,MAAA,EAAA,CAAA,6sTAAA,CAAA,EAAA;;;ME7BU,8BAA8B,CAAA;AAP3C,IAAA,WAAA,GAAA;QAQW,IAAA,CAAA,WAAW,GAAG,MAAM,EAAQ;AACtC,IAAA;+GAFY,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV3C,qJAKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDCY,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIN,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;+BACE,mCAAmC,EAAA,UAAA,EACjC,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,CAAC,EAAA,eAAA,EAED,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qJAAA,EAAA;;;ME+FpC,YAAY,CAAA;+GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBA5DrB,uBAAuB;YACvB,sBAAsB;YACtB,mBAAmB;YACnB,wBAAwB;YACxB,oBAAoB;YACpB,2BAA2B;YAC3B,oBAAoB;YACpB,sBAAsB;YACtB,mCAAmC;YACnC,mCAAmC;AACnC,YAAA,0BAA0B,aAG1B,YAAY;YACZ,kBAAkB;YAClB,iBAAiB;YACjB,2BAA2B;YAC3B,qBAAqB;YACrB,qBAAqB;YACrB,4BAA4B;YAC5B,aAAa;YACb,cAAc;YACd,4BAA4B;YAC5B,OAAO;YACP,SAAS;YACT,UAAU;YACV,kBAAkB;YAClB,2BAA2B;YAC3B,6BAA6B;YAC7B,oBAAoB;YACpB,cAAc;YACd,yBAAyB;YACzB,oBAAoB;YACpB,kBAAkB;YAClB,SAAS;YACT,sBAAsB;YACtB,kBAAkB;YAClB,cAAc;YACd,8BAA8B;AAC9B,YAAA,yBAAyB,aAGzB,oBAAoB;YACpB,yBAAyB;YACzB,uBAAuB;YACvB,sBAAsB;YACtB,mBAAmB;YACnB,wBAAwB;YACxB,oBAAoB;YACpB,kBAAkB;YAClB,2BAA2B;YAC3B,oBAAoB;YACpB,sBAAsB;YACtB,kBAAkB;YAClB,mCAAmC;YACnC,mCAAmC;YACnC,sBAAsB;YACtB,0BAA0B,CAAA,EAAA,CAAA,CAAA;AAGjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YA/CrB,YAAY;YACZ,kBAAkB;YAClB,iBAAiB;YACjB,2BAA2B;YAC3B,qBAAqB;YAIrB,cAAc;YACd,4BAA4B;YAC5B,OAAO;YAIP,2BAA2B;YAG3B,cAAc;YACd,yBAAyB;YACzB,oBAAoB;YACpB,kBAAkB;YAClB,SAAS;YACT,sBAAsB;YACtB,kBAAkB;YAElB,8BAA8B;YAC9B,yBAAyB,CAAA,EAAA,CAAA,CAAA;;4FAqBhB,YAAY,EAAA,UAAA,EAAA,CAAA;kBA9DxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,uBAAuB;wBACvB,sBAAsB;wBACtB,mBAAmB;wBACnB,wBAAwB;wBACxB,oBAAoB;wBACpB,2BAA2B;wBAC3B,oBAAoB;wBACpB,sBAAsB;wBACtB,mCAAmC;wBACnC,mCAAmC;wBACnC,0BAA0B;AAC3B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,iBAAiB;wBACjB,2BAA2B;wBAC3B,qBAAqB;wBACrB,qBAAqB;wBACrB,4BAA4B;wBAC5B,aAAa;wBACb,cAAc;wBACd,4BAA4B;wBAC5B,OAAO;wBACP,SAAS;wBACT,UAAU;wBACV,kBAAkB;wBAClB,2BAA2B;wBAC3B,6BAA6B;wBAC7B,oBAAoB;wBACpB,cAAc;wBACd,yBAAyB;wBACzB,oBAAoB;wBACpB,kBAAkB;wBAClB,SAAS;wBACT,sBAAsB;wBACtB,kBAAkB;wBAClB,cAAc;wBACd,8BAA8B;wBAC9B,yBAAyB;AAC1B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,yBAAyB;wBACzB,uBAAuB;wBACvB,sBAAsB;wBACtB,mBAAmB;wBACnB,wBAAwB;wBACxB,oBAAoB;wBACpB,kBAAkB;wBAClB,2BAA2B;wBAC3B,oBAAoB;wBACpB,sBAAsB;wBACtB,kBAAkB;wBAClB,mCAAmC;wBACnC,mCAAmC;wBACnC,sBAAsB;wBACtB,0BAA0B;AAC3B,qBAAA;AACF,iBAAA;;;ACtFM,MAAM,UAAU,GAAG;AAEnB,MAAM,eAAe,GAAG;AAExB,MAAM,cAAc,GACzB;AAwBK,MAAM,UAAU,GAAG;;MC1Cb,4BAA4B,GAAG,IAAI,cAAc,CAC5D,8BAA8B;;MC4BnB,6BAA6B,CAAA;AAP1C,IAAA,WAAA,GAAA;AAQU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAC7C,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;QAEvB,IAAA,CAAA,UAAU,GAAG,UAAU;AACvB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC/B,QAAA,IAAA,CAAA,YAAY,GAA0B,IAAI,GAAG,CAAC,EAAE,CAAC;QACjD,IAAA,CAAA,cAAc,GAAG,cAAc;QACjC,IAAA,CAAA,UAAU,GAAa,EAAE;QAE1B,IAAA,CAAA,cAAc,GAAG,MAAM,EAAyB;;AAG7C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAa,EAAE,CAAC;;AAGjC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAa,EAAE,CAAC;;AAGtC,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAa,MAAK;AACpD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AACvC,QAAA,CAAC,CAAC;QAEM,IAAA,CAAA,cAAc,GAAG,KAAK;AAsnB/B,IAAA;IApnBC,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,CAAC;AACT,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EACrD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;AAE9B,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AACpF,QAAA,CAAC,CAAC;IACN;AAEA;;;AAGG;AACO,IAAA,cAAc,CAAC,IAAc,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzC;AAEA;;AAEG;AACO,IAAA,WAAW,CAAC,IAAc,EAAA;AAClC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC;AACzD,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;IAChC;AAEA;;AAEG;IACO,SAAS,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5B;AAEA;;;AAGG;AACO,IAAA,IAAI,CAAC,KAA8B,EAAA;QAC3C,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAClD,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa;AACnC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY;;AAGlC,QAAA,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,cAAc,EAAE;YACnB;QACF;;AAGA,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,EAAE,CAAC;AACjE,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;YACb;QACF;;AAGA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;;QAGlD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;QAGvD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI;QAChD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI;;AAG5C,QAAA,MAAM,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM;;AAGzF,QAAA,IAAI,WAAW;AACf,QAAA,IAAI,WAAW,IAAI,WAAW,EAAE;YAC9B,WAAW;gBACT,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK;QACrF;AAAO,aAAA,IAAI,WAAW,IAAI,CAAC,WAAW,EAAE;AACtC,YAAA,WAAW,GAAG,WAAW,CAAC,KAAK;QACjC;AAAO,aAAA,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE;AACtC,YAAA,WAAW,GAAG,WAAW,CAAC,KAAK;QACjC;aAAO;YACL,WAAW,GAAG,CAAC;QACjB;;QAGA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC;;AAEjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;;AAG5D,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IAC5B;AAEA;;AAEG;AACO,IAAA,MAAM,CAAC,IAAc,EAAA;QAC7B,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB;QACF;AAEA,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;;AAEpC,QAAA,MAAM,eAAe,GAAG,CAAC,GAAG,GAAG;AAC5B,aAAA,KAAK,CAAC,CAAC,EAAE,KAAK;AACd,aAAA,OAAO;AACP,aAAA,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,aAAa,GAAG,CAAC,CAAC;QAE7C,IAAI,CAAC,eAAe,EAAE;YACpB;QACF;AAEA,QAAA,IAAI,CAAC,KAAK,GAAG,aAAa;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;IAC3B;AAEA;;AAEG;AACO,IAAA,OAAO,CAAC,IAAc,EAAA;QAC9B,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/B,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;YACnC;QACF;AACA,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;IAC3B;AAEA;;AAEG;AACO,IAAA,YAAY,CAAC,IAAc,EAAA;QACnC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB;QACF;AACA,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;AACpC,QAAA,MAAM,eAAe,GAAG,CAAC,GAAG,GAAG;AAC5B,aAAA,KAAK,CAAC,CAAC,EAAE,KAAK;AACd,aAAA,OAAO;AACP,aAAA,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,aAAa,GAAG,CAAC,CAAC;QAE7C,IAAI,CAAC,eAAe,EAAE;YACpB;QACF;QAEA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;AAC7C,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;AAEhC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;IAC3B;AAEA;;AAEG;AACO,IAAA,aAAa,CAAC,IAAc,EAAA;QACpC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;QAC7C,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;IAC3B;AAEA;;AAEG;AACO,IAAA,WAAW,CAAC,IAAc,EAAA;AAClC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;AACd,YAAA,OAAO,KAAK;QACd;AACA,QAAA,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,YAAA,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;YACnB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;gBAC5B;YACF;YACA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;AACjC,gBAAA,OAAO,IAAI;YACb;QACF;AACA,QAAA,OAAO,KAAK;IACd;IAEU,IAAI,GAAA;;QAEZ,MAAM,OAAO,GAAG,KAAK;AAErB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,KAAI;AACzD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;;YAGtD,IAAI,CAAC,YAAY,EAAE;gBACjB,IAAI,OAAO,EAAE;oBACX,OAAO,CAAC,GAAG,CAAC,CAAA,cAAA,EAAiB,OAAO,CAAC,KAAK,CAAA,CAAE,CAAC;gBAC/C;AAEA,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,MAAM,EACJ,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,gBAAgB,EAC3B,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,YAAY,GACnB,GAAG,YAAY;AAEhB,YAAA,MAAM,EACJ,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,WAAW,EACtB,KAAK,EAAE,QAAQ,EACf,aAAa,EAAE,QAAQ,EACvB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,OAAO,GACd,GAAG,OAAO;YAEX,MAAM,aAAa,GAAa,EAAE;AAElC,YAAA,IAAI,gBAAgB,KAAK,WAAW,EAAE;gBACpC,aAAa,CAAC,IAAI,CAAC,CAAA,WAAA,EAAc,gBAAgB,CAAA,GAAA,EAAM,WAAW,CAAA,CAAE,CAAC;YACvE;AACA,YAAA,IAAI,gBAAgB,KAAK,WAAW,EAAE;gBACpC,aAAa,CAAC,IAAI,CAAC,CAAA,WAAA,EAAc,gBAAgB,CAAA,GAAA,EAAM,WAAW,CAAA,CAAE,CAAC;YACvE;AACA,YAAA,IAAI,aAAa,KAAK,QAAQ,EAAE;gBAC9B,aAAa,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,aAAa,CAAA,GAAA,EAAM,QAAQ,CAAA,CAAE,CAAC;YAC7D;AACA,YAAA,IAAI,YAAY,KAAK,OAAO,EAAE;gBAC5B,aAAa,CAAC,IAAI,CAAC,CAAA,MAAA,EAAS,YAAY,CAAA,GAAA,EAAM,OAAO,CAAA,CAAE,CAAC;YAC1D;AACA,YAAA,IAAI,aAAa,KAAK,QAAQ,EAAE;gBAC9B,aAAa,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,aAAa,CAAA,GAAA,EAAM,QAAQ,CAAA,CAAE,CAAC;YAC7D;AACA,YAAA,IAAI,YAAY,KAAK,OAAO,EAAE;gBAC5B,aAAa,CAAC,IAAI,CAAC,CAAA,MAAA,EAAS,YAAY,CAAA,GAAA,EAAM,OAAO,CAAA,CAAE,CAAC;YAC1D;AACA,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBAC9D,aAAa,CAAC,IAAI,CAAC,CAAA,eAAA,EAAkB,aAAa,CAAA,GAAA,EAAM,QAAQ,CAAA,CAAE,CAAC;YACrE;AAEA,YAAA,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC;AACjC,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,OAAO,GAAG,CAAC,CAAU,KAAc,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;QAEjF,MAAM,YAAY,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAY,KAAa;;YAE1D,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;AAEpC,YAAA,OAAO,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI;AACpC,QAAA,CAAC;QAED,MAAM,iBAAiB,GAAa,EAAE;QACtC,MAAM,kBAAkB,GAAe,EAAE;AAEzC,QAAA,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE;AAChC,YAAA,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;gBACpB,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,gBAAgB,CAAC;YACtD;AAEA,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;AACrB,gBAAA,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B;QACF;AAEA,QAAA,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACvB,gBAAA,KAAK,EAAE,kBAAkB;AACzB,gBAAA,UAAU,EAAE,UAAU;;AAEtB,gBAAA,OAAO,EAAE,CAAA;;AAEP,QAAA,EAAA,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,EAAA,EAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;AACrD,QAAA,CAAA;AACF,aAAA,CAAC;YAEF;QACF;AAEA,QAAA,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACvB,gBAAA,KAAK,EAAE,kBAAkB;AACzB,gBAAA,UAAU,EAAE,UAAU;;AAEtB,gBAAA,OAAO,EAAE,CAAA;;UAEP,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,EAAA,EAAK,CAAC,CAAC,KAAK,CAAA,EAAA,EAAK,CAAC,CAAC,IAAI,CAAA,GAAA,EAAM,CAAC,CAAC,KAAK,CAAA,CAAA,CAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;AACrF,QAAA,CAAA;AACF,aAAA,CAAC;YAEF;QACF;QAEA,MAAM,OAAO,GAAG,CAAC,KAAa,MAAqB,KAAK,KAAK,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC;AAE/E,QAAA,MAAM,gBAAgB,GAAG,CAAC,EAAY,MAAyB;AAC7D,YAAA,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE;YACtB,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,SAAS,EAAE,EAAE,CAAC,SAAS;YACvB,aAAa,EAAE,EAAE,CAAC;kBACd,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE;AACzD,kBAAE,IAAI;YACR,SAAS,EAAE,EAAE,CAAC,SAAS;AACxB,SAAA,CAAC;QAEF,MAAM,aAAa,GAAG;AACnB,aAAA,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;AAChD,aAAA,GAAG,CAAC,CAAC,EAAE,MAAM;AACZ,YAAA,IAAI,EAAE,gBAAgB,CAAC,EAAE,CAAC;YAC1B,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;AAC9B,SAAA,CAAC,CAAC;QAEL,MAAM,eAAe,GAAG;AACrB,aAAA,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;AAC/C,aAAA,GAAG,CAAC,CAAC,OAAO,KAAI;AACf,YAAA,OAAO,CAAC,EAAE,GAAG,UAAU;AAEvB,YAAA,OAAO,gBAAgB,CAAC,OAAO,CAAC;AAClC,QAAA,CAAC,CAAC;QAEJ,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAE5C,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,aAAa,CAAC;AACjD,YAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,eAAe,CAAC;AAC9C,YAAA,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,eAAe,CAAC;QACrD;QAEA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC;AAEvE,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEU,IAAA,UAAU,CAAC,KAAc,EAAA;QACjC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACrC,YAAA,IAAI,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE;AAChC,gBAAA,OAAO,CAAC,SAAS,GAAG,KAAK;YAC3B;QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzC;AAEA;;;AAGG;AACO,IAAA,UAAU,CAAC,IAAc,EAAA;QACjC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;AAC/B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK;;AAG5B,QAAA,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,YAAA,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;AACnB,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE;gBAC3B;YACF;YACA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,GAAG,CAAC,EAAE;;AAEhC,gBAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,IAAI,IAAI;AACjC,gBAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACzB;iBAAO,IAAI,IAAI,CAAC,KAAK,GAAG,SAAS,GAAG,CAAC,EAAE;;AAErC,gBAAA,IAAI,CAAC,KAAK,IAAI,CAAC;YACjB;QACF;;AAGA,QAAA,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;;QAGpB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;YACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;IAC3B;AAEA;;;AAGG;IACO,UAAU,GAAA;QAClB,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAEhC,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC;QAE7D,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC;YAC5E;QACF;AAEA,QAAA,MAAM,OAAO,GAAa;YACxB,EAAE,EAAE,GAAG,eAAe,CAAA,EAAG,MAAM,CAAC,UAAU,EAAE,CAAA,CAAE;YAC9C,SAAS,EAAE,QAAQ,CAAC,EAAE;AACtB,YAAA,KAAK,EAAE,kBAAkB;AACzB,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC;SAC1B;QAED,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC;QAClE,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC;AAEnC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;IAC3B;AAEA;;AAEG;IACO,KAAK,GAAA;QACb,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AAC9D,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA;;AAEG;AACO,IAAA,SAAS,CAAC,IAAc,EAAA;QAChC,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;IAC3D;AAEA;;AAEG;IACK,cAAc,CAAC,GAAe,EAAE,IAAc,EAAA;QACpD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,OAAO,EAAE;QACX;QACA,MAAM,MAAM,GAAe,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;AACxC,QAAA,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,YAAA,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,gBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAChB;iBAAO;gBACL;YACF;QACF;AACA,QAAA,OAAO,MAAM;IACf;AAEA;;;AAGG;IACK,gBAAgB,CAAC,MAAkB,EAAE,IAAY,EAAA;AACvD,QAAA,IAAI,IAAI,KAAK,CAAC,EAAE;YACd;QACF;AACA,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;AACtB,YAAA,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;QACvC;IACF;AAEA;;;AAGG;AACK,IAAA,kBAAkB,CAAC,IAAoB,EAAA;;AAE7C,QAAA,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC;AAEpC,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAwB;QAC3C,MAAM,KAAK,GAAmB,EAAE;AAEhC,QAAA,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;YACzB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;QACxB;AAEA,QAAA,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AACzB,YAAA,IAAI,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAE;AACvC,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACpB,oBAAA,MAAM,CAAC,QAAQ,GAAG,EAAE;gBACtB;AACA,gBAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B;iBAAO;AACL,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAClB;QACF;QAEA,MAAM,IAAI,GAAe,EAAE;AAC3B,QAAA,MAAM,IAAI,GAAG,CAAC,IAAkB,EAAE,KAAa,KAAU;YACvD,IAAI,CAAC,IAAI,CAAC;gBACR,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;AACvB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;AACvB,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;AACrB,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC;gBAC9B,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI;AACpD,gBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,KAAK,UAAU;AACpC,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;gBACrB,KAAK;AACN,aAAA,CAAC;AAEF,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;AACzB,gBAAA,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAClD;AACD,gBAAA,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE;AAClC,oBAAA,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;gBACxB;YACF;AACF,QAAA,CAAC;AAED,QAAA,MAAM,WAAW,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;AACtF,QAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AAC9B,YAAA,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACf;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;AACK,IAAA,eAAe,CAAC,GAAoC,EAAA;AAC1D,QAAA,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,UAAU,GAAG,GAAG,EAAE,GAAG,GAAG;QACtD,MAAM,GAAG,GAAe,EAAE;QAC1B,MAAM,cAAc,GAAc,EAAE;AAEpC,QAAA,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;YACtB,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;gBACtC,cAAc,CAAC,GAAG,EAAE;YACtB;YAEA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAClC,gBAAA,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;gBACX,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YACzC;QACF;AAEA,QAAA,OAAO,GAAG;IACZ;AAEA;;;;AAIG;AACK,IAAA,gBAAgB,CAAC,GAAe,EAAA;QACtC,MAAM,OAAO,GAAe,EAAE;AAC9B,QAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAyB;AAEtD,QAAA,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;YACtB,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;gBAC5E,OAAO,CAAC,GAAG,EAAE;YACf;YAEA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI;AACtE,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI;;AAG1C,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE;AAC7B,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI;gBACvC,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrD,gBAAA,IAAI,CAAC,SAAS,GAAG,YAAY;gBAC7B,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,GAAG,CAAC,CAAC;YAC/C;AAEA,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACpB;IACF;AAEA;;;AAGG;AACK,IAAA,eAAe,CAAC,GAAe,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC1B,qBAAqB,CAAC,MAAK;YACzB,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC/B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;gBACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YAC7B;AACA,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC7B,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACK,YAAY,CAAC,CAAa,EAAE,CAAa,EAAA;QAC/C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;AACzB,YAAA,OAAO,KAAK;QACd;AACA,QAAA,KAAK,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACtC,IACE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACtB,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;gBAC5B,OAAO,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EACpC;AACA,gBAAA,OAAO,KAAK;YACd;QACF;AAEA,QAAA,OAAO,IAAI;IACb;+GA7oBW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChC1C,4xIA+FA,EAAA,MAAA,EAAA,CAAA,igEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjEY,OAAO,wcAAE,WAAW,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,6BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,0FAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEnF,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,YACN,wBAAwB,EAAA,OAAA,EAGzB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,4xIAAA,EAAA,MAAA,EAAA,CAAA,igEAAA,CAAA,EAAA;;;MEvB3E,iCAAiC,CAAA;AAwBtD;;MCzBY,qBAAqB,CAAA;AAGhC,IAAA,WAAA,CAAmB,GAAqB,EAAA;QAArB,IAAA,CAAA,GAAG,GAAH,GAAG;IAAqB;+GAHhC,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;gFAEU,gBAAgB,EAAA,CAAA;sBAAxB;;;ICHS;AAAZ,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,eAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,eAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,eAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EAPW,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;;MCAd,sBAAsB,CAAA;AACjC,IAAA,gBAAgB,CAAC,OAAmB,EAAA;AAClC,QAAA,OAAO,IAAI,UAAU,CAA8B,CAAC,QAAQ,KAAI;YAC9D,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,KAAI;AAChE,gBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AACxB,YAAA,CAAC,CAAC;AAEF,YAAA,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;AAEnD,YAAA,OAAO,MAAK;gBACV,oBAAoB,CAAC,UAAU,EAAE;AACnC,YAAA,CAAC;AACH,QAAA,CAAC,CAAC,CAAC,IAAI,CACL,QAAQ,CAAC,CAAC,OAAoC,KAAK,OAAO,CAAC,EAC3D,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,CAAC,EACpC,oBAAoB,EAAE,CACvB;IACH;+GAjBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAtB,sBAAsB,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;;MCGY,uBAAuB,CAAA;AAGlC,IAAA,WAAA,CAAmB,GAAqB,EAAA;QAArB,IAAA,CAAA,GAAG,GAAH,GAAG;AAFf,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAC,QAAQ,EAAU;IAET;+GAHhC,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACFM,MAAM,WAAW,GAAG,IAAI,cAAc,CAAS,mBAAmB,CAAC;MAG7D,iBAAiB,CAAA;AAO5B,IAAA,WAAA,GAAA;AANQ,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;AAErB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AAEzC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAiB3C,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,KAAoB,KAAI;YAC3D,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,EAAE;AAC/B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B;AACF,QAAA,CAAC;AAEgB,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,KAAoB,KAAI;YACzD,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,EAAE;AAC/B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9B;AACF,QAAA,CAAC;QAxBC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;QACzD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC;IACvD;IAEO,SAAS,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;IACpC;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;QAC3B,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;QAC5D,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC;IAC1D;+GApBW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAjB,iBAAiB,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;MCEY,eAAe,CAAA;AAC1B,IAAA,SAAS,CAAC,IAAuC,EAAE,OAAA,GAAuB,IAAI,EAAA;QAC5E,IAAI,gBAAgB,GAAG,MAAM;AAE7B,QAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AACpB,YAAA,IAAI,IAAI,KAAK,eAAe,CAAC,QAAQ,EAAE;gBACrC,gBAAgB,GAAG,UAAU;YAC/B;AAAO,iBAAA,IAAI,IAAI,KAAK,eAAe,CAAC,GAAG,EAAE;gBACvC,gBAAgB,GAAG,KAAK;YAC1B;AAAO,iBAAA,IAAI,IAAI,KAAK,eAAe,CAAC,IAAI,EAAE;gBACxC,gBAAgB,GAAG,MAAM;YAC3B;QACF;AAEA,QAAA,IAAI,IAAI,KAAK,eAAe,CAAC,IAAI,IAAI,IAAI,KAAK,eAAe,CAAC,QAAQ,EAAE;YACtE,gBAAgB,GAAG,MAAM;QAC3B;QAEA,OAAO,CAAA,qBAAA,EAAwB,gBAAgB,CAAA,CAAE;IACnD;+GAnBW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCAY,gBAAgB,CAAA;IAC3B,SAAS,CAAC,KAAa,EAAE,KAA2B,EAAA;QAClD,OAAO,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK;IACxC;+GAHW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACLM,MAAM,qBAAqB,GAAG,mBAAmB;AACjD,MAAM,0BAA0B,GAAG,EAAE;AACrC,MAAM,gBAAgB,GAAG,CAAC;;MCqCpB,yBAAyB,CAAA;AA+BpC,IAAA,WAAA,GAAA;QA9BO,IAAA,CAAA,YAAY,GAAG,KAAK,EAAU;;AAE9B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,GAAG,EAAc,CAAC;AACvC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;AACvB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAiB,KAAK,CAAC;AACtC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAgB,IAAI,CAAC;QAE1C,IAAA,CAAA,OAAO,GAAG,MAAM,EAAuB;QAE7B,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAExE,IAAA,CAAA,eAAe,GAAG,cAAc;AAEzC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AACtB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAwB,IAAI,CAAC;AACrD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAgB,IAAI,CAAC;AAE/B,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAClD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;AAEhC,YAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AAChB,gBAAA,OAAO,EAAE;YACX;YAEA,OAAO,CAAA,qBAAA,EAAwB,GAAG,CAAA,CAAE;AACtC,QAAA,CAAC,CAAC;AAEQ,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,KAAK;AAC3C,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,EAAE,qBAAqB;QAG5E,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE;AAE7B,YAAA,IAAI,OAAO,KAAK,KAAK,IAAI,MAAM,EAAE;gBAC/B,SAAS,CAAC,MAAK;oBACb,IAAI,CAAC,KAAK,EAAE;AACd,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,aAAa,CAAC,UAA0B,EAAA;QAChD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,cAAc,KACzC,cAAc,KAAK,UAAU,GAAG,IAAI,GAAG,UAAU,CAClD;IACH;IAEU,YAAY,GAAA;QACpB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC;IAChD;IAEU,cAAc,GAAA;AACtB,QAAA,IAAI,MAAM,GAAmC,IAAI,CAAC,eAAe,EAAE;QAEnE,IAAI,CAAC,MAAM,EAAE;YACX;QACF;AAEA,QAAA,IAAI,MAAM,KAAK,cAAc,CAAC,KAAK,EAAE;AACnC,YAAA,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;QAC5B;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE;IACd;IAEU,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC;QACzC;IACF;IAEU,iBAAiB,GAAA;AACzB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,IAAI;QAEnC,IAAI,KAAK,EAAE;YACT,MAAM,cAAc,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;AAC1C,YAAA,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,CAC3C,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,oBAAoB,CAAC,QAAQ,CACrD;YAED,MAAM,wBAAwB,GAAG,cAAc,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM;YACjF,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE;YAClE,MAAM,oBAAoB,GAAG,IAAI,CAAC,qBAAsB,EAAE,KAAK,oBAAoB,CAAC,QAAQ;AAE5F,YAAA,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9B,OAAO,wBAAwB,IAAI,EAAE,YAAY,IAAI,oBAAoB,CAAC;YAC5E;AAEA,YAAA,OAAO,CAAC,YAAY,IAAI,oBAAoB;QAC9C;QAEA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE;IACjF;IAEU,WAAW,GAAA;AACnB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,IAAI;QAEnC,IAAI,KAAK,EAAE;YACT,MAAM,cAAc,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;AAC1C,YAAA,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,CAC3C,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,oBAAoB,CAAC,QAAQ,CACrD;YAED,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM;YAC3E,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE;YACpE,MAAM,oBAAoB,GAAG,IAAI,CAAC,qBAAsB,EAAE,KAAK,oBAAoB,CAAC,QAAQ;AAE5F,YAAA,QACE,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB,KAAK,aAAa,IAAI,oBAAoB,CAAC;QAE/F;QAEA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE;IACjF;IAEU,KAAK,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB;IACF;AAEU,IAAA,iBAAiB,CAAC,KAAa,EAAA;QACvC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC;AAC9C,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;IAC5B;IAEU,aAAa,GAAA;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE;IACd;+GAvIW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvCtC,48FA2FA,EAAA,MAAA,EAAA,CAAA,0kGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjEI,WAAW,isBAGX,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,4BAA4B,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,+BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,SAAS,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,gBAAgB,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEhB,UAAU,mFACV,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIE,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAnBrC,SAAS;+BACE,yBAAyB,EAAA,UAAA,EAGvB,IAAI,EAAA,OAAA,EACP;wBACP,WAAW;wBACX,WAAW;wBACX,YAAY;wBACZ,WAAW;wBACX,4BAA4B;wBAC5B,SAAS;wBACT,gBAAgB;wBAChB,cAAc;wBACd,UAAU;wBACV,OAAO;qBACR,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,48FAAA,EAAA,MAAA,EAAA,CAAA,0kGAAA,CAAA,EAAA;;;AElCjD;MAKa,mBAAmB,CAAA;AAJhC,IAAA,WAAA,GAAA;;AAMS,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC;AAyBtC,IAAA;AAtBQ,IAAA,OAAO,CAAC,KAAwB,EAAA;AACrC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM;AAC5B,QAAA,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK;AAEzB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC1B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;YAEhC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;;YAGpC,MAAM,KAAK,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,YAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,gBAAA,KAAK,GAAG,CAAA,EAAG,KAAK,CAAC,KAAK,EAAG,CAAA,CAAA,EAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC/C;QACF;aAAO;YACL,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAClC;AAEA,QAAA,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;AAC3B,YAAA,OAAO,CAAC,KAAK,GAAG,KAAK;QACvB;IACF;+GA1BW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,cAAc;AACzB,iBAAA;8BAMQ,OAAO,EAAA,CAAA;sBADb,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MCNtB,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAQ;AAEvC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,cAAc,CAAC,MAAK;AACzD,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;AAC/B,QAAA,CAAC,CAAC;AAEc,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAkB/E,IAAA;AAhBQ,IAAA,GAAG,CAAC,IAAqB,EAAA;QAC9B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;IACxD;AAEO,IAAA,MAAM,CAAC,IAAqB,EAAA;QACjC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;IAC1D;IAEO,mBAAmB,GAAA;AACxB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;IAC/B;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;AACjC,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE;IACnC;+GA1BW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAArB,qBAAqB,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;MCkBY,eAAe,CAAA;AAJ5B,IAAA,WAAA,GAAA;QAMS,IAAA,CAAA,UAAU,GAAG,KAAK,EAAW;QAE7B,IAAA,CAAA,WAAW,GAAG,KAAK,EAAW;QAE9B,IAAA,CAAA,SAAS,GAAG,KAAK,EAAW;QAE5B,IAAA,CAAA,YAAY,GAAG,KAAK,EAAW;QAC/B,IAAA,CAAA,cAAc,GAAG,KAAK,EAA2B;AACjD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC1B,IAAA,CAAA,cAAc,GAAG,KAAK,EAAuC;AASpD,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAEzB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAChD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAEhC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAQ;AACtC,QAAA,IAAA,CAAA,aAAa,GAAG;AAC/B,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,MAAM,EAAE,IAAI;SACb;QAEO,IAAA,CAAA,eAAe,GAAG,KAAK;AAmIhC,IAAA;AAxJC,IAAA,IACI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,YAAY;AACrF,cAAE,IAAI,CAAC,QAAQ;cACb,EAAE;IACR;IAkBO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;IACjC;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;AAClC,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;IAClC;IAEO,WAAW,GAAA;QAChB,IAAI,CAAC,KAAK,EAAE;IACd;IAEQ,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAE5B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,OAAO;QACtE,IAAI,CAAC,gBAAgB,EAAE;aACpB,IAAI,CACHmB,KAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,EAC3D,SAAS,CAAC,uBAAuB,CAAC,EAClCC,QAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAC3CC,WAAS,CAAC,CAAC,MAAM,KAAI;YACnB,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAClD,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC;YAC/D;YACA,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AAChD,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC;YAC9D;YACA,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE;AAC9C,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC;YAC7D;YACA,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AACpD,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC;YAChE;YAEA,IAAI,CAAC,iBAAiB,EAAE;AAExB,YAAA,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;AACrD,QAAA,CAAC,CAAC,EACFC,KAAG,CAAC,MAAK;AACP,YAAA,MAAM,UAAU,GAAG,MAAM,EAAE,qBAAqB,EAAE;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE;YAC/D,IAAI,UAAU,GAAG,CAAC;YAElB,IAAI,CAAC,iBAAiB,EAAE;AAExB,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,MAAM,IAAI,GAAG,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;AAC3E,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI;YAChC;iBAAO;AACL,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI;YAChC;AACA,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC;AAE7E,gBAAA,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK;gBACxB,IAAI,YAAY,GAAG,CAAC;gBACpB,IAAI,IAAI,GAAG,CAAC;gBACZ,IAAI,MAAM,EAAE;AACV,oBAAA,YAAY,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU;AAC1E,oBAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,GAAG,YAAY,GAAG,UAAU,CAAC;AAC5E,oBAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC1B;AACA,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACvE,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI;YACjC;iBAAO;AACL,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI;YACjC;AACA,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBACpB,MAAM,GAAG,GAAG,UAAU,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG;AACtE,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACnE,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI;YAC/B;iBAAO;AACL,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI;YAC/B;AACA,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;gBACvB,MAAM,MAAM,GAAG,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;AACrF,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACzE,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI;YAClC;iBAAO;AACL,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI;YAClC;YAEA,IAAI,CAAC,iBAAiB,EAAE;AAC1B,QAAA,CAAC,CAAC;;AAEF,QAAAC,WAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAChC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAErC,aAAA,SAAS,EAAE;IAChB;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB;QACF;AAEA,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;QAC5C,MAAM,IAAI,GAAG,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;AAC1D,QAAA,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;YACjB;QACF;AAEA,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;QAC1C;AAEA,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;IAC9B;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YAC1F;QACF;AAEA,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;QAC5C,MAAM,IAAI,GAAG,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;AAC1D,QAAA,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;YACjB;QACF;AAEA,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,GAAI,IAAI,CAAC,cAAc,EAAE,GAAG,GAAG,CAAY,IAAI,EAAE;QACtF;AAEA,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;IAC7B;+GApKW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0DAA0D;AACpE,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;8BAGQ,UAAU,EAAA,CAAA;sBADhB,WAAW;uBAAC,mBAAmB;gBAGzB,WAAW,EAAA,CAAA;sBADjB,WAAW;uBAAC,oBAAoB;gBAG1B,SAAS,EAAA,CAAA;sBADf,WAAW;uBAAC,kBAAkB;gBAGxB,YAAY,EAAA,CAAA;sBADlB,WAAW;uBAAC,qBAAqB;gBAO9B,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,gBAAgB;;;MCzBlB,uBAAuB,CAAA;AASlC,IAAA,WAAA,GAAA;AARO,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAa;AAEpC,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAE/E,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACtD,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AACxB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAG1C,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACtE,YAAA,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,EAAE;AACnD,QAAA,CAAC,CAAC;IACJ;IAEO,QAAQ,GAAA;QACb,IAAI,CAAC,sBAAsB,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa;IACjE;+GAjBW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFvB,CAAC,qBAAqB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAEvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,CAAC,qBAAqB,CAAC;AACnC,iBAAA;;;ACeD,IAAY,MAGX;AAHD,CAAA,UAAY,MAAM,EAAA;AAChB,IAAA,MAAA,CAAA,sBAAA,CAAA,GAAA,yDAAgF;AAChF,IAAA,MAAA,CAAA,uBAAA,CAAA,GAAA,0DAAkF;AACpF,CAAC,EAHW,MAAM,KAAN,MAAM,GAAA,EAAA,CAAA,CAAA;MA4BL,kBAAkB,CAAA;AA8C7B,IAAA,WAAA,GAAA;AA7CO,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAmB,mBAAmB,CAAC;AACzD,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,CAAC,EAAE;AAC7B,YAAA,SAAS,EAAE,CAAC,KAAkB,KAAK,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC5E,SAAA,CAAC;;AAEK,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC;AACvB,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;;AAEvB,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAc,CAAC,CAAC;;AAE5B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAc,CAAC,CAAC;QAC5B,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAoB;AACjD,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,mBAAmB,EAAE,KAAK;AAC1B,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,OAAO,EAAE,KAAK;AACf,SAAA,CAAC;AACK,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,IAAI,KAAK,EAAU,CAAC;AAC7C,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC;AAC1B,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;;AAExB,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,CAAC,CAAC;AAC/B,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAS,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,KAAK,CAAC;AACpC,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,EAAE,CAAC;QAErC,IAAA,CAAA,eAAe,GAAG,MAAM,EAAoB;QAC5C,IAAA,CAAA,UAAU,GAAG,MAAM,EAAU;QAC7B,IAAA,CAAA,UAAU,GAAG,MAAM,EAAiB;QAExB,IAAA,CAAA,MAAM,GAAG,MAAM;AACxB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;YACjC,IAAI,CAAC,IAAI,EAAE;YAEX,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AAC5C,QAAA,CAAC,CAAC;AAEe,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AAEtB,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,OAAO,EAAe;AAGpE,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC;AACpD,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACxB,QAAA,CAAC,CAAC;IACN;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE;IACxC;AAEU,IAAA,UAAU,CAAC,IAAY,EAAA;AAC/B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAEnB,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;YAC7B,IAAI,CAAC,cAAc,EAAE;QACvB;IACF;IAEU,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACpB;IAEU,UAAU,GAAA;QAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IACpC;IAEQ,cAAc,GAAA;QACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEU,IAAA,UAAU,CAAC,IAAiB,EAAA;AACpC,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;QAE9B,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;YACpC;QACF;AAEA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE;AAC/B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE;QAE/B,IAAI,SAAS,GAAG,GAAG,IAAI,SAAS,GAAG,GAAG,EAAE;YACtC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAA,2BAAA,EAA8B,GAAG,CAAA,IAAA,EAAO,GAAG,CAAA,CAAE,CAAC;AAC7E,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;YACnC;QACF;AAEA,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;AAEpC,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;YAC7B;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QAEtC,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE;AACxC,YAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACpB;aAAO;YACL,IAAI,CAAC,qBAAqB,EAAE;QAC9B;IACF;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACxB,IAAI,EAAE,IAAI,CAAC,WAAW;AACtB,YAAA,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC;YACpD,IAAI,EAAE,IAAI,CAAC,WAAW;AACtB,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC9B,SAAA,CAAC;IACJ;;AAGA,IAAA,IAAc,WAAW,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACvD;AAEA,IAAA,IAAc,WAAW,GAAA;AACvB,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAE9D,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACvC;AAEA,QAAA,OAAO,SAAS;IAClB;+GAzIW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,IAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrD/B,+lHAiGA,EAAA,MAAA,EAAA,CAAA,o9HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhEI,gBAAgB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,aAAa,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,aAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,SAAS,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,2BAA2B,EAAA,QAAA,EAAA,+EAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC3B,4BAA4B,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,oBAAoB,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAET,mBAAmB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAOV,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAvB9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAClB;wBACP,gBAAgB;wBAChB,YAAY;wBACZ,eAAe;wBACf,mBAAmB;wBACnB,WAAW;wBACX,aAAa;wBACb,SAAS;wBACT,iBAAiB;wBACjB,2BAA2B;wBAC3B,4BAA4B;wBAC5B,oBAAoB;wBACpB,SAAS;wBACT,OAAO;wBACP,mBAAmB;AACpB,qBAAA,EAAA,UAAA,EAGW,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+lHAAA,EAAA,MAAA,EAAA,CAAA,o9HAAA,CAAA,EAAA;;;AEqBjD;MAyCa,sBAAsB,CAAA;AAuNjC,IAAA,WAAA,GAAA;;AArNO,QAAA,IAAA,CAAA,eAAe,GAAG,eAAe,CAA0B,uBAAuB,CAAC;;AAEnF,QAAA,IAAA,CAAA,aAAa,GAAG,eAAe,CAAwB,qBAAqB,CAAC;;QAG7E,IAAA,CAAA,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;;QAExD,IAAA,CAAA,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAkB;;AAE5C,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAU,KAAK,CAAC;;AAE1C,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAiB;;AAEtC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAiB;;AAEvC,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC;;AAE5B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAY;;AAEpC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAiB;;QAE7C,IAAA,CAAA,aAAa,GAAG,KAAK,EAAwB;;QAE7C,IAAA,CAAA,cAAc,GAAG,KAAK,EAAwB;;AAE9C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAU;;AAEvC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,QAAQ,EAAU;;AAE3C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAS;AACxC;;;;AAIK;AACE,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,IAAI,GAAG,EAAc,CAAC;AACjD;;;;AAIK;AACE,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,IAAI,GAAG,EAAO,CAAC;;AAEvC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAiB,KAAK,CAAC;;AAE9C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,YAAY,CAAC;;AAEvC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC;;AAE9B,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAgB,IAAI,CAAC;;AAElD,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;;AAE/B,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC;AAEhC,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,cAAc,EAAE,EAAE,IAAI,IAAI,IAAI;AAC1E,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,EAAE,IAAI,IAAI,CAAC;YAC3E,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,qBAAqB,EAAE;AACvE,YAAA,MAAM,aAAa,GAAG,gBAAgB,KAAK,oBAAoB,CAAC,QAAQ;AAExE,YAAA,IAAI,YAAY,KAAK,IAAI,EAAE;gBACzB,IAAI,CAAC,8BAA8B,EAAE;AACrC,gBAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI;YAChC;AAEA,YAAA,OAAO,aAAa,GAAG,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,cAAc;AAC5E,QAAA,CAAC,CAAC;AAEiB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC;AAC7B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEjC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAClC,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,sBAAsB,CAAC;;AAExD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,2BAA2B,EAAE;AACtE,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA,CAAC;;QAGK,IAAA,CAAA,aAAa,GAAG,MAAM,EAAuB;;QAE7C,IAAA,CAAA,eAAe,GAAG,MAAM,EAAoB;;QAE5C,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAO;;QAExB,IAAA,CAAA,WAAW,GAAG,MAAM,EAAO;;QAE3B,IAAA,CAAA,WAAW,GAAG,MAAM,EAAiC;;QAErD,IAAA,CAAA,IAAI,GAAG,MAAM,EAAkC;;AAErC,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CACtC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC/F;AACM,QAAA,IAAA,CAAA,cAAc,GAAG,oBAAoB,CAC1C,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAClC,SAAS,CAAC,CAAC,OAAO,KAChB,aAAa,CACX,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,KACxC,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAC9D,CACF,CAAC,IAAI,CACJ,yBAAyB,EAAE,EAC3B,YAAY,CAAC,mCAAmC,CAAC,EACjD,IAAI,CAAC,CAAC,CAAC,CACR,CACF,CACF,CACF;;AAEgB,QAAA,IAAA,CAAA,2BAA2B,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC7E,SAAS,CAAC,CAAC,QAAQ,KACjB,aAAa,CACX,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,KAC1B,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI;;AAEzD,QAAA,GAAG,CAAC,CAAC,SAAS,KAAI;YAChB,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,SAAS;QAC9C,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,SAAS,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CACpE,CACF,CACF,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAC/E,CACF;AACM,QAAA,IAAA,CAAA,iBAAiB,GAAG,oBAAoB,CAAQ,IAAI,CAAC,2BAA2B,CAAC;QAErE,IAAA,CAAA,eAAe,GAAG,eAAe;QACjC,IAAA,CAAA,SAAS,GAAG,SAAS;QACrB,IAAA,CAAA,YAAY,GAAG,YAAY;QAC3B,IAAA,CAAA,oBAAoB,GAAG,oBAAoB;QAE3C,IAAA,CAAA,qBAAqB,GAAG,qBAAqB;QAC7C,IAAA,CAAA,0BAA0B,GAAG,0BAA0B;QAEvD,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QAChD,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AAEhD,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAM;YACxD,qBAAqB;YACrB,GAAG,IAAI,CAAC,OAAO,EAAE;AAClB,SAAA,CAAC;AACiB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAgC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC3E,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CACtC,aAAa,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAC7F,GAAG,CACD,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,KAChC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CACxF,EACD,SAAS,CAAC,CAAC,OAAO,KAChB,aAAa,CACX,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KACvC,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAClD,CACF,CAAC,IAAI,CACJ,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,0BAA0B,GAAG,CAAC;AAEvE,YAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,gBAAA,UAAU,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;YACzC;AAEA,YAAA,OAAO,UAAU;AACnB,QAAA,CAAC,CAAC,CACH,CACF,CACF,CACF;AAES,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,KAAK;QAE3C,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAC/D;AACS,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACvE,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAEvE,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,MAAM,IAAI,GAA+D,KAAK,CAAC,IAAI,CACjF,EAAE,MAAM,EAAE,QAAQ,EAAE,EACpB,MAAM,EAAE,CACT;AAED,YAAA,IAAI,QAAQ,KAAK,CAAC,EAAE;AAClB,gBAAA,OAAO,IAAI;YACb;YAEA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;gBAC3C,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC;YACpD;AAEA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;AAEM,QAAA,IAAA,CAAA,8BAA8B,GAAG,MAAM,CAAC,CAAC,CAAC;AAE/B,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB;AAE9C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAwC;AAEhE,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,GAAG,EAA4B;AAC1D,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,GAAG,EAA4B;AAExD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAW;AAErC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC;QAKhE,IAAI,CAAC,kCAAkC,EAAE;QACzC,IAAI,CAAC,uBAAuB,EAAE;QAC9B,IAAI,CAAC,qBAAqB,EAAE;;QAE5B,IAAI,CAAC,qBAAqB,EAAE;QAE5B,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;YAE3B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC5C,gBAAA,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI;YAC/B;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,kCAAkC,GAAA;QACxC,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;gBACrB,SAAS,CAAC,MAAK;oBACb,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE;oBAC3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa;oBAExD,IAAI,gBAAgB,EAAE;AACpB,wBAAA,gBAAgB,CAAC,SAAS,GAAG,GAAG;AAChC,wBAAA,gBAAgB,CAAC,UAAU,GAAG,IAAI;oBACpC;AACF,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,uBAAuB,GAAA;QAC7B,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;YACjC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC7C,gBAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC;YAC5E;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,qBAAqB,GAAA;QAC3B,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;YAC/B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AAC3C,gBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC;YACtE;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE;IACxF;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC5B,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;QAC5B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE;YAClD,OAAO,CAAC,QAAQ,EAAE;QACpB;IACF;AAEU,IAAA,yBAAyB,CAAC,IAAY,EAAA;QAC9C,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5C;AAEU,IAAA,uBAAuB,CAAC,IAAY,EAAA;QAC5C,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1C;IAEU,UAAU,CAAC,EAAE,cAAc,EAAoD,EAAA;QACvF,IAAI,CAAC,cAAc,EAAE;YACnB;QACF;QAEA,MAAM,EAAE,GAAG,cAAc,CAAC,EAAE,EAAE,EAAE,CAAkB;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;AAE7C,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE;AAC3B,YAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,WAAW,CAAC;QACzC;aAAO;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,WAAW,CAAC;QACzC;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD;IAEQ,iBAAiB,CACvB,EAAU,EACV,WAAqD,EAAA;QAErD,IAAI,WAAW,EAAE;AACf,YAAA,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW;AAC/B,YAAA,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO;AAEzB,YAAA,IAAI,KAAK,KAAK,MAAM,CAAC,IAAI,EAAE;AACzB,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B;iBAAO;gBACL,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5E;QACF;aAAO;YACL,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;QACnE;IACF;AAEU,IAAA,SAAS,CAAC,MAAc,EAAA;AAChC,QAAA,OAAO,MAAM,MAAM;IACrB;AAEU,IAAA,2BAA2B,CAAC,UAAuB,EAAA;AAC3D,QAAA,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,UAAU;AACrC,QAAA,MAAM,wBAAwB,GAAsB;AAClD,YAAA,eAAe,CAAC,IAAI;AACpB,YAAA,eAAe,CAAC,IAAI;AACpB,YAAA,eAAe,CAAC,GAAG;SACpB;AAED,QAAA,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,QAAQ,KAAK,KAAK,IAAI,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjG;AAEU,IAAA,kBAAkB,CAAC,UAAuB,EAAA;AAClD,QAAA,MAAM,qBAAqB,GAAsB;AAC/C,YAAA,eAAe,CAAC,QAAQ;AACxB,YAAA,eAAe,CAAC,IAAI;AACpB,YAAA,eAAe,CAAC,QAAQ;SACzB;AAED,QAAA,OAAO,UAAU,CAAC,KAAK,IAAI,qBAAqB,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;IAC5E;AAEU,IAAA,UAAU,CAAC,GAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7B;IAEU,UAAU,CAAC,KAAiB,EAAE,GAAY,EAAA;AAClD,QAAA,MAAM,sBAAsB,GAAG,MAAM,CAAC,YAAY,EAAE;QACpD,sBAAsB,EAAE,eAAe,EAAE;AAEzC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI;;QAG1C,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC;YACrE;iBAAO;AACL,gBAAA,IAAI,KAAK,CAAC,OAAO,EAAE;oBACjB,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC;gBACnD;qBAAO;AACL,oBAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,GAAG,CAAC;gBAC7C;AACA,gBAAA,IAAI,CAAC,eAAe,GAAG,GAAG;YAC5B;AAEA,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;YAEvB,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE,cAAc,EAAE;YAE/D,IAAI,eAAe,EAAE;AACnB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,oBAAA,GAAG,EAAE,CAAC,GAAG,eAAe,CAAC;oBACzB,KAAK,EAAE,eAAe,CAAC,IAAI;AAC5B,iBAAA,CAAC;YACJ;AAEA,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;YAC3B;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC;QAClD;aAAO;AACL,YAAA,IAAI,KAAK,CAAC,OAAO,EAAE;AACjB,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC;YAChC;iBAAO;AACL,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YAC1B;AACA,YAAA,IAAI,CAAC,eAAe,GAAG,GAAG;QAC5B;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,YAAA,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAChC,YAAA,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI;AACnC,SAAA,CAAC;IACJ;AAEQ,IAAA,mBAAmB,CACzB,KAAuC,EACvC,GAAY,EACZ,YAAsB,EAAA;AAEtB,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,GAAG,CAAC,EAAE;AACrD,YAAA,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC;YACpD;QACF;AAEA,QAAA,MAAM,EAAE,GAAG,GAAG,CAAC,EAAY;AAC3B,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,KAAK,oBAAoB,CAAC,QAAQ;QAE1E,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE;AAC9B,gBAAA,KAAK,EAAE,WAAW,GAAG,oBAAoB,CAAC,UAAU,GAAG,oBAAoB,CAAC,QAAQ;AACrF,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,4BAA4B,CAAC,oBAAoB,CAAC,UAAU,CAAC;AAClE,YAAA,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,CAAC,QAAQ,EAAE,CAAC;QAC3E;IACF;IAEQ,cAAc,CAAC,GAAY,EAAE,YAAsB,EAAA;AACzD,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,GAAG,CAAC,EAAE;AACrD,YAAA,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC;YACpD;QACF;AAEA,QAAA,MAAM,EAAE,GAAG,GAAG,CAAC,EAAY;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QAE9C,IAAI,YAAY,EAAE;YAChB,IAAI,WAAW,EAAE;gBACf,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;YACpC;iBAAO;gBACL,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;YACjC;QACF;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE;YAC9B,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;QACjC;QACA,IAAI,CAAC,2BAA2B,EAAE;IACpC;IAEQ,2BAA2B,GAAA;AACjC,QAAA,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;IAClE;AAEQ,IAAA,qBAAqB,CAC3B,YAA8C,EAC9C,WAAoB,EACpB,UAAmB,EAAA;AAEnB,QAAA,IAAI,CAAC,4BAA4B,CAAC,oBAAoB,CAAC,UAAU,CAAC;QAElE,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;QACnD,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;AAElD,QAAA,IAAI,SAAS,GAAG,SAAS,EAAE;YACzB,MAAM,SAAS,GAAG,SAAS;YAC3B,SAAS,GAAG,SAAS;YACrB,SAAS,GAAG,SAAS;QACvB;QAEA,MAAM,wBAAwB,GAAoB,IAAI,GAAG,CACvD,IAAI,CAAC,OAAO;AACT,aAAA,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE,SAAS,GAAG,CAAC;aACrD,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CACxB;QAED,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAChC,CAAC,GAAG,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CACvE;QAED,KAAK,MAAM,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,EAAE;AAC3C,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,oBAAoB,CAAC,QAAQ,EAAE,CAAC;QAC5E;IACF;IAEQ,gBAAgB,CAAC,WAAoB,EAAE,UAAmB,EAAA;QAChE,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;QACnD,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;AAElD,QAAA,IAAI,SAAS,GAAG,SAAS,EAAE;YACzB,MAAM,SAAS,GAAG,SAAS;YAC3B,SAAS,GAAG,SAAS;YACrB,SAAS,GAAG,SAAS;QACvB;QAEA,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAC9C,SAAS,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,EAChC,SAAS,GAAG,CAAC,CACd;AAED,QAAA,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE;QAC9B,IAAI,CAAC,2BAA2B,EAAE;AAElC,QAAA,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE;YACtC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;QAClC;IACF;IAEU,eAAe,CAAC,IAAY,EAAE,KAAa,EAAA;QACnD,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;QAEzD,IAAI,mBAAmB,EAAE;AACvB,YAAA,MAAM,UAAU,GAAG,KAAK,GAAG,gBAAgB,GAAG,KAAK,GAAG,gBAAgB;YACtE,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QACjD;IACF;AAEU,IAAA,UAAU,CAAC,IAAY,EAAA;QAC/B,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AAEzD,QAAA,OAAO,mBAAmB,EAAE,QAAQ,EAAE;IACxC;IAEU,qBAAqB,GAAA;QAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa;QAExD,IAAI,gBAAgB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACzC,YAAA,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,gBAAgB;AAElD,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,IAAI,EAAE,UAAU;AACjB,aAAA,CAAC;QACJ;IACF;AAEU,IAAA,4BAA4B,CAAC,KAA2B,EAAA;AAChE,QAAA,IAAI,CAAC,gBAAgB,EAAE,yBAAyB,CAAC,KAAK,CAAC;IACzD;IAEU,sBAAsB,CAAC,GAAe,EAAE,OAAiC,EAAA;QACjF,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC;IAC1D;AAEU,IAAA,mBAAmB,CAAC,GAAY,EAAA;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AAC5C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAE/C,QAAA,IAAI,YAAY,IAAI,OAAO,IAAI,UAAU,EAAE;YACzC,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;YACjD,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;AAEnD,YAAA,IAAI,WAAW,GAAG,UAAU,EAAE;gBAC5B,MAAM,SAAS,GAAG,WAAW;gBAC7B,WAAW,GAAG,UAAU;gBACxB,UAAU,GAAG,SAAS;YACxB;YAEA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;AAEhD,YAAA,OAAO,WAAW,IAAI,YAAY,IAAI,YAAY,IAAI,UAAU;QAClE;AAEA,QAAA,OAAO,KAAK;IACd;AAEQ,IAAA,qBAAqB,CAC3B,GAAgB,EAChB,KAAa,EACb,QAAgB,EAChB,IAAgE,EAAA;AAEhE,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE;AACnC,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;AAEvC,QAAA,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC;AACtC,QAAA,MAAM,SAAS,GAAG,KAAK,GAAG,aAAa;QAEvC,IAAI,OAAO,GAAG,CAAC;QAEf,IAAI,WAAW,EAAE;AACf,YAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC5B,gBAAA,OAAO,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC;YACzE;QACF;aAAO;YACL,OAAO,GAAG,CAAC;QACb;AAEA,QAAA,MAAM,OAAO,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,KAAK;AAE9D,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QAC7C;AAEA,QAAA,OAAO,OAAO;IAChB;AAEQ,IAAA,cAAc,CAAC,OAAsB,EAAA;AAC3C,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC7B,YAAA,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3C,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC1C;YACA,OAAO,CAAC,GAAG,CAAC;AACd,QAAA,CAAC,CAAC;IACJ;IAEQ,qBAAqB,CAAC,OAAsB,EAAE,WAAqB,EAAA;AACzE,QAAA,OAAO;AACJ,aAAA,GAAG,CAAC,CAAC,GAAG,KAAI;AACX,YAAA,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC;gBAC7E,OAAO,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE;YAC9C;AACA,YAAA,OAAO,GAAG;AACZ,QAAA,CAAC;AACA,aAAA,MAAM,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjG;AAEQ,IAAA,YAAY,CAAC,OAAsB,EAAA;QACzC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,YAAA,OAAO,CAAC;QACV;AAEA,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;IACjF;+GApnBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAVtB;YACT,sBAAsB;YACtB,iBAAiB;AACjB,YAAA;AACE,gBAAA,OAAO,EAAE,WAAW;AACpB,gBAAA,QAAQ,EAAE,OAAO;AAClB,aAAA;SACF,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAKiE,uBAAuB,gEAE3B,qBAAqB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAGjC,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAE/B,YAAY,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1H/D,uhVAiQA,uzODlLI,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,WAAW,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAChB,WAAW,0CACX,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACd,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,WAAW,8BACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAGnB,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACf,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEhB,kBAAkB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,yBAAyB,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,eAAe,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,uBAAuB,kFACvB,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAYH,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAxClC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EAGpB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,SAAS;wBACT,OAAO;wBACP,OAAO;wBACP,WAAW;wBACX,gBAAgB;wBAChB,WAAW;wBACX,cAAc;wBACd,SAAS;wBACT,WAAW;wBACX,mBAAmB;wBACnB,SAAS;wBACT,QAAQ;wBACR,eAAe;wBACf,gBAAgB;wBAChB,OAAO;wBACP,kBAAkB;wBAClB,yBAAyB;wBACzB,eAAe;wBACf,uBAAuB;wBACvB,OAAO;wBACP,UAAU;wBACV,YAAY;qBACb,EAAA,SAAA,EACU;wBACT,sBAAsB;wBACtB,iBAAiB;AACjB,wBAAA;AACE,4BAAA,OAAO,EAAE,WAAW;AACpB,4BAAA,QAAQ,EAAE,OAAO;AAClB,yBAAA;qBACF,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uhVAAA,EAAA,MAAA,EAAA,CAAA,+vOAAA,CAAA,EAAA;;;MEhGpC,oBAAoB,CAAA;AARjC,IAAA,WAAA,GAAA;AASS,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,QAAQ,EAElC;QACI,IAAA,CAAA,kBAAkB,GAAG,KAAK,EAAiC;AAC3D,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AAEvB,QAAA,IAAA,CAAA,mBAAmB,GAAkC,CACnE,KAAa,EACb,QAAmB,KACjB;AACF,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC3C,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE;AACjC,YAAA,OAAO,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,SAAS;AAClE,QAAA,CAAC;AACF,IAAA;+GAfY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfjC,mYAMA,EAAA,MAAA,EAAA,CAAA,+TAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDOY,YAAY,8BAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmB,oBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAzB,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,kFAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,mEAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,kBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAEvD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAClB,IAAI,EAAA,eAAA,EAGC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,mYAAA,EAAA,MAAA,EAAA,CAAA,+TAAA,CAAA,EAAA;;;AEbnF;;AAEG;;;;"}
|